@mcp-graph-workflow/mcp-graph 3.0.0
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/LICENSE +21 -0
- package/README.md +157 -0
- package/dist/api/middleware/error-handler.d.ts +3 -0
- package/dist/api/middleware/error-handler.d.ts.map +1 -0
- package/dist/api/middleware/error-handler.js +48 -0
- package/dist/api/middleware/error-handler.js.map +1 -0
- package/dist/api/middleware/request-logger.d.ts +6 -0
- package/dist/api/middleware/request-logger.d.ts.map +1 -0
- package/dist/api/middleware/request-logger.js +19 -0
- package/dist/api/middleware/request-logger.js.map +1 -0
- package/dist/api/middleware/validate.d.ts +5 -0
- package/dist/api/middleware/validate.d.ts.map +1 -0
- package/dist/api/middleware/validate.js +23 -0
- package/dist/api/middleware/validate.js.map +1 -0
- package/dist/api/router.d.ts +11 -0
- package/dist/api/router.d.ts.map +1 -0
- package/dist/api/router.js +51 -0
- package/dist/api/router.js.map +1 -0
- package/dist/api/routes/benchmark.d.ts +4 -0
- package/dist/api/routes/benchmark.d.ts.map +1 -0
- package/dist/api/routes/benchmark.js +86 -0
- package/dist/api/routes/benchmark.js.map +1 -0
- package/dist/api/routes/capture.d.ts +3 -0
- package/dist/api/routes/capture.d.ts.map +1 -0
- package/dist/api/routes/capture.js +31 -0
- package/dist/api/routes/capture.js.map +1 -0
- package/dist/api/routes/context.d.ts +4 -0
- package/dist/api/routes/context.d.ts.map +1 -0
- package/dist/api/routes/context.js +25 -0
- package/dist/api/routes/context.js.map +1 -0
- package/dist/api/routes/docs-cache.d.ts +4 -0
- package/dist/api/routes/docs-cache.d.ts.map +1 -0
- package/dist/api/routes/docs-cache.js +79 -0
- package/dist/api/routes/docs-cache.js.map +1 -0
- package/dist/api/routes/edges.d.ts +4 -0
- package/dist/api/routes/edges.d.ts.map +1 -0
- package/dist/api/routes/edges.js +50 -0
- package/dist/api/routes/edges.js.map +1 -0
- package/dist/api/routes/events.d.ts +4 -0
- package/dist/api/routes/events.d.ts.map +1 -0
- package/dist/api/routes/events.js +37 -0
- package/dist/api/routes/events.js.map +1 -0
- package/dist/api/routes/gitnexus.d.ts +12 -0
- package/dist/api/routes/gitnexus.d.ts.map +1 -0
- package/dist/api/routes/gitnexus.js +162 -0
- package/dist/api/routes/gitnexus.js.map +1 -0
- package/dist/api/routes/graph.d.ts +4 -0
- package/dist/api/routes/graph.d.ts.map +1 -0
- package/dist/api/routes/graph.js +39 -0
- package/dist/api/routes/graph.js.map +1 -0
- package/dist/api/routes/import.d.ts +4 -0
- package/dist/api/routes/import.d.ts.map +1 -0
- package/dist/api/routes/import.js +92 -0
- package/dist/api/routes/import.js.map +1 -0
- package/dist/api/routes/insights.d.ts +4 -0
- package/dist/api/routes/insights.d.ts.map +1 -0
- package/dist/api/routes/insights.js +40 -0
- package/dist/api/routes/insights.js.map +1 -0
- package/dist/api/routes/integrations.d.ts +4 -0
- package/dist/api/routes/integrations.d.ts.map +1 -0
- package/dist/api/routes/integrations.js +85 -0
- package/dist/api/routes/integrations.js.map +1 -0
- package/dist/api/routes/knowledge.d.ts +8 -0
- package/dist/api/routes/knowledge.d.ts.map +1 -0
- package/dist/api/routes/knowledge.js +144 -0
- package/dist/api/routes/knowledge.js.map +1 -0
- package/dist/api/routes/nodes.d.ts +4 -0
- package/dist/api/routes/nodes.d.ts.map +1 -0
- package/dist/api/routes/nodes.js +123 -0
- package/dist/api/routes/nodes.js.map +1 -0
- package/dist/api/routes/project.d.ts +4 -0
- package/dist/api/routes/project.d.ts.map +1 -0
- package/dist/api/routes/project.js +70 -0
- package/dist/api/routes/project.js.map +1 -0
- package/dist/api/routes/rag.d.ts +8 -0
- package/dist/api/routes/rag.d.ts.map +1 -0
- package/dist/api/routes/rag.js +70 -0
- package/dist/api/routes/rag.js.map +1 -0
- package/dist/api/routes/search.d.ts +4 -0
- package/dist/api/routes/search.d.ts.map +1 -0
- package/dist/api/routes/search.js +25 -0
- package/dist/api/routes/search.js.map +1 -0
- package/dist/api/routes/skills.d.ts +3 -0
- package/dist/api/routes/skills.d.ts.map +1 -0
- package/dist/api/routes/skills.js +16 -0
- package/dist/api/routes/skills.js.map +1 -0
- package/dist/api/routes/stats.d.ts +4 -0
- package/dist/api/routes/stats.d.ts.map +1 -0
- package/dist/api/routes/stats.js +14 -0
- package/dist/api/routes/stats.js.map +1 -0
- package/dist/cli/commands/import-cmd.d.ts +3 -0
- package/dist/cli/commands/import-cmd.d.ts.map +1 -0
- package/dist/cli/commands/import-cmd.js +38 -0
- package/dist/cli/commands/import-cmd.js.map +1 -0
- package/dist/cli/commands/index-cmd.d.ts +3 -0
- package/dist/cli/commands/index-cmd.d.ts.map +1 -0
- package/dist/cli/commands/index-cmd.js +50 -0
- package/dist/cli/commands/index-cmd.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +24 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +3 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +18 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +3 -0
- package/dist/cli/commands/stats.d.ts.map +1 -0
- package/dist/cli/commands/stats.js +39 -0
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +30 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/capture/content-extractor.d.ts +21 -0
- package/dist/core/capture/content-extractor.d.ts.map +1 -0
- package/dist/core/capture/content-extractor.js +74 -0
- package/dist/core/capture/content-extractor.js.map +1 -0
- package/dist/core/capture/validate-runner.d.ts +28 -0
- package/dist/core/capture/validate-runner.d.ts.map +1 -0
- package/dist/core/capture/validate-runner.js +42 -0
- package/dist/core/capture/validate-runner.js.map +1 -0
- package/dist/core/capture/web-capture.d.ts +20 -0
- package/dist/core/capture/web-capture.d.ts.map +1 -0
- package/dist/core/capture/web-capture.js +51 -0
- package/dist/core/capture/web-capture.js.map +1 -0
- package/dist/core/config/ai-memory-generator.d.ts +14 -0
- package/dist/core/config/ai-memory-generator.d.ts.map +1 -0
- package/dist/core/config/ai-memory-generator.js +130 -0
- package/dist/core/config/ai-memory-generator.js.map +1 -0
- package/dist/core/config/config-loader.d.ts +3 -0
- package/dist/core/config/config-loader.d.ts.map +1 -0
- package/dist/core/config/config-loader.js +48 -0
- package/dist/core/config/config-loader.js.map +1 -0
- package/dist/core/config/config-schema.d.ts +12 -0
- package/dist/core/config/config-schema.d.ts.map +1 -0
- package/dist/core/config/config-schema.js +13 -0
- package/dist/core/config/config-schema.js.map +1 -0
- package/dist/core/context/bm25-compressor.d.ts +21 -0
- package/dist/core/context/bm25-compressor.d.ts.map +1 -0
- package/dist/core/context/bm25-compressor.js +87 -0
- package/dist/core/context/bm25-compressor.js.map +1 -0
- package/dist/core/context/compact-context.d.ts +56 -0
- package/dist/core/context/compact-context.d.ts.map +1 -0
- package/dist/core/context/compact-context.js +170 -0
- package/dist/core/context/compact-context.js.map +1 -0
- package/dist/core/context/context-assembler.d.ts +43 -0
- package/dist/core/context/context-assembler.d.ts.map +1 -0
- package/dist/core/context/context-assembler.js +113 -0
- package/dist/core/context/context-assembler.js.map +1 -0
- package/dist/core/context/rag-context.d.ts +44 -0
- package/dist/core/context/rag-context.d.ts.map +1 -0
- package/dist/core/context/rag-context.js +93 -0
- package/dist/core/context/rag-context.js.map +1 -0
- package/dist/core/context/tiered-context.d.ts +35 -0
- package/dist/core/context/tiered-context.d.ts.map +1 -0
- package/dist/core/context/tiered-context.js +92 -0
- package/dist/core/context/tiered-context.js.map +1 -0
- package/dist/core/context/token-estimator.d.ts +7 -0
- package/dist/core/context/token-estimator.d.ts.map +1 -0
- package/dist/core/context/token-estimator.js +9 -0
- package/dist/core/context/token-estimator.js.map +1 -0
- package/dist/core/docs/docs-cache-store.d.ts +24 -0
- package/dist/core/docs/docs-cache-store.d.ts.map +1 -0
- package/dist/core/docs/docs-cache-store.js +61 -0
- package/dist/core/docs/docs-cache-store.js.map +1 -0
- package/dist/core/docs/docs-syncer.d.ts +13 -0
- package/dist/core/docs/docs-syncer.d.ts.map +1 -0
- package/dist/core/docs/docs-syncer.js +38 -0
- package/dist/core/docs/docs-syncer.js.map +1 -0
- package/dist/core/docs/mcp-context7-fetcher.d.ts +17 -0
- package/dist/core/docs/mcp-context7-fetcher.d.ts.map +1 -0
- package/dist/core/docs/mcp-context7-fetcher.js +87 -0
- package/dist/core/docs/mcp-context7-fetcher.js.map +1 -0
- package/dist/core/docs/stack-detector.d.ts +21 -0
- package/dist/core/docs/stack-detector.d.ts.map +1 -0
- package/dist/core/docs/stack-detector.js +101 -0
- package/dist/core/docs/stack-detector.js.map +1 -0
- package/dist/core/events/event-bus.d.ts +26 -0
- package/dist/core/events/event-bus.d.ts.map +1 -0
- package/dist/core/events/event-bus.js +47 -0
- package/dist/core/events/event-bus.js.map +1 -0
- package/dist/core/events/event-types.d.ts +71 -0
- package/dist/core/events/event-types.d.ts.map +1 -0
- package/dist/core/events/event-types.js +2 -0
- package/dist/core/events/event-types.js.map +1 -0
- package/dist/core/graph/graph-indexes.d.ts +3 -0
- package/dist/core/graph/graph-indexes.d.ts.map +1 -0
- package/dist/core/graph/graph-indexes.js +28 -0
- package/dist/core/graph/graph-indexes.js.map +1 -0
- package/dist/core/graph/graph-types.d.ts +72 -0
- package/dist/core/graph/graph-types.d.ts.map +1 -0
- package/dist/core/graph/graph-types.js +2 -0
- package/dist/core/graph/graph-types.js.map +1 -0
- package/dist/core/graph/mermaid-export.d.ts +9 -0
- package/dist/core/graph/mermaid-export.d.ts.map +1 -0
- package/dist/core/graph/mermaid-export.js +80 -0
- package/dist/core/graph/mermaid-export.js.map +1 -0
- package/dist/core/importer/import-prd.d.ts +7 -0
- package/dist/core/importer/import-prd.d.ts.map +1 -0
- package/dist/core/importer/import-prd.js +7 -0
- package/dist/core/importer/import-prd.js.map +1 -0
- package/dist/core/importer/prd-to-graph.d.ts +18 -0
- package/dist/core/importer/prd-to-graph.d.ts.map +1 -0
- package/dist/core/importer/prd-to-graph.js +195 -0
- package/dist/core/importer/prd-to-graph.js.map +1 -0
- package/dist/core/insights/bottleneck-detector.d.ts +31 -0
- package/dist/core/insights/bottleneck-detector.d.ts.map +1 -0
- package/dist/core/insights/bottleneck-detector.js +84 -0
- package/dist/core/insights/bottleneck-detector.js.map +1 -0
- package/dist/core/insights/metrics-calculator.d.ts +31 -0
- package/dist/core/insights/metrics-calculator.d.ts.map +1 -0
- package/dist/core/insights/metrics-calculator.js +78 -0
- package/dist/core/insights/metrics-calculator.js.map +1 -0
- package/dist/core/insights/skill-recommender.d.ts +21 -0
- package/dist/core/insights/skill-recommender.d.ts.map +1 -0
- package/dist/core/insights/skill-recommender.js +129 -0
- package/dist/core/insights/skill-recommender.js.map +1 -0
- package/dist/core/integrations/enriched-context.d.ts +24 -0
- package/dist/core/integrations/enriched-context.d.ts.map +1 -0
- package/dist/core/integrations/enriched-context.js +89 -0
- package/dist/core/integrations/enriched-context.js.map +1 -0
- package/dist/core/integrations/gitnexus-launcher.d.ts +62 -0
- package/dist/core/integrations/gitnexus-launcher.d.ts.map +1 -0
- package/dist/core/integrations/gitnexus-launcher.js +241 -0
- package/dist/core/integrations/gitnexus-launcher.js.map +1 -0
- package/dist/core/integrations/gitnexus-queries.d.ts +55 -0
- package/dist/core/integrations/gitnexus-queries.d.ts.map +1 -0
- package/dist/core/integrations/gitnexus-queries.js +168 -0
- package/dist/core/integrations/gitnexus-queries.js.map +1 -0
- package/dist/core/integrations/integration-orchestrator.d.ts +51 -0
- package/dist/core/integrations/integration-orchestrator.d.ts.map +1 -0
- package/dist/core/integrations/integration-orchestrator.js +118 -0
- package/dist/core/integrations/integration-orchestrator.js.map +1 -0
- package/dist/core/integrations/mcp-deps-installer.d.ts +21 -0
- package/dist/core/integrations/mcp-deps-installer.d.ts.map +1 -0
- package/dist/core/integrations/mcp-deps-installer.js +114 -0
- package/dist/core/integrations/mcp-deps-installer.js.map +1 -0
- package/dist/core/integrations/mcp-servers-config.d.ts +21 -0
- package/dist/core/integrations/mcp-servers-config.d.ts.map +1 -0
- package/dist/core/integrations/mcp-servers-config.js +58 -0
- package/dist/core/integrations/mcp-servers-config.js.map +1 -0
- package/dist/core/integrations/serena-reader.d.ts +18 -0
- package/dist/core/integrations/serena-reader.d.ts.map +1 -0
- package/dist/core/integrations/serena-reader.js +68 -0
- package/dist/core/integrations/serena-reader.js.map +1 -0
- package/dist/core/integrations/tool-status.d.ts +18 -0
- package/dist/core/integrations/tool-status.d.ts.map +1 -0
- package/dist/core/integrations/tool-status.js +97 -0
- package/dist/core/integrations/tool-status.js.map +1 -0
- package/dist/core/parser/classify.d.ts +31 -0
- package/dist/core/parser/classify.d.ts.map +1 -0
- package/dist/core/parser/classify.js +128 -0
- package/dist/core/parser/classify.js.map +1 -0
- package/dist/core/parser/extract.d.ts +21 -0
- package/dist/core/parser/extract.d.ts.map +1 -0
- package/dist/core/parser/extract.js +66 -0
- package/dist/core/parser/extract.js.map +1 -0
- package/dist/core/parser/file-reader.d.ts +13 -0
- package/dist/core/parser/file-reader.d.ts.map +1 -0
- package/dist/core/parser/file-reader.js +52 -0
- package/dist/core/parser/file-reader.js.map +1 -0
- package/dist/core/parser/normalize.d.ts +9 -0
- package/dist/core/parser/normalize.d.ts.map +1 -0
- package/dist/core/parser/normalize.js +22 -0
- package/dist/core/parser/normalize.js.map +1 -0
- package/dist/core/parser/read-file.d.ts +7 -0
- package/dist/core/parser/read-file.d.ts.map +1 -0
- package/dist/core/parser/read-file.js +17 -0
- package/dist/core/parser/read-file.js.map +1 -0
- package/dist/core/parser/read-html.d.ts +7 -0
- package/dist/core/parser/read-html.d.ts.map +1 -0
- package/dist/core/parser/read-html.js +51 -0
- package/dist/core/parser/read-html.js.map +1 -0
- package/dist/core/parser/read-pdf.d.ts +10 -0
- package/dist/core/parser/read-pdf.d.ts.map +1 -0
- package/dist/core/parser/read-pdf.js +16 -0
- package/dist/core/parser/read-pdf.js.map +1 -0
- package/dist/core/parser/segment.d.ts +13 -0
- package/dist/core/parser/segment.d.ts.map +1 -0
- package/dist/core/parser/segment.js +53 -0
- package/dist/core/parser/segment.js.map +1 -0
- package/dist/core/planner/decompose.d.ts +25 -0
- package/dist/core/planner/decompose.d.ts.map +1 -0
- package/dist/core/planner/decompose.js +100 -0
- package/dist/core/planner/decompose.js.map +1 -0
- package/dist/core/planner/dependency-chain.d.ts +20 -0
- package/dist/core/planner/dependency-chain.d.ts.map +1 -0
- package/dist/core/planner/dependency-chain.js +163 -0
- package/dist/core/planner/dependency-chain.js.map +1 -0
- package/dist/core/planner/enhanced-next.d.ts +25 -0
- package/dist/core/planner/enhanced-next.d.ts.map +1 -0
- package/dist/core/planner/enhanced-next.js +88 -0
- package/dist/core/planner/enhanced-next.js.map +1 -0
- package/dist/core/planner/lifecycle-phase.d.ts +21 -0
- package/dist/core/planner/lifecycle-phase.d.ts.map +1 -0
- package/dist/core/planner/lifecycle-phase.js +93 -0
- package/dist/core/planner/lifecycle-phase.js.map +1 -0
- package/dist/core/planner/next-task.d.ts +16 -0
- package/dist/core/planner/next-task.d.ts.map +1 -0
- package/dist/core/planner/next-task.js +146 -0
- package/dist/core/planner/next-task.js.map +1 -0
- package/dist/core/planner/planning-report.d.ts +38 -0
- package/dist/core/planner/planning-report.d.ts.map +1 -0
- package/dist/core/planner/planning-report.js +140 -0
- package/dist/core/planner/planning-report.js.map +1 -0
- package/dist/core/planner/velocity.d.ts +38 -0
- package/dist/core/planner/velocity.d.ts.map +1 -0
- package/dist/core/planner/velocity.js +92 -0
- package/dist/core/planner/velocity.js.map +1 -0
- package/dist/core/rag/capture-indexer.d.ts +16 -0
- package/dist/core/rag/capture-indexer.d.ts.map +1 -0
- package/dist/core/rag/capture-indexer.js +37 -0
- package/dist/core/rag/capture-indexer.js.map +1 -0
- package/dist/core/rag/chunk-text.d.ts +27 -0
- package/dist/core/rag/chunk-text.d.ts.map +1 -0
- package/dist/core/rag/chunk-text.js +112 -0
- package/dist/core/rag/chunk-text.js.map +1 -0
- package/dist/core/rag/docs-indexer.d.ts +18 -0
- package/dist/core/rag/docs-indexer.d.ts.map +1 -0
- package/dist/core/rag/docs-indexer.js +57 -0
- package/dist/core/rag/docs-indexer.js.map +1 -0
- package/dist/core/rag/embedding-store.d.ts +51 -0
- package/dist/core/rag/embedding-store.d.ts.map +1 -0
- package/dist/core/rag/embedding-store.js +134 -0
- package/dist/core/rag/embedding-store.js.map +1 -0
- package/dist/core/rag/rag-pipeline.d.ts +48 -0
- package/dist/core/rag/rag-pipeline.d.ts.map +1 -0
- package/dist/core/rag/rag-pipeline.js +276 -0
- package/dist/core/rag/rag-pipeline.js.map +1 -0
- package/dist/core/rag/serena-indexer.d.ts +16 -0
- package/dist/core/rag/serena-indexer.d.ts.map +1 -0
- package/dist/core/rag/serena-indexer.js +50 -0
- package/dist/core/rag/serena-indexer.js.map +1 -0
- package/dist/core/rag/serena-rag-query.d.ts +34 -0
- package/dist/core/rag/serena-rag-query.d.ts.map +1 -0
- package/dist/core/rag/serena-rag-query.js +83 -0
- package/dist/core/rag/serena-rag-query.js.map +1 -0
- package/dist/core/search/fts-search.d.ts +16 -0
- package/dist/core/search/fts-search.d.ts.map +1 -0
- package/dist/core/search/fts-search.js +62 -0
- package/dist/core/search/fts-search.js.map +1 -0
- package/dist/core/search/tfidf.d.ts +32 -0
- package/dist/core/search/tfidf.d.ts.map +1 -0
- package/dist/core/search/tfidf.js +67 -0
- package/dist/core/search/tfidf.js.map +1 -0
- package/dist/core/search/tokenizer.d.ts +9 -0
- package/dist/core/search/tokenizer.d.ts.map +1 -0
- package/dist/core/search/tokenizer.js +37 -0
- package/dist/core/search/tokenizer.js.map +1 -0
- package/dist/core/store/knowledge-store.d.ts +72 -0
- package/dist/core/store/knowledge-store.d.ts.map +1 -0
- package/dist/core/store/knowledge-store.js +166 -0
- package/dist/core/store/knowledge-store.js.map +1 -0
- package/dist/core/store/migrations.d.ts +4 -0
- package/dist/core/store/migrations.d.ts.map +1 -0
- package/dist/core/store/migrations.js +223 -0
- package/dist/core/store/migrations.js.map +1 -0
- package/dist/core/store/sqlite-store.d.ts +86 -0
- package/dist/core/store/sqlite-store.d.ts.map +1 -0
- package/dist/core/store/sqlite-store.js +707 -0
- package/dist/core/store/sqlite-store.js.map +1 -0
- package/dist/core/utils/constants.d.ts +10 -0
- package/dist/core/utils/constants.d.ts.map +1 -0
- package/dist/core/utils/constants.js +10 -0
- package/dist/core/utils/constants.js.map +1 -0
- package/dist/core/utils/errors.d.ts +20 -0
- package/dist/core/utils/errors.d.ts.map +1 -0
- package/dist/core/utils/errors.js +39 -0
- package/dist/core/utils/errors.js.map +1 -0
- package/dist/core/utils/fs.d.ts +2 -0
- package/dist/core/utils/fs.d.ts.map +1 -0
- package/dist/core/utils/fs.js +11 -0
- package/dist/core/utils/fs.js.map +1 -0
- package/dist/core/utils/id.d.ts +2 -0
- package/dist/core/utils/id.d.ts.map +1 -0
- package/dist/core/utils/id.js +6 -0
- package/dist/core/utils/id.js.map +1 -0
- package/dist/core/utils/logger.d.ts +8 -0
- package/dist/core/utils/logger.d.ts.map +1 -0
- package/dist/core/utils/logger.js +28 -0
- package/dist/core/utils/logger.js.map +1 -0
- package/dist/core/utils/platform.d.ts +18 -0
- package/dist/core/utils/platform.d.ts.map +1 -0
- package/dist/core/utils/platform.js +43 -0
- package/dist/core/utils/platform.js.map +1 -0
- package/dist/core/utils/time.d.ts +2 -0
- package/dist/core/utils/time.d.ts.map +1 -0
- package/dist/core/utils/time.js +4 -0
- package/dist/core/utils/time.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/init-project.d.ts +2 -0
- package/dist/mcp/init-project.d.ts.map +1 -0
- package/dist/mcp/init-project.js +144 -0
- package/dist/mcp/init-project.js.map +1 -0
- package/dist/mcp/lifecycle-wrapper.d.ts +26 -0
- package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -0
- package/dist/mcp/lifecycle-wrapper.js +67 -0
- package/dist/mcp/lifecycle-wrapper.js.map +1 -0
- package/dist/mcp/server.d.ts +3 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +73 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/stdio.d.ts +3 -0
- package/dist/mcp/stdio.d.ts.map +1 -0
- package/dist/mcp/stdio.js +20 -0
- package/dist/mcp/stdio.js.map +1 -0
- package/dist/mcp/tools/add-node.d.ts +4 -0
- package/dist/mcp/tools/add-node.d.ts.map +1 -0
- package/dist/mcp/tools/add-node.js +83 -0
- package/dist/mcp/tools/add-node.js.map +1 -0
- package/dist/mcp/tools/bulk-update-status.d.ts +4 -0
- package/dist/mcp/tools/bulk-update-status.d.ts.map +1 -0
- package/dist/mcp/tools/bulk-update-status.js +22 -0
- package/dist/mcp/tools/bulk-update-status.js.map +1 -0
- package/dist/mcp/tools/clone-node.d.ts +4 -0
- package/dist/mcp/tools/clone-node.d.ts.map +1 -0
- package/dist/mcp/tools/clone-node.js +111 -0
- package/dist/mcp/tools/clone-node.js.map +1 -0
- package/dist/mcp/tools/context.d.ts +4 -0
- package/dist/mcp/tools/context.d.ts.map +1 -0
- package/dist/mcp/tools/context.js +30 -0
- package/dist/mcp/tools/context.js.map +1 -0
- package/dist/mcp/tools/decompose.d.ts +4 -0
- package/dist/mcp/tools/decompose.d.ts.map +1 -0
- package/dist/mcp/tools/decompose.js +25 -0
- package/dist/mcp/tools/decompose.js.map +1 -0
- package/dist/mcp/tools/delete-node.d.ts +4 -0
- package/dist/mcp/tools/delete-node.d.ts.map +1 -0
- package/dist/mcp/tools/delete-node.js +29 -0
- package/dist/mcp/tools/delete-node.js.map +1 -0
- package/dist/mcp/tools/dependencies.d.ts +4 -0
- package/dist/mcp/tools/dependencies.d.ts.map +1 -0
- package/dist/mcp/tools/dependencies.js +47 -0
- package/dist/mcp/tools/dependencies.js.map +1 -0
- package/dist/mcp/tools/edge.d.ts +4 -0
- package/dist/mcp/tools/edge.d.ts.map +1 -0
- package/dist/mcp/tools/edge.js +140 -0
- package/dist/mcp/tools/edge.js.map +1 -0
- package/dist/mcp/tools/export.d.ts +4 -0
- package/dist/mcp/tools/export.d.ts.map +1 -0
- package/dist/mcp/tools/export.js +38 -0
- package/dist/mcp/tools/export.js.map +1 -0
- package/dist/mcp/tools/import-prd.d.ts +4 -0
- package/dist/mcp/tools/import-prd.d.ts.map +1 -0
- package/dist/mcp/tools/import-prd.js +81 -0
- package/dist/mcp/tools/import-prd.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +4 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +58 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/init.d.ts +4 -0
- package/dist/mcp/tools/init.d.ts.map +1 -0
- package/dist/mcp/tools/init.js +18 -0
- package/dist/mcp/tools/init.js.map +1 -0
- package/dist/mcp/tools/list.d.ts +4 -0
- package/dist/mcp/tools/list.d.ts.map +1 -0
- package/dist/mcp/tools/list.js +56 -0
- package/dist/mcp/tools/list.js.map +1 -0
- package/dist/mcp/tools/move-node.d.ts +4 -0
- package/dist/mcp/tools/move-node.d.ts.map +1 -0
- package/dist/mcp/tools/move-node.js +110 -0
- package/dist/mcp/tools/move-node.js.map +1 -0
- package/dist/mcp/tools/next.d.ts +4 -0
- package/dist/mcp/tools/next.d.ts.map +1 -0
- package/dist/mcp/tools/next.js +32 -0
- package/dist/mcp/tools/next.js.map +1 -0
- package/dist/mcp/tools/plan-sprint.d.ts +4 -0
- package/dist/mcp/tools/plan-sprint.d.ts.map +1 -0
- package/dist/mcp/tools/plan-sprint.js +54 -0
- package/dist/mcp/tools/plan-sprint.js.map +1 -0
- package/dist/mcp/tools/rag-context.d.ts +4 -0
- package/dist/mcp/tools/rag-context.d.ts.map +1 -0
- package/dist/mcp/tools/rag-context.js +51 -0
- package/dist/mcp/tools/rag-context.js.map +1 -0
- package/dist/mcp/tools/reindex-knowledge.d.ts +4 -0
- package/dist/mcp/tools/reindex-knowledge.d.ts.map +1 -0
- package/dist/mcp/tools/reindex-knowledge.js +49 -0
- package/dist/mcp/tools/reindex-knowledge.js.map +1 -0
- package/dist/mcp/tools/search.d.ts +4 -0
- package/dist/mcp/tools/search.d.ts.map +1 -0
- package/dist/mcp/tools/search.js +41 -0
- package/dist/mcp/tools/search.js.map +1 -0
- package/dist/mcp/tools/show.d.ts +4 -0
- package/dist/mcp/tools/show.d.ts.map +1 -0
- package/dist/mcp/tools/show.js +42 -0
- package/dist/mcp/tools/show.js.map +1 -0
- package/dist/mcp/tools/snapshot.d.ts +4 -0
- package/dist/mcp/tools/snapshot.d.ts.map +1 -0
- package/dist/mcp/tools/snapshot.js +45 -0
- package/dist/mcp/tools/snapshot.js.map +1 -0
- package/dist/mcp/tools/stats.d.ts +4 -0
- package/dist/mcp/tools/stats.d.ts.map +1 -0
- package/dist/mcp/tools/stats.js +46 -0
- package/dist/mcp/tools/stats.js.map +1 -0
- package/dist/mcp/tools/sync-stack-docs.d.ts +4 -0
- package/dist/mcp/tools/sync-stack-docs.d.ts.map +1 -0
- package/dist/mcp/tools/sync-stack-docs.js +77 -0
- package/dist/mcp/tools/sync-stack-docs.js.map +1 -0
- package/dist/mcp/tools/update-node.d.ts +4 -0
- package/dist/mcp/tools/update-node.d.ts.map +1 -0
- package/dist/mcp/tools/update-node.js +45 -0
- package/dist/mcp/tools/update-node.js.map +1 -0
- package/dist/mcp/tools/update-status.d.ts +4 -0
- package/dist/mcp/tools/update-status.d.ts.map +1 -0
- package/dist/mcp/tools/update-status.js +33 -0
- package/dist/mcp/tools/update-status.js.map +1 -0
- package/dist/mcp/tools/validate-task.d.ts +4 -0
- package/dist/mcp/tools/validate-task.d.ts.map +1 -0
- package/dist/mcp/tools/validate-task.js +57 -0
- package/dist/mcp/tools/validate-task.js.map +1 -0
- package/dist/mcp/tools/velocity.d.ts +4 -0
- package/dist/mcp/tools/velocity.d.ts.map +1 -0
- package/dist/mcp/tools/velocity.js +25 -0
- package/dist/mcp/tools/velocity.js.map +1 -0
- package/dist/schemas/edge.schema.d.ts +31 -0
- package/dist/schemas/edge.schema.d.ts.map +1 -0
- package/dist/schemas/edge.schema.js +16 -0
- package/dist/schemas/edge.schema.js.map +1 -0
- package/dist/schemas/graph.schema.d.ts +102 -0
- package/dist/schemas/graph.schema.d.ts.map +1 -0
- package/dist/schemas/graph.schema.js +28 -0
- package/dist/schemas/graph.schema.js.map +1 -0
- package/dist/schemas/knowledge.schema.d.ts +29 -0
- package/dist/schemas/knowledge.schema.d.ts.map +1 -0
- package/dist/schemas/knowledge.schema.js +17 -0
- package/dist/schemas/knowledge.schema.js.map +1 -0
- package/dist/schemas/node.schema.d.ts +80 -0
- package/dist/schemas/node.schema.d.ts.map +1 -0
- package/dist/schemas/node.schema.js +38 -0
- package/dist/schemas/node.schema.js.map +1 -0
- package/dist/web/dashboard/dist/assets/benchmark-tab-BTKW3REK.js +1 -0
- package/dist/web/dashboard/dist/assets/benchmark-tab-BhbUvjLM.js +1 -0
- package/dist/web/dashboard/dist/assets/benchmark-tab-CESZcCtO.js +1 -0
- package/dist/web/dashboard/dist/assets/benchmark-tab-D64Ala80.js +1 -0
- package/dist/web/dashboard/dist/assets/benchmark-tab-DJ7HyF-u.js +1 -0
- package/dist/web/dashboard/dist/assets/benchmark-tab-DVyzQZ2d.js +1 -0
- package/dist/web/dashboard/dist/assets/benchmark-tab-XUH7yQNv.js +1 -0
- package/dist/web/dashboard/dist/assets/benchmark-tab-ZfJu1pxc.js +1 -0
- package/dist/web/dashboard/dist/assets/constants-BIEJOBya.js +1 -0
- package/dist/web/dashboard/dist/assets/gitnexus-tab-BFHEXsJm.js +312 -0
- package/dist/web/dashboard/dist/assets/gitnexus-tab-Bbp91fom.js +312 -0
- package/dist/web/dashboard/dist/assets/gitnexus-tab-C3fPSzYi.js +312 -0
- package/dist/web/dashboard/dist/assets/gitnexus-tab-Cd0k8qk3.js +312 -0
- package/dist/web/dashboard/dist/assets/gitnexus-tab-ClNGphK5.js +312 -0
- package/dist/web/dashboard/dist/assets/gitnexus-tab-Cuc-KSII.js +312 -0
- package/dist/web/dashboard/dist/assets/gitnexus-tab-DEqMBSbC.css +1 -0
- package/dist/web/dashboard/dist/assets/gitnexus-tab-DEwJXSnD.js +312 -0
- package/dist/web/dashboard/dist/assets/gitnexus-tab-DOD7xwmm.js +312 -0
- package/dist/web/dashboard/dist/assets/graph-tab-AD7csRcc.js +1 -0
- package/dist/web/dashboard/dist/assets/graph-tab-BKyDCyHH.js +1 -0
- package/dist/web/dashboard/dist/assets/graph-tab-BUAkTto0.js +1 -0
- package/dist/web/dashboard/dist/assets/graph-tab-D0F0WJES.js +1 -0
- package/dist/web/dashboard/dist/assets/graph-tab-DA16nThT.js +1 -0
- package/dist/web/dashboard/dist/assets/graph-tab-DJknUhrl.js +1 -0
- package/dist/web/dashboard/dist/assets/graph-tab-DRPfelKw.js +1 -0
- package/dist/web/dashboard/dist/assets/graph-tab-lJ2rPS4Z.js +1 -0
- package/dist/web/dashboard/dist/assets/graph-utils-BN7tt0ZS.js +23 -0
- package/dist/web/dashboard/dist/assets/graph-utils-BTV1KGUM.js +23 -0
- package/dist/web/dashboard/dist/assets/graph-utils-BZV40eAE.css +1 -0
- package/dist/web/dashboard/dist/assets/graph-utils-BkfAOVJ9.js +23 -0
- package/dist/web/dashboard/dist/assets/graph-utils-Bo7cD1sx.js +23 -0
- package/dist/web/dashboard/dist/assets/graph-utils-CI4znRl5.js +23 -0
- package/dist/web/dashboard/dist/assets/graph-utils-DrCx5m7q.js +23 -0
- package/dist/web/dashboard/dist/assets/graph-utils-KQmzMFXM.js +23 -0
- package/dist/web/dashboard/dist/assets/graph-utils-M7iOhRI-.js +23 -0
- package/dist/web/dashboard/dist/assets/index-BGMP3W6f.css +1 -0
- package/dist/web/dashboard/dist/assets/index-BVXu3x9W.js +53 -0
- package/dist/web/dashboard/dist/assets/index-B_T9j86O.js +53 -0
- package/dist/web/dashboard/dist/assets/index-Bga9WW2A.css +1 -0
- package/dist/web/dashboard/dist/assets/index-BnLPCC8R.css +1 -0
- package/dist/web/dashboard/dist/assets/index-BonF71I0.js +53 -0
- package/dist/web/dashboard/dist/assets/index-CSyjxREL.js +53 -0
- package/dist/web/dashboard/dist/assets/index-CbUKe2Fv.js +53 -0
- package/dist/web/dashboard/dist/assets/index-D9i2aVjo.js +53 -0
- package/dist/web/dashboard/dist/assets/index-DzM6oBA3.js +53 -0
- package/dist/web/dashboard/dist/assets/index-IK005MzD.js +53 -0
- package/dist/web/dashboard/dist/assets/insights-tab-B9R3HsMU.js +1 -0
- package/dist/web/dashboard/dist/assets/insights-tab-BO_cxLyV.js +1 -0
- package/dist/web/dashboard/dist/assets/insights-tab-Brn6IMfQ.js +1 -0
- package/dist/web/dashboard/dist/assets/insights-tab-C6x-aJ8p.js +1 -0
- package/dist/web/dashboard/dist/assets/insights-tab-CWUU6eDi.js +1 -0
- package/dist/web/dashboard/dist/assets/insights-tab-CapL1jP-.js +1 -0
- package/dist/web/dashboard/dist/assets/insights-tab-CeWM6zgV.js +1 -0
- package/dist/web/dashboard/dist/assets/insights-tab-xQj5e61M.js +1 -0
- package/dist/web/dashboard/dist/assets/prd-backlog-tab-0oOO63rA.js +1 -0
- package/dist/web/dashboard/dist/assets/prd-backlog-tab-BcWoplsM.js +1 -0
- package/dist/web/dashboard/dist/assets/prd-backlog-tab-Bjj5KccG.js +1 -0
- package/dist/web/dashboard/dist/assets/prd-backlog-tab-C7cKQyup.js +1 -0
- package/dist/web/dashboard/dist/assets/prd-backlog-tab-CT4ja7Ay.js +1 -0
- package/dist/web/dashboard/dist/assets/prd-backlog-tab-CmPHHBDQ.js +1 -0
- package/dist/web/dashboard/dist/assets/prd-backlog-tab-DAHBiRO-.js +1 -0
- package/dist/web/dashboard/dist/assets/prd-backlog-tab-_jmBe3MU.js +1 -0
- package/dist/web/dashboard/dist/assets/serena-tab-BVyBTaHC.js +1 -0
- package/dist/web/dashboard/dist/assets/serena-tab-CVI1GGRk.js +1 -0
- package/dist/web/dashboard/dist/assets/serena-tab-D1ki2NjT.js +1 -0
- package/dist/web/dashboard/dist/assets/serena-tab-DRrRfjpO.js +1 -0
- package/dist/web/dashboard/dist/assets/serena-tab-DvYbwR4Z.js +1 -0
- package/dist/web/dashboard/dist/assets/serena-tab-DwiZ6Jm3.js +1 -0
- package/dist/web/dashboard/dist/assets/serena-tab-L6isY0iT.js +1 -0
- package/dist/web/dashboard/dist/assets/serena-tab-ba2n0AOh.js +1 -0
- package/dist/web/dashboard/dist/index.html +13 -0
- package/package.json +86 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates AI instruction sections for CLAUDE.md and .github/copilot-instructions.md.
|
|
3
|
+
* Both outputs are idempotent (use markers to detect existing sections).
|
|
4
|
+
*/
|
|
5
|
+
export declare const MARKER_START = "<!-- mcp-graph:start -->";
|
|
6
|
+
export declare const MARKER_END = "<!-- mcp-graph:end -->";
|
|
7
|
+
export declare function generateClaudeMdSection(projectName: string): string;
|
|
8
|
+
export declare function generateCopilotInstructions(projectName: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Apply a section to existing content idempotently.
|
|
11
|
+
* If markers exist, replace the section. Otherwise, append.
|
|
12
|
+
*/
|
|
13
|
+
export declare function applySection(existingContent: string, newSection: string): string;
|
|
14
|
+
//# sourceMappingURL=ai-memory-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-memory-generator.d.ts","sourceRoot":"","sources":["../../../src/core/config/ai-memory-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY,6BAA6B,CAAC;AACvD,eAAO,MAAM,UAAU,2BAA2B,CAAC;AAkDnD,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA+BnE;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA0BvE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAgBhF"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates AI instruction sections for CLAUDE.md and .github/copilot-instructions.md.
|
|
3
|
+
* Both outputs are idempotent (use markers to detect existing sections).
|
|
4
|
+
*/
|
|
5
|
+
export const MARKER_START = "<!-- mcp-graph:start -->";
|
|
6
|
+
export const MARKER_END = "<!-- mcp-graph:end -->";
|
|
7
|
+
const TOOL_REFERENCE = `| Tool | Quando usar |
|
|
8
|
+
|------|-------------|
|
|
9
|
+
| \`init\` | Inicializar grafo do projeto |
|
|
10
|
+
| \`import_prd\` | Importar PRD (texto/markdown) para o grafo |
|
|
11
|
+
| \`list\` | Listar nodes do grafo (filtrar por tipo/status) |
|
|
12
|
+
| \`show\` | Ver detalhes de um node específico |
|
|
13
|
+
| \`next\` | Próxima task recomendada (prioridade + dependências) |
|
|
14
|
+
| \`context\` | Contexto comprimido da task (token-efficient) |
|
|
15
|
+
| \`update_status\` | Mudar status de um node (backlog→ready→in_progress→done) |
|
|
16
|
+
| \`add_node\` | Criar node manualmente |
|
|
17
|
+
| \`update_node\` | Atualizar campos de um node |
|
|
18
|
+
| \`delete_node\` | Remover node do grafo |
|
|
19
|
+
| \`edge\` | Criar/remover relações entre nodes |
|
|
20
|
+
| \`dependencies\` | Analisar cadeia de dependências |
|
|
21
|
+
| \`decompose\` | Detectar tasks grandes e sugerir decomposição |
|
|
22
|
+
| \`search\` | Busca full-text no grafo (FTS5 + BM25) |
|
|
23
|
+
| \`rag_context\` | Contexto RAG com knowledge base |
|
|
24
|
+
| \`plan_sprint\` | Gerar relatório de planejamento de sprint |
|
|
25
|
+
| \`velocity\` | Métricas de velocidade por sprint |
|
|
26
|
+
| \`stats\` | Estatísticas gerais do grafo |
|
|
27
|
+
| \`export\` | Exportar grafo (JSON ou Mermaid) |
|
|
28
|
+
| \`snapshot\` | Criar/restaurar snapshots do grafo |
|
|
29
|
+
| \`move_node\` | Mover node para outro parent |
|
|
30
|
+
| \`clone_node\` | Clonar node com filhos |
|
|
31
|
+
| \`bulk_update_status\` | Atualizar status de múltiplos nodes |
|
|
32
|
+
| \`sync_stack_docs\` | Sincronizar docs das libs do projeto |
|
|
33
|
+
| \`reindex_knowledge\` | Reindexar knowledge store |
|
|
34
|
+
| \`validate_task\` | Validar task com browser (Playwright) |`;
|
|
35
|
+
const LIFECYCLE_SUMMARY = `### Lifecycle (8 fases)
|
|
36
|
+
|
|
37
|
+
1. **ANALYZE** — Criar PRD, definir requisitos (\`import_prd\`, \`add_node\`)
|
|
38
|
+
2. **DESIGN** — Arquitetura, decisões técnicas (\`add_node\`, \`edge\`, \`decompose\`)
|
|
39
|
+
3. **PLAN** — Sprint planning, decomposição (\`plan_sprint\`, \`decompose\`, \`sync_stack_docs\`)
|
|
40
|
+
4. **IMPLEMENT** — TDD Red→Green→Refactor (\`next\`, \`context\`, \`update_status\`)
|
|
41
|
+
5. **VALIDATE** — Testes E2E, critérios de aceitação (\`validate_task\`, \`velocity\`)
|
|
42
|
+
6. **REVIEW** — Code review, blast radius (\`export\`, \`stats\`)
|
|
43
|
+
7. **HANDOFF** — PR, documentação, entrega (\`export\`, \`snapshot\`)
|
|
44
|
+
8. **LISTENING** — Feedback, novo ciclo (\`add_node\`, \`import_prd\`)`;
|
|
45
|
+
const XP_PRINCIPLES = `### Princípios XP Anti-Vibe-Coding
|
|
46
|
+
|
|
47
|
+
- **TDD obrigatório** — Teste antes do código. Sem teste = sem implementação.
|
|
48
|
+
- **Anti-one-shot** — Nunca gere sistemas inteiros em um prompt. Decomponha em tasks atômicas.
|
|
49
|
+
- **Decomposição atômica** — Cada task deve ser completável em ≤2h.
|
|
50
|
+
- **Code detachment** — Se a IA errou, explique o erro via prompt. Nunca edite manualmente.
|
|
51
|
+
- **CLAUDE.md como spec evolutiva** — Documente padrões e decisões aqui.`;
|
|
52
|
+
export function generateClaudeMdSection(projectName) {
|
|
53
|
+
return `
|
|
54
|
+
${MARKER_START}
|
|
55
|
+
## mcp-graph — ${projectName}
|
|
56
|
+
|
|
57
|
+
Este projeto usa **mcp-graph** para gestão de execução via grafo persistente (SQLite).
|
|
58
|
+
Dados armazenados em \`workflow-graph/graph.db\` (local, gitignored).
|
|
59
|
+
|
|
60
|
+
### Ferramentas MCP disponíveis (26 tools)
|
|
61
|
+
|
|
62
|
+
${TOOL_REFERENCE}
|
|
63
|
+
|
|
64
|
+
### Fluxo de trabalho recomendado
|
|
65
|
+
|
|
66
|
+
\`\`\`
|
|
67
|
+
next → context → [implementar com TDD] → update_status → next
|
|
68
|
+
\`\`\`
|
|
69
|
+
|
|
70
|
+
${LIFECYCLE_SUMMARY}
|
|
71
|
+
|
|
72
|
+
${XP_PRINCIPLES}
|
|
73
|
+
|
|
74
|
+
### Comandos essenciais
|
|
75
|
+
|
|
76
|
+
\`\`\`bash
|
|
77
|
+
npx mcp-graph stats # Estatísticas do grafo
|
|
78
|
+
npx mcp-graph list # Listar nodes
|
|
79
|
+
npx mcp-graph serve --port 3000 # Dashboard visual
|
|
80
|
+
\`\`\`
|
|
81
|
+
${MARKER_END}
|
|
82
|
+
`;
|
|
83
|
+
}
|
|
84
|
+
export function generateCopilotInstructions(projectName) {
|
|
85
|
+
return `${MARKER_START}
|
|
86
|
+
## mcp-graph — ${projectName}
|
|
87
|
+
|
|
88
|
+
Este projeto usa **mcp-graph** para gestão de execução via grafo persistente.
|
|
89
|
+
Dados em \`workflow-graph/graph.db\`.
|
|
90
|
+
|
|
91
|
+
### Ferramentas MCP (principais)
|
|
92
|
+
|
|
93
|
+
| Tool | Uso |
|
|
94
|
+
|------|-----|
|
|
95
|
+
| \`next\` | Próxima task recomendada |
|
|
96
|
+
| \`context\` | Contexto comprimido (token-efficient) |
|
|
97
|
+
| \`update_status\` | Mudar status (backlog→ready→in_progress→done) |
|
|
98
|
+
| \`import_prd\` | Importar PRD para o grafo |
|
|
99
|
+
| \`plan_sprint\` | Planejamento de sprint |
|
|
100
|
+
| \`decompose\` | Decompor tasks grandes |
|
|
101
|
+
| \`validate_task\` | Validar com Playwright |
|
|
102
|
+
|
|
103
|
+
### Fluxo: \`next → context → [TDD] → update_status → next\`
|
|
104
|
+
|
|
105
|
+
${LIFECYCLE_SUMMARY}
|
|
106
|
+
|
|
107
|
+
${XP_PRINCIPLES}
|
|
108
|
+
${MARKER_END}
|
|
109
|
+
`;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Apply a section to existing content idempotently.
|
|
113
|
+
* If markers exist, replace the section. Otherwise, append.
|
|
114
|
+
*/
|
|
115
|
+
export function applySection(existingContent, newSection) {
|
|
116
|
+
const startIdx = existingContent.indexOf(MARKER_START);
|
|
117
|
+
const endIdx = existingContent.indexOf(MARKER_END);
|
|
118
|
+
const trimmedSection = newSection.trim() + "\n";
|
|
119
|
+
if (startIdx !== -1 && endIdx !== -1) {
|
|
120
|
+
const before = existingContent.substring(0, startIdx).trimEnd();
|
|
121
|
+
const after = existingContent.substring(endIdx + MARKER_END.length).trimStart();
|
|
122
|
+
const beforePart = before.length > 0 ? before + "\n\n" : "";
|
|
123
|
+
const afterPart = after.length > 0 ? "\n" + after : "";
|
|
124
|
+
return beforePart + trimmedSection + afterPart;
|
|
125
|
+
}
|
|
126
|
+
const base = existingContent.trimEnd();
|
|
127
|
+
const prefix = base.length > 0 ? base + "\n\n" : "";
|
|
128
|
+
return prefix + trimmedSection;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=ai-memory-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-memory-generator.js","sourceRoot":"","sources":["../../../src/core/config/ai-memory-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AACvD,MAAM,CAAC,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAEnD,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;8DA2BuC,CAAC;AAE/D,MAAM,iBAAiB,GAAG;;;;;;;;;uEAS6C,CAAC;AAExE,MAAM,aAAa,GAAG;;;;;;yEAMmD,CAAC;AAE1E,MAAM,UAAU,uBAAuB,CAAC,WAAmB;IACzD,OAAO;EACP,YAAY;iBACG,WAAW;;;;;;;EAO1B,cAAc;;;;;;;;EAQd,iBAAiB;;EAEjB,aAAa;;;;;;;;;EASb,UAAU;CACX,CAAC;AACF,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,WAAmB;IAC7D,OAAO,GAAG,YAAY;iBACP,WAAW;;;;;;;;;;;;;;;;;;;EAmB1B,iBAAiB;;EAEjB,aAAa;EACb,UAAU;CACX,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,eAAuB,EAAE,UAAkB;IACtE,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;IAEhD,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;QAChF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,UAAU,GAAG,cAAc,GAAG,SAAS,CAAC;IACjD,CAAC;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,OAAO,MAAM,GAAG,cAAc,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/config-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKvE,wBAAgB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CA6C5D"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { ConfigSchema } from "./config-schema.js";
|
|
4
|
+
import { logger } from "../utils/logger.js";
|
|
5
|
+
const CONFIG_FILENAME = "mcp-graph.config.json";
|
|
6
|
+
export function loadConfig(basePath) {
|
|
7
|
+
const resolvedBase = basePath ?? process.cwd();
|
|
8
|
+
const configPath = path.join(resolvedBase, CONFIG_FILENAME);
|
|
9
|
+
let fileConfig = {};
|
|
10
|
+
if (existsSync(configPath)) {
|
|
11
|
+
try {
|
|
12
|
+
const raw = readFileSync(configPath, "utf-8");
|
|
13
|
+
fileConfig = JSON.parse(raw);
|
|
14
|
+
logger.info(`Config loaded from ${configPath}`);
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
logger.error(`Failed to parse config at ${configPath}`, {
|
|
18
|
+
error: err instanceof Error ? err.message : String(err),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
logger.info("No config file found, using defaults");
|
|
24
|
+
}
|
|
25
|
+
// Env var overrides
|
|
26
|
+
if (process.env.MCP_PORT) {
|
|
27
|
+
const envPort = parseInt(process.env.MCP_PORT, 10);
|
|
28
|
+
if (!isNaN(envPort)) {
|
|
29
|
+
fileConfig.port = envPort;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (process.env.GITNEXUS_PORT) {
|
|
33
|
+
const envGitnexusPort = parseInt(process.env.GITNEXUS_PORT, 10);
|
|
34
|
+
if (!isNaN(envGitnexusPort)) {
|
|
35
|
+
const integrations = (fileConfig.integrations ?? {});
|
|
36
|
+
integrations.gitnexusPort = envGitnexusPort;
|
|
37
|
+
fileConfig.integrations = integrations;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (process.env.GITNEXUS_AUTO_START) {
|
|
41
|
+
const integrations = (fileConfig.integrations ?? {});
|
|
42
|
+
integrations.gitnexusAutoStart = process.env.GITNEXUS_AUTO_START !== "false";
|
|
43
|
+
fileConfig.integrations = integrations;
|
|
44
|
+
}
|
|
45
|
+
const config = ConfigSchema.parse(fileConfig);
|
|
46
|
+
return config;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../src/core/config/config-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAuB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEhD,MAAM,UAAU,UAAU,CAAC,QAAiB;IAC1C,MAAM,YAAY,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAE5D,IAAI,UAAU,GAA4B,EAAE,CAAC;IAE7C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC9C,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,sBAAsB,UAAU,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,6BAA6B,UAAU,EAAE,EAAE;gBACtD,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACtD,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,YAAY,IAAI,EAAE,CAA4B,CAAC;YAChF,YAAY,CAAC,YAAY,GAAG,eAAe,CAAC;YAC5C,UAAU,CAAC,YAAY,GAAG,YAAY,CAAC;QACzC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,YAAY,IAAI,EAAE,CAA4B,CAAC;QAChF,YAAY,CAAC,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,OAAO,CAAC;QAC7E,UAAU,CAAC,YAAY,GAAG,YAAY,CAAC;IACzC,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
export declare const ConfigSchema: z.ZodObject<{
|
|
3
|
+
port: z.ZodDefault<z.ZodNumber>;
|
|
4
|
+
dbPath: z.ZodDefault<z.ZodString>;
|
|
5
|
+
basePath: z.ZodOptional<z.ZodString>;
|
|
6
|
+
integrations: z.ZodDefault<z.ZodObject<{
|
|
7
|
+
gitnexusPort: z.ZodDefault<z.ZodNumber>;
|
|
8
|
+
gitnexusAutoStart: z.ZodDefault<z.ZodBoolean>;
|
|
9
|
+
}, z.core.$strip>>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type McpGraphConfig = z.infer<typeof ConfigSchema>;
|
|
12
|
+
//# sourceMappingURL=config-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../../src/core/config/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,eAAO,MAAM,YAAY;;;;;;;;iBAUvB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
export const ConfigSchema = z.object({
|
|
3
|
+
port: z.number().int().min(1).max(65535).default(3000),
|
|
4
|
+
dbPath: z.string().default("workflow-graph"),
|
|
5
|
+
basePath: z.string().optional(),
|
|
6
|
+
integrations: z
|
|
7
|
+
.object({
|
|
8
|
+
gitnexusPort: z.number().int().min(1).max(65535).default(3737),
|
|
9
|
+
gitnexusAutoStart: z.boolean().default(true),
|
|
10
|
+
})
|
|
11
|
+
.default({ gitnexusPort: 3737, gitnexusAutoStart: true }),
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=config-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../../src/core/config/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACtD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,YAAY,EAAE,CAAC;SACZ,MAAM,CAAC;QACN,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9D,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KAC7C,CAAC;SACD,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;CAC5D,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BM25 Compressor — filters text chunks by relevance before consuming token budget.
|
|
3
|
+
* Uses BM25 scoring to rank chunks and discard low-relevance ones.
|
|
4
|
+
*
|
|
5
|
+
* BM25 parameters: k1=1.5, b=0.75 (standard defaults)
|
|
6
|
+
*/
|
|
7
|
+
export interface RankedChunk {
|
|
8
|
+
content: string;
|
|
9
|
+
score: number;
|
|
10
|
+
tokens: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Score and rank text chunks by BM25 relevance to a query.
|
|
14
|
+
* Returns chunks sorted by score (descending).
|
|
15
|
+
*/
|
|
16
|
+
export declare function rankChunksByBm25(chunks: string[], query: string): RankedChunk[];
|
|
17
|
+
/**
|
|
18
|
+
* Select top chunks within a token budget, ranked by BM25 relevance.
|
|
19
|
+
*/
|
|
20
|
+
export declare function compressWithBm25(chunks: string[], query: string, tokenBudget: number): RankedChunk[];
|
|
21
|
+
//# sourceMappingURL=bm25-compressor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bm25-compressor.d.ts","sourceRoot":"","sources":["../../../src/core/context/bm25-compressor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAgBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,GACZ,WAAW,EAAE,CAwDf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,WAAW,EAAE,CAYf"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BM25 Compressor — filters text chunks by relevance before consuming token budget.
|
|
3
|
+
* Uses BM25 scoring to rank chunks and discard low-relevance ones.
|
|
4
|
+
*
|
|
5
|
+
* BM25 parameters: k1=1.5, b=0.75 (standard defaults)
|
|
6
|
+
*/
|
|
7
|
+
import { estimateTokens } from "./token-estimator.js";
|
|
8
|
+
const K1 = 1.5;
|
|
9
|
+
const B = 0.75;
|
|
10
|
+
/**
|
|
11
|
+
* Tokenize text for BM25 (lowercase, split, remove short words).
|
|
12
|
+
*/
|
|
13
|
+
function bm25Tokenize(text) {
|
|
14
|
+
return text
|
|
15
|
+
.toLowerCase()
|
|
16
|
+
.replace(/[^a-z0-9\s]/g, " ")
|
|
17
|
+
.split(/\s+/)
|
|
18
|
+
.filter((t) => t.length > 1);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Score and rank text chunks by BM25 relevance to a query.
|
|
22
|
+
* Returns chunks sorted by score (descending).
|
|
23
|
+
*/
|
|
24
|
+
export function rankChunksByBm25(chunks, query) {
|
|
25
|
+
if (chunks.length === 0 || !query.trim())
|
|
26
|
+
return [];
|
|
27
|
+
const queryTerms = bm25Tokenize(query);
|
|
28
|
+
if (queryTerms.length === 0) {
|
|
29
|
+
return chunks.map((c) => ({ content: c, score: 0, tokens: estimateTokens(c) }));
|
|
30
|
+
}
|
|
31
|
+
// Compute document frequencies
|
|
32
|
+
const tokenizedChunks = chunks.map(bm25Tokenize);
|
|
33
|
+
const docFreq = new Map();
|
|
34
|
+
const totalDocs = chunks.length;
|
|
35
|
+
for (const tokens of tokenizedChunks) {
|
|
36
|
+
const unique = new Set(tokens);
|
|
37
|
+
for (const term of unique) {
|
|
38
|
+
docFreq.set(term, (docFreq.get(term) ?? 0) + 1);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Average document length
|
|
42
|
+
const avgDl = tokenizedChunks.reduce((sum, t) => sum + t.length, 0) / totalDocs;
|
|
43
|
+
// Score each chunk
|
|
44
|
+
const ranked = chunks.map((chunk, i) => {
|
|
45
|
+
const tokens = tokenizedChunks[i];
|
|
46
|
+
const dl = tokens.length;
|
|
47
|
+
let score = 0;
|
|
48
|
+
// Term frequency map
|
|
49
|
+
const tf = new Map();
|
|
50
|
+
for (const t of tokens) {
|
|
51
|
+
tf.set(t, (tf.get(t) ?? 0) + 1);
|
|
52
|
+
}
|
|
53
|
+
for (const term of queryTerms) {
|
|
54
|
+
const termTf = tf.get(term) ?? 0;
|
|
55
|
+
if (termTf === 0)
|
|
56
|
+
continue;
|
|
57
|
+
const df = docFreq.get(term) ?? 0;
|
|
58
|
+
const idf = Math.log((totalDocs - df + 0.5) / (df + 0.5) + 1);
|
|
59
|
+
const tfNorm = (termTf * (K1 + 1)) / (termTf + K1 * (1 - B + B * (dl / avgDl)));
|
|
60
|
+
score += idf * tfNorm;
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
content: chunk,
|
|
64
|
+
score,
|
|
65
|
+
tokens: estimateTokens(chunk),
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
// Sort by score descending
|
|
69
|
+
ranked.sort((a, b) => b.score - a.score);
|
|
70
|
+
return ranked;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Select top chunks within a token budget, ranked by BM25 relevance.
|
|
74
|
+
*/
|
|
75
|
+
export function compressWithBm25(chunks, query, tokenBudget) {
|
|
76
|
+
const ranked = rankChunksByBm25(chunks, query);
|
|
77
|
+
const selected = [];
|
|
78
|
+
let tokensUsed = 0;
|
|
79
|
+
for (const chunk of ranked) {
|
|
80
|
+
if (tokensUsed + chunk.tokens > tokenBudget && selected.length > 0)
|
|
81
|
+
break;
|
|
82
|
+
selected.push(chunk);
|
|
83
|
+
tokensUsed += chunk.tokens;
|
|
84
|
+
}
|
|
85
|
+
return selected;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=bm25-compressor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bm25-compressor.js","sourceRoot":"","sources":["../../../src/core/context/bm25-compressor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { SqliteStore } from "../store/sqlite-store.js";
|
|
2
|
+
export interface TaskContext {
|
|
3
|
+
task: TaskSummary;
|
|
4
|
+
parent: TaskSummary | null;
|
|
5
|
+
children: TaskSummary[];
|
|
6
|
+
blockers: BlockerInfo[];
|
|
7
|
+
dependsOn: DependencyInfo[];
|
|
8
|
+
relatedNodes?: TaskSummary[];
|
|
9
|
+
implementsNodes?: TaskSummary[];
|
|
10
|
+
derivedFromNodes?: TaskSummary[];
|
|
11
|
+
edgeParent?: TaskSummary | null;
|
|
12
|
+
edgeChildren?: TaskSummary[];
|
|
13
|
+
acceptanceCriteria: string[];
|
|
14
|
+
sourceRef: SourceRefInfo | null;
|
|
15
|
+
metrics: ContextMetrics;
|
|
16
|
+
}
|
|
17
|
+
export interface TaskSummary {
|
|
18
|
+
id: string;
|
|
19
|
+
type: string;
|
|
20
|
+
title: string;
|
|
21
|
+
status: string;
|
|
22
|
+
priority: number;
|
|
23
|
+
description?: string;
|
|
24
|
+
sprint?: string | null;
|
|
25
|
+
xpSize?: string;
|
|
26
|
+
tags?: string[];
|
|
27
|
+
}
|
|
28
|
+
interface BlockerInfo {
|
|
29
|
+
id: string;
|
|
30
|
+
title: string;
|
|
31
|
+
status: string;
|
|
32
|
+
relationType: string;
|
|
33
|
+
inferred: boolean;
|
|
34
|
+
}
|
|
35
|
+
interface DependencyInfo {
|
|
36
|
+
id: string;
|
|
37
|
+
title: string;
|
|
38
|
+
status: string;
|
|
39
|
+
resolved: boolean;
|
|
40
|
+
inferred: boolean;
|
|
41
|
+
}
|
|
42
|
+
interface SourceRefInfo {
|
|
43
|
+
file: string;
|
|
44
|
+
startLine?: number;
|
|
45
|
+
endLine?: number;
|
|
46
|
+
confidence?: number;
|
|
47
|
+
}
|
|
48
|
+
export interface ContextMetrics {
|
|
49
|
+
originalChars: number;
|
|
50
|
+
compactChars: number;
|
|
51
|
+
reductionPercent: number;
|
|
52
|
+
estimatedTokens: number;
|
|
53
|
+
}
|
|
54
|
+
export declare function buildTaskContext(store: SqliteStore, nodeId: string): TaskContext | null;
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=compact-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact-context.d.ts","sourceRoot":"","sources":["../../../src/core/context/compact-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAO5D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;IAChC,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB;AAyBD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,GACb,WAAW,GAAG,IAAI,CAoJpB"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { estimateTokens } from "./token-estimator.js";
|
|
2
|
+
import { logger } from "../utils/logger.js";
|
|
3
|
+
// ── Helpers ──────────────────────────────────────────────
|
|
4
|
+
function toTaskSummary(node) {
|
|
5
|
+
const summary = {
|
|
6
|
+
id: node.id,
|
|
7
|
+
type: node.type,
|
|
8
|
+
title: node.title,
|
|
9
|
+
status: node.status,
|
|
10
|
+
priority: node.priority,
|
|
11
|
+
};
|
|
12
|
+
if (node.description)
|
|
13
|
+
summary.description = node.description;
|
|
14
|
+
if (node.sprint)
|
|
15
|
+
summary.sprint = node.sprint;
|
|
16
|
+
if (node.xpSize)
|
|
17
|
+
summary.xpSize = node.xpSize;
|
|
18
|
+
if (node.tags?.length)
|
|
19
|
+
summary.tags = node.tags;
|
|
20
|
+
return summary;
|
|
21
|
+
}
|
|
22
|
+
function isInferred(edge) {
|
|
23
|
+
return edge.metadata?.inferred === true;
|
|
24
|
+
}
|
|
25
|
+
// ── Main function ────────────────────────────────────────
|
|
26
|
+
export function buildTaskContext(store, nodeId) {
|
|
27
|
+
const node = store.getNodeById(nodeId);
|
|
28
|
+
if (!node) {
|
|
29
|
+
logger.warn(`buildTaskContext: node ${nodeId} not found`);
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
// Parent
|
|
33
|
+
let parent = null;
|
|
34
|
+
if (node.parentId) {
|
|
35
|
+
const parentNode = store.getNodeById(node.parentId);
|
|
36
|
+
if (parentNode)
|
|
37
|
+
parent = toTaskSummary(parentNode);
|
|
38
|
+
}
|
|
39
|
+
// Children
|
|
40
|
+
const childNodes = store.getChildNodes(nodeId);
|
|
41
|
+
const children = childNodes.map(toTaskSummary);
|
|
42
|
+
// Incoming edges → blockers and dependencies
|
|
43
|
+
const incomingEdges = store.getEdgesTo(nodeId);
|
|
44
|
+
const outgoingEdges = store.getEdgesFrom(nodeId);
|
|
45
|
+
const blockers = [];
|
|
46
|
+
const dependsOn = [];
|
|
47
|
+
const relatedIds = new Set();
|
|
48
|
+
const relatedNodes = [];
|
|
49
|
+
const implementsNodes = [];
|
|
50
|
+
const derivedFromNodes = [];
|
|
51
|
+
let edgeParent = null;
|
|
52
|
+
const edgeChildren = [];
|
|
53
|
+
// Edges where something blocks this node: edge.relationType === "blocks" AND edge.to === nodeId
|
|
54
|
+
for (const edge of incomingEdges) {
|
|
55
|
+
if (edge.relationType === "blocks") {
|
|
56
|
+
const blockerNode = store.getNodeById(edge.from);
|
|
57
|
+
if (blockerNode) {
|
|
58
|
+
blockers.push({
|
|
59
|
+
id: blockerNode.id,
|
|
60
|
+
title: blockerNode.title,
|
|
61
|
+
status: blockerNode.status,
|
|
62
|
+
relationType: edge.relationType,
|
|
63
|
+
inferred: isInferred(edge),
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else if (edge.relationType === "related_to") {
|
|
68
|
+
const relNode = store.getNodeById(edge.from);
|
|
69
|
+
if (relNode && !relatedIds.has(relNode.id)) {
|
|
70
|
+
relatedIds.add(relNode.id);
|
|
71
|
+
relatedNodes.push(toTaskSummary(relNode));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else if (edge.relationType === "parent_of" && !edgeParent) {
|
|
75
|
+
const parentNode = store.getNodeById(edge.from);
|
|
76
|
+
if (parentNode)
|
|
77
|
+
edgeParent = toTaskSummary(parentNode);
|
|
78
|
+
}
|
|
79
|
+
else if (edge.relationType === "child_of") {
|
|
80
|
+
const childNode = store.getNodeById(edge.from);
|
|
81
|
+
if (childNode)
|
|
82
|
+
edgeChildren.push(toTaskSummary(childNode));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Edges where this node depends_on something: edge.relationType === "depends_on" AND edge.from === nodeId
|
|
86
|
+
for (const edge of outgoingEdges) {
|
|
87
|
+
if (edge.relationType === "depends_on") {
|
|
88
|
+
const depNode = store.getNodeById(edge.to);
|
|
89
|
+
if (depNode) {
|
|
90
|
+
dependsOn.push({
|
|
91
|
+
id: depNode.id,
|
|
92
|
+
title: depNode.title,
|
|
93
|
+
status: depNode.status,
|
|
94
|
+
resolved: depNode.status === "done",
|
|
95
|
+
inferred: isInferred(edge),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else if (edge.relationType === "related_to") {
|
|
100
|
+
const relNode = store.getNodeById(edge.to);
|
|
101
|
+
if (relNode && !relatedIds.has(relNode.id)) {
|
|
102
|
+
relatedIds.add(relNode.id);
|
|
103
|
+
relatedNodes.push(toTaskSummary(relNode));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (edge.relationType === "implements") {
|
|
107
|
+
const implNode = store.getNodeById(edge.to);
|
|
108
|
+
if (implNode)
|
|
109
|
+
implementsNodes.push(toTaskSummary(implNode));
|
|
110
|
+
}
|
|
111
|
+
else if (edge.relationType === "derived_from") {
|
|
112
|
+
const derivedNode = store.getNodeById(edge.to);
|
|
113
|
+
if (derivedNode)
|
|
114
|
+
derivedFromNodes.push(toTaskSummary(derivedNode));
|
|
115
|
+
}
|
|
116
|
+
else if (edge.relationType === "child_of" && !edgeParent) {
|
|
117
|
+
const parentNode = store.getNodeById(edge.to);
|
|
118
|
+
if (parentNode)
|
|
119
|
+
edgeParent = toTaskSummary(parentNode);
|
|
120
|
+
}
|
|
121
|
+
else if (edge.relationType === "parent_of") {
|
|
122
|
+
const childNode = store.getNodeById(edge.to);
|
|
123
|
+
if (childNode)
|
|
124
|
+
edgeChildren.push(toTaskSummary(childNode));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Acceptance criteria
|
|
128
|
+
const acceptanceCriteria = node.acceptanceCriteria ?? [];
|
|
129
|
+
// Source reference
|
|
130
|
+
const sourceRef = node.sourceRef
|
|
131
|
+
? { ...node.sourceRef }
|
|
132
|
+
: null;
|
|
133
|
+
// Metrics: estimate original size from full PRD-related content
|
|
134
|
+
const allNodes = store.getAllNodes();
|
|
135
|
+
const allEdges = store.getAllEdges();
|
|
136
|
+
const originalChars = allNodes.reduce((sum, n) => sum +
|
|
137
|
+
n.title.length +
|
|
138
|
+
(n.description?.length ?? 0) +
|
|
139
|
+
(n.acceptanceCriteria?.join("").length ?? 0), 0) +
|
|
140
|
+
allEdges.reduce((sum, e) => sum + (e.reason?.length ?? 0), 0);
|
|
141
|
+
const contextPayload = {
|
|
142
|
+
task: toTaskSummary(node),
|
|
143
|
+
parent,
|
|
144
|
+
children,
|
|
145
|
+
blockers,
|
|
146
|
+
dependsOn,
|
|
147
|
+
relatedNodes: relatedNodes.length > 0 ? relatedNodes : undefined,
|
|
148
|
+
implementsNodes: implementsNodes.length > 0 ? implementsNodes : undefined,
|
|
149
|
+
derivedFromNodes: derivedFromNodes.length > 0 ? derivedFromNodes : undefined,
|
|
150
|
+
edgeParent: edgeParent ?? undefined,
|
|
151
|
+
edgeChildren: edgeChildren.length > 0 ? edgeChildren : undefined,
|
|
152
|
+
acceptanceCriteria,
|
|
153
|
+
sourceRef,
|
|
154
|
+
metrics: { originalChars: 0, compactChars: 0, reductionPercent: 0, estimatedTokens: 0 },
|
|
155
|
+
};
|
|
156
|
+
const compactJson = JSON.stringify(contextPayload);
|
|
157
|
+
const compactChars = compactJson.length;
|
|
158
|
+
const reductionPercent = originalChars > 0
|
|
159
|
+
? Math.round(((originalChars - compactChars) / originalChars) * 100)
|
|
160
|
+
: 0;
|
|
161
|
+
contextPayload.metrics = {
|
|
162
|
+
originalChars,
|
|
163
|
+
compactChars,
|
|
164
|
+
reductionPercent: Math.max(0, reductionPercent),
|
|
165
|
+
estimatedTokens: estimateTokens(compactJson),
|
|
166
|
+
};
|
|
167
|
+
logger.info(`Context for ${nodeId}: ${contextPayload.metrics.estimatedTokens} tokens, ${contextPayload.metrics.reductionPercent}% reduction`);
|
|
168
|
+
return contextPayload;
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=compact-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact-context.js","sourceRoot":"","sources":["../../../src/core/context/compact-context.ts"],"names":[],"mappings":"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"}
|