@leanspec/ui 0.2.7-dev.20251128020042 → 0.2.8
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/packages/ui/.next/BUILD_ID +1 -1
- package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +2 -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 +12 -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.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 -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 +6 -6
- package/.next/standalone/packages/ui/.next/server/app/api/context/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/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]/route.js.nft.json +1 -1
- 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.nft.json +1 -1
- 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.nft.json +1 -1
- 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.nft.json +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.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.nft.json +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/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js +19 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +2 -0
- 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]/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.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.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/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 +12 -12
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +12 -12
- 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 +3 -3
- 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.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.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 +2 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3559376c._.js +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65667b70._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bdc3963a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f5c6d6b8._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_context_route_actions_dead6daa.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__12b4eb41._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__69a0d63a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__6e739186._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a4c56419._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b6632d78._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daee3355._.js +1 -1
- 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/_000dd317._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_315f3b3a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_959ad3d8._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_9dcf102b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_497c8b73._.js → _b397e94a._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8272a49c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_context_page_actions_1a062d48.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_context_context-client_tsx_4ba99a62._.js +12 -0
- 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_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/1eb8283995f370c6.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/37a1236ed50645a6.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/9d84ba08a41145ec.js +5 -0
- package/.next/standalone/packages/ui/.next/static/chunks/c4b1faff3361a749.js +1 -0
- package/.next/{static/chunks/294dea6dbec43ca6.js → standalone/packages/ui/.next/static/chunks/d7420d2a867e57b5.js} +1 -1
- package/.next/{static/chunks/cca4441cde342ae3.js → standalone/packages/ui/.next/static/chunks/dae403679aae65f4.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/efded9da04c960d8.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f382932f1a5d6359.js +10 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
- package/.next/standalone/packages/ui/dist/BUILD_ID +1 -0
- package/.next/standalone/packages/ui/dist/public/f864aa7e7061c0600e35cf3d879b27cf.txt +1 -0
- package/.next/standalone/packages/ui/dist/public/favicon.ico +0 -0
- package/.next/standalone/packages/ui/dist/public/file.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/github-mark-white.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/github-mark.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/globe.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/icon.svg +7 -0
- package/.next/standalone/packages/ui/dist/public/logo-dark-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/logo-with-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/logo.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/next.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/vercel.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/window.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +75 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +44 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +261 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +380 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +285 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +368 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +327 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +117 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +73 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +109 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +107 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +244 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +429 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +302 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +359 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +86 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +437 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +365 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +203 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +156 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +183 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +217 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +126 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +108 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +382 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +144 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +208 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +182 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +314 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +237 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +149 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +254 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +376 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +240 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +374 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +339 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +128 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +97 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +93 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +397 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +342 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +44 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +150 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +351 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +238 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +280 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +466 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +178 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +295 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +487 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +279 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +642 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +286 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +392 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +1002 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +411 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +812 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +504 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +724 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +299 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +265 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +36 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +82 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +338 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +354 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +189 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +119 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +170 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +842 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +444 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +357 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +551 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +489 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +285 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +323 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +136 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +399 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +301 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +235 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +388 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +824 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +111 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +77 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +184 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +496 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +490 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +389 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +920 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +607 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +104 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +124 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +129 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +244 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +148 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +54 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +37 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +112 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +406 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +168 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +212 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +249 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +722 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +413 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +252 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +253 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +612 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +794 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +834 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +454 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +172 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +152 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +95 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +87 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +122 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +198 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +192 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +171 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +200 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +328 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +400 -0
- 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 +2 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/src/app/api/context/route.ts +22 -0
- package/.next/standalone/packages/ui/src/app/context/context-client.tsx +371 -0
- package/.next/standalone/packages/ui/src/app/context/page.tsx +17 -0
- package/.next/standalone/packages/ui/src/app/globals.css +16 -16
- package/.next/standalone/packages/ui/src/app/layout.tsx +1 -7
- package/.next/standalone/packages/ui/src/components/context-file-viewer.tsx +291 -0
- package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +10 -1
- package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +181 -134
- package/.next/standalone/packages/ui/src/components/spec-detail-wrapper.tsx +20 -0
- package/.next/standalone/packages/ui/src/components/specs-nav-sidebar.tsx +3 -2
- package/.next/standalone/packages/ui/src/components/ui/accordion.tsx +58 -0
- package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +172 -3
- package/.next/standalone/packages/ui/src/lib/specs/types.ts +44 -0
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_buildManifest.js +11 -0
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_clientMiddlewareManifest.json +1 -0
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_ssgManifest.js +1 -0
- package/.next/static/chunks/1eb8283995f370c6.js +1 -0
- package/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
- package/.next/static/chunks/37a1236ed50645a6.js +1 -0
- package/.next/static/chunks/9d84ba08a41145ec.js +5 -0
- package/.next/static/chunks/c4b1faff3361a749.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/294dea6dbec43ca6.js → static/chunks/d7420d2a867e57b5.js} +1 -1
- package/.next/{standalone/packages/ui/.next/static/chunks/cca4441cde342ae3.js → static/chunks/dae403679aae65f4.js} +1 -1
- package/.next/static/chunks/efded9da04c960d8.js +1 -0
- package/.next/static/chunks/f382932f1a5d6359.js +10 -0
- package/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
- package/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
- package/package.json +3 -2
- package/.next/standalone/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +0 -95
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__1d0c2012._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__73f60f12._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a7ae8552._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_14118969._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_4129cc0f._.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/a803d646487dfc2d.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/b6976cf6c48996e5.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/b845813463167db0.js +0 -5
- package/.next/standalone/packages/ui/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/d784d84d5b880e48.js +0 -1
- package/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
- package/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
- package/.next/static/chunks/a803d646487dfc2d.js +0 -3
- package/.next/static/chunks/b6976cf6c48996e5.js +0 -1
- package/.next/static/chunks/b845813463167db0.js +0 -5
- package/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
- package/.next/static/chunks/d784d84d5b880e48.js +0 -1
- /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_ssgManifest.js +0 -0
- /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
- /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_ssgManifest.js +0 -0
package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md
ADDED
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: complete
|
|
3
|
+
created: '2025-11-11'
|
|
4
|
+
tags:
|
|
5
|
+
- architecture
|
|
6
|
+
- refactor
|
|
7
|
+
- monorepo
|
|
8
|
+
- v0.3.0-launch
|
|
9
|
+
priority: high
|
|
10
|
+
created_at: '2025-11-11T13:33:33.321Z'
|
|
11
|
+
updated_at: '2025-11-11T14:31:41.878Z'
|
|
12
|
+
completed_at: '2025-11-11T14:06:01.220Z'
|
|
13
|
+
completed: '2025-11-11'
|
|
14
|
+
transitions:
|
|
15
|
+
- status: complete
|
|
16
|
+
at: '2025-11-11T14:06:01.220Z'
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Monorepo Structure & Core Package Extraction
|
|
20
|
+
|
|
21
|
+
> **Status**: ✅ Complete · **Priority**: High · **Created**: 2025-11-11 · **Tags**: architecture, refactor, monorepo, v0.3.0-launch
|
|
22
|
+
|
|
23
|
+
**Project**: lean-spec
|
|
24
|
+
**Team**: Core Development
|
|
25
|
+
|
|
26
|
+
## Overview
|
|
27
|
+
|
|
28
|
+
Restructure lean-spec into a **pnpm monorepo** with a shared `@leanspec/core` package that provides platform-agnostic spec parsing, validation, and utilities. This enables code reuse across CLI, MCP server, and the upcoming web application while maintaining consistency in how specs are processed.
|
|
29
|
+
|
|
30
|
+
**Problem**: The web application (spec 035) needs to parse and validate specs identically to the CLI/MCP server, but currently ~40% of the codebase is tightly coupled to Node.js file system operations. Duplicating this logic would lead to drift and inconsistency.
|
|
31
|
+
|
|
32
|
+
**Solution**: Extract shared logic into `@leanspec/core` with abstract storage interfaces, allowing the same parsing/validation code to work with both file systems (CLI) and GitHub API (web).
|
|
33
|
+
|
|
34
|
+
**Why now?**
|
|
35
|
+
- Web app development starting (spec 035)
|
|
36
|
+
- Need guaranteed consistency between CLI and web parsing
|
|
37
|
+
- Already using pnpm (workspace support built-in)
|
|
38
|
+
- Prevents technical debt from code duplication
|
|
39
|
+
|
|
40
|
+
## Design
|
|
41
|
+
|
|
42
|
+
### Monorepo Structure
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
lean-spec/ # Root monorepo
|
|
46
|
+
├── package.json # Workspace root
|
|
47
|
+
├── pnpm-workspace.yaml # pnpm workspaces config
|
|
48
|
+
├── turbo.json # Turborepo build orchestration (optional)
|
|
49
|
+
├── packages/
|
|
50
|
+
│ ├── core/ # 🎯 SHARED CORE PACKAGE
|
|
51
|
+
│ │ ├── package.json # @leanspec/core
|
|
52
|
+
│ │ ├── src/
|
|
53
|
+
│ │ │ ├── index.ts # Public API exports
|
|
54
|
+
│ │ │ ├── types/
|
|
55
|
+
│ │ │ │ ├── spec.ts # SpecInfo, SpecFrontmatter, etc.
|
|
56
|
+
│ │ │ │ └── storage.ts # Abstract storage interface
|
|
57
|
+
│ │ │ ├── parsers/
|
|
58
|
+
│ │ │ │ ├── frontmatter.ts
|
|
59
|
+
│ │ │ │ └── spec-loader.ts
|
|
60
|
+
│ │ │ ├── validators/
|
|
61
|
+
│ │ │ │ ├── frontmatter.ts
|
|
62
|
+
│ │ │ │ ├── structure.ts
|
|
63
|
+
│ │ │ │ ├── line-count.ts
|
|
64
|
+
│ │ │ │ └── sub-spec.ts
|
|
65
|
+
│ │ │ └── utils/
|
|
66
|
+
│ │ │ ├── spec-stats.ts
|
|
67
|
+
│ │ │ ├── insights.ts
|
|
68
|
+
│ │ │ └── filters.ts
|
|
69
|
+
│ │ └── tsconfig.json
|
|
70
|
+
│ │
|
|
71
|
+
│ ├── cli/ # 🔧 CLI & MCP SERVER
|
|
72
|
+
│ │ ├── package.json # lean-spec (existing CLI)
|
|
73
|
+
│ │ ├── src/
|
|
74
|
+
│ │ │ ├── cli.ts
|
|
75
|
+
│ │ │ ├── mcp-server.ts
|
|
76
|
+
│ │ │ ├── commands/
|
|
77
|
+
│ │ │ ├── adapters/
|
|
78
|
+
│ │ │ │ └── fs-storage.ts # File system adapter for core
|
|
79
|
+
│ │ │ └── utils/
|
|
80
|
+
│ │ │ └── cli-helpers.ts
|
|
81
|
+
│ │ └── bin/
|
|
82
|
+
│ │ └── lean-spec.js
|
|
83
|
+
│ │
|
|
84
|
+
│ └── web/ # 🌐 WEB APP (future - spec 035)
|
|
85
|
+
│ ├── package.json # @leanspec/web
|
|
86
|
+
│ ├── src/
|
|
87
|
+
│ │ ├── app/ # Next.js App Router
|
|
88
|
+
│ │ ├── components/
|
|
89
|
+
│ │ ├── lib/
|
|
90
|
+
│ │ │ ├── adapters/
|
|
91
|
+
│ │ │ │ └── github-storage.ts # GitHub adapter for core
|
|
92
|
+
│ │ │ └── db/ # Database queries
|
|
93
|
+
│ │ └── types/
|
|
94
|
+
│ └── prisma/
|
|
95
|
+
│
|
|
96
|
+
├── specs/ # Keep at root (dogfooding)
|
|
97
|
+
├── docs-site/ # Keep at root
|
|
98
|
+
└── templates/ # Keep at root
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Core Package Architecture
|
|
102
|
+
|
|
103
|
+
**Abstract Storage Interface** (enables platform independence):
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
// packages/core/src/types/storage.ts
|
|
107
|
+
export interface SpecStorage {
|
|
108
|
+
// File operations
|
|
109
|
+
readFile(path: string): Promise<string>;
|
|
110
|
+
writeFile(path: string, content: string): Promise<void>;
|
|
111
|
+
exists(path: string): Promise<boolean>;
|
|
112
|
+
|
|
113
|
+
// Directory operations
|
|
114
|
+
listFiles(dirPath: string): Promise<string[]>;
|
|
115
|
+
listDirs(dirPath: string): Promise<string[]>;
|
|
116
|
+
|
|
117
|
+
// Metadata
|
|
118
|
+
getFileStats?(path: string): Promise<{ size: number; modified: Date }>;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// CLI adapter (Node.js fs)
|
|
122
|
+
export class FileSystemStorage implements SpecStorage {
|
|
123
|
+
async readFile(path: string): Promise<string> {
|
|
124
|
+
return fs.readFile(path, 'utf-8');
|
|
125
|
+
}
|
|
126
|
+
// ... etc
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Web adapter (GitHub API via Octokit)
|
|
130
|
+
export class GitHubStorage implements SpecStorage {
|
|
131
|
+
constructor(private octokit: Octokit, private owner: string, private repo: string) {}
|
|
132
|
+
|
|
133
|
+
async readFile(path: string): Promise<string> {
|
|
134
|
+
const { data } = await this.octokit.repos.getContent({
|
|
135
|
+
owner: this.owner,
|
|
136
|
+
repo: this.repo,
|
|
137
|
+
path,
|
|
138
|
+
});
|
|
139
|
+
return Buffer.from(data.content, 'base64').toString('utf-8');
|
|
140
|
+
}
|
|
141
|
+
// ... etc
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Core API Design**:
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
// packages/core/src/index.ts
|
|
149
|
+
export * from './types';
|
|
150
|
+
export * from './parsers/frontmatter';
|
|
151
|
+
export * from './parsers/spec-loader';
|
|
152
|
+
export * from './validators';
|
|
153
|
+
export * from './utils';
|
|
154
|
+
|
|
155
|
+
// Example usage in CLI:
|
|
156
|
+
import { SpecLoader, FileSystemStorage } from '@leanspec/core';
|
|
157
|
+
|
|
158
|
+
const storage = new FileSystemStorage();
|
|
159
|
+
const loader = new SpecLoader(storage);
|
|
160
|
+
const specs = await loader.loadAllSpecs({ includeArchived: false });
|
|
161
|
+
|
|
162
|
+
// Example usage in web:
|
|
163
|
+
import { SpecLoader, GitHubStorage } from '@leanspec/web/adapters';
|
|
164
|
+
|
|
165
|
+
const storage = new GitHubStorage(octokit, 'codervisor', 'lean-spec');
|
|
166
|
+
const loader = new SpecLoader(storage);
|
|
167
|
+
const specs = await loader.loadAllSpecs({ includeArchived: false });
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### What Goes in Core?
|
|
171
|
+
|
|
172
|
+
**✅ Include in `@leanspec/core`:**
|
|
173
|
+
- **Type definitions**: `SpecInfo`, `SpecFrontmatter`, `SpecStatus`, `SpecPriority`, etc.
|
|
174
|
+
- **Parsers**: Frontmatter parsing (gray-matter), spec content parsing
|
|
175
|
+
- **Validators**: Frontmatter validation, structure validation, line count, sub-spec validation
|
|
176
|
+
- **Utils**: Stats calculation, insights generation, filtering, sorting
|
|
177
|
+
- **Pure functions**: Any logic that doesn't depend on I/O
|
|
178
|
+
|
|
179
|
+
**❌ Keep in `@leanspec/cli`:**
|
|
180
|
+
- CLI command implementations
|
|
181
|
+
- Terminal output formatting (colors, tables)
|
|
182
|
+
- MCP server logic
|
|
183
|
+
- File system operations (wrapped in adapter)
|
|
184
|
+
- Git operations
|
|
185
|
+
|
|
186
|
+
**❌ Goes in `@leanspec/web`:**
|
|
187
|
+
- Next.js app code
|
|
188
|
+
- React components
|
|
189
|
+
- Database queries
|
|
190
|
+
- GitHub API client
|
|
191
|
+
- Web-specific adapters
|
|
192
|
+
|
|
193
|
+
### Migration Strategy
|
|
194
|
+
|
|
195
|
+
**Phase 1: Setup Monorepo (No Breaking Changes)**
|
|
196
|
+
1. Create `pnpm-workspace.yaml`
|
|
197
|
+
2. Create `packages/core/` structure
|
|
198
|
+
3. Create `packages/cli/` and move existing code
|
|
199
|
+
4. Update import paths in CLI
|
|
200
|
+
5. Ensure all tests pass
|
|
201
|
+
|
|
202
|
+
**Phase 2: Extract Core Package**
|
|
203
|
+
1. Copy shared code to `packages/core/`
|
|
204
|
+
2. Refactor to use abstract storage interface
|
|
205
|
+
3. Update CLI to use `@leanspec/core` + FileSystemStorage
|
|
206
|
+
4. Update MCP server to use `@leanspec/core`
|
|
207
|
+
5. Ensure all tests pass
|
|
208
|
+
|
|
209
|
+
**Phase 3: Optimize & Document**
|
|
210
|
+
1. Add tests for core package
|
|
211
|
+
2. Update documentation
|
|
212
|
+
3. Publish `@leanspec/core` to npm (optional)
|
|
213
|
+
4. Create migration guide
|
|
214
|
+
|
|
215
|
+
## Plan
|
|
216
|
+
|
|
217
|
+
### Phase 1: Monorepo Setup (1-2 days)
|
|
218
|
+
- [ ] Create `pnpm-workspace.yaml` config
|
|
219
|
+
- [ ] Create `packages/` directory structure
|
|
220
|
+
- [ ] Move existing code to `packages/cli/`
|
|
221
|
+
- [ ] Update all import paths in CLI
|
|
222
|
+
- [ ] Update `package.json` workspace dependencies
|
|
223
|
+
- [ ] Run tests to ensure nothing broke
|
|
224
|
+
- [ ] Update CI/CD to handle monorepo structure
|
|
225
|
+
|
|
226
|
+
### Phase 2: Core Package Extraction (3-4 days)
|
|
227
|
+
- [ ] Create `packages/core/` structure
|
|
228
|
+
- [ ] Design abstract `SpecStorage` interface
|
|
229
|
+
- [ ] Extract and refactor `frontmatter.ts` (remove fs dependencies)
|
|
230
|
+
- [ ] Extract and refactor `spec-loader.ts` (use SpecStorage interface)
|
|
231
|
+
- [ ] Extract all validators (pure functions, no refactoring needed)
|
|
232
|
+
- [ ] Extract utils: `spec-stats.ts`, `insights.ts`, `filters.ts`
|
|
233
|
+
- [ ] Create `FileSystemStorage` adapter in CLI package
|
|
234
|
+
- [ ] Update CLI to use `@leanspec/core` + adapter
|
|
235
|
+
- [ ] Update MCP server to use `@leanspec/core` + adapter
|
|
236
|
+
|
|
237
|
+
### Phase 3: Testing & Validation (2-3 days)
|
|
238
|
+
- [ ] Write unit tests for core package
|
|
239
|
+
- [ ] Write integration tests for storage adapters
|
|
240
|
+
- [ ] Run full test suite (ensure >80% coverage maintained)
|
|
241
|
+
- [ ] Benchmark performance (ensure no regression)
|
|
242
|
+
- [ ] Test CLI commands end-to-end
|
|
243
|
+
- [ ] Test MCP server end-to-end
|
|
244
|
+
|
|
245
|
+
### Phase 4: Documentation & Polish (1-2 days)
|
|
246
|
+
- [ ] Document `@leanspec/core` API
|
|
247
|
+
- [ ] Document storage adapter pattern
|
|
248
|
+
- [ ] Update CONTRIBUTING.md with monorepo workflow
|
|
249
|
+
- [ ] Create architecture diagram
|
|
250
|
+
- [ ] Update build and release scripts
|
|
251
|
+
- [ ] Optional: Add Turborepo for build caching
|
|
252
|
+
|
|
253
|
+
## Test
|
|
254
|
+
|
|
255
|
+
### Unit Tests
|
|
256
|
+
- [ ] Core parsers work with string input (no fs dependencies)
|
|
257
|
+
- [ ] Validators work with in-memory data
|
|
258
|
+
- [ ] Utils produce correct calculations
|
|
259
|
+
- [ ] FileSystemStorage adapter works with real files
|
|
260
|
+
- [ ] GitHubStorage adapter works with mocked Octokit
|
|
261
|
+
|
|
262
|
+
### Integration Tests
|
|
263
|
+
- [ ] CLI commands work unchanged
|
|
264
|
+
- [ ] MCP server works unchanged
|
|
265
|
+
- [ ] Spec loading via FileSystemStorage matches old behavior
|
|
266
|
+
- [ ] All existing tests pass with new structure
|
|
267
|
+
|
|
268
|
+
### Performance Tests
|
|
269
|
+
- [ ] No performance regression in CLI operations
|
|
270
|
+
- [ ] Spec loading time unchanged (<10ms)
|
|
271
|
+
- [ ] Memory usage unchanged
|
|
272
|
+
|
|
273
|
+
### Quality Gates
|
|
274
|
+
- [ ] Test coverage >80% maintained
|
|
275
|
+
- [ ] All existing functionality works
|
|
276
|
+
- [ ] No breaking changes for end users
|
|
277
|
+
- [ ] Build succeeds in CI
|
|
278
|
+
|
|
279
|
+
## Notes
|
|
280
|
+
|
|
281
|
+
### Why Monorepo?
|
|
282
|
+
|
|
283
|
+
**Benefits:**
|
|
284
|
+
- ✅ Shared code between CLI and web (30-40% reusable)
|
|
285
|
+
- ✅ Type safety across packages
|
|
286
|
+
- ✅ Atomic commits across changes
|
|
287
|
+
- ✅ Simpler local development
|
|
288
|
+
- ✅ Already using pnpm (workspaces built-in)
|
|
289
|
+
|
|
290
|
+
**Alternatives Considered:**
|
|
291
|
+
|
|
292
|
+
**Option 1: Separate npm package**
|
|
293
|
+
- ❌ More overhead (separate repo, publishing)
|
|
294
|
+
- ❌ Slower iteration (need to publish to test)
|
|
295
|
+
- ❌ Version coordination issues
|
|
296
|
+
|
|
297
|
+
**Option 2: Code duplication**
|
|
298
|
+
- ❌ High risk of drift/inconsistency
|
|
299
|
+
- ❌ Double maintenance burden
|
|
300
|
+
- ❌ Different parsing behavior = bugs
|
|
301
|
+
|
|
302
|
+
**Decision**: Monorepo is best fit for this project's needs.
|
|
303
|
+
|
|
304
|
+
### Dependencies
|
|
305
|
+
|
|
306
|
+
**Required by:**
|
|
307
|
+
- spec 035 (live-specs-showcase) - Needs `@leanspec/core` for GitHub parsing
|
|
308
|
+
- spec 065 (v0.3 launch) - This is a critical path item
|
|
309
|
+
|
|
310
|
+
**Blocks:**
|
|
311
|
+
- Web app development cannot start without shared core
|
|
312
|
+
- GitHub integration needs consistent parsing logic
|
|
313
|
+
|
|
314
|
+
### Migration Path
|
|
315
|
+
|
|
316
|
+
**For end users:**
|
|
317
|
+
- ✅ No breaking changes
|
|
318
|
+
- ✅ CLI commands work identically
|
|
319
|
+
- ✅ MCP server works identically
|
|
320
|
+
- ✅ Same npm package name: `lean-spec`
|
|
321
|
+
|
|
322
|
+
**For contributors:**
|
|
323
|
+
- Updated CONTRIBUTING.md with monorepo workflow
|
|
324
|
+
- Run `pnpm install` at root (installs all packages)
|
|
325
|
+
- Run `pnpm test` at root (tests all packages)
|
|
326
|
+
- Package-specific commands: `pnpm --filter @leanspec/cli test`
|
|
327
|
+
|
|
328
|
+
### Tools & Configuration
|
|
329
|
+
|
|
330
|
+
**Workspace Management:**
|
|
331
|
+
- pnpm workspaces (built-in, already using pnpm)
|
|
332
|
+
- Turborepo (optional - adds build caching, can add later)
|
|
333
|
+
|
|
334
|
+
**TypeScript:**
|
|
335
|
+
- Shared `tsconfig.base.json` at root
|
|
336
|
+
- Package-specific configs extend base
|
|
337
|
+
- Path aliases for clean imports
|
|
338
|
+
|
|
339
|
+
**Testing:**
|
|
340
|
+
- Vitest at root (already using)
|
|
341
|
+
- Run all tests: `pnpm test`
|
|
342
|
+
- Run specific: `pnpm --filter @leanspec/core test`
|
|
343
|
+
|
|
344
|
+
### Open Questions
|
|
345
|
+
|
|
346
|
+
- [ ] Should we publish `@leanspec/core` to npm or keep workspace-only?
|
|
347
|
+
- [ ] Do we need Turborepo now or add later when we have 3+ packages?
|
|
348
|
+
- [ ] Should MCP server be separate package or stay in CLI?
|
|
349
|
+
|
|
350
|
+
### Success Criteria
|
|
351
|
+
|
|
352
|
+
- ✅ Monorepo structure in place
|
|
353
|
+
- ✅ Core package extracted and tested
|
|
354
|
+
- ✅ CLI/MCP work identically to before
|
|
355
|
+
- ✅ Zero breaking changes for users
|
|
356
|
+
- ✅ Ready for web app to consume `@leanspec/core`
|
|
357
|
+
- ✅ All tests passing
|
|
358
|
+
- ✅ Documentation updated
|