spectra-cli 4.1.1 → 4.3.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/README.md +12 -5
- package/dist/.spectra-build-meta.json +9 -0
- package/dist/adapters/go-adapter.d.ts.map +1 -1
- package/dist/adapters/go-adapter.js +2 -0
- package/dist/adapters/go-adapter.js.map +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/java-adapter.d.ts.map +1 -1
- package/dist/adapters/java-adapter.js +2 -0
- package/dist/adapters/java-adapter.js.map +1 -1
- package/dist/adapters/language-adapter.d.ts +42 -9
- package/dist/adapters/language-adapter.d.ts.map +1 -1
- package/dist/adapters/python-adapter.d.ts +34 -6
- package/dist/adapters/python-adapter.d.ts.map +1 -1
- package/dist/adapters/python-adapter.js +168 -61
- package/dist/adapters/python-adapter.js.map +1 -1
- package/dist/adapters/ts-js-adapter.d.ts +13 -5
- package/dist/adapters/ts-js-adapter.d.ts.map +1 -1
- package/dist/adapters/ts-js-adapter.js +55 -14
- package/dist/adapters/ts-js-adapter.js.map +1 -1
- package/dist/batch/batch-orchestrator.d.ts +74 -5
- package/dist/batch/batch-orchestrator.d.ts.map +1 -1
- package/dist/batch/batch-orchestrator.js +583 -70
- package/dist/batch/batch-orchestrator.js.map +1 -1
- package/dist/batch/delta-regenerator.d.ts +2 -2
- package/dist/batch/delta-regenerator.d.ts.map +1 -1
- package/dist/batch/delta-regenerator.js +21 -28
- package/dist/batch/delta-regenerator.js.map +1 -1
- package/dist/batch/module-grouper.d.ts +9 -2
- package/dist/batch/module-grouper.d.ts.map +1 -1
- package/dist/batch/module-grouper.js +3 -1
- package/dist/batch/module-grouper.js.map +1 -1
- package/dist/batch/regen-plan.d.ts +78 -0
- package/dist/batch/regen-plan.d.ts.map +1 -0
- package/dist/batch/regen-plan.js +93 -0
- package/dist/batch/regen-plan.js.map +1 -0
- package/dist/cli/commands/batch.d.ts.map +1 -1
- package/dist/cli/commands/batch.js +36 -8
- package/dist/cli/commands/batch.js.map +1 -1
- package/dist/cli/commands/graph.js +1 -1
- package/dist/cli/commands/graph.js.map +1 -1
- package/dist/cli/commands/index.d.ts +8 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +274 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/query.d.ts.map +1 -1
- package/dist/cli/commands/query.js +3 -1
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/commands/scaffold-kb.d.ts +9 -0
- package/dist/cli/commands/scaffold-kb.d.ts.map +1 -0
- package/dist/cli/commands/scaffold-kb.js +179 -0
- package/dist/cli/commands/scaffold-kb.js.map +1 -0
- package/dist/cli/index.js +33 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/error-handler.d.ts +0 -6
- package/dist/cli/utils/error-handler.d.ts.map +1 -1
- package/dist/cli/utils/error-handler.js +0 -13
- package/dist/cli/utils/error-handler.js.map +1 -1
- package/dist/cli/utils/parse-args.d.ts +55 -3
- package/dist/cli/utils/parse-args.d.ts.map +1 -1
- package/dist/cli/utils/parse-args.js +176 -13
- package/dist/cli/utils/parse-args.js.map +1 -1
- package/dist/cli/version-meta.d.ts +16 -0
- package/dist/cli/version-meta.d.ts.map +1 -0
- package/dist/cli/version-meta.js +28 -0
- package/dist/cli/version-meta.js.map +1 -0
- package/dist/core/ast-analyzer.d.ts.map +1 -1
- package/dist/core/ast-analyzer.js +75 -5
- package/dist/core/ast-analyzer.js.map +1 -1
- package/dist/core/import-resolver.d.ts +93 -0
- package/dist/core/import-resolver.d.ts.map +1 -0
- package/dist/core/import-resolver.js +414 -0
- package/dist/core/import-resolver.js.map +1 -0
- package/dist/core/query-mappers/base-mapper.d.ts +13 -0
- package/dist/core/query-mappers/base-mapper.d.ts.map +1 -1
- package/dist/core/query-mappers/go-mapper.d.ts +68 -0
- package/dist/core/query-mappers/go-mapper.d.ts.map +1 -1
- package/dist/core/query-mappers/go-mapper.js +421 -0
- package/dist/core/query-mappers/go-mapper.js.map +1 -1
- package/dist/core/query-mappers/java-mapper.d.ts +196 -0
- package/dist/core/query-mappers/java-mapper.d.ts.map +1 -1
- package/dist/core/query-mappers/java-mapper.js +600 -0
- package/dist/core/query-mappers/java-mapper.js.map +1 -1
- package/dist/core/query-mappers/python-mapper.d.ts +55 -0
- package/dist/core/query-mappers/python-mapper.d.ts.map +1 -1
- package/dist/core/query-mappers/python-mapper.js +273 -0
- package/dist/core/query-mappers/python-mapper.js.map +1 -1
- package/dist/core/query-mappers/typescript-mapper.d.ts +102 -0
- package/dist/core/query-mappers/typescript-mapper.d.ts.map +1 -1
- package/dist/core/query-mappers/typescript-mapper.js +470 -0
- package/dist/core/query-mappers/typescript-mapper.js.map +1 -1
- package/dist/core/single-spec-orchestrator.d.ts +21 -0
- package/dist/core/single-spec-orchestrator.d.ts.map +1 -1
- package/dist/core/single-spec-orchestrator.js +187 -23
- package/dist/core/single-spec-orchestrator.js.map +1 -1
- package/dist/core/skeleton-hash.d.ts +33 -0
- package/dist/core/skeleton-hash.d.ts.map +1 -0
- package/dist/core/skeleton-hash.js +76 -0
- package/dist/core/skeleton-hash.js.map +1 -0
- package/dist/core/tree-sitter-analyzer.d.ts +7 -0
- package/dist/core/tree-sitter-analyzer.d.ts.map +1 -1
- package/dist/core/tree-sitter-analyzer.js +32 -1
- package/dist/core/tree-sitter-analyzer.js.map +1 -1
- package/dist/core/tree-sitter-fallback.d.ts +12 -4
- package/dist/core/tree-sitter-fallback.d.ts.map +1 -1
- package/dist/core/tree-sitter-fallback.js +160 -12
- package/dist/core/tree-sitter-fallback.js.map +1 -1
- package/dist/extraction/extraction-types.d.ts +25 -25
- package/dist/extraction/image-extractor.d.ts.map +1 -1
- package/dist/extraction/image-extractor.js +3 -1
- package/dist/extraction/image-extractor.js.map +1 -1
- package/dist/extraction/markdown-extractor.d.ts.map +1 -1
- package/dist/extraction/markdown-extractor.js +3 -1
- package/dist/extraction/markdown-extractor.js.map +1 -1
- package/dist/generator/frontmatter.d.ts +5 -0
- package/dist/generator/frontmatter.d.ts.map +1 -1
- package/dist/generator/frontmatter.js +4 -0
- package/dist/generator/frontmatter.js.map +1 -1
- package/dist/generator/index-generator.d.ts +3 -3
- package/dist/generator/index-generator.d.ts.map +1 -1
- package/dist/generator/index-generator.js +1 -1
- package/dist/generator/index-generator.js.map +1 -1
- package/dist/graph/directory-graph.d.ts +14 -4
- package/dist/graph/directory-graph.d.ts.map +1 -1
- package/dist/graph/directory-graph.js +71 -128
- package/dist/graph/directory-graph.js.map +1 -1
- package/dist/graph/mermaid-renderer.d.ts +8 -5
- package/dist/graph/mermaid-renderer.d.ts.map +1 -1
- package/dist/graph/mermaid-renderer.js +3 -3
- package/dist/graph/mermaid-renderer.js.map +1 -1
- package/dist/graph/topological-sort.d.ts +13 -6
- package/dist/graph/topological-sort.d.ts.map +1 -1
- package/dist/graph/topological-sort.js +2 -2
- package/dist/graph/topological-sort.js.map +1 -1
- package/dist/kb-mcp/index.d.ts +14 -0
- package/dist/kb-mcp/index.d.ts.map +1 -0
- package/dist/kb-mcp/index.js +24 -0
- package/dist/kb-mcp/index.js.map +1 -0
- package/dist/kb-mcp/lib/kb-error.d.ts +21 -0
- package/dist/kb-mcp/lib/kb-error.d.ts.map +1 -0
- package/dist/kb-mcp/lib/kb-error.js +28 -0
- package/dist/kb-mcp/lib/kb-error.js.map +1 -0
- package/dist/kb-mcp/lib/kb-locator.d.ts +58 -0
- package/dist/kb-mcp/lib/kb-locator.d.ts.map +1 -0
- package/dist/kb-mcp/lib/kb-locator.js +85 -0
- package/dist/kb-mcp/lib/kb-locator.js.map +1 -0
- package/dist/kb-mcp/lib/result-merger.d.ts +35 -0
- package/dist/kb-mcp/lib/result-merger.d.ts.map +1 -0
- package/dist/kb-mcp/lib/result-merger.js +64 -0
- package/dist/kb-mcp/lib/result-merger.js.map +1 -0
- package/dist/kb-mcp/server.d.ts +12 -0
- package/dist/kb-mcp/server.d.ts.map +1 -0
- package/dist/kb-mcp/server.js +29 -0
- package/dist/kb-mcp/server.js.map +1 -0
- package/dist/kb-mcp/tools/kb-api-lookup.d.ts +28 -0
- package/dist/kb-mcp/tools/kb-api-lookup.d.ts.map +1 -0
- package/dist/kb-mcp/tools/kb-api-lookup.js +237 -0
- package/dist/kb-mcp/tools/kb-api-lookup.js.map +1 -0
- package/dist/kb-mcp/tools/kb-doc-lookup.d.ts +20 -0
- package/dist/kb-mcp/tools/kb-doc-lookup.d.ts.map +1 -0
- package/dist/kb-mcp/tools/kb-doc-lookup.js +92 -0
- package/dist/kb-mcp/tools/kb-doc-lookup.js.map +1 -0
- package/dist/kb-mcp/tools/kb-search.d.ts +23 -0
- package/dist/kb-mcp/tools/kb-search.d.ts.map +1 -0
- package/dist/kb-mcp/tools/kb-search.js +126 -0
- package/dist/kb-mcp/tools/kb-search.js.map +1 -0
- package/dist/knowledge-graph/call-resolver.d.ts +64 -0
- package/dist/knowledge-graph/call-resolver.d.ts.map +1 -0
- package/dist/knowledge-graph/call-resolver.js +323 -0
- package/dist/knowledge-graph/call-resolver.js.map +1 -0
- package/dist/knowledge-graph/import-resolver.d.ts +39 -0
- package/dist/knowledge-graph/import-resolver.d.ts.map +1 -0
- package/dist/knowledge-graph/import-resolver.js +214 -0
- package/dist/knowledge-graph/import-resolver.js.map +1 -0
- package/dist/knowledge-graph/incremental.d.ts +131 -0
- package/dist/knowledge-graph/incremental.d.ts.map +1 -0
- package/dist/knowledge-graph/incremental.js +432 -0
- package/dist/knowledge-graph/incremental.js.map +1 -0
- package/dist/knowledge-graph/index.d.ts +85 -0
- package/dist/knowledge-graph/index.d.ts.map +1 -0
- package/dist/knowledge-graph/index.js +198 -0
- package/dist/knowledge-graph/index.js.map +1 -0
- package/dist/knowledge-graph/module-derivation.d.ts +252 -0
- package/dist/knowledge-graph/module-derivation.d.ts.map +1 -0
- package/dist/knowledge-graph/module-derivation.js +418 -0
- package/dist/knowledge-graph/module-derivation.js.map +1 -0
- package/dist/knowledge-graph/persistence.d.ts +310 -0
- package/dist/knowledge-graph/persistence.d.ts.map +1 -0
- package/dist/knowledge-graph/persistence.js +280 -0
- package/dist/knowledge-graph/persistence.js.map +1 -0
- package/dist/knowledge-graph/query-helpers.d.ts +191 -0
- package/dist/knowledge-graph/query-helpers.d.ts.map +1 -0
- package/dist/knowledge-graph/query-helpers.js +559 -0
- package/dist/knowledge-graph/query-helpers.js.map +1 -0
- package/dist/knowledge-graph/relativize.d.ts +51 -0
- package/dist/knowledge-graph/relativize.d.ts.map +1 -0
- package/dist/knowledge-graph/relativize.js +104 -0
- package/dist/knowledge-graph/relativize.js.map +1 -0
- package/dist/knowledge-graph/unified-graph.d.ts +310 -0
- package/dist/knowledge-graph/unified-graph.d.ts.map +1 -0
- package/dist/knowledge-graph/unified-graph.js +182 -0
- package/dist/knowledge-graph/unified-graph.js.map +1 -0
- package/dist/mcp/agent-context-tools.d.ts +53 -0
- package/dist/mcp/agent-context-tools.d.ts.map +1 -0
- package/dist/mcp/agent-context-tools.js +806 -0
- package/dist/mcp/agent-context-tools.js.map +1 -0
- package/dist/mcp/file-nav-tools.d.ts +42 -0
- package/dist/mcp/file-nav-tools.d.ts.map +1 -0
- package/dist/mcp/file-nav-tools.js +318 -0
- package/dist/mcp/file-nav-tools.js.map +1 -0
- package/dist/mcp/graph-tools.d.ts +22 -0
- package/dist/mcp/graph-tools.d.ts.map +1 -1
- package/dist/mcp/graph-tools.js +204 -133
- package/dist/mcp/graph-tools.js.map +1 -1
- package/dist/mcp/lib/file-nav-helpers.d.ts +128 -0
- package/dist/mcp/lib/file-nav-helpers.d.ts.map +1 -0
- package/dist/mcp/lib/file-nav-helpers.js +305 -0
- package/dist/mcp/lib/file-nav-helpers.js.map +1 -0
- package/dist/mcp/lib/response-helpers.d.ts +67 -0
- package/dist/mcp/lib/response-helpers.d.ts.map +1 -0
- package/dist/mcp/lib/response-helpers.js +103 -0
- package/dist/mcp/lib/response-helpers.js.map +1 -0
- package/dist/mcp/lib/telemetry.d.ts +69 -0
- package/dist/mcp/lib/telemetry.d.ts.map +1 -0
- package/dist/mcp/lib/telemetry.js +113 -0
- package/dist/mcp/lib/telemetry.js.map +1 -0
- package/dist/mcp/lib/tool-response.d.ts +46 -0
- package/dist/mcp/lib/tool-response.d.ts.map +1 -0
- package/dist/mcp/lib/tool-response.js +83 -0
- package/dist/mcp/lib/tool-response.js.map +1 -0
- package/dist/mcp/server.d.ts +14 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +216 -158
- package/dist/mcp/server.js.map +1 -1
- package/dist/models/call-site.d.ts +68 -0
- package/dist/models/call-site.d.ts.map +1 -0
- package/dist/models/call-site.js +60 -0
- package/dist/models/call-site.js.map +1 -0
- package/dist/models/code-skeleton.d.ts +80 -6
- package/dist/models/code-skeleton.d.ts.map +1 -1
- package/dist/models/code-skeleton.js +30 -0
- package/dist/models/code-skeleton.js.map +1 -1
- package/dist/models/drift-item.d.ts +4 -4
- package/dist/models/module-spec.d.ts +173 -94
- package/dist/models/module-spec.d.ts.map +1 -1
- package/dist/models/module-spec.js +6 -0
- package/dist/models/module-spec.js.map +1 -1
- package/dist/panoramic/adr-decision-pipeline.d.ts +53 -0
- package/dist/panoramic/adr-decision-pipeline.d.ts.map +1 -0
- package/dist/panoramic/adr-decision-pipeline.js +685 -0
- package/dist/panoramic/adr-decision-pipeline.js.map +1 -0
- package/dist/panoramic/api-surface-generator.d.ts +56 -0
- package/dist/panoramic/api-surface-generator.d.ts.map +1 -0
- package/dist/panoramic/api-surface-generator.js +1671 -0
- package/dist/panoramic/api-surface-generator.js.map +1 -0
- package/dist/panoramic/architecture-ir-builder.d.ts +19 -0
- package/dist/panoramic/architecture-ir-builder.d.ts.map +1 -0
- package/dist/panoramic/architecture-ir-builder.js +561 -0
- package/dist/panoramic/architecture-ir-builder.js.map +1 -0
- package/dist/panoramic/architecture-ir-exporters.d.ts +7 -0
- package/dist/panoramic/architecture-ir-exporters.d.ts.map +1 -0
- package/dist/panoramic/architecture-ir-exporters.js +183 -0
- package/dist/panoramic/architecture-ir-exporters.js.map +1 -0
- package/dist/panoramic/architecture-ir-generator.d.ts +36 -0
- package/dist/panoramic/architecture-ir-generator.d.ts.map +1 -0
- package/dist/panoramic/architecture-ir-generator.js +51 -0
- package/dist/panoramic/architecture-ir-generator.js.map +1 -0
- package/dist/panoramic/architecture-ir-mermaid-adapter.d.ts +6 -0
- package/dist/panoramic/architecture-ir-mermaid-adapter.d.ts.map +1 -0
- package/dist/panoramic/architecture-ir-mermaid-adapter.js +98 -0
- package/dist/panoramic/architecture-ir-mermaid-adapter.js.map +1 -0
- package/dist/panoramic/architecture-ir-model.d.ts +87 -0
- package/dist/panoramic/architecture-ir-model.d.ts.map +1 -0
- package/dist/panoramic/architecture-ir-model.js +20 -0
- package/dist/panoramic/architecture-ir-model.js.map +1 -0
- package/dist/panoramic/architecture-narrative.d.ts +68 -0
- package/dist/panoramic/architecture-narrative.d.ts.map +1 -0
- package/dist/panoramic/architecture-narrative.js +401 -0
- package/dist/panoramic/architecture-narrative.js.map +1 -0
- package/dist/panoramic/architecture-overview-generator.d.ts +31 -0
- package/dist/panoramic/architecture-overview-generator.d.ts.map +1 -0
- package/dist/panoramic/architecture-overview-generator.js +454 -0
- package/dist/panoramic/architecture-overview-generator.js.map +1 -0
- package/dist/panoramic/architecture-overview-model.d.ts +77 -0
- package/dist/panoramic/architecture-overview-model.d.ts.map +1 -0
- package/dist/panoramic/architecture-overview-model.js +31 -0
- package/dist/panoramic/architecture-overview-model.js.map +1 -0
- package/dist/panoramic/batch-project-docs.d.ts.map +1 -1
- package/dist/panoramic/batch-project-docs.js +4 -2
- package/dist/panoramic/batch-project-docs.js.map +1 -1
- package/dist/panoramic/builders/component-view-builder.d.ts +25 -1
- package/dist/panoramic/builders/component-view-builder.d.ts.map +1 -1
- package/dist/panoramic/builders/component-view-builder.js +83 -3
- package/dist/panoramic/builders/component-view-builder.js.map +1 -1
- package/dist/panoramic/builders/doc-graph-builder.d.ts +15 -2
- package/dist/panoramic/builders/doc-graph-builder.d.ts.map +1 -1
- package/dist/panoramic/builders/doc-graph-builder.js +20 -0
- package/dist/panoramic/builders/doc-graph-builder.js.map +1 -1
- package/dist/panoramic/component-view-builder.d.ts +17 -0
- package/dist/panoramic/component-view-builder.d.ts.map +1 -0
- package/dist/panoramic/component-view-builder.js +652 -0
- package/dist/panoramic/component-view-builder.js.map +1 -0
- package/dist/panoramic/component-view-model.d.ts +127 -0
- package/dist/panoramic/component-view-model.d.ts.map +1 -0
- package/dist/panoramic/component-view-model.js +65 -0
- package/dist/panoramic/component-view-model.js.map +1 -0
- package/dist/panoramic/config-reference-generator.d.ts +78 -0
- package/dist/panoramic/config-reference-generator.d.ts.map +1 -0
- package/dist/panoramic/config-reference-generator.js +199 -0
- package/dist/panoramic/config-reference-generator.js.map +1 -0
- package/dist/panoramic/coverage-auditor.d.ts +95 -0
- package/dist/panoramic/coverage-auditor.d.ts.map +1 -0
- package/dist/panoramic/coverage-auditor.js +290 -0
- package/dist/panoramic/coverage-auditor.js.map +1 -0
- package/dist/panoramic/cross-package-analyzer.d.ts +112 -0
- package/dist/panoramic/cross-package-analyzer.d.ts.map +1 -0
- package/dist/panoramic/cross-package-analyzer.js +258 -0
- package/dist/panoramic/cross-package-analyzer.js.map +1 -0
- package/dist/panoramic/data-model-generator.d.ts +528 -0
- package/dist/panoramic/data-model-generator.d.ts.map +1 -0
- package/dist/panoramic/data-model-generator.js +647 -0
- package/dist/panoramic/data-model-generator.js.map +1 -0
- package/dist/panoramic/doc-graph-builder.d.ts +80 -0
- package/dist/panoramic/doc-graph-builder.d.ts.map +1 -0
- package/dist/panoramic/doc-graph-builder.js +352 -0
- package/dist/panoramic/doc-graph-builder.js.map +1 -0
- package/dist/panoramic/docs-bundle-manifest-reader.d.ts +26 -0
- package/dist/panoramic/docs-bundle-manifest-reader.d.ts.map +1 -0
- package/dist/panoramic/docs-bundle-manifest-reader.js +106 -0
- package/dist/panoramic/docs-bundle-manifest-reader.js.map +1 -0
- package/dist/panoramic/docs-bundle-orchestrator.d.ts +14 -0
- package/dist/panoramic/docs-bundle-orchestrator.d.ts.map +1 -0
- package/dist/panoramic/docs-bundle-orchestrator.js +538 -0
- package/dist/panoramic/docs-bundle-orchestrator.js.map +1 -0
- package/dist/panoramic/docs-bundle-profiles.d.ts +4 -0
- package/dist/panoramic/docs-bundle-profiles.d.ts.map +1 -0
- package/dist/panoramic/docs-bundle-profiles.js +82 -0
- package/dist/panoramic/docs-bundle-profiles.js.map +1 -0
- package/dist/panoramic/docs-bundle-types.d.ts +94 -0
- package/dist/panoramic/docs-bundle-types.d.ts.map +1 -0
- package/dist/panoramic/docs-bundle-types.js +10 -0
- package/dist/panoramic/docs-bundle-types.js.map +1 -0
- package/dist/panoramic/docs-quality-evaluator.d.ts +31 -0
- package/dist/panoramic/docs-quality-evaluator.d.ts.map +1 -0
- package/dist/panoramic/docs-quality-evaluator.js +941 -0
- package/dist/panoramic/docs-quality-evaluator.js.map +1 -0
- package/dist/panoramic/docs-quality-model.d.ts +125 -0
- package/dist/panoramic/docs-quality-model.d.ts.map +1 -0
- package/dist/panoramic/docs-quality-model.js +166 -0
- package/dist/panoramic/docs-quality-model.js.map +1 -0
- package/dist/panoramic/dynamic-scenarios-builder.d.ts +18 -0
- package/dist/panoramic/dynamic-scenarios-builder.d.ts.map +1 -0
- package/dist/panoramic/dynamic-scenarios-builder.js +316 -0
- package/dist/panoramic/dynamic-scenarios-builder.js.map +1 -0
- package/dist/panoramic/event-surface-generator.d.ts +52 -0
- package/dist/panoramic/event-surface-generator.d.ts.map +1 -0
- package/dist/panoramic/event-surface-generator.js +507 -0
- package/dist/panoramic/event-surface-generator.js.map +1 -0
- package/dist/panoramic/generator-registry.d.ts +1 -1
- package/dist/panoramic/generator-registry.d.ts.map +1 -1
- package/dist/panoramic/generator-registry.js +5 -2
- package/dist/panoramic/generator-registry.js.map +1 -1
- package/dist/panoramic/generators/cross-package-analyzer.d.ts +5 -5
- package/dist/panoramic/generators/cross-package-analyzer.d.ts.map +1 -1
- package/dist/panoramic/generators/cross-package-analyzer.js +1 -1
- package/dist/panoramic/generators/cross-package-analyzer.js.map +1 -1
- package/dist/panoramic/generators/data-model-generator.d.ts +27 -27
- package/dist/panoramic/graph/confidence-mapper.d.ts +18 -0
- package/dist/panoramic/graph/confidence-mapper.d.ts.map +1 -1
- package/dist/panoramic/graph/confidence-mapper.js +26 -0
- package/dist/panoramic/graph/confidence-mapper.js.map +1 -1
- package/dist/panoramic/graph/graph-builder.d.ts +72 -2
- package/dist/panoramic/graph/graph-builder.d.ts.map +1 -1
- package/dist/panoramic/graph/graph-builder.js +330 -46
- package/dist/panoramic/graph/graph-builder.js.map +1 -1
- package/dist/panoramic/graph/graph-paths.d.ts +8 -0
- package/dist/panoramic/graph/graph-paths.d.ts.map +1 -1
- package/dist/panoramic/graph/graph-paths.js +10 -0
- package/dist/panoramic/graph/graph-paths.js.map +1 -1
- package/dist/panoramic/graph/graph-query.d.ts +49 -2
- package/dist/panoramic/graph/graph-query.d.ts.map +1 -1
- package/dist/panoramic/graph/graph-query.js +117 -19
- package/dist/panoramic/graph/graph-query.js.map +1 -1
- package/dist/panoramic/graph/graph-types.d.ts +32 -3
- package/dist/panoramic/graph/graph-types.d.ts.map +1 -1
- package/dist/panoramic/graph/index.d.ts +2 -1
- package/dist/panoramic/graph/index.d.ts.map +1 -1
- package/dist/panoramic/graph/index.js +1 -1
- package/dist/panoramic/graph/index.js.map +1 -1
- package/dist/panoramic/hyperedges/schema.d.ts +6 -6
- package/dist/panoramic/interface-surface-generator.d.ts +50 -0
- package/dist/panoramic/interface-surface-generator.d.ts.map +1 -0
- package/dist/panoramic/interface-surface-generator.js +388 -0
- package/dist/panoramic/interface-surface-generator.js.map +1 -0
- package/dist/panoramic/interfaces.d.ts +2 -2
- package/dist/panoramic/mock-readme-generator.d.ts +90 -0
- package/dist/panoramic/mock-readme-generator.d.ts.map +1 -0
- package/dist/panoramic/mock-readme-generator.js +111 -0
- package/dist/panoramic/mock-readme-generator.js.map +1 -0
- package/dist/panoramic/models/component-view-model.d.ts +1 -1
- package/dist/panoramic/models/component-view-model.d.ts.map +1 -1
- package/dist/panoramic/models/component-view-model.js.map +1 -1
- package/dist/panoramic/narrative-provenance-adapter.d.ts +8 -0
- package/dist/panoramic/narrative-provenance-adapter.d.ts.map +1 -0
- package/dist/panoramic/narrative-provenance-adapter.js +99 -0
- package/dist/panoramic/narrative-provenance-adapter.js.map +1 -0
- package/dist/panoramic/parser-registry.d.ts +1 -1
- package/dist/panoramic/parser-registry.js +1 -1
- package/dist/panoramic/parsers/types.d.ts +6 -6
- package/dist/panoramic/pattern-hints-generator.d.ts +28 -0
- package/dist/panoramic/pattern-hints-generator.d.ts.map +1 -0
- package/dist/panoramic/pattern-hints-generator.js +218 -0
- package/dist/panoramic/pattern-hints-generator.js.map +1 -0
- package/dist/panoramic/pattern-hints-model.d.ts +89 -0
- package/dist/panoramic/pattern-hints-model.d.ts.map +1 -0
- package/dist/panoramic/pattern-hints-model.js +61 -0
- package/dist/panoramic/pattern-hints-model.js.map +1 -0
- package/dist/panoramic/pattern-knowledge-base.d.ts +31 -0
- package/dist/panoramic/pattern-knowledge-base.d.ts.map +1 -0
- package/dist/panoramic/pattern-knowledge-base.js +407 -0
- package/dist/panoramic/pattern-knowledge-base.js.map +1 -0
- package/dist/panoramic/pipelines/adr-evidence-verifier.d.ts.map +1 -1
- package/dist/panoramic/pipelines/adr-evidence-verifier.js +1 -29
- package/dist/panoramic/pipelines/adr-evidence-verifier.js.map +1 -1
- package/dist/panoramic/pipelines/coverage-auditor.d.ts.map +1 -1
- package/dist/panoramic/pipelines/coverage-auditor.js +4 -2
- package/dist/panoramic/pipelines/coverage-auditor.js.map +1 -1
- package/dist/panoramic/pipelines/docs-bundle-orchestrator.js +13 -6
- package/dist/panoramic/pipelines/docs-bundle-orchestrator.js.map +1 -1
- package/dist/panoramic/pipelines/product-ux-docs.d.ts +5 -0
- package/dist/panoramic/pipelines/product-ux-docs.d.ts.map +1 -1
- package/dist/panoramic/pipelines/product-ux-docs.js +34 -6
- package/dist/panoramic/pipelines/product-ux-docs.js.map +1 -1
- package/dist/panoramic/product-ux-docs.d.ts +104 -0
- package/dist/panoramic/product-ux-docs.d.ts.map +1 -0
- package/dist/panoramic/product-ux-docs.js +817 -0
- package/dist/panoramic/product-ux-docs.js.map +1 -0
- package/dist/panoramic/qa/__tests__/citation.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/citation.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/citation.test.js +193 -0
- package/dist/panoramic/qa/__tests__/citation.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/debt-context.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/debt-context.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/debt-context.test.js +154 -0
- package/dist/panoramic/qa/__tests__/debt-context.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/graph-retriever.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/graph-retriever.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/graph-retriever.test.js +148 -0
- package/dist/panoramic/qa/__tests__/graph-retriever.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/index.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/index.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/index.test.js +246 -0
- package/dist/panoramic/qa/__tests__/index.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/llm-caller.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/llm-caller.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/llm-caller.test.js +168 -0
- package/dist/panoramic/qa/__tests__/llm-caller.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/prompt-builder.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/prompt-builder.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/prompt-builder.test.js +150 -0
- package/dist/panoramic/qa/__tests__/prompt-builder.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/qa-integration.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/qa-integration.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/qa-integration.test.js +296 -0
- package/dist/panoramic/qa/__tests__/qa-integration.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/rag-reranker.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/rag-reranker.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/rag-reranker.test.js +136 -0
- package/dist/panoramic/qa/__tests__/rag-reranker.test.js.map +1 -0
- package/dist/panoramic/qa/index.d.ts.map +1 -1
- package/dist/panoramic/qa/index.js +10 -3
- package/dist/panoramic/qa/index.js.map +1 -1
- package/dist/panoramic/query.d.ts +1 -0
- package/dist/panoramic/query.d.ts.map +1 -1
- package/dist/panoramic/query.js +5 -0
- package/dist/panoramic/query.js.map +1 -1
- package/dist/panoramic/runtime-topology-generator.d.ts +77 -0
- package/dist/panoramic/runtime-topology-generator.d.ts.map +1 -0
- package/dist/panoramic/runtime-topology-generator.js +676 -0
- package/dist/panoramic/runtime-topology-generator.js.map +1 -0
- package/dist/panoramic/runtime-topology-model.d.ts +145 -0
- package/dist/panoramic/runtime-topology-model.d.ts.map +1 -0
- package/dist/panoramic/runtime-topology-model.js +300 -0
- package/dist/panoramic/runtime-topology-model.js.map +1 -0
- package/dist/panoramic/troubleshooting-generator.d.ts +51 -0
- package/dist/panoramic/troubleshooting-generator.d.ts.map +1 -0
- package/dist/panoramic/troubleshooting-generator.js +451 -0
- package/dist/panoramic/troubleshooting-generator.js.map +1 -0
- package/dist/panoramic/utils/text-segmenter.d.ts +15 -0
- package/dist/panoramic/utils/text-segmenter.d.ts.map +1 -1
- package/dist/panoramic/utils/text-segmenter.js +38 -0
- package/dist/panoramic/utils/text-segmenter.js.map +1 -1
- package/dist/panoramic/workspace-index-generator.d.ts +148 -0
- package/dist/panoramic/workspace-index-generator.d.ts.map +1 -0
- package/dist/panoramic/workspace-index-generator.js +497 -0
- package/dist/panoramic/workspace-index-generator.js.map +1 -0
- package/dist/runtime-bootstrap.d.ts +9 -0
- package/dist/runtime-bootstrap.d.ts.map +1 -0
- package/dist/runtime-bootstrap.js +33 -0
- package/dist/runtime-bootstrap.js.map +1 -0
- package/dist/scaffold-kb/api-entities-serializer.d.ts +12 -0
- package/dist/scaffold-kb/api-entities-serializer.d.ts.map +1 -0
- package/dist/scaffold-kb/api-entities-serializer.js +144 -0
- package/dist/scaffold-kb/api-entities-serializer.js.map +1 -0
- package/dist/scaffold-kb/arbitration.d.ts +44 -0
- package/dist/scaffold-kb/arbitration.d.ts.map +1 -0
- package/dist/scaffold-kb/arbitration.js +144 -0
- package/dist/scaffold-kb/arbitration.js.map +1 -0
- package/dist/scaffold-kb/chunk-splitter.d.ts +20 -0
- package/dist/scaffold-kb/chunk-splitter.d.ts.map +1 -0
- package/dist/scaffold-kb/chunk-splitter.js +309 -0
- package/dist/scaffold-kb/chunk-splitter.js.map +1 -0
- package/dist/scaffold-kb/doc-graph-builder.d.ts +26 -0
- package/dist/scaffold-kb/doc-graph-builder.d.ts.map +1 -0
- package/dist/scaffold-kb/doc-graph-builder.js +72 -0
- package/dist/scaffold-kb/doc-graph-builder.js.map +1 -0
- package/dist/scaffold-kb/entity-extractor.d.ts +40 -0
- package/dist/scaffold-kb/entity-extractor.d.ts.map +1 -0
- package/dist/scaffold-kb/entity-extractor.js +0 -0
- package/dist/scaffold-kb/entity-extractor.js.map +1 -0
- package/dist/scaffold-kb/entity-heuristic.d.ts +14 -0
- package/dist/scaffold-kb/entity-heuristic.d.ts.map +1 -0
- package/dist/scaffold-kb/entity-heuristic.js +107 -0
- package/dist/scaffold-kb/entity-heuristic.js.map +1 -0
- package/dist/scaffold-kb/entity-matcher.d.ts +20 -0
- package/dist/scaffold-kb/entity-matcher.d.ts.map +1 -0
- package/dist/scaffold-kb/entity-matcher.js +53 -0
- package/dist/scaffold-kb/entity-matcher.js.map +1 -0
- package/dist/scaffold-kb/entity-util.d.ts +11 -0
- package/dist/scaffold-kb/entity-util.d.ts.map +1 -0
- package/dist/scaffold-kb/entity-util.js +23 -0
- package/dist/scaffold-kb/entity-util.js.map +1 -0
- package/dist/scaffold-kb/evidence-envelope.d.ts +17 -0
- package/dist/scaffold-kb/evidence-envelope.d.ts.map +1 -0
- package/dist/scaffold-kb/evidence-envelope.js +32 -0
- package/dist/scaffold-kb/evidence-envelope.js.map +1 -0
- package/dist/scaffold-kb/index.d.ts +20 -0
- package/dist/scaffold-kb/index.d.ts.map +1 -0
- package/dist/scaffold-kb/index.js +102 -0
- package/dist/scaffold-kb/index.js.map +1 -0
- package/dist/scaffold-kb/ingest/ingest-core.d.ts +47 -0
- package/dist/scaffold-kb/ingest/ingest-core.d.ts.map +1 -0
- package/dist/scaffold-kb/ingest/ingest-core.js +231 -0
- package/dist/scaffold-kb/ingest/ingest-core.js.map +1 -0
- package/dist/scaffold-kb/ingest/office-parser.d.ts +33 -0
- package/dist/scaffold-kb/ingest/office-parser.d.ts.map +1 -0
- package/dist/scaffold-kb/ingest/office-parser.js +187 -0
- package/dist/scaffold-kb/ingest/office-parser.js.map +1 -0
- package/dist/scaffold-kb/ingest/url-fetcher.d.ts +43 -0
- package/dist/scaffold-kb/ingest/url-fetcher.d.ts.map +1 -0
- package/dist/scaffold-kb/ingest/url-fetcher.js +245 -0
- package/dist/scaffold-kb/ingest/url-fetcher.js.map +1 -0
- package/dist/scaffold-kb/ingester.d.ts +38 -0
- package/dist/scaffold-kb/ingester.d.ts.map +1 -0
- package/dist/scaffold-kb/ingester.js +261 -0
- package/dist/scaffold-kb/ingester.js.map +1 -0
- package/dist/scaffold-kb/injection-format.d.ts +25 -0
- package/dist/scaffold-kb/injection-format.d.ts.map +1 -0
- package/dist/scaffold-kb/injection-format.js +55 -0
- package/dist/scaffold-kb/injection-format.js.map +1 -0
- package/dist/scaffold-kb/kb-writer.d.ts +13 -0
- package/dist/scaffold-kb/kb-writer.d.ts.map +1 -0
- package/dist/scaffold-kb/kb-writer.js +69 -0
- package/dist/scaffold-kb/kb-writer.js.map +1 -0
- package/dist/scaffold-kb/keyword-extract.d.ts +16 -0
- package/dist/scaffold-kb/keyword-extract.d.ts.map +1 -0
- package/dist/scaffold-kb/keyword-extract.js +49 -0
- package/dist/scaffold-kb/keyword-extract.js.map +1 -0
- package/dist/scaffold-kb/query-sanitizer.d.ts +28 -0
- package/dist/scaffold-kb/query-sanitizer.d.ts.map +1 -0
- package/dist/scaffold-kb/query-sanitizer.js +38 -0
- package/dist/scaffold-kb/query-sanitizer.js.map +1 -0
- package/dist/scaffold-kb/recall-eval.d.ts +48 -0
- package/dist/scaffold-kb/recall-eval.d.ts.map +1 -0
- package/dist/scaffold-kb/recall-eval.js +55 -0
- package/dist/scaffold-kb/recall-eval.js.map +1 -0
- package/dist/scaffold-kb/schema-compat.d.ts +22 -0
- package/dist/scaffold-kb/schema-compat.d.ts.map +1 -0
- package/dist/scaffold-kb/schema-compat.js +32 -0
- package/dist/scaffold-kb/schema-compat.js.map +1 -0
- package/dist/scaffold-kb/search-core.d.ts +42 -0
- package/dist/scaffold-kb/search-core.d.ts.map +1 -0
- package/dist/scaffold-kb/search-core.js +89 -0
- package/dist/scaffold-kb/search-core.js.map +1 -0
- package/dist/scaffold-kb/sqlite-engine.d.ts +58 -0
- package/dist/scaffold-kb/sqlite-engine.d.ts.map +1 -0
- package/dist/scaffold-kb/sqlite-engine.js +61 -0
- package/dist/scaffold-kb/sqlite-engine.js.map +1 -0
- package/dist/scaffold-kb/sqlite-writer.d.ts +18 -0
- package/dist/scaffold-kb/sqlite-writer.d.ts.map +1 -0
- package/dist/scaffold-kb/sqlite-writer.js +76 -0
- package/dist/scaffold-kb/sqlite-writer.js.map +1 -0
- package/dist/scaffold-kb/tokenizer.d.ts +26 -0
- package/dist/scaffold-kb/tokenizer.d.ts.map +1 -0
- package/dist/scaffold-kb/tokenizer.js +97 -0
- package/dist/scaffold-kb/tokenizer.js.map +1 -0
- package/dist/scaffold-kb/types.d.ts +157 -0
- package/dist/scaffold-kb/types.d.ts.map +1 -0
- package/dist/scaffold-kb/types.js +5 -0
- package/dist/scaffold-kb/types.js.map +1 -0
- package/dist/utils/file-scanner.d.ts +15 -0
- package/dist/utils/file-scanner.d.ts.map +1 -1
- package/dist/utils/file-scanner.js +18 -1
- package/dist/utils/file-scanner.js.map +1 -1
- package/dist/utils/string-distance.d.ts +20 -0
- package/dist/utils/string-distance.d.ts.map +1 -0
- package/dist/utils/string-distance.js +38 -0
- package/dist/utils/string-distance.js.map +1 -0
- package/package.json +22 -3
- package/plugins/demo-kb-en/.claude-plugin/plugin.json +11 -0
- package/plugins/demo-kb-en/.mcp.json +8 -0
- package/plugins/demo-kb-en/FIXTURE.json +23 -0
- package/plugins/demo-kb-en/FIXTURE.md +53 -0
- package/plugins/demo-kb-en/ingest-samples/meeting-notes.md +13 -0
- package/plugins/demo-kb-en/kb/api-entities.json +3445 -0
- package/plugins/demo-kb-en/kb/chunks.sqlite +0 -0
- package/plugins/demo-kb-en/kb/doc-graph.json +113 -0
- package/plugins/demo-kb-zh/.claude-plugin/plugin.json +11 -0
- package/plugins/demo-kb-zh/.mcp.json +8 -0
- package/plugins/demo-kb-zh/FIXTURE.json +23 -0
- package/plugins/demo-kb-zh/FIXTURE.md +63 -0
- package/plugins/demo-kb-zh/ingest-samples/meeting-notes.md +13 -0
- package/plugins/demo-kb-zh/kb/api-entities.json +990 -0
- package/plugins/demo-kb-zh/kb/chunks.sqlite +0 -0
- package/plugins/demo-kb-zh/kb/doc-graph.json +113 -0
- package/plugins/spec-driver/.claude-plugin/plugin.json +1 -1
- package/plugins/spec-driver/README.md +50 -1
- package/plugins/spec-driver/agents/implement.md +20 -1
- package/plugins/spec-driver/agents/plan.md +20 -1
- package/plugins/spec-driver/agents/quality-review.md +20 -1
- package/plugins/spec-driver/agents/spec-review.md +20 -1
- package/plugins/spec-driver/agents/verify.md +108 -1
- package/plugins/spec-driver/config/orchestration.yaml +39 -31
- package/plugins/spec-driver/contracts/orchestration-overrides-contract.yaml +27 -0
- package/plugins/spec-driver/contracts/orchestration-schema.mjs +272 -227
- package/plugins/spec-driver/contracts/wrapper-source-of-truth.yaml +3 -0
- package/plugins/spec-driver/docs/customization.md +134 -0
- package/plugins/spec-driver/docs/spectra-mcp-integration.md +165 -0
- package/plugins/spec-driver/hooks/hooks.json +9 -0
- package/plugins/spec-driver/hooks/stop-fix-compliance-check.sh +36 -0
- package/plugins/spec-driver/lib/delegation-contract.mjs +84 -0
- package/plugins/spec-driver/lib/orchestration-resolver.mjs +49 -0
- package/plugins/spec-driver/lib/orchestrator.mjs +29 -1
- package/plugins/spec-driver/lib/preference-rules.mjs +96 -0
- package/plugins/spec-driver/scripts/codex-skills.sh +28 -28
- package/plugins/spec-driver/scripts/dev/spike-fix-compliance-e2e.mjs +130 -0
- package/plugins/spec-driver/scripts/fix-compliance-judge.mjs +415 -0
- package/plugins/spec-driver/scripts/generate-adoption-insights.mjs +48 -1
- package/plugins/spec-driver/scripts/goal-loop-cli.mjs +307 -0
- package/plugins/spec-driver/scripts/init-project.sh +56 -0
- package/plugins/spec-driver/scripts/kb-prequery.mjs +125 -0
- package/plugins/spec-driver/scripts/lib/config-schema.mjs +200 -94
- package/plugins/spec-driver/scripts/lib/ensure-gitignore.sh +277 -0
- package/plugins/spec-driver/scripts/lib/extract-wrapper-body.mjs +136 -0
- package/plugins/spec-driver/scripts/lib/fix-compliance-core.mjs +434 -0
- package/plugins/spec-driver/scripts/lib/fix-compliance-io.mjs +335 -0
- package/plugins/spec-driver/scripts/lib/goal-loop-core.mjs +783 -0
- package/plugins/spec-driver/scripts/lib/init-project-output.sh +28 -0
- package/plugins/spec-driver/scripts/lib/load-zod.mjs +62 -0
- package/plugins/spec-driver/scripts/lib/project-profile-resolver.mjs +141 -49
- package/plugins/spec-driver/scripts/lib/project-profile-schema.mjs +88 -54
- package/plugins/spec-driver/scripts/postinstall.sh +13 -1
- package/plugins/spec-driver/scripts/record-workflow-run.mjs +75 -0
- package/plugins/spec-driver/scripts/sync-delegation-contract.mjs +187 -0
- package/plugins/spec-driver/scripts/sync-preference-rules.mjs +148 -0
- package/plugins/spec-driver/scripts/validate-orchestrator-models.mjs +156 -0
- package/plugins/spec-driver/scripts/validate-wrapper-sources.mjs +46 -1
- package/plugins/spec-driver/skills/spec-driver-feature/SKILL.md +302 -0
- package/plugins/spec-driver/skills/spec-driver-fix/SKILL.md +97 -8
- package/plugins/spec-driver/skills/spec-driver-implement/SKILL.md +18 -0
- package/plugins/spec-driver/skills/spec-driver-refactor/SKILL.md +10 -0
- package/plugins/spec-driver/skills/spec-driver-resume/SKILL.md +12 -1
- package/plugins/spec-driver/skills/spec-driver-story/SKILL.md +30 -0
- package/plugins/spec-driver/templates/delegation-contract.md +27 -0
- package/plugins/spec-driver/templates/goal-loop-override-template.yaml +284 -0
- package/plugins/spec-driver/templates/preference-rules.md +39 -0
- package/plugins/spec-driver/templates/specify-base/project-context-template.yaml +10 -0
- package/plugins/spectra/.claude-plugin/plugin.json +1 -1
- package/plugins/spectra/README.md +48 -1
- package/plugins/spectra/hooks/post-commit.sh +40 -0
- package/templates/module-spec.hbs +1 -0
- package/templates/product-overview.hbs +1 -1
|
Binary file
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.0",
|
|
3
|
+
"source": "directory",
|
|
4
|
+
"built_at": "2026-06-16T06:31:35.885Z",
|
|
5
|
+
"sdk_version": "5.5.0",
|
|
6
|
+
"nodes": [
|
|
7
|
+
{
|
|
8
|
+
"id": "basic-concepts.md",
|
|
9
|
+
"title": "ECharts 基础概念概览",
|
|
10
|
+
"summary": null,
|
|
11
|
+
"tags": [],
|
|
12
|
+
"lang": "zh",
|
|
13
|
+
"source_url": "/Users/connorlu/Desktop/.workspace2.nosync/cc-plugin-market/.claude/worktrees/frosty-jepsen-b346c5/plugins/demo-kb-zh/source-docs/basic-concepts.md"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "dataset.md",
|
|
17
|
+
"title": "使用 dataset 管理数据",
|
|
18
|
+
"summary": null,
|
|
19
|
+
"tags": [],
|
|
20
|
+
"lang": "zh",
|
|
21
|
+
"source_url": "/Users/connorlu/Desktop/.workspace2.nosync/cc-plugin-market/.claude/worktrees/frosty-jepsen-b346c5/plugins/demo-kb-zh/source-docs/dataset.md"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "dynamic-data.md",
|
|
25
|
+
"title": "异步数据加载和更新",
|
|
26
|
+
"summary": null,
|
|
27
|
+
"tags": [],
|
|
28
|
+
"lang": "zh",
|
|
29
|
+
"source_url": "/Users/connorlu/Desktop/.workspace2.nosync/cc-plugin-market/.claude/worktrees/frosty-jepsen-b346c5/plugins/demo-kb-zh/source-docs/dynamic-data.md"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "event.md",
|
|
33
|
+
"title": "ECharts 中的事件和行为",
|
|
34
|
+
"summary": null,
|
|
35
|
+
"tags": [],
|
|
36
|
+
"lang": "zh",
|
|
37
|
+
"source_url": "/Users/connorlu/Desktop/.workspace2.nosync/cc-plugin-market/.claude/worktrees/frosty-jepsen-b346c5/plugins/demo-kb-zh/source-docs/event.md"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "getting-started.md",
|
|
41
|
+
"title": "5 分钟上手 ECharts",
|
|
42
|
+
"summary": null,
|
|
43
|
+
"tags": [],
|
|
44
|
+
"lang": "zh",
|
|
45
|
+
"source_url": "/Users/connorlu/Desktop/.workspace2.nosync/cc-plugin-market/.claude/worktrees/frosty-jepsen-b346c5/plugins/demo-kb-zh/source-docs/getting-started.md"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "option-legend.md",
|
|
49
|
+
"title": "配置项:图例组件(legend)",
|
|
50
|
+
"summary": null,
|
|
51
|
+
"tags": [],
|
|
52
|
+
"lang": "zh",
|
|
53
|
+
"source_url": "/Users/connorlu/Desktop/.workspace2.nosync/cc-plugin-market/.claude/worktrees/frosty-jepsen-b346c5/plugins/demo-kb-zh/source-docs/option-legend.md"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"id": "option-series-line.md",
|
|
57
|
+
"title": "配置项:折线图系列(series-line)",
|
|
58
|
+
"summary": null,
|
|
59
|
+
"tags": [],
|
|
60
|
+
"lang": "zh",
|
|
61
|
+
"source_url": "/Users/connorlu/Desktop/.workspace2.nosync/cc-plugin-market/.claude/worktrees/frosty-jepsen-b346c5/plugins/demo-kb-zh/source-docs/option-series-line.md"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "option-tooltip.md",
|
|
65
|
+
"title": "配置项:提示框组件(tooltip)",
|
|
66
|
+
"summary": null,
|
|
67
|
+
"tags": [],
|
|
68
|
+
"lang": "zh",
|
|
69
|
+
"source_url": "/Users/connorlu/Desktop/.workspace2.nosync/cc-plugin-market/.claude/worktrees/frosty-jepsen-b346c5/plugins/demo-kb-zh/source-docs/option-tooltip.md"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "option-xaxis.md",
|
|
73
|
+
"title": "配置项:直角坐标系 X 轴(xAxis)",
|
|
74
|
+
"summary": null,
|
|
75
|
+
"tags": [],
|
|
76
|
+
"lang": "zh",
|
|
77
|
+
"source_url": "/Users/connorlu/Desktop/.workspace2.nosync/cc-plugin-market/.claude/worktrees/frosty-jepsen-b346c5/plugins/demo-kb-zh/source-docs/option-xaxis.md"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": "option-yaxis.md",
|
|
81
|
+
"title": "配置项:直角坐标系 Y 轴(yAxis)",
|
|
82
|
+
"summary": null,
|
|
83
|
+
"tags": [],
|
|
84
|
+
"lang": "zh",
|
|
85
|
+
"source_url": "/Users/connorlu/Desktop/.workspace2.nosync/cc-plugin-market/.claude/worktrees/frosty-jepsen-b346c5/plugins/demo-kb-zh/source-docs/option-yaxis.md"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"id": "renderer.md",
|
|
89
|
+
"title": "使用 Canvas 或者 SVG 渲染",
|
|
90
|
+
"summary": null,
|
|
91
|
+
"tags": [],
|
|
92
|
+
"lang": "zh",
|
|
93
|
+
"source_url": "/Users/connorlu/Desktop/.workspace2.nosync/cc-plugin-market/.claude/worktrees/frosty-jepsen-b346c5/plugins/demo-kb-zh/source-docs/renderer.md"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "styling.md",
|
|
97
|
+
"title": "个性化图表的样式",
|
|
98
|
+
"summary": null,
|
|
99
|
+
"tags": [],
|
|
100
|
+
"lang": "zh",
|
|
101
|
+
"source_url": "/Users/connorlu/Desktop/.workspace2.nosync/cc-plugin-market/.claude/worktrees/frosty-jepsen-b346c5/plugins/demo-kb-zh/source-docs/styling.md"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": "visual-map.md",
|
|
105
|
+
"title": "数据的视觉映射",
|
|
106
|
+
"summary": null,
|
|
107
|
+
"tags": [],
|
|
108
|
+
"lang": "zh",
|
|
109
|
+
"source_url": "/Users/connorlu/Desktop/.workspace2.nosync/cc-plugin-market/.claude/worktrees/frosty-jepsen-b346c5/plugins/demo-kb-zh/source-docs/visual-map.md"
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
"edges": []
|
|
113
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "spec-driver",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.0",
|
|
4
4
|
"description": "自治研发编排器——支持 feature/implement/story/fix/resume/sync/doc/refactor 八种模式自动执行 Spec-Driven Development 全流程,基于 orchestration.yaml 配置驱动编排,含 6 个质量门禁、sync 确定性合并引擎,以及项目级 orchestration overrides 分层定制",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Connor Lu"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Spec Driver
|
|
2
2
|
|
|
3
|
-
> 当前发布版本: v4.
|
|
3
|
+
> 当前发布版本: v4.3.0
|
|
4
4
|
|
|
5
5
|
**自治研发编排器** — 支持 8 种模式(feature/implement/story/fix/resume/sync/doc/refactor),一键触发 Spec-Driven Development 全流程。基于 orchestration.yaml 配置驱动,含 6 个质量门禁和 15 个专业子代理。
|
|
6
6
|
|
|
@@ -212,6 +212,38 @@ codex_thinking:
|
|
|
212
212
|
|
|
213
213
|
说明:在 Codex 执行时,`opus/sonnet/haiku` 语义会先映射到 `gpt-5.4`,再通过 `codex_thinking` 选择思考等级,`codex.service_tier` 用于控制服务层级。
|
|
214
214
|
|
|
215
|
+
## fix 模式流程依从性(fix_compliance)
|
|
216
|
+
|
|
217
|
+
fix 模式默认挂载一个阻断型 `Stop` hook(`stop-fix-compliance-check.sh`),在 fix 会话结束时机械校验本次修复是否真正走完了标准流程——防止"直接输出一句『已修复』就收口"这类流程坍塌。判定完全基于 transcript 客观记录与磁盘制品状态(零 LLM、零子代理委派),不采信模型自陈。
|
|
218
|
+
|
|
219
|
+
通过 `spec-driver.config.yaml` 配置强制程度:
|
|
220
|
+
|
|
221
|
+
```yaml
|
|
222
|
+
fix_compliance:
|
|
223
|
+
enforcement: block # block(默认)| warn | off
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
| 取值 | 语义 |
|
|
227
|
+
|------|------|
|
|
228
|
+
| `block`(默认) | 不合规收口 → 阻断(exit 2)并向模型回注具体补救指引,驱动其补齐流程或走合法 no-op 出口 |
|
|
229
|
+
| `warn` | 不合规收口 → 不阻断,仅在 stderr 输出 `[FIX-COMPLIANCE][WARN]` 提示 |
|
|
230
|
+
| `off` | 完全关闭该判定,fix 会话零接触 |
|
|
231
|
+
|
|
232
|
+
**两条合法收口路径**(满足其一即判合规):
|
|
233
|
+
|
|
234
|
+
- **完整修复路径**:诊断(`fix-report.md` 含 Root Cause)→ 委派 implement 子代理修复 → 委派 verify 子代理验证(产出 `verification/verification-report.md`)。
|
|
235
|
+
- **确认无需改动路径**(no-op 一等公民出口):当诊断结论是"问题已不存在/无需代码改动"时,写入含 `## 判定依据` 章节(具体证据、非占位)的 `fix-report.md`,并至少委派 1 次 verify 类子代理交叉核实该判断。0 委派的"无需改动"仍会被判不合规——防止把"懒得修"伪装成"不需要修"。
|
|
236
|
+
|
|
237
|
+
**stderr 前缀含义**:
|
|
238
|
+
|
|
239
|
+
| 前缀 | 含义 |
|
|
240
|
+
|------|------|
|
|
241
|
+
| `[FIX-COMPLIANCE]` | block 档不合规阻断,附缺失项 + 补救指引 |
|
|
242
|
+
| `[FIX-COMPLIANCE][WARN]` | warn 档不合规提示(不阻断) |
|
|
243
|
+
| `[FIX-COMPLIANCE][GATE-DEGRADED]` | 降级放行——同一会话不合规阻断达上限(2 次)后自动放行,避免死循环,并落盘可追溯的降级审计记录 |
|
|
244
|
+
|
|
245
|
+
阻断次数在单个会话内有上限(2 次),达到上限后即使仍不合规也会降级放行(`[GATE-DEGRADED]`),确保不会产生死循环;该机制仅对 fix 会话生效,feature/story 模式与普通会话零触发。
|
|
246
|
+
|
|
215
247
|
## 子代理列表
|
|
216
248
|
|
|
217
249
|
| 子代理 | 阶段 | 职责 |
|
|
@@ -396,6 +428,23 @@ Plugin 名称从 `speckitdriver` 更名为 `spec-driver`,技能名统一为 `s
|
|
|
396
428
|
|
|
397
429
|
所有 Codex wrapper 都会写入 `Wrapper Source Contract` 头部,并通过 `validate-wrapper-sources.mjs` 校验是否仍与 canonical source 一致。
|
|
398
430
|
|
|
431
|
+
## Spectra MCP 集成
|
|
432
|
+
|
|
433
|
+
Spec Driver v4.2.0 起,5 个核心 sub-agent(`plan` / `implement` / `verify` / `spec-review` / `quality-review`)已预置 spectra MCP 工具的正确 plugin namespace,实现 **2 步开箱即用**:
|
|
434
|
+
|
|
435
|
+
```bash
|
|
436
|
+
# Step 1: 安装两个 plugin
|
|
437
|
+
claude plugin install spectra
|
|
438
|
+
claude plugin install spec-driver
|
|
439
|
+
|
|
440
|
+
# Step 2: 直接使用(无需额外配置)
|
|
441
|
+
/spec-driver:spec-driver-feature 描述需求
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
sub-agent 会自动调用 `mcp__plugin_spectra_spectra__context` / `impact` / `detect_changes` 工具。
|
|
445
|
+
|
|
446
|
+
详情见 [docs/spectra-mcp-integration.md](./docs/spectra-mcp-integration.md),fork 用户应急方案见 [docs/customization.md](./docs/customization.md)。
|
|
447
|
+
|
|
399
448
|
## 许可证
|
|
400
449
|
|
|
401
450
|
MIT
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
model: sonnet
|
|
3
|
-
tools: [Read, Write, Edit, Bash, Grep, Glob, Agent]
|
|
3
|
+
tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, mcp__plugin_spectra_spectra__context, mcp__plugin_spectra_spectra__impact]
|
|
4
4
|
effort: high
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -10,6 +10,25 @@ effort: high
|
|
|
10
10
|
|
|
11
11
|
你是 Spec Driver 的**代码实现**子代理,负责按 tasks.md 中的任务清单逐步实现代码。你是高级开发工程师,严格遵循技术计划和任务依赖,产出高质量、可维护的代码。
|
|
12
12
|
|
|
13
|
+
<!-- BEGIN preference-rules (generated from templates/preference-rules.md; do not edit) -->
|
|
14
|
+
## 工具优先使用规则(M7 F170d)
|
|
15
|
+
|
|
16
|
+
当面对以下类任务时,**优先调用 spectra MCP 工具而非 Read/Grep**:
|
|
17
|
+
|
|
18
|
+
| 任务关键词 | 优先工具 | 理由 |
|
|
19
|
+
|----------|---------|------|
|
|
20
|
+
| "找 caller" / "谁调用了 X" / "caller analysis" | `mcp__plugin_spectra_spectra__impact` (direction=upstream) | 提供 transitive caller chain + confidence score,Grep 仅文本匹配无依赖深度 |
|
|
21
|
+
| "评估改动影响" / "blast radius" / "影响面" | `mcp__plugin_spectra_spectra__impact` | 提供 BFS 受影响 symbol 列表 + summary |
|
|
22
|
+
| "找 callee" / "X 调用了什么" / "依赖什么" | `mcp__plugin_spectra_spectra__context` | 提供 symbol 360° 上下文 (definition + callers + callees + imports) |
|
|
23
|
+
|
|
24
|
+
### 关键原则
|
|
25
|
+
|
|
26
|
+
- **Grep 仍是 fallback**:当 Spectra MCP 工具返回 graph-not-built / 不可用时退回 Grep
|
|
27
|
+
- **不能省略调用**:不要因为"觉得 Grep 够用"跳过 MCP — 即使任务可以用 Grep 解决,MCP 提供的 transitive 数据更可信
|
|
28
|
+
- **chained 使用**:detect_changes → impact → context 是典型链路,按 nextStepHint 引导继续调用
|
|
29
|
+
- **不要 N+1**:单次 impact 调用即可拿到 BFS 全 list,不需要多次 Grep 累计
|
|
30
|
+
<!-- END preference-rules -->
|
|
31
|
+
|
|
13
32
|
## 输入
|
|
14
33
|
|
|
15
34
|
- 读取制品:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
model: sonnet
|
|
3
|
-
tools: [Read, Write, Grep, Glob]
|
|
3
|
+
tools: [Read, Write, Grep, Glob, mcp__plugin_spectra_spectra__context, mcp__plugin_spectra_spectra__impact]
|
|
4
4
|
effort: high
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -10,6 +10,25 @@ effort: high
|
|
|
10
10
|
|
|
11
11
|
你是 Spec Driver 的**技术规划**子代理,负责基于需求规范和调研结论,生成完整的技术实现计划。你是架构师角色,将"做什么"转化为"怎么做"。
|
|
12
12
|
|
|
13
|
+
<!-- BEGIN preference-rules (generated from templates/preference-rules.md; do not edit) -->
|
|
14
|
+
## 工具优先使用规则(M7 F170d)
|
|
15
|
+
|
|
16
|
+
当面对以下类任务时,**优先调用 spectra MCP 工具而非 Read/Grep**:
|
|
17
|
+
|
|
18
|
+
| 任务关键词 | 优先工具 | 理由 |
|
|
19
|
+
|----------|---------|------|
|
|
20
|
+
| "找 caller" / "谁调用了 X" / "caller analysis" | `mcp__plugin_spectra_spectra__impact` (direction=upstream) | 提供 transitive caller chain + confidence score,Grep 仅文本匹配无依赖深度 |
|
|
21
|
+
| "评估改动影响" / "blast radius" / "影响面" | `mcp__plugin_spectra_spectra__impact` | 提供 BFS 受影响 symbol 列表 + summary |
|
|
22
|
+
| "找 callee" / "X 调用了什么" / "依赖什么" | `mcp__plugin_spectra_spectra__context` | 提供 symbol 360° 上下文 (definition + callers + callees + imports) |
|
|
23
|
+
|
|
24
|
+
### 关键原则
|
|
25
|
+
|
|
26
|
+
- **Grep 仍是 fallback**:当 Spectra MCP 工具返回 graph-not-built / 不可用时退回 Grep
|
|
27
|
+
- **不能省略调用**:不要因为"觉得 Grep 够用"跳过 MCP — 即使任务可以用 Grep 解决,MCP 提供的 transitive 数据更可信
|
|
28
|
+
- **chained 使用**:detect_changes → impact → context 是典型链路,按 nextStepHint 引导继续调用
|
|
29
|
+
- **不要 N+1**:单次 impact 调用即可拿到 BFS 全 list,不需要多次 Grep 累计
|
|
30
|
+
<!-- END preference-rules -->
|
|
31
|
+
|
|
13
32
|
## 输入
|
|
14
33
|
|
|
15
34
|
- 读取制品:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
model: sonnet
|
|
3
|
-
tools: [Read, Bash, Grep, Glob]
|
|
3
|
+
tools: [Read, Bash, Grep, Glob, mcp__plugin_spectra_spectra__impact, mcp__plugin_spectra_spectra__context]
|
|
4
4
|
effort: medium
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -10,6 +10,25 @@ effort: medium
|
|
|
10
10
|
|
|
11
11
|
你是 Spec Driver 的 **代码质量审查员**,负责从架构合理性、设计模式、安全性、性能、可读性、可维护性六个维度评估代码质量。你是资深代码审查专家,聚焦发现潜在的技术风险、结构问题和长期维护隐患。
|
|
12
12
|
|
|
13
|
+
<!-- BEGIN preference-rules (generated from templates/preference-rules.md; do not edit) -->
|
|
14
|
+
## 工具优先使用规则(M7 F170d)
|
|
15
|
+
|
|
16
|
+
当面对以下类任务时,**优先调用 spectra MCP 工具而非 Read/Grep**:
|
|
17
|
+
|
|
18
|
+
| 任务关键词 | 优先工具 | 理由 |
|
|
19
|
+
|----------|---------|------|
|
|
20
|
+
| "找 caller" / "谁调用了 X" / "caller analysis" | `mcp__plugin_spectra_spectra__impact` (direction=upstream) | 提供 transitive caller chain + confidence score,Grep 仅文本匹配无依赖深度 |
|
|
21
|
+
| "评估改动影响" / "blast radius" / "影响面" | `mcp__plugin_spectra_spectra__impact` | 提供 BFS 受影响 symbol 列表 + summary |
|
|
22
|
+
| "找 callee" / "X 调用了什么" / "依赖什么" | `mcp__plugin_spectra_spectra__context` | 提供 symbol 360° 上下文 (definition + callers + callees + imports) |
|
|
23
|
+
|
|
24
|
+
### 关键原则
|
|
25
|
+
|
|
26
|
+
- **Grep 仍是 fallback**:当 Spectra MCP 工具返回 graph-not-built / 不可用时退回 Grep
|
|
27
|
+
- **不能省略调用**:不要因为"觉得 Grep 够用"跳过 MCP — 即使任务可以用 Grep 解决,MCP 提供的 transitive 数据更可信
|
|
28
|
+
- **chained 使用**:detect_changes → impact → context 是典型链路,按 nextStepHint 引导继续调用
|
|
29
|
+
- **不要 N+1**:单次 impact 调用即可拿到 BFS 全 list,不需要多次 Grep 累计
|
|
30
|
+
<!-- END preference-rules -->
|
|
31
|
+
|
|
13
32
|
## 输入
|
|
14
33
|
|
|
15
34
|
- 读取制品:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
model: sonnet
|
|
3
|
-
tools: [Read, Grep, Glob]
|
|
3
|
+
tools: [Read, Grep, Glob, mcp__plugin_spectra_spectra__impact, mcp__plugin_spectra_spectra__context]
|
|
4
4
|
effort: medium
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -10,6 +10,25 @@ effort: medium
|
|
|
10
10
|
|
|
11
11
|
你是 Spec Driver 的 **Spec 合规审查员**,负责逐条检查 spec.md 中的每个功能需求(FR)的实现状态。你是需求合规专家,确保交付物严格对齐需求规范,不遗漏、不偏离、不过度实现。
|
|
12
12
|
|
|
13
|
+
<!-- BEGIN preference-rules (generated from templates/preference-rules.md; do not edit) -->
|
|
14
|
+
## 工具优先使用规则(M7 F170d)
|
|
15
|
+
|
|
16
|
+
当面对以下类任务时,**优先调用 spectra MCP 工具而非 Read/Grep**:
|
|
17
|
+
|
|
18
|
+
| 任务关键词 | 优先工具 | 理由 |
|
|
19
|
+
|----------|---------|------|
|
|
20
|
+
| "找 caller" / "谁调用了 X" / "caller analysis" | `mcp__plugin_spectra_spectra__impact` (direction=upstream) | 提供 transitive caller chain + confidence score,Grep 仅文本匹配无依赖深度 |
|
|
21
|
+
| "评估改动影响" / "blast radius" / "影响面" | `mcp__plugin_spectra_spectra__impact` | 提供 BFS 受影响 symbol 列表 + summary |
|
|
22
|
+
| "找 callee" / "X 调用了什么" / "依赖什么" | `mcp__plugin_spectra_spectra__context` | 提供 symbol 360° 上下文 (definition + callers + callees + imports) |
|
|
23
|
+
|
|
24
|
+
### 关键原则
|
|
25
|
+
|
|
26
|
+
- **Grep 仍是 fallback**:当 Spectra MCP 工具返回 graph-not-built / 不可用时退回 Grep
|
|
27
|
+
- **不能省略调用**:不要因为"觉得 Grep 够用"跳过 MCP — 即使任务可以用 Grep 解决,MCP 提供的 transitive 数据更可信
|
|
28
|
+
- **chained 使用**:detect_changes → impact → context 是典型链路,按 nextStepHint 引导继续调用
|
|
29
|
+
- **不要 N+1**:单次 impact 调用即可拿到 BFS 全 list,不需要多次 Grep 累计
|
|
30
|
+
<!-- END preference-rules -->
|
|
31
|
+
|
|
13
32
|
## 输入
|
|
14
33
|
|
|
15
34
|
- 读取制品:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
model: sonnet
|
|
3
|
-
tools: [Read, Bash, Grep, Glob]
|
|
3
|
+
tools: [Read, Bash, Grep, Glob, mcp__plugin_spectra_spectra__detect_changes, mcp__plugin_spectra_spectra__impact]
|
|
4
4
|
effort: medium
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -10,6 +10,25 @@ effort: medium
|
|
|
10
10
|
|
|
11
11
|
你是 Spec Driver 的**验证闭环**子代理,负责在代码实现完成后执行两层验证:Layer 1 Spec-Code 对齐验证(语言无关)+ Layer 2 项目原生工具链验证(语言相关)。你是质量工程师,确保交付物符合需求规范且通过技术质量检查。
|
|
12
12
|
|
|
13
|
+
<!-- BEGIN preference-rules (generated from templates/preference-rules.md; do not edit) -->
|
|
14
|
+
## 工具优先使用规则(M7 F170d)
|
|
15
|
+
|
|
16
|
+
当面对以下类任务时,**优先调用 spectra MCP 工具而非 Read/Grep**:
|
|
17
|
+
|
|
18
|
+
| 任务关键词 | 优先工具 | 理由 |
|
|
19
|
+
|----------|---------|------|
|
|
20
|
+
| "找 caller" / "谁调用了 X" / "caller analysis" | `mcp__plugin_spectra_spectra__impact` (direction=upstream) | 提供 transitive caller chain + confidence score,Grep 仅文本匹配无依赖深度 |
|
|
21
|
+
| "评估改动影响" / "blast radius" / "影响面" | `mcp__plugin_spectra_spectra__impact` | 提供 BFS 受影响 symbol 列表 + summary |
|
|
22
|
+
| "git diff 影响" / "改了哪些 symbol" / "PR review 范围" | `mcp__plugin_spectra_spectra__detect_changes` | 从 diff 派生 changedSymbols + impact 链 |
|
|
23
|
+
|
|
24
|
+
### 关键原则
|
|
25
|
+
|
|
26
|
+
- **Grep 仍是 fallback**:当 Spectra MCP 工具返回 graph-not-built / 不可用时退回 Grep
|
|
27
|
+
- **不能省略调用**:不要因为"觉得 Grep 够用"跳过 MCP — 即使任务可以用 Grep 解决,MCP 提供的 transitive 数据更可信
|
|
28
|
+
- **chained 使用**:detect_changes → impact → context 是典型链路,按 nextStepHint 引导继续调用
|
|
29
|
+
- **不要 N+1**:单次 impact 调用即可拿到 BFS 全 list,不需要多次 Grep 累计
|
|
30
|
+
<!-- END preference-rules -->
|
|
31
|
+
|
|
13
32
|
## 输入
|
|
14
33
|
|
|
15
34
|
- 读取制品:
|
|
@@ -189,6 +208,94 @@ effort: medium
|
|
|
189
208
|
### 总体结果: ✅ READY / ❌ NEEDS FIX
|
|
190
209
|
```
|
|
191
210
|
|
|
211
|
+
### goal_loop JSON 输出模式(Feature 201)
|
|
212
|
+
|
|
213
|
+
当编排器在你的 Task prompt 中注入 `GOAL_LOOP_MODE=round-{i}` 时,除常规 Markdown 验证报告(`verification-report.md`)外,你 **MUST 额外**产出一份结构化 JSON 文件,供 goal_loop 闭环编排器机器消费:
|
|
214
|
+
|
|
215
|
+
**文件路径**:`{feature_dir}/goal-loop/verification-report-round-{i}.json`(`{i}` 从 prompt 的 `GOAL_LOOP_MODE=round-{i}` 提取)
|
|
216
|
+
|
|
217
|
+
**必须字段**(schema 权威定义见 plan.md §2 verification-report schema):
|
|
218
|
+
|
|
219
|
+
```jsonc
|
|
220
|
+
{
|
|
221
|
+
"round": 1, // 从 GOAL_LOOP_MODE=round-{i} 提取
|
|
222
|
+
"timestamp": "2026-06-20T10:00:00Z",// ISO 8601
|
|
223
|
+
"verify_mode": "smoke", // 从 prompt 的 verify_mode= 提取(smoke | full)
|
|
224
|
+
"wall_seconds": 42.3, // 本轮 verify 实际耗时(秒)
|
|
225
|
+
"layer2_commands": [ // Layer 2 每条命令一项
|
|
226
|
+
{
|
|
227
|
+
"name": "npx vitest run",
|
|
228
|
+
"kind": "test", // F204:命令类别。枚举 build | test | lint | check
|
|
229
|
+
// 可选;旧报告不含此字段时不影响行为(full_required_kinds=[] 默认跳过校验)
|
|
230
|
+
"exit_code": 0, // 真实执行退出码,MUST NOT 缺省
|
|
231
|
+
"status": "PASS", // PASS | FAIL | SKIPPED | UNKNOWN
|
|
232
|
+
"duration_seconds": 8.1,
|
|
233
|
+
"output_summary": "...",
|
|
234
|
+
"skipped_reason": null // 非 null 时 status=SKIPPED
|
|
235
|
+
}
|
|
236
|
+
],
|
|
237
|
+
"layer1_fr_coverage": { // 复用 Layer 1 FR 覆盖统计
|
|
238
|
+
"p1_total": 12, "p1_covered": 10,
|
|
239
|
+
"p1_coverage_pct": 83.3, "uncovered_fr_ids": ["FR-018"]
|
|
240
|
+
},
|
|
241
|
+
"layer1_5_evidence": { // 复用 Layer 1.5 证据状态
|
|
242
|
+
"status": "COMPLIANT", // COMPLIANT | PARTIAL | EVIDENCE_MISSING
|
|
243
|
+
"detail": "..."
|
|
244
|
+
},
|
|
245
|
+
"regression_check": {
|
|
246
|
+
"previously_passing_commands": ["npx vitest run"],
|
|
247
|
+
"now_failing": [], "regression_detected": false
|
|
248
|
+
},
|
|
249
|
+
"delta_inputs": { // 供编排器计算五维 delta
|
|
250
|
+
"layer2_pass_count": 3, "p1_fr_coverage_pct": 83.3,
|
|
251
|
+
"layer1_5_status_score": 2, // COMPLIANT=2 / PARTIAL=1 / EVIDENCE_MISSING=0
|
|
252
|
+
"regression_count": 0, "net_loc_delta": 42
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
**重要约束(职责分离,防 reward-hacking,FR-010)**:
|
|
258
|
+
|
|
259
|
+
- `layer2_commands[].exit_code` **MUST 为命令真实执行的退出码**,**MUST NOT** 基于 implement 子代理的任何声明填写。
|
|
260
|
+
- 缺退出码或无法验证真实执行的条目,`status` **MUST** 填 `UNKNOWN`(goal_loop core `parseReport` 会把缺 `exit_code` 的非 SKIPPED 条目强制降级为 infra-failure)。
|
|
261
|
+
- **不改动** Layer 1 / 1.5 / 2 现有验证逻辑,本模式仅在既有验证数据之上**额外**结构化落盘一份 JSON。
|
|
262
|
+
|
|
263
|
+
**full 轮 Layer 2 命令集(必须按此顺序,每条各加 `timeout {max_verify_seconds}s` 前缀)**:
|
|
264
|
+
|
|
265
|
+
1. `npm run build` → kind: `"build"` → dist 就位
|
|
266
|
+
2. `npx vitest run` → kind: `"test"` → 含 e2e(dist 已就位,无 build 依赖 SKIPPED)
|
|
267
|
+
3. `npm run lint`(如适用)→ kind: `"lint"`
|
|
268
|
+
4. `npm run repo:check` → kind: `"check"`
|
|
269
|
+
|
|
270
|
+
> **F204 — 每条命令 MUST 标注 `kind`**:full 轮每条 `layer2_commands[]` 必须带 `kind` 字段(build/test/lint/check)。
|
|
271
|
+
> 若 `config.goal_loop.full_required_kinds` 声明了必需类别而报告缺对应 kind(漏标或漏跑),goal_loop core
|
|
272
|
+
> `decideStop` 会返回 `INCOMPLETE_FULL_VERIFY`、止步 GATE_VERIFY,**不** REACHED_GOAL。**漏标 kind = 不贡献 = 视为缺失**。
|
|
273
|
+
|
|
274
|
+
> **timeout 口径(F203 修订 #6)**:`max_verify_seconds` 为 **per-command** 墙钟上限(非整轮共享)。full 补 `npx vitest run` 后最坏耗时 ≈ Σ(build, vitest, lint, repo:check) 各自上限,full 轮总时长较 smoke 显著上升,需确认单实例锁 TTL(已移除超龄接管,存活 PID 永不被抢)与 NO_PROGRESS no-progress 预算可接受。
|
|
275
|
+
|
|
276
|
+
**smoke 轮 Layer 2 命令集 + SKIPPED 约定(F203 修订 #1)**:
|
|
277
|
+
|
|
278
|
+
- `tsc --noEmit`(必跑,记真实 exit_code)
|
|
279
|
+
- `npx vitest run --project unit --project integration --project golden-master --project self-hosting`(**四个非 e2e project 都要跑,不能只 unit+integration**;用 vitest project selector 真正排除 e2e 实跑其余,不得只口头标 SKIPPED 而不实跑)
|
|
280
|
+
- 检测 `dist/` 缺失时,对 build 依赖 e2e(`tests/e2e/**`,即 vitest `e2e` project)记 `status:"SKIPPED", skipped_reason:"dist_not_built"`
|
|
281
|
+
- 其余命令记真实 exit_code
|
|
282
|
+
|
|
283
|
+
**full 轮出现 `dist_not_built` SKIPPED → infra-failure(F203 修订 #2)**:
|
|
284
|
+
|
|
285
|
+
- full 轮已先 build,dist 必就位,**不应**出现 `skipped_reason="dist_not_built"` 命令;一旦出现即 verify 契约违反
|
|
286
|
+
- goal_loop core `parseReport` 检测到 full 轮含 `dist_not_built` SKIPPED → 标 `degraded:"infra-failure", reason:"full verify 不应出现 dist_not_built SKIPPED(full 必须先 build)"`
|
|
287
|
+
- 该 report 被 core `decideStop` 识别为 infra-failure,**不视为普通 continue**,绝不静默当达标
|
|
288
|
+
- smoke 轮的 `dist_not_built` SKIPPED 是预期行为(smoke 不 build),正常放行
|
|
289
|
+
- **关于命令集完整性(F203 WARNING #3a,有意权衡)**:core 不做 smoke 命令名校验——smoke readiness 仅触发非权威 escalate,full 轮严格门禁(先 build + 跑全量 vitest)才是权威,退化 smoke 至多多一次 full verify,绝不假 REACHED_GOAL。命令集完整性由本 verify.md 契约(mandate smoke 必跑上述命令集)负责,不让 core 耦合命令名。
|
|
290
|
+
- **关于 full 命令集完整性(F203 CRITICAL-8 → F204 已实现)**:F204 在 `decideStop` 的 full 路径引入纯函数 `validateFullCommandKinds`,校验 PASS 命令的 `kind` 集合是否覆盖 `config.goal_loop.full_required_kinds`(默认 `[]`,项目级 opt-in)。缺必需类别 → `exit_reason: 'INCOMPLETE_FULL_VERIFY'`,止步于 GATE_VERIFY,**不** REACHED_GOAL。core 校验的是 **kind 枚举**(语言无关、由 config 驱动),**不**硬编码 `vitest` / `build` 命令名——避免 F203 警告的同类耦合。
|
|
291
|
+
|
|
292
|
+
**保护边界(诚实说明)**:`kind` 由 verify 子代理自报,与 `exit_code` 同源(同层级),**不是**硬结构不变量。
|
|
293
|
+
- **能挡**:遗漏 / 截断(LLM 漏跑 lint、输出被截断少了命令)——这是把散文 mandate 升级为机器校验真正新增的保护。
|
|
294
|
+
- **不能挡**:对抗性自我误标(把 `echo ok` 标 `kind:'test'`)。此残留与现有 `dist_not_built` 校验同层级,由人工 GATE_VERIFY + Codex 对抗审查兜底。
|
|
295
|
+
- 显著缩小 CRITICAL-8 敞口(挡住遗漏/截断主路径),不声称完全消除。
|
|
296
|
+
|
|
297
|
+
**降级(由 goal_loop core 处理,非本子代理职责)**:若本轮无法产出合法 JSON(输出截断 / schema 非法 / 命令集为空),goal_loop core `parseReport` 将该轮标 `infra-failure`,编排器据此计入无进展/早停判定,绝不静默当达标。
|
|
298
|
+
|
|
192
299
|
## 约束
|
|
193
300
|
|
|
194
301
|
- **不修改源代码**:验证是只读操作(Bash 命令仅为构建/测试,不含写操作)
|
|
@@ -306,6 +306,14 @@ modes:
|
|
|
306
306
|
is_critical: false
|
|
307
307
|
|
|
308
308
|
# Phase 6: 代码实现
|
|
309
|
+
# agent_mode: single 为 base 默认 —— 单次委派 implement 子代理(Feature 201 默认关闭 goal_loop)。
|
|
310
|
+
# 可选 goal_loop(Feature 201):把单次 implement→verify 包装成 metric 驱动的自主迭代闭环。
|
|
311
|
+
# - 默认关闭:base 此处保持 single;goal_loop 不在 base 启用(FR-015)。
|
|
312
|
+
# - 激活方式:仅经 .specify/orchestration-overrides.yaml 的 modes.feature 整段替换,
|
|
313
|
+
# 把本 implement phase 的 agent_mode 改为 goal_loop(feature 是唯一运行时消费 YAML phases 的 mode)。
|
|
314
|
+
# - golden 模板:见 plugins/spec-driver/templates/goal-loop-override-template.yaml
|
|
315
|
+
# (含完整 feature phase 列表,仅本 phase 改 goal_loop;整段替换语义不继承 base)。
|
|
316
|
+
# - 循环逻辑在 feature SKILL.md 的「goal_loop 闭环编排」小节(声明性标签 + 散文编排)。
|
|
309
317
|
- id: "6"
|
|
310
318
|
name: implement
|
|
311
319
|
display_name: 代码实现
|
|
@@ -368,21 +376,21 @@ modes:
|
|
|
368
376
|
is_critical: true
|
|
369
377
|
|
|
370
378
|
# ─────────────────────────────────────────────────────────────
|
|
371
|
-
# Story 模式:故事式快速迭代(
|
|
379
|
+
# Story 模式:故事式快速迭代(5 阶段)
|
|
372
380
|
# ─────────────────────────────────────────────────────────────
|
|
373
381
|
story:
|
|
374
|
-
name: "Story 模式(
|
|
382
|
+
name: "Story 模式(5 阶段:宪法-规范-规划-实现-验证)"
|
|
375
383
|
description: "基于 product-research 快速迭代小功能"
|
|
376
384
|
phases:
|
|
377
385
|
- id: "1"
|
|
378
|
-
name:
|
|
379
|
-
display_name:
|
|
380
|
-
agent:
|
|
386
|
+
name: constitution
|
|
387
|
+
display_name: Constitution 检查
|
|
388
|
+
agent: null
|
|
381
389
|
agent_mode: single
|
|
382
390
|
gates_before: null
|
|
383
391
|
gates_after: null
|
|
384
392
|
conditional: null
|
|
385
|
-
skip_if_exists:
|
|
393
|
+
skip_if_exists: null
|
|
386
394
|
is_critical: false
|
|
387
395
|
|
|
388
396
|
- id: "2"
|
|
@@ -399,29 +407,18 @@ modes:
|
|
|
399
407
|
|
|
400
408
|
- id: "3"
|
|
401
409
|
name: plan
|
|
402
|
-
display_name:
|
|
410
|
+
display_name: 技术规划+任务分解
|
|
403
411
|
agent: plan
|
|
404
412
|
agent_mode: single
|
|
405
413
|
gates_before:
|
|
406
414
|
- GATE_DESIGN
|
|
407
|
-
gates_after: null
|
|
408
|
-
conditional: null
|
|
409
|
-
skip_if_exists: "plan.md"
|
|
410
|
-
is_critical: true
|
|
411
|
-
|
|
412
|
-
- id: "4"
|
|
413
|
-
name: tasks
|
|
414
|
-
display_name: 任务分解
|
|
415
|
-
agent: tasks
|
|
416
|
-
agent_mode: single
|
|
417
|
-
gates_before: null
|
|
418
415
|
gates_after:
|
|
419
416
|
- GATE_TASKS
|
|
420
417
|
conditional: null
|
|
421
|
-
skip_if_exists: "
|
|
418
|
+
skip_if_exists: "plan.md"
|
|
422
419
|
is_critical: true
|
|
423
420
|
|
|
424
|
-
- id: "
|
|
421
|
+
- id: "4"
|
|
425
422
|
name: implement
|
|
426
423
|
display_name: 代码实现
|
|
427
424
|
agent: implement
|
|
@@ -432,9 +429,9 @@ modes:
|
|
|
432
429
|
skip_if_exists: null
|
|
433
430
|
is_critical: true
|
|
434
431
|
|
|
435
|
-
- id: "
|
|
432
|
+
- id: "5"
|
|
436
433
|
name: verify
|
|
437
|
-
display_name:
|
|
434
|
+
display_name: 验证闭环
|
|
438
435
|
agent: verify
|
|
439
436
|
agent_mode: single
|
|
440
437
|
gates_before: null
|
|
@@ -523,16 +520,27 @@ modes:
|
|
|
523
520
|
is_critical: true
|
|
524
521
|
|
|
525
522
|
# ─────────────────────────────────────────────────────────────
|
|
526
|
-
# Fix 模式:修复流程(
|
|
523
|
+
# Fix 模式:修复流程(4 阶段)
|
|
527
524
|
# ─────────────────────────────────────────────────────────────
|
|
528
525
|
fix:
|
|
529
|
-
name: "Fix 模式(
|
|
526
|
+
name: "Fix 模式(4 阶段:诊断-规划-修复-验证)"
|
|
530
527
|
description: "快速处理 bug 和小型修复"
|
|
531
528
|
phases:
|
|
532
529
|
- id: "1"
|
|
533
|
-
name:
|
|
534
|
-
display_name:
|
|
535
|
-
agent:
|
|
530
|
+
name: diagnose
|
|
531
|
+
display_name: 问题诊断
|
|
532
|
+
agent: null
|
|
533
|
+
agent_mode: single
|
|
534
|
+
gates_before: null
|
|
535
|
+
gates_after: null
|
|
536
|
+
conditional: null
|
|
537
|
+
skip_if_exists: null
|
|
538
|
+
is_critical: true
|
|
539
|
+
|
|
540
|
+
- id: "2"
|
|
541
|
+
name: plan
|
|
542
|
+
display_name: 修复规划
|
|
543
|
+
agent: plan
|
|
536
544
|
agent_mode: single
|
|
537
545
|
gates_before: null
|
|
538
546
|
gates_after:
|
|
@@ -541,9 +549,9 @@ modes:
|
|
|
541
549
|
skip_if_exists: null
|
|
542
550
|
is_critical: true
|
|
543
551
|
|
|
544
|
-
- id: "
|
|
552
|
+
- id: "3"
|
|
545
553
|
name: implement
|
|
546
|
-
display_name:
|
|
554
|
+
display_name: 代码修复
|
|
547
555
|
agent: implement
|
|
548
556
|
agent_mode: single
|
|
549
557
|
gates_before: null
|
|
@@ -552,9 +560,9 @@ modes:
|
|
|
552
560
|
skip_if_exists: null
|
|
553
561
|
is_critical: true
|
|
554
562
|
|
|
555
|
-
- id: "
|
|
563
|
+
- id: "4"
|
|
556
564
|
name: verify
|
|
557
|
-
display_name:
|
|
565
|
+
display_name: 验证闭环
|
|
558
566
|
agent: verify
|
|
559
567
|
agent_mode: single
|
|
560
568
|
gates_before: null
|
|
@@ -13,6 +13,31 @@ description: >
|
|
|
13
13
|
|
|
14
14
|
canonical_schema: "plugins/spec-driver/contracts/orchestration-schema.mjs"
|
|
15
15
|
|
|
16
|
+
runtime_consumption_caveat:
|
|
17
|
+
summary: >
|
|
18
|
+
重要:当前只有 feature 模式在运行时消费 orchestration 的 phase 序列(经
|
|
19
|
+
orchestrator-cli get-phases 驱动动态编排)。fix / story / implement / refactor / resume
|
|
20
|
+
等模式的 phase 序列由各自 SKILL.md 正文**固定编排**,运行时不读取 yaml 的 phases。
|
|
21
|
+
user_impact: >
|
|
22
|
+
因此对这些非 feature 模式的 modes.<mode> 做 phase 序列覆盖(整段替换 phases),
|
|
23
|
+
**当前不会改变该模式实际跑的阶段** —— 例如改写 modes.fix 的 phases,fix 实际仍按
|
|
24
|
+
spec-driver-fix SKILL.md 的 4 阶段(诊断-规划-修复-验证)执行,yaml 仅作文档性描述。
|
|
25
|
+
scope: >
|
|
26
|
+
orchestration.yaml 中 fix / story / implement 等段的 phase 序列是对应 SKILL.md 真实流程的
|
|
27
|
+
**文档性摘要**(phase 计数与主干顺序、GATE 卡点对齐),而非逐字等价:yaml 一阶段一 agent 的
|
|
28
|
+
结构**无法表达** SKILL 正文里的复合委派(如 fix「修复规划」阶段实际依次调 plan + tasks 两个
|
|
29
|
+
子代理、story「技术规划+任务分解」同理)与条件委派(如 story 的 clarify 在 skip_if_exists 命中
|
|
30
|
+
时跳过)。读 yaml 了解"跑哪几个阶段、什么顺序、卡哪些 GATE"即可;阶段内部的子代理编排细节
|
|
31
|
+
以 SKILL.md 为准。phase 序列单源化(让所有模式运行时统一消费 yaml)视成本拆后续 milestone。
|
|
32
|
+
affected_modes:
|
|
33
|
+
- fix
|
|
34
|
+
- story
|
|
35
|
+
- implement
|
|
36
|
+
- refactor
|
|
37
|
+
- resume
|
|
38
|
+
runtime_consuming_modes:
|
|
39
|
+
- feature
|
|
40
|
+
|
|
16
41
|
vs_spec_driver_config:
|
|
17
42
|
description: >
|
|
18
43
|
orchestration-overrides.yaml 与 spec-driver.config.yaml 职责分工说明
|
|
@@ -31,6 +56,8 @@ supported_overrides:
|
|
|
31
56
|
notes: >
|
|
32
57
|
overrides 中出现同名 mode 时,整段 phases 数组替换 base 对应 mode;
|
|
33
58
|
base 的其余 phase 字段不保留。无法局部 patch 单个 phase,需完整声明 phases 数组。
|
|
59
|
+
⚠️ 见 runtime_consumption_caveat:仅 feature 模式运行时消费 phase 序列;对
|
|
60
|
+
fix/story/implement/refactor/resume 的 phase 序列覆盖当前不改变其实际执行阶段。
|
|
34
61
|
reserved_modes:
|
|
35
62
|
- feature
|
|
36
63
|
- story
|