@leanspec/ui 0.2.9 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/README.md +2 -2
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/lib/glib-2.0/include/glibconfig.h +9 -8
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3} +0 -0
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/package.json +11 -5
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +46 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +221 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +1 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +42 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +30 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64 → @img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64}/package.json +13 -7
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/package.json +46 -0
- 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/packages/ui/.next/BUILD_ID +1 -1
- package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/build-manifest.json +2 -2
- 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 +88 -0
- 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.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 -20
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -20
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +23 -26
- 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.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.nft.json +1 -1
- 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]/dependency-graph/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route_client-reference-manifest.js +2 -0
- 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]/tags/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route_client-reference-manifest.js +2 -0
- 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]/metadata/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route_client-reference-manifest.js +2 -0
- 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/api/tags/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js +2 -1
- 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.js +2 -1
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/page.js +2 -1
- 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.js +5 -5
- 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.js +6 -5
- 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.js +5 -4
- 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.js +5 -4
- 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 -25
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +24 -25
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +20 -24
- 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.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.js +2 -1
- 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.js +2 -1
- 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 +11 -0
- package/.next/standalone/packages/ui/.next/server/chunks/284a8_app_api_projects_[id]_specs_[spec]_dependency-graph_route_actions_f18476ed.js +3 -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]_tags_route_actions_40899744.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/730ea_ui__next-internal_server_app_api_specs_[id]_metadata_route_actions_139bb09f.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]__0afcada7._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0e63a440._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0ec6f9b0._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0edb782a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0fbfea15._.js +1 -1
- 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]__1f037512._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__38780e00._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3a535244._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__41f43652._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__5081ac6f._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__526764b2._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__548e27d4._.js +1 -1
- 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]__71d98924._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__74af400b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8075fe29._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9ce722b4._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9cf3bf21._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__a2d7cbed._.js +1 -1
- 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]__c7a4906b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__de15d2aa._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e16f7651._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e2fcb5c6._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e8d9903e._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f6936b89._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/f825c_server_app_api_projects_[id]_specs_[spec]_metadata_route_actions_35af9a8c.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_tags_route_actions_64625b2c.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]__174e1ca1._.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]__a965a67b._.js → [root-of-the-server]__2d9202e8._.js} +2 -2
- 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]__338c65fe._.js +1 -1
- 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]__44b603f9._.js +1 -1
- 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]__665ae766._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__69a0d63a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__7f55abaa._.js +1 -1
- 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]__12b4eb41._.js → [root-of-the-server]__b0d6e2ad._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__c158c9a9._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__c7735439._.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/[root-of-the-server]__e2c760eb._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ead1539c._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ec5b96a5._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
- 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/{_adb9d7cb._.js → _22274047._.js} +2 -2
- 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/_59616aa6._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_5e1484f9._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_8ab6f9ca._.js +3 -0
- 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/_be836d6a._.js +5 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_d840ffc6._.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/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_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_151891de._.js → node_modules__pnpm_4e3e790c._.js} +2 -2
- 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_1120b57c._.js → node_modules__pnpm_b4ff5c78._.js} +2 -2
- 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/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 +1 -1
- 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 +1 -1
- 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/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/0c7bbb59865774a1.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/0fe978002ba489fb.js +3 -0
- package/.next/standalone/packages/ui/.next/static/chunks/1169d4ac8f9df687.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/1e0689744f87e958.js +2 -0
- package/.next/standalone/packages/ui/.next/static/chunks/241b6b1c83610ebf.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/39931c5cecf4c4b7.js +1 -0
- package/.next/{static/chunks/6d938a49daa10208.js → standalone/packages/ui/.next/static/chunks/4610aea3ca2e69eb.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/6d7922838a3513a4.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/781328ee279ffc41.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/840c6743a491a398.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/937cb3894a606899.js +5 -0
- package/.next/standalone/packages/ui/.next/static/chunks/9cf644b700f37825.css +1 -0
- package/.next/{static/chunks/a3d7e1be47de010b.js → standalone/packages/ui/.next/static/chunks/bbd498aa5689c057.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/bc0f8f7f8dc0a352.js +1 -0
- package/.next/{static/chunks/979625373d5474b6.js → standalone/packages/ui/.next/static/chunks/c26909a25ca9fc9b.js} +1 -1
- package/.next/{static/chunks/e3bc96a996e2a314.js → standalone/packages/ui/.next/static/chunks/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/dbce73f7087f2470.js +10 -0
- package/.next/standalone/packages/ui/.next/static/chunks/e399b4afc7936907.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f0a083ac29b4b6c2.js +1 -0
- package/.next/standalone/packages/ui/dist/BUILD_ID +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +1 -9
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +1 -1
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +3 -7
- package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +3 -5
- package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +1 -2
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +3 -8
- package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +259 -73
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +3 -5
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +3 -5
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +3 -5
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +23 -33
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +3 -7
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +14 -25
- package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +3 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +5 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +4 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +2 -0
- package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +19 -0
- package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +3 -0
- package/.next/standalone/packages/ui/package.json +1 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/src/app/api/dependencies/route.ts +4 -67
- 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 +20 -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]/dependency-graph/route.ts +129 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/metadata/route.ts +170 -0
- 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/[spec]/status/route.ts +9 -2
- 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]/tags/route.ts +25 -0
- 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/api/specs/[id]/metadata/route.ts +184 -0
- package/.next/standalone/packages/ui/src/app/api/tags/route.ts +16 -0
- package/.next/standalone/packages/ui/src/app/context/page.tsx +22 -0
- package/.next/standalone/packages/ui/src/app/dashboard-client.tsx +43 -62
- package/.next/standalone/packages/ui/src/app/dependencies/constants.ts +9 -8
- package/.next/standalone/packages/ui/src/app/dependencies/dependencies-client.tsx +95 -20
- package/.next/standalone/packages/ui/src/app/dependencies/page.tsx +25 -13
- package/.next/standalone/packages/ui/src/app/dependencies/spec-node.tsx +8 -8
- package/.next/standalone/packages/ui/src/app/dependencies/spec-sidebar.tsx +40 -67
- 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 +30 -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 +375 -107
- package/.next/standalone/packages/ui/src/app/specs/[id]/page.tsx +24 -1
- package/.next/standalone/packages/ui/src/app/specs/page.tsx +22 -0
- package/.next/standalone/packages/ui/src/app/specs/specs-client.tsx +28 -18
- package/.next/standalone/packages/ui/src/app/stats/page.tsx +22 -0
- package/.next/standalone/packages/ui/src/components/color-picker.tsx +73 -0
- 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/{dist/standalone/packages/web/src/components/spec-metadata.tsx → src/components/editable-spec-metadata.tsx} +46 -30
- package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +28 -6
- package/.next/standalone/packages/ui/src/components/markdown-link.tsx +15 -8
- package/.next/standalone/packages/ui/src/components/priority-editor.tsx +153 -0
- package/.next/standalone/packages/ui/src/components/project-switcher.tsx +74 -10
- 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 +58 -30
- 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/components/status-editor.tsx +153 -0
- package/.next/standalone/packages/ui/src/components/tags-editor.tsx +238 -0
- package/.next/standalone/packages/ui/src/components/ui/command.tsx +1 -1
- package/.next/standalone/packages/ui/src/contexts/project-context.tsx +24 -0
- package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +230 -40
- package/.next/standalone/packages/ui/src/lib/dependency-graph.ts +0 -13
- package/.next/standalone/packages/ui/src/lib/projects/registry.ts +1 -1
- package/.next/standalone/packages/ui/src/lib/specs/sources/multi-project-source.ts +21 -5
- package/.next/standalone/packages/ui/src/types/specs.ts +6 -4
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/.next/static/chunks/0c7bbb59865774a1.js +1 -0
- package/.next/static/chunks/0fe978002ba489fb.js +3 -0
- package/.next/static/chunks/1169d4ac8f9df687.js +1 -0
- package/.next/static/chunks/1e0689744f87e958.js +2 -0
- package/.next/static/chunks/241b6b1c83610ebf.js +1 -0
- package/.next/static/chunks/39931c5cecf4c4b7.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/6d938a49daa10208.js → static/chunks/4610aea3ca2e69eb.js} +1 -1
- package/.next/static/chunks/6d7922838a3513a4.js +1 -0
- package/.next/static/chunks/781328ee279ffc41.js +1 -0
- package/.next/static/chunks/{942cf63b4032c808.js → 7df6308e6cfcf902.js} +1 -1
- package/.next/static/chunks/840c6743a491a398.js +1 -0
- package/.next/static/chunks/937cb3894a606899.js +5 -0
- package/.next/static/chunks/9cf644b700f37825.css +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/a3d7e1be47de010b.js → static/chunks/bbd498aa5689c057.js} +1 -1
- package/.next/static/chunks/bc0f8f7f8dc0a352.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/979625373d5474b6.js → static/chunks/c26909a25ca9fc9b.js} +1 -1
- package/.next/{standalone/packages/ui/.next/static/chunks/e3bc96a996e2a314.js → static/chunks/d26f4109b44eb240.js} +1 -1
- package/.next/static/chunks/{3276ca6fd9005903.js → d52a048b511c32bd.js} +1 -1
- package/.next/static/chunks/dbce73f7087f2470.js +10 -0
- package/.next/static/chunks/e399b4afc7936907.js +1 -0
- package/.next/static/chunks/f0a083ac29b4b6c2.js +1 -0
- package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_buildManifest.js +11 -0
- package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_clientMiddlewareManifest.json +1 -0
- package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_ssgManifest.js +1 -0
- package/package.json +2 -2
- package/.next/standalone/node_modules/.pnpm/@img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__126dea7b._.js +0 -3
- 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]__b0969111._.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]__3c77d95b._.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]__8608a6fa._.js +0 -3
- 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]__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]__daedd80e._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__dc176c61._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_03aa8d19._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +0 -5
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_3b617676._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_8cec504f._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ea899b87._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_fe120f8a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_1c916fe3._.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/static/chunks/094cf9f4e3553261.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/1c015eb9eaaf9f9c.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/1d36660b2877d213.js +0 -3
- 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/3b6b058ebd14dbed.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/4d29ca0fa6843070.js +0 -2
- package/.next/standalone/packages/ui/.next/static/chunks/59854b15bf046467.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/5fd8101e32b076b1.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/a33f10af6abef4df.js +0 -10
- package/.next/standalone/packages/ui/.next/static/chunks/b7f19087afe1d2c9.css +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/ddd87cd0d26bc2f5.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/eeec245955b3b600.js +0 -5
- package/.next/standalone/packages/ui/dist/standalone/packages/web/components.json +0 -20
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0000_reflective_thena.sql +0 -59
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0001_fresh_carmella_unuscione.sql +0 -1
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0000_snapshot.json +0 -427
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0001_snapshot.json +0 -436
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/_journal.json +0 -20
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle.config.ts +0 -10
- package/.next/standalone/packages/ui/dist/standalone/packages/web/eslint.config.mjs +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/next.config.ts +0 -7
- package/.next/standalone/packages/ui/dist/standalone/packages/web/postcss.config.mjs +0 -8
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/[id]/specs/route.ts +0 -23
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/route.ts +0 -19
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/revalidate/route.ts +0 -63
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.test.ts +0 -51
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.ts +0 -171
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/route.ts +0 -36
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/subspecs/[file]/route.ts +0 -46
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/stats/route.ts +0 -19
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/board-client.tsx +0 -162
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/loading.tsx +0 -43
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/page.tsx +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/dashboard-client.tsx +0 -364
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/error.tsx +0 -43
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/globals.css +0 -531
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/home-client.tsx +0 -277
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/layout.tsx +0 -70
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/loading.tsx +0 -87
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/not-found.tsx +0 -27
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/page.tsx +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/loading.tsx +0 -5
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/page.tsx +0 -43
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/page.tsx +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/specs-client.tsx +0 -425
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/page.tsx +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/stats-client.tsx +0 -283
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/back-to-top.tsx +0 -46
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/empty-state.tsx +0 -52
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/main-sidebar.tsx +0 -175
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.test.ts +0 -96
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.tsx +0 -95
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/navigation.tsx +0 -210
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/priority-badge.tsx +0 -53
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/quick-search.tsx +0 -180
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/skeletons.tsx +0 -119
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-dependency-graph.tsx +0 -369
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-client.tsx +0 -372
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-loading-shell.tsx +0 -42
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-wrapper.tsx +0 -70
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-sidebar.tsx +0 -127
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-timeline.tsx +0 -186
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/specs-nav-sidebar.tsx +0 -561
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/status-badge.tsx +0 -53
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/sub-spec-tabs.tsx +0 -143
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/table-of-contents.tsx +0 -130
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-provider.tsx +0 -11
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-toggle.tsx +0 -37
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/avatar.tsx +0 -50
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/badge.tsx +0 -36
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/breadcrumb.tsx +0 -110
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/button.tsx +0 -57
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/card.tsx +0 -76
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/command.tsx +0 -153
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/dialog.tsx +0 -122
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/input.tsx +0 -24
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/select.tsx +0 -159
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/separator.tsx +0 -31
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/skeleton.tsx +0 -15
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tabs.tsx +0 -55
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/toast.tsx +0 -30
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tooltip.tsx +0 -32
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/date-utils.ts +0 -76
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/index.ts +0 -42
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/migrate.ts +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/queries.ts +0 -114
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/schema.ts +0 -123
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/seed.ts +0 -156
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/service-queries.ts +0 -216
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/dependency-graph.ts +0 -105
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/service.ts +0 -120
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/database-source.ts +0 -94
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/filesystem-source.ts +0 -249
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/types.ts +0 -55
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/stores/specs-sidebar-store.ts +0 -152
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/sub-specs.ts +0 -171
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/utils.ts +0 -17
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/types/specs.ts +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tailwind.config.ts +0 -58
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.json +0 -34
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.tsbuildinfo +0 -1
- package/.next/standalone/packages/ui/dist/standalone/packages/web/vitest.config.ts +0 -14
- package/.next/standalone/packages/ui/dist/standalone/specs/094-ai-chatbot-web-integration/README.md +0 -332
- package/.next/standalone/packages/ui/dist/standalone/specs/095-pr-migration-verification/README.md +0 -339
- package/.next/standalone/packages/ui/dist/standalone/specs/096-docs-beginner-first-reorg/README.md +0 -399
- package/.next/standalone/packages/ui/dist/standalone/specs/097-dag-visualization-library/README.md +0 -525
- package/.next/standalone/packages/ui/dist/standalone/specs/098-github-multi-project-integration/README.md +0 -387
- package/.next/standalone/packages/ui/dist/standalone/specs/099-enhanced-dependency-commands-cli-mcp/README.md +0 -613
- package/.next/standalone/packages/ui/dist/standalone/specs/100-release-process-typecheck-failure/README.md +0 -266
- package/.next/standalone/packages/ui/dist/standalone/specs/101-sidebar-scroll-position-drift/README.md +0 -100
- package/.next/standalone/packages/ui/dist/standalone/specs/102-mcp-wrapper-package/README.md +0 -172
- package/.next/static/chunks/094cf9f4e3553261.js +0 -1
- package/.next/static/chunks/1c015eb9eaaf9f9c.js +0 -1
- package/.next/static/chunks/1d36660b2877d213.js +0 -3
- package/.next/static/chunks/20f4141ccb5d4eb4.js +0 -1
- package/.next/static/chunks/2c85b8059e42248a.js +0 -1
- package/.next/static/chunks/3b6b058ebd14dbed.js +0 -1
- package/.next/static/chunks/4d29ca0fa6843070.js +0 -2
- package/.next/static/chunks/59854b15bf046467.js +0 -1
- package/.next/static/chunks/5fd8101e32b076b1.js +0 -1
- package/.next/static/chunks/a33f10af6abef4df.js +0 -10
- package/.next/static/chunks/b7f19087afe1d2c9.css +0 -1
- package/.next/static/chunks/ddd87cd0d26bc2f5.js +0 -1
- package/.next/static/chunks/eeec245955b3b600.js +0 -5
- /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/lib/index.js +0 -0
- /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/versions.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{8PwFWS-09QjFSbDbfp15t → s9uUE9DnvJD2xIz-iBGMe}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{8PwFWS-09QjFSbDbfp15t → s9uUE9DnvJD2xIz-iBGMe}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{8PwFWS-09QjFSbDbfp15t → s9uUE9DnvJD2xIz-iBGMe}/_ssgManifest.js +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/f864aa7e7061c0600e35cf3d879b27cf.txt +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/favicon.ico +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/file.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/github-mark-white.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/github-mark.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/globe.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/icon.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/logo-dark-bg.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/logo-with-bg.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/logo.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/next.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/vercel.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/window.svg +0 -0
- /package/.next/{static/8PwFWS-09QjFSbDbfp15t → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
- /package/.next/{static/8PwFWS-09QjFSbDbfp15t → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{static/8PwFWS-09QjFSbDbfp15t → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_ssgManifest.js +0 -0
|
@@ -1,613 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
status: complete
|
|
3
|
-
created: '2025-11-17'
|
|
4
|
-
tags:
|
|
5
|
-
- cli
|
|
6
|
-
- mcp
|
|
7
|
-
- dependencies
|
|
8
|
-
- core
|
|
9
|
-
priority: high
|
|
10
|
-
created_at: '2025-11-17T08:45:47.025Z'
|
|
11
|
-
depends_on:
|
|
12
|
-
- 097-dag-visualization-library
|
|
13
|
-
updated_at: '2025-11-17T09:13:14.295Z'
|
|
14
|
-
completed_at: '2025-11-17T09:13:14.295Z'
|
|
15
|
-
completed: '2025-11-17'
|
|
16
|
-
transitions:
|
|
17
|
-
- status: complete
|
|
18
|
-
at: '2025-11-17T09:13:14.295Z'
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
# Enhanced Dependency Commands for CLI/MCP
|
|
22
|
-
|
|
23
|
-
> **Status**: ✅ Complete · **Priority**: High · **Created**: 2025-11-17 · **Tags**: cli, mcp, dependencies, core
|
|
24
|
-
|
|
25
|
-
**Project**: lean-spec
|
|
26
|
-
**Team**: Core Development
|
|
27
|
-
|
|
28
|
-
## Overview
|
|
29
|
-
|
|
30
|
-
**Problem**: Current `lean-spec deps` command and MCP `deps` tool only show the current spec's perspective (dependencies declared in its frontmatter). Missing critical information:
|
|
31
|
-
|
|
32
|
-
1. **Downstream Impact**: Specs that depend on THIS spec (requiredBy)
|
|
33
|
-
2. **Bidirectional Related**: Specs that list THIS spec in their `related` field
|
|
34
|
-
3. **Full Dependency Graph**: Complete view of relationships across the project
|
|
35
|
-
|
|
36
|
-
**Why Now**: Spec 097 (DAG Visualization) is implementing complete dependency graph for the web app. This spec extends that capability to CLI and MCP, sharing the core implementation.
|
|
37
|
-
|
|
38
|
-
**Example Problem**:
|
|
39
|
-
```bash
|
|
40
|
-
# Spec A depends on Spec B
|
|
41
|
-
$ lean-spec deps B
|
|
42
|
-
# ❌ Can't see that Spec A is blocked by Spec B
|
|
43
|
-
# ❌ Can't assess impact of changes to Spec B
|
|
44
|
-
# ❌ Can't see full dependency chain
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**What We Need**:
|
|
48
|
-
- **CLI**: Enhanced `deps` command with `--complete`, `--upstream`, `--downstream`, `--impact` flags
|
|
49
|
-
- **MCP**: New tools for complete dependency graph queries
|
|
50
|
-
- **Core Package**: Shared `SpecDependencyGraph` class (from spec 097)
|
|
51
|
-
- **Consistency**: Web, CLI, and MCP all show same dependency information
|
|
52
|
-
|
|
53
|
-
**Impact**: Better dependency awareness → informed decisions about spec work order, change impact, and blocking relationships.
|
|
54
|
-
|
|
55
|
-
## Design
|
|
56
|
-
|
|
57
|
-
### Architecture: Shared Core Implementation
|
|
58
|
-
|
|
59
|
-
**From Spec 097 (DAG Visualization) - In-Memory Graph:**
|
|
60
|
-
|
|
61
|
-
```typescript
|
|
62
|
-
// packages/core/src/dependency-graph.ts (NEW)
|
|
63
|
-
|
|
64
|
-
interface DependencyNode {
|
|
65
|
-
dependsOn: Set<string>; // Upstream (current depends on these)
|
|
66
|
-
requiredBy: Set<string>; // Downstream (these depend on current)
|
|
67
|
-
related: Set<string>; // Bidirectional connections
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export class SpecDependencyGraph {
|
|
71
|
-
private graph: Map<string, DependencyNode>;
|
|
72
|
-
|
|
73
|
-
constructor(allSpecs: SpecInfo[]) {
|
|
74
|
-
this.buildGraph(allSpecs);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
private buildGraph(specs: SpecInfo[]) {
|
|
78
|
-
// Initialize all nodes
|
|
79
|
-
for (const spec of specs) {
|
|
80
|
-
this.graph.set(spec.path, {
|
|
81
|
-
dependsOn: new Set(spec.frontmatter.depends_on || []),
|
|
82
|
-
requiredBy: new Set(),
|
|
83
|
-
related: new Set(spec.frontmatter.related || []),
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// Build reverse edges
|
|
88
|
-
for (const [specPath, node] of this.graph.entries()) {
|
|
89
|
-
// For each dependsOn, add reverse requiredBy
|
|
90
|
-
for (const dep of node.dependsOn) {
|
|
91
|
-
this.graph.get(dep)?.requiredBy.add(specPath);
|
|
92
|
-
}
|
|
93
|
-
// For each related, add bidirectional link
|
|
94
|
-
for (const rel of node.related) {
|
|
95
|
-
this.graph.get(rel)?.related.add(specPath);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
getCompleteGraph(specPath: string): {
|
|
101
|
-
current: SpecInfo;
|
|
102
|
-
dependsOn: SpecInfo[]; // Upstream (current depends on these)
|
|
103
|
-
requiredBy: SpecInfo[]; // Downstream (these depend on current)
|
|
104
|
-
related: SpecInfo[]; // Bidirectional (includes both directions)
|
|
105
|
-
} {
|
|
106
|
-
// Implementation returns full graph view
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
getUpstream(specPath: string, maxDepth: number = 3): SpecInfo[] {
|
|
110
|
-
// Recursive traversal of dependsOn chain
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
getDownstream(specPath: string, maxDepth: number = 3): SpecInfo[] {
|
|
114
|
-
// Recursive traversal of requiredBy chain
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
getImpactRadius(specPath: string): {
|
|
118
|
-
upstream: SpecInfo[]; // What this spec needs
|
|
119
|
-
downstream: SpecInfo[]; // What needs this spec
|
|
120
|
-
related: SpecInfo[]; // Connected work
|
|
121
|
-
} {
|
|
122
|
-
// All specs affected by changes to this spec
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
**Performance Analysis** (from spec 097):
|
|
128
|
-
- **Memory**: ~100 specs × (3 Sets × ~5 entries × 50 bytes) ≈ 75KB total
|
|
129
|
-
- **Startup**: O(n×d) where d = avg dependencies (~5) → 100 specs × 5 deps ≈ <1ms
|
|
130
|
-
- **Query**: O(1) graph lookup + O(d) traversal ≈ <1ms
|
|
131
|
-
- **Conclusion**: Negligible memory/CPU impact, excellent query performance
|
|
132
|
-
|
|
133
|
-
### Enhanced CLI Commands
|
|
134
|
-
|
|
135
|
-
**Current Command** (`lean-spec deps <spec>`):
|
|
136
|
-
```bash
|
|
137
|
-
$ lean-spec deps 082
|
|
138
|
-
Depends On:
|
|
139
|
-
→ 067-monorepo-core-extraction [complete]
|
|
140
|
-
|
|
141
|
-
Related Specs:
|
|
142
|
-
⟷ 097-dag-visualization-library [in-progress]
|
|
143
|
-
⟷ 081-web-app-ux-redesign [complete]
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
**Enhanced Command Options**:
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
# Complete graph (default behavior - backward compatible enhancement)
|
|
150
|
-
$ lean-spec deps 082 --complete
|
|
151
|
-
Depends On (Upstream):
|
|
152
|
-
→ 067-monorepo-core-extraction [complete]
|
|
153
|
-
|
|
154
|
-
Required By (Downstream):
|
|
155
|
-
← 097-dag-visualization-library [in-progress] # NEW!
|
|
156
|
-
← 099-enhanced-dependency-commands [planned] # NEW!
|
|
157
|
-
|
|
158
|
-
Related Specs (Bidirectional):
|
|
159
|
-
⟷ 097-dag-visualization-library [in-progress]
|
|
160
|
-
⟷ 081-web-app-ux-redesign [complete]
|
|
161
|
-
|
|
162
|
-
# Only upstream dependencies
|
|
163
|
-
$ lean-spec deps 082 --upstream
|
|
164
|
-
→ 067-monorepo-core-extraction [complete]
|
|
165
|
-
|
|
166
|
-
# Only downstream dependents
|
|
167
|
-
$ lean-spec deps 082 --downstream
|
|
168
|
-
← 097-dag-visualization-library [in-progress]
|
|
169
|
-
← 099-enhanced-dependency-commands [planned]
|
|
170
|
-
|
|
171
|
-
# Impact analysis (upstream + downstream + related)
|
|
172
|
-
$ lean-spec deps 082 --impact
|
|
173
|
-
Changing this spec affects 5 specs:
|
|
174
|
-
Upstream Dependencies (1):
|
|
175
|
-
→ 067-monorepo-core-extraction [complete]
|
|
176
|
-
Downstream Dependents (2):
|
|
177
|
-
← 097-dag-visualization-library [in-progress]
|
|
178
|
-
← 099-enhanced-dependency-commands [planned]
|
|
179
|
-
Related Specs (3):
|
|
180
|
-
⟷ 097-dag-visualization-library [in-progress]
|
|
181
|
-
⟷ 081-web-app-ux-redesign [complete]
|
|
182
|
-
⟷ 083-web-navigation-performance [planned]
|
|
183
|
-
|
|
184
|
-
# JSON output (for programmatic use)
|
|
185
|
-
$ lean-spec deps 082 --complete --json
|
|
186
|
-
{
|
|
187
|
-
"current": { "path": "082-web-realtime-sync-architecture", "status": "complete" },
|
|
188
|
-
"dependsOn": [{ "path": "067-monorepo-core-extraction", "status": "complete" }],
|
|
189
|
-
"requiredBy": [
|
|
190
|
-
{ "path": "097-dag-visualization-library", "status": "in-progress" },
|
|
191
|
-
{ "path": "099-enhanced-dependency-commands", "status": "planned" }
|
|
192
|
-
],
|
|
193
|
-
"related": [
|
|
194
|
-
{ "path": "097-dag-visualization-library", "status": "in-progress" },
|
|
195
|
-
{ "path": "081-web-app-ux-redesign", "status": "complete" }
|
|
196
|
-
]
|
|
197
|
-
}
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
**Backward Compatibility**:
|
|
201
|
-
- Default behavior (`lean-spec deps <spec>`) enhanced to show requiredBy
|
|
202
|
-
- Existing `--depth`, `--graph`, `--json` flags still work
|
|
203
|
-
- New flags are additive, not breaking
|
|
204
|
-
|
|
205
|
-
### Enhanced MCP Tools
|
|
206
|
-
|
|
207
|
-
**Extend Existing Tool** (`mcp_lean-spec_deps`):
|
|
208
|
-
|
|
209
|
-
```typescript
|
|
210
|
-
// packages/cli/src/mcp/tools/deps.ts (ENHANCED)
|
|
211
|
-
|
|
212
|
-
export interface DepsInput {
|
|
213
|
-
specPath: string;
|
|
214
|
-
mode?: 'complete' | 'upstream' | 'downstream' | 'impact'; // NEW
|
|
215
|
-
depth?: number;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
export async function getDepsData(specPath: string, mode: string = 'complete') {
|
|
219
|
-
const config = await loadConfig();
|
|
220
|
-
const allSpecs = await loadAllSpecs(config.specsDir);
|
|
221
|
-
const graph = new SpecDependencyGraph(allSpecs); // NEW: Use shared graph
|
|
222
|
-
|
|
223
|
-
const spec = getSpec(specPath, allSpecs);
|
|
224
|
-
if (!spec) throw new Error(`Spec not found: ${specPath}`);
|
|
225
|
-
|
|
226
|
-
switch (mode) {
|
|
227
|
-
case 'complete':
|
|
228
|
-
return graph.getCompleteGraph(spec.path);
|
|
229
|
-
case 'upstream':
|
|
230
|
-
return { current: spec, dependsOn: graph.getUpstream(spec.path) };
|
|
231
|
-
case 'downstream':
|
|
232
|
-
return { current: spec, requiredBy: graph.getDownstream(spec.path) };
|
|
233
|
-
case 'impact':
|
|
234
|
-
return graph.getImpactRadius(spec.path);
|
|
235
|
-
default:
|
|
236
|
-
return graph.getCompleteGraph(spec.path);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
export function depsTool(): ToolDefinition {
|
|
241
|
-
return [
|
|
242
|
-
'deps',
|
|
243
|
-
{
|
|
244
|
-
title: 'Get Dependencies',
|
|
245
|
-
description: 'Analyze complete spec dependency graph (upstream, downstream, bidirectional). Shows which specs this depends on, which depend on this spec, and related work.',
|
|
246
|
-
inputSchema: {
|
|
247
|
-
specPath: z.string().describe('Spec to analyze'),
|
|
248
|
-
mode: z.enum(['complete', 'upstream', 'downstream', 'impact']).optional()
|
|
249
|
-
.describe('View mode: complete (all relationships), upstream (dependencies only), downstream (dependents only), impact (all affected specs)'),
|
|
250
|
-
depth: z.number().optional().describe('Traversal depth (default: 3)'),
|
|
251
|
-
},
|
|
252
|
-
outputSchema: {
|
|
253
|
-
current: z.object({ path: z.string(), status: z.string() }),
|
|
254
|
-
dependsOn: z.array(z.object({ path: z.string(), status: z.string() })).optional(),
|
|
255
|
-
requiredBy: z.array(z.object({ path: z.string(), status: z.string() })).optional(),
|
|
256
|
-
related: z.array(z.object({ path: z.string(), status: z.string() })).optional(),
|
|
257
|
-
},
|
|
258
|
-
},
|
|
259
|
-
async (input) => {
|
|
260
|
-
const deps = await getDepsData(input.specPath, input.mode || 'complete');
|
|
261
|
-
return { content: [{ type: 'text', text: JSON.stringify(deps, null, 2) }] };
|
|
262
|
-
}
|
|
263
|
-
];
|
|
264
|
-
}
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
**New MCP Tool** (`mcp_lean-spec_dependency-graph`):
|
|
268
|
-
|
|
269
|
-
```typescript
|
|
270
|
-
// packages/cli/src/mcp/tools/dependency-graph.ts (NEW)
|
|
271
|
-
|
|
272
|
-
export function dependencyGraphTool(): ToolDefinition {
|
|
273
|
-
return [
|
|
274
|
-
'dependency-graph',
|
|
275
|
-
{
|
|
276
|
-
title: 'Get Full Dependency Graph',
|
|
277
|
-
description: 'Get complete project-wide dependency graph with all relationships. Useful for analyzing project structure, finding dependency chains, and understanding spec interconnections.',
|
|
278
|
-
inputSchema: {
|
|
279
|
-
includeArchived: z.boolean().optional().describe('Include archived specs (default: false)'),
|
|
280
|
-
format: z.enum(['adjacency-list', 'edge-list']).optional()
|
|
281
|
-
.describe('Output format: adjacency-list (grouped by spec) or edge-list (flat list of relationships)'),
|
|
282
|
-
},
|
|
283
|
-
outputSchema: {
|
|
284
|
-
specs: z.array(z.object({
|
|
285
|
-
path: z.string(),
|
|
286
|
-
status: z.string(),
|
|
287
|
-
dependsOn: z.array(z.string()),
|
|
288
|
-
requiredBy: z.array(z.string()),
|
|
289
|
-
related: z.array(z.string()),
|
|
290
|
-
})),
|
|
291
|
-
},
|
|
292
|
-
},
|
|
293
|
-
async (input) => {
|
|
294
|
-
const config = await loadConfig();
|
|
295
|
-
const allSpecs = await loadAllSpecs(config.specsDir, input.includeArchived);
|
|
296
|
-
const graph = new SpecDependencyGraph(allSpecs);
|
|
297
|
-
const output = graph.toJSON(input.format || 'adjacency-list');
|
|
298
|
-
return { content: [{ type: 'text', text: JSON.stringify(output, null, 2) }] };
|
|
299
|
-
}
|
|
300
|
-
];
|
|
301
|
-
}
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
### Implementation Strategy
|
|
305
|
-
|
|
306
|
-
**Phase 1: Core Package** (Foundation)
|
|
307
|
-
- Extract `SpecDependencyGraph` class to `@leanspec/core`
|
|
308
|
-
- Implement graph building and query methods
|
|
309
|
-
- Add unit tests for graph construction and traversal
|
|
310
|
-
- Export for use in CLI, MCP, and web
|
|
311
|
-
|
|
312
|
-
**Phase 2: CLI Enhancement** (User-Facing)
|
|
313
|
-
- Enhance `packages/cli/src/commands/deps.ts`
|
|
314
|
-
- Add `--complete`, `--upstream`, `--downstream`, `--impact` flags
|
|
315
|
-
- Update output formatting for new sections
|
|
316
|
-
- Ensure backward compatibility
|
|
317
|
-
|
|
318
|
-
**Phase 3: MCP Enhancement** (AI-Facing)
|
|
319
|
-
- Update `packages/cli/src/mcp/tools/deps.ts`
|
|
320
|
-
- Add `dependency-graph.ts` new tool
|
|
321
|
-
- Update tool registry
|
|
322
|
-
- Add examples to AGENTS.md
|
|
323
|
-
|
|
324
|
-
**Phase 4: Web Integration** (Spec 097)
|
|
325
|
-
- Web API uses same `SpecDependencyGraph` class
|
|
326
|
-
- Ensures consistency across interfaces
|
|
327
|
-
- Completed in spec 097 (Phase 2)
|
|
328
|
-
|
|
329
|
-
## Plan
|
|
330
|
-
|
|
331
|
-
### Phase 1: Core Package Implementation (Days 1-2)
|
|
332
|
-
- [ ] Create `packages/core/src/dependency-graph.ts`
|
|
333
|
-
- [ ] Define `DependencyNode` interface
|
|
334
|
-
- [ ] Implement `SpecDependencyGraph` class
|
|
335
|
-
- [ ] Add `buildGraph()` method (bidirectional edge construction)
|
|
336
|
-
- [ ] Add `getCompleteGraph()` method
|
|
337
|
-
- [ ] Add `getUpstream()` method (recursive traversal)
|
|
338
|
-
- [ ] Add `getDownstream()` method (recursive traversal)
|
|
339
|
-
- [ ] Add `getImpactRadius()` method
|
|
340
|
-
- [ ] Add `toJSON()` method for serialization
|
|
341
|
-
- [ ] Export from `packages/core/src/index.ts`
|
|
342
|
-
- [ ] Add unit tests for `SpecDependencyGraph`
|
|
343
|
-
- [ ] Test graph construction (forward + reverse edges)
|
|
344
|
-
- [ ] Test upstream traversal (depth limiting)
|
|
345
|
-
- [ ] Test downstream traversal
|
|
346
|
-
- [ ] Test circular dependency handling
|
|
347
|
-
- [ ] Test bidirectional related connections
|
|
348
|
-
- [ ] Test edge cases (no dependencies, orphaned specs)
|
|
349
|
-
- [ ] Build and verify compilation (`pnpm build`)
|
|
350
|
-
|
|
351
|
-
### Phase 2: CLI Enhancement (Days 3-4)
|
|
352
|
-
- [ ] Update `packages/cli/src/commands/deps.ts`
|
|
353
|
-
- [ ] Import `SpecDependencyGraph` from `@leanspec/core`
|
|
354
|
-
- [ ] Add command options: `--complete`, `--upstream`, `--downstream`, `--impact`
|
|
355
|
-
- [ ] Instantiate graph in `showDeps()` function
|
|
356
|
-
- [ ] Add `displayCompleteGraph()` helper (requiredBy section)
|
|
357
|
-
- [ ] Add `displayUpstream()` helper
|
|
358
|
-
- [ ] Add `displayDownstream()` helper
|
|
359
|
-
- [ ] Add `displayImpact()` helper
|
|
360
|
-
- [ ] Update JSON output format (include requiredBy)
|
|
361
|
-
- [ ] Preserve existing `--depth`, `--graph`, `--json` behavior
|
|
362
|
-
- [ ] Update CLI help text in `packages/cli/src/cli.ts`
|
|
363
|
-
- [ ] Add examples to CLI docs
|
|
364
|
-
- [ ] Manual testing
|
|
365
|
-
- [ ] Test `lean-spec deps 082 --complete`
|
|
366
|
-
- [ ] Test `lean-spec deps 082 --upstream`
|
|
367
|
-
- [ ] Test `lean-spec deps 082 --downstream`
|
|
368
|
-
- [ ] Test `lean-spec deps 082 --impact`
|
|
369
|
-
- [ ] Test `lean-spec deps 082 --complete --json`
|
|
370
|
-
- [ ] Test backward compatibility (no flags)
|
|
371
|
-
|
|
372
|
-
### Phase 3: MCP Enhancement (Days 5-6)
|
|
373
|
-
- [ ] Update `packages/cli/src/mcp/tools/deps.ts`
|
|
374
|
-
- [ ] Import `SpecDependencyGraph` from `@leanspec/core`
|
|
375
|
-
- [ ] Add `mode` parameter to `getDepsData()` function
|
|
376
|
-
- [ ] Implement mode routing (complete, upstream, downstream, impact)
|
|
377
|
-
- [ ] Update tool schema (add mode parameter)
|
|
378
|
-
- [ ] Update output schema (include requiredBy)
|
|
379
|
-
- [ ] Update tool description
|
|
380
|
-
- [ ] Create `packages/cli/src/mcp/tools/dependency-graph.ts` (NEW)
|
|
381
|
-
- [ ] Implement `dependencyGraphTool()` definition
|
|
382
|
-
- [ ] Implement graph handler (project-wide view)
|
|
383
|
-
- [ ] Add format options (adjacency-list, edge-list)
|
|
384
|
-
- [ ] Add includeArchived option
|
|
385
|
-
- [ ] Update `packages/cli/src/mcp/tools/registry.ts`
|
|
386
|
-
- [ ] Import `dependencyGraphTool`
|
|
387
|
-
- [ ] Register new tool (alphabetical order)
|
|
388
|
-
- [ ] Update AGENTS.md
|
|
389
|
-
- [ ] Document enhanced `deps` tool
|
|
390
|
-
- [ ] Document new `dependency-graph` tool
|
|
391
|
-
- [ ] Add usage examples
|
|
392
|
-
- [ ] Update dependency analysis workflow
|
|
393
|
-
|
|
394
|
-
### Phase 4: Documentation & Testing (Day 7)
|
|
395
|
-
- [ ] Update docs-site documentation
|
|
396
|
-
- [ ] Update CLI reference (`docs/reference/cli.mdx`)
|
|
397
|
-
- [ ] Update MCP reference (`docs/reference/mcp-server.mdx`)
|
|
398
|
-
- [ ] Add examples to usage guide
|
|
399
|
-
- [ ] Integration testing
|
|
400
|
-
- [ ] Test CLI → Core graph integration
|
|
401
|
-
- [ ] Test MCP → Core graph integration
|
|
402
|
-
- [ ] Verify consistency (CLI output matches MCP output)
|
|
403
|
-
- [ ] Test with complex dependency chains (5+ levels)
|
|
404
|
-
- [ ] Test with circular dependencies (error handling)
|
|
405
|
-
- [ ] Performance benchmarking
|
|
406
|
-
- [ ] Measure graph construction time (100 specs)
|
|
407
|
-
- [ ] Measure query time (<1ms target)
|
|
408
|
-
- [ ] Measure memory usage (<100KB target)
|
|
409
|
-
- [ ] Build and deploy
|
|
410
|
-
- [ ] Run `pnpm build` (verify compilation)
|
|
411
|
-
- [ ] Run `pnpm test:run` (all tests pass)
|
|
412
|
-
- [ ] Update spec 099 status to `complete`
|
|
413
|
-
|
|
414
|
-
## Test
|
|
415
|
-
|
|
416
|
-
### Phase 1 Tests (Core Package)
|
|
417
|
-
|
|
418
|
-
**Graph Construction**:
|
|
419
|
-
- [ ] Build graph from 100 specs in <1ms
|
|
420
|
-
- [ ] Correctly identify all dependsOn relationships
|
|
421
|
-
- [ ] Correctly build reverse requiredBy edges
|
|
422
|
-
- [ ] Handle bidirectional related connections
|
|
423
|
-
- [ ] Handle specs with no dependencies
|
|
424
|
-
- [ ] Handle orphaned specs (not referenced by any other spec)
|
|
425
|
-
|
|
426
|
-
**Graph Queries**:
|
|
427
|
-
- [ ] `getCompleteGraph()` returns all 3 relationship types
|
|
428
|
-
- [ ] `getUpstream()` traverses dependsOn chain correctly
|
|
429
|
-
- [ ] `getDownstream()` traverses requiredBy chain correctly
|
|
430
|
-
- [ ] `getImpactRadius()` includes upstream + downstream + related
|
|
431
|
-
- [ ] Depth limiting works (stops at maxDepth)
|
|
432
|
-
- [ ] Circular dependency detection works (prevents infinite loops)
|
|
433
|
-
|
|
434
|
-
**Edge Cases**:
|
|
435
|
-
- [ ] Empty spec list returns empty graph
|
|
436
|
-
- [ ] Spec with no relationships returns empty sets
|
|
437
|
-
- [ ] Non-existent spec throws error
|
|
438
|
-
- [ ] Duplicate relationships deduplicated
|
|
439
|
-
|
|
440
|
-
### Phase 2 Tests (CLI Enhancement)
|
|
441
|
-
|
|
442
|
-
**Functional**:
|
|
443
|
-
- [ ] `lean-spec deps <spec>` shows requiredBy section (backward compatible enhancement)
|
|
444
|
-
- [ ] `--complete` flag shows all relationships
|
|
445
|
-
- [ ] `--upstream` flag shows only dependsOn
|
|
446
|
-
- [ ] `--downstream` flag shows only requiredBy
|
|
447
|
-
- [ ] `--impact` flag shows all affected specs
|
|
448
|
-
- [ ] `--json` output includes requiredBy field
|
|
449
|
-
- [ ] `--depth` flag still works with new modes
|
|
450
|
-
- [ ] `--graph` flag still works (ASCII tree)
|
|
451
|
-
|
|
452
|
-
**Output Format**:
|
|
453
|
-
- [ ] Required By section uses ← arrow
|
|
454
|
-
- [ ] Depends On section uses → arrow
|
|
455
|
-
- [ ] Related section uses ⟷ arrow
|
|
456
|
-
- [ ] Status indicators appear correctly
|
|
457
|
-
- [ ] JSON output is valid and parseable
|
|
458
|
-
|
|
459
|
-
**Backward Compatibility**:
|
|
460
|
-
- [ ] Existing scripts using `lean-spec deps` still work
|
|
461
|
-
- [ ] JSON output is superset (no removed fields)
|
|
462
|
-
- [ ] Exit codes unchanged
|
|
463
|
-
- [ ] Error messages unchanged
|
|
464
|
-
|
|
465
|
-
### Phase 3 Tests (MCP Enhancement)
|
|
466
|
-
|
|
467
|
-
**MCP Tool - deps (enhanced)**:
|
|
468
|
-
- [ ] Tool accepts `mode` parameter
|
|
469
|
-
- [ ] Mode 'complete' returns all relationships
|
|
470
|
-
- [ ] Mode 'upstream' returns only dependsOn
|
|
471
|
-
- [ ] Mode 'downstream' returns only requiredBy
|
|
472
|
-
- [ ] Mode 'impact' returns full impact radius
|
|
473
|
-
- [ ] Output includes requiredBy field
|
|
474
|
-
- [ ] Backward compatible (no mode defaults to complete)
|
|
475
|
-
|
|
476
|
-
**MCP Tool - dependency-graph (new)**:
|
|
477
|
-
- [ ] Tool returns project-wide graph
|
|
478
|
-
- [ ] Adjacency list format correct
|
|
479
|
-
- [ ] Edge list format correct
|
|
480
|
-
- [ ] includeArchived flag works
|
|
481
|
-
- [ ] Output includes all 3 relationship types per spec
|
|
482
|
-
|
|
483
|
-
**Integration**:
|
|
484
|
-
- [ ] MCP server starts without errors
|
|
485
|
-
- [ ] Tools appear in alphabetical order
|
|
486
|
-
- [ ] Tool schemas validate correctly
|
|
487
|
-
- [ ] AI assistants can call tools successfully
|
|
488
|
-
|
|
489
|
-
### Phase 4 Tests (Integration & Performance)
|
|
490
|
-
|
|
491
|
-
**Cross-Interface Consistency**:
|
|
492
|
-
- [ ] CLI and MCP return identical dependency data for same spec
|
|
493
|
-
- [ ] Web API (spec 097) returns identical dependency data
|
|
494
|
-
- [ ] All interfaces use same `SpecDependencyGraph` class
|
|
495
|
-
- [ ] Graph construction identical across interfaces
|
|
496
|
-
|
|
497
|
-
**Performance**:
|
|
498
|
-
- [ ] Graph construction <1ms for 100 specs
|
|
499
|
-
- [ ] Query time <1ms for typical spec
|
|
500
|
-
- [ ] Memory usage <100KB for graph
|
|
501
|
-
- [ ] No memory leaks over 100 queries
|
|
502
|
-
- [ ] Cold start acceptable (<10ms)
|
|
503
|
-
|
|
504
|
-
**Real-World Scenarios**:
|
|
505
|
-
- [ ] LeanSpec's own specs (100+ specs)
|
|
506
|
-
- [ ] Spec with 10+ dependencies (spec 082)
|
|
507
|
-
- [ ] Spec with 10+ dependents
|
|
508
|
-
- [ ] Deep dependency chain (5+ levels)
|
|
509
|
-
- [ ] Circular dependency handling (error message)
|
|
510
|
-
- [ ] Complex related network (10+ bidirectional connections)
|
|
511
|
-
|
|
512
|
-
## Notes
|
|
513
|
-
|
|
514
|
-
### Design Decisions
|
|
515
|
-
|
|
516
|
-
**Why Share Implementation in @leanspec/core?**
|
|
517
|
-
- **Consistency**: Web, CLI, MCP all show same dependency data
|
|
518
|
-
- **Performance**: Shared, optimized graph implementation
|
|
519
|
-
- **Maintainability**: Single source of truth for graph logic
|
|
520
|
-
- **Testing**: Test once, use everywhere
|
|
521
|
-
|
|
522
|
-
**Why Enhance Existing `deps` Command Instead of New Command?**
|
|
523
|
-
- **User Expectation**: `deps` is the natural place for dependency info
|
|
524
|
-
- **Backward Compatible**: Existing usage still works
|
|
525
|
-
- **Discoverability**: Users already know `deps` command
|
|
526
|
-
- **Consistency**: Matches existing command structure
|
|
527
|
-
|
|
528
|
-
**Why Add New MCP Tool Instead of Only Enhancing Existing?**
|
|
529
|
-
- **Separation of Concerns**: `deps` for single spec, `dependency-graph` for project-wide
|
|
530
|
-
- **AI Agent Use Cases**: Sometimes need full graph for analysis
|
|
531
|
-
- **Performance**: Project-wide graph cached once, queried many times
|
|
532
|
-
- **Flexibility**: Different tools for different needs
|
|
533
|
-
|
|
534
|
-
**Why Not Add to Web App First?**
|
|
535
|
-
- Spec 097 is already implementing complete graph for web
|
|
536
|
-
- This spec focuses on CLI/MCP
|
|
537
|
-
- Both use same core implementation
|
|
538
|
-
- Coordinated rollout ensures consistency
|
|
539
|
-
|
|
540
|
-
### Relationship to Other Specs
|
|
541
|
-
|
|
542
|
-
**This spec depends on:**
|
|
543
|
-
- **082 (Web Realtime Sync)**: Service layer architecture patterns
|
|
544
|
-
- **097 (DAG Visualization)**: Complete dependency graph design (Phase 2 API)
|
|
545
|
-
- Existing CLI commands (`deps`, spec path resolution)
|
|
546
|
-
- Existing MCP tools (tool registry, helper functions)
|
|
547
|
-
- Spec 080 (MCP modular architecture) - Tool organization patterns
|
|
548
|
-
|
|
549
|
-
**This spec enables:**
|
|
550
|
-
- Better AI agent dependency awareness
|
|
551
|
-
- Informed spec work order decisions
|
|
552
|
-
- Impact analysis before making changes
|
|
553
|
-
- Complete dependency visualization in web app (spec 097)
|
|
554
|
-
- Future dependency analysis features
|
|
555
|
-
|
|
556
|
-
**This spec blocks:**
|
|
557
|
-
- None (additive enhancement)
|
|
558
|
-
|
|
559
|
-
**Related specs:**
|
|
560
|
-
- **076 (programmatic-spec-relationships)**: Relationship management commands
|
|
561
|
-
- **085 (cli-relationship-commands)**: `link`/`unlink` commands
|
|
562
|
-
- **097 (dag-visualization-library)**: Web app complete graph (same core implementation)
|
|
563
|
-
|
|
564
|
-
### Implementation Notes
|
|
565
|
-
|
|
566
|
-
**Memory Management**:
|
|
567
|
-
- Graph built once per command invocation
|
|
568
|
-
- 75KB memory for 100 specs (negligible)
|
|
569
|
-
- No persistence needed (rebuild is fast)
|
|
570
|
-
- Consider caching in long-running MCP server
|
|
571
|
-
|
|
572
|
-
**Error Handling**:
|
|
573
|
-
- Non-existent spec: Clear error message
|
|
574
|
-
- Circular dependencies: Detect and prevent infinite loops
|
|
575
|
-
- Missing relationships: Graceful degradation (show what's available)
|
|
576
|
-
- Corrupt frontmatter: Skip spec and log warning
|
|
577
|
-
|
|
578
|
-
**Future Enhancements**:
|
|
579
|
-
- **Caching**: Cache graph in MCP server (rebuild on spec changes)
|
|
580
|
-
- **Visualization**: ASCII art dependency tree
|
|
581
|
-
- **Analysis**: Detect orphaned specs, suggest relationships
|
|
582
|
-
- **Performance**: Incremental graph updates (not full rebuild)
|
|
583
|
-
|
|
584
|
-
### Open Questions
|
|
585
|
-
|
|
586
|
-
- [x] Should we rebuild graph on every command? → **Yes, <1ms startup cost is acceptable**
|
|
587
|
-
- [x] Should MCP server cache graph? → **Future enhancement, not critical for v1**
|
|
588
|
-
- [x] Should we add `--complete` flag or make it default? → **Make requiredBy default, add mode flags**
|
|
589
|
-
- [ ] Should we add `--format` flag for different output styles? → **Future enhancement**
|
|
590
|
-
- [ ] Should we add graph visualization (ASCII art)? → **Future enhancement**
|
|
591
|
-
|
|
592
|
-
### Success Criteria
|
|
593
|
-
|
|
594
|
-
**Phase 1 (Core)**:
|
|
595
|
-
- ✅ `SpecDependencyGraph` class in `@leanspec/core`
|
|
596
|
-
- ✅ All tests pass
|
|
597
|
-
- ✅ Performance <1ms graph construction
|
|
598
|
-
|
|
599
|
-
**Phase 2 (CLI)**:
|
|
600
|
-
- ✅ `lean-spec deps <spec>` shows requiredBy
|
|
601
|
-
- ✅ New flags work (`--complete`, `--upstream`, `--downstream`, `--impact`)
|
|
602
|
-
- ✅ Backward compatible (existing scripts work)
|
|
603
|
-
|
|
604
|
-
**Phase 3 (MCP)**:
|
|
605
|
-
- ✅ Enhanced `deps` tool with mode parameter
|
|
606
|
-
- ✅ New `dependency-graph` tool for project-wide view
|
|
607
|
-
- ✅ AGENTS.md updated with examples
|
|
608
|
-
|
|
609
|
-
**Phase 4 (Integration)**:
|
|
610
|
-
- ✅ CLI, MCP, Web all use same core implementation
|
|
611
|
-
- ✅ Consistent output across interfaces
|
|
612
|
-
- ✅ Documentation updated
|
|
613
|
-
- ✅ All tests pass
|