@leanspec/ui 0.2.8 → 0.2.9-dev.20251205030455
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.
- package/.next/standalone/node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/.next/standalone/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +95 -0
- package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
- package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +8 -0
- package/.next/standalone/packages/ui/.next/build-manifest.json +4 -4
- package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
- package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
- package/.next/standalone/packages/ui/.next/routes-manifest.json +60 -0
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +18 -18
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -18
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +5 -5
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js +1 -3
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js +1 -2
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js +1 -2
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js +6 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js +1 -3
- package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/context/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/context/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js +19 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/page.js +4 -3
- package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js +21 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js +21 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js +7 -7
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js +8 -7
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js +7 -6
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js +21 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/page.js +7 -6
- package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.rsc +24 -23
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +24 -23
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +9 -9
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/specs/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +8 -0
- package/.next/standalone/packages/ui/.next/server/chunks/6681a__next-internal_server_app_api_projects_[id]_dependencies_route_actions_7ac49581.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_projects_[id]_context_route_actions_96adca70.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_projects_[id]_validate_route_actions_b60372c9.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[externals]_better-sqlite3_a1cc22cb._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__1706515f._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__18aca702._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__27348781._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3a7f0840._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3e17db24._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__5f1e0195._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__6e06fd2a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__71d98924._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__97b99cc0._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9d9758e1._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b1ad8b69._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b212b9bd._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b9c03a57._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e99e7672._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f38a5f20._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/{[root-of-the-server]__126dea7b._.js → [root-of-the-server]__fa8cf2bc._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_dependencies_route_actions_cf6b14c3.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_b8c1af87._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_baa0160d._.js +72 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/730ea_ui__next-internal_server_app_projects_[projectId]_context_page_actions_e4940a48.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/730ea_ui__next-internal_server_app_projects_[projectId]_stats_page_actions_82a85203.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__0f0dade1._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__13f96ef4._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__212c8580._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__2b66bcca._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__312221a2._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__366688dd._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__fd80e4dd._.js → [root-of-the-server]__38c56adc._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__44b603f9._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__46b71f61._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__53f4506c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__665ae766._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__84124d4b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__921689ca._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a34731d8._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a9d7fd42._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b0d6e2ad._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b27b2469._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b3633d6e._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__dcee62dd._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_03aa8d19._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_39562b2a._.js → _170362f4._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_1a642e67._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_85effc18._.js → _2bc76f88._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_fdd7780b._.js → _3f059230._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_58b98a8f._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_8ab6f9ca._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_90eed09a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_22274047._.js → _adb9d7cb._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b303aeea._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_bae6d2b8._.js → _b421ba4a._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_d840ffc6._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_da18b655._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ec637d7c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f05260d6._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f38e75b7._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f9129aae._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/f825c_server_app_projects_[projectId]_dependencies_page_actions_ba2321b8.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_0056f1f2._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_015f83ca._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_30b0b05a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_478d57e5._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_4e3e790c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_80605a06._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_f5b29533._.js → node_modules__pnpm_8680dc29._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_e175b92a._.js → node_modules__pnpm_94a0b1f5._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_b4ff5c78._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_bb80de48._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_7791e3b8._.js → node_modules__pnpm_d3262b3d._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_e8075f9b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_f919ef4a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_dependencies_page_actions_57387d47.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_context_context-client_tsx_4ba99a62._.js +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_dependencies_dependencies-client_tsx_0e82443a._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_projects_layout_tsx_86c2ce0f._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_projects_page_tsx_6e166c8e._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_spec-detail-wrapper_tsx_fd35401c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_specs-nav-sidebar_tsx_8237ed13._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/middleware-build-manifest.js +2 -2
- package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
- package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
- package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/04de9ed512b8098b.js +10 -0
- package/.next/standalone/packages/ui/.next/static/chunks/1e0689744f87e958.js +2 -0
- package/.next/standalone/packages/ui/.next/static/chunks/3d12a8c3152b526d.js +3 -0
- package/.next/standalone/packages/ui/.next/static/chunks/4610aea3ca2e69eb.js +2 -0
- package/.next/standalone/packages/ui/.next/static/chunks/46275d9d67603bf5.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/7931c6cb379305b1.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/7a00633903e066b4.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{942cf63b4032c808.js → 7df6308e6cfcf902.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/7f9a218732be8099.js +5 -0
- package/.next/standalone/packages/ui/.next/static/chunks/840c6743a491a398.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/8a6e8f3394240dbb.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/8d8c106c6848d15b.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/a5e25b9fa6b88eee.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/a640b005f2e15d98.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/a7075a240adea8e8.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/b53250480fde6816.js +1 -0
- package/.next/{static/chunks/794f3931f1ca12d2.js → standalone/packages/ui/.next/static/chunks/bbd498aa5689c057.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/c26909a25ca9fc9b.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/c658e22a605e0ed1.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/c92660d8d0c4763d.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{e3bc96a996e2a314.js → d26f4109b44eb240.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/{3276ca6fd9005903.js → d52a048b511c32bd.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/ddb2935cfe5310c7.css +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/e399b4afc7936907.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f924ae32752e1583.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/ff11efb770d5a0bc.js +1 -0
- package/.next/{static/chunks/turbopack-5fa55215af0efb15.js → standalone/packages/ui/.next/static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
- package/.next/standalone/packages/ui/package.json +3 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/src/app/api/dependencies/route.ts +81 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/context/route.ts +39 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/dependencies/route.ts +69 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/route.ts +25 -9
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/route.ts +14 -14
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/route.ts +9 -8
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/validate/route.ts +49 -0
- package/.next/standalone/packages/ui/src/app/api/projects/route.ts +18 -5
- package/.next/standalone/packages/ui/src/app/api/specs/[id]/dependency-graph/route.test.ts +0 -2
- package/.next/standalone/packages/ui/src/app/api/specs/[id]/dependency-graph/route.ts +0 -15
- package/.next/standalone/packages/ui/src/app/context/context-client.tsx +23 -1
- package/.next/standalone/packages/ui/src/app/dashboard-client.tsx +29 -58
- package/.next/standalone/packages/ui/src/app/dependencies/constants.ts +25 -0
- package/.next/standalone/packages/ui/src/app/dependencies/dependencies-client.tsx +700 -0
- package/.next/standalone/packages/ui/src/app/dependencies/index.ts +19 -0
- package/.next/standalone/packages/ui/src/app/dependencies/page.tsx +38 -0
- package/.next/standalone/packages/ui/src/app/dependencies/spec-node.tsx +80 -0
- package/.next/standalone/packages/ui/src/app/dependencies/spec-sidebar.tsx +171 -0
- package/.next/standalone/packages/ui/src/app/dependencies/types.ts +37 -0
- package/.next/standalone/packages/ui/src/app/dependencies/utils.ts +194 -0
- package/.next/standalone/packages/ui/src/app/page.tsx +24 -0
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/context/page.tsx +41 -0
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/dependencies/page.tsx +43 -0
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/page.tsx +18 -2
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/stats/page.tsx +24 -0
- package/.next/standalone/packages/ui/src/app/projects/layout.tsx +7 -0
- package/.next/standalone/packages/ui/src/app/projects/page.tsx +167 -20
- package/.next/standalone/packages/ui/src/app/specs/specs-client.tsx +27 -17
- package/.next/standalone/packages/ui/src/components/color-picker.tsx +73 -0
- package/.next/standalone/packages/ui/src/components/context-file-detail.tsx +308 -0
- package/.next/standalone/packages/ui/src/components/context-file-viewer.tsx +96 -2
- package/.next/standalone/packages/ui/src/components/create-project-dialog.tsx +3 -5
- package/.next/standalone/packages/ui/src/components/directory-picker.tsx +1 -0
- package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +31 -6
- package/.next/standalone/packages/ui/src/components/markdown-link.tsx +15 -8
- package/.next/standalone/packages/ui/src/components/project-switcher.tsx +24 -5
- package/.next/standalone/packages/ui/src/components/quick-search.tsx +3 -1
- package/.next/standalone/packages/ui/src/components/spec-dependency-graph.tsx +13 -52
- package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +36 -11
- package/.next/standalone/packages/ui/src/components/spec-detail-wrapper.tsx +3 -4
- package/.next/standalone/packages/ui/src/components/specs-nav-sidebar.tsx +8 -6
- package/.next/standalone/packages/ui/src/contexts/project-context.tsx +24 -0
- package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +85 -31
- package/.next/standalone/packages/ui/src/lib/dependency-graph.ts +0 -13
- package/.next/standalone/packages/ui/src/types/specs.ts +6 -4
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/.next/static/chunks/04de9ed512b8098b.js +10 -0
- package/.next/static/chunks/1e0689744f87e958.js +2 -0
- package/.next/static/chunks/3d12a8c3152b526d.js +3 -0
- package/.next/static/chunks/4610aea3ca2e69eb.js +2 -0
- package/.next/static/chunks/46275d9d67603bf5.js +1 -0
- package/.next/static/chunks/7931c6cb379305b1.js +1 -0
- package/.next/static/chunks/7a00633903e066b4.js +1 -0
- package/.next/static/chunks/{942cf63b4032c808.js → 7df6308e6cfcf902.js} +1 -1
- package/.next/static/chunks/7f9a218732be8099.js +5 -0
- package/.next/static/chunks/840c6743a491a398.js +1 -0
- package/.next/static/chunks/8a6e8f3394240dbb.js +1 -0
- package/.next/static/chunks/8d8c106c6848d15b.js +1 -0
- package/.next/static/chunks/a5e25b9fa6b88eee.js +1 -0
- package/.next/static/chunks/a640b005f2e15d98.js +1 -0
- package/.next/static/chunks/a7075a240adea8e8.js +1 -0
- package/.next/static/chunks/b53250480fde6816.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/794f3931f1ca12d2.js → static/chunks/bbd498aa5689c057.js} +1 -1
- package/.next/static/chunks/c26909a25ca9fc9b.js +1 -0
- package/.next/static/chunks/c658e22a605e0ed1.js +1 -0
- package/.next/static/chunks/c92660d8d0c4763d.js +1 -0
- package/.next/static/chunks/{e3bc96a996e2a314.js → d26f4109b44eb240.js} +1 -1
- package/.next/static/chunks/{3276ca6fd9005903.js → d52a048b511c32bd.js} +1 -1
- package/.next/static/chunks/ddb2935cfe5310c7.css +1 -0
- package/.next/static/chunks/e399b4afc7936907.js +1 -0
- package/.next/static/chunks/f924ae32752e1583.js +1 -0
- package/.next/static/chunks/ff11efb770d5a0bc.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/turbopack-5fa55215af0efb15.js → static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
- package/package.json +4 -2
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65667b70._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__675a763e._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8233e09b._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__aa677b0d._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__ae726e9c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bdc3963a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f06435b0._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f5c6d6b8._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__fb91986f._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_db_index_ts_556307fa._.js +0 -74
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_0bd881ee._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__01bfc8ff._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__12b4eb41._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__4ec37765._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__50122e7e._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__6e739186._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__88a691ee._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a4c56419._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b6632d78._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__bdbbba01._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__cc589a54._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daee3355._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ead1539c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_315f3b3a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_3b617676._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_9dcf102b._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ac867463._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b397e94a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_3ba1438c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8272a49c._.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/1eb8283995f370c6.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/20f4141ccb5d4eb4.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/2c85b8059e42248a.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/336e8e8fc6b0fba8.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/37a1236ed50645a6.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/3b6b058ebd14dbed.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/9d84ba08a41145ec.js +0 -5
- package/.next/standalone/packages/ui/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/c4b1faff3361a749.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/d7420d2a867e57b5.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/dae403679aae65f4.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/efded9da04c960d8.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/f382932f1a5d6359.js +0 -10
- package/.next/standalone/packages/ui/.next/static/chunks/f43b6e43b4da1a32.css +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/f6dd06e6d22d2d12.js +0 -3
- package/.next/standalone/packages/ui/dist/BUILD_ID +0 -1
- package/.next/standalone/packages/ui/dist/public/f864aa7e7061c0600e35cf3d879b27cf.txt +0 -1
- package/.next/standalone/packages/ui/dist/public/favicon.ico +0 -0
- package/.next/standalone/packages/ui/dist/public/file.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/github-mark-white.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/github-mark.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/globe.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/icon.svg +0 -7
- package/.next/standalone/packages/ui/dist/public/logo-dark-bg.svg +0 -17
- package/.next/standalone/packages/ui/dist/public/logo-with-bg.svg +0 -17
- package/.next/standalone/packages/ui/dist/public/logo.svg +0 -17
- package/.next/standalone/packages/ui/dist/public/next.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/vercel.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/window.svg +0 -1
- package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +0 -196
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +0 -75
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +0 -44
- package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +0 -175
- package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +0 -317
- package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +0 -261
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +0 -380
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +0 -230
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +0 -285
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +0 -358
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +0 -303
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +0 -368
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +0 -327
- package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +0 -117
- package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +0 -73
- package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +0 -109
- package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +0 -107
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +0 -244
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +0 -429
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +0 -302
- package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +0 -158
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +0 -359
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +0 -86
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +0 -437
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +0 -365
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +0 -203
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +0 -174
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +0 -156
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +0 -183
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +0 -229
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +0 -243
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +0 -217
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +0 -166
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +0 -126
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +0 -108
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +0 -382
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +0 -144
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +0 -146
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +0 -208
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +0 -182
- package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +0 -314
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +0 -113
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +0 -237
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +0 -149
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +0 -175
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +0 -254
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +0 -376
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +0 -240
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +0 -175
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +0 -374
- package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +0 -339
- package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +0 -128
- package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +0 -97
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +0 -93
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +0 -146
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +0 -175
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +0 -397
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +0 -342
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +0 -44
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +0 -150
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +0 -351
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +0 -238
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +0 -280
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +0 -372
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +0 -466
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +0 -178
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +0 -174
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +0 -295
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +0 -487
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +0 -241
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +0 -279
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +0 -642
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +0 -125
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +0 -286
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +0 -392
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +0 -1002
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +0 -411
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +0 -812
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +0 -504
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +0 -724
- package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +0 -125
- package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +0 -299
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +0 -174
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +0 -265
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +0 -36
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +0 -243
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +0 -82
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +0 -338
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +0 -354
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +0 -189
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +0 -119
- package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +0 -170
- package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +0 -158
- package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +0 -842
- package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +0 -358
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +0 -444
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +0 -357
- package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +0 -551
- package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +0 -372
- package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +0 -489
- package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +0 -285
- package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +0 -323
- package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +0 -136
- package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +0 -399
- package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +0 -301
- package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +0 -235
- package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +0 -303
- package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +0 -196
- package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +0 -388
- package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +0 -824
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +0 -111
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +0 -69
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +0 -77
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +0 -184
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +0 -496
- package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +0 -490
- package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +0 -389
- package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +0 -920
- package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +0 -146
- package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +0 -607
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +0 -104
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +0 -124
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +0 -129
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +0 -244
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +0 -148
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +0 -54
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +0 -37
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +0 -60
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +0 -113
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +0 -69
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +0 -112
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +0 -229
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +0 -406
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +0 -168
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +0 -174
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +0 -212
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +0 -249
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +0 -60
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +0 -139
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +0 -722
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +0 -413
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +0 -255
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +0 -252
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +0 -253
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +0 -612
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +0 -794
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +0 -834
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +0 -255
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +0 -454
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +0 -172
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +0 -152
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +0 -95
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +0 -87
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +0 -230
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +0 -89
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +0 -89
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +0 -166
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +0 -276
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +0 -122
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +0 -198
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +0 -192
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +0 -171
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +0 -200
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +0 -317
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +0 -276
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +0 -241
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +0 -139
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +0 -328
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +0 -400
- package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +0 -3
- package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +0 -5
- package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +0 -4
- package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +0 -2
- package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +0 -19
- package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +0 -3
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_buildManifest.js +0 -11
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_clientMiddlewareManifest.json +0 -1
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_ssgManifest.js +0 -1
- package/.next/static/chunks/1eb8283995f370c6.js +0 -1
- package/.next/static/chunks/20f4141ccb5d4eb4.js +0 -1
- package/.next/static/chunks/2c85b8059e42248a.js +0 -1
- package/.next/static/chunks/336e8e8fc6b0fba8.js +0 -1
- package/.next/static/chunks/37a1236ed50645a6.js +0 -1
- package/.next/static/chunks/3b6b058ebd14dbed.js +0 -1
- package/.next/static/chunks/9d84ba08a41145ec.js +0 -5
- package/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
- package/.next/static/chunks/c4b1faff3361a749.js +0 -1
- package/.next/static/chunks/d7420d2a867e57b5.js +0 -1
- package/.next/static/chunks/dae403679aae65f4.js +0 -1
- package/.next/static/chunks/efded9da04c960d8.js +0 -1
- package/.next/static/chunks/f382932f1a5d6359.js +0 -10
- package/.next/static/chunks/f43b6e43b4da1a32.css +0 -1
- package/.next/static/chunks/f6dd06e6d22d2d12.js +0 -3
- /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → T8X9UGfigRL0qWZiBHNjy}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → T8X9UGfigRL0qWZiBHNjy}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → T8X9UGfigRL0qWZiBHNjy}/_ssgManifest.js +0 -0
- /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/T8X9UGfigRL0qWZiBHNjy}/_buildManifest.js +0 -0
- /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/T8X9UGfigRL0qWZiBHNjy}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/T8X9UGfigRL0qWZiBHNjy}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
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"))},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"))},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"))},84347,e=>{"use strict";var t=e.i(912714),r=e.i(750227),a=e.i(666680),i=e.i(660526),s=e.i(481347);let o=r.join((0,i.homedir)(),".lean-spec","projects.yaml"),n=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(o);await t.mkdir(e,{recursive:!0});let a=await t.readFile(o,"utf-8"),i=s.default.load(a),n=(i.projects||[]).map(e=>({...e,lastAccessed:e.lastAccessed?new Date(e.lastAccessed):new Date}));this.config={projects:n,recentProjects:i.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(o);await t.mkdir(e,{recursive:!0});let a={projects:this.config.projects.map(e=>({...e,lastAccessed:e.lastAccessed.toISOString()})),recentProjects:this.config.recentProjects},i=s.default.dump(a,{indent:2,lineWidth:100});await t.writeFile(o,i,"utf-8")}async validateProject(e){try{let a,i,o=r.resolve(e);if(!(await t.stat(o)).isDirectory())return{isValid:!1,path:o,error:"Path is not a directory"};let n=r.join(o,".lean-spec"),c=r.join(o,"specs");try{await t.access(n);let e=r.join(n,"../specs");try{await t.access(e),a=e}catch{a=c}}catch{try{await t.access(c),a=c}catch{return{isValid:!1,path:o,error:"No .lean-spec directory or specs directory found"}}}let l=r.basename(o);try{let e=r.join(o,"leanspec.yaml"),a=await t.readFile(e,"utf-8"),n=s.default.load(a);n.name&&(l=n.name),n.description&&(i=n.description)}catch{try{let e=r.join(o,"package.json"),a=await t.readFile(e,"utf-8"),s=JSON.parse(a);s.name&&(l=s.name),s.description&&(i=s.description)}catch{}}return{isValid:!0,path:o,specsDir:r.resolve(a),name:l,description:i}}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(),i=this.generateProjectId(r.path),s=a.projects.findIndex(e=>e.id===i),o={id:i,name:r.name,path:r.path,specsDir:r.specsDir,lastAccessed:new Date,favorite:t?.favorite||!1,color:t?.color,description:r.description};return s>=0?a.projects[s]=o:a.projects.push(o),this.updateRecentProjects(a,i),await this.saveConfig(),o}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:i}=r.parse(a);for(;;){let e=r.join(a,".lean-spec");try{return await t.access(e),a}catch{}if(a===i)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 i=[],s=this;async function o(e,n){if(!(n>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 s.validateProject(t);c.isValid?i.push(c):await o(t,n+1)}}catch(e){}}return await o(e,0),i}async listDirectory(e=(0,i.homedir)()){try{let a=r.resolve(e),i=(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)),s=r.dirname(a);return s!==a&&i.unshift({name:"..",path:s,isDirectory:!0}),i}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,n])},149601,e=>{"use strict";var t=e.i(706169),r=e.i(825864),a=e.i(71648),i=e.i(630064),s=e.i(674222),o=e.i(602043),n=e.i(671408),c=e.i(326527),l=e.i(130592),d=e.i(334639),p=e.i(388935),u=e.i(868515),h=e.i(187166),f=e.i(376718),j=e.i(976529),g=e.i(451151),v=e.i(193695);e.i(859704);var w=e.i(708259),m=e.i(931511),y=e.i(84347);async function x(e,{params:t}){try{if("multi-project"!==process.env.SPECS_MODE)return m.NextResponse.json({error:"Multi-project mode is not enabled"},{status:400});let{id:e}=await t,r=await y.projectRegistry.getProject(e);if(!r)return m.NextResponse.json({error:"Project not found"},{status:404});let a=await y.projectRegistry.validateProject(r.path);return m.NextResponse.json({projectId:e,path:r.path,validation:{isValid:a.isValid,error:a.error,specsDir:a.specsDir}})}catch(e){return console.error("Error validating project:",e),m.NextResponse.json({error:"Failed to validate project"},{status:500})}}e.s(["POST",()=>x],964319);var R=e.i(964319);let P=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/projects/[id]/validate/route",pathname:"/api/projects/[id]/validate",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/projects/[id]/validate/route.ts",nextConfigOutput:"standalone",userland:R}),{workAsyncStorage:C,workUnitAsyncStorage:E,serverHooks:A}=P;function b(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:E})}async function N(e,t,a){P.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/projects/[id]/validate/route";m=m.replace(/\/index$/,"")||"/";let y=await P.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:x,params:R,nextConfig:C,parsedUrl:E,isDraftMode:A,prerenderManifest:b,routerServerContext:N,isOnDemandRevalidate:D,revalidateOnlyGenerated:T,resolvedPathname:k,clientReferenceManifest:O,serverActionsManifest:S}=y,q=(0,c.normalizeAppPath)(m),_=!!(b.dynamicRoutes[q]||b.routes[k]),I=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,E,!1):t.end("This page could not be found"),null);if(_&&!A){let e=!!b.routes[k],t=b.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await I();throw new v.NoFallbackError}}let F=null;!_||P.isDev||A||(F="/index"===(F=k)?"/":F);let H=!0===P.isDev||!_,M=_&&!H;S&&O&&(0,o.setReferenceManifestsSingleton)({page:m,clientReferenceManifest:O,serverActionsManifest:S,serverModuleMap:(0,n.createServerModuleMap)({serverActionsManifest:S})});let U=e.method||"GET",V=(0,s.getTracer)(),$=V.getActiveScopeSpan(),K={params:R,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,i.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a)=>P.onRequestError(e,t,a,N)},sharedContext:{buildId:x}},B=new l.NodeNextRequest(e),L=new l.NodeNextResponse(t),W=d.NextRequestAdapter.fromNodeNextRequest(B,(0,d.signalFromNodeResponse)(t));try{let o=async e=>P.handle(W,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=V.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}`)}),n=!!(0,i.getRequestMeta)(e,"minimalMode"),c=async i=>{var s,c;let l=async({previousCacheEntry:r})=>{try{if(!n&&D&&T&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(i);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(!_)return await (0,h.sendResponse)(B,L,s,K.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[g.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>=g.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await P.onRequestError(e,t,{routerKind:"App Router",routePath:m,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:D})},N),t}},d=await P.handleResponse({req:e,nextConfig:C,cacheKey:F,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:T,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:n});if(!_)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==w.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});n||t.setHeader("x-nextjs-cache",D?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return n&&_||p.delete(g.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,h.sendResponse)(B,L,new Response(d.value.body,{headers:p,status:d.value.status||200})),null};$?await c($):await V.withPropagatedContext(e.headers,()=>V.trace(p.BaseServerSpan.handleRequest,{spanName:`${U} ${m}`,kind:s.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},c))}catch(t){if(t instanceof v.NoFallbackError||await P.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:D})}),_)throw t;return await (0,h.sendResponse)(B,L,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>b,"routeModule",()=>P,"serverHooks",()=>A,"workAsyncStorage",()=>C,"workUnitAsyncStorage",()=>E],149601)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__1706515f._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
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 s=[{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"}],o={iconName:"FileText",color:"text-gray-600"};var i=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 d(e){let t=e.replace(/^specs\//,"").replace(/\/README\.md$/,"");return(0,n.join)(p(),t)}function u(e){try{var t;let r=(0,n.join)(e,"README.md"),s=(0,i.readFileSync)(r,"utf-8"),{data:o}=(0,a.default)(s);return{dependsOn:(t=o?.depends_on??o?.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 h(e){return{...e,tags:e.tags?"string"==typeof e.tags?JSON.parse(e.tags):e.tags:null}}async function f(e){return(await t.specsService.getAllSpecs(e)).map(e=>l(h(e)))}async function m(e){let r=await t.specsService.getAllSpecs(e);if(e)return r.map(e=>({...l(h(e)),subSpecsCount:0,relationships:{dependsOn:[],requiredBy:[]}}));let a=new Map;for(let e of r){let{dependsOn:t}=u(d(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,i.existsSync)(e))return 0;let t=(0,i.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,i.statSync)(t).isFile()&&r++}catch{}}return r}catch{return 0}}(d(e.filePath)),r=a.get(e.specName)||{dependsOn:[],requiredBy:[]};return{...l(h(e)),subSpecsCount:t,relationships:r}})}async function g(e,i){let l=await t.specsService.getSpec(e,i);if(!l)return null;let c=h(l);if(!i){let e=d(l.filePath),i=function(e){let t=[];if(!(0,r.existsSync)(e))return t;try{for(let i of(0,r.readdirSync)(e)){if("README.md"===i||!i.endsWith(".md"))continue;let l=(0,n.join)(e,i);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 s)if(e.test(t))return{iconName:r,color:n};return o}(i);t.push({name:i.replace(/\.md$/i,"").split(/[-_]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" "),file:i,iconName:c.iconName,color:c.color,content:n})}catch(e){console.error(`Error reading sub-spec ${i}:`,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}=u(e),h=await t.specsService.getAllSpecs(),f=[];for(let e of h)e.specName!==l.specName&&u(d(e.filePath)).dependsOn.includes(l.specName)&&f.push(e.specName);return{...c,subSpecs:i,relationships:{dependsOn:p,requiredBy:f}}}return c}async function y(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 s=n.get("complete")||0,o=r.length>0?s/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*o)/10}}function x(){let e=p();return(0,n.dirname)(e)}function v(e,t){try{let r;if(!(0,i.existsSync)(e))return null;let n=(0,i.statSync)(e),a=(0,i.readFileSync)(e,"utf-8"),s=e.replace(t+"/","");return{name:s.split("/").pop()||s,path:s,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 S(e){let t=e||x(),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 s=(0,n.join)(t,"docs","agents");if((0,i.existsSync)(s))try{for(let e of(0,i.readdirSync)(s))if(e.endsWith(".md")){let a=v((0,n.join)(s,e),t);a&&r.push(a)}}catch{}return r}async function R(e){let t=e||x(),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||x(),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 N(e){let t=e||x(),[r,n,a]=await Promise.all([S(t),R(t),w(t)]),s=0;for(let e of r)s+=e.tokenCount;for(let e of(n.file&&(s+=n.file.tokenCount),a))s+=e.tokenCount;return{agentInstructions:r,config:n,projectDocs:a,totalTokens:s,projectRoot:t}}e.s(["getProjectContext",()=>N,"getSpecById",()=>g,"getSpecs",()=>f,"getSpecsWithMetadata",()=>m,"getStats",()=>y],568239)},733368,e=>{"use strict";var t=e.i(706169),r=e.i(825864),n=e.i(71648),a=e.i(630064),s=e.i(674222),o=e.i(602043),i=e.i(671408),l=e.i(326527),c=e.i(130592),p=e.i(334639),d=e.i(388935),u=e.i(868515),h=e.i(187166),f=e.i(376718),m=e.i(976529),g=e.i(451151),y=e.i(193695);e.i(859704);var x=e.i(708259),v=e.i(931511),S=e.i(568239);class R{graph;specs;constructor(e){this.graph=new Map,this.specs=new Map,this.buildGraph(e)}buildGraph(e){for(let t of e)this.specs.set(t.path,t),this.graph.set(t.path,{dependsOn:new Set(t.frontmatter.depends_on||[]),requiredBy:new Set});for(let[e,t]of this.graph.entries())for(let r of t.dependsOn){let t=this.graph.get(r);t&&t.requiredBy.add(e)}}getCompleteGraph(e){let t=this.specs.get(e);if(!t)throw Error(`Spec not found: ${e}`);let r=this.graph.get(e);if(!r)throw Error(`Graph node not found: ${e}`);return{current:t,dependsOn:this.getSpecsByPaths(Array.from(r.dependsOn)),requiredBy:this.getSpecsByPaths(Array.from(r.requiredBy))}}getSpecsByPaths(e){return e.map(e=>this.specs.get(e)).filter(e=>void 0!==e)}}var w=e.i(902157),N=e.i(750227),E=e.i(392194);async function C(e,{params:t}){try{let{id:e}=await t,r=await (0,S.getSpecById)(e);if(!r)return v.NextResponse.json({error:"Spec not found"},{status:404});let n=(0,N.join)(process.cwd(),"../../specs"),a=function(e){let t=[];try{for(let r of(0,w.readdirSync)(e)){let n=(0,N.join)(e,r);if((0,w.statSync)(n).isDirectory()&&"archived"!==r&&/^\d{2,}-/.test(r))try{let e=(0,N.join)(n,"README.md"),a=(0,w.readFileSync)(e,"utf-8"),{data:s}=(0,E.default)(a);if(!s||!s.status)continue;let o={status:s.status||"planned",created:s.created_at||s.created||new Date().toISOString().split("T")[0]};s.depends_on?o.depends_on=Array.isArray(s.depends_on)?s.depends_on:[s.depends_on]:o.depends_on=[],s.priority&&(o.priority=s.priority),s.tags&&(o.tags=s.tags),s.assignee&&(o.assignee=s.assignee),t.push({path:r,fullPath:n,filePath:e,name:r,frontmatter:o})}catch(e){console.warn(`Failed to parse spec ${r}:`,e)}}}catch(e){console.error("Failed to load specs:",e)}return t}(n),s=new R(a).getCompleteGraph(r.specName),o=e=>{let t=e.match(/^(\d+)/);return t?parseInt(t[1],10):null},i=e=>{let t=e.split("-");return t.length>1?t.slice(1).join("-").replace(/-/g," "):e},l={current:{id:r.id,specNumber:r.specNumber,specName:r.specName,title:r.title,status:r.status,priority:r.priority},dependsOn:s.dependsOn.map(e=>({specNumber:o(e.name),specName:e.name,title:i(e.name),status:e.frontmatter.status,priority:e.frontmatter.priority})),requiredBy:s.requiredBy.map(e=>({specNumber:o(e.name),specName:e.name,title:i(e.name),status:e.frontmatter.status,priority:e.frontmatter.priority}))};return v.NextResponse.json(l,{headers:{"Cache-Control":"public, s-maxage=60, stale-while-revalidate=120"}})}catch(e){return console.error("Error fetching dependency graph:",e),v.NextResponse.json({error:"Failed to fetch dependency graph"},{status:500})}}e.s(["GET",()=>C],515671);var A=e.i(515671);let b=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/specs/[id]/dependency-graph/route",pathname:"/api/specs/[id]/dependency-graph",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/specs/[id]/dependency-graph/route.ts",nextConfigOutput:"standalone",userland:A}),{workAsyncStorage:q,workUnitAsyncStorage:_,serverHooks:O}=b;function P(){return(0,n.patchFetch)({workAsyncStorage:q,workUnitAsyncStorage:_})}async function j(e,t,n){b.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/specs/[id]/dependency-graph/route";v=v.replace(/\/index$/,"")||"/";let S=await b.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:R,params:w,nextConfig:N,parsedUrl:E,isDraftMode:C,prerenderManifest:A,routerServerContext:q,isOnDemandRevalidate:_,revalidateOnlyGenerated:O,resolvedPathname:P,clientReferenceManifest:j,serverActionsManifest:T}=S,k=(0,l.normalizeAppPath)(v),M=!!(A.dynamicRoutes[k]||A.routes[P]),B=async()=>((null==q?void 0:q.render404)?await q.render404(e,t,E,!1):t.end("This page could not be found"),null);if(M&&!C){let e=!!A.routes[P],t=A.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(N.experimental.adapterPath)return await B();throw new y.NoFallbackError}}let I=null;!M||b.isDev||C||(I="/index"===(I=P)?"/":I);let D=!0===b.isDev||!M,U=M&&!D;T&&j&&(0,o.setReferenceManifestsSingleton)({page:v,clientReferenceManifest:j,serverActionsManifest:T,serverModuleMap:(0,i.createServerModuleMap)({serverActionsManifest:T})});let F=e.method||"GET",H=(0,s.getTracer)(),$=H.getActiveScopeSpan(),G={params:w,prerenderManifest:A,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)=>b.onRequestError(e,t,n,q)},sharedContext:{buildId:R}},L=new c.NodeNextRequest(e),W=new c.NodeNextResponse(t),K=p.NextRequestAdapter.fromNodeNextRequest(L,(0,p.signalFromNodeResponse)(t));try{let o=async e=>b.handle(K,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.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=`${F} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${F} ${v}`)}),i=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var s,l;let c=async({previousCacheEntry:r})=>{try{if(!i&&_&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(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,h.sendResponse)(L,W,s,G.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.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:x.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:_})},q),t}},p=await b.handleResponse({req:e,nextConfig:N,cacheKey:I,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:O,responseGenerator:c,waitUntil:n.waitUntil,isMinimalMode:i});if(!M)return null;if((null==p||null==(s=p.value)?void 0:s.kind)!==x.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});i||t.setHeader("x-nextjs-cache",_?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,f.fromNodeOutgoingHttpHeaders)(p.value.headers);return i&&M||d.delete(g.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,m.getCacheControlHeader)(p.cacheControl)),await (0,h.sendResponse)(L,W,new Response(p.value.body,{headers:d,status:p.value.status||200})),null};$?await l($):await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},l))}catch(t){if(t instanceof y.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:_})}),M)throw t;return await (0,h.sendResponse)(L,W,new Response(null,{status:500})),null}}e.s(["handler",()=>j,"patchFetch",()=>P,"routeModule",()=>b,"serverHooks",()=>O,"workAsyncStorage",()=>q,"workUnitAsyncStorage",()=>_],733368)},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__18aca702._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
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 i=[{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"}],o={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 d(e){let t=e.replace(/^specs\//,"").replace(/\/README\.md$/,"");return(0,n.join)(p(),t)}function u(e){try{var t;let r=(0,n.join)(e,"README.md"),i=(0,s.readFileSync)(r,"utf-8"),{data:o}=(0,a.default)(i);return{dependsOn:(t=o?.depends_on??o?.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}=u(d(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}}(d(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=d(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 i)if(e.test(t))return{iconName:r,color:n};return o}(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}=u(e),f=await t.specsService.getAllSpecs(),h=[];for(let e of f)e.specName!==l.specName&&u(d(e.filePath)).dependsOn.includes(l.specName)&&h.push(e.specName);return{...c,subSpecs:s,relationships:{dependsOn:p,requiredBy:h}}}return c}async function y(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 i=n.get("complete")||0,o=r.length>0?i/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*o)/10}}function x(){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"),i=e.replace(t+"/","");return{name:i.split("/").pop()||i,path:i,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||x(),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 i=(0,n.join)(t,"docs","agents");if((0,s.existsSync)(i))try{for(let e of(0,s.readdirSync)(i))if(e.endsWith(".md")){let a=v((0,n.join)(i,e),t);a&&r.push(a)}}catch{}return r}async function E(e){let t=e||x(),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||x(),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 N(e){let t=e||x(),[r,n,a]=await Promise.all([R(t),E(t),S(t)]),i=0;for(let e of r)i+=e.tokenCount;for(let e of(n.file&&(i+=n.file.tokenCount),a))i+=e.tokenCount;return{agentInstructions:r,config:n,projectDocs:a,totalTokens:i,projectRoot:t}}e.s(["getProjectContext",()=>N,"getSpecById",()=>g,"getSpecs",()=>h,"getSpecsWithMetadata",()=>m,"getStats",()=>y],568239)},953552,e=>{"use strict";var t=e.i(706169),r=e.i(825864),n=e.i(71648),a=e.i(630064),i=e.i(674222),o=e.i(602043),s=e.i(671408),l=e.i(326527),c=e.i(130592),p=e.i(334639),d=e.i(388935),u=e.i(868515),f=e.i(187166),h=e.i(376718),m=e.i(976529),g=e.i(451151),y=e.i(193695);e.i(859704);var x=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.getSpecsWithMetadata)(e),n=r.filter(e=>null!==e.specNumber).map(e=>({id:e.id,name:e.title||e.specName||`Spec ${e.specNumber}`,number:e.specNumber,status:e.status||"planned",priority:e.priority||"medium",tags:e.tags||[]})),a=[],i=new Map;return r.forEach(e=>{if(null!==e.specNumber){let t=e.filePath.replace(/^specs\//,"").replace(/\/README\.md$/,"");i.set(t,e.id);let r=e.specNumber.toString().padStart(3,"0");i.set(r,e.id),i.set(e.specNumber.toString(),e.id)}}),r.forEach(e=>{e.specNumber&&e.relationships.dependsOn.forEach(t=>{let r=t.trim(),n=r.match(/^(\d+)/),o=n?i.get(n[1])||i.get(n[1].padStart(3,"0")):i.get(r);o&&o!==e.id&&a.push({source:o,target:e.id,type:"dependsOn"})})}),v.NextResponse.json({nodes:n,edges:a})}catch(e){return console.error("Error fetching dependency graph:",e),v.NextResponse.json({error:"Failed to fetch dependency graph"},{status:500})}}e.s(["GET",()=>E],344159);var S=e.i(344159);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/projects/[id]/dependencies/route",pathname:"/api/projects/[id]/dependencies",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/projects/[id]/dependencies/route.ts",nextConfigOutput:"standalone",userland:S}),{workAsyncStorage:w,workUnitAsyncStorage:C,serverHooks:b}=N;function A(){return(0,n.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:C})}async function q(e,t,n){N.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/projects/[id]/dependencies/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:S,nextConfig:w,parsedUrl:C,isDraftMode:b,prerenderManifest:A,routerServerContext:q,isOnDemandRevalidate:j,revalidateOnlyGenerated:O,resolvedPathname:P,clientReferenceManifest:T,serverActionsManifest:_}=R,k=(0,l.normalizeAppPath)(v),M=!!(A.dynamicRoutes[k]||A.routes[P]),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&&!b){let e=!!A.routes[P],t=A.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(w.experimental.adapterPath)return await I();throw new y.NoFallbackError}}let U=null;!M||N.isDev||b||(U="/index"===(U=P)?"/":U);let D=!0===N.isDev||!M,H=M&&!D;_&&T&&(0,o.setReferenceManifestsSingleton)({page:v,clientReferenceManifest:T,serverActionsManifest:_,serverModuleMap:(0,s.createServerModuleMap)({serverActionsManifest:_})});let B=e.method||"GET",F=(0,i.getTracer)(),$=F.getActiveScopeSpan(),G={params:S,prerenderManifest:A,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:w.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n)=>N.onRequestError(e,t,n,q)},sharedContext:{buildId:E}},W=new c.NodeNextRequest(e),L=new c.NodeNextResponse(t),K=p.NextRequestAdapter.fromNodeNextRequest(W,(0,p.signalFromNodeResponse)(t));try{let o=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")!==d.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 i,l;let c=async({previousCacheEntry:r})=>{try{if(!s&&j&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await o(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)(W,L,i,G.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.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:x.CachedRouteKind.APP_ROUTE,status:i.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,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:j})},q),t}},p=await N.handleResponse({req:e,nextConfig:w,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:j,revalidateOnlyGenerated:O,responseGenerator:c,waitUntil:n.waitUntil,isMinimalMode:s});if(!M)return null;if((null==p||null==(i=p.value)?void 0:i.kind)!==x.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"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(p.value.headers);return s&&M||d.delete(g.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,m.getCacheControlHeader)(p.cacheControl)),await (0,f.sendResponse)(W,L,new Response(p.value.body,{headers:d,status:p.value.status||200})),null};$?await l($):await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${B} ${v}`,kind:i.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},l))}catch(t){if(t instanceof y.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:j})}),M)throw t;return await (0,f.sendResponse)(W,L,new Response(null,{status:500})),null}}e.s(["handler",()=>q,"patchFetch",()=>A,"routeModule",()=>N,"serverHooks",()=>b,"workAsyncStorage",()=>w,"workUnitAsyncStorage",()=>C],953552)},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__27348781._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
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"}],s={iconName:"FileText",color:"text-gray-600"};var i=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,i.readFileSync)(r,"utf-8"),{data:s}=(0,a.default)(o);return{dependsOn:(t=s?.depends_on??s?.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,i.existsSync)(e))return 0;let t=(0,i.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,i.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,i){let l=await t.specsService.getSpec(e,i);if(!l)return null;let c=f(l);if(!i){let e=u(l.filePath),i=function(e){let t=[];if(!(0,r.existsSync)(e))return t;try{for(let i of(0,r.readdirSync)(e)){if("README.md"===i||!i.endsWith(".md"))continue;let l=(0,n.join)(e,i);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 s}(i);t.push({name:i.replace(/\.md$/i,"").split(/[-_]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" "),file:i,iconName:c.iconName,color:c.color,content:n})}catch(e){console.error(`Error reading sub-spec ${i}:`,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:i,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,s=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*s)/10}}function y(){let e=p();return(0,n.dirname)(e)}function v(e,t){try{let r;if(!(0,i.existsSync)(e))return null;let n=(0,i.statSync)(e),a=(0,i.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,i.existsSync)(o))try{for(let e of(0,i.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)},946848,e=>{"use strict";var t=e.i(706169),r=e.i(825864),n=e.i(71648),a=e.i(630064),o=e.i(674222),s=e.i(602043),i=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,spec:r}=await t,n=process.env.SPECS_MODE||"filesystem",a=await (0,R.getSpecById)(r,"multi-project"===n?e:void 0);if(!a)return v.NextResponse.json({error:"Spec not found"},{status:404});return v.NextResponse.json({spec:a})}catch(e){return console.error("Error fetching spec:",e),v.NextResponse.json({error:"Failed to fetch spec"},{status:500})}}e.s(["GET",()=>E],546222);var S=e.i(546222);let w=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/projects/[id]/specs/[spec]/route",pathname:"/api/projects/[id]/specs/[spec]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/projects/[id]/specs/[spec]/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/[spec]/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,B=M&&!D;T&&O&&(0,s.setReferenceManifestsSingleton)({page:v,clientReferenceManifest:O,serverActionsManifest:T,serverModuleMap:(0,i.createServerModuleMap)({serverActionsManifest:T})});let H=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 s=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=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${v}`)}),i=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var o,l;let c=async({previousCacheEntry:r})=>{try{if(!i&&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 s(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:B,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:i});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});i||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 i&&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:`${H} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":H,"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:B,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],946848)},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__3a7f0840._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
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"}],s={iconName:"FileText",color:"text-gray-600"};var i=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,i.readFileSync)(r,"utf-8"),{data:s}=(0,a.default)(o);return{dependsOn:(t=s?.depends_on??s?.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,i.existsSync)(e))return 0;let t=(0,i.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,i.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,i){let l=await t.specsService.getSpec(e,i);if(!l)return null;let c=f(l);if(!i){let e=u(l.filePath),i=function(e){let t=[];if(!(0,r.existsSync)(e))return t;try{for(let i of(0,r.readdirSync)(e)){if("README.md"===i||!i.endsWith(".md"))continue;let l=(0,n.join)(e,i);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 s}(i);t.push({name:i.replace(/\.md$/i,"").split(/[-_]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" "),file:i,iconName:c.iconName,color:c.color,content:n})}catch(e){console.error(`Error reading sub-spec ${i}:`,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:i,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,s=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*s)/10}}function y(){let e=p();return(0,n.dirname)(e)}function v(e,t){try{let r;if(!(0,i.existsSync)(e))return null;let n=(0,i.statSync)(e),a=(0,i.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,i.existsSync)(o))try{for(let e of(0,i.readdirSync)(o))if(e.endsWith(".md")){let a=v((0,n.join)(o,e),t);a&&r.push(a)}}catch{}return r}async function S(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 E(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),S(t),E(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)},168853,e=>{"use strict";var t=e.i(706169),r=e.i(825864),n=e.i(71648),a=e.i(630064),o=e.i(674222),s=e.i(602043),i=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 S(e,{params:t}){try{let{id:e,file:r}=await t,n=await (0,R.getSpecById)(e);if(!n)return v.NextResponse.json({error:"Spec not found"},{status:404});let a=n.subSpecs?.find(e=>e.file===r);if(!a)return v.NextResponse.json({error:"Sub-spec not found"},{status:404});return v.NextResponse.json({subSpec:a},{headers:{"Cache-Control":"public, s-maxage=60, stale-while-revalidate=120"}})}catch(e){return console.error("Error fetching sub-spec:",e),v.NextResponse.json({error:"Failed to fetch sub-spec"},{status:500})}}e.s(["GET",()=>S],181681);var E=e.i(181681);let w=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/specs/[id]/subspecs/[file]/route",pathname:"/api/specs/[id]/subspecs/[file]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/specs/[id]/subspecs/[file]/route.ts",nextConfigOutput:"standalone",userland:E}),{workAsyncStorage:N,workUnitAsyncStorage:C,serverHooks:b}=w;function A(){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/specs/[id]/subspecs/[file]/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:S,params:E,nextConfig:N,parsedUrl:C,isDraftMode:b,prerenderManifest:A,routerServerContext:q,isOnDemandRevalidate:j,revalidateOnlyGenerated:P,resolvedPathname:T,clientReferenceManifest:_,serverActionsManifest:k}=R,O=(0,l.normalizeAppPath)(v),M=!!(A.dynamicRoutes[O]||A.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&&!b){let e=!!A.routes[T],t=A.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||b||(U="/index"===(U=T)?"/":U);let D=!0===w.isDev||!M,B=M&&!D;k&&_&&(0,s.setReferenceManifestsSingleton)({page:v,clientReferenceManifest:_,serverActionsManifest:k,serverModuleMap:(0,i.createServerModuleMap)({serverActionsManifest:k})});let H=e.method||"GET",F=(0,o.getTracer)(),$=F.getActiveScopeSpan(),G={params:E,prerenderManifest:A,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:S}},L=new c.NodeNextRequest(e),W=new c.NodeNextResponse(t),K=p.NextRequestAdapter.fromNodeNextRequest(L,(0,p.signalFromNodeResponse)(t));try{let s=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=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${v}`)}),i=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var o,l;let c=async({previousCacheEntry:r})=>{try{if(!i&&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 s(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:B,isOnDemandRevalidate:j})},q),t}},p=await w.handleResponse({req:e,nextConfig:N,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:j,revalidateOnlyGenerated:P,responseGenerator:c,waitUntil:n.waitUntil,isMinimalMode:i});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});i||t.setHeader("x-nextjs-cache",j?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(p.value.headers);return i&&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:`${H} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":H,"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:B,isOnDemandRevalidate:j})}),M)throw t;return await (0,f.sendResponse)(L,W,new Response(null,{status:500})),null}}e.s(["handler",()=>q,"patchFetch",()=>A,"routeModule",()=>w,"serverHooks",()=>b,"workAsyncStorage",()=>N,"workUnitAsyncStorage",()=>C],168853)},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__3e17db24._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
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 i=[{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"}],o={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"),i=(0,s.readFileSync)(r,"utf-8"),{data:o}=(0,a.default)(i);return{dependsOn:(t=o?.depends_on??o?.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 i)if(e.test(t))return{iconName:r,color:n};return o}(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 y(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 i=n.get("complete")||0,o=r.length>0?i/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*o)/10}}function x(){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"),i=e.replace(t+"/","");return{name:i.split("/").pop()||i,path:i,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||x(),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 i=(0,n.join)(t,"docs","agents");if((0,s.existsSync)(i))try{for(let e of(0,s.readdirSync)(i))if(e.endsWith(".md")){let a=v((0,n.join)(i,e),t);a&&r.push(a)}}catch{}return r}async function E(e){let t=e||x(),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||x(),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 N(e){let t=e||x(),[r,n,a]=await Promise.all([R(t),E(t),S(t)]),i=0;for(let e of r)i+=e.tokenCount;for(let e of(n.file&&(i+=n.file.tokenCount),a))i+=e.tokenCount;return{agentInstructions:r,config:n,projectDocs:a,totalTokens:i,projectRoot:t}}e.s(["getProjectContext",()=>N,"getSpecById",()=>g,"getSpecs",()=>h,"getSpecsWithMetadata",()=>m,"getStats",()=>y],568239)},412359,e=>{"use strict";var t=e.i(706169),r=e.i(825864),n=e.i(71648),a=e.i(630064),i=e.i(674222),o=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),y=e.i(193695);e.i(859704);var x=e.i(708259),v=e.i(931511),R=e.i(568239);async function E(){try{let e=await (0,R.getSpecsWithMetadata)(),t=e.filter(e=>null!==e.specNumber).map(e=>({id:e.id,name:e.title||e.specName||`Spec ${e.specNumber}`,number:e.specNumber,status:e.status||"planned",priority:e.priority||"medium",tags:e.tags||[]})),r=[],n=new Map;return e.forEach(e=>{if(null!==e.specNumber){let t=e.filePath.replace(/^specs\//,"").replace(/\/README\.md$/,"");n.set(t,e.id);let r=e.specNumber.toString().padStart(3,"0");n.set(r,e.id),n.set(e.specNumber.toString(),e.id)}}),e.forEach(e=>{e.specNumber&&e.relationships.dependsOn.forEach(t=>{let a=t.trim(),i=a.match(/^(\d+)/),o=i?n.get(i[1])||n.get(i[1].padStart(3,"0")):n.get(a);o&&o!==e.id&&r.push({source:o,target:e.id,type:"dependsOn"})})}),v.NextResponse.json({nodes:t,edges:r})}catch(e){return console.error("Error fetching dependency graph:",e),v.NextResponse.json({error:"Failed to fetch dependency graph"},{status:500})}}e.s(["GET",()=>E],514246);var S=e.i(514246);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/dependencies/route",pathname:"/api/dependencies",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/dependencies/route.ts",nextConfigOutput:"standalone",userland:S}),{workAsyncStorage:w,workUnitAsyncStorage:C,serverHooks:b}=N;function A(){return(0,n.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:C})}async function q(e,t,n){N.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/dependencies/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:S,nextConfig:w,parsedUrl:C,isDraftMode:b,prerenderManifest:A,routerServerContext:q,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,resolvedPathname:T,clientReferenceManifest:_,serverActionsManifest:k}=R,j=(0,l.normalizeAppPath)(v),M=!!(A.dynamicRoutes[j]||A.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&&!b){let e=!!A.routes[T],t=A.dynamicRoutes[j];if(t&&!1===t.fallback&&!e){if(w.experimental.adapterPath)return await I();throw new y.NoFallbackError}}let U=null;!M||N.isDev||b||(U="/index"===(U=T)?"/":U);let D=!0===N.isDev||!M,H=M&&!D;k&&_&&(0,o.setReferenceManifestsSingleton)({page:v,clientReferenceManifest:_,serverActionsManifest:k,serverModuleMap:(0,s.createServerModuleMap)({serverActionsManifest:k})});let B=e.method||"GET",F=(0,i.getTracer)(),$=F.getActiveScopeSpan(),G={params:S,prerenderManifest:A,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:w.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n)=>N.onRequestError(e,t,n,q)},sharedContext:{buildId:E}},W=new c.NodeNextRequest(e),L=new c.NodeNextResponse(t),K=p.NextRequestAdapter.fromNodeNextRequest(W,(0,p.signalFromNodeResponse)(t));try{let o=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 i,l;let c=async({previousCacheEntry:r})=>{try{if(!s&&O&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await o(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)(W,L,i,G.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.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:x.CachedRouteKind.APP_ROUTE,status:i.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:O})},q),t}},p=await N.handleResponse({req:e,nextConfig:w,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,responseGenerator:c,waitUntil:n.waitUntil,isMinimalMode:s});if(!M)return null;if((null==p||null==(i=p.value)?void 0:i.kind)!==x.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",O?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),b&&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)(W,L,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:i.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},l))}catch(t){if(t instanceof y.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:O})}),M)throw t;return await (0,f.sendResponse)(W,L,new Response(null,{status:500})),null}}e.s(["handler",()=>q,"patchFetch",()=>A,"routeModule",()=>N,"serverHooks",()=>b,"workAsyncStorage",()=>w,"workUnitAsyncStorage",()=>C],412359)},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__6e06fd2a._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
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"))},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"))},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"))},84347,e=>{"use strict";var t=e.i(912714),r=e.i(750227),a=e.i(666680),o=e.i(660526),s=e.i(481347);let i=r.join((0,o.homedir)(),".lean-spec","projects.yaml"),n=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(i);await t.mkdir(e,{recursive:!0});let a=await t.readFile(i,"utf-8"),o=s.default.load(a),n=(o.projects||[]).map(e=>({...e,lastAccessed:e.lastAccessed?new Date(e.lastAccessed):new Date}));this.config={projects:n,recentProjects:o.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(i);await t.mkdir(e,{recursive:!0});let a={projects:this.config.projects.map(e=>({...e,lastAccessed:e.lastAccessed.toISOString()})),recentProjects:this.config.recentProjects},o=s.default.dump(a,{indent:2,lineWidth:100});await t.writeFile(i,o,"utf-8")}async validateProject(e){try{let a,o,i=r.resolve(e);if(!(await t.stat(i)).isDirectory())return{isValid:!1,path:i,error:"Path is not a directory"};let n=r.join(i,".lean-spec"),c=r.join(i,"specs");try{await t.access(n);let e=r.join(n,"../specs");try{await t.access(e),a=e}catch{a=c}}catch{try{await t.access(c),a=c}catch{return{isValid:!1,path:i,error:"No .lean-spec directory or specs directory found"}}}let l=r.basename(i);try{let e=r.join(i,"leanspec.yaml"),a=await t.readFile(e,"utf-8"),n=s.default.load(a);n.name&&(l=n.name),n.description&&(o=n.description)}catch{try{let e=r.join(i,"package.json"),a=await t.readFile(e,"utf-8"),s=JSON.parse(a);s.name&&(l=s.name),s.description&&(o=s.description)}catch{}}return{isValid:!0,path:i,specsDir:r.resolve(a),name:l,description:o}}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(),o=this.generateProjectId(r.path),s=a.projects.findIndex(e=>e.id===o),i={id:o,name:r.name,path:r.path,specsDir:r.specsDir,lastAccessed:new Date,favorite:t?.favorite||!1,color:t?.color,description:r.description};return s>=0?a.projects[s]=i:a.projects.push(i),this.updateRecentProjects(a,o),await this.saveConfig(),i}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:o}=r.parse(a);for(;;){let e=r.join(a,".lean-spec");try{return await t.access(e),a}catch{}if(a===o)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 o=[],s=this;async function i(e,n){if(!(n>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 s.validateProject(t);c.isValid?o.push(c):await i(t,n+1)}}catch(e){}}return await i(e,0),o}async listDirectory(e=(0,o.homedir)()){try{let a=r.resolve(e),o=(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)),s=r.dirname(a);return s!==a&&o.unshift({name:"..",path:s,isDirectory:!0}),o}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,n])},5671,e=>{"use strict";var t=e.i(706169),r=e.i(825864),a=e.i(71648),o=e.i(630064),s=e.i(674222),i=e.i(602043),n=e.i(671408),c=e.i(326527),l=e.i(130592),d=e.i(334639),p=e.i(388935),u=e.i(868515),h=e.i(187166),f=e.i(376718),j=e.i(976529),g=e.i(451151),w=e.i(193695);e.i(859704);var v=e.i(708259),y=e.i(931511),m=e.i(84347);async function R(e,{params:t}){try{let{id:e}=await t,r=process.env.SPECS_MODE||"filesystem";if("multi-project"===r){let t=await m.projectRegistry.getProject(e);if(!t)return y.NextResponse.json({error:"Project not found"},{status:404});return await m.projectRegistry.touchProject(e),y.NextResponse.json({project:t})}if("local"===e){let e=process.env.SPECS_DIR||"specs";return y.NextResponse.json({project:{id:"local",displayName:"Local Project",specsDir:e,isFeatured:!0}})}return y.NextResponse.json({error:"Project not found"},{status:404})}catch(e){return console.error("Error fetching project:",e),y.NextResponse.json({error:"Failed to fetch project"},{status:500})}}async function x(e,{params:t}){try{if("multi-project"!==process.env.SPECS_MODE)return y.NextResponse.json({error:"Multi-project mode is not enabled"},{status:400});let{id:e}=await t;return await m.projectRegistry.removeProject(e),y.NextResponse.json({success:!0})}catch(e){return console.error("Error deleting project:",e),y.NextResponse.json({error:"Failed to delete project"},{status:500})}}async function P(e,{params:t}){try{if("multi-project"!==process.env.SPECS_MODE)return y.NextResponse.json({error:"Multi-project mode is not enabled"},{status:400});let{id:r}=await t,a=await e.json();if("favorite"in a){let e=await m.projectRegistry.toggleFavorite(r),t=await m.projectRegistry.getProject(r);return y.NextResponse.json({project:t,favorite:e})}let o=await m.projectRegistry.updateProject(r,a);return y.NextResponse.json({project:o})}catch(e){return console.error("Error updating project:",e),y.NextResponse.json({error:"Failed to update project"},{status:500})}}e.s(["DELETE",()=>x,"GET",()=>R,"PATCH",()=>P],556052);var E=e.i(556052);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/projects/[id]/route",pathname:"/api/projects/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/projects/[id]/route.ts",nextConfigOutput:"standalone",userland:E}),{workAsyncStorage:N,workUnitAsyncStorage:A,serverHooks:b}=C;function D(){return(0,a.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:A})}async function S(e,t,a){C.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/projects/[id]/route";y=y.replace(/\/index$/,"")||"/";let m=await C.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!m)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:R,params:x,nextConfig:P,parsedUrl:E,isDraftMode:N,prerenderManifest:A,routerServerContext:b,isOnDemandRevalidate:D,revalidateOnlyGenerated:S,resolvedPathname:T,clientReferenceManifest:O,serverActionsManifest:k}=m,_=(0,c.normalizeAppPath)(y),q=!!(A.dynamicRoutes[_]||A.routes[T]),F=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,E,!1):t.end("This page could not be found"),null);if(q&&!N){let e=!!A.routes[T],t=A.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(P.experimental.adapterPath)return await F();throw new w.NoFallbackError}}let I=null;!q||C.isDev||N||(I="/index"===(I=T)?"/":I);let M=!0===C.isDev||!q,H=q&&!M;k&&O&&(0,i.setReferenceManifestsSingleton)({page:y,clientReferenceManifest:O,serverActionsManifest:k,serverModuleMap:(0,n.createServerModuleMap)({serverActionsManifest:k})});let U=e.method||"GET",$=(0,s.getTracer)(),V=$.getActiveScopeSpan(),K={params:x,prerenderManifest:A,renderOpts:{experimental:{authInterrupts:!!P.experimental.authInterrupts},cacheComponents:!!P.cacheComponents,supportsDynamicResponse:M,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:P.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a)=>C.onRequestError(e,t,a,b)},sharedContext:{buildId:R}},L=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),W=d.NextRequestAdapter.fromNodeNextRequest(L,(0,d.signalFromNodeResponse)(t));try{let i=async e=>C.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} ${y}`)}),n=!!(0,o.getRequestMeta)(e,"minimalMode"),c=async o=>{var s,c;let l=async({previousCacheEntry:r})=>{try{if(!n&&D&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(o);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(!q)return await (0,h.sendResponse)(L,B,s,K.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[g.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>=g.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:D})},b),t}},d=await C.handleResponse({req:e,nextConfig:P,cacheKey:I,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:S,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:n});if(!q)return null;if((null==d||null==(s=d.value)?void 0:s.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});n||t.setHeader("x-nextjs-cache",D?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),N&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return n&&q||p.delete(g.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,h.sendResponse)(L,B,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} ${y}`,kind:s.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},c))}catch(t){if(t instanceof w.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:D})}),q)throw t;return await (0,h.sendResponse)(L,B,new Response(null,{status:500})),null}}e.s(["handler",()=>S,"patchFetch",()=>D,"routeModule",()=>C,"serverHooks",()=>b,"workAsyncStorage",()=>N,"workUnitAsyncStorage",()=>A],5671)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__71d98924._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
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 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",()=>x,"getSpecs",()=>h,"getSpecsWithMetadata",()=>m,"getStats",()=>g],568239)},429107,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);async function E(){try{let e=await (0,R.getProjectContext)();return v.NextResponse.json(e)}catch(e){return console.error("Error fetching project context:",e),v.NextResponse.json({error:"Failed to fetch project context"},{status:500})}}e.s(["GET",()=>E,"dynamic",0,"force-dynamic"],496265);var S=e.i(496265);let w=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/context/route",pathname:"/api/context",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/context/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/context/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 g.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[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 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(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 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],429107)},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__97b99cc0._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
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)},417664,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.getSpecById)(e);if(!r)return v.NextResponse.json({error:"Spec not found"},{status:404});return v.NextResponse.json({spec:r},{headers:{"Cache-Control":"public, s-maxage=60, stale-while-revalidate=120"}})}catch(e){return console.error("Error fetching spec:",e),v.NextResponse.json({error:"Failed to fetch spec"},{status:500})}}e.s(["GET",()=>E],808728);var S=e.i(808728);let w=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/specs/[id]/route",pathname:"/api/specs/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/specs/[id]/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/specs/[id]/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:j,serverActionsManifest:k}=R,O=(0,l.normalizeAppPath)(v),M=!!(b.dynamicRoutes[O]||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[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=_)?"/":U);let D=!0===w.isDev||!M,B=M&&!D;k&&j&&(0,i.setReferenceManifestsSingleton)({page:v,clientReferenceManifest:j,serverActionsManifest:k,serverModuleMap:(0,s.createServerModuleMap)({serverActionsManifest:k})});let H=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=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${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:B,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:`${H} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":H,"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:B,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],417664)},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__9d9758e1._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
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"))},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"))},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"))},84347,e=>{"use strict";var t=e.i(912714),r=e.i(750227),a=e.i(666680),s=e.i(660526),o=e.i(481347);let i=r.join((0,s.homedir)(),".lean-spec","projects.yaml"),n=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(i);await t.mkdir(e,{recursive:!0});let a=await t.readFile(i,"utf-8"),s=o.default.load(a),n=(s.projects||[]).map(e=>({...e,lastAccessed:e.lastAccessed?new Date(e.lastAccessed):new Date}));this.config={projects:n,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(i);await t.mkdir(e,{recursive:!0});let a={projects:this.config.projects.map(e=>({...e,lastAccessed:e.lastAccessed.toISOString()})),recentProjects:this.config.recentProjects},s=o.default.dump(a,{indent:2,lineWidth:100});await t.writeFile(i,s,"utf-8")}async validateProject(e){try{let a,s,i=r.resolve(e);if(!(await t.stat(i)).isDirectory())return{isValid:!1,path:i,error:"Path is not a directory"};let n=r.join(i,".lean-spec"),c=r.join(i,"specs");try{await t.access(n);let e=r.join(n,"../specs");try{await t.access(e),a=e}catch{a=c}}catch{try{await t.access(c),a=c}catch{return{isValid:!1,path:i,error:"No .lean-spec directory or specs directory found"}}}let l=r.basename(i);try{let e=r.join(i,"leanspec.yaml"),a=await t.readFile(e,"utf-8"),n=o.default.load(a);n.name&&(l=n.name),n.description&&(s=n.description)}catch{try{let e=r.join(i,"package.json"),a=await t.readFile(e,"utf-8"),o=JSON.parse(a);o.name&&(l=o.name),o.description&&(s=o.description)}catch{}}return{isValid:!0,path:i,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),o=a.projects.findIndex(e=>e.id===s),i={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 o>=0?a.projects[o]=i:a.projects.push(i),this.updateRecentProjects(a,s),await this.saveConfig(),i}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=[],o=this;async function i(e,n){if(!(n>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 o.validateProject(t);c.isValid?s.push(c):await i(t,n+1)}}catch(e){}}return await i(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)),o=r.dirname(a);return o!==a&&s.unshift({name:"..",path:o,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,n])},302821,e=>{"use strict";var t=e.i(706169),r=e.i(825864),a=e.i(71648),s=e.i(630064),o=e.i(674222),i=e.i(602043),n=e.i(671408),c=e.i(326527),l=e.i(130592),d=e.i(334639),p=e.i(388935),u=e.i(868515),h=e.i(187166),f=e.i(376718),j=e.i(976529),g=e.i(451151),w=e.i(193695);e.i(859704);var v=e.i(708259),m=e.i(931511),y=e.i(84347);async function x(){try{let e=process.env.SPECS_MODE||"filesystem";if("multi-project"===e){let e=await y.projectRegistry.getProjects(),t=await y.projectRegistry.getRecentProjects(),r=await y.projectRegistry.getFavoriteProjects();return m.NextResponse.json({mode:"multi-project",projects:e,recentProjects:t,favoriteProjects:r})}let t=process.env.SPECS_DIR||"specs";return m.NextResponse.json({mode:"single-project",projects:[{id:"local",displayName:"Local Project",specsDir:t,isFeatured:!0}]})}catch(e){return console.error("Error fetching projects:",e),m.NextResponse.json({error:"Failed to fetch projects"},{status:500})}}async function R(e){try{if("multi-project"!==process.env.SPECS_MODE)return m.NextResponse.json({error:"Multi-project mode is not enabled"},{status:400});let{path:t,favorite:r,color:a}=await e.json();if(!t)return m.NextResponse.json({error:"Project path is required"},{status:400});let s=await y.projectRegistry.addProject(t,{favorite:r,color:a});return m.NextResponse.json({project:s})}catch(e){return console.error("Error adding project:",e),m.NextResponse.json({error:e instanceof Error?e.message:"Failed to add project"},{status:500})}}e.s(["GET",()=>x,"POST",()=>R],271538);var P=e.i(271538);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/projects/route",pathname:"/api/projects",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/packages/ui/src/app/api/projects/route.ts",nextConfigOutput:"standalone",userland:P}),{workAsyncStorage:C,workUnitAsyncStorage:A,serverHooks:N}=E;function b(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:A})}async function S(e,t,a){E.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/projects/route";m=m.replace(/\/index$/,"")||"/";let y=await E.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:x,params:R,nextConfig:P,parsedUrl:C,isDraftMode:A,prerenderManifest:N,routerServerContext:b,isOnDemandRevalidate:S,revalidateOnlyGenerated:D,resolvedPathname:T,clientReferenceManifest:O,serverActionsManifest:k}=y,q=(0,c.normalizeAppPath)(m),_=!!(N.dynamicRoutes[q]||N.routes[T]),F=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,C,!1):t.end("This page could not be found"),null);if(_&&!A){let e=!!N.routes[T],t=N.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(P.experimental.adapterPath)return await F();throw new w.NoFallbackError}}let I=null;!_||E.isDev||A||(I="/index"===(I=T)?"/":I);let M=!0===E.isDev||!_,H=_&&!M;k&&O&&(0,i.setReferenceManifestsSingleton)({page:m,clientReferenceManifest:O,serverActionsManifest:k,serverModuleMap:(0,n.createServerModuleMap)({serverActionsManifest:k})});let U=e.method||"GET",$=(0,o.getTracer)(),V=$.getActiveScopeSpan(),K={params:R,prerenderManifest:N,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)=>E.onRequestError(e,t,a,b)},sharedContext:{buildId:x}},L=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),W=d.NextRequestAdapter.fromNodeNextRequest(L,(0,d.signalFromNodeResponse)(t));try{let i=async e=>E.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}`)}),n=!!(0,s.getRequestMeta)(e,"minimalMode"),c=async s=>{var o,c;let l=async({previousCacheEntry:r})=>{try{if(!n&&S&&D&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(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(!_)return await (0,h.sendResponse)(L,B,o,K.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[g.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>=g.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:m,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})},b),t}},d=await E.handleResponse({req:e,nextConfig:P,cacheKey:I,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:D,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:n});if(!_)return null;if((null==d||null==(o=d.value)?void 0:o.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});n||t.setHeader("x-nextjs-cache",S?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return n&&_||p.delete(g.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,h.sendResponse)(L,B,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:o.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},c))}catch(t){if(t instanceof w.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})}),_)throw t;return await (0,h.sendResponse)(L,B,new Response(null,{status:500})),null}}e.s(["handler",()=>S,"patchFetch",()=>b,"routeModule",()=>E,"serverHooks",()=>N,"workAsyncStorage",()=>C,"workUnitAsyncStorage",()=>A],302821)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__b1ad8b69._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
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
|
|
@@ -0,0 +1,3 @@
|
|
|
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
|
|
@@ -0,0 +1,3 @@
|
|
|
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
|