openlore 2.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 +268 -0
- package/dist/api/analyze.d.ts +17 -0
- package/dist/api/analyze.d.ts.map +1 -0
- package/dist/api/analyze.js +143 -0
- package/dist/api/analyze.js.map +1 -0
- package/dist/api/audit.d.ts +10 -0
- package/dist/api/audit.d.ts.map +1 -0
- package/dist/api/audit.js +117 -0
- package/dist/api/audit.js.map +1 -0
- package/dist/api/decisions.d.ts +55 -0
- package/dist/api/decisions.d.ts.map +1 -0
- package/dist/api/decisions.js +157 -0
- package/dist/api/decisions.js.map +1 -0
- package/dist/api/drift.d.ts +21 -0
- package/dist/api/drift.d.ts.map +1 -0
- package/dist/api/drift.js +152 -0
- package/dist/api/drift.js.map +1 -0
- package/dist/api/generate.d.ts +18 -0
- package/dist/api/generate.d.ts.map +1 -0
- package/dist/api/generate.js +259 -0
- package/dist/api/generate.js.map +1 -0
- package/dist/api/index.d.ts +41 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +34 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/init.d.ts +18 -0
- package/dist/api/init.d.ts.map +1 -0
- package/dist/api/init.js +83 -0
- package/dist/api/init.js.map +1 -0
- package/dist/api/run.d.ts +19 -0
- package/dist/api/run.d.ts.map +1 -0
- package/dist/api/run.js +312 -0
- package/dist/api/run.js.map +1 -0
- package/dist/api/specs.d.ts +49 -0
- package/dist/api/specs.d.ts.map +1 -0
- package/dist/api/specs.js +137 -0
- package/dist/api/specs.js.map +1 -0
- package/dist/api/types.d.ts +201 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +9 -0
- package/dist/api/types.js.map +1 -0
- package/dist/api/verify.d.ts +20 -0
- package/dist/api/verify.d.ts.map +1 -0
- package/dist/api/verify.js +117 -0
- package/dist/api/verify.js.map +1 -0
- package/dist/cli/commands/analyze.d.ts +30 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +683 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/audit.d.ts +9 -0
- package/dist/cli/commands/audit.d.ts.map +1 -0
- package/dist/cli/commands/audit.js +98 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/decisions.d.ts +16 -0
- package/dist/cli/commands/decisions.d.ts.map +1 -0
- package/dist/cli/commands/decisions.js +864 -0
- package/dist/cli/commands/decisions.js.map +1 -0
- package/dist/cli/commands/digest.d.ts +9 -0
- package/dist/cli/commands/digest.d.ts.map +1 -0
- package/dist/cli/commands/digest.js +61 -0
- package/dist/cli/commands/digest.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +9 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +398 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/drift.d.ts +9 -0
- package/dist/cli/commands/drift.d.ts.map +1 -0
- package/dist/cli/commands/drift.js +550 -0
- package/dist/cli/commands/drift.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +9 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +565 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/init.d.ts +9 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +173 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +2235 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +1384 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/refresh-stories.d.ts +10 -0
- package/dist/cli/commands/refresh-stories.d.ts.map +1 -0
- package/dist/cli/commands/refresh-stories.js +314 -0
- package/dist/cli/commands/refresh-stories.js.map +1 -0
- package/dist/cli/commands/run.d.ts +9 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +459 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +19 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +355 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/test.d.ts +22 -0
- package/dist/cli/commands/test.d.ts.map +1 -0
- package/dist/cli/commands/test.js +180 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/commands/verify.d.ts +9 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +383 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/commands/view.d.ts +13 -0
- package/dist/cli/commands/view.d.ts.map +1 -0
- package/dist/cli/commands/view.js +547 -0
- package/dist/cli/commands/view.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +118 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/tui-approval.d.ts +11 -0
- package/dist/cli/tui-approval.d.ts.map +1 -0
- package/dist/cli/tui-approval.js +129 -0
- package/dist/cli/tui-approval.js.map +1 -0
- package/dist/constants.d.ts +314 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +382 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/analyzer/ai-config-generator.d.ts +54 -0
- package/dist/core/analyzer/ai-config-generator.d.ts.map +1 -0
- package/dist/core/analyzer/ai-config-generator.js +98 -0
- package/dist/core/analyzer/ai-config-generator.js.map +1 -0
- package/dist/core/analyzer/architecture-writer.d.ts +67 -0
- package/dist/core/analyzer/architecture-writer.d.ts.map +1 -0
- package/dist/core/analyzer/architecture-writer.js +209 -0
- package/dist/core/analyzer/architecture-writer.js.map +1 -0
- package/dist/core/analyzer/artifact-generator.d.ts +261 -0
- package/dist/core/analyzer/artifact-generator.d.ts.map +1 -0
- package/dist/core/analyzer/artifact-generator.js +909 -0
- package/dist/core/analyzer/artifact-generator.js.map +1 -0
- package/dist/core/analyzer/ast-chunker.d.ts +24 -0
- package/dist/core/analyzer/ast-chunker.d.ts.map +1 -0
- package/dist/core/analyzer/ast-chunker.js +198 -0
- package/dist/core/analyzer/ast-chunker.js.map +1 -0
- package/dist/core/analyzer/call-graph.d.ts +162 -0
- package/dist/core/analyzer/call-graph.d.ts.map +1 -0
- package/dist/core/analyzer/call-graph.js +2040 -0
- package/dist/core/analyzer/call-graph.js.map +1 -0
- package/dist/core/analyzer/code-shaper.d.ts +33 -0
- package/dist/core/analyzer/code-shaper.d.ts.map +1 -0
- package/dist/core/analyzer/code-shaper.js +154 -0
- package/dist/core/analyzer/code-shaper.js.map +1 -0
- package/dist/core/analyzer/codebase-digest.d.ts +40 -0
- package/dist/core/analyzer/codebase-digest.d.ts.map +1 -0
- package/dist/core/analyzer/codebase-digest.js +195 -0
- package/dist/core/analyzer/codebase-digest.js.map +1 -0
- package/dist/core/analyzer/cpp-header-resolver.d.ts +30 -0
- package/dist/core/analyzer/cpp-header-resolver.d.ts.map +1 -0
- package/dist/core/analyzer/cpp-header-resolver.js +71 -0
- package/dist/core/analyzer/cpp-header-resolver.js.map +1 -0
- package/dist/core/analyzer/dependency-graph.d.ts +230 -0
- package/dist/core/analyzer/dependency-graph.d.ts.map +1 -0
- package/dist/core/analyzer/dependency-graph.js +752 -0
- package/dist/core/analyzer/dependency-graph.js.map +1 -0
- package/dist/core/analyzer/duplicate-detector.d.ts +52 -0
- package/dist/core/analyzer/duplicate-detector.d.ts.map +1 -0
- package/dist/core/analyzer/duplicate-detector.js +289 -0
- package/dist/core/analyzer/duplicate-detector.js.map +1 -0
- package/dist/core/analyzer/embedding-service.d.ts +56 -0
- package/dist/core/analyzer/embedding-service.d.ts.map +1 -0
- package/dist/core/analyzer/embedding-service.js +118 -0
- package/dist/core/analyzer/embedding-service.js.map +1 -0
- package/dist/core/analyzer/env-extractor.d.ts +33 -0
- package/dist/core/analyzer/env-extractor.d.ts.map +1 -0
- package/dist/core/analyzer/env-extractor.js +196 -0
- package/dist/core/analyzer/env-extractor.js.map +1 -0
- package/dist/core/analyzer/external-packages.d.ts +20 -0
- package/dist/core/analyzer/external-packages.d.ts.map +1 -0
- package/dist/core/analyzer/external-packages.js +175 -0
- package/dist/core/analyzer/external-packages.js.map +1 -0
- package/dist/core/analyzer/file-walker.d.ts +78 -0
- package/dist/core/analyzer/file-walker.d.ts.map +1 -0
- package/dist/core/analyzer/file-walker.js +532 -0
- package/dist/core/analyzer/file-walker.js.map +1 -0
- package/dist/core/analyzer/function-registry-trie.d.ts +21 -0
- package/dist/core/analyzer/function-registry-trie.d.ts.map +1 -0
- package/dist/core/analyzer/function-registry-trie.js +39 -0
- package/dist/core/analyzer/function-registry-trie.js.map +1 -0
- package/dist/core/analyzer/http-route-parser.d.ts +152 -0
- package/dist/core/analyzer/http-route-parser.d.ts.map +1 -0
- package/dist/core/analyzer/http-route-parser.js +971 -0
- package/dist/core/analyzer/http-route-parser.js.map +1 -0
- package/dist/core/analyzer/import-parser.d.ts +100 -0
- package/dist/core/analyzer/import-parser.d.ts.map +1 -0
- package/dist/core/analyzer/import-parser.js +952 -0
- package/dist/core/analyzer/import-parser.js.map +1 -0
- package/dist/core/analyzer/import-resolver-bridge.d.ts +25 -0
- package/dist/core/analyzer/import-resolver-bridge.d.ts.map +1 -0
- package/dist/core/analyzer/import-resolver-bridge.js +99 -0
- package/dist/core/analyzer/import-resolver-bridge.js.map +1 -0
- package/dist/core/analyzer/index.d.ts +10 -0
- package/dist/core/analyzer/index.d.ts.map +1 -0
- package/dist/core/analyzer/index.js +10 -0
- package/dist/core/analyzer/index.js.map +1 -0
- package/dist/core/analyzer/middleware-extractor.d.ts +29 -0
- package/dist/core/analyzer/middleware-extractor.d.ts.map +1 -0
- package/dist/core/analyzer/middleware-extractor.js +195 -0
- package/dist/core/analyzer/middleware-extractor.js.map +1 -0
- package/dist/core/analyzer/refactor-analyzer.d.ts +83 -0
- package/dist/core/analyzer/refactor-analyzer.d.ts.map +1 -0
- package/dist/core/analyzer/refactor-analyzer.js +351 -0
- package/dist/core/analyzer/refactor-analyzer.js.map +1 -0
- package/dist/core/analyzer/repository-mapper.d.ts +150 -0
- package/dist/core/analyzer/repository-mapper.d.ts.map +1 -0
- package/dist/core/analyzer/repository-mapper.js +740 -0
- package/dist/core/analyzer/repository-mapper.js.map +1 -0
- package/dist/core/analyzer/schema-extractor.d.ts +41 -0
- package/dist/core/analyzer/schema-extractor.d.ts.map +1 -0
- package/dist/core/analyzer/schema-extractor.js +229 -0
- package/dist/core/analyzer/schema-extractor.js.map +1 -0
- package/dist/core/analyzer/signature-extractor.d.ts +31 -0
- package/dist/core/analyzer/signature-extractor.d.ts.map +1 -0
- package/dist/core/analyzer/signature-extractor.js +675 -0
- package/dist/core/analyzer/signature-extractor.js.map +1 -0
- package/dist/core/analyzer/significance-scorer.d.ts +79 -0
- package/dist/core/analyzer/significance-scorer.d.ts.map +1 -0
- package/dist/core/analyzer/significance-scorer.js +407 -0
- package/dist/core/analyzer/significance-scorer.js.map +1 -0
- package/dist/core/analyzer/spec-snapshot-generator.d.ts +17 -0
- package/dist/core/analyzer/spec-snapshot-generator.d.ts.map +1 -0
- package/dist/core/analyzer/spec-snapshot-generator.js +201 -0
- package/dist/core/analyzer/spec-snapshot-generator.js.map +1 -0
- package/dist/core/analyzer/spec-vector-index.d.ts +68 -0
- package/dist/core/analyzer/spec-vector-index.d.ts.map +1 -0
- package/dist/core/analyzer/spec-vector-index.js +340 -0
- package/dist/core/analyzer/spec-vector-index.js.map +1 -0
- package/dist/core/analyzer/subgraph-extractor.d.ts +51 -0
- package/dist/core/analyzer/subgraph-extractor.d.ts.map +1 -0
- package/dist/core/analyzer/subgraph-extractor.js +147 -0
- package/dist/core/analyzer/subgraph-extractor.js.map +1 -0
- package/dist/core/analyzer/type-inference-engine.d.ts +23 -0
- package/dist/core/analyzer/type-inference-engine.d.ts.map +1 -0
- package/dist/core/analyzer/type-inference-engine.js +130 -0
- package/dist/core/analyzer/type-inference-engine.js.map +1 -0
- package/dist/core/analyzer/ui-component-extractor.d.ts +43 -0
- package/dist/core/analyzer/ui-component-extractor.d.ts.map +1 -0
- package/dist/core/analyzer/ui-component-extractor.js +245 -0
- package/dist/core/analyzer/ui-component-extractor.js.map +1 -0
- package/dist/core/analyzer/unified-search.d.ts +116 -0
- package/dist/core/analyzer/unified-search.d.ts.map +1 -0
- package/dist/core/analyzer/unified-search.js +231 -0
- package/dist/core/analyzer/unified-search.js.map +1 -0
- package/dist/core/analyzer/vector-index.d.ts +92 -0
- package/dist/core/analyzer/vector-index.d.ts.map +1 -0
- package/dist/core/analyzer/vector-index.js +451 -0
- package/dist/core/analyzer/vector-index.js.map +1 -0
- package/dist/core/decisions/consolidator.d.ts +14 -0
- package/dist/core/decisions/consolidator.d.ts.map +1 -0
- package/dist/core/decisions/consolidator.js +169 -0
- package/dist/core/decisions/consolidator.js.map +1 -0
- package/dist/core/decisions/extractor.d.ts +26 -0
- package/dist/core/decisions/extractor.d.ts.map +1 -0
- package/dist/core/decisions/extractor.js +156 -0
- package/dist/core/decisions/extractor.js.map +1 -0
- package/dist/core/decisions/index.d.ts +19 -0
- package/dist/core/decisions/index.d.ts.map +1 -0
- package/dist/core/decisions/index.js +16 -0
- package/dist/core/decisions/index.js.map +1 -0
- package/dist/core/decisions/store.d.ts +36 -0
- package/dist/core/decisions/store.d.ts.map +1 -0
- package/dist/core/decisions/store.js +109 -0
- package/dist/core/decisions/store.js.map +1 -0
- package/dist/core/decisions/syncer.d.ts +27 -0
- package/dist/core/decisions/syncer.d.ts.map +1 -0
- package/dist/core/decisions/syncer.js +214 -0
- package/dist/core/decisions/syncer.js.map +1 -0
- package/dist/core/decisions/verifier.d.ts +20 -0
- package/dist/core/decisions/verifier.d.ts.map +1 -0
- package/dist/core/decisions/verifier.js +115 -0
- package/dist/core/decisions/verifier.js.map +1 -0
- package/dist/core/digest/digest-generator.d.ts +29 -0
- package/dist/core/digest/digest-generator.d.ts.map +1 -0
- package/dist/core/digest/digest-generator.js +181 -0
- package/dist/core/digest/digest-generator.js.map +1 -0
- package/dist/core/drift/drift-detector.d.ts +102 -0
- package/dist/core/drift/drift-detector.d.ts.map +1 -0
- package/dist/core/drift/drift-detector.js +598 -0
- package/dist/core/drift/drift-detector.js.map +1 -0
- package/dist/core/drift/git-diff.d.ts +60 -0
- package/dist/core/drift/git-diff.d.ts.map +1 -0
- package/dist/core/drift/git-diff.js +383 -0
- package/dist/core/drift/git-diff.js.map +1 -0
- package/dist/core/drift/index.d.ts +12 -0
- package/dist/core/drift/index.d.ts.map +1 -0
- package/dist/core/drift/index.js +9 -0
- package/dist/core/drift/index.js.map +1 -0
- package/dist/core/drift/spec-mapper.d.ts +73 -0
- package/dist/core/drift/spec-mapper.d.ts.map +1 -0
- package/dist/core/drift/spec-mapper.js +353 -0
- package/dist/core/drift/spec-mapper.js.map +1 -0
- package/dist/core/drift/test-suggester.d.ts +18 -0
- package/dist/core/drift/test-suggester.d.ts.map +1 -0
- package/dist/core/drift/test-suggester.js +107 -0
- package/dist/core/drift/test-suggester.js.map +1 -0
- package/dist/core/generator/adr-generator.d.ts +32 -0
- package/dist/core/generator/adr-generator.d.ts.map +1 -0
- package/dist/core/generator/adr-generator.js +192 -0
- package/dist/core/generator/adr-generator.js.map +1 -0
- package/dist/core/generator/index.d.ts +9 -0
- package/dist/core/generator/index.d.ts.map +1 -0
- package/dist/core/generator/index.js +12 -0
- package/dist/core/generator/index.js.map +1 -0
- package/dist/core/generator/mapping-generator.d.ts +54 -0
- package/dist/core/generator/mapping-generator.d.ts.map +1 -0
- package/dist/core/generator/mapping-generator.js +240 -0
- package/dist/core/generator/mapping-generator.js.map +1 -0
- package/dist/core/generator/openspec-compat.d.ts +160 -0
- package/dist/core/generator/openspec-compat.d.ts.map +1 -0
- package/dist/core/generator/openspec-compat.js +524 -0
- package/dist/core/generator/openspec-compat.js.map +1 -0
- package/dist/core/generator/openspec-format-generator.d.ts +131 -0
- package/dist/core/generator/openspec-format-generator.d.ts.map +1 -0
- package/dist/core/generator/openspec-format-generator.js +963 -0
- package/dist/core/generator/openspec-format-generator.js.map +1 -0
- package/dist/core/generator/openspec-writer.d.ts +130 -0
- package/dist/core/generator/openspec-writer.d.ts.map +1 -0
- package/dist/core/generator/openspec-writer.js +404 -0
- package/dist/core/generator/openspec-writer.js.map +1 -0
- package/dist/core/generator/prompts.d.ts +35 -0
- package/dist/core/generator/prompts.d.ts.map +1 -0
- package/dist/core/generator/prompts.js +212 -0
- package/dist/core/generator/prompts.js.map +1 -0
- package/dist/core/generator/rag-manifest-generator.d.ts +37 -0
- package/dist/core/generator/rag-manifest-generator.d.ts.map +1 -0
- package/dist/core/generator/rag-manifest-generator.js +134 -0
- package/dist/core/generator/rag-manifest-generator.js.map +1 -0
- package/dist/core/generator/schemas.d.ts +365 -0
- package/dist/core/generator/schemas.d.ts.map +1 -0
- package/dist/core/generator/schemas.js +190 -0
- package/dist/core/generator/schemas.js.map +1 -0
- package/dist/core/generator/spec-pipeline.d.ts +123 -0
- package/dist/core/generator/spec-pipeline.d.ts.map +1 -0
- package/dist/core/generator/spec-pipeline.js +699 -0
- package/dist/core/generator/spec-pipeline.js.map +1 -0
- package/dist/core/generator/stages/stage1-survey.d.ts +19 -0
- package/dist/core/generator/stages/stage1-survey.d.ts.map +1 -0
- package/dist/core/generator/stages/stage1-survey.js +171 -0
- package/dist/core/generator/stages/stage1-survey.js.map +1 -0
- package/dist/core/generator/stages/stage2-entities.d.ts +11 -0
- package/dist/core/generator/stages/stage2-entities.d.ts.map +1 -0
- package/dist/core/generator/stages/stage2-entities.js +74 -0
- package/dist/core/generator/stages/stage2-entities.js.map +1 -0
- package/dist/core/generator/stages/stage3-services.d.ts +11 -0
- package/dist/core/generator/stages/stage3-services.d.ts.map +1 -0
- package/dist/core/generator/stages/stage3-services.js +85 -0
- package/dist/core/generator/stages/stage3-services.js.map +1 -0
- package/dist/core/generator/stages/stage4-api.d.ts +11 -0
- package/dist/core/generator/stages/stage4-api.d.ts.map +1 -0
- package/dist/core/generator/stages/stage4-api.js +72 -0
- package/dist/core/generator/stages/stage4-api.js.map +1 -0
- package/dist/core/generator/stages/stage5-architecture.d.ts +11 -0
- package/dist/core/generator/stages/stage5-architecture.d.ts.map +1 -0
- package/dist/core/generator/stages/stage5-architecture.js +75 -0
- package/dist/core/generator/stages/stage5-architecture.js.map +1 -0
- package/dist/core/generator/stages/stage6-adr.d.ts +8 -0
- package/dist/core/generator/stages/stage6-adr.d.ts.map +1 -0
- package/dist/core/generator/stages/stage6-adr.js +47 -0
- package/dist/core/generator/stages/stage6-adr.js.map +1 -0
- package/dist/core/services/chat-agent.d.ts +50 -0
- package/dist/core/services/chat-agent.d.ts.map +1 -0
- package/dist/core/services/chat-agent.js +369 -0
- package/dist/core/services/chat-agent.js.map +1 -0
- package/dist/core/services/chat-tools.d.ts +32 -0
- package/dist/core/services/chat-tools.d.ts.map +1 -0
- package/dist/core/services/chat-tools.js +494 -0
- package/dist/core/services/chat-tools.js.map +1 -0
- package/dist/core/services/config-manager.d.ts +61 -0
- package/dist/core/services/config-manager.d.ts.map +1 -0
- package/dist/core/services/config-manager.js +149 -0
- package/dist/core/services/config-manager.js.map +1 -0
- package/dist/core/services/edge-store.d.ts +57 -0
- package/dist/core/services/edge-store.d.ts.map +1 -0
- package/dist/core/services/edge-store.js +419 -0
- package/dist/core/services/edge-store.js.map +1 -0
- package/dist/core/services/gitignore-manager.d.ts +29 -0
- package/dist/core/services/gitignore-manager.d.ts.map +1 -0
- package/dist/core/services/gitignore-manager.js +95 -0
- package/dist/core/services/gitignore-manager.js.map +1 -0
- package/dist/core/services/index.d.ts +8 -0
- package/dist/core/services/index.d.ts.map +1 -0
- package/dist/core/services/index.js +8 -0
- package/dist/core/services/index.js.map +1 -0
- package/dist/core/services/llm-service.d.ts +379 -0
- package/dist/core/services/llm-service.d.ts.map +1 -0
- package/dist/core/services/llm-service.js +1553 -0
- package/dist/core/services/llm-service.js.map +1 -0
- package/dist/core/services/mcp-handlers/analysis.d.ts +127 -0
- package/dist/core/services/mcp-handlers/analysis.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/analysis.js +1185 -0
- package/dist/core/services/mcp-handlers/analysis.js.map +1 -0
- package/dist/core/services/mcp-handlers/change.d.ts +14 -0
- package/dist/core/services/mcp-handlers/change.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/change.js +416 -0
- package/dist/core/services/mcp-handlers/change.js.map +1 -0
- package/dist/core/services/mcp-handlers/decisions.d.ts +16 -0
- package/dist/core/services/mcp-handlers/decisions.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/decisions.js +239 -0
- package/dist/core/services/mcp-handlers/decisions.js.map +1 -0
- package/dist/core/services/mcp-handlers/graph.d.ts +94 -0
- package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/graph.js +693 -0
- package/dist/core/services/mcp-handlers/graph.js.map +1 -0
- package/dist/core/services/mcp-handlers/orient.d.ts +17 -0
- package/dist/core/services/mcp-handlers/orient.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/orient.js +357 -0
- package/dist/core/services/mcp-handlers/orient.js.map +1 -0
- package/dist/core/services/mcp-handlers/semantic.d.ts +66 -0
- package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/semantic.js +432 -0
- package/dist/core/services/mcp-handlers/semantic.js.map +1 -0
- package/dist/core/services/mcp-handlers/utils.d.ts +85 -0
- package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/utils.js +262 -0
- package/dist/core/services/mcp-handlers/utils.js.map +1 -0
- package/dist/core/services/mcp-watcher.d.ts +41 -0
- package/dist/core/services/mcp-watcher.d.ts.map +1 -0
- package/dist/core/services/mcp-watcher.js +254 -0
- package/dist/core/services/mcp-watcher.js.map +1 -0
- package/dist/core/services/project-detector.d.ts +32 -0
- package/dist/core/services/project-detector.d.ts.map +1 -0
- package/dist/core/services/project-detector.js +100 -0
- package/dist/core/services/project-detector.js.map +1 -0
- package/dist/core/test-generator/coverage-analyzer.d.ts +27 -0
- package/dist/core/test-generator/coverage-analyzer.d.ts.map +1 -0
- package/dist/core/test-generator/coverage-analyzer.js +285 -0
- package/dist/core/test-generator/coverage-analyzer.js.map +1 -0
- package/dist/core/test-generator/framework-detector.d.ts +17 -0
- package/dist/core/test-generator/framework-detector.d.ts.map +1 -0
- package/dist/core/test-generator/framework-detector.js +65 -0
- package/dist/core/test-generator/framework-detector.js.map +1 -0
- package/dist/core/test-generator/index.d.ts +14 -0
- package/dist/core/test-generator/index.d.ts.map +1 -0
- package/dist/core/test-generator/index.js +11 -0
- package/dist/core/test-generator/index.js.map +1 -0
- package/dist/core/test-generator/renderers/catch2.d.ts +8 -0
- package/dist/core/test-generator/renderers/catch2.d.ts.map +1 -0
- package/dist/core/test-generator/renderers/catch2.js +47 -0
- package/dist/core/test-generator/renderers/catch2.js.map +1 -0
- package/dist/core/test-generator/renderers/gtest.d.ts +8 -0
- package/dist/core/test-generator/renderers/gtest.d.ts.map +1 -0
- package/dist/core/test-generator/renderers/gtest.js +45 -0
- package/dist/core/test-generator/renderers/gtest.js.map +1 -0
- package/dist/core/test-generator/renderers/index.d.ts +20 -0
- package/dist/core/test-generator/renderers/index.d.ts.map +1 -0
- package/dist/core/test-generator/renderers/index.js +35 -0
- package/dist/core/test-generator/renderers/index.js.map +1 -0
- package/dist/core/test-generator/renderers/playwright.d.ts +8 -0
- package/dist/core/test-generator/renderers/playwright.d.ts.map +1 -0
- package/dist/core/test-generator/renderers/playwright.js +44 -0
- package/dist/core/test-generator/renderers/playwright.js.map +1 -0
- package/dist/core/test-generator/renderers/pytest.d.ts +8 -0
- package/dist/core/test-generator/renderers/pytest.d.ts.map +1 -0
- package/dist/core/test-generator/renderers/pytest.js +44 -0
- package/dist/core/test-generator/renderers/pytest.js.map +1 -0
- package/dist/core/test-generator/renderers/shared.d.ts +21 -0
- package/dist/core/test-generator/renderers/shared.d.ts.map +1 -0
- package/dist/core/test-generator/renderers/shared.js +56 -0
- package/dist/core/test-generator/renderers/shared.js.map +1 -0
- package/dist/core/test-generator/renderers/vitest.d.ts +8 -0
- package/dist/core/test-generator/renderers/vitest.d.ts.map +1 -0
- package/dist/core/test-generator/renderers/vitest.js +52 -0
- package/dist/core/test-generator/renderers/vitest.js.map +1 -0
- package/dist/core/test-generator/scenario-parser.d.ts +33 -0
- package/dist/core/test-generator/scenario-parser.d.ts.map +1 -0
- package/dist/core/test-generator/scenario-parser.js +244 -0
- package/dist/core/test-generator/scenario-parser.js.map +1 -0
- package/dist/core/test-generator/test-generator.d.ts +30 -0
- package/dist/core/test-generator/test-generator.d.ts.map +1 -0
- package/dist/core/test-generator/test-generator.js +174 -0
- package/dist/core/test-generator/test-generator.js.map +1 -0
- package/dist/core/test-generator/test-writer.d.ts +25 -0
- package/dist/core/test-generator/test-writer.d.ts.map +1 -0
- package/dist/core/test-generator/test-writer.js +128 -0
- package/dist/core/test-generator/test-writer.js.map +1 -0
- package/dist/core/test-generator/then-matchers.d.ts +35 -0
- package/dist/core/test-generator/then-matchers.d.ts.map +1 -0
- package/dist/core/test-generator/then-matchers.js +211 -0
- package/dist/core/test-generator/then-matchers.js.map +1 -0
- package/dist/core/verifier/index.d.ts +5 -0
- package/dist/core/verifier/index.d.ts.map +1 -0
- package/dist/core/verifier/index.js +5 -0
- package/dist/core/verifier/index.js.map +1 -0
- package/dist/core/verifier/verification-engine.d.ts +293 -0
- package/dist/core/verifier/verification-engine.d.ts.map +1 -0
- package/dist/core/verifier/verification-engine.js +919 -0
- package/dist/core/verifier/verification-engine.js.map +1 -0
- package/dist/types/index.d.ts +368 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/pipeline.d.ts +167 -0
- package/dist/types/pipeline.d.ts.map +1 -0
- package/dist/types/pipeline.js +5 -0
- package/dist/types/pipeline.js.map +1 -0
- package/dist/types/test-generator.d.ts +103 -0
- package/dist/types/test-generator.d.ts.map +1 -0
- package/dist/types/test-generator.js +17 -0
- package/dist/types/test-generator.js.map +1 -0
- package/dist/utils/command-helpers.d.ts +68 -0
- package/dist/utils/command-helpers.d.ts.map +1 -0
- package/dist/utils/command-helpers.js +150 -0
- package/dist/utils/command-helpers.js.map +1 -0
- package/dist/utils/errors.d.ts +51 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +129 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +149 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +342 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/misc.d.ts +10 -0
- package/dist/utils/misc.d.ts.map +1 -0
- package/dist/utils/misc.js +21 -0
- package/dist/utils/misc.js.map +1 -0
- package/dist/utils/progress.d.ts +142 -0
- package/dist/utils/progress.d.ts.map +1 -0
- package/dist/utils/progress.js +283 -0
- package/dist/utils/progress.js.map +1 -0
- package/dist/utils/prompts.d.ts +53 -0
- package/dist/utils/prompts.d.ts.map +1 -0
- package/dist/utils/prompts.js +199 -0
- package/dist/utils/prompts.js.map +1 -0
- package/dist/utils/shutdown.d.ts +89 -0
- package/dist/utils/shutdown.d.ts.map +1 -0
- package/dist/utils/shutdown.js +238 -0
- package/dist/utils/shutdown.js.map +1 -0
- package/examples/bmad/README.md +113 -0
- package/examples/bmad/agents/architect.md +226 -0
- package/examples/bmad/agents/dev-brownfield.md +69 -0
- package/examples/bmad/setup/architect.customize.yaml +14 -0
- package/examples/bmad/tasks/implement-story.md +254 -0
- package/examples/bmad/tasks/onboarding.md +169 -0
- package/examples/bmad/tasks/refactor.md +178 -0
- package/examples/bmad/tasks/sprint-planning.md +168 -0
- package/examples/bmad/templates/story.md +108 -0
- package/examples/cline-workflows/openlore-analyze-codebase.md +101 -0
- package/examples/cline-workflows/openlore-check-spec-drift.md +102 -0
- package/examples/cline-workflows/openlore-execute-refactor.md +212 -0
- package/examples/cline-workflows/openlore-implement-feature.md +266 -0
- package/examples/cline-workflows/openlore-plan-refactor.md +279 -0
- package/examples/cline-workflows/openlore-refactor-codebase.md +16 -0
- package/examples/cline-workflows/openlore-write-tests.md +177 -0
- package/examples/drift-demo/openspec/config.yaml +14 -0
- package/examples/drift-demo/openspec/specs/architecture/spec.md +30 -0
- package/examples/drift-demo/openspec/specs/auth/spec.md +71 -0
- package/examples/drift-demo/openspec/specs/database/spec.md +33 -0
- package/examples/drift-demo/openspec/specs/overview/spec.md +20 -0
- package/examples/drift-demo/openspec/specs/projects/spec.md +55 -0
- package/examples/drift-demo/openspec/specs/tasks/spec.md +78 -0
- package/examples/drift-demo/package.json +21 -0
- package/examples/drift-demo/src/auth/auth-middleware.ts +30 -0
- package/examples/drift-demo/src/auth/auth-routes.ts +29 -0
- package/examples/drift-demo/src/auth/auth-service.ts +45 -0
- package/examples/drift-demo/src/database/connection.ts +27 -0
- package/examples/drift-demo/src/index.ts +16 -0
- package/examples/drift-demo/src/projects/project-model.ts +15 -0
- package/examples/drift-demo/src/projects/project-service.ts +34 -0
- package/examples/drift-demo/src/tasks/task-model.ts +37 -0
- package/examples/drift-demo/src/tasks/task-routes.ts +53 -0
- package/examples/drift-demo/src/tasks/task-service.ts +60 -0
- package/examples/drift-demo/src/utils/validation.ts +11 -0
- package/examples/drift-demo/tests/auth.test.ts +4 -0
- package/examples/drift-demo/tests/tasks.test.ts +4 -0
- package/examples/drift-demo/tsconfig.json +10 -0
- package/examples/drift-test/run-drift-test.sh +1087 -0
- package/examples/gsd/README.md +119 -0
- package/examples/gsd/commands/gsd/openlore-drift.md +111 -0
- package/examples/gsd/commands/gsd/openlore-orient.md +191 -0
- package/examples/mistral-vibe/README.md +101 -0
- package/examples/mistral-vibe/antipatterns-template.md +18 -0
- package/examples/mistral-vibe/skills/openlore-analyze-codebase/SKILL.md +124 -0
- package/examples/mistral-vibe/skills/openlore-brainstorm/SKILL.md +379 -0
- package/examples/mistral-vibe/skills/openlore-debug/SKILL.md +330 -0
- package/examples/mistral-vibe/skills/openlore-execute-refactor/SKILL.md +291 -0
- package/examples/mistral-vibe/skills/openlore-generate/SKILL.md +245 -0
- package/examples/mistral-vibe/skills/openlore-implement-story/SKILL.md +326 -0
- package/examples/mistral-vibe/skills/openlore-plan-refactor/SKILL.md +365 -0
- package/examples/mistral-vibe/skills/openlore-review-changes/SKILL.md +128 -0
- package/examples/mistral-vibe/skills/openlore-write-tests/SKILL.md +261 -0
- package/examples/opencode/agent-guard.ts +170 -0
- package/examples/opencode/plugins/anti-laziness.ts +202 -0
- package/examples/opencode/plugins/lib/openlore-context-injector-helpers.ts +116 -0
- package/examples/opencode/plugins/lib/openlore-decision-extractor-helpers.ts +65 -0
- package/examples/opencode/plugins/openlore-context-injector.test.ts +211 -0
- package/examples/opencode/plugins/openlore-context-injector.ts +165 -0
- package/examples/opencode/plugins/openlore-decision-extractor.test.ts +131 -0
- package/examples/opencode/plugins/openlore-decision-extractor.ts +322 -0
- package/examples/opencode/plugins/openlore-enforcer.ts +227 -0
- package/examples/opencode/prompts/sisyphus-sdd.md +150 -0
- package/examples/opencode-skills/openlore-analyze-codebase/SKILL.md +101 -0
- package/examples/opencode-skills/openlore-brainstorm/SKILL.md +354 -0
- package/examples/opencode-skills/openlore-debug/SKILL.md +291 -0
- package/examples/opencode-skills/openlore-execute-refactor/SKILL.md +241 -0
- package/examples/opencode-skills/openlore-generate/SKILL.md +236 -0
- package/examples/opencode-skills/openlore-implement-story/SKILL.md +251 -0
- package/examples/opencode-skills/openlore-plan-refactor/SKILL.md +298 -0
- package/examples/opencode-skills/openlore-review-changes/SKILL.md +134 -0
- package/examples/opencode-skills/openlore-write-tests/SKILL.md +230 -0
- package/examples/openspec-analysis/README.md +59 -0
- package/examples/openspec-analysis/SUMMARY.md +72 -0
- package/examples/openspec-analysis/config.json +16 -0
- package/examples/openspec-analysis/dependencies.mermaid +35 -0
- package/examples/openspec-analysis/dependency-graph.json +12116 -0
- package/examples/openspec-analysis/llm-context.json +119 -0
- package/examples/openspec-analysis/repo-structure.json +871 -0
- package/examples/openspec-cli/README.md +67 -0
- package/examples/openspec-cli/openspec/config.yaml +26 -0
- package/examples/openspec-cli/openspec/specs/architecture/spec.md +178 -0
- package/examples/openspec-cli/openspec/specs/artifact-graph/spec.md +143 -0
- package/examples/openspec-cli/openspec/specs/cli/spec.md +138 -0
- package/examples/openspec-cli/openspec/specs/overview/spec.md +60 -0
- package/examples/openspec-cli/openspec/specs/parsing/spec.md +123 -0
- package/examples/openspec-cli/openspec/specs/validation/spec.md +108 -0
- package/examples/spec-kit/README.md +104 -0
- package/examples/spec-kit/commands/drift.md +87 -0
- package/examples/spec-kit/commands/orient.md +138 -0
- package/examples/spec-kit/extension.yml +54 -0
- package/package.json +125 -0
- package/src/viewer/InteractiveGraphViewer.jsx +1600 -0
- package/src/viewer/app/index.html +17 -0
- package/src/viewer/app/main.jsx +13 -0
- package/src/viewer/components/ArchitectureView.jsx +177 -0
- package/src/viewer/components/ChatPanel.jsx +450 -0
- package/src/viewer/components/ClassGraph.jsx +782 -0
- package/src/viewer/components/ClusterGraph.jsx +469 -0
- package/src/viewer/components/FilterBar.jsx +179 -0
- package/src/viewer/components/FlatGraph.jsx +282 -0
- package/src/viewer/components/MicroComponents.jsx +85 -0
- package/src/viewer/hooks/usePanZoom.js +79 -0
- package/src/viewer/utils/constants.js +64 -0
- package/src/viewer/utils/graph-helpers.js +303 -0
- package/src/viewer/utils/graph-helpers.test.ts +39 -0
- package/src/viewer/utils/themes.js +206 -0
- package/stubs/tree-sitter-cli-stub/package.json +6 -0
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool registry for the diagram chatbot.
|
|
3
|
+
*
|
|
4
|
+
* Each entry in CHAT_TOOLS maps a tool name to:
|
|
5
|
+
* - description / inputSchema -- forwarded to the LLM as tool definitions
|
|
6
|
+
* - execute() -- calls the matching handler and returns
|
|
7
|
+
* { result, filePaths } where filePaths is
|
|
8
|
+
* the list of source files to highlight in
|
|
9
|
+
* the dependency graph.
|
|
10
|
+
*
|
|
11
|
+
* To add a future MCP tool: add one entry here pointing to any handler.
|
|
12
|
+
*/
|
|
13
|
+
import { handleGetCallGraph, handleGetSubgraph, handleAnalyzeImpact, handleGetCriticalHubs, handleGetGodFunctions, handleGetFileDependencies, handleTraceExecutionPath, } from './mcp-handlers/graph.js';
|
|
14
|
+
import { handleSearchCode, handleSuggestInsertionPoints, handleSearchSpecs, handleListSpecDomains, handleGetSpec, handleUnifiedSearch, } from './mcp-handlers/semantic.js';
|
|
15
|
+
import { handleGetArchitectureOverview, handleGetRefactorReport, handleGetDecisions, } from './mcp-handlers/analysis.js';
|
|
16
|
+
import { handleOrient } from './mcp-handlers/orient.js';
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// HELPERS
|
|
19
|
+
// ============================================================================
|
|
20
|
+
/** Recursively extract file-path-looking values from tool results for highlighting. */
|
|
21
|
+
function extractFilePaths(obj) {
|
|
22
|
+
if (!obj || typeof obj !== 'object')
|
|
23
|
+
return [];
|
|
24
|
+
const paths = [];
|
|
25
|
+
const push = (v) => {
|
|
26
|
+
if (typeof v === 'string' && v.includes('/'))
|
|
27
|
+
paths.push(v);
|
|
28
|
+
};
|
|
29
|
+
const rec = (o) => {
|
|
30
|
+
if (!o || typeof o !== 'object')
|
|
31
|
+
return;
|
|
32
|
+
if (Array.isArray(o)) {
|
|
33
|
+
o.forEach(rec);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const r = o;
|
|
37
|
+
for (const [k, v] of Object.entries(r)) {
|
|
38
|
+
if (k === 'file' || k === 'filePath' || k === 'callerFile' || k === 'calleeFile') {
|
|
39
|
+
push(v);
|
|
40
|
+
}
|
|
41
|
+
else if (typeof v === 'object') {
|
|
42
|
+
rec(v);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
rec(obj);
|
|
47
|
+
return [...new Set(paths)];
|
|
48
|
+
}
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// TOOL REGISTRY
|
|
51
|
+
// ============================================================================
|
|
52
|
+
export const CHAT_TOOLS = [
|
|
53
|
+
// ── Orient (start here) ──────────────────────────────────────────────────
|
|
54
|
+
{
|
|
55
|
+
name: 'orient',
|
|
56
|
+
description: 'START HERE. USE THIS WHEN: beginning any new task — "add X", "fix Y", "where does Z live?". ' +
|
|
57
|
+
'Returns relevant functions, files, spec domains, call neighbours, and insertion points in ONE call. ' +
|
|
58
|
+
'Replaces the need to chain search_code → search_specs → suggest_insertion_points manually.',
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {
|
|
62
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
63
|
+
task: { type: 'string', description: 'Natural language description of the task' },
|
|
64
|
+
limit: {
|
|
65
|
+
type: 'number',
|
|
66
|
+
description: 'Number of relevant functions to return (default: 5)',
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
required: ['directory', 'task'],
|
|
70
|
+
},
|
|
71
|
+
async execute(directory, args) {
|
|
72
|
+
const result = await handleOrient(args.directory ?? directory, args.task, args.limit ?? 5);
|
|
73
|
+
const paths = [];
|
|
74
|
+
if (result && typeof result === 'object') {
|
|
75
|
+
const r = result;
|
|
76
|
+
for (const f of r.relevantFiles ?? [])
|
|
77
|
+
paths.push(f);
|
|
78
|
+
}
|
|
79
|
+
return { result, filePaths: [...new Set(paths)] };
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
// ── Architecture overview ────────────────────────────────────────────────
|
|
83
|
+
{
|
|
84
|
+
name: 'get_architecture_overview',
|
|
85
|
+
description: 'USE THIS WHEN: the user asks "how is this project organized?", "what are the main ' +
|
|
86
|
+
'components?", or wants a broad overview before diving in. ' +
|
|
87
|
+
'Returns domain clusters, cross-cluster dependencies, global entry points, and critical ' +
|
|
88
|
+
'hubs in one call — faster than reading package.json + directory tree yourself.',
|
|
89
|
+
inputSchema: {
|
|
90
|
+
type: 'object',
|
|
91
|
+
properties: {
|
|
92
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
93
|
+
},
|
|
94
|
+
required: ['directory'],
|
|
95
|
+
},
|
|
96
|
+
async execute(directory, args) {
|
|
97
|
+
const result = await handleGetArchitectureOverview(args.directory ?? directory);
|
|
98
|
+
const paths = [];
|
|
99
|
+
if (result && typeof result === 'object') {
|
|
100
|
+
const r = result;
|
|
101
|
+
for (const ep of r.globalEntryPoints ?? []) {
|
|
102
|
+
if (ep.file)
|
|
103
|
+
paths.push(ep.file);
|
|
104
|
+
}
|
|
105
|
+
for (const hub of r.criticalHubs ?? []) {
|
|
106
|
+
if (hub.file)
|
|
107
|
+
paths.push(hub.file);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return { result, filePaths: [...new Set(paths)] };
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
// ── Call graph ───────────────────────────────────────────────────────────
|
|
114
|
+
{
|
|
115
|
+
name: 'get_call_graph',
|
|
116
|
+
description: 'USE THIS WHEN: the user asks "which functions are called the most?", "what are ' +
|
|
117
|
+
'the critical bottlenecks?", or "are there layer violations?". ' +
|
|
118
|
+
'Returns hub functions, entry points, and architecture violations across all files — ' +
|
|
119
|
+
'impossible to reconstruct by reading individual files.',
|
|
120
|
+
inputSchema: {
|
|
121
|
+
type: 'object',
|
|
122
|
+
properties: {
|
|
123
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
124
|
+
},
|
|
125
|
+
required: ['directory'],
|
|
126
|
+
},
|
|
127
|
+
async execute(directory, args) {
|
|
128
|
+
const result = await handleGetCallGraph(args.directory ?? directory);
|
|
129
|
+
return { result, filePaths: extractFilePaths(result) };
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
// ── Subgraph ─────────────────────────────────────────────────────────────
|
|
133
|
+
{
|
|
134
|
+
name: 'get_subgraph',
|
|
135
|
+
description: 'USE THIS WHEN: the user needs to trace calls from or to a specific function — ' +
|
|
136
|
+
'"what does X call?", "who calls Y?", "show me the call chain for Z". ' +
|
|
137
|
+
'More targeted than get_call_graph. Works across all files without you having to ' +
|
|
138
|
+
'grep through each one.',
|
|
139
|
+
inputSchema: {
|
|
140
|
+
type: 'object',
|
|
141
|
+
properties: {
|
|
142
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
143
|
+
functionName: { type: 'string', description: 'Function name (exact or partial match)' },
|
|
144
|
+
direction: {
|
|
145
|
+
type: 'string',
|
|
146
|
+
enum: ['downstream', 'upstream', 'both'],
|
|
147
|
+
description: 'Direction (default: downstream)',
|
|
148
|
+
},
|
|
149
|
+
maxDepth: { type: 'number', description: 'BFS depth limit (default: 3)' },
|
|
150
|
+
},
|
|
151
|
+
required: ['directory', 'functionName'],
|
|
152
|
+
},
|
|
153
|
+
async execute(directory, args) {
|
|
154
|
+
const result = await handleGetSubgraph(args.directory ?? directory, args.functionName, args.direction ?? 'downstream', args.maxDepth ?? 3, 'json');
|
|
155
|
+
return { result, filePaths: extractFilePaths(result) };
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
// ── Execution path tracing ───────────────────────────────────────────────
|
|
159
|
+
{
|
|
160
|
+
name: 'trace_execution_path',
|
|
161
|
+
description: 'USE THIS WHEN debugging: "how does request X reach function Y?", ' +
|
|
162
|
+
'"which call chain produced this error?", "is there a path from A to B?". ' +
|
|
163
|
+
'Returns all paths ordered by hop count. Complements get_subgraph (neighbourhood) ' +
|
|
164
|
+
'with point-to-point tracing.',
|
|
165
|
+
inputSchema: {
|
|
166
|
+
type: 'object',
|
|
167
|
+
properties: {
|
|
168
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
169
|
+
entryFunction: { type: 'string', description: 'Starting function name (exact or partial)' },
|
|
170
|
+
targetFunction: { type: 'string', description: 'Target function name (exact or partial)' },
|
|
171
|
+
maxDepth: { type: 'number', description: 'Max path length in hops (default: 6)' },
|
|
172
|
+
maxPaths: { type: 'number', description: 'Max paths returned (default: 10)' },
|
|
173
|
+
},
|
|
174
|
+
required: ['directory', 'entryFunction', 'targetFunction'],
|
|
175
|
+
},
|
|
176
|
+
async execute(directory, args) {
|
|
177
|
+
const result = await handleTraceExecutionPath(args.directory ?? directory, args.entryFunction, args.targetFunction, args.maxDepth ?? 6, args.maxPaths ?? 10);
|
|
178
|
+
return { result, filePaths: extractFilePaths(result) };
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
// ── Impact analysis ──────────────────────────────────────────────────────
|
|
182
|
+
{
|
|
183
|
+
name: 'analyze_impact',
|
|
184
|
+
description: 'USE THIS WHEN: the user asks "what breaks if I change X?", "what\'s the blast radius ' +
|
|
185
|
+
'of modifying Y?", or "is it safe to refactor Z?". ' +
|
|
186
|
+
'Returns risk score, fan-in/out, and full upstream/downstream call chains — ' +
|
|
187
|
+
'gives the complete picture without reading every caller file.',
|
|
188
|
+
inputSchema: {
|
|
189
|
+
type: 'object',
|
|
190
|
+
properties: {
|
|
191
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
192
|
+
symbol: { type: 'string', description: 'Function name to analyse (exact or partial)' },
|
|
193
|
+
depth: { type: 'number', description: 'Chain depth (default: 2)' },
|
|
194
|
+
},
|
|
195
|
+
required: ['directory', 'symbol'],
|
|
196
|
+
},
|
|
197
|
+
async execute(directory, args) {
|
|
198
|
+
const result = await handleAnalyzeImpact(args.directory ?? directory, args.symbol, args.depth ?? 2);
|
|
199
|
+
return { result, filePaths: extractFilePaths(result) };
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
// ── Critical hubs ────────────────────────────────────────────────────────
|
|
203
|
+
{
|
|
204
|
+
name: 'get_critical_hubs',
|
|
205
|
+
description: 'USE THIS WHEN: the user asks "what\'s the most central code?", "what should I ' +
|
|
206
|
+
'refactor to reduce coupling?", or "which functions are shared the most?". ' +
|
|
207
|
+
'Lists the highest fan-in functions — modifying them has the widest blast radius.',
|
|
208
|
+
inputSchema: {
|
|
209
|
+
type: 'object',
|
|
210
|
+
properties: {
|
|
211
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
212
|
+
limit: { type: 'number', description: 'Maximum hubs to return (default: 10)' },
|
|
213
|
+
minFanIn: { type: 'number', description: 'Minimum fan-in threshold (default: 3)' },
|
|
214
|
+
},
|
|
215
|
+
required: ['directory'],
|
|
216
|
+
},
|
|
217
|
+
async execute(directory, args) {
|
|
218
|
+
const result = await handleGetCriticalHubs(args.directory ?? directory, args.limit ?? 10, args.minFanIn ?? 3);
|
|
219
|
+
return { result, filePaths: extractFilePaths(result) };
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
// ── God functions ────────────────────────────────────────────────────────
|
|
223
|
+
{
|
|
224
|
+
name: 'get_god_functions',
|
|
225
|
+
description: 'USE THIS WHEN: the user asks "which functions do too much?", "what are the worst ' +
|
|
226
|
+
'SRP violations?", or "which functions should be split?". ' +
|
|
227
|
+
'Finds high fan-out orchestrators — the functions most likely to need decomposition.',
|
|
228
|
+
inputSchema: {
|
|
229
|
+
type: 'object',
|
|
230
|
+
properties: {
|
|
231
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
232
|
+
filePath: { type: 'string', description: 'Optional: restrict to a specific file' },
|
|
233
|
+
fanOutThreshold: { type: 'number', description: 'Minimum fan-out (default: 8)' },
|
|
234
|
+
},
|
|
235
|
+
required: ['directory'],
|
|
236
|
+
},
|
|
237
|
+
async execute(directory, args) {
|
|
238
|
+
const result = await handleGetGodFunctions(args.directory ?? directory, args.filePath, args.fanOutThreshold ?? 8);
|
|
239
|
+
return { result, filePaths: extractFilePaths(result) };
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
// ── Suggest insertion points ─────────────────────────────────────────────
|
|
243
|
+
{
|
|
244
|
+
name: 'suggest_insertion_points',
|
|
245
|
+
description: 'USE THIS WHEN: the user asks "where should I add X?", "where\'s the best place to ' +
|
|
246
|
+
'implement Y?", or "how do I integrate Z into the existing code?". ' +
|
|
247
|
+
'Combines semantic search + call graph to find ranked candidates with context — ' +
|
|
248
|
+
'far more targeted than grepping for similar patterns.',
|
|
249
|
+
inputSchema: {
|
|
250
|
+
type: 'object',
|
|
251
|
+
properties: {
|
|
252
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
253
|
+
description: { type: 'string', description: 'Natural language description of the feature' },
|
|
254
|
+
limit: { type: 'number', description: 'Number of candidates (default: 5)' },
|
|
255
|
+
},
|
|
256
|
+
required: ['directory', 'description'],
|
|
257
|
+
},
|
|
258
|
+
async execute(directory, args) {
|
|
259
|
+
const result = await handleSuggestInsertionPoints(args.directory ?? directory, args.description, args.limit ?? 5);
|
|
260
|
+
const paths = [];
|
|
261
|
+
if (result && typeof result === 'object') {
|
|
262
|
+
const r = result;
|
|
263
|
+
for (const c of r.candidates ?? []) {
|
|
264
|
+
if (c.filePath)
|
|
265
|
+
paths.push(c.filePath);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return { result, filePaths: [...new Set(paths)] };
|
|
269
|
+
},
|
|
270
|
+
},
|
|
271
|
+
// ── Semantic code search ─────────────────────────────────────────────────
|
|
272
|
+
{
|
|
273
|
+
name: 'search_code',
|
|
274
|
+
description: "USE THIS WHEN: you don't know which file or function handles a concept — " +
|
|
275
|
+
'"where is rate limiting implemented?", "which function validates tokens?", ' +
|
|
276
|
+
'"what handles authentication?". Beats grep when the function name is unknown. ' +
|
|
277
|
+
'Falls back to keyword search automatically if the embedding server is down.',
|
|
278
|
+
inputSchema: {
|
|
279
|
+
type: 'object',
|
|
280
|
+
properties: {
|
|
281
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
282
|
+
query: { type: 'string', description: 'Natural language search query' },
|
|
283
|
+
limit: { type: 'number', description: 'Results to return (default: 10)' },
|
|
284
|
+
},
|
|
285
|
+
required: ['directory', 'query'],
|
|
286
|
+
},
|
|
287
|
+
async execute(directory, args) {
|
|
288
|
+
const result = await handleSearchCode(args.directory ?? directory, args.query, args.limit ?? 10);
|
|
289
|
+
const paths = [];
|
|
290
|
+
if (result && typeof result === 'object') {
|
|
291
|
+
const r = result;
|
|
292
|
+
for (const res of r.results ?? []) {
|
|
293
|
+
if (res.filePath)
|
|
294
|
+
paths.push(res.filePath);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return { result, filePaths: [...new Set(paths)] };
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
// ── Spec semantic search (+ domain discovery when query is omitted) ──────
|
|
301
|
+
{
|
|
302
|
+
name: 'search_specs',
|
|
303
|
+
description: 'USE THIS WHEN: the user asks "which spec covers X?", "what does the spec say about Y?", ' +
|
|
304
|
+
'"which requirement describes Z?", or "what domains exist?". ' +
|
|
305
|
+
'Omit query to list available spec domains. Provide a query to search by meaning. ' +
|
|
306
|
+
'Returns linked source files for graph highlighting.',
|
|
307
|
+
inputSchema: {
|
|
308
|
+
type: 'object',
|
|
309
|
+
properties: {
|
|
310
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
311
|
+
query: {
|
|
312
|
+
type: 'string',
|
|
313
|
+
description: 'Natural language search query (omit to list domains)',
|
|
314
|
+
},
|
|
315
|
+
limit: { type: 'number', description: 'Results to return (default: 10)' },
|
|
316
|
+
domain: { type: 'string', description: 'Filter by domain name (e.g. "auth", "analyzer")' },
|
|
317
|
+
section: {
|
|
318
|
+
type: 'string',
|
|
319
|
+
description: 'Filter by section type: "requirements", "purpose", "design", "architecture", "entities"',
|
|
320
|
+
},
|
|
321
|
+
},
|
|
322
|
+
required: ['directory'],
|
|
323
|
+
},
|
|
324
|
+
async execute(directory, args) {
|
|
325
|
+
const dir = args.directory ?? directory;
|
|
326
|
+
// No query → return domain list instead
|
|
327
|
+
if (!args.query) {
|
|
328
|
+
const result = await handleListSpecDomains(dir);
|
|
329
|
+
return { result, filePaths: [] };
|
|
330
|
+
}
|
|
331
|
+
const result = await handleSearchSpecs(dir, args.query, args.limit ?? 10, args.domain, args.section);
|
|
332
|
+
// linkedFiles arrays are returned per result -- collect all for graph highlighting
|
|
333
|
+
const paths = [];
|
|
334
|
+
if (result && typeof result === 'object') {
|
|
335
|
+
const r = result;
|
|
336
|
+
for (const res of r.results ?? []) {
|
|
337
|
+
for (const f of res.linkedFiles ?? [])
|
|
338
|
+
paths.push(f);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
return { result, filePaths: [...new Set(paths)] };
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
// ── Unified search (code + specs) ──────────────────────────────────────
|
|
345
|
+
{
|
|
346
|
+
name: 'unified_search',
|
|
347
|
+
description: 'USE THIS WHEN: the user asks to search across both code and specs — "find everything ' +
|
|
348
|
+
'related to authentication", "show me code and specs for user validation", or "search ' +
|
|
349
|
+
'for rate limiting implementation and requirements". ' +
|
|
350
|
+
'Combines code and spec indexes with cross-scoring to boost results that are linked ' +
|
|
351
|
+
'through bidirectional mappings. Results include provenance tags (code, spec, or both).',
|
|
352
|
+
inputSchema: {
|
|
353
|
+
type: 'object',
|
|
354
|
+
properties: {
|
|
355
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
356
|
+
query: { type: 'string', description: 'Natural language search query' },
|
|
357
|
+
limit: { type: 'number', description: 'Results to return (default: 10)' },
|
|
358
|
+
language: {
|
|
359
|
+
type: 'string',
|
|
360
|
+
description: 'Filter by language (e.g., "TypeScript", "Python")',
|
|
361
|
+
},
|
|
362
|
+
domain: { type: 'string', description: 'Filter by spec domain (e.g., "auth", "analyzer")' },
|
|
363
|
+
section: {
|
|
364
|
+
type: 'string',
|
|
365
|
+
description: 'Filter by spec section type: "requirements", "purpose", "design", etc.',
|
|
366
|
+
},
|
|
367
|
+
},
|
|
368
|
+
required: ['directory', 'query'],
|
|
369
|
+
},
|
|
370
|
+
async execute(directory, args) {
|
|
371
|
+
const result = await handleUnifiedSearch(args.directory ?? directory, args.query, args.limit ?? 10, args.language, args.domain, args.section);
|
|
372
|
+
const paths = [];
|
|
373
|
+
if (result && typeof result === 'object') {
|
|
374
|
+
const r = result;
|
|
375
|
+
for (const res of r.results ?? []) {
|
|
376
|
+
if (res.source?.filePath)
|
|
377
|
+
paths.push(res.source.filePath);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
return { result, filePaths: [...new Set(paths)] };
|
|
381
|
+
},
|
|
382
|
+
},
|
|
383
|
+
// ── Get spec by domain ───────────────────────────────────────────────────
|
|
384
|
+
{
|
|
385
|
+
name: 'get_spec',
|
|
386
|
+
description: 'USE THIS WHEN: the user asks to read a specific spec domain — "show me the auth ' +
|
|
387
|
+
'spec", "what does the analyzer spec say?", "read the API spec". ' +
|
|
388
|
+
'Returns the full spec content and the functions that implement it, in one call.',
|
|
389
|
+
inputSchema: {
|
|
390
|
+
type: 'object',
|
|
391
|
+
properties: {
|
|
392
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
393
|
+
domain: { type: 'string', description: 'Domain name, e.g. "auth" or "analyzer"' },
|
|
394
|
+
},
|
|
395
|
+
required: ['directory', 'domain'],
|
|
396
|
+
},
|
|
397
|
+
async execute(directory, args) {
|
|
398
|
+
const result = await handleGetSpec(args.directory ?? directory, args.domain);
|
|
399
|
+
return { result, filePaths: [] };
|
|
400
|
+
},
|
|
401
|
+
},
|
|
402
|
+
// ── Get file dependencies ────────────────────────────────────────────────
|
|
403
|
+
{
|
|
404
|
+
name: 'get_file_dependencies',
|
|
405
|
+
description: 'USE THIS WHEN: the user asks "what does file X import?", "what files depend on Y?", ' +
|
|
406
|
+
'or when planning a refactor and needing to understand coupling before touching a file. ' +
|
|
407
|
+
'Uses pre-computed in/out degree — no need to grep import statements across the codebase.',
|
|
408
|
+
inputSchema: {
|
|
409
|
+
type: 'object',
|
|
410
|
+
properties: {
|
|
411
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
412
|
+
filePath: {
|
|
413
|
+
type: 'string',
|
|
414
|
+
description: 'Relative file path, e.g. "src/core/analyzer/vector-index.ts"',
|
|
415
|
+
},
|
|
416
|
+
direction: {
|
|
417
|
+
type: 'string',
|
|
418
|
+
enum: ['imports', 'importedBy', 'both'],
|
|
419
|
+
description: '"imports", "importedBy", or "both" (default)',
|
|
420
|
+
},
|
|
421
|
+
},
|
|
422
|
+
required: ['directory', 'filePath'],
|
|
423
|
+
},
|
|
424
|
+
async execute(directory, args) {
|
|
425
|
+
const result = await handleGetFileDependencies(args.directory ?? directory, args.filePath, args.direction ?? 'both');
|
|
426
|
+
const paths = [];
|
|
427
|
+
if (result && typeof result === 'object') {
|
|
428
|
+
const r = result;
|
|
429
|
+
for (const dep of r.imports ?? []) {
|
|
430
|
+
if (dep.filePath)
|
|
431
|
+
paths.push(dep.filePath);
|
|
432
|
+
}
|
|
433
|
+
for (const dep of r.importedBy ?? []) {
|
|
434
|
+
if (dep.filePath)
|
|
435
|
+
paths.push(dep.filePath);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
return { result, filePaths: [...new Set(paths)] };
|
|
439
|
+
},
|
|
440
|
+
},
|
|
441
|
+
// ── Architecture Decision Records ────────────────────────────────────────
|
|
442
|
+
{
|
|
443
|
+
name: 'get_decisions',
|
|
444
|
+
description: 'USE THIS WHEN: the user asks "why was X decided?", "is there an ADR about Y?", ' +
|
|
445
|
+
'or "what\'s the rationale behind Z?". Lists documented architectural decisions — ' +
|
|
446
|
+
'gives the "why" that is not visible in the code itself.',
|
|
447
|
+
inputSchema: {
|
|
448
|
+
type: 'object',
|
|
449
|
+
properties: {
|
|
450
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
451
|
+
query: { type: 'string', description: 'Optional text filter on title or content' },
|
|
452
|
+
},
|
|
453
|
+
required: ['directory'],
|
|
454
|
+
},
|
|
455
|
+
async execute(directory, args) {
|
|
456
|
+
const result = await handleGetDecisions(args.directory ?? directory, args.query);
|
|
457
|
+
return { result, filePaths: [] };
|
|
458
|
+
},
|
|
459
|
+
},
|
|
460
|
+
// ── Refactor report ──────────────────────────────────────────────────────
|
|
461
|
+
{
|
|
462
|
+
name: 'get_refactor_report',
|
|
463
|
+
description: 'USE THIS WHEN: the user asks "what should I clean up?", "what\'s the biggest ' +
|
|
464
|
+
'technical debt?", or "what are the worst code quality issues?". ' +
|
|
465
|
+
'Returns a prioritized list: unreachable code, hub overload, god functions, ' +
|
|
466
|
+
'SRP violations, cyclic dependencies — all in one report.',
|
|
467
|
+
inputSchema: {
|
|
468
|
+
type: 'object',
|
|
469
|
+
properties: {
|
|
470
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
471
|
+
},
|
|
472
|
+
required: ['directory'],
|
|
473
|
+
},
|
|
474
|
+
async execute(directory, args) {
|
|
475
|
+
const result = await handleGetRefactorReport(args.directory ?? directory);
|
|
476
|
+
return { result, filePaths: extractFilePaths(result) };
|
|
477
|
+
},
|
|
478
|
+
},
|
|
479
|
+
];
|
|
480
|
+
// ============================================================================
|
|
481
|
+
// HELPERS
|
|
482
|
+
// ============================================================================
|
|
483
|
+
/** Convert CHAT_TOOLS to the OpenAI function-calling format. */
|
|
484
|
+
export function toChatToolDefinitions() {
|
|
485
|
+
return CHAT_TOOLS.map((t) => ({
|
|
486
|
+
type: 'function',
|
|
487
|
+
function: {
|
|
488
|
+
name: t.name,
|
|
489
|
+
description: t.description,
|
|
490
|
+
parameters: t.inputSchema,
|
|
491
|
+
},
|
|
492
|
+
}));
|
|
493
|
+
}
|
|
494
|
+
//# sourceMappingURL=chat-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-tools.js","sourceRoot":"","sources":["../../../src/core/services/chat-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration management service
|
|
3
|
+
*
|
|
4
|
+
* Handles reading/writing .openlore/config.json and openspec/config.yaml
|
|
5
|
+
*/
|
|
6
|
+
import type { ProjectType, OpenLoreConfig } from '../../types/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* OpenSpec config.yaml structure
|
|
9
|
+
*/
|
|
10
|
+
export interface OpenSpecConfig {
|
|
11
|
+
schema?: string;
|
|
12
|
+
context?: string;
|
|
13
|
+
'openlore'?: {
|
|
14
|
+
generatedAt?: string;
|
|
15
|
+
domains?: string[];
|
|
16
|
+
confidence?: number;
|
|
17
|
+
sourceProject?: string;
|
|
18
|
+
};
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get default openlore configuration
|
|
23
|
+
*/
|
|
24
|
+
export declare function getDefaultConfig(projectType: ProjectType, openspecPath: string): OpenLoreConfig;
|
|
25
|
+
/**
|
|
26
|
+
* Read openlore configuration from .openlore/config.json
|
|
27
|
+
*/
|
|
28
|
+
export declare function readOpenLoreConfig(rootPath: string): Promise<OpenLoreConfig | null>;
|
|
29
|
+
/**
|
|
30
|
+
* Write openlore configuration to .openlore/config.json
|
|
31
|
+
*/
|
|
32
|
+
export declare function writeOpenLoreConfig(rootPath: string, config: OpenLoreConfig): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Check if openlore config already exists
|
|
35
|
+
*/
|
|
36
|
+
export declare function openloreConfigExists(rootPath: string): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Read OpenSpec config.yaml if it exists
|
|
39
|
+
*/
|
|
40
|
+
export declare function readOpenSpecConfig(openspecPath: string): Promise<OpenSpecConfig | null>;
|
|
41
|
+
/**
|
|
42
|
+
* Write OpenSpec config.yaml
|
|
43
|
+
*/
|
|
44
|
+
export declare function writeOpenSpecConfig(openspecPath: string, config: OpenSpecConfig): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Check if openspec directory exists
|
|
47
|
+
*/
|
|
48
|
+
export declare function openspecDirExists(openspecPath: string): Promise<boolean>;
|
|
49
|
+
/**
|
|
50
|
+
* Check if openspec/config.yaml exists
|
|
51
|
+
*/
|
|
52
|
+
export declare function openspecConfigExists(openspecPath: string): Promise<boolean>;
|
|
53
|
+
/**
|
|
54
|
+
* Create minimal OpenSpec directory structure
|
|
55
|
+
*/
|
|
56
|
+
export declare function createOpenSpecStructure(openspecPath: string): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Merge existing OpenSpec config with openlore metadata
|
|
59
|
+
*/
|
|
60
|
+
export declare function mergeOpenSpecConfig(existing: OpenSpecConfig | null, openloreMeta: OpenSpecConfig['openlore']): OpenSpecConfig;
|
|
61
|
+
//# sourceMappingURL=config-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../../src/core/services/config-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAYxE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAgBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,cAAc,CAiB/F;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAezF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE7E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAc7F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE9E;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEjF;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,cAAc,GAAG,IAAI,EAC/B,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,GACvC,cAAc,CAgBhB"}
|