@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,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @architect
|
|
3
|
-
* @architect-core
|
|
4
|
-
* @architect-pattern CodecBasedGenerator
|
|
5
|
-
* @architect-status completed
|
|
6
|
-
* @architect-arch-role service
|
|
7
|
-
* @architect-arch-context generator
|
|
8
|
-
* @architect-arch-layer application
|
|
9
|
-
*
|
|
10
|
-
* ## Codec-Based Generator
|
|
11
|
-
*
|
|
12
|
-
* Adapts the new RenderableDocument Model (RDM) codec system to the
|
|
13
|
-
* existing DocumentGenerator interface. This allows codec-based document
|
|
14
|
-
* generation to work seamlessly with the existing orchestrator.
|
|
15
|
-
*
|
|
16
|
-
* ### When to Use
|
|
17
|
-
*
|
|
18
|
-
* - When creating a new document type generator using the RDM codec pattern
|
|
19
|
-
* - When adapting a Zod codec to the DocumentGenerator interface
|
|
20
|
-
* - When understanding how codec-based generation integrates with the orchestrator
|
|
21
|
-
*
|
|
22
|
-
* Architecture:
|
|
23
|
-
* ```
|
|
24
|
-
* GeneratorContext.masterDataset → Codec.decode() → RenderableDocument → renderDocumentWithFiles() → OutputFile[]
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
import type { DocumentGenerator, GeneratorContext, GeneratorOutput } from './types.js';
|
|
28
|
-
import type { ExtractedPattern } from '../validation-schemas/index.js';
|
|
29
|
-
import { type DocumentType } from '../renderable/generate.js';
|
|
30
|
-
/**
|
|
31
|
-
* Codec-based generator that wraps the new RDM system.
|
|
32
|
-
*
|
|
33
|
-
* Each instance handles a single document type and uses the corresponding
|
|
34
|
-
* codec to transform MasterDataset into RenderableDocument, then renders
|
|
35
|
-
* to markdown.
|
|
36
|
-
*/
|
|
37
|
-
export declare class CodecBasedGenerator implements DocumentGenerator {
|
|
38
|
-
readonly name: string;
|
|
39
|
-
private readonly documentType;
|
|
40
|
-
readonly description: string;
|
|
41
|
-
constructor(name: string, documentType: DocumentType);
|
|
42
|
-
generate(_patterns: readonly ExtractedPattern[], context: GeneratorContext): Promise<GeneratorOutput>;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Create a codec-based generator for a specific document type.
|
|
46
|
-
*
|
|
47
|
-
* @param name - Generator name for registry
|
|
48
|
-
* @param documentType - Document type key from DOCUMENT_TYPES
|
|
49
|
-
* @returns DocumentGenerator instance
|
|
50
|
-
*
|
|
51
|
-
* @example
|
|
52
|
-
* ```typescript
|
|
53
|
-
* const generator = createCodecGenerator("patterns-v2", "patterns");
|
|
54
|
-
* generatorRegistry.register(generator);
|
|
55
|
-
* ```
|
|
56
|
-
*/
|
|
57
|
-
export declare function createCodecGenerator(name: string, documentType: DocumentType): DocumentGenerator;
|
|
58
|
-
/**
|
|
59
|
-
* Available codec-based document types.
|
|
60
|
-
* Re-exported from generate.ts for convenience.
|
|
61
|
-
*/
|
|
62
|
-
export { DOCUMENT_TYPES, type DocumentType } from '../renderable/generate.js';
|
|
63
|
-
//# sourceMappingURL=codec-based.d.ts.map
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @architect
|
|
3
|
-
* @architect-core
|
|
4
|
-
* @architect-pattern CodecBasedGenerator
|
|
5
|
-
* @architect-status completed
|
|
6
|
-
* @architect-arch-role service
|
|
7
|
-
* @architect-arch-context generator
|
|
8
|
-
* @architect-arch-layer application
|
|
9
|
-
*
|
|
10
|
-
* ## Codec-Based Generator
|
|
11
|
-
*
|
|
12
|
-
* Adapts the new RenderableDocument Model (RDM) codec system to the
|
|
13
|
-
* existing DocumentGenerator interface. This allows codec-based document
|
|
14
|
-
* generation to work seamlessly with the existing orchestrator.
|
|
15
|
-
*
|
|
16
|
-
* ### When to Use
|
|
17
|
-
*
|
|
18
|
-
* - When creating a new document type generator using the RDM codec pattern
|
|
19
|
-
* - When adapting a Zod codec to the DocumentGenerator interface
|
|
20
|
-
* - When understanding how codec-based generation integrates with the orchestrator
|
|
21
|
-
*
|
|
22
|
-
* Architecture:
|
|
23
|
-
* ```
|
|
24
|
-
* GeneratorContext.masterDataset → Codec.decode() → RenderableDocument → renderDocumentWithFiles() → OutputFile[]
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
import { generateDocument, DOCUMENT_TYPES } from '../renderable/generate.js';
|
|
28
|
-
/**
|
|
29
|
-
* Codec-based generator that wraps the new RDM system.
|
|
30
|
-
*
|
|
31
|
-
* Each instance handles a single document type and uses the corresponding
|
|
32
|
-
* codec to transform MasterDataset into RenderableDocument, then renders
|
|
33
|
-
* to markdown.
|
|
34
|
-
*/
|
|
35
|
-
export class CodecBasedGenerator {
|
|
36
|
-
name;
|
|
37
|
-
documentType;
|
|
38
|
-
description;
|
|
39
|
-
constructor(name, documentType) {
|
|
40
|
-
this.name = name;
|
|
41
|
-
this.documentType = documentType;
|
|
42
|
-
this.description = DOCUMENT_TYPES[documentType].description;
|
|
43
|
-
}
|
|
44
|
-
generate(_patterns, context) {
|
|
45
|
-
// Codec-based generation requires MasterDataset
|
|
46
|
-
if (!context.masterDataset) {
|
|
47
|
-
return Promise.resolve({
|
|
48
|
-
files: [],
|
|
49
|
-
errors: [
|
|
50
|
-
{
|
|
51
|
-
type: 'generator',
|
|
52
|
-
message: `Generator "${this.name}" requires MasterDataset in context but none was provided. Ensure the orchestrator creates a MasterDataset before running codec-based generators.`,
|
|
53
|
-
},
|
|
54
|
-
],
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
// Convert RuntimeMasterDataset to MasterDataset format
|
|
58
|
-
// The RDM codecs expect the Zod-inferred MasterDataset type
|
|
59
|
-
const dataset = context.masterDataset;
|
|
60
|
-
// Generate document using codec, passing through any codec-specific options
|
|
61
|
-
const outputFiles = generateDocument(this.documentType, dataset, context.codecOptions);
|
|
62
|
-
return Promise.resolve({
|
|
63
|
-
files: outputFiles,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Create a codec-based generator for a specific document type.
|
|
69
|
-
*
|
|
70
|
-
* @param name - Generator name for registry
|
|
71
|
-
* @param documentType - Document type key from DOCUMENT_TYPES
|
|
72
|
-
* @returns DocumentGenerator instance
|
|
73
|
-
*
|
|
74
|
-
* @example
|
|
75
|
-
* ```typescript
|
|
76
|
-
* const generator = createCodecGenerator("patterns-v2", "patterns");
|
|
77
|
-
* generatorRegistry.register(generator);
|
|
78
|
-
* ```
|
|
79
|
-
*/
|
|
80
|
-
export function createCodecGenerator(name, documentType) {
|
|
81
|
-
return new CodecBasedGenerator(name, documentType);
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Available codec-based document types.
|
|
85
|
-
* Re-exported from generate.ts for convenience.
|
|
86
|
-
*/
|
|
87
|
-
export { DOCUMENT_TYPES } from '../renderable/generate.js';
|
|
88
|
-
//# sourceMappingURL=codec-based.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codec-based.js","sourceRoot":"","sources":["../../src/generators/codec-based.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,EAAE,gBAAgB,EAAqB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhG;;;;;;GAMG;AACH,MAAM,OAAO,mBAAmB;IAInB;IACQ;IAJV,WAAW,CAAS;IAE7B,YACW,IAAY,EACJ,YAA0B;QADlC,SAAI,GAAJ,IAAI,CAAQ;QACJ,iBAAY,GAAZ,YAAY,CAAc;QAE3C,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC;IAC9D,CAAC;IAED,QAAQ,CACN,SAAsC,EACtC,OAAyB;QAEzB,gDAAgD;QAChD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,OAAO,CAAC;gBACrB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,WAAoB;wBAC1B,OAAO,EAAE,cAAc,IAAI,CAAC,IAAI,mJAAmJ;qBACpL;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,uDAAuD;QACvD,4DAA4D;QAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;QAEtC,4EAA4E;QAC5E,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAEvF,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,YAA0B;IAC3E,OAAO,IAAI,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAqB,MAAM,2BAA2B,CAAC"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @architect
|
|
3
|
-
* @architect-core
|
|
4
|
-
* @architect-pattern ContentDeduplicator
|
|
5
|
-
* @architect-status completed
|
|
6
|
-
* @architect-arch-role infrastructure
|
|
7
|
-
* @architect-arch-context generator
|
|
8
|
-
* @architect-arch-layer infrastructure
|
|
9
|
-
*
|
|
10
|
-
* ## Content Deduplicator - Duplicate Content Detection and Merging
|
|
11
|
-
*
|
|
12
|
-
* Identifies and merges duplicate sections extracted from multiple sources.
|
|
13
|
-
* Uses content fingerprinting to detect duplicates and merges them based on
|
|
14
|
-
* configurable priority rules.
|
|
15
|
-
*
|
|
16
|
-
* ### When to Use
|
|
17
|
-
*
|
|
18
|
-
* - After source mapping extracts content from multiple files
|
|
19
|
-
* - When multiple sources may contain the same documentation
|
|
20
|
-
* - Before assembling the final RenderableDocument
|
|
21
|
-
*
|
|
22
|
-
* ### Key Concepts
|
|
23
|
-
*
|
|
24
|
-
* - **Content Fingerprint**: SHA-256 hash of normalized text for duplicate detection
|
|
25
|
-
* - **Source Priority**: TypeScript > Decision > Feature file
|
|
26
|
-
* - **Content Richness**: More lines wins when priorities are equal
|
|
27
|
-
* - **Header Disambiguation**: Adds source suffix when headers conflict
|
|
28
|
-
*/
|
|
29
|
-
import type { ExtractedSection } from './source-mapper.js';
|
|
30
|
-
import type { Warning, WarningCollector } from './warning-collector.js';
|
|
31
|
-
/**
|
|
32
|
-
* A content block with metadata for deduplication
|
|
33
|
-
*/
|
|
34
|
-
export interface ContentBlock {
|
|
35
|
-
/** Section header text */
|
|
36
|
-
header: string;
|
|
37
|
-
/** Section body content */
|
|
38
|
-
body: string;
|
|
39
|
-
/** Source file path */
|
|
40
|
-
source: string;
|
|
41
|
-
/** Content fingerprint for duplicate detection */
|
|
42
|
-
fingerprint?: string;
|
|
43
|
-
/** Number of lines in the body */
|
|
44
|
-
lineCount: number;
|
|
45
|
-
/** Original index in the input array (for precise removal) */
|
|
46
|
-
originalIndex?: number;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* A pair of content blocks that were merged
|
|
50
|
-
*/
|
|
51
|
-
export interface MergedPair {
|
|
52
|
-
/** The content block that was kept */
|
|
53
|
-
kept: ContentBlock;
|
|
54
|
-
/** The content block that was removed */
|
|
55
|
-
removed: ContentBlock;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Result of deduplication processing.
|
|
59
|
-
*
|
|
60
|
-
* Warnings are captured via two parallel paths:
|
|
61
|
-
* 1. Through the optional `warningCollector` passed in options (side-effect, preferred)
|
|
62
|
-
* 2. In the returned `warnings` array (for callers without a collector)
|
|
63
|
-
*
|
|
64
|
-
* When a `warningCollector` is provided, warnings flow to both paths. Callers should
|
|
65
|
-
* use ONE path for consuming warnings - either the collector OR the returned array.
|
|
66
|
-
* The decision-doc-generator uses the collector when available, falling back to the
|
|
67
|
-
* returned array when warning collection is disabled.
|
|
68
|
-
*/
|
|
69
|
-
export interface DeduplicationResult {
|
|
70
|
-
/** Deduplicated sections in original order */
|
|
71
|
-
sections: ExtractedSection[];
|
|
72
|
-
/** Pairs of content that were merged */
|
|
73
|
-
mergedPairs: MergedPair[];
|
|
74
|
-
/** Warnings produced during deduplication (always populated regardless of collector) */
|
|
75
|
-
warnings: Warning[];
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Options for deduplication
|
|
79
|
-
*/
|
|
80
|
-
export interface DeduplicatorOptions {
|
|
81
|
-
/** Optional warning collector for capturing warnings */
|
|
82
|
-
warningCollector?: WarningCollector;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Compute a content fingerprint using SHA-256.
|
|
86
|
-
* Returns a 16-character hex string (64 bits).
|
|
87
|
-
*
|
|
88
|
-
* Note: 16 hex chars (64 bits) provides sufficient collision resistance for
|
|
89
|
-
* documentation deduplication. Birthday paradox collision probability is
|
|
90
|
-
* less than 0.001% for up to 10,000 sections, which exceeds expected usage.
|
|
91
|
-
*/
|
|
92
|
-
export declare function computeFingerprint(content: string): string;
|
|
93
|
-
/**
|
|
94
|
-
* Find duplicate content blocks by fingerprint.
|
|
95
|
-
* Returns a map from fingerprint to all blocks with that fingerprint.
|
|
96
|
-
*/
|
|
97
|
-
export declare function findDuplicates(blocks: ContentBlock[]): Map<string, ContentBlock[]>;
|
|
98
|
-
/**
|
|
99
|
-
* Deduplicate sections extracted from multiple sources.
|
|
100
|
-
*
|
|
101
|
-
* Algorithm:
|
|
102
|
-
* 1. Convert sections to content blocks with fingerprints
|
|
103
|
-
* 2. Find duplicate fingerprints
|
|
104
|
-
* 3. For each duplicate group, keep highest priority source (or richest content)
|
|
105
|
-
* 4. Handle header conflicts (same header, different content)
|
|
106
|
-
* 5. Remove empty sections
|
|
107
|
-
* 6. Preserve original order (first occurrence position)
|
|
108
|
-
*
|
|
109
|
-
* @param sections - Extracted sections to deduplicate
|
|
110
|
-
* @param options - Deduplication options
|
|
111
|
-
* @returns Deduplicated sections with merge info and warnings
|
|
112
|
-
*/
|
|
113
|
-
export declare function deduplicateSections(sections: readonly ExtractedSection[], options?: DeduplicatorOptions): DeduplicationResult;
|
|
114
|
-
//# sourceMappingURL=content-deduplicator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content-deduplicator.d.ts","sourceRoot":"","sources":["../../src/generators/content-deduplicator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAMxE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IAEf,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IAEf,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAElB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,sCAAsC;IACtC,IAAI,EAAE,YAAY,CAAC;IAEnB,yCAAyC;IACzC,OAAO,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAE7B,wCAAwC;IACxC,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B,wFAAwF;IACxF,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AA0CD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO1D;AA4DD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAyBlF;AA8ED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,mBAAmB,CA4IrB"}
|
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @architect
|
|
3
|
-
* @architect-core
|
|
4
|
-
* @architect-pattern ContentDeduplicator
|
|
5
|
-
* @architect-status completed
|
|
6
|
-
* @architect-arch-role infrastructure
|
|
7
|
-
* @architect-arch-context generator
|
|
8
|
-
* @architect-arch-layer infrastructure
|
|
9
|
-
*
|
|
10
|
-
* ## Content Deduplicator - Duplicate Content Detection and Merging
|
|
11
|
-
*
|
|
12
|
-
* Identifies and merges duplicate sections extracted from multiple sources.
|
|
13
|
-
* Uses content fingerprinting to detect duplicates and merges them based on
|
|
14
|
-
* configurable priority rules.
|
|
15
|
-
*
|
|
16
|
-
* ### When to Use
|
|
17
|
-
*
|
|
18
|
-
* - After source mapping extracts content from multiple files
|
|
19
|
-
* - When multiple sources may contain the same documentation
|
|
20
|
-
* - Before assembling the final RenderableDocument
|
|
21
|
-
*
|
|
22
|
-
* ### Key Concepts
|
|
23
|
-
*
|
|
24
|
-
* - **Content Fingerprint**: SHA-256 hash of normalized text for duplicate detection
|
|
25
|
-
* - **Source Priority**: TypeScript > Decision > Feature file
|
|
26
|
-
* - **Content Richness**: More lines wins when priorities are equal
|
|
27
|
-
* - **Header Disambiguation**: Adds source suffix when headers conflict
|
|
28
|
-
*/
|
|
29
|
-
import * as crypto from 'node:crypto';
|
|
30
|
-
// =============================================================================
|
|
31
|
-
// Constants
|
|
32
|
-
// =============================================================================
|
|
33
|
-
/**
|
|
34
|
-
* Source priority values (higher = more authoritative)
|
|
35
|
-
*/
|
|
36
|
-
const SOURCE_PRIORITY = {
|
|
37
|
-
typescript: 3, // .ts files
|
|
38
|
-
decision: 2, // THIS DECISION markers
|
|
39
|
-
feature: 1, // .feature files
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Length of fingerprint hex string to display.
|
|
43
|
-
*
|
|
44
|
-
* 16 hex characters = 64 bits provides sufficient collision resistance for
|
|
45
|
-
* documentation deduplication. Birthday paradox collision probability is
|
|
46
|
-
* less than 0.001% for up to 10,000 sections.
|
|
47
|
-
*/
|
|
48
|
-
const FINGERPRINT_DISPLAY_LENGTH = 16;
|
|
49
|
-
// =============================================================================
|
|
50
|
-
// Helper Functions
|
|
51
|
-
// =============================================================================
|
|
52
|
-
/**
|
|
53
|
-
* Normalize content for fingerprinting.
|
|
54
|
-
* Strips whitespace variations to detect semantically identical content.
|
|
55
|
-
*/
|
|
56
|
-
function normalizeForFingerprint(content) {
|
|
57
|
-
return content
|
|
58
|
-
.split('\n')
|
|
59
|
-
.map((line) => line.trim())
|
|
60
|
-
.filter((line) => line.length > 0)
|
|
61
|
-
.join(' ')
|
|
62
|
-
.replace(/\s+/g, ' ')
|
|
63
|
-
.toLowerCase();
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Compute a content fingerprint using SHA-256.
|
|
67
|
-
* Returns a 16-character hex string (64 bits).
|
|
68
|
-
*
|
|
69
|
-
* Note: 16 hex chars (64 bits) provides sufficient collision resistance for
|
|
70
|
-
* documentation deduplication. Birthday paradox collision probability is
|
|
71
|
-
* less than 0.001% for up to 10,000 sections, which exceeds expected usage.
|
|
72
|
-
*/
|
|
73
|
-
export function computeFingerprint(content) {
|
|
74
|
-
const normalized = normalizeForFingerprint(content);
|
|
75
|
-
return crypto
|
|
76
|
-
.createHash('sha256')
|
|
77
|
-
.update(normalized)
|
|
78
|
-
.digest('hex')
|
|
79
|
-
.slice(0, FINGERPRINT_DISPLAY_LENGTH);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Determine source type from file path.
|
|
83
|
-
* Returns isUnknown=true for unrecognized file extensions.
|
|
84
|
-
*/
|
|
85
|
-
function getSourceType(sourceFile) {
|
|
86
|
-
if (sourceFile.endsWith('.ts')) {
|
|
87
|
-
return { type: 'typescript', isUnknown: false };
|
|
88
|
-
}
|
|
89
|
-
if (sourceFile.toUpperCase().includes('THIS DECISION')) {
|
|
90
|
-
return { type: 'decision', isUnknown: false };
|
|
91
|
-
}
|
|
92
|
-
if (sourceFile.endsWith('.feature')) {
|
|
93
|
-
return { type: 'feature', isUnknown: false };
|
|
94
|
-
}
|
|
95
|
-
// Default to feature (lowest priority) for unknown types
|
|
96
|
-
return { type: 'feature', isUnknown: true };
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Get priority value for a source file
|
|
100
|
-
*/
|
|
101
|
-
function getSourcePriority(sourceFile) {
|
|
102
|
-
const { type } = getSourceType(sourceFile);
|
|
103
|
-
return SOURCE_PRIORITY[type] ?? 1;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Count non-empty lines in content
|
|
107
|
-
*/
|
|
108
|
-
function countLines(content) {
|
|
109
|
-
return content.split('\n').filter((line) => line.trim().length > 0).length;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Convert ExtractedSection to ContentBlock with original index tracking
|
|
113
|
-
*
|
|
114
|
-
* @param section - The extracted section to convert
|
|
115
|
-
* @param index - Original index in the sections array (for precise removal)
|
|
116
|
-
*/
|
|
117
|
-
function sectionToBlock(section, index) {
|
|
118
|
-
return {
|
|
119
|
-
header: section.section,
|
|
120
|
-
body: section.content,
|
|
121
|
-
source: section.sourceFile,
|
|
122
|
-
fingerprint: computeFingerprint(section.content),
|
|
123
|
-
lineCount: countLines(section.content),
|
|
124
|
-
originalIndex: index,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Find duplicate content blocks by fingerprint.
|
|
129
|
-
* Returns a map from fingerprint to all blocks with that fingerprint.
|
|
130
|
-
*/
|
|
131
|
-
export function findDuplicates(blocks) {
|
|
132
|
-
const groups = new Map();
|
|
133
|
-
for (const block of blocks) {
|
|
134
|
-
if (!block.fingerprint) {
|
|
135
|
-
continue;
|
|
136
|
-
}
|
|
137
|
-
const existing = groups.get(block.fingerprint);
|
|
138
|
-
if (existing) {
|
|
139
|
-
existing.push(block);
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
groups.set(block.fingerprint, [block]);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
// Filter to only groups with duplicates
|
|
146
|
-
const duplicates = new Map();
|
|
147
|
-
for (const [fingerprint, group] of groups) {
|
|
148
|
-
if (group.length > 1) {
|
|
149
|
-
duplicates.set(fingerprint, group);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return duplicates;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Choose which block to keep from a set of duplicates.
|
|
156
|
-
* Higher priority source wins; if equal, richer content (more lines) wins.
|
|
157
|
-
*
|
|
158
|
-
* Uses non-empty tuple type to guarantee at compile time that at least
|
|
159
|
-
* one block exists. Callers must ensure the array is non-empty before calling.
|
|
160
|
-
*
|
|
161
|
-
* @param blocks - Non-empty array of content blocks (at least one element)
|
|
162
|
-
* @returns The winning block
|
|
163
|
-
*/
|
|
164
|
-
function chooseWinner(blocks) {
|
|
165
|
-
const [first, ...rest] = blocks;
|
|
166
|
-
let winner = first;
|
|
167
|
-
for (const block of rest) {
|
|
168
|
-
const winnerPriority = getSourcePriority(winner.source);
|
|
169
|
-
const blockPriority = getSourcePriority(block.source);
|
|
170
|
-
if (blockPriority > winnerPriority) {
|
|
171
|
-
winner = block;
|
|
172
|
-
}
|
|
173
|
-
else if (blockPriority === winnerPriority && block.lineCount > winner.lineCount) {
|
|
174
|
-
winner = block;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
return winner;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Find sections with same header but different content (header conflicts)
|
|
181
|
-
*/
|
|
182
|
-
function findHeaderConflicts(sections) {
|
|
183
|
-
const byHeader = new Map();
|
|
184
|
-
for (const section of sections) {
|
|
185
|
-
const existing = byHeader.get(section.section);
|
|
186
|
-
if (existing) {
|
|
187
|
-
existing.push(section);
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
byHeader.set(section.section, [section]);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
// Filter to only headers with multiple sections AND different fingerprints
|
|
194
|
-
const conflicts = new Map();
|
|
195
|
-
for (const [header, group] of byHeader) {
|
|
196
|
-
if (group.length > 1) {
|
|
197
|
-
const fingerprints = new Set(group.map((s) => computeFingerprint(s.content)));
|
|
198
|
-
if (fingerprints.size > 1) {
|
|
199
|
-
conflicts.set(header, group);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
return conflicts;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Disambiguate headers by adding source suffix
|
|
207
|
-
*/
|
|
208
|
-
function disambiguateHeader(section) {
|
|
209
|
-
// Extract a short source name from the file path
|
|
210
|
-
const sourceName = section.sourceFile
|
|
211
|
-
.replace(/^.*\//, '') // Remove path
|
|
212
|
-
.replace(/\.[^.]+$/, '') // Remove extension
|
|
213
|
-
.replace(/[_]/g, '-') // Normalize underscores to hyphens
|
|
214
|
-
.toLowerCase();
|
|
215
|
-
return `${section.section} (from ${sourceName})`;
|
|
216
|
-
}
|
|
217
|
-
// =============================================================================
|
|
218
|
-
// Main Function
|
|
219
|
-
// =============================================================================
|
|
220
|
-
/**
|
|
221
|
-
* Deduplicate sections extracted from multiple sources.
|
|
222
|
-
*
|
|
223
|
-
* Algorithm:
|
|
224
|
-
* 1. Convert sections to content blocks with fingerprints
|
|
225
|
-
* 2. Find duplicate fingerprints
|
|
226
|
-
* 3. For each duplicate group, keep highest priority source (or richest content)
|
|
227
|
-
* 4. Handle header conflicts (same header, different content)
|
|
228
|
-
* 5. Remove empty sections
|
|
229
|
-
* 6. Preserve original order (first occurrence position)
|
|
230
|
-
*
|
|
231
|
-
* @param sections - Extracted sections to deduplicate
|
|
232
|
-
* @param options - Deduplication options
|
|
233
|
-
* @returns Deduplicated sections with merge info and warnings
|
|
234
|
-
*/
|
|
235
|
-
export function deduplicateSections(sections, options) {
|
|
236
|
-
const warnings = [];
|
|
237
|
-
const mergedPairs = [];
|
|
238
|
-
if (sections.length === 0) {
|
|
239
|
-
return { sections: [], mergedPairs: [], warnings: [] };
|
|
240
|
-
}
|
|
241
|
-
// Check for unknown source types and warn (prevents silent data deprioritization)
|
|
242
|
-
const seenUnknownExtensions = new Set();
|
|
243
|
-
for (const section of sections) {
|
|
244
|
-
const { isUnknown } = getSourceType(section.sourceFile);
|
|
245
|
-
if (isUnknown) {
|
|
246
|
-
const ext = section.sourceFile.slice(section.sourceFile.lastIndexOf('.'));
|
|
247
|
-
// Only warn once per extension type to avoid flooding
|
|
248
|
-
if (!seenUnknownExtensions.has(ext)) {
|
|
249
|
-
seenUnknownExtensions.add(ext);
|
|
250
|
-
const warning = {
|
|
251
|
-
source: section.sourceFile,
|
|
252
|
-
category: 'deduplication',
|
|
253
|
-
message: `Unknown file type "${ext}" treated as feature (lowest priority)`,
|
|
254
|
-
};
|
|
255
|
-
warnings.push(warning);
|
|
256
|
-
if (options?.warningCollector) {
|
|
257
|
-
options.warningCollector.capture(warning);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
// Convert to content blocks with original indices for precise removal
|
|
263
|
-
const blocks = sections.map((section, index) => sectionToBlock(section, index));
|
|
264
|
-
// Find duplicates by fingerprint
|
|
265
|
-
const duplicates = findDuplicates(blocks);
|
|
266
|
-
// Track which sections to remove (by original index)
|
|
267
|
-
const removeIndices = new Set();
|
|
268
|
-
// Process each duplicate group
|
|
269
|
-
for (const [_fingerprint, duplicateBlocks] of duplicates) {
|
|
270
|
-
// Defensive guard: findDuplicates() should only return groups with 2+ blocks
|
|
271
|
-
// (see filter at line 216), but we guard against invariant violations.
|
|
272
|
-
if (duplicateBlocks.length === 0) {
|
|
273
|
-
continue;
|
|
274
|
-
}
|
|
275
|
-
const winner = chooseWinner(duplicateBlocks);
|
|
276
|
-
// Mark losers for removal using their original indices
|
|
277
|
-
for (const block of duplicateBlocks) {
|
|
278
|
-
if (block !== winner) {
|
|
279
|
-
// Use the tracked original index for precise removal
|
|
280
|
-
// This avoids mismatch when same file has duplicate headers
|
|
281
|
-
const idx = block.originalIndex;
|
|
282
|
-
if (idx !== undefined) {
|
|
283
|
-
removeIndices.add(idx);
|
|
284
|
-
mergedPairs.push({
|
|
285
|
-
kept: winner,
|
|
286
|
-
removed: block,
|
|
287
|
-
});
|
|
288
|
-
// Capture warning if collector provided
|
|
289
|
-
if (options?.warningCollector) {
|
|
290
|
-
options.warningCollector.capture({
|
|
291
|
-
source: block.source,
|
|
292
|
-
category: 'deduplication',
|
|
293
|
-
message: `Duplicate content merged; kept version from ${winner.source}`,
|
|
294
|
-
});
|
|
295
|
-
}
|
|
296
|
-
warnings.push({
|
|
297
|
-
source: block.source,
|
|
298
|
-
category: 'deduplication',
|
|
299
|
-
message: `Duplicate content merged; kept version from ${winner.source}`,
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
// Build filtered section list (preserving order)
|
|
306
|
-
// Explicitly type to ensure ExtractedSection compatibility
|
|
307
|
-
let filteredSections = sections
|
|
308
|
-
.filter((_, idx) => !removeIndices.has(idx))
|
|
309
|
-
.map((s) => ({
|
|
310
|
-
section: s.section,
|
|
311
|
-
sourceFile: s.sourceFile,
|
|
312
|
-
extractionMethod: s.extractionMethod,
|
|
313
|
-
content: s.content,
|
|
314
|
-
...(s.shapes !== undefined && { shapes: s.shapes }),
|
|
315
|
-
...(s.docStrings !== undefined && { docStrings: s.docStrings }),
|
|
316
|
-
}));
|
|
317
|
-
// Handle header conflicts (same header, different content from different sources)
|
|
318
|
-
const headerConflicts = findHeaderConflicts(filteredSections);
|
|
319
|
-
for (const [header, conflictingSections] of headerConflicts) {
|
|
320
|
-
// Disambiguate headers
|
|
321
|
-
for (const section of conflictingSections) {
|
|
322
|
-
const idx = filteredSections.findIndex((s) => s.section === header && s.sourceFile === section.sourceFile);
|
|
323
|
-
const existing = idx !== -1 ? filteredSections[idx] : undefined;
|
|
324
|
-
if (idx !== -1 && existing) {
|
|
325
|
-
filteredSections[idx] = {
|
|
326
|
-
section: disambiguateHeader(section),
|
|
327
|
-
sourceFile: existing.sourceFile,
|
|
328
|
-
extractionMethod: existing.extractionMethod,
|
|
329
|
-
content: existing.content,
|
|
330
|
-
...(existing.shapes !== undefined && { shapes: existing.shapes }),
|
|
331
|
-
...(existing.docStrings !== undefined && { docStrings: existing.docStrings }),
|
|
332
|
-
};
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
// Remove empty sections
|
|
337
|
-
const emptySections = filteredSections.filter((s) => !s.content || s.content.trim().length === 0);
|
|
338
|
-
for (const emptySection of emptySections) {
|
|
339
|
-
const warning = {
|
|
340
|
-
source: emptySection.sourceFile,
|
|
341
|
-
category: 'deduplication',
|
|
342
|
-
message: `Empty section "${emptySection.section}" removed`,
|
|
343
|
-
};
|
|
344
|
-
warnings.push(warning);
|
|
345
|
-
if (options?.warningCollector) {
|
|
346
|
-
options.warningCollector.capture(warning);
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
filteredSections = filteredSections.filter((s) => s.content.trim().length > 0);
|
|
350
|
-
return {
|
|
351
|
-
sections: filteredSections,
|
|
352
|
-
mergedPairs,
|
|
353
|
-
warnings,
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
|
-
//# sourceMappingURL=content-deduplicator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content-deduplicator.js","sourceRoot":"","sources":["../../src/generators/content-deduplicator.ts"],"names":[],"mappings":"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"}
|