@prodara/compiler 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +204 -0
- package/dist/agent/agent.d.ts +10 -0
- package/dist/agent/agent.d.ts.map +1 -0
- package/dist/agent/agent.js +122 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/api-client.d.ts +29 -0
- package/dist/agent/api-client.d.ts.map +1 -0
- package/dist/agent/api-client.js +167 -0
- package/dist/agent/api-client.js.map +1 -0
- package/dist/agent/index.d.ts +5 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +3 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/party.d.ts +48 -0
- package/dist/agent/party.d.ts.map +1 -0
- package/dist/agent/party.js +79 -0
- package/dist/agent/party.js.map +1 -0
- package/dist/agent/types.d.ts +35 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +5 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/audit/audit.d.ts +32 -0
- package/dist/audit/audit.d.ts.map +1 -0
- package/dist/audit/audit.js +120 -0
- package/dist/audit/audit.js.map +1 -0
- package/dist/audit/index.d.ts +3 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +2 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/types.d.ts +25 -0
- package/dist/audit/types.d.ts.map +1 -0
- package/dist/audit/types.js +5 -0
- package/dist/audit/types.js.map +1 -0
- package/dist/binder/binder.d.ts +34 -0
- package/dist/binder/binder.d.ts.map +1 -0
- package/dist/binder/binder.js +202 -0
- package/dist/binder/binder.js.map +1 -0
- package/dist/binder/index.d.ts +3 -0
- package/dist/binder/index.d.ts.map +1 -0
- package/dist/binder/index.js +2 -0
- package/dist/binder/index.js.map +1 -0
- package/dist/build-state/build-state.d.ts +40 -0
- package/dist/build-state/build-state.d.ts.map +1 -0
- package/dist/build-state/build-state.js +180 -0
- package/dist/build-state/build-state.js.map +1 -0
- package/dist/build-state/index.d.ts +3 -0
- package/dist/build-state/index.d.ts.map +1 -0
- package/dist/build-state/index.js +2 -0
- package/dist/build-state/index.js.map +1 -0
- package/dist/checker/index.d.ts +5 -0
- package/dist/checker/index.d.ts.map +1 -0
- package/dist/checker/index.js +3 -0
- package/dist/checker/index.js.map +1 -0
- package/dist/checker/type-checker.d.ts +8 -0
- package/dist/checker/type-checker.d.ts.map +1 -0
- package/dist/checker/type-checker.js +136 -0
- package/dist/checker/type-checker.js.map +1 -0
- package/dist/checker/validator.d.ts +8 -0
- package/dist/checker/validator.d.ts.map +1 -0
- package/dist/checker/validator.js +251 -0
- package/dist/checker/validator.js.map +1 -0
- package/dist/cli/agent-setup.d.ts +27 -0
- package/dist/cli/agent-setup.d.ts.map +1 -0
- package/dist/cli/agent-setup.js +829 -0
- package/dist/cli/agent-setup.js.map +1 -0
- package/dist/cli/analyze.d.ts +28 -0
- package/dist/cli/analyze.d.ts.map +1 -0
- package/dist/cli/analyze.js +188 -0
- package/dist/cli/analyze.js.map +1 -0
- package/dist/cli/checklist.d.ts +27 -0
- package/dist/cli/checklist.d.ts.map +1 -0
- package/dist/cli/checklist.js +153 -0
- package/dist/cli/checklist.js.map +1 -0
- package/dist/cli/compile.d.ts +26 -0
- package/dist/cli/compile.d.ts.map +1 -0
- package/dist/cli/compile.js +112 -0
- package/dist/cli/compile.js.map +1 -0
- package/dist/cli/dashboard.d.ts +19 -0
- package/dist/cli/dashboard.d.ts.map +1 -0
- package/dist/cli/dashboard.js +73 -0
- package/dist/cli/dashboard.js.map +1 -0
- package/dist/cli/explain.d.ts +23 -0
- package/dist/cli/explain.d.ts.map +1 -0
- package/dist/cli/explain.js +144 -0
- package/dist/cli/explain.js.map +1 -0
- package/dist/cli/git.d.ts +14 -0
- package/dist/cli/git.d.ts.map +1 -0
- package/dist/cli/git.js +44 -0
- package/dist/cli/git.js.map +1 -0
- package/dist/cli/lifecycle.d.ts +28 -0
- package/dist/cli/lifecycle.d.ts.map +1 -0
- package/dist/cli/lifecycle.js +82 -0
- package/dist/cli/lifecycle.js.map +1 -0
- package/dist/cli/main.d.ts +10 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +1072 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/notify.d.ts +13 -0
- package/dist/cli/notify.d.ts.map +1 -0
- package/dist/cli/notify.js +36 -0
- package/dist/cli/notify.js.map +1 -0
- package/dist/cli/starters.d.ts +12 -0
- package/dist/cli/starters.d.ts.map +1 -0
- package/dist/cli/starters.js +439 -0
- package/dist/cli/starters.js.map +1 -0
- package/dist/config/config.d.ts +194 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +434 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +5 -0
- package/dist/config/index.js.map +1 -0
- package/dist/diagnostics/diagnostic.d.ts +44 -0
- package/dist/diagnostics/diagnostic.d.ts.map +1 -0
- package/dist/diagnostics/diagnostic.js +44 -0
- package/dist/diagnostics/diagnostic.js.map +1 -0
- package/dist/diagnostics/index.d.ts +4 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +3 -0
- package/dist/diagnostics/index.js.map +1 -0
- package/dist/diagnostics/reporter.d.ts +43 -0
- package/dist/diagnostics/reporter.d.ts.map +1 -0
- package/dist/diagnostics/reporter.js +74 -0
- package/dist/diagnostics/reporter.js.map +1 -0
- package/dist/discovery/discovery.d.ts +6 -0
- package/dist/discovery/discovery.d.ts.map +1 -0
- package/dist/discovery/discovery.js +66 -0
- package/dist/discovery/discovery.js.map +1 -0
- package/dist/discovery/index.d.ts +2 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +2 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/doc-gen/doc-gen-types.d.ts +174 -0
- package/dist/doc-gen/doc-gen-types.d.ts.map +1 -0
- package/dist/doc-gen/doc-gen-types.js +7 -0
- package/dist/doc-gen/doc-gen-types.js.map +1 -0
- package/dist/doc-gen/doc-renderer.d.ts +17 -0
- package/dist/doc-gen/doc-renderer.d.ts.map +1 -0
- package/dist/doc-gen/doc-renderer.js +65 -0
- package/dist/doc-gen/doc-renderer.js.map +1 -0
- package/dist/doc-gen/format-helpers.d.ts +18 -0
- package/dist/doc-gen/format-helpers.d.ts.map +1 -0
- package/dist/doc-gen/format-helpers.js +92 -0
- package/dist/doc-gen/format-helpers.js.map +1 -0
- package/dist/doc-gen/index.d.ts +5 -0
- package/dist/doc-gen/index.d.ts.map +1 -0
- package/dist/doc-gen/index.js +5 -0
- package/dist/doc-gen/index.js.map +1 -0
- package/dist/doc-gen/link-resolver.d.ts +10 -0
- package/dist/doc-gen/link-resolver.d.ts.map +1 -0
- package/dist/doc-gen/link-resolver.js +87 -0
- package/dist/doc-gen/link-resolver.js.map +1 -0
- package/dist/doc-gen/mermaid-renderers.d.ts +12 -0
- package/dist/doc-gen/mermaid-renderers.d.ts.map +1 -0
- package/dist/doc-gen/mermaid-renderers.js +197 -0
- package/dist/doc-gen/mermaid-renderers.js.map +1 -0
- package/dist/doc-gen/module-renderer.d.ts +6 -0
- package/dist/doc-gen/module-renderer.d.ts.map +1 -0
- package/dist/doc-gen/module-renderer.js +54 -0
- package/dist/doc-gen/module-renderer.js.map +1 -0
- package/dist/doc-gen/product-renderer.d.ts +6 -0
- package/dist/doc-gen/product-renderer.d.ts.map +1 -0
- package/dist/doc-gen/product-renderer.js +101 -0
- package/dist/doc-gen/product-renderer.js.map +1 -0
- package/dist/doc-gen/section-renderers.d.ts +20 -0
- package/dist/doc-gen/section-renderers.d.ts.map +1 -0
- package/dist/doc-gen/section-renderers.js +357 -0
- package/dist/doc-gen/section-renderers.js.map +1 -0
- package/dist/doc-gen/string-resolver.d.ts +8 -0
- package/dist/doc-gen/string-resolver.d.ts.map +1 -0
- package/dist/doc-gen/string-resolver.js +47 -0
- package/dist/doc-gen/string-resolver.js.map +1 -0
- package/dist/doc-gen/surface-ascii.d.ts +7 -0
- package/dist/doc-gen/surface-ascii.d.ts.map +1 -0
- package/dist/doc-gen/surface-ascii.js +87 -0
- package/dist/doc-gen/surface-ascii.js.map +1 -0
- package/dist/drift/drift.d.ts +16 -0
- package/dist/drift/drift.d.ts.map +1 -0
- package/dist/drift/drift.js +149 -0
- package/dist/drift/drift.js.map +1 -0
- package/dist/drift/index.d.ts +3 -0
- package/dist/drift/index.d.ts.map +1 -0
- package/dist/drift/index.js +2 -0
- package/dist/drift/index.js.map +1 -0
- package/dist/extensions/index.d.ts +6 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +7 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/loader.d.ts +21 -0
- package/dist/extensions/loader.d.ts.map +1 -0
- package/dist/extensions/loader.js +101 -0
- package/dist/extensions/loader.js.map +1 -0
- package/dist/extensions/marketplace.d.ts +22 -0
- package/dist/extensions/marketplace.d.ts.map +1 -0
- package/dist/extensions/marketplace.js +40 -0
- package/dist/extensions/marketplace.js.map +1 -0
- package/dist/extensions/registry.d.ts +45 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/extensions/registry.js +82 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/types.d.ts +41 -0
- package/dist/extensions/types.d.ts.map +1 -0
- package/dist/extensions/types.js +5 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/generator/contracts.d.ts +67 -0
- package/dist/generator/contracts.d.ts.map +1 -0
- package/dist/generator/contracts.js +94 -0
- package/dist/generator/contracts.js.map +1 -0
- package/dist/generator/index.d.ts +3 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +2 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/governance/governance.d.ts +24 -0
- package/dist/governance/governance.d.ts.map +1 -0
- package/dist/governance/governance.js +238 -0
- package/dist/governance/governance.js.map +1 -0
- package/dist/governance/index.d.ts +3 -0
- package/dist/governance/index.d.ts.map +1 -0
- package/dist/governance/index.js +2 -0
- package/dist/governance/index.js.map +1 -0
- package/dist/governance/types.d.ts +14 -0
- package/dist/governance/types.d.ts.map +1 -0
- package/dist/governance/types.js +5 -0
- package/dist/governance/types.js.map +1 -0
- package/dist/graph/builder.d.ts +10 -0
- package/dist/graph/builder.d.ts.map +1 -0
- package/dist/graph/builder.js +573 -0
- package/dist/graph/builder.js.map +1 -0
- package/dist/graph/graph-types.d.ts +64 -0
- package/dist/graph/graph-types.d.ts.map +1 -0
- package/dist/graph/graph-types.js +29 -0
- package/dist/graph/graph-types.js.map +1 -0
- package/dist/graph/index.d.ts +8 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +5 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/serializer.d.ts +9 -0
- package/dist/graph/serializer.d.ts.map +1 -0
- package/dist/graph/serializer.js +31 -0
- package/dist/graph/serializer.js.map +1 -0
- package/dist/graph/validator.d.ts +14 -0
- package/dist/graph/validator.d.ts.map +1 -0
- package/dist/graph/validator.js +96 -0
- package/dist/graph/validator.js.map +1 -0
- package/dist/implement/implement.d.ts +30 -0
- package/dist/implement/implement.d.ts.map +1 -0
- package/dist/implement/implement.js +299 -0
- package/dist/implement/implement.js.map +1 -0
- package/dist/implement/index.d.ts +3 -0
- package/dist/implement/index.d.ts.map +1 -0
- package/dist/implement/index.js +2 -0
- package/dist/implement/index.js.map +1 -0
- package/dist/implement/types.d.ts +41 -0
- package/dist/implement/types.d.ts.map +1 -0
- package/dist/implement/types.js +5 -0
- package/dist/implement/types.js.map +1 -0
- package/dist/incremental/incremental-spec.d.ts +12 -0
- package/dist/incremental/incremental-spec.d.ts.map +1 -0
- package/dist/incremental/incremental-spec.js +100 -0
- package/dist/incremental/incremental-spec.js.map +1 -0
- package/dist/incremental/index.d.ts +3 -0
- package/dist/incremental/index.d.ts.map +1 -0
- package/dist/incremental/index.js +5 -0
- package/dist/incremental/index.js.map +1 -0
- package/dist/incremental/types.d.ts +28 -0
- package/dist/incremental/types.d.ts.map +1 -0
- package/dist/incremental/types.js +7 -0
- package/dist/incremental/types.js.map +1 -0
- package/dist/index.d.ts +106 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +106 -0
- package/dist/index.js.map +1 -0
- package/dist/lexer/index.d.ts +6 -0
- package/dist/lexer/index.d.ts.map +1 -0
- package/dist/lexer/index.js +5 -0
- package/dist/lexer/index.js.map +1 -0
- package/dist/lexer/keywords.d.ts +3 -0
- package/dist/lexer/keywords.d.ts.map +1 -0
- package/dist/lexer/keywords.js +142 -0
- package/dist/lexer/keywords.js.map +1 -0
- package/dist/lexer/lexer.d.ts +19 -0
- package/dist/lexer/lexer.d.ts.map +1 -0
- package/dist/lexer/lexer.js +286 -0
- package/dist/lexer/lexer.js.map +1 -0
- package/dist/lexer/source.d.ts +13 -0
- package/dist/lexer/source.d.ts.map +1 -0
- package/dist/lexer/source.js +59 -0
- package/dist/lexer/source.js.map +1 -0
- package/dist/lexer/tokens.d.ts +157 -0
- package/dist/lexer/tokens.d.ts.map +1 -0
- package/dist/lexer/tokens.js +173 -0
- package/dist/lexer/tokens.js.map +1 -0
- package/dist/orchestrator/index.d.ts +5 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +3 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/orchestrator.d.ts +14 -0
- package/dist/orchestrator/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator.js +129 -0
- package/dist/orchestrator/orchestrator.js.map +1 -0
- package/dist/orchestrator/pipeline.d.ts +31 -0
- package/dist/orchestrator/pipeline.d.ts.map +1 -0
- package/dist/orchestrator/pipeline.js +290 -0
- package/dist/orchestrator/pipeline.js.map +1 -0
- package/dist/orchestrator/types.d.ts +60 -0
- package/dist/orchestrator/types.d.ts.map +1 -0
- package/dist/orchestrator/types.js +8 -0
- package/dist/orchestrator/types.js.map +1 -0
- package/dist/parser/ast.d.ts +502 -0
- package/dist/parser/ast.d.ts.map +1 -0
- package/dist/parser/ast.js +7 -0
- package/dist/parser/ast.js.map +1 -0
- package/dist/parser/expressions.d.ts +18 -0
- package/dist/parser/expressions.d.ts.map +1 -0
- package/dist/parser/expressions.js +230 -0
- package/dist/parser/expressions.js.map +1 -0
- package/dist/parser/index.d.ts +4 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +2 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/parser.d.ts +83 -0
- package/dist/parser/parser.d.ts.map +1 -0
- package/dist/parser/parser.js +2149 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/planner/differ.d.ts +4 -0
- package/dist/planner/differ.d.ts.map +1 -0
- package/dist/planner/differ.js +96 -0
- package/dist/planner/differ.js.map +1 -0
- package/dist/planner/index.d.ts +7 -0
- package/dist/planner/index.d.ts.map +1 -0
- package/dist/planner/index.js +5 -0
- package/dist/planner/index.js.map +1 -0
- package/dist/planner/plan-types.d.ts +26 -0
- package/dist/planner/plan-types.d.ts.map +1 -0
- package/dist/planner/plan-types.js +5 -0
- package/dist/planner/plan-types.js.map +1 -0
- package/dist/planner/planner.d.ts +8 -0
- package/dist/planner/planner.d.ts.map +1 -0
- package/dist/planner/planner.js +83 -0
- package/dist/planner/planner.js.map +1 -0
- package/dist/planner/propagator.d.ts +4 -0
- package/dist/planner/propagator.d.ts.map +1 -0
- package/dist/planner/propagator.js +45 -0
- package/dist/planner/propagator.js.map +1 -0
- package/dist/planner/semantic-diff.d.ts +27 -0
- package/dist/planner/semantic-diff.d.ts.map +1 -0
- package/dist/planner/semantic-diff.js +253 -0
- package/dist/planner/semantic-diff.js.map +1 -0
- package/dist/presets/index.d.ts +3 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +5 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/loader.d.ts +28 -0
- package/dist/presets/loader.d.ts.map +1 -0
- package/dist/presets/loader.js +99 -0
- package/dist/presets/loader.js.map +1 -0
- package/dist/presets/types.d.ts +21 -0
- package/dist/presets/types.d.ts.map +1 -0
- package/dist/presets/types.js +5 -0
- package/dist/presets/types.js.map +1 -0
- package/dist/proposal/index.d.ts +3 -0
- package/dist/proposal/index.d.ts.map +1 -0
- package/dist/proposal/index.js +7 -0
- package/dist/proposal/index.js.map +1 -0
- package/dist/proposal/proposal.d.ts +9 -0
- package/dist/proposal/proposal.d.ts.map +1 -0
- package/dist/proposal/proposal.js +169 -0
- package/dist/proposal/proposal.js.map +1 -0
- package/dist/proposal/types.d.ts +15 -0
- package/dist/proposal/types.d.ts.map +1 -0
- package/dist/proposal/types.js +5 -0
- package/dist/proposal/types.js.map +1 -0
- package/dist/registry/index.d.ts +3 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +2 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/resolution.d.ts +39 -0
- package/dist/registry/resolution.d.ts.map +1 -0
- package/dist/registry/resolution.js +70 -0
- package/dist/registry/resolution.js.map +1 -0
- package/dist/reviewers/adversarial.d.ts +3 -0
- package/dist/reviewers/adversarial.d.ts.map +1 -0
- package/dist/reviewers/adversarial.js +111 -0
- package/dist/reviewers/adversarial.js.map +1 -0
- package/dist/reviewers/architecture.d.ts +3 -0
- package/dist/reviewers/architecture.d.ts.map +1 -0
- package/dist/reviewers/architecture.js +71 -0
- package/dist/reviewers/architecture.js.map +1 -0
- package/dist/reviewers/code-quality.d.ts +3 -0
- package/dist/reviewers/code-quality.d.ts.map +1 -0
- package/dist/reviewers/code-quality.js +72 -0
- package/dist/reviewers/code-quality.js.map +1 -0
- package/dist/reviewers/edge-case.d.ts +3 -0
- package/dist/reviewers/edge-case.d.ts.map +1 -0
- package/dist/reviewers/edge-case.js +107 -0
- package/dist/reviewers/edge-case.js.map +1 -0
- package/dist/reviewers/index.d.ts +21 -0
- package/dist/reviewers/index.d.ts.map +1 -0
- package/dist/reviewers/index.js +39 -0
- package/dist/reviewers/index.js.map +1 -0
- package/dist/reviewers/prompt-loader.d.ts +24 -0
- package/dist/reviewers/prompt-loader.d.ts.map +1 -0
- package/dist/reviewers/prompt-loader.js +67 -0
- package/dist/reviewers/prompt-loader.js.map +1 -0
- package/dist/reviewers/quality.d.ts +3 -0
- package/dist/reviewers/quality.d.ts.map +1 -0
- package/dist/reviewers/quality.js +76 -0
- package/dist/reviewers/quality.js.map +1 -0
- package/dist/reviewers/reviewer.d.ts +39 -0
- package/dist/reviewers/reviewer.d.ts.map +1 -0
- package/dist/reviewers/reviewer.js +149 -0
- package/dist/reviewers/reviewer.js.map +1 -0
- package/dist/reviewers/security.d.ts +3 -0
- package/dist/reviewers/security.d.ts.map +1 -0
- package/dist/reviewers/security.js +87 -0
- package/dist/reviewers/security.js.map +1 -0
- package/dist/reviewers/specification.d.ts +3 -0
- package/dist/reviewers/specification.d.ts.map +1 -0
- package/dist/reviewers/specification.js +79 -0
- package/dist/reviewers/specification.js.map +1 -0
- package/dist/reviewers/test-quality.d.ts +3 -0
- package/dist/reviewers/test-quality.d.ts.map +1 -0
- package/dist/reviewers/test-quality.js +88 -0
- package/dist/reviewers/test-quality.js.map +1 -0
- package/dist/reviewers/types.d.ts +32 -0
- package/dist/reviewers/types.d.ts.map +1 -0
- package/dist/reviewers/types.js +5 -0
- package/dist/reviewers/types.js.map +1 -0
- package/dist/reviewers/ux.d.ts +3 -0
- package/dist/reviewers/ux.d.ts.map +1 -0
- package/dist/reviewers/ux.js +94 -0
- package/dist/reviewers/ux.js.map +1 -0
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +2 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/resolution.d.ts +30 -0
- package/dist/runtime/resolution.d.ts.map +1 -0
- package/dist/runtime/resolution.js +59 -0
- package/dist/runtime/resolution.js.map +1 -0
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +2 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/test-runner.d.ts +18 -0
- package/dist/testing/test-runner.d.ts.map +1 -0
- package/dist/testing/test-runner.js +131 -0
- package/dist/testing/test-runner.js.map +1 -0
- package/dist/types.d.ts +36 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +127 -0
- package/dist/types.js.map +1 -0
- package/dist/validation/index.d.ts +3 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +2 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/types.d.ts +16 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/types.js +5 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation/validation.d.ts +8 -0
- package/dist/validation/validation.d.ts.map +1 -0
- package/dist/validation/validation.js +101 -0
- package/dist/validation/validation.js.map +1 -0
- package/dist/verification/index.d.ts +3 -0
- package/dist/verification/index.d.ts.map +1 -0
- package/dist/verification/index.js +5 -0
- package/dist/verification/index.js.map +1 -0
- package/dist/verification/types.d.ts +14 -0
- package/dist/verification/types.d.ts.map +1 -0
- package/dist/verification/types.js +5 -0
- package/dist/verification/types.js.map +1 -0
- package/dist/verification/verify.d.ts +7 -0
- package/dist/verification/verify.d.ts.map +1 -0
- package/dist/verification/verify.js +127 -0
- package/dist/verification/verify.js.map +1 -0
- package/dist/workflow/clarify.d.ts +7 -0
- package/dist/workflow/clarify.d.ts.map +1 -0
- package/dist/workflow/clarify.js +165 -0
- package/dist/workflow/clarify.js.map +1 -0
- package/dist/workflow/engine.d.ts +19 -0
- package/dist/workflow/engine.d.ts.map +1 -0
- package/dist/workflow/engine.js +265 -0
- package/dist/workflow/engine.js.map +1 -0
- package/dist/workflow/index.d.ts +6 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +7 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/types.d.ts +95 -0
- package/dist/workflow/types.d.ts.map +1 -0
- package/dist/workflow/types.js +18 -0
- package/dist/workflow/types.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-quality.js","sourceRoot":"","sources":["../../src/reviewers/code-quality.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-case.d.ts","sourceRoot":"","sources":["../../src/reviewers/edge-case.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,gBAAgB,EAAE,aAyG9B,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Compiler — Edge Case Hunter Reviewer
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Systematic branching-path analysis: missing default/else paths,
|
|
5
|
+
// empty collections, boundary conditions, and race-condition risks.
|
|
6
|
+
export const edgeCaseReviewer = {
|
|
7
|
+
name: 'edgeCase',
|
|
8
|
+
description: 'Systematic branching-path analysis for missing defaults, empty collections, boundaries, and race conditions',
|
|
9
|
+
review(graph, _spec) {
|
|
10
|
+
const findings = [];
|
|
11
|
+
// Check: entities with no fields defined (empty schema)
|
|
12
|
+
for (const mod of graph.modules) {
|
|
13
|
+
for (const entity of getNodeArray(mod, 'entities')) {
|
|
14
|
+
const fields = getStringArray(entity, 'fields');
|
|
15
|
+
if (fields.length === 0) {
|
|
16
|
+
findings.push({
|
|
17
|
+
reviewer: 'edgeCase',
|
|
18
|
+
severity: 'warning',
|
|
19
|
+
category: 'empty_entity',
|
|
20
|
+
nodeId: entity.id,
|
|
21
|
+
message: `Entity "${entity.name}" in module "${mod.name}" has no fields — edge case: what represents its state?`,
|
|
22
|
+
suggestion: 'Define at least an identifier field for this entity',
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Check: workflows that read entities but have no error/failure edge
|
|
28
|
+
for (const mod of graph.modules) {
|
|
29
|
+
for (const wf of getNodeArray(mod, 'workflows')) {
|
|
30
|
+
const readsEntity = graph.edges.some((e) => e.from === wf.id && e.kind === 'reads');
|
|
31
|
+
const hasErrorEdge = graph.edges.some((e) => e.from === wf.id && e.kind === 'emits');
|
|
32
|
+
if (readsEntity && !hasErrorEdge) {
|
|
33
|
+
findings.push({
|
|
34
|
+
reviewer: 'edgeCase',
|
|
35
|
+
severity: 'info',
|
|
36
|
+
category: 'missing_error_path',
|
|
37
|
+
nodeId: wf.id,
|
|
38
|
+
message: `Workflow "${wf.name}" reads data but has no error path — what happens when the entity is not found?`,
|
|
39
|
+
suggestion: 'Add error handling for missing or invalid data scenarios',
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Check: modules with a single entity and no workflows (boundary: no behavior)
|
|
45
|
+
for (const mod of graph.modules) {
|
|
46
|
+
const entities = getNodeArray(mod, 'entities');
|
|
47
|
+
const workflows = getNodeArray(mod, 'workflows');
|
|
48
|
+
if (entities.length === 1 && workflows.length === 0) {
|
|
49
|
+
findings.push({
|
|
50
|
+
reviewer: 'edgeCase',
|
|
51
|
+
severity: 'info',
|
|
52
|
+
category: 'single_entity_no_workflow',
|
|
53
|
+
nodeId: mod.id,
|
|
54
|
+
message: `Module "${mod.name}" has one entity and no workflows — boundary case: no defined behavior`,
|
|
55
|
+
suggestion: 'Add workflows or merge this module into a parent module',
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Check: events with no subscribers (dead events)
|
|
60
|
+
for (const mod of graph.modules) {
|
|
61
|
+
for (const event of getNodeArray(mod, 'events')) {
|
|
62
|
+
const hasSubscriber = graph.edges.some((e) => e.to === event.id && e.kind === 'triggers_on');
|
|
63
|
+
const isEmitted = graph.edges.some((e) => e.to === event.id && e.kind === 'emits');
|
|
64
|
+
if (isEmitted && !hasSubscriber) {
|
|
65
|
+
findings.push({
|
|
66
|
+
reviewer: 'edgeCase',
|
|
67
|
+
severity: 'warning',
|
|
68
|
+
category: 'dead_event',
|
|
69
|
+
nodeId: event.id,
|
|
70
|
+
message: `Event "${event.name}" is emitted but has no subscribers — messages are silently lost`,
|
|
71
|
+
suggestion: 'Add a subscriber or remove the event if it is no longer needed',
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Check: actors with no workflows (unused actors)
|
|
77
|
+
for (const mod of graph.modules) {
|
|
78
|
+
for (const actor of getNodeArray(mod, 'actors')) {
|
|
79
|
+
const hasWorkflow = graph.edges.some((e) => e.to === actor.id && e.kind === 'authorized_as');
|
|
80
|
+
if (!hasWorkflow) {
|
|
81
|
+
findings.push({
|
|
82
|
+
reviewer: 'edgeCase',
|
|
83
|
+
severity: 'info',
|
|
84
|
+
category: 'unused_actor',
|
|
85
|
+
nodeId: actor.id,
|
|
86
|
+
message: `Actor "${actor.name}" in module "${mod.name}" is not referenced by any workflow authorization`,
|
|
87
|
+
suggestion: 'Connect this actor to workflows or remove it',
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return findings;
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
function getNodeArray(mod, category) {
|
|
96
|
+
const val = mod[category];
|
|
97
|
+
if (!Array.isArray(val))
|
|
98
|
+
return [];
|
|
99
|
+
return val;
|
|
100
|
+
}
|
|
101
|
+
function getStringArray(node, key) {
|
|
102
|
+
const val = node[key];
|
|
103
|
+
if (!Array.isArray(val))
|
|
104
|
+
return [];
|
|
105
|
+
return val;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=edge-case.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-case.js","sourceRoot":"","sources":["../../src/reviewers/edge-case.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type { ReviewerAgent, ReviewFixLoopOptions } from './reviewer.js';
|
|
2
|
+
export { runReviewers, runReviewFixLoop, runReviewFixLoopAsync, buildFixPrompt, runFixAttempt } from './reviewer.js';
|
|
3
|
+
export type { FindingSeverity, ReviewFinding, ReviewResult, ReviewCycleResult, FixAttemptResult } from './types.js';
|
|
4
|
+
export { loadReviewerPrompt, loadReviewerPrompts, discoverCustomReviewers } from './prompt-loader.js';
|
|
5
|
+
export type { CustomReviewerDefinition } from './prompt-loader.js';
|
|
6
|
+
export { architectureReviewer } from './architecture.js';
|
|
7
|
+
export { qualityReviewer } from './quality.js';
|
|
8
|
+
export { codeQualityReviewer } from './code-quality.js';
|
|
9
|
+
export { specificationReviewer } from './specification.js';
|
|
10
|
+
export { uxReviewer } from './ux.js';
|
|
11
|
+
export { securityReviewer } from './security.js';
|
|
12
|
+
export { testQualityReviewer } from './test-quality.js';
|
|
13
|
+
export { adversarialReviewer } from './adversarial.js';
|
|
14
|
+
export { edgeCaseReviewer } from './edge-case.js';
|
|
15
|
+
import type { ReviewerAgent } from './reviewer.js';
|
|
16
|
+
/**
|
|
17
|
+
* Default set of built-in reviewer agents, in recommended execution order.
|
|
18
|
+
* Adversarial and edge-case reviewers are included but disabled by default.
|
|
19
|
+
*/
|
|
20
|
+
export declare const DEFAULT_REVIEWERS: readonly ReviewerAgent[];
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reviewers/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrH,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpH,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACtG,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAWnD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,aAAa,EAUrD,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Compiler — Reviewers (public API)
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
export { runReviewers, runReviewFixLoop, runReviewFixLoopAsync, buildFixPrompt, runFixAttempt } from './reviewer.js';
|
|
5
|
+
export { loadReviewerPrompt, loadReviewerPrompts, discoverCustomReviewers } from './prompt-loader.js';
|
|
6
|
+
export { architectureReviewer } from './architecture.js';
|
|
7
|
+
export { qualityReviewer } from './quality.js';
|
|
8
|
+
export { codeQualityReviewer } from './code-quality.js';
|
|
9
|
+
export { specificationReviewer } from './specification.js';
|
|
10
|
+
export { uxReviewer } from './ux.js';
|
|
11
|
+
export { securityReviewer } from './security.js';
|
|
12
|
+
export { testQualityReviewer } from './test-quality.js';
|
|
13
|
+
export { adversarialReviewer } from './adversarial.js';
|
|
14
|
+
export { edgeCaseReviewer } from './edge-case.js';
|
|
15
|
+
import { architectureReviewer } from './architecture.js';
|
|
16
|
+
import { qualityReviewer } from './quality.js';
|
|
17
|
+
import { codeQualityReviewer } from './code-quality.js';
|
|
18
|
+
import { specificationReviewer } from './specification.js';
|
|
19
|
+
import { uxReviewer } from './ux.js';
|
|
20
|
+
import { securityReviewer } from './security.js';
|
|
21
|
+
import { testQualityReviewer } from './test-quality.js';
|
|
22
|
+
import { adversarialReviewer } from './adversarial.js';
|
|
23
|
+
import { edgeCaseReviewer } from './edge-case.js';
|
|
24
|
+
/**
|
|
25
|
+
* Default set of built-in reviewer agents, in recommended execution order.
|
|
26
|
+
* Adversarial and edge-case reviewers are included but disabled by default.
|
|
27
|
+
*/
|
|
28
|
+
export const DEFAULT_REVIEWERS = [
|
|
29
|
+
architectureReviewer,
|
|
30
|
+
qualityReviewer,
|
|
31
|
+
codeQualityReviewer,
|
|
32
|
+
specificationReviewer,
|
|
33
|
+
uxReviewer,
|
|
34
|
+
securityReviewer,
|
|
35
|
+
testQualityReviewer,
|
|
36
|
+
adversarialReviewer,
|
|
37
|
+
edgeCaseReviewer,
|
|
38
|
+
];
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reviewers/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4CAA4C;AAC5C,8EAA8E;AAG9E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAErH,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEtG,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA6B;IACzD,oBAAoB;IACpB,eAAe;IACf,mBAAmB;IACnB,qBAAqB;IACrB,UAAU;IACV,gBAAgB;IAChB,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;CACjB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ResolvedReviewerConfig } from '../config/config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Load a custom prompt file for a reviewer.
|
|
4
|
+
* Returns the file content or `null` if no promptPath is configured or file is missing.
|
|
5
|
+
*/
|
|
6
|
+
export declare function loadReviewerPrompt(config: ResolvedReviewerConfig, root: string): string | null;
|
|
7
|
+
/**
|
|
8
|
+
* Load custom prompts for all configured reviewers.
|
|
9
|
+
* Returns a map of reviewer name → prompt content.
|
|
10
|
+
*/
|
|
11
|
+
export declare function loadReviewerPrompts(configs: Readonly<Record<string, ResolvedReviewerConfig | undefined>>, root: string): ReadonlyMap<string, string>;
|
|
12
|
+
/**
|
|
13
|
+
* Discovered custom reviewer from the `.prodara/reviewers/` directory.
|
|
14
|
+
*/
|
|
15
|
+
export interface CustomReviewerDefinition {
|
|
16
|
+
readonly name: string;
|
|
17
|
+
readonly promptContent: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Discover custom reviewers from `.prodara/reviewers/` directory.
|
|
21
|
+
* Each `.md` file not matching a built-in reviewer name becomes a custom reviewer.
|
|
22
|
+
*/
|
|
23
|
+
export declare function discoverCustomReviewers(root: string): readonly CustomReviewerDefinition[];
|
|
24
|
+
//# sourceMappingURL=prompt-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-loader.d.ts","sourceRoot":"","sources":["../../src/reviewers/prompt-loader.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,sBAAsB,EAC9B,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,CAOf;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,CAAC,CAAC,EACrE,IAAI,EAAE,MAAM,GACX,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAa7B;AAaD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,wBAAwB,EAAE,CAgBzF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Compiler — Reviewer Prompt Loader
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Loads custom reviewer prompts from `.md` files referenced by `promptPath`
|
|
5
|
+
// in the reviewer configuration, and discovers custom reviewers from the
|
|
6
|
+
// `.prodara/reviewers/` directory.
|
|
7
|
+
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
8
|
+
import { join, basename, extname } from 'node:path';
|
|
9
|
+
/**
|
|
10
|
+
* Load a custom prompt file for a reviewer.
|
|
11
|
+
* Returns the file content or `null` if no promptPath is configured or file is missing.
|
|
12
|
+
*/
|
|
13
|
+
export function loadReviewerPrompt(config, root) {
|
|
14
|
+
if (!config.promptPath)
|
|
15
|
+
return null;
|
|
16
|
+
const resolved = join(root, config.promptPath);
|
|
17
|
+
if (!existsSync(resolved))
|
|
18
|
+
return null;
|
|
19
|
+
return readFileSync(resolved, 'utf-8');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Load custom prompts for all configured reviewers.
|
|
23
|
+
* Returns a map of reviewer name → prompt content.
|
|
24
|
+
*/
|
|
25
|
+
export function loadReviewerPrompts(configs, root) {
|
|
26
|
+
const prompts = new Map();
|
|
27
|
+
for (const [name, cfg] of Object.entries(configs)) {
|
|
28
|
+
/* v8 ignore next -- config entries are always defined */
|
|
29
|
+
if (!cfg)
|
|
30
|
+
continue;
|
|
31
|
+
const content = loadReviewerPrompt(cfg, root);
|
|
32
|
+
if (content) {
|
|
33
|
+
prompts.set(name, content);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return prompts;
|
|
37
|
+
}
|
|
38
|
+
/** Names of built-in reviewers (not discovered from disk). */
|
|
39
|
+
const BUILT_IN_REVIEWERS = new Set([
|
|
40
|
+
'architecture',
|
|
41
|
+
'quality',
|
|
42
|
+
'codeQuality',
|
|
43
|
+
'specification',
|
|
44
|
+
'ux',
|
|
45
|
+
'security',
|
|
46
|
+
'testQuality',
|
|
47
|
+
]);
|
|
48
|
+
/**
|
|
49
|
+
* Discover custom reviewers from `.prodara/reviewers/` directory.
|
|
50
|
+
* Each `.md` file not matching a built-in reviewer name becomes a custom reviewer.
|
|
51
|
+
*/
|
|
52
|
+
export function discoverCustomReviewers(root) {
|
|
53
|
+
const reviewerDir = join(root, '.prodara', 'reviewers');
|
|
54
|
+
if (!existsSync(reviewerDir))
|
|
55
|
+
return [];
|
|
56
|
+
const files = readdirSync(reviewerDir).filter((f) => extname(f) === '.md');
|
|
57
|
+
const results = [];
|
|
58
|
+
for (const file of files) {
|
|
59
|
+
const name = basename(file, '.md');
|
|
60
|
+
if (BUILT_IN_REVIEWERS.has(name))
|
|
61
|
+
continue;
|
|
62
|
+
const content = readFileSync(join(reviewerDir, file), 'utf-8');
|
|
63
|
+
results.push({ name, promptContent: content });
|
|
64
|
+
}
|
|
65
|
+
return results;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=prompt-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-loader.js","sourceRoot":"","sources":["../../src/reviewers/prompt-loader.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4CAA4C;AAC5C,8EAA8E;AAC9E,4EAA4E;AAC5E,yEAAyE;AACzE,mCAAmC;AAEnC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAA8B,EAC9B,IAAY;IAEZ,IAAI,CAAC,MAAM,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAqE,EACrE,IAAY;IAEZ,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,yDAAyD;QACzD,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8DAA8D;AAC9D,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,cAAc;IACd,SAAS;IACT,aAAa;IACb,eAAe;IACf,IAAI;IACJ,UAAU;IACV,aAAa;CACd,CAAC,CAAC;AAUH;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IAExC,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IAC3E,MAAM,OAAO,GAA+B,EAAE,CAAC;IAE/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAE3C,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/reviewers/quality.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,eAAe,EAAE,aA+C7B,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Compiler — Quality Reviewer
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Validates product quality: entity rule coverage, spec test coverage,
|
|
5
|
+
// naming conventions, and completeness of definitions.
|
|
6
|
+
export const qualityReviewer = {
|
|
7
|
+
name: 'quality',
|
|
8
|
+
description: 'Validates rule coverage, test coverage, and naming conventions',
|
|
9
|
+
review(graph, _spec) {
|
|
10
|
+
const findings = [];
|
|
11
|
+
for (const mod of graph.modules) {
|
|
12
|
+
// Check: entities should have associated rules
|
|
13
|
+
const entities = getNodeArray(mod, 'entities');
|
|
14
|
+
const rules = getNodeArray(mod, 'rules');
|
|
15
|
+
const ruleEdgeTargets = new Set(graph.edges.filter((e) => e.kind === 'uses_rule').map((e) => e.from));
|
|
16
|
+
for (const entity of entities) {
|
|
17
|
+
if (!ruleEdgeTargets.has(entity.id)) {
|
|
18
|
+
findings.push({
|
|
19
|
+
reviewer: 'quality',
|
|
20
|
+
severity: 'info',
|
|
21
|
+
category: 'missing_rules',
|
|
22
|
+
nodeId: entity.id,
|
|
23
|
+
message: `Entity "${entity.name}" in module "${mod.name}" has no associated rules`,
|
|
24
|
+
suggestion: 'Consider adding business rules for validation or invariants',
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Check: module should have spec tests
|
|
29
|
+
const tests = getNodeArray(mod, 'tests');
|
|
30
|
+
if (entities.length + rules.length > 0 && tests.length === 0) {
|
|
31
|
+
findings.push({
|
|
32
|
+
reviewer: 'quality',
|
|
33
|
+
severity: 'warning',
|
|
34
|
+
category: 'missing_tests',
|
|
35
|
+
nodeId: mod.id,
|
|
36
|
+
message: `Module "${mod.name}" has no spec tests`,
|
|
37
|
+
suggestion: 'Add spec tests to verify entity and rule behavior',
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
// Check: naming conventions (snake_case for node names)
|
|
41
|
+
checkNamingConventions(mod, findings);
|
|
42
|
+
}
|
|
43
|
+
return findings;
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
function getNodeArray(mod, category) {
|
|
47
|
+
const val = mod[category];
|
|
48
|
+
if (!Array.isArray(val))
|
|
49
|
+
return [];
|
|
50
|
+
return val;
|
|
51
|
+
}
|
|
52
|
+
const SNAKE_CASE_RE = /^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/;
|
|
53
|
+
function checkNamingConventions(mod, findings) {
|
|
54
|
+
const categories = ['entities', 'rules', 'workflows', 'events', 'surfaces'];
|
|
55
|
+
for (const cat of categories) {
|
|
56
|
+
for (const node of getNodeArray(mod, cat)) {
|
|
57
|
+
if (!SNAKE_CASE_RE.test(node.name)) {
|
|
58
|
+
findings.push({
|
|
59
|
+
reviewer: 'quality',
|
|
60
|
+
severity: 'info',
|
|
61
|
+
category: 'naming_convention',
|
|
62
|
+
nodeId: node.id,
|
|
63
|
+
message: `Node "${node.name}" does not follow snake_case naming`,
|
|
64
|
+
suggestion: `Rename to "${toSnakeCase(node.name)}"`,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function toSnakeCase(name) {
|
|
71
|
+
return name
|
|
72
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1_$2')
|
|
73
|
+
.replace(/[\s-]+/g, '_')
|
|
74
|
+
.toLowerCase();
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=quality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quality.js","sourceRoot":"","sources":["../../src/reviewers/quality.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ProductGraph } from '../graph/graph-types.js';
|
|
2
|
+
import type { IncrementalSpec } from '../incremental/types.js';
|
|
3
|
+
import type { ResolvedReviewerConfig, ResolvedReviewFixConfig } from '../config/config.js';
|
|
4
|
+
import type { AgentDriver } from '../agent/types.js';
|
|
5
|
+
import type { FindingSeverity, ReviewFinding, ReviewResult, ReviewCycleResult, FixAttemptResult } from './types.js';
|
|
6
|
+
export interface ReviewerAgent {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly description: string;
|
|
9
|
+
review(graph: ProductGraph, spec: IncrementalSpec): readonly ReviewFinding[];
|
|
10
|
+
}
|
|
11
|
+
export declare function runReviewers(agents: readonly ReviewerAgent[], configs: Readonly<Record<string, ResolvedReviewerConfig | undefined>>, graph: ProductGraph, spec: IncrementalSpec): ReviewResult[];
|
|
12
|
+
/**
|
|
13
|
+
* Build a structured fix prompt from review findings.
|
|
14
|
+
* Only includes findings matching the configured severity threshold.
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildFixPrompt(findings: readonly ReviewFinding[], fixSeverity: readonly FindingSeverity[]): string;
|
|
17
|
+
/**
|
|
18
|
+
* Attempt to fix actionable findings via an agent driver.
|
|
19
|
+
* Returns the result of the attempt.
|
|
20
|
+
*/
|
|
21
|
+
export declare function runFixAttempt(driver: AgentDriver, findings: readonly ReviewFinding[], fixSeverity: readonly FindingSeverity[], graph: ProductGraph, iteration: number): Promise<FixAttemptResult>;
|
|
22
|
+
export interface ReviewFixLoopOptions {
|
|
23
|
+
readonly driver?: AgentDriver;
|
|
24
|
+
readonly fixSeverity?: readonly FindingSeverity[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Run the review/fix loop. Each iteration:
|
|
28
|
+
* 1. Run all enabled reviewers
|
|
29
|
+
* 2. If accepted (no error/critical findings), stop
|
|
30
|
+
* 3. When agent driver is available, attempt to fix actionable findings
|
|
31
|
+
* 4. Record the cycle and continue to next iteration
|
|
32
|
+
*/
|
|
33
|
+
export declare function runReviewFixLoop(agents: readonly ReviewerAgent[], configs: Readonly<Record<string, ResolvedReviewerConfig | undefined>>, graph: ProductGraph, spec: IncrementalSpec, maxIterations: number, loopOptions?: ReviewFixLoopOptions): readonly ReviewCycleResult[];
|
|
34
|
+
/**
|
|
35
|
+
* Async review/fix loop with agent-driven fix attempts.
|
|
36
|
+
* Falls back to the sync loop when no driver is provided.
|
|
37
|
+
*/
|
|
38
|
+
export declare function runReviewFixLoopAsync(agents: readonly ReviewerAgent[], configs: Readonly<Record<string, ResolvedReviewerConfig | undefined>>, graph: ProductGraph, spec: IncrementalSpec, reviewFixConfig: ResolvedReviewFixConfig, driver: AgentDriver): Promise<readonly ReviewCycleResult[]>;
|
|
39
|
+
//# sourceMappingURL=reviewer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../src/reviewers/reviewer.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMpH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,GAAG,SAAS,aAAa,EAAE,CAAC;CAC9E;AAMD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,CAAC,CAAC,EACrE,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,eAAe,GACpB,YAAY,EAAE,CAahB;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,SAAS,aAAa,EAAE,EAClC,WAAW,EAAE,SAAS,eAAe,EAAE,GACtC,MAAM,CAoBR;AAMD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,SAAS,aAAa,EAAE,EAClC,WAAW,EAAE,SAAS,eAAe,EAAE,EACvC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CA+B3B;AAMD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;CACnD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,CAAC,CAAC,EACrE,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,eAAe,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,oBAAoB,GACjC,SAAS,iBAAiB,EAAE,CA2B9B;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,CAAC,CAAC,EACrE,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,eAAe,EACrB,eAAe,EAAE,uBAAuB,EACxC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAiCvC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Compiler — Reviewer Agent Framework
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Provides the base interface and execution logic for built-in and custom
|
|
5
|
+
// reviewer agents. Each reviewer inspects the Product Graph and produces
|
|
6
|
+
// deterministic findings. When an agent driver is available, the review/fix
|
|
7
|
+
// loop will attempt to fix actionable findings.
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Run all enabled reviewers
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
export function runReviewers(agents, configs, graph, spec) {
|
|
12
|
+
const results = [];
|
|
13
|
+
for (const agent of agents) {
|
|
14
|
+
const cfg = configs[agent.name];
|
|
15
|
+
if (cfg && !cfg.enabled)
|
|
16
|
+
continue;
|
|
17
|
+
const findings = agent.review(graph, spec);
|
|
18
|
+
const passed = !findings.some((f) => f.severity === 'error' || f.severity === 'critical');
|
|
19
|
+
results.push({ reviewer: agent.name, passed, findings });
|
|
20
|
+
}
|
|
21
|
+
return results;
|
|
22
|
+
}
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// Fix prompt builder
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
/**
|
|
27
|
+
* Build a structured fix prompt from review findings.
|
|
28
|
+
* Only includes findings matching the configured severity threshold.
|
|
29
|
+
*/
|
|
30
|
+
export function buildFixPrompt(findings, fixSeverity) {
|
|
31
|
+
const actionable = findings.filter((f) => fixSeverity.includes(f.severity));
|
|
32
|
+
if (actionable.length === 0)
|
|
33
|
+
return '';
|
|
34
|
+
const sections = [];
|
|
35
|
+
sections.push('# Fix Request');
|
|
36
|
+
sections.push('');
|
|
37
|
+
sections.push(`The following ${actionable.length} finding(s) require fixes:`);
|
|
38
|
+
sections.push('');
|
|
39
|
+
for (const f of actionable) {
|
|
40
|
+
sections.push(`## [${f.severity.toUpperCase()}] ${f.reviewer}: ${f.category}`);
|
|
41
|
+
if (f.nodeId)
|
|
42
|
+
sections.push(`Node: ${f.nodeId}`);
|
|
43
|
+
sections.push(f.message);
|
|
44
|
+
if (f.suggestion)
|
|
45
|
+
sections.push(`Suggestion: ${f.suggestion}`);
|
|
46
|
+
sections.push('');
|
|
47
|
+
}
|
|
48
|
+
sections.push('Apply fixes that resolve these findings without introducing regressions.');
|
|
49
|
+
return sections.join('\n');
|
|
50
|
+
}
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// Fix attempt execution
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
/**
|
|
55
|
+
* Attempt to fix actionable findings via an agent driver.
|
|
56
|
+
* Returns the result of the attempt.
|
|
57
|
+
*/
|
|
58
|
+
export async function runFixAttempt(driver, findings, fixSeverity, graph, iteration) {
|
|
59
|
+
const prompt = buildFixPrompt(findings, fixSeverity);
|
|
60
|
+
if (!prompt) {
|
|
61
|
+
return { iteration, status: 'skipped', findingsAddressed: 0, duration_ms: 0 };
|
|
62
|
+
}
|
|
63
|
+
const actionableCount = findings.filter((f) => fixSeverity.includes(f.severity)).length;
|
|
64
|
+
const request = {
|
|
65
|
+
prompt,
|
|
66
|
+
context: {
|
|
67
|
+
constitution: null,
|
|
68
|
+
graphSlice: JSON.stringify({ nodeCount: graph.modules.length, edgeCount: graph.edges.length }),
|
|
69
|
+
governance: null,
|
|
70
|
+
additionalContext: {},
|
|
71
|
+
},
|
|
72
|
+
capability: 'fix',
|
|
73
|
+
platform: driver.platform,
|
|
74
|
+
};
|
|
75
|
+
const start = Date.now();
|
|
76
|
+
const response = await driver.execute(request);
|
|
77
|
+
const duration_ms = Date.now() - start;
|
|
78
|
+
return {
|
|
79
|
+
iteration,
|
|
80
|
+
status: response.status,
|
|
81
|
+
findingsAddressed: response.status === 'success' ? actionableCount : 0,
|
|
82
|
+
duration_ms,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Run the review/fix loop. Each iteration:
|
|
87
|
+
* 1. Run all enabled reviewers
|
|
88
|
+
* 2. If accepted (no error/critical findings), stop
|
|
89
|
+
* 3. When agent driver is available, attempt to fix actionable findings
|
|
90
|
+
* 4. Record the cycle and continue to next iteration
|
|
91
|
+
*/
|
|
92
|
+
export function runReviewFixLoop(agents, configs, graph, spec, maxIterations, loopOptions) {
|
|
93
|
+
const cycles = [];
|
|
94
|
+
for (let i = 1; i <= maxIterations; i++) {
|
|
95
|
+
const results = runReviewers(agents, configs, graph, spec);
|
|
96
|
+
const allFindings = results.flatMap((r) => r.findings);
|
|
97
|
+
const criticalCount = allFindings.filter((f) => f.severity === 'critical').length;
|
|
98
|
+
const errorCount = allFindings.filter((f) => f.severity === 'error').length;
|
|
99
|
+
const warningCount = allFindings.filter((f) => f.severity === 'warning').length;
|
|
100
|
+
const accepted = criticalCount === 0 && errorCount === 0;
|
|
101
|
+
cycles.push({
|
|
102
|
+
iteration: i,
|
|
103
|
+
results,
|
|
104
|
+
accepted,
|
|
105
|
+
totalFindings: allFindings.length,
|
|
106
|
+
criticalCount,
|
|
107
|
+
errorCount,
|
|
108
|
+
warningCount,
|
|
109
|
+
fixAttempt: null,
|
|
110
|
+
});
|
|
111
|
+
if (accepted)
|
|
112
|
+
break;
|
|
113
|
+
if (i >= maxIterations)
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
return cycles;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Async review/fix loop with agent-driven fix attempts.
|
|
120
|
+
* Falls back to the sync loop when no driver is provided.
|
|
121
|
+
*/
|
|
122
|
+
export async function runReviewFixLoopAsync(agents, configs, graph, spec, reviewFixConfig, driver) {
|
|
123
|
+
const cycles = [];
|
|
124
|
+
for (let i = 1; i <= reviewFixConfig.maxIterations; i++) {
|
|
125
|
+
const results = runReviewers(agents, configs, graph, spec);
|
|
126
|
+
const allFindings = results.flatMap((r) => r.findings);
|
|
127
|
+
const criticalCount = allFindings.filter((f) => f.severity === 'critical').length;
|
|
128
|
+
const errorCount = allFindings.filter((f) => f.severity === 'error').length;
|
|
129
|
+
const warningCount = allFindings.filter((f) => f.severity === 'warning').length;
|
|
130
|
+
const accepted = criticalCount === 0 && errorCount === 0;
|
|
131
|
+
if (accepted) {
|
|
132
|
+
cycles.push({
|
|
133
|
+
iteration: i, results, accepted, totalFindings: allFindings.length,
|
|
134
|
+
criticalCount, errorCount, warningCount, fixAttempt: null,
|
|
135
|
+
});
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
// Attempt fix
|
|
139
|
+
const fixResult = await runFixAttempt(driver, allFindings, reviewFixConfig.fixSeverity, graph, i);
|
|
140
|
+
cycles.push({
|
|
141
|
+
iteration: i, results, accepted, totalFindings: allFindings.length,
|
|
142
|
+
criticalCount, errorCount, warningCount, fixAttempt: fixResult,
|
|
143
|
+
});
|
|
144
|
+
if (i >= reviewFixConfig.maxIterations)
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
return cycles;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=reviewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../src/reviewers/reviewer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/reviewers/security.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,gBAAgB,EAAE,aA6E9B,CAAC"}
|