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,254 @@
|
|
|
1
|
+
# Task: Implement Story
|
|
2
|
+
|
|
3
|
+
**Purpose**: Implement a BMAD story on any codebase — new or existing.
|
|
4
|
+
Structural analysis is used proportionally to the risk level already known from planning.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Inputs
|
|
9
|
+
|
|
10
|
+
From the story file:
|
|
11
|
+
- `$STORY_TITLE`, `$AC`, `$PROJECT_ROOT`
|
|
12
|
+
- `$RISK_CONTEXT` — the `risk_context` section (pre-filled by Architect Agent at planning time)
|
|
13
|
+
|
|
14
|
+
If `.claude/antipatterns.md` exists, read it and store as `$ANTIPATTERNS`.
|
|
15
|
+
This list will be cross-checked at Step 4b.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Step 1 — Read the risk context
|
|
20
|
+
|
|
21
|
+
Open the story file and check whether `risk_context` is populated.
|
|
22
|
+
|
|
23
|
+
### If risk_context IS present (normal case — planning was done)
|
|
24
|
+
|
|
25
|
+
Use it directly. Do not re-run structural analysis unless something feels wrong.
|
|
26
|
+
|
|
27
|
+
| Risk level in story | Approach |
|
|
28
|
+
|---|---|
|
|
29
|
+
| 🟢 low (< 40) | Proceed to Step 3. Quick orient to confirm insertion point. |
|
|
30
|
+
| 🟡 medium (40–69) | Run Step 2 impact check. Proceed with callers protected. |
|
|
31
|
+
| 🔴 high / critical (≥ 70) | Story should have a blocking refactor. If not scheduled, stop and flag it. |
|
|
32
|
+
|
|
33
|
+
### If risk_context is ABSENT (planning was skipped or story is new)
|
|
34
|
+
|
|
35
|
+
Run the full orientation in Step 2 before proceeding.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Step 2 — Orient (full or confirm)
|
|
40
|
+
|
|
41
|
+
**Full orient** (risk_context absent, or medium+ risk):
|
|
42
|
+
|
|
43
|
+
```xml
|
|
44
|
+
<use_mcp_tool>
|
|
45
|
+
<server_name>openlore</server_name>
|
|
46
|
+
<tool_name>orient</tool_name>
|
|
47
|
+
<arguments>{
|
|
48
|
+
"directory": "$PROJECT_ROOT",
|
|
49
|
+
"task": "$STORY_TITLE — $AC1",
|
|
50
|
+
"limit": 7
|
|
51
|
+
}</arguments>
|
|
52
|
+
</use_mcp_tool>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
If orient returns `"error": "no cache"` → run `analyze_codebase` first, then retry.
|
|
56
|
+
|
|
57
|
+
**For medium+ risk**, also run impact on the top 2 functions:
|
|
58
|
+
|
|
59
|
+
```xml
|
|
60
|
+
<use_mcp_tool>
|
|
61
|
+
<server_name>openlore</server_name>
|
|
62
|
+
<tool_name>analyze_impact</tool_name>
|
|
63
|
+
<arguments>{
|
|
64
|
+
"directory": "$PROJECT_ROOT",
|
|
65
|
+
"symbol": "$FUNCTION_NAME",
|
|
66
|
+
"depth": 2
|
|
67
|
+
}</arguments>
|
|
68
|
+
</use_mcp_tool>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
If a function has `riskScore ≥ 70` that was NOT flagged at planning: **stop**.
|
|
72
|
+
Create a blocking refactor story and do not implement until it's resolved.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Step 2.5 — Audit spec coverage of the target domain
|
|
77
|
+
|
|
78
|
+
Run a parity audit to check if the domain you're about to touch has spec gaps.
|
|
79
|
+
|
|
80
|
+
```xml
|
|
81
|
+
<use_mcp_tool>
|
|
82
|
+
<server_name>openlore</server_name>
|
|
83
|
+
<tool_name>audit_spec_coverage</tool_name>
|
|
84
|
+
<arguments>{"directory": "$PROJECT_ROOT"}</arguments>
|
|
85
|
+
</use_mcp_tool>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
From the result, check:
|
|
89
|
+
- `staleDomains` — if the target domain appears here, its spec is outdated.
|
|
90
|
+
Recommend running `openlore generate --domains $DOMAIN` before implementing.
|
|
91
|
+
- `hubGaps` — uncovered hub functions. If the feature touches one of these,
|
|
92
|
+
add it to the adversarial check in Step 4b (high blast radius + no spec = risk).
|
|
93
|
+
|
|
94
|
+
If both are clean, continue to Step 3 without action.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Step 3 — Check the spec
|
|
99
|
+
|
|
100
|
+
First verify that OpenSpec specs exist for this project:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
ls $PROJECT_ROOT/openspec/specs/ 2>/dev/null | wc -l
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**If 0 specs found:**
|
|
107
|
+
> No OpenSpec specs exist yet for this project. `search_specs` will return empty
|
|
108
|
+
> results and `check_spec_drift` (Step 7) will flag all files as uncovered.
|
|
109
|
+
>
|
|
110
|
+
> The Architect agent should have run `openlore generate` during onboarding.
|
|
111
|
+
> If it hasn't been run yet, note it in the Dev Agent Record and proceed with
|
|
112
|
+
> structural analysis only. The spec baseline can be created post-sprint with
|
|
113
|
+
> `openlore generate $PROJECT_ROOT`.
|
|
114
|
+
|
|
115
|
+
Skip `search_specs` and go to Step 4.
|
|
116
|
+
|
|
117
|
+
**If specs exist:**
|
|
118
|
+
|
|
119
|
+
```xml
|
|
120
|
+
<use_mcp_tool>
|
|
121
|
+
<server_name>openlore</server_name>
|
|
122
|
+
<tool_name>search_specs</tool_name>
|
|
123
|
+
<arguments>{
|
|
124
|
+
"directory": "$PROJECT_ROOT",
|
|
125
|
+
"query": "$STORY_TITLE",
|
|
126
|
+
"limit": 5
|
|
127
|
+
}</arguments>
|
|
128
|
+
</use_mcp_tool>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
If relevant requirements are found, read the domain spec before writing code.
|
|
132
|
+
Note any constraints that apply to the implementation.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Step 4 — Find the insertion point
|
|
137
|
+
|
|
138
|
+
Use the `insertion_points` from `risk_context` if present. Otherwise:
|
|
139
|
+
|
|
140
|
+
```xml
|
|
141
|
+
<use_mcp_tool>
|
|
142
|
+
<server_name>openlore</server_name>
|
|
143
|
+
<tool_name>suggest_insertion_points</tool_name>
|
|
144
|
+
<arguments>{
|
|
145
|
+
"directory": "$PROJECT_ROOT",
|
|
146
|
+
"description": "$STORY_TITLE",
|
|
147
|
+
"limit": 5
|
|
148
|
+
}</arguments>
|
|
149
|
+
</use_mcp_tool>
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Read the skeleton of the target file:
|
|
153
|
+
|
|
154
|
+
```xml
|
|
155
|
+
<use_mcp_tool>
|
|
156
|
+
<server_name>openlore</server_name>
|
|
157
|
+
<tool_name>get_function_skeleton</tool_name>
|
|
158
|
+
<arguments>{
|
|
159
|
+
"directory": "$PROJECT_ROOT",
|
|
160
|
+
"filePath": "$TARGET_FILE"
|
|
161
|
+
}</arguments>
|
|
162
|
+
</use_mcp_tool>
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Confirm the approach with the user before writing code.
|
|
166
|
+
|
|
167
|
+
### Step 4b — Adversarial self-check
|
|
168
|
+
|
|
169
|
+
Before writing any code, state explicitly what could break with this approach.
|
|
170
|
+
If `$ANTIPATTERNS` was loaded (see Inputs), include any applicable patterns.
|
|
171
|
+
|
|
172
|
+
> "Risk check on `$INSERTION_POINT`:
|
|
173
|
+
> - `$CALLER_A` and `$CALLER_B` depend on this function — verify their assumptions hold after the change.
|
|
174
|
+
> - `$EDGE_CASE` is not covered by the current test suite — add it in Step 6.
|
|
175
|
+
> - [if antipatterns apply] AP-NNN (`$PATTERN_NAME`) — `$RULE` — applies here because `$REASON`."
|
|
176
|
+
|
|
177
|
+
This is not a gate — do not wait for user input. It is a mandatory self-check
|
|
178
|
+
that must appear in the output before the first line of code is written.
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Step 5 — Implement
|
|
183
|
+
|
|
184
|
+
Apply changes in this order:
|
|
185
|
+
1. New types/interfaces (if needed)
|
|
186
|
+
2. Core logic at the insertion point
|
|
187
|
+
3. Updated call sites (if any)
|
|
188
|
+
|
|
189
|
+
Do not touch functions outside the scope from Step 2/risk_context without re-running the gate.
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Step 6 — Tests
|
|
194
|
+
|
|
195
|
+
Two levels, both required before proceeding:
|
|
196
|
+
|
|
197
|
+
**Mandatory — existing tests must not regress:**
|
|
198
|
+
Run the full test suite. If any pre-existing test breaks, fix the regression before continuing.
|
|
199
|
+
A green CI on existing tests is the minimum gate.
|
|
200
|
+
|
|
201
|
+
**Recommended — at least one new test per AC:**
|
|
202
|
+
Write a test that directly exercises the new behaviour described in the acceptance criterion.
|
|
203
|
+
This is the proof that the implementation matches the intent — without it, the spec update in Step 7 has no evidence.
|
|
204
|
+
|
|
205
|
+
| Situation | Action |
|
|
206
|
+
|---|---|
|
|
207
|
+
| All tests green, new tests written | Proceed to Step 7 |
|
|
208
|
+
| Existing test broken | Fix regression. Do not proceed. |
|
|
209
|
+
| New test reveals a misunderstanding of the AC | Return to Step 5, adjust implementation |
|
|
210
|
+
| Brownfield: no existing test coverage | Write the new test anyway. Note the coverage gap in the Dev Agent Record. |
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Step 7 — Verify drift
|
|
215
|
+
|
|
216
|
+
Only run once tests are green.
|
|
217
|
+
|
|
218
|
+
```xml
|
|
219
|
+
<use_mcp_tool>
|
|
220
|
+
<server_name>openlore</server_name>
|
|
221
|
+
<tool_name>check_spec_drift</tool_name>
|
|
222
|
+
<arguments>{"directory": "$PROJECT_ROOT"}</arguments>
|
|
223
|
+
</use_mcp_tool>
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
| Drift type | Resolution |
|
|
227
|
+
|---|---|
|
|
228
|
+
| `uncovered` on new files | Propose `openlore generate` post-sprint |
|
|
229
|
+
| `gap` on existing domain | Run `openlore generate --domains $DOMAIN` |
|
|
230
|
+
| `stale` | Fix the reference |
|
|
231
|
+
| No drift | ✅ |
|
|
232
|
+
|
|
233
|
+
If drift is found on a domain touched by this story, note it in the Dev Agent Record — the spec update can be proposed after the sprint, not mid-implementation.
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Step 8 — Update the story
|
|
238
|
+
|
|
239
|
+
Fill in the **Dev Agent Record** section of the story file and mark as `Review`.
|
|
240
|
+
|
|
241
|
+
Include:
|
|
242
|
+
- test files written / modified
|
|
243
|
+
- whether existing coverage was sufficient or a gap remains
|
|
244
|
+
- any drift found in Step 7
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Absolute constraints
|
|
249
|
+
|
|
250
|
+
- Do not write code before Step 4 confirmation
|
|
251
|
+
- Step 4b adversarial self-check is mandatory — never skip it
|
|
252
|
+
- If riskScore ≥ 70 was not caught at planning — stop, do not work around it
|
|
253
|
+
- Do not run `check_spec_drift` before tests are green
|
|
254
|
+
- Do not propose a spec update on untested code
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# Task: Brownfield Onboarding
|
|
2
|
+
|
|
3
|
+
**Purpose**: Establish a structural baseline on an existing codebase.
|
|
4
|
+
**Phase**: Architecture — run this BEFORE writing architecture documents, planning epics, or creating stories.
|
|
5
|
+
Run once per project, then re-run at the start of each planning cycle (quarterly or after major refactors).
|
|
6
|
+
|
|
7
|
+
**Who runs this**: Architect Agent (not Dev Agent).
|
|
8
|
+
|
|
9
|
+
**Output**: populated `openspec/` + `.openlore/` + risk register embedded in architecture doc.
|
|
10
|
+
|
|
11
|
+
**Estimated time**: 5–15 minutes depending on codebase size.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Prerequisites
|
|
16
|
+
|
|
17
|
+
- openlore MCP server connected
|
|
18
|
+
- `openlore` CLI available (`npx openlore` or local install)
|
|
19
|
+
- Read access to the project directory
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Step 1 — Run static analysis
|
|
24
|
+
|
|
25
|
+
```xml
|
|
26
|
+
<use_mcp_tool>
|
|
27
|
+
<server_name>openlore</server_name>
|
|
28
|
+
<tool_name>analyze_codebase</tool_name>
|
|
29
|
+
<arguments>{
|
|
30
|
+
"directory": "$PROJECT_ROOT",
|
|
31
|
+
"force": false
|
|
32
|
+
}</arguments>
|
|
33
|
+
</use_mcp_tool>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Expected output: summary with module count, function count, cycle count.
|
|
37
|
+
If `cycles_detected > 0`, note it — this is a brownfield risk signal.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Step 2 — Understand the architecture
|
|
42
|
+
|
|
43
|
+
```xml
|
|
44
|
+
<use_mcp_tool>
|
|
45
|
+
<server_name>openlore</server_name>
|
|
46
|
+
<tool_name>get_architecture_overview</tool_name>
|
|
47
|
+
<arguments>{"directory": "$PROJECT_ROOT"}</arguments>
|
|
48
|
+
</use_mcp_tool>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
From the result, record:
|
|
52
|
+
- **Domain clusters** (the logical groupings openlore detected)
|
|
53
|
+
- **Cross-cluster dependencies** (coupling risks)
|
|
54
|
+
- **Entry points** (where requests enter the system)
|
|
55
|
+
- **Critical hubs** (high fan-in functions — touch with care)
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Step 3 — Identify hotspots
|
|
60
|
+
|
|
61
|
+
```xml
|
|
62
|
+
<use_mcp_tool>
|
|
63
|
+
<server_name>openlore</server_name>
|
|
64
|
+
<tool_name>get_refactor_report</tool_name>
|
|
65
|
+
<arguments>{"directory": "$PROJECT_ROOT"}</arguments>
|
|
66
|
+
</use_mcp_tool>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Create a brownfield risk register — a simple table:
|
|
70
|
+
|
|
71
|
+
| Function | File | Issues | Priority | Action |
|
|
72
|
+
|---|---|---|---|---|
|
|
73
|
+
| ... | ... | high_fan_out | 85 | Refactor before touching |
|
|
74
|
+
| ... | ... | in_cycle | 60 | Isolate cycle first |
|
|
75
|
+
| ... | ... | multi_requirement | 40 | Document carefully |
|
|
76
|
+
|
|
77
|
+
Functions with priority > 70 are **no-touch zones** until refactored.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Step 4 — Check for duplicate code
|
|
82
|
+
|
|
83
|
+
```xml
|
|
84
|
+
<use_mcp_tool>
|
|
85
|
+
<server_name>openlore</server_name>
|
|
86
|
+
<tool_name>get_duplicate_report</tool_name>
|
|
87
|
+
<arguments>{"directory": "$PROJECT_ROOT"}</arguments>
|
|
88
|
+
</use_mcp_tool>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Note any clone groups — they indicate debt that will multiply if features are added naively.
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Step 5 — Generate OpenSpec (if no specs exist)
|
|
96
|
+
|
|
97
|
+
If `openspec/` does not exist or has no specs, generate them:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
openlore analyze --embed
|
|
101
|
+
openlore generate
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Or trigger the openlore skill in your AI agent:
|
|
105
|
+
|
|
106
|
+
> "Run openlore on this codebase and generate OpenSpec specifications."
|
|
107
|
+
|
|
108
|
+
This creates `openspec/specs/{domain}/spec.md` for each detected domain.
|
|
109
|
+
Commit the result — these become the baseline for drift detection.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Step 6 — Verify spec coverage
|
|
114
|
+
|
|
115
|
+
```xml
|
|
116
|
+
<use_mcp_tool>
|
|
117
|
+
<server_name>openlore</server_name>
|
|
118
|
+
<tool_name>check_spec_drift</tool_name>
|
|
119
|
+
<arguments>{
|
|
120
|
+
"directory": "$PROJECT_ROOT",
|
|
121
|
+
"base": "HEAD"
|
|
122
|
+
}</arguments>
|
|
123
|
+
</use_mcp_tool>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
At this point drift should be zero (we just generated specs from HEAD).
|
|
127
|
+
If `uncovered` files appear, add them to the backlog as "spec missing" items.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Step 7 — Record the baseline
|
|
132
|
+
|
|
133
|
+
Create or update `openspec/specs/architecture/spec.md` with a **brownfield baseline** section:
|
|
134
|
+
|
|
135
|
+
```markdown
|
|
136
|
+
## Brownfield Baseline
|
|
137
|
+
|
|
138
|
+
> Established: {date}
|
|
139
|
+
|
|
140
|
+
### Risk Register
|
|
141
|
+
|
|
142
|
+
| Function | Issues | Priority |
|
|
143
|
+
|---|---|---|
|
|
144
|
+
| ... | ... | ... |
|
|
145
|
+
|
|
146
|
+
### No-touch zones (priority > 70)
|
|
147
|
+
|
|
148
|
+
- `functionName` in `path/to/file.ts` — reason
|
|
149
|
+
|
|
150
|
+
### Known duplicate groups
|
|
151
|
+
|
|
152
|
+
- N clone groups detected (see `.openlore/analysis/`)
|
|
153
|
+
|
|
154
|
+
### Onboarding notes
|
|
155
|
+
|
|
156
|
+
- ...
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Completion Criteria
|
|
162
|
+
|
|
163
|
+
- [ ] `openlore analyze` completed without error
|
|
164
|
+
- [ ] Architecture overview reviewed and understood
|
|
165
|
+
- [ ] Risk register created with functions priority > 70 flagged
|
|
166
|
+
- [ ] `openspec/` populated (generated or pre-existing)
|
|
167
|
+
- [ ] `check_spec_drift` shows zero drift on HEAD
|
|
168
|
+
- [ ] Baseline documented in `openspec/specs/architecture/spec.md`
|
|
169
|
+
- [ ] BMAD project backlog updated with any "spec missing" items
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Task: Brownfield Refactor
|
|
2
|
+
|
|
3
|
+
**Purpose**: Plan and execute a safe refactoring on a brownfield codebase before implementing a story.
|
|
4
|
+
Typically triggered by the `dev-brownfield` agent gate when `riskScore ≥ 70`.
|
|
5
|
+
|
|
6
|
+
**Output**: `.openlore/refactor-plan.md` applied and verified.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- `$TARGET_FUNCTION` — function identified as high-risk by `analyze_impact`
|
|
13
|
+
- `$PROJECT_ROOT` — absolute path to the project
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Step 1 — Confirm target and scope
|
|
18
|
+
|
|
19
|
+
Present the risk signal to the user:
|
|
20
|
+
|
|
21
|
+
> "`$TARGET_FUNCTION` has a risk score of $SCORE ($ISSUES).
|
|
22
|
+
> Implementing the planned story on this function as-is risks breaking $CALLERS.
|
|
23
|
+
> This task will refactor it first. Proceed?"
|
|
24
|
+
|
|
25
|
+
If the user declines, mark the story as blocked with dependency: "Refactor `$TARGET_FUNCTION` first."
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Step 2 — Get the refactor report
|
|
30
|
+
|
|
31
|
+
```xml
|
|
32
|
+
<use_mcp_tool>
|
|
33
|
+
<server_name>openlore</server_name>
|
|
34
|
+
<tool_name>get_refactor_report</tool_name>
|
|
35
|
+
<arguments>{"directory": "$PROJECT_ROOT"}</arguments>
|
|
36
|
+
</use_mcp_tool>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Confirm `$TARGET_FUNCTION` appears in the report and note its issues and priority score.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Step 3 — Check for clones
|
|
44
|
+
|
|
45
|
+
```xml
|
|
46
|
+
<use_mcp_tool>
|
|
47
|
+
<server_name>openlore</server_name>
|
|
48
|
+
<tool_name>get_duplicate_report</tool_name>
|
|
49
|
+
<arguments>{"directory": "$PROJECT_ROOT"}</arguments>
|
|
50
|
+
</use_mcp_tool>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
If `$TARGET_FUNCTION` appears in a clone group:
|
|
54
|
+
> "⚠️ This function has N near-clones. Consolidate them first to reduce blast radius."
|
|
55
|
+
Propose consolidation as Change 0 in the plan.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Step 4 — Analyse the call neighbourhood
|
|
60
|
+
|
|
61
|
+
```xml
|
|
62
|
+
<use_mcp_tool>
|
|
63
|
+
<server_name>openlore</server_name>
|
|
64
|
+
<tool_name>analyze_impact</tool_name>
|
|
65
|
+
<arguments>{
|
|
66
|
+
"directory": "$PROJECT_ROOT",
|
|
67
|
+
"symbol": "$TARGET_FUNCTION",
|
|
68
|
+
"depth": 3
|
|
69
|
+
}</arguments>
|
|
70
|
+
</use_mcp_tool>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```xml
|
|
74
|
+
<use_mcp_tool>
|
|
75
|
+
<server_name>openlore</server_name>
|
|
76
|
+
<tool_name>get_subgraph</tool_name>
|
|
77
|
+
<arguments>{
|
|
78
|
+
"directory": "$PROJECT_ROOT",
|
|
79
|
+
"functionName": "$TARGET_FUNCTION",
|
|
80
|
+
"direction": "both",
|
|
81
|
+
"format": "mermaid"
|
|
82
|
+
}</arguments>
|
|
83
|
+
</use_mcp_tool>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Show the Mermaid diagram. Identify extraction candidates in the downstream subgraph.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Step 5 — Find safe extraction targets
|
|
91
|
+
|
|
92
|
+
```xml
|
|
93
|
+
<use_mcp_tool>
|
|
94
|
+
<server_name>openlore</server_name>
|
|
95
|
+
<tool_name>get_low_risk_refactor_candidates</tool_name>
|
|
96
|
+
<arguments>{
|
|
97
|
+
"directory": "$PROJECT_ROOT",
|
|
98
|
+
"filePattern": "$TARGET_FILE",
|
|
99
|
+
"limit": 5
|
|
100
|
+
}</arguments>
|
|
101
|
+
</use_mcp_tool>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Cross-reference with the subgraph: good extraction candidates are already callees of `$TARGET_FUNCTION`.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Step 6 — Find landing zones for extracted helpers
|
|
109
|
+
|
|
110
|
+
```xml
|
|
111
|
+
<use_mcp_tool>
|
|
112
|
+
<server_name>openlore</server_name>
|
|
113
|
+
<tool_name>suggest_insertion_points</tool_name>
|
|
114
|
+
<arguments>{
|
|
115
|
+
"directory": "$PROJECT_ROOT",
|
|
116
|
+
"description": "extract helper from $TARGET_FUNCTION",
|
|
117
|
+
"limit": 5
|
|
118
|
+
}</arguments>
|
|
119
|
+
</use_mcp_tool>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Step 7 — Design the change sequence
|
|
125
|
+
|
|
126
|
+
Design an ordered sequence of atomic changes. Each change must specify:
|
|
127
|
+
|
|
128
|
+
- **What**: the exact block to extract (description or line range)
|
|
129
|
+
- **New name**: function name
|
|
130
|
+
- **Target file**: where to place it (existing or new)
|
|
131
|
+
- **Call sites to update**: list each file that calls `$TARGET_FUNCTION` or the extracted block
|
|
132
|
+
|
|
133
|
+
**Present the full sequence to the user and wait for explicit approval before writing the plan.**
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Step 8 — Execute (delegate to openlore-execute-refactor)
|
|
138
|
+
|
|
139
|
+
Once the plan is approved, hand off to the `openlore-execute-refactor` skill:
|
|
140
|
+
|
|
141
|
+
1. Write `.openlore/refactor-plan.md` with the full plan (see skill template)
|
|
142
|
+
2. Invoke `/openlore-execute-refactor`
|
|
143
|
+
|
|
144
|
+
The execute skill handles:
|
|
145
|
+
- Green baseline verification
|
|
146
|
+
- Restore point setup
|
|
147
|
+
- Atomic change application with tests after each step
|
|
148
|
+
- Post-refactor risk score verification
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Step 9 — Re-run the gate
|
|
153
|
+
|
|
154
|
+
After the refactor is complete, re-run `analyze_impact` on `$TARGET_FUNCTION`:
|
|
155
|
+
|
|
156
|
+
```xml
|
|
157
|
+
<use_mcp_tool>
|
|
158
|
+
<server_name>openlore</server_name>
|
|
159
|
+
<tool_name>analyze_impact</tool_name>
|
|
160
|
+
<arguments>{
|
|
161
|
+
"directory": "$PROJECT_ROOT",
|
|
162
|
+
"symbol": "$TARGET_FUNCTION",
|
|
163
|
+
"depth": 2
|
|
164
|
+
}</arguments>
|
|
165
|
+
</use_mcp_tool>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
- If `riskScore` is now < 70 → return to the story implementation task
|
|
169
|
+
- If `riskScore` is still ≥ 70 → repeat from Step 4 with the updated subgraph
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Completion Criteria
|
|
174
|
+
|
|
175
|
+
- [ ] `riskScore` for `$TARGET_FUNCTION` < 70
|
|
176
|
+
- [ ] Full test suite passes (green)
|
|
177
|
+
- [ ] `check_spec_drift` clean or addressed
|
|
178
|
+
- [ ] Story unblocked — return to `implement-story-brownfield`
|