@libar-dev/architect 1.0.0-pre.3
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 +50 -0
- package/LICENSE +25 -0
- package/LICENSE-MCP +62 -0
- package/README.md +147 -0
- package/dist/api/arch-queries.d.ts +95 -0
- package/dist/api/arch-queries.d.ts.map +1 -0
- package/dist/api/arch-queries.js +310 -0
- package/dist/api/arch-queries.js.map +1 -0
- package/dist/api/context-assembler.d.ts +124 -0
- package/dist/api/context-assembler.d.ts.map +1 -0
- package/dist/api/context-assembler.js +472 -0
- package/dist/api/context-assembler.js.map +1 -0
- package/dist/api/context-formatter.d.ts +26 -0
- package/dist/api/context-formatter.d.ts.map +1 -0
- package/dist/api/context-formatter.js +183 -0
- package/dist/api/context-formatter.js.map +1 -0
- package/dist/api/coverage-analyzer.d.ts +38 -0
- package/dist/api/coverage-analyzer.d.ts.map +1 -0
- package/dist/api/coverage-analyzer.js +117 -0
- package/dist/api/coverage-analyzer.js.map +1 -0
- package/dist/api/fuzzy-match.d.ts +75 -0
- package/dist/api/fuzzy-match.d.ts.map +1 -0
- package/dist/api/fuzzy-match.js +150 -0
- package/dist/api/fuzzy-match.js.map +1 -0
- package/dist/api/handoff-generator.d.ts +45 -0
- package/dist/api/handoff-generator.d.ts.map +1 -0
- package/dist/api/handoff-generator.js +139 -0
- package/dist/api/handoff-generator.js.map +1 -0
- package/dist/api/index.d.ts +61 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +54 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/pattern-helpers.d.ts +51 -0
- package/dist/api/pattern-helpers.d.ts.map +1 -0
- package/dist/api/pattern-helpers.js +84 -0
- package/dist/api/pattern-helpers.js.map +1 -0
- package/dist/api/process-state.d.ts +224 -0
- package/dist/api/process-state.d.ts.map +1 -0
- package/dist/api/process-state.js +308 -0
- package/dist/api/process-state.js.map +1 -0
- package/dist/api/rules-query.d.ts +60 -0
- package/dist/api/rules-query.d.ts.map +1 -0
- package/dist/api/rules-query.js +154 -0
- package/dist/api/rules-query.js.map +1 -0
- package/dist/api/scope-validator.d.ts +56 -0
- package/dist/api/scope-validator.d.ts.map +1 -0
- package/dist/api/scope-validator.js +293 -0
- package/dist/api/scope-validator.js.map +1 -0
- package/dist/api/stub-resolver.d.ts +117 -0
- package/dist/api/stub-resolver.d.ts.map +1 -0
- package/dist/api/stub-resolver.js +154 -0
- package/dist/api/stub-resolver.js.map +1 -0
- package/dist/api/summarize.d.ts +75 -0
- package/dist/api/summarize.d.ts.map +1 -0
- package/dist/api/summarize.js +97 -0
- package/dist/api/summarize.js.map +1 -0
- package/dist/api/types.d.ts +221 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +57 -0
- package/dist/api/types.js.map +1 -0
- package/dist/cache/file-cache.d.ts +72 -0
- package/dist/cache/file-cache.d.ts.map +1 -0
- package/dist/cache/file-cache.js +80 -0
- package/dist/cache/file-cache.js.map +1 -0
- package/dist/cache/index.d.ts +5 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +5 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cli/cli-schema.d.ts +83 -0
- package/dist/cli/cli-schema.d.ts.map +1 -0
- package/dist/cli/cli-schema.js +505 -0
- package/dist/cli/cli-schema.js.map +1 -0
- package/dist/cli/dataset-cache.d.ts +66 -0
- package/dist/cli/dataset-cache.d.ts.map +1 -0
- package/dist/cli/dataset-cache.js +179 -0
- package/dist/cli/dataset-cache.js.map +1 -0
- package/dist/cli/error-handler.d.ts +84 -0
- package/dist/cli/error-handler.d.ts.map +1 -0
- package/dist/cli/error-handler.js +197 -0
- package/dist/cli/error-handler.js.map +1 -0
- package/dist/cli/generate-docs.d.ts +30 -0
- package/dist/cli/generate-docs.d.ts.map +1 -0
- package/dist/cli/generate-docs.js +370 -0
- package/dist/cli/generate-docs.js.map +1 -0
- package/dist/cli/lint-patterns.d.ts +57 -0
- package/dist/cli/lint-patterns.d.ts.map +1 -0
- package/dist/cli/lint-patterns.js +257 -0
- package/dist/cli/lint-patterns.js.map +1 -0
- package/dist/cli/lint-process.d.ts +54 -0
- package/dist/cli/lint-process.d.ts.map +1 -0
- package/dist/cli/lint-process.js +319 -0
- package/dist/cli/lint-process.js.map +1 -0
- package/dist/cli/lint-steps.d.ts +32 -0
- package/dist/cli/lint-steps.d.ts.map +1 -0
- package/dist/cli/lint-steps.js +172 -0
- package/dist/cli/lint-steps.js.map +1 -0
- package/dist/cli/mcp-server.d.ts +22 -0
- package/dist/cli/mcp-server.d.ts.map +1 -0
- package/dist/cli/mcp-server.js +57 -0
- package/dist/cli/mcp-server.js.map +1 -0
- package/dist/cli/output-pipeline.d.ts +130 -0
- package/dist/cli/output-pipeline.d.ts.map +1 -0
- package/dist/cli/output-pipeline.js +234 -0
- package/dist/cli/output-pipeline.js.map +1 -0
- package/dist/cli/process-api.d.ts +37 -0
- package/dist/cli/process-api.d.ts.map +1 -0
- package/dist/cli/process-api.js +1550 -0
- package/dist/cli/process-api.js.map +1 -0
- package/dist/cli/repl.d.ts +38 -0
- package/dist/cli/repl.d.ts.map +1 -0
- package/dist/cli/repl.js +239 -0
- package/dist/cli/repl.js.map +1 -0
- package/dist/cli/validate-patterns.d.ts +115 -0
- package/dist/cli/validate-patterns.d.ts.map +1 -0
- package/dist/cli/validate-patterns.js +707 -0
- package/dist/cli/validate-patterns.js.map +1 -0
- package/dist/cli/version.d.ts +35 -0
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/cli/version.js +64 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/config/config-loader.d.ts +167 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +294 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/defaults.d.ts +92 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +103 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/define-config.d.ts +37 -0
- package/dist/config/define-config.d.ts.map +1 -0
- package/dist/config/define-config.js +38 -0
- package/dist/config/define-config.js.map +1 -0
- package/dist/config/factory.d.ts +79 -0
- package/dist/config/factory.d.ts.map +1 -0
- package/dist/config/factory.js +116 -0
- package/dist/config/factory.js.map +1 -0
- package/dist/config/index.d.ts +45 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +48 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/merge-sources.d.ts +47 -0
- package/dist/config/merge-sources.d.ts.map +1 -0
- package/dist/config/merge-sources.js +61 -0
- package/dist/config/merge-sources.js.map +1 -0
- package/dist/config/presets.d.ts +115 -0
- package/dist/config/presets.d.ts.map +1 -0
- package/dist/config/presets.js +119 -0
- package/dist/config/presets.js.map +1 -0
- package/dist/config/project-config-schema.d.ts +192 -0
- package/dist/config/project-config-schema.d.ts.map +1 -0
- package/dist/config/project-config-schema.js +231 -0
- package/dist/config/project-config-schema.js.map +1 -0
- package/dist/config/project-config.d.ts +229 -0
- package/dist/config/project-config.d.ts.map +1 -0
- package/dist/config/project-config.js +37 -0
- package/dist/config/project-config.js.map +1 -0
- package/dist/config/regex-builders.d.ts +49 -0
- package/dist/config/regex-builders.d.ts.map +1 -0
- package/dist/config/regex-builders.js +85 -0
- package/dist/config/regex-builders.js.map +1 -0
- package/dist/config/resolve-config.d.ts +65 -0
- package/dist/config/resolve-config.d.ts.map +1 -0
- package/dist/config/resolve-config.js +150 -0
- package/dist/config/resolve-config.js.map +1 -0
- package/dist/config/types.d.ts +81 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +22 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/workflow-loader.d.ts +90 -0
- package/dist/config/workflow-loader.d.ts.map +1 -0
- package/dist/config/workflow-loader.js +167 -0
- package/dist/config/workflow-loader.js.map +1 -0
- package/dist/extractor/doc-extractor.d.ts +233 -0
- package/dist/extractor/doc-extractor.d.ts.map +1 -0
- package/dist/extractor/doc-extractor.js +481 -0
- package/dist/extractor/doc-extractor.js.map +1 -0
- package/dist/extractor/dual-source-extractor.d.ts +161 -0
- package/dist/extractor/dual-source-extractor.d.ts.map +1 -0
- package/dist/extractor/dual-source-extractor.js +407 -0
- package/dist/extractor/dual-source-extractor.js.map +1 -0
- package/dist/extractor/gherkin-extractor.d.ts +170 -0
- package/dist/extractor/gherkin-extractor.d.ts.map +1 -0
- package/dist/extractor/gherkin-extractor.js +543 -0
- package/dist/extractor/gherkin-extractor.js.map +1 -0
- package/dist/extractor/index.d.ts +7 -0
- package/dist/extractor/index.d.ts.map +1 -0
- package/dist/extractor/index.js +11 -0
- package/dist/extractor/index.js.map +1 -0
- package/dist/extractor/layer-inference.d.ts +66 -0
- package/dist/extractor/layer-inference.d.ts.map +1 -0
- package/dist/extractor/layer-inference.js +93 -0
- package/dist/extractor/layer-inference.js.map +1 -0
- package/dist/extractor/shape-extractor.d.ts +79 -0
- package/dist/extractor/shape-extractor.d.ts.map +1 -0
- package/dist/extractor/shape-extractor.js +966 -0
- package/dist/extractor/shape-extractor.js.map +1 -0
- package/dist/generators/built-in/cli-recipe-generator.d.ts +30 -0
- package/dist/generators/built-in/cli-recipe-generator.d.ts.map +1 -0
- package/dist/generators/built-in/cli-recipe-generator.js +155 -0
- package/dist/generators/built-in/cli-recipe-generator.js.map +1 -0
- package/dist/generators/built-in/codec-generators.d.ts +29 -0
- package/dist/generators/built-in/codec-generators.d.ts.map +1 -0
- package/dist/generators/built-in/codec-generators.js +195 -0
- package/dist/generators/built-in/codec-generators.js.map +1 -0
- package/dist/generators/built-in/decision-doc-generator.d.ts +204 -0
- package/dist/generators/built-in/decision-doc-generator.d.ts.map +1 -0
- package/dist/generators/built-in/decision-doc-generator.js +654 -0
- package/dist/generators/built-in/decision-doc-generator.js.map +1 -0
- package/dist/generators/built-in/design-review-generator.d.ts +26 -0
- package/dist/generators/built-in/design-review-generator.d.ts.map +1 -0
- package/dist/generators/built-in/design-review-generator.js +94 -0
- package/dist/generators/built-in/design-review-generator.js.map +1 -0
- package/dist/generators/built-in/index.d.ts +22 -0
- package/dist/generators/built-in/index.d.ts.map +1 -0
- package/dist/generators/built-in/index.js +23 -0
- package/dist/generators/built-in/index.js.map +1 -0
- package/dist/generators/built-in/process-api-reference-generator.d.ts +18 -0
- package/dist/generators/built-in/process-api-reference-generator.d.ts.map +1 -0
- package/dist/generators/built-in/process-api-reference-generator.js +85 -0
- package/dist/generators/built-in/process-api-reference-generator.js.map +1 -0
- package/dist/generators/built-in/reference-generators.d.ts +51 -0
- package/dist/generators/built-in/reference-generators.d.ts.map +1 -0
- package/dist/generators/built-in/reference-generators.js +320 -0
- package/dist/generators/built-in/reference-generators.js.map +1 -0
- package/dist/generators/codec-based.d.ts +63 -0
- package/dist/generators/codec-based.d.ts.map +1 -0
- package/dist/generators/codec-based.js +88 -0
- package/dist/generators/codec-based.js.map +1 -0
- package/dist/generators/content-deduplicator.d.ts +114 -0
- package/dist/generators/content-deduplicator.d.ts.map +1 -0
- package/dist/generators/content-deduplicator.js +356 -0
- package/dist/generators/content-deduplicator.js.map +1 -0
- package/dist/generators/index.d.ts +50 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +54 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/orchestrator.d.ts +265 -0
- package/dist/generators/orchestrator.d.ts.map +1 -0
- package/dist/generators/orchestrator.js +570 -0
- package/dist/generators/orchestrator.js.map +1 -0
- package/dist/generators/pipeline/build-pipeline.d.ts +131 -0
- package/dist/generators/pipeline/build-pipeline.d.ts.map +1 -0
- package/dist/generators/pipeline/build-pipeline.js +248 -0
- package/dist/generators/pipeline/build-pipeline.js.map +1 -0
- package/dist/generators/pipeline/context-inference.d.ts +55 -0
- package/dist/generators/pipeline/context-inference.d.ts.map +1 -0
- package/dist/generators/pipeline/context-inference.js +76 -0
- package/dist/generators/pipeline/context-inference.js.map +1 -0
- package/dist/generators/pipeline/index.d.ts +27 -0
- package/dist/generators/pipeline/index.d.ts.map +1 -0
- package/dist/generators/pipeline/index.js +34 -0
- package/dist/generators/pipeline/index.js.map +1 -0
- package/dist/generators/pipeline/merge-patterns.d.ts +33 -0
- package/dist/generators/pipeline/merge-patterns.d.ts.map +1 -0
- package/dist/generators/pipeline/merge-patterns.js +50 -0
- package/dist/generators/pipeline/merge-patterns.js.map +1 -0
- package/dist/generators/pipeline/relationship-resolver.d.ts +47 -0
- package/dist/generators/pipeline/relationship-resolver.d.ts.map +1 -0
- package/dist/generators/pipeline/relationship-resolver.js +132 -0
- package/dist/generators/pipeline/relationship-resolver.js.map +1 -0
- package/dist/generators/pipeline/sequence-utils.d.ts +49 -0
- package/dist/generators/pipeline/sequence-utils.d.ts.map +1 -0
- package/dist/generators/pipeline/sequence-utils.js +235 -0
- package/dist/generators/pipeline/sequence-utils.js.map +1 -0
- package/dist/generators/pipeline/transform-dataset.d.ts +82 -0
- package/dist/generators/pipeline/transform-dataset.d.ts.map +1 -0
- package/dist/generators/pipeline/transform-dataset.js +355 -0
- package/dist/generators/pipeline/transform-dataset.js.map +1 -0
- package/dist/generators/pipeline/transform-types.d.ts +96 -0
- package/dist/generators/pipeline/transform-types.d.ts.map +1 -0
- package/dist/generators/pipeline/transform-types.js +18 -0
- package/dist/generators/pipeline/transform-types.js.map +1 -0
- package/dist/generators/registry.d.ts +64 -0
- package/dist/generators/registry.d.ts.map +1 -0
- package/dist/generators/registry.js +77 -0
- package/dist/generators/registry.js.map +1 -0
- package/dist/generators/source-mapper.d.ts +143 -0
- package/dist/generators/source-mapper.d.ts.map +1 -0
- package/dist/generators/source-mapper.js +602 -0
- package/dist/generators/source-mapper.js.map +1 -0
- package/dist/generators/source-mapping-validator.d.ts +118 -0
- package/dist/generators/source-mapping-validator.d.ts.map +1 -0
- package/dist/generators/source-mapping-validator.js +334 -0
- package/dist/generators/source-mapping-validator.js.map +1 -0
- package/dist/generators/types.d.ts +104 -0
- package/dist/generators/types.d.ts.map +1 -0
- package/dist/generators/types.js +5 -0
- package/dist/generators/types.js.map +1 -0
- package/dist/generators/warning-collector.d.ts +144 -0
- package/dist/generators/warning-collector.d.ts.map +1 -0
- package/dist/generators/warning-collector.js +166 -0
- package/dist/generators/warning-collector.js.map +1 -0
- package/dist/git/branch-diff.d.ts +44 -0
- package/dist/git/branch-diff.d.ts.map +1 -0
- package/dist/git/branch-diff.js +57 -0
- package/dist/git/branch-diff.js.map +1 -0
- package/dist/git/helpers.d.ts +46 -0
- package/dist/git/helpers.d.ts.map +1 -0
- package/dist/git/helpers.js +67 -0
- package/dist/git/helpers.js.map +1 -0
- package/dist/git/index.d.ts +18 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +18 -0
- package/dist/git/index.js.map +1 -0
- package/dist/git/name-status.d.ts +32 -0
- package/dist/git/name-status.d.ts.map +1 -0
- package/dist/git/name-status.js +66 -0
- package/dist/git/name-status.js.map +1 -0
- package/dist/index.d.ts +107 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +122 -0
- package/dist/index.js.map +1 -0
- package/dist/lint/engine.d.ts +113 -0
- package/dist/lint/engine.d.ts.map +1 -0
- package/dist/lint/engine.js +228 -0
- package/dist/lint/engine.js.map +1 -0
- package/dist/lint/index.d.ts +26 -0
- package/dist/lint/index.d.ts.map +1 -0
- package/dist/lint/index.js +24 -0
- package/dist/lint/index.js.map +1 -0
- package/dist/lint/process-guard/decider.d.ts +166 -0
- package/dist/lint/process-guard/decider.d.ts.map +1 -0
- package/dist/lint/process-guard/decider.js +412 -0
- package/dist/lint/process-guard/decider.js.map +1 -0
- package/dist/lint/process-guard/derive-state.d.ts +96 -0
- package/dist/lint/process-guard/derive-state.d.ts.map +1 -0
- package/dist/lint/process-guard/derive-state.js +368 -0
- package/dist/lint/process-guard/derive-state.js.map +1 -0
- package/dist/lint/process-guard/detect-changes.d.ts +109 -0
- package/dist/lint/process-guard/detect-changes.d.ts.map +1 -0
- package/dist/lint/process-guard/detect-changes.js +487 -0
- package/dist/lint/process-guard/detect-changes.js.map +1 -0
- package/dist/lint/process-guard/index.d.ts +35 -0
- package/dist/lint/process-guard/index.d.ts.map +1 -0
- package/dist/lint/process-guard/index.js +39 -0
- package/dist/lint/process-guard/index.js.map +1 -0
- package/dist/lint/process-guard/types.d.ts +255 -0
- package/dist/lint/process-guard/types.d.ts.map +1 -0
- package/dist/lint/process-guard/types.js +31 -0
- package/dist/lint/process-guard/types.js.map +1 -0
- package/dist/lint/rules.d.ts +147 -0
- package/dist/lint/rules.d.ts.map +1 -0
- package/dist/lint/rules.js +289 -0
- package/dist/lint/rules.js.map +1 -0
- package/dist/lint/steps/cross-checks.d.ts +66 -0
- package/dist/lint/steps/cross-checks.d.ts.map +1 -0
- package/dist/lint/steps/cross-checks.js +290 -0
- package/dist/lint/steps/cross-checks.js.map +1 -0
- package/dist/lint/steps/feature-checks.d.ts +78 -0
- package/dist/lint/steps/feature-checks.d.ts.map +1 -0
- package/dist/lint/steps/feature-checks.js +279 -0
- package/dist/lint/steps/feature-checks.js.map +1 -0
- package/dist/lint/steps/index.d.ts +22 -0
- package/dist/lint/steps/index.d.ts.map +1 -0
- package/dist/lint/steps/index.js +26 -0
- package/dist/lint/steps/index.js.map +1 -0
- package/dist/lint/steps/pair-resolver.d.ts +29 -0
- package/dist/lint/steps/pair-resolver.d.ts.map +1 -0
- package/dist/lint/steps/pair-resolver.js +76 -0
- package/dist/lint/steps/pair-resolver.js.map +1 -0
- package/dist/lint/steps/runner.d.ts +28 -0
- package/dist/lint/steps/runner.d.ts.map +1 -0
- package/dist/lint/steps/runner.js +143 -0
- package/dist/lint/steps/runner.js.map +1 -0
- package/dist/lint/steps/step-checks.d.ts +41 -0
- package/dist/lint/steps/step-checks.d.ts.map +1 -0
- package/dist/lint/steps/step-checks.js +164 -0
- package/dist/lint/steps/step-checks.js.map +1 -0
- package/dist/lint/steps/types.d.ts +95 -0
- package/dist/lint/steps/types.d.ts.map +1 -0
- package/dist/lint/steps/types.js +79 -0
- package/dist/lint/steps/types.js.map +1 -0
- package/dist/lint/steps/utils.d.ts +22 -0
- package/dist/lint/steps/utils.d.ts.map +1 -0
- package/dist/lint/steps/utils.js +57 -0
- package/dist/lint/steps/utils.js.map +1 -0
- package/dist/mcp/file-watcher.d.ts +24 -0
- package/dist/mcp/file-watcher.d.ts.map +1 -0
- package/dist/mcp/file-watcher.js +75 -0
- package/dist/mcp/file-watcher.js.map +1 -0
- package/dist/mcp/index.d.ts +19 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +21 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/pipeline-session.d.ts +33 -0
- package/dist/mcp/pipeline-session.d.ts.map +1 -0
- package/dist/mcp/pipeline-session.js +149 -0
- package/dist/mcp/pipeline-session.js.map +1 -0
- package/dist/mcp/server.d.ts +28 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +197 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tool-registry.d.ts +4 -0
- package/dist/mcp/tool-registry.d.ts.map +1 -0
- package/dist/mcp/tool-registry.js +525 -0
- package/dist/mcp/tool-registry.js.map +1 -0
- package/dist/renderable/codecs/adr.d.ts +4730 -0
- package/dist/renderable/codecs/adr.d.ts.map +1 -0
- package/dist/renderable/codecs/adr.js +590 -0
- package/dist/renderable/codecs/adr.js.map +1 -0
- package/dist/renderable/codecs/architecture.d.ts +4760 -0
- package/dist/renderable/codecs/architecture.d.ts.map +1 -0
- package/dist/renderable/codecs/architecture.js +524 -0
- package/dist/renderable/codecs/architecture.js.map +1 -0
- package/dist/renderable/codecs/business-rules.d.ts +4777 -0
- package/dist/renderable/codecs/business-rules.d.ts.map +1 -0
- package/dist/renderable/codecs/business-rules.js +648 -0
- package/dist/renderable/codecs/business-rules.js.map +1 -0
- package/dist/renderable/codecs/claude-module.d.ts +4710 -0
- package/dist/renderable/codecs/claude-module.d.ts.map +1 -0
- package/dist/renderable/codecs/claude-module.js +214 -0
- package/dist/renderable/codecs/claude-module.js.map +1 -0
- package/dist/renderable/codecs/composite.d.ts +84 -0
- package/dist/renderable/codecs/composite.d.ts.map +1 -0
- package/dist/renderable/codecs/composite.js +124 -0
- package/dist/renderable/codecs/composite.js.map +1 -0
- package/dist/renderable/codecs/convention-extractor.d.ts +105 -0
- package/dist/renderable/codecs/convention-extractor.d.ts.map +1 -0
- package/dist/renderable/codecs/convention-extractor.js +353 -0
- package/dist/renderable/codecs/convention-extractor.js.map +1 -0
- package/dist/renderable/codecs/decision-doc.d.ts +308 -0
- package/dist/renderable/codecs/decision-doc.d.ts.map +1 -0
- package/dist/renderable/codecs/decision-doc.js +485 -0
- package/dist/renderable/codecs/decision-doc.js.map +1 -0
- package/dist/renderable/codecs/design-review.d.ts +55 -0
- package/dist/renderable/codecs/design-review.d.ts.map +1 -0
- package/dist/renderable/codecs/design-review.js +532 -0
- package/dist/renderable/codecs/design-review.js.map +1 -0
- package/dist/renderable/codecs/diagram-utils.d.ts +62 -0
- package/dist/renderable/codecs/diagram-utils.d.ts.map +1 -0
- package/dist/renderable/codecs/diagram-utils.js +70 -0
- package/dist/renderable/codecs/diagram-utils.js.map +1 -0
- package/dist/renderable/codecs/helpers.d.ts +553 -0
- package/dist/renderable/codecs/helpers.d.ts.map +1 -0
- package/dist/renderable/codecs/helpers.js +913 -0
- package/dist/renderable/codecs/helpers.js.map +1 -0
- package/dist/renderable/codecs/index-codec.d.ts +4714 -0
- package/dist/renderable/codecs/index-codec.d.ts.map +1 -0
- package/dist/renderable/codecs/index-codec.js +250 -0
- package/dist/renderable/codecs/index-codec.js.map +1 -0
- package/dist/renderable/codecs/index.d.ts +46 -0
- package/dist/renderable/codecs/index.d.ts.map +1 -0
- package/dist/renderable/codecs/index.js +70 -0
- package/dist/renderable/codecs/index.js.map +1 -0
- package/dist/renderable/codecs/patterns.d.ts +4757 -0
- package/dist/renderable/codecs/patterns.d.ts.map +1 -0
- package/dist/renderable/codecs/patterns.js +462 -0
- package/dist/renderable/codecs/patterns.js.map +1 -0
- package/dist/renderable/codecs/planning.d.ts +14055 -0
- package/dist/renderable/codecs/planning.d.ts.map +1 -0
- package/dist/renderable/codecs/planning.js +449 -0
- package/dist/renderable/codecs/planning.js.map +1 -0
- package/dist/renderable/codecs/pr-changes.d.ts +4742 -0
- package/dist/renderable/codecs/pr-changes.d.ts.map +1 -0
- package/dist/renderable/codecs/pr-changes.js +425 -0
- package/dist/renderable/codecs/pr-changes.js.map +1 -0
- package/dist/renderable/codecs/reference.d.ts +215 -0
- package/dist/renderable/codecs/reference.d.ts.map +1 -0
- package/dist/renderable/codecs/reference.js +1578 -0
- package/dist/renderable/codecs/reference.js.map +1 -0
- package/dist/renderable/codecs/reporting.d.ts +14026 -0
- package/dist/renderable/codecs/reporting.d.ts.map +1 -0
- package/dist/renderable/codecs/reporting.js +365 -0
- package/dist/renderable/codecs/reporting.js.map +1 -0
- package/dist/renderable/codecs/requirements.d.ts +4743 -0
- package/dist/renderable/codecs/requirements.d.ts.map +1 -0
- package/dist/renderable/codecs/requirements.js +428 -0
- package/dist/renderable/codecs/requirements.js.map +1 -0
- package/dist/renderable/codecs/session.d.ts +9410 -0
- package/dist/renderable/codecs/session.d.ts.map +1 -0
- package/dist/renderable/codecs/session.js +848 -0
- package/dist/renderable/codecs/session.js.map +1 -0
- package/dist/renderable/codecs/shape-matcher.d.ts +54 -0
- package/dist/renderable/codecs/shape-matcher.d.ts.map +1 -0
- package/dist/renderable/codecs/shape-matcher.js +106 -0
- package/dist/renderable/codecs/shape-matcher.js.map +1 -0
- package/dist/renderable/codecs/shared-schema.d.ts +44 -0
- package/dist/renderable/codecs/shared-schema.d.ts.map +1 -0
- package/dist/renderable/codecs/shared-schema.js +43 -0
- package/dist/renderable/codecs/shared-schema.js.map +1 -0
- package/dist/renderable/codecs/taxonomy.d.ts +4733 -0
- package/dist/renderable/codecs/taxonomy.d.ts.map +1 -0
- package/dist/renderable/codecs/taxonomy.js +570 -0
- package/dist/renderable/codecs/taxonomy.js.map +1 -0
- package/dist/renderable/codecs/timeline.d.ts +14094 -0
- package/dist/renderable/codecs/timeline.d.ts.map +1 -0
- package/dist/renderable/codecs/timeline.js +906 -0
- package/dist/renderable/codecs/timeline.js.map +1 -0
- package/dist/renderable/codecs/types/base.d.ts +81 -0
- package/dist/renderable/codecs/types/base.d.ts.map +1 -0
- package/dist/renderable/codecs/types/base.js +56 -0
- package/dist/renderable/codecs/types/base.js.map +1 -0
- package/dist/renderable/codecs/types/index.d.ts +5 -0
- package/dist/renderable/codecs/types/index.d.ts.map +1 -0
- package/dist/renderable/codecs/types/index.js +5 -0
- package/dist/renderable/codecs/types/index.js.map +1 -0
- package/dist/renderable/codecs/validation-rules.d.ts +4773 -0
- package/dist/renderable/codecs/validation-rules.d.ts.map +1 -0
- package/dist/renderable/codecs/validation-rules.js +537 -0
- package/dist/renderable/codecs/validation-rules.js.map +1 -0
- package/dist/renderable/generate.d.ts +338 -0
- package/dist/renderable/generate.d.ts.map +1 -0
- package/dist/renderable/generate.js +437 -0
- package/dist/renderable/generate.js.map +1 -0
- package/dist/renderable/index.d.ts +36 -0
- package/dist/renderable/index.d.ts.map +1 -0
- package/dist/renderable/index.js +58 -0
- package/dist/renderable/index.js.map +1 -0
- package/dist/renderable/load-preamble.d.ts +56 -0
- package/dist/renderable/load-preamble.d.ts.map +1 -0
- package/dist/renderable/load-preamble.js +298 -0
- package/dist/renderable/load-preamble.js.map +1 -0
- package/dist/renderable/render.d.ts +61 -0
- package/dist/renderable/render.d.ts.map +1 -0
- package/dist/renderable/render.js +346 -0
- package/dist/renderable/render.js.map +1 -0
- package/dist/renderable/schema.d.ts +194 -0
- package/dist/renderable/schema.d.ts.map +1 -0
- package/dist/renderable/schema.js +197 -0
- package/dist/renderable/schema.js.map +1 -0
- package/dist/renderable/utils.d.ts +146 -0
- package/dist/renderable/utils.d.ts.map +1 -0
- package/dist/renderable/utils.js +362 -0
- package/dist/renderable/utils.js.map +1 -0
- package/dist/scanner/ast-parser.d.ts +75 -0
- package/dist/scanner/ast-parser.d.ts.map +1 -0
- package/dist/scanner/ast-parser.js +835 -0
- package/dist/scanner/ast-parser.js.map +1 -0
- package/dist/scanner/gherkin-ast-parser.d.ts +166 -0
- package/dist/scanner/gherkin-ast-parser.d.ts.map +1 -0
- package/dist/scanner/gherkin-ast-parser.js +507 -0
- package/dist/scanner/gherkin-ast-parser.js.map +1 -0
- package/dist/scanner/gherkin-scanner.d.ts +106 -0
- package/dist/scanner/gherkin-scanner.d.ts.map +1 -0
- package/dist/scanner/gherkin-scanner.js +149 -0
- package/dist/scanner/gherkin-scanner.js.map +1 -0
- package/dist/scanner/index.d.ts +85 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/index.js +102 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/scanner/pattern-scanner.d.ts +83 -0
- package/dist/scanner/pattern-scanner.d.ts.map +1 -0
- package/dist/scanner/pattern-scanner.js +110 -0
- package/dist/scanner/pattern-scanner.js.map +1 -0
- package/dist/taxonomy/categories.d.ts +47 -0
- package/dist/taxonomy/categories.d.ts.map +1 -0
- package/dist/taxonomy/categories.js +175 -0
- package/dist/taxonomy/categories.js.map +1 -0
- package/dist/taxonomy/claude-section-values.d.ts +12 -0
- package/dist/taxonomy/claude-section-values.d.ts.map +1 -0
- package/dist/taxonomy/claude-section-values.js +17 -0
- package/dist/taxonomy/claude-section-values.js.map +1 -0
- package/dist/taxonomy/conventions.d.ts +13 -0
- package/dist/taxonomy/conventions.d.ts.map +1 -0
- package/dist/taxonomy/conventions.js +27 -0
- package/dist/taxonomy/conventions.js.map +1 -0
- package/dist/taxonomy/deliverable-status.d.ts +99 -0
- package/dist/taxonomy/deliverable-status.d.ts.map +1 -0
- package/dist/taxonomy/deliverable-status.js +131 -0
- package/dist/taxonomy/deliverable-status.js.map +1 -0
- package/dist/taxonomy/format-types.d.ts +17 -0
- package/dist/taxonomy/format-types.d.ts.map +1 -0
- package/dist/taxonomy/format-types.js +23 -0
- package/dist/taxonomy/format-types.js.map +1 -0
- package/dist/taxonomy/generator-options.d.ts +67 -0
- package/dist/taxonomy/generator-options.d.ts.map +1 -0
- package/dist/taxonomy/generator-options.js +75 -0
- package/dist/taxonomy/generator-options.js.map +1 -0
- package/dist/taxonomy/hierarchy-levels.d.ts +23 -0
- package/dist/taxonomy/hierarchy-levels.d.ts.map +1 -0
- package/dist/taxonomy/hierarchy-levels.js +22 -0
- package/dist/taxonomy/hierarchy-levels.js.map +1 -0
- package/dist/taxonomy/index.d.ts +35 -0
- package/dist/taxonomy/index.d.ts.map +1 -0
- package/dist/taxonomy/index.js +56 -0
- package/dist/taxonomy/index.js.map +1 -0
- package/dist/taxonomy/layer-types.d.ts +22 -0
- package/dist/taxonomy/layer-types.d.ts.map +1 -0
- package/dist/taxonomy/layer-types.js +28 -0
- package/dist/taxonomy/layer-types.js.map +1 -0
- package/dist/taxonomy/normalized-status.d.ts +99 -0
- package/dist/taxonomy/normalized-status.d.ts.map +1 -0
- package/dist/taxonomy/normalized-status.js +113 -0
- package/dist/taxonomy/normalized-status.js.map +1 -0
- package/dist/taxonomy/registry-builder.d.ts +104 -0
- package/dist/taxonomy/registry-builder.d.ts.map +1 -0
- package/dist/taxonomy/registry-builder.js +561 -0
- package/dist/taxonomy/registry-builder.js.map +1 -0
- package/dist/taxonomy/risk-levels.d.ts +16 -0
- package/dist/taxonomy/risk-levels.d.ts.map +1 -0
- package/dist/taxonomy/risk-levels.js +15 -0
- package/dist/taxonomy/risk-levels.js.map +1 -0
- package/dist/taxonomy/severity-types.d.ts +6 -0
- package/dist/taxonomy/severity-types.d.ts.map +1 -0
- package/dist/taxonomy/severity-types.js +5 -0
- package/dist/taxonomy/severity-types.js.map +1 -0
- package/dist/taxonomy/status-values.d.ts +39 -0
- package/dist/taxonomy/status-values.d.ts.map +1 -0
- package/dist/taxonomy/status-values.js +42 -0
- package/dist/taxonomy/status-values.js.map +1 -0
- package/dist/types/branded.d.ts +89 -0
- package/dist/types/branded.d.ts.map +1 -0
- package/dist/types/branded.js +57 -0
- package/dist/types/branded.js.map +1 -0
- package/dist/types/errors.d.ts +342 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +251 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +41 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/result.d.ts +78 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +78 -0
- package/dist/types/result.js.map +1 -0
- package/dist/utils/collection-utils.d.ts +49 -0
- package/dist/utils/collection-utils.d.ts.map +1 -0
- package/dist/utils/collection-utils.js +58 -0
- package/dist/utils/collection-utils.js.map +1 -0
- package/dist/utils/id-utils.d.ts +46 -0
- package/dist/utils/id-utils.d.ts.map +1 -0
- package/dist/utils/id-utils.js +51 -0
- package/dist/utils/id-utils.js.map +1 -0
- package/dist/utils/index.d.ts +21 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/string-utils.d.ts +150 -0
- package/dist/utils/string-utils.d.ts.map +1 -0
- package/dist/utils/string-utils.js +281 -0
- package/dist/utils/string-utils.js.map +1 -0
- package/dist/validation/anti-patterns.d.ts +134 -0
- package/dist/validation/anti-patterns.d.ts.map +1 -0
- package/dist/validation/anti-patterns.js +307 -0
- package/dist/validation/anti-patterns.js.map +1 -0
- package/dist/validation/dod-validator.d.ts +94 -0
- package/dist/validation/dod-validator.d.ts.map +1 -0
- package/dist/validation/dod-validator.js +198 -0
- package/dist/validation/dod-validator.js.map +1 -0
- package/dist/validation/fsm/index.d.ts +59 -0
- package/dist/validation/fsm/index.d.ts.map +1 -0
- package/dist/validation/fsm/index.js +64 -0
- package/dist/validation/fsm/index.js.map +1 -0
- package/dist/validation/fsm/states.d.ts +93 -0
- package/dist/validation/fsm/states.d.ts.map +1 -0
- package/dist/validation/fsm/states.js +98 -0
- package/dist/validation/fsm/states.js.map +1 -0
- package/dist/validation/fsm/transitions.d.ts +100 -0
- package/dist/validation/fsm/transitions.d.ts.map +1 -0
- package/dist/validation/fsm/transitions.js +122 -0
- package/dist/validation/fsm/transitions.js.map +1 -0
- package/dist/validation/fsm/validator.d.ts +163 -0
- package/dist/validation/fsm/validator.d.ts.map +1 -0
- package/dist/validation/fsm/validator.js +205 -0
- package/dist/validation/fsm/validator.js.map +1 -0
- package/dist/validation/index.d.ts +23 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +25 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/types.d.ts +136 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/types.js +56 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation-schemas/codec-utils.d.ts +188 -0
- package/dist/validation-schemas/codec-utils.d.ts.map +1 -0
- package/dist/validation-schemas/codec-utils.js +258 -0
- package/dist/validation-schemas/codec-utils.js.map +1 -0
- package/dist/validation-schemas/config.d.ts +99 -0
- package/dist/validation-schemas/config.d.ts.map +1 -0
- package/dist/validation-schemas/config.js +178 -0
- package/dist/validation-schemas/config.js.map +1 -0
- package/dist/validation-schemas/doc-directive.d.ts +195 -0
- package/dist/validation-schemas/doc-directive.d.ts.map +1 -0
- package/dist/validation-schemas/doc-directive.js +239 -0
- package/dist/validation-schemas/doc-directive.js.map +1 -0
- package/dist/validation-schemas/dual-source.d.ts +167 -0
- package/dist/validation-schemas/dual-source.d.ts.map +1 -0
- package/dist/validation-schemas/dual-source.js +168 -0
- package/dist/validation-schemas/dual-source.js.map +1 -0
- package/dist/validation-schemas/export-info.d.ts +53 -0
- package/dist/validation-schemas/export-info.d.ts.map +1 -0
- package/dist/validation-schemas/export-info.js +101 -0
- package/dist/validation-schemas/export-info.js.map +1 -0
- package/dist/validation-schemas/extracted-pattern.d.ts +351 -0
- package/dist/validation-schemas/extracted-pattern.d.ts.map +1 -0
- package/dist/validation-schemas/extracted-pattern.js +459 -0
- package/dist/validation-schemas/extracted-pattern.js.map +1 -0
- package/dist/validation-schemas/extracted-shape.d.ts +200 -0
- package/dist/validation-schemas/extracted-shape.d.ts.map +1 -0
- package/dist/validation-schemas/extracted-shape.js +182 -0
- package/dist/validation-schemas/extracted-shape.js.map +1 -0
- package/dist/validation-schemas/feature.d.ts +554 -0
- package/dist/validation-schemas/feature.d.ts.map +1 -0
- package/dist/validation-schemas/feature.js +262 -0
- package/dist/validation-schemas/feature.js.map +1 -0
- package/dist/validation-schemas/index.d.ts +15 -0
- package/dist/validation-schemas/index.d.ts.map +1 -0
- package/dist/validation-schemas/index.js +32 -0
- package/dist/validation-schemas/index.js.map +1 -0
- package/dist/validation-schemas/lint.d.ts +46 -0
- package/dist/validation-schemas/lint.d.ts.map +1 -0
- package/dist/validation-schemas/lint.js +45 -0
- package/dist/validation-schemas/lint.js.map +1 -0
- package/dist/validation-schemas/master-dataset.d.ts +8299 -0
- package/dist/validation-schemas/master-dataset.d.ts.map +1 -0
- package/dist/validation-schemas/master-dataset.js +275 -0
- package/dist/validation-schemas/master-dataset.js.map +1 -0
- package/dist/validation-schemas/output-schemas.d.ts +183 -0
- package/dist/validation-schemas/output-schemas.d.ts.map +1 -0
- package/dist/validation-schemas/output-schemas.js +149 -0
- package/dist/validation-schemas/output-schemas.js.map +1 -0
- package/dist/validation-schemas/scenario-ref.d.ts +80 -0
- package/dist/validation-schemas/scenario-ref.d.ts.map +1 -0
- package/dist/validation-schemas/scenario-ref.js +73 -0
- package/dist/validation-schemas/scenario-ref.js.map +1 -0
- package/dist/validation-schemas/tag-registry.d.ts +210 -0
- package/dist/validation-schemas/tag-registry.d.ts.map +1 -0
- package/dist/validation-schemas/tag-registry.js +248 -0
- package/dist/validation-schemas/tag-registry.js.map +1 -0
- package/dist/validation-schemas/workflow-config.d.ts +125 -0
- package/dist/validation-schemas/workflow-config.d.ts.map +1 -0
- package/dist/validation-schemas/workflow-config.js +138 -0
- package/dist/validation-schemas/workflow-config.js.map +1 -0
- package/docs/ANNOTATION-GUIDE.md +271 -0
- package/docs/ARCHITECTURE.md +1636 -0
- package/docs/CONFIGURATION.md +337 -0
- package/docs/DOCS-GAP-ANALYSIS.md +811 -0
- package/docs/GHERKIN-PATTERNS.md +366 -0
- package/docs/INDEX.md +345 -0
- package/docs/MCP-SETUP.md +140 -0
- package/docs/METHODOLOGY.md +240 -0
- package/docs/PROCESS-API.md +65 -0
- package/docs/PROCESS-GUARD.md +341 -0
- package/docs/SESSION-GUIDES.md +391 -0
- package/docs/TAXONOMY.md +106 -0
- package/docs/VALIDATION.md +418 -0
- package/docs-live/ARCHITECTURE.md +362 -0
- package/docs-live/BUSINESS-RULES.md +24 -0
- package/docs-live/CHANGELOG-GENERATED.md +375 -0
- package/docs-live/DECISIONS.md +78 -0
- package/docs-live/INDEX.md +231 -0
- package/docs-live/PRODUCT-AREAS.md +255 -0
- package/docs-live/TAXONOMY.md +202 -0
- package/docs-live/VALIDATION-RULES.md +119 -0
- package/docs-live/_claude-md/annotation/annotation-overview.md +26 -0
- package/docs-live/_claude-md/annotation/annotation-reference.md +213 -0
- package/docs-live/_claude-md/architecture/architecture-codecs.md +160 -0
- package/docs-live/_claude-md/architecture/architecture-types.md +32 -0
- package/docs-live/_claude-md/architecture/reference-sample.md +162 -0
- package/docs-live/_claude-md/authoring/gherkin-authoring-guide.md +245 -0
- package/docs-live/_claude-md/configuration/configuration-guide.md +216 -0
- package/docs-live/_claude-md/configuration/configuration-overview.md +37 -0
- package/docs-live/_claude-md/core-types/core-types-overview.md +20 -0
- package/docs-live/_claude-md/data-api/data-api-overview.md +39 -0
- package/docs-live/_claude-md/generation/generation-overview.md +30 -0
- package/docs-live/_claude-md/process/process-overview.md +127 -0
- package/docs-live/_claude-md/validation/process-guard.md +185 -0
- package/docs-live/_claude-md/validation/validation-overview.md +37 -0
- package/docs-live/_claude-md/validation/validation-tools-guide.md +242 -0
- package/docs-live/_claude-md/workflow/session-workflow-guide.md +141 -0
- package/docs-live/business-rules/annotation.md +1462 -0
- package/docs-live/business-rules/configuration.md +465 -0
- package/docs-live/business-rules/core-types.md +531 -0
- package/docs-live/business-rules/data-api.md +1403 -0
- package/docs-live/business-rules/generation.md +4726 -0
- package/docs-live/business-rules/process.md +122 -0
- package/docs-live/business-rules/validation.md +998 -0
- package/docs-live/decisions/adr-001-taxonomy-canonical-values.md +197 -0
- package/docs-live/decisions/adr-002-gherkin-only-testing.md +57 -0
- package/docs-live/decisions/adr-003-source-first-pattern-architecture.md +147 -0
- package/docs-live/decisions/adr-004-session-workflow-commands.md +137 -0
- package/docs-live/decisions/adr-005-codec-based-markdown-rendering.md +150 -0
- package/docs-live/decisions/adr-006-single-read-model-architecture.md +136 -0
- package/docs-live/decisions/adr-021-doc-generation-proof-of-concept.md +489 -0
- package/docs-live/product-areas/ANNOTATION.md +591 -0
- package/docs-live/product-areas/CONFIGURATION.md +1048 -0
- package/docs-live/product-areas/CORE-TYPES.md +221 -0
- package/docs-live/product-areas/DATA-API.md +850 -0
- package/docs-live/product-areas/GENERATION.md +1200 -0
- package/docs-live/product-areas/PROCESS.md +351 -0
- package/docs-live/product-areas/VALIDATION.md +1135 -0
- package/docs-live/reference/ANNOTATION-REFERENCE.md +232 -0
- package/docs-live/reference/ARCHITECTURE-CODECS.md +675 -0
- package/docs-live/reference/ARCHITECTURE-TYPES.md +436 -0
- package/docs-live/reference/CONFIGURATION-GUIDE.md +235 -0
- package/docs-live/reference/GHERKIN-AUTHORING-GUIDE.md +270 -0
- package/docs-live/reference/PROCESS-API-RECIPES.md +476 -0
- package/docs-live/reference/PROCESS-API-REFERENCE.md +63 -0
- package/docs-live/reference/PROCESS-GUARD-REFERENCE.md +258 -0
- package/docs-live/reference/REFERENCE-SAMPLE.md +1135 -0
- package/docs-live/reference/SESSION-WORKFLOW-GUIDE.md +384 -0
- package/docs-live/reference/VALIDATION-TOOLS-GUIDE.md +263 -0
- package/docs-live/taxonomy/categories.md +33 -0
- package/docs-live/taxonomy/format-types.md +67 -0
- package/docs-live/taxonomy/metadata-tags.md +693 -0
- package/docs-live/validation/error-catalog.md +78 -0
- package/docs-live/validation/fsm-transitions.md +50 -0
- package/docs-live/validation/protection-levels.md +51 -0
- package/package.json +233 -0
|
@@ -0,0 +1,570 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-core @architect-infra
|
|
4
|
+
* @architect-pattern Documentation Generation Orchestrator
|
|
5
|
+
* @architect-status completed
|
|
6
|
+
* @architect-arch-role service
|
|
7
|
+
* @architect-arch-context generator
|
|
8
|
+
* @architect-arch-layer application
|
|
9
|
+
* @architect-uses Pattern Scanner, Doc Extractor, Gherkin Scanner, Gherkin Extractor, Generator Registry, JSON Output Codec
|
|
10
|
+
* @architect-used-by CLI, Programmatic API
|
|
11
|
+
* @architect-usecase "When running full documentation generation pipeline"
|
|
12
|
+
* @architect-usecase "When merging TypeScript and Gherkin patterns"
|
|
13
|
+
* @architect-convention pipeline-architecture
|
|
14
|
+
*
|
|
15
|
+
* ## Orchestrator Pipeline Responsibilities
|
|
16
|
+
*
|
|
17
|
+
* **Invariant:** The orchestrator is the integration boundary for full docs generation:
|
|
18
|
+
* it delegates dataset construction to the shared pipeline, then executes codecs and
|
|
19
|
+
* writes files.
|
|
20
|
+
*
|
|
21
|
+
* **Rationale:** Splitting orchestration into dataset construction (shared) and output
|
|
22
|
+
* execution (orchestrator-owned) keeps Data API and validation consumers aligned on one
|
|
23
|
+
* read-model path while preserving generator-specific output handling.
|
|
24
|
+
*
|
|
25
|
+
* ## Steps 1-8 via buildMasterDataset()
|
|
26
|
+
*
|
|
27
|
+
* Steps 1-8 (config load, TypeScript/Gherkin scan + extraction, merge, hierarchy
|
|
28
|
+
* derivation, workflow load, and `transformToMasterDataset`) are delegated to
|
|
29
|
+
* `buildMasterDataset()`.
|
|
30
|
+
*
|
|
31
|
+
* ## Steps 9-10: Codec Execution and File Writing
|
|
32
|
+
*
|
|
33
|
+
* After dataset creation, the orchestrator owns Step 9 (codec execution per generator,
|
|
34
|
+
* output rendering, additional file fan-out) and Step 10 (path validation, overwrite
|
|
35
|
+
* policy, and persisted file writes).
|
|
36
|
+
*
|
|
37
|
+
* ### When to Use
|
|
38
|
+
*
|
|
39
|
+
* - Running complete documentation generation programmatically
|
|
40
|
+
* - Integrating doc generation into build scripts
|
|
41
|
+
* - Testing the full pipeline without CLI overhead
|
|
42
|
+
*/
|
|
43
|
+
import * as path from 'path';
|
|
44
|
+
import * as fs from 'fs/promises';
|
|
45
|
+
import { createJsonOutputCodec, RegistryMetadataOutputSchema, } from '../validation-schemas/index.js';
|
|
46
|
+
import { mergeSourcesForGenerator } from '../config/merge-sources.js';
|
|
47
|
+
import { DEFAULT_CONTEXT_INFERENCE_RULES } from '../config/defaults.js';
|
|
48
|
+
import { generatorRegistry } from './registry.js';
|
|
49
|
+
import { Result as R } from '../types/index.js';
|
|
50
|
+
import { buildMasterDataset } from './pipeline/index.js';
|
|
51
|
+
import { getChangedFilesList } from '../git/index.js';
|
|
52
|
+
import { registerReferenceGenerators } from './built-in/reference-generators.js';
|
|
53
|
+
/**
|
|
54
|
+
* Codec for serializing registry metadata to JSON
|
|
55
|
+
*/
|
|
56
|
+
const RegistryMetadataCodec = createJsonOutputCodec(RegistryMetadataOutputSchema);
|
|
57
|
+
/**
|
|
58
|
+
* Validate that a file path resolves within a base directory.
|
|
59
|
+
*
|
|
60
|
+
* Prevents path traversal attacks where a malicious file path like "../../../etc/passwd"
|
|
61
|
+
* could escape the intended output directory.
|
|
62
|
+
*
|
|
63
|
+
* @param filePath - Relative file path to validate
|
|
64
|
+
* @param baseDir - Base directory that the path must stay within
|
|
65
|
+
* @returns true if resolved path is within baseDir, false otherwise
|
|
66
|
+
*/
|
|
67
|
+
function isPathWithinDir(filePath, baseDir) {
|
|
68
|
+
const resolvedPath = path.resolve(baseDir, filePath);
|
|
69
|
+
const normalizedBase = path.resolve(baseDir) + path.sep;
|
|
70
|
+
return resolvedPath.startsWith(normalizedBase) || resolvedPath === path.resolve(baseDir);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Generate documentation from TypeScript source code
|
|
74
|
+
*
|
|
75
|
+
* Orchestrates the complete pipeline:
|
|
76
|
+
* 1. Load tag registry
|
|
77
|
+
* 2. Scan source files for @architect directives
|
|
78
|
+
* 3. Extract patterns from directives
|
|
79
|
+
* 4. Run specified generators
|
|
80
|
+
* 5. Write output files
|
|
81
|
+
*
|
|
82
|
+
* @param options - Generation options
|
|
83
|
+
* @returns Result with patterns, files, and any errors/warnings
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* import { generateDocumentation } from '@libar-dev/architect/generators';
|
|
88
|
+
* import '@libar-dev/architect/generators/built-in';
|
|
89
|
+
*
|
|
90
|
+
* const result = await generateDocumentation({
|
|
91
|
+
* input: ['src/**\/*.ts'],
|
|
92
|
+
* baseDir: process.cwd(),
|
|
93
|
+
* outputDir: 'docs',
|
|
94
|
+
* generators: ['patterns'],
|
|
95
|
+
* overwrite: true
|
|
96
|
+
* });
|
|
97
|
+
*
|
|
98
|
+
* console.log(`Generated ${result.files.length} files`);
|
|
99
|
+
* console.log(`Extracted ${result.patterns.length} patterns`);
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export async function generateDocumentation(options) {
|
|
103
|
+
const errors = [];
|
|
104
|
+
const warnings = [];
|
|
105
|
+
const generatedFiles = [];
|
|
106
|
+
// Resolve base directory
|
|
107
|
+
const baseDir = path.resolve(options.baseDir);
|
|
108
|
+
// DD-6: Normalize features (string | string[] | null → string[])
|
|
109
|
+
const features = options.features === null || options.features === undefined
|
|
110
|
+
? []
|
|
111
|
+
: typeof options.features === 'string'
|
|
112
|
+
? [options.features]
|
|
113
|
+
: options.features;
|
|
114
|
+
// Merge context inference rules: user rules take precedence (prepended to defaults)
|
|
115
|
+
const mergedContextRules = options.contextInferenceRules
|
|
116
|
+
? [...options.contextInferenceRules, ...DEFAULT_CONTEXT_INFERENCE_RULES]
|
|
117
|
+
: undefined; // let factory use defaults
|
|
118
|
+
// DD-6: Delegate 8-step pipeline to shared factory
|
|
119
|
+
const pipelineResult = await buildMasterDataset({
|
|
120
|
+
input: options.input,
|
|
121
|
+
features,
|
|
122
|
+
baseDir,
|
|
123
|
+
mergeConflictStrategy: 'fatal',
|
|
124
|
+
...(options.exclude !== undefined ? { exclude: options.exclude } : {}),
|
|
125
|
+
...(options.workflowPath !== null && options.workflowPath !== undefined
|
|
126
|
+
? { workflowPath: options.workflowPath }
|
|
127
|
+
: {}),
|
|
128
|
+
...(mergedContextRules !== undefined ? { contextInferenceRules: mergedContextRules } : {}),
|
|
129
|
+
includeValidation: false, // DD-3: orchestrator doesn't need validation
|
|
130
|
+
failOnScanErrors: false, // DD-5: orchestrator collects errors as warnings
|
|
131
|
+
});
|
|
132
|
+
if (!pipelineResult.ok) {
|
|
133
|
+
return R.err(`Pipeline error [${pipelineResult.error.step}]: ${pipelineResult.error.message}`);
|
|
134
|
+
}
|
|
135
|
+
// DD-6: Extract values from pipeline result
|
|
136
|
+
const { dataset: masterDataset } = pipelineResult.value;
|
|
137
|
+
const allPatterns = masterDataset.patterns;
|
|
138
|
+
const registry = masterDataset.tagRegistry;
|
|
139
|
+
const workflow = masterDataset.workflow;
|
|
140
|
+
// DD-1: Map PipelineWarning[] → GenerationWarning[]
|
|
141
|
+
for (const pw of pipelineResult.value.warnings) {
|
|
142
|
+
warnings.push({
|
|
143
|
+
type: pw.type === 'gherkin-parse' ? 'scan' : pw.type,
|
|
144
|
+
message: pw.message,
|
|
145
|
+
...(pw.count !== undefined ? { count: pw.count } : {}),
|
|
146
|
+
...(pw.details !== undefined ? { details: [...pw.details] } : {}),
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
// Step 9: Build codec options
|
|
150
|
+
// Start with user-provided options, then overlay computed options
|
|
151
|
+
let codecOptions = options.codecOptions;
|
|
152
|
+
// Compute PR Changes options if that generator is requested
|
|
153
|
+
if (options.generators.some((g) => g.trim() === 'pr-changes')) {
|
|
154
|
+
// Use explicit changedFiles if provided, otherwise detect from git
|
|
155
|
+
let changedFiles = options.changedFiles;
|
|
156
|
+
if (!changedFiles && options.gitDiffBase) {
|
|
157
|
+
const detectionResult = getChangedFilesList(baseDir, options.gitDiffBase);
|
|
158
|
+
if (detectionResult.ok) {
|
|
159
|
+
// Filter for relevant file types (source, tests, specs, features)
|
|
160
|
+
changedFiles = detectionResult.value.filter((f) => f.endsWith('.ts') ||
|
|
161
|
+
f.endsWith('.tsx') ||
|
|
162
|
+
f.endsWith('.feature') ||
|
|
163
|
+
f.endsWith('.feature.md'));
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
warnings.push({
|
|
167
|
+
type: 'config',
|
|
168
|
+
message: `Git diff detection failed: ${detectionResult.error.message}. PR Changes will show all patterns.`,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
codecOptions = {
|
|
173
|
+
...codecOptions,
|
|
174
|
+
'pr-changes': {
|
|
175
|
+
changedFiles: changedFiles ?? [],
|
|
176
|
+
releaseFilter: options.releaseFilter ?? '',
|
|
177
|
+
includeDeliverables: true,
|
|
178
|
+
includeReviewChecklist: true,
|
|
179
|
+
includeDependencies: true,
|
|
180
|
+
includeBusinessValue: true,
|
|
181
|
+
sortBy: 'phase',
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
// Step 10: Run generators
|
|
186
|
+
for (const generatorName of options.generators) {
|
|
187
|
+
const trimmedName = generatorName.trim();
|
|
188
|
+
// Get generator from registry
|
|
189
|
+
const generator = generatorRegistry.get(trimmedName);
|
|
190
|
+
if (!generator) {
|
|
191
|
+
errors.push({
|
|
192
|
+
type: 'generator',
|
|
193
|
+
message: `Unknown generator: "${trimmedName}". Available: ${generatorRegistry.available().join(', ')}`,
|
|
194
|
+
generator: trimmedName,
|
|
195
|
+
});
|
|
196
|
+
continue; // Skip this generator, try others
|
|
197
|
+
}
|
|
198
|
+
// Build generator context with pre-computed masterDataset and codec options
|
|
199
|
+
const context = {
|
|
200
|
+
baseDir,
|
|
201
|
+
outputDir: options.outputDir,
|
|
202
|
+
registry,
|
|
203
|
+
masterDataset,
|
|
204
|
+
...(workflow !== undefined ? { workflow } : {}),
|
|
205
|
+
...(codecOptions !== undefined ? { codecOptions } : {}),
|
|
206
|
+
};
|
|
207
|
+
// Generate files with merged patterns (TypeScript + Gherkin)
|
|
208
|
+
let output;
|
|
209
|
+
try {
|
|
210
|
+
output = await generator.generate(allPatterns, context);
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
errors.push({
|
|
214
|
+
type: 'generator',
|
|
215
|
+
message: `Generator "${trimmedName}" failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
216
|
+
generator: trimmedName,
|
|
217
|
+
});
|
|
218
|
+
continue; // Skip this generator
|
|
219
|
+
}
|
|
220
|
+
// Write files
|
|
221
|
+
for (const file of output.files) {
|
|
222
|
+
const fullPath = path.join(options.outputDir, file.path);
|
|
223
|
+
// Security: Validate path stays within output directory (prevent path traversal)
|
|
224
|
+
if (!isPathWithinDir(file.path, options.outputDir)) {
|
|
225
|
+
errors.push({
|
|
226
|
+
type: 'file-write',
|
|
227
|
+
message: `Path traversal attempt blocked: ${file.path}`,
|
|
228
|
+
filePath: file.path,
|
|
229
|
+
generator: trimmedName,
|
|
230
|
+
});
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
const dir = path.dirname(fullPath);
|
|
234
|
+
// Check if file exists and overwrite is disabled
|
|
235
|
+
let fileExists = false;
|
|
236
|
+
try {
|
|
237
|
+
await fs.access(fullPath);
|
|
238
|
+
fileExists = true;
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
// File doesn't exist
|
|
242
|
+
}
|
|
243
|
+
if (fileExists && options.overwrite !== true) {
|
|
244
|
+
// Skip writing, but record in result
|
|
245
|
+
generatedFiles.push({
|
|
246
|
+
path: file.path,
|
|
247
|
+
fullPath,
|
|
248
|
+
content: file.content,
|
|
249
|
+
generator: trimmedName,
|
|
250
|
+
written: false,
|
|
251
|
+
});
|
|
252
|
+
warnings.push({
|
|
253
|
+
type: 'overwrite-skipped',
|
|
254
|
+
message: `Skipped ${file.path} (exists, use overwrite: true to replace)`,
|
|
255
|
+
filePath: file.path,
|
|
256
|
+
});
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
// Write file
|
|
260
|
+
try {
|
|
261
|
+
await fs.mkdir(dir, { recursive: true });
|
|
262
|
+
await fs.writeFile(fullPath, file.content, 'utf-8');
|
|
263
|
+
generatedFiles.push({
|
|
264
|
+
path: file.path,
|
|
265
|
+
fullPath,
|
|
266
|
+
content: file.content,
|
|
267
|
+
generator: trimmedName,
|
|
268
|
+
written: true,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
errors.push({
|
|
273
|
+
type: 'file-write',
|
|
274
|
+
message: `Failed to write ${file.path}: ${error instanceof Error ? error.message : String(error)}`,
|
|
275
|
+
filePath: file.path,
|
|
276
|
+
generator: trimmedName,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
// Write metadata (registry.json) if provided
|
|
281
|
+
if (output.metadata) {
|
|
282
|
+
const metadataPath = path.join(options.outputDir, 'registry.json');
|
|
283
|
+
// Serialize using codec for type-safe validation
|
|
284
|
+
const serializeResult = RegistryMetadataCodec.serialize(output.metadata, 'registry.json');
|
|
285
|
+
if (!serializeResult.ok) {
|
|
286
|
+
errors.push({
|
|
287
|
+
type: 'file-write',
|
|
288
|
+
message: `Failed to serialize registry.json: ${serializeResult.error.message}`,
|
|
289
|
+
filePath: 'registry.json',
|
|
290
|
+
generator: trimmedName,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
try {
|
|
295
|
+
await fs.writeFile(metadataPath, serializeResult.value, 'utf-8');
|
|
296
|
+
generatedFiles.push({
|
|
297
|
+
path: 'registry.json',
|
|
298
|
+
fullPath: metadataPath,
|
|
299
|
+
content: serializeResult.value,
|
|
300
|
+
generator: trimmedName,
|
|
301
|
+
written: true,
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
catch (error) {
|
|
305
|
+
errors.push({
|
|
306
|
+
type: 'file-write',
|
|
307
|
+
message: `Failed to write registry.json: ${error instanceof Error ? error.message : String(error)}`,
|
|
308
|
+
filePath: 'registry.json',
|
|
309
|
+
generator: trimmedName,
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
// Handle file cleanup (for session file lifecycle management)
|
|
315
|
+
if (output.filesToDelete && output.filesToDelete.length > 0) {
|
|
316
|
+
for (const fileToDelete of output.filesToDelete) {
|
|
317
|
+
// Security: Validate path stays within output directory (prevent path traversal)
|
|
318
|
+
if (!isPathWithinDir(fileToDelete, options.outputDir)) {
|
|
319
|
+
warnings.push({
|
|
320
|
+
type: 'cleanup',
|
|
321
|
+
message: `Path traversal blocked in cleanup: ${fileToDelete}`,
|
|
322
|
+
filePath: fileToDelete,
|
|
323
|
+
});
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
const fullPath = path.join(options.outputDir, fileToDelete);
|
|
327
|
+
try {
|
|
328
|
+
await fs.unlink(fullPath);
|
|
329
|
+
// Track deletion as a warning for visibility
|
|
330
|
+
warnings.push({
|
|
331
|
+
type: 'cleanup',
|
|
332
|
+
message: `Cleaned up orphaned file: ${fileToDelete}`,
|
|
333
|
+
filePath: fileToDelete,
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
catch (unlinkError) {
|
|
337
|
+
// ENOENT is not an error - file was already deleted
|
|
338
|
+
if (unlinkError.code !== 'ENOENT') {
|
|
339
|
+
warnings.push({
|
|
340
|
+
type: 'cleanup',
|
|
341
|
+
message: `Failed to clean up ${fileToDelete}: ${unlinkError instanceof Error ? unlinkError.message : String(unlinkError)}`,
|
|
342
|
+
filePath: fileToDelete,
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
// Clean up orphaned session files after generation
|
|
350
|
+
// Identify session files that were written (to preserve them)
|
|
351
|
+
const sessionFileRegex = /^sessions\/phase-\d+[a-z]?\.md$/;
|
|
352
|
+
const writtenSessionFiles = new Set(generatedFiles
|
|
353
|
+
.filter((f) => f.written && sessionFileRegex.test(f.path))
|
|
354
|
+
.map((f) => path.basename(f.path)));
|
|
355
|
+
// If any session files were written, clean up orphaned ones
|
|
356
|
+
if (writtenSessionFiles.size > 0 || options.generators.some((g) => g.includes('session'))) {
|
|
357
|
+
const cleanupResult = await cleanupOrphanedSessionFiles(options.outputDir, 'sessions/', writtenSessionFiles);
|
|
358
|
+
// Add cleanup results to warnings for visibility
|
|
359
|
+
for (const deletedFile of cleanupResult.deleted) {
|
|
360
|
+
warnings.push({
|
|
361
|
+
type: 'scan',
|
|
362
|
+
message: `Cleaned up orphaned session file: ${deletedFile}`,
|
|
363
|
+
filePath: deletedFile,
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
for (const cleanupError of cleanupResult.errors) {
|
|
367
|
+
warnings.push({
|
|
368
|
+
type: 'scan',
|
|
369
|
+
message: `Session cleanup warning: ${cleanupError}`,
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// Return result with merged patterns
|
|
374
|
+
return R.ok({
|
|
375
|
+
patterns: allPatterns,
|
|
376
|
+
files: generatedFiles,
|
|
377
|
+
registry,
|
|
378
|
+
errors,
|
|
379
|
+
warnings,
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Clean up orphaned session files in a directory.
|
|
384
|
+
*
|
|
385
|
+
* Deletes session files (phase-*.md) that are not in the preserve list.
|
|
386
|
+
* This is used to clean up stale session files when phases complete.
|
|
387
|
+
*
|
|
388
|
+
* @param outputDir - Base output directory
|
|
389
|
+
* @param sessionsDir - Subdirectory containing session files (e.g., "sessions/")
|
|
390
|
+
* @param preserveFiles - Set of file basenames to preserve (e.g., "phase-39.md")
|
|
391
|
+
* @returns Result with deleted files and any errors
|
|
392
|
+
*
|
|
393
|
+
* @example
|
|
394
|
+
* ```typescript
|
|
395
|
+
* const result = await cleanupOrphanedSessionFiles(
|
|
396
|
+
* "/output",
|
|
397
|
+
* "sessions/",
|
|
398
|
+
* new Set(["phase-39.md"]) // Keep active phase
|
|
399
|
+
* );
|
|
400
|
+
* console.log(`Deleted ${result.deleted.length} orphaned files`);
|
|
401
|
+
* ```
|
|
402
|
+
*/
|
|
403
|
+
export async function cleanupOrphanedSessionFiles(outputDir, sessionsDir, preserveFiles) {
|
|
404
|
+
const dirPath = path.join(outputDir, sessionsDir);
|
|
405
|
+
const deleted = [];
|
|
406
|
+
const errors = [];
|
|
407
|
+
try {
|
|
408
|
+
const existingFiles = await fs.readdir(dirPath);
|
|
409
|
+
for (const file of existingFiles) {
|
|
410
|
+
// Only process session files matching phase-*.md pattern
|
|
411
|
+
if (!/^phase-\d+[a-z]?\.md$/.test(file)) {
|
|
412
|
+
continue;
|
|
413
|
+
}
|
|
414
|
+
// Skip files in preserve list
|
|
415
|
+
if (preserveFiles.has(file)) {
|
|
416
|
+
continue;
|
|
417
|
+
}
|
|
418
|
+
// Delete orphaned file
|
|
419
|
+
const fullPath = path.join(dirPath, file);
|
|
420
|
+
try {
|
|
421
|
+
await fs.unlink(fullPath);
|
|
422
|
+
deleted.push(path.join(sessionsDir, file));
|
|
423
|
+
}
|
|
424
|
+
catch (unlinkError) {
|
|
425
|
+
errors.push(`Failed to delete ${file}: ${unlinkError instanceof Error ? unlinkError.message : String(unlinkError)}`);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
catch (readdirError) {
|
|
430
|
+
// Directory doesn't exist - nothing to clean (not an error)
|
|
431
|
+
if (readdirError.code !== 'ENOENT') {
|
|
432
|
+
errors.push(`Failed to read ${sessionsDir}: ${readdirError instanceof Error ? readdirError.message : String(readdirError)}`);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
return { deleted, errors };
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Groups generators by their effective source config and output directory.
|
|
439
|
+
*
|
|
440
|
+
* Generators that share the same resolved sources (after applying per-generator
|
|
441
|
+
* overrides) AND the same output directory are batched together to minimize
|
|
442
|
+
* redundant pipeline scans.
|
|
443
|
+
*
|
|
444
|
+
* @param generatorNames - Names of generators to group
|
|
445
|
+
* @param baseSources - Base resolved sources from project config
|
|
446
|
+
* @param baseOutput - Base resolved output config
|
|
447
|
+
* @param overrides - Per-generator source and output overrides
|
|
448
|
+
* @returns Array of generator groups, each runnable as a single pipeline call
|
|
449
|
+
*/
|
|
450
|
+
function groupGenerators(generatorNames, baseSources, baseOutput, overrides) {
|
|
451
|
+
const groupMap = new Map();
|
|
452
|
+
for (const name of generatorNames) {
|
|
453
|
+
const effective = mergeSourcesForGenerator(baseSources, name, overrides);
|
|
454
|
+
const outputDir = overrides[name]?.outputDirectory ?? baseOutput.directory;
|
|
455
|
+
const key = JSON.stringify({ sources: effective, outputDir });
|
|
456
|
+
const existing = groupMap.get(key);
|
|
457
|
+
if (existing !== undefined) {
|
|
458
|
+
existing.generators.push(name);
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
groupMap.set(key, { generators: [name], sources: effective, outputDirectory: outputDir });
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
return [...groupMap.values()];
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Merges results from multiple pipeline runs into a single GenerateResult.
|
|
468
|
+
*
|
|
469
|
+
* Patterns and files are concatenated from all runs. The registry from
|
|
470
|
+
* the first run is used (all runs share the same config, so registries
|
|
471
|
+
* are identical). Errors and warnings are aggregated.
|
|
472
|
+
*
|
|
473
|
+
* @param results - Array of GenerateResult from individual pipeline runs
|
|
474
|
+
* @returns A single merged GenerateResult
|
|
475
|
+
*/
|
|
476
|
+
function mergeGenerateResults(results) {
|
|
477
|
+
// Caller guarantees results.length >= 2, so first element always exists
|
|
478
|
+
const firstResult = results[0];
|
|
479
|
+
if (firstResult === undefined) {
|
|
480
|
+
// Unreachable: only called with 2+ results, but satisfies strictNullChecks
|
|
481
|
+
throw new Error('mergeGenerateResults called with empty results array');
|
|
482
|
+
}
|
|
483
|
+
return {
|
|
484
|
+
patterns: results.flatMap((r) => r.patterns),
|
|
485
|
+
files: results.flatMap((r) => r.files),
|
|
486
|
+
registry: firstResult.registry,
|
|
487
|
+
errors: results.flatMap((r) => r.errors),
|
|
488
|
+
warnings: results.flatMap((r) => r.warnings),
|
|
489
|
+
};
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* Generate documentation from a fully resolved config.
|
|
493
|
+
*
|
|
494
|
+
* Groups generators by their effective source config, then calls
|
|
495
|
+
* `generateDocumentation()` once per group. This reuses all existing
|
|
496
|
+
* pipeline logic while minimizing redundant file scans.
|
|
497
|
+
*
|
|
498
|
+
* @param config - Fully resolved configuration (from `loadProjectConfig()`)
|
|
499
|
+
* @param options - Optional overrides for generators, git diff, and release filter
|
|
500
|
+
* @returns Result with merged patterns, files, errors, and warnings from all groups
|
|
501
|
+
*
|
|
502
|
+
* @example
|
|
503
|
+
* ```typescript
|
|
504
|
+
* import { generateFromConfig } from '@libar-dev/architect/generators';
|
|
505
|
+
* import { loadProjectConfig } from '@libar-dev/architect/config';
|
|
506
|
+
*
|
|
507
|
+
* const config = await loadProjectConfig(process.cwd());
|
|
508
|
+
* const result = await generateFromConfig(config, {
|
|
509
|
+
* generators: ['patterns', 'roadmap'],
|
|
510
|
+
* });
|
|
511
|
+
* ```
|
|
512
|
+
*/
|
|
513
|
+
export async function generateFromConfig(config, options) {
|
|
514
|
+
const generatorNames = options?.generators ?? config.project.generators;
|
|
515
|
+
if (generatorNames.length === 0) {
|
|
516
|
+
return R.err('No generators specified');
|
|
517
|
+
}
|
|
518
|
+
// Register reference generators from config (explicit opt-in).
|
|
519
|
+
// Done here (not at import time) because configs are user-provided.
|
|
520
|
+
// Check both meta-generators: configs are partitioned by productArea presence.
|
|
521
|
+
if (config.project.referenceDocConfigs.length > 0 &&
|
|
522
|
+
!generatorRegistry.has('reference-docs') &&
|
|
523
|
+
!generatorRegistry.has('product-area-docs')) {
|
|
524
|
+
registerReferenceGenerators(generatorRegistry, config.project.referenceDocConfigs);
|
|
525
|
+
}
|
|
526
|
+
// Group generators by effective source config to minimize scans.
|
|
527
|
+
// Generators sharing the same sources and output directory are batched
|
|
528
|
+
// into one generateDocumentation() call.
|
|
529
|
+
const groups = groupGenerators(generatorNames, config.project.sources, config.project.output, config.project.generatorOverrides);
|
|
530
|
+
// Run each group through the existing pipeline
|
|
531
|
+
const allResults = [];
|
|
532
|
+
for (const group of groups) {
|
|
533
|
+
// Merge codec options: config-level → runtime options (runtime takes precedence)
|
|
534
|
+
const mergedCodecOptions = config.project.codecOptions !== undefined || options?.codecOptions !== undefined
|
|
535
|
+
? { ...config.project.codecOptions, ...options?.codecOptions }
|
|
536
|
+
: undefined;
|
|
537
|
+
const generateOptions = {
|
|
538
|
+
input: [...group.sources.typescript],
|
|
539
|
+
baseDir: process.cwd(),
|
|
540
|
+
outputDir: group.outputDirectory,
|
|
541
|
+
generators: [...group.generators],
|
|
542
|
+
overwrite: config.project.output.overwrite,
|
|
543
|
+
...(group.sources.features.length > 0 && { features: [...group.sources.features] }),
|
|
544
|
+
...(group.sources.exclude.length > 0 && { exclude: [...group.sources.exclude] }),
|
|
545
|
+
...(config.project.workflowPath !== null && { workflowPath: config.project.workflowPath }),
|
|
546
|
+
contextInferenceRules: [...config.project.contextInferenceRules],
|
|
547
|
+
...(options?.gitDiffBase !== undefined && { gitDiffBase: options.gitDiffBase }),
|
|
548
|
+
...(options?.changedFiles !== undefined && { changedFiles: [...options.changedFiles] }),
|
|
549
|
+
...(options?.releaseFilter !== undefined && { releaseFilter: options.releaseFilter }),
|
|
550
|
+
...(mergedCodecOptions !== undefined && { codecOptions: mergedCodecOptions }),
|
|
551
|
+
};
|
|
552
|
+
const result = await generateDocumentation(generateOptions);
|
|
553
|
+
if (!result.ok) {
|
|
554
|
+
return result;
|
|
555
|
+
}
|
|
556
|
+
allResults.push(result.value);
|
|
557
|
+
}
|
|
558
|
+
// Merge results from all groups
|
|
559
|
+
// allResults is guaranteed non-empty because generatorNames.length > 0
|
|
560
|
+
// and each group produces exactly one result (or we return early on error)
|
|
561
|
+
if (allResults.length === 1) {
|
|
562
|
+
const singleResult = allResults[0];
|
|
563
|
+
if (singleResult === undefined) {
|
|
564
|
+
return R.err('Unexpected empty results after successful generation');
|
|
565
|
+
}
|
|
566
|
+
return R.ok(singleResult);
|
|
567
|
+
}
|
|
568
|
+
return R.ok(mergeGenerateResults(allResults));
|
|
569
|
+
}
|
|
570
|
+
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/generators/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,gCAAgC,CAAC;AAOxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEjF;;GAEG;AACH,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,4BAA4B,CAAC,CAAC;AAElF;;;;;;;;;GASG;AACH,SAAS,eAAe,CAAC,QAAgB,EAAE,OAAe;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;IACxD,OAAO,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,YAAY,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3F,CAAC;AAuJD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAwB;IAExB,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,MAAM,cAAc,GAAoB,EAAE,CAAC;IAE3C,yBAAyB;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9C,iEAAiE;IACjE,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;QACzD,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;YACpC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACpB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAEzB,oFAAoF;IACpF,MAAM,kBAAkB,GAAG,OAAO,CAAC,qBAAqB;QACtD,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,qBAAqB,EAAE,GAAG,+BAA+B,CAAC;QACxE,CAAC,CAAC,SAAS,CAAC,CAAC,2BAA2B;IAE1C,mDAAmD;IACnD,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC;QAC9C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ;QACR,OAAO;QACP,qBAAqB,EAAE,OAAO;QAC9B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;YACrE,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE;YACxC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,iBAAiB,EAAE,KAAK,EAAE,6CAA6C;QACvE,gBAAgB,EAAE,KAAK,EAAE,iDAAiD;KAC3E,CAAC,CAAC;IAEH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC,GAAG,CAAC,mBAAmB,cAAc,CAAC,KAAK,CAAC,IAAI,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,4CAA4C;IAC5C,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC;IACxD,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC;IAC3C,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC;IAC3C,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;IAExC,oDAAoD;IACpD,KAAK,MAAM,EAAE,IAAI,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI;YACpD,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE,CAAC,CAAC;IACL,CAAC;IAED,8BAA8B;IAC9B,kEAAkE;IAClE,IAAI,YAAY,GAA6B,OAAO,CAAC,YAAY,CAAC;IAElE,4DAA4D;IAC5D,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC;QAC9D,mEAAmE;QACnE,IAAI,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAExC,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,eAAe,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YAC1E,IAAI,eAAe,CAAC,EAAE,EAAE,CAAC;gBACvB,kEAAkE;gBAClE,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CACzC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACjB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAClB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACtB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAC5B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,8BAA8B,eAAe,CAAC,KAAK,CAAC,OAAO,sCAAsC;iBAC3G,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,YAAY,GAAG;YACb,GAAG,YAAY;YACf,YAAY,EAAE;gBACZ,YAAY,EAAE,YAAY,IAAI,EAAE;gBAChC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;gBAC1C,mBAAmB,EAAE,IAAI;gBACzB,sBAAsB,EAAE,IAAI;gBAC5B,mBAAmB,EAAE,IAAI;gBACzB,oBAAoB,EAAE,IAAI;gBAC1B,MAAM,EAAE,OAAO;aAChB;SACF,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,aAAa,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QAEzC,8BAA8B;QAC9B,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,uBAAuB,WAAW,iBAAiB,iBAAiB,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtG,SAAS,EAAE,WAAW;aACvB,CAAC,CAAC;YACH,SAAS,CAAC,kCAAkC;QAC9C,CAAC;QAED,4EAA4E;QAC5E,MAAM,OAAO,GAAqB;YAChC,OAAO;YACP,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ;YACR,aAAa;YACb,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC;QAEF,6DAA6D;QAC7D,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,cAAc,WAAW,aAAa,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACvG,SAAS,EAAE,WAAW;aACvB,CAAC,CAAC;YACH,SAAS,CAAC,sBAAsB;QAClC,CAAC;QAED,cAAc;QACd,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEzD,iFAAiF;YACjF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnD,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,mCAAmC,IAAI,CAAC,IAAI,EAAE;oBACvD,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,SAAS,EAAE,WAAW;iBACvB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEnC,iDAAiD;YACjD,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC1B,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;YAED,IAAI,UAAU,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBAC7C,qCAAqC;gBACrC,cAAc,CAAC,IAAI,CAAC;oBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,QAAQ;oBACR,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,SAAS,EAAE,WAAW;oBACtB,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBAEH,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,WAAW,IAAI,CAAC,IAAI,2CAA2C;oBACxE,QAAQ,EAAE,IAAI,CAAC,IAAI;iBACpB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,aAAa;YACb,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAEpD,cAAc,CAAC,IAAI,CAAC;oBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,QAAQ;oBACR,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,SAAS,EAAE,WAAW;oBACtB,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,mBAAmB,IAAI,CAAC,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAClG,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,SAAS,EAAE,WAAW;iBACvB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YAEnE,iDAAiD;YACjD,MAAM,eAAe,GAAG,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YAE1F,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,sCAAsC,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE;oBAC9E,QAAQ,EAAE,eAAe;oBACzB,SAAS,EAAE,WAAW;iBACvB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAEjE,cAAc,CAAC,IAAI,CAAC;wBAClB,IAAI,EAAE,eAAe;wBACrB,QAAQ,EAAE,YAAY;wBACtB,OAAO,EAAE,eAAe,CAAC,KAAK;wBAC9B,SAAS,EAAE,WAAW;wBACtB,OAAO,EAAE,IAAI;qBACd,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,YAAY;wBAClB,OAAO,EAAE,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;wBACnG,QAAQ,EAAE,eAAe;wBACzB,SAAS,EAAE,WAAW;qBACvB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBAChD,iFAAiF;gBACjF,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;oBACtD,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,sCAAsC,YAAY,EAAE;wBAC7D,QAAQ,EAAE,YAAY;qBACvB,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAC5D,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC1B,6CAA6C;oBAC7C,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,6BAA6B,YAAY,EAAE;wBACpD,QAAQ,EAAE,YAAY;qBACvB,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,WAAW,EAAE,CAAC;oBACrB,oDAAoD;oBACpD,IAAK,WAAqC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC7D,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,sBAAsB,YAAY,KAAK,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;4BAC1H,QAAQ,EAAE,YAAY;yBACvB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,8DAA8D;IAC9D,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;IAC3D,MAAM,mBAAmB,GAAG,IAAI,GAAG,CACjC,cAAc;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACzD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACrC,CAAC;IAEF,4DAA4D;IAC5D,IAAI,mBAAmB,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1F,MAAM,aAAa,GAAG,MAAM,2BAA2B,CACrD,OAAO,CAAC,SAAS,EACjB,WAAW,EACX,mBAAmB,CACpB,CAAC;QAEF,iDAAiD;QACjD,KAAK,MAAM,WAAW,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,qCAAqC,WAAW,EAAE;gBAC3D,QAAQ,EAAE,WAAW;aACtB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,YAAY,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,4BAA4B,YAAY,EAAE;aACpD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,OAAO,CAAC,CAAC,EAAE,CAAC;QACV,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE,cAAc;QACrB,QAAQ;QACR,MAAM;QACN,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAaD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,SAAiB,EACjB,WAAmB,EACnB,aAA0B;IAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEhD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,yDAAyD;YACzD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YAED,8BAA8B;YAC9B,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YAED,uBAAuB;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,WAAW,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CACT,oBAAoB,IAAI,KAAK,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CACxG,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,YAAY,EAAE,CAAC;QACtB,4DAA4D;QAC5D,IAAK,YAAsC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI,CACT,kBAAkB,WAAW,KAAK,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAChH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAgCD;;;;;;;;;;;;GAYG;AACH,SAAS,eAAe,CACtB,cAAiC,EACjC,WAAkC,EAClC,UAA4C,EAC5C,SAA4D;IAE5D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,wBAAwB,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,eAAe,IAAI,UAAU,CAAC,SAAS,CAAC;QAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,oBAAoB,CAAC,OAAyB;IACrD,wEAAwE;IACxE,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,2EAA2E;QAC3E,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC5C,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACtC,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACxC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAsB,EACtB,OAAmC;IAEnC,MAAM,cAAc,GAAG,OAAO,EAAE,UAAU,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IAExE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC1C,CAAC;IAED,+DAA+D;IAC/D,oEAAoE;IACpE,+EAA+E;IAC/E,IACE,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC;QAC7C,CAAC,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACxC,CAAC,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAC3C,CAAC;QACD,2BAA2B,CAAC,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrF,CAAC;IAED,iEAAiE;IACjE,uEAAuE;IACvE,yCAAyC;IACzC,MAAM,MAAM,GAAG,eAAe,CAC5B,cAAc,EACd,MAAM,CAAC,OAAO,CAAC,OAAO,EACtB,MAAM,CAAC,OAAO,CAAC,MAAM,EACrB,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAClC,CAAC;IAEF,+CAA+C;IAC/C,MAAM,UAAU,GAAqB,EAAE,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,iFAAiF;QACjF,MAAM,kBAAkB,GACtB,MAAM,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,OAAO,EAAE,YAAY,KAAK,SAAS;YAC9E,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE;YAC9D,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,eAAe,GAAoB;YACvC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YACpC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;YACtB,SAAS,EAAE,KAAK,CAAC,eAAe;YAChC,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;YACjC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS;YAC1C,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnF,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1F,qBAAqB,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC;YAChE,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/E,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,SAAS,IAAI,EAAE,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;YACrF,GAAG,CAAC,kBAAkB,KAAK,SAAS,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;SAC9E,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,eAAe,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,gCAAgC;IAChC,uEAAuE;IACvE,2EAA2E;IAC3E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;AAChD,CAAC"}
|