@leanspec/ui 0.2.9-dev.20251205030455 → 0.2.10

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 (516) hide show
  1. package/.next/standalone/node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  2. package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
  3. package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +5 -0
  4. package/.next/standalone/packages/ui/.next/build-manifest.json +2 -2
  5. package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
  7. package/.next/standalone/packages/ui/.next/routes-manifest.json +40 -0
  8. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js +1 -1
  9. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
  10. package/.next/standalone/packages/ui/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
  12. package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
  13. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  14. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  15. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js +2 -2
  18. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
  19. package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
  21. package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +18 -20
  22. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -20
  23. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +23 -26
  24. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  25. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  26. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +5 -5
  27. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +1 -1
  28. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -1
  29. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js +1 -1
  30. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.nft.json +1 -1
  31. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
  32. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
  33. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
  34. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
  35. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js +1 -1
  36. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js.nft.json +1 -1
  37. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js +1 -1
  38. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js.nft.json +1 -1
  39. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  40. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/app-paths-manifest.json +3 -0
  41. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/build-manifest.json +11 -0
  42. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/server-reference-manifest.json +4 -0
  43. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js +8 -0
  44. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js.map +5 -0
  45. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js.nft.json +1 -0
  46. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route_client-reference-manifest.js +2 -0
  47. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/app-paths-manifest.json +3 -0
  48. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/build-manifest.json +11 -0
  49. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/server-reference-manifest.json +4 -0
  50. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js +8 -0
  51. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js.map +5 -0
  52. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js.nft.json +1 -0
  53. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route_client-reference-manifest.js +2 -0
  54. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js +1 -1
  55. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
  56. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js +1 -1
  57. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
  58. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js +1 -1
  59. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
  60. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js +1 -1
  61. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
  62. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/app-paths-manifest.json +3 -0
  63. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/build-manifest.json +11 -0
  64. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/server-reference-manifest.json +4 -0
  65. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js +8 -0
  66. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js.map +5 -0
  67. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js.nft.json +1 -0
  68. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route_client-reference-manifest.js +2 -0
  69. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js.nft.json +1 -1
  70. package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
  71. package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
  72. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js +1 -1
  73. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
  74. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/app-paths-manifest.json +3 -0
  75. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/build-manifest.json +11 -0
  76. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/server-reference-manifest.json +4 -0
  77. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js +8 -0
  78. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js.map +5 -0
  79. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js.nft.json +1 -0
  80. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route_client-reference-manifest.js +2 -0
  81. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js +1 -1
  82. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
  83. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
  84. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js +1 -1
  85. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
  86. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js +1 -1
  87. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
  88. package/.next/standalone/packages/ui/.next/server/app/api/tags/route/app-paths-manifest.json +3 -0
  89. package/.next/standalone/packages/ui/.next/server/app/api/tags/route/build-manifest.json +11 -0
  90. package/.next/standalone/packages/ui/.next/server/app/api/tags/route/server-reference-manifest.json +4 -0
  91. package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js +8 -0
  92. package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js.map +5 -0
  93. package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js.nft.json +1 -0
  94. package/.next/standalone/packages/ui/.next/server/app/api/tags/route_client-reference-manifest.js +2 -0
  95. package/.next/standalone/packages/ui/.next/server/app/context/page.js +4 -3
  96. package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -1
  97. package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +1 -1
  98. package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js +4 -3
  99. package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.nft.json +1 -1
  100. package/.next/standalone/packages/ui/.next/server/app/dependencies/page_client-reference-manifest.js +1 -1
  101. package/.next/standalone/packages/ui/.next/server/app/page.js +2 -2
  102. package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
  103. package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
  104. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js +2 -2
  105. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js.nft.json +1 -1
  106. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page_client-reference-manifest.js +1 -1
  107. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js +2 -2
  108. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js.nft.json +1 -1
  109. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page_client-reference-manifest.js +1 -1
  110. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js +2 -2
  111. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
  112. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
  113. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js +2 -2
  114. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
  115. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +1 -1
  116. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js +2 -2
  117. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -1
  118. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page_client-reference-manifest.js +1 -1
  119. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js +2 -2
  120. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js.nft.json +1 -1
  121. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page_client-reference-manifest.js +1 -1
  122. package/.next/standalone/packages/ui/.next/server/app/projects/page.js +2 -2
  123. package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -1
  124. package/.next/standalone/packages/ui/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  125. package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
  126. package/.next/standalone/packages/ui/.next/server/app/projects.rsc +24 -25
  127. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +24 -25
  128. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +20 -24
  129. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  130. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  131. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  132. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js +2 -2
  133. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
  134. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
  135. package/.next/standalone/packages/ui/.next/server/app/specs/page.js +4 -3
  136. package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
  137. package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
  138. package/.next/standalone/packages/ui/.next/server/app/stats/page.js +4 -3
  139. package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
  140. package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
  141. package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +5 -0
  142. package/.next/standalone/packages/ui/.next/server/chunks/284a8_app_api_projects_[id]_specs_[spec]_dependency-graph_route_actions_f18476ed.js +3 -0
  143. package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_projects_[id]_tags_route_actions_40899744.js +3 -0
  144. package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_specs_[id]_metadata_route_actions_139bb09f.js +3 -0
  145. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0afcada7._.js +3 -0
  146. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0e63a440._.js +3 -0
  147. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0ec6f9b0._.js +3 -0
  148. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0edb782a._.js +3 -0
  149. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0fbfea15._.js +1 -1
  150. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__1706515f._.js +1 -1
  151. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__1f037512._.js +1 -1
  152. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__38780e00._.js +3 -0
  153. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3a535244._.js +3 -0
  154. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__41f43652._.js +3 -0
  155. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__5081ac6f._.js +3 -0
  156. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__526764b2._.js +3 -0
  157. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__548e27d4._.js +1 -1
  158. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__71d98924._.js +1 -1
  159. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__74af400b._.js +3 -0
  160. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8075fe29._.js +1 -1
  161. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9ce722b4._.js +1 -1
  162. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9cf3bf21._.js +3 -0
  163. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__a2d7cbed._.js +1 -1
  164. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b1ad8b69._.js +1 -1
  165. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__c7a4906b._.js +3 -0
  166. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__de15d2aa._.js +3 -0
  167. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e16f7651._.js +3 -0
  168. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e2fcb5c6._.js +3 -0
  169. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e8d9903e._.js +3 -0
  170. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f6936b89._.js +3 -0
  171. package/.next/standalone/packages/ui/.next/server/chunks/f825c_server_app_api_projects_[id]_specs_[spec]_metadata_route_actions_35af9a8c.js +3 -0
  172. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_tags_route_actions_64625b2c.js +3 -0
  173. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__01bfc8ff._.js +3 -0
  174. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__13f96ef4._.js → [root-of-the-server]__174e1ca1._.js} +2 -2
  175. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__38c56adc._.js → [root-of-the-server]__2d9202e8._.js} +2 -2
  176. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__338c65fe._.js +1 -1
  177. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__366688dd._.js +1 -1
  178. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__44b603f9._.js +1 -1
  179. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__4ec37765._.js +3 -0
  180. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__69a0d63a._.js +1 -1
  181. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__7f55abaa._.js +1 -1
  182. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__c158c9a9._.js +3 -0
  183. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__c7735439._.js +3 -0
  184. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__e2c760eb._.js +3 -0
  185. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__84124d4b._.js → [root-of-the-server]__ead1539c._.js} +2 -2
  186. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ec5b96a5._.js +1 -1
  187. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
  188. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_adb9d7cb._.js → _22274047._.js} +2 -2
  189. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_59616aa6._.js +3 -0
  190. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_5e1484f9._.js +7 -0
  191. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_8ab6f9ca._.js +1 -1
  192. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_be836d6a._.js +5 -0
  193. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ec637d7c._.js +1 -1
  194. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_projects_page_tsx_6e166c8e._.js +1 -1
  195. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js +1 -1
  196. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_spec-detail-wrapper_tsx_fd35401c._.js +1 -1
  197. package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
  198. package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
  199. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
  200. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
  201. package/.next/standalone/packages/ui/.next/static/chunks/0c7bbb59865774a1.js +1 -0
  202. package/.next/standalone/packages/ui/.next/static/chunks/0fe978002ba489fb.js +3 -0
  203. package/.next/standalone/packages/ui/.next/static/chunks/1169d4ac8f9df687.js +1 -0
  204. package/.next/standalone/packages/ui/.next/static/chunks/241b6b1c83610ebf.js +1 -0
  205. package/.next/standalone/packages/ui/.next/static/chunks/39931c5cecf4c4b7.js +1 -0
  206. package/.next/standalone/packages/ui/.next/static/chunks/6d7922838a3513a4.js +1 -0
  207. package/.next/{static/chunks/7a00633903e066b4.js → standalone/packages/ui/.next/static/chunks/781328ee279ffc41.js} +1 -1
  208. package/.next/standalone/packages/ui/.next/static/chunks/937cb3894a606899.js +5 -0
  209. package/.next/standalone/packages/ui/.next/static/chunks/9cf644b700f37825.css +1 -0
  210. package/.next/standalone/packages/ui/.next/static/chunks/bc0f8f7f8dc0a352.js +1 -0
  211. package/.next/standalone/packages/ui/.next/static/chunks/dbce73f7087f2470.js +10 -0
  212. package/.next/standalone/packages/ui/.next/static/chunks/f0a083ac29b4b6c2.js +1 -0
  213. package/.next/standalone/packages/ui/dist/BUILD_ID +1 -0
  214. package/.next/standalone/packages/ui/dist/public/f864aa7e7061c0600e35cf3d879b27cf.txt +1 -0
  215. package/.next/standalone/packages/ui/dist/public/favicon.ico +0 -0
  216. package/.next/standalone/packages/ui/dist/public/file.svg +1 -0
  217. package/.next/standalone/packages/ui/dist/public/github-mark-white.svg +1 -0
  218. package/.next/standalone/packages/ui/dist/public/github-mark.svg +1 -0
  219. package/.next/standalone/packages/ui/dist/public/globe.svg +1 -0
  220. package/.next/standalone/packages/ui/dist/public/icon.svg +7 -0
  221. package/.next/standalone/packages/ui/dist/public/logo-dark-bg.svg +17 -0
  222. package/.next/standalone/packages/ui/dist/public/logo-with-bg.svg +17 -0
  223. package/.next/standalone/packages/ui/dist/public/logo.svg +17 -0
  224. package/.next/standalone/packages/ui/dist/public/next.svg +1 -0
  225. package/.next/standalone/packages/ui/dist/public/vercel.svg +1 -0
  226. package/.next/standalone/packages/ui/dist/public/window.svg +1 -0
  227. package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +196 -0
  228. package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +75 -0
  229. package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +44 -0
  230. package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +175 -0
  231. package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +317 -0
  232. package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +261 -0
  233. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +380 -0
  234. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +230 -0
  235. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +285 -0
  236. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +358 -0
  237. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +303 -0
  238. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +368 -0
  239. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +327 -0
  240. package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +117 -0
  241. package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +73 -0
  242. package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +109 -0
  243. package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +107 -0
  244. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +244 -0
  245. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +429 -0
  246. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +302 -0
  247. package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +158 -0
  248. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +359 -0
  249. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +86 -0
  250. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +437 -0
  251. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +365 -0
  252. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +203 -0
  253. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +174 -0
  254. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +156 -0
  255. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +183 -0
  256. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +229 -0
  257. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +243 -0
  258. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +217 -0
  259. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +166 -0
  260. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +126 -0
  261. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +108 -0
  262. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +382 -0
  263. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +144 -0
  264. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +146 -0
  265. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +208 -0
  266. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +182 -0
  267. package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +314 -0
  268. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +113 -0
  269. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +237 -0
  270. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +149 -0
  271. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +175 -0
  272. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +254 -0
  273. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +376 -0
  274. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +240 -0
  275. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +175 -0
  276. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +374 -0
  277. package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +339 -0
  278. package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +128 -0
  279. package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +97 -0
  280. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +93 -0
  281. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +146 -0
  282. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +175 -0
  283. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +397 -0
  284. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +342 -0
  285. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +44 -0
  286. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +150 -0
  287. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +351 -0
  288. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +238 -0
  289. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +280 -0
  290. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +372 -0
  291. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +466 -0
  292. package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +178 -0
  293. package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +174 -0
  294. package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +295 -0
  295. package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +487 -0
  296. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +241 -0
  297. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +279 -0
  298. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +642 -0
  299. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +125 -0
  300. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +286 -0
  301. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +392 -0
  302. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +1002 -0
  303. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +411 -0
  304. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +812 -0
  305. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +504 -0
  306. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +724 -0
  307. package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +125 -0
  308. package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +299 -0
  309. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +174 -0
  310. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +265 -0
  311. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +36 -0
  312. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +243 -0
  313. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +82 -0
  314. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +338 -0
  315. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +354 -0
  316. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +189 -0
  317. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +119 -0
  318. package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +170 -0
  319. package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +158 -0
  320. package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +842 -0
  321. package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +358 -0
  322. package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +444 -0
  323. package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +357 -0
  324. package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +551 -0
  325. package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +372 -0
  326. package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +489 -0
  327. package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +285 -0
  328. package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +323 -0
  329. package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +136 -0
  330. package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +399 -0
  331. package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +301 -0
  332. package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +235 -0
  333. package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +303 -0
  334. package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +196 -0
  335. package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +388 -0
  336. package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +824 -0
  337. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +111 -0
  338. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +69 -0
  339. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +77 -0
  340. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +184 -0
  341. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +496 -0
  342. package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +490 -0
  343. package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +389 -0
  344. package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +920 -0
  345. package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +146 -0
  346. package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +607 -0
  347. package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +104 -0
  348. package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +124 -0
  349. package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +129 -0
  350. package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +244 -0
  351. package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +148 -0
  352. package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +54 -0
  353. package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +37 -0
  354. package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +60 -0
  355. package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +113 -0
  356. package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +69 -0
  357. package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +112 -0
  358. package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +229 -0
  359. package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +406 -0
  360. package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +168 -0
  361. package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +174 -0
  362. package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +212 -0
  363. package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +249 -0
  364. package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +60 -0
  365. package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +139 -0
  366. package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +722 -0
  367. package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +413 -0
  368. package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +255 -0
  369. package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +252 -0
  370. package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +253 -0
  371. package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +612 -0
  372. package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +794 -0
  373. package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +834 -0
  374. package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +255 -0
  375. package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +454 -0
  376. package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +172 -0
  377. package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +152 -0
  378. package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +95 -0
  379. package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +87 -0
  380. package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +230 -0
  381. package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +89 -0
  382. package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +89 -0
  383. package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +166 -0
  384. package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +276 -0
  385. package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +122 -0
  386. package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +198 -0
  387. package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +192 -0
  388. package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +171 -0
  389. package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +200 -0
  390. package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +317 -0
  391. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +276 -0
  392. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +241 -0
  393. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +139 -0
  394. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +328 -0
  395. package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +400 -0
  396. package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +1 -0
  397. package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +1 -0
  398. package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +1 -0
  399. package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +1 -0
  400. package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +1 -0
  401. package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +3 -0
  402. package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +1 -0
  403. package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +1 -0
  404. package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +1 -0
  405. package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +1 -0
  406. package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +1 -0
  407. package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +1 -0
  408. package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +1 -0
  409. package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +1 -0
  410. package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +1 -0
  411. package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +1 -0
  412. package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +1 -0
  413. package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +1 -0
  414. package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +5 -0
  415. package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +1 -0
  416. package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +1 -0
  417. package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +4 -0
  418. package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +2 -0
  419. package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +19 -0
  420. package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +3 -0
  421. package/.next/standalone/packages/ui/package.json +1 -1
  422. package/.next/standalone/packages/ui/server.js +1 -1
  423. package/.next/standalone/packages/ui/src/app/api/dependencies/route.ts +4 -67
  424. package/.next/standalone/packages/ui/src/app/api/projects/[id]/dependencies/route.ts +3 -52
  425. package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/dependency-graph/route.ts +129 -0
  426. package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/metadata/route.ts +170 -0
  427. package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/status/route.ts +9 -2
  428. package/.next/standalone/packages/ui/src/app/api/projects/[id]/tags/route.ts +25 -0
  429. package/.next/standalone/packages/ui/src/app/api/specs/[id]/metadata/route.ts +184 -0
  430. package/.next/standalone/packages/ui/src/app/api/tags/route.ts +16 -0
  431. package/.next/standalone/packages/ui/src/app/context/page.tsx +22 -0
  432. package/.next/standalone/packages/ui/src/app/dashboard-client.tsx +14 -4
  433. package/.next/standalone/packages/ui/src/app/dependencies/dependencies-client.tsx +2 -2
  434. package/.next/standalone/packages/ui/src/app/dependencies/page.tsx +25 -13
  435. package/.next/standalone/packages/ui/src/app/projects/[projectId]/dependencies/page.tsx +1 -14
  436. package/.next/standalone/packages/ui/src/app/projects/page.tsx +234 -113
  437. package/.next/standalone/packages/ui/src/app/specs/[id]/page.tsx +24 -1
  438. package/.next/standalone/packages/ui/src/app/specs/page.tsx +22 -0
  439. package/.next/standalone/packages/ui/src/app/specs/specs-client.tsx +1 -1
  440. package/.next/standalone/packages/ui/src/app/stats/page.tsx +22 -0
  441. package/.next/standalone/packages/ui/src/components/editable-spec-metadata.tsx +152 -0
  442. package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +6 -0
  443. package/.next/standalone/packages/ui/src/components/priority-editor.tsx +153 -0
  444. package/.next/standalone/packages/ui/src/components/project-switcher.tsx +53 -8
  445. package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +23 -20
  446. package/.next/standalone/packages/ui/src/components/status-editor.tsx +153 -0
  447. package/.next/standalone/packages/ui/src/components/tags-editor.tsx +238 -0
  448. package/.next/standalone/packages/ui/src/components/ui/command.tsx +1 -1
  449. package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +151 -15
  450. package/.next/standalone/packages/ui/src/lib/projects/registry.ts +1 -1
  451. package/.next/standalone/packages/ui/src/lib/specs/sources/multi-project-source.ts +21 -5
  452. package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
  453. package/.next/static/chunks/0c7bbb59865774a1.js +1 -0
  454. package/.next/static/chunks/0fe978002ba489fb.js +3 -0
  455. package/.next/static/chunks/1169d4ac8f9df687.js +1 -0
  456. package/.next/static/chunks/241b6b1c83610ebf.js +1 -0
  457. package/.next/static/chunks/39931c5cecf4c4b7.js +1 -0
  458. package/.next/static/chunks/6d7922838a3513a4.js +1 -0
  459. package/.next/{standalone/packages/ui/.next/static/chunks/7a00633903e066b4.js → static/chunks/781328ee279ffc41.js} +1 -1
  460. package/.next/static/chunks/937cb3894a606899.js +5 -0
  461. package/.next/static/chunks/9cf644b700f37825.css +1 -0
  462. package/.next/static/chunks/bc0f8f7f8dc0a352.js +1 -0
  463. package/.next/static/chunks/dbce73f7087f2470.js +10 -0
  464. package/.next/static/chunks/f0a083ac29b4b6c2.js +1 -0
  465. package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_buildManifest.js +11 -0
  466. package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_clientMiddlewareManifest.json +1 -0
  467. package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_ssgManifest.js +1 -0
  468. package/package.json +2 -2
  469. package/.next/standalone/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +0 -95
  470. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__18aca702._.js +0 -3
  471. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__27348781._.js +0 -3
  472. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3a7f0840._.js +0 -3
  473. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3e17db24._.js +0 -3
  474. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__6e06fd2a._.js +0 -3
  475. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__97b99cc0._.js +0 -3
  476. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9d9758e1._.js +0 -3
  477. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b212b9bd._.js +0 -3
  478. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b9c03a57._.js +0 -3
  479. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e99e7672._.js +0 -3
  480. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f38a5f20._.js +0 -3
  481. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__fa8cf2bc._.js +0 -3
  482. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__53f4506c._.js +0 -3
  483. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__921689ca._.js +0 -3
  484. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a9d7fd42._.js +0 -3
  485. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b27b2469._.js +0 -3
  486. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b3633d6e._.js +0 -3
  487. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_03aa8d19._.js +0 -7
  488. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +0 -5
  489. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_90eed09a._.js +0 -3
  490. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f9129aae._.js +0 -3
  491. package/.next/standalone/packages/ui/.next/static/chunks/04de9ed512b8098b.js +0 -10
  492. package/.next/standalone/packages/ui/.next/static/chunks/3d12a8c3152b526d.js +0 -3
  493. package/.next/standalone/packages/ui/.next/static/chunks/7931c6cb379305b1.js +0 -1
  494. package/.next/standalone/packages/ui/.next/static/chunks/7f9a218732be8099.js +0 -5
  495. package/.next/standalone/packages/ui/.next/static/chunks/8a6e8f3394240dbb.js +0 -1
  496. package/.next/standalone/packages/ui/.next/static/chunks/8d8c106c6848d15b.js +0 -1
  497. package/.next/standalone/packages/ui/.next/static/chunks/a640b005f2e15d98.js +0 -1
  498. package/.next/standalone/packages/ui/.next/static/chunks/a7075a240adea8e8.js +0 -1
  499. package/.next/standalone/packages/ui/.next/static/chunks/ddb2935cfe5310c7.css +0 -1
  500. package/.next/standalone/packages/ui/.next/static/chunks/f924ae32752e1583.js +0 -1
  501. package/.next/static/chunks/04de9ed512b8098b.js +0 -10
  502. package/.next/static/chunks/3d12a8c3152b526d.js +0 -3
  503. package/.next/static/chunks/7931c6cb379305b1.js +0 -1
  504. package/.next/static/chunks/7f9a218732be8099.js +0 -5
  505. package/.next/static/chunks/8a6e8f3394240dbb.js +0 -1
  506. package/.next/static/chunks/8d8c106c6848d15b.js +0 -1
  507. package/.next/static/chunks/a640b005f2e15d98.js +0 -1
  508. package/.next/static/chunks/a7075a240adea8e8.js +0 -1
  509. package/.next/static/chunks/ddb2935cfe5310c7.css +0 -1
  510. package/.next/static/chunks/f924ae32752e1583.js +0 -1
  511. /package/.next/standalone/packages/ui/.next/static/{T8X9UGfigRL0qWZiBHNjy → s9uUE9DnvJD2xIz-iBGMe}/_buildManifest.js +0 -0
  512. /package/.next/standalone/packages/ui/.next/static/{T8X9UGfigRL0qWZiBHNjy → s9uUE9DnvJD2xIz-iBGMe}/_clientMiddlewareManifest.json +0 -0
  513. /package/.next/standalone/packages/ui/.next/static/{T8X9UGfigRL0qWZiBHNjy → s9uUE9DnvJD2xIz-iBGMe}/_ssgManifest.js +0 -0
  514. /package/.next/{static/T8X9UGfigRL0qWZiBHNjy → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
  515. /package/.next/{static/T8X9UGfigRL0qWZiBHNjy → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
  516. /package/.next/{static/T8X9UGfigRL0qWZiBHNjy → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_ssgManifest.js +0 -0
@@ -1,3 +0,0 @@
1
- module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},568239,e=>{"use strict";var t=e.i(344271),r=e.i(522734),n=e.i(814747),a=e.i(392194);let o=[{pattern:/design|ui|ux|mockup|wireframe|prototype/i,iconName:"Palette",color:"text-purple-600"},{pattern:/architecture|structure|system|diagram/i,iconName:"Map",color:"text-indigo-600"},{pattern:/implementation|code|develop|build/i,iconName:"Code",color:"text-green-600"},{pattern:/api|endpoint|integration|interface/i,iconName:"Code",color:"text-blue-600"},{pattern:/test|qa|quality|validation/i,iconName:"TestTube",color:"text-orange-600"},{pattern:/task|todo|checklist|milestone/i,iconName:"CheckSquare",color:"text-gray-600"},{pattern:/config|setup|settings|environment/i,iconName:"Wrench",color:"text-yellow-600"},{pattern:/deploy|devops|ci|cd|pipeline|release/i,iconName:"Wrench",color:"text-orange-600"},{pattern:/migration|upgrade|refactor|transition/i,iconName:"GitBranch",color:"text-cyan-600"},{pattern:/security|auth|permission|access|encryption/i,iconName:"CheckSquare",color:"text-red-600"},{pattern:/performance|optimization|speed|cache|benchmark/i,iconName:"TrendingUp",color:"text-green-600"},{pattern:/database|data|schema|model|query/i,iconName:"FileText",color:"text-blue-600"},{pattern:/doc|guide|manual|reference/i,iconName:"FileText",color:"text-gray-500"},{pattern:/github|git|vcs|version/i,iconName:"GitBranch",color:"text-pink-600"}],i={iconName:"FileText",color:"text-gray-600"};var s=e.i(902157);function l(e){let{contentMd:t,contentHtml:r,...n}=e;return n}let c=(0,n.resolve)(process.cwd(),"../../specs");function p(){let e=process.env.SPECS_DIR;return e?e.startsWith("/")?e:(0,n.resolve)(process.cwd(),e):c}function u(e){let t=e.replace(/^specs\//,"").replace(/\/README\.md$/,"");return(0,n.join)(p(),t)}function d(e){try{var t;let r=(0,n.join)(e,"README.md"),o=(0,s.readFileSync)(r,"utf-8"),{data:i}=(0,a.default)(o);return{dependsOn:(t=i?.depends_on??i?.dependsOn)?Array.isArray(t)?t.map(e=>String(e)):"string"==typeof t?[t]:[]:[],requiredBy:[]}}catch(e){return console.warn("Unable to parse spec relationships",e),{dependsOn:[],requiredBy:[]}}}function f(e){return{...e,tags:e.tags?"string"==typeof e.tags?JSON.parse(e.tags):e.tags:null}}async function h(e){return(await t.specsService.getAllSpecs(e)).map(e=>l(f(e)))}async function m(e){let r=await t.specsService.getAllSpecs(e);if(e)return r.map(e=>({...l(f(e)),subSpecsCount:0,relationships:{dependsOn:[],requiredBy:[]}}));let a=new Map;for(let e of r){let{dependsOn:t}=d(u(e.filePath));a.set(e.specName,{dependsOn:t,requiredBy:[]})}for(let[e,t]of a.entries())for(let r of t.dependsOn){let t=a.get(r);t&&t.requiredBy.push(e)}return r.map(e=>{let t=function(e){try{if(!(0,s.existsSync)(e))return 0;let t=(0,s.readdirSync)(e),r=0;for(let a of t){if("README.md"===a||!a.endsWith(".md"))continue;let t=(0,n.join)(e,a);try{(0,s.statSync)(t).isFile()&&r++}catch{}}return r}catch{return 0}}(u(e.filePath)),r=a.get(e.specName)||{dependsOn:[],requiredBy:[]};return{...l(f(e)),subSpecsCount:t,relationships:r}})}async function g(e,s){let l=await t.specsService.getSpec(e,s);if(!l)return null;let c=f(l);if(!s){let e=u(l.filePath),s=function(e){let t=[];if(!(0,r.existsSync)(e))return t;try{for(let s of(0,r.readdirSync)(e)){if("README.md"===s||!s.endsWith(".md"))continue;let l=(0,n.join)(e,s);if((0,r.statSync)(l).isFile())try{let e=(0,r.readFileSync)(l,"utf-8"),{content:n}=(0,a.default)(e),c=function(e){let t=e.replace(/\.md$/i,"");for(let{pattern:e,iconName:r,color:n}of o)if(e.test(t))return{iconName:r,color:n};return i}(s);t.push({name:s.replace(/\.md$/i,"").split(/[-_]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" "),file:s,iconName:c.iconName,color:c.color,content:n})}catch(e){console.error(`Error reading sub-spec ${s}:`,e)}}t.sort((e,t)=>e.file.localeCompare(t.file))}catch(t){console.error(`Error reading spec directory ${e}:`,t)}return t}(e),{dependsOn:p}=d(e),f=await t.specsService.getAllSpecs(),h=[];for(let e of f)e.specName!==l.specName&&d(u(e.filePath)).dependsOn.includes(l.specName)&&h.push(e.specName);return{...c,subSpecs:s,relationships:{dependsOn:p,requiredBy:h}}}return c}async function x(e){let r=await t.specsService.getAllSpecs(e),n=new Map,a=new Map;for(let e of r)e.status&&n.set(e.status,(n.get(e.status)||0)+1),e.priority&&a.set(e.priority,(a.get(e.priority)||0)+1);let o=n.get("complete")||0,i=r.length>0?o/r.length*100:0;return{totalProjects:1,totalSpecs:r.length,specsByStatus:Array.from(n.entries()).map(([e,t])=>({status:e,count:t})),specsByPriority:Array.from(a.entries()).map(([e,t])=>({priority:e,count:t})),completionRate:Math.round(10*i)/10}}function y(){let e=p();return(0,n.dirname)(e)}function v(e,t){try{let r;if(!(0,s.existsSync)(e))return null;let n=(0,s.statSync)(e),a=(0,s.readFileSync)(e,"utf-8"),o=e.replace(t+"/","");return{name:o.split("/").pop()||o,path:o,content:a,tokenCount:(r=a.split(/\s+/).filter(e=>e.length>0).length,Math.ceil(1.3*r+.5*(a.match(/[^a-zA-Z0-9\s]/g)||[]).length)),lastModified:n.mtime}}catch(t){return console.warn(`Unable to read context file: ${e}`,t),null}}async function R(e){let t=e||y(),r=[];for(let e of["AGENTS.md","GEMINI.md","CLAUDE.md","COPILOT.md"]){let a=v((0,n.join)(t,e),t);a&&r.push(a)}let a=v((0,n.join)(t,".github","copilot-instructions.md"),t);a&&r.push(a);let o=(0,n.join)(t,"docs","agents");if((0,s.existsSync)(o))try{for(let e of(0,s.readdirSync)(o))if(e.endsWith(".md")){let a=v((0,n.join)(o,e),t);a&&r.push(a)}}catch{}return r}async function E(e){let t=e||y(),r=v((0,n.join)(t,".lean-spec","config.json"),t);if(!r)return{file:null,parsed:null};try{let e=JSON.parse(r.content);return{file:r,parsed:e}}catch{return{file:r,parsed:null}}}async function S(e){let t=e||y(),r=[];for(let e of["README.md","CONTRIBUTING.md","CHANGELOG.md"]){let a=v((0,n.join)(t,e),t);a&&r.push(a)}return r}async function w(e){let t=e||y(),[r,n,a]=await Promise.all([R(t),E(t),S(t)]),o=0;for(let e of r)o+=e.tokenCount;for(let e of(n.file&&(o+=n.file.tokenCount),a))o+=e.tokenCount;return{agentInstructions:r,config:n,projectDocs:a,totalTokens:o,projectRoot:t}}e.s(["getProjectContext",()=>w,"getSpecById",()=>g,"getSpecs",()=>h,"getSpecsWithMetadata",()=>m,"getStats",()=>x],568239)},490287,e=>{"use strict";var t=e.i(706169),r=e.i(825864),n=e.i(71648),a=e.i(630064),o=e.i(674222),i=e.i(602043),s=e.i(671408),l=e.i(326527),c=e.i(130592),p=e.i(334639),u=e.i(388935),d=e.i(868515),f=e.i(187166),h=e.i(376718),m=e.i(976529),g=e.i(451151),x=e.i(193695);e.i(859704);var y=e.i(708259),v=e.i(931511),R=e.i(568239);async function E(e,{params:t}){try{let{id:e}=await t,r=process.env.SPECS_MODE||"filesystem",n=await (0,R.getSpecs)("multi-project"===r?e:void 0);return v.NextResponse.json({specs:n})}catch(e){return console.error("Error fetching specs:",e),v.NextResponse.json({error:"Failed to fetch specs"},{status:500})}}e.s(["GET",()=>E],41264);var S=e.i(41264);let w=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/projects/[id]/specs/route",pathname:"/api/projects/[id]/specs",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/projects/[id]/specs/route.ts",nextConfigOutput:"standalone",userland:S}),{workAsyncStorage:N,workUnitAsyncStorage:C,serverHooks:A}=w;function b(){return(0,n.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:C})}async function j(e,t,n){w.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/projects/[id]/specs/route";v=v.replace(/\/index$/,"")||"/";let R=await w.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:E,params:S,nextConfig:N,parsedUrl:C,isDraftMode:A,prerenderManifest:b,routerServerContext:j,isOnDemandRevalidate:q,revalidateOnlyGenerated:P,resolvedPathname:_,clientReferenceManifest:O,serverActionsManifest:T}=R,k=(0,l.normalizeAppPath)(v),M=!!(b.dynamicRoutes[k]||b.routes[_]),I=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,C,!1):t.end("This page could not be found"),null);if(M&&!A){let e=!!b.routes[_],t=b.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(N.experimental.adapterPath)return await I();throw new x.NoFallbackError}}let U=null;!M||w.isDev||A||(U="/index"===(U=_)?"/":U);let D=!0===w.isDev||!M,H=M&&!D;T&&O&&(0,i.setReferenceManifestsSingleton)({page:v,clientReferenceManifest:O,serverActionsManifest:T,serverModuleMap:(0,s.createServerModuleMap)({serverActionsManifest:T})});let B=e.method||"GET",F=(0,o.getTracer)(),$=F.getActiveScopeSpan(),G={params:S,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!N.experimental.authInterrupts},cacheComponents:!!N.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:N.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n)=>w.onRequestError(e,t,n,j)},sharedContext:{buildId:E}},L=new c.NodeNextRequest(e),W=new c.NodeNextResponse(t),K=p.NextRequestAdapter.fromNodeNextRequest(L,(0,p.signalFromNodeResponse)(t));try{let i=async e=>w.handle(K,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${B} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${B} ${v}`)}),s=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var o,l;let c=async({previousCacheEntry:r})=>{try{if(!s&&q&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(a);e.fetchMetrics=G.renderOpts.fetchMetrics;let l=G.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let c=G.renderOpts.collectedTags;if(!M)return await (0,f.sendResponse)(L,W,o,G.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(o.headers);c&&(t[g.NEXT_CACHE_TAGS_HEADER]=c),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await w.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:q})},j),t}},p=await w.handleResponse({req:e,nextConfig:N,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:P,responseGenerator:c,waitUntil:n.waitUntil,isMinimalMode:s});if(!M)return null;if((null==p||null==(o=p.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==p||null==(l=p.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",q?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(p.value.headers);return s&&M||u.delete(g.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(p.cacheControl)),await (0,f.sendResponse)(L,W,new Response(p.value.body,{headers:u,status:p.value.status||200})),null};$?await l($):await F.withPropagatedContext(e.headers,()=>F.trace(u.BaseServerSpan.handleRequest,{spanName:`${B} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},l))}catch(t){if(t instanceof x.NoFallbackError||await w.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:q})}),M)throw t;return await (0,f.sendResponse)(L,W,new Response(null,{status:500})),null}}e.s(["handler",()=>j,"patchFetch",()=>b,"routeModule",()=>w,"serverHooks",()=>A,"workAsyncStorage",()=>N,"workUnitAsyncStorage",()=>C],490287)},614430,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_better-sqlite3_a1cc22cb._.js","server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_baa0160d._.js"].map(t=>e.l(t))).then(()=>t(318146)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__b212b9bd._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},568239,e=>{"use strict";var t=e.i(344271),r=e.i(522734),n=e.i(814747),a=e.i(392194);let o=[{pattern:/design|ui|ux|mockup|wireframe|prototype/i,iconName:"Palette",color:"text-purple-600"},{pattern:/architecture|structure|system|diagram/i,iconName:"Map",color:"text-indigo-600"},{pattern:/implementation|code|develop|build/i,iconName:"Code",color:"text-green-600"},{pattern:/api|endpoint|integration|interface/i,iconName:"Code",color:"text-blue-600"},{pattern:/test|qa|quality|validation/i,iconName:"TestTube",color:"text-orange-600"},{pattern:/task|todo|checklist|milestone/i,iconName:"CheckSquare",color:"text-gray-600"},{pattern:/config|setup|settings|environment/i,iconName:"Wrench",color:"text-yellow-600"},{pattern:/deploy|devops|ci|cd|pipeline|release/i,iconName:"Wrench",color:"text-orange-600"},{pattern:/migration|upgrade|refactor|transition/i,iconName:"GitBranch",color:"text-cyan-600"},{pattern:/security|auth|permission|access|encryption/i,iconName:"CheckSquare",color:"text-red-600"},{pattern:/performance|optimization|speed|cache|benchmark/i,iconName:"TrendingUp",color:"text-green-600"},{pattern:/database|data|schema|model|query/i,iconName:"FileText",color:"text-blue-600"},{pattern:/doc|guide|manual|reference/i,iconName:"FileText",color:"text-gray-500"},{pattern:/github|git|vcs|version/i,iconName:"GitBranch",color:"text-pink-600"}],i={iconName:"FileText",color:"text-gray-600"};var s=e.i(902157);function l(e){let{contentMd:t,contentHtml:r,...n}=e;return n}let c=(0,n.resolve)(process.cwd(),"../../specs");function p(){let e=process.env.SPECS_DIR;return e?e.startsWith("/")?e:(0,n.resolve)(process.cwd(),e):c}function u(e){let t=e.replace(/^specs\//,"").replace(/\/README\.md$/,"");return(0,n.join)(p(),t)}function d(e){try{var t;let r=(0,n.join)(e,"README.md"),o=(0,s.readFileSync)(r,"utf-8"),{data:i}=(0,a.default)(o);return{dependsOn:(t=i?.depends_on??i?.dependsOn)?Array.isArray(t)?t.map(e=>String(e)):"string"==typeof t?[t]:[]:[],requiredBy:[]}}catch(e){return console.warn("Unable to parse spec relationships",e),{dependsOn:[],requiredBy:[]}}}function f(e){return{...e,tags:e.tags?"string"==typeof e.tags?JSON.parse(e.tags):e.tags:null}}async function h(e){return(await t.specsService.getAllSpecs(e)).map(e=>l(f(e)))}async function m(e){let r=await t.specsService.getAllSpecs(e);if(e)return r.map(e=>({...l(f(e)),subSpecsCount:0,relationships:{dependsOn:[],requiredBy:[]}}));let a=new Map;for(let e of r){let{dependsOn:t}=d(u(e.filePath));a.set(e.specName,{dependsOn:t,requiredBy:[]})}for(let[e,t]of a.entries())for(let r of t.dependsOn){let t=a.get(r);t&&t.requiredBy.push(e)}return r.map(e=>{let t=function(e){try{if(!(0,s.existsSync)(e))return 0;let t=(0,s.readdirSync)(e),r=0;for(let a of t){if("README.md"===a||!a.endsWith(".md"))continue;let t=(0,n.join)(e,a);try{(0,s.statSync)(t).isFile()&&r++}catch{}}return r}catch{return 0}}(u(e.filePath)),r=a.get(e.specName)||{dependsOn:[],requiredBy:[]};return{...l(f(e)),subSpecsCount:t,relationships:r}})}async function g(e,s){let l=await t.specsService.getSpec(e,s);if(!l)return null;let c=f(l);if(!s){let e=u(l.filePath),s=function(e){let t=[];if(!(0,r.existsSync)(e))return t;try{for(let s of(0,r.readdirSync)(e)){if("README.md"===s||!s.endsWith(".md"))continue;let l=(0,n.join)(e,s);if((0,r.statSync)(l).isFile())try{let e=(0,r.readFileSync)(l,"utf-8"),{content:n}=(0,a.default)(e),c=function(e){let t=e.replace(/\.md$/i,"");for(let{pattern:e,iconName:r,color:n}of o)if(e.test(t))return{iconName:r,color:n};return i}(s);t.push({name:s.replace(/\.md$/i,"").split(/[-_]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" "),file:s,iconName:c.iconName,color:c.color,content:n})}catch(e){console.error(`Error reading sub-spec ${s}:`,e)}}t.sort((e,t)=>e.file.localeCompare(t.file))}catch(t){console.error(`Error reading spec directory ${e}:`,t)}return t}(e),{dependsOn:p}=d(e),f=await t.specsService.getAllSpecs(),h=[];for(let e of f)e.specName!==l.specName&&d(u(e.filePath)).dependsOn.includes(l.specName)&&h.push(e.specName);return{...c,subSpecs:s,relationships:{dependsOn:p,requiredBy:h}}}return c}async function x(e){let r=await t.specsService.getAllSpecs(e),n=new Map,a=new Map;for(let e of r)e.status&&n.set(e.status,(n.get(e.status)||0)+1),e.priority&&a.set(e.priority,(a.get(e.priority)||0)+1);let o=n.get("complete")||0,i=r.length>0?o/r.length*100:0;return{totalProjects:1,totalSpecs:r.length,specsByStatus:Array.from(n.entries()).map(([e,t])=>({status:e,count:t})),specsByPriority:Array.from(a.entries()).map(([e,t])=>({priority:e,count:t})),completionRate:Math.round(10*i)/10}}function y(){let e=p();return(0,n.dirname)(e)}function v(e,t){try{let r;if(!(0,s.existsSync)(e))return null;let n=(0,s.statSync)(e),a=(0,s.readFileSync)(e,"utf-8"),o=e.replace(t+"/","");return{name:o.split("/").pop()||o,path:o,content:a,tokenCount:(r=a.split(/\s+/).filter(e=>e.length>0).length,Math.ceil(1.3*r+.5*(a.match(/[^a-zA-Z0-9\s]/g)||[]).length)),lastModified:n.mtime}}catch(t){return console.warn(`Unable to read context file: ${e}`,t),null}}async function R(e){let t=e||y(),r=[];for(let e of["AGENTS.md","GEMINI.md","CLAUDE.md","COPILOT.md"]){let a=v((0,n.join)(t,e),t);a&&r.push(a)}let a=v((0,n.join)(t,".github","copilot-instructions.md"),t);a&&r.push(a);let o=(0,n.join)(t,"docs","agents");if((0,s.existsSync)(o))try{for(let e of(0,s.readdirSync)(o))if(e.endsWith(".md")){let a=v((0,n.join)(o,e),t);a&&r.push(a)}}catch{}return r}async function E(e){let t=e||y(),r=v((0,n.join)(t,".lean-spec","config.json"),t);if(!r)return{file:null,parsed:null};try{let e=JSON.parse(r.content);return{file:r,parsed:e}}catch{return{file:r,parsed:null}}}async function S(e){let t=e||y(),r=[];for(let e of["README.md","CONTRIBUTING.md","CHANGELOG.md"]){let a=v((0,n.join)(t,e),t);a&&r.push(a)}return r}async function w(e){let t=e||y(),[r,n,a]=await Promise.all([R(t),E(t),S(t)]),o=0;for(let e of r)o+=e.tokenCount;for(let e of(n.file&&(o+=n.file.tokenCount),a))o+=e.tokenCount;return{agentInstructions:r,config:n,projectDocs:a,totalTokens:o,projectRoot:t}}e.s(["getProjectContext",()=>w,"getSpecById",()=>g,"getSpecs",()=>h,"getSpecsWithMetadata",()=>m,"getStats",()=>x],568239)},4797,e=>{"use strict";var t=e.i(706169),r=e.i(825864),n=e.i(71648),a=e.i(630064),o=e.i(674222),i=e.i(602043),s=e.i(671408),l=e.i(326527),c=e.i(130592),p=e.i(334639),u=e.i(388935),d=e.i(868515),f=e.i(187166),h=e.i(376718),m=e.i(976529),g=e.i(451151),x=e.i(193695);e.i(859704);var y=e.i(708259),v=e.i(931511),R=e.i(568239);async function E(e,{params:t}){try{let{id:e}=await t,r=await (0,R.getStats)(e);return v.NextResponse.json({stats:r})}catch(e){return console.error("Error fetching stats:",e),v.NextResponse.json({error:"Failed to fetch stats"},{status:500})}}e.s(["GET",()=>E],691990);var S=e.i(691990);let w=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/projects/[id]/stats/route",pathname:"/api/projects/[id]/stats",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/projects/[id]/stats/route.ts",nextConfigOutput:"standalone",userland:S}),{workAsyncStorage:N,workUnitAsyncStorage:C,serverHooks:A}=w;function b(){return(0,n.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:C})}async function q(e,t,n){w.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/projects/[id]/stats/route";v=v.replace(/\/index$/,"")||"/";let R=await w.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:E,params:S,nextConfig:N,parsedUrl:C,isDraftMode:A,prerenderManifest:b,routerServerContext:q,isOnDemandRevalidate:j,revalidateOnlyGenerated:P,resolvedPathname:T,clientReferenceManifest:_,serverActionsManifest:k}=R,O=(0,l.normalizeAppPath)(v),M=!!(b.dynamicRoutes[O]||b.routes[T]),I=async()=>((null==q?void 0:q.render404)?await q.render404(e,t,C,!1):t.end("This page could not be found"),null);if(M&&!A){let e=!!b.routes[T],t=b.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(N.experimental.adapterPath)return await I();throw new x.NoFallbackError}}let U=null;!M||w.isDev||A||(U="/index"===(U=T)?"/":U);let D=!0===w.isDev||!M,H=M&&!D;k&&_&&(0,i.setReferenceManifestsSingleton)({page:v,clientReferenceManifest:_,serverActionsManifest:k,serverModuleMap:(0,s.createServerModuleMap)({serverActionsManifest:k})});let B=e.method||"GET",F=(0,o.getTracer)(),$=F.getActiveScopeSpan(),G={params:S,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!N.experimental.authInterrupts},cacheComponents:!!N.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:N.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n)=>w.onRequestError(e,t,n,q)},sharedContext:{buildId:E}},L=new c.NodeNextRequest(e),W=new c.NodeNextResponse(t),K=p.NextRequestAdapter.fromNodeNextRequest(L,(0,p.signalFromNodeResponse)(t));try{let i=async e=>w.handle(K,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${B} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${B} ${v}`)}),s=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var o,l;let c=async({previousCacheEntry:r})=>{try{if(!s&&j&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(a);e.fetchMetrics=G.renderOpts.fetchMetrics;let l=G.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let c=G.renderOpts.collectedTags;if(!M)return await (0,f.sendResponse)(L,W,o,G.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(o.headers);c&&(t[g.NEXT_CACHE_TAGS_HEADER]=c),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await w.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:j})},q),t}},p=await w.handleResponse({req:e,nextConfig:N,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:j,revalidateOnlyGenerated:P,responseGenerator:c,waitUntil:n.waitUntil,isMinimalMode:s});if(!M)return null;if((null==p||null==(o=p.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==p||null==(l=p.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",j?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(p.value.headers);return s&&M||u.delete(g.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(p.cacheControl)),await (0,f.sendResponse)(L,W,new Response(p.value.body,{headers:u,status:p.value.status||200})),null};$?await l($):await F.withPropagatedContext(e.headers,()=>F.trace(u.BaseServerSpan.handleRequest,{spanName:`${B} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},l))}catch(t){if(t instanceof x.NoFallbackError||await w.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:j})}),M)throw t;return await (0,f.sendResponse)(L,W,new Response(null,{status:500})),null}}e.s(["handler",()=>q,"patchFetch",()=>b,"routeModule",()=>w,"serverHooks",()=>A,"workAsyncStorage",()=>N,"workUnitAsyncStorage",()=>C],4797)},614430,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_better-sqlite3_a1cc22cb._.js","server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_baa0160d._.js"].map(t=>e.l(t))).then(()=>t(318146)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__b9c03a57._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},568239,e=>{"use strict";var t=e.i(344271),r=e.i(522734),n=e.i(814747),a=e.i(392194);let o=[{pattern:/design|ui|ux|mockup|wireframe|prototype/i,iconName:"Palette",color:"text-purple-600"},{pattern:/architecture|structure|system|diagram/i,iconName:"Map",color:"text-indigo-600"},{pattern:/implementation|code|develop|build/i,iconName:"Code",color:"text-green-600"},{pattern:/api|endpoint|integration|interface/i,iconName:"Code",color:"text-blue-600"},{pattern:/test|qa|quality|validation/i,iconName:"TestTube",color:"text-orange-600"},{pattern:/task|todo|checklist|milestone/i,iconName:"CheckSquare",color:"text-gray-600"},{pattern:/config|setup|settings|environment/i,iconName:"Wrench",color:"text-yellow-600"},{pattern:/deploy|devops|ci|cd|pipeline|release/i,iconName:"Wrench",color:"text-orange-600"},{pattern:/migration|upgrade|refactor|transition/i,iconName:"GitBranch",color:"text-cyan-600"},{pattern:/security|auth|permission|access|encryption/i,iconName:"CheckSquare",color:"text-red-600"},{pattern:/performance|optimization|speed|cache|benchmark/i,iconName:"TrendingUp",color:"text-green-600"},{pattern:/database|data|schema|model|query/i,iconName:"FileText",color:"text-blue-600"},{pattern:/doc|guide|manual|reference/i,iconName:"FileText",color:"text-gray-500"},{pattern:/github|git|vcs|version/i,iconName:"GitBranch",color:"text-pink-600"}],i={iconName:"FileText",color:"text-gray-600"};var s=e.i(902157);function l(e){let{contentMd:t,contentHtml:r,...n}=e;return n}let c=(0,n.resolve)(process.cwd(),"../../specs");function p(){let e=process.env.SPECS_DIR;return e?e.startsWith("/")?e:(0,n.resolve)(process.cwd(),e):c}function u(e){let t=e.replace(/^specs\//,"").replace(/\/README\.md$/,"");return(0,n.join)(p(),t)}function d(e){try{var t;let r=(0,n.join)(e,"README.md"),o=(0,s.readFileSync)(r,"utf-8"),{data:i}=(0,a.default)(o);return{dependsOn:(t=i?.depends_on??i?.dependsOn)?Array.isArray(t)?t.map(e=>String(e)):"string"==typeof t?[t]:[]:[],requiredBy:[]}}catch(e){return console.warn("Unable to parse spec relationships",e),{dependsOn:[],requiredBy:[]}}}function f(e){return{...e,tags:e.tags?"string"==typeof e.tags?JSON.parse(e.tags):e.tags:null}}async function h(e){return(await t.specsService.getAllSpecs(e)).map(e=>l(f(e)))}async function m(e){let r=await t.specsService.getAllSpecs(e);if(e)return r.map(e=>({...l(f(e)),subSpecsCount:0,relationships:{dependsOn:[],requiredBy:[]}}));let a=new Map;for(let e of r){let{dependsOn:t}=d(u(e.filePath));a.set(e.specName,{dependsOn:t,requiredBy:[]})}for(let[e,t]of a.entries())for(let r of t.dependsOn){let t=a.get(r);t&&t.requiredBy.push(e)}return r.map(e=>{let t=function(e){try{if(!(0,s.existsSync)(e))return 0;let t=(0,s.readdirSync)(e),r=0;for(let a of t){if("README.md"===a||!a.endsWith(".md"))continue;let t=(0,n.join)(e,a);try{(0,s.statSync)(t).isFile()&&r++}catch{}}return r}catch{return 0}}(u(e.filePath)),r=a.get(e.specName)||{dependsOn:[],requiredBy:[]};return{...l(f(e)),subSpecsCount:t,relationships:r}})}async function x(e,s){let l=await t.specsService.getSpec(e,s);if(!l)return null;let c=f(l);if(!s){let e=u(l.filePath),s=function(e){let t=[];if(!(0,r.existsSync)(e))return t;try{for(let s of(0,r.readdirSync)(e)){if("README.md"===s||!s.endsWith(".md"))continue;let l=(0,n.join)(e,s);if((0,r.statSync)(l).isFile())try{let e=(0,r.readFileSync)(l,"utf-8"),{content:n}=(0,a.default)(e),c=function(e){let t=e.replace(/\.md$/i,"");for(let{pattern:e,iconName:r,color:n}of o)if(e.test(t))return{iconName:r,color:n};return i}(s);t.push({name:s.replace(/\.md$/i,"").split(/[-_]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" "),file:s,iconName:c.iconName,color:c.color,content:n})}catch(e){console.error(`Error reading sub-spec ${s}:`,e)}}t.sort((e,t)=>e.file.localeCompare(t.file))}catch(t){console.error(`Error reading spec directory ${e}:`,t)}return t}(e),{dependsOn:p}=d(e),f=await t.specsService.getAllSpecs(),h=[];for(let e of f)e.specName!==l.specName&&d(u(e.filePath)).dependsOn.includes(l.specName)&&h.push(e.specName);return{...c,subSpecs:s,relationships:{dependsOn:p,requiredBy:h}}}return c}async function g(e){let r=await t.specsService.getAllSpecs(e),n=new Map,a=new Map;for(let e of r)e.status&&n.set(e.status,(n.get(e.status)||0)+1),e.priority&&a.set(e.priority,(a.get(e.priority)||0)+1);let o=n.get("complete")||0,i=r.length>0?o/r.length*100:0;return{totalProjects:1,totalSpecs:r.length,specsByStatus:Array.from(n.entries()).map(([e,t])=>({status:e,count:t})),specsByPriority:Array.from(a.entries()).map(([e,t])=>({priority:e,count:t})),completionRate:Math.round(10*i)/10}}function y(){let e=p();return(0,n.dirname)(e)}function v(e,t){try{let r;if(!(0,s.existsSync)(e))return null;let n=(0,s.statSync)(e),a=(0,s.readFileSync)(e,"utf-8"),o=e.replace(t+"/","");return{name:o.split("/").pop()||o,path:o,content:a,tokenCount:(r=a.split(/\s+/).filter(e=>e.length>0).length,Math.ceil(1.3*r+.5*(a.match(/[^a-zA-Z0-9\s]/g)||[]).length)),lastModified:n.mtime}}catch(t){return console.warn(`Unable to read context file: ${e}`,t),null}}async function R(e){let t=e||y(),r=[];for(let e of["AGENTS.md","GEMINI.md","CLAUDE.md","COPILOT.md"]){let a=v((0,n.join)(t,e),t);a&&r.push(a)}let a=v((0,n.join)(t,".github","copilot-instructions.md"),t);a&&r.push(a);let o=(0,n.join)(t,"docs","agents");if((0,s.existsSync)(o))try{for(let e of(0,s.readdirSync)(o))if(e.endsWith(".md")){let a=v((0,n.join)(o,e),t);a&&r.push(a)}}catch{}return r}async function E(e){let t=e||y(),r=v((0,n.join)(t,".lean-spec","config.json"),t);if(!r)return{file:null,parsed:null};try{let e=JSON.parse(r.content);return{file:r,parsed:e}}catch{return{file:r,parsed:null}}}async function w(e){let t=e||y(),r=[];for(let e of["README.md","CONTRIBUTING.md","CHANGELOG.md"]){let a=v((0,n.join)(t,e),t);a&&r.push(a)}return r}async function S(e){let t=e||y(),[r,n,a]=await Promise.all([R(t),E(t),w(t)]),o=0;for(let e of r)o+=e.tokenCount;for(let e of(n.file&&(o+=n.file.tokenCount),a))o+=e.tokenCount;return{agentInstructions:r,config:n,projectDocs:a,totalTokens:o,projectRoot:t}}e.s(["getProjectContext",()=>S,"getSpecById",()=>x,"getSpecs",()=>h,"getSpecsWithMetadata",()=>m,"getStats",()=>g],568239)},881503,e=>{"use strict";var t=e.i(706169),r=e.i(825864),n=e.i(71648),a=e.i(630064),o=e.i(674222),i=e.i(602043),s=e.i(671408),l=e.i(326527),c=e.i(130592),p=e.i(334639),u=e.i(388935),d=e.i(868515),f=e.i(187166),h=e.i(376718),m=e.i(976529),x=e.i(451151),g=e.i(193695);e.i(859704);var y=e.i(708259),v=e.i(931511),R=e.i(568239),E=e.i(84347);async function w(e,{params:t}){try{let{id:e}=await t,r=await E.projectRegistry.getProject(e);if(!r)return v.NextResponse.json({error:"Project not found"},{status:404});let n=await (0,R.getProjectContext)(r.path);return v.NextResponse.json(n)}catch(e){return console.error("Error fetching project context:",e),v.NextResponse.json({error:"Failed to fetch project context"},{status:500})}}e.s(["GET",()=>w,"dynamic",0,"force-dynamic"],493467);var S=e.i(493467);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/projects/[id]/context/route",pathname:"/api/projects/[id]/context",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/projects/[id]/context/route.ts",nextConfigOutput:"standalone",userland:S}),{workAsyncStorage:C,workUnitAsyncStorage:A,serverHooks:j}=N;function b(){return(0,n.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:A})}async function q(e,t,n){N.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/projects/[id]/context/route";v=v.replace(/\/index$/,"")||"/";let R=await N.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:E,params:w,nextConfig:S,parsedUrl:C,isDraftMode:A,prerenderManifest:j,routerServerContext:b,isOnDemandRevalidate:q,revalidateOnlyGenerated:P,resolvedPathname:T,clientReferenceManifest:_,serverActionsManifest:k}=R,O=(0,l.normalizeAppPath)(v),M=!!(j.dynamicRoutes[O]||j.routes[T]),I=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,C,!1):t.end("This page could not be found"),null);if(M&&!A){let e=!!j.routes[T],t=j.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(S.experimental.adapterPath)return await I();throw new g.NoFallbackError}}let U=null;!M||N.isDev||A||(U="/index"===(U=T)?"/":U);let D=!0===N.isDev||!M,H=M&&!D;k&&_&&(0,i.setReferenceManifestsSingleton)({page:v,clientReferenceManifest:_,serverActionsManifest:k,serverModuleMap:(0,s.createServerModuleMap)({serverActionsManifest:k})});let B=e.method||"GET",F=(0,o.getTracer)(),$=F.getActiveScopeSpan(),G={params:w,prerenderManifest:j,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:S.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n)=>N.onRequestError(e,t,n,b)},sharedContext:{buildId:E}},L=new c.NodeNextRequest(e),W=new c.NodeNextResponse(t),K=p.NextRequestAdapter.fromNodeNextRequest(L,(0,p.signalFromNodeResponse)(t));try{let i=async e=>N.handle(K,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${B} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${B} ${v}`)}),s=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var o,l;let c=async({previousCacheEntry:r})=>{try{if(!s&&q&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(a);e.fetchMetrics=G.renderOpts.fetchMetrics;let l=G.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let c=G.renderOpts.collectedTags;if(!M)return await (0,f.sendResponse)(L,W,o,G.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(o.headers);c&&(t[x.NEXT_CACHE_TAGS_HEADER]=c),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=x.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:q})},b),t}},p=await N.handleResponse({req:e,nextConfig:S,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:j,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:P,responseGenerator:c,waitUntil:n.waitUntil,isMinimalMode:s});if(!M)return null;if((null==p||null==(o=p.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==p||null==(l=p.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",q?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(p.value.headers);return s&&M||u.delete(x.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(p.cacheControl)),await (0,f.sendResponse)(L,W,new Response(p.value.body,{headers:u,status:p.value.status||200})),null};$?await l($):await F.withPropagatedContext(e.headers,()=>F.trace(u.BaseServerSpan.handleRequest,{spanName:`${B} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:q})}),M)throw t;return await (0,f.sendResponse)(L,W,new Response(null,{status:500})),null}}e.s(["handler",()=>q,"patchFetch",()=>b,"routeModule",()=>N,"serverHooks",()=>j,"workAsyncStorage",()=>C,"workUnitAsyncStorage",()=>A],881503)},614430,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_better-sqlite3_a1cc22cb._.js","server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_baa0160d._.js"].map(t=>e.l(t))).then(()=>t(318146)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__e99e7672._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},568239,e=>{"use strict";var t=e.i(344271),r=e.i(522734),n=e.i(814747),a=e.i(392194);let o=[{pattern:/design|ui|ux|mockup|wireframe|prototype/i,iconName:"Palette",color:"text-purple-600"},{pattern:/architecture|structure|system|diagram/i,iconName:"Map",color:"text-indigo-600"},{pattern:/implementation|code|develop|build/i,iconName:"Code",color:"text-green-600"},{pattern:/api|endpoint|integration|interface/i,iconName:"Code",color:"text-blue-600"},{pattern:/test|qa|quality|validation/i,iconName:"TestTube",color:"text-orange-600"},{pattern:/task|todo|checklist|milestone/i,iconName:"CheckSquare",color:"text-gray-600"},{pattern:/config|setup|settings|environment/i,iconName:"Wrench",color:"text-yellow-600"},{pattern:/deploy|devops|ci|cd|pipeline|release/i,iconName:"Wrench",color:"text-orange-600"},{pattern:/migration|upgrade|refactor|transition/i,iconName:"GitBranch",color:"text-cyan-600"},{pattern:/security|auth|permission|access|encryption/i,iconName:"CheckSquare",color:"text-red-600"},{pattern:/performance|optimization|speed|cache|benchmark/i,iconName:"TrendingUp",color:"text-green-600"},{pattern:/database|data|schema|model|query/i,iconName:"FileText",color:"text-blue-600"},{pattern:/doc|guide|manual|reference/i,iconName:"FileText",color:"text-gray-500"},{pattern:/github|git|vcs|version/i,iconName:"GitBranch",color:"text-pink-600"}],i={iconName:"FileText",color:"text-gray-600"};var s=e.i(902157);function l(e){let{contentMd:t,contentHtml:r,...n}=e;return n}let c=(0,n.resolve)(process.cwd(),"../../specs");function p(){let e=process.env.SPECS_DIR;return e?e.startsWith("/")?e:(0,n.resolve)(process.cwd(),e):c}function u(e){let t=e.replace(/^specs\//,"").replace(/\/README\.md$/,"");return(0,n.join)(p(),t)}function d(e){try{var t;let r=(0,n.join)(e,"README.md"),o=(0,s.readFileSync)(r,"utf-8"),{data:i}=(0,a.default)(o);return{dependsOn:(t=i?.depends_on??i?.dependsOn)?Array.isArray(t)?t.map(e=>String(e)):"string"==typeof t?[t]:[]:[],requiredBy:[]}}catch(e){return console.warn("Unable to parse spec relationships",e),{dependsOn:[],requiredBy:[]}}}function f(e){return{...e,tags:e.tags?"string"==typeof e.tags?JSON.parse(e.tags):e.tags:null}}async function h(e){return(await t.specsService.getAllSpecs(e)).map(e=>l(f(e)))}async function m(e){let r=await t.specsService.getAllSpecs(e);if(e)return r.map(e=>({...l(f(e)),subSpecsCount:0,relationships:{dependsOn:[],requiredBy:[]}}));let a=new Map;for(let e of r){let{dependsOn:t}=d(u(e.filePath));a.set(e.specName,{dependsOn:t,requiredBy:[]})}for(let[e,t]of a.entries())for(let r of t.dependsOn){let t=a.get(r);t&&t.requiredBy.push(e)}return r.map(e=>{let t=function(e){try{if(!(0,s.existsSync)(e))return 0;let t=(0,s.readdirSync)(e),r=0;for(let a of t){if("README.md"===a||!a.endsWith(".md"))continue;let t=(0,n.join)(e,a);try{(0,s.statSync)(t).isFile()&&r++}catch{}}return r}catch{return 0}}(u(e.filePath)),r=a.get(e.specName)||{dependsOn:[],requiredBy:[]};return{...l(f(e)),subSpecsCount:t,relationships:r}})}async function g(e,s){let l=await t.specsService.getSpec(e,s);if(!l)return null;let c=f(l);if(!s){let e=u(l.filePath),s=function(e){let t=[];if(!(0,r.existsSync)(e))return t;try{for(let s of(0,r.readdirSync)(e)){if("README.md"===s||!s.endsWith(".md"))continue;let l=(0,n.join)(e,s);if((0,r.statSync)(l).isFile())try{let e=(0,r.readFileSync)(l,"utf-8"),{content:n}=(0,a.default)(e),c=function(e){let t=e.replace(/\.md$/i,"");for(let{pattern:e,iconName:r,color:n}of o)if(e.test(t))return{iconName:r,color:n};return i}(s);t.push({name:s.replace(/\.md$/i,"").split(/[-_]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" "),file:s,iconName:c.iconName,color:c.color,content:n})}catch(e){console.error(`Error reading sub-spec ${s}:`,e)}}t.sort((e,t)=>e.file.localeCompare(t.file))}catch(t){console.error(`Error reading spec directory ${e}:`,t)}return t}(e),{dependsOn:p}=d(e),f=await t.specsService.getAllSpecs(),h=[];for(let e of f)e.specName!==l.specName&&d(u(e.filePath)).dependsOn.includes(l.specName)&&h.push(e.specName);return{...c,subSpecs:s,relationships:{dependsOn:p,requiredBy:h}}}return c}async function x(e){let r=await t.specsService.getAllSpecs(e),n=new Map,a=new Map;for(let e of r)e.status&&n.set(e.status,(n.get(e.status)||0)+1),e.priority&&a.set(e.priority,(a.get(e.priority)||0)+1);let o=n.get("complete")||0,i=r.length>0?o/r.length*100:0;return{totalProjects:1,totalSpecs:r.length,specsByStatus:Array.from(n.entries()).map(([e,t])=>({status:e,count:t})),specsByPriority:Array.from(a.entries()).map(([e,t])=>({priority:e,count:t})),completionRate:Math.round(10*i)/10}}function y(){let e=p();return(0,n.dirname)(e)}function v(e,t){try{let r;if(!(0,s.existsSync)(e))return null;let n=(0,s.statSync)(e),a=(0,s.readFileSync)(e,"utf-8"),o=e.replace(t+"/","");return{name:o.split("/").pop()||o,path:o,content:a,tokenCount:(r=a.split(/\s+/).filter(e=>e.length>0).length,Math.ceil(1.3*r+.5*(a.match(/[^a-zA-Z0-9\s]/g)||[]).length)),lastModified:n.mtime}}catch(t){return console.warn(`Unable to read context file: ${e}`,t),null}}async function R(e){let t=e||y(),r=[];for(let e of["AGENTS.md","GEMINI.md","CLAUDE.md","COPILOT.md"]){let a=v((0,n.join)(t,e),t);a&&r.push(a)}let a=v((0,n.join)(t,".github","copilot-instructions.md"),t);a&&r.push(a);let o=(0,n.join)(t,"docs","agents");if((0,s.existsSync)(o))try{for(let e of(0,s.readdirSync)(o))if(e.endsWith(".md")){let a=v((0,n.join)(o,e),t);a&&r.push(a)}}catch{}return r}async function E(e){let t=e||y(),r=v((0,n.join)(t,".lean-spec","config.json"),t);if(!r)return{file:null,parsed:null};try{let e=JSON.parse(r.content);return{file:r,parsed:e}}catch{return{file:r,parsed:null}}}async function S(e){let t=e||y(),r=[];for(let e of["README.md","CONTRIBUTING.md","CHANGELOG.md"]){let a=v((0,n.join)(t,e),t);a&&r.push(a)}return r}async function w(e){let t=e||y(),[r,n,a]=await Promise.all([R(t),E(t),S(t)]),o=0;for(let e of r)o+=e.tokenCount;for(let e of(n.file&&(o+=n.file.tokenCount),a))o+=e.tokenCount;return{agentInstructions:r,config:n,projectDocs:a,totalTokens:o,projectRoot:t}}e.s(["getProjectContext",()=>w,"getSpecById",()=>g,"getSpecs",()=>h,"getSpecsWithMetadata",()=>m,"getStats",()=>x],568239)},581961,e=>{"use strict";var t=e.i(706169),r=e.i(825864),n=e.i(71648),a=e.i(630064),o=e.i(674222),i=e.i(602043),s=e.i(671408),l=e.i(326527),c=e.i(130592),p=e.i(334639),u=e.i(388935),d=e.i(868515),f=e.i(187166),h=e.i(376718),m=e.i(976529),g=e.i(451151),x=e.i(193695);e.i(859704);var y=e.i(708259),v=e.i(931511),R=e.i(568239);async function E(){try{let e=await (0,R.getStats)();return v.NextResponse.json(e)}catch(e){return console.error("Error fetching stats:",e),v.NextResponse.json({error:"Failed to fetch stats"},{status:500})}}e.s(["GET",()=>E],490210);var S=e.i(490210);let w=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/stats/route",pathname:"/api/stats",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/stats/route.ts",nextConfigOutput:"standalone",userland:S}),{workAsyncStorage:N,workUnitAsyncStorage:C,serverHooks:A}=w;function b(){return(0,n.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:C})}async function q(e,t,n){w.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/stats/route";v=v.replace(/\/index$/,"")||"/";let R=await w.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:E,params:S,nextConfig:N,parsedUrl:C,isDraftMode:A,prerenderManifest:b,routerServerContext:q,isOnDemandRevalidate:P,revalidateOnlyGenerated:T,resolvedPathname:_,clientReferenceManifest:k,serverActionsManifest:O}=R,j=(0,l.normalizeAppPath)(v),M=!!(b.dynamicRoutes[j]||b.routes[_]),I=async()=>((null==q?void 0:q.render404)?await q.render404(e,t,C,!1):t.end("This page could not be found"),null);if(M&&!A){let e=!!b.routes[_],t=b.dynamicRoutes[j];if(t&&!1===t.fallback&&!e){if(N.experimental.adapterPath)return await I();throw new x.NoFallbackError}}let U=null;!M||w.isDev||A||(U="/index"===(U=_)?"/":U);let D=!0===w.isDev||!M,H=M&&!D;O&&k&&(0,i.setReferenceManifestsSingleton)({page:v,clientReferenceManifest:k,serverActionsManifest:O,serverModuleMap:(0,s.createServerModuleMap)({serverActionsManifest:O})});let B=e.method||"GET",F=(0,o.getTracer)(),$=F.getActiveScopeSpan(),G={params:S,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!N.experimental.authInterrupts},cacheComponents:!!N.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:N.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n)=>w.onRequestError(e,t,n,q)},sharedContext:{buildId:E}},L=new c.NodeNextRequest(e),W=new c.NodeNextResponse(t),K=p.NextRequestAdapter.fromNodeNextRequest(L,(0,p.signalFromNodeResponse)(t));try{let i=async e=>w.handle(K,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${B} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${B} ${v}`)}),s=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var o,l;let c=async({previousCacheEntry:r})=>{try{if(!s&&P&&T&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(a);e.fetchMetrics=G.renderOpts.fetchMetrics;let l=G.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let c=G.renderOpts.collectedTags;if(!M)return await (0,f.sendResponse)(L,W,o,G.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(o.headers);c&&(t[g.NEXT_CACHE_TAGS_HEADER]=c),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await w.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:P})},q),t}},p=await w.handleResponse({req:e,nextConfig:N,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:T,responseGenerator:c,waitUntil:n.waitUntil,isMinimalMode:s});if(!M)return null;if((null==p||null==(o=p.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==p||null==(l=p.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",P?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(p.value.headers);return s&&M||u.delete(g.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(p.cacheControl)),await (0,f.sendResponse)(L,W,new Response(p.value.body,{headers:u,status:p.value.status||200})),null};$?await l($):await F.withPropagatedContext(e.headers,()=>F.trace(u.BaseServerSpan.handleRequest,{spanName:`${B} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},l))}catch(t){if(t instanceof x.NoFallbackError||await w.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:P})}),M)throw t;return await (0,f.sendResponse)(L,W,new Response(null,{status:500})),null}}e.s(["handler",()=>q,"patchFetch",()=>b,"routeModule",()=>w,"serverHooks",()=>A,"workAsyncStorage",()=>N,"workUnitAsyncStorage",()=>C],581961)},614430,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_better-sqlite3_a1cc22cb._.js","server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_baa0160d._.js"].map(t=>e.l(t))).then(()=>t(318146)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__f38a5f20._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},84347,e=>{"use strict";var t=e.i(912714),r=e.i(750227),a=e.i(666680),s=e.i(660526),i=e.i(481347);let n=r.join((0,s.homedir)(),".lean-spec","projects.yaml"),o=new class{config=null;generateProjectId(e){return(0,a.createHash)("sha256").update(e).digest("hex").substring(0,12)}async loadConfig(){if(this.config)return this.config;try{let e=r.dirname(n);await t.mkdir(e,{recursive:!0});let a=await t.readFile(n,"utf-8"),s=i.default.load(a),o=(s.projects||[]).map(e=>({...e,lastAccessed:e.lastAccessed?new Date(e.lastAccessed):new Date}));this.config={projects:o,recentProjects:s.recentProjects||[]}}catch(e){if("ENOENT"===e.code)this.config={projects:[],recentProjects:[]};else throw e}return this.config}async saveConfig(){if(!this.config)return;let e=r.dirname(n);await t.mkdir(e,{recursive:!0});let a={projects:this.config.projects.map(e=>({...e,lastAccessed:e.lastAccessed.toISOString()})),recentProjects:this.config.recentProjects},s=i.default.dump(a,{indent:2,lineWidth:100});await t.writeFile(n,s,"utf-8")}async validateProject(e){try{let a,s,n=r.resolve(e);if(!(await t.stat(n)).isDirectory())return{isValid:!1,path:n,error:"Path is not a directory"};let o=r.join(n,".lean-spec"),c=r.join(n,"specs");try{await t.access(o);let e=r.join(o,"../specs");try{await t.access(e),a=e}catch{a=c}}catch{try{await t.access(c),a=c}catch{return{isValid:!1,path:n,error:"No .lean-spec directory or specs directory found"}}}let l=r.basename(n);try{let e=r.join(n,"leanspec.yaml"),a=await t.readFile(e,"utf-8"),o=i.default.load(a);o.name&&(l=o.name),o.description&&(s=o.description)}catch{try{let e=r.join(n,"package.json"),a=await t.readFile(e,"utf-8"),i=JSON.parse(a);i.name&&(l=i.name),i.description&&(s=i.description)}catch{}}return{isValid:!0,path:n,specsDir:r.resolve(a),name:l,description:s}}catch(t){return{isValid:!1,path:e,error:t instanceof Error?t.message:"Unknown error"}}}async addProject(e,t){let r=await this.validateProject(e);if(!r.isValid)throw Error(`Invalid project: ${r.error}`);let a=await this.loadConfig(),s=this.generateProjectId(r.path),i=a.projects.findIndex(e=>e.id===s),n={id:s,name:r.name,path:r.path,specsDir:r.specsDir,lastAccessed:new Date,favorite:t?.favorite||!1,color:t?.color,description:r.description};return i>=0?a.projects[i]=n:a.projects.push(n),this.updateRecentProjects(a,s),await this.saveConfig(),n}async removeProject(e){let t=await this.loadConfig();t.projects=t.projects.filter(t=>t.id!==e),t.recentProjects=t.recentProjects.filter(t=>t!==e),await this.saveConfig()}async getProject(e){return(await this.loadConfig()).projects.find(t=>t.id===e)||null}async findProjectRoot(e){let a=r.resolve(e),{root:s}=r.parse(a);for(;;){let e=r.join(a,".lean-spec");try{return await t.access(e),a}catch{}if(a===s)break;a=r.dirname(a)}return null}async getProjects(){let e=await this.loadConfig();if(0===e.projects.length){let e=await this.findProjectRoot(process.cwd());if(e)try{return[await this.addProject(e)]}catch(e){console.warn("Failed to auto-add default project:",e)}}return e.projects}async touchProject(e){let t=await this.loadConfig(),r=t.projects.find(t=>t.id===e);r&&(r.lastAccessed=new Date,this.updateRecentProjects(t,e),await this.saveConfig())}async toggleFavorite(e){let t=(await this.loadConfig()).projects.find(t=>t.id===e);if(!t)throw Error("Project not found");return t.favorite=!t.favorite,await this.saveConfig(),t.favorite}async updateProject(e,t){let r=(await this.loadConfig()).projects.find(t=>t.id===e);if(!r)throw Error("Project not found");return Object.assign(r,t),await this.saveConfig(),r}async discoverProjects(e,a=3){let s=[],i=this;async function n(e,o){if(!(o>a))try{for(let a of(await t.readdir(e,{withFileTypes:!0}))){if(!a.isDirectory()||"node_modules"===a.name||".git"===a.name||a.name.startsWith("."))continue;let t=r.join(e,a.name),c=await i.validateProject(t);c.isValid?s.push(c):await n(t,o+1)}}catch(e){}}return await n(e,0),s}async listDirectory(e=(0,s.homedir)()){try{let a=r.resolve(e),s=(await t.readdir(a,{withFileTypes:!0})).filter(e=>e.isDirectory()&&!e.name.startsWith(".")).map(e=>({name:e.name,path:r.join(a,e.name),isDirectory:!0})).sort((e,t)=>e.name.localeCompare(t.name)),i=r.dirname(a);return i!==a&&s.unshift({name:"..",path:i,isDirectory:!0}),s}catch(e){throw Error(`Failed to list directory: ${e.message}`)}}async getRecentProjects(e=10){let t=await this.loadConfig();return t.recentProjects.slice(0,e).map(e=>t.projects.find(t=>t.id===e)).filter(e=>void 0!==e)}async getFavoriteProjects(){return(await this.loadConfig()).projects.filter(e=>e.favorite)}updateRecentProjects(e,t){e.recentProjects=e.recentProjects.filter(e=>e!==t),e.recentProjects.unshift(t),e.recentProjects=e.recentProjects.slice(0,10)}invalidateCache(){this.config=null}};e.s(["projectRegistry",0,o])},68519,e=>{"use strict";var t=e.i(706169),r=e.i(825864),a=e.i(71648),s=e.i(630064),i=e.i(674222),n=e.i(602043),o=e.i(671408),c=e.i(326527),l=e.i(130592),d=e.i(334639),p=e.i(388935),u=e.i(868515),f=e.i(187166),h=e.i(376718),j=e.i(976529),w=e.i(451151),g=e.i(193695);e.i(859704);var v=e.i(708259),m=e.i(931511),x=e.i(750227),y=e.i(912714),R=e.i(902157),P=e.i(572939),C=e.i(84347);let E=["planned","in-progress","complete","archived"];async function A(t,r){if(!(0,R.existsSync)(t))return null;let{readdir:a}=await e.A(687903),s=await a(t,{withFileTypes:!0}),i=/^(\d{2,})-/,n=parseInt(r.split("-")[0],10);for(let e of s)if(e.isDirectory()&&(e.name===r||!isNaN(n)&&i.test(e.name)&&parseInt(e.name.split("-")[0],10)===n))return x.default.join(t,e.name);return null}async function N(e,{params:t}){try{let{id:r,spec:a}=await t;if("multi-project"!==process.env.SPECS_MODE)return m.NextResponse.json({error:"Multi-project mode not enabled"},{status:400});let s=await C.projectRegistry.getProject(r);if(!s)return m.NextResponse.json({error:"Project not found"},{status:404});let i={};try{i=await e.json()}catch{return m.NextResponse.json({error:"Invalid JSON body"},{status:400})}let{status:n}=i;if(!n||!E.includes(n))return m.NextResponse.json({error:"Invalid status value"},{status:400});let o=decodeURIComponent(a),c=await A(s.specsDir,o);if(!c)return m.NextResponse.json({error:"Spec not found"},{status:404});let l=x.default.join(c,"README.md");if(!(0,R.existsSync)(l))return m.NextResponse.json({error:"Spec README.md not found"},{status:404});let d=await (0,y.readFile)(l,"utf-8"),{content:p}=(0,P.createUpdatedFrontmatter)(d,{status:n});return await (0,y.writeFile)(l,p,"utf-8"),m.NextResponse.json({success:!0})}catch(e){return console.error("Failed to update spec status:",e),m.NextResponse.json({error:"Failed to update spec status"},{status:500})}}e.s(["PATCH",()=>N],160913);var b=e.i(160913);let D=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/projects/[id]/specs/[spec]/status/route",pathname:"/api/projects/[id]/specs/[spec]/status",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/projects/[id]/specs/[spec]/status/route.ts",nextConfigOutput:"standalone",userland:b}),{workAsyncStorage:k,workUnitAsyncStorage:S,serverHooks:T}=D;function q(){return(0,a.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:S})}async function O(e,t,a){D.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/projects/[id]/specs/[spec]/status/route";m=m.replace(/\/index$/,"")||"/";let x=await D.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!x)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:y,params:R,nextConfig:P,parsedUrl:C,isDraftMode:E,prerenderManifest:A,routerServerContext:N,isOnDemandRevalidate:b,revalidateOnlyGenerated:k,resolvedPathname:S,clientReferenceManifest:T,serverActionsManifest:q}=x,O=(0,c.normalizeAppPath)(m),I=!!(A.dynamicRoutes[O]||A.routes[S]),_=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,C,!1):t.end("This page could not be found"),null);if(I&&!E){let e=!!A.routes[S],t=A.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(P.experimental.adapterPath)return await _();throw new g.NoFallbackError}}let F=null;!I||D.isDev||E||(F="/index"===(F=S)?"/":F);let M=!0===D.isDev||!I,H=I&&!M;q&&T&&(0,n.setReferenceManifestsSingleton)({page:m,clientReferenceManifest:T,serverActionsManifest:q,serverModuleMap:(0,o.createServerModuleMap)({serverActionsManifest:q})});let U=e.method||"GET",$=(0,i.getTracer)(),V=$.getActiveScopeSpan(),K={params:R,prerenderManifest:A,renderOpts:{experimental:{authInterrupts:!!P.experimental.authInterrupts},cacheComponents:!!P.cacheComponents,supportsDynamicResponse:M,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:P.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a)=>D.onRequestError(e,t,a,N)},sharedContext:{buildId:y}},B=new l.NodeNextRequest(e),L=new l.NodeNextResponse(t),W=d.NextRequestAdapter.fromNodeNextRequest(B,(0,d.signalFromNodeResponse)(t));try{let n=async e=>D.handle(W,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${U} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${U} ${m}`)}),o=!!(0,s.getRequestMeta)(e,"minimalMode"),c=async s=>{var i,c;let l=async({previousCacheEntry:r})=>{try{if(!o&&b&&k&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await n(s);e.fetchMetrics=K.renderOpts.fetchMetrics;let c=K.renderOpts.pendingWaitUntil;c&&a.waitUntil&&(a.waitUntil(c),c=void 0);let l=K.renderOpts.collectedTags;if(!I)return await (0,f.sendResponse)(B,L,i,K.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await D.onRequestError(e,t,{routerKind:"App Router",routePath:m,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:b})},N),t}},d=await D.handleResponse({req:e,nextConfig:P,cacheKey:F,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:k,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:o});if(!I)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(c=d.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",b?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return o&&I||p.delete(w.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,j.getCacheControlHeader)(d.cacheControl)),await (0,f.sendResponse)(B,L,new Response(d.value.body,{headers:p,status:d.value.status||200})),null};V?await c(V):await $.withPropagatedContext(e.headers,()=>$.trace(p.BaseServerSpan.handleRequest,{spanName:`${U} ${m}`,kind:i.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},c))}catch(t){if(t instanceof g.NoFallbackError||await D.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:b})}),I)throw t;return await (0,f.sendResponse)(B,L,new Response(null,{status:500})),null}}e.s(["handler",()=>O,"patchFetch",()=>q,"routeModule",()=>D,"serverHooks",()=>T,"workAsyncStorage",()=>k,"workUnitAsyncStorage",()=>S],68519)},37939,e=>{e.v(t=>Promise.all(["server/chunks/e0876_tiktoken_3efea2dc._.js"].map(t=>e.l(t))).then(()=>t(602141)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__fa8cf2bc._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},980096,a=>{"use strict";var b=a.i(40352),c=a.i(936883),d=a.i(687052);let e=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("rounded-xl border border-gray-200 dark:border-gray-800 bg-card text-card-foreground shadow",a),...c}));e.displayName="Card";let f=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex flex-col space-y-1.5 p-6",a),...c}));f.displayName="CardHeader";let g=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("font-semibold leading-none tracking-tight",a),...c}));g.displayName="CardTitle";let h=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("text-sm text-muted-foreground",a),...c}));h.displayName="CardDescription";let i=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("p-6 pt-0",a),...c}));i.displayName="CardContent",c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex items-center p-6 pt-0",a),...c})).displayName="CardFooter",a.s(["Card",()=>e,"CardContent",()=>i,"CardDescription",()=>h,"CardHeader",()=>f,"CardTitle",()=>g])},730702,a=>{"use strict";let b=(0,a.i(863535).default)("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]);a.s(["List",()=>b],730702)},404620,a=>{"use strict";let b=(0,a.i(863535).default)("maximize-2",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]);a.s(["Maximize2",()=>b],404620)},631868,a=>{"use strict";var b=a.i(40352),c=a.i(687052);function d({className:a,...d}){return(0,b.jsx)("div",{className:(0,c.cn)("animate-pulse rounded-md bg-muted",a),...d})}a.s(["Skeleton",()=>d])},139498,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules__pnpm_4e3e790c._.js","server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_chunk-QXUST7PY_mjs_3e69582d._.js","server/chunks/ssr/node_modules__pnpm_b4ff5c78._.js","server/chunks/ssr/931bf_mermaid_dist_mermaid_core_mjs_1c407865._.js","server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_chunk-S3R3BYOJ_mjs_0c8df0bf._.js","server/chunks/ssr/node_modules__pnpm_bb80de48._.js","server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_chunk-JZLCHNYA_mjs_e1210981._.js","server/chunks/ssr/641df_lodash-es_bcc35893._.js","server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_chunk-MI3HLSF2_mjs_4494daf0._.js","server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_chunk-JA3XYJ7Z_mjs_4c9b0254._.js","server/chunks/ssr/node_modules__pnpm_30b0b05a._.js","server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_chunk-ABZYJK2D_mjs_4034a85b._.js"].map(b=>a.l(b))).then(()=>b(151797)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__53f4506c._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[258470,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored["react-ssr"].ReactServerDOMTurbopackClient},273264,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored.contexts.HooksClientContext},457281,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored.contexts.ServerInsertedHtml},918622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},120635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},618382,(a,b,c)=>{"use strict";b.exports=a.r(918622)},40352,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored["react-ssr"].ReactJsxRuntime},936883,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored["react-ssr"].React},190073,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored["react-ssr"].ReactDOM},411461,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored.contexts.AppRouterContext},72245,a=>{"use strict";var b=a.i(40352),c=a.i(936883);let d=(0,c.createContext)(null);function e(){let a=(0,c.useContext)(d);if(!a)throw Error("useProject must be used within ProjectProvider");return a}function f({children:a,initialProjectId:e}){let[f,g]=(0,c.useState)("single-project"),[h,i]=(0,c.useState)(null),[j,k]=(0,c.useState)([]),[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)([]),[p,q]=(0,c.useState)(!0),[r,s]=(0,c.useState)(null),t=(0,c.useCallback)(async()=>{try{q(!0),s(null);let a=await fetch("/api/projects");if(!a.ok)throw Error("Failed to fetch projects");let b=await a.json();if(g(b.mode||"single-project"),k(b.projects||[]),m(b.recentProjects||[]),o(b.favoriteProjects||[]),!h&&b.projects.length>0){let a=e?b.projects.find(a=>a.id===e):b.recentProjects?.[0]||b.projects[0];a&&i(a)}}catch(a){console.error("Error fetching projects:",a),s(a instanceof Error?a.message:"Failed to load projects")}finally{q(!1)}},[h,e]),u=(0,c.useCallback)(async a=>{try{let b=await fetch(`/api/projects/${a}`);if(!b.ok)throw Error("Failed to fetch project");let c=await b.json();i(c.project),await t()}catch(a){throw console.error("Error switching project:",a),s(a instanceof Error?a.message:"Failed to switch project"),a}},[t]),v=(0,c.useCallback)(async(a,b)=>{try{let c=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:a,...b})});if(!c.ok){let a=await c.json();throw Error(a.details||"Failed to add project")}let d=await c.json();return await t(),d.project}catch(a){throw console.error("Error adding project:",a),s(a instanceof Error?a.message:"Failed to add project"),a}},[t]),w=(0,c.useCallback)(async a=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"DELETE"})).ok)throw Error("Failed to remove project");if(h?.id===a){let b=j.find(b=>b.id!==a);i(b||null)}await t()}catch(a){throw console.error("Error removing project:",a),s(a instanceof Error?a.message:"Failed to remove project"),a}},[h,j,t]),x=(0,c.useCallback)(async a=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({favorite:!0})})).ok)throw Error("Failed to toggle favorite");await t()}catch(a){throw console.error("Error toggling favorite:",a),s(a instanceof Error?a.message:"Failed to toggle favorite"),a}},[t]),y=(0,c.useCallback)(async(a,b)=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)})).ok)throw Error("Failed to update project");await t()}catch(a){throw console.error("Error updating project:",a),s(a instanceof Error?a.message:"Failed to update project"),a}},[t]);return(0,c.useEffect)(()=>{t()},[t]),(0,b.jsx)(d.Provider,{value:{mode:f,currentProject:h,projects:j,recentProjects:l,favoriteProjects:n,isLoading:p,error:r,switchProject:u,addProject:v,removeProject:w,toggleFavorite:x,updateProject:y,refreshProjects:t},children:a})}function g(){let{mode:a,currentProject:b}=e(),d=(0,c.useCallback)(c=>{if("multi-project"===a&&b){let a=c.startsWith("/")?c:`/${c}`;return`/projects/${b.id}${a}`}return c.startsWith("/")?c:`/${c}`},[a,b]),f=(0,c.useCallback)((a,b)=>{let c=d(`/specs/${a}`);return b?`${c}?subspec=${b}`:c},[d]);return{getUrl:d,getSpecUrl:f,isMultiProject:"multi-project"===a,projectId:b?.id}}a.s(["ProjectProvider",()=>f,"useProject",()=>e,"useProjectUrl",()=>g])},247338,a=>{"use strict";let b=(0,a.i(863535).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],247338)},517601,a=>{"use strict";let b=(0,a.i(863535).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",()=>b],517601)},796228,a=>{"use strict";let b=(0,a.i(863535).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["BookOpen",()=>b],796228)},591633,a=>{"use strict";let b=(0,a.i(863535).default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Settings",()=>b],591633)},861698,a=>{"use strict";var b=a.i(936883),c=(a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}},d=["light","dark"],e="(prefers-color-scheme: dark)",f=b.createContext(void 0),g={setTheme:a=>{},themes:[]},h=()=>{var a;return null!=(a=b.useContext(f))?a:g},i=a=>b.useContext(f)?b.createElement(b.Fragment,null,a.children):b.createElement(k,{...a}),j=["light","dark"],k=({forcedTheme:a,disableTransitionOnChange:c=!1,enableSystem:g=!0,enableColorScheme:h=!0,storageKey:i="theme",themes:k=j,defaultTheme:p=g?"system":"light",attribute:q="data-theme",value:r,children:s,nonce:t,scriptProps:u})=>{let[v,w]=b.useState(()=>m(i,p)),[x,y]=b.useState(()=>"system"===v?o():v),z=r?Object.values(r):k,A=b.useCallback(a=>{let b=a;if(!b)return;"system"===a&&g&&(b=o());let e=r?r[b]:b,f=c?n(t):null,i=document.documentElement,j=a=>{"class"===a?(i.classList.remove(...z),e&&i.classList.add(e)):a.startsWith("data-")&&(e?i.setAttribute(a,e):i.removeAttribute(a))};if(Array.isArray(q)?q.forEach(j):j(q),h){let a=d.includes(p)?p:null,c=d.includes(b)?b:a;i.style.colorScheme=c}null==f||f()},[t]),B=b.useCallback(a=>{let b="function"==typeof a?a(v):a;w(b);try{localStorage.setItem(i,b)}catch(a){}},[v]),C=b.useCallback(b=>{y(o(b)),"system"===v&&g&&!a&&A("system")},[v,a]);b.useEffect(()=>{let a=window.matchMedia(e);return a.addListener(C),C(a),()=>a.removeListener(C)},[C]),b.useEffect(()=>{let a=a=>{a.key===i&&(a.newValue?w(a.newValue):B(p))};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)},[B]),b.useEffect(()=>{A(null!=a?a:v)},[a,v]);let D=b.useMemo(()=>({theme:v,setTheme:B,forcedTheme:a,resolvedTheme:"system"===v?x:v,themes:g?[...k,"system"]:k,systemTheme:g?x:void 0}),[v,B,a,x,g,k]);return b.createElement(f.Provider,{value:D},b.createElement(l,{forcedTheme:a,storageKey:i,attribute:q,enableSystem:g,enableColorScheme:h,defaultTheme:p,value:r,themes:k,nonce:t,scriptProps:u}),s)},l=b.memo(({forcedTheme:a,storageKey:d,attribute:e,enableSystem:f,enableColorScheme:g,defaultTheme:h,value:i,themes:j,nonce:k,scriptProps:l})=>{let m=JSON.stringify([e,d,h,a,j,i,f,g]).slice(1,-1);return b.createElement("script",{...l,suppressHydrationWarning:!0,nonce:k,dangerouslySetInnerHTML:{__html:`(${c.toString()})(${m})`}})}),m=(a,b)=>{},n=a=>{let b=document.createElement("style");return a&&b.setAttribute("nonce",a),b.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(b),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(b)},1)}},o=a=>(a||(a=window.matchMedia(e)),a.matches?"dark":"light");a.s(["ThemeProvider",()=>i,"useTheme",()=>h])},841318,a=>{"use strict";var b=a.i(936883),c=a.i(675655),d=a.i(40352),e=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),f=b.forwardRef((a,b)=>(0,d.jsx)(c.Primitive.span,{...a,ref:b,style:{...e,...a.style}}));f.displayName="VisuallyHidden",a.s(["Root",()=>f,"VISUALLY_HIDDEN_STYLES",()=>e])},294783,a=>{"use strict";var b=a.i(40352),c=a.i(156916),d=a.i(861698);function e(){let{theme:a}=(0,d.useTheme)();return(0,b.jsx)(c.Toaster,{theme:a,position:"bottom-right",richColors:!0,closeButton:!0,expand:!1,duration:4e3,toastOptions:{classNames:{toast:"group",title:"font-semibold",description:"text-sm opacity-90",actionButton:"bg-primary text-primary-foreground",cancelButton:"bg-muted text-muted-foreground"}}})}a.s(["Toast",()=>e])},476011,a=>{"use strict";let b=(0,a.i(863535).default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);a.s(["Home",()=>b],476011)},96151,a=>{"use strict";var b=a.i(40352),c=a.i(936883),d=a.i(559653),e=a.i(517988),f=a.i(763375),g=a.i(983644),h=a.i(699700),i=a.i(272311),j=a.i(407547),k=a.i(544329),l=a.i(675655),m=a.i(878357),n=a.i(317449),o=a.i(841318),[p,q]=(0,f.createContextScope)("Tooltip",[i.createPopperScope]),r=(0,i.createPopperScope)(),s="TooltipProvider",t="tooltip.open",[u,v]=p(s),w=a=>{let{__scopeTooltip:d,delayDuration:e=700,skipDelayDuration:f=300,disableHoverableContent:g=!1,children:h}=a,i=c.useRef(!0),j=c.useRef(!1),k=c.useRef(0);return c.useEffect(()=>{let a=k.current;return()=>window.clearTimeout(a)},[]),(0,b.jsx)(u,{scope:d,isOpenDelayedRef:i,delayDuration:e,onOpen:c.useCallback(()=>{window.clearTimeout(k.current),i.current=!1},[]),onClose:c.useCallback(()=>{window.clearTimeout(k.current),k.current=window.setTimeout(()=>i.current=!0,f)},[f]),isPointerInTransitRef:j,onPointerInTransitChange:c.useCallback(a=>{j.current=a},[]),disableHoverableContent:g,children:h})};w.displayName=s;var x="Tooltip",[y,z]=p(x),A=a=>{let{__scopeTooltip:d,children:e,open:f,defaultOpen:g,onOpenChange:j,disableHoverableContent:k,delayDuration:l}=a,m=v(x,a.__scopeTooltip),o=r(d),[p,q]=c.useState(null),s=(0,h.useId)(),u=c.useRef(0),w=k??m.disableHoverableContent,z=l??m.delayDuration,A=c.useRef(!1),[B,C]=(0,n.useControllableState)({prop:f,defaultProp:g??!1,onChange:a=>{a?(m.onOpen(),document.dispatchEvent(new CustomEvent(t))):m.onClose(),j?.(a)},caller:x}),D=c.useMemo(()=>B?A.current?"delayed-open":"instant-open":"closed",[B]),E=c.useCallback(()=>{window.clearTimeout(u.current),u.current=0,A.current=!1,C(!0)},[C]),F=c.useCallback(()=>{window.clearTimeout(u.current),u.current=0,C(!1)},[C]),G=c.useCallback(()=>{window.clearTimeout(u.current),u.current=window.setTimeout(()=>{A.current=!0,C(!0),u.current=0},z)},[z,C]);return c.useEffect(()=>()=>{u.current&&(window.clearTimeout(u.current),u.current=0)},[]),(0,b.jsx)(i.Root,{...o,children:(0,b.jsx)(y,{scope:d,contentId:s,open:B,stateAttribute:D,trigger:p,onTriggerChange:q,onTriggerEnter:c.useCallback(()=>{m.isOpenDelayedRef.current?G():E()},[m.isOpenDelayedRef,G,E]),onTriggerLeave:c.useCallback(()=>{w?F():(window.clearTimeout(u.current),u.current=0)},[F,w]),onOpen:E,onClose:F,disableHoverableContent:w,children:e})})};A.displayName=x;var B="TooltipTrigger",C=c.forwardRef((a,f)=>{let{__scopeTooltip:g,...h}=a,j=z(B,g),k=v(B,g),m=r(g),n=c.useRef(null),o=(0,e.useComposedRefs)(f,n,j.onTriggerChange),p=c.useRef(!1),q=c.useRef(!1),s=c.useCallback(()=>p.current=!1,[]);return c.useEffect(()=>()=>document.removeEventListener("pointerup",s),[s]),(0,b.jsx)(i.Anchor,{asChild:!0,...m,children:(0,b.jsx)(l.Primitive.button,{"aria-describedby":j.open?j.contentId:void 0,"data-state":j.stateAttribute,...h,ref:o,onPointerMove:(0,d.composeEventHandlers)(a.onPointerMove,a=>{"touch"!==a.pointerType&&(q.current||k.isPointerInTransitRef.current||(j.onTriggerEnter(),q.current=!0))}),onPointerLeave:(0,d.composeEventHandlers)(a.onPointerLeave,()=>{j.onTriggerLeave(),q.current=!1}),onPointerDown:(0,d.composeEventHandlers)(a.onPointerDown,()=>{j.open&&j.onClose(),p.current=!0,document.addEventListener("pointerup",s,{once:!0})}),onFocus:(0,d.composeEventHandlers)(a.onFocus,()=>{p.current||j.onOpen()}),onBlur:(0,d.composeEventHandlers)(a.onBlur,j.onClose),onClick:(0,d.composeEventHandlers)(a.onClick,j.onClose)})})});C.displayName=B;var D="TooltipPortal",[E,F]=p(D,{forceMount:void 0}),G=a=>{let{__scopeTooltip:c,forceMount:d,children:e,container:f}=a,g=z(D,c);return(0,b.jsx)(E,{scope:c,forceMount:d,children:(0,b.jsx)(k.Presence,{present:d||g.open,children:(0,b.jsx)(j.Portal,{asChild:!0,container:f,children:e})})})};G.displayName=D;var H="TooltipContent",I=c.forwardRef((a,c)=>{let d=F(H,a.__scopeTooltip),{forceMount:e=d.forceMount,side:f="top",...g}=a,h=z(H,a.__scopeTooltip);return(0,b.jsx)(k.Presence,{present:e||h.open,children:h.disableHoverableContent?(0,b.jsx)(N,{side:f,...g,ref:c}):(0,b.jsx)(J,{side:f,...g,ref:c})})}),J=c.forwardRef((a,d)=>{let f=z(H,a.__scopeTooltip),g=v(H,a.__scopeTooltip),h=c.useRef(null),i=(0,e.useComposedRefs)(d,h),[j,k]=c.useState(null),{trigger:l,onClose:m}=f,n=h.current,{onPointerInTransitChange:o}=g,p=c.useCallback(()=>{k(null),o(!1)},[o]),q=c.useCallback((a,b)=>{let c,d=a.currentTarget,e={x:a.clientX,y:a.clientY},f=function(a,b){let c=Math.abs(b.top-a.y),d=Math.abs(b.bottom-a.y),e=Math.abs(b.right-a.x),f=Math.abs(b.left-a.x);switch(Math.min(c,d,e,f)){case f:return"left";case e:return"right";case c:return"top";case d:return"bottom";default:throw Error("unreachable")}}(e,d.getBoundingClientRect());k(((c=[...function(a,b,c=5){let d=[];switch(b){case"top":d.push({x:a.x-c,y:a.y+c},{x:a.x+c,y:a.y+c});break;case"bottom":d.push({x:a.x-c,y:a.y-c},{x:a.x+c,y:a.y-c});break;case"left":d.push({x:a.x+c,y:a.y-c},{x:a.x+c,y:a.y+c});break;case"right":d.push({x:a.x-c,y:a.y-c},{x:a.x-c,y:a.y+c})}return d}(e,f),...function(a){let{top:b,right:c,bottom:d,left:e}=a;return[{x:e,y:b},{x:c,y:b},{x:c,y:d},{x:e,y:d}]}(b.getBoundingClientRect())].slice()).sort((a,b)=>a.x<b.x?-1:a.x>b.x?1:a.y<b.y?-1:1*!!(a.y>b.y)),function(a){if(a.length<=1)return a.slice();let b=[];for(let c=0;c<a.length;c++){let d=a[c];for(;b.length>=2;){let a=b[b.length-1],c=b[b.length-2];if((a.x-c.x)*(d.y-c.y)>=(a.y-c.y)*(d.x-c.x))b.pop();else break}b.push(d)}b.pop();let c=[];for(let b=a.length-1;b>=0;b--){let d=a[b];for(;c.length>=2;){let a=c[c.length-1],b=c[c.length-2];if((a.x-b.x)*(d.y-b.y)>=(a.y-b.y)*(d.x-b.x))c.pop();else break}c.push(d)}return(c.pop(),1===b.length&&1===c.length&&b[0].x===c[0].x&&b[0].y===c[0].y)?b:b.concat(c)}(c))),o(!0)},[o]);return c.useEffect(()=>()=>p(),[p]),c.useEffect(()=>{if(l&&n){let a=a=>q(a,n),b=a=>q(a,l);return l.addEventListener("pointerleave",a),n.addEventListener("pointerleave",b),()=>{l.removeEventListener("pointerleave",a),n.removeEventListener("pointerleave",b)}}},[l,n,q,p]),c.useEffect(()=>{if(j){let a=a=>{let b=a.target,c={x:a.clientX,y:a.clientY},d=l?.contains(b)||n?.contains(b),e=!function(a,b){let{x:c,y:d}=a,e=!1;for(let a=0,f=b.length-1;a<b.length;f=a++){let g=b[a],h=b[f],i=g.x,j=g.y,k=h.x,l=h.y;j>d!=l>d&&c<(k-i)*(d-j)/(l-j)+i&&(e=!e)}return e}(c,j);d?p():e&&(p(),m())};return document.addEventListener("pointermove",a),()=>document.removeEventListener("pointermove",a)}},[l,n,j,m,p]),(0,b.jsx)(N,{...a,ref:i})}),[K,L]=p(x,{isInside:!1}),M=(0,m.createSlottable)("TooltipContent"),N=c.forwardRef((a,d)=>{let{__scopeTooltip:e,children:f,"aria-label":h,onEscapeKeyDown:j,onPointerDownOutside:k,...l}=a,m=z(H,e),n=r(e),{onClose:p}=m;return c.useEffect(()=>(document.addEventListener(t,p),()=>document.removeEventListener(t,p)),[p]),c.useEffect(()=>{if(m.trigger){let a=a=>{let b=a.target;b?.contains(m.trigger)&&p()};return window.addEventListener("scroll",a,{capture:!0}),()=>window.removeEventListener("scroll",a,{capture:!0})}},[m.trigger,p]),(0,b.jsx)(g.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:j,onPointerDownOutside:k,onFocusOutside:a=>a.preventDefault(),onDismiss:p,children:(0,b.jsxs)(i.Content,{"data-state":m.stateAttribute,...n,...l,ref:d,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,b.jsx)(M,{children:f}),(0,b.jsx)(K,{scope:e,isInside:!0,children:(0,b.jsx)(o.Root,{id:m.contentId,role:"tooltip",children:h||f})})]})})});I.displayName=H;var O="TooltipArrow";c.forwardRef((a,c)=>{let{__scopeTooltip:d,...e}=a,f=r(d);return L(O,d).isInside?null:(0,b.jsx)(i.Arrow,{...f,...e,ref:c})}).displayName=O;var P=a.i(687052);let Q=c.forwardRef(({className:a,sideOffset:c=4,...d},e)=>(0,b.jsx)(G,{children:(0,b.jsx)(I,{ref:e,sideOffset:c,className:(0,P.cn)("z-[100] overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-xs text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a),...d})}));Q.displayName=I.displayName,a.s(["Tooltip",()=>A,"TooltipContent",()=>Q,"TooltipProvider",()=>w,"TooltipTrigger",()=>C],96151)},629620,a=>{"use strict";let b=(0,a.i(863535).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);a.s(["ChevronLeft",()=>b],629620)}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__921689ca._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},918622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},120635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},814747,(a,b,c)=>{b.exports=a.x("path",()=>require("path"))},132746,(a,b,c)=>{"use strict";b.exports=a.r(918622)},837843,(a,b,c)=>{"use strict";b.exports=a.r(132746).vendored["react-rsc"].ReactJsxRuntime},545804,(a,b,c)=>{"use strict";b.exports=a.r(132746).vendored["react-rsc"].ReactServerDOMTurbopackServer},832428,(a,b,c)=>{"use strict";b.exports=a.r(132746).vendored["react-rsc"].React}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__a9d7fd42._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},918622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},120635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},258470,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored["react-ssr"].ReactServerDOMTurbopackClient},618382,(a,b,c)=>{"use strict";b.exports=a.r(918622)},40352,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored["react-ssr"].ReactJsxRuntime},936883,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored["react-ssr"].React},190073,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored["react-ssr"].ReactDOM},411461,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored.contexts.AppRouterContext},273264,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored.contexts.HooksClientContext},457281,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored.contexts.ServerInsertedHtml},247338,a=>{"use strict";let b=(0,a.i(863535).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],247338)},517601,a=>{"use strict";let b=(0,a.i(863535).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",()=>b],517601)},796228,a=>{"use strict";let b=(0,a.i(863535).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["BookOpen",()=>b],796228)},591633,a=>{"use strict";let b=(0,a.i(863535).default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Settings",()=>b],591633)},203961,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"HandleISRError",{enumerable:!0,get:function(){return e}});let d=a.r(556704).workAsyncStorage;function e({error:a}){if(d){let b=d.getStore();if(b?.isStaticGeneration)throw a&&console.error(a),a}return null}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},261860,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return h}});let d=a.r(40352),e=a.r(203961),f={fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},g={fontSize:"14px",fontWeight:400,lineHeight:"28px",margin:"0 8px"},h=function({error:a}){let b=a?.digest;return(0,d.jsxs)("html",{id:"__next_error__",children:[(0,d.jsx)("head",{}),(0,d.jsxs)("body",{children:[(0,d.jsx)(e.HandleISRError,{error:a}),(0,d.jsx)("div",{style:f,children:(0,d.jsxs)("div",{children:[(0,d.jsxs)("h2",{style:g,children:["Application error: a ",b?"server":"client","-side exception has occurred while loading ",window.location.hostname," (see the"," ",b?"server logs":"browser console"," for more information)."]}),b?(0,d.jsx)("p",{style:g,children:`Digest: ${b}`}):null]})})]})]})};("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},861698,a=>{"use strict";var b=a.i(936883),c=(a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}},d=["light","dark"],e="(prefers-color-scheme: dark)",f=b.createContext(void 0),g={setTheme:a=>{},themes:[]},h=()=>{var a;return null!=(a=b.useContext(f))?a:g},i=a=>b.useContext(f)?b.createElement(b.Fragment,null,a.children):b.createElement(k,{...a}),j=["light","dark"],k=({forcedTheme:a,disableTransitionOnChange:c=!1,enableSystem:g=!0,enableColorScheme:h=!0,storageKey:i="theme",themes:k=j,defaultTheme:p=g?"system":"light",attribute:q="data-theme",value:r,children:s,nonce:t,scriptProps:u})=>{let[v,w]=b.useState(()=>m(i,p)),[x,y]=b.useState(()=>"system"===v?o():v),z=r?Object.values(r):k,A=b.useCallback(a=>{let b=a;if(!b)return;"system"===a&&g&&(b=o());let e=r?r[b]:b,f=c?n(t):null,i=document.documentElement,j=a=>{"class"===a?(i.classList.remove(...z),e&&i.classList.add(e)):a.startsWith("data-")&&(e?i.setAttribute(a,e):i.removeAttribute(a))};if(Array.isArray(q)?q.forEach(j):j(q),h){let a=d.includes(p)?p:null,c=d.includes(b)?b:a;i.style.colorScheme=c}null==f||f()},[t]),B=b.useCallback(a=>{let b="function"==typeof a?a(v):a;w(b);try{localStorage.setItem(i,b)}catch(a){}},[v]),C=b.useCallback(b=>{y(o(b)),"system"===v&&g&&!a&&A("system")},[v,a]);b.useEffect(()=>{let a=window.matchMedia(e);return a.addListener(C),C(a),()=>a.removeListener(C)},[C]),b.useEffect(()=>{let a=a=>{a.key===i&&(a.newValue?w(a.newValue):B(p))};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)},[B]),b.useEffect(()=>{A(null!=a?a:v)},[a,v]);let D=b.useMemo(()=>({theme:v,setTheme:B,forcedTheme:a,resolvedTheme:"system"===v?x:v,themes:g?[...k,"system"]:k,systemTheme:g?x:void 0}),[v,B,a,x,g,k]);return b.createElement(f.Provider,{value:D},b.createElement(l,{forcedTheme:a,storageKey:i,attribute:q,enableSystem:g,enableColorScheme:h,defaultTheme:p,value:r,themes:k,nonce:t,scriptProps:u}),s)},l=b.memo(({forcedTheme:a,storageKey:d,attribute:e,enableSystem:f,enableColorScheme:g,defaultTheme:h,value:i,themes:j,nonce:k,scriptProps:l})=>{let m=JSON.stringify([e,d,h,a,j,i,f,g]).slice(1,-1);return b.createElement("script",{...l,suppressHydrationWarning:!0,nonce:k,dangerouslySetInnerHTML:{__html:`(${c.toString()})(${m})`}})}),m=(a,b)=>{},n=a=>{let b=document.createElement("style");return a&&b.setAttribute("nonce",a),b.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(b),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(b)},1)}},o=a=>(a||(a=window.matchMedia(e)),a.matches?"dark":"light");a.s(["ThemeProvider",()=>i,"useTheme",()=>h])},841318,a=>{"use strict";var b=a.i(936883),c=a.i(675655),d=a.i(40352),e=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),f=b.forwardRef((a,b)=>(0,d.jsx)(c.Primitive.span,{...a,ref:b,style:{...e,...a.style}}));f.displayName="VisuallyHidden",a.s(["Root",()=>f,"VISUALLY_HIDDEN_STYLES",()=>e])},294783,a=>{"use strict";var b=a.i(40352),c=a.i(156916),d=a.i(861698);function e(){let{theme:a}=(0,d.useTheme)();return(0,b.jsx)(c.Toaster,{theme:a,position:"bottom-right",richColors:!0,closeButton:!0,expand:!1,duration:4e3,toastOptions:{classNames:{toast:"group",title:"font-semibold",description:"text-sm opacity-90",actionButton:"bg-primary text-primary-foreground",cancelButton:"bg-muted text-muted-foreground"}}})}a.s(["Toast",()=>e])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__b27b2469._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},918622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},120635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},814747,(a,b,c)=>{b.exports=a.x("path",()=>require("path"))},132746,(a,b,c)=>{"use strict";b.exports=a.r(918622)},837843,(a,b,c)=>{"use strict";b.exports=a.r(132746).vendored["react-rsc"].ReactJsxRuntime},545804,(a,b,c)=>{"use strict";b.exports=a.r(132746).vendored["react-rsc"].ReactServerDOMTurbopackServer},832428,(a,b,c)=>{"use strict";b.exports=a.r(132746).vendored["react-rsc"].React},50602,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(545804);a.n(d("[project]/node_modules/.pnpm/next@16.0.1_@babel+core@7.28.5_@opentelemetry+api@1.9.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>"))},386896,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(545804);a.n(d("[project]/node_modules/.pnpm/next@16.0.1_@babel+core@7.28.5_@opentelemetry+api@1.9.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/client/components/builtin/global-error.js"))},760892,a=>{"use strict";a.i(50602);var b=a.i(386896);a.n(b)}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__b3633d6e._.js.map
@@ -1,7 +0,0 @@
1
- module.exports=[544329,a=>{"use strict";var b=a.i(936883),c=a.i(517988),d=a.i(37276),e=a=>{var e;let g,h,{present:i,children:j}=a,k=function(a){var c,e;let[g,h]=b.useState(),i=b.useRef(null),j=b.useRef(a),k=b.useRef("none"),[l,m]=(c=a?"mounted":"unmounted",e={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},b.useReducer((a,b)=>e[a][b]??a,c));return b.useEffect(()=>{let a=f(i.current);k.current="mounted"===l?a:"none"},[l]),(0,d.useLayoutEffect)(()=>{let b=i.current,c=j.current;if(c!==a){let d=k.current,e=f(b);a?m("MOUNT"):"none"===e||b?.display==="none"?m("UNMOUNT"):c&&d!==e?m("ANIMATION_OUT"):m("UNMOUNT"),j.current=a}},[a,m]),(0,d.useLayoutEffect)(()=>{if(g){let a,b=g.ownerDocument.defaultView??window,c=c=>{let d=f(i.current).includes(CSS.escape(c.animationName));if(c.target===g&&d&&(m("ANIMATION_END"),!j.current)){let c=g.style.animationFillMode;g.style.animationFillMode="forwards",a=b.setTimeout(()=>{"forwards"===g.style.animationFillMode&&(g.style.animationFillMode=c)})}},d=a=>{a.target===g&&(k.current=f(i.current))};return g.addEventListener("animationstart",d),g.addEventListener("animationcancel",c),g.addEventListener("animationend",c),()=>{b.clearTimeout(a),g.removeEventListener("animationstart",d),g.removeEventListener("animationcancel",c),g.removeEventListener("animationend",c)}}m("ANIMATION_END")},[g,m]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:b.useCallback(a=>{i.current=a?getComputedStyle(a):null,h(a)},[])}}(i),l="function"==typeof j?j({present:k.isPresent}):b.Children.only(j),m=(0,c.useComposedRefs)(k.ref,(e=l,(h=(g=Object.getOwnPropertyDescriptor(e.props,"ref")?.get)&&"isReactWarning"in g&&g.isReactWarning)?e.ref:(h=(g=Object.getOwnPropertyDescriptor(e,"ref")?.get)&&"isReactWarning"in g&&g.isReactWarning)?e.props.ref:e.props.ref||e.ref));return"function"==typeof j||k.isPresent?b.cloneElement(l,{ref:m}):null};function f(a){return a?.animationName||"none"}e.displayName="Presence",a.s(["Presence",()=>e])},914174,a=>{"use strict";let b=(0,a.i(863535).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);a.s(["X",()=>b],914174)},186945,921841,a=>{"use strict";var b=a.i(40352),c=a.i(936883),d=a.i(559653),e=a.i(517988),f=a.i(763375),g=a.i(699700),h=a.i(317449),i=a.i(983644),j=a.i(84228),k=a.i(407547),l=a.i(544329),m=a.i(675655),n=a.i(241857),o=a.i(151867),p=a.i(516164),q=a.i(878357),r="Dialog",[s,t]=(0,f.createContextScope)(r),[u,v]=s(r),w=a=>{let{__scopeDialog:d,children:e,open:f,defaultOpen:i,onOpenChange:j,modal:k=!0}=a,l=c.useRef(null),m=c.useRef(null),[n,o]=(0,h.useControllableState)({prop:f,defaultProp:i??!1,onChange:j,caller:r});return(0,b.jsx)(u,{scope:d,triggerRef:l,contentRef:m,contentId:(0,g.useId)(),titleId:(0,g.useId)(),descriptionId:(0,g.useId)(),open:n,onOpenChange:o,onOpenToggle:c.useCallback(()=>o(a=>!a),[o]),modal:k,children:e})};w.displayName=r;var x="DialogTrigger",y=c.forwardRef((a,c)=>{let{__scopeDialog:f,...g}=a,h=v(x,f),i=(0,e.useComposedRefs)(c,h.triggerRef);return(0,b.jsx)(m.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":h.open,"aria-controls":h.contentId,"data-state":S(h.open),...g,ref:i,onClick:(0,d.composeEventHandlers)(a.onClick,h.onOpenToggle)})});y.displayName=x;var z="DialogPortal",[A,B]=s(z,{forceMount:void 0}),C=a=>{let{__scopeDialog:d,forceMount:e,children:f,container:g}=a,h=v(z,d);return(0,b.jsx)(A,{scope:d,forceMount:e,children:c.Children.map(f,a=>(0,b.jsx)(l.Presence,{present:e||h.open,children:(0,b.jsx)(k.Portal,{asChild:!0,container:g,children:a})}))})};C.displayName=z;var D="DialogOverlay",E=c.forwardRef((a,c)=>{let d=B(D,a.__scopeDialog),{forceMount:e=d.forceMount,...f}=a,g=v(D,a.__scopeDialog);return g.modal?(0,b.jsx)(l.Presence,{present:e||g.open,children:(0,b.jsx)(G,{...f,ref:c})}):null});E.displayName=D;var F=(0,q.createSlot)("DialogOverlay.RemoveScroll"),G=c.forwardRef((a,c)=>{let{__scopeDialog:d,...e}=a,f=v(D,d);return(0,b.jsx)(o.RemoveScroll,{as:F,allowPinchZoom:!0,shards:[f.contentRef],children:(0,b.jsx)(m.Primitive.div,{"data-state":S(f.open),...e,ref:c,style:{pointerEvents:"auto",...e.style}})})}),H="DialogContent",I=c.forwardRef((a,c)=>{let d=B(H,a.__scopeDialog),{forceMount:e=d.forceMount,...f}=a,g=v(H,a.__scopeDialog);return(0,b.jsx)(l.Presence,{present:e||g.open,children:g.modal?(0,b.jsx)(J,{...f,ref:c}):(0,b.jsx)(K,{...f,ref:c})})});I.displayName=H;var J=c.forwardRef((a,f)=>{let g=v(H,a.__scopeDialog),h=c.useRef(null),i=(0,e.useComposedRefs)(f,g.contentRef,h);return c.useEffect(()=>{let a=h.current;if(a)return(0,p.hideOthers)(a)},[]),(0,b.jsx)(L,{...a,ref:i,trapFocus:g.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,d.composeEventHandlers)(a.onCloseAutoFocus,a=>{a.preventDefault(),g.triggerRef.current?.focus()}),onPointerDownOutside:(0,d.composeEventHandlers)(a.onPointerDownOutside,a=>{let b=a.detail.originalEvent,c=0===b.button&&!0===b.ctrlKey;(2===b.button||c)&&a.preventDefault()}),onFocusOutside:(0,d.composeEventHandlers)(a.onFocusOutside,a=>a.preventDefault())})}),K=c.forwardRef((a,d)=>{let e=v(H,a.__scopeDialog),f=c.useRef(!1),g=c.useRef(!1);return(0,b.jsx)(L,{...a,ref:d,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:b=>{a.onCloseAutoFocus?.(b),b.defaultPrevented||(f.current||e.triggerRef.current?.focus(),b.preventDefault()),f.current=!1,g.current=!1},onInteractOutside:b=>{a.onInteractOutside?.(b),b.defaultPrevented||(f.current=!0,"pointerdown"===b.detail.originalEvent.type&&(g.current=!0));let c=b.target;e.triggerRef.current?.contains(c)&&b.preventDefault(),"focusin"===b.detail.originalEvent.type&&g.current&&b.preventDefault()}})}),L=c.forwardRef((a,d)=>{let{__scopeDialog:f,trapFocus:g,onOpenAutoFocus:h,onCloseAutoFocus:k,...l}=a,m=v(H,f),o=c.useRef(null),p=(0,e.useComposedRefs)(d,o);return(0,n.useFocusGuards)(),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(j.FocusScope,{asChild:!0,loop:!0,trapped:g,onMountAutoFocus:h,onUnmountAutoFocus:k,children:(0,b.jsx)(i.DismissableLayer,{role:"dialog",id:m.contentId,"aria-describedby":m.descriptionId,"aria-labelledby":m.titleId,"data-state":S(m.open),...l,ref:p,onDismiss:()=>m.onOpenChange(!1)})}),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(W,{titleId:m.titleId}),(0,b.jsx)(X,{contentRef:o,descriptionId:m.descriptionId})]})]})}),M="DialogTitle",N=c.forwardRef((a,c)=>{let{__scopeDialog:d,...e}=a,f=v(M,d);return(0,b.jsx)(m.Primitive.h2,{id:f.titleId,...e,ref:c})});N.displayName=M;var O="DialogDescription",P=c.forwardRef((a,c)=>{let{__scopeDialog:d,...e}=a,f=v(O,d);return(0,b.jsx)(m.Primitive.p,{id:f.descriptionId,...e,ref:c})});P.displayName=O;var Q="DialogClose",R=c.forwardRef((a,c)=>{let{__scopeDialog:e,...f}=a,g=v(Q,e);return(0,b.jsx)(m.Primitive.button,{type:"button",...f,ref:c,onClick:(0,d.composeEventHandlers)(a.onClick,()=>g.onOpenChange(!1))})});function S(a){return a?"open":"closed"}R.displayName=Q;var T="DialogTitleWarning",[U,V]=(0,f.createContext)(T,{contentName:H,titleName:M,docsSlug:"dialog"}),W=({titleId:a})=>{let b=V(T),d=`\`${b.contentName}\` requires a \`${b.titleName}\` for the component to be accessible for screen reader users.
2
-
3
- If you want to hide the \`${b.titleName}\`, you can wrap it with our VisuallyHidden component.
4
-
5
- For more information, see https://radix-ui.com/primitives/docs/components/${b.docsSlug}`;return c.useEffect(()=>{a&&(document.getElementById(a)||console.error(d))},[d,a]),null},X=({contentRef:a,descriptionId:b})=>{let d=V("DialogDescriptionWarning"),e=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${d.contentName}}.`;return c.useEffect(()=>{let c=a.current?.getAttribute("aria-describedby");b&&c&&(document.getElementById(b)||console.warn(e))},[e,a,b]),null};a.s(["Close",()=>R,"Content",()=>I,"Description",()=>P,"Overlay",()=>E,"Portal",()=>C,"Root",()=>w,"Title",()=>N,"Trigger",()=>y],921841);var Y=a.i(914174),Z=a.i(687052);let $=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(E,{ref:d,className:(0,Z.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...c}));$.displayName=E.displayName;let _=c.forwardRef(({className:a,children:c,...d},e)=>(0,b.jsxs)(C,{children:[(0,b.jsx)($,{}),(0,b.jsxs)(I,{ref:e,className:(0,Z.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...d,children:[c,(0,b.jsxs)(R,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,b.jsx)(Y.X,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));_.displayName=I.displayName;let aa=({className:a,...c})=>(0,b.jsx)("div",{className:(0,Z.cn)("flex flex-col space-y-1.5 text-center sm:text-left",a),...c});aa.displayName="DialogHeader";let ab=({className:a,...c})=>(0,b.jsx)("div",{className:(0,Z.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...c});ab.displayName="DialogFooter";let ac=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(N,{ref:d,className:(0,Z.cn)("text-lg font-semibold leading-none tracking-tight",a),...c}));ac.displayName=N.displayName;let ad=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(P,{ref:d,className:(0,Z.cn)("text-sm text-muted-foreground",a),...c}));ad.displayName=P.displayName,a.s(["Dialog",()=>w,"DialogContent",()=>_,"DialogDescription",()=>ad,"DialogFooter",()=>ab,"DialogHeader",()=>aa,"DialogTitle",()=>ac],186945)}];
6
-
7
- //# sourceMappingURL=_03aa8d19._.js.map
@@ -1,5 +0,0 @@
1
- module.exports=[463652,(a,b,c)=>{"use strict";c._=function(a){return a&&a.__esModule?a:{default:a}}},980375,(a,b,c)=>{"use strict";function d({widthInt:a,heightInt:b,blurWidth:c,blurHeight:d,blurDataURL:e,objectFit:f}){let g=c?40*c:a,h=d?40*d:b,i=g&&h?`viewBox='0 0 ${g} ${h}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${i}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${i?"none":"contain"===f?"xMidYMid":"cover"===f?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${e}'/%3E%3C/svg%3E`}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"getImageBlurSvg",{enumerable:!0,get:function(){return d}})},700729,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={VALID_LOADERS:function(){return f},imageConfigDefault:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=["default","imgix","cloudinary","akamai","custom"],g={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumRedirects:3,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1}},604484,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"getImgProps",{enumerable:!0,get:function(){return i}}),a.r(144127);let d=a.r(980375),e=a.r(700729),f=["-moz-initial","fill","none","scale-down",void 0];function g(a){return void 0!==a.default}function h(a){return void 0===a?a:"number"==typeof a?Number.isFinite(a)?a:NaN:"string"==typeof a&&/^[0-9]+$/.test(a)?parseInt(a,10):NaN}function i({src:a,sizes:b,unoptimized:c=!1,priority:i=!1,preload:j=!1,loading:k,className:l,quality:m,width:n,height:o,fill:p=!1,style:q,overrideSrc:r,onLoad:s,onLoadingComplete:t,placeholder:u="empty",blurDataURL:v,fetchPriority:w,decoding:x="async",layout:y,objectFit:z,objectPosition:A,lazyBoundary:B,lazyRoot:C,...D},E){var F;let G,H,I,{imgConf:J,showAltText:K,blurComplete:L,defaultLoader:M}=E,N=J||e.imageConfigDefault;if("allSizes"in N)G=N;else{let a=[...N.deviceSizes,...N.imageSizes].sort((a,b)=>a-b),b=N.deviceSizes.sort((a,b)=>a-b),c=N.qualities?.sort((a,b)=>a-b);G={...N,allSizes:a,deviceSizes:b,qualities:c}}if(void 0===M)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let O=D.loader||M;delete D.loader,delete D.srcSet;let P="__next_img_default"in O;if(P){if("custom"===G.loader)throw Object.defineProperty(Error(`Image with src "${a}" is missing "loader" prop.
2
- Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let a=O;O=b=>{let{config:c,...d}=b;return a(d)}}if(y){"fill"===y&&(p=!0);let a={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[y];a&&(q={...q,...a});let c={responsive:"100vw",fill:"100vw"}[y];c&&!b&&(b=c)}let Q="",R=h(n),S=h(o);if((F=a)&&"object"==typeof F&&(g(F)||void 0!==F.src)){let b=g(a)?a.default:a;if(!b.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(b)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!b.height||!b.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(b)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(H=b.blurWidth,I=b.blurHeight,v=v||b.blurDataURL,Q=b.src,!p)if(R||S){if(R&&!S){let a=R/b.width;S=Math.round(b.height*a)}else if(!R&&S){let a=S/b.height;R=Math.round(b.width*a)}}else R=b.width,S=b.height}let T=!i&&!j&&("lazy"===k||void 0===k);(!(a="string"==typeof a?a:Q)||a.startsWith("data:")||a.startsWith("blob:"))&&(c=!0,T=!1),G.unoptimized&&(c=!0),P&&!G.dangerouslyAllowSVG&&a.split("?",1)[0].endsWith(".svg")&&(c=!0);let U=h(m),V=Object.assign(p?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:z,objectPosition:A}:{},K?{}:{color:"transparent"},q),W=L||"empty"===u?null:"blur"===u?`url("data:image/svg+xml;charset=utf-8,${(0,d.getImageBlurSvg)({widthInt:R,heightInt:S,blurWidth:H,blurHeight:I,blurDataURL:v||"",objectFit:V.objectFit})}")`:`url("${u}")`,X=f.includes(V.objectFit)?"fill"===V.objectFit?"100% 100%":"cover":V.objectFit,Y=W?{backgroundSize:X,backgroundPosition:V.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:W}:{},Z=function({config:a,src:b,unoptimized:c,width:d,quality:e,sizes:f,loader:g}){if(c)return{src:b,srcSet:void 0,sizes:void 0};let{widths:h,kind:i}=function({deviceSizes:a,allSizes:b},c,d){if(d){let c=/(^|\s)(1?\d?\d)vw/g,e=[];for(let a;a=c.exec(d);)e.push(parseInt(a[2]));if(e.length){let c=.01*Math.min(...e);return{widths:b.filter(b=>b>=a[0]*c),kind:"w"}}return{widths:b,kind:"w"}}return"number"!=typeof c?{widths:a,kind:"w"}:{widths:[...new Set([c,2*c].map(a=>b.find(b=>b>=a)||b[b.length-1]))],kind:"x"}}(a,d,f),j=h.length-1;return{sizes:f||"w"!==i?f:"100vw",srcSet:h.map((c,d)=>`${g({config:a,src:b,quality:e,width:c})} ${"w"===i?c:d+1}${i}`).join(", "),src:g({config:a,src:b,quality:e,width:h[j]})}}({config:G,src:a,unoptimized:c,width:R,quality:U,sizes:b,loader:O}),$=T?"lazy":k;return{props:{...D,loading:$,fetchPriority:w,width:R,height:S,decoding:x,className:l,style:{...V,...Y},sizes:Z.sizes,srcSet:Z.srcSet,src:r||Z.src},meta:{unoptimized:c,preload:j||i,placeholder:u,fill:p}}}},317303,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return f}});let d=a.r(936883),e=()=>{};function f(a){let{headManager:b,reduceComponentsToState:c}=a;function f(){if(b&&b.mountedInstances){let a=d.Children.toArray(Array.from(b.mountedInstances).filter(Boolean));b.updateHead(c(a))}}return b?.mountedInstances?.add(a.children),f(),e(()=>(b?.mountedInstances?.add(a.children),()=>{b?.mountedInstances?.delete(a.children)})),e(()=>(b&&(b._pendingUpdate=f),()=>{b&&(b._pendingUpdate=f)})),null}},61881,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored.contexts.HeadManagerContext},261964,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return p},defaultHead:function(){return l}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(463652),g=a.r(403988),h=a.r(40352),i=g._(a.r(936883)),j=f._(a.r(317303)),k=a.r(61881);function l(){return[(0,h.jsx)("meta",{charSet:"utf-8"},"charset"),(0,h.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function m(a,b){return"string"==typeof b||"number"==typeof b?a:b.type===i.default.Fragment?a.concat(i.default.Children.toArray(b.props.children).reduce((a,b)=>"string"==typeof b||"number"==typeof b?a:a.concat(b),[])):a.concat(b)}a.r(144127);let n=["name","httpEquiv","charSet","itemProp"];function o(a){let b,c,d,e;return a.reduce(m,[]).reverse().concat(l().reverse()).filter((b=new Set,c=new Set,d=new Set,e={},a=>{let f=!0,g=!1;if(a.key&&"number"!=typeof a.key&&a.key.indexOf("$")>0){g=!0;let c=a.key.slice(a.key.indexOf("$")+1);b.has(c)?f=!1:b.add(c)}switch(a.type){case"title":case"base":c.has(a.type)?f=!1:c.add(a.type);break;case"meta":for(let b=0,c=n.length;b<c;b++){let c=n[b];if(a.props.hasOwnProperty(c))if("charSet"===c)d.has(c)?f=!1:d.add(c);else{let b=a.props[c],d=e[c]||new Set;("name"!==c||!g)&&d.has(b)?f=!1:(d.add(b),e[c]=d)}}}return f})).reverse().map((a,b)=>{let c=a.key||b;return i.default.cloneElement(a,{key:c})})}let p=function({children:a}){let b=(0,i.useContext)(k.HeadManagerContext);return(0,h.jsx)(j.default,{reduceComponentsToState:o,headManager:b,children:a})};("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},809328,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored.contexts.ImageConfigContext},97867,(a,b,c)=>{"use strict";b.exports=a.r(618382).vendored.contexts.RouterContext},798783,(a,b,c)=>{"use strict";function d(a,b){let c=a||75;return b?.qualities?.length?b.qualities.reduce((a,b)=>Math.abs(b-c)<Math.abs(a-c)?b:a,0):c}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"findClosestQuality",{enumerable:!0,get:function(){return d}})},356797,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return f}});let d=a.r(798783);function e({config:a,src:b,width:c,quality:e}){if(b.startsWith("/")&&b.includes("?")&&a.localPatterns?.length===1&&"**"===a.localPatterns[0].pathname&&""===a.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${b}" is using a query string which is not configured in images.localPatterns.
3
- Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let f=(0,d.findClosestQuality)(e,a);return`${a.path}?url=${encodeURIComponent(b)}&w=${c}&q=${f}${b.startsWith("/_next/static/media/"),""}`}e.__next_img_default=!0;let f=e},274561,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"Image",{enumerable:!0,get:function(){return u}});let d=a.r(463652),e=a.r(403988),f=a.r(40352),g=e._(a.r(936883)),h=d._(a.r(190073)),i=d._(a.r(261964)),j=a.r(604484),k=a.r(700729),l=a.r(809328);a.r(144127);let m=a.r(97867),n=d._(a.r(356797)),o=a.r(788100),p={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function q(a,b,c,d,e,f,g){let h=a?.src;a&&a["data-loaded-src"]!==h&&(a["data-loaded-src"]=h,("decode"in a?a.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(a.parentElement&&a.isConnected){if("empty"!==b&&e(!0),c?.current){let b=new Event("load");Object.defineProperty(b,"target",{writable:!1,value:a});let d=!1,e=!1;c.current({...b,nativeEvent:b,currentTarget:a,target:a,isDefaultPrevented:()=>d,isPropagationStopped:()=>e,persist:()=>{},preventDefault:()=>{d=!0,b.preventDefault()},stopPropagation:()=>{e=!0,b.stopPropagation()}})}d?.current&&d.current(a)}}))}function r(a){return g.use?{fetchPriority:a}:{fetchpriority:a}}globalThis.__NEXT_IMAGE_IMPORTED=!0;let s=(0,g.forwardRef)(({src:a,srcSet:b,sizes:c,height:d,width:e,decoding:h,className:i,style:j,fetchPriority:k,placeholder:l,loading:m,unoptimized:n,fill:p,onLoadRef:s,onLoadingCompleteRef:t,setBlurComplete:u,setShowAltText:v,sizesInput:w,onLoad:x,onError:y,...z},A)=>{let B=(0,g.useCallback)(a=>{a&&(y&&(a.src=a.src),a.complete&&q(a,l,s,t,u,n,w))},[a,l,s,t,u,y,n,w]),C=(0,o.useMergedRef)(A,B);return(0,f.jsx)("img",{...z,...r(k),loading:m,width:e,height:d,decoding:h,"data-nimg":p?"fill":"1",className:i,style:j,sizes:c,srcSet:b,src:a,ref:C,onLoad:a=>{q(a.currentTarget,l,s,t,u,n,w)},onError:a=>{v(!0),"empty"!==l&&u(!0),y&&y(a)}})});function t({isAppRouter:a,imgAttributes:b}){let c={as:"image",imageSrcSet:b.srcSet,imageSizes:b.sizes,crossOrigin:b.crossOrigin,referrerPolicy:b.referrerPolicy,...r(b.fetchPriority)};return a&&h.default.preload?(h.default.preload(b.src,c),null):(0,f.jsx)(i.default,{children:(0,f.jsx)("link",{rel:"preload",href:b.srcSet?void 0:b.src,...c},"__nimg-"+b.src+b.srcSet+b.sizes)})}let u=(0,g.forwardRef)((a,b)=>{let c=(0,g.useContext)(m.RouterContext),d=(0,g.useContext)(l.ImageConfigContext),e=(0,g.useMemo)(()=>{let a=p||d||k.imageConfigDefault,b=[...a.deviceSizes,...a.imageSizes].sort((a,b)=>a-b),c=a.deviceSizes.sort((a,b)=>a-b),e=a.qualities?.sort((a,b)=>a-b);return{...a,allSizes:b,deviceSizes:c,qualities:e,localPatterns:d?.localPatterns}},[d]),{onLoad:h,onLoadingComplete:i}=a,o=(0,g.useRef)(h);(0,g.useEffect)(()=>{o.current=h},[h]);let q=(0,g.useRef)(i);(0,g.useEffect)(()=>{q.current=i},[i]);let[r,u]=(0,g.useState)(!1),[v,w]=(0,g.useState)(!1),{props:x,meta:y}=(0,j.getImgProps)(a,{defaultLoader:n.default,imgConf:e,blurComplete:r,showAltText:v});return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(s,{...x,unoptimized:y.unoptimized,placeholder:y.placeholder,fill:y.fill,onLoadRef:o,onLoadingCompleteRef:q,setBlurComplete:u,setShowAltText:w,sizesInput:a.sizes,ref:b}),y.preload?(0,f.jsx)(t,{isAppRouter:!c,imgAttributes:x}):null]})});("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},278274,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return k},getImageProps:function(){return j}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(463652),g=a.r(604484),h=a.r(274561),i=f._(a.r(356797));function j(a){let{props:b}=(0,g.getImgProps)(a,{defaultLoader:i.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[a,c]of Object.entries(b))void 0===c&&delete b[a];return{props:b}}let k=h.Image},132745,(a,b,c)=>{b.exports=a.r(278274)},964952,a=>{"use strict";var b=a.i(40352),c=a.i(936883),d=/[\\\/_+.#"@\[\(\{&]/,e=/[\\\/_+.#"@\[\(\{&]/g,f=/[\s-]/,g=/[\s-]/g;function h(a){return a.toLowerCase().replace(g," ")}var i=a.i(921841);a.i(190073);var j=a.i(679965),k=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((a,d)=>{let e=(0,j.createSlot)(`Primitive.${d}`),f=c.forwardRef((a,c)=>{let{asChild:f,...g}=a;return(0,b.jsx)(f?e:d,{...g,ref:c})});return f.displayName=`Primitive.${d}`,{...a,[d]:f}},{}),l=a.i(699700),m=a.i(517988),n='[cmdk-group=""]',o='[cmdk-group-items=""]',p='[cmdk-item=""]',q=`${p}:not([aria-disabled="true"])`,r="cmdk-item-select",s="data-value",t=(a,b,c)=>{var i;return i=a,function a(b,c,h,i,j,k,l){if(k===c.length)return j===b.length?1:.99;var m=`${j},${k}`;if(void 0!==l[m])return l[m];for(var n,o,p,q,r=i.charAt(k),s=h.indexOf(r,j),t=0;s>=0;)(n=a(b,c,h,i,s+1,k+1,l))>t&&(s===j?n*=1:d.test(b.charAt(s-1))?(n*=.8,(p=b.slice(j,s-1).match(e))&&j>0&&(n*=Math.pow(.999,p.length))):f.test(b.charAt(s-1))?(n*=.9,(q=b.slice(j,s-1).match(g))&&j>0&&(n*=Math.pow(.999,q.length))):(n*=.17,j>0&&(n*=Math.pow(.999,s-j))),b.charAt(s)!==c.charAt(k)&&(n*=.9999)),(n<.1&&h.charAt(s-1)===i.charAt(k+1)||i.charAt(k+1)===i.charAt(k)&&h.charAt(s-1)!==i.charAt(k))&&.1*(o=a(b,c,h,i,s+1,k+2,l))>n&&(n=.1*o),n>t&&(t=n),s=h.indexOf(r,s+1);return l[m]=t,t}(i=c&&c.length>0?`${i+" "+c.join(" ")}`:i,b,h(i),h(b),0,0,{})},u=c.createContext(void 0),v=c.createContext(void 0),w=c.createContext(void 0),x=c.forwardRef((a,b)=>{let d=H(()=>{var b,c;return{search:"",value:null!=(c=null!=(b=a.value)?b:a.defaultValue)?c:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),e=H(()=>new Set),f=H(()=>new Map),g=H(()=>new Map),h=H(()=>new Set),i=F(a),{label:j,children:m,value:w,onValueChange:x,filter:y,shouldFilter:z,loop:A,disablePointerSelection:B=!1,vimBindings:C=!0,...D}=a,E=(0,l.useId)(),I=(0,l.useId)(),J=(0,l.useId)(),N=c.useRef(null),O=K();G(()=>{if(void 0!==w){let a=w.trim();d.current.value=a,P.emit()}},[w]),G(()=>{O(6,V)},[]);let P=c.useMemo(()=>({subscribe:a=>(h.current.add(a),()=>h.current.delete(a)),snapshot:()=>d.current,setState:(a,b,c)=>{var e,f,g,h;if(!Object.is(d.current[a],b)){if(d.current[a]=b,"search"===a)U(),S(),O(1,T);else if("value"===a){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let a=document.getElementById(J);a?a.focus():null==(e=document.getElementById(E))||e.focus()}if(O(7,()=>{var a;d.current.selectedItemId=null==(a=W())?void 0:a.id,P.emit()}),c||O(5,V),(null==(f=i.current)?void 0:f.value)!==void 0){null==(h=(g=i.current).onValueChange)||h.call(g,null!=b?b:"");return}}P.emit()}},emit:()=>{h.current.forEach(a=>a())}}),[]),Q=c.useMemo(()=>({value:(a,b,c)=>{var e;b!==(null==(e=g.current.get(a))?void 0:e.value)&&(g.current.set(a,{value:b,keywords:c}),d.current.filtered.items.set(a,R(b,c)),O(2,()=>{S(),P.emit()}))},item:(a,b)=>(e.current.add(a),b&&(f.current.has(b)?f.current.get(b).add(a):f.current.set(b,new Set([a]))),O(3,()=>{U(),S(),d.current.value||T(),P.emit()}),()=>{g.current.delete(a),e.current.delete(a),d.current.filtered.items.delete(a);let b=W();O(4,()=>{U(),(null==b?void 0:b.getAttribute("id"))===a&&T(),P.emit()})}),group:a=>(f.current.has(a)||f.current.set(a,new Set),()=>{g.current.delete(a),f.current.delete(a)}),filter:()=>i.current.shouldFilter,label:j||a["aria-label"],getDisablePointerSelection:()=>i.current.disablePointerSelection,listId:E,inputId:J,labelId:I,listInnerRef:N}),[]);function R(a,b){var c,e;let f=null!=(e=null==(c=i.current)?void 0:c.filter)?e:t;return a?f(a,d.current.search,b):0}function S(){if(!d.current.search||!1===i.current.shouldFilter)return;let a=d.current.filtered.items,b=[];d.current.filtered.groups.forEach(c=>{let d=f.current.get(c),e=0;d.forEach(b=>{e=Math.max(a.get(b),e)}),b.push([c,e])});let c=N.current;X().sort((b,c)=>{var d,e;let f=b.getAttribute("id"),g=c.getAttribute("id");return(null!=(d=a.get(g))?d:0)-(null!=(e=a.get(f))?e:0)}).forEach(a=>{let b=a.closest(o);b?b.appendChild(a.parentElement===b?a:a.closest(`${o} > *`)):c.appendChild(a.parentElement===c?a:a.closest(`${o} > *`))}),b.sort((a,b)=>b[1]-a[1]).forEach(a=>{var b;let c=null==(b=N.current)?void 0:b.querySelector(`${n}[${s}="${encodeURIComponent(a[0])}"]`);null==c||c.parentElement.appendChild(c)})}function T(){let a=X().find(a=>"true"!==a.getAttribute("aria-disabled")),b=null==a?void 0:a.getAttribute(s);P.setState("value",b||void 0)}function U(){var a,b,c,h;if(!d.current.search||!1===i.current.shouldFilter){d.current.filtered.count=e.current.size;return}d.current.filtered.groups=new Set;let j=0;for(let f of e.current){let e=R(null!=(b=null==(a=g.current.get(f))?void 0:a.value)?b:"",null!=(h=null==(c=g.current.get(f))?void 0:c.keywords)?h:[]);d.current.filtered.items.set(f,e),e>0&&j++}for(let[a,b]of f.current)for(let c of b)if(d.current.filtered.items.get(c)>0){d.current.filtered.groups.add(a);break}d.current.filtered.count=j}function V(){var a,b,c;let d=W();d&&((null==(a=d.parentElement)?void 0:a.firstChild)===d&&(null==(c=null==(b=d.closest(n))?void 0:b.querySelector('[cmdk-group-heading=""]'))||c.scrollIntoView({block:"nearest"})),d.scrollIntoView({block:"nearest"}))}function W(){var a;return null==(a=N.current)?void 0:a.querySelector(`${p}[aria-selected="true"]`)}function X(){var a;return Array.from((null==(a=N.current)?void 0:a.querySelectorAll(q))||[])}function Y(a){let b=X()[a];b&&P.setState("value",b.getAttribute(s))}function Z(a){var b;let c=W(),d=X(),e=d.findIndex(a=>a===c),f=d[e+a];null!=(b=i.current)&&b.loop&&(f=e+a<0?d[d.length-1]:e+a===d.length?d[0]:d[e+a]),f&&P.setState("value",f.getAttribute(s))}function $(a){let b=W(),c=null==b?void 0:b.closest(n),d;for(;c&&!d;)d=null==(c=a>0?function(a,b){let c=a.nextElementSibling;for(;c;){if(c.matches(b))return c;c=c.nextElementSibling}}(c,n):function(a,b){let c=a.previousElementSibling;for(;c;){if(c.matches(b))return c;c=c.previousElementSibling}}(c,n))?void 0:c.querySelector(q);d?P.setState("value",d.getAttribute(s)):Z(a)}let _=()=>Y(X().length-1),aa=a=>{a.preventDefault(),a.metaKey?_():a.altKey?$(1):Z(1)},ab=a=>{a.preventDefault(),a.metaKey?Y(0):a.altKey?$(-1):Z(-1)};return c.createElement(k.div,{ref:b,tabIndex:-1,...D,"cmdk-root":"",onKeyDown:a=>{var b;null==(b=D.onKeyDown)||b.call(D,a);let c=a.nativeEvent.isComposing||229===a.keyCode;if(!(a.defaultPrevented||c))switch(a.key){case"n":case"j":C&&a.ctrlKey&&aa(a);break;case"ArrowDown":aa(a);break;case"p":case"k":C&&a.ctrlKey&&ab(a);break;case"ArrowUp":ab(a);break;case"Home":a.preventDefault(),Y(0);break;case"End":a.preventDefault(),_();break;case"Enter":{a.preventDefault();let b=W();if(b){let a=new Event(r);b.dispatchEvent(a)}}}}},c.createElement("label",{"cmdk-label":"",htmlFor:Q.inputId,id:Q.labelId,style:M},j),L(a,a=>c.createElement(v.Provider,{value:P},c.createElement(u.Provider,{value:Q},a))))}),y=c.forwardRef((a,b)=>{var d,e;let f=(0,l.useId)(),g=c.useRef(null),h=c.useContext(w),i=c.useContext(u),j=F(a),n=null!=(e=null==(d=j.current)?void 0:d.forceMount)?e:null==h?void 0:h.forceMount;G(()=>{if(!n)return i.item(f,null==h?void 0:h.id)},[n]);let o=J(f,g,[a.value,a.children,g],a.keywords),p=c.useContext(v),q=I(a=>a.value&&a.value===o.current),s=I(a=>!!n||!1===i.filter()||!a.search||a.filtered.items.get(f)>0);function t(){var a,b;x(),null==(b=(a=j.current).onSelect)||b.call(a,o.current)}function x(){p.setState("value",o.current,!0)}if(c.useEffect(()=>{let b=g.current;if(!(!b||a.disabled))return b.addEventListener(r,t),()=>b.removeEventListener(r,t)},[s,a.onSelect,a.disabled]),!s)return null;let{disabled:y,value:z,onSelect:A,forceMount:B,keywords:C,...D}=a;return c.createElement(k.div,{ref:(0,m.composeRefs)(g,b),...D,id:f,"cmdk-item":"",role:"option","aria-disabled":!!y,"aria-selected":!!q,"data-disabled":!!y,"data-selected":!!q,onPointerMove:y||i.getDisablePointerSelection()?void 0:x,onClick:y?void 0:t},a.children)}),z=c.forwardRef((a,b)=>{let{heading:d,children:e,forceMount:f,...g}=a,h=(0,l.useId)(),i=c.useRef(null),j=c.useRef(null),n=(0,l.useId)(),o=c.useContext(u),p=I(a=>!!f||!1===o.filter()||!a.search||a.filtered.groups.has(h));G(()=>o.group(h),[]),J(h,i,[a.value,a.heading,j]);let q=c.useMemo(()=>({id:h,forceMount:f}),[f]);return c.createElement(k.div,{ref:(0,m.composeRefs)(i,b),...g,"cmdk-group":"",role:"presentation",hidden:!p||void 0},d&&c.createElement("div",{ref:j,"cmdk-group-heading":"","aria-hidden":!0,id:n},d),L(a,a=>c.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":d?n:void 0},c.createElement(w.Provider,{value:q},a))))}),A=c.forwardRef((a,b)=>{let{alwaysRender:d,...e}=a,f=c.useRef(null),g=I(a=>!a.search);return d||g?c.createElement(k.div,{ref:(0,m.composeRefs)(f,b),...e,"cmdk-separator":"",role:"separator"}):null}),B=c.forwardRef((a,b)=>{let{onValueChange:d,...e}=a,f=null!=a.value,g=c.useContext(v),h=I(a=>a.search),i=I(a=>a.selectedItemId),j=c.useContext(u);return c.useEffect(()=>{null!=a.value&&g.setState("search",a.value)},[a.value]),c.createElement(k.input,{ref:b,...e,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":j.listId,"aria-labelledby":j.labelId,"aria-activedescendant":i,id:j.inputId,type:"text",value:f?a.value:h,onChange:a=>{f||g.setState("search",a.target.value),null==d||d(a.target.value)}})}),C=c.forwardRef((a,b)=>{let{children:d,label:e="Suggestions",...f}=a,g=c.useRef(null),h=c.useRef(null),i=I(a=>a.selectedItemId),j=c.useContext(u);return c.useEffect(()=>{if(h.current&&g.current){let a=h.current,b=g.current,c,d=new ResizeObserver(()=>{c=requestAnimationFrame(()=>{let c=a.offsetHeight;b.style.setProperty("--cmdk-list-height",c.toFixed(1)+"px")})});return d.observe(a),()=>{cancelAnimationFrame(c),d.unobserve(a)}}},[]),c.createElement(k.div,{ref:(0,m.composeRefs)(g,b),...f,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":i,"aria-label":e,id:j.listId},L(a,a=>c.createElement("div",{ref:(0,m.composeRefs)(h,j.listInnerRef),"cmdk-list-sizer":""},a)))}),D=c.forwardRef((a,b)=>{let{open:d,onOpenChange:e,overlayClassName:f,contentClassName:g,container:h,...j}=a;return c.createElement(i.Root,{open:d,onOpenChange:e},c.createElement(i.Portal,{container:h},c.createElement(i.Overlay,{"cmdk-overlay":"",className:f}),c.createElement(i.Content,{"aria-label":a.label,"cmdk-dialog":"",className:g},c.createElement(x,{ref:b,...j}))))}),E=Object.assign(x,{List:C,Item:y,Input:B,Group:z,Separator:A,Dialog:D,Empty:c.forwardRef((a,b)=>I(a=>0===a.filtered.count)?c.createElement(k.div,{ref:b,...a,"cmdk-empty":"",role:"presentation"}):null),Loading:c.forwardRef((a,b)=>{let{progress:d,children:e,label:f="Loading...",...g}=a;return c.createElement(k.div,{ref:b,...g,"cmdk-loading":"",role:"progressbar","aria-valuenow":d,"aria-valuemin":0,"aria-valuemax":100,"aria-label":f},L(a,a=>c.createElement("div",{"aria-hidden":!0},a)))})});function F(a){let b=c.useRef(a);return G(()=>{b.current=a}),b}var G=c.useEffect;function H(a){let b=c.useRef();return void 0===b.current&&(b.current=a()),b}function I(a){let b=c.useContext(v),d=()=>a(b.snapshot());return c.useSyncExternalStore(b.subscribe,d,d)}function J(a,b,d,e=[]){let f=c.useRef(),g=c.useContext(u);return G(()=>{var c;let h=(()=>{var a;for(let b of d){if("string"==typeof b)return b.trim();if("object"==typeof b&&"current"in b)return b.current?null==(a=b.current.textContent)?void 0:a.trim():f.current}})(),i=e.map(a=>a.trim());g.value(a,h,i),null==(c=b.current)||c.setAttribute(s,h),f.current=h}),f}var K=()=>{let[a,b]=c.useState(),d=H(()=>new Map);return G(()=>{d.current.forEach(a=>a()),d.current=new Map},[a]),(a,c)=>{d.current.set(a,c),b({})}};function L({asChild:a,children:b},d){let e;return a&&c.isValidElement(b)?c.cloneElement("function"==typeof(e=b.type)?e(b.props):"render"in e?e.render(b.props):b,{ref:b.ref},d(b.props.children)):d(b)}var M={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"},N=a.i(793090),O=a.i(687052),P=a.i(186945);let Q=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(E,{ref:d,className:(0,O.cn)("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",a),...c}));Q.displayName=E.displayName;let R=({children:a,...c})=>(0,b.jsx)(P.Dialog,{...c,children:(0,b.jsx)(P.DialogContent,{className:"overflow-hidden p-0 shadow-lg",children:(0,b.jsx)(Q,{className:"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5",children:a})})}),S=c.forwardRef(({className:a,...c},d)=>(0,b.jsxs)("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[(0,b.jsx)(N.Search,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),(0,b.jsx)(E.Input,{ref:d,className:(0,O.cn)("flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",a),...c})]}));S.displayName=E.Input.displayName;let T=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(E.List,{ref:d,className:(0,O.cn)("max-h-[300px] overflow-y-auto overflow-x-hidden",a),...c}));T.displayName=E.List.displayName;let U=c.forwardRef((a,c)=>(0,b.jsx)(E.Empty,{ref:c,className:"py-6 text-center text-sm",...a}));U.displayName=E.Empty.displayName;let V=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(E.Group,{ref:d,className:(0,O.cn)("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",a),...c}));V.displayName=E.Group.displayName;let W=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(E.Separator,{ref:d,className:(0,O.cn)("-mx-1 h-px bg-border",a),...c}));W.displayName=E.Separator.displayName;let X=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(E.Item,{ref:d,className:(0,O.cn)("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",a),...c}));X.displayName=E.Item.displayName,a.s(["Command",()=>Q,"CommandDialog",()=>R,"CommandEmpty",()=>U,"CommandGroup",()=>V,"CommandInput",()=>S,"CommandItem",()=>X,"CommandList",()=>T,"CommandSeparator",()=>W],964952)},10660,a=>{"use strict";var b=a.i(40352),c=a.i(920378),d=a.i(132745),e=a.i(681612),f=a.i(141270),g=a.i(863535);let h=(0,g.default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);var i=a.i(796228),j=a.i(936883);let k=(0,g.default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]),l=(0,g.default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);var m=a.i(861698),n=a.i(227725);function o(){let{theme:a,setTheme:c}=(0,m.useTheme)(),[d,e]=j.useState(!1);return(j.useEffect(()=>{e(!0)},[]),d)?(0,b.jsxs)(n.Button,{variant:"ghost",size:"icon",onClick:()=>c("light"===a?"dark":"light"),"aria-label":"Toggle theme",children:[(0,b.jsx)(l,{className:"h-5 w-5 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0"}),(0,b.jsx)(k,{className:"absolute h-5 w-5 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100"})]}):(0,b.jsx)(n.Button,{variant:"ghost",size:"icon",disabled:!0,"aria-label":"Toggle theme",children:(0,b.jsx)(l,{className:"h-5 w-5"})})}var p=a.i(615268),q=a.i(793090),r=a.i(297557);let s=(0,g.default)("tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);function t(a){return Array.isArray?Array.isArray(a):"[object Array]"===A(a)}let u=1/0;function v(a){return"string"==typeof a}function w(a){return"number"==typeof a}function x(a){return"object"==typeof a}function y(a){return null!=a}function z(a){return!a.trim().length}function A(a){return null==a?void 0===a?"[object Undefined]":"[object Null]":Object.prototype.toString.call(a)}let B=Object.prototype.hasOwnProperty;class C{constructor(a){this._keys=[],this._keyMap={};let b=0;a.forEach(a=>{let c=D(a);this._keys.push(c),this._keyMap[c.id]=c,b+=c.weight}),this._keys.forEach(a=>{a.weight/=b})}get(a){return this._keyMap[a]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function D(a){let b=null,c=null,d=null,e=1,f=null;if(v(a)||t(a))d=a,b=E(a),c=F(a);else{if(!B.call(a,"name"))throw Error("Missing name property in key");let g=a.name;if(d=g,B.call(a,"weight")&&(e=a.weight)<=0)throw Error(`Property 'weight' in key '${g}' must be a positive integer`);b=E(g),c=F(g),f=a.getFn}return{path:b,id:c,weight:e,src:d,getFn:f}}function E(a){return t(a)?a:a.split(".")}function F(a){return t(a)?a.join("."):a}var G={isCaseSensitive:!1,ignoreDiacritics:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(a,b)=>a.score===b.score?a.idx<b.idx?-1:1:a.score<b.score?-1:1,includeMatches:!1,findAllMatches:!1,minMatchCharLength:1,location:0,threshold:.6,distance:100,useExtendedSearch:!1,getFn:function(a,b){let c=[],d=!1,e=(a,b,f)=>{if(y(a))if(b[f]){var g,h;let i=a[b[f]];if(!y(i))return;if(f===b.length-1&&(v(i)||w(i)||!0===(g=i)||!1===g||x(h=g)&&null!==h&&"[object Boolean]"==A(g)))c.push(null==i?"":function(a){if("string"==typeof a)return a;let b=a+"";return"0"==b&&1/a==-u?"-0":b}(i));else if(t(i)){d=!0;for(let a=0,c=i.length;a<c;a+=1)e(i[a],b,f+1)}else b.length&&e(i,b,f+1)}else c.push(a)};return e(a,v(b)?b.split("."):b,0),d?c:c[0]},ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1};let H=/[^ ]+/g;class I{constructor({getFn:a=G.getFn,fieldNormWeight:b=G.fieldNormWeight}={}){this.norm=function(a=1,b=3){let c=new Map,d=Math.pow(10,b);return{get(b){let e=b.match(H).length;if(c.has(e))return c.get(e);let f=parseFloat(Math.round(1/Math.pow(e,.5*a)*d)/d);return c.set(e,f),f},clear(){c.clear()}}}(b,3),this.getFn=a,this.isCreated=!1,this.setIndexRecords()}setSources(a=[]){this.docs=a}setIndexRecords(a=[]){this.records=a}setKeys(a=[]){this.keys=a,this._keysMap={},a.forEach((a,b)=>{this._keysMap[a.id]=b})}create(){!this.isCreated&&this.docs.length&&(this.isCreated=!0,v(this.docs[0])?this.docs.forEach((a,b)=>{this._addString(a,b)}):this.docs.forEach((a,b)=>{this._addObject(a,b)}),this.norm.clear())}add(a){let b=this.size();v(a)?this._addString(a,b):this._addObject(a,b)}removeAt(a){this.records.splice(a,1);for(let b=a,c=this.size();b<c;b+=1)this.records[b].i-=1}getValueForItemAtKeyId(a,b){return a[this._keysMap[b]]}size(){return this.records.length}_addString(a,b){if(!y(a)||z(a))return;let c={v:a,i:b,n:this.norm.get(a)};this.records.push(c)}_addObject(a,b){let c={i:b,$:{}};this.keys.forEach((b,d)=>{let e=b.getFn?b.getFn(a):this.getFn(a,b.path);if(y(e)){if(t(e)){let a=[],b=[{nestedArrIndex:-1,value:e}];for(;b.length;){let{nestedArrIndex:c,value:d}=b.pop();if(y(d))if(v(d)&&!z(d)){let b={v:d,i:c,n:this.norm.get(d)};a.push(b)}else t(d)&&d.forEach((a,c)=>{b.push({nestedArrIndex:c,value:a})})}c.$[d]=a}else if(v(e)&&!z(e)){let a={v:e,n:this.norm.get(e)};c.$[d]=a}}}),this.records.push(c)}toJSON(){return{keys:this.keys,records:this.records}}}function J(a,b,{getFn:c=G.getFn,fieldNormWeight:d=G.fieldNormWeight}={}){let e=new I({getFn:c,fieldNormWeight:d});return e.setKeys(a.map(D)),e.setSources(b),e.create(),e}function K(a,{errors:b=0,currentLocation:c=0,expectedLocation:d=0,distance:e=G.distance,ignoreLocation:f=G.ignoreLocation}={}){let g=b/a.length;if(f)return g;let h=Math.abs(d-c);return e?g+h/e:h?1:g}let L=String.prototype.normalize?a=>a.normalize("NFD").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/g,""):a=>a;class M{constructor(a,{location:b=G.location,threshold:c=G.threshold,distance:d=G.distance,includeMatches:e=G.includeMatches,findAllMatches:f=G.findAllMatches,minMatchCharLength:g=G.minMatchCharLength,isCaseSensitive:h=G.isCaseSensitive,ignoreDiacritics:i=G.ignoreDiacritics,ignoreLocation:j=G.ignoreLocation}={}){if(this.options={location:b,threshold:c,distance:d,includeMatches:e,findAllMatches:f,minMatchCharLength:g,isCaseSensitive:h,ignoreDiacritics:i,ignoreLocation:j},a=h?a:a.toLowerCase(),a=i?L(a):a,this.pattern=a,this.chunks=[],!this.pattern.length)return;const k=(a,b)=>{this.chunks.push({pattern:a,alphabet:function(a){let b={};for(let c=0,d=a.length;c<d;c+=1){let e=a.charAt(c);b[e]=(b[e]||0)|1<<d-c-1}return b}(a),startIndex:b})},l=this.pattern.length;if(l>32){let a=0;const b=l%32,c=l-b;for(;a<c;)k(this.pattern.substr(a,32),a),a+=32;if(b){const a=l-32;k(this.pattern.substr(a),a)}}else k(this.pattern,0)}searchIn(a){let{isCaseSensitive:b,ignoreDiacritics:c,includeMatches:d}=this.options;if(a=b?a:a.toLowerCase(),a=c?L(a):a,this.pattern===a){let b={isMatch:!0,score:0};return d&&(b.indices=[[0,a.length-1]]),b}let{location:e,distance:f,threshold:g,findAllMatches:h,minMatchCharLength:i,ignoreLocation:j}=this.options,k=[],l=0,m=!1;this.chunks.forEach(({pattern:b,alphabet:c,startIndex:n})=>{let{isMatch:o,score:p,indices:q}=function(a,b,c,{location:d=G.location,distance:e=G.distance,threshold:f=G.threshold,findAllMatches:g=G.findAllMatches,minMatchCharLength:h=G.minMatchCharLength,includeMatches:i=G.includeMatches,ignoreLocation:j=G.ignoreLocation}={}){let k;if(b.length>32)throw Error("Pattern length exceeds max of 32.");let l=b.length,m=a.length,n=Math.max(0,Math.min(d,m)),o=f,p=n,q=h>1||i,r=q?Array(m):[];for(;(k=a.indexOf(b,p))>-1;)if(o=Math.min(K(b,{currentLocation:k,expectedLocation:n,distance:e,ignoreLocation:j}),o),p=k+l,q){let a=0;for(;a<l;)r[k+a]=1,a+=1}p=-1;let s=[],t=1,u=l+m,v=1<<l-1;for(let d=0;d<l;d+=1){let f=0,h=u;for(;f<h;)K(b,{errors:d,currentLocation:n+h,expectedLocation:n,distance:e,ignoreLocation:j})<=o?f=h:u=h,h=Math.floor((u-f)/2+f);u=h;let i=Math.max(1,n-h+1),k=g?m:Math.min(n+h,m)+l,w=Array(k+2);w[k+1]=(1<<d)-1;for(let f=k;f>=i;f-=1){let g=f-1,h=c[a.charAt(g)];if(q&&(r[g]=+!!h),w[f]=(w[f+1]<<1|1)&h,d&&(w[f]|=(s[f+1]|s[f])<<1|1|s[f+1]),w[f]&v&&(t=K(b,{errors:d,currentLocation:g,expectedLocation:n,distance:e,ignoreLocation:j}))<=o){if(o=t,(p=g)<=n)break;i=Math.max(1,2*n-p)}}if(K(b,{errors:d+1,currentLocation:n,expectedLocation:n,distance:e,ignoreLocation:j})>o)break;s=w}let w={isMatch:p>=0,score:Math.max(.001,t)};if(q){let a=function(a=[],b=G.minMatchCharLength){let c=[],d=-1,e=-1,f=0;for(let g=a.length;f<g;f+=1){let g=a[f];g&&-1===d?d=f:g||-1===d||((e=f-1)-d+1>=b&&c.push([d,e]),d=-1)}return a[f-1]&&f-d>=b&&c.push([d,f-1]),c}(r,h);a.length?i&&(w.indices=a):w.isMatch=!1}return w}(a,b,c,{location:e+n,distance:f,threshold:g,findAllMatches:h,minMatchCharLength:i,includeMatches:d,ignoreLocation:j});o&&(m=!0),l+=p,o&&q&&(k=[...k,...q])});let n={isMatch:m,score:m?l/this.chunks.length:1};return m&&d&&(n.indices=k),n}}class N{constructor(a){this.pattern=a}static isMultiMatch(a){return O(a,this.multiRegex)}static isSingleMatch(a){return O(a,this.singleRegex)}search(){}}function O(a,b){let c=a.match(b);return c?c[1]:null}class P extends N{constructor(a,{location:b=G.location,threshold:c=G.threshold,distance:d=G.distance,includeMatches:e=G.includeMatches,findAllMatches:f=G.findAllMatches,minMatchCharLength:g=G.minMatchCharLength,isCaseSensitive:h=G.isCaseSensitive,ignoreDiacritics:i=G.ignoreDiacritics,ignoreLocation:j=G.ignoreLocation}={}){super(a),this._bitapSearch=new M(a,{location:b,threshold:c,distance:d,includeMatches:e,findAllMatches:f,minMatchCharLength:g,isCaseSensitive:h,ignoreDiacritics:i,ignoreLocation:j})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(a){return this._bitapSearch.searchIn(a)}}class Q extends N{constructor(a){super(a)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(a){let b,c=0,d=[],e=this.pattern.length;for(;(b=a.indexOf(this.pattern,c))>-1;)c=b+e,d.push([b,c-1]);let f=!!d.length;return{isMatch:f,score:+!f,indices:d}}}let R=[class extends N{constructor(a){super(a)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(a){let b=a===this.pattern;return{isMatch:b,score:+!b,indices:[0,this.pattern.length-1]}}},Q,class extends N{constructor(a){super(a)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(a){let b=a.startsWith(this.pattern);return{isMatch:b,score:+!b,indices:[0,this.pattern.length-1]}}},class extends N{constructor(a){super(a)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(a){let b=!a.startsWith(this.pattern);return{isMatch:b,score:+!b,indices:[0,a.length-1]}}},class extends N{constructor(a){super(a)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(a){let b=!a.endsWith(this.pattern);return{isMatch:b,score:+!b,indices:[0,a.length-1]}}},class extends N{constructor(a){super(a)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(a){let b=a.endsWith(this.pattern);return{isMatch:b,score:+!b,indices:[a.length-this.pattern.length,a.length-1]}}},class extends N{constructor(a){super(a)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(a){let b=-1===a.indexOf(this.pattern);return{isMatch:b,score:+!b,indices:[0,a.length-1]}}},P],S=R.length,T=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,U=new Set([P.type,Q.type]),V=[];function W(a,b){for(let c=0,d=V.length;c<d;c+=1){let d=V[c];if(d.condition(a,b))return new d(a,b)}return new M(a,b)}let X="$and",Y="$path",Z=a=>!!(a[X]||a.$or),$=a=>({[X]:Object.keys(a).map(b=>({[b]:a[b]}))});function _(a,b,{auto:c=!0}={}){let d=a=>{let e=Object.keys(a),f=!!a[Y];if(!f&&e.length>1&&!Z(a))return d($(a));if(!t(a)&&x(a)&&!Z(a)){let d=f?a[Y]:e[0],g=f?a.$val:a[d];if(!v(g))throw Error(`Invalid value for key ${d}`);let h={keyId:F(d),pattern:g};return c&&(h.searcher=W(g,b)),h}let g={children:[],operator:e[0]};return e.forEach(b=>{let c=a[b];t(c)&&c.forEach(a=>{g.children.push(d(a))})}),g};return Z(a)||(a=$(a)),d(a)}function aa(a,b){let c=a.matches;b.matches=[],y(c)&&c.forEach(a=>{if(!y(a.indices)||!a.indices.length)return;let{indices:c,value:d}=a,e={indices:c,value:d};a.key&&(e.key=a.key.src),a.idx>-1&&(e.refIndex=a.idx),b.matches.push(e)})}function ab(a,b){b.score=a.score}class ac{constructor(a,b={},c){this.options={...G,...b},this.options.useExtendedSearch,this._keyStore=new C(this.options.keys),this.setCollection(a,c)}setCollection(a,b){if(this._docs=a,b&&!(b instanceof I))throw Error("Incorrect 'index' type");this._myIndex=b||J(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(a){y(a)&&(this._docs.push(a),this._myIndex.add(a))}remove(a=()=>!1){let b=[];for(let c=0,d=this._docs.length;c<d;c+=1){let e=this._docs[c];a(e,c)&&(this.removeAt(c),c-=1,d-=1,b.push(e))}return b}removeAt(a){this._docs.splice(a,1),this._myIndex.removeAt(a)}getIndex(){return this._myIndex}search(a,{limit:b=-1}={}){let{includeMatches:c,includeScore:d,shouldSort:e,sortFn:f,ignoreFieldNorm:g}=this.options,h=v(a)?v(this._docs[0])?this._searchStringList(a):this._searchObjectList(a):this._searchLogical(a);return!function(a,{ignoreFieldNorm:b=G.ignoreFieldNorm}){a.forEach(a=>{let c=1;a.matches.forEach(({key:a,norm:d,score:e})=>{let f=a?a.weight:null;c*=Math.pow(0===e&&f?Number.EPSILON:e,(f||1)*(b?1:d))}),a.score=c})}(h,{ignoreFieldNorm:g}),e&&h.sort(f),w(b)&&b>-1&&(h=h.slice(0,b)),function(a,b,{includeMatches:c=G.includeMatches,includeScore:d=G.includeScore}={}){let e=[];return c&&e.push(aa),d&&e.push(ab),a.map(a=>{let{idx:c}=a,d={item:b[c],refIndex:c};return e.length&&e.forEach(b=>{b(a,d)}),d})}(h,this._docs,{includeMatches:c,includeScore:d})}_searchStringList(a){let b=W(a,this.options),{records:c}=this._myIndex,d=[];return c.forEach(({v:a,i:c,n:e})=>{if(!y(a))return;let{isMatch:f,score:g,indices:h}=b.searchIn(a);f&&d.push({item:a,idx:c,matches:[{score:g,value:a,norm:e,indices:h}]})}),d}_searchLogical(a){let b=_(a,this.options),c=(a,b,d)=>{if(!a.children){let{keyId:c,searcher:e}=a,f=this._findMatches({key:this._keyStore.get(c),value:this._myIndex.getValueForItemAtKeyId(b,c),searcher:e});return f&&f.length?[{idx:d,item:b,matches:f}]:[]}let e=[];for(let f=0,g=a.children.length;f<g;f+=1){let g=c(a.children[f],b,d);if(g.length)e.push(...g);else if(a.operator===X)return[]}return e},d=this._myIndex.records,e={},f=[];return d.forEach(({$:a,i:d})=>{if(y(a)){let g=c(b,a,d);g.length&&(e[d]||(e[d]={idx:d,item:a,matches:[]},f.push(e[d])),g.forEach(({matches:a})=>{e[d].matches.push(...a)}))}}),f}_searchObjectList(a){let b=W(a,this.options),{keys:c,records:d}=this._myIndex,e=[];return d.forEach(({$:a,i:d})=>{if(!y(a))return;let f=[];c.forEach((c,d)=>{f.push(...this._findMatches({key:c,value:a[d],searcher:b}))}),f.length&&e.push({idx:d,item:a,matches:f})}),e}_findMatches({key:a,value:b,searcher:c}){if(!y(b))return[];let d=[];if(t(b))b.forEach(({v:b,i:e,n:f})=>{if(!y(b))return;let{isMatch:g,score:h,indices:i}=c.searchIn(b);g&&d.push({score:h,key:a,value:b,idx:e,norm:f,indices:i})});else{let{v:e,n:f}=b,{isMatch:g,score:h,indices:i}=c.searchIn(e);g&&d.push({score:h,key:a,value:e,norm:f,indices:i})}return d}}ac.version="7.1.0",ac.createIndex=J,ac.parseIndex=function(a,{getFn:b=G.getFn,fieldNormWeight:c=G.fieldNormWeight}={}){let{keys:d,records:e}=a,f=new I({getFn:b,fieldNormWeight:c});return f.setKeys(d),f.setIndexRecords(e),f},ac.config=G,ac.parseQuery=_,function(...a){V.push(...a)}(class{constructor(a,{isCaseSensitive:b=G.isCaseSensitive,ignoreDiacritics:c=G.ignoreDiacritics,includeMatches:d=G.includeMatches,minMatchCharLength:e=G.minMatchCharLength,ignoreLocation:f=G.ignoreLocation,findAllMatches:g=G.findAllMatches,location:h=G.location,threshold:i=G.threshold,distance:j=G.distance}={}){this.query=null,this.options={isCaseSensitive:b,ignoreDiacritics:c,includeMatches:d,minMatchCharLength:e,findAllMatches:g,ignoreLocation:f,location:h,threshold:i,distance:j},a=b?a:a.toLowerCase(),a=c?L(a):a,this.pattern=a,this.query=function(a,b={}){return a.split("|").map(a=>{let c=a.trim().split(T).filter(a=>a&&!!a.trim()),d=[];for(let a=0,e=c.length;a<e;a+=1){let e=c[a],f=!1,g=-1;for(;!f&&++g<S;){let a=R[g],c=a.isMultiMatch(e);c&&(d.push(new a(c,b)),f=!0)}if(!f)for(g=-1;++g<S;){let a=R[g],c=a.isSingleMatch(e);if(c){d.push(new a(c,b));break}}}return d})}(this.pattern,this.options)}static condition(a,b){return b.useExtendedSearch}searchIn(a){let b=this.query;if(!b)return{isMatch:!1,score:1};let{includeMatches:c,isCaseSensitive:d,ignoreDiacritics:e}=this.options;a=d?a:a.toLowerCase(),a=e?L(a):a;let f=0,g=[],h=0;for(let d=0,e=b.length;d<e;d+=1){let e=b[d];g.length=0,f=0;for(let b=0,d=e.length;b<d;b+=1){let d=e[b],{isMatch:i,indices:j,score:k}=d.search(a);if(i){if(f+=1,h+=k,c){let a=d.constructor.type;U.has(a)?g=[...g,...j]:g.push(j)}}else{h=0,f=0,g.length=0;break}}if(f){let a={isMatch:!0,score:h/f};return c&&(a.indices=g),a}}return{isMatch:!1,score:1}}});var ad=a.i(964952),ae=a.i(882479),af=a.i(322570),ag=a.i(72245);function ah({specs:a}){let c=(0,e.useRouter)(),{getSpecUrl:d}=(0,ag.useProjectUrl)(),[f,g]=j.useState(!1),[h,i]=j.useState(""),[k,l]=j.useState([]);j.useEffect(()=>{let a=localStorage.getItem("leanspec-recent-searches");a&&l(JSON.parse(a))},[]),j.useEffect(()=>{let a=a=>{"k"===a.key&&(a.metaKey||a.ctrlKey)&&(a.preventDefault(),g(a=>!a))};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[]);let m=j.useMemo(()=>new ac(a,{keys:[{name:"title",weight:2},{name:"specNumber",weight:1.5},{name:"tags",weight:.5}],threshold:.4,includeScore:!0,minMatchCharLength:2}),[a]),n=j.useMemo(()=>h?m.search(h).map(a=>a.item):a.slice(0,8),[h,m,a]);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("button",{onClick:()=>g(!0),className:"inline-flex items-center gap-2 px-2 sm:px-3 py-2 text-sm text-muted-foreground hover:text-foreground transition-colors border rounded-md hover:border-foreground/20",children:[(0,b.jsx)(q.Search,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"hidden sm:inline",children:"Quick search..."}),(0,b.jsxs)("kbd",{className:"hidden md:inline-flex pointer-events-none h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100",children:[(0,b.jsx)("span",{className:"text-xs",children:"⌘"}),"K"]})]}),(0,b.jsxs)(ad.CommandDialog,{open:f,onOpenChange:g,children:[(0,b.jsx)(ad.CommandInput,{placeholder:"Search specs by title, number, or tags...",value:h,onValueChange:i}),(0,b.jsxs)(ad.CommandList,{children:[(0,b.jsx)(ad.CommandEmpty,{children:"No specs found."}),!h&&k.length>0&&(0,b.jsx)(ad.CommandGroup,{heading:"Recent Searches",children:k.map(a=>(0,b.jsxs)(ad.CommandItem,{value:a,onSelect:()=>{i(a)},children:[(0,b.jsx)(r.Clock,{className:"mr-2 h-4 w-4"}),a]},a))}),(0,b.jsx)(ad.CommandGroup,{heading:"Specs",children:n.map(a=>(0,b.jsxs)(ad.CommandItem,{value:`${a.specNumber} ${a.title}`,onSelect:()=>{var b,e;let f;return b=a.id,void(l(f=[e=a.title,...k.filter(a=>a!==e)].slice(0,5)),localStorage.setItem("leanspec-recent-searches",JSON.stringify(f)),c.push(d(b)),g(!1),i(""))},children:[(0,b.jsx)(p.FileText,{className:"mr-2 h-4 w-4"}),(0,b.jsxs)("div",{className:"flex-1 flex items-center justify-between gap-2",children:[(0,b.jsx)("div",{className:"flex-1 min-w-0",children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("span",{className:"font-medium",children:["#",a.specNumber]}),(0,b.jsx)("span",{className:"truncate",children:a.title})]})}),(0,b.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[(0,b.jsx)(ae.StatusBadge,{status:a.status}),(0,b.jsx)(af.PriorityBadge,{priority:a.priority})]})]})]},a.id))}),h&&(0,b.jsx)(ad.CommandGroup,{heading:"Filter by Tag",children:Array.from(new Set(a.flatMap(a=>a.tags))).filter(a=>a.toLowerCase().includes(h.toLowerCase())).slice(0,5).map(a=>(0,b.jsxs)(ad.CommandItem,{value:a,onSelect:()=>{c.push(`/?tag=${encodeURIComponent(a)}`),g(!1)},children:[(0,b.jsx)(s,{className:"mr-2 h-4 w-4"}),"Filter by: ",(0,b.jsx)("span",{className:"ml-1 font-medium",children:a})]},a))})]})]})]})}var ai=a.i(96151);function aj({items:a}){return(0,b.jsx)("nav",{className:"flex items-center gap-1 text-sm text-muted-foreground",children:a.map((a,d)=>(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[d>0&&(0,b.jsx)(f.ChevronRight,{className:"h-4 w-4"}),a.href?(0,b.jsx)(c.default,{href:a.href,className:"hover:text-foreground transition-colors",children:a.label}):(0,b.jsx)("span",{className:"text-foreground",children:a.label})]},d))})}function ak({specs:a}){let f=function(a){if("/"===a)return[{label:"Home"}];if("/stats"===a)return[{label:"Home",href:"/"},{label:"Stats"}];if("/specs"===a||a.startsWith("/specs?")){let b=new URLSearchParams(a.split("?")[1]||"").get("view");return[{label:"Home",href:"/"},{label:`Specs (${"board"===b?"Board View":"List View"})`}]}return a.startsWith("/specs/")?[{label:"Home",href:"/"},{label:"Specs",href:"/specs"},{label:a.split("/")[2]}]:"/board"===a?[{label:"Home",href:"/"},{label:"Board"}]:[{label:"Home",href:"/"}]}((0,e.usePathname)());return(0,b.jsx)("header",{className:"sticky top-0 z-50 w-full h-14 border-b border-border bg-background",children:(0,b.jsxs)("div",{className:"flex items-center justify-between h-full px-2 sm:px-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 sm:gap-4 min-w-0 flex-1",children:[(0,b.jsxs)(n.Button,{variant:"ghost",size:"icon",onClick:()=>{},className:"lg:hidden h-9 w-9 shrink-0",children:[(0,b.jsx)(h,{className:"h-5 w-5"}),(0,b.jsx)("span",{className:"sr-only",children:"Toggle menu"})]}),(0,b.jsxs)(c.default,{href:"/",className:"flex items-center space-x-2 shrink-0",children:[(0,b.jsx)(d.default,{src:"/logo-with-bg.svg",alt:"LeanSpec",width:32,height:32,className:"h-7 w-7 sm:h-8 sm:w-8 dark:hidden"}),(0,b.jsx)(d.default,{src:"/logo-dark-bg.svg",alt:"LeanSpec",width:32,height:32,className:"h-7 w-7 sm:h-8 sm:w-8 hidden dark:block"}),(0,b.jsx)("span",{className:"font-bold text-lg sm:text-xl hidden sm:inline",children:"LeanSpec"})]}),(0,b.jsx)("div",{className:"hidden md:block min-w-0",children:(0,b.jsx)(aj,{items:f})})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1 sm:gap-2 shrink-0",children:[(0,b.jsx)(ah,{specs:a}),(0,b.jsxs)(ai.TooltipProvider,{children:[(0,b.jsxs)(ai.Tooltip,{children:[(0,b.jsx)(ai.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(o,{})})}),(0,b.jsx)(ai.TooltipContent,{children:(0,b.jsx)("p",{children:"Toggle theme"})})]}),(0,b.jsxs)(ai.Tooltip,{children:[(0,b.jsx)(ai.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(n.Button,{variant:"ghost",size:"icon",asChild:!0,className:"h-9 w-9 sm:h-10 sm:w-10",children:(0,b.jsx)("a",{href:"https://www.lean-spec.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"Documentation",children:(0,b.jsx)(i.BookOpen,{className:"h-5 w-5"})})})}),(0,b.jsx)(ai.TooltipContent,{children:(0,b.jsx)("p",{children:"Documentation"})})]}),(0,b.jsxs)(ai.Tooltip,{children:[(0,b.jsx)(ai.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(n.Button,{variant:"ghost",size:"icon",asChild:!0,className:"h-9 w-9 sm:h-10 sm:w-10",children:(0,b.jsxs)("a",{href:"https://github.com/codervisor/lean-spec",target:"_blank",rel:"noopener noreferrer","aria-label":"GitHub repository",children:[(0,b.jsx)(d.default,{src:"/github-mark-white.svg",alt:"GitHub",width:20,height:20,className:"hidden dark:block"}),(0,b.jsx)(d.default,{src:"/github-mark.svg",alt:"GitHub",width:20,height:20,className:"dark:hidden"})]})})}),(0,b.jsx)(ai.TooltipContent,{children:(0,b.jsx)("p",{children:"GitHub repository"})})]})]})]})]})})}a.s(["Navigation",()=>ak],10660)},250338,a=>{"use strict";var b=a.i(40352),c=a.i(920378),d=a.i(681612),e=a.i(476011),f=a.i(615268),g=a.i(863535);let h=(0,g.default)("chart-column",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);var i=a.i(796228);let j=(0,g.default)("network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);var k=a.i(629620),l=a.i(141270),m=a.i(914174),n=a.i(936883),o=a.i(470485);let p=(0,g.default)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);var q=a.i(479220),r=a.i(66497),s=a.i(108920),t=a.i(591633),u=a.i(687052),v=a.i(227725),w=a.i(964952),x=a.i(285232),y=a.i(72245),z=a.i(365791);function A({collapsed:a}){let c=(0,d.useRouter)(),e=(0,d.usePathname)(),{mode:f,currentProject:g,projects:h}=(0,y.useProject)(),[i,j]=(0,n.useState)(!1),[k,l]=(0,n.useState)(!1);if("multi-project"!==f)return null;let m=[...h].sort((a,b)=>a.favorite===b.favorite?0:a.favorite?-1:1);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(z.CreateProjectDialog,{open:k,onOpenChange:l}),(0,b.jsxs)(x.Popover,{open:i,onOpenChange:j,children:[(0,b.jsx)(x.PopoverTrigger,{asChild:!0,children:(0,b.jsx)(v.Button,{variant:"outline",role:"combobox","aria-expanded":i,className:(0,u.cn)("w-full justify-between",a?"h-9 w-9 p-0 justify-center":"px-3"),children:a?(0,b.jsx)(r.FolderOpen,{className:"h-4 w-4"}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 truncate",children:[(0,b.jsx)(r.FolderOpen,{className:"h-4 w-4 shrink-0 opacity-50"}),(0,b.jsx)("span",{className:"truncate",children:g?.name||"Select project..."})]}),(0,b.jsx)(p,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})})}),(0,b.jsx)(x.PopoverContent,{className:"w-[200px] p-0",align:"start",children:(0,b.jsxs)(w.Command,{children:[(0,b.jsx)(w.CommandInput,{placeholder:"Search projects..."}),(0,b.jsxs)(w.CommandList,{children:[(0,b.jsx)(w.CommandEmpty,{children:"No project found."}),(0,b.jsx)(w.CommandGroup,{heading:"Projects",children:m.map(a=>(0,b.jsx)(w.CommandItem,{onSelect:()=>{var b;let c,d;return b=a.id,j(!1),c=e.match(/^\/projects\/[^/]+(\/.*)?$/),d=c?.[1]||"",void(window.location.href=`/projects/${b}${d}`)},className:"text-sm",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 w-full",children:[(0,b.jsx)(o.Check,{className:(0,u.cn)("mr-2 h-4 w-4",g?.id===a.id?"opacity-100":"opacity-0")}),(0,b.jsx)("span",{className:"truncate flex-1",children:a.name}),a.favorite&&(0,b.jsx)(s.Star,{className:"h-3 w-3 fill-yellow-500 text-yellow-500"})]})},a.id))}),(0,b.jsx)(w.CommandSeparator,{}),(0,b.jsxs)(w.CommandGroup,{children:[(0,b.jsxs)(w.CommandItem,{className:"cursor-pointer",onSelect:()=>{j(!1),l(!0)},children:[(0,b.jsx)(q.Plus,{className:"mr-2 h-4 w-4"}),"Create Project"]}),(0,b.jsxs)(w.CommandItem,{className:"cursor-pointer",onSelect:()=>{j(!1),c.push("/projects")},children:[(0,b.jsx)(t.Settings,{className:"mr-2 h-4 w-4"}),"Manage Projects"]})]})]})]})})]})]})}function B({href:a,icon:d,children:e,description:f,currentPath:g,isCollapsed:h}){let i="/"===a||/^\/projects\/[^/]+$/.test(a)?g===a:g.startsWith(a);return(0,b.jsxs)(c.default,{href:a,className:(0,u.cn)("flex items-center gap-3 rounded-lg px-3 py-2 transition-colors","hover:bg-accent hover:text-accent-foreground",i&&"bg-accent text-accent-foreground font-medium",h&&"justify-center px-2"),children:[(0,b.jsx)(d,{className:(0,u.cn)("h-5 w-5 shrink-0",i&&"text-primary")}),!h&&(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("span",{className:"text-sm",children:e}),f&&(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:f})]})]})}function C(){let a=(0,d.usePathname)(),{mode:c,currentProject:g}=(0,y.useProject)(),[o,p]=n.useState(()=>!1),[q,r]=n.useState(!1),[s,t]=n.useState(!1);n.useEffect(()=>{t(!0)},[]),n.useEffect(()=>{document.documentElement.style.setProperty("--main-sidebar-width",o?"60px":"240px"),localStorage.setItem("main-sidebar-collapsed",String(o))},[o]),n.useEffect(()=>{r(!1)},[a]),n.useEffect(()=>{},[]);let w=a=>"multi-project"===c&&g?"/"===a?`/projects/${g.id}`:`/projects/${g.id}${a}`:a;return(0,b.jsxs)(b.Fragment,{children:[q&&(0,b.jsx)("div",{className:"fixed inset-0 bg-black/50 z-40 lg:hidden",onClick:()=>r(!1)}),(0,b.jsx)("aside",{className:(0,u.cn)("border-r border-border bg-background transition-all duration-300 flex-shrink-0","hidden lg:flex lg:sticky lg:top-14 lg:h-[calc(100vh-3.5rem)]",s&&o?"lg:w-[60px]":"lg:w-[240px]",q&&"fixed inset-y-0 left-0 z-[60] flex w-[280px]"),children:(0,b.jsxs)("div",{className:"flex flex-col h-full w-full",children:[(0,b.jsx)("div",{className:"lg:hidden flex justify-end p-2 border-b border-border",children:(0,b.jsxs)(v.Button,{variant:"ghost",size:"sm",onClick:()=>r(!1),className:"h-8 w-8 p-0",children:[(0,b.jsx)(m.X,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Close menu"})]})}),s&&(0,b.jsxs)("nav",{className:"flex-1 px-2 py-4 space-y-1",children:[(0,b.jsx)("div",{className:"mb-4",children:(0,b.jsx)(A,{collapsed:o&&!q})}),(0,b.jsx)(B,{href:w("/"),icon:e.Home,currentPath:a,description:!o||q?"Dashboard":void 0,isCollapsed:o&&!q,children:"Home"}),(0,b.jsx)(B,{href:w("/specs"),icon:f.FileText,currentPath:a,description:!o||q?"All Specifications":void 0,isCollapsed:o&&!q,children:"Specs"}),(0,b.jsx)(B,{href:w("/dependencies"),icon:j,currentPath:a,description:!o||q?"Dependency Graph":void 0,isCollapsed:o&&!q,children:"Dependencies"}),(0,b.jsx)(B,{href:w("/stats"),icon:h,currentPath:a,description:!o||q?"Analytics":void 0,isCollapsed:o&&!q,children:"Stats"}),(0,b.jsx)(B,{href:w("/context"),icon:i.BookOpen,currentPath:a,description:!o||q?"Project Context":void 0,isCollapsed:o&&!q,children:"Context"})]}),(0,b.jsx)("div",{className:"hidden lg:block p-2 border-t border-border",children:(0,b.jsx)(v.Button,{variant:"ghost",size:"sm",onClick:()=>p(!o),className:(0,u.cn)("w-full",s&&o&&"px-2"),children:s&&o?(0,b.jsx)(l.ChevronRight,{className:"h-4 w-4"}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(k.ChevronLeft,{className:"h-4 w-4 mr-2"}),(0,b.jsx)("span",{className:"text-xs",children:"Collapse"})]})})})]})})]})}a.s(["MainSidebar",()=>C],250338)},525726,a=>{"use strict";var b=a.i(40352),c=a.i(861698);function d({children:a,...d}){return(0,b.jsx)(c.ThemeProvider,{...d,children:a})}a.s(["ThemeProvider",()=>d])},468607,a=>{"use strict";var b=a.i(294783),c=a.i(156916);a.s(["Toast",()=>b.Toast,"toast",()=>c.toast])},362004,a=>{"use strict";var b=a.i(936883);function c(a,b,c){{let a="[Vercel Web Analytics] Please import `track` from `@vercel/analytics/server` when using this function in a server environment";!0;console.warn(a);return}}function d(a){return(0,b.useEffect)(()=>{var b;a.beforeSend&&(null==(b=window.va)||b.call(window,"beforeSend",a.beforeSend))},[a.beforeSend]),(0,b.useEffect)(()=>{!function(a={debug:!0}){}({framework:a.framework||"react",basePath:a.basePath??function(){if("undefined"!=typeof process&&void 0!==process.env)return process.env.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH}(),...void 0!==a.route&&{disableAutoTrack:!0},...a})},[]),(0,b.useEffect)(()=>{a.route&&a.path&&function({route:a,path:b}){var c;null==(c=window.va)||c.call(window,"pageview",{route:a,path:b})}({route:a.route,path:a.path})},[a.route,a.path]),null}a.s(["Analytics",()=>d,"track",()=>c])}];
4
-
5
- //# sourceMappingURL=_28fe1532._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[72245,a=>{"use strict";var b=a.i(40352),c=a.i(936883);let d=(0,c.createContext)(null);function e(){let a=(0,c.useContext)(d);if(!a)throw Error("useProject must be used within ProjectProvider");return a}function f({children:a,initialProjectId:e}){let[f,g]=(0,c.useState)("single-project"),[h,i]=(0,c.useState)(null),[j,k]=(0,c.useState)([]),[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)([]),[p,q]=(0,c.useState)(!0),[r,s]=(0,c.useState)(null),t=(0,c.useCallback)(async()=>{try{q(!0),s(null);let a=await fetch("/api/projects");if(!a.ok)throw Error("Failed to fetch projects");let b=await a.json();if(g(b.mode||"single-project"),k(b.projects||[]),m(b.recentProjects||[]),o(b.favoriteProjects||[]),!h&&b.projects.length>0){let a=e?b.projects.find(a=>a.id===e):b.recentProjects?.[0]||b.projects[0];a&&i(a)}}catch(a){console.error("Error fetching projects:",a),s(a instanceof Error?a.message:"Failed to load projects")}finally{q(!1)}},[h,e]),u=(0,c.useCallback)(async a=>{try{let b=await fetch(`/api/projects/${a}`);if(!b.ok)throw Error("Failed to fetch project");let c=await b.json();i(c.project),await t()}catch(a){throw console.error("Error switching project:",a),s(a instanceof Error?a.message:"Failed to switch project"),a}},[t]),v=(0,c.useCallback)(async(a,b)=>{try{let c=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:a,...b})});if(!c.ok){let a=await c.json();throw Error(a.details||"Failed to add project")}let d=await c.json();return await t(),d.project}catch(a){throw console.error("Error adding project:",a),s(a instanceof Error?a.message:"Failed to add project"),a}},[t]),w=(0,c.useCallback)(async a=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"DELETE"})).ok)throw Error("Failed to remove project");if(h?.id===a){let b=j.find(b=>b.id!==a);i(b||null)}await t()}catch(a){throw console.error("Error removing project:",a),s(a instanceof Error?a.message:"Failed to remove project"),a}},[h,j,t]),x=(0,c.useCallback)(async a=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({favorite:!0})})).ok)throw Error("Failed to toggle favorite");await t()}catch(a){throw console.error("Error toggling favorite:",a),s(a instanceof Error?a.message:"Failed to toggle favorite"),a}},[t]),y=(0,c.useCallback)(async(a,b)=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)})).ok)throw Error("Failed to update project");await t()}catch(a){throw console.error("Error updating project:",a),s(a instanceof Error?a.message:"Failed to update project"),a}},[t]);return(0,c.useEffect)(()=>{t()},[t]),(0,b.jsx)(d.Provider,{value:{mode:f,currentProject:h,projects:j,recentProjects:l,favoriteProjects:n,isLoading:p,error:r,switchProject:u,addProject:v,removeProject:w,toggleFavorite:x,updateProject:y,refreshProjects:t},children:a})}function g(){let{mode:a,currentProject:b}=e(),d=(0,c.useCallback)(c=>{if("multi-project"===a&&b){let a=c.startsWith("/")?c:`/${c}`;return`/projects/${b.id}${a}`}return c.startsWith("/")?c:`/${c}`},[a,b]),f=(0,c.useCallback)((a,b)=>{let c=d(`/specs/${a}`);return b?`${c}?subspec=${b}`:c},[d]);return{getUrl:d,getSpecUrl:f,isMultiProject:"multi-project"===a,projectId:b?.id}}a.s(["ProjectProvider",()=>f,"useProject",()=>e,"useProjectUrl",()=>g])},476011,a=>{"use strict";let b=(0,a.i(863535).default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);a.s(["Home",()=>b],476011)},96151,a=>{"use strict";var b=a.i(40352),c=a.i(936883),d=a.i(559653),e=a.i(517988),f=a.i(763375),g=a.i(983644),h=a.i(699700),i=a.i(272311),j=a.i(407547),k=a.i(544329),l=a.i(675655),m=a.i(878357),n=a.i(317449),o=a.i(841318),[p,q]=(0,f.createContextScope)("Tooltip",[i.createPopperScope]),r=(0,i.createPopperScope)(),s="TooltipProvider",t="tooltip.open",[u,v]=p(s),w=a=>{let{__scopeTooltip:d,delayDuration:e=700,skipDelayDuration:f=300,disableHoverableContent:g=!1,children:h}=a,i=c.useRef(!0),j=c.useRef(!1),k=c.useRef(0);return c.useEffect(()=>{let a=k.current;return()=>window.clearTimeout(a)},[]),(0,b.jsx)(u,{scope:d,isOpenDelayedRef:i,delayDuration:e,onOpen:c.useCallback(()=>{window.clearTimeout(k.current),i.current=!1},[]),onClose:c.useCallback(()=>{window.clearTimeout(k.current),k.current=window.setTimeout(()=>i.current=!0,f)},[f]),isPointerInTransitRef:j,onPointerInTransitChange:c.useCallback(a=>{j.current=a},[]),disableHoverableContent:g,children:h})};w.displayName=s;var x="Tooltip",[y,z]=p(x),A=a=>{let{__scopeTooltip:d,children:e,open:f,defaultOpen:g,onOpenChange:j,disableHoverableContent:k,delayDuration:l}=a,m=v(x,a.__scopeTooltip),o=r(d),[p,q]=c.useState(null),s=(0,h.useId)(),u=c.useRef(0),w=k??m.disableHoverableContent,z=l??m.delayDuration,A=c.useRef(!1),[B,C]=(0,n.useControllableState)({prop:f,defaultProp:g??!1,onChange:a=>{a?(m.onOpen(),document.dispatchEvent(new CustomEvent(t))):m.onClose(),j?.(a)},caller:x}),D=c.useMemo(()=>B?A.current?"delayed-open":"instant-open":"closed",[B]),E=c.useCallback(()=>{window.clearTimeout(u.current),u.current=0,A.current=!1,C(!0)},[C]),F=c.useCallback(()=>{window.clearTimeout(u.current),u.current=0,C(!1)},[C]),G=c.useCallback(()=>{window.clearTimeout(u.current),u.current=window.setTimeout(()=>{A.current=!0,C(!0),u.current=0},z)},[z,C]);return c.useEffect(()=>()=>{u.current&&(window.clearTimeout(u.current),u.current=0)},[]),(0,b.jsx)(i.Root,{...o,children:(0,b.jsx)(y,{scope:d,contentId:s,open:B,stateAttribute:D,trigger:p,onTriggerChange:q,onTriggerEnter:c.useCallback(()=>{m.isOpenDelayedRef.current?G():E()},[m.isOpenDelayedRef,G,E]),onTriggerLeave:c.useCallback(()=>{w?F():(window.clearTimeout(u.current),u.current=0)},[F,w]),onOpen:E,onClose:F,disableHoverableContent:w,children:e})})};A.displayName=x;var B="TooltipTrigger",C=c.forwardRef((a,f)=>{let{__scopeTooltip:g,...h}=a,j=z(B,g),k=v(B,g),m=r(g),n=c.useRef(null),o=(0,e.useComposedRefs)(f,n,j.onTriggerChange),p=c.useRef(!1),q=c.useRef(!1),s=c.useCallback(()=>p.current=!1,[]);return c.useEffect(()=>()=>document.removeEventListener("pointerup",s),[s]),(0,b.jsx)(i.Anchor,{asChild:!0,...m,children:(0,b.jsx)(l.Primitive.button,{"aria-describedby":j.open?j.contentId:void 0,"data-state":j.stateAttribute,...h,ref:o,onPointerMove:(0,d.composeEventHandlers)(a.onPointerMove,a=>{"touch"!==a.pointerType&&(q.current||k.isPointerInTransitRef.current||(j.onTriggerEnter(),q.current=!0))}),onPointerLeave:(0,d.composeEventHandlers)(a.onPointerLeave,()=>{j.onTriggerLeave(),q.current=!1}),onPointerDown:(0,d.composeEventHandlers)(a.onPointerDown,()=>{j.open&&j.onClose(),p.current=!0,document.addEventListener("pointerup",s,{once:!0})}),onFocus:(0,d.composeEventHandlers)(a.onFocus,()=>{p.current||j.onOpen()}),onBlur:(0,d.composeEventHandlers)(a.onBlur,j.onClose),onClick:(0,d.composeEventHandlers)(a.onClick,j.onClose)})})});C.displayName=B;var D="TooltipPortal",[E,F]=p(D,{forceMount:void 0}),G=a=>{let{__scopeTooltip:c,forceMount:d,children:e,container:f}=a,g=z(D,c);return(0,b.jsx)(E,{scope:c,forceMount:d,children:(0,b.jsx)(k.Presence,{present:d||g.open,children:(0,b.jsx)(j.Portal,{asChild:!0,container:f,children:e})})})};G.displayName=D;var H="TooltipContent",I=c.forwardRef((a,c)=>{let d=F(H,a.__scopeTooltip),{forceMount:e=d.forceMount,side:f="top",...g}=a,h=z(H,a.__scopeTooltip);return(0,b.jsx)(k.Presence,{present:e||h.open,children:h.disableHoverableContent?(0,b.jsx)(N,{side:f,...g,ref:c}):(0,b.jsx)(J,{side:f,...g,ref:c})})}),J=c.forwardRef((a,d)=>{let f=z(H,a.__scopeTooltip),g=v(H,a.__scopeTooltip),h=c.useRef(null),i=(0,e.useComposedRefs)(d,h),[j,k]=c.useState(null),{trigger:l,onClose:m}=f,n=h.current,{onPointerInTransitChange:o}=g,p=c.useCallback(()=>{k(null),o(!1)},[o]),q=c.useCallback((a,b)=>{let c,d=a.currentTarget,e={x:a.clientX,y:a.clientY},f=function(a,b){let c=Math.abs(b.top-a.y),d=Math.abs(b.bottom-a.y),e=Math.abs(b.right-a.x),f=Math.abs(b.left-a.x);switch(Math.min(c,d,e,f)){case f:return"left";case e:return"right";case c:return"top";case d:return"bottom";default:throw Error("unreachable")}}(e,d.getBoundingClientRect());k(((c=[...function(a,b,c=5){let d=[];switch(b){case"top":d.push({x:a.x-c,y:a.y+c},{x:a.x+c,y:a.y+c});break;case"bottom":d.push({x:a.x-c,y:a.y-c},{x:a.x+c,y:a.y-c});break;case"left":d.push({x:a.x+c,y:a.y-c},{x:a.x+c,y:a.y+c});break;case"right":d.push({x:a.x-c,y:a.y-c},{x:a.x-c,y:a.y+c})}return d}(e,f),...function(a){let{top:b,right:c,bottom:d,left:e}=a;return[{x:e,y:b},{x:c,y:b},{x:c,y:d},{x:e,y:d}]}(b.getBoundingClientRect())].slice()).sort((a,b)=>a.x<b.x?-1:a.x>b.x?1:a.y<b.y?-1:1*!!(a.y>b.y)),function(a){if(a.length<=1)return a.slice();let b=[];for(let c=0;c<a.length;c++){let d=a[c];for(;b.length>=2;){let a=b[b.length-1],c=b[b.length-2];if((a.x-c.x)*(d.y-c.y)>=(a.y-c.y)*(d.x-c.x))b.pop();else break}b.push(d)}b.pop();let c=[];for(let b=a.length-1;b>=0;b--){let d=a[b];for(;c.length>=2;){let a=c[c.length-1],b=c[c.length-2];if((a.x-b.x)*(d.y-b.y)>=(a.y-b.y)*(d.x-b.x))c.pop();else break}c.push(d)}return(c.pop(),1===b.length&&1===c.length&&b[0].x===c[0].x&&b[0].y===c[0].y)?b:b.concat(c)}(c))),o(!0)},[o]);return c.useEffect(()=>()=>p(),[p]),c.useEffect(()=>{if(l&&n){let a=a=>q(a,n),b=a=>q(a,l);return l.addEventListener("pointerleave",a),n.addEventListener("pointerleave",b),()=>{l.removeEventListener("pointerleave",a),n.removeEventListener("pointerleave",b)}}},[l,n,q,p]),c.useEffect(()=>{if(j){let a=a=>{let b=a.target,c={x:a.clientX,y:a.clientY},d=l?.contains(b)||n?.contains(b),e=!function(a,b){let{x:c,y:d}=a,e=!1;for(let a=0,f=b.length-1;a<b.length;f=a++){let g=b[a],h=b[f],i=g.x,j=g.y,k=h.x,l=h.y;j>d!=l>d&&c<(k-i)*(d-j)/(l-j)+i&&(e=!e)}return e}(c,j);d?p():e&&(p(),m())};return document.addEventListener("pointermove",a),()=>document.removeEventListener("pointermove",a)}},[l,n,j,m,p]),(0,b.jsx)(N,{...a,ref:i})}),[K,L]=p(x,{isInside:!1}),M=(0,m.createSlottable)("TooltipContent"),N=c.forwardRef((a,d)=>{let{__scopeTooltip:e,children:f,"aria-label":h,onEscapeKeyDown:j,onPointerDownOutside:k,...l}=a,m=z(H,e),n=r(e),{onClose:p}=m;return c.useEffect(()=>(document.addEventListener(t,p),()=>document.removeEventListener(t,p)),[p]),c.useEffect(()=>{if(m.trigger){let a=a=>{let b=a.target;b?.contains(m.trigger)&&p()};return window.addEventListener("scroll",a,{capture:!0}),()=>window.removeEventListener("scroll",a,{capture:!0})}},[m.trigger,p]),(0,b.jsx)(g.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:j,onPointerDownOutside:k,onFocusOutside:a=>a.preventDefault(),onDismiss:p,children:(0,b.jsxs)(i.Content,{"data-state":m.stateAttribute,...n,...l,ref:d,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,b.jsx)(M,{children:f}),(0,b.jsx)(K,{scope:e,isInside:!0,children:(0,b.jsx)(o.Root,{id:m.contentId,role:"tooltip",children:h||f})})]})})});I.displayName=H;var O="TooltipArrow";c.forwardRef((a,c)=>{let{__scopeTooltip:d,...e}=a,f=r(d);return L(O,d).isInside?null:(0,b.jsx)(i.Arrow,{...f,...e,ref:c})}).displayName=O;var P=a.i(687052);let Q=c.forwardRef(({className:a,sideOffset:c=4,...d},e)=>(0,b.jsx)(G,{children:(0,b.jsx)(I,{ref:e,sideOffset:c,className:(0,P.cn)("z-[100] overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-xs text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a),...d})}));Q.displayName=I.displayName,a.s(["Tooltip",()=>A,"TooltipContent",()=>Q,"TooltipProvider",()=>w,"TooltipTrigger",()=>C],96151)},629620,a=>{"use strict";let b=(0,a.i(863535).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);a.s(["ChevronLeft",()=>b],629620)}];
2
-
3
- //# sourceMappingURL=_90eed09a._.js.map