agentic-engineering-harness 0.7.0 → 0.8.1

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.
Files changed (88) hide show
  1. package/dist/cli.js +17 -6
  2. package/dist/cli.js.map +1 -1
  3. package/dist/context/gateway.js +23 -0
  4. package/dist/context/gateway.js.map +1 -1
  5. package/dist/context/retrieval/gateway.js +18 -2
  6. package/dist/context/retrieval/gateway.js.map +1 -1
  7. package/dist/core/config.js +4 -4
  8. package/dist/core/config.js.map +1 -1
  9. package/dist/core/sdd.js +2 -2
  10. package/dist/core/sdd.js.map +1 -1
  11. package/dist/core/types.d.ts +28 -1
  12. package/dist/delivery/finalize.d.ts +1 -1
  13. package/dist/delivery/finalize.js +6 -1
  14. package/dist/delivery/finalize.js.map +1 -1
  15. package/dist/entry.js +20 -2
  16. package/dist/entry.js.map +1 -1
  17. package/dist/evidence/graph.d.ts +1 -0
  18. package/dist/evidence/graph.js +4 -4
  19. package/dist/evidence/graph.js.map +1 -1
  20. package/dist/issues/intake.d.ts +1 -1
  21. package/dist/maturity/inventory.d.ts +30 -0
  22. package/dist/maturity/inventory.js +53 -0
  23. package/dist/maturity/inventory.js.map +1 -0
  24. package/dist/operations/completion.js +57 -0
  25. package/dist/operations/completion.js.map +1 -1
  26. package/dist/operations/controller.d.ts +6 -0
  27. package/dist/operations/controller.js +3 -3
  28. package/dist/operations/controller.js.map +1 -1
  29. package/dist/operations/state.d.ts +10 -0
  30. package/dist/operations/state.js +24 -2
  31. package/dist/operations/state.js.map +1 -1
  32. package/dist/paseo/deterministicSession.d.ts +47 -0
  33. package/dist/paseo/deterministicSession.js +108 -0
  34. package/dist/paseo/deterministicSession.js.map +1 -0
  35. package/dist/provenance/generate.d.ts +12 -1
  36. package/dist/provenance/generate.js +86 -10
  37. package/dist/provenance/generate.js.map +1 -1
  38. package/dist/providers/validation/bddExecution.d.ts +15 -0
  39. package/dist/providers/validation/bddExecution.js +107 -0
  40. package/dist/providers/validation/bddExecution.js.map +1 -0
  41. package/dist/providers/validation/integrationEnvironment.d.ts +12 -0
  42. package/dist/providers/validation/integrationEnvironment.js +101 -0
  43. package/dist/providers/validation/integrationEnvironment.js.map +1 -0
  44. package/dist/providers/validation/pact.d.ts +15 -0
  45. package/dist/providers/validation/pact.js +79 -0
  46. package/dist/providers/validation/pact.js.map +1 -0
  47. package/dist/providers/validation/protocol.d.ts +7 -0
  48. package/dist/providers/validation/protocol.js +35 -0
  49. package/dist/providers/validation/protocol.js.map +1 -0
  50. package/dist/providers/validation/providerUtils.d.ts +18 -0
  51. package/dist/providers/validation/providerUtils.js +40 -0
  52. package/dist/providers/validation/providerUtils.js.map +1 -0
  53. package/dist/providers/validation/registry.d.ts +21 -0
  54. package/dist/providers/validation/registry.js +59 -0
  55. package/dist/providers/validation/registry.js.map +1 -0
  56. package/dist/providers/validation/reqnroll.d.ts +7 -0
  57. package/dist/providers/validation/reqnroll.js +50 -0
  58. package/dist/providers/validation/reqnroll.js.map +1 -0
  59. package/dist/providers/validation/testExecution.d.ts +15 -0
  60. package/dist/providers/validation/testExecution.js +122 -0
  61. package/dist/providers/validation/testExecution.js.map +1 -0
  62. package/dist/providers/validation/types.d.ts +158 -0
  63. package/dist/providers/validation/types.js +2 -0
  64. package/dist/providers/validation/types.js.map +1 -0
  65. package/dist/spec/openspec.js +12 -7
  66. package/dist/spec/openspec.js.map +1 -1
  67. package/dist/validators/external.js +8 -5
  68. package/dist/validators/external.js.map +1 -1
  69. package/dist/validators/gherkin.js +5 -56
  70. package/dist/validators/gherkin.js.map +1 -1
  71. package/dist/validators/registry.js +42 -3
  72. package/dist/validators/registry.js.map +1 -1
  73. package/dist/validators/toolEvidence.d.ts +5 -0
  74. package/dist/validators/toolEvidence.js +38 -8
  75. package/dist/validators/toolEvidence.js.map +1 -1
  76. package/dist/validators/types.d.ts +2 -1
  77. package/docs/ARCHITECTURE.md +60 -2
  78. package/docs/COMPONENT_MATURITY.md +11 -11
  79. package/docs/OSS_STACK.md +5 -4
  80. package/docs/V0.2.md +4 -1
  81. package/docs/VALIDATION.md +54 -3
  82. package/docs/VALIDATION_COMPATIBILITY.md +19 -0
  83. package/docs/component-maturity.json +5 -5
  84. package/maturity/components.yaml +59 -0
  85. package/package.json +9 -2
  86. package/schemas/project.schema.json +2 -2
  87. package/schemas/validation-result.schema.json +84 -0
  88. package/templates/project.yaml +1 -0
@@ -18,36 +18,43 @@ export async function generateProvenance(root, config, options) {
18
18
  const statementFile = path.join(outputDir, `${base}.intoto.json`);
19
19
  const manifestFile = path.join(outputDir, `${base}.manifest.json`);
20
20
  let sbomFile;
21
+ const sbomRequired = config.provenance?.required === true || config.provenance?.sbom?.required === true;
21
22
  if (options.sbom !== false && await commandExists("trivy", root)) {
22
23
  sbomFile = path.join(outputDir, `${base}.cyclonedx.json`);
23
- const sbom = await runProcess(`trivy fs --format cyclonedx --output ${quote(sbomFile)} ${quote(root)}`, { cwd: root, timeoutMs: 600_000 });
24
+ const sbomCommand = config.provenance?.sbom?.command ?? `trivy fs --format cyclonedx --output ${quote(sbomFile)} ${quote(root)}`;
25
+ const sbom = await runProcess(sbomCommand, { cwd: root, timeoutMs: 600_000 });
24
26
  if (sbom.exitCode !== 0)
25
27
  throw new Error(`Trivy SBOM generation failed: ${sbom.stderr || sbom.stdout}`);
26
28
  }
29
+ else if (sbomRequired)
30
+ throw new Error("Supply-chain policy requires a CycloneDX SBOM, but Trivy is unavailable or SBOM generation was disabled.");
27
31
  const manifest = await buildProvenanceManifest(root, config, options.taskId, artifact, sbomFile);
28
32
  manifest.subject = { path: relative(root, artifact), sha256: digest };
29
- const plannedBundle = options.sign ? path.join(outputDir, `${base}.sigstore.json`) : undefined;
33
+ const signingRequired = options.sign || config.provenance?.signing?.required === true || config.provenance?.verification?.required === true;
34
+ const plannedBundle = signingRequired ? path.join(outputDir, `${base}.sigstore.json`) : undefined;
30
35
  manifest.attestations = { statement: relative(root, statementFile), predicate: relative(root, predicateFile), ...(plannedBundle ? { bundle: relative(root, plannedBundle) } : {}) };
31
36
  await fs.writeFile(manifestFile, `${JSON.stringify(manifest, null, 2)}\n`);
32
37
  const manifestDigest = await sha256File(manifestFile);
33
38
  const runDigest = options.taskId ? await optionalDigest(path.resolve(root, config.sdd?.runsDir ?? ".harness/runs", `${options.taskId}.json`)) : undefined;
34
39
  const reportDigest = options.taskId ? await optionalDigest(path.resolve(root, config.sdd?.reportsDir ?? ".harness/reports", `${options.taskId}.json`)) : undefined;
35
- const predicate = buildSlsaPredicate({ project: config.project.name, artifact: path.basename(artifact), taskId: options.taskId, commit, remote, runDigest, reportDigest, artifactManifestSha256: manifestDigest, buildType: config.provenance?.buildType ?? "https://github.com/JamesMorales04/agentic-engineering-harness/v0.3", invocationId: crypto.randomUUID(), startedOn: new Date().toISOString(), finishedOn: new Date().toISOString() });
40
+ const predicate = buildSlsaPredicate({ project: config.project.name, artifact: path.basename(artifact), taskId: options.taskId, commit, remote, runDigest, reportDigest, artifactManifestSha256: manifestDigest, sbomSha256: sbomFile ? await sha256File(sbomFile) : undefined, buildType: config.provenance?.buildType ?? "https://github.com/JamesMorales04/agentic-engineering-harness/v0.3", invocationId: crypto.randomUUID(), startedOn: new Date().toISOString(), finishedOn: new Date().toISOString() });
36
41
  const statement = { _type: "https://in-toto.io/Statement/v1", subject: [{ name: path.basename(artifact), digest: { sha256: digest } }], predicateType: "https://slsa.dev/provenance/v1", predicate };
37
42
  await fs.writeFile(predicateFile, `${JSON.stringify(predicate, null, 2)}\n`);
38
43
  await fs.writeFile(statementFile, `${JSON.stringify(statement, null, 2)}\n`);
39
44
  let bundleFile;
40
- if (options.sign) {
45
+ if (signingRequired) {
41
46
  if (!(await commandExists("cosign", root)))
42
47
  throw new Error("--sign requested but cosign is not installed.");
43
48
  if (!plannedBundle)
44
49
  throw new Error("Signing bundle path could not be resolved.");
45
50
  bundleFile = plannedBundle;
46
- const key = config.provenance?.cosignKey ? ` --key ${quote(config.provenance.cosignKey)}` : "";
47
- const signed = await runProcess(`cosign sign-blob ${quote(statementFile)} --bundle ${quote(bundleFile)}${key}`, { cwd: root, timeoutMs: 300_000, env: { COSIGN_YES: "true" } });
51
+ const keyPath = config.provenance?.signing?.key ?? config.provenance?.cosignKey;
52
+ const key = keyPath ? ` --key ${quote(keyPath)}` : "";
53
+ const signed = await runProcess(`cosign sign-blob --yes --tlog-upload=false ${quote(statementFile)} --bundle ${quote(bundleFile)}${key}`, { cwd: root, timeoutMs: 300_000, env: { COSIGN_YES: "true", COSIGN_PASSWORD: process.env.COSIGN_PASSWORD ?? "" } });
48
54
  if (signed.exitCode !== 0)
49
55
  throw new Error(`Cosign signing failed: ${signed.stderr || signed.stdout}`);
50
- if (!(await verifyCosignBundle(root, statementFile, bundleFile, config.provenance?.cosignKey)))
56
+ const verificationKey = config.provenance?.verification?.publicKey ?? keyPath;
57
+ if (!(await verifyCosignBundle(root, statementFile, bundleFile, verificationKey)))
51
58
  throw new Error("Cosign produced a bundle that could not be verified.");
52
59
  }
53
60
  return { artifact: relative(root, artifact), sha256: digest, statementFile: relative(root, statementFile), predicateFile: relative(root, predicateFile), manifestFile: relative(root, manifestFile), sbomFile: sbomFile && relative(root, sbomFile), bundleFile: bundleFile && relative(root, bundleFile) };
@@ -62,6 +69,8 @@ export function buildSlsaPredicate(input) {
62
69
  internalParameters.validationReportSha256 = input.reportDigest;
63
70
  if (input.artifactManifestSha256)
64
71
  internalParameters.artifactManifestSha256 = input.artifactManifestSha256;
72
+ if (input.sbomSha256)
73
+ internalParameters.sbomSha256 = input.sbomSha256;
65
74
  return { buildDefinition: { buildType: input.buildType, externalParameters: { project: input.project, artifact: input.artifact }, internalParameters, resolvedDependencies: input.commit ? [{ uri: input.remote ? `git+${input.remote}` : "git:local", digest: { gitCommit: input.commit } }] : [] }, runDetails: { builder: { id: "https://github.com/JamesMorales04/agentic-engineering-harness" }, metadata: { invocationId: input.invocationId, startedOn: input.startedOn, finishedOn: input.finishedOn } } };
66
75
  }
67
76
  export async function buildProvenanceManifest(root, config, taskId, artifact, sbomFile) {
@@ -129,7 +138,7 @@ export async function buildProvenanceManifest(root, config, taskId, artifact, sb
129
138
  const lineage = operationId ? { operationId, gitCommit: await gitValue(root, "git rev-parse HEAD"), required, members: [...new Set(members)] } : undefined;
130
139
  return { version: 1, generatedAt: new Date().toISOString(), taskId, entries, ...(lineage ? { lineage } : {}) };
131
140
  }
132
- export async function verifyProvenanceManifest(root, manifestFile) {
141
+ export async function verifyProvenanceManifest(root, manifestFile, cosignKey) {
133
142
  const file = path.resolve(root, manifestFile);
134
143
  let manifest;
135
144
  try {
@@ -191,7 +200,7 @@ export async function verifyProvenanceManifest(root, manifestFile) {
191
200
  const commit = predicate?.buildDefinition?.resolvedDependencies?.[0]?.digest?.gitCommit;
192
201
  if (commit && manifest.lineage?.gitCommit && commit !== manifest.lineage.gitCommit)
193
202
  failures.push("SLSA resolved dependency commit disagrees with lineage");
194
- if (manifest.attestations.bundle && (!isSafeRelative(manifest.attestations.bundle) || !isSafeRelative(manifest.attestations.statement) || !(await verifyCosignBundle(root, manifest.attestations.statement, manifest.attestations.bundle))))
203
+ if (manifest.attestations.bundle && (!isSafeRelative(manifest.attestations.bundle) || !isSafeRelative(manifest.attestations.statement) || !(await verifyCosignBundle(root, manifest.attestations.statement, manifest.attestations.bundle, cosignKey))))
195
204
  failures.push("Cosign bundle verification failed");
196
205
  }
197
206
  return { ok: failures.length === 0, failures };
@@ -200,9 +209,76 @@ export async function verifyCosignBundle(root, statementFile, bundleFile, key) {
200
209
  if (!(await commandExists("cosign", root)))
201
210
  return false;
202
211
  const keyArg = key ? ` --key ${quote(path.resolve(root, key))}` : "";
203
- const result = await runProcess(`cosign verify-blob --bundle ${quote(path.resolve(root, bundleFile))}${keyArg} ${quote(path.resolve(root, statementFile))}`, { cwd: root, timeoutMs: 60_000 });
212
+ const result = await runProcess(`cosign verify-blob --insecure-ignore-tlog --bundle ${quote(path.resolve(root, bundleFile))}${keyArg} ${quote(path.resolve(root, statementFile))}`, { cwd: root, timeoutMs: 60_000 });
204
213
  return result.exitCode === 0;
205
214
  }
215
+ /** Deterministic delivery gate. It is inert unless one of the strict policy flags is enabled. */
216
+ export async function verifySupplyChainGate(root, config) {
217
+ const policy = config.provenance;
218
+ const strict = policy?.required === true || policy?.sbom?.required === true || policy?.signing?.required === true || policy?.verification?.required === true;
219
+ if (!strict)
220
+ return { ok: true, failures: [] };
221
+ const outputDir = path.resolve(root, policy?.outputDir ?? ".harness/provenance");
222
+ const failures = [];
223
+ const files = await fs.readdir(outputDir).catch(() => []);
224
+ const manifestName = files.filter((file) => file.endsWith(".manifest.json")).sort().at(-1);
225
+ if (!manifestName)
226
+ return { ok: false, failures: ["strict supply-chain policy requires a provenance manifest"] };
227
+ const manifestFile = path.join(outputDir, manifestName);
228
+ const key = policy?.verification?.publicKey ?? policy?.signing?.key ?? policy?.cosignKey;
229
+ const manifestVerification = await verifyProvenanceManifest(root, path.relative(root, manifestFile), key);
230
+ if (!manifestVerification.ok)
231
+ failures.push(...manifestVerification.failures.map((failure) => `manifest: ${failure}`));
232
+ let manifest;
233
+ try {
234
+ manifest = JSON.parse(await fs.readFile(manifestFile, "utf8"));
235
+ }
236
+ catch {
237
+ failures.push("provenance manifest is unreadable");
238
+ }
239
+ const artifact = manifest?.entries.find((entry) => entry.kind === "final-artifact");
240
+ const sbom = manifest?.entries.find((entry) => entry.kind === "sbom");
241
+ if (!artifact)
242
+ failures.push("provenance manifest does not reference the final artifact");
243
+ if (policy?.required === true && !manifest?.entries.some((entry) => entry.kind === "task-contract" || entry.kind === "validation-report"))
244
+ failures.push("provenance manifest does not reference accepted operation evidence");
245
+ if (policy?.sbom?.required === true && !sbom)
246
+ failures.push("strict supply-chain policy requires an SBOM entry");
247
+ const statementName = files.filter((file) => file.endsWith(".intoto.json")).sort().at(-1);
248
+ const statementFile = statementName ? path.join(outputDir, statementName) : undefined;
249
+ if (policy?.required === true && !statementFile)
250
+ failures.push("strict supply-chain policy requires an in-toto statement");
251
+ if (statementFile && artifact) {
252
+ try {
253
+ const statement = JSON.parse(await fs.readFile(statementFile, "utf8"));
254
+ const subject = statement.subject?.[0];
255
+ if (subject?.digest?.sha256 !== artifact.sha256)
256
+ failures.push("in-toto subject digest does not match the final artifact");
257
+ if (subject?.name !== path.basename(artifact.path))
258
+ failures.push("in-toto subject does not identify the manifest final artifact");
259
+ if (statement.predicate?.buildDefinition?.internalParameters?.artifactManifestSha256 !== await sha256File(manifestFile))
260
+ failures.push("in-toto statement does not reference the manifest hash");
261
+ if (sbom && statement.predicate?.buildDefinition?.internalParameters?.sbomSha256 !== await sha256File(path.resolve(root, sbom.path)))
262
+ failures.push("in-toto statement does not reference the SBOM hash");
263
+ }
264
+ catch {
265
+ failures.push("in-toto statement is unreadable");
266
+ }
267
+ }
268
+ let bundleFile;
269
+ const signingRequired = policy?.signing?.required === true || policy?.verification?.required === true;
270
+ if (signingRequired) {
271
+ const bundleName = files.filter((file) => file.endsWith(".sigstore.json")).sort().at(-1);
272
+ bundleFile = bundleName ? path.join(outputDir, bundleName) : undefined;
273
+ if (!bundleFile)
274
+ failures.push("strict supply-chain policy requires a Cosign bundle");
275
+ else if (!statementFile)
276
+ failures.push("Cosign bundle cannot be verified without an in-toto statement");
277
+ else if (!(await verifyCosignBundle(root, path.relative(root, statementFile), path.relative(root, bundleFile), key)))
278
+ failures.push("Cosign bundle verification failed");
279
+ }
280
+ return { ok: failures.length === 0, failures, manifestFile: path.relative(root, manifestFile), statementFile: statementFile && path.relative(root, statementFile), bundleFile: bundleFile && path.relative(root, bundleFile), sbomFile: sbom?.path };
281
+ }
206
282
  export async function sha256File(file) { return await new Promise((resolve, reject) => { const hash = crypto.createHash("sha256"); const stream = createReadStream(file); stream.on("data", (chunk) => hash.update(chunk)); stream.on("error", reject); stream.on("end", () => resolve(hash.digest("hex"))); }); }
207
283
  async function selectOperation(root, taskId, authoritativeOperationId) {
208
284
  const directory = path.resolve(root, ".harness/operations");
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/provenance/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/provenance/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ValidationCapability } from "../../core/types.js";
2
+ import type { BddExecutionResult, ProviderDetection, ProviderDoctorResult, ProviderExecution, ProviderPlan, ValidationProvider, ValidationProviderContext } from "./types.js";
3
+ export declare class GenericBddExecutionProvider implements ValidationProvider<BddExecutionResult> {
4
+ readonly id: string;
5
+ readonly capabilities: ValidationCapability[];
6
+ detect(context: ValidationProviderContext): Promise<ProviderDetection | undefined>;
7
+ doctor(context: ValidationProviderContext): Promise<ProviderDoctorResult>;
8
+ plan(context: ValidationProviderContext, detection?: ProviderDetection): Promise<ProviderPlan>;
9
+ execute(context: ValidationProviderContext, plan: ProviderPlan): Promise<ProviderExecution>;
10
+ normalize(context: ValidationProviderContext, execution: ProviderExecution): Promise<BddExecutionResult>;
11
+ }
12
+ export declare function runBddExecution(context: ValidationProviderContext, provider?: ValidationProvider<BddExecutionResult>): Promise<{
13
+ result: BddExecutionResult;
14
+ required: boolean;
15
+ }>;
@@ -0,0 +1,107 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { commandExists } from "../../utils/process.js";
4
+ import { configuredCommand, doctorForCommand, executePlan, fileExists, resolveCwd } from "./providerUtils.js";
5
+ import { parseJson, persistRawArtifact } from "./protocol.js";
6
+ export class GenericBddExecutionProvider {
7
+ id = "bdd-runner";
8
+ capabilities = ["bdd"];
9
+ async detect(context) {
10
+ const explicit = await configuredCommand(context);
11
+ if (explicit.command)
12
+ return { provider: explicit.provider, command: explicit.command, runtime: explicit.runtime, reason: "explicit BDD provider configuration" };
13
+ const packageJson = await readPackageJson(context.root);
14
+ if (packageJson?.scripts?.bdd)
15
+ return { provider: "node-bdd-script", command: "npm run bdd", runtime: "node", reason: "package.json bdd script" };
16
+ if (packageJson?.scripts?.acceptance)
17
+ return { provider: "node-acceptance-script", command: "npm run acceptance", runtime: "node", reason: "package.json acceptance script" };
18
+ if (await fileExists(path.join(context.root, "features")) && await commandExists("pytest", context.root))
19
+ return { provider: "python-bdd", command: "pytest -q", runtime: "python", reason: "features directory and Python BDD-capable runner" };
20
+ return undefined;
21
+ }
22
+ async doctor(context) {
23
+ const detection = await this.detect(context);
24
+ if (!detection)
25
+ return { provider: this.id, available: false, message: "No BDD provider was detected." };
26
+ return doctorForCommand(detection.command, resolveCwd(context), detection.provider, { runtime: detection.runtime, reason: detection.reason });
27
+ }
28
+ async plan(context, detection) {
29
+ const selected = detection ?? await this.detect(context);
30
+ if (!selected?.command)
31
+ throw new Error("No BDD provider or command is configured.");
32
+ return { provider: selected.provider, capability: "bdd", command: renderCommand(selected.command, context), cwd: resolveCwd(context), runtime: selected.runtime, options: { timeoutMs: (context.spec?.timeoutSeconds ?? context.providerSpec?.timeoutSeconds ?? 900) * 1000 } };
33
+ }
34
+ async execute(context, plan) {
35
+ const execution = await executePlan(plan);
36
+ const id = context.spec?.id ?? context.providerSpec?.id ?? "bdd";
37
+ return { ...execution, rawArtifact: await persistRawArtifact(context.root, context.rawArtifactDirectory, id, execution.stdout, execution.stderr) };
38
+ }
39
+ async normalize(context, execution) {
40
+ const parsed = parseJson(execution.stdout);
41
+ const scenarios = normalizeScenarios(parsed, execution, context);
42
+ const failed = scenarios.filter((item) => item.status === "FAIL").length;
43
+ const skipped = scenarios.filter((item) => item.status === "SKIP").length;
44
+ const passed = scenarios.filter((item) => item.status === "PASS").length;
45
+ return { version: 1, provider: execution.plan.provider, capability: "bdd", command: execution.plan.command, runtime: execution.plan.runtime, status: execution.exitCode === 0 && failed === 0 ? "PASS" : "FAIL", scenarios, summary: { total: scenarios.length, passed, failed, skipped, durationMs: execution.durationMs }, rawArtifact: execution.rawArtifact };
46
+ }
47
+ }
48
+ export async function runBddExecution(context, provider = new GenericBddExecutionProvider()) {
49
+ const detection = await provider.detect(context);
50
+ if (!detection)
51
+ return { result: { version: 1, provider: provider.id, capability: "bdd", command: "", status: "SKIP", scenarios: [], summary: { total: 0, passed: 0, failed: 0, skipped: 0, durationMs: 0 }, rawArtifact: "" }, required: context.spec?.required ?? context.providerSpec?.required ?? true };
52
+ const plan = await provider.plan(context, detection);
53
+ const execution = await provider.execute(context, plan);
54
+ return { result: await provider.normalize(context, execution), required: context.spec?.required ?? context.providerSpec?.required ?? true };
55
+ }
56
+ function normalizeScenarios(value, execution, context) {
57
+ if (value && typeof value === "object" && !Array.isArray(value) && value.version === 1) {
58
+ const scenarios = value.scenarios;
59
+ if (Array.isArray(scenarios))
60
+ return scenarios.map((item) => normalizeScenario(item, execution, context));
61
+ }
62
+ if (Array.isArray(value)) {
63
+ const cucumber = value.flatMap((feature) => {
64
+ const item = record(feature);
65
+ const featureName = stringValue(item.name) ?? "feature";
66
+ const featureFile = stringValue(item.uri ?? item.location?.file);
67
+ return (Array.isArray(item.elements) ? item.elements : Array.isArray(item.children) ? item.children : []).filter((scenario) => ["scenario", "background"].includes(String(record(scenario).type ?? "scenario"))).map((scenario) => fromCucumber(record(scenario), featureName, featureFile, execution, context));
68
+ });
69
+ if (cucumber.length)
70
+ return cucumber;
71
+ }
72
+ const fallback = `${execution.stdout}\n${execution.stderr}`.split(/\r?\n/).filter((line) => /^\s*(Scenario:|scenario:)/i.test(line)).map((line, index) => ({ feature: "unknown", scenario: line.replace(/^\s*Scenario:\s*/i, "").trim(), tags: [], status: execution.exitCode === 0 ? "PASS" : "FAIL", requirementIds: index === 0 ? requirementIds(context) : [] }));
73
+ return fallback;
74
+ }
75
+ function normalizeScenario(value, execution, context) {
76
+ const item = record(value);
77
+ const status = statusValue(item.status, execution.exitCode);
78
+ const source = sourceValue(item.source ?? item.location);
79
+ const tags = arrayValue(item.tags);
80
+ const taggedRequirements = tags.map((tag) => tag.replace(/^@/, "")).filter((tag) => (context.contract.requirements ?? []).some((requirement) => requirement.id === tag));
81
+ return { feature: stringValue(item.feature) ?? "feature", rule: stringValue(item.rule), scenario: stringValue(item.scenario ?? item.name) ?? "scenario", examplesRow: numberValue(item.examplesRow), tags, status, durationMs: numberValue(item.durationMs), failingStep: stringValue(item.failingStep), source, error: stringValue(item.error ?? item.message), requirementIds: arrayValue(item.requirementIds).length ? arrayValue(item.requirementIds) : taggedRequirements.length ? taggedRequirements : requirementIds(context) };
82
+ }
83
+ function fromCucumber(item, feature, file, execution, context) {
84
+ const steps = Array.isArray(item.steps) ? item.steps : [];
85
+ const failedStep = steps.find((step) => ["failed", "undefined"].includes(String(record(step).result?.status ?? "")));
86
+ const result = record(failedStep ? record(failedStep).result : undefined);
87
+ const source = sourceValue(item.location) ?? (file ? { file, line: numberValue(record(item.location).line) } : undefined);
88
+ const tags = arrayValue(item.tags).map((tag) => typeof tag === "string" ? tag : stringValue(record(tag).name) ?? "").filter(Boolean);
89
+ const taggedRequirements = tags.map((tag) => tag.replace(/^@/, "")).filter((tag) => (context.contract.requirements ?? []).some((requirement) => requirement.id === tag));
90
+ return { feature, rule: stringValue(item.rule), scenario: stringValue(item.name) ?? "scenario", tags, status: failedStep ? "FAIL" : execution.exitCode === 0 ? "PASS" : "FAIL", durationMs: numberValue(item.duration) ?? numberValue(result.duration), failingStep: failedStep ? stringValue(record(failedStep).text ?? record(failedStep).keyword) : undefined, source, error: stringValue(result.message ?? result.error_message), requirementIds: taggedRequirements.length ? taggedRequirements : requirementIds(context) };
91
+ }
92
+ function requirementIds(context) { return (context.contract.requirements ?? []).filter((item) => item.capabilities?.includes("bdd") || !item.capabilities?.length).map((item) => item.id); }
93
+ function renderCommand(command, context) { return command.replaceAll("{taskId}", context.contract.task.id).replaceAll("{baseRef}", context.baseRef ?? "HEAD").replaceAll("{acceptance}", context.contract.source?.acceptance ?? ""); }
94
+ async function readPackageJson(root) { try {
95
+ return JSON.parse(await fs.readFile(path.join(root, "package.json"), "utf8"));
96
+ }
97
+ catch {
98
+ return undefined;
99
+ } }
100
+ function record(value) { return value && typeof value === "object" && !Array.isArray(value) ? value : {}; }
101
+ function stringValue(value) { return typeof value === "string" || typeof value === "number" ? String(value) : undefined; }
102
+ function numberValue(value) { return typeof value === "number" && Number.isFinite(value) ? value : undefined; }
103
+ function arrayValue(value) { return Array.isArray(value) ? value.map((item) => typeof item === "string" ? item : stringValue(record(item).name) ?? "").filter(Boolean) : []; }
104
+ function sourceValue(value) { const source = record(value); const file = stringValue(source.file ?? source.uri ?? source.path); const line = numberValue(source.line); const column = numberValue(source.column); return file || line || column ? { file, line, column } : undefined; }
105
+ function statusValue(value, exitCode) { const status = String(value ?? "").toLowerCase(); if (["skipped", "pending", "undefined"].includes(status))
106
+ return "SKIP"; return status === "failed" || status === "fail" || exitCode !== 0 ? "FAIL" : "PASS"; }
107
+ //# sourceMappingURL=bddExecution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bddExecution.js","sourceRoot":"","sources":["../../../src/providers/validation/bddExecution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ValidationCapability } from "../../core/types.js";
2
+ import type { IntegrationEnvironmentResult, ProviderDetection, ProviderDoctorResult, ProviderExecution, ProviderPlan, ValidationProvider, ValidationProviderContext } from "./types.js";
3
+ export declare class IntegrationEnvironmentProvider implements ValidationProvider<IntegrationEnvironmentResult> {
4
+ readonly id = "integration-environment";
5
+ readonly capabilities: ValidationCapability[];
6
+ detect(context: ValidationProviderContext): Promise<ProviderDetection | undefined>;
7
+ doctor(context: ValidationProviderContext): Promise<ProviderDoctorResult>;
8
+ plan(context: ValidationProviderContext, detection?: ProviderDetection): Promise<ProviderPlan>;
9
+ execute(context: ValidationProviderContext, plan: ProviderPlan): Promise<ProviderExecution>;
10
+ normalize(context: ValidationProviderContext, execution: ProviderExecution): Promise<IntegrationEnvironmentResult>;
11
+ }
12
+ export declare function validateEnvironmentRequirements(context: ValidationProviderContext): string[];
@@ -0,0 +1,101 @@
1
+ import { commandExists } from "../../utils/process.js";
2
+ import { configuredCommand, doctorForCommand, executePlan, resolveCwd } from "./providerUtils.js";
3
+ import { persistRawArtifact } from "./protocol.js";
4
+ export class IntegrationEnvironmentProvider {
5
+ id = "integration-environment";
6
+ capabilities = ["integration-test"];
7
+ async detect(context) {
8
+ const configured = await configuredCommand(context);
9
+ const options = context.spec?.options ?? context.providerSpec?.options ?? {};
10
+ if (configured.command || typeof options.provisionCommand === "string")
11
+ return { provider: configured.provider === "configured-command" ? String(options.provider ?? "configured-environment") : configured.provider, command: configured.command ?? String(options.provisionCommand), runtime: "oci-or-project", reason: "explicit integration environment lifecycle" };
12
+ if (typeof options.image === "string" && (await commandExists("podman", context.root) || await commandExists("docker", context.root)))
13
+ return { provider: "oci", command: `${await commandExists("podman", context.root) ? "podman" : "docker"} run --rm --network=none ${options.image}`, runtime: "oci", reason: "explicit OCI image and available runtime" };
14
+ return undefined;
15
+ }
16
+ async doctor(context) {
17
+ const detection = await this.detect(context);
18
+ if (!detection)
19
+ return { provider: this.id, available: false, message: "No integration environment provider was configured." };
20
+ const security = validateEnvironmentRequirements(context);
21
+ if (security.length)
22
+ return { provider: detection.provider, available: false, message: security.join(" "), details: { securityFailures: security } };
23
+ return doctorForCommand(detection.command, resolveCwd(context), detection.provider, { runtime: detection.runtime });
24
+ }
25
+ async plan(context, detection) {
26
+ const selected = detection ?? await this.detect(context);
27
+ if (!selected?.command)
28
+ throw new Error("No integration environment provider or lifecycle command is configured.");
29
+ return { provider: selected.provider, capability: "integration-test", command: selected.command, cwd: resolveCwd(context), runtime: selected.runtime, env: connectionData(context), options: { timeoutMs: (context.spec?.timeoutSeconds ?? context.providerSpec?.timeoutSeconds ?? 900) * 1000 } };
30
+ }
31
+ async execute(context, plan) {
32
+ const options = context.spec?.options ?? context.providerSpec?.options ?? {};
33
+ const lifecycle = [];
34
+ const provision = String(options.provisionCommand ?? plan.command);
35
+ const readiness = typeof options.readinessCommand === "string" ? options.readinessCommand : undefined;
36
+ const test = typeof options.testCommand === "string" ? options.testCommand : undefined;
37
+ const cleanup = typeof options.cleanupCommand === "string" ? options.cleanupCommand : undefined;
38
+ const started = Date.now();
39
+ let stdout = "";
40
+ let stderr = "";
41
+ let exitCode = 0;
42
+ const run = async (label, command) => { const result = await executePlan({ ...plan, command }); stdout += `--- ${label} ---\n${result.stdout}\n`; stderr += result.stderr ? `--- ${label} stderr ---\n${result.stderr}\n` : ""; if (result.exitCode !== 0 && exitCode === 0)
43
+ exitCode = result.exitCode; lifecycle.push(`${label}:${result.exitCode === 0 ? "PASS" : "FAIL"}`); };
44
+ try {
45
+ await run("provision", provision);
46
+ if (readiness)
47
+ await run("readiness", readiness);
48
+ if (test)
49
+ await run("test", test);
50
+ }
51
+ finally {
52
+ if (cleanup)
53
+ await run("cleanup", cleanup);
54
+ }
55
+ return { plan, exitCode, stdout: `${lifecycle.join(" ")}\n${stdout}`, stderr, durationMs: Date.now() - started, rawArtifact: await persistRawArtifact(context.root, context.rawArtifactDirectory, context.spec?.id ?? context.providerSpec?.id ?? "integration-environment", stdout, stderr) };
56
+ }
57
+ async normalize(context, execution) {
58
+ const lifecycle = { provisioned: /provision:PASS/.test(execution.stdout), ready: !/readiness:FAIL/.test(execution.stdout), tested: !/test:FAIL/.test(execution.stdout), cleaned: /cleanup:PASS/.test(execution.stdout), durationMs: execution.durationMs };
59
+ const requirements = environmentRequirements(context);
60
+ const failed = execution.exitCode !== 0 || !lifecycle.provisioned || !lifecycle.cleaned;
61
+ return { version: 1, provider: execution.plan.provider, capability: "integration-test", status: failed ? "FAIL" : "PASS", requirements, lifecycle, connectionData: redactConnectionData(execution.plan.env), rawArtifact: execution.rawArtifact };
62
+ }
63
+ }
64
+ export function validateEnvironmentRequirements(context) {
65
+ const options = context.spec?.options ?? context.providerSpec?.options ?? {};
66
+ const failures = [];
67
+ const network = String(options.network ?? "isolated");
68
+ if (!["isolated", "none", "project"].includes(network))
69
+ failures.push(`Unsupported integration network '${network}'.`);
70
+ if (options.privileged === true)
71
+ failures.push("Privileged integration environments are not allowed by default.");
72
+ if (network === "host")
73
+ failures.push("Host networking must not be implicit.");
74
+ if (options.dockerSocket === true)
75
+ failures.push("Docker socket access is not allowed by default.");
76
+ if (Array.isArray(options.mounts) && options.mounts.some((mount) => String(mount).startsWith("/")))
77
+ failures.push("Absolute host mounts require an explicit policy adapter.");
78
+ if (Array.isArray(options.credentials) && options.credentials.length && options.credentialsAllowlist !== true)
79
+ failures.push("Credentials require an explicit allowlist.");
80
+ const data = options.connectionData;
81
+ if (data && typeof data === "object" && !Array.isArray(data) && Object.keys(data).some((key) => /(password|token|secret|private.?key)/i.test(key)) && options.connectionDataAllowlist !== true)
82
+ failures.push("Sensitive connection data requires an explicit allowlist.");
83
+ return failures;
84
+ }
85
+ function environmentRequirements(context) {
86
+ const options = context.spec?.options ?? context.providerSpec?.options ?? {};
87
+ const network = String(options.network ?? "isolated");
88
+ return [{ kind: String(options.kind ?? "service"), image: typeof options.image === "string" ? options.image : undefined, network, ephemeral: options.ephemeral !== false, ports: Array.isArray(options.ports) ? options.ports.map(Number).filter(Number.isFinite) : undefined, environment: Array.isArray(options.environment) ? options.environment.map(String) : undefined, mounts: Array.isArray(options.mounts) ? options.mounts.map(String) : undefined }];
89
+ }
90
+ function connectionData(context) {
91
+ const value = context.spec?.options?.connectionData ?? context.providerSpec?.options?.connectionData;
92
+ if (!value || typeof value !== "object" || Array.isArray(value))
93
+ return undefined;
94
+ return Object.fromEntries(Object.entries(value).filter(([, item]) => typeof item === "string").map(([key, item]) => [key, item]));
95
+ }
96
+ function redactConnectionData(value) {
97
+ if (!value)
98
+ return undefined;
99
+ return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, /(password|token|secret|private.?key)/i.test(key) ? "<redacted>" : item]));
100
+ }
101
+ //# sourceMappingURL=integrationEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrationEnvironment.js","sourceRoot":"","sources":["../../../src/providers/validation/integrationEnvironment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ValidationCapability } from "../../core/types.js";
2
+ import type { ContractVerificationResult, ProviderDetection, ProviderDoctorResult, ProviderExecution, ProviderPlan, ValidationProvider, ValidationProviderContext } from "./types.js";
3
+ export declare class PactContractTestingProvider implements ValidationProvider<ContractVerificationResult> {
4
+ readonly id = "pact";
5
+ readonly capabilities: ValidationCapability[];
6
+ detect(context: ValidationProviderContext): Promise<ProviderDetection | undefined>;
7
+ doctor(context: ValidationProviderContext): Promise<ProviderDoctorResult>;
8
+ plan(context: ValidationProviderContext, detection?: ProviderDetection): Promise<ProviderPlan>;
9
+ execute(context: ValidationProviderContext, plan: ProviderPlan): Promise<ProviderExecution>;
10
+ normalize(context: ValidationProviderContext, execution: ProviderExecution): Promise<ContractVerificationResult>;
11
+ }
12
+ export declare function runPactVerification(context: ValidationProviderContext, provider?: ValidationProvider<ContractVerificationResult>): Promise<{
13
+ result: ContractVerificationResult;
14
+ required: boolean;
15
+ }>;