@libar-dev/architect 1.0.0-pre.3 → 1.0.0-pre.5
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/CHANGELOG.md +1 -1
- package/README.md +5 -5
- package/dist/api/arch-queries.d.ts.map +1 -1
- package/dist/api/context-assembler.d.ts.map +1 -1
- package/dist/api/handoff-generator.d.ts.map +1 -1
- package/dist/api/index.d.ts +8 -8
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +7 -7
- package/dist/api/index.js.map +1 -1
- package/dist/api/{process-state.d.ts → pattern-graph-api.d.ts} +15 -15
- package/dist/api/pattern-graph-api.d.ts.map +1 -0
- package/dist/api/{process-state.js → pattern-graph-api.js} +13 -13
- package/dist/api/pattern-graph-api.js.map +1 -0
- package/dist/api/rules-query.d.ts +6 -6
- package/dist/api/rules-query.d.ts.map +1 -1
- package/dist/api/rules-query.js +4 -4
- package/dist/api/rules-query.js.map +1 -1
- package/dist/api/scope-validator.d.ts.map +1 -1
- package/dist/api/types.d.ts +8 -8
- package/dist/api/types.d.ts.map +1 -1
- package/dist/api/types.js +5 -5
- package/dist/cli/cli-schema.d.ts +3 -4
- package/dist/cli/cli-schema.d.ts.map +1 -1
- package/dist/cli/cli-schema.js +13 -14
- package/dist/cli/cli-schema.js.map +1 -1
- package/dist/cli/output-pipeline.d.ts.map +1 -1
- package/dist/cli/pattern-graph-cli.d.ts.map +1 -0
- package/dist/cli/validate-patterns.d.ts.map +1 -1
- package/dist/generators/built-in/cli-recipe-generator.d.ts +3 -4
- package/dist/generators/built-in/cli-recipe-generator.d.ts.map +1 -1
- package/dist/generators/built-in/cli-recipe-generator.js +6 -7
- package/dist/generators/built-in/cli-recipe-generator.js.map +1 -1
- package/dist/generators/built-in/cli-reference-generator.d.ts +18 -0
- package/dist/generators/built-in/cli-reference-generator.d.ts.map +1 -0
- package/dist/generators/built-in/{process-api-reference-generator.js → cli-reference-generator.js} +13 -13
- package/dist/generators/built-in/cli-reference-generator.js.map +1 -0
- package/dist/generators/built-in/codec-generators.js +12 -12
- package/dist/generators/built-in/codec-generators.js.map +1 -1
- package/dist/generators/built-in/design-review-generator.d.ts.map +1 -1
- package/dist/generators/built-in/reference-generators.d.ts.map +1 -1
- package/dist/generators/codec-based.d.ts.map +1 -1
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/orchestrator.d.ts.map +1 -1
- package/dist/generators/pipeline/build-pipeline.d.ts +17 -14
- package/dist/generators/pipeline/build-pipeline.d.ts.map +1 -1
- package/dist/generators/pipeline/build-pipeline.js +27 -21
- package/dist/generators/pipeline/build-pipeline.js.map +1 -1
- package/dist/generators/pipeline/index.d.ts.map +1 -1
- package/dist/generators/types.d.ts.map +1 -1
- package/dist/mcp/pipeline-session.d.ts.map +1 -1
- package/dist/renderable/codecs/index-codec.d.ts.map +1 -1
- package/dist/renderable/codecs/index-codec.js +54 -28
- package/dist/renderable/codecs/index-codec.js.map +1 -1
- package/docs/ANNOTATION-GUIDE.md +5 -5
- package/docs/ARCHITECTURE.md +79 -79
- package/docs/{PROCESS-API.md → CLI.md} +6 -6
- package/docs/CONFIGURATION.md +2 -2
- package/docs/DOCS-GAP-ANALYSIS.md +65 -65
- package/docs/INDEX.md +34 -34
- package/docs/MCP-SETUP.md +3 -3
- package/docs/METHODOLOGY.md +1 -1
- package/docs/SESSION-GUIDES.md +3 -3
- package/docs/VALIDATION.md +4 -4
- package/docs-live/ARCHITECTURE.md +48 -42
- package/docs-live/BUSINESS-RULES.md +3 -3
- package/docs-live/CHANGELOG-GENERATED.md +109 -103
- package/docs-live/INDEX.md +21 -21
- package/docs-live/PRODUCT-AREAS.md +7 -7
- package/docs-live/TAXONOMY.md +3 -5
- package/docs-live/_claude-md/annotation/annotation-overview.md +1 -1
- package/docs-live/_claude-md/annotation/annotation-reference.md +5 -5
- package/docs-live/_claude-md/architecture/architecture-types.md +4 -4
- package/docs-live/_claude-md/architecture/reference-sample.md +2 -2
- package/docs-live/_claude-md/data-api/data-api-overview.md +2 -2
- package/docs-live/_claude-md/generation/generation-overview.md +15 -15
- package/docs-live/_claude-md/process/process-overview.md +1 -1
- package/docs-live/_claude-md/validation/validation-overview.md +1 -1
- package/docs-live/business-rules/annotation.md +1 -2
- package/docs-live/business-rules/configuration.md +1 -1
- package/docs-live/business-rules/data-api.md +149 -136
- package/docs-live/business-rules/generation.md +172 -20
- package/docs-live/decisions/adr-003-source-first-pattern-architecture.md +1 -1
- package/docs-live/decisions/adr-005-codec-based-markdown-rendering.md +5 -5
- package/docs-live/decisions/adr-006-single-read-model-architecture.md +24 -24
- package/docs-live/product-areas/ANNOTATION.md +19 -9
- package/docs-live/product-areas/CONFIGURATION.md +39 -19
- package/docs-live/product-areas/DATA-API.md +155 -151
- package/docs-live/product-areas/GENERATION.md +159 -144
- package/docs-live/product-areas/PROCESS.md +4 -4
- package/docs-live/product-areas/VALIDATION.md +35 -20
- package/docs-live/reference/ANNOTATION-REFERENCE.md +5 -5
- package/docs-live/reference/ARCHITECTURE-CODECS.md +11 -11
- package/docs-live/reference/ARCHITECTURE-TYPES.md +28 -25
- package/docs-live/reference/{PROCESS-API-RECIPES.md → CLI-RECIPES.md} +11 -11
- package/docs-live/reference/{PROCESS-API-REFERENCE.md → CLI-REFERENCE.md} +2 -2
- package/docs-live/reference/REFERENCE-SAMPLE.md +56 -56
- package/docs-live/reference/SESSION-WORKFLOW-GUIDE.md +3 -3
- package/docs-live/taxonomy/format-types.md +2 -2
- package/docs-live/taxonomy/metadata-tags.md +1 -23
- package/package.json +7 -7
- package/dist/api/arch-queries.d.ts +0 -95
- package/dist/api/arch-queries.js +0 -310
- package/dist/api/arch-queries.js.map +0 -1
- package/dist/api/context-assembler.d.ts +0 -124
- package/dist/api/context-assembler.js +0 -472
- package/dist/api/context-assembler.js.map +0 -1
- package/dist/api/context-formatter.d.ts +0 -26
- package/dist/api/context-formatter.js +0 -183
- package/dist/api/context-formatter.js.map +0 -1
- package/dist/api/coverage-analyzer.d.ts +0 -38
- package/dist/api/coverage-analyzer.d.ts.map +0 -1
- package/dist/api/coverage-analyzer.js +0 -117
- package/dist/api/coverage-analyzer.js.map +0 -1
- package/dist/api/fuzzy-match.d.ts +0 -75
- package/dist/api/fuzzy-match.d.ts.map +0 -1
- package/dist/api/fuzzy-match.js +0 -150
- package/dist/api/fuzzy-match.js.map +0 -1
- package/dist/api/handoff-generator.d.ts +0 -45
- package/dist/api/handoff-generator.js +0 -139
- package/dist/api/handoff-generator.js.map +0 -1
- package/dist/api/pattern-helpers.d.ts +0 -51
- package/dist/api/pattern-helpers.d.ts.map +0 -1
- package/dist/api/pattern-helpers.js +0 -84
- package/dist/api/pattern-helpers.js.map +0 -1
- package/dist/api/process-state.d.ts.map +0 -1
- package/dist/api/process-state.js.map +0 -1
- package/dist/api/scope-validator.d.ts +0 -56
- package/dist/api/scope-validator.js +0 -293
- package/dist/api/scope-validator.js.map +0 -1
- package/dist/api/stub-resolver.d.ts +0 -117
- package/dist/api/stub-resolver.d.ts.map +0 -1
- package/dist/api/stub-resolver.js +0 -154
- package/dist/api/stub-resolver.js.map +0 -1
- package/dist/api/summarize.d.ts +0 -75
- package/dist/api/summarize.d.ts.map +0 -1
- package/dist/api/summarize.js +0 -97
- package/dist/api/summarize.js.map +0 -1
- package/dist/cache/file-cache.d.ts +0 -72
- package/dist/cache/file-cache.d.ts.map +0 -1
- package/dist/cache/file-cache.js +0 -80
- package/dist/cache/file-cache.js.map +0 -1
- package/dist/cache/index.d.ts +0 -5
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -5
- package/dist/cache/index.js.map +0 -1
- package/dist/cli/dataset-cache.d.ts +0 -66
- package/dist/cli/dataset-cache.js +0 -179
- package/dist/cli/dataset-cache.js.map +0 -1
- package/dist/cli/error-handler.d.ts +0 -84
- package/dist/cli/error-handler.d.ts.map +0 -1
- package/dist/cli/error-handler.js +0 -197
- package/dist/cli/error-handler.js.map +0 -1
- package/dist/cli/generate-docs.d.ts +0 -30
- package/dist/cli/generate-docs.js +0 -370
- package/dist/cli/generate-docs.js.map +0 -1
- package/dist/cli/lint-patterns.d.ts +0 -57
- package/dist/cli/lint-patterns.d.ts.map +0 -1
- package/dist/cli/lint-patterns.js +0 -257
- package/dist/cli/lint-patterns.js.map +0 -1
- package/dist/cli/lint-process.d.ts +0 -54
- package/dist/cli/lint-process.d.ts.map +0 -1
- package/dist/cli/lint-process.js +0 -319
- package/dist/cli/lint-process.js.map +0 -1
- package/dist/cli/lint-steps.d.ts +0 -32
- package/dist/cli/lint-steps.d.ts.map +0 -1
- package/dist/cli/lint-steps.js +0 -172
- package/dist/cli/lint-steps.js.map +0 -1
- package/dist/cli/mcp-server.d.ts +0 -22
- package/dist/cli/mcp-server.js +0 -57
- package/dist/cli/mcp-server.js.map +0 -1
- package/dist/cli/output-pipeline.d.ts +0 -130
- package/dist/cli/output-pipeline.js +0 -234
- package/dist/cli/output-pipeline.js.map +0 -1
- package/dist/cli/process-api.d.ts +0 -37
- package/dist/cli/process-api.d.ts.map +0 -1
- package/dist/cli/process-api.js +0 -1550
- package/dist/cli/process-api.js.map +0 -1
- package/dist/cli/repl.d.ts +0 -38
- package/dist/cli/repl.js +0 -239
- package/dist/cli/repl.js.map +0 -1
- package/dist/cli/validate-patterns.d.ts +0 -115
- package/dist/cli/validate-patterns.js +0 -707
- package/dist/cli/validate-patterns.js.map +0 -1
- package/dist/cli/version.d.ts +0 -35
- package/dist/cli/version.d.ts.map +0 -1
- package/dist/cli/version.js +0 -64
- package/dist/cli/version.js.map +0 -1
- package/dist/config/config-loader.d.ts +0 -167
- package/dist/config/config-loader.d.ts.map +0 -1
- package/dist/config/config-loader.js +0 -294
- package/dist/config/config-loader.js.map +0 -1
- package/dist/config/defaults.d.ts +0 -92
- package/dist/config/defaults.d.ts.map +0 -1
- package/dist/config/defaults.js +0 -103
- package/dist/config/defaults.js.map +0 -1
- package/dist/config/define-config.d.ts +0 -37
- package/dist/config/define-config.d.ts.map +0 -1
- package/dist/config/define-config.js +0 -38
- package/dist/config/define-config.js.map +0 -1
- package/dist/config/factory.d.ts +0 -79
- package/dist/config/factory.d.ts.map +0 -1
- package/dist/config/factory.js +0 -116
- package/dist/config/factory.js.map +0 -1
- package/dist/config/index.d.ts +0 -45
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -48
- package/dist/config/index.js.map +0 -1
- package/dist/config/merge-sources.d.ts +0 -47
- package/dist/config/merge-sources.d.ts.map +0 -1
- package/dist/config/merge-sources.js +0 -61
- package/dist/config/merge-sources.js.map +0 -1
- package/dist/config/presets.d.ts +0 -115
- package/dist/config/presets.d.ts.map +0 -1
- package/dist/config/presets.js +0 -119
- package/dist/config/presets.js.map +0 -1
- package/dist/config/project-config-schema.d.ts +0 -192
- package/dist/config/project-config-schema.d.ts.map +0 -1
- package/dist/config/project-config-schema.js +0 -231
- package/dist/config/project-config-schema.js.map +0 -1
- package/dist/config/project-config.d.ts +0 -229
- package/dist/config/project-config.d.ts.map +0 -1
- package/dist/config/project-config.js +0 -37
- package/dist/config/project-config.js.map +0 -1
- package/dist/config/regex-builders.d.ts +0 -49
- package/dist/config/regex-builders.d.ts.map +0 -1
- package/dist/config/regex-builders.js +0 -85
- package/dist/config/regex-builders.js.map +0 -1
- package/dist/config/resolve-config.d.ts +0 -65
- package/dist/config/resolve-config.d.ts.map +0 -1
- package/dist/config/resolve-config.js +0 -150
- package/dist/config/resolve-config.js.map +0 -1
- package/dist/config/types.d.ts +0 -81
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js +0 -22
- package/dist/config/types.js.map +0 -1
- package/dist/config/workflow-loader.d.ts +0 -90
- package/dist/config/workflow-loader.d.ts.map +0 -1
- package/dist/config/workflow-loader.js +0 -167
- package/dist/config/workflow-loader.js.map +0 -1
- package/dist/extractor/doc-extractor.d.ts +0 -233
- package/dist/extractor/doc-extractor.d.ts.map +0 -1
- package/dist/extractor/doc-extractor.js +0 -481
- package/dist/extractor/doc-extractor.js.map +0 -1
- package/dist/extractor/dual-source-extractor.d.ts +0 -161
- package/dist/extractor/dual-source-extractor.d.ts.map +0 -1
- package/dist/extractor/dual-source-extractor.js +0 -407
- package/dist/extractor/dual-source-extractor.js.map +0 -1
- package/dist/extractor/gherkin-extractor.d.ts +0 -170
- package/dist/extractor/gherkin-extractor.d.ts.map +0 -1
- package/dist/extractor/gherkin-extractor.js +0 -543
- package/dist/extractor/gherkin-extractor.js.map +0 -1
- package/dist/extractor/index.d.ts +0 -7
- package/dist/extractor/index.d.ts.map +0 -1
- package/dist/extractor/index.js +0 -11
- package/dist/extractor/index.js.map +0 -1
- package/dist/extractor/layer-inference.d.ts +0 -66
- package/dist/extractor/layer-inference.d.ts.map +0 -1
- package/dist/extractor/layer-inference.js +0 -93
- package/dist/extractor/layer-inference.js.map +0 -1
- package/dist/extractor/shape-extractor.d.ts +0 -79
- package/dist/extractor/shape-extractor.d.ts.map +0 -1
- package/dist/extractor/shape-extractor.js +0 -966
- package/dist/extractor/shape-extractor.js.map +0 -1
- package/dist/generators/built-in/codec-generators.d.ts +0 -29
- package/dist/generators/built-in/decision-doc-generator.d.ts +0 -204
- package/dist/generators/built-in/decision-doc-generator.js +0 -654
- package/dist/generators/built-in/decision-doc-generator.js.map +0 -1
- package/dist/generators/built-in/design-review-generator.d.ts +0 -26
- package/dist/generators/built-in/design-review-generator.js +0 -94
- package/dist/generators/built-in/design-review-generator.js.map +0 -1
- package/dist/generators/built-in/index.d.ts +0 -22
- package/dist/generators/built-in/index.js +0 -23
- package/dist/generators/built-in/index.js.map +0 -1
- package/dist/generators/built-in/process-api-reference-generator.d.ts +0 -18
- package/dist/generators/built-in/process-api-reference-generator.d.ts.map +0 -1
- package/dist/generators/built-in/process-api-reference-generator.js.map +0 -1
- package/dist/generators/built-in/reference-generators.d.ts +0 -51
- package/dist/generators/built-in/reference-generators.js +0 -320
- package/dist/generators/built-in/reference-generators.js.map +0 -1
- package/dist/generators/codec-based.d.ts +0 -63
- package/dist/generators/codec-based.js +0 -88
- package/dist/generators/codec-based.js.map +0 -1
- package/dist/generators/content-deduplicator.d.ts +0 -114
- package/dist/generators/content-deduplicator.d.ts.map +0 -1
- package/dist/generators/content-deduplicator.js +0 -356
- package/dist/generators/content-deduplicator.js.map +0 -1
- package/dist/generators/index.d.ts +0 -50
- package/dist/generators/index.js +0 -54
- package/dist/generators/index.js.map +0 -1
- package/dist/generators/orchestrator.d.ts +0 -265
- package/dist/generators/orchestrator.js +0 -570
- package/dist/generators/orchestrator.js.map +0 -1
- package/dist/generators/pipeline/context-inference.d.ts +0 -55
- package/dist/generators/pipeline/context-inference.d.ts.map +0 -1
- package/dist/generators/pipeline/context-inference.js +0 -76
- package/dist/generators/pipeline/context-inference.js.map +0 -1
- package/dist/generators/pipeline/index.d.ts +0 -27
- package/dist/generators/pipeline/index.js +0 -34
- package/dist/generators/pipeline/index.js.map +0 -1
- package/dist/generators/pipeline/merge-patterns.d.ts +0 -33
- package/dist/generators/pipeline/merge-patterns.d.ts.map +0 -1
- package/dist/generators/pipeline/merge-patterns.js +0 -50
- package/dist/generators/pipeline/merge-patterns.js.map +0 -1
- package/dist/generators/pipeline/relationship-resolver.d.ts +0 -47
- package/dist/generators/pipeline/relationship-resolver.d.ts.map +0 -1
- package/dist/generators/pipeline/relationship-resolver.js +0 -132
- package/dist/generators/pipeline/relationship-resolver.js.map +0 -1
- package/dist/generators/pipeline/sequence-utils.d.ts +0 -49
- package/dist/generators/pipeline/sequence-utils.d.ts.map +0 -1
- package/dist/generators/pipeline/sequence-utils.js +0 -235
- package/dist/generators/pipeline/sequence-utils.js.map +0 -1
- package/dist/generators/pipeline/transform-dataset.d.ts +0 -82
- package/dist/generators/pipeline/transform-dataset.d.ts.map +0 -1
- package/dist/generators/pipeline/transform-dataset.js +0 -355
- package/dist/generators/pipeline/transform-dataset.js.map +0 -1
- package/dist/generators/pipeline/transform-types.d.ts +0 -96
- package/dist/generators/pipeline/transform-types.d.ts.map +0 -1
- package/dist/generators/pipeline/transform-types.js +0 -18
- package/dist/generators/pipeline/transform-types.js.map +0 -1
- package/dist/generators/registry.d.ts +0 -64
- package/dist/generators/registry.js +0 -77
- package/dist/generators/registry.js.map +0 -1
- package/dist/generators/source-mapper.d.ts +0 -143
- package/dist/generators/source-mapper.d.ts.map +0 -1
- package/dist/generators/source-mapper.js +0 -602
- package/dist/generators/source-mapper.js.map +0 -1
- package/dist/generators/source-mapping-validator.d.ts +0 -118
- package/dist/generators/source-mapping-validator.d.ts.map +0 -1
- package/dist/generators/source-mapping-validator.js +0 -334
- package/dist/generators/source-mapping-validator.js.map +0 -1
- package/dist/generators/types.d.ts +0 -104
- package/dist/generators/types.js +0 -5
- package/dist/generators/types.js.map +0 -1
- package/dist/generators/warning-collector.d.ts +0 -144
- package/dist/generators/warning-collector.d.ts.map +0 -1
- package/dist/generators/warning-collector.js +0 -166
- package/dist/generators/warning-collector.js.map +0 -1
- package/dist/git/branch-diff.d.ts +0 -44
- package/dist/git/branch-diff.d.ts.map +0 -1
- package/dist/git/branch-diff.js +0 -57
- package/dist/git/branch-diff.js.map +0 -1
- package/dist/git/helpers.d.ts +0 -46
- package/dist/git/helpers.d.ts.map +0 -1
- package/dist/git/helpers.js +0 -67
- package/dist/git/helpers.js.map +0 -1
- package/dist/git/index.d.ts +0 -18
- package/dist/git/index.d.ts.map +0 -1
- package/dist/git/index.js +0 -18
- package/dist/git/index.js.map +0 -1
- package/dist/git/name-status.d.ts +0 -32
- package/dist/git/name-status.d.ts.map +0 -1
- package/dist/git/name-status.js +0 -66
- package/dist/git/name-status.js.map +0 -1
- package/dist/index.d.ts +0 -107
- package/dist/index.js +0 -122
- package/dist/index.js.map +0 -1
- package/dist/lint/engine.d.ts +0 -113
- package/dist/lint/engine.d.ts.map +0 -1
- package/dist/lint/engine.js +0 -228
- package/dist/lint/engine.js.map +0 -1
- package/dist/lint/index.d.ts +0 -26
- package/dist/lint/index.d.ts.map +0 -1
- package/dist/lint/index.js +0 -24
- package/dist/lint/index.js.map +0 -1
- package/dist/lint/process-guard/decider.d.ts +0 -166
- package/dist/lint/process-guard/decider.d.ts.map +0 -1
- package/dist/lint/process-guard/decider.js +0 -412
- package/dist/lint/process-guard/decider.js.map +0 -1
- package/dist/lint/process-guard/derive-state.d.ts +0 -96
- package/dist/lint/process-guard/derive-state.d.ts.map +0 -1
- package/dist/lint/process-guard/derive-state.js +0 -368
- package/dist/lint/process-guard/derive-state.js.map +0 -1
- package/dist/lint/process-guard/detect-changes.d.ts +0 -109
- package/dist/lint/process-guard/detect-changes.d.ts.map +0 -1
- package/dist/lint/process-guard/detect-changes.js +0 -487
- package/dist/lint/process-guard/detect-changes.js.map +0 -1
- package/dist/lint/process-guard/index.d.ts +0 -35
- package/dist/lint/process-guard/index.d.ts.map +0 -1
- package/dist/lint/process-guard/index.js +0 -39
- package/dist/lint/process-guard/index.js.map +0 -1
- package/dist/lint/process-guard/types.d.ts +0 -255
- package/dist/lint/process-guard/types.d.ts.map +0 -1
- package/dist/lint/process-guard/types.js +0 -31
- package/dist/lint/process-guard/types.js.map +0 -1
- package/dist/lint/rules.d.ts +0 -147
- package/dist/lint/rules.d.ts.map +0 -1
- package/dist/lint/rules.js +0 -289
- package/dist/lint/rules.js.map +0 -1
- package/dist/lint/steps/cross-checks.d.ts +0 -66
- package/dist/lint/steps/cross-checks.d.ts.map +0 -1
- package/dist/lint/steps/cross-checks.js +0 -290
- package/dist/lint/steps/cross-checks.js.map +0 -1
- package/dist/lint/steps/feature-checks.d.ts +0 -78
- package/dist/lint/steps/feature-checks.d.ts.map +0 -1
- package/dist/lint/steps/feature-checks.js +0 -279
- package/dist/lint/steps/feature-checks.js.map +0 -1
- package/dist/lint/steps/index.d.ts +0 -22
- package/dist/lint/steps/index.d.ts.map +0 -1
- package/dist/lint/steps/index.js +0 -26
- package/dist/lint/steps/index.js.map +0 -1
- package/dist/lint/steps/pair-resolver.d.ts +0 -29
- package/dist/lint/steps/pair-resolver.d.ts.map +0 -1
- package/dist/lint/steps/pair-resolver.js +0 -76
- package/dist/lint/steps/pair-resolver.js.map +0 -1
- package/dist/lint/steps/runner.d.ts +0 -28
- package/dist/lint/steps/runner.d.ts.map +0 -1
- package/dist/lint/steps/runner.js +0 -143
- package/dist/lint/steps/runner.js.map +0 -1
- package/dist/lint/steps/step-checks.d.ts +0 -41
- package/dist/lint/steps/step-checks.d.ts.map +0 -1
- package/dist/lint/steps/step-checks.js +0 -164
- package/dist/lint/steps/step-checks.js.map +0 -1
- package/dist/lint/steps/types.d.ts +0 -95
- package/dist/lint/steps/types.d.ts.map +0 -1
- package/dist/lint/steps/types.js +0 -79
- package/dist/lint/steps/types.js.map +0 -1
- package/dist/lint/steps/utils.d.ts +0 -22
- package/dist/lint/steps/utils.d.ts.map +0 -1
- package/dist/lint/steps/utils.js +0 -57
- package/dist/lint/steps/utils.js.map +0 -1
- package/dist/mcp/file-watcher.d.ts +0 -24
- package/dist/mcp/file-watcher.js +0 -75
- package/dist/mcp/file-watcher.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -19
- package/dist/mcp/index.js +0 -21
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/pipeline-session.d.ts +0 -33
- package/dist/mcp/pipeline-session.js +0 -149
- package/dist/mcp/pipeline-session.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -28
- package/dist/mcp/server.js +0 -197
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/tool-registry.d.ts +0 -4
- package/dist/mcp/tool-registry.js +0 -525
- package/dist/mcp/tool-registry.js.map +0 -1
- package/dist/renderable/codecs/adr.d.ts +0 -4730
- package/dist/renderable/codecs/adr.d.ts.map +0 -1
- package/dist/renderable/codecs/adr.js +0 -590
- package/dist/renderable/codecs/adr.js.map +0 -1
- package/dist/renderable/codecs/architecture.d.ts +0 -4760
- package/dist/renderable/codecs/architecture.d.ts.map +0 -1
- package/dist/renderable/codecs/architecture.js +0 -524
- package/dist/renderable/codecs/architecture.js.map +0 -1
- package/dist/renderable/codecs/business-rules.d.ts +0 -4777
- package/dist/renderable/codecs/business-rules.d.ts.map +0 -1
- package/dist/renderable/codecs/business-rules.js +0 -648
- package/dist/renderable/codecs/business-rules.js.map +0 -1
- package/dist/renderable/codecs/claude-module.d.ts +0 -4710
- package/dist/renderable/codecs/claude-module.d.ts.map +0 -1
- package/dist/renderable/codecs/claude-module.js +0 -214
- package/dist/renderable/codecs/claude-module.js.map +0 -1
- package/dist/renderable/codecs/composite.d.ts +0 -84
- package/dist/renderable/codecs/composite.d.ts.map +0 -1
- package/dist/renderable/codecs/composite.js +0 -124
- package/dist/renderable/codecs/composite.js.map +0 -1
- package/dist/renderable/codecs/convention-extractor.d.ts +0 -105
- package/dist/renderable/codecs/convention-extractor.d.ts.map +0 -1
- package/dist/renderable/codecs/convention-extractor.js +0 -353
- package/dist/renderable/codecs/convention-extractor.js.map +0 -1
- package/dist/renderable/codecs/decision-doc.d.ts +0 -308
- package/dist/renderable/codecs/decision-doc.d.ts.map +0 -1
- package/dist/renderable/codecs/decision-doc.js +0 -485
- package/dist/renderable/codecs/decision-doc.js.map +0 -1
- package/dist/renderable/codecs/design-review.d.ts +0 -55
- package/dist/renderable/codecs/design-review.d.ts.map +0 -1
- package/dist/renderable/codecs/design-review.js +0 -532
- package/dist/renderable/codecs/design-review.js.map +0 -1
- package/dist/renderable/codecs/diagram-utils.d.ts +0 -62
- package/dist/renderable/codecs/diagram-utils.d.ts.map +0 -1
- package/dist/renderable/codecs/diagram-utils.js +0 -70
- package/dist/renderable/codecs/diagram-utils.js.map +0 -1
- package/dist/renderable/codecs/helpers.d.ts +0 -553
- package/dist/renderable/codecs/helpers.d.ts.map +0 -1
- package/dist/renderable/codecs/helpers.js +0 -913
- package/dist/renderable/codecs/helpers.js.map +0 -1
- package/dist/renderable/codecs/index-codec.d.ts +0 -4714
- package/dist/renderable/codecs/index.d.ts +0 -46
- package/dist/renderable/codecs/index.d.ts.map +0 -1
- package/dist/renderable/codecs/index.js +0 -70
- package/dist/renderable/codecs/index.js.map +0 -1
- package/dist/renderable/codecs/patterns.d.ts +0 -4757
- package/dist/renderable/codecs/patterns.d.ts.map +0 -1
- package/dist/renderable/codecs/patterns.js +0 -462
- package/dist/renderable/codecs/patterns.js.map +0 -1
- package/dist/renderable/codecs/planning.d.ts +0 -14055
- package/dist/renderable/codecs/planning.d.ts.map +0 -1
- package/dist/renderable/codecs/planning.js +0 -449
- package/dist/renderable/codecs/planning.js.map +0 -1
- package/dist/renderable/codecs/pr-changes.d.ts +0 -4742
- package/dist/renderable/codecs/pr-changes.d.ts.map +0 -1
- package/dist/renderable/codecs/pr-changes.js +0 -425
- package/dist/renderable/codecs/pr-changes.js.map +0 -1
- package/dist/renderable/codecs/reference.d.ts +0 -215
- package/dist/renderable/codecs/reference.d.ts.map +0 -1
- package/dist/renderable/codecs/reference.js +0 -1578
- package/dist/renderable/codecs/reference.js.map +0 -1
- package/dist/renderable/codecs/reporting.d.ts +0 -14026
- package/dist/renderable/codecs/reporting.d.ts.map +0 -1
- package/dist/renderable/codecs/reporting.js +0 -365
- package/dist/renderable/codecs/reporting.js.map +0 -1
- package/dist/renderable/codecs/requirements.d.ts +0 -4743
- package/dist/renderable/codecs/requirements.d.ts.map +0 -1
- package/dist/renderable/codecs/requirements.js +0 -428
- package/dist/renderable/codecs/requirements.js.map +0 -1
- package/dist/renderable/codecs/session.d.ts +0 -9410
- package/dist/renderable/codecs/session.d.ts.map +0 -1
- package/dist/renderable/codecs/session.js +0 -848
- package/dist/renderable/codecs/session.js.map +0 -1
- package/dist/renderable/codecs/shape-matcher.d.ts +0 -54
- package/dist/renderable/codecs/shape-matcher.d.ts.map +0 -1
- package/dist/renderable/codecs/shape-matcher.js +0 -106
- package/dist/renderable/codecs/shape-matcher.js.map +0 -1
- package/dist/renderable/codecs/shared-schema.d.ts +0 -44
- package/dist/renderable/codecs/shared-schema.d.ts.map +0 -1
- package/dist/renderable/codecs/shared-schema.js +0 -43
- package/dist/renderable/codecs/shared-schema.js.map +0 -1
- package/dist/renderable/codecs/taxonomy.d.ts +0 -4733
- package/dist/renderable/codecs/taxonomy.d.ts.map +0 -1
- package/dist/renderable/codecs/taxonomy.js +0 -570
- package/dist/renderable/codecs/taxonomy.js.map +0 -1
- package/dist/renderable/codecs/timeline.d.ts +0 -14094
- package/dist/renderable/codecs/timeline.d.ts.map +0 -1
- package/dist/renderable/codecs/timeline.js +0 -906
- package/dist/renderable/codecs/timeline.js.map +0 -1
- package/dist/renderable/codecs/types/base.d.ts +0 -81
- package/dist/renderable/codecs/types/base.d.ts.map +0 -1
- package/dist/renderable/codecs/types/base.js +0 -56
- package/dist/renderable/codecs/types/base.js.map +0 -1
- package/dist/renderable/codecs/types/index.d.ts +0 -5
- package/dist/renderable/codecs/types/index.d.ts.map +0 -1
- package/dist/renderable/codecs/types/index.js +0 -5
- package/dist/renderable/codecs/types/index.js.map +0 -1
- package/dist/renderable/codecs/validation-rules.d.ts +0 -4773
- package/dist/renderable/codecs/validation-rules.d.ts.map +0 -1
- package/dist/renderable/codecs/validation-rules.js +0 -537
- package/dist/renderable/codecs/validation-rules.js.map +0 -1
- package/dist/renderable/generate.d.ts +0 -338
- package/dist/renderable/generate.d.ts.map +0 -1
- package/dist/renderable/generate.js +0 -437
- package/dist/renderable/generate.js.map +0 -1
- package/dist/renderable/index.d.ts +0 -36
- package/dist/renderable/index.d.ts.map +0 -1
- package/dist/renderable/index.js +0 -58
- package/dist/renderable/index.js.map +0 -1
- package/dist/renderable/load-preamble.d.ts +0 -56
- package/dist/renderable/load-preamble.d.ts.map +0 -1
- package/dist/renderable/load-preamble.js +0 -298
- package/dist/renderable/load-preamble.js.map +0 -1
- package/dist/renderable/render.d.ts +0 -61
- package/dist/renderable/render.d.ts.map +0 -1
- package/dist/renderable/render.js +0 -346
- package/dist/renderable/render.js.map +0 -1
- package/dist/renderable/schema.d.ts +0 -194
- package/dist/renderable/schema.d.ts.map +0 -1
- package/dist/renderable/schema.js +0 -197
- package/dist/renderable/schema.js.map +0 -1
- package/dist/renderable/utils.d.ts +0 -146
- package/dist/renderable/utils.d.ts.map +0 -1
- package/dist/renderable/utils.js +0 -362
- package/dist/renderable/utils.js.map +0 -1
- package/dist/scanner/ast-parser.d.ts +0 -75
- package/dist/scanner/ast-parser.d.ts.map +0 -1
- package/dist/scanner/ast-parser.js +0 -835
- package/dist/scanner/ast-parser.js.map +0 -1
- package/dist/scanner/gherkin-ast-parser.d.ts +0 -166
- package/dist/scanner/gherkin-ast-parser.d.ts.map +0 -1
- package/dist/scanner/gherkin-ast-parser.js +0 -507
- package/dist/scanner/gherkin-ast-parser.js.map +0 -1
- package/dist/scanner/gherkin-scanner.d.ts +0 -106
- package/dist/scanner/gherkin-scanner.d.ts.map +0 -1
- package/dist/scanner/gherkin-scanner.js +0 -149
- package/dist/scanner/gherkin-scanner.js.map +0 -1
- package/dist/scanner/index.d.ts +0 -85
- package/dist/scanner/index.d.ts.map +0 -1
- package/dist/scanner/index.js +0 -102
- package/dist/scanner/index.js.map +0 -1
- package/dist/scanner/pattern-scanner.d.ts +0 -83
- package/dist/scanner/pattern-scanner.d.ts.map +0 -1
- package/dist/scanner/pattern-scanner.js +0 -110
- package/dist/scanner/pattern-scanner.js.map +0 -1
- package/dist/taxonomy/categories.d.ts +0 -47
- package/dist/taxonomy/categories.d.ts.map +0 -1
- package/dist/taxonomy/categories.js +0 -175
- package/dist/taxonomy/categories.js.map +0 -1
- package/dist/taxonomy/claude-section-values.d.ts +0 -12
- package/dist/taxonomy/claude-section-values.d.ts.map +0 -1
- package/dist/taxonomy/claude-section-values.js +0 -17
- package/dist/taxonomy/claude-section-values.js.map +0 -1
- package/dist/taxonomy/conventions.d.ts +0 -13
- package/dist/taxonomy/conventions.d.ts.map +0 -1
- package/dist/taxonomy/conventions.js +0 -27
- package/dist/taxonomy/conventions.js.map +0 -1
- package/dist/taxonomy/deliverable-status.d.ts +0 -99
- package/dist/taxonomy/deliverable-status.d.ts.map +0 -1
- package/dist/taxonomy/deliverable-status.js +0 -131
- package/dist/taxonomy/deliverable-status.js.map +0 -1
- package/dist/taxonomy/format-types.d.ts +0 -17
- package/dist/taxonomy/format-types.d.ts.map +0 -1
- package/dist/taxonomy/format-types.js +0 -23
- package/dist/taxonomy/format-types.js.map +0 -1
- package/dist/taxonomy/generator-options.d.ts +0 -67
- package/dist/taxonomy/generator-options.d.ts.map +0 -1
- package/dist/taxonomy/generator-options.js +0 -75
- package/dist/taxonomy/generator-options.js.map +0 -1
- package/dist/taxonomy/hierarchy-levels.d.ts +0 -23
- package/dist/taxonomy/hierarchy-levels.d.ts.map +0 -1
- package/dist/taxonomy/hierarchy-levels.js +0 -22
- package/dist/taxonomy/hierarchy-levels.js.map +0 -1
- package/dist/taxonomy/index.d.ts +0 -35
- package/dist/taxonomy/index.d.ts.map +0 -1
- package/dist/taxonomy/index.js +0 -56
- package/dist/taxonomy/index.js.map +0 -1
- package/dist/taxonomy/layer-types.d.ts +0 -22
- package/dist/taxonomy/layer-types.d.ts.map +0 -1
- package/dist/taxonomy/layer-types.js +0 -28
- package/dist/taxonomy/layer-types.js.map +0 -1
- package/dist/taxonomy/normalized-status.d.ts +0 -99
- package/dist/taxonomy/normalized-status.d.ts.map +0 -1
- package/dist/taxonomy/normalized-status.js +0 -113
- package/dist/taxonomy/normalized-status.js.map +0 -1
- package/dist/taxonomy/registry-builder.d.ts +0 -104
- package/dist/taxonomy/registry-builder.d.ts.map +0 -1
- package/dist/taxonomy/registry-builder.js +0 -561
- package/dist/taxonomy/registry-builder.js.map +0 -1
- package/dist/taxonomy/risk-levels.d.ts +0 -16
- package/dist/taxonomy/risk-levels.d.ts.map +0 -1
- package/dist/taxonomy/risk-levels.js +0 -15
- package/dist/taxonomy/risk-levels.js.map +0 -1
- package/dist/taxonomy/severity-types.d.ts +0 -6
- package/dist/taxonomy/severity-types.d.ts.map +0 -1
- package/dist/taxonomy/severity-types.js +0 -5
- package/dist/taxonomy/severity-types.js.map +0 -1
- package/dist/taxonomy/status-values.d.ts +0 -39
- package/dist/taxonomy/status-values.d.ts.map +0 -1
- package/dist/taxonomy/status-values.js +0 -42
- package/dist/taxonomy/status-values.js.map +0 -1
- package/dist/types/branded.d.ts +0 -89
- package/dist/types/branded.d.ts.map +0 -1
- package/dist/types/branded.js +0 -57
- package/dist/types/branded.js.map +0 -1
- package/dist/types/errors.d.ts +0 -342
- package/dist/types/errors.d.ts.map +0 -1
- package/dist/types/errors.js +0 -251
- package/dist/types/errors.js.map +0 -1
- package/dist/types/index.d.ts +0 -41
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -5
- package/dist/types/index.js.map +0 -1
- package/dist/types/result.d.ts +0 -78
- package/dist/types/result.d.ts.map +0 -1
- package/dist/types/result.js +0 -78
- package/dist/types/result.js.map +0 -1
- package/dist/utils/collection-utils.d.ts +0 -49
- package/dist/utils/collection-utils.d.ts.map +0 -1
- package/dist/utils/collection-utils.js +0 -58
- package/dist/utils/collection-utils.js.map +0 -1
- package/dist/utils/id-utils.d.ts +0 -46
- package/dist/utils/id-utils.d.ts.map +0 -1
- package/dist/utils/id-utils.js +0 -51
- package/dist/utils/id-utils.js.map +0 -1
- package/dist/utils/index.d.ts +0 -21
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -21
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/string-utils.d.ts +0 -150
- package/dist/utils/string-utils.d.ts.map +0 -1
- package/dist/utils/string-utils.js +0 -281
- package/dist/utils/string-utils.js.map +0 -1
- package/dist/validation/anti-patterns.d.ts +0 -134
- package/dist/validation/anti-patterns.d.ts.map +0 -1
- package/dist/validation/anti-patterns.js +0 -307
- package/dist/validation/anti-patterns.js.map +0 -1
- package/dist/validation/dod-validator.d.ts +0 -94
- package/dist/validation/dod-validator.d.ts.map +0 -1
- package/dist/validation/dod-validator.js +0 -198
- package/dist/validation/dod-validator.js.map +0 -1
- package/dist/validation/fsm/index.d.ts +0 -59
- package/dist/validation/fsm/index.d.ts.map +0 -1
- package/dist/validation/fsm/index.js +0 -64
- package/dist/validation/fsm/index.js.map +0 -1
- package/dist/validation/fsm/states.d.ts +0 -93
- package/dist/validation/fsm/states.d.ts.map +0 -1
- package/dist/validation/fsm/states.js +0 -98
- package/dist/validation/fsm/states.js.map +0 -1
- package/dist/validation/fsm/transitions.d.ts +0 -100
- package/dist/validation/fsm/transitions.d.ts.map +0 -1
- package/dist/validation/fsm/transitions.js +0 -122
- package/dist/validation/fsm/transitions.js.map +0 -1
- package/dist/validation/fsm/validator.d.ts +0 -163
- package/dist/validation/fsm/validator.d.ts.map +0 -1
- package/dist/validation/fsm/validator.js +0 -205
- package/dist/validation/fsm/validator.js.map +0 -1
- package/dist/validation/index.d.ts +0 -23
- package/dist/validation/index.d.ts.map +0 -1
- package/dist/validation/index.js +0 -25
- package/dist/validation/index.js.map +0 -1
- package/dist/validation/types.d.ts +0 -136
- package/dist/validation/types.d.ts.map +0 -1
- package/dist/validation/types.js +0 -56
- package/dist/validation/types.js.map +0 -1
- package/dist/validation-schemas/codec-utils.d.ts +0 -188
- package/dist/validation-schemas/codec-utils.d.ts.map +0 -1
- package/dist/validation-schemas/codec-utils.js +0 -258
- package/dist/validation-schemas/codec-utils.js.map +0 -1
- package/dist/validation-schemas/config.d.ts +0 -99
- package/dist/validation-schemas/config.d.ts.map +0 -1
- package/dist/validation-schemas/config.js +0 -178
- package/dist/validation-schemas/config.js.map +0 -1
- package/dist/validation-schemas/doc-directive.d.ts +0 -195
- package/dist/validation-schemas/doc-directive.d.ts.map +0 -1
- package/dist/validation-schemas/doc-directive.js +0 -239
- package/dist/validation-schemas/doc-directive.js.map +0 -1
- package/dist/validation-schemas/dual-source.d.ts +0 -167
- package/dist/validation-schemas/dual-source.d.ts.map +0 -1
- package/dist/validation-schemas/dual-source.js +0 -168
- package/dist/validation-schemas/dual-source.js.map +0 -1
- package/dist/validation-schemas/export-info.d.ts +0 -53
- package/dist/validation-schemas/export-info.d.ts.map +0 -1
- package/dist/validation-schemas/export-info.js +0 -101
- package/dist/validation-schemas/export-info.js.map +0 -1
- package/dist/validation-schemas/extracted-pattern.d.ts +0 -351
- package/dist/validation-schemas/extracted-pattern.d.ts.map +0 -1
- package/dist/validation-schemas/extracted-pattern.js +0 -459
- package/dist/validation-schemas/extracted-pattern.js.map +0 -1
- package/dist/validation-schemas/extracted-shape.d.ts +0 -200
- package/dist/validation-schemas/extracted-shape.d.ts.map +0 -1
- package/dist/validation-schemas/extracted-shape.js +0 -182
- package/dist/validation-schemas/extracted-shape.js.map +0 -1
- package/dist/validation-schemas/feature.d.ts +0 -554
- package/dist/validation-schemas/feature.d.ts.map +0 -1
- package/dist/validation-schemas/feature.js +0 -262
- package/dist/validation-schemas/feature.js.map +0 -1
- package/dist/validation-schemas/index.d.ts +0 -15
- package/dist/validation-schemas/index.d.ts.map +0 -1
- package/dist/validation-schemas/index.js +0 -32
- package/dist/validation-schemas/index.js.map +0 -1
- package/dist/validation-schemas/lint.d.ts +0 -46
- package/dist/validation-schemas/lint.d.ts.map +0 -1
- package/dist/validation-schemas/lint.js +0 -45
- package/dist/validation-schemas/lint.js.map +0 -1
- package/dist/validation-schemas/master-dataset.d.ts +0 -8299
- package/dist/validation-schemas/master-dataset.d.ts.map +0 -1
- package/dist/validation-schemas/master-dataset.js +0 -275
- package/dist/validation-schemas/master-dataset.js.map +0 -1
- package/dist/validation-schemas/output-schemas.d.ts +0 -183
- package/dist/validation-schemas/output-schemas.d.ts.map +0 -1
- package/dist/validation-schemas/output-schemas.js +0 -149
- package/dist/validation-schemas/output-schemas.js.map +0 -1
- package/dist/validation-schemas/scenario-ref.d.ts +0 -80
- package/dist/validation-schemas/scenario-ref.d.ts.map +0 -1
- package/dist/validation-schemas/scenario-ref.js +0 -73
- package/dist/validation-schemas/scenario-ref.js.map +0 -1
- package/dist/validation-schemas/tag-registry.d.ts +0 -210
- package/dist/validation-schemas/tag-registry.d.ts.map +0 -1
- package/dist/validation-schemas/tag-registry.js +0 -248
- package/dist/validation-schemas/tag-registry.js.map +0 -1
- package/dist/validation-schemas/workflow-config.d.ts +0 -125
- package/dist/validation-schemas/workflow-config.d.ts.map +0 -1
- package/dist/validation-schemas/workflow-config.js +0 -138
- package/dist/validation-schemas/workflow-config.js.map +0 -1
|
@@ -1,407 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @architect
|
|
3
|
-
* @architect-extractor
|
|
4
|
-
* @architect-pattern DualSourceExtractor
|
|
5
|
-
* @architect-status completed
|
|
6
|
-
* @architect-uses DocExtractor, GherkinExtractor, GherkinScanner
|
|
7
|
-
* @architect-used-by Orchestrator
|
|
8
|
-
* @architect-arch-role service
|
|
9
|
-
* @architect-arch-context extractor
|
|
10
|
-
* @architect-arch-layer application
|
|
11
|
-
*
|
|
12
|
-
* ## DualSourceExtractor - Compose Pattern Data from Code + Features
|
|
13
|
-
*
|
|
14
|
-
* Extracts pattern metadata from both TypeScript code stubs (@architect-*)
|
|
15
|
-
* and Gherkin feature files (@architect-*), validates consistency,
|
|
16
|
-
* and composes unified pattern data for documentation generation.
|
|
17
|
-
*
|
|
18
|
-
* ### When to Use
|
|
19
|
-
*
|
|
20
|
-
* - When implementing USDP Pattern 2 (Standard) or higher
|
|
21
|
-
* - When you have both code stubs AND timeline features
|
|
22
|
-
* - When generating artifacts that need both timeless and temporal data
|
|
23
|
-
* - When validating cross-source consistency (pattern name, phase alignment)
|
|
24
|
-
*
|
|
25
|
-
* ### Key Concepts
|
|
26
|
-
*
|
|
27
|
-
* - **Code Source**: @architect-* tags define timeless pattern graph
|
|
28
|
-
* - **Feature Source**: @architect-* tags add temporal process metadata
|
|
29
|
-
* - **Cross-Validation**: Pattern name + phase must match across sources
|
|
30
|
-
* - **Deliverables**: Parsed from Gherkin Background tables in features
|
|
31
|
-
*/
|
|
32
|
-
import { getPatternName } from '../api/pattern-helpers.js';
|
|
33
|
-
// Import Zod schemas and inferred types (schema-first pattern)
|
|
34
|
-
import { ProcessMetadataSchema, DeliverableSchema, } from '../validation-schemas/index.js';
|
|
35
|
-
import { DEFAULT_STATUS } from '../taxonomy/status-values.js';
|
|
36
|
-
/**
|
|
37
|
-
* Extract process metadata from Gherkin feature tags
|
|
38
|
-
*
|
|
39
|
-
* Uses schema validation instead of type assertions to ensure data integrity.
|
|
40
|
-
* Returns null if required tags are missing OR if validation fails.
|
|
41
|
-
*
|
|
42
|
-
* @param feature - Scanned Gherkin feature
|
|
43
|
-
* @returns Process metadata or null if missing required tags or validation fails
|
|
44
|
-
*/
|
|
45
|
-
export function extractProcessMetadata(feature) {
|
|
46
|
-
const tags = feature.feature.tags;
|
|
47
|
-
// Extract normalized tags (scanner strips @ and configured prefix like @architect-)
|
|
48
|
-
const patternTag = tags.find((t) => t.startsWith('pattern:'));
|
|
49
|
-
const phaseTag = tags.find((t) => t.startsWith('phase:'));
|
|
50
|
-
const statusTag = tags.find((t) => t.startsWith('status:'));
|
|
51
|
-
if (!patternTag || !phaseTag) {
|
|
52
|
-
// Missing required tags
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
const pattern = patternTag.replace('pattern:', '');
|
|
56
|
-
const phaseStr = phaseTag.replace('phase:', '');
|
|
57
|
-
const phase = parseInt(phaseStr, 10);
|
|
58
|
-
const status = statusTag?.replace('status:', '') ?? DEFAULT_STATUS;
|
|
59
|
-
// Extract optional tags
|
|
60
|
-
const quarterTag = tags.find((t) => t.startsWith('quarter:'));
|
|
61
|
-
const effortTag = tags.find((t) => t.startsWith('effort:'));
|
|
62
|
-
const teamTag = tags.find((t) => t.startsWith('team:'));
|
|
63
|
-
const workflowTag = tags.find((t) => t.startsWith('workflow:'));
|
|
64
|
-
const completedTag = tags.find((t) => t.startsWith('completed:'));
|
|
65
|
-
const effortActualTag = tags.find((t) => t.startsWith('effort-actual:'));
|
|
66
|
-
const riskTag = tags.find((t) => t.startsWith('risk:'));
|
|
67
|
-
const briefTag = tags.find((t) => t.startsWith('brief:'));
|
|
68
|
-
const productAreaTag = tags.find((t) => t.startsWith('product-area:'));
|
|
69
|
-
const userRoleTag = tags.find((t) => t.startsWith('user-role:'));
|
|
70
|
-
const businessValueTag = tags.find((t) => t.startsWith('business-value:'));
|
|
71
|
-
const quarter = quarterTag?.replace('quarter:', '');
|
|
72
|
-
const effort = effortTag?.replace('effort:', '');
|
|
73
|
-
const team = teamTag?.replace('team:', '');
|
|
74
|
-
const workflow = workflowTag?.replace('workflow:', '');
|
|
75
|
-
const completed = completedTag?.replace('completed:', '');
|
|
76
|
-
const effortActual = effortActualTag?.replace('effort-actual:', '');
|
|
77
|
-
const risk = riskTag?.replace('risk:', '');
|
|
78
|
-
const brief = briefTag?.replace('brief:', '');
|
|
79
|
-
const productArea = productAreaTag?.replace('product-area:', '');
|
|
80
|
-
const userRole = userRoleTag?.replace('user-role:', '');
|
|
81
|
-
// Business value may have surrounding quotes - strip them
|
|
82
|
-
const businessValueRaw = businessValueTag?.replace('business-value:', '');
|
|
83
|
-
const businessValue = businessValueRaw?.replace(/^["']|["']$/g, '');
|
|
84
|
-
// Build raw metadata object (no type assertions)
|
|
85
|
-
const rawMetadata = {
|
|
86
|
-
pattern,
|
|
87
|
-
phase,
|
|
88
|
-
status,
|
|
89
|
-
...(quarter && { quarter }),
|
|
90
|
-
...(effort && { effort }),
|
|
91
|
-
...(team && { team }),
|
|
92
|
-
...(workflow && { workflow }),
|
|
93
|
-
...(completed && { completed }),
|
|
94
|
-
...(effortActual && { effortActual }),
|
|
95
|
-
...(risk && { risk }),
|
|
96
|
-
...(brief && { brief }),
|
|
97
|
-
...(productArea && { productArea }),
|
|
98
|
-
...(userRole && { userRole }),
|
|
99
|
-
...(businessValue && { businessValue }),
|
|
100
|
-
};
|
|
101
|
-
// Validate against schema (schema-first enforcement)
|
|
102
|
-
const validation = ProcessMetadataSchema.safeParse(rawMetadata);
|
|
103
|
-
if (!validation.success) {
|
|
104
|
-
// Log validation failure for debugging (but don't fail silently)
|
|
105
|
-
console.warn(`Process metadata validation failed in ${feature.filePath}: ` +
|
|
106
|
-
validation.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join(', '));
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
return validation.data;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Parse a Tests cell value to a number
|
|
113
|
-
*
|
|
114
|
-
* Handles various formats:
|
|
115
|
-
* - "Yes" / "No" → 1 / 0
|
|
116
|
-
* - Numbers as strings → parsed int
|
|
117
|
-
* - Empty → 0
|
|
118
|
-
*
|
|
119
|
-
* @param value - Tests cell value
|
|
120
|
-
* @returns Number of tests
|
|
121
|
-
*/
|
|
122
|
-
function parseTestsValue(value) {
|
|
123
|
-
const trimmed = value.trim().toLowerCase();
|
|
124
|
-
// Handle Yes/No/True/False
|
|
125
|
-
if (trimmed === 'yes' || trimmed === 'true' || trimmed === '✓' || trimmed === '✅') {
|
|
126
|
-
return 1;
|
|
127
|
-
}
|
|
128
|
-
if (trimmed === 'no' ||
|
|
129
|
-
trimmed === 'false' ||
|
|
130
|
-
trimmed === '✗' ||
|
|
131
|
-
trimmed === '' ||
|
|
132
|
-
trimmed === '-') {
|
|
133
|
-
return 0;
|
|
134
|
-
}
|
|
135
|
-
// Try to parse as number
|
|
136
|
-
const parsed = parseInt(trimmed, 10);
|
|
137
|
-
return isNaN(parsed) ? 0 : parsed;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Extract deliverables from Gherkin Background table
|
|
141
|
-
*
|
|
142
|
-
* Parses Background section looking for DataTables with a "Deliverable" column.
|
|
143
|
-
* Expected table format:
|
|
144
|
-
* | Deliverable | Status | Tests | Location |
|
|
145
|
-
*
|
|
146
|
-
* Optional columns for extended tracking:
|
|
147
|
-
* | Deliverable | Status | Tests | Location | Finding | Release |
|
|
148
|
-
*
|
|
149
|
-
* - **Finding**: Review traceability ID (e.g., "CODE-001")
|
|
150
|
-
* - **Release**: Semver version for changelog grouping (e.g., "v0.2.0")
|
|
151
|
-
*
|
|
152
|
-
* @param feature - Scanned Gherkin feature with optional background
|
|
153
|
-
* @returns Array of deliverables or empty array if no table found
|
|
154
|
-
*
|
|
155
|
-
* @example
|
|
156
|
-
* ```gherkin
|
|
157
|
-
* Background: Deliverables
|
|
158
|
-
* Given the following deliverables:
|
|
159
|
-
* | Deliverable | Status | Tests | Location | Finding | Release |
|
|
160
|
-
* | Fix parseArgs() call | Done | Yes | src/cli/generate-docs.ts | CODE-001 | v0.2.0 |
|
|
161
|
-
* | Update README.md | Done | No | README.md | DOC-001 | v0.2.0 |
|
|
162
|
-
* ```
|
|
163
|
-
*/
|
|
164
|
-
export function extractDeliverables(feature) {
|
|
165
|
-
// Check if feature has a background section
|
|
166
|
-
if (!feature.background) {
|
|
167
|
-
return [];
|
|
168
|
-
}
|
|
169
|
-
const deliverables = [];
|
|
170
|
-
// Search for DataTables in background steps
|
|
171
|
-
for (const step of feature.background.steps) {
|
|
172
|
-
if (!step.dataTable) {
|
|
173
|
-
continue;
|
|
174
|
-
}
|
|
175
|
-
const { headers, rows } = step.dataTable;
|
|
176
|
-
// Check if this table has a "Deliverable" column (case-insensitive)
|
|
177
|
-
const deliverableIdx = headers.findIndex((h) => h.toLowerCase() === 'deliverable');
|
|
178
|
-
if (deliverableIdx === -1) {
|
|
179
|
-
continue;
|
|
180
|
-
}
|
|
181
|
-
// Find other columns (case-insensitive)
|
|
182
|
-
const statusIdx = headers.findIndex((h) => h.toLowerCase() === 'status');
|
|
183
|
-
const testsIdx = headers.findIndex((h) => h.toLowerCase() === 'tests');
|
|
184
|
-
const locationIdx = headers.findIndex((h) => h.toLowerCase() === 'location');
|
|
185
|
-
const findingIdx = headers.findIndex((h) => h.toLowerCase() === 'finding');
|
|
186
|
-
const releaseIdx = headers.findIndex((h) => h.toLowerCase() === 'release');
|
|
187
|
-
// Store header names for reliable lookup (avoid empty-string key match)
|
|
188
|
-
const deliverableHeader = headers[deliverableIdx];
|
|
189
|
-
const statusHeader = statusIdx >= 0 ? headers[statusIdx] : undefined;
|
|
190
|
-
const testsHeader = testsIdx >= 0 ? headers[testsIdx] : undefined;
|
|
191
|
-
const locationHeader = locationIdx >= 0 ? headers[locationIdx] : undefined;
|
|
192
|
-
const findingHeader = findingIdx >= 0 ? headers[findingIdx] : undefined;
|
|
193
|
-
const releaseHeader = releaseIdx >= 0 ? headers[releaseIdx] : undefined;
|
|
194
|
-
if (!deliverableHeader)
|
|
195
|
-
continue;
|
|
196
|
-
// Parse each row with schema validation
|
|
197
|
-
for (const row of rows) {
|
|
198
|
-
const name = row[deliverableHeader]?.trim() ?? '';
|
|
199
|
-
const rawStatus = statusHeader ? (row[statusHeader]?.trim() ?? '') : '';
|
|
200
|
-
const status = rawStatus.toLowerCase();
|
|
201
|
-
const testsValue = testsHeader ? (row[testsHeader]?.trim() ?? '0') : '0';
|
|
202
|
-
const location = locationHeader ? (row[locationHeader]?.trim() ?? '') : '';
|
|
203
|
-
const findingRaw = findingHeader ? row[findingHeader]?.trim() : undefined;
|
|
204
|
-
const finding = findingRaw !== '' ? findingRaw : undefined;
|
|
205
|
-
const releaseRaw = releaseHeader ? row[releaseHeader]?.trim() : undefined;
|
|
206
|
-
const release = releaseRaw !== '' ? releaseRaw : undefined;
|
|
207
|
-
// Build raw deliverable object (no type assertions)
|
|
208
|
-
const rawDeliverable = {
|
|
209
|
-
name,
|
|
210
|
-
status,
|
|
211
|
-
tests: parseTestsValue(testsValue),
|
|
212
|
-
location,
|
|
213
|
-
...(finding && { finding }),
|
|
214
|
-
...(release && { release }),
|
|
215
|
-
};
|
|
216
|
-
// Validate against schema (schema-first enforcement)
|
|
217
|
-
const validation = DeliverableSchema.safeParse(rawDeliverable);
|
|
218
|
-
if (!validation.success) {
|
|
219
|
-
// Skip invalid deliverables with warning (name might be empty or tests negative)
|
|
220
|
-
console.warn(`Deliverable validation failed in ${feature.filePath}: ` +
|
|
221
|
-
validation.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join(', '));
|
|
222
|
-
continue;
|
|
223
|
-
}
|
|
224
|
-
deliverables.push(validation.data);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
return deliverables;
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Combine patterns from code and features into dual-source patterns
|
|
231
|
-
*
|
|
232
|
-
* Validates that pattern names and phases match across sources.
|
|
233
|
-
* Creates unified pattern objects with both code and process metadata.
|
|
234
|
-
*
|
|
235
|
-
* **Pattern Name Collisions:**
|
|
236
|
-
* When multiple code files use the same `@architect-pattern` name (e.g.,
|
|
237
|
-
* ServiceIndependence with ECST and Reservation sub-patterns), they are
|
|
238
|
-
* automatically merged:
|
|
239
|
-
* - Categories, dependencies, and enables are unioned across all sources
|
|
240
|
-
* - Primary pattern (first in array) provides base metadata
|
|
241
|
-
* - All source patterns are preserved in the `sources` array
|
|
242
|
-
* - Console warning is emitted for visibility
|
|
243
|
-
*
|
|
244
|
-
* @param codePatterns - Patterns extracted from TypeScript code
|
|
245
|
-
* @param featureFiles - Scanned Gherkin feature files
|
|
246
|
-
* @returns Dual-source extraction results
|
|
247
|
-
*
|
|
248
|
-
* @example
|
|
249
|
-
* ```typescript
|
|
250
|
-
* // Extract from both sources
|
|
251
|
-
* const codeScan = await scanPatterns({ patterns: 'packages/**\/*.ts' });
|
|
252
|
-
* const featureScan = await scanGherkinFiles({ patterns: 'tests/features/**\/*.feature' });
|
|
253
|
-
*
|
|
254
|
-
* if (codeScan.ok && featureScan.ok) {
|
|
255
|
-
* const codeExtraction = extractPatterns(codeScan.value.files, '/project');
|
|
256
|
-
* const dualSource = combineSources(codeExtraction.patterns, featureScan.value.files);
|
|
257
|
-
*
|
|
258
|
-
* console.log(`Combined: ${dualSource.patterns.length}`);
|
|
259
|
-
* console.log(`Code-only: ${dualSource.codeOnly.length}`);
|
|
260
|
-
* console.log(`Feature-only: ${dualSource.featureOnly.length}`);
|
|
261
|
-
* console.log(`Validation errors: ${dualSource.validationErrors.length}`);
|
|
262
|
-
*
|
|
263
|
-
* // Check for collisions
|
|
264
|
-
* for (const pattern of dualSource.patterns) {
|
|
265
|
-
* if (pattern.sources) {
|
|
266
|
-
* console.log(`${pattern.patternName} has ${pattern.sources.length} implementations`);
|
|
267
|
-
* }
|
|
268
|
-
* }
|
|
269
|
-
* }
|
|
270
|
-
* ```
|
|
271
|
-
*/
|
|
272
|
-
export function combineSources(codePatterns, featureFiles) {
|
|
273
|
-
const combined = [];
|
|
274
|
-
const codeOnly = [];
|
|
275
|
-
const featureOnly = [];
|
|
276
|
-
const validationErrors = [];
|
|
277
|
-
const warnings = [];
|
|
278
|
-
// Build index of code patterns by patternName (supports collisions)
|
|
279
|
-
// When multiple code files use same pattern name, they're stored as an array
|
|
280
|
-
const codeIndex = new Map();
|
|
281
|
-
for (const pattern of codePatterns) {
|
|
282
|
-
if (pattern.patternName) {
|
|
283
|
-
const existing = codeIndex.get(pattern.patternName) ?? [];
|
|
284
|
-
codeIndex.set(pattern.patternName, [...existing, pattern]);
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
// Build index of features by pattern name
|
|
288
|
-
const featureIndex = new Map();
|
|
289
|
-
for (const feature of featureFiles) {
|
|
290
|
-
const metadata = extractProcessMetadata(feature);
|
|
291
|
-
if (metadata) {
|
|
292
|
-
featureIndex.set(metadata.pattern, { metadata, file: feature });
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
// Combine matching patterns
|
|
296
|
-
for (const [patternName, codePatternArray] of codeIndex.entries()) {
|
|
297
|
-
const featureData = featureIndex.get(patternName);
|
|
298
|
-
if (!featureData) {
|
|
299
|
-
// Code-only patterns (no matching feature)
|
|
300
|
-
codeOnly.push(...codePatternArray);
|
|
301
|
-
continue;
|
|
302
|
-
}
|
|
303
|
-
const { metadata: processMetadata, file: featureFile } = featureData;
|
|
304
|
-
// Handle pattern collision (multiple code sources for same pattern name)
|
|
305
|
-
const hasCollision = codePatternArray.length > 1;
|
|
306
|
-
const primaryPattern = codePatternArray[0];
|
|
307
|
-
if (!primaryPattern) {
|
|
308
|
-
// Should never happen but TypeScript needs the check
|
|
309
|
-
console.warn(`Pattern "${patternName}" has no code patterns in array`);
|
|
310
|
-
continue;
|
|
311
|
-
}
|
|
312
|
-
// Cross-validate: Phase must match (if both present)
|
|
313
|
-
if (primaryPattern.phase !== undefined && processMetadata.phase !== primaryPattern.phase) {
|
|
314
|
-
validationErrors.push({
|
|
315
|
-
codeName: patternName,
|
|
316
|
-
featureName: processMetadata.pattern,
|
|
317
|
-
codePhase: primaryPattern.phase,
|
|
318
|
-
featurePhase: processMetadata.phase,
|
|
319
|
-
sources: {
|
|
320
|
-
code: primaryPattern.source.file,
|
|
321
|
-
feature: featureFile.filePath,
|
|
322
|
-
},
|
|
323
|
-
message: `Phase mismatch: code has ${primaryPattern.phase}, feature has ${processMetadata.phase}`,
|
|
324
|
-
});
|
|
325
|
-
// Still combine but note the error
|
|
326
|
-
}
|
|
327
|
-
// Extract deliverables from feature
|
|
328
|
-
const deliverables = extractDeliverables(featureFile);
|
|
329
|
-
// Note: ExtractedPattern has 'category' (singular), not 'categories' (plural)
|
|
330
|
-
// For collision handling, we use the primary pattern's category
|
|
331
|
-
// Future enhancement: could merge categories if schema changes
|
|
332
|
-
// Merge dependencies (union)
|
|
333
|
-
const mergedDependsOn = hasCollision
|
|
334
|
-
? Array.from(new Set(codePatternArray.flatMap((p) => p.dependsOn ?? [])))
|
|
335
|
-
: primaryPattern.dependsOn;
|
|
336
|
-
// Merge enables (union)
|
|
337
|
-
const mergedEnables = hasCollision
|
|
338
|
-
? Array.from(new Set(codePatternArray.flatMap((p) => p.enables ?? [])))
|
|
339
|
-
: primaryPattern.enables;
|
|
340
|
-
// Combine into dual-source pattern
|
|
341
|
-
// Destructure to exclude existing deliverables (exactOptionalPropertyTypes requires this)
|
|
342
|
-
const { deliverables: _existingDeliverables, ...patternWithoutDeliverables } = primaryPattern;
|
|
343
|
-
const dualSourcePattern = {
|
|
344
|
-
...patternWithoutDeliverables,
|
|
345
|
-
...(mergedDependsOn && mergedDependsOn.length > 0 && { dependsOn: mergedDependsOn }),
|
|
346
|
-
...(mergedEnables && mergedEnables.length > 0 && { enables: mergedEnables }),
|
|
347
|
-
process: processMetadata,
|
|
348
|
-
...(deliverables.length > 0 && { deliverables }),
|
|
349
|
-
...(hasCollision && { sources: codePatternArray }),
|
|
350
|
-
};
|
|
351
|
-
combined.push(dualSourcePattern);
|
|
352
|
-
// Collect warning about collision (structured, not console.warn)
|
|
353
|
-
if (hasCollision) {
|
|
354
|
-
warnings.push(`Pattern name collision: "${patternName}" defined in ${codePatternArray.length} files: ` +
|
|
355
|
-
codePatternArray.map((p) => p.source.file).join(', '));
|
|
356
|
-
}
|
|
357
|
-
// Remove from feature index (mark as matched)
|
|
358
|
-
featureIndex.delete(patternName);
|
|
359
|
-
}
|
|
360
|
-
// Remaining features are feature-only (no matching code)
|
|
361
|
-
for (const [_, { metadata }] of featureIndex.entries()) {
|
|
362
|
-
featureOnly.push(metadata);
|
|
363
|
-
}
|
|
364
|
-
return {
|
|
365
|
-
patterns: combined,
|
|
366
|
-
codeOnly,
|
|
367
|
-
featureOnly,
|
|
368
|
-
validationErrors,
|
|
369
|
-
warnings,
|
|
370
|
-
};
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* Validate dual-source consistency
|
|
374
|
-
*
|
|
375
|
-
* Checks that patterns are properly aligned across sources.
|
|
376
|
-
* Reports code stubs without features and features without code.
|
|
377
|
-
*
|
|
378
|
-
* @param results - Dual-source extraction results
|
|
379
|
-
* @returns Validation summary
|
|
380
|
-
*/
|
|
381
|
-
export function validateDualSource(results) {
|
|
382
|
-
const errors = [];
|
|
383
|
-
const warnings = [];
|
|
384
|
-
// Errors: Cross-validation failures
|
|
385
|
-
for (const error of results.validationErrors) {
|
|
386
|
-
errors.push(`${error.codeName}: ${error.message}`);
|
|
387
|
-
}
|
|
388
|
-
// Warnings: Orphaned stubs (code without feature)
|
|
389
|
-
for (const pattern of results.codeOnly) {
|
|
390
|
-
if (pattern.status === DEFAULT_STATUS) {
|
|
391
|
-
const name = getPatternName(pattern);
|
|
392
|
-
warnings.push(`Roadmap pattern "${name}" has code stub but no feature file`);
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
// Warnings: Features without code stubs
|
|
396
|
-
for (const metadata of results.featureOnly) {
|
|
397
|
-
if (metadata.status === DEFAULT_STATUS) {
|
|
398
|
-
warnings.push(`Feature "${metadata.pattern}" (phase ${metadata.phase}) has no code stub`);
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
return {
|
|
402
|
-
isValid: errors.length === 0,
|
|
403
|
-
errors,
|
|
404
|
-
warnings,
|
|
405
|
-
};
|
|
406
|
-
}
|
|
407
|
-
//# sourceMappingURL=dual-source-extractor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dual-source-extractor.js","sourceRoot":"","sources":["../../src/extractor/dual-source-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @architect
|
|
3
|
-
* @architect-extractor
|
|
4
|
-
* @architect-pattern GherkinExtractor
|
|
5
|
-
* @architect-status completed
|
|
6
|
-
* @architect-implements GherkinRulesSupport
|
|
7
|
-
* @architect-uses GherkinTypes, GherkinASTParser
|
|
8
|
-
* @architect-used-by DualSourceExtractor, Orchestrator
|
|
9
|
-
* @architect-arch-role service
|
|
10
|
-
* @architect-arch-context extractor
|
|
11
|
-
* @architect-arch-layer application
|
|
12
|
-
*
|
|
13
|
-
* ## GherkinExtractor - Convert Feature Files to Pattern Documentation
|
|
14
|
-
*
|
|
15
|
-
* Transforms scanned Gherkin feature files into ExtractedPattern objects
|
|
16
|
-
* for inclusion in generated documentation. Maps feature tags, descriptions,
|
|
17
|
-
* and scenarios to pattern metadata.
|
|
18
|
-
*
|
|
19
|
-
* ### When to Use
|
|
20
|
-
*
|
|
21
|
-
* - When building multi-source documentation (TypeScript + Gherkin)
|
|
22
|
-
* - When converting acceptance criteria to pattern documentation
|
|
23
|
-
* - When defining roadmap patterns in .feature files before implementation
|
|
24
|
-
*
|
|
25
|
-
* ### Key Concepts
|
|
26
|
-
*
|
|
27
|
-
* - **Feature → Pattern**: Feature name becomes pattern name
|
|
28
|
-
* - **Tags → Metadata**: @pattern:Name, @phase:N map to pattern fields
|
|
29
|
-
* - **Scenarios → Use Cases**: Acceptance criteria become "When to Use" examples
|
|
30
|
-
*/
|
|
31
|
-
import type { ScannedGherkinFile } from '../validation-schemas/feature.js';
|
|
32
|
-
import { type ExtractedPattern } from '../validation-schemas/extracted-pattern.js';
|
|
33
|
-
import type { TagRegistry } from '../validation-schemas/tag-registry.js';
|
|
34
|
-
import { type GherkinPatternValidationError } from '../types/errors.js';
|
|
35
|
-
/**
|
|
36
|
-
* Semantic tags for scenario categorization.
|
|
37
|
-
*
|
|
38
|
-
* These tags identify the nature of a scenario (e.g., happy-path, validation)
|
|
39
|
-
* and are extracted from scenario tags during pattern extraction.
|
|
40
|
-
*/
|
|
41
|
-
export declare const SEMANTIC_SCENARIO_TAGS: readonly ["happy-path", "validation", "business-failure", "business-rule", "compensation", "idempotency", "expiration", "workflow-state"];
|
|
42
|
-
/**
|
|
43
|
-
* Configuration for Gherkin extractor
|
|
44
|
-
*/
|
|
45
|
-
export interface GherkinExtractorConfig {
|
|
46
|
-
/** Base directory for computing relative paths */
|
|
47
|
-
readonly baseDir: string;
|
|
48
|
-
/** Tag registry for category inference */
|
|
49
|
-
readonly tagRegistry?: TagRegistry;
|
|
50
|
-
/** Convert scenarios to "When to Use" examples (default: true) */
|
|
51
|
-
readonly scenariosAsUseCases?: boolean;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Result of Gherkin pattern extraction
|
|
55
|
-
*
|
|
56
|
-
* Contains both successfully extracted patterns and any validation errors
|
|
57
|
-
* encountered during extraction. This enables partial success scenarios
|
|
58
|
-
* where some patterns extract successfully while others fail validation.
|
|
59
|
-
*/
|
|
60
|
-
export interface GherkinExtractionResult {
|
|
61
|
-
/** Successfully extracted patterns */
|
|
62
|
-
readonly patterns: readonly ExtractedPattern[];
|
|
63
|
-
/** Validation errors for patterns that failed extraction */
|
|
64
|
-
readonly errors: readonly GherkinPatternValidationError[];
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Extract patterns from scanned Gherkin feature files
|
|
68
|
-
*
|
|
69
|
-
* Converts feature file metadata into ExtractedPattern objects that can be
|
|
70
|
-
* merged with TypeScript-sourced patterns for unified documentation generation.
|
|
71
|
-
*
|
|
72
|
-
* Returns both successfully extracted patterns and validation errors for
|
|
73
|
-
* patterns that failed extraction. This enables partial success scenarios.
|
|
74
|
-
*
|
|
75
|
-
* @param scannedFiles - Array of scanned Gherkin files
|
|
76
|
-
* @param config - Extractor configuration (requires baseDir for relative paths)
|
|
77
|
-
* @returns Object containing extracted patterns and any validation errors
|
|
78
|
-
*
|
|
79
|
-
* @example
|
|
80
|
-
* ```typescript
|
|
81
|
-
* const scanResult = await scanGherkinFiles({
|
|
82
|
-
* patterns: 'tests/features/roadmap/**\/*.feature'
|
|
83
|
-
* });
|
|
84
|
-
*
|
|
85
|
-
* if (scanResult.ok) {
|
|
86
|
-
* const { patterns, errors } = extractPatternsFromGherkin(scanResult.value.files, {
|
|
87
|
-
* baseDir: process.cwd()
|
|
88
|
-
* });
|
|
89
|
-
* console.log(`${patterns.length} patterns extracted, ${errors.length} errors`);
|
|
90
|
-
* }
|
|
91
|
-
* ```
|
|
92
|
-
*/
|
|
93
|
-
export declare function extractPatternsFromGherkin(scannedFiles: readonly ScannedGherkinFile[], config: GherkinExtractorConfig): GherkinExtractionResult;
|
|
94
|
-
/**
|
|
95
|
-
* Infer behavior file path from timeline feature file path using convention
|
|
96
|
-
*
|
|
97
|
-
* Convention: `timeline/phase-N[suffix]-name.feature` → `behavior/name.feature`
|
|
98
|
-
*
|
|
99
|
-
* Handles edge cases:
|
|
100
|
-
* - `phase-37-remaining-work-enhancement.feature` → `remaining-work-enhancement.feature`
|
|
101
|
-
* - `phase-02b-enhanced-dogfooding.feature` → `enhanced-dogfooding.feature`
|
|
102
|
-
* - `phase-03-watch-mode.feature` → `watch-mode.feature`
|
|
103
|
-
*
|
|
104
|
-
* @param timelineFilePath - Relative path to timeline feature file
|
|
105
|
-
* @returns Inferred behavior file path, or undefined if not a timeline file
|
|
106
|
-
*/
|
|
107
|
-
export declare function inferBehaviorFilePath(timelineFilePath: string): string | undefined;
|
|
108
|
-
/**
|
|
109
|
-
* Extract patterns from scanned Gherkin feature files (async variant)
|
|
110
|
-
*
|
|
111
|
-
* This is the async version of `extractPatternsFromGherkin` that performs
|
|
112
|
-
* file existence checks asynchronously in parallel, avoiding event loop blocking.
|
|
113
|
-
*
|
|
114
|
-
* Use this variant when processing many feature files or when running on
|
|
115
|
-
* systems with slow disk I/O.
|
|
116
|
-
*
|
|
117
|
-
* @param scannedFiles - Array of scanned Gherkin files
|
|
118
|
-
* @param config - Extractor configuration (requires baseDir for relative paths)
|
|
119
|
-
* @returns Promise resolving to extracted patterns and validation errors
|
|
120
|
-
*
|
|
121
|
-
* @example
|
|
122
|
-
* ```typescript
|
|
123
|
-
* const scanResult = await scanGherkinFiles({
|
|
124
|
-
* patterns: 'tests/features/roadmap/**\/*.feature'
|
|
125
|
-
* });
|
|
126
|
-
*
|
|
127
|
-
* if (scanResult.ok) {
|
|
128
|
-
* const { patterns, errors } = await extractPatternsFromGherkinAsync(
|
|
129
|
-
* scanResult.value.files,
|
|
130
|
-
* { baseDir: process.cwd() }
|
|
131
|
-
* );
|
|
132
|
-
* }
|
|
133
|
-
* ```
|
|
134
|
-
*/
|
|
135
|
-
export declare function extractPatternsFromGherkinAsync(scannedFiles: readonly ScannedGherkinFile[], config: GherkinExtractorConfig): Promise<GherkinExtractionResult>;
|
|
136
|
-
/**
|
|
137
|
-
* Compute children arrays from parent references
|
|
138
|
-
*
|
|
139
|
-
* Post-processing step that populates the `children` field on each pattern
|
|
140
|
-
* by finding all patterns that reference it via their `parent` field.
|
|
141
|
-
*
|
|
142
|
-
* This enables bidirectional hierarchy navigation:
|
|
143
|
-
* - Child → Parent: via `parent` field (explicit in feature file)
|
|
144
|
-
* - Parent → Children: via `children` field (computed here)
|
|
145
|
-
*
|
|
146
|
-
* **Performance Note:** This function does NOT re-validate patterns through
|
|
147
|
-
* the schema because:
|
|
148
|
-
* 1. Input patterns have already been validated by extractPatternsFromGherkin()
|
|
149
|
-
* 2. We're only adding a `children: string[]` field which matches the schema
|
|
150
|
-
* 3. Re-validation of the complex ExtractedPatternSchema is expensive (~320 lines)
|
|
151
|
-
*
|
|
152
|
-
* This invariant is safe because:
|
|
153
|
-
* - The children array is derived from validated pattern names
|
|
154
|
-
* - ExtractedPatternSchema.children is defined as `z.array(z.string()).readonly().optional()`
|
|
155
|
-
*
|
|
156
|
-
* @param patterns - Array of validated ExtractedPattern objects
|
|
157
|
-
* @returns New array with `children` populated (does not mutate input)
|
|
158
|
-
*
|
|
159
|
-
* @example
|
|
160
|
-
* ```typescript
|
|
161
|
-
* const rawPatterns = extractPatternsFromGherkin(files, config);
|
|
162
|
-
* const patternsWithHierarchy = computeHierarchyChildren(rawPatterns);
|
|
163
|
-
*
|
|
164
|
-
* // Now epic patterns have children arrays
|
|
165
|
-
* const epic = patternsWithHierarchy.find(p => p.level === 'epic');
|
|
166
|
-
* console.log(epic.children); // ["PhaseA", "PhaseB"]
|
|
167
|
-
* ```
|
|
168
|
-
*/
|
|
169
|
-
export declare function computeHierarchyChildren(patterns: readonly ExtractedPattern[]): ExtractedPattern[];
|
|
170
|
-
//# sourceMappingURL=gherkin-extractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gherkin-extractor.d.ts","sourceRoot":"","sources":["../../src/extractor/gherkin-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAOH,OAAO,KAAK,EACV,kBAAkB,EAGnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAMzE,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,oBAAoB,CAAC;AAQ5B;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,2IASzB,CAAC;AA2LX;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,kEAAkE;IAClE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACxC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,SAAS,6BAA6B,EAAE,CAAC;CAC3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,SAAS,kBAAkB,EAAE,EAC3C,MAAM,EAAE,sBAAsB,GAC7B,uBAAuB,CAgHzB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOlF;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,+BAA+B,CACnD,YAAY,EAAE,SAAS,kBAAkB,EAAE,EAC3C,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,uBAAuB,CAAC,CA4GlC;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GACpC,gBAAgB,EAAE,CA4BpB"}
|