@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,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI for vitest-cucumber step/feature compatibility linting.
|
|
4
|
+
*
|
|
5
|
+
* Detects common vitest-cucumber traps statically — before tests run.
|
|
6
|
+
* Catches mismatches between .feature files and .steps.ts files that
|
|
7
|
+
* cause cryptic runtime failures.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* CLI configuration
|
|
11
|
+
*/
|
|
12
|
+
export interface LintStepsCLIConfig {
|
|
13
|
+
/** Treat warnings as errors */
|
|
14
|
+
strict: boolean;
|
|
15
|
+
/** Base directory for relative paths */
|
|
16
|
+
baseDir: string;
|
|
17
|
+
/** Output format */
|
|
18
|
+
format: 'pretty' | 'json';
|
|
19
|
+
/** Show help */
|
|
20
|
+
help: boolean;
|
|
21
|
+
/** Show version */
|
|
22
|
+
version: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Parse command line arguments
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseArgs(argv?: string[]): LintStepsCLIConfig;
|
|
28
|
+
/**
|
|
29
|
+
* Print usage information
|
|
30
|
+
*/
|
|
31
|
+
export declare function printHelp(): void;
|
|
32
|
+
//# sourceMappingURL=lint-steps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-steps.d.ts","sourceRoot":"","sources":["../../src/cli/lint-steps.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAYH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+BAA+B;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,gBAAgB;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,mBAAmB;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,kBAAkB,CAmDpF;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,IAAI,CA0DhC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI for vitest-cucumber step/feature compatibility linting.
|
|
4
|
+
*
|
|
5
|
+
* Detects common vitest-cucumber traps statically — before tests run.
|
|
6
|
+
* Catches mismatches between .feature files and .steps.ts files that
|
|
7
|
+
* cause cryptic runtime failures.
|
|
8
|
+
*/
|
|
9
|
+
// ─── Error Convention ───────────────────────────────────────────────────
|
|
10
|
+
// CLI modules use throw/catch + process.exit(). Pipeline modules use Result<T,E>.
|
|
11
|
+
// See src/cli/error-handler.ts for the unified handler.
|
|
12
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
13
|
+
import { printVersionAndExit } from './version.js';
|
|
14
|
+
import { handleCliError } from './error-handler.js';
|
|
15
|
+
import { runStepLint } from '../lint/steps/index.js';
|
|
16
|
+
import { formatPretty, formatJson, hasFailures } from '../lint/engine.js';
|
|
17
|
+
/**
|
|
18
|
+
* Parse command line arguments
|
|
19
|
+
*/
|
|
20
|
+
export function parseArgs(argv = process.argv.slice(2)) {
|
|
21
|
+
const config = {
|
|
22
|
+
strict: false,
|
|
23
|
+
baseDir: process.cwd(),
|
|
24
|
+
format: 'pretty',
|
|
25
|
+
help: false,
|
|
26
|
+
version: false,
|
|
27
|
+
};
|
|
28
|
+
let parsingFlags = true;
|
|
29
|
+
for (let i = 0; i < argv.length; i++) {
|
|
30
|
+
const arg = argv[i];
|
|
31
|
+
// Handle -- separator from pnpm
|
|
32
|
+
if (arg === '--') {
|
|
33
|
+
parsingFlags = false;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (!parsingFlags) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (arg === '--help' || arg === '-h') {
|
|
40
|
+
config.help = true;
|
|
41
|
+
}
|
|
42
|
+
else if (arg === '--version' || arg === '-v') {
|
|
43
|
+
config.version = true;
|
|
44
|
+
}
|
|
45
|
+
else if (arg === '--strict') {
|
|
46
|
+
config.strict = true;
|
|
47
|
+
}
|
|
48
|
+
else if (arg === '--base-dir' || arg === '-b') {
|
|
49
|
+
const nextArg = argv[++i];
|
|
50
|
+
if (nextArg === undefined) {
|
|
51
|
+
throw new Error(`Missing value for ${arg} flag`);
|
|
52
|
+
}
|
|
53
|
+
config.baseDir = nextArg;
|
|
54
|
+
}
|
|
55
|
+
else if (arg === '--format') {
|
|
56
|
+
const nextArg = argv[++i];
|
|
57
|
+
if (nextArg === undefined) {
|
|
58
|
+
throw new Error(`Missing value for ${arg} flag`);
|
|
59
|
+
}
|
|
60
|
+
if (nextArg !== 'pretty' && nextArg !== 'json') {
|
|
61
|
+
throw new Error(`Invalid format: ${nextArg}. Use "pretty" or "json"`);
|
|
62
|
+
}
|
|
63
|
+
config.format = nextArg;
|
|
64
|
+
}
|
|
65
|
+
else if (arg?.startsWith('-') === true) {
|
|
66
|
+
console.warn(`Warning: Unknown flag '${arg}' ignored`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return config;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Print usage information
|
|
73
|
+
*/
|
|
74
|
+
export function printHelp() {
|
|
75
|
+
console.log(`
|
|
76
|
+
architect-lint-steps - Validate vitest-cucumber feature/step compatibility
|
|
77
|
+
|
|
78
|
+
Detects common traps statically before tests run:
|
|
79
|
+
- {string} function params inside ScenarioOutline (should use variables)
|
|
80
|
+
- Missing And destructuring (causes StepAbleUnknowStepError)
|
|
81
|
+
- Missing Rule() wrapper (causes step matching failures)
|
|
82
|
+
- # in descriptions (terminates Gherkin parser context)
|
|
83
|
+
- Regex step patterns (not supported)
|
|
84
|
+
- {phrase} usage (not supported)
|
|
85
|
+
- Duplicate And step text (causes matching failures)
|
|
86
|
+
- $ in step text (causes matching issues)
|
|
87
|
+
|
|
88
|
+
Usage:
|
|
89
|
+
architect-lint-steps [options]
|
|
90
|
+
|
|
91
|
+
Options:
|
|
92
|
+
--strict Treat warnings as errors (exit 1 on warnings)
|
|
93
|
+
--format <type> Output format: "pretty" (default) or "json"
|
|
94
|
+
-b, --base-dir <dir> Base directory for paths (default: cwd)
|
|
95
|
+
-h, --help Show this help message
|
|
96
|
+
-v, --version Show version number
|
|
97
|
+
|
|
98
|
+
Exit Codes:
|
|
99
|
+
0 No errors (warnings allowed unless --strict)
|
|
100
|
+
1 Errors found (or warnings with --strict)
|
|
101
|
+
|
|
102
|
+
Scan Scope:
|
|
103
|
+
Feature files: tests/features/**/*.feature
|
|
104
|
+
architect/specs/**/*.feature
|
|
105
|
+
architect/decisions/**/*.feature
|
|
106
|
+
Step files: tests/steps/**/*.steps.ts
|
|
107
|
+
|
|
108
|
+
Rules:
|
|
109
|
+
error hash-in-description # at line start in description context
|
|
110
|
+
error duplicate-and-step Multiple And with same text in scenario
|
|
111
|
+
warning dollar-in-step-text $ character in step text
|
|
112
|
+
error regex-step-pattern Regex pattern in step definition
|
|
113
|
+
error unsupported-phrase-type {phrase} in step string
|
|
114
|
+
error scenario-outline-function-params Function params in ScenarioOutline
|
|
115
|
+
error missing-and-destructuring And steps but no And destructured
|
|
116
|
+
error missing-rule-wrapper Rule: blocks but no Rule() wrapper
|
|
117
|
+
warning hash-in-step-text Mid-line # in step text silently truncates
|
|
118
|
+
error keyword-in-description Description line starts with Given/When/Then/And/But
|
|
119
|
+
warning outline-quoted-values Quoted values in Outline suggest wrong pattern
|
|
120
|
+
error repeated-step-pattern Same step pattern registered twice in scenario
|
|
121
|
+
|
|
122
|
+
Examples:
|
|
123
|
+
# Standard check
|
|
124
|
+
architect-lint-steps
|
|
125
|
+
|
|
126
|
+
# Strict mode (warnings are errors)
|
|
127
|
+
architect-lint-steps --strict
|
|
128
|
+
|
|
129
|
+
# JSON output for CI
|
|
130
|
+
architect-lint-steps --format json
|
|
131
|
+
`);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Main CLI function
|
|
135
|
+
*/
|
|
136
|
+
function main() {
|
|
137
|
+
const config = parseArgs();
|
|
138
|
+
if (config.version) {
|
|
139
|
+
printVersionAndExit('architect-lint-steps');
|
|
140
|
+
}
|
|
141
|
+
if (config.help) {
|
|
142
|
+
printHelp();
|
|
143
|
+
process.exit(0);
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
console.log('Step Lint: checking vitest-cucumber compatibility...');
|
|
147
|
+
const summary = runStepLint({ baseDir: config.baseDir });
|
|
148
|
+
// Format and output results
|
|
149
|
+
if (config.format === 'json') {
|
|
150
|
+
const result = formatJson(summary);
|
|
151
|
+
if (result.ok) {
|
|
152
|
+
console.log(result.value);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
console.error(`Output formatting error: ${result.error.message}`);
|
|
156
|
+
process.exit(1);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
console.log(formatPretty(summary));
|
|
161
|
+
}
|
|
162
|
+
// Determine exit code
|
|
163
|
+
const failed = hasFailures(summary, config.strict);
|
|
164
|
+
process.exit(failed ? 1 : 0);
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
handleCliError(error, 1);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// Entry point
|
|
171
|
+
main();
|
|
172
|
+
//# sourceMappingURL=lint-steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-steps.js","sourceRoot":"","sources":["../../src/cli/lint-steps.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAEH,2EAA2E;AAC3E,kFAAkF;AAClF,wDAAwD;AACxD,2EAA2E;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkB1E;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAuB;QACjC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;QACtB,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,KAAK;KACf,CAAC;IAEF,IAAI,YAAY,GAAG,IAAI,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,gCAAgC;QAChC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,YAAY,GAAG,KAAK,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC/C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,OAAO,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,OAAO,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,0BAA0B,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;QAC1B,CAAC;aAAM,IAAI,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,0BAA0B,GAAG,WAAW,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDX,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,IAAI;IACX,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QAEpE,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAEzD,4BAA4B;QAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,sBAAsB;QACtB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,cAAc;AACd,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @architect
|
|
4
|
+
* @architect-core
|
|
5
|
+
* @architect-pattern MCPServerBin
|
|
6
|
+
* @architect-status active
|
|
7
|
+
* @architect-arch-role infrastructure
|
|
8
|
+
* @architect-arch-context cli
|
|
9
|
+
* @architect-arch-layer infrastructure
|
|
10
|
+
* @architect-uses MCPServerImpl
|
|
11
|
+
* @architect-implements MCPServerIntegration
|
|
12
|
+
*
|
|
13
|
+
* ## MCP Server CLI Entry Point
|
|
14
|
+
*
|
|
15
|
+
* Handles stdout isolation, CLI arg parsing, and process lifecycle.
|
|
16
|
+
* Delegates to startMcpServer() for MCP server setup.
|
|
17
|
+
*
|
|
18
|
+
* Stdout isolation MUST happen before any MCP module loads — the dynamic
|
|
19
|
+
* import below ensures the console.log redirect is active first.
|
|
20
|
+
*/
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=mcp-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/cli/mcp-server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @architect
|
|
4
|
+
* @architect-core
|
|
5
|
+
* @architect-pattern MCPServerBin
|
|
6
|
+
* @architect-status active
|
|
7
|
+
* @architect-arch-role infrastructure
|
|
8
|
+
* @architect-arch-context cli
|
|
9
|
+
* @architect-arch-layer infrastructure
|
|
10
|
+
* @architect-uses MCPServerImpl
|
|
11
|
+
* @architect-implements MCPServerIntegration
|
|
12
|
+
*
|
|
13
|
+
* ## MCP Server CLI Entry Point
|
|
14
|
+
*
|
|
15
|
+
* Handles stdout isolation, CLI arg parsing, and process lifecycle.
|
|
16
|
+
* Delegates to startMcpServer() for MCP server setup.
|
|
17
|
+
*
|
|
18
|
+
* Stdout isolation MUST happen before any MCP module loads — the dynamic
|
|
19
|
+
* import below ensures the console.log redirect is active first.
|
|
20
|
+
*/
|
|
21
|
+
// Redirect console.log to stderr BEFORE loading MCP modules.
|
|
22
|
+
// MCP uses JSON-RPC over stdout — stray console.log corrupts the transport.
|
|
23
|
+
console.log = console.error;
|
|
24
|
+
// Dynamic import ensures the redirect is active before server module loads.
|
|
25
|
+
const { parseCliArgs, startMcpServer } = await import('../mcp/server.js');
|
|
26
|
+
const parsed = parseCliArgs(process.argv.slice(2));
|
|
27
|
+
switch (parsed.type) {
|
|
28
|
+
case 'help':
|
|
29
|
+
console.error(parsed.text);
|
|
30
|
+
process.exit(0);
|
|
31
|
+
break;
|
|
32
|
+
case 'version':
|
|
33
|
+
console.error(parsed.text);
|
|
34
|
+
process.exit(0);
|
|
35
|
+
break;
|
|
36
|
+
case 'error':
|
|
37
|
+
console.error(`[architect-mcp] Error: ${parsed.message}`);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
break;
|
|
40
|
+
case 'options':
|
|
41
|
+
try {
|
|
42
|
+
await startMcpServer({
|
|
43
|
+
...(parsed.options.input !== undefined ? { input: parsed.options.input } : {}),
|
|
44
|
+
...(parsed.options.features !== undefined ? { features: parsed.options.features } : {}),
|
|
45
|
+
...(parsed.options.baseDir !== undefined ? { baseDir: parsed.options.baseDir } : {}),
|
|
46
|
+
...(parsed.options.watch !== undefined ? { watch: parsed.options.watch } : {}),
|
|
47
|
+
...(parsed.options.version !== undefined ? { version: parsed.options.version } : {}),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.error(`Fatal error: ${error instanceof Error ? error.message : String(error)}`);
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=mcp-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/cli/mcp-server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,6DAA6D;AAC7D,4EAA4E;AAC5E,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;AAE5B,4EAA4E;AAC5E,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE1E,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,KAAK,MAAM;QACT,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM;IACR,KAAK,SAAS;QACZ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM;IACR,KAAK,OAAO;QACV,OAAO,CAAC,KAAK,CAAC,0BAA0B,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM;IACR,KAAK,SAAS;QACZ,IAAI,CAAC;YACH,MAAM,cAAc,CAAC;gBACnB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9E,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvF,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpF,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9E,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,gBAAgB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM;AACV,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-core
|
|
4
|
+
* @architect-pattern OutputPipelineImpl
|
|
5
|
+
* @architect-status active
|
|
6
|
+
* @architect-implements DataAPIOutputShaping
|
|
7
|
+
* @architect-uses PatternSummarizerImpl
|
|
8
|
+
* @architect-used-by ProcessAPICLIImpl
|
|
9
|
+
* @architect-arch-role service
|
|
10
|
+
* @architect-arch-context cli
|
|
11
|
+
* @architect-arch-layer application
|
|
12
|
+
*
|
|
13
|
+
* ## OutputPipeline — CLI Output Shaping and Formatting
|
|
14
|
+
*
|
|
15
|
+
* Post-processing pipeline that transforms raw API results into shaped CLI output.
|
|
16
|
+
* Applies output modifiers (--names-only, --count, --fields, --full) and wraps
|
|
17
|
+
* results in QueryResult envelopes.
|
|
18
|
+
*
|
|
19
|
+
* Architecture decision: This is a single post-processing function, NOT a
|
|
20
|
+
* middleware chain. The 4 modifiers are mutually exclusive with clear precedence:
|
|
21
|
+
* count > namesOnly > fields > default summarize.
|
|
22
|
+
*
|
|
23
|
+
* **When to Use:** When processing CLI query results that need output shaping via --names-only, --count, --fields, or --full modifiers.
|
|
24
|
+
*/
|
|
25
|
+
import type { ExtractedPattern } from '../validation-schemas/extracted-pattern.js';
|
|
26
|
+
import type { MasterDataset } from '../validation-schemas/master-dataset.js';
|
|
27
|
+
import type { QueryResult } from '../api/types.js';
|
|
28
|
+
/**
|
|
29
|
+
* Output modifier flags parsed from CLI arguments.
|
|
30
|
+
*
|
|
31
|
+
* Precedence: count > namesOnly > fields > default summarize.
|
|
32
|
+
* When --full is set, summarization is bypassed.
|
|
33
|
+
*/
|
|
34
|
+
export interface OutputModifiers {
|
|
35
|
+
/** --names-only: return array of pattern name strings */
|
|
36
|
+
readonly namesOnly: boolean;
|
|
37
|
+
/** --count: return single integer count */
|
|
38
|
+
readonly count: boolean;
|
|
39
|
+
/** --fields name,status: return only selected fields per pattern */
|
|
40
|
+
readonly fields: readonly string[] | null;
|
|
41
|
+
/** --full: bypass summarization, return raw ExtractedPattern[] */
|
|
42
|
+
readonly full: boolean;
|
|
43
|
+
}
|
|
44
|
+
export declare const DEFAULT_OUTPUT_MODIFIERS: OutputModifiers;
|
|
45
|
+
/**
|
|
46
|
+
* Composable list filters for the `list` subcommand.
|
|
47
|
+
*
|
|
48
|
+
* Filters combine via AND logic. Each filter narrows the result set.
|
|
49
|
+
*/
|
|
50
|
+
export interface ListFilters {
|
|
51
|
+
/** Filter by FSM status (roadmap, active, completed, deferred) */
|
|
52
|
+
readonly status: string | null;
|
|
53
|
+
/** Filter by roadmap phase number */
|
|
54
|
+
readonly phase: number | null;
|
|
55
|
+
/** Filter by category name */
|
|
56
|
+
readonly category: string | null;
|
|
57
|
+
/** Filter by source type */
|
|
58
|
+
readonly source: 'typescript' | 'gherkin' | null;
|
|
59
|
+
/** Filter by architecture context (@architect-arch-context) */
|
|
60
|
+
readonly archContext: string | null;
|
|
61
|
+
/** Filter by product area (@architect-product-area) */
|
|
62
|
+
readonly productArea: string | null;
|
|
63
|
+
/** Maximum number of results */
|
|
64
|
+
readonly limit: number | null;
|
|
65
|
+
/** Number of results to skip */
|
|
66
|
+
readonly offset: number | null;
|
|
67
|
+
}
|
|
68
|
+
export declare const DEFAULT_LIST_FILTERS: ListFilters;
|
|
69
|
+
/**
|
|
70
|
+
* Discriminated union for pipeline input.
|
|
71
|
+
*
|
|
72
|
+
* The router determines `kind` based on which API method was called.
|
|
73
|
+
* Pattern arrays get summarization + modifiers; scalars pass through.
|
|
74
|
+
*/
|
|
75
|
+
export type PipelineInput = {
|
|
76
|
+
readonly kind: 'patterns';
|
|
77
|
+
readonly data: readonly ExtractedPattern[];
|
|
78
|
+
} | {
|
|
79
|
+
readonly kind: 'scalar';
|
|
80
|
+
readonly data: unknown;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Set of ProcessStateAPI method names that return ExtractedPattern[].
|
|
84
|
+
*
|
|
85
|
+
* Used by the router to tag results with `kind: 'patterns'` for the pipeline.
|
|
86
|
+
*/
|
|
87
|
+
export declare const PATTERN_ARRAY_METHODS: ReadonlySet<string>;
|
|
88
|
+
/**
|
|
89
|
+
* Validate output modifier combinations.
|
|
90
|
+
* Throws on conflicts: --full + --names-only, --full + --count, --full + --fields.
|
|
91
|
+
*/
|
|
92
|
+
export declare function validateModifiers(modifiers: OutputModifiers): void;
|
|
93
|
+
/**
|
|
94
|
+
* Apply output modifiers to pipeline input.
|
|
95
|
+
*
|
|
96
|
+
* For pattern arrays:
|
|
97
|
+
* - Default: summarize each pattern to ~100 bytes
|
|
98
|
+
* - --full: bypass summarization
|
|
99
|
+
* - --names-only: extract pattern names as string[]
|
|
100
|
+
* - --count: return array length as number
|
|
101
|
+
* - --fields: pick specific fields from each summary
|
|
102
|
+
*
|
|
103
|
+
* For scalars: pass through unchanged (modifiers do not apply).
|
|
104
|
+
*/
|
|
105
|
+
export declare function applyOutputPipeline(input: PipelineInput, modifiers: OutputModifiers): unknown;
|
|
106
|
+
/**
|
|
107
|
+
* Apply composable filters to the pattern list.
|
|
108
|
+
*
|
|
109
|
+
* Sequential filter composition: status → phase → category → source.
|
|
110
|
+
* Pagination (offset/limit) applies after all filters.
|
|
111
|
+
*/
|
|
112
|
+
export declare function applyListFilters(dataset: MasterDataset, filters: ListFilters): readonly ExtractedPattern[];
|
|
113
|
+
/**
|
|
114
|
+
* Strip null, undefined, and empty values from an object for compact output.
|
|
115
|
+
*
|
|
116
|
+
* Recursively removes:
|
|
117
|
+
* - null and undefined values
|
|
118
|
+
* - empty strings
|
|
119
|
+
* - empty arrays
|
|
120
|
+
* - empty objects
|
|
121
|
+
*/
|
|
122
|
+
export declare function stripEmpty(obj: unknown): unknown;
|
|
123
|
+
/**
|
|
124
|
+
* Format a QueryResult envelope for CLI output.
|
|
125
|
+
*
|
|
126
|
+
* - json mode: pretty-printed with 2-space indent
|
|
127
|
+
* - compact mode: minified with empty values stripped
|
|
128
|
+
*/
|
|
129
|
+
export declare function formatOutput(envelope: QueryResult<unknown>, format: 'json' | 'compact'): string;
|
|
130
|
+
//# sourceMappingURL=output-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output-pipeline.d.ts","sourceRoot":"","sources":["../../src/cli/output-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAQnD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,wBAAwB,EAAE,eAKtC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8BAA8B;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAAC;IACjD,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uDAAuD;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,oBAAoB,EAAE,WASlC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAAE,GACzE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CASpD,CAAC;AAMH;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CA6BlE;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAoC7F;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,WAAW,GACnB,SAAS,gBAAgB,EAAE,CAmD7B;AAMD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CA0BhD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM/F"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @architect
|
|
3
|
+
* @architect-core
|
|
4
|
+
* @architect-pattern OutputPipelineImpl
|
|
5
|
+
* @architect-status active
|
|
6
|
+
* @architect-implements DataAPIOutputShaping
|
|
7
|
+
* @architect-uses PatternSummarizerImpl
|
|
8
|
+
* @architect-used-by ProcessAPICLIImpl
|
|
9
|
+
* @architect-arch-role service
|
|
10
|
+
* @architect-arch-context cli
|
|
11
|
+
* @architect-arch-layer application
|
|
12
|
+
*
|
|
13
|
+
* ## OutputPipeline — CLI Output Shaping and Formatting
|
|
14
|
+
*
|
|
15
|
+
* Post-processing pipeline that transforms raw API results into shaped CLI output.
|
|
16
|
+
* Applies output modifiers (--names-only, --count, --fields, --full) and wraps
|
|
17
|
+
* results in QueryResult envelopes.
|
|
18
|
+
*
|
|
19
|
+
* Architecture decision: This is a single post-processing function, NOT a
|
|
20
|
+
* middleware chain. The 4 modifiers are mutually exclusive with clear precedence:
|
|
21
|
+
* count > namesOnly > fields > default summarize.
|
|
22
|
+
*
|
|
23
|
+
* **When to Use:** When processing CLI query results that need output shaping via --names-only, --count, --fields, or --full modifiers.
|
|
24
|
+
*/
|
|
25
|
+
import { QueryApiError } from '../api/types.js';
|
|
26
|
+
import { summarizePatterns, SUMMARY_FIELDS, deriveSource } from '../api/summarize.js';
|
|
27
|
+
import { getPatternName } from '../api/pattern-helpers.js';
|
|
28
|
+
export const DEFAULT_OUTPUT_MODIFIERS = {
|
|
29
|
+
namesOnly: false,
|
|
30
|
+
count: false,
|
|
31
|
+
fields: null,
|
|
32
|
+
full: false,
|
|
33
|
+
};
|
|
34
|
+
export const DEFAULT_LIST_FILTERS = {
|
|
35
|
+
status: null,
|
|
36
|
+
phase: null,
|
|
37
|
+
category: null,
|
|
38
|
+
source: null,
|
|
39
|
+
archContext: null,
|
|
40
|
+
productArea: null,
|
|
41
|
+
limit: null,
|
|
42
|
+
offset: null,
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Set of ProcessStateAPI method names that return ExtractedPattern[].
|
|
46
|
+
*
|
|
47
|
+
* Used by the router to tag results with `kind: 'patterns'` for the pipeline.
|
|
48
|
+
*/
|
|
49
|
+
export const PATTERN_ARRAY_METHODS = new Set([
|
|
50
|
+
'getPatternsByNormalizedStatus',
|
|
51
|
+
'getPatternsByStatus',
|
|
52
|
+
'getPatternsByPhase',
|
|
53
|
+
'getPatternsByCategory',
|
|
54
|
+
'getPatternsByQuarter',
|
|
55
|
+
'getCurrentWork',
|
|
56
|
+
'getRoadmapItems',
|
|
57
|
+
'getRecentlyCompleted',
|
|
58
|
+
]);
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
// Validation
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
/**
|
|
63
|
+
* Validate output modifier combinations.
|
|
64
|
+
* Throws on conflicts: --full + --names-only, --full + --count, --full + --fields.
|
|
65
|
+
*/
|
|
66
|
+
export function validateModifiers(modifiers) {
|
|
67
|
+
if (modifiers.full && modifiers.namesOnly) {
|
|
68
|
+
throw new QueryApiError('INVALID_ARGUMENT', 'Conflicting modifiers: --full and --names-only cannot be used together');
|
|
69
|
+
}
|
|
70
|
+
if (modifiers.full && modifiers.count) {
|
|
71
|
+
throw new QueryApiError('INVALID_ARGUMENT', 'Conflicting modifiers: --full and --count cannot be used together');
|
|
72
|
+
}
|
|
73
|
+
if (modifiers.full && modifiers.fields !== null) {
|
|
74
|
+
throw new QueryApiError('INVALID_ARGUMENT', 'Conflicting modifiers: --full and --fields cannot be used together');
|
|
75
|
+
}
|
|
76
|
+
if (modifiers.fields !== null) {
|
|
77
|
+
const validFields = SUMMARY_FIELDS;
|
|
78
|
+
const invalidFields = modifiers.fields.filter((f) => !validFields.has(f));
|
|
79
|
+
if (invalidFields.length > 0) {
|
|
80
|
+
throw new QueryApiError('INVALID_ARGUMENT', `Invalid field names: ${invalidFields.join(', ')}. Valid fields: ${[...validFields].join(', ')}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
// Pipeline
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
/**
|
|
88
|
+
* Apply output modifiers to pipeline input.
|
|
89
|
+
*
|
|
90
|
+
* For pattern arrays:
|
|
91
|
+
* - Default: summarize each pattern to ~100 bytes
|
|
92
|
+
* - --full: bypass summarization
|
|
93
|
+
* - --names-only: extract pattern names as string[]
|
|
94
|
+
* - --count: return array length as number
|
|
95
|
+
* - --fields: pick specific fields from each summary
|
|
96
|
+
*
|
|
97
|
+
* For scalars: pass through unchanged (modifiers do not apply).
|
|
98
|
+
*/
|
|
99
|
+
export function applyOutputPipeline(input, modifiers) {
|
|
100
|
+
if (input.kind === 'scalar') {
|
|
101
|
+
return input.data;
|
|
102
|
+
}
|
|
103
|
+
const patterns = input.data;
|
|
104
|
+
// Precedence: count > namesOnly > fields > default summarize
|
|
105
|
+
if (modifiers.count) {
|
|
106
|
+
return patterns.length;
|
|
107
|
+
}
|
|
108
|
+
if (modifiers.namesOnly) {
|
|
109
|
+
return patterns.map((p) => getPatternName(p));
|
|
110
|
+
}
|
|
111
|
+
if (modifiers.full) {
|
|
112
|
+
return patterns;
|
|
113
|
+
}
|
|
114
|
+
const summaries = summarizePatterns(patterns);
|
|
115
|
+
if (modifiers.fields !== null) {
|
|
116
|
+
const fieldSet = new Set(modifiers.fields);
|
|
117
|
+
return summaries.map((s) => {
|
|
118
|
+
const picked = {};
|
|
119
|
+
for (const field of fieldSet) {
|
|
120
|
+
if (field in s) {
|
|
121
|
+
picked[field] = s[field];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return picked;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return summaries;
|
|
128
|
+
}
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
// Filtering
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
/**
|
|
133
|
+
* Apply composable filters to the pattern list.
|
|
134
|
+
*
|
|
135
|
+
* Sequential filter composition: status → phase → category → source.
|
|
136
|
+
* Pagination (offset/limit) applies after all filters.
|
|
137
|
+
*/
|
|
138
|
+
export function applyListFilters(dataset, filters) {
|
|
139
|
+
let candidates = dataset.patterns;
|
|
140
|
+
// Filter by status
|
|
141
|
+
if (filters.status !== null) {
|
|
142
|
+
// For exact status matching (roadmap, active, completed, deferred),
|
|
143
|
+
// filter directly rather than using normalized views
|
|
144
|
+
candidates = candidates.filter((p) => p.status === filters.status);
|
|
145
|
+
}
|
|
146
|
+
// Filter by phase
|
|
147
|
+
if (filters.phase !== null) {
|
|
148
|
+
const phase = filters.phase;
|
|
149
|
+
candidates = candidates.filter((p) => p.phase === phase);
|
|
150
|
+
}
|
|
151
|
+
// Filter by category
|
|
152
|
+
if (filters.category !== null) {
|
|
153
|
+
const category = filters.category.toLowerCase();
|
|
154
|
+
candidates = candidates.filter((p) => p.category.toLowerCase() === category);
|
|
155
|
+
}
|
|
156
|
+
// Filter by source
|
|
157
|
+
if (filters.source !== null) {
|
|
158
|
+
const source = filters.source;
|
|
159
|
+
candidates = candidates.filter((p) => {
|
|
160
|
+
return deriveSource(p.source.file) === source;
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
// Filter by architecture context
|
|
164
|
+
if (filters.archContext !== null) {
|
|
165
|
+
const ctx = filters.archContext.toLowerCase();
|
|
166
|
+
candidates = candidates.filter((p) => p.archContext?.toLowerCase() === ctx);
|
|
167
|
+
}
|
|
168
|
+
// Filter by product area
|
|
169
|
+
if (filters.productArea !== null) {
|
|
170
|
+
const area = filters.productArea.toLowerCase();
|
|
171
|
+
candidates = candidates.filter((p) => p.productArea?.toLowerCase() === area);
|
|
172
|
+
}
|
|
173
|
+
// Apply pagination
|
|
174
|
+
if (filters.offset !== null) {
|
|
175
|
+
candidates = candidates.slice(filters.offset);
|
|
176
|
+
}
|
|
177
|
+
if (filters.limit !== null) {
|
|
178
|
+
candidates = candidates.slice(0, filters.limit);
|
|
179
|
+
}
|
|
180
|
+
return candidates;
|
|
181
|
+
}
|
|
182
|
+
// ---------------------------------------------------------------------------
|
|
183
|
+
// Output formatting
|
|
184
|
+
// ---------------------------------------------------------------------------
|
|
185
|
+
/**
|
|
186
|
+
* Strip null, undefined, and empty values from an object for compact output.
|
|
187
|
+
*
|
|
188
|
+
* Recursively removes:
|
|
189
|
+
* - null and undefined values
|
|
190
|
+
* - empty strings
|
|
191
|
+
* - empty arrays
|
|
192
|
+
* - empty objects
|
|
193
|
+
*/
|
|
194
|
+
export function stripEmpty(obj) {
|
|
195
|
+
if (obj === null || obj === undefined) {
|
|
196
|
+
return undefined;
|
|
197
|
+
}
|
|
198
|
+
if (Array.isArray(obj)) {
|
|
199
|
+
if (obj.length === 0)
|
|
200
|
+
return undefined;
|
|
201
|
+
return obj.map(stripEmpty).filter((v) => v !== undefined);
|
|
202
|
+
}
|
|
203
|
+
if (typeof obj === 'object') {
|
|
204
|
+
const result = {};
|
|
205
|
+
let hasKeys = false;
|
|
206
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
207
|
+
if (value === null || value === undefined)
|
|
208
|
+
continue;
|
|
209
|
+
if (typeof value === 'string' && value === '')
|
|
210
|
+
continue;
|
|
211
|
+
const stripped = stripEmpty(value);
|
|
212
|
+
if (stripped !== undefined) {
|
|
213
|
+
result[key] = stripped;
|
|
214
|
+
hasKeys = true;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return hasKeys ? result : undefined;
|
|
218
|
+
}
|
|
219
|
+
return obj;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Format a QueryResult envelope for CLI output.
|
|
223
|
+
*
|
|
224
|
+
* - json mode: pretty-printed with 2-space indent
|
|
225
|
+
* - compact mode: minified with empty values stripped
|
|
226
|
+
*/
|
|
227
|
+
export function formatOutput(envelope, format) {
|
|
228
|
+
if (format === 'compact') {
|
|
229
|
+
const stripped = stripEmpty(envelope);
|
|
230
|
+
return JSON.stringify(stripped);
|
|
231
|
+
}
|
|
232
|
+
return JSON.stringify(envelope, null, 2);
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=output-pipeline.js.map
|