popeye-cli 1.10.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +114 -0
- package/CONTRIBUTING.md +38 -3
- package/README.md +104 -18
- package/dist/adapters/gemini.js +3 -3
- package/dist/adapters/openai.js +2 -2
- package/dist/adapters/openai.js.map +1 -1
- package/dist/auth/gemini.js +1 -1
- package/dist/cli/commands/create.d.ts.map +1 -1
- package/dist/cli/commands/create.js +11 -5
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/resume.d.ts.map +1 -1
- package/dist/cli/commands/resume.js +9 -1
- package/dist/cli/commands/resume.js.map +1 -1
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +29 -3
- package/dist/cli/interactive.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +7 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +1 -7
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/popeye-md.d.ts +32 -0
- package/dist/config/popeye-md.d.ts.map +1 -0
- package/dist/config/popeye-md.js +111 -0
- package/dist/config/popeye-md.js.map +1 -0
- package/dist/config/schema.d.ts +3 -21
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +21 -8
- package/dist/config/schema.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/bridges/review-bridge.d.ts +70 -0
- package/dist/pipeline/bridges/review-bridge.d.ts.map +1 -0
- package/dist/pipeline/bridges/review-bridge.js +266 -0
- package/dist/pipeline/bridges/review-bridge.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 +30 -0
- package/dist/pipeline/orchestrator.d.ts.map +1 -0
- package/dist/pipeline/orchestrator.js +242 -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 +45 -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 +49 -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 +93 -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 +207 -0
- package/dist/pipeline/type-defs/artifacts.d.ts.map +1 -0
- package/dist/pipeline/type-defs/artifacts.js +67 -0
- package/dist/pipeline/type-defs/artifacts.js.map +1 -0
- package/dist/pipeline/type-defs/audit.d.ts +259 -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 +82 -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 +821 -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 +455 -0
- package/dist/pipeline/type-defs/state.d.ts.map +1 -0
- package/dist/pipeline/type-defs/state.js +90 -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/types/consensus.d.ts +5 -1
- package/dist/types/consensus.d.ts.map +1 -1
- package/dist/types/consensus.js +15 -4
- package/dist/types/consensus.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/project.d.ts +1 -1
- package/dist/types/project.d.ts.map +1 -1
- package/dist/types/project.js +39 -10
- package/dist/types/project.js.map +1 -1
- package/dist/types/workflow.d.ts +1 -7
- package/dist/types/workflow.d.ts.map +1 -1
- package/dist/types/workflow.js +1 -1
- package/dist/types/workflow.js.map +1 -1
- package/dist/upgrade/handlers.js +5 -5
- package/dist/upgrade/handlers.js.map +1 -1
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +52 -0
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/website-strategy.js +1 -1
- package/dist/workflow/website-strategy.js.map +1 -1
- package/package.json +1 -1
- package/skills/PHASE_GATE_ENGINE_SPEC.md +113 -20
- package/skills/POPEYE_FULL_AUTONOMY_PIPELINE.md +66 -13
- package/src/adapters/gemini.ts +3 -3
- package/src/adapters/openai.ts +2 -2
- package/src/auth/gemini.ts +1 -1
- package/src/cli/commands/create.ts +12 -6
- package/src/cli/commands/resume.ts +9 -1
- package/src/cli/interactive.ts +32 -3
- package/src/config/defaults.ts +7 -2
- package/src/config/popeye-md.ts +139 -0
- package/src/config/schema.ts +21 -8
- package/src/pipeline/artifact-manager.ts +339 -0
- package/src/pipeline/artifact-validators.ts +224 -0
- package/src/pipeline/bridges/review-bridge.ts +371 -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 +322 -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 +52 -0
- package/src/pipeline/phases/index.ts +21 -0
- package/src/pipeline/phases/intake.ts +68 -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 +120 -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 +82 -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 +167 -0
- package/src/pipeline/types.ts +16 -0
- package/src/types/consensus.ts +16 -4
- package/src/types/index.ts +1 -0
- package/src/types/project.ts +39 -10
- package/src/types/workflow.ts +1 -1
- package/src/upgrade/handlers.ts +5 -5
- package/src/workflow/index.ts +52 -0
- package/src/workflow/website-strategy.ts +1 -1
- package/tests/cli/model-command.test.ts +19 -9
- package/tests/config/config.test.ts +3 -3
- package/tests/config/popeye-md.test.ts +168 -0
- package/tests/pipeline/artifact-manager.test.ts +183 -0
- package/tests/pipeline/artifact-validators.test.ts +207 -0
- package/tests/pipeline/bridges/review-bridge.test.ts +243 -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/session-guidance.test.ts +205 -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
- package/tests/types/consensus.test.ts +1 -1
- package/tests/workflow/pipeline-bootstrap.test.ts +162 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Review Bridge — connects /review (rich audit-mode scanner) to the pipeline
|
|
3
|
+
* artifact + CR system when a project is pipeline-managed.
|
|
4
|
+
*
|
|
5
|
+
* When pipeline state exists, /review produces pipeline-native audit_report
|
|
6
|
+
* artifacts and Change Requests instead of injecting recovery milestones
|
|
7
|
+
* into state.json. This keeps the pipeline as the single source of truth.
|
|
8
|
+
*/
|
|
9
|
+
import { randomUUID } from 'node:crypto';
|
|
10
|
+
import { createArtifactManager } from '../artifact-manager.js';
|
|
11
|
+
import { buildChangeRequest, formatChangeRequest, routeChangeRequest } from '../change-request.js';
|
|
12
|
+
import { generateRepoSnapshot, createSnapshotArtifact } from '../repo-snapshot.js';
|
|
13
|
+
import { scanProject } from '../../workflow/audit-scanner.js';
|
|
14
|
+
import { analyzeProject, calculateAuditScores } from '../../workflow/audit-analyzer.js';
|
|
15
|
+
import { buildSummaryReport, buildAuditReport } from '../../workflow/audit-reporter.js';
|
|
16
|
+
import { loadProject, updateState } from '../../state/index.js';
|
|
17
|
+
// ─── Pipeline Detection ──────────────────────────────────
|
|
18
|
+
/**
|
|
19
|
+
* Check if a project is pipeline-managed.
|
|
20
|
+
* A project is pipeline-managed if its state has a pipeline object
|
|
21
|
+
* with a pipelinePhase field.
|
|
22
|
+
*
|
|
23
|
+
* @param state - The project state to check
|
|
24
|
+
* @returns True if pipeline-managed
|
|
25
|
+
*/
|
|
26
|
+
export function isPipelineManaged(state) {
|
|
27
|
+
const pipeline = state.pipeline;
|
|
28
|
+
return !!pipeline?.pipelinePhase;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Extract pipeline state from project state.
|
|
32
|
+
*
|
|
33
|
+
* @param state - The project state
|
|
34
|
+
* @returns Pipeline state or undefined
|
|
35
|
+
*/
|
|
36
|
+
export function extractPipelineState(state) {
|
|
37
|
+
return state.pipeline;
|
|
38
|
+
}
|
|
39
|
+
// ─── Severity Mapping ────────────────────────────────────
|
|
40
|
+
/** Map workflow audit severity to pipeline severity */
|
|
41
|
+
const SEVERITY_MAP = {
|
|
42
|
+
critical: 'P0',
|
|
43
|
+
major: 'P1',
|
|
44
|
+
minor: 'P2',
|
|
45
|
+
info: 'P3',
|
|
46
|
+
};
|
|
47
|
+
export function mapSeverity(severity) {
|
|
48
|
+
return SEVERITY_MAP[severity];
|
|
49
|
+
}
|
|
50
|
+
const CATEGORY_MAP = {
|
|
51
|
+
'feature-completeness': 'integration',
|
|
52
|
+
'integration-wiring': 'integration',
|
|
53
|
+
'test-coverage': 'tests',
|
|
54
|
+
'config-deployment': 'config',
|
|
55
|
+
'dependency-sanity': 'deployment',
|
|
56
|
+
'consistency': 'schema',
|
|
57
|
+
'security': 'security',
|
|
58
|
+
'documentation': 'deployment',
|
|
59
|
+
};
|
|
60
|
+
export function mapCategory(category) {
|
|
61
|
+
return CATEGORY_MAP[category];
|
|
62
|
+
}
|
|
63
|
+
// ─── CR Routing ──────────────────────────────────────────
|
|
64
|
+
/** Determine CR change_type from pipeline audit category */
|
|
65
|
+
const CATEGORY_TO_CHANGE_TYPE = {
|
|
66
|
+
integration: 'architecture',
|
|
67
|
+
schema: 'architecture',
|
|
68
|
+
security: 'requirement',
|
|
69
|
+
tests: 'config',
|
|
70
|
+
config: 'config',
|
|
71
|
+
deployment: 'config',
|
|
72
|
+
};
|
|
73
|
+
export function categoryToChangeType(category) {
|
|
74
|
+
return CATEGORY_TO_CHANGE_TYPE[category];
|
|
75
|
+
}
|
|
76
|
+
// ─── Finding Conversion ──────────────────────────────────
|
|
77
|
+
/**
|
|
78
|
+
* Convert a workflow AuditFinding to a pipeline AuditFinding.
|
|
79
|
+
*
|
|
80
|
+
* @param finding - Workflow finding
|
|
81
|
+
* @param snapshotRef - Pipeline artifact ref for the repo snapshot
|
|
82
|
+
* @returns Pipeline-native audit finding
|
|
83
|
+
*/
|
|
84
|
+
export function convertFinding(finding, snapshotRef) {
|
|
85
|
+
const severity = mapSeverity(finding.severity);
|
|
86
|
+
return {
|
|
87
|
+
id: finding.id,
|
|
88
|
+
severity,
|
|
89
|
+
category: mapCategory(finding.category),
|
|
90
|
+
description: `${finding.title}: ${finding.description}`,
|
|
91
|
+
evidence: [snapshotRef],
|
|
92
|
+
file_path: finding.evidence[0]?.file,
|
|
93
|
+
line_number: finding.evidence[0]?.line,
|
|
94
|
+
suggested_owner: 'AUDITOR',
|
|
95
|
+
blocking: severity === 'P0' || severity === 'P1',
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
// ─── Bridge Orchestrator ─────────────────────────────────
|
|
99
|
+
/**
|
|
100
|
+
* Run /review through the pipeline bridge.
|
|
101
|
+
* Uses the rich audit-mode scanner but writes results as pipeline artifacts
|
|
102
|
+
* and creates Change Requests for blocking findings.
|
|
103
|
+
*
|
|
104
|
+
* Does NOT inject recovery milestones — the pipeline RECOVERY_LOOP handles fixes.
|
|
105
|
+
*
|
|
106
|
+
* @param options - Bridge options
|
|
107
|
+
* @returns Bridge result with counts and score
|
|
108
|
+
*/
|
|
109
|
+
export async function runReviewBridge(options) {
|
|
110
|
+
const { projectDir, onProgress } = options;
|
|
111
|
+
const depth = options.depth ?? 2;
|
|
112
|
+
const strict = options.strict ?? false;
|
|
113
|
+
try {
|
|
114
|
+
// 1. Load state and extract pipeline
|
|
115
|
+
const state = await loadProject(projectDir);
|
|
116
|
+
const pipeline = extractPipelineState(state);
|
|
117
|
+
if (!pipeline) {
|
|
118
|
+
return { success: false, findingsCount: 0, changeRequestCount: 0, overallScore: 0, recommendation: 'error', artifactsCreated: 0, error: 'No pipeline state found' };
|
|
119
|
+
}
|
|
120
|
+
const artifactManager = createArtifactManager(projectDir);
|
|
121
|
+
artifactManager.ensureDocsStructure();
|
|
122
|
+
const artifacts = [];
|
|
123
|
+
// 2. Generate fresh repo snapshot (pipeline anchor)
|
|
124
|
+
onProgress?.('bridge', 'Generating repo snapshot...');
|
|
125
|
+
const snapshot = await generateRepoSnapshot(projectDir);
|
|
126
|
+
const snapshotEntry = createSnapshotArtifact(snapshot, artifactManager, 'AUDIT');
|
|
127
|
+
artifacts.push(snapshotEntry);
|
|
128
|
+
pipeline.latestRepoSnapshot = artifactManager.toArtifactRef(snapshotEntry);
|
|
129
|
+
const snapshotRef = artifactManager.toArtifactRef(snapshotEntry);
|
|
130
|
+
// 3. Run rich audit-mode scanner (Stage 1: Scan)
|
|
131
|
+
onProgress?.('bridge', 'Running project scan...');
|
|
132
|
+
const scan = await scanProject(projectDir, state.language, (msg) => onProgress?.('bridge-scan', msg));
|
|
133
|
+
const summary = buildSummaryReport(scan, state);
|
|
134
|
+
onProgress?.('bridge', `Scan complete: ${scan.totalSourceFiles} source files, ${scan.totalLinesOfCode} LOC`);
|
|
135
|
+
// 4. Run AI analysis (Stage 2: Analyze)
|
|
136
|
+
onProgress?.('bridge', 'Running AI analysis...');
|
|
137
|
+
const { findings: workflowFindings, searchMetadata } = await analyzeProject(scan, state, {
|
|
138
|
+
depth,
|
|
139
|
+
strict,
|
|
140
|
+
projectDir,
|
|
141
|
+
});
|
|
142
|
+
const scores = calculateAuditScores(workflowFindings, scan);
|
|
143
|
+
const auditReport = buildAuditReport(summary, workflowFindings, scores, searchMetadata, { strict }, randomUUID());
|
|
144
|
+
onProgress?.('bridge', `Analysis complete: score ${scores.overallScore}%, ${workflowFindings.length} findings`);
|
|
145
|
+
// 5. Convert findings to pipeline format
|
|
146
|
+
const pipelineFindings = workflowFindings.map((f) => convertFinding(f, snapshotRef));
|
|
147
|
+
// 6. Build pipeline audit report and store as artifact
|
|
148
|
+
const pipelineAuditReport = {
|
|
149
|
+
audit_id: `audit-${randomUUID().split('-')[0]}`,
|
|
150
|
+
timestamp: new Date().toISOString(),
|
|
151
|
+
repo_snapshot: snapshotRef,
|
|
152
|
+
overall_status: (auditReport.recommendation === 'pass' ? 'PASS' : 'FAIL'),
|
|
153
|
+
findings: pipelineFindings,
|
|
154
|
+
system_risk_score: 100 - scores.overallScore,
|
|
155
|
+
recovery_required: auditReport.recommendation === 'major-rework',
|
|
156
|
+
};
|
|
157
|
+
const auditJsonEntry = artifactManager.createAndStoreJson('audit_report', pipelineAuditReport, 'AUDIT');
|
|
158
|
+
artifacts.push(auditJsonEntry);
|
|
159
|
+
// Store raw text report too
|
|
160
|
+
const textReport = formatAuditSummary(pipelineFindings, scores.overallScore, auditReport.recommendation);
|
|
161
|
+
const auditTextEntry = artifactManager.createAndStoreText('audit_report', textReport, 'AUDIT');
|
|
162
|
+
artifacts.push(auditTextEntry);
|
|
163
|
+
// 7. Create Change Requests for blocking findings
|
|
164
|
+
const changeRequests = [];
|
|
165
|
+
const blockingFindings = pipelineFindings.filter((f) => f.blocking);
|
|
166
|
+
if (blockingFindings.length > 0) {
|
|
167
|
+
// Group by category for targeted CRs
|
|
168
|
+
const byCategory = new Map();
|
|
169
|
+
for (const f of blockingFindings) {
|
|
170
|
+
const group = byCategory.get(f.category) ?? [];
|
|
171
|
+
group.push(f);
|
|
172
|
+
byCategory.set(f.category, group);
|
|
173
|
+
}
|
|
174
|
+
for (const [category, findings] of byCategory) {
|
|
175
|
+
const changeType = categoryToChangeType(category);
|
|
176
|
+
const cr = buildChangeRequest({
|
|
177
|
+
originPhase: 'AUDIT',
|
|
178
|
+
requestedBy: 'AUDITOR',
|
|
179
|
+
changeType,
|
|
180
|
+
description: `${findings.length} blocking ${category} finding(s): ${findings.map((f) => f.description.slice(0, 80)).join('; ')}`,
|
|
181
|
+
justification: 'Blocking audit findings from /review require pipeline resolution',
|
|
182
|
+
affectedArtifacts: [snapshotRef],
|
|
183
|
+
affectedPhases: getAffectedPhases(category),
|
|
184
|
+
riskLevel: findings.some((f) => f.severity === 'P0') ? 'high' : 'medium',
|
|
185
|
+
});
|
|
186
|
+
changeRequests.push(cr);
|
|
187
|
+
// Store CR as artifact
|
|
188
|
+
const crEntry = artifactManager.createAndStoreText('change_request', formatChangeRequest(cr), 'AUDIT');
|
|
189
|
+
artifacts.push(crEntry);
|
|
190
|
+
// Register in pipeline state for orchestrator routing
|
|
191
|
+
if (!pipeline.pendingChangeRequests) {
|
|
192
|
+
pipeline.pendingChangeRequests = [];
|
|
193
|
+
}
|
|
194
|
+
pipeline.pendingChangeRequests.push({
|
|
195
|
+
cr_id: cr.cr_id,
|
|
196
|
+
change_type: cr.change_type,
|
|
197
|
+
target_phase: routeChangeRequest(cr),
|
|
198
|
+
status: 'proposed',
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// 8. Persist pipeline state
|
|
203
|
+
pipeline.artifacts.push(...artifacts);
|
|
204
|
+
// Update INDEX.md
|
|
205
|
+
artifactManager.updateIndex(pipeline.artifacts);
|
|
206
|
+
// Save updated state (pipeline object is a reference on state)
|
|
207
|
+
await updateState(projectDir, {
|
|
208
|
+
auditReportPath: auditJsonEntry.path,
|
|
209
|
+
auditLastRunAt: new Date().toISOString(),
|
|
210
|
+
auditRunId: pipelineAuditReport.audit_id,
|
|
211
|
+
});
|
|
212
|
+
onProgress?.('bridge', `Bridge complete: ${artifacts.length} artifacts, ${changeRequests.length} CRs created`);
|
|
213
|
+
return {
|
|
214
|
+
success: true,
|
|
215
|
+
findingsCount: pipelineFindings.length,
|
|
216
|
+
changeRequestCount: changeRequests.length,
|
|
217
|
+
overallScore: scores.overallScore,
|
|
218
|
+
recommendation: auditReport.recommendation,
|
|
219
|
+
artifactsCreated: artifacts.length,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
const error = err instanceof Error ? err.message : 'Unknown error';
|
|
224
|
+
return { success: false, findingsCount: 0, changeRequestCount: 0, overallScore: 0, recommendation: 'error', artifactsCreated: 0, error };
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// ─── Helpers ─────────────────────────────────────────────
|
|
228
|
+
/** Get affected phases for a finding category */
|
|
229
|
+
function getAffectedPhases(category) {
|
|
230
|
+
switch (category) {
|
|
231
|
+
case 'integration':
|
|
232
|
+
case 'schema':
|
|
233
|
+
return ['CONSENSUS_ARCHITECTURE', 'IMPLEMENTATION'];
|
|
234
|
+
case 'security':
|
|
235
|
+
return ['CONSENSUS_MASTER_PLAN', 'IMPLEMENTATION'];
|
|
236
|
+
case 'tests':
|
|
237
|
+
return ['QA_VALIDATION'];
|
|
238
|
+
case 'config':
|
|
239
|
+
case 'deployment':
|
|
240
|
+
return ['IMPLEMENTATION', 'PRODUCTION_GATE'];
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/** Format a text summary of pipeline audit findings */
|
|
244
|
+
function formatAuditSummary(findings, score, recommendation) {
|
|
245
|
+
const lines = [
|
|
246
|
+
'# Pipeline Audit Report (via /review bridge)',
|
|
247
|
+
'',
|
|
248
|
+
`**Score:** ${score}%`,
|
|
249
|
+
`**Recommendation:** ${recommendation}`,
|
|
250
|
+
`**Findings:** ${findings.length}`,
|
|
251
|
+
`**Blocking:** ${findings.filter((f) => f.blocking).length}`,
|
|
252
|
+
'',
|
|
253
|
+
'## Findings',
|
|
254
|
+
'',
|
|
255
|
+
];
|
|
256
|
+
for (const f of findings) {
|
|
257
|
+
lines.push(`### [${f.severity}] ${f.description.slice(0, 120)}`);
|
|
258
|
+
lines.push(`- Category: ${f.category}`);
|
|
259
|
+
lines.push(`- Blocking: ${f.blocking ? 'Yes' : 'No'}`);
|
|
260
|
+
if (f.file_path)
|
|
261
|
+
lines.push(`- File: ${f.file_path}${f.line_number ? `:${f.line_number}` : ''}`);
|
|
262
|
+
lines.push('');
|
|
263
|
+
}
|
|
264
|
+
return lines.join('\n');
|
|
265
|
+
}
|
|
266
|
+
//# sourceMappingURL=review-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-bridge.js","sourceRoot":"","sources":["../../../src/pipeline/bridges/review-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Change Request mechanism — structured change tracking for mid-pipeline modifications.
|
|
3
|
+
* CRs are created when drift is detected (REVIEW) or architectural issues found (AUDIT).
|
|
4
|
+
* Each CR routes to the appropriate consensus phase for approval.
|
|
5
|
+
*/
|
|
6
|
+
import type { PipelinePhase, PipelineRole, ArtifactRef, ChangeRequest } from './types.js';
|
|
7
|
+
export interface BuildChangeRequestArgs {
|
|
8
|
+
originPhase: PipelinePhase;
|
|
9
|
+
requestedBy: PipelineRole;
|
|
10
|
+
changeType: ChangeRequest['change_type'];
|
|
11
|
+
description: string;
|
|
12
|
+
justification: string;
|
|
13
|
+
affectedArtifacts: ArtifactRef[];
|
|
14
|
+
affectedPhases: PipelinePhase[];
|
|
15
|
+
riskLevel: 'low' | 'medium' | 'high';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Build a change request with generated ID and timestamp.
|
|
19
|
+
*
|
|
20
|
+
* Args:
|
|
21
|
+
* args: Change request parameters.
|
|
22
|
+
*
|
|
23
|
+
* Returns:
|
|
24
|
+
* A fully formed ChangeRequest in 'proposed' status.
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildChangeRequest(args: BuildChangeRequestArgs): ChangeRequest;
|
|
27
|
+
/**
|
|
28
|
+
* Determine which consensus phase should review a change request.
|
|
29
|
+
*
|
|
30
|
+
* Args:
|
|
31
|
+
* cr: The change request to route.
|
|
32
|
+
*
|
|
33
|
+
* Returns:
|
|
34
|
+
* The pipeline phase that should handle the CR approval.
|
|
35
|
+
*/
|
|
36
|
+
export declare function routeChangeRequest(cr: ChangeRequest): PipelinePhase;
|
|
37
|
+
/**
|
|
38
|
+
* Format a change request as markdown for inclusion in artifacts.
|
|
39
|
+
*
|
|
40
|
+
* Args:
|
|
41
|
+
* cr: The change request to format.
|
|
42
|
+
*
|
|
43
|
+
* Returns:
|
|
44
|
+
* Markdown-formatted string.
|
|
45
|
+
*/
|
|
46
|
+
export declare function formatChangeRequest(cr: ChangeRequest): string;
|
|
47
|
+
//# sourceMappingURL=change-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-request.d.ts","sourceRoot":"","sources":["../../src/pipeline/change-request.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,EACd,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,aAAa,CAAC;IAC3B,WAAW,EAAE,YAAY,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,WAAW,EAAE,CAAC;IACjC,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,aAAa,CAgB9E;AAaD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,aAAa,GAAG,aAAa,CAEnE;AAID;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM,CA4B7D"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Change Request mechanism — structured change tracking for mid-pipeline modifications.
|
|
3
|
+
* CRs are created when drift is detected (REVIEW) or architectural issues found (AUDIT).
|
|
4
|
+
* Each CR routes to the appropriate consensus phase for approval.
|
|
5
|
+
*/
|
|
6
|
+
import { randomUUID } from 'node:crypto';
|
|
7
|
+
/**
|
|
8
|
+
* Build a change request with generated ID and timestamp.
|
|
9
|
+
*
|
|
10
|
+
* Args:
|
|
11
|
+
* args: Change request parameters.
|
|
12
|
+
*
|
|
13
|
+
* Returns:
|
|
14
|
+
* A fully formed ChangeRequest in 'proposed' status.
|
|
15
|
+
*/
|
|
16
|
+
export function buildChangeRequest(args) {
|
|
17
|
+
return {
|
|
18
|
+
cr_id: `CR-${randomUUID().split('-')[0].toUpperCase()}`,
|
|
19
|
+
timestamp: new Date().toISOString(),
|
|
20
|
+
origin_phase: args.originPhase,
|
|
21
|
+
requested_by: args.requestedBy,
|
|
22
|
+
change_type: args.changeType,
|
|
23
|
+
description: args.description,
|
|
24
|
+
justification: args.justification,
|
|
25
|
+
impact_analysis: {
|
|
26
|
+
affected_artifacts: args.affectedArtifacts,
|
|
27
|
+
affected_phases: args.affectedPhases,
|
|
28
|
+
risk_level: args.riskLevel,
|
|
29
|
+
},
|
|
30
|
+
status: 'proposed',
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// ─── CR Routing ──────────────────────────────────────────
|
|
34
|
+
/** Maps change types to the consensus phase that must approve them */
|
|
35
|
+
const CHANGE_TYPE_ROUTING = {
|
|
36
|
+
scope: 'CONSENSUS_MASTER_PLAN',
|
|
37
|
+
architecture: 'CONSENSUS_ARCHITECTURE',
|
|
38
|
+
dependency: 'CONSENSUS_ROLE_PLANS',
|
|
39
|
+
config: 'QA_VALIDATION',
|
|
40
|
+
requirement: 'CONSENSUS_MASTER_PLAN',
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Determine which consensus phase should review a change request.
|
|
44
|
+
*
|
|
45
|
+
* Args:
|
|
46
|
+
* cr: The change request to route.
|
|
47
|
+
*
|
|
48
|
+
* Returns:
|
|
49
|
+
* The pipeline phase that should handle the CR approval.
|
|
50
|
+
*/
|
|
51
|
+
export function routeChangeRequest(cr) {
|
|
52
|
+
return CHANGE_TYPE_ROUTING[cr.change_type];
|
|
53
|
+
}
|
|
54
|
+
// ─── CR Formatting ───────────────────────────────────────
|
|
55
|
+
/**
|
|
56
|
+
* Format a change request as markdown for inclusion in artifacts.
|
|
57
|
+
*
|
|
58
|
+
* Args:
|
|
59
|
+
* cr: The change request to format.
|
|
60
|
+
*
|
|
61
|
+
* Returns:
|
|
62
|
+
* Markdown-formatted string.
|
|
63
|
+
*/
|
|
64
|
+
export function formatChangeRequest(cr) {
|
|
65
|
+
const lines = [
|
|
66
|
+
`# Change Request ${cr.cr_id}`,
|
|
67
|
+
'',
|
|
68
|
+
`**Status:** ${cr.status}`,
|
|
69
|
+
`**Type:** ${cr.change_type}`,
|
|
70
|
+
`**Origin Phase:** ${cr.origin_phase}`,
|
|
71
|
+
`**Requested By:** ${cr.requested_by}`,
|
|
72
|
+
`**Risk Level:** ${cr.impact_analysis.risk_level}`,
|
|
73
|
+
`**Timestamp:** ${cr.timestamp}`,
|
|
74
|
+
'',
|
|
75
|
+
'## Description',
|
|
76
|
+
cr.description,
|
|
77
|
+
'',
|
|
78
|
+
'## Justification',
|
|
79
|
+
cr.justification,
|
|
80
|
+
'',
|
|
81
|
+
'## Impact Analysis',
|
|
82
|
+
`- Affected phases: ${cr.impact_analysis.affected_phases.join(', ')}`,
|
|
83
|
+
`- Affected artifacts: ${cr.impact_analysis.affected_artifacts.length}`,
|
|
84
|
+
`- Risk level: ${cr.impact_analysis.risk_level}`,
|
|
85
|
+
];
|
|
86
|
+
if (cr.approval_artifact) {
|
|
87
|
+
lines.push('', `## Approval: ${cr.approval_artifact.artifact_id}`);
|
|
88
|
+
}
|
|
89
|
+
return lines.join('\n');
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=change-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-request.js","sourceRoot":"","sources":["../../src/pipeline/change-request.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAsBzC;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA4B;IAC7D,OAAO;QACL,KAAK,EAAE,MAAM,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE;QACvD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,YAAY,EAAE,IAAI,CAAC,WAAW;QAC9B,YAAY,EAAE,IAAI,CAAC,WAAW;QAC9B,WAAW,EAAE,IAAI,CAAC,UAAU;QAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,eAAe,EAAE;YACf,kBAAkB,EAAE,IAAI,CAAC,iBAAiB;YAC1C,eAAe,EAAE,IAAI,CAAC,cAAc;YACpC,UAAU,EAAE,IAAI,CAAC,SAAS;SAC3B;QACD,MAAM,EAAE,UAAU;KACnB,CAAC;AACJ,CAAC;AAED,4DAA4D;AAE5D,sEAAsE;AACtE,MAAM,mBAAmB,GAAwD;IAC/E,KAAK,EAAE,uBAAuB;IAC9B,YAAY,EAAE,wBAAwB;IACtC,UAAU,EAAE,sBAAsB;IAClC,MAAM,EAAE,eAAe;IACvB,WAAW,EAAE,uBAAuB;CACrC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAiB;IAClD,OAAO,mBAAmB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED,4DAA4D;AAE5D;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAiB;IACnD,MAAM,KAAK,GAAG;QACZ,oBAAoB,EAAE,CAAC,KAAK,EAAE;QAC9B,EAAE;QACF,eAAe,EAAE,CAAC,MAAM,EAAE;QAC1B,aAAa,EAAE,CAAC,WAAW,EAAE;QAC7B,qBAAqB,EAAE,CAAC,YAAY,EAAE;QACtC,qBAAqB,EAAE,CAAC,YAAY,EAAE;QACtC,mBAAmB,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE;QAClD,kBAAkB,EAAE,CAAC,SAAS,EAAE;QAChC,EAAE;QACF,gBAAgB;QAChB,EAAE,CAAC,WAAW;QACd,EAAE;QACF,kBAAkB;QAClB,EAAE,CAAC,aAAa;QAChB,EAAE;QACF,oBAAoB;QACpB,sBAAsB,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACrE,yBAAyB,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE;QACvE,iBAAiB,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE;KACjD,CAAC;IAEF,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check Runner — executes build/test/lint/typecheck commands
|
|
3
|
+
* and produces GateCheckResult artifacts.
|
|
4
|
+
*
|
|
5
|
+
* Safety: command sanitization, cwd enforcement, stream caps,
|
|
6
|
+
* configurable timeouts (P2-G).
|
|
7
|
+
*/
|
|
8
|
+
import type { GateCheckResult, GateCheckType, ResolvedCommands, RepoSnapshot, ArtifactEntry, PipelinePhase } from './types.js';
|
|
9
|
+
import { ArtifactManager } from './artifact-manager.js';
|
|
10
|
+
/** Execute a single check command */
|
|
11
|
+
export declare function runCheck(checkType: GateCheckType, command: string, projectDir: string, timeoutOverride?: number): Promise<GateCheckResult>;
|
|
12
|
+
/** Run all applicable checks based on resolved commands */
|
|
13
|
+
export declare function runAllChecks(resolvedCommands: ResolvedCommands, projectDir: string): Promise<GateCheckResult[]>;
|
|
14
|
+
/** Store check results as artifacts */
|
|
15
|
+
export declare function storeCheckResults(results: GateCheckResult[], artifactManager: ArtifactManager, phase: PipelinePhase): ArtifactEntry[];
|
|
16
|
+
/** Scan project for placeholder/TODO/mock content */
|
|
17
|
+
export declare function runPlaceholderScan(projectDir: string, allowlistPath?: string): GateCheckResult;
|
|
18
|
+
/**
|
|
19
|
+
* Attempt to start the application and verify it does not crash immediately.
|
|
20
|
+
* Optionally checks a health endpoint if a port is detected.
|
|
21
|
+
*
|
|
22
|
+
* Args:
|
|
23
|
+
* startCommand: The command to start the app (e.g., "npm run start").
|
|
24
|
+
* projectDir: Project root directory.
|
|
25
|
+
* options: Optional port, health path, and timeout.
|
|
26
|
+
*
|
|
27
|
+
* Returns:
|
|
28
|
+
* GateCheckResult with pass/fail status.
|
|
29
|
+
*/
|
|
30
|
+
export declare function runStartCheck(startCommand: string, projectDir: string, options?: {
|
|
31
|
+
port?: number;
|
|
32
|
+
healthPath?: string;
|
|
33
|
+
timeoutMs?: number;
|
|
34
|
+
}): Promise<GateCheckResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Validate that required environment variables exist.
|
|
37
|
+
* Reads .env.example for required var names and checks .env has them set.
|
|
38
|
+
*
|
|
39
|
+
* Args:
|
|
40
|
+
* projectDir: Project root directory.
|
|
41
|
+
* _snapshot: Repo snapshot (for future use).
|
|
42
|
+
*
|
|
43
|
+
* Returns:
|
|
44
|
+
* GateCheckResult with pass/fail status.
|
|
45
|
+
*/
|
|
46
|
+
export declare function runEnvCheck(projectDir: string, _snapshot?: RepoSnapshot): GateCheckResult;
|
|
47
|
+
//# sourceMappingURL=check-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-runner.d.ts","sourceRoot":"","sources":["../../src/pipeline/check-runner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAuDxD,qCAAqC;AACrC,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,eAAe,CAAC,CAuD1B;AAED,2DAA2D;AAC3D,wBAAsB,YAAY,CAChC,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,EAAE,CAAC,CA4B5B;AAED,uCAAuC;AACvC,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,eAAe,EAAE,EAC1B,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,aAAa,GACnB,aAAa,EAAE,CAmBjB;AAiBD,qDAAqD;AACrD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,eAAe,CA+BjB;AA2DD;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,OAAO,CAAC,eAAe,CAAC,CAoE1B;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,YAAY,GACvB,eAAe,CAqEjB"}
|