@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
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: complete
|
|
3
|
+
created: '2025-11-13'
|
|
4
|
+
tags:
|
|
5
|
+
- refactor
|
|
6
|
+
- mcp
|
|
7
|
+
- architecture
|
|
8
|
+
priority: medium
|
|
9
|
+
created_at: '2025-11-13T14:18:24.298Z'
|
|
10
|
+
related:
|
|
11
|
+
- 079
|
|
12
|
+
updated_at: '2025-11-13T14:40:44.061Z'
|
|
13
|
+
completed_at: '2025-11-13T14:40:44.061Z'
|
|
14
|
+
completed: '2025-11-13'
|
|
15
|
+
transitions:
|
|
16
|
+
- status: complete
|
|
17
|
+
at: '2025-11-13T14:40:44.061Z'
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# MCP Server Modular Architecture
|
|
21
|
+
|
|
22
|
+
> **Status**: ✅ Complete · **Priority**: Medium · **Created**: 2025-11-13 · **Tags**: refactor, mcp, architecture
|
|
23
|
+
|
|
24
|
+
**Project**: lean-spec
|
|
25
|
+
**Team**: Core Development
|
|
26
|
+
|
|
27
|
+
## Overview
|
|
28
|
+
|
|
29
|
+
The `mcp-server.ts` file has grown to **1,302 lines** and **9,807 tokens** (🔴 critical threshold) with 14 tools, 3 resources, and 3 prompts, making it difficult to maintain and extend. All MCP definitions are in a single monolithic file.
|
|
30
|
+
|
|
31
|
+
**Goal**: Refactor MCP server architecture to be maintainable at scale with clear modular organization patterns, following the same principles as spec 079 (CLI refactoring).
|
|
32
|
+
|
|
33
|
+
**Context Economy Impact**: At 9,807 tokens (8.2x the baseline), this file violates our first principle. AI effectiveness drops to ~70%, and the file is difficult to navigate and maintain.
|
|
34
|
+
|
|
35
|
+
## Problems
|
|
36
|
+
|
|
37
|
+
1. **Size**: 1,302 lines / 9,807 tokens in single file (🔴 critical)
|
|
38
|
+
2. **Order**: Tools/resources/prompts not alphabetically sorted
|
|
39
|
+
3. **Duplication**: Data transformation logic scattered throughout
|
|
40
|
+
4. **Mixed concerns**: Helper functions, tool logic, resources, prompts all in one file
|
|
41
|
+
5. **Maintainability**: Adding MCP tools requires editing massive file
|
|
42
|
+
6. **Scalability**: Pattern doesn't scale as we add more integrations
|
|
43
|
+
|
|
44
|
+
## Current Structure
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
mcp-server.ts (1,302 lines)
|
|
48
|
+
├── Type definitions (30 lines)
|
|
49
|
+
├── Helper functions (100 lines)
|
|
50
|
+
│ ├── formatErrorMessage()
|
|
51
|
+
│ ├── specToData()
|
|
52
|
+
│ ├── listSpecsData()
|
|
53
|
+
│ ├── searchSpecsData()
|
|
54
|
+
│ ├── readSpecData()
|
|
55
|
+
│ ├── getStatsData()
|
|
56
|
+
│ ├── getBoardData()
|
|
57
|
+
│ └── getDepsData()
|
|
58
|
+
├── 14 Tools (~800 lines)
|
|
59
|
+
│ ├── list, search, view, create, update
|
|
60
|
+
│ ├── stats, board, deps
|
|
61
|
+
│ ├── archive, files, check, validate
|
|
62
|
+
│ ├── backfill, tokens
|
|
63
|
+
├── 3 Resources (~150 lines)
|
|
64
|
+
│ ├── spec://{specPath}
|
|
65
|
+
│ ├── board://kanban
|
|
66
|
+
│ └── stats://overview
|
|
67
|
+
├── 3 Prompts (~100 lines)
|
|
68
|
+
│ ├── create-feature-spec
|
|
69
|
+
│ ├── update-spec-status
|
|
70
|
+
│ └── find-related-specs
|
|
71
|
+
└── Main entry (~20 lines)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Design
|
|
75
|
+
|
|
76
|
+
### Pattern: Modular MCP Components
|
|
77
|
+
|
|
78
|
+
Extract MCP definitions into separate modules, following Model Context Protocol patterns used by servers like `@modelcontextprotocol/server-postgres`, `@modelcontextprotocol/server-filesystem`:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
mcp/
|
|
82
|
+
types.ts - Shared type definitions
|
|
83
|
+
helpers.ts - Utility functions (formatErrorMessage, specToData)
|
|
84
|
+
tools/
|
|
85
|
+
registry.ts - registerTools(server)
|
|
86
|
+
list.ts - listTool definition + listSpecsData()
|
|
87
|
+
search.ts - searchTool definition + searchSpecsData()
|
|
88
|
+
view.ts - viewTool definition + readSpecData()
|
|
89
|
+
create.ts - createTool definition
|
|
90
|
+
update.ts - updateTool definition
|
|
91
|
+
stats.ts - statsTool definition + getStatsData()
|
|
92
|
+
board.ts - boardTool definition + getBoardData()
|
|
93
|
+
deps.ts - depsTool definition + getDepsData()
|
|
94
|
+
archive.ts - archiveTool definition
|
|
95
|
+
files.ts - filesTool definition
|
|
96
|
+
check.ts - checkTool definition
|
|
97
|
+
validate.ts - validateTool definition
|
|
98
|
+
backfill.ts - backfillTool definition
|
|
99
|
+
tokens.ts - tokensTool definition
|
|
100
|
+
resources/
|
|
101
|
+
registry.ts - registerResources(server)
|
|
102
|
+
spec.ts - spec://{specPath} resource
|
|
103
|
+
board.ts - board://kanban resource
|
|
104
|
+
stats.ts - stats://overview resource
|
|
105
|
+
prompts/
|
|
106
|
+
registry.ts - registerPrompts(server)
|
|
107
|
+
create-feature-spec.ts
|
|
108
|
+
update-spec-status.ts
|
|
109
|
+
find-related-specs.ts
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Each tool file exports:
|
|
113
|
+
1. **Tool definition function**: e.g., `listTool()` that returns MCP tool config
|
|
114
|
+
2. **Tool handler function**: e.g., `listSpecsData()` with business logic
|
|
115
|
+
|
|
116
|
+
### Architecture
|
|
117
|
+
|
|
118
|
+
**Before (current)**:
|
|
119
|
+
```typescript
|
|
120
|
+
// mcp-server.ts (1,302 lines)
|
|
121
|
+
async function createMcpServer() {
|
|
122
|
+
const server = new McpServer(...);
|
|
123
|
+
|
|
124
|
+
// Tool: list
|
|
125
|
+
server.registerTool('list', {...}, async (input) => {
|
|
126
|
+
// 50 lines of logic
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
// Tool: search
|
|
130
|
+
server.registerTool('search', {...}, async (input) => {
|
|
131
|
+
// 60 lines of logic
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
// ... 12 more tools
|
|
135
|
+
// ... 3 resources
|
|
136
|
+
// ... 3 prompts
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**After (proposed)**:
|
|
141
|
+
```typescript
|
|
142
|
+
// mcp-server.ts (~100 lines)
|
|
143
|
+
import { registerTools } from './mcp/tools/registry.js';
|
|
144
|
+
import { registerResources } from './mcp/resources/registry.js';
|
|
145
|
+
import { registerPrompts } from './mcp/prompts/registry.js';
|
|
146
|
+
|
|
147
|
+
async function createMcpServer() {
|
|
148
|
+
const server = new McpServer({
|
|
149
|
+
name: 'lean-spec',
|
|
150
|
+
version: packageJson.version,
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
registerTools(server);
|
|
154
|
+
registerResources(server);
|
|
155
|
+
registerPrompts(server);
|
|
156
|
+
|
|
157
|
+
return server;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// mcp/tools/registry.ts
|
|
161
|
+
export function registerTools(server: McpServer) {
|
|
162
|
+
// Alphabetically sorted
|
|
163
|
+
server.registerTool(...archiveTool());
|
|
164
|
+
server.registerTool(...backfillTool());
|
|
165
|
+
server.registerTool(...boardTool());
|
|
166
|
+
server.registerTool(...checkTool());
|
|
167
|
+
server.registerTool(...createTool());
|
|
168
|
+
server.registerTool(...depsTool());
|
|
169
|
+
server.registerTool(...filesTool());
|
|
170
|
+
server.registerTool(...listTool());
|
|
171
|
+
server.registerTool(...searchTool());
|
|
172
|
+
server.registerTool(...statsTool());
|
|
173
|
+
server.registerTool(...tokensTool());
|
|
174
|
+
server.registerTool(...updateTool());
|
|
175
|
+
server.registerTool(...validateTool());
|
|
176
|
+
server.registerTool(...viewTool());
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// mcp/tools/list.ts (~80 lines)
|
|
180
|
+
import { specToData } from '../helpers.js';
|
|
181
|
+
import { ToolDefinition } from '../types.js';
|
|
182
|
+
|
|
183
|
+
export function listTool(): ToolDefinition {
|
|
184
|
+
return {
|
|
185
|
+
name: 'list',
|
|
186
|
+
config: {
|
|
187
|
+
title: 'List Specs',
|
|
188
|
+
description: '...',
|
|
189
|
+
inputSchema: {...},
|
|
190
|
+
outputSchema: {...},
|
|
191
|
+
},
|
|
192
|
+
handler: async (input) => {
|
|
193
|
+
const specs = await listSpecsData(input);
|
|
194
|
+
return {
|
|
195
|
+
content: [{ type: 'text', text: JSON.stringify({ specs }, null, 2) }],
|
|
196
|
+
structuredContent: { specs },
|
|
197
|
+
};
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
export async function listSpecsData(options: {
|
|
203
|
+
status?: SpecStatus | SpecStatus[];
|
|
204
|
+
tags?: string[];
|
|
205
|
+
priority?: SpecPriority | SpecPriority[];
|
|
206
|
+
assignee?: string;
|
|
207
|
+
includeArchived?: boolean;
|
|
208
|
+
}): Promise<SpecData[]> {
|
|
209
|
+
// existing logic (60 lines)
|
|
210
|
+
}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Benefits
|
|
214
|
+
|
|
215
|
+
1. **Context Economy**: Files <500 tokens each (vs 9,807 in monolith)
|
|
216
|
+
2. **Alphabetical by default**: Registry enforces order
|
|
217
|
+
3. **Single responsibility**: Each file = one tool/resource/prompt
|
|
218
|
+
4. **Easier to extend**: Create file, export definition, add to registry
|
|
219
|
+
5. **Testable**: Can test tools independently
|
|
220
|
+
6. **Clear structure**: Tool definition co-located with data logic
|
|
221
|
+
7. **Reusable helpers**: Shared types/utilities in dedicated modules
|
|
222
|
+
|
|
223
|
+
### File Size Estimates
|
|
224
|
+
|
|
225
|
+
Based on current code:
|
|
226
|
+
- `mcp-server.ts`: 1,302 lines → **~100 lines** (92% reduction)
|
|
227
|
+
- `mcp/types.ts`: **~50 lines** (type definitions)
|
|
228
|
+
- `mcp/helpers.ts`: **~80 lines** (shared utilities)
|
|
229
|
+
- Each tool file: **~60-100 lines** (definition + logic)
|
|
230
|
+
- Each resource file: **~40-60 lines**
|
|
231
|
+
- Each prompt file: **~30-50 lines**
|
|
232
|
+
- Registry files: **~20-30 lines each**
|
|
233
|
+
|
|
234
|
+
**Total impact**: Same functionality, but maximum file size ~150 lines vs 1,302 lines.
|
|
235
|
+
|
|
236
|
+
## Plan
|
|
237
|
+
|
|
238
|
+
### Phase 1: Create Module Structure
|
|
239
|
+
- [ ] Create `packages/cli/src/mcp/` directory structure
|
|
240
|
+
- [ ] Create `types.ts` with shared type definitions
|
|
241
|
+
- [ ] Create `helpers.ts` with utility functions (formatErrorMessage, specToData)
|
|
242
|
+
- [ ] Create registry files: `tools/registry.ts`, `resources/registry.ts`, `prompts/registry.ts`
|
|
243
|
+
|
|
244
|
+
### Phase 2: Extract Tools (14 tools)
|
|
245
|
+
- [ ] Extract alphabetically sorted tools to individual files:
|
|
246
|
+
- [ ] `archive.ts` - archiveTool + archiveSpec logic
|
|
247
|
+
- [ ] `backfill.ts` - backfillTool + backfillTimestamps logic
|
|
248
|
+
- [ ] `board.ts` - boardTool + getBoardData logic
|
|
249
|
+
- [ ] `check.ts` - checkTool + sequence conflict detection
|
|
250
|
+
- [ ] `create.ts` - createTool + createSpec logic
|
|
251
|
+
- [ ] `deps.ts` - depsTool + getDepsData logic
|
|
252
|
+
- [ ] `files.ts` - filesTool + file listing logic
|
|
253
|
+
- [ ] `list.ts` - listTool + listSpecsData logic
|
|
254
|
+
- [ ] `search.ts` - searchTool + searchSpecsData logic
|
|
255
|
+
- [ ] `stats.ts` - statsTool + getStatsData logic
|
|
256
|
+
- [ ] `tokens.ts` - tokensTool + token counting logic
|
|
257
|
+
- [ ] `update.ts` - updateTool + updateSpec logic
|
|
258
|
+
- [ ] `validate.ts` - validateTool + validation logic
|
|
259
|
+
- [ ] `view.ts` - viewTool + readSpecData logic
|
|
260
|
+
- [ ] Implement `registerTools()` in registry with alphabetical order
|
|
261
|
+
|
|
262
|
+
### Phase 3: Extract Resources (3 resources)
|
|
263
|
+
- [ ] Extract resources to individual files:
|
|
264
|
+
- [ ] `resources/board.ts` - board://kanban resource
|
|
265
|
+
- [ ] `resources/spec.ts` - spec://{specPath} resource
|
|
266
|
+
- [ ] `resources/stats.ts` - stats://overview resource
|
|
267
|
+
- [ ] Implement `registerResources()` in registry
|
|
268
|
+
|
|
269
|
+
### Phase 4: Extract Prompts (3 prompts)
|
|
270
|
+
- [ ] Extract prompts to individual files:
|
|
271
|
+
- [ ] `prompts/create-feature-spec.ts`
|
|
272
|
+
- [ ] `prompts/find-related-specs.ts`
|
|
273
|
+
- [ ] `prompts/update-spec-status.ts`
|
|
274
|
+
- [ ] Implement `registerPrompts()` in registry
|
|
275
|
+
|
|
276
|
+
### Phase 5: Refactor Main Server File
|
|
277
|
+
- [ ] Update `mcp-server.ts` to use registries
|
|
278
|
+
- [ ] Remove all tool/resource/prompt definitions
|
|
279
|
+
- [ ] Keep only server setup + transport initialization
|
|
280
|
+
- [ ] Verify reduced to ~100 lines
|
|
281
|
+
- [ ] Update imports to use new module structure
|
|
282
|
+
|
|
283
|
+
### Phase 6: Validation
|
|
284
|
+
- [ ] Run `pnpm build` - ensure TypeScript compiles
|
|
285
|
+
- [ ] Test MCP server startup: verify no errors
|
|
286
|
+
- [ ] Test representative tools:
|
|
287
|
+
- [ ] `list` - basic filtering
|
|
288
|
+
- [ ] `search` - intelligent search
|
|
289
|
+
- [ ] `view` - main spec + sub-spec files
|
|
290
|
+
- [ ] `create` - new spec creation
|
|
291
|
+
- [ ] `tokens` - token counting
|
|
292
|
+
- [ ] Verify all 14 tools + 3 resources + 3 prompts registered
|
|
293
|
+
- [ ] Run token count: `lean-spec tokens packages/cli/src/mcp-server.ts`
|
|
294
|
+
- [ ] Confirm main file <2,000 tokens
|
|
295
|
+
|
|
296
|
+
## Test
|
|
297
|
+
|
|
298
|
+
**Validation criteria**:
|
|
299
|
+
- ✅ Main `mcp-server.ts` reduced to <150 lines
|
|
300
|
+
- ✅ Token count <2,000 (from 9,807)
|
|
301
|
+
- ✅ Tools appear alphabetically in MCP tool list
|
|
302
|
+
- ✅ All 14 tools + 3 resources + 3 prompts functional
|
|
303
|
+
- ✅ MCP server starts without errors
|
|
304
|
+
- ✅ No breaking changes to tool behavior
|
|
305
|
+
|
|
306
|
+
**Manual testing**:
|
|
307
|
+
```bash
|
|
308
|
+
# Build and verify compilation
|
|
309
|
+
pnpm build
|
|
310
|
+
|
|
311
|
+
# Test MCP server startup
|
|
312
|
+
node bin/lean-spec.js mcp
|
|
313
|
+
|
|
314
|
+
# Test in MCP client (e.g., Claude Desktop)
|
|
315
|
+
# - List tools: should show 14 tools alphabetically
|
|
316
|
+
# - Test list tool with filters
|
|
317
|
+
# - Test search tool with query
|
|
318
|
+
# - Test view tool with spec path
|
|
319
|
+
# - Test create tool with new spec
|
|
320
|
+
# - Test tokens tool with spec path
|
|
321
|
+
|
|
322
|
+
# Verify token reduction
|
|
323
|
+
lean-spec tokens packages/cli/src/mcp-server.ts
|
|
324
|
+
# Should show <2,000 tokens (was 9,807)
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
**Automated testing**:
|
|
328
|
+
- [ ] Existing MCP integration tests pass (if any)
|
|
329
|
+
- [ ] Tool registration tests
|
|
330
|
+
- [ ] Resource registration tests
|
|
331
|
+
- [ ] Prompt registration tests
|
|
332
|
+
|
|
333
|
+
## Notes
|
|
334
|
+
|
|
335
|
+
### Comparison to Spec 079 (CLI Refactoring)
|
|
336
|
+
|
|
337
|
+
This spec follows the same refactoring pattern as spec 079:
|
|
338
|
+
|
|
339
|
+
| Aspect | CLI (079) | MCP (080) |
|
|
340
|
+
|--------|-----------|-----------|
|
|
341
|
+
| **Size** | 702 lines | 1,302 lines |
|
|
342
|
+
| **Tokens** | ~5,000 | 9,807 (🔴 critical) |
|
|
343
|
+
| **Components** | 20+ commands | 14 tools + 3 resources + 3 prompts |
|
|
344
|
+
| **Pattern** | Command registry | Tool/resource/prompt registries |
|
|
345
|
+
| **Target** | <200 lines | <150 lines |
|
|
346
|
+
| **Reduction** | ~72% | ~88% |
|
|
347
|
+
|
|
348
|
+
### Alternatives Considered
|
|
349
|
+
|
|
350
|
+
1. **Keep monolithic, just refactor**: Doesn't solve Context Economy violation
|
|
351
|
+
2. **Group tools by category**: Still too large per file, harder to find specific tools
|
|
352
|
+
3. **Dynamic tool loading**: Over-engineering, adds complexity
|
|
353
|
+
4. **Shared tools/resources file**: Doesn't solve scalability
|
|
354
|
+
|
|
355
|
+
### Migration Safety
|
|
356
|
+
|
|
357
|
+
- MCP server interface stays unchanged (same tool names/schemas)
|
|
358
|
+
- Business logic moves but doesn't change
|
|
359
|
+
- Backward compatible with existing MCP clients
|
|
360
|
+
- No breaking changes to tool signatures
|
|
361
|
+
|
|
362
|
+
### Future Enhancements
|
|
363
|
+
|
|
364
|
+
- Auto-generate MCP tool schemas from command definitions
|
|
365
|
+
- Shared tool/command definitions (DRY between CLI and MCP)
|
|
366
|
+
- Plugin system for custom MCP tools
|
|
367
|
+
- Tool versioning support
|
|
368
|
+
- Tool deprecation workflow
|
|
369
|
+
|
|
370
|
+
### Related Specs
|
|
371
|
+
|
|
372
|
+
- **079-cli-alphabetical-organization**: Same pattern, CLI domain
|
|
373
|
+
- **067-monorepo-core-extraction**: Module organization principles
|
|
374
|
+
- **071-simplified-token-validation**: Token thresholds (this spec violates them)
|
|
375
|
+
|
|
376
|
+
### Context Economy Analysis
|
|
377
|
+
|
|
378
|
+
**Current state**: 9,807 tokens = 8.2x baseline
|
|
379
|
+
- AI effectiveness: ~70% (hypothesis from spec 066)
|
|
380
|
+
- Cost multiplier: 8.2x
|
|
381
|
+
- Maintainability: Poor (scrolling, finding tools)
|
|
382
|
+
|
|
383
|
+
**Target state**: <2,000 tokens per file
|
|
384
|
+
- AI effectiveness: 100% (optimal)
|
|
385
|
+
- Cost multiplier: ~1.7x (acceptable)
|
|
386
|
+
- Maintainability: Excellent (alphabetical, modular)
|
|
387
|
+
|
|
388
|
+
**Impact**: This refactor is not just about organization—it's about staying within Context Economy thresholds to maintain AI effectiveness and developer productivity.
|