@leanspec/ui 0.2.7 → 0.2.9

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 (262) hide show
  1. package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
  2. package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +4 -0
  3. package/.next/standalone/packages/ui/.next/build-manifest.json +4 -4
  4. package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/packages/ui/.next/routes-manifest.json +24 -0
  6. package/.next/standalone/packages/ui/.next/server/app/_global-error/page/build-manifest.json +2 -2
  7. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/.next/standalone/packages/ui/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
  10. package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  12. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/standalone/packages/ui/.next/server/app/_not-found/page/build-manifest.json +2 -2
  16. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js +1 -1
  17. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
  18. package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
  20. package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +19 -19
  21. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +19 -19
  22. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  23. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  24. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  25. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +6 -6
  26. package/.next/standalone/packages/ui/.next/server/app/api/context/route/app-paths-manifest.json +3 -0
  27. package/.next/standalone/packages/ui/.next/server/app/api/context/route/build-manifest.json +11 -0
  28. package/.next/standalone/packages/ui/.next/server/app/api/context/route/server-reference-manifest.json +4 -0
  29. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +8 -0
  30. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.map +5 -0
  31. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -0
  32. package/.next/standalone/packages/ui/.next/server/app/api/context/route_client-reference-manifest.js +2 -0
  33. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/app-paths-manifest.json +3 -0
  34. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/build-manifest.json +11 -0
  35. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/server-reference-manifest.json +4 -0
  36. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js +8 -0
  37. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.map +5 -0
  38. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.nft.json +1 -0
  39. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route_client-reference-manifest.js +2 -0
  40. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
  41. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
  42. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
  43. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
  44. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  45. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
  46. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
  47. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
  48. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
  49. package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
  50. package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
  51. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
  52. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
  53. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
  54. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
  55. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
  56. package/.next/standalone/packages/ui/.next/server/app/context/page/app-paths-manifest.json +3 -0
  57. package/.next/standalone/packages/ui/.next/server/app/context/page/build-manifest.json +18 -0
  58. package/.next/standalone/packages/ui/.next/server/app/context/page/next-font-manifest.json +6 -0
  59. package/.next/standalone/packages/ui/.next/server/app/context/page/react-loadable-manifest.json +1 -0
  60. package/.next/standalone/packages/ui/.next/server/app/context/page/server-reference-manifest.json +4 -0
  61. package/.next/standalone/packages/ui/.next/server/app/context/page.js +19 -0
  62. package/.next/standalone/packages/ui/.next/server/app/context/page.js.map +5 -0
  63. package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -0
  64. package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +2 -0
  65. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/app-paths-manifest.json +3 -0
  66. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/build-manifest.json +18 -0
  67. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/next-font-manifest.json +6 -0
  68. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/react-loadable-manifest.json +1 -0
  69. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/server-reference-manifest.json +4 -0
  70. package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js +19 -0
  71. package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.map +5 -0
  72. package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.nft.json +1 -0
  73. package/.next/standalone/packages/ui/.next/server/app/dependencies/page_client-reference-manifest.js +2 -0
  74. package/.next/standalone/packages/ui/.next/server/app/page/build-manifest.json +2 -2
  75. package/.next/standalone/packages/ui/.next/server/app/page.js +1 -1
  76. package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
  77. package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
  78. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page/build-manifest.json +2 -2
  79. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js +1 -1
  80. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
  81. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
  82. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page/build-manifest.json +2 -2
  83. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js +1 -1
  84. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
  85. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +1 -1
  86. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page/build-manifest.json +2 -2
  87. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js +1 -1
  88. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -1
  89. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page_client-reference-manifest.js +1 -1
  90. package/.next/standalone/packages/ui/.next/server/app/projects/page/build-manifest.json +2 -2
  91. package/.next/standalone/packages/ui/.next/server/app/projects/page.js +1 -1
  92. package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -1
  93. package/.next/standalone/packages/ui/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  94. package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
  95. package/.next/standalone/packages/ui/.next/server/app/projects.rsc +24 -23
  96. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +24 -23
  97. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +9 -9
  98. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +3 -3
  99. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  100. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  101. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page/build-manifest.json +2 -2
  102. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js +1 -1
  103. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
  104. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
  105. package/.next/standalone/packages/ui/.next/server/app/specs/page/build-manifest.json +2 -2
  106. package/.next/standalone/packages/ui/.next/server/app/specs/page.js +1 -1
  107. package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
  108. package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
  109. package/.next/standalone/packages/ui/.next/server/app/stats/page/build-manifest.json +2 -2
  110. package/.next/standalone/packages/ui/.next/server/app/stats/page.js +1 -1
  111. package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
  112. package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
  113. package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +4 -0
  114. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3559376c._.js +2 -2
  115. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65667b70._.js +1 -1
  116. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +1 -1
  117. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +1 -1
  118. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +3 -0
  119. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b0969111._.js +3 -0
  120. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bdc3963a._.js +1 -1
  121. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f5c6d6b8._.js +1 -1
  122. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_context_route_actions_dead6daa.js +3 -0
  123. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_dependencies_route_actions_cf6b14c3.js +3 -0
  124. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__12b4eb41._.js +3 -0
  125. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__3c77d95b._.js +3 -0
  126. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__44b603f9._.js +3 -0
  127. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__69a0d63a._.js +3 -0
  128. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__daee3355._.js → [root-of-the-server]__8608a6fa._.js} +2 -2
  129. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__fd80e4dd._.js → [root-of-the-server]__a965a67b._.js} +2 -2
  130. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daedd80e._.js +3 -0
  131. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__dc176c61._.js +3 -0
  132. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__5382b397._.js → [root-of-the-server]__ead1539c._.js} +2 -2
  133. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
  134. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_03aa8d19._.js +7 -0
  135. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +5 -0
  136. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_8cec504f._.js +3 -0
  137. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_959ad3d8._.js +4 -0
  138. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_22274047._.js → _adb9d7cb._.js} +2 -2
  139. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_da18b655._.js +3 -0
  140. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ea899b87._.js +3 -0
  141. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f38e75b7._.js +4 -0
  142. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_fe120f8a._.js +3 -0
  143. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_015f83ca._.js +3 -0
  144. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_1120b57c._.js +3 -0
  145. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_151891de._.js +3 -0
  146. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_1c916fe3._.js +3 -0
  147. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_80605a06._.js +3 -0
  148. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_bb80de48._.js +3 -0
  149. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_e8075f9b._.js +3 -0
  150. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_f919ef4a._.js +3 -0
  151. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_context_page_actions_1a062d48.js +3 -0
  152. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_dependencies_page_actions_57387d47.js +3 -0
  153. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_context_context-client_tsx_4ba99a62._.js +12 -0
  154. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_dependencies_dependencies-client_tsx_0e82443a._.js +4 -0
  155. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js +1 -1
  156. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_spec-detail-wrapper_tsx_fd35401c._.js +3 -0
  157. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_specs-nav-sidebar_tsx_8237ed13._.js +1 -1
  158. package/.next/standalone/packages/ui/.next/server/middleware-build-manifest.js +2 -2
  159. package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
  160. package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
  161. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
  162. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
  163. package/.next/standalone/packages/ui/.next/static/chunks/094cf9f4e3553261.js +1 -0
  164. package/.next/standalone/packages/ui/.next/static/chunks/1c015eb9eaaf9f9c.js +1 -0
  165. package/.next/standalone/packages/ui/.next/static/chunks/1d36660b2877d213.js +3 -0
  166. package/.next/standalone/packages/ui/.next/static/chunks/46275d9d67603bf5.js +1 -0
  167. package/.next/standalone/packages/ui/.next/static/chunks/4d29ca0fa6843070.js +2 -0
  168. package/.next/standalone/packages/ui/.next/static/chunks/59854b15bf046467.js +1 -0
  169. package/.next/standalone/packages/ui/.next/static/chunks/{cca4441cde342ae3.js → 5fd8101e32b076b1.js} +1 -1
  170. package/.next/standalone/packages/ui/.next/static/chunks/6d938a49daa10208.js +2 -0
  171. package/.next/standalone/packages/ui/.next/static/chunks/979625373d5474b6.js +1 -0
  172. package/.next/standalone/packages/ui/.next/static/chunks/a33f10af6abef4df.js +10 -0
  173. package/.next/{static/chunks/794f3931f1ca12d2.js → standalone/packages/ui/.next/static/chunks/a3d7e1be47de010b.js} +1 -1
  174. package/.next/standalone/packages/ui/.next/static/chunks/a5e25b9fa6b88eee.js +1 -0
  175. package/.next/standalone/packages/ui/.next/static/chunks/b53250480fde6816.js +1 -0
  176. package/.next/standalone/packages/ui/.next/static/chunks/b7f19087afe1d2c9.css +1 -0
  177. package/.next/standalone/packages/ui/.next/static/chunks/c658e22a605e0ed1.js +1 -0
  178. package/.next/standalone/packages/ui/.next/static/chunks/c92660d8d0c4763d.js +1 -0
  179. package/.next/standalone/packages/ui/.next/static/chunks/ddd87cd0d26bc2f5.js +1 -0
  180. package/.next/standalone/packages/ui/.next/static/chunks/eeec245955b3b600.js +5 -0
  181. package/.next/standalone/packages/ui/.next/static/chunks/ff11efb770d5a0bc.js +1 -0
  182. package/.next/{static/chunks/turbopack-5fa55215af0efb15.js → standalone/packages/ui/.next/static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
  183. package/.next/standalone/packages/ui/package.json +5 -1
  184. package/.next/standalone/packages/ui/src/app/api/context/route.ts +22 -0
  185. package/.next/standalone/packages/ui/src/app/api/dependencies/route.ts +81 -0
  186. package/.next/standalone/packages/ui/src/app/context/context-client.tsx +393 -0
  187. package/.next/standalone/packages/ui/src/app/context/page.tsx +17 -0
  188. package/.next/standalone/packages/ui/src/app/dependencies/constants.ts +24 -0
  189. package/.next/standalone/packages/ui/src/app/dependencies/dependencies-client.tsx +625 -0
  190. package/.next/standalone/packages/ui/src/app/dependencies/index.ts +19 -0
  191. package/.next/standalone/packages/ui/src/app/dependencies/page.tsx +38 -0
  192. package/.next/standalone/packages/ui/src/app/dependencies/spec-node.tsx +80 -0
  193. package/.next/standalone/packages/ui/src/app/dependencies/spec-sidebar.tsx +198 -0
  194. package/.next/standalone/packages/ui/src/app/dependencies/types.ts +37 -0
  195. package/.next/standalone/packages/ui/src/app/dependencies/utils.ts +194 -0
  196. package/.next/standalone/packages/ui/src/app/globals.css +16 -16
  197. package/.next/standalone/packages/ui/src/app/layout.tsx +4 -7
  198. package/.next/standalone/packages/ui/src/components/context-file-detail.tsx +308 -0
  199. package/.next/standalone/packages/ui/src/components/context-file-viewer.tsx +385 -0
  200. package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +19 -1
  201. package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +181 -134
  202. package/.next/standalone/packages/ui/src/components/spec-detail-wrapper.tsx +20 -0
  203. package/.next/standalone/packages/ui/src/components/specs-nav-sidebar.tsx +3 -2
  204. package/.next/standalone/packages/ui/src/components/ui/accordion.tsx +58 -0
  205. package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +172 -3
  206. package/.next/standalone/packages/ui/src/lib/specs/types.ts +44 -0
  207. package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
  208. package/.next/static/chunks/094cf9f4e3553261.js +1 -0
  209. package/.next/static/chunks/1c015eb9eaaf9f9c.js +1 -0
  210. package/.next/static/chunks/1d36660b2877d213.js +3 -0
  211. package/.next/static/chunks/46275d9d67603bf5.js +1 -0
  212. package/.next/static/chunks/4d29ca0fa6843070.js +2 -0
  213. package/.next/static/chunks/59854b15bf046467.js +1 -0
  214. package/.next/static/chunks/{cca4441cde342ae3.js → 5fd8101e32b076b1.js} +1 -1
  215. package/.next/static/chunks/6d938a49daa10208.js +2 -0
  216. package/.next/static/chunks/979625373d5474b6.js +1 -0
  217. package/.next/static/chunks/a33f10af6abef4df.js +10 -0
  218. package/.next/{standalone/packages/ui/.next/static/chunks/794f3931f1ca12d2.js → static/chunks/a3d7e1be47de010b.js} +1 -1
  219. package/.next/static/chunks/a5e25b9fa6b88eee.js +1 -0
  220. package/.next/static/chunks/b53250480fde6816.js +1 -0
  221. package/.next/static/chunks/b7f19087afe1d2c9.css +1 -0
  222. package/.next/static/chunks/c658e22a605e0ed1.js +1 -0
  223. package/.next/static/chunks/c92660d8d0c4763d.js +1 -0
  224. package/.next/static/chunks/ddd87cd0d26bc2f5.js +1 -0
  225. package/.next/static/chunks/eeec245955b3b600.js +5 -0
  226. package/.next/static/chunks/ff11efb770d5a0bc.js +1 -0
  227. package/.next/{standalone/packages/ui/.next/static/chunks/turbopack-5fa55215af0efb15.js → static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
  228. package/package.json +6 -2
  229. package/.next/standalone/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +0 -95
  230. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__1d0c2012._.js +0 -3
  231. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__73f60f12._.js +0 -7
  232. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a7ae8552._.js +0 -7
  233. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +0 -3
  234. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_14118969._.js +0 -3
  235. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_4129cc0f._.js +0 -3
  236. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_497c8b73._.js +0 -3
  237. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ac867463._.js +0 -3
  238. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_c2f54661._.js +0 -5
  239. package/.next/standalone/packages/ui/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
  240. package/.next/standalone/packages/ui/.next/static/chunks/2204c0f16b23ec4c.js +0 -3
  241. package/.next/standalone/packages/ui/.next/static/chunks/294dea6dbec43ca6.js +0 -1
  242. package/.next/standalone/packages/ui/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
  243. package/.next/standalone/packages/ui/.next/static/chunks/b6976cf6c48996e5.js +0 -1
  244. package/.next/standalone/packages/ui/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
  245. package/.next/standalone/packages/ui/.next/static/chunks/b845813463167db0.js +0 -5
  246. package/.next/standalone/packages/ui/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
  247. package/.next/standalone/packages/ui/.next/static/chunks/d784d84d5b880e48.js +0 -1
  248. package/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
  249. package/.next/static/chunks/2204c0f16b23ec4c.js +0 -3
  250. package/.next/static/chunks/294dea6dbec43ca6.js +0 -1
  251. package/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
  252. package/.next/static/chunks/b6976cf6c48996e5.js +0 -1
  253. package/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
  254. package/.next/static/chunks/b845813463167db0.js +0 -5
  255. package/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
  256. package/.next/static/chunks/d784d84d5b880e48.js +0 -1
  257. /package/.next/standalone/packages/ui/.next/static/{6nq7WNafPv5Bf_7mWgRQ- → 8PwFWS-09QjFSbDbfp15t}/_buildManifest.js +0 -0
  258. /package/.next/standalone/packages/ui/.next/static/{6nq7WNafPv5Bf_7mWgRQ- → 8PwFWS-09QjFSbDbfp15t}/_clientMiddlewareManifest.json +0 -0
  259. /package/.next/standalone/packages/ui/.next/static/{6nq7WNafPv5Bf_7mWgRQ- → 8PwFWS-09QjFSbDbfp15t}/_ssgManifest.js +0 -0
  260. /package/.next/static/{6nq7WNafPv5Bf_7mWgRQ- → 8PwFWS-09QjFSbDbfp15t}/_buildManifest.js +0 -0
  261. /package/.next/static/{6nq7WNafPv5Bf_7mWgRQ- → 8PwFWS-09QjFSbDbfp15t}/_clientMiddlewareManifest.json +0 -0
  262. /package/.next/static/{6nq7WNafPv5Bf_7mWgRQ- → 8PwFWS-09QjFSbDbfp15t}/_ssgManifest.js +0 -0
@@ -5,9 +5,10 @@
5
5
 
6
6
  import { specsService } from '../specs/service';
7
7
  import type { Spec } from './schema';
8
+ import type { ContextFile, ProjectContext, LeanSpecConfig } from '../specs/types';
8
9
  import { detectSubSpecs } from '../sub-specs';
9
- import { join, resolve } from 'path';
10
- import { readFileSync } from 'node:fs';
10
+ import { join, resolve, dirname } from 'path';
11
+ import { readFileSync, existsSync, statSync, readdirSync } from 'node:fs';
11
12
  import matter from 'gray-matter';
12
13
 
13
14
  /**
@@ -81,7 +82,6 @@ function parseSpecTags(spec: Spec): ParsedSpec {
81
82
  */
82
83
  function countSubSpecs(specDirPath: string): number {
83
84
  try {
84
- const { readdirSync, existsSync, statSync } = require('fs');
85
85
  if (!existsSync(specDirPath)) return 0;
86
86
 
87
87
  const entries = readdirSync(specDirPath);
@@ -237,3 +237,172 @@ export async function getStats(projectId?: string): Promise<StatsResult> {
237
237
  completionRate: Math.round(completionRate * 10) / 10,
238
238
  };
239
239
  }
240
+
241
+ // ============================================================================
242
+ // Project Context Functions (Spec 131)
243
+ // ============================================================================
244
+
245
+ /**
246
+ * Get the project root directory (parent of specs directory)
247
+ */
248
+ function getProjectRootDir(): string {
249
+ const specsDir = getSpecsRootDir();
250
+ return dirname(specsDir);
251
+ }
252
+
253
+ /**
254
+ * Simple token estimation (approximation without tiktoken for browser compatibility)
255
+ * Uses the common heuristic of ~4 characters per token for English text
256
+ */
257
+ function estimateTokens(text: string): number {
258
+ // More accurate estimation:
259
+ // - Count words (roughly 1.3 tokens per word for English)
260
+ // - Account for punctuation and special characters
261
+ const words = text.split(/\s+/).filter(w => w.length > 0).length;
262
+ const specialChars = (text.match(/[^a-zA-Z0-9\s]/g) || []).length;
263
+ return Math.ceil(words * 1.3 + specialChars * 0.5);
264
+ }
265
+
266
+ /**
267
+ * Read a context file and return its metadata
268
+ */
269
+ function readContextFile(filePath: string, projectRoot: string): ContextFile | null {
270
+ try {
271
+ if (!existsSync(filePath)) return null;
272
+
273
+ const stats = statSync(filePath);
274
+ const content = readFileSync(filePath, 'utf-8');
275
+ const relativePath = filePath.replace(projectRoot + '/', '');
276
+
277
+ return {
278
+ name: relativePath.split('/').pop() || relativePath,
279
+ path: relativePath,
280
+ content,
281
+ tokenCount: estimateTokens(content),
282
+ lastModified: stats.mtime,
283
+ };
284
+ } catch (error) {
285
+ console.warn(`Unable to read context file: ${filePath}`, error);
286
+ return null;
287
+ }
288
+ }
289
+
290
+ /**
291
+ * Get agent instruction files (AGENTS.md, GEMINI.md, etc.)
292
+ */
293
+ export async function getAgentInstructions(): Promise<ContextFile[]> {
294
+ const projectRoot = getProjectRootDir();
295
+ const files: ContextFile[] = [];
296
+
297
+ // Primary agent instruction files in root
298
+ const rootAgentFiles = [
299
+ 'AGENTS.md',
300
+ 'GEMINI.md',
301
+ 'CLAUDE.md',
302
+ 'COPILOT.md',
303
+ ];
304
+
305
+ for (const fileName of rootAgentFiles) {
306
+ const file = readContextFile(join(projectRoot, fileName), projectRoot);
307
+ if (file) files.push(file);
308
+ }
309
+
310
+ // Check .github/copilot-instructions.md
311
+ const copilotInstructions = readContextFile(
312
+ join(projectRoot, '.github', 'copilot-instructions.md'),
313
+ projectRoot
314
+ );
315
+ if (copilotInstructions) files.push(copilotInstructions);
316
+
317
+ // Check docs/agents/*.md
318
+ const agentsDocsDir = join(projectRoot, 'docs', 'agents');
319
+ if (existsSync(agentsDocsDir)) {
320
+ try {
321
+ const entries = readdirSync(agentsDocsDir);
322
+ for (const entry of entries) {
323
+ if (entry.endsWith('.md')) {
324
+ const file = readContextFile(join(agentsDocsDir, entry), projectRoot);
325
+ if (file) files.push(file);
326
+ }
327
+ }
328
+ } catch {
329
+ // Directory might not be accessible
330
+ }
331
+ }
332
+
333
+ return files;
334
+ }
335
+
336
+ /**
337
+ * Get LeanSpec configuration
338
+ */
339
+ export async function getProjectConfig(): Promise<{ file: ContextFile | null; parsed: LeanSpecConfig | null }> {
340
+ const projectRoot = getProjectRootDir();
341
+ const configPath = join(projectRoot, '.lean-spec', 'config.json');
342
+
343
+ const file = readContextFile(configPath, projectRoot);
344
+
345
+ if (!file) {
346
+ return { file: null, parsed: null };
347
+ }
348
+
349
+ try {
350
+ const parsed = JSON.parse(file.content) as LeanSpecConfig;
351
+ return { file, parsed };
352
+ } catch {
353
+ return { file, parsed: null };
354
+ }
355
+ }
356
+
357
+ /**
358
+ * Get project documentation files (README, CONTRIBUTING, etc.)
359
+ */
360
+ export async function getProjectDocs(): Promise<ContextFile[]> {
361
+ const projectRoot = getProjectRootDir();
362
+ const files: ContextFile[] = [];
363
+
364
+ const docFiles = [
365
+ 'README.md',
366
+ 'CONTRIBUTING.md',
367
+ 'CHANGELOG.md',
368
+ ];
369
+
370
+ for (const fileName of docFiles) {
371
+ const file = readContextFile(join(projectRoot, fileName), projectRoot);
372
+ if (file) files.push(file);
373
+ }
374
+
375
+ return files;
376
+ }
377
+
378
+ /**
379
+ * Get complete project context
380
+ */
381
+ export async function getProjectContext(): Promise<ProjectContext> {
382
+ const projectRoot = getProjectRootDir();
383
+ const [agentInstructions, config, projectDocs] = await Promise.all([
384
+ getAgentInstructions(),
385
+ getProjectConfig(),
386
+ getProjectDocs(),
387
+ ]);
388
+
389
+ // Calculate total tokens
390
+ let totalTokens = 0;
391
+ for (const file of agentInstructions) {
392
+ totalTokens += file.tokenCount;
393
+ }
394
+ if (config.file) {
395
+ totalTokens += config.file.tokenCount;
396
+ }
397
+ for (const file of projectDocs) {
398
+ totalTokens += file.tokenCount;
399
+ }
400
+
401
+ return {
402
+ agentInstructions,
403
+ config,
404
+ projectDocs,
405
+ totalTokens,
406
+ projectRoot,
407
+ };
408
+ }
@@ -53,3 +53,47 @@ export interface CachedSpec<T = Spec | Spec[]> {
53
53
  data: T;
54
54
  expiresAt: number;
55
55
  }
56
+
57
+ /**
58
+ * Context file representation for project context visibility
59
+ */
60
+ export interface ContextFile {
61
+ name: string;
62
+ path: string;
63
+ content: string;
64
+ tokenCount: number;
65
+ lastModified: Date;
66
+ }
67
+
68
+ /**
69
+ * LeanSpec configuration (from .lean-spec/config.json)
70
+ */
71
+ export interface LeanSpecConfig {
72
+ template?: string;
73
+ specsDir?: string;
74
+ structure?: {
75
+ pattern?: string;
76
+ prefix?: string;
77
+ dateFormat?: string;
78
+ sequenceDigits?: number;
79
+ defaultFile?: string;
80
+ };
81
+ features?: {
82
+ aiAgents?: boolean;
83
+ };
84
+ templates?: Record<string, string>;
85
+ }
86
+
87
+ /**
88
+ * Project context containing all contextual files
89
+ */
90
+ export interface ProjectContext {
91
+ agentInstructions: ContextFile[]; // AGENTS.md, GEMINI.md, etc.
92
+ config: {
93
+ file: ContextFile | null; // .lean-spec/config.json
94
+ parsed: LeanSpecConfig | null; // Parsed config object
95
+ };
96
+ projectDocs: ContextFile[]; // README.md, CONTRIBUTING.md, etc.
97
+ totalTokens: number;
98
+ projectRoot: string; // Absolute path to project root (for editor links)
99
+ }