popeye-cli 2.1.0 → 2.7.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/dist/adapters/gemini.d.ts +14 -0
- package/dist/adapters/gemini.d.ts.map +1 -1
- package/dist/adapters/gemini.js +41 -6
- package/dist/adapters/gemini.js.map +1 -1
- package/dist/adapters/grok.d.ts +14 -0
- package/dist/adapters/grok.d.ts.map +1 -1
- package/dist/adapters/grok.js +42 -6
- package/dist/adapters/grok.js.map +1 -1
- package/dist/adapters/openai.d.ts +10 -0
- package/dist/adapters/openai.d.ts.map +1 -1
- package/dist/adapters/openai.js +44 -5
- package/dist/adapters/openai.js.map +1 -1
- package/dist/cli/commands/create.js +1 -1
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +328 -21
- package/dist/cli/interactive.js.map +1 -1
- package/dist/generators/all.d.ts.map +1 -1
- package/dist/generators/all.js +25 -2
- package/dist/generators/all.js.map +1 -1
- package/dist/generators/doc-parser.d.ts +21 -6
- package/dist/generators/doc-parser.d.ts.map +1 -1
- package/dist/generators/doc-parser.js +55 -4
- package/dist/generators/doc-parser.js.map +1 -1
- package/dist/generators/templates/fullstack.js +1 -1
- package/dist/generators/templates/website-components.js +1 -1
- package/dist/generators/templates/website-components.js.map +1 -1
- package/dist/generators/templates/website-config.d.ts +4 -1
- package/dist/generators/templates/website-config.d.ts.map +1 -1
- package/dist/generators/templates/website-config.js +17 -11
- package/dist/generators/templates/website-config.js.map +1 -1
- package/dist/generators/templates/website-conversion.js +1 -1
- package/dist/generators/templates/website-conversion.js.map +1 -1
- package/dist/generators/templates/website-landing.js +1 -1
- package/dist/generators/templates/website-landing.js.map +1 -1
- package/dist/generators/templates/website-layout.d.ts +36 -4
- package/dist/generators/templates/website-layout.d.ts.map +1 -1
- package/dist/generators/templates/website-layout.js +466 -23
- package/dist/generators/templates/website-layout.js.map +1 -1
- package/dist/generators/templates/website-pricing.js +1 -1
- package/dist/generators/templates/website-pricing.js.map +1 -1
- package/dist/generators/templates/website-sections.js +1 -1
- package/dist/generators/templates/website-sections.js.map +1 -1
- package/dist/generators/templates/website-seo.d.ts.map +1 -1
- package/dist/generators/templates/website-seo.js +4 -1
- package/dist/generators/templates/website-seo.js.map +1 -1
- package/dist/generators/templates/website.d.ts +1 -1
- package/dist/generators/templates/website.d.ts.map +1 -1
- package/dist/generators/templates/website.js +1 -1
- package/dist/generators/templates/website.js.map +1 -1
- package/dist/generators/website-content-ai.d.ts +52 -0
- package/dist/generators/website-content-ai.d.ts.map +1 -0
- package/dist/generators/website-content-ai.js +141 -0
- package/dist/generators/website-content-ai.js.map +1 -0
- package/dist/generators/website-content-scanner.d.ts +1 -1
- package/dist/generators/website-content-scanner.d.ts.map +1 -1
- package/dist/generators/website-content-scanner.js +98 -1
- package/dist/generators/website-content-scanner.js.map +1 -1
- package/dist/generators/website-context.d.ts +34 -1
- package/dist/generators/website-context.d.ts.map +1 -1
- package/dist/generators/website-context.js +131 -9
- package/dist/generators/website-context.js.map +1 -1
- package/dist/generators/website-debug.d.ts +12 -0
- package/dist/generators/website-debug.d.ts.map +1 -1
- package/dist/generators/website-debug.js +16 -0
- package/dist/generators/website-debug.js.map +1 -1
- package/dist/generators/website.d.ts.map +1 -1
- package/dist/generators/website.js +26 -4
- package/dist/generators/website.js.map +1 -1
- package/dist/pipeline/artifact-manager.d.ts.map +1 -1
- package/dist/pipeline/artifact-manager.js +3 -0
- package/dist/pipeline/artifact-manager.js.map +1 -1
- package/dist/pipeline/auto-recovery.d.ts +56 -0
- package/dist/pipeline/auto-recovery.d.ts.map +1 -0
- package/dist/pipeline/auto-recovery.js +185 -0
- package/dist/pipeline/auto-recovery.js.map +1 -0
- package/dist/pipeline/change-request.d.ts +39 -0
- package/dist/pipeline/change-request.d.ts.map +1 -1
- package/dist/pipeline/change-request.js +40 -1
- package/dist/pipeline/change-request.js.map +1 -1
- package/dist/pipeline/check-runner.d.ts +30 -1
- package/dist/pipeline/check-runner.d.ts.map +1 -1
- package/dist/pipeline/check-runner.js +122 -1
- package/dist/pipeline/check-runner.js.map +1 -1
- package/dist/pipeline/command-resolver.d.ts.map +1 -1
- package/dist/pipeline/command-resolver.js +33 -2
- package/dist/pipeline/command-resolver.js.map +1 -1
- package/dist/pipeline/consensus/arbitrator-query.d.ts +22 -0
- package/dist/pipeline/consensus/arbitrator-query.d.ts.map +1 -0
- package/dist/pipeline/consensus/arbitrator-query.js +70 -0
- package/dist/pipeline/consensus/arbitrator-query.js.map +1 -0
- package/dist/pipeline/consensus/consensus-runner.d.ts +131 -7
- package/dist/pipeline/consensus/consensus-runner.d.ts.map +1 -1
- package/dist/pipeline/consensus/consensus-runner.js +809 -35
- package/dist/pipeline/consensus/consensus-runner.js.map +1 -1
- package/dist/pipeline/cr-lifecycle.d.ts +42 -0
- package/dist/pipeline/cr-lifecycle.d.ts.map +1 -0
- package/dist/pipeline/cr-lifecycle.js +89 -0
- package/dist/pipeline/cr-lifecycle.js.map +1 -0
- package/dist/pipeline/gate-engine.d.ts +1 -0
- package/dist/pipeline/gate-engine.d.ts.map +1 -1
- package/dist/pipeline/gate-engine.js +27 -8
- package/dist/pipeline/gate-engine.js.map +1 -1
- package/dist/pipeline/migration.d.ts.map +1 -1
- package/dist/pipeline/migration.js +3 -26
- package/dist/pipeline/migration.js.map +1 -1
- package/dist/pipeline/orchestrator.d.ts +1 -1
- package/dist/pipeline/orchestrator.d.ts.map +1 -1
- package/dist/pipeline/orchestrator.js +311 -16
- package/dist/pipeline/orchestrator.js.map +1 -1
- package/dist/pipeline/packets/consensus-packet-builder.d.ts +15 -4
- package/dist/pipeline/packets/consensus-packet-builder.d.ts.map +1 -1
- package/dist/pipeline/packets/consensus-packet-builder.js +29 -17
- package/dist/pipeline/packets/consensus-packet-builder.js.map +1 -1
- package/dist/pipeline/phases/architecture.d.ts.map +1 -1
- package/dist/pipeline/phases/architecture.js +5 -3
- package/dist/pipeline/phases/architecture.js.map +1 -1
- package/dist/pipeline/phases/audit.d.ts.map +1 -1
- package/dist/pipeline/phases/audit.js +5 -3
- package/dist/pipeline/phases/audit.js.map +1 -1
- package/dist/pipeline/phases/consensus-architecture.d.ts.map +1 -1
- package/dist/pipeline/phases/consensus-architecture.js +10 -1
- package/dist/pipeline/phases/consensus-architecture.js.map +1 -1
- package/dist/pipeline/phases/consensus-master-plan.d.ts.map +1 -1
- package/dist/pipeline/phases/consensus-master-plan.js +10 -3
- package/dist/pipeline/phases/consensus-master-plan.js.map +1 -1
- package/dist/pipeline/phases/consensus-role-plans.d.ts.map +1 -1
- package/dist/pipeline/phases/consensus-role-plans.js +10 -1
- package/dist/pipeline/phases/consensus-role-plans.js.map +1 -1
- package/dist/pipeline/phases/done.d.ts.map +1 -1
- package/dist/pipeline/phases/done.js +9 -4
- package/dist/pipeline/phases/done.js.map +1 -1
- package/dist/pipeline/phases/intake.d.ts +1 -0
- package/dist/pipeline/phases/intake.d.ts.map +1 -1
- package/dist/pipeline/phases/intake.js +56 -13
- package/dist/pipeline/phases/intake.js.map +1 -1
- package/dist/pipeline/phases/phase-context.d.ts +2 -0
- package/dist/pipeline/phases/phase-context.d.ts.map +1 -1
- package/dist/pipeline/phases/phase-context.js +3 -1
- package/dist/pipeline/phases/phase-context.js.map +1 -1
- package/dist/pipeline/phases/production-gate.d.ts.map +1 -1
- package/dist/pipeline/phases/production-gate.js +28 -3
- package/dist/pipeline/phases/production-gate.js.map +1 -1
- package/dist/pipeline/phases/qa-validation.d.ts.map +1 -1
- package/dist/pipeline/phases/qa-validation.js +38 -5
- package/dist/pipeline/phases/qa-validation.js.map +1 -1
- package/dist/pipeline/phases/recovery-loop.d.ts +2 -0
- package/dist/pipeline/phases/recovery-loop.d.ts.map +1 -1
- package/dist/pipeline/phases/recovery-loop.js +200 -6
- package/dist/pipeline/phases/recovery-loop.js.map +1 -1
- package/dist/pipeline/phases/review.d.ts.map +1 -1
- package/dist/pipeline/phases/review.js +58 -28
- package/dist/pipeline/phases/review.js.map +1 -1
- package/dist/pipeline/phases/role-planning.d.ts.map +1 -1
- package/dist/pipeline/phases/role-planning.js +20 -5
- package/dist/pipeline/phases/role-planning.js.map +1 -1
- package/dist/pipeline/phases/stuck.d.ts.map +1 -1
- package/dist/pipeline/phases/stuck.js +10 -0
- package/dist/pipeline/phases/stuck.js.map +1 -1
- package/dist/pipeline/repo-snapshot.d.ts.map +1 -1
- package/dist/pipeline/repo-snapshot.js +3 -0
- package/dist/pipeline/repo-snapshot.js.map +1 -1
- package/dist/pipeline/role-execution-adapter.d.ts +2 -1
- package/dist/pipeline/role-execution-adapter.d.ts.map +1 -1
- package/dist/pipeline/role-execution-adapter.js +22 -7
- package/dist/pipeline/role-execution-adapter.js.map +1 -1
- package/dist/pipeline/skill-loader.d.ts +19 -0
- package/dist/pipeline/skill-loader.d.ts.map +1 -1
- package/dist/pipeline/skill-loader.js +22 -0
- package/dist/pipeline/skill-loader.js.map +1 -1
- package/dist/pipeline/skills/constitution-generator.d.ts +51 -0
- package/dist/pipeline/skills/constitution-generator.d.ts.map +1 -0
- package/dist/pipeline/skills/constitution-generator.js +210 -0
- package/dist/pipeline/skills/constitution-generator.js.map +1 -0
- package/dist/pipeline/skills/coverage-gate.d.ts +44 -0
- package/dist/pipeline/skills/coverage-gate.d.ts.map +1 -0
- package/dist/pipeline/skills/coverage-gate.js +143 -0
- package/dist/pipeline/skills/coverage-gate.js.map +1 -0
- package/dist/pipeline/skills/generator.d.ts +65 -0
- package/dist/pipeline/skills/generator.d.ts.map +1 -0
- package/dist/pipeline/skills/generator.js +221 -0
- package/dist/pipeline/skills/generator.js.map +1 -0
- package/dist/pipeline/skills/role-map.d.ts +38 -0
- package/dist/pipeline/skills/role-map.d.ts.map +1 -0
- package/dist/pipeline/skills/role-map.js +234 -0
- package/dist/pipeline/skills/role-map.js.map +1 -0
- package/dist/pipeline/skills/types.d.ts +47 -0
- package/dist/pipeline/skills/types.d.ts.map +1 -0
- package/dist/pipeline/skills/types.js +5 -0
- package/dist/pipeline/skills/types.js.map +1 -0
- package/dist/pipeline/skills/usage-registry.d.ts +48 -0
- package/dist/pipeline/skills/usage-registry.d.ts.map +1 -0
- package/dist/pipeline/skills/usage-registry.js +55 -0
- package/dist/pipeline/skills/usage-registry.js.map +1 -0
- package/dist/pipeline/strategy-context.d.ts +20 -0
- package/dist/pipeline/strategy-context.d.ts.map +1 -0
- package/dist/pipeline/strategy-context.js +55 -0
- package/dist/pipeline/strategy-context.js.map +1 -0
- package/dist/pipeline/type-defs/artifacts.d.ts +30 -5
- package/dist/pipeline/type-defs/artifacts.d.ts.map +1 -1
- package/dist/pipeline/type-defs/artifacts.js +5 -0
- package/dist/pipeline/type-defs/artifacts.js.map +1 -1
- package/dist/pipeline/type-defs/audit.d.ts +28 -13
- package/dist/pipeline/type-defs/audit.d.ts.map +1 -1
- package/dist/pipeline/type-defs/checks.d.ts +19 -8
- package/dist/pipeline/type-defs/checks.d.ts.map +1 -1
- package/dist/pipeline/type-defs/checks.js +4 -0
- package/dist/pipeline/type-defs/checks.js.map +1 -1
- package/dist/pipeline/type-defs/packets.d.ts +119 -18
- package/dist/pipeline/type-defs/packets.d.ts.map +1 -1
- package/dist/pipeline/type-defs/packets.js +17 -1
- package/dist/pipeline/type-defs/packets.js.map +1 -1
- package/dist/pipeline/type-defs/state.d.ts +165 -16
- package/dist/pipeline/type-defs/state.d.ts.map +1 -1
- package/dist/pipeline/type-defs/state.js +26 -1
- package/dist/pipeline/type-defs/state.js.map +1 -1
- package/dist/shared/text-utils.d.ts +23 -0
- package/dist/shared/text-utils.d.ts.map +1 -0
- package/dist/shared/text-utils.js +66 -0
- package/dist/shared/text-utils.js.map +1 -0
- package/dist/shared/website-strategy-format.d.ts +18 -0
- package/dist/shared/website-strategy-format.d.ts.map +1 -0
- package/dist/shared/website-strategy-format.js +47 -0
- package/dist/shared/website-strategy-format.js.map +1 -0
- package/dist/state/index.d.ts +2 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +57 -8
- package/dist/state/index.js.map +1 -1
- package/dist/types/consensus.d.ts +1 -0
- package/dist/types/consensus.d.ts.map +1 -1
- package/dist/types/consensus.js.map +1 -1
- package/dist/types/website-strategy.d.ts +1 -1
- package/dist/types/workflow.d.ts +447 -0
- package/dist/types/workflow.d.ts.map +1 -1
- package/dist/types/workflow.js +3 -0
- package/dist/types/workflow.js.map +1 -1
- package/dist/upgrade/handlers.d.ts.map +1 -1
- package/dist/upgrade/handlers.js +6 -3
- package/dist/upgrade/handlers.js.map +1 -1
- package/dist/workflow/consensus.d.ts.map +1 -1
- package/dist/workflow/consensus.js +1 -0
- package/dist/workflow/consensus.js.map +1 -1
- package/dist/workflow/website-strategy.d.ts.map +1 -1
- package/dist/workflow/website-strategy.js +2 -29
- package/dist/workflow/website-strategy.js.map +1 -1
- package/dist/workflow/website-updater.d.ts.map +1 -1
- package/dist/workflow/website-updater.js +3 -2
- package/dist/workflow/website-updater.js.map +1 -1
- package/package.json +1 -1
- package/src/adapters/gemini.ts +51 -6
- package/src/adapters/grok.ts +51 -6
- package/src/adapters/openai.ts +53 -5
- package/src/cli/commands/create.ts +1 -1
- package/src/cli/interactive.ts +337 -20
- package/src/generators/all.ts +25 -2
- package/src/generators/doc-parser.ts +75 -15
- package/src/generators/templates/fullstack.ts +1 -1
- package/src/generators/templates/website-components.ts +1 -1
- package/src/generators/templates/website-config.ts +23 -11
- package/src/generators/templates/website-conversion.ts +1 -1
- package/src/generators/templates/website-landing.ts +1 -1
- package/src/generators/templates/website-layout.ts +491 -23
- package/src/generators/templates/website-pricing.ts +1 -1
- package/src/generators/templates/website-sections.ts +1 -1
- package/src/generators/templates/website-seo.ts +4 -1
- package/src/generators/templates/website.ts +3 -0
- package/src/generators/website-content-ai.ts +186 -0
- package/src/generators/website-content-scanner.ts +113 -1
- package/src/generators/website-context.ts +151 -12
- package/src/generators/website-debug.ts +26 -0
- package/src/generators/website.ts +28 -3
- package/src/pipeline/artifact-manager.ts +3 -0
- package/src/pipeline/auto-recovery.ts +283 -0
- package/src/pipeline/change-request.ts +63 -1
- package/src/pipeline/check-runner.ts +141 -2
- package/src/pipeline/command-resolver.ts +34 -2
- package/src/pipeline/consensus/arbitrator-query.ts +101 -0
- package/src/pipeline/consensus/consensus-runner.ts +1099 -42
- package/src/pipeline/cr-lifecycle.ts +103 -0
- package/src/pipeline/gate-engine.ts +36 -8
- package/src/pipeline/migration.ts +5 -30
- package/src/pipeline/orchestrator.ts +367 -16
- package/src/pipeline/packets/consensus-packet-builder.ts +44 -18
- package/src/pipeline/phases/architecture.ts +6 -3
- package/src/pipeline/phases/audit.ts +6 -3
- package/src/pipeline/phases/consensus-architecture.ts +10 -1
- package/src/pipeline/phases/consensus-master-plan.ts +10 -3
- package/src/pipeline/phases/consensus-role-plans.ts +10 -1
- package/src/pipeline/phases/done.ts +15 -4
- package/src/pipeline/phases/intake.ts +67 -14
- package/src/pipeline/phases/phase-context.ts +6 -1
- package/src/pipeline/phases/production-gate.ts +41 -3
- package/src/pipeline/phases/qa-validation.ts +51 -5
- package/src/pipeline/phases/recovery-loop.ts +229 -7
- package/src/pipeline/phases/review.ts +73 -30
- package/src/pipeline/phases/role-planning.ts +23 -5
- package/src/pipeline/phases/stuck.ts +10 -0
- package/src/pipeline/repo-snapshot.ts +3 -0
- package/src/pipeline/role-execution-adapter.ts +30 -4
- package/src/pipeline/skill-loader.ts +33 -0
- package/src/pipeline/skills/constitution-generator.ts +236 -0
- package/src/pipeline/skills/coverage-gate.ts +199 -0
- package/src/pipeline/skills/generator.ts +287 -0
- package/src/pipeline/skills/role-map.ts +248 -0
- package/src/pipeline/skills/types.ts +53 -0
- package/src/pipeline/skills/usage-registry.ts +87 -0
- package/src/pipeline/strategy-context.ts +60 -0
- package/src/pipeline/type-defs/artifacts.ts +5 -0
- package/src/pipeline/type-defs/checks.ts +4 -0
- package/src/pipeline/type-defs/packets.ts +18 -1
- package/src/pipeline/type-defs/state.ts +26 -1
- package/src/shared/text-utils.ts +70 -0
- package/src/shared/website-strategy-format.ts +56 -0
- package/src/state/index.ts +60 -8
- package/src/types/consensus.ts +1 -0
- package/src/types/workflow.ts +6 -0
- package/src/upgrade/handlers.ts +9 -3
- package/src/workflow/consensus.ts +1 -0
- package/src/workflow/website-strategy.ts +2 -36
- package/src/workflow/website-updater.ts +4 -2
- package/tests/adapters/gemini.test.ts +165 -0
- package/tests/adapters/grok.test.ts +137 -0
- package/tests/adapters/openai.test.ts +128 -0
- package/tests/generators/doc-parser.test.ts +88 -9
- package/tests/generators/quality-gate.test.ts +19 -3
- package/tests/generators/website-components.test.ts +34 -0
- package/tests/generators/website-content-ai.test.ts +308 -0
- package/tests/generators/website-content-scanner.test.ts +86 -0
- package/tests/generators/website-context.test.ts +3 -2
- package/tests/integration/smokestack-scaffold.test.ts +385 -0
- package/tests/pipeline/auto-recovery.test.ts +337 -0
- package/tests/pipeline/change-request.test.ts +70 -0
- package/tests/pipeline/command-resolver.test.ts +42 -0
- package/tests/pipeline/consensus/arbitrator-query.test.ts +107 -0
- package/tests/pipeline/consensus-runner.test.ts +1333 -10
- package/tests/pipeline/consensus-scoring.test.ts +602 -18
- package/tests/pipeline/gate-engine.test.ts +34 -0
- package/tests/pipeline/install-check.test.ts +261 -0
- package/tests/pipeline/migration.test.ts +4 -3
- package/tests/pipeline/orchestrator.test.ts +1506 -15
- package/tests/pipeline/packets/builders.test.ts +29 -6
- package/tests/pipeline/phases/role-planning.strategy.test.ts +204 -0
- package/tests/pipeline/pipeline-persistence.test.ts +230 -0
- package/tests/pipeline/recovery-loop-guidance.test.ts +280 -0
- package/tests/pipeline/role-execution-adapter.test.ts +88 -0
- package/tests/pipeline/skills/constitution-generator.test.ts +201 -0
- package/tests/pipeline/skills/coverage-gate.test.ts +370 -0
- package/tests/pipeline/skills/generator.test.ts +213 -0
- package/tests/pipeline/skills/role-map.test.ts +198 -0
- package/tests/pipeline/skills/usage-registry.test.ts +114 -0
- package/tests/pipeline/strategy-context.test.ts +148 -0
- package/tests/shared/text-utils.test.ts +155 -0
- package/tests/state/progress-analysis.test.ts +375 -0
- package/tests/upgrade/handlers.test.ts +33 -2
- package/tests/workflow/consensus.test.ts +6 -0
- package/tsconfig.json +1 -1
|
@@ -26,14 +26,22 @@ export function resolveCommands(snapshot, overrides) {
|
|
|
26
26
|
case 'python':
|
|
27
27
|
resolved = resolvePythonCommands(snapshot);
|
|
28
28
|
break;
|
|
29
|
-
case 'mixed':
|
|
29
|
+
case 'mixed': {
|
|
30
30
|
// Prefer Node commands, augment with Python where Node is missing
|
|
31
31
|
resolved = resolveNodeCommands(pm, scripts, snapshot);
|
|
32
|
+
const pyResolved = resolvePythonCommands(snapshot);
|
|
32
33
|
if (!resolved.test) {
|
|
33
|
-
const pyResolved = resolvePythonCommands(snapshot);
|
|
34
34
|
resolved.test = pyResolved.test;
|
|
35
35
|
}
|
|
36
|
+
// Chain both install commands for mixed projects
|
|
37
|
+
if (resolved.install && pyResolved.install) {
|
|
38
|
+
resolved.install = `${resolved.install} && ${pyResolved.install}`;
|
|
39
|
+
}
|
|
40
|
+
else if (!resolved.install) {
|
|
41
|
+
resolved.install = pyResolved.install;
|
|
42
|
+
}
|
|
36
43
|
break;
|
|
44
|
+
}
|
|
37
45
|
default:
|
|
38
46
|
resolved = { resolved_from: 'none' };
|
|
39
47
|
}
|
|
@@ -51,6 +59,10 @@ export function resolveCommands(snapshot, overrides) {
|
|
|
51
59
|
resolved.migrations = overrides.migrations;
|
|
52
60
|
if (overrides.start)
|
|
53
61
|
resolved.start = overrides.start;
|
|
62
|
+
if (overrides.install)
|
|
63
|
+
resolved.install = overrides.install;
|
|
64
|
+
if (overrides.install_cwd)
|
|
65
|
+
resolved.install_cwd = overrides.install_cwd;
|
|
54
66
|
}
|
|
55
67
|
return resolved;
|
|
56
68
|
}
|
|
@@ -98,6 +110,15 @@ function resolveNodeCommands(pm, scripts, snapshot) {
|
|
|
98
110
|
else if (scripts.dev) {
|
|
99
111
|
resolved.start = `${run} dev`;
|
|
100
112
|
}
|
|
113
|
+
// Install — always resolve based on package manager
|
|
114
|
+
resolved.install = pm === 'yarn' ? 'yarn install' : `${pm} install`;
|
|
115
|
+
// Workspace detection: install must run at the workspace root
|
|
116
|
+
const rootPkg = snapshot.config_files.find((c) => c.type === 'package.json');
|
|
117
|
+
const hasWorkspaces = rootPkg?.key_fields?.workspaces !== undefined;
|
|
118
|
+
const hasPnpmWorkspace = snapshot.config_files.some((c) => c.type === 'pnpm-workspace.yaml');
|
|
119
|
+
if (hasWorkspaces || hasPnpmWorkspace) {
|
|
120
|
+
resolved.install_cwd = '.';
|
|
121
|
+
}
|
|
101
122
|
return resolved;
|
|
102
123
|
}
|
|
103
124
|
// ─── Python Resolution ───────────────────────────────────
|
|
@@ -135,6 +156,16 @@ function resolvePythonCommands(snapshot) {
|
|
|
135
156
|
}
|
|
136
157
|
// Start
|
|
137
158
|
resolved.start = 'uvicorn main:app --host 0.0.0.0 --port 8000';
|
|
159
|
+
// Install — conservative: only well-known safe patterns
|
|
160
|
+
const hasPoetryLock = snapshot.config_files.some((c) => c.type === 'poetry.lock');
|
|
161
|
+
const hasReqs = snapshot.config_files.some((c) => c.type === 'requirements.txt');
|
|
162
|
+
if (hasPoetryLock) {
|
|
163
|
+
resolved.install = 'poetry install';
|
|
164
|
+
}
|
|
165
|
+
else if (hasReqs) {
|
|
166
|
+
resolved.install = 'pip install -r requirements.txt';
|
|
167
|
+
}
|
|
168
|
+
// No install for pyproject.toml-only (may need build backends, system deps)
|
|
138
169
|
return resolved;
|
|
139
170
|
}
|
|
140
171
|
//# sourceMappingURL=command-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-resolver.js","sourceRoot":"","sources":["../../src/pipeline/command-resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,UAAU,iBAAiB,CAAC,QAAsB;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAC7F,CAAC;IAEF,IAAI,OAAO,IAAI,SAAS;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,OAAO;QAAE,OAAO,MAAM,CAAC;IAC3B,IAAI,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC/B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4DAA4D;AAE5D,MAAM,UAAU,eAAe,CAC7B,QAAsB,EACtB,SAAqC;IAErC,MAAM,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,IAAI,KAAK,CAAC;IAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAEjC,IAAI,QAA0B,CAAC;IAE/B,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,QAAQ,GAAG,mBAAmB,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM;QACR,KAAK,QAAQ;YACX,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM;QACR,KAAK,OAAO;
|
|
1
|
+
{"version":3,"file":"command-resolver.js","sourceRoot":"","sources":["../../src/pipeline/command-resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,UAAU,iBAAiB,CAAC,QAAsB;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAC7F,CAAC;IAEF,IAAI,OAAO,IAAI,SAAS;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,OAAO;QAAE,OAAO,MAAM,CAAC;IAC3B,IAAI,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC/B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4DAA4D;AAE5D,MAAM,UAAU,eAAe,CAC7B,QAAsB,EACtB,SAAqC;IAErC,MAAM,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,IAAI,KAAK,CAAC;IAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAEjC,IAAI,QAA0B,CAAC;IAE/B,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,QAAQ,GAAG,mBAAmB,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM;QACR,KAAK,QAAQ;YACX,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM;QACR,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,kEAAkE;YAClE,QAAQ,GAAG,mBAAmB,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YAClC,CAAC;YACD,iDAAiD;YACjD,IAAI,QAAQ,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC3C,QAAQ,CAAC,OAAO,GAAG,GAAG,QAAQ,CAAC,OAAO,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;YACpE,CAAC;iBAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC7B,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;YACxC,CAAC;YACD,MAAM;QACR,CAAC;QACD;YACE,QAAQ,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IACzC,CAAC;IAED,kBAAkB;IAClB,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,SAAS,CAAC,KAAK;YAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACtD,IAAI,SAAS,CAAC,IAAI;YAAE,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QACnD,IAAI,SAAS,CAAC,IAAI;YAAE,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QACnD,IAAI,SAAS,CAAC,SAAS;YAAE,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QAClE,IAAI,SAAS,CAAC,UAAU;YAAE,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACrE,IAAI,SAAS,CAAC,KAAK;YAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACtD,IAAI,SAAS,CAAC,OAAO;YAAE,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QAC5D,IAAI,SAAS,CAAC,WAAW;YAAE,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IAC1E,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,4DAA4D;AAE5D,SAAS,mBAAmB,CAC1B,EAAU,EACV,OAA+B,EAC/B,QAAsB;IAEtB,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC;IAC1E,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAEzE,MAAM,QAAQ,GAAqB;QACjC,aAAa,EAAE,cAAc;KAC9B,CAAC;IAEF,QAAQ;IACR,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,QAAQ,CAAC,KAAK,GAAG,GAAG,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED,OAAO;IACP,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC;IAChC,CAAC;SAAM,IAAI,QAAQ,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,aAAa,CAAC;IACtC,CAAC;SAAM,IAAI,QAAQ,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;QAC9C,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,OAAO;IACP,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,YAAY;IACZ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,QAAQ,CAAC,SAAS,GAAG,GAAG,GAAG,YAAY,CAAC;IAC1C,CAAC;SAAM,IAAI,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9D,QAAQ,CAAC,SAAS,GAAG,GAAG,GAAG,eAAe,CAAC;IAC7C,CAAC;IAED,aAAa;IACb,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,sBAAsB,CACzC,CAAC;IACF,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,CAAC,UAAU,GAAG,GAAG,GAAG,wBAAwB,CAAC;IACvD,CAAC;IAED,QAAQ;IACR,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,QAAQ,CAAC,KAAK,GAAG,GAAG,GAAG,QAAQ,CAAC;IAClC,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACvB,QAAQ,CAAC,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC;IAChC,CAAC;IAED,oDAAoD;IACpD,QAAQ,CAAC,OAAO,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC;IAEpE,8DAA8D;IAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;IAC7E,MAAM,aAAa,GAAG,OAAO,EAAE,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC;IACpE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,CACxC,CAAC;IACF,IAAI,aAAa,IAAI,gBAAgB,EAAE,CAAC;QACtC,QAAQ,CAAC,WAAW,GAAG,GAAG,CAAC;IAC7B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,4DAA4D;AAE5D,SAAS,qBAAqB,CAAC,QAAsB;IACnD,MAAM,QAAQ,GAAqB;QACjC,aAAa,EAAE,QAAQ,CAAC,YAAY;aACjC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC;YAC1E,EAAE,IAAI,IAAI,iBAAiB;KAC9B,CAAC;IAEF,OAAO;IACP,IAAI,QAAQ,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QACzC,QAAQ,CAAC,IAAI,GAAG,eAAe,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,GAAG,eAAe,CAAC,CAAE,qBAAqB;IACzD,CAAC;IAED,OAAO;IACP,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;IACpF,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,GAAG,cAAc,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC;IAChC,CAAC;IAED,YAAY;IACZ,IAAI,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,QAAQ,CAAC,SAAS,GAAG,WAAW,CAAC;IACnC,CAAC;IAED,QAAQ;IACR,QAAQ,CAAC,KAAK,GAAG,iBAAiB,CAAC;IAEnC,aAAa;IACb,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IAC/E,IAAI,UAAU,EAAE,CAAC;QACf,QAAQ,CAAC,UAAU,GAAG,sBAAsB,CAAC;IAC/C,CAAC;IAED,QAAQ;IACR,QAAQ,CAAC,KAAK,GAAG,6CAA6C,CAAC;IAE/D,wDAAwD;IACxD,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;IACjF,IAAI,aAAa,EAAE,CAAC;QAClB,QAAQ,CAAC,OAAO,GAAG,gBAAgB,CAAC;IACtC,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC;QACnB,QAAQ,CAAC,OAAO,GAAG,iCAAiC,CAAC;IACvD,CAAC;IACD,4EAA4E;IAE5E,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic AI provider query — shared between consensus arbitration
|
|
3
|
+
* and auto-recovery guidance (v2.6.0).
|
|
4
|
+
*
|
|
5
|
+
* Single source of truth for adapter wiring + timeout logic.
|
|
6
|
+
*/
|
|
7
|
+
export interface ProviderConfig {
|
|
8
|
+
provider: string;
|
|
9
|
+
model: string;
|
|
10
|
+
temperature: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Call any configured AI provider with an arbitrary prompt.
|
|
14
|
+
* Returns raw text response or null on timeout/error.
|
|
15
|
+
*
|
|
16
|
+
* @param prompt - The full prompt to send to the provider
|
|
17
|
+
* @param config - Provider configuration (provider name, model, temperature)
|
|
18
|
+
* @param timeoutMs - Maximum time to wait for a response (default: 120s)
|
|
19
|
+
* @returns Raw text response or null on timeout/error/empty
|
|
20
|
+
*/
|
|
21
|
+
export declare function queryProvider(prompt: string, config: ProviderConfig, timeoutMs?: number): Promise<string | null>;
|
|
22
|
+
//# sourceMappingURL=arbitrator-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arbitrator-query.d.ts","sourceRoot":"","sources":["../../../src/pipeline/consensus/arbitrator-query.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,EACtB,SAAS,SAAU,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2BxB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic AI provider query — shared between consensus arbitration
|
|
3
|
+
* and auto-recovery guidance (v2.6.0).
|
|
4
|
+
*
|
|
5
|
+
* Single source of truth for adapter wiring + timeout logic.
|
|
6
|
+
*/
|
|
7
|
+
import logging from 'node:console';
|
|
8
|
+
const logger = logging;
|
|
9
|
+
// ─── Provider Query ──────────────────────────────────────
|
|
10
|
+
/**
|
|
11
|
+
* Call any configured AI provider with an arbitrary prompt.
|
|
12
|
+
* Returns raw text response or null on timeout/error.
|
|
13
|
+
*
|
|
14
|
+
* @param prompt - The full prompt to send to the provider
|
|
15
|
+
* @param config - Provider configuration (provider name, model, temperature)
|
|
16
|
+
* @param timeoutMs - Maximum time to wait for a response (default: 120s)
|
|
17
|
+
* @returns Raw text response or null on timeout/error/empty
|
|
18
|
+
*/
|
|
19
|
+
export async function queryProvider(prompt, config, timeoutMs = 120_000) {
|
|
20
|
+
try {
|
|
21
|
+
const resultPromise = callProviderAdapter(prompt, config);
|
|
22
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
23
|
+
setTimeout(() => resolve(null), timeoutMs);
|
|
24
|
+
});
|
|
25
|
+
const raw = await Promise.race([resultPromise, timeoutPromise]);
|
|
26
|
+
if (!raw || raw.trim().length === 0) {
|
|
27
|
+
logger.warn(`[arbitrator-query] Empty response from ${config.provider}/${config.model}`);
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
logger.log(`[arbitrator-query] ${config.provider}/${config.model}: ${raw.length} chars`);
|
|
31
|
+
return raw;
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
logger.warn(`[arbitrator-query] ${config.provider}/${config.model} failed: ${err instanceof Error ? err.message : 'unknown'}`);
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// ─── Adapter Wiring ──────────────────────────────────────
|
|
39
|
+
/**
|
|
40
|
+
* Route to the correct adapter based on provider name.
|
|
41
|
+
* Uses dynamic imports to avoid loading unused adapters.
|
|
42
|
+
*/
|
|
43
|
+
async function callProviderAdapter(prompt, config) {
|
|
44
|
+
switch (config.provider) {
|
|
45
|
+
case 'openai': {
|
|
46
|
+
const { requestRawReview } = await import('../../adapters/openai.js');
|
|
47
|
+
return requestRawReview(prompt, {
|
|
48
|
+
openaiModel: config.model,
|
|
49
|
+
temperature: config.temperature,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
case 'gemini': {
|
|
53
|
+
const { requestRawReview } = await import('../../adapters/gemini.js');
|
|
54
|
+
return requestRawReview(prompt, {
|
|
55
|
+
model: config.model,
|
|
56
|
+
temperature: config.temperature,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
case 'grok': {
|
|
60
|
+
const { requestRawReview } = await import('../../adapters/grok.js');
|
|
61
|
+
return requestRawReview(prompt, {
|
|
62
|
+
model: config.model,
|
|
63
|
+
temperature: config.temperature,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
default:
|
|
67
|
+
throw new Error(`Unknown provider: ${config.provider}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=arbitrator-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arbitrator-query.js","sourceRoot":"","sources":["../../../src/pipeline/consensus/arbitrator-query.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,OAAO,MAAM,cAAc,CAAC;AAInC,MAAM,MAAM,GAAG,OAAO,CAAC;AAUvB,4DAA4D;AAE5D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,MAAsB,EACtB,SAAS,GAAG,OAAO;IAEnB,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE1D,MAAM,cAAc,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnD,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;QAEhE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,0CAA0C,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACzF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,GAAG,CACR,sBAAsB,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM,QAAQ,CAC7E,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CACT,sBAAsB,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,YACnD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SACvC,EAAE,CACH,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,4DAA4D;AAE5D;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAChC,MAAc,EACd,MAAsB;IAEtB,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACtE,OAAO,gBAAgB,CAAC,MAAM,EAAE;gBAC9B,WAAW,EAAE,MAAM,CAAC,KAAK;gBACzB,WAAW,EAAE,MAAM,CAAC,WAAW;aACJ,CAAC,CAAC;QACjC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACtE,OAAO,gBAAgB,CAAC,MAAM,EAAE;gBAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YACpE,OAAO,gBAAgB,CAAC,MAAM,EAAE;gBAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC;QACL,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
|
|
@@ -6,10 +6,37 @@
|
|
|
6
6
|
* 1. Independent Review (DEFAULT): N reviewers review simultaneously,
|
|
7
7
|
* no reviewer sees other reviewers' output.
|
|
8
8
|
* 2. Iterative Consensus (optional): for recovery plan iteration.
|
|
9
|
+
*
|
|
10
|
+
* v2.1: Vote normalization pipeline, tag reclassification, hard-blocker
|
|
11
|
+
* detection, config-driven arbitration, reviewer rubric.
|
|
9
12
|
*/
|
|
10
13
|
import type { PlanPacket, ConsensusPacket, ReviewerVote } from '../types.js';
|
|
11
14
|
import type { GateDefinition } from '../gate-engine.js';
|
|
15
|
+
import type { NormalizationSummary } from '../packets/consensus-packet-builder.js';
|
|
12
16
|
import type { ConsensusConfig } from '../../types/consensus.js';
|
|
17
|
+
/**
|
|
18
|
+
* Normalize votes: pool → classify by tag → detect hard blockers → route by vote → dedup.
|
|
19
|
+
* Called after collecting votes, before buildConsensusPacket().
|
|
20
|
+
* Idempotent: running twice produces the same result.
|
|
21
|
+
*/
|
|
22
|
+
export declare function normalizeVoteBlockers(votes: ReviewerVote[]): {
|
|
23
|
+
votes: ReviewerVote[];
|
|
24
|
+
summary: NormalizationSummary;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Floor confidence score for CONDITIONAL votes.
|
|
28
|
+
* Matches adapter rubric: 80-94% = "minor revisions needed".
|
|
29
|
+
*/
|
|
30
|
+
export declare const DEFAULT_CONDITIONAL_FLOOR = 0.8;
|
|
31
|
+
/**
|
|
32
|
+
* Map a reviewer's confidence score (0-1) to a structured vote.
|
|
33
|
+
* Threshold-aware: APPROVE = meets gate bar, CONDITIONAL = iterate, REJECT = major rework.
|
|
34
|
+
*/
|
|
35
|
+
export declare function mapVote(confidence: number, threshold: number, conditionalFloor?: number): 'APPROVE' | 'CONDITIONAL' | 'REJECT';
|
|
36
|
+
/**
|
|
37
|
+
* Check if votes have meaningful disagreement (not unanimous).
|
|
38
|
+
*/
|
|
39
|
+
export declare function hasVoteDisagreement(votes: ReviewerVote[]): boolean;
|
|
13
40
|
export interface ConsensusRunnerConfig {
|
|
14
41
|
mode: 'independent' | 'iterative';
|
|
15
42
|
minReviewers: number;
|
|
@@ -19,26 +46,123 @@ export interface ConsensusRunnerConfig {
|
|
|
19
46
|
consensusConfig?: Partial<ConsensusConfig>;
|
|
20
47
|
/** Provider configurations for multi-LLM review */
|
|
21
48
|
reviewerProviders?: ReviewerProviderConfig[];
|
|
49
|
+
/** Arbitrator provider configuration (v2.1) */
|
|
50
|
+
arbitratorProvider?: ReviewerProviderConfig;
|
|
51
|
+
/** Enable arbitration for deadlocked votes (v2.1) */
|
|
52
|
+
enableArbitration?: boolean;
|
|
53
|
+
/** Skill loader for injecting reviewer/arbitrator skills (v2.2.1) */
|
|
54
|
+
skillLoader?: import('../skill-loader.js').SkillLoader;
|
|
55
|
+
/** Skill usage registry for recording usage events (v2.2.1) */
|
|
56
|
+
skillUsageRegistry?: import('../skills/usage-registry.js').SkillUsageRegistry;
|
|
22
57
|
}
|
|
23
58
|
export interface ReviewerProviderConfig {
|
|
24
59
|
provider: string;
|
|
25
60
|
model: string;
|
|
26
61
|
temperature: number;
|
|
27
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Safely load plan content from disk.
|
|
65
|
+
* - Path traversal guard: resolved path must start with projectDir.
|
|
66
|
+
* - Size cap: truncates with marker if content exceeds MAX_PLAN_CONTENT_CHARS.
|
|
67
|
+
*/
|
|
68
|
+
export declare function loadPlanContent(projectDir: string, artifactPath: string | undefined): {
|
|
69
|
+
content: string;
|
|
70
|
+
truncated: boolean;
|
|
71
|
+
};
|
|
72
|
+
export type ArbitrationTrigger = 'DISAGREEMENT' | 'BORDERLINE_SCORE' | 'ALL_CONDITIONAL' | 'NONE';
|
|
73
|
+
/**
|
|
74
|
+
* Determine whether arbitration should be triggered and why.
|
|
75
|
+
* Pure function — no side effects, easily unit-testable.
|
|
76
|
+
*/
|
|
77
|
+
export declare function getArbitrationTrigger(votes: ReviewerVote[], weightedScore: number, threshold: number): ArbitrationTrigger;
|
|
28
78
|
export declare class ConsensusRunner {
|
|
29
79
|
private readonly config;
|
|
80
|
+
private arbitrationAttempted;
|
|
30
81
|
constructor(config: ConsensusRunnerConfig);
|
|
31
82
|
/** Run structured consensus on a plan packet */
|
|
32
|
-
runStructuredConsensus(planPacket: PlanPacket, gateDefinition: GateDefinition
|
|
83
|
+
runStructuredConsensus(planPacket: PlanPacket, gateDefinition: GateDefinition, options?: {
|
|
84
|
+
revisionDirective?: string;
|
|
85
|
+
}): Promise<ConsensusPacket>;
|
|
33
86
|
/** Independent review: spawn N reviewers, each reviews independently */
|
|
34
|
-
runIndependentReview(planPacket: PlanPacket): Promise<ReviewerVote[]>;
|
|
87
|
+
runIndependentReview(planPacket: PlanPacket, planContent: string, revisionDirective?: string): Promise<ReviewerVote[]>;
|
|
35
88
|
/** Iterative review: wraps existing iterateUntilConsensus */
|
|
36
|
-
runIterativeReview(planPacket: PlanPacket): Promise<ReviewerVote[]>;
|
|
37
|
-
/**
|
|
89
|
+
runIterativeReview(planPacket: PlanPacket, planContent: string, revisionDirective?: string): Promise<ReviewerVote[]>;
|
|
90
|
+
/**
|
|
91
|
+
* Spawn a single independent reviewer.
|
|
92
|
+
* Governance rule: vote is ALWAYS derived from confidence via mapVote().
|
|
93
|
+
* The LLM's explicit vote is advisory only — logged for debugging.
|
|
94
|
+
*/
|
|
38
95
|
private spawnSingleReviewer;
|
|
39
|
-
/**
|
|
96
|
+
/**
|
|
97
|
+
* Call the appropriate provider adapter for a review.
|
|
98
|
+
* Uses requestRawReview() to bypass adapter prompt wrapping/parsing —
|
|
99
|
+
* the runner owns the prompt and parses the raw LLM response itself.
|
|
100
|
+
*/
|
|
40
101
|
private callProviderForReview;
|
|
102
|
+
/**
|
|
103
|
+
* Call arbitrator provider for tie-breaking (v2.1).
|
|
104
|
+
* v2.4.2: Rotates arbitrator away from dissenting reviewers to prevent
|
|
105
|
+
* systematic failure (e.g., Gemini rejects as reviewer + as arbitrator).
|
|
106
|
+
*/
|
|
107
|
+
private callArbitrator;
|
|
108
|
+
}
|
|
109
|
+
export interface ProviderReviewResult {
|
|
110
|
+
confidence: number;
|
|
111
|
+
blockingIssues: string[];
|
|
112
|
+
suggestions: string[];
|
|
113
|
+
requiredChanges?: string[];
|
|
114
|
+
/** LLM's explicit vote — advisory only, never used for gate decisions */
|
|
115
|
+
modelVote?: 'APPROVE' | 'REJECT' | 'CONDITIONAL' | null;
|
|
41
116
|
}
|
|
42
|
-
|
|
43
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Parse raw LLM response text into a ProviderReviewResult.
|
|
119
|
+
* Strategy 1: Try JSON parse first (expected format).
|
|
120
|
+
* Strategy 2: Regex fallback for free-form text responses.
|
|
121
|
+
*
|
|
122
|
+
* @param raw - Raw text from the LLM
|
|
123
|
+
* @returns Parsed review result with confidence, issues, and advisory vote
|
|
124
|
+
*/
|
|
125
|
+
export declare function parseRawReviewResponse(raw: string): ProviderReviewResult;
|
|
126
|
+
/**
|
|
127
|
+
* Correct confidence when it contradicts the model's explicit vote.
|
|
128
|
+
*
|
|
129
|
+
* The prompt defines confidence as "plan quality score" (0-1) and
|
|
130
|
+
* assigns ranges: REJECT < 0.80, CONDITIONAL 0.80-0.94, APPROVE >= 0.95.
|
|
131
|
+
* Some models confuse this with "assessment certainty" and return e.g.
|
|
132
|
+
* REJECT + 0.99 ("99% sure it's bad"). This function inverts such
|
|
133
|
+
* contradictions so mapVote() receives a semantically correct input.
|
|
134
|
+
*
|
|
135
|
+
* Correction is SYMMETRIC across all three bands:
|
|
136
|
+
* - REJECT + conf >= 0.80 -> invert: min(0.79, 1 - conf)
|
|
137
|
+
* - CONDITIONAL + conf >= 0.95 -> snap to midpoint 0.87
|
|
138
|
+
* - CONDITIONAL + conf < 0.80 -> snap to midpoint 0.87
|
|
139
|
+
* - APPROVE + conf < 0.80 -> invert: max(0.95, 1 - conf)
|
|
140
|
+
* - APPROVE + conf in [0.80, 0.95) -> snap to 0.95
|
|
141
|
+
*
|
|
142
|
+
* If modelVote is null (regex fallback couldn't find a vote), no correction.
|
|
143
|
+
*/
|
|
144
|
+
export declare function correctConfidenceContradiction(modelVote: 'APPROVE' | 'REJECT' | 'CONDITIONAL' | null, rawConfidence: number): {
|
|
145
|
+
confidence: number;
|
|
146
|
+
wasContradiction: boolean;
|
|
147
|
+
original: number;
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* Parse raw arbitrator response into a structured result.
|
|
151
|
+
* Strategy 1: JSON parse (optionally wrapped in code fences).
|
|
152
|
+
* Strategy 2: Regex fallback for free-form text.
|
|
153
|
+
*
|
|
154
|
+
* @param raw - Raw text from the arbitrator LLM
|
|
155
|
+
* @returns Parsed result with approved boolean, reasoning, and suggested changes
|
|
156
|
+
*/
|
|
157
|
+
export declare function parseArbitratorResponse(raw: string): {
|
|
158
|
+
approved: boolean;
|
|
159
|
+
reasoning: string;
|
|
160
|
+
suggestedChanges: string[];
|
|
161
|
+
};
|
|
162
|
+
export declare function buildReviewPrompt(planPacket: PlanPacket, planContent?: string, revisionDirective?: string): string;
|
|
163
|
+
/**
|
|
164
|
+
* Helper to resolve model string for a given provider from consensus config.
|
|
165
|
+
*/
|
|
166
|
+
export declare function getModelForProvider(config: Partial<ConsensusConfig> | undefined, provider: string): string;
|
|
167
|
+
export declare function createConsensusRunner(projectDir: string, consensusConfig?: Partial<ConsensusConfig>, skillLoader?: import('../skill-loader.js').SkillLoader, skillUsageRegistry?: import('../skills/usage-registry.js').SkillUsageRegistry): ConsensusRunner;
|
|
44
168
|
//# sourceMappingURL=consensus-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consensus-runner.d.ts","sourceRoot":"","sources":["../../../src/pipeline/consensus/consensus-runner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"consensus-runner.d.ts","sourceRoot":"","sources":["../../../src/pipeline/consensus/consensus-runner.ts"],"names":[],"mappings":"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"}
|