@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
package/README.md
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# @prodara/compiler
|
|
2
|
+
|
|
3
|
+
The core compilation engine, workflow orchestrator, and programmatic API for the Prodara spec-first language.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @prodara/compiler
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The compiler takes `.prd` specification files through a 15-phase pipeline:
|
|
14
|
+
|
|
15
|
+
1. **Discovery** → **Lexing** → **Parsing** → **Binding** → **Type Checking** → **Semantic Validation**
|
|
16
|
+
2. **Graph Building** → **Graph Validation** → **Constitution Resolution**
|
|
17
|
+
3. **Diffing** → **Impact Propagation** → **Planning**
|
|
18
|
+
4. **Incremental Spec** → **Workflow Engine** → **Review/Fix Loop** → **Verification**
|
|
19
|
+
|
|
20
|
+
## Programmatic API
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { compile, buildGraph, serializeGraph, formatDiagnosticsJson } from '@prodara/compiler';
|
|
24
|
+
|
|
25
|
+
const result = compile('./my-project');
|
|
26
|
+
|
|
27
|
+
if (result.diagnostics.hasErrors) {
|
|
28
|
+
console.error(formatDiagnosticsJson(result.diagnostics));
|
|
29
|
+
} else {
|
|
30
|
+
console.log(serializeGraph(result.graph!));
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
See the [root README](../../README.md) for the full API reference.
|
|
35
|
+
|
|
36
|
+
## Customization
|
|
37
|
+
|
|
38
|
+
### Custom Reviewers
|
|
39
|
+
|
|
40
|
+
Drop `.md` files in `.prodara/reviewers/` to create custom reviewer agents. The filename becomes the reviewer name (e.g., `performance.md` → `performance` reviewer).
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { discoverCustomReviewers, loadReviewerPrompt } from '@prodara/compiler';
|
|
44
|
+
|
|
45
|
+
// Discover all custom reviewers in .prodara/reviewers/
|
|
46
|
+
const customs = await discoverCustomReviewers('/path/to/project');
|
|
47
|
+
|
|
48
|
+
// Load a specific reviewer prompt
|
|
49
|
+
const prompt = await loadReviewerPrompt(
|
|
50
|
+
{ promptPath: '.prodara/reviewers/performance.md' },
|
|
51
|
+
'/path/to/project',
|
|
52
|
+
);
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Alternatively, set `reviewers.{name}.promptPath` in `prodara.config.json` to point to any `.md` file.
|
|
56
|
+
|
|
57
|
+
### Constitution
|
|
58
|
+
|
|
59
|
+
A project-level constitution provides global instructions injected into all AI prompts:
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import { loadConstitution } from '@prodara/compiler';
|
|
63
|
+
|
|
64
|
+
// Loads from config.constitution.path or .prodara/constitution.md
|
|
65
|
+
const text = await loadConstitution(resolvedConfig, '/path/to/project');
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Configure in `prodara.config.json`:
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"constitution": {
|
|
73
|
+
"path": ".prodara/constitution.md"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Template Overrides
|
|
79
|
+
|
|
80
|
+
Override any built-in template with a local `.md` file:
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"templateOverrides": {
|
|
85
|
+
"phase:implement": ".prodara/templates/implement.md"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Per-Artifact Rules
|
|
91
|
+
|
|
92
|
+
Define rules that are injected into phase templates for specific artifact types:
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"artifactRules": {
|
|
97
|
+
"proposal": ["Must include acceptance criteria", "Max 200 words"],
|
|
98
|
+
"design": ["Include sequence diagrams"]
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Pre-Review Loop
|
|
104
|
+
|
|
105
|
+
Run reviewers *before* implementation to catch spec-level issues early. Disabled by default:
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"preReview": {
|
|
110
|
+
"enabled": true,
|
|
111
|
+
"maxIterations": 2,
|
|
112
|
+
"fixSeverity": ["critical", "error"]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Skip at runtime with the `noPreReview` pipeline option. The `postReview` key is accepted as a backward-compatible alias for `reviewFix`.
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Exploration, Help & Party Mode
|
|
121
|
+
|
|
122
|
+
Three interactive templates for AI agent collaboration:
|
|
123
|
+
|
|
124
|
+
- **Explore** (`/prodara:explore <topic>`) — Read-only investigation of a topic within the product graph. Analyzes modules, entities, and relationships without modifying files.
|
|
125
|
+
- **Help** (`/prodara:help`) — Contextual guidance based on project state. Detects .prd files, build artifacts, and provides recommendations.
|
|
126
|
+
- **Party** (`/prodara:party <topic>`) — Multi-perspective discussion from configured reviewer agents. Each perspective provides analysis, followed by a synthesis.
|
|
127
|
+
|
|
128
|
+
### Design Documents & Onboarding
|
|
129
|
+
|
|
130
|
+
- **Design** (`/prodara:design <change>`) — Generates a per-change design document with technical approach, affected modules, predicted file changes, risk assessment, and architecture decisions.
|
|
131
|
+
- **Onboard** (`/prodara:onboard`) — Interactive onboarding guide that detects project state (empty, basic, complete) and provides step-by-step guidance tailored to your current setup.
|
|
132
|
+
|
|
133
|
+
## Slash Commands
|
|
134
|
+
|
|
135
|
+
`prodara init --ai <agent>` generates slash command files for 26 supported AI agents. Commands are organized into four categories:
|
|
136
|
+
|
|
137
|
+
| Category | Commands |
|
|
138
|
+
|---|---|
|
|
139
|
+
| **Workflow** | `build`, `validate`, `constitution`, `specify`, `plan`, `implement`, `clarify`, `review`, `propose`, `explore`, `party` |
|
|
140
|
+
| **Spec-edit** | `add-module`, `add-entity`, `add-workflow`, `add-screen`, `add-policy`, `rename`, `move` |
|
|
141
|
+
| **Query** | `explain`, `why`, `graph`, `diff`, `drift`, `analyze`, `checklist` |
|
|
142
|
+
| **Management** | `help`, `onboard`, `extensions`, `presets` |
|
|
143
|
+
|
|
144
|
+
29 commands are generated per agent, each adapted to the agent's file format (`.md`, `.prompt.md`, `.mdc`, etc.).
|
|
145
|
+
|
|
146
|
+
### Extension Marketplace
|
|
147
|
+
|
|
148
|
+
Search, install, and remove extensions and presets via npm:
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
import { searchMarketplace, npmInstall, npmRemove } from '@prodara/compiler';
|
|
152
|
+
|
|
153
|
+
// Search for extensions or presets
|
|
154
|
+
const extensions = searchMarketplace('auth', 'extension');
|
|
155
|
+
const presets = searchMarketplace('saas', 'preset');
|
|
156
|
+
|
|
157
|
+
// Install/remove
|
|
158
|
+
npmInstall('prodara-extension-auth', process.cwd());
|
|
159
|
+
npmRemove('prodara-extension-auth', process.cwd());
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Convention: extensions are named `prodara-extension-{name}`, presets `prodara-preset-{name}`.
|
|
163
|
+
|
|
164
|
+
### Custom Workflows
|
|
165
|
+
|
|
166
|
+
Define named workflow schemas in `.prodara.yaml`:
|
|
167
|
+
|
|
168
|
+
```yaml
|
|
169
|
+
workflows:
|
|
170
|
+
default:
|
|
171
|
+
phases: [specify, clarify, plan, implement, review, verify]
|
|
172
|
+
fast:
|
|
173
|
+
phases: [plan, implement, verify]
|
|
174
|
+
reviewBefore: [security]
|
|
175
|
+
strict:
|
|
176
|
+
phases: [specify, clarify, plan, implement, review, verify]
|
|
177
|
+
reviewBefore: [architecture, security]
|
|
178
|
+
reviewAfter: [quality, testQuality]
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Each workflow defines its phase sequence and optional `reviewBefore`/`reviewAfter` gates. The `default` workflow is used when none is specified.
|
|
182
|
+
|
|
183
|
+
## CLI
|
|
184
|
+
|
|
185
|
+
When installed as a project dependency, provides a local `prodara` binary:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
npx prodara build
|
|
189
|
+
npx prodara validate --format json
|
|
190
|
+
npx prodara graph --output build/graph.json
|
|
191
|
+
npx prodara test
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Testing
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
npm test # 985 tests
|
|
198
|
+
npm run test:coverage # Enforces 100% coverage
|
|
199
|
+
npm run typecheck # Zero errors
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## License
|
|
203
|
+
|
|
204
|
+
MIT
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AgentDriver, AgentRequest, AgentResponse, AgentPlatform, PromptFileOutput } from './types.js';
|
|
2
|
+
export declare class PromptFileDriver implements AgentDriver {
|
|
3
|
+
readonly platform: AgentPlatform;
|
|
4
|
+
private readonly root;
|
|
5
|
+
constructor(platform: AgentPlatform, root: string);
|
|
6
|
+
execute(request: AgentRequest): Promise<AgentResponse>;
|
|
7
|
+
generatePromptFile(request: AgentRequest): PromptFileOutput;
|
|
8
|
+
}
|
|
9
|
+
export declare function createDriver(platform: AgentPlatform, root: string): AgentDriver;
|
|
10
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EAEb,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAsBpB,qBAAa,gBAAiB,YAAW,WAAW;IAClD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAElB,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM;IAK3C,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAyB5D,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB;CAU5D;AA+DD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAM/E"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Compiler — Agent Driver
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Platform-agnostic agent orchestration. Supports prompt-file drivers (IDE)
|
|
5
|
+
// and direct API drivers (headless/CI).
|
|
6
|
+
import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
7
|
+
import { join, dirname } from 'node:path';
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Prompt File Driver — writes prompt files for IDE-based agents
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
const PLATFORM_PATHS = {
|
|
12
|
+
copilot: '.github/prompts',
|
|
13
|
+
claude: '.claude/commands',
|
|
14
|
+
cursor: '.cursor/rules',
|
|
15
|
+
opencode: '.opencode/agent',
|
|
16
|
+
codex: '.codex',
|
|
17
|
+
};
|
|
18
|
+
const PLATFORM_EXTENSIONS = {
|
|
19
|
+
copilot: '.prompt.md',
|
|
20
|
+
claude: '.md',
|
|
21
|
+
cursor: '.mdc',
|
|
22
|
+
opencode: '.md',
|
|
23
|
+
codex: '.md',
|
|
24
|
+
};
|
|
25
|
+
export class PromptFileDriver {
|
|
26
|
+
platform;
|
|
27
|
+
root;
|
|
28
|
+
constructor(platform, root) {
|
|
29
|
+
this.platform = platform;
|
|
30
|
+
this.root = root;
|
|
31
|
+
}
|
|
32
|
+
async execute(request) {
|
|
33
|
+
const start = Date.now();
|
|
34
|
+
const output = this.generatePromptFile(request);
|
|
35
|
+
// Write the prompt file
|
|
36
|
+
const dir = dirname(output.path);
|
|
37
|
+
if (!existsSync(dir)) {
|
|
38
|
+
mkdirSync(dir, { recursive: true });
|
|
39
|
+
}
|
|
40
|
+
writeFileSync(output.path, output.content, 'utf-8');
|
|
41
|
+
const metadata = {
|
|
42
|
+
platform: this.platform,
|
|
43
|
+
duration_ms: Date.now() - start,
|
|
44
|
+
tokens_used: null,
|
|
45
|
+
model: null,
|
|
46
|
+
};
|
|
47
|
+
return {
|
|
48
|
+
content: output.content,
|
|
49
|
+
status: 'success',
|
|
50
|
+
metadata,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
generatePromptFile(request) {
|
|
54
|
+
/* v8 ignore next 2 -- all known platforms are in the maps; fallback is defensive */
|
|
55
|
+
const dirName = PLATFORM_PATHS[this.platform] ?? '.prodara/prompts';
|
|
56
|
+
const ext = PLATFORM_EXTENSIONS[this.platform] ?? '.md';
|
|
57
|
+
const fileName = `prodara-${request.capability}${ext}`;
|
|
58
|
+
const path = join(this.root, dirName, fileName);
|
|
59
|
+
const content = formatPromptForPlatform(this.platform, request);
|
|
60
|
+
return { path, content };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
// Prompt formatting
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
function formatPromptForPlatform(platform, request) {
|
|
67
|
+
const sections = [];
|
|
68
|
+
// Platform-specific frontmatter
|
|
69
|
+
if (platform === 'copilot') {
|
|
70
|
+
sections.push('---');
|
|
71
|
+
sections.push(`mode: ${request.capability}`);
|
|
72
|
+
sections.push('tools: []');
|
|
73
|
+
sections.push('---');
|
|
74
|
+
sections.push('');
|
|
75
|
+
}
|
|
76
|
+
else if (platform === 'cursor') {
|
|
77
|
+
sections.push('---');
|
|
78
|
+
sections.push(`description: Prodara ${request.capability} phase`);
|
|
79
|
+
sections.push('globs: ["**/*.prd"]');
|
|
80
|
+
sections.push('---');
|
|
81
|
+
sections.push('');
|
|
82
|
+
}
|
|
83
|
+
// Main prompt
|
|
84
|
+
sections.push(request.prompt);
|
|
85
|
+
// Context sections
|
|
86
|
+
if (request.context.constitution) {
|
|
87
|
+
sections.push('');
|
|
88
|
+
sections.push('## Constitution');
|
|
89
|
+
sections.push('');
|
|
90
|
+
sections.push(request.context.constitution);
|
|
91
|
+
}
|
|
92
|
+
if (request.context.graphSlice) {
|
|
93
|
+
sections.push('');
|
|
94
|
+
sections.push('## Graph Context');
|
|
95
|
+
sections.push('');
|
|
96
|
+
sections.push(request.context.graphSlice);
|
|
97
|
+
}
|
|
98
|
+
if (request.context.governance) {
|
|
99
|
+
sections.push('');
|
|
100
|
+
sections.push('## Governance Rules');
|
|
101
|
+
sections.push('');
|
|
102
|
+
sections.push(request.context.governance);
|
|
103
|
+
}
|
|
104
|
+
for (const [key, value] of Object.entries(request.context.additionalContext)) {
|
|
105
|
+
sections.push('');
|
|
106
|
+
sections.push(`## ${key}`);
|
|
107
|
+
sections.push('');
|
|
108
|
+
sections.push(value);
|
|
109
|
+
}
|
|
110
|
+
return sections.join('\n');
|
|
111
|
+
}
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
// Driver factory
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
115
|
+
export function createDriver(platform, root) {
|
|
116
|
+
if (platform === 'api') {
|
|
117
|
+
// API driver placeholder — will be implemented in C4
|
|
118
|
+
throw new Error('API driver not yet implemented. Use --headless with a configured API key.');
|
|
119
|
+
}
|
|
120
|
+
return new PromptFileDriver(platform, root);
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AgentDriver, AgentRequest, AgentResponse, AgentPlatform } from './types.js';
|
|
2
|
+
import type { ApiProvider } from '../config/config.js';
|
|
3
|
+
export interface ApiClientConfig {
|
|
4
|
+
readonly provider: ApiProvider;
|
|
5
|
+
readonly apiKey: string;
|
|
6
|
+
readonly model: string;
|
|
7
|
+
readonly baseUrl?: string;
|
|
8
|
+
readonly maxRetries?: number;
|
|
9
|
+
readonly timeoutMs?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ChatMessage {
|
|
12
|
+
readonly role: 'system' | 'user' | 'assistant';
|
|
13
|
+
readonly content: string;
|
|
14
|
+
}
|
|
15
|
+
interface ChatCompletionResult {
|
|
16
|
+
readonly content: string;
|
|
17
|
+
readonly model: string;
|
|
18
|
+
readonly tokens_used: number;
|
|
19
|
+
}
|
|
20
|
+
export declare function chatCompletion(config: ApiClientConfig, messages: readonly ChatMessage[]): Promise<ChatCompletionResult>;
|
|
21
|
+
export declare class ApiDriver implements AgentDriver {
|
|
22
|
+
readonly platform: AgentPlatform;
|
|
23
|
+
private readonly config;
|
|
24
|
+
constructor(config: ApiClientConfig);
|
|
25
|
+
execute(request: AgentRequest): Promise<AgentResponse>;
|
|
26
|
+
}
|
|
27
|
+
export declare function createApiDriver(config: ApiClientConfig): ApiDriver;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/agent/api-client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAiB,aAAa,EAAE,MAAM,YAAY,CAAC;AACzG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMvD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAyDD,wBAAsB,cAAc,CAClC,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,SAAS,WAAW,EAAE,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CAwD/B;AAMD,qBAAa,SAAU,YAAW,WAAW;IAC3C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAE7B,MAAM,EAAE,eAAe;IAI7B,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CA+C7D;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAElE"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Compiler — Headless API Client
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Minimal HTTP client for OpenAI and Anthropic chat completion APIs.
|
|
5
|
+
// Uses Node.js built-in fetch (no external dependencies).
|
|
6
|
+
// Supports retry with exponential backoff.
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
// Provider endpoints
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
const DEFAULT_URLS = {
|
|
11
|
+
openai: 'https://api.openai.com/v1/chat/completions',
|
|
12
|
+
anthropic: 'https://api.anthropic.com/v1/messages',
|
|
13
|
+
};
|
|
14
|
+
const DEFAULT_MODELS = {
|
|
15
|
+
openai: 'gpt-4o',
|
|
16
|
+
anthropic: 'claude-sonnet-4-20250514',
|
|
17
|
+
};
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Internal: build request body per provider
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
function buildOpenAIBody(messages, model) {
|
|
22
|
+
return JSON.stringify({ model, messages, temperature: 0 });
|
|
23
|
+
}
|
|
24
|
+
function buildAnthropicBody(messages, model) {
|
|
25
|
+
const system = messages.find((m) => m.role === 'system')?.content ?? '';
|
|
26
|
+
const userMessages = messages
|
|
27
|
+
.filter((m) => m.role !== 'system')
|
|
28
|
+
.map((m) => ({ role: m.role, content: m.content }));
|
|
29
|
+
return JSON.stringify({ model, system, messages: userMessages, max_tokens: 4096 });
|
|
30
|
+
}
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// Internal: parse response per provider
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
function parseOpenAIResponse(data) {
|
|
35
|
+
const choices = data['choices'];
|
|
36
|
+
const content = choices?.[0]?.message?.content ?? '';
|
|
37
|
+
const usage = data['usage'];
|
|
38
|
+
const model = typeof data['model'] === 'string' ? data['model'] : '';
|
|
39
|
+
return { content, model, tokens_used: usage?.total_tokens ?? 0 };
|
|
40
|
+
}
|
|
41
|
+
function parseAnthropicResponse(data) {
|
|
42
|
+
const contentArr = data['content'];
|
|
43
|
+
const content = contentArr?.find((c) => c.type === 'text')?.text ?? '';
|
|
44
|
+
const usage = data['usage'];
|
|
45
|
+
const tokens = (usage?.input_tokens ?? 0) + (usage?.output_tokens ?? 0);
|
|
46
|
+
const model = typeof data['model'] === 'string' ? data['model'] : '';
|
|
47
|
+
return { content, model, tokens_used: tokens };
|
|
48
|
+
}
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
// Core: send chat completion request with retry
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
export async function chatCompletion(config, messages) {
|
|
53
|
+
const url = config.baseUrl ?? DEFAULT_URLS[config.provider];
|
|
54
|
+
const model = config.model || DEFAULT_MODELS[config.provider];
|
|
55
|
+
const maxRetries = config.maxRetries ?? 3;
|
|
56
|
+
const timeoutMs = config.timeoutMs ?? 60_000;
|
|
57
|
+
const body = config.provider === 'openai'
|
|
58
|
+
? buildOpenAIBody(messages, model)
|
|
59
|
+
: buildAnthropicBody(messages, model);
|
|
60
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
61
|
+
if (config.provider === 'openai') {
|
|
62
|
+
headers['Authorization'] = `Bearer ${config.apiKey}`;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
headers['x-api-key'] = config.apiKey;
|
|
66
|
+
headers['anthropic-version'] = '2023-06-01';
|
|
67
|
+
}
|
|
68
|
+
let lastError = null;
|
|
69
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
70
|
+
if (attempt > 0) {
|
|
71
|
+
const delay = Math.min(1000 * Math.pow(2, attempt - 1), 8000);
|
|
72
|
+
await sleep(delay);
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const controller = new AbortController();
|
|
76
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
77
|
+
const response = await fetch(url, {
|
|
78
|
+
method: 'POST',
|
|
79
|
+
headers,
|
|
80
|
+
body,
|
|
81
|
+
signal: controller.signal,
|
|
82
|
+
});
|
|
83
|
+
clearTimeout(timer);
|
|
84
|
+
if (!response.ok) {
|
|
85
|
+
const text = await response.text();
|
|
86
|
+
throw new Error(`API ${response.status}: ${text.slice(0, 200)}`);
|
|
87
|
+
}
|
|
88
|
+
const data = (await response.json());
|
|
89
|
+
return config.provider === 'openai'
|
|
90
|
+
? parseOpenAIResponse(data)
|
|
91
|
+
: parseAnthropicResponse(data);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
95
|
+
if (attempt === maxRetries - 1)
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
throw lastError ?? /* v8 ignore next */ new Error('API request failed');
|
|
100
|
+
}
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
// ApiDriver — implements AgentDriver for headless/CI use
|
|
103
|
+
// ---------------------------------------------------------------------------
|
|
104
|
+
export class ApiDriver {
|
|
105
|
+
platform = 'api';
|
|
106
|
+
config;
|
|
107
|
+
constructor(config) {
|
|
108
|
+
this.config = config;
|
|
109
|
+
}
|
|
110
|
+
async execute(request) {
|
|
111
|
+
const start = Date.now();
|
|
112
|
+
const messages = [];
|
|
113
|
+
// System message: constitution + governance
|
|
114
|
+
const systemParts = [];
|
|
115
|
+
if (request.context.constitution) {
|
|
116
|
+
systemParts.push(`# Constitution\n\n${request.context.constitution}`);
|
|
117
|
+
}
|
|
118
|
+
if (request.context.governance) {
|
|
119
|
+
systemParts.push(`# Governance\n\n${request.context.governance}`);
|
|
120
|
+
}
|
|
121
|
+
if (systemParts.length > 0) {
|
|
122
|
+
messages.push({ role: 'system', content: systemParts.join('\n\n') });
|
|
123
|
+
}
|
|
124
|
+
// User message: prompt + graph context
|
|
125
|
+
const userParts = [request.prompt];
|
|
126
|
+
if (request.context.graphSlice) {
|
|
127
|
+
userParts.push(`\n\n# Graph Context\n\n${request.context.graphSlice}`);
|
|
128
|
+
}
|
|
129
|
+
for (const [key, value] of Object.entries(request.context.additionalContext)) {
|
|
130
|
+
userParts.push(`\n\n# ${key}\n\n${value}`);
|
|
131
|
+
}
|
|
132
|
+
messages.push({ role: 'user', content: userParts.join('') });
|
|
133
|
+
try {
|
|
134
|
+
const result = await chatCompletion(this.config, messages);
|
|
135
|
+
const metadata = {
|
|
136
|
+
platform: 'api',
|
|
137
|
+
duration_ms: Date.now() - start,
|
|
138
|
+
tokens_used: result.tokens_used,
|
|
139
|
+
model: result.model,
|
|
140
|
+
};
|
|
141
|
+
return { content: result.content, status: 'success', metadata };
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
const metadata = {
|
|
145
|
+
platform: 'api',
|
|
146
|
+
duration_ms: Date.now() - start,
|
|
147
|
+
tokens_used: null,
|
|
148
|
+
model: null,
|
|
149
|
+
};
|
|
150
|
+
const message = err instanceof Error ? err.message : /* v8 ignore next */ String(err);
|
|
151
|
+
return { content: message, status: 'error', metadata };
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// ---------------------------------------------------------------------------
|
|
156
|
+
// Factory
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
158
|
+
export function createApiDriver(config) {
|
|
159
|
+
return new ApiDriver(config);
|
|
160
|
+
}
|
|
161
|
+
// ---------------------------------------------------------------------------
|
|
162
|
+
// Helpers
|
|
163
|
+
// ---------------------------------------------------------------------------
|
|
164
|
+
function sleep(ms) {
|
|
165
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/agent/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { PromptFileDriver, createDriver } from './agent.js';
|
|
2
|
+
export { ApiDriver, createApiDriver, chatCompletion } from './api-client.js';
|
|
3
|
+
export type { ApiClientConfig, ChatMessage } from './api-client.js';
|
|
4
|
+
export type { AgentDriver, AgentRequest, AgentResponse, AgentPlatform, AgentCapability, AgentStatus, AgentContext, AgentMetadata, PromptFileOutput, } from './types.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7E,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ProductGraph } from '../graph/graph-types.js';
|
|
2
|
+
import type { IncrementalSpec } from '../incremental/types.js';
|
|
3
|
+
import type { ReviewerAgent } from '../reviewers/reviewer.js';
|
|
4
|
+
import type { ReviewFinding } from '../reviewers/types.js';
|
|
5
|
+
import type { GraphSlice } from '../generator/contracts.js';
|
|
6
|
+
export type PartyRole = 'architect' | 'security' | 'developer' | 'qa' | 'ux';
|
|
7
|
+
export interface PartyAgent {
|
|
8
|
+
readonly role: PartyRole;
|
|
9
|
+
readonly reviewer: ReviewerAgent;
|
|
10
|
+
}
|
|
11
|
+
export interface PartyConfig {
|
|
12
|
+
readonly agents: readonly PartyAgent[];
|
|
13
|
+
readonly coordinationMode: 'sequential' | 'parallel';
|
|
14
|
+
readonly maxRounds: number;
|
|
15
|
+
}
|
|
16
|
+
export interface PartyRound {
|
|
17
|
+
readonly roundNumber: number;
|
|
18
|
+
readonly agentResults: readonly PartyAgentResult[];
|
|
19
|
+
readonly consensusReached: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface PartyAgentResult {
|
|
22
|
+
readonly role: PartyRole;
|
|
23
|
+
readonly findings: readonly ReviewFinding[];
|
|
24
|
+
}
|
|
25
|
+
export interface PartyResult {
|
|
26
|
+
readonly rounds: readonly PartyRound[];
|
|
27
|
+
readonly finalConsensus: boolean;
|
|
28
|
+
readonly totalFindings: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the graph slices relevant to a party role.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getSlicesForRole(graph: ProductGraph, role: PartyRole): readonly GraphSlice[];
|
|
34
|
+
/**
|
|
35
|
+
* Run a party-mode review session.
|
|
36
|
+
*
|
|
37
|
+
* Each round:
|
|
38
|
+
* 1. Each agent reviews the full graph (agents are reviewers with role context)
|
|
39
|
+
* 2. Findings are collected
|
|
40
|
+
* 3. Consensus is checked — no new critical/error findings → done
|
|
41
|
+
* 4. If max rounds reached → stop
|
|
42
|
+
*/
|
|
43
|
+
export declare function runParty(graph: ProductGraph, spec: IncrementalSpec, config: PartyConfig): PartyResult;
|
|
44
|
+
/**
|
|
45
|
+
* Format party results for human output.
|
|
46
|
+
*/
|
|
47
|
+
export declare function formatPartyHuman(result: PartyResult): string;
|
|
48
|
+
//# sourceMappingURL=party.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"party.d.ts","sourceRoot":"","sources":["../../src/agent/party.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAiB,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAO3E,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,gBAAgB,EAAE,YAAY,GAAG,UAAU,CAAC;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAcD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,UAAU,EAAE,CAE5F;AAMD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,WAAW,GAClB,WAAW,CA6Bb;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAsB5D"}
|