@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,82 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Compiler — Extension Registry
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
/**
|
|
5
|
+
* In-memory registry of loaded extensions. The registry does NOT perform
|
|
6
|
+
* dynamic `import()` — it stays purely data-driven. The pipeline and CLI
|
|
7
|
+
* query it to discover what capabilities are available.
|
|
8
|
+
*/
|
|
9
|
+
export class ExtensionRegistry {
|
|
10
|
+
_extensions = new Map();
|
|
11
|
+
/** Register an extension. */
|
|
12
|
+
register(manifest, path, enabled = true) {
|
|
13
|
+
if (this._extensions.has(manifest.name)) {
|
|
14
|
+
throw new Error(`Extension "${manifest.name}" is already registered`);
|
|
15
|
+
}
|
|
16
|
+
this._extensions.set(manifest.name, { manifest, path, enabled });
|
|
17
|
+
}
|
|
18
|
+
/** Unregister an extension by name. */
|
|
19
|
+
unregister(name) {
|
|
20
|
+
return this._extensions.delete(name);
|
|
21
|
+
}
|
|
22
|
+
/** Get all registered extensions. */
|
|
23
|
+
all() {
|
|
24
|
+
return [...this._extensions.values()];
|
|
25
|
+
}
|
|
26
|
+
/** Get a single extension by name. */
|
|
27
|
+
get(name) {
|
|
28
|
+
return this._extensions.get(name);
|
|
29
|
+
}
|
|
30
|
+
/** Get extensions that provide a given capability kind. */
|
|
31
|
+
withCapability(kind) {
|
|
32
|
+
return this.all().filter(ext => ext.enabled && ext.manifest.capabilities.some(c => c.kind === kind));
|
|
33
|
+
}
|
|
34
|
+
/** Get all generator capabilities from enabled extensions. */
|
|
35
|
+
generators() {
|
|
36
|
+
const result = [];
|
|
37
|
+
for (const ext of this.all()) {
|
|
38
|
+
if (!ext.enabled)
|
|
39
|
+
continue;
|
|
40
|
+
for (const cap of ext.manifest.capabilities) {
|
|
41
|
+
if (cap.kind === 'generator')
|
|
42
|
+
result.push({ ext, cap });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
/** Get all reviewer capabilities from enabled extensions. */
|
|
48
|
+
reviewers() {
|
|
49
|
+
const result = [];
|
|
50
|
+
for (const ext of this.all()) {
|
|
51
|
+
if (!ext.enabled)
|
|
52
|
+
continue;
|
|
53
|
+
for (const cap of ext.manifest.capabilities) {
|
|
54
|
+
if (cap.kind === 'reviewer')
|
|
55
|
+
result.push({ ext, cap });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
/** Get all custom command capabilities from enabled extensions. */
|
|
61
|
+
commands() {
|
|
62
|
+
const result = [];
|
|
63
|
+
for (const ext of this.all()) {
|
|
64
|
+
if (!ext.enabled)
|
|
65
|
+
continue;
|
|
66
|
+
for (const cap of ext.manifest.capabilities) {
|
|
67
|
+
if (cap.kind === 'command')
|
|
68
|
+
result.push({ ext, cap });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
/** Number of registered extensions. */
|
|
74
|
+
get size() {
|
|
75
|
+
return this._extensions.size;
|
|
76
|
+
}
|
|
77
|
+
/** Clear all extensions. */
|
|
78
|
+
clear() {
|
|
79
|
+
this._extensions.clear();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/extensions/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { NodeKind } from '../types.js';
|
|
2
|
+
/** Capability declarations for extensions. */
|
|
3
|
+
export type ExtensionCapability = {
|
|
4
|
+
readonly kind: 'generator';
|
|
5
|
+
readonly supportedNodeKinds: readonly NodeKind[];
|
|
6
|
+
readonly entryPoint: string;
|
|
7
|
+
} | {
|
|
8
|
+
readonly kind: 'reviewer';
|
|
9
|
+
readonly entryPoint: string;
|
|
10
|
+
} | {
|
|
11
|
+
readonly kind: 'pipeline-phase';
|
|
12
|
+
readonly after: string;
|
|
13
|
+
readonly entryPoint: string;
|
|
14
|
+
} | {
|
|
15
|
+
readonly kind: 'command';
|
|
16
|
+
readonly name: string;
|
|
17
|
+
readonly description: string;
|
|
18
|
+
readonly entryPoint: string;
|
|
19
|
+
} | {
|
|
20
|
+
readonly kind: 'template';
|
|
21
|
+
readonly templateId: string;
|
|
22
|
+
readonly entryPoint: string;
|
|
23
|
+
};
|
|
24
|
+
/** Manifest stored in `prodara-extension.json`. */
|
|
25
|
+
export interface ExtensionManifest {
|
|
26
|
+
readonly name: string;
|
|
27
|
+
readonly version: string;
|
|
28
|
+
readonly description: string;
|
|
29
|
+
readonly author: string;
|
|
30
|
+
readonly prodara: {
|
|
31
|
+
readonly minVersion: string;
|
|
32
|
+
};
|
|
33
|
+
readonly capabilities: readonly ExtensionCapability[];
|
|
34
|
+
}
|
|
35
|
+
/** A locally installed extension. */
|
|
36
|
+
export interface InstalledExtension {
|
|
37
|
+
readonly manifest: ExtensionManifest;
|
|
38
|
+
readonly path: string;
|
|
39
|
+
readonly enabled: boolean;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/extensions/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,8CAA8C;AAC9C,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,QAAQ,EAAE,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC7G;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACxF;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC9G;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5F,mDAAmD;AACnD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACvD;AAED,qCAAqC;AACrC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/extensions/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { ProductGraph } from '../graph/graph-types.js';
|
|
2
|
+
import type { Plan } from '../planner/plan-types.js';
|
|
3
|
+
/**
|
|
4
|
+
* A generator target descriptor — metadata about a code generator.
|
|
5
|
+
*/
|
|
6
|
+
export interface GeneratorDescriptor {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly version: string;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly supportedPlatforms: readonly string[];
|
|
11
|
+
readonly supportedNodeKinds: readonly string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* A generated artifact — one output file produced by a generator.
|
|
15
|
+
*/
|
|
16
|
+
export interface GeneratedArtifact {
|
|
17
|
+
readonly path: string;
|
|
18
|
+
readonly nodeId: string;
|
|
19
|
+
readonly generator: string;
|
|
20
|
+
readonly checksum: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The contract that all code generators must implement.
|
|
24
|
+
*/
|
|
25
|
+
export interface Generator {
|
|
26
|
+
readonly descriptor: GeneratorDescriptor;
|
|
27
|
+
/**
|
|
28
|
+
* Generate artifacts for the given plan and graph.
|
|
29
|
+
* Returns the list of artifacts produced.
|
|
30
|
+
*/
|
|
31
|
+
generate(graph: ProductGraph, plan: Plan): Promise<readonly GeneratedArtifact[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Verify that previously generated artifacts are still valid
|
|
34
|
+
* against the current graph.
|
|
35
|
+
*/
|
|
36
|
+
verify(graph: ProductGraph, artifacts: readonly GeneratedArtifact[]): Promise<readonly VerificationResult[]>;
|
|
37
|
+
}
|
|
38
|
+
export interface VerificationResult {
|
|
39
|
+
readonly artifact: GeneratedArtifact;
|
|
40
|
+
readonly valid: boolean;
|
|
41
|
+
readonly message?: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Graph slice — a subset of the product graph for a specific generator category.
|
|
45
|
+
*/
|
|
46
|
+
export interface GraphSlice {
|
|
47
|
+
readonly category: SliceCategory;
|
|
48
|
+
readonly rootNodeIds: readonly string[];
|
|
49
|
+
readonly nodeIds: readonly string[];
|
|
50
|
+
readonly edges: readonly {
|
|
51
|
+
from: string;
|
|
52
|
+
to: string;
|
|
53
|
+
kind: string;
|
|
54
|
+
}[];
|
|
55
|
+
}
|
|
56
|
+
export type SliceCategory = 'backend' | 'frontend' | 'api' | 'runtime' | 'schema' | 'test';
|
|
57
|
+
/**
|
|
58
|
+
* Extract a category-based slice of the graph.
|
|
59
|
+
* Starts from root nodes matching the category, then walks transitive
|
|
60
|
+
* dependencies through edges to include all reachable nodes.
|
|
61
|
+
*/
|
|
62
|
+
export declare function sliceGraph(graph: ProductGraph, category: SliceCategory): GraphSlice;
|
|
63
|
+
/**
|
|
64
|
+
* Slice the graph into all standard categories.
|
|
65
|
+
*/
|
|
66
|
+
export declare function sliceAllCategories(graph: ProductGraph): readonly GraphSlice[];
|
|
67
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/generator/contracts.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IAEzC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC;IAEjF;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,iBAAiB,EAAE,GAAG,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;CAC9G;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvE;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAY3F;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,GAAG,UAAU,CAiEnF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,UAAU,EAAE,CAG7E"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Compiler — Generator Contracts
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Defines the interface contract that code generators must implement.
|
|
5
|
+
// The compiler itself does not generate code — it produces the Product Graph
|
|
6
|
+
// and plan, which generators consume.
|
|
7
|
+
/** Node kinds that serve as roots for each slice category */
|
|
8
|
+
const SLICE_ROOTS = {
|
|
9
|
+
backend: ['workflow', 'action', 'event', 'schedule', 'execution'],
|
|
10
|
+
frontend: ['surface', 'rendering', 'tokens', 'theme', 'strings'],
|
|
11
|
+
api: ['transport', 'integration', 'serialization'],
|
|
12
|
+
runtime: ['secret', 'environment', 'deployment'],
|
|
13
|
+
schema: ['entity', 'value', 'enum'],
|
|
14
|
+
test: ['test'],
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Extract a category-based slice of the graph.
|
|
18
|
+
* Starts from root nodes matching the category, then walks transitive
|
|
19
|
+
* dependencies through edges to include all reachable nodes.
|
|
20
|
+
*/
|
|
21
|
+
export function sliceGraph(graph, category) {
|
|
22
|
+
const rootKinds = new Set(SLICE_ROOTS[category]);
|
|
23
|
+
// Collect all node IDs and their kinds
|
|
24
|
+
const nodeKindMap = new Map();
|
|
25
|
+
for (const mod of graph.modules) {
|
|
26
|
+
for (const [key, value] of Object.entries(mod)) {
|
|
27
|
+
if (key === 'id' || key === 'kind' || key === 'name' || key === 'imports')
|
|
28
|
+
continue;
|
|
29
|
+
if (Array.isArray(value)) {
|
|
30
|
+
for (const item of value) {
|
|
31
|
+
if (item && typeof item === 'object' && 'id' in item && 'kind' in item) {
|
|
32
|
+
nodeKindMap.set(item.id, item.kind);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Find root nodes for this category
|
|
39
|
+
const rootNodeIds = [];
|
|
40
|
+
for (const [id, kind] of nodeKindMap) {
|
|
41
|
+
if (rootKinds.has(kind))
|
|
42
|
+
rootNodeIds.push(id);
|
|
43
|
+
}
|
|
44
|
+
// Build adjacency list for transitive dependency walking
|
|
45
|
+
const outEdges = new Map();
|
|
46
|
+
for (const edge of graph.edges) {
|
|
47
|
+
let targets = outEdges.get(edge.from);
|
|
48
|
+
if (!targets) {
|
|
49
|
+
targets = [];
|
|
50
|
+
outEdges.set(edge.from, targets);
|
|
51
|
+
}
|
|
52
|
+
targets.push(edge.to);
|
|
53
|
+
}
|
|
54
|
+
// BFS from root nodes to collect all reachable node IDs
|
|
55
|
+
const visited = new Set();
|
|
56
|
+
const queue = [...rootNodeIds];
|
|
57
|
+
while (queue.length > 0) {
|
|
58
|
+
const current = queue.shift();
|
|
59
|
+
if (visited.has(current))
|
|
60
|
+
continue;
|
|
61
|
+
visited.add(current);
|
|
62
|
+
const neighbors = outEdges.get(current);
|
|
63
|
+
if (neighbors) {
|
|
64
|
+
for (const n of neighbors) {
|
|
65
|
+
if (!visited.has(n))
|
|
66
|
+
queue.push(n);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Also include governance nodes (constitution/security/privacy/validation) that govern any included node
|
|
71
|
+
for (const edge of graph.edges) {
|
|
72
|
+
if (edge.kind === 'governs' && visited.has(edge.to)) {
|
|
73
|
+
visited.add(edge.from);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Collect edges within the slice
|
|
77
|
+
const sliceEdges = graph.edges
|
|
78
|
+
.filter((e) => visited.has(e.from) && visited.has(e.to))
|
|
79
|
+
.map((e) => ({ from: e.from, to: e.to, kind: e.kind }));
|
|
80
|
+
return {
|
|
81
|
+
category,
|
|
82
|
+
rootNodeIds: rootNodeIds.sort(),
|
|
83
|
+
nodeIds: [...visited].sort(),
|
|
84
|
+
edges: sliceEdges,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Slice the graph into all standard categories.
|
|
89
|
+
*/
|
|
90
|
+
export function sliceAllCategories(graph) {
|
|
91
|
+
const categories = ['backend', 'frontend', 'api', 'runtime', 'schema', 'test'];
|
|
92
|
+
return categories.map((cat) => sliceGraph(graph, cat));
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/generator/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAChE,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ProductGraph } from '../graph/graph-types.js';
|
|
2
|
+
import type { ResolvedConfig } from '../config/config.js';
|
|
3
|
+
import type { GovernanceFile, GovernanceRule } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Load the project-level constitution content from the configured path.
|
|
6
|
+
* Returns `null` if no path is configured or file does not exist.
|
|
7
|
+
*
|
|
8
|
+
* Checks in order:
|
|
9
|
+
* 1. Explicit path from `config.constitution.path`
|
|
10
|
+
* 2. Default location `.prodara/constitution.md`
|
|
11
|
+
*/
|
|
12
|
+
export declare function loadConstitution(config: ResolvedConfig, root: string): string | null;
|
|
13
|
+
/**
|
|
14
|
+
* Generate governance (agents.md) files from the product graph and config.
|
|
15
|
+
* Returns files to write — caller is responsible for actual I/O.
|
|
16
|
+
* Existing user-created files are never overwritten.
|
|
17
|
+
*/
|
|
18
|
+
export declare function generateGovernanceFiles(graph: ProductGraph, config: ResolvedConfig, root: string): GovernanceFile[];
|
|
19
|
+
/**
|
|
20
|
+
* Read existing agents.md files from a project root.
|
|
21
|
+
* Returns their rules as governance context for review enforcement.
|
|
22
|
+
*/
|
|
23
|
+
export declare function readGovernanceRules(root: string): GovernanceRule[];
|
|
24
|
+
//# sourceMappingURL=governance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/governance/governance.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAqB,MAAM,YAAY,CAAC;AAEpF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,CAiBf;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,GACX,cAAc,EAAE,CA4BlB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAQlE"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Compiler — Governance Engine
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Generates scoped agents.md files from the product graph and config.
|
|
5
|
+
// Never overwrites existing user-created agents.md files.
|
|
6
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
/**
|
|
9
|
+
* Load the project-level constitution content from the configured path.
|
|
10
|
+
* Returns `null` if no path is configured or file does not exist.
|
|
11
|
+
*
|
|
12
|
+
* Checks in order:
|
|
13
|
+
* 1. Explicit path from `config.constitution.path`
|
|
14
|
+
* 2. Default location `.prodara/constitution.md`
|
|
15
|
+
*/
|
|
16
|
+
export function loadConstitution(config, root) {
|
|
17
|
+
// Explicit path from config
|
|
18
|
+
if (config.constitution.path) {
|
|
19
|
+
const resolved = join(root, config.constitution.path);
|
|
20
|
+
if (existsSync(resolved)) {
|
|
21
|
+
return readFileSync(resolved, 'utf-8');
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
// Default location
|
|
26
|
+
const defaultPath = join(root, '.prodara', 'constitution.md');
|
|
27
|
+
if (existsSync(defaultPath)) {
|
|
28
|
+
return readFileSync(defaultPath, 'utf-8');
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Generate governance (agents.md) files from the product graph and config.
|
|
34
|
+
* Returns files to write — caller is responsible for actual I/O.
|
|
35
|
+
* Existing user-created files are never overwritten.
|
|
36
|
+
*/
|
|
37
|
+
export function generateGovernanceFiles(graph, config, root) {
|
|
38
|
+
const files = [];
|
|
39
|
+
// Root agents.md — project-wide rules
|
|
40
|
+
const rootPath = join(root, 'agents.md');
|
|
41
|
+
if (!existsSync(rootPath)) {
|
|
42
|
+
const context = extractGovernanceContext(graph, config);
|
|
43
|
+
files.push({ path: rootPath, content: renderRootAgentsMd(graph, context) });
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// Append Prodara workflow section if not already present
|
|
47
|
+
const existing = readFileSync(rootPath, 'utf-8');
|
|
48
|
+
if (!existing.includes('## Prodara Spec-Driven Workflow')) {
|
|
49
|
+
files.push({ path: rootPath, content: existing + '\n' + renderProdaraWorkflowSection(graph) });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Per-module scoped agents.md
|
|
53
|
+
for (const mod of graph.modules) {
|
|
54
|
+
const modDir = resolveModuleDirectory(root, mod);
|
|
55
|
+
/* v8 ignore next */
|
|
56
|
+
if (!modDir)
|
|
57
|
+
continue;
|
|
58
|
+
const modAgentsPath = join(modDir, 'agents.md');
|
|
59
|
+
if (!existsSync(modAgentsPath)) {
|
|
60
|
+
files.push({ path: modAgentsPath, content: renderModuleAgentsMd(mod, graph) });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return files;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Read existing agents.md files from a project root.
|
|
67
|
+
* Returns their rules as governance context for review enforcement.
|
|
68
|
+
*/
|
|
69
|
+
export function readGovernanceRules(root) {
|
|
70
|
+
const rules = [];
|
|
71
|
+
const rootPath = join(root, 'agents.md');
|
|
72
|
+
if (existsSync(rootPath)) {
|
|
73
|
+
const content = readFileSync(rootPath, 'utf-8');
|
|
74
|
+
rules.push(...parseGovernanceRules(content));
|
|
75
|
+
}
|
|
76
|
+
return rules;
|
|
77
|
+
}
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
// Context extraction
|
|
80
|
+
// ---------------------------------------------------------------------------
|
|
81
|
+
function extractGovernanceContext(graph, config) {
|
|
82
|
+
const techStack = [];
|
|
83
|
+
const conventions = [];
|
|
84
|
+
const testingPatterns = [];
|
|
85
|
+
// Extract tech stack from product metadata
|
|
86
|
+
if (graph.product.name) {
|
|
87
|
+
techStack.push(`Product: ${graph.product.name}`);
|
|
88
|
+
}
|
|
89
|
+
// Extract reviewer-based conventions
|
|
90
|
+
const reviewerNames = Object.keys(config.reviewers).filter(k => config.reviewers[k]?.enabled);
|
|
91
|
+
for (const name of reviewerNames) {
|
|
92
|
+
conventions.push({
|
|
93
|
+
category: 'constraint',
|
|
94
|
+
rule: `Code must pass ${name} review`,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
// Extract testing patterns from configured validation
|
|
98
|
+
if (config.validation.test) {
|
|
99
|
+
testingPatterns.push(`Test command: ${config.validation.test}`);
|
|
100
|
+
}
|
|
101
|
+
if (config.validation.lint) {
|
|
102
|
+
testingPatterns.push(`Lint command: ${config.validation.lint}`);
|
|
103
|
+
}
|
|
104
|
+
return { techStack, conventions, testingPatterns };
|
|
105
|
+
}
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
// Rendering
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
function renderRootAgentsMd(graph, context) {
|
|
110
|
+
const lines = [];
|
|
111
|
+
lines.push(`# ${graph.product.name} — Governance Rules`);
|
|
112
|
+
lines.push('');
|
|
113
|
+
lines.push('> Auto-generated by prodara. Customize as needed.');
|
|
114
|
+
lines.push('');
|
|
115
|
+
if (context.techStack.length > 0) {
|
|
116
|
+
lines.push('## Tech Stack');
|
|
117
|
+
lines.push('');
|
|
118
|
+
for (const item of context.techStack) {
|
|
119
|
+
lines.push(`- ${item}`);
|
|
120
|
+
}
|
|
121
|
+
lines.push('');
|
|
122
|
+
}
|
|
123
|
+
if (context.conventions.length > 0) {
|
|
124
|
+
lines.push('## Conventions');
|
|
125
|
+
lines.push('');
|
|
126
|
+
for (const rule of context.conventions) {
|
|
127
|
+
lines.push(`- **[${rule.category}]** ${rule.rule}`);
|
|
128
|
+
}
|
|
129
|
+
lines.push('');
|
|
130
|
+
}
|
|
131
|
+
if (context.testingPatterns.length > 0) {
|
|
132
|
+
lines.push('## Testing');
|
|
133
|
+
lines.push('');
|
|
134
|
+
for (const pattern of context.testingPatterns) {
|
|
135
|
+
lines.push(`- ${pattern}`);
|
|
136
|
+
}
|
|
137
|
+
lines.push('');
|
|
138
|
+
}
|
|
139
|
+
lines.push('## Modules');
|
|
140
|
+
lines.push('');
|
|
141
|
+
for (const mod of graph.modules) {
|
|
142
|
+
lines.push(`- \`${mod.name}\``);
|
|
143
|
+
}
|
|
144
|
+
lines.push('');
|
|
145
|
+
// Prodara workflow section
|
|
146
|
+
lines.push(renderProdaraWorkflowSection(graph));
|
|
147
|
+
return lines.join('\n');
|
|
148
|
+
}
|
|
149
|
+
function renderModuleAgentsMd(mod, graph) {
|
|
150
|
+
const lines = [];
|
|
151
|
+
lines.push(`# ${mod.name} — Module Rules`);
|
|
152
|
+
lines.push('');
|
|
153
|
+
lines.push('> Auto-generated by prodara. Customize as needed.');
|
|
154
|
+
lines.push('');
|
|
155
|
+
// Module imports
|
|
156
|
+
if (mod.imports.length > 0) {
|
|
157
|
+
lines.push('## Dependencies');
|
|
158
|
+
lines.push('');
|
|
159
|
+
for (const imp of mod.imports) {
|
|
160
|
+
lines.push(`- imports \`${imp.symbol}\` from \`${imp.from}\``);
|
|
161
|
+
}
|
|
162
|
+
lines.push('');
|
|
163
|
+
}
|
|
164
|
+
// Related edges
|
|
165
|
+
const relatedEdges = graph.edges.filter(e => e.from.startsWith(mod.id + '.') || e.to.startsWith(mod.id + '.'));
|
|
166
|
+
if (relatedEdges.length > 0) {
|
|
167
|
+
lines.push('## Relationships');
|
|
168
|
+
lines.push('');
|
|
169
|
+
for (const edge of relatedEdges) {
|
|
170
|
+
lines.push(`- \`${edge.from}\` —[${edge.kind}]→ \`${edge.to}\``);
|
|
171
|
+
}
|
|
172
|
+
lines.push('');
|
|
173
|
+
}
|
|
174
|
+
return lines.join('\n');
|
|
175
|
+
}
|
|
176
|
+
// ---------------------------------------------------------------------------
|
|
177
|
+
// Parsing
|
|
178
|
+
// ---------------------------------------------------------------------------
|
|
179
|
+
function parseGovernanceRules(content) {
|
|
180
|
+
const rules = [];
|
|
181
|
+
const rulePattern = /^-\s+\*\*\[(\w+)\]\*\*\s+(.+)$/gm;
|
|
182
|
+
let match;
|
|
183
|
+
while ((match = rulePattern.exec(content)) !== null) {
|
|
184
|
+
const category = match[1];
|
|
185
|
+
if (category === 'convention' || category === 'constraint' || category === 'preference') {
|
|
186
|
+
rules.push({ category, rule: match[2] });
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return rules;
|
|
190
|
+
}
|
|
191
|
+
// ---------------------------------------------------------------------------
|
|
192
|
+
// Prodara Workflow Section
|
|
193
|
+
// ---------------------------------------------------------------------------
|
|
194
|
+
function renderProdaraWorkflowSection(graph) {
|
|
195
|
+
const lines = [];
|
|
196
|
+
lines.push('## Prodara Spec-Driven Workflow');
|
|
197
|
+
lines.push('');
|
|
198
|
+
lines.push('This project uses [Prodara](https://www.prodara.net) for specification-driven development.');
|
|
199
|
+
lines.push('');
|
|
200
|
+
lines.push('### Workflow');
|
|
201
|
+
lines.push('1. **Specify** — Create or edit `.prd` files to define the product');
|
|
202
|
+
lines.push('2. **Validate** — Run `prodara validate` to check for errors');
|
|
203
|
+
lines.push('3. **Plan** — Run `prodara plan` to generate an implementation plan');
|
|
204
|
+
lines.push('4. **Implement** — Run `prodara build` to produce implementation instructions');
|
|
205
|
+
lines.push('5. **Review** — Automated review loop checks architecture, security, and quality');
|
|
206
|
+
lines.push('');
|
|
207
|
+
lines.push('### CLI Commands');
|
|
208
|
+
lines.push('| Command | Description |');
|
|
209
|
+
lines.push('|---------|-------------|');
|
|
210
|
+
lines.push('| `prodara build` | Full pipeline: compile → plan → implement → review |');
|
|
211
|
+
lines.push('| `prodara validate` | Parse and validate .prd files |');
|
|
212
|
+
lines.push('| `prodara graph` | Output the Product Graph |');
|
|
213
|
+
lines.push('| `prodara plan` | Generate incremental implementation plan |');
|
|
214
|
+
lines.push('| `prodara diff --semantic` | Show semantic diff from last build |');
|
|
215
|
+
lines.push('| `prodara drift` | Check for specification drift |');
|
|
216
|
+
lines.push('| `prodara explain <id>` | Explain a node in the product graph |');
|
|
217
|
+
lines.push('');
|
|
218
|
+
lines.push('### .prd Language Quick Reference');
|
|
219
|
+
lines.push('- `product <name> { ... }` — Top-level product definition');
|
|
220
|
+
lines.push('- `module <name> { ... }` — Logical grouping');
|
|
221
|
+
lines.push('- `entity <name> { fields }` — Data model');
|
|
222
|
+
lines.push('- `workflow <name> { steps }` — Business process');
|
|
223
|
+
lines.push('- `surface <name> { sections }` — UI surface');
|
|
224
|
+
lines.push('- Types: `string`, `int`, `float`, `boolean`, `uuid`, `datetime`, `money`');
|
|
225
|
+
lines.push('');
|
|
226
|
+
return lines.join('\n');
|
|
227
|
+
}
|
|
228
|
+
// ---------------------------------------------------------------------------
|
|
229
|
+
// Helpers
|
|
230
|
+
// ---------------------------------------------------------------------------
|
|
231
|
+
function resolveModuleDirectory(root, mod) {
|
|
232
|
+
// Convention: module directory matches module name under the root
|
|
233
|
+
const modDir = join(root, 'src', mod.name);
|
|
234
|
+
// Only generate if the directory plausibly exists or will exist
|
|
235
|
+
// For now, return the path — the caller (or generator) creates it
|
|
236
|
+
return modDir;
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=governance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/governance/governance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/governance/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACjG,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/governance/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface GovernanceFile {
|
|
2
|
+
readonly path: string;
|
|
3
|
+
readonly content: string;
|
|
4
|
+
}
|
|
5
|
+
export interface GovernanceRule {
|
|
6
|
+
readonly category: 'convention' | 'constraint' | 'preference';
|
|
7
|
+
readonly rule: string;
|
|
8
|
+
}
|
|
9
|
+
export interface GovernanceContext {
|
|
10
|
+
readonly techStack: readonly string[];
|
|
11
|
+
readonly conventions: readonly GovernanceRule[];
|
|
12
|
+
readonly testingPatterns: readonly string[];
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=types.d.ts.map
|