popeye-cli 1.9.5 → 2.0.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/CHANGELOG.md +59 -0
- package/CONTRIBUTING.md +15 -1
- package/README.md +57 -0
- package/cheatsheet.md +65 -0
- package/dist/cli/commands/debug-context.d.ts +64 -0
- package/dist/cli/commands/debug-context.d.ts.map +1 -0
- package/dist/cli/commands/debug-context.js +221 -0
- package/dist/cli/commands/debug-context.js.map +1 -0
- package/dist/cli/commands/debug-prompts.d.ts +25 -0
- package/dist/cli/commands/debug-prompts.d.ts.map +1 -0
- package/dist/cli/commands/debug-prompts.js +80 -0
- package/dist/cli/commands/debug-prompts.js.map +1 -0
- package/dist/cli/commands/debug.d.ts +68 -0
- package/dist/cli/commands/debug.d.ts.map +1 -0
- package/dist/cli/commands/debug.js +543 -0
- package/dist/cli/commands/debug.js.map +1 -0
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +25 -0
- package/dist/cli/interactive.js.map +1 -1
- package/dist/generators/all.d.ts.map +1 -1
- package/dist/generators/all.js +2 -0
- package/dist/generators/all.js.map +1 -1
- package/dist/generators/templates/database-docker.d.ts.map +1 -1
- package/dist/generators/templates/database-docker.js +10 -0
- package/dist/generators/templates/database-docker.js.map +1 -1
- package/dist/generators/templates/fullstack.d.ts +4 -1
- package/dist/generators/templates/fullstack.d.ts.map +1 -1
- package/dist/generators/templates/fullstack.js +6 -2
- package/dist/generators/templates/fullstack.js.map +1 -1
- package/dist/pipeline/artifact-manager.d.ts +47 -0
- package/dist/pipeline/artifact-manager.d.ts.map +1 -0
- package/dist/pipeline/artifact-manager.js +251 -0
- package/dist/pipeline/artifact-manager.js.map +1 -0
- package/dist/pipeline/artifact-validators.d.ts +29 -0
- package/dist/pipeline/artifact-validators.d.ts.map +1 -0
- package/dist/pipeline/artifact-validators.js +173 -0
- package/dist/pipeline/artifact-validators.js.map +1 -0
- package/dist/pipeline/change-request.d.ts +47 -0
- package/dist/pipeline/change-request.d.ts.map +1 -0
- package/dist/pipeline/change-request.js +91 -0
- package/dist/pipeline/change-request.js.map +1 -0
- package/dist/pipeline/check-runner.d.ts +47 -0
- package/dist/pipeline/check-runner.d.ts.map +1 -0
- package/dist/pipeline/check-runner.js +417 -0
- package/dist/pipeline/check-runner.js.map +1 -0
- package/dist/pipeline/command-resolver.d.ts +9 -0
- package/dist/pipeline/command-resolver.d.ts.map +1 -0
- package/dist/pipeline/command-resolver.js +140 -0
- package/dist/pipeline/command-resolver.js.map +1 -0
- package/dist/pipeline/consensus/consensus-runner.d.ts +44 -0
- package/dist/pipeline/consensus/consensus-runner.d.ts.map +1 -0
- package/dist/pipeline/consensus/consensus-runner.js +212 -0
- package/dist/pipeline/consensus/consensus-runner.js.map +1 -0
- package/dist/pipeline/constitution.d.ts +45 -0
- package/dist/pipeline/constitution.d.ts.map +1 -0
- package/dist/pipeline/constitution.js +82 -0
- package/dist/pipeline/constitution.js.map +1 -0
- package/dist/pipeline/gate-engine.d.ts +55 -0
- package/dist/pipeline/gate-engine.d.ts.map +1 -0
- package/dist/pipeline/gate-engine.js +270 -0
- package/dist/pipeline/gate-engine.js.map +1 -0
- package/dist/pipeline/index.d.ts +26 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +35 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/migration.d.ts +15 -0
- package/dist/pipeline/migration.d.ts.map +1 -0
- package/dist/pipeline/migration.js +76 -0
- package/dist/pipeline/migration.js.map +1 -0
- package/dist/pipeline/orchestrator.d.ts +28 -0
- package/dist/pipeline/orchestrator.d.ts.map +1 -0
- package/dist/pipeline/orchestrator.js +238 -0
- package/dist/pipeline/orchestrator.js.map +1 -0
- package/dist/pipeline/packets/audit-report-builder.d.ts +11 -0
- package/dist/pipeline/packets/audit-report-builder.d.ts.map +1 -0
- package/dist/pipeline/packets/audit-report-builder.js +32 -0
- package/dist/pipeline/packets/audit-report-builder.js.map +1 -0
- package/dist/pipeline/packets/consensus-packet-builder.d.ts +35 -0
- package/dist/pipeline/packets/consensus-packet-builder.d.ts.map +1 -0
- package/dist/pipeline/packets/consensus-packet-builder.js +80 -0
- package/dist/pipeline/packets/consensus-packet-builder.js.map +1 -0
- package/dist/pipeline/packets/index.d.ts +12 -0
- package/dist/pipeline/packets/index.d.ts.map +1 -0
- package/dist/pipeline/packets/index.js +8 -0
- package/dist/pipeline/packets/index.js.map +1 -0
- package/dist/pipeline/packets/plan-packet-builder.d.ts +21 -0
- package/dist/pipeline/packets/plan-packet-builder.d.ts.map +1 -0
- package/dist/pipeline/packets/plan-packet-builder.js +27 -0
- package/dist/pipeline/packets/plan-packet-builder.js.map +1 -0
- package/dist/pipeline/packets/rca-packet-builder.d.ts +19 -0
- package/dist/pipeline/packets/rca-packet-builder.d.ts.map +1 -0
- package/dist/pipeline/packets/rca-packet-builder.js +22 -0
- package/dist/pipeline/packets/rca-packet-builder.js.map +1 -0
- package/dist/pipeline/phases/architecture.d.ts +7 -0
- package/dist/pipeline/phases/architecture.d.ts.map +1 -0
- package/dist/pipeline/phases/architecture.js +60 -0
- package/dist/pipeline/phases/architecture.js.map +1 -0
- package/dist/pipeline/phases/audit.d.ts +8 -0
- package/dist/pipeline/phases/audit.d.ts.map +1 -0
- package/dist/pipeline/phases/audit.js +144 -0
- package/dist/pipeline/phases/audit.js.map +1 -0
- package/dist/pipeline/phases/consensus-architecture.d.ts +7 -0
- package/dist/pipeline/phases/consensus-architecture.d.ts.map +1 -0
- package/dist/pipeline/phases/consensus-architecture.js +84 -0
- package/dist/pipeline/phases/consensus-architecture.js.map +1 -0
- package/dist/pipeline/phases/consensus-master-plan.d.ts +7 -0
- package/dist/pipeline/phases/consensus-master-plan.d.ts.map +1 -0
- package/dist/pipeline/phases/consensus-master-plan.js +81 -0
- package/dist/pipeline/phases/consensus-master-plan.js.map +1 -0
- package/dist/pipeline/phases/consensus-role-plans.d.ts +7 -0
- package/dist/pipeline/phases/consensus-role-plans.d.ts.map +1 -0
- package/dist/pipeline/phases/consensus-role-plans.js +85 -0
- package/dist/pipeline/phases/consensus-role-plans.js.map +1 -0
- package/dist/pipeline/phases/done.d.ts +7 -0
- package/dist/pipeline/phases/done.d.ts.map +1 -0
- package/dist/pipeline/phases/done.js +45 -0
- package/dist/pipeline/phases/done.js.map +1 -0
- package/dist/pipeline/phases/implementation.d.ts +8 -0
- package/dist/pipeline/phases/implementation.d.ts.map +1 -0
- package/dist/pipeline/phases/implementation.js +42 -0
- package/dist/pipeline/phases/implementation.js.map +1 -0
- package/dist/pipeline/phases/index.d.ts +20 -0
- package/dist/pipeline/phases/index.d.ts.map +1 -0
- package/dist/pipeline/phases/index.js +19 -0
- package/dist/pipeline/phases/index.js.map +1 -0
- package/dist/pipeline/phases/intake.d.ts +8 -0
- package/dist/pipeline/phases/intake.d.ts.map +1 -0
- package/dist/pipeline/phases/intake.js +40 -0
- package/dist/pipeline/phases/intake.js.map +1 -0
- package/dist/pipeline/phases/phase-context.d.ts +30 -0
- package/dist/pipeline/phases/phase-context.d.ts.map +1 -0
- package/dist/pipeline/phases/phase-context.js +33 -0
- package/dist/pipeline/phases/phase-context.js.map +1 -0
- package/dist/pipeline/phases/production-gate.d.ts +8 -0
- package/dist/pipeline/phases/production-gate.d.ts.map +1 -0
- package/dist/pipeline/phases/production-gate.js +84 -0
- package/dist/pipeline/phases/production-gate.js.map +1 -0
- package/dist/pipeline/phases/qa-validation.d.ts +7 -0
- package/dist/pipeline/phases/qa-validation.d.ts.map +1 -0
- package/dist/pipeline/phases/qa-validation.js +50 -0
- package/dist/pipeline/phases/qa-validation.js.map +1 -0
- package/dist/pipeline/phases/recovery-loop.d.ts +7 -0
- package/dist/pipeline/phases/recovery-loop.d.ts.map +1 -0
- package/dist/pipeline/phases/recovery-loop.js +91 -0
- package/dist/pipeline/phases/recovery-loop.js.map +1 -0
- package/dist/pipeline/phases/review.d.ts +8 -0
- package/dist/pipeline/phases/review.d.ts.map +1 -0
- package/dist/pipeline/phases/review.js +127 -0
- package/dist/pipeline/phases/review.js.map +1 -0
- package/dist/pipeline/phases/role-planning.d.ts +7 -0
- package/dist/pipeline/phases/role-planning.d.ts.map +1 -0
- package/dist/pipeline/phases/role-planning.js +75 -0
- package/dist/pipeline/phases/role-planning.js.map +1 -0
- package/dist/pipeline/phases/stuck.d.ts +7 -0
- package/dist/pipeline/phases/stuck.d.ts.map +1 -0
- package/dist/pipeline/phases/stuck.js +51 -0
- package/dist/pipeline/phases/stuck.js.map +1 -0
- package/dist/pipeline/repo-snapshot.d.ts +24 -0
- package/dist/pipeline/repo-snapshot.d.ts.map +1 -0
- package/dist/pipeline/repo-snapshot.js +343 -0
- package/dist/pipeline/repo-snapshot.js.map +1 -0
- package/dist/pipeline/role-execution-adapter.d.ts +59 -0
- package/dist/pipeline/role-execution-adapter.d.ts.map +1 -0
- package/dist/pipeline/role-execution-adapter.js +159 -0
- package/dist/pipeline/role-execution-adapter.js.map +1 -0
- package/dist/pipeline/skill-loader.d.ts +34 -0
- package/dist/pipeline/skill-loader.d.ts.map +1 -0
- package/dist/pipeline/skill-loader.js +156 -0
- package/dist/pipeline/skill-loader.js.map +1 -0
- package/dist/pipeline/skills/defaults.d.ts +16 -0
- package/dist/pipeline/skills/defaults.d.ts.map +1 -0
- package/dist/pipeline/skills/defaults.js +189 -0
- package/dist/pipeline/skills/defaults.js.map +1 -0
- package/dist/pipeline/type-defs/artifacts.d.ts +202 -0
- package/dist/pipeline/type-defs/artifacts.d.ts.map +1 -0
- package/dist/pipeline/type-defs/artifacts.js +66 -0
- package/dist/pipeline/type-defs/artifacts.js.map +1 -0
- package/dist/pipeline/type-defs/audit.d.ts +256 -0
- package/dist/pipeline/type-defs/audit.d.ts.map +1 -0
- package/dist/pipeline/type-defs/audit.js +54 -0
- package/dist/pipeline/type-defs/audit.js.map +1 -0
- package/dist/pipeline/type-defs/checks.d.ts +81 -0
- package/dist/pipeline/type-defs/checks.d.ts.map +1 -0
- package/dist/pipeline/type-defs/checks.js +38 -0
- package/dist/pipeline/type-defs/checks.js.map +1 -0
- package/dist/pipeline/type-defs/enums.d.ts +43 -0
- package/dist/pipeline/type-defs/enums.d.ts.map +1 -0
- package/dist/pipeline/type-defs/enums.js +55 -0
- package/dist/pipeline/type-defs/enums.js.map +1 -0
- package/dist/pipeline/type-defs/index.d.ts +12 -0
- package/dist/pipeline/type-defs/index.d.ts.map +1 -0
- package/dist/pipeline/type-defs/index.js +12 -0
- package/dist/pipeline/type-defs/index.js.map +1 -0
- package/dist/pipeline/type-defs/packets.d.ts +806 -0
- package/dist/pipeline/type-defs/packets.d.ts.map +1 -0
- package/dist/pipeline/type-defs/packets.js +109 -0
- package/dist/pipeline/type-defs/packets.js.map +1 -0
- package/dist/pipeline/type-defs/snapshot.d.ts +52 -0
- package/dist/pipeline/type-defs/snapshot.d.ts.map +1 -0
- package/dist/pipeline/type-defs/snapshot.js +35 -0
- package/dist/pipeline/type-defs/snapshot.js.map +1 -0
- package/dist/pipeline/type-defs/state.d.ts +449 -0
- package/dist/pipeline/type-defs/state.d.ts.map +1 -0
- package/dist/pipeline/type-defs/state.js +88 -0
- package/dist/pipeline/type-defs/state.js.map +1 -0
- package/dist/pipeline/types.d.ts +16 -0
- package/dist/pipeline/types.d.ts.map +1 -0
- package/dist/pipeline/types.js +16 -0
- package/dist/pipeline/types.js.map +1 -0
- package/dist/types/audit.d.ts +6 -6
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +48 -0
- package/dist/workflow/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/ARBITRATOR.md +137 -0
- package/skills/ARCHITECT.md +167 -0
- package/skills/AUDITOR.md +128 -0
- package/skills/AUDIT_REPORT_SCHEMA.md +20 -0
- package/skills/BACKEND_PROGRAMMER.md +95 -0
- package/skills/CONSENSUS_PACKET_SCHEMA.md +166 -0
- package/skills/DB_EXPERT.md +106 -0
- package/skills/DEBUGGER.md +286 -0
- package/skills/DISPATCHER.md +157 -0
- package/skills/FRONTEND_PROGRAMMER.md +84 -0
- package/skills/JOURNALIST.md +247 -0
- package/skills/MARKETING_EXPERT.md +23 -0
- package/skills/PHASE_GATE_ENGINE_SPEC.md +171 -0
- package/skills/PLAN_PACKET_SCHEMA.md +222 -0
- package/skills/POPEYE_CONSTITUTION.md +177 -0
- package/skills/POPEYE_FULL_AUTONOMY_PIPELINE.md +537 -0
- package/skills/PRODUCTION_READINESS_SCHEMA.md +19 -0
- package/skills/QA_TESTER.md +40 -0
- package/skills/RCA_PACKET_SCHEMA.md +22 -0
- package/skills/RELEASE_MANAGER.md +60 -0
- package/skills/REVIEWER.md +133 -0
- package/skills/SOCIAL_EXPERT.md +22 -0
- package/skills/UI_UX_SPECIALIST.md +22 -0
- package/skills/WEBSITE_PROGRAMMER.md +37 -0
- package/src/cli/commands/debug-context.ts +265 -0
- package/src/cli/commands/debug-prompts.ts +91 -0
- package/src/cli/commands/debug.ts +662 -0
- package/src/cli/commands/index.ts +1 -0
- package/src/cli/index.ts +2 -0
- package/src/cli/interactive.ts +27 -0
- package/src/generators/all.ts +2 -0
- package/src/generators/templates/database-docker.ts +10 -0
- package/src/generators/templates/fullstack.ts +6 -2
- package/src/pipeline/artifact-manager.ts +339 -0
- package/src/pipeline/artifact-validators.ts +224 -0
- package/src/pipeline/change-request.ts +119 -0
- package/src/pipeline/check-runner.ts +504 -0
- package/src/pipeline/command-resolver.ts +168 -0
- package/src/pipeline/consensus/consensus-runner.ts +317 -0
- package/src/pipeline/constitution.ts +109 -0
- package/src/pipeline/gate-engine.ts +347 -0
- package/src/pipeline/index.ts +82 -0
- package/src/pipeline/migration.ts +91 -0
- package/src/pipeline/orchestrator.ts +314 -0
- package/src/pipeline/packets/audit-report-builder.ts +47 -0
- package/src/pipeline/packets/consensus-packet-builder.ts +112 -0
- package/src/pipeline/packets/index.ts +15 -0
- package/src/pipeline/packets/plan-packet-builder.ts +52 -0
- package/src/pipeline/packets/rca-packet-builder.ts +38 -0
- package/src/pipeline/phases/architecture.ts +73 -0
- package/src/pipeline/phases/audit.ts +193 -0
- package/src/pipeline/phases/consensus-architecture.ts +104 -0
- package/src/pipeline/phases/consensus-master-plan.ts +100 -0
- package/src/pipeline/phases/consensus-role-plans.ts +105 -0
- package/src/pipeline/phases/done.ts +68 -0
- package/src/pipeline/phases/implementation.ts +48 -0
- package/src/pipeline/phases/index.ts +21 -0
- package/src/pipeline/phases/intake.ts +54 -0
- package/src/pipeline/phases/phase-context.ts +86 -0
- package/src/pipeline/phases/production-gate.ts +113 -0
- package/src/pipeline/phases/qa-validation.ts +63 -0
- package/src/pipeline/phases/recovery-loop.ts +118 -0
- package/src/pipeline/phases/review.ts +149 -0
- package/src/pipeline/phases/role-planning.ts +92 -0
- package/src/pipeline/phases/stuck.ts +62 -0
- package/src/pipeline/repo-snapshot.ts +395 -0
- package/src/pipeline/role-execution-adapter.ts +238 -0
- package/src/pipeline/skill-loader.ts +192 -0
- package/src/pipeline/skills/defaults.ts +215 -0
- package/src/pipeline/type-defs/artifacts.ts +81 -0
- package/src/pipeline/type-defs/audit.ts +67 -0
- package/src/pipeline/type-defs/checks.ts +47 -0
- package/src/pipeline/type-defs/enums.ts +62 -0
- package/src/pipeline/type-defs/index.ts +12 -0
- package/src/pipeline/type-defs/packets.ts +131 -0
- package/src/pipeline/type-defs/snapshot.ts +55 -0
- package/src/pipeline/type-defs/state.ts +165 -0
- package/src/pipeline/types.ts +16 -0
- package/src/workflow/index.ts +48 -0
- package/tests/cli/commands/debug.test.ts +376 -0
- package/tests/pipeline/artifact-manager.test.ts +183 -0
- package/tests/pipeline/artifact-validators.test.ts +207 -0
- package/tests/pipeline/change-request.test.ts +180 -0
- package/tests/pipeline/check-runner.test.ts +157 -0
- package/tests/pipeline/command-resolver.test.ts +159 -0
- package/tests/pipeline/consensus-runner.test.ts +206 -0
- package/tests/pipeline/consensus-scoring.test.ts +163 -0
- package/tests/pipeline/constitution.test.ts +122 -0
- package/tests/pipeline/gate-engine.test.ts +195 -0
- package/tests/pipeline/migration.test.ts +133 -0
- package/tests/pipeline/orchestrator.test.ts +614 -0
- package/tests/pipeline/packets/builders.test.ts +347 -0
- package/tests/pipeline/repo-snapshot.test.ts +189 -0
- package/tests/pipeline/role-execution-adapter.test.ts +299 -0
- package/tests/pipeline/skill-loader.test.ts +186 -0
- package/tests/pipeline/start-env-checks.test.ts +123 -0
- package/tests/pipeline/types.test.ts +156 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../../src/pipeline/phases/architecture.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAEnF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAqB;IACzD,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACvE,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,IAAI,CAAC;QACH,0BAA0B;QAC1B,MAAM,cAAc,GAAG,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAE1D,+BAA+B;QAC/B,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QACpF,IAAI,iBAAiB,GAAG,EAAE,CAAC;QAC3B,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,iBAAiB,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QACnE,MAAM,kBAAkB,GAAG;YACzB,cAAc,CAAC,YAAY;YAC3B,EAAE;YACF,gBAAgB;YAChB,iBAAiB;YACjB,EAAE;YACF,iBAAiB;YACjB,mDAAmD;YACnD,gCAAgC;YAChC,wDAAwD;YACxD,uCAAuC;YACvC,6BAA6B;YAC7B,gBAAgB;YAChB,yBAAyB;YACzB,2BAA2B;SAC5B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACvD,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC;QAExC,iCAAiC;QACjC,MAAM,SAAS,GAAG,eAAe,CAAC,kBAAkB,CAClD,cAAc,EACd,eAAe,EACf,cAAc,CACf,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1B,kCAAkC;QAClC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QACxF,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9B,QAAQ,CAAC,kBAAkB,GAAG,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAE3E,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QACtC,OAAO,aAAa,CAAC,cAAc,EAAE,SAAS,EAAE,+BAA+B,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACrE,OAAO,aAAa,CAAC,cAAc,EAAE,8BAA8B,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AUDIT phase — holistic system verification before Production Gate.
|
|
3
|
+
* Creates structured AuditReport with AuditFindings (P2-1).
|
|
4
|
+
* v1.1: Creates Change Requests for architectural findings.
|
|
5
|
+
*/
|
|
6
|
+
import type { PhaseContext, PhaseResult } from './phase-context.js';
|
|
7
|
+
export declare function runAudit(context: PhaseContext): Promise<PhaseResult>;
|
|
8
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phases/audit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQpE,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAsG1E"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AUDIT phase — holistic system verification before Production Gate.
|
|
3
|
+
* Creates structured AuditReport with AuditFindings (P2-1).
|
|
4
|
+
* v1.1: Creates Change Requests for architectural findings.
|
|
5
|
+
*/
|
|
6
|
+
import { successResult, failureResult, triggerJournalist } from './phase-context.js';
|
|
7
|
+
import { buildAuditReport } from '../packets/audit-report-builder.js';
|
|
8
|
+
import { generateRepoSnapshot, createSnapshotArtifact } from '../repo-snapshot.js';
|
|
9
|
+
import { buildChangeRequest, formatChangeRequest, routeChangeRequest } from '../change-request.js';
|
|
10
|
+
export async function runAudit(context) {
|
|
11
|
+
const { pipeline, artifactManager, skillLoader, projectDir } = context;
|
|
12
|
+
const artifacts = [];
|
|
13
|
+
try {
|
|
14
|
+
// 1. Fresh repo snapshot
|
|
15
|
+
const snapshot = await generateRepoSnapshot(projectDir);
|
|
16
|
+
const snapshotEntry = createSnapshotArtifact(snapshot, artifactManager, 'AUDIT');
|
|
17
|
+
artifacts.push(snapshotEntry);
|
|
18
|
+
pipeline.latestRepoSnapshot = artifactManager.toArtifactRef(snapshotEntry);
|
|
19
|
+
// 2. Load auditor skill
|
|
20
|
+
const auditorSkill = skillLoader.loadSkill('AUDITOR');
|
|
21
|
+
// 3. Run audit checks via Claude
|
|
22
|
+
const { executePrompt } = await import('../../adapters/claude.js');
|
|
23
|
+
const auditPrompt = [
|
|
24
|
+
auditorSkill.systemPrompt,
|
|
25
|
+
'',
|
|
26
|
+
'## Audit Instructions',
|
|
27
|
+
'Perform a holistic system audit covering:',
|
|
28
|
+
'1. Integration audit (FE<->BE, BE<->DB)',
|
|
29
|
+
'2. Config/env audit',
|
|
30
|
+
'3. Tests/coverage audit',
|
|
31
|
+
'4. Migration audit',
|
|
32
|
+
'5. Basic security audit',
|
|
33
|
+
'6. Deployment readiness audit',
|
|
34
|
+
'',
|
|
35
|
+
'For each finding, classify severity as P0/P1/P2/P3.',
|
|
36
|
+
'Mark blocking findings that must be resolved before production.',
|
|
37
|
+
'',
|
|
38
|
+
`## Repo Snapshot`,
|
|
39
|
+
`Total files: ${snapshot.total_files}`,
|
|
40
|
+
`Languages: ${snapshot.languages_detected.join(', ')}`,
|
|
41
|
+
`Test framework: ${snapshot.test_framework ?? 'none'}`,
|
|
42
|
+
`Build tool: ${snapshot.build_tool ?? 'none'}`,
|
|
43
|
+
].join('\n');
|
|
44
|
+
const auditResult = await executePrompt(auditPrompt);
|
|
45
|
+
const auditResponse = auditResult.response;
|
|
46
|
+
// 4. Parse findings from audit response (simplified extraction)
|
|
47
|
+
const findings = parseAuditFindings(auditResponse);
|
|
48
|
+
// 5. Build structured audit report
|
|
49
|
+
const auditReport = buildAuditReport({
|
|
50
|
+
repoSnapshot: artifactManager.toArtifactRef(snapshotEntry),
|
|
51
|
+
findings,
|
|
52
|
+
});
|
|
53
|
+
// 6. Store audit report
|
|
54
|
+
const auditEntry = artifactManager.createAndStoreJson('audit_report', auditReport, 'AUDIT');
|
|
55
|
+
artifacts.push(auditEntry);
|
|
56
|
+
// Also store the raw audit text
|
|
57
|
+
const auditTextEntry = artifactManager.createAndStoreText('audit_report', auditResponse, 'AUDIT');
|
|
58
|
+
artifacts.push(auditTextEntry);
|
|
59
|
+
// 7. v1.1: Create change requests for architectural findings
|
|
60
|
+
const changeRequests = createAuditChangeRequests(findings, artifactManager, snapshotEntry);
|
|
61
|
+
for (const cr of changeRequests) {
|
|
62
|
+
const crEntry = artifactManager.createAndStoreText('change_request', formatChangeRequest(cr), 'AUDIT');
|
|
63
|
+
artifacts.push(crEntry);
|
|
64
|
+
// Register CR in pipeline state for orchestrator routing
|
|
65
|
+
if (!pipeline.pendingChangeRequests) {
|
|
66
|
+
pipeline.pendingChangeRequests = [];
|
|
67
|
+
}
|
|
68
|
+
pipeline.pendingChangeRequests.push({
|
|
69
|
+
cr_id: cr.cr_id,
|
|
70
|
+
change_type: cr.change_type,
|
|
71
|
+
target_phase: routeChangeRequest(cr),
|
|
72
|
+
status: 'proposed',
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
pipeline.artifacts.push(...artifacts);
|
|
76
|
+
// 8. Journalist trigger
|
|
77
|
+
await triggerJournalist('AUDIT', artifacts, context);
|
|
78
|
+
return successResult('AUDIT', artifacts, `Audit ${auditReport.overall_status}: ${findings.length} findings, risk score ${auditReport.system_risk_score}, ${changeRequests.length} CRs`);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
82
|
+
return failureResult('AUDIT', 'Audit failed', message);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/** Parse audit findings from LLM response (best-effort) */
|
|
86
|
+
function parseAuditFindings(response) {
|
|
87
|
+
const findings = [];
|
|
88
|
+
const lines = response.split('\n');
|
|
89
|
+
let findingCount = 0;
|
|
90
|
+
for (const line of lines) {
|
|
91
|
+
// Look for severity markers: P0, P1, P2, P3
|
|
92
|
+
const severityMatch = line.match(/\b(P[0-3])\b/);
|
|
93
|
+
if (severityMatch) {
|
|
94
|
+
findingCount++;
|
|
95
|
+
const severity = severityMatch[1];
|
|
96
|
+
findings.push({
|
|
97
|
+
id: `finding-${findingCount}`,
|
|
98
|
+
severity,
|
|
99
|
+
category: 'integration', // Default; would be refined with better parsing
|
|
100
|
+
description: line.trim(),
|
|
101
|
+
evidence: [],
|
|
102
|
+
suggested_owner: 'DISPATCHER',
|
|
103
|
+
blocking: severity === 'P0' || severity === 'P1',
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return findings;
|
|
108
|
+
}
|
|
109
|
+
/** Create change requests for high-severity audit findings (v1.1) */
|
|
110
|
+
function createAuditChangeRequests(findings, artifactManager, snapshotEntry) {
|
|
111
|
+
const changeRequests = [];
|
|
112
|
+
// Create CRs for blocking findings in integration/schema categories
|
|
113
|
+
const architecturalFindings = findings.filter((f) => f.blocking && (f.category === 'integration' || f.category === 'schema'));
|
|
114
|
+
if (architecturalFindings.length > 0) {
|
|
115
|
+
const cr = buildChangeRequest({
|
|
116
|
+
originPhase: 'AUDIT',
|
|
117
|
+
requestedBy: 'AUDITOR',
|
|
118
|
+
changeType: 'architecture',
|
|
119
|
+
description: `${architecturalFindings.length} blocking architectural findings: ${architecturalFindings.map((f) => f.description.slice(0, 80)).join('; ')}`,
|
|
120
|
+
justification: 'Blocking audit findings require architectural review before production',
|
|
121
|
+
affectedArtifacts: [artifactManager.toArtifactRef(snapshotEntry)],
|
|
122
|
+
affectedPhases: ['CONSENSUS_ARCHITECTURE', 'IMPLEMENTATION'],
|
|
123
|
+
riskLevel: architecturalFindings.some((f) => f.severity === 'P0') ? 'high' : 'medium',
|
|
124
|
+
});
|
|
125
|
+
changeRequests.push(cr);
|
|
126
|
+
}
|
|
127
|
+
// Create CRs for security findings
|
|
128
|
+
const securityFindings = findings.filter((f) => f.blocking && f.category === 'security');
|
|
129
|
+
if (securityFindings.length > 0) {
|
|
130
|
+
const cr = buildChangeRequest({
|
|
131
|
+
originPhase: 'AUDIT',
|
|
132
|
+
requestedBy: 'AUDITOR',
|
|
133
|
+
changeType: 'requirement',
|
|
134
|
+
description: `${securityFindings.length} blocking security findings require review`,
|
|
135
|
+
justification: 'Security issues must be resolved before production deployment',
|
|
136
|
+
affectedArtifacts: [artifactManager.toArtifactRef(snapshotEntry)],
|
|
137
|
+
affectedPhases: ['CONSENSUS_MASTER_PLAN', 'IMPLEMENTATION'],
|
|
138
|
+
riskLevel: 'high',
|
|
139
|
+
});
|
|
140
|
+
changeRequests.push(cr);
|
|
141
|
+
}
|
|
142
|
+
return changeRequests;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/pipeline/phases/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CONSENSUS_ARCHITECTURE phase — validate architecture is feasible,
|
|
3
|
+
* consistent, and complete. Same pattern as consensus-master-plan.
|
|
4
|
+
*/
|
|
5
|
+
import type { PhaseContext, PhaseResult } from './phase-context.js';
|
|
6
|
+
export declare function runConsensusArchitecture(context: PhaseContext): Promise<PhaseResult>;
|
|
7
|
+
//# sourceMappingURL=consensus-architecture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consensus-architecture.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phases/consensus-architecture.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAqBpE,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA6E1F"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CONSENSUS_ARCHITECTURE phase — validate architecture is feasible,
|
|
3
|
+
* consistent, and complete. Same pattern as consensus-master-plan.
|
|
4
|
+
*/
|
|
5
|
+
import { successResult, failureResult, triggerJournalist } from './phase-context.js';
|
|
6
|
+
import { buildPlanPacket } from '../packets/plan-packet-builder.js';
|
|
7
|
+
import { generateRepoSnapshot, createSnapshotArtifact } from '../repo-snapshot.js';
|
|
8
|
+
/** Get constitution artifact ref from pipeline state, or fallback */
|
|
9
|
+
function getConstitutionRef(pipeline) {
|
|
10
|
+
const constitutionArtifact = pipeline.artifacts.find((a) => a.type === 'constitution');
|
|
11
|
+
if (constitutionArtifact) {
|
|
12
|
+
return {
|
|
13
|
+
artifact_id: constitutionArtifact.id,
|
|
14
|
+
path: constitutionArtifact.path,
|
|
15
|
+
sha256: constitutionArtifact.sha256,
|
|
16
|
+
version: constitutionArtifact.version,
|
|
17
|
+
type: 'constitution',
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return { artifact_id: 'constitution', path: 'skills/POPEYE_CONSTITUTION.md', sha256: '', version: 1, type: 'constitution' };
|
|
21
|
+
}
|
|
22
|
+
export async function runConsensusArchitecture(context) {
|
|
23
|
+
const { pipeline, artifactManager, gateEngine, consensusRunner, projectDir } = context;
|
|
24
|
+
const artifacts = [];
|
|
25
|
+
try {
|
|
26
|
+
// 1. Fresh repo snapshot
|
|
27
|
+
const snapshot = await generateRepoSnapshot(projectDir);
|
|
28
|
+
const snapshotEntry = createSnapshotArtifact(snapshot, artifactManager, 'CONSENSUS_ARCHITECTURE');
|
|
29
|
+
artifacts.push(snapshotEntry);
|
|
30
|
+
pipeline.latestRepoSnapshot = artifactManager.toArtifactRef(snapshotEntry);
|
|
31
|
+
// 2. Find architecture artifact
|
|
32
|
+
const archArtifact = pipeline.artifacts.find((a) => a.type === 'architecture');
|
|
33
|
+
if (!archArtifact) {
|
|
34
|
+
return failureResult('CONSENSUS_ARCHITECTURE', 'No architecture artifact found');
|
|
35
|
+
}
|
|
36
|
+
const masterPlanArtifact = pipeline.artifacts.find((a) => a.type === 'master_plan');
|
|
37
|
+
// 3. Build plan packet
|
|
38
|
+
const planPacket = buildPlanPacket({
|
|
39
|
+
phase: 'CONSENSUS_ARCHITECTURE',
|
|
40
|
+
submittedBy: 'ARCHITECT',
|
|
41
|
+
masterPlanRef: masterPlanArtifact
|
|
42
|
+
? artifactManager.toArtifactRef(masterPlanArtifact)
|
|
43
|
+
: { artifact_id: 'none', path: '', sha256: '', version: 1, type: 'master_plan' },
|
|
44
|
+
constitutionRef: getConstitutionRef(pipeline),
|
|
45
|
+
repoSnapshotRef: artifactManager.toArtifactRef(snapshotEntry),
|
|
46
|
+
proposedArtifacts: [artifactManager.toArtifactRef(archArtifact)],
|
|
47
|
+
acceptanceCriteria: [
|
|
48
|
+
'Contracts explicit enough for FE/BE to build without guessing',
|
|
49
|
+
'Env vars enumerated',
|
|
50
|
+
'Integration points enumerated',
|
|
51
|
+
'No contradictory contracts',
|
|
52
|
+
],
|
|
53
|
+
dependencies: [],
|
|
54
|
+
constraints: [],
|
|
55
|
+
});
|
|
56
|
+
// 4. Run consensus
|
|
57
|
+
const gateDef = gateEngine.getGateDefinition('CONSENSUS_ARCHITECTURE');
|
|
58
|
+
const consensusPacket = await consensusRunner.runStructuredConsensus(planPacket, gateDef);
|
|
59
|
+
// 5. Store consensus artifact
|
|
60
|
+
const consensusEntry = artifactManager.createAndStoreJson('consensus', consensusPacket, 'CONSENSUS_ARCHITECTURE');
|
|
61
|
+
artifacts.push(consensusEntry);
|
|
62
|
+
pipeline.artifacts.push(...artifacts);
|
|
63
|
+
// 5b. Store consensus score in gateResults for parseConsensusScore()
|
|
64
|
+
pipeline.gateResults['CONSENSUS_ARCHITECTURE'] = {
|
|
65
|
+
phase: 'CONSENSUS_ARCHITECTURE',
|
|
66
|
+
pass: consensusPacket.final_status === 'APPROVED' || consensusPacket.final_status === 'ARBITRATED',
|
|
67
|
+
score: consensusPacket.consensus_result.weighted_score,
|
|
68
|
+
blockers: [],
|
|
69
|
+
missingArtifacts: [],
|
|
70
|
+
failedChecks: [],
|
|
71
|
+
consensusScore: consensusPacket.consensus_result.score,
|
|
72
|
+
timestamp: new Date().toISOString(),
|
|
73
|
+
};
|
|
74
|
+
// 6. Journalist trigger
|
|
75
|
+
await triggerJournalist('CONSENSUS_ARCHITECTURE', artifacts, context);
|
|
76
|
+
const approved = consensusPacket.final_status === 'APPROVED' || consensusPacket.final_status === 'ARBITRATED';
|
|
77
|
+
return successResult('CONSENSUS_ARCHITECTURE', artifacts, approved ? 'Architecture consensus APPROVED' : 'Architecture consensus REJECTED');
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
81
|
+
return failureResult('CONSENSUS_ARCHITECTURE', 'Architecture consensus failed', message);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=consensus-architecture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consensus-architecture.js","sourceRoot":"","sources":["../../../src/pipeline/phases/consensus-architecture.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAGnF,qEAAqE;AACrE,SAAS,kBAAkB,CAAC,QAAuB;IACjD,MAAM,oBAAoB,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;IACvF,IAAI,oBAAoB,EAAE,CAAC;QACzB,OAAO;YACL,WAAW,EAAE,oBAAoB,CAAC,EAAE;YACpC,IAAI,EAAE,oBAAoB,CAAC,IAAI;YAC/B,MAAM,EAAE,oBAAoB,CAAC,MAAM;YACnC,OAAO,EAAE,oBAAoB,CAAC,OAAO;YACrC,IAAI,EAAE,cAAc;SACrB,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,+BAA+B,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;AAC9H,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAAqB;IAClE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACvF,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,IAAI,CAAC;QACH,yBAAyB;QACzB,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,EAAE,eAAe,EAAE,wBAAwB,CAAC,CAAC;QAClG,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9B,QAAQ,CAAC,kBAAkB,GAAG,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAE3E,gCAAgC;QAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAC/E,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,aAAa,CAAC,wBAAwB,EAAE,gCAAgC,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QAEpF,uBAAuB;QACvB,MAAM,UAAU,GAAG,eAAe,CAAC;YACjC,KAAK,EAAE,wBAAwB;YAC/B,WAAW,EAAE,WAAW;YACxB,aAAa,EAAE,kBAAkB;gBAC/B,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,kBAAkB,CAAC;gBACnD,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE;YAClF,eAAe,EAAE,kBAAkB,CAAC,QAAQ,CAAC;YAC7C,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC;YAC7D,iBAAiB,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAChE,kBAAkB,EAAE;gBAClB,+DAA+D;gBAC/D,qBAAqB;gBACrB,+BAA+B;gBAC/B,4BAA4B;aAC7B;YACD,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,EAAE;SAChB,CAAC,CAAC;QAEH,mBAAmB;QACnB,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC;QACvE,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE1F,8BAA8B;QAC9B,MAAM,cAAc,GAAG,eAAe,CAAC,kBAAkB,CACvD,WAAW,EACX,eAAe,EACf,wBAAwB,CACzB,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/B,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAEtC,qEAAqE;QACrE,QAAQ,CAAC,WAAW,CAAC,wBAAwB,CAAC,GAAG;YAC/C,KAAK,EAAE,wBAAwB;YAC/B,IAAI,EAAE,eAAe,CAAC,YAAY,KAAK,UAAU,IAAI,eAAe,CAAC,YAAY,KAAK,YAAY;YAClG,KAAK,EAAE,eAAe,CAAC,gBAAgB,CAAC,cAAc;YACtD,QAAQ,EAAE,EAAE;YACZ,gBAAgB,EAAE,EAAE;YACpB,YAAY,EAAE,EAAE;YAChB,cAAc,EAAE,eAAe,CAAC,gBAAgB,CAAC,KAAK;YACtD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,wBAAwB;QACxB,MAAM,iBAAiB,CAAC,wBAAwB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,KAAK,UAAU,IAAI,eAAe,CAAC,YAAY,KAAK,YAAY,CAAC;QAC9G,OAAO,aAAa,CAClB,wBAAwB,EACxB,SAAS,EACT,QAAQ,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,iCAAiC,CACjF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACrE,OAAO,aAAa,CAAC,wBAAwB,EAAE,+BAA+B,EAAE,OAAO,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CONSENSUS_MASTER_PLAN phase — multi-LLM validation of Master Plan.
|
|
3
|
+
* Uses independent review mode by default (P1-D).
|
|
4
|
+
*/
|
|
5
|
+
import type { PhaseContext, PhaseResult } from './phase-context.js';
|
|
6
|
+
export declare function runConsensusMasterPlan(context: PhaseContext): Promise<PhaseResult>;
|
|
7
|
+
//# sourceMappingURL=consensus-master-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consensus-master-plan.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phases/consensus-master-plan.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAqBpE,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAyExF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CONSENSUS_MASTER_PLAN phase — multi-LLM validation of Master Plan.
|
|
3
|
+
* Uses independent review mode by default (P1-D).
|
|
4
|
+
*/
|
|
5
|
+
import { successResult, failureResult, triggerJournalist } from './phase-context.js';
|
|
6
|
+
import { buildPlanPacket } from '../packets/plan-packet-builder.js';
|
|
7
|
+
import { generateRepoSnapshot, createSnapshotArtifact } from '../repo-snapshot.js';
|
|
8
|
+
/** Get constitution artifact ref from pipeline state, or fallback */
|
|
9
|
+
function getConstitutionRef(pipeline) {
|
|
10
|
+
const constitutionArtifact = pipeline.artifacts.find((a) => a.type === 'constitution');
|
|
11
|
+
if (constitutionArtifact) {
|
|
12
|
+
return {
|
|
13
|
+
artifact_id: constitutionArtifact.id,
|
|
14
|
+
path: constitutionArtifact.path,
|
|
15
|
+
sha256: constitutionArtifact.sha256,
|
|
16
|
+
version: constitutionArtifact.version,
|
|
17
|
+
type: 'constitution',
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return { artifact_id: 'constitution', path: 'skills/POPEYE_CONSTITUTION.md', sha256: '', version: 1, type: 'constitution' };
|
|
21
|
+
}
|
|
22
|
+
export async function runConsensusMasterPlan(context) {
|
|
23
|
+
const { pipeline, artifactManager, gateEngine, consensusRunner, projectDir } = context;
|
|
24
|
+
const artifacts = [];
|
|
25
|
+
try {
|
|
26
|
+
// 1. Fresh repo snapshot for consensus
|
|
27
|
+
const snapshot = await generateRepoSnapshot(projectDir);
|
|
28
|
+
const snapshotEntry = createSnapshotArtifact(snapshot, artifactManager, 'CONSENSUS_MASTER_PLAN');
|
|
29
|
+
artifacts.push(snapshotEntry);
|
|
30
|
+
pipeline.latestRepoSnapshot = artifactManager.toArtifactRef(snapshotEntry);
|
|
31
|
+
// 2. Find master plan artifact
|
|
32
|
+
const masterPlanArtifact = pipeline.artifacts.find((a) => a.type === 'master_plan');
|
|
33
|
+
if (!masterPlanArtifact) {
|
|
34
|
+
return failureResult('CONSENSUS_MASTER_PLAN', 'No master plan artifact found');
|
|
35
|
+
}
|
|
36
|
+
// 3. Build plan packet
|
|
37
|
+
const planPacket = buildPlanPacket({
|
|
38
|
+
phase: 'CONSENSUS_MASTER_PLAN',
|
|
39
|
+
submittedBy: 'DISPATCHER',
|
|
40
|
+
masterPlanRef: artifactManager.toArtifactRef(masterPlanArtifact),
|
|
41
|
+
constitutionRef: getConstitutionRef(pipeline),
|
|
42
|
+
repoSnapshotRef: artifactManager.toArtifactRef(snapshotEntry),
|
|
43
|
+
proposedArtifacts: [],
|
|
44
|
+
acceptanceCriteria: [
|
|
45
|
+
'Master plan is deterministic (no vague features)',
|
|
46
|
+
'Assumptions are explicit',
|
|
47
|
+
'Out-of-scope is explicit',
|
|
48
|
+
'Success criteria defined',
|
|
49
|
+
],
|
|
50
|
+
dependencies: [],
|
|
51
|
+
constraints: [],
|
|
52
|
+
});
|
|
53
|
+
// 4. Run structured consensus
|
|
54
|
+
const gateDef = gateEngine.getGateDefinition('CONSENSUS_MASTER_PLAN');
|
|
55
|
+
const consensusPacket = await consensusRunner.runStructuredConsensus(planPacket, gateDef);
|
|
56
|
+
// 5. Store consensus artifact
|
|
57
|
+
const consensusEntry = artifactManager.createAndStoreJson('consensus', consensusPacket, 'CONSENSUS_MASTER_PLAN');
|
|
58
|
+
artifacts.push(consensusEntry);
|
|
59
|
+
pipeline.artifacts.push(...artifacts);
|
|
60
|
+
// 5b. Store consensus score in gateResults for parseConsensusScore()
|
|
61
|
+
pipeline.gateResults['CONSENSUS_MASTER_PLAN'] = {
|
|
62
|
+
phase: 'CONSENSUS_MASTER_PLAN',
|
|
63
|
+
pass: consensusPacket.final_status === 'APPROVED' || consensusPacket.final_status === 'ARBITRATED',
|
|
64
|
+
score: consensusPacket.consensus_result.weighted_score,
|
|
65
|
+
blockers: [],
|
|
66
|
+
missingArtifacts: [],
|
|
67
|
+
failedChecks: [],
|
|
68
|
+
consensusScore: consensusPacket.consensus_result.score,
|
|
69
|
+
timestamp: new Date().toISOString(),
|
|
70
|
+
};
|
|
71
|
+
// 6. Trigger journalist (P1-F)
|
|
72
|
+
await triggerJournalist('CONSENSUS_MASTER_PLAN', artifacts, context);
|
|
73
|
+
const approved = consensusPacket.final_status === 'APPROVED' || consensusPacket.final_status === 'ARBITRATED';
|
|
74
|
+
return successResult('CONSENSUS_MASTER_PLAN', artifacts, approved ? 'Master Plan consensus APPROVED' : 'Master Plan consensus REJECTED');
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
78
|
+
return failureResult('CONSENSUS_MASTER_PLAN', 'Consensus failed', message);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=consensus-master-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consensus-master-plan.js","sourceRoot":"","sources":["../../../src/pipeline/phases/consensus-master-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CONSENSUS_ROLE_PLANS phase — validate each role plan.
|
|
3
|
+
* Checks dependency satisfaction (FE->API, BE->DB, QA->features).
|
|
4
|
+
*/
|
|
5
|
+
import type { PhaseContext, PhaseResult } from './phase-context.js';
|
|
6
|
+
export declare function runConsensusRolePlans(context: PhaseContext): Promise<PhaseResult>;
|
|
7
|
+
//# sourceMappingURL=consensus-role-plans.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consensus-role-plans.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phases/consensus-role-plans.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAqBpE,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA8EvF"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CONSENSUS_ROLE_PLANS phase — validate each role plan.
|
|
3
|
+
* Checks dependency satisfaction (FE->API, BE->DB, QA->features).
|
|
4
|
+
*/
|
|
5
|
+
import { successResult, failureResult, triggerJournalist } from './phase-context.js';
|
|
6
|
+
import { buildPlanPacket } from '../packets/plan-packet-builder.js';
|
|
7
|
+
import { generateRepoSnapshot, createSnapshotArtifact } from '../repo-snapshot.js';
|
|
8
|
+
/** Get constitution artifact ref from pipeline state, or fallback */
|
|
9
|
+
function getConstitutionRef(pipeline) {
|
|
10
|
+
const constitutionArtifact = pipeline.artifacts.find((a) => a.type === 'constitution');
|
|
11
|
+
if (constitutionArtifact) {
|
|
12
|
+
return {
|
|
13
|
+
artifact_id: constitutionArtifact.id,
|
|
14
|
+
path: constitutionArtifact.path,
|
|
15
|
+
sha256: constitutionArtifact.sha256,
|
|
16
|
+
version: constitutionArtifact.version,
|
|
17
|
+
type: 'constitution',
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return { artifact_id: 'constitution', path: 'skills/POPEYE_CONSTITUTION.md', sha256: '', version: 1, type: 'constitution' };
|
|
21
|
+
}
|
|
22
|
+
export async function runConsensusRolePlans(context) {
|
|
23
|
+
const { pipeline, artifactManager, gateEngine, consensusRunner, projectDir } = context;
|
|
24
|
+
const artifacts = [];
|
|
25
|
+
try {
|
|
26
|
+
// 1. Fresh repo snapshot
|
|
27
|
+
const snapshot = await generateRepoSnapshot(projectDir);
|
|
28
|
+
const snapshotEntry = createSnapshotArtifact(snapshot, artifactManager, 'CONSENSUS_ROLE_PLANS');
|
|
29
|
+
artifacts.push(snapshotEntry);
|
|
30
|
+
pipeline.latestRepoSnapshot = artifactManager.toArtifactRef(snapshotEntry);
|
|
31
|
+
// 2. Find all role plan artifacts
|
|
32
|
+
const rolePlanArtifacts = pipeline.artifacts.filter((a) => a.type === 'role_plan');
|
|
33
|
+
if (rolePlanArtifacts.length === 0) {
|
|
34
|
+
return failureResult('CONSENSUS_ROLE_PLANS', 'No role plan artifacts found');
|
|
35
|
+
}
|
|
36
|
+
const masterPlanArtifact = pipeline.artifacts.find((a) => a.type === 'master_plan');
|
|
37
|
+
// 3. Build plan packet referencing all role plans
|
|
38
|
+
const planPacket = buildPlanPacket({
|
|
39
|
+
phase: 'CONSENSUS_ROLE_PLANS',
|
|
40
|
+
submittedBy: 'DISPATCHER',
|
|
41
|
+
masterPlanRef: masterPlanArtifact
|
|
42
|
+
? artifactManager.toArtifactRef(masterPlanArtifact)
|
|
43
|
+
: { artifact_id: 'none', path: '', sha256: '', version: 1, type: 'master_plan' },
|
|
44
|
+
constitutionRef: getConstitutionRef(pipeline),
|
|
45
|
+
repoSnapshotRef: artifactManager.toArtifactRef(snapshotEntry),
|
|
46
|
+
proposedArtifacts: rolePlanArtifacts.map((a) => artifactManager.toArtifactRef(a)),
|
|
47
|
+
acceptanceCriteria: [
|
|
48
|
+
'All required role plans present',
|
|
49
|
+
'Each plan includes deterministic file-level outputs',
|
|
50
|
+
'FE plan references API contracts',
|
|
51
|
+
'BE plan references DB schema',
|
|
52
|
+
'QA plan lists executable tests',
|
|
53
|
+
],
|
|
54
|
+
dependencies: [],
|
|
55
|
+
constraints: [],
|
|
56
|
+
});
|
|
57
|
+
// 4. Run consensus
|
|
58
|
+
const gateDef = gateEngine.getGateDefinition('CONSENSUS_ROLE_PLANS');
|
|
59
|
+
const consensusPacket = await consensusRunner.runStructuredConsensus(planPacket, gateDef);
|
|
60
|
+
// 5. Store consensus artifact
|
|
61
|
+
const consensusEntry = artifactManager.createAndStoreJson('consensus', consensusPacket, 'CONSENSUS_ROLE_PLANS');
|
|
62
|
+
artifacts.push(consensusEntry);
|
|
63
|
+
pipeline.artifacts.push(...artifacts);
|
|
64
|
+
// 5b. Store consensus score in gateResults for parseConsensusScore()
|
|
65
|
+
pipeline.gateResults['CONSENSUS_ROLE_PLANS'] = {
|
|
66
|
+
phase: 'CONSENSUS_ROLE_PLANS',
|
|
67
|
+
pass: consensusPacket.final_status === 'APPROVED' || consensusPacket.final_status === 'ARBITRATED',
|
|
68
|
+
score: consensusPacket.consensus_result.weighted_score,
|
|
69
|
+
blockers: [],
|
|
70
|
+
missingArtifacts: [],
|
|
71
|
+
failedChecks: [],
|
|
72
|
+
consensusScore: consensusPacket.consensus_result.score,
|
|
73
|
+
timestamp: new Date().toISOString(),
|
|
74
|
+
};
|
|
75
|
+
// 6. Journalist trigger
|
|
76
|
+
await triggerJournalist('CONSENSUS_ROLE_PLANS', artifacts, context);
|
|
77
|
+
const approved = consensusPacket.final_status === 'APPROVED' || consensusPacket.final_status === 'ARBITRATED';
|
|
78
|
+
return successResult('CONSENSUS_ROLE_PLANS', artifacts, approved ? 'Role plans consensus APPROVED' : 'Role plans consensus REJECTED');
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
82
|
+
return failureResult('CONSENSUS_ROLE_PLANS', 'Role plans consensus failed', message);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=consensus-role-plans.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consensus-role-plans.js","sourceRoot":"","sources":["../../../src/pipeline/phases/consensus-role-plans.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DONE phase — finalize documentation + release packaging.
|
|
3
|
+
* RELEASE_MANAGER creates release/deployment/rollback artifacts.
|
|
4
|
+
*/
|
|
5
|
+
import type { PhaseContext, PhaseResult } from './phase-context.js';
|
|
6
|
+
export declare function runDone(context: PhaseContext): Promise<PhaseResult>;
|
|
7
|
+
//# sourceMappingURL=done.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"done.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phases/done.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGpE,wBAAsB,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA2DzE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DONE phase — finalize documentation + release packaging.
|
|
3
|
+
* RELEASE_MANAGER creates release/deployment/rollback artifacts.
|
|
4
|
+
*/
|
|
5
|
+
import { successResult, failureResult } from './phase-context.js';
|
|
6
|
+
export async function runDone(context) {
|
|
7
|
+
const { pipeline, artifactManager, skillLoader } = context;
|
|
8
|
+
const artifacts = [];
|
|
9
|
+
try {
|
|
10
|
+
// 1. Load release manager skill
|
|
11
|
+
const rmSkill = skillLoader.loadSkill('RELEASE_MANAGER');
|
|
12
|
+
// 2. Generate release notes
|
|
13
|
+
const { executePrompt } = await import('../../adapters/claude.js');
|
|
14
|
+
const releasePrompt = [
|
|
15
|
+
rmSkill.systemPrompt,
|
|
16
|
+
'',
|
|
17
|
+
'## Instructions',
|
|
18
|
+
'Generate release notes, deployment instructions, and rollback plan.',
|
|
19
|
+
'Base this on the artifacts produced during the pipeline.',
|
|
20
|
+
'',
|
|
21
|
+
'## Artifacts Summary',
|
|
22
|
+
...pipeline.artifacts.map((a) => `- [${a.type}] v${a.version}: ${a.path}`),
|
|
23
|
+
].join('\n');
|
|
24
|
+
const releaseResult = await executePrompt(releasePrompt);
|
|
25
|
+
const releaseResponse = releaseResult.response;
|
|
26
|
+
// 3. Create release notes artifact
|
|
27
|
+
const releaseEntry = artifactManager.createAndStoreText('release_notes', releaseResponse, 'DONE');
|
|
28
|
+
artifacts.push(releaseEntry);
|
|
29
|
+
// 4. Create deployment instructions artifact
|
|
30
|
+
const deployEntry = artifactManager.createAndStoreText('deployment', `# Deployment Instructions\n\n${releaseResponse.includes('deployment') ? 'See release notes.' : 'Standard deployment procedure.'}`, 'DONE');
|
|
31
|
+
artifacts.push(deployEntry);
|
|
32
|
+
// 5. Create rollback plan artifact
|
|
33
|
+
const rollbackEntry = artifactManager.createAndStoreText('rollback', `# Rollback Plan\n\nRevert to previous version if issues detected post-deploy.`, 'DONE');
|
|
34
|
+
artifacts.push(rollbackEntry);
|
|
35
|
+
pipeline.artifacts.push(...artifacts);
|
|
36
|
+
// 6. Final INDEX.md update
|
|
37
|
+
artifactManager.updateIndex(pipeline.artifacts);
|
|
38
|
+
return successResult('DONE', artifacts, 'Pipeline complete. Release artifacts created.');
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
42
|
+
return failureResult('DONE', 'Release packaging failed', message);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=done.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"done.js","sourceRoot":"","sources":["../../../src/pipeline/phases/done.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAqB;IACjD,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAC3D,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAEzD,4BAA4B;QAC5B,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QAEnE,MAAM,aAAa,GAAG;YACpB,OAAO,CAAC,YAAY;YACpB,EAAE;YACF,iBAAiB;YACjB,qEAAqE;YACrE,0DAA0D;YAC1D,EAAE;YACF,sBAAsB;YACtB,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;SAC3E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,CAAC;QAE/C,mCAAmC;QACnC,MAAM,YAAY,GAAG,eAAe,CAAC,kBAAkB,CACrD,eAAe,EACf,eAAe,EACf,MAAM,CACP,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE7B,6CAA6C;QAC7C,MAAM,WAAW,GAAG,eAAe,CAAC,kBAAkB,CACpD,YAAY,EACZ,gCAAgC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gCAAgC,EAAE,EAClI,MAAM,CACP,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5B,mCAAmC;QACnC,MAAM,aAAa,GAAG,eAAe,CAAC,kBAAkB,CACtD,UAAU,EACV,+EAA+E,EAC/E,MAAM,CACP,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE9B,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAEtC,2BAA2B;QAC3B,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEhD,OAAO,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,+CAA+C,CAAC,CAAC;IAC3F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACrE,OAAO,aAAa,CAAC,MAAM,EAAE,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IMPLEMENTATION phase — build the system according to approved plans.
|
|
3
|
+
* Reuses runExecutionMode() from existing workflow.
|
|
4
|
+
* v1.1: Injects role-specific execution contexts via role-execution-adapter.
|
|
5
|
+
*/
|
|
6
|
+
import type { PhaseContext, PhaseResult } from './phase-context.js';
|
|
7
|
+
export declare function runImplementation(context: PhaseContext): Promise<PhaseResult>;
|
|
8
|
+
//# sourceMappingURL=implementation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"implementation.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phases/implementation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKpE,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAoCnF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IMPLEMENTATION phase — build the system according to approved plans.
|
|
3
|
+
* Reuses runExecutionMode() from existing workflow.
|
|
4
|
+
* v1.1: Injects role-specific execution contexts via role-execution-adapter.
|
|
5
|
+
*/
|
|
6
|
+
import { successResult, failureResult } from './phase-context.js';
|
|
7
|
+
import { generateRepoSnapshot, createSnapshotArtifact } from '../repo-snapshot.js';
|
|
8
|
+
import { buildAllRoleContexts } from '../role-execution-adapter.js';
|
|
9
|
+
export async function runImplementation(context) {
|
|
10
|
+
const { pipeline, artifactManager, projectDir, skillLoader } = context;
|
|
11
|
+
const artifacts = [];
|
|
12
|
+
try {
|
|
13
|
+
// v1.1: Build role contexts for execution
|
|
14
|
+
const roleContexts = buildAllRoleContexts(pipeline, skillLoader, projectDir);
|
|
15
|
+
// Build combined role context for system prompt injection
|
|
16
|
+
let combinedRolePrompt = '';
|
|
17
|
+
if (roleContexts.size > 0) {
|
|
18
|
+
const contextEntries = Array.from(roleContexts.entries());
|
|
19
|
+
combinedRolePrompt = contextEntries
|
|
20
|
+
.map(([role, ctx]) => `## ${role}\nScope: ${ctx.taskScope.slice(0, 500)}`)
|
|
21
|
+
.join('\n\n');
|
|
22
|
+
}
|
|
23
|
+
// Run existing execution mode with optional role context
|
|
24
|
+
const { runExecutionMode } = await import('../../workflow/execution-mode.js');
|
|
25
|
+
await runExecutionMode({
|
|
26
|
+
projectDir,
|
|
27
|
+
...(combinedRolePrompt ? { systemPrompt: combinedRolePrompt } : {}),
|
|
28
|
+
});
|
|
29
|
+
// Generate post-implementation repo snapshot
|
|
30
|
+
const snapshot = await generateRepoSnapshot(projectDir);
|
|
31
|
+
const snapshotEntry = createSnapshotArtifact(snapshot, artifactManager, 'IMPLEMENTATION');
|
|
32
|
+
artifacts.push(snapshotEntry);
|
|
33
|
+
pipeline.latestRepoSnapshot = artifactManager.toArtifactRef(snapshotEntry);
|
|
34
|
+
pipeline.artifacts.push(...artifacts);
|
|
35
|
+
return successResult('IMPLEMENTATION', artifacts, `Implementation complete. ${roleContexts.size} roles active.`);
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
39
|
+
return failureResult('IMPLEMENTATION', 'Implementation failed', message);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=implementation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"implementation.js","sourceRoot":"","sources":["../../../src/pipeline/phases/implementation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAqB;IAC3D,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IACvE,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,YAAY,GAAG,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAE7E,0DAA0D;QAC1D,IAAI,kBAAkB,GAAG,EAAE,CAAC;QAC5B,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,kBAAkB,GAAG,cAAc;iBAChC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,YAAY,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;iBACzE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC;QAED,yDAAyD;QACzD,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;QAC9E,MAAM,gBAAgB,CAAC;YACrB,UAAU;YACV,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpE,CAAC,CAAC;QAEH,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAC1F,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9B,QAAQ,CAAC,kBAAkB,GAAG,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAE3E,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QACtC,OAAO,aAAa,CAAC,gBAAgB,EAAE,SAAS,EAAE,4BAA4B,YAAY,CAAC,IAAI,gBAAgB,CAAC,CAAC;IACnH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACrE,OAAO,aAAa,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC"}
|