agentic-engineering-harness 0.6.29 → 0.8.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.
Files changed (128) hide show
  1. package/dist/agents/permissions.js +4 -3
  2. package/dist/agents/permissions.js.map +1 -1
  3. package/dist/cli.js +34 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/context/compression/headroom.d.ts +6 -1
  6. package/dist/context/compression/headroom.js +60 -15
  7. package/dist/context/compression/headroom.js.map +1 -1
  8. package/dist/context/compression/types.d.ts +1 -0
  9. package/dist/context/gateway.d.ts +1 -0
  10. package/dist/context/gateway.js +58 -44
  11. package/dist/context/gateway.js.map +1 -1
  12. package/dist/context/repository/serena.d.ts +1 -1
  13. package/dist/context/repository/serena.js +2 -1
  14. package/dist/context/repository/serena.js.map +1 -1
  15. package/dist/context/transport.d.ts +33 -0
  16. package/dist/context/transport.js +63 -0
  17. package/dist/context/transport.js.map +1 -0
  18. package/dist/core/config.js +5 -5
  19. package/dist/core/config.js.map +1 -1
  20. package/dist/core/init.js +2 -1
  21. package/dist/core/init.js.map +1 -1
  22. package/dist/core/run.js +6 -2
  23. package/dist/core/run.js.map +1 -1
  24. package/dist/core/sdd.js +2 -2
  25. package/dist/core/sdd.js.map +1 -1
  26. package/dist/core/types.d.ts +53 -1
  27. package/dist/core/verify.js +2 -1
  28. package/dist/core/verify.js.map +1 -1
  29. package/dist/delivery/finalize.d.ts +1 -1
  30. package/dist/delivery/finalize.js +6 -1
  31. package/dist/delivery/finalize.js.map +1 -1
  32. package/dist/evals/fullStack.d.ts +10 -7
  33. package/dist/evals/fullStack.js +132 -36
  34. package/dist/evals/fullStack.js.map +1 -1
  35. package/dist/evidence/graph.d.ts +1 -0
  36. package/dist/evidence/graph.js +28 -11
  37. package/dist/evidence/graph.js.map +1 -1
  38. package/dist/issues/intake.d.ts +1 -1
  39. package/dist/maturity/inventory.d.ts +30 -0
  40. package/dist/maturity/inventory.js +53 -0
  41. package/dist/maturity/inventory.js.map +1 -0
  42. package/dist/memory/candidates.d.ts +29 -0
  43. package/dist/memory/candidates.js +31 -0
  44. package/dist/memory/candidates.js.map +1 -0
  45. package/dist/paseo/launchSpec.js +4 -4
  46. package/dist/paseo/launchSpec.js.map +1 -1
  47. package/dist/provenance/generate.d.ts +27 -1
  48. package/dist/provenance/generate.js +233 -75
  49. package/dist/provenance/generate.js.map +1 -1
  50. package/dist/providers/engram.d.ts +1 -0
  51. package/dist/providers/engram.js +40 -8
  52. package/dist/providers/engram.js.map +1 -1
  53. package/dist/providers/graphify.d.ts +20 -1
  54. package/dist/providers/graphify.js +106 -26
  55. package/dist/providers/graphify.js.map +1 -1
  56. package/dist/providers/serenaMcp.d.ts +7 -0
  57. package/dist/providers/serenaMcp.js +77 -0
  58. package/dist/providers/serenaMcp.js.map +1 -0
  59. package/dist/providers/validation/bddExecution.d.ts +15 -0
  60. package/dist/providers/validation/bddExecution.js +107 -0
  61. package/dist/providers/validation/bddExecution.js.map +1 -0
  62. package/dist/providers/validation/integrationEnvironment.d.ts +12 -0
  63. package/dist/providers/validation/integrationEnvironment.js +101 -0
  64. package/dist/providers/validation/integrationEnvironment.js.map +1 -0
  65. package/dist/providers/validation/pact.d.ts +15 -0
  66. package/dist/providers/validation/pact.js +79 -0
  67. package/dist/providers/validation/pact.js.map +1 -0
  68. package/dist/providers/validation/protocol.d.ts +7 -0
  69. package/dist/providers/validation/protocol.js +35 -0
  70. package/dist/providers/validation/protocol.js.map +1 -0
  71. package/dist/providers/validation/providerUtils.d.ts +18 -0
  72. package/dist/providers/validation/providerUtils.js +40 -0
  73. package/dist/providers/validation/providerUtils.js.map +1 -0
  74. package/dist/providers/validation/registry.d.ts +21 -0
  75. package/dist/providers/validation/registry.js +59 -0
  76. package/dist/providers/validation/registry.js.map +1 -0
  77. package/dist/providers/validation/reqnroll.d.ts +7 -0
  78. package/dist/providers/validation/reqnroll.js +50 -0
  79. package/dist/providers/validation/reqnroll.js.map +1 -0
  80. package/dist/providers/validation/testExecution.d.ts +15 -0
  81. package/dist/providers/validation/testExecution.js +122 -0
  82. package/dist/providers/validation/testExecution.js.map +1 -0
  83. package/dist/providers/validation/types.d.ts +158 -0
  84. package/dist/providers/validation/types.js +2 -0
  85. package/dist/providers/validation/types.js.map +1 -0
  86. package/dist/providers/versions.d.ts +10 -0
  87. package/dist/providers/versions.js +3 -0
  88. package/dist/providers/versions.js.map +1 -0
  89. package/dist/spec/openspec.js +12 -7
  90. package/dist/spec/openspec.js.map +1 -1
  91. package/dist/telemetry/events.js +36 -37
  92. package/dist/telemetry/events.js.map +1 -1
  93. package/dist/telemetry/otlp.d.ts +2 -1
  94. package/dist/telemetry/otlp.js +20 -41
  95. package/dist/telemetry/otlp.js.map +1 -1
  96. package/dist/telemetry/tracing.d.ts +19 -0
  97. package/dist/telemetry/tracing.js +141 -0
  98. package/dist/telemetry/tracing.js.map +1 -0
  99. package/dist/toolchain/config.js +3 -2
  100. package/dist/toolchain/config.js.map +1 -1
  101. package/dist/validators/external.js +6 -5
  102. package/dist/validators/external.js.map +1 -1
  103. package/dist/validators/gherkin.js +5 -56
  104. package/dist/validators/gherkin.js.map +1 -1
  105. package/dist/validators/registry.js +42 -3
  106. package/dist/validators/registry.js.map +1 -1
  107. package/dist/validators/toolEvidence.d.ts +2 -22
  108. package/dist/validators/toolEvidence.js +38 -5
  109. package/dist/validators/toolEvidence.js.map +1 -1
  110. package/dist/validators/types.d.ts +2 -1
  111. package/dist/workers/agentPrompt.js +5 -3
  112. package/dist/workers/agentPrompt.js.map +1 -1
  113. package/docs/ARCHITECTURE.md +60 -2
  114. package/docs/COMPONENT_MATURITY.md +19 -15
  115. package/docs/OSS_STACK.md +5 -4
  116. package/docs/V0.2.md +4 -1
  117. package/docs/VALIDATION.md +54 -3
  118. package/docs/VALIDATION_COMPATIBILITY.md +19 -0
  119. package/docs/component-maturity.json +34 -0
  120. package/maturity/components.yaml +59 -0
  121. package/package.json +8 -1
  122. package/schemas/project.schema.json +3 -3
  123. package/schemas/validation-report.schema.json +2 -1
  124. package/schemas/validation-result.schema.json +84 -0
  125. package/scripts/headroom-bridge.py +88 -0
  126. package/templates/project.yaml +1 -0
  127. package/templates/provider-versions.json +10 -0
  128. package/templates/toolchain.yaml +12 -4
@@ -0,0 +1,158 @@
1
+ import type { HarnessProjectConfig, TaskContract, ValidationCapability, ValidationProviderSpec, ValidatorSpec } from "../../core/types.js";
2
+ export type ProviderStatus = "PASS" | "FAIL" | "SKIP";
3
+ export interface ValidationProviderContext {
4
+ root: string;
5
+ config: HarnessProjectConfig;
6
+ contract: TaskContract;
7
+ capability: ValidationCapability;
8
+ spec?: ValidatorSpec;
9
+ providerSpec?: ValidationProviderSpec;
10
+ rawArtifactDirectory: string;
11
+ baseRef?: string;
12
+ }
13
+ export interface ProviderDetection {
14
+ provider: string;
15
+ reason: string;
16
+ command?: string;
17
+ runtime?: string;
18
+ }
19
+ export interface ProviderDoctorResult {
20
+ provider: string;
21
+ available: boolean;
22
+ message: string;
23
+ details?: Record<string, unknown>;
24
+ }
25
+ export interface ProviderPlan {
26
+ provider: string;
27
+ capability: ValidationCapability;
28
+ command: string;
29
+ cwd: string;
30
+ runtime?: string;
31
+ env?: Record<string, string>;
32
+ options?: Record<string, unknown>;
33
+ }
34
+ export interface ProviderExecution {
35
+ plan: ProviderPlan;
36
+ exitCode: number;
37
+ stdout: string;
38
+ stderr: string;
39
+ durationMs: number;
40
+ rawArtifact: string;
41
+ }
42
+ export interface TestFailure {
43
+ id?: string;
44
+ message: string;
45
+ source?: {
46
+ file?: string;
47
+ line?: number;
48
+ column?: number;
49
+ };
50
+ }
51
+ export interface TestExecutionResult {
52
+ version: 1;
53
+ provider: string;
54
+ capability: ValidationCapability;
55
+ command: string;
56
+ runtime?: string;
57
+ status: ProviderStatus;
58
+ summary: {
59
+ total: number;
60
+ passed: number;
61
+ failed: number;
62
+ skipped: number;
63
+ durationMs: number;
64
+ };
65
+ failures: TestFailure[];
66
+ requirements: string[];
67
+ rawArtifact: string;
68
+ }
69
+ export interface BddScenarioResult {
70
+ feature: string;
71
+ rule?: string;
72
+ scenario: string;
73
+ examplesRow?: number;
74
+ tags: string[];
75
+ status: ProviderStatus;
76
+ durationMs?: number;
77
+ failingStep?: string;
78
+ source?: {
79
+ file?: string;
80
+ line?: number;
81
+ column?: number;
82
+ };
83
+ error?: string;
84
+ requirementIds: string[];
85
+ }
86
+ export interface BddExecutionResult {
87
+ version: 1;
88
+ provider: string;
89
+ capability: "bdd";
90
+ command: string;
91
+ runtime?: string;
92
+ status: ProviderStatus;
93
+ scenarios: BddScenarioResult[];
94
+ summary: {
95
+ total: number;
96
+ passed: number;
97
+ failed: number;
98
+ skipped: number;
99
+ durationMs: number;
100
+ };
101
+ rawArtifact: string;
102
+ }
103
+ export interface IntegrationEnvironmentRequirement {
104
+ kind: string;
105
+ image?: string;
106
+ network: "isolated" | "none" | "project";
107
+ ephemeral: boolean;
108
+ ports?: number[];
109
+ environment?: string[];
110
+ mounts?: string[];
111
+ }
112
+ export interface IntegrationEnvironmentResult {
113
+ version: 1;
114
+ provider: string;
115
+ capability: "integration-test";
116
+ status: ProviderStatus;
117
+ requirements: IntegrationEnvironmentRequirement[];
118
+ lifecycle: {
119
+ provisioned: boolean;
120
+ ready: boolean;
121
+ tested: boolean;
122
+ cleaned: boolean;
123
+ durationMs: number;
124
+ };
125
+ connectionData?: Record<string, string>;
126
+ rawArtifact: string;
127
+ }
128
+ export interface ContractVerificationResult {
129
+ version: 1;
130
+ provider: string;
131
+ capability: "contract-test";
132
+ status: ProviderStatus;
133
+ verifierCommand: string;
134
+ pactFile?: string;
135
+ providerUrl?: string;
136
+ summary: {
137
+ total: number;
138
+ passed: number;
139
+ failed: number;
140
+ durationMs: number;
141
+ };
142
+ failures: TestFailure[];
143
+ requirements: string[];
144
+ rawArtifact: string;
145
+ }
146
+ export interface ValidationProvider<T> {
147
+ readonly id: string;
148
+ readonly capabilities: ValidationCapability[];
149
+ detect(context: ValidationProviderContext): Promise<ProviderDetection | undefined>;
150
+ doctor(context: ValidationProviderContext): Promise<ProviderDoctorResult>;
151
+ plan(context: ValidationProviderContext, detection?: ProviderDetection): Promise<ProviderPlan>;
152
+ execute(context: ValidationProviderContext, plan: ProviderPlan): Promise<ProviderExecution>;
153
+ normalize(context: ValidationProviderContext, execution: ProviderExecution): Promise<T>;
154
+ }
155
+ export type TestExecutionProvider = ValidationProvider<TestExecutionResult>;
156
+ export type BddExecutionProvider = ValidationProvider<BddExecutionResult>;
157
+ export type ContractTestingProvider = ValidationProvider<ContractVerificationResult>;
158
+ export type IntegrationEnvironmentProviderContract = ValidationProvider<IntegrationEnvironmentResult>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/validation/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export declare const providerVersions: {
2
+ headroom: string;
3
+ graphify: string;
4
+ engram: string;
5
+ serena: string;
6
+ trivy: string;
7
+ opengrep: string;
8
+ playwright: string;
9
+ pnpm: string;
10
+ };
@@ -0,0 +1,3 @@
1
+ import versions from "../../templates/provider-versions.json" with { type: "json" };
2
+ export const providerVersions = versions;
3
+ //# sourceMappingURL=versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/providers/versions.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,wCAAwC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEpF,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAS/B,CAAC"}
@@ -103,7 +103,7 @@ export async function compileOpenSpecChange(root, config, taskId, title, changeN
103
103
  git: { baseRef: config.validation?.baseRef ?? "main", ...(originatingBranch ? { originatingBranch } : {}) },
104
104
  scope: { allowed: ["**"], forbidden: [], frozen: [] },
105
105
  routing: { intent: "implement", domains: [], risk: "medium" },
106
- requirements: ids.map((id, index) => ({ id, description: requirementSources[index].title, validators: [requirementValidation.id] })),
106
+ requirements: ids.map((id, index) => ({ id, description: requirementSources[index].title, validators: [requirementValidation.id], ...(requirementValidation.capability ? { capabilities: [requirementValidation.capability] } : {}) })),
107
107
  constraints: { breakingApiChanges: false, newDependencies: false, schemaChanges: false },
108
108
  repair: { maxAttempts: config.orchestration?.worker?.maxRepairAttempts ?? 2 },
109
109
  ...(requirementValidation.command ? { verification: { commands: [requirementValidation.command] } } : {})
@@ -153,11 +153,14 @@ async function resolveRequirementValidation(root, config) {
153
153
  return { id };
154
154
  const validator = (config.validation?.validators ?? []).find((item) => item.id === id && item.required !== false);
155
155
  if (validator)
156
- return { id };
156
+ return { id, capability: capabilityForAdapter(validator.adapter) };
157
157
  }
158
158
  const validator = config.validation?.validators?.find((item) => item.required !== false);
159
159
  if (validator)
160
- return { id: validator.id };
160
+ return { id: validator.id, capability: capabilityForAdapter(validator.adapter) };
161
+ const provider = config.validation?.providers?.find((item) => item.required !== false);
162
+ if (provider)
163
+ return { id: provider.id, capability: provider.capability };
161
164
  const command = config.validation?.commands?.find((item) => item.required !== false);
162
165
  if (command)
163
166
  return { id: command.id };
@@ -167,10 +170,7 @@ async function resolveRequirementValidation(root, config) {
167
170
  if (typeof scripts[id] === "string" && scripts[id].trim())
168
171
  return { id, command: { id, command: id === "test" ? "npm test" : `npm run ${id}`, required: true, timeoutSeconds: 900 } };
169
172
  }
170
- const rootFiles = await fs.readdir(root).catch(() => []);
171
- if (rootFiles.some((name) => name.endsWith(".sln") || name.endsWith(".slnx") || name.endsWith(".csproj")) || rootFiles.includes("global.json"))
172
- return { id: "test", command: { id: "test", command: "dotnet test", required: true, timeoutSeconds: 1200 } };
173
- throw new Error("OpenSpec compilation requires deterministic requirement validation. Configure validation.commands/validators or provide a project test/typecheck/build script (or a .NET solution/project) before compiling the SPEC.");
173
+ throw new Error("OpenSpec compilation requires deterministic requirement validation. Configure validation.commands/validators/providers or provide a project test/typecheck/build script before compiling the SPEC.");
174
174
  }
175
175
  async function readPackageJson(root) { try {
176
176
  return JSON.parse(await fs.readFile(path.join(root, "package.json"), "utf8"));
@@ -178,6 +178,11 @@ async function readPackageJson(root) { try {
178
178
  catch {
179
179
  return undefined;
180
180
  } }
181
+ function capabilityForAdapter(adapter) { if (["gherkin", "bdd"].includes(adapter))
182
+ return "bdd"; if (["test-execution", "unit-test"].includes(adapter))
183
+ return "unit-test"; if (["integration-test", "integration-environment"].includes(adapter))
184
+ return "integration-test"; if (["pact", "contract-test"].includes(adapter))
185
+ return "contract-test"; return undefined; }
181
186
  function approvedOutcome(proposal) { const outcome = proposal.match(/##\s+(?:Desired outcome|Why|What Changes)\s*\n([\s\S]*?)(?=\n##\s|$)/i)?.[1]?.trim(); return outcome || proposal.trim(); }
182
187
  async function collectMarkdown(dir) { const result = []; async function visit(current) { const entries = await fs.readdir(current, { withFileTypes: true }).catch(() => []); for (const entry of entries) {
183
188
  const full = path.join(current, entry.name);
@@ -1 +1 @@
1
- {"version":3,"file":"openspec.js","sourceRoot":"","sources":["../../src/spec/openspec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openspec.js","sourceRoot":"","sources":["../../src/spec/openspec.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,8 @@
1
- import crypto from "node:crypto";
2
1
  import fs from "node:fs/promises";
3
2
  import path from "node:path";
4
- import { trace } from "@opentelemetry/api";
5
3
  import { updateCurrentOperationPhase } from "../operations/state.js";
6
- import { exportEventSpan } from "./otlp.js";
7
- const operationTraces = new Map();
4
+ import { finishPhase, finishTracing, markSpanError, safeAttributes, startEventSpan } from "./tracing.js";
5
+ import { SpanStatusCode } from "@opentelemetry/api";
8
6
  export async function recordEvent(root, config, name, attributes) {
9
7
  const phase = operationPhaseForEvent(name);
10
8
  if (phase)
@@ -13,45 +11,31 @@ export async function recordEvent(root, config, name, attributes) {
13
11
  return;
14
12
  const at = new Date();
15
13
  const operationId = typeof attributes.operationId === "string" ? attributes.operationId : typeof attributes.taskId === "string" ? attributes.taskId : undefined;
16
- const operationTrace = operationId ? traceFor(operationId, name) : undefined;
17
- const tracer = trace.getTracer("agentic-engineering-harness");
18
- const span = tracer.startSpan(name);
19
- for (const [key, value] of Object.entries(attributes)) {
20
- if (["string", "number", "boolean"].includes(typeof value))
21
- span.setAttribute(key, value);
22
- }
23
- span.end();
24
- const relative = config.telemetry?.localEventsFile ?? ".harness/telemetry/events.ndjson";
25
- const file = path.resolve(root, relative);
26
- await fs.mkdir(path.dirname(file), { recursive: true });
27
- await fs.appendFile(file, `${JSON.stringify({ at: at.toISOString(), name, traceId: operationTrace?.traceId, spanId: operationTrace?.spanId, parentSpanId: operationTrace?.parentSpanId, attributes })}\n`);
28
- try {
29
- await exportEventSpan(config, name, attributes, at, operationTrace);
30
- }
31
- catch (error) {
32
- if (config.telemetry?.required)
33
- throw error;
34
- await fs.appendFile(file, `${JSON.stringify({ at: new Date().toISOString(), name: "harness.telemetry.export.error", attributes: { sourceEvent: name, error: String(error) } })}\n`);
35
- }
36
- }
37
- export function resetOperationTrace(operationId) { if (operationId)
38
- operationTraces.delete(operationId);
39
- else
40
- operationTraces.clear(); }
41
- function traceFor(operationId, name) {
42
- const existing = operationTraces.get(operationId);
43
- const root = !existing || /(?:operation|run|audit)\.start$/.test(name);
44
- const traceId = root ? crypto.randomBytes(16).toString("hex") : existing.traceId;
45
- const parentSpanId = root ? undefined : existing.lastSpanId;
46
- const spanId = crypto.randomBytes(8).toString("hex");
47
- operationTraces.set(operationId, { traceId, lastSpanId: spanId });
48
- return { traceId, parentSpanId, spanId };
14
+ const localFile = path.resolve(root, config.telemetry?.localEventsFile ?? ".harness/telemetry/events.ndjson");
15
+ const safe = safeAttributes(attributes);
16
+ const started = startEventSpan(config, operationId, name, phase, { ...safe, "aeh.local_file": localFile });
17
+ const failed = attributes.status === "FAIL" || attributes.status === "FAILED" || typeof attributes.error === "string";
18
+ if (failed)
19
+ markSpanError(started.span, typeof attributes.error === "string" ? attributes.error : undefined);
20
+ else
21
+ started.span.setStatus({ code: SpanStatusCode.OK });
22
+ const spanContext = started.span.spanContext();
23
+ started.span.end();
24
+ await fs.mkdir(path.dirname(localFile), { recursive: true });
25
+ await fs.appendFile(localFile, `${JSON.stringify({ at: at.toISOString(), name, traceId: spanContext.traceId, spanId: spanContext.spanId, parentSpanId: started.parentSpanId, status: failed ? "ERROR" : "OK", attributes: safe })}\n`);
26
+ if (operationId && isPhaseTerminal(name, phase))
27
+ finishPhase(operationId, phase);
28
+ if (operationId && isOperationTerminal(name))
29
+ await finishTracing(config, operationId);
49
30
  }
31
+ export function resetOperationTrace(operationId) { void operationId; /* SDK context owns propagation; retained for API compatibility. */ }
50
32
  function operationPhaseForEvent(name) {
51
33
  if (name === "harness.run.start")
52
34
  return "executing";
53
35
  if (name.includes("planner") || name.includes("wave"))
54
36
  return "planning";
37
+ if (name.includes("verify") || name.includes("validation") || name.includes("graphify"))
38
+ return "validation";
55
39
  if (name === "harness.repair.start" || name.includes("remediation"))
56
40
  return "remediation";
57
41
  if (name.includes("review"))
@@ -60,6 +44,21 @@ function operationPhaseForEvent(name) {
60
44
  return "delivery";
61
45
  if (name === "harness.audit.start")
62
46
  return "preparing-audit";
47
+ if (name.includes("context"))
48
+ return "context";
49
+ if (name.includes("provenance"))
50
+ return "provenance";
63
51
  return undefined;
64
52
  }
53
+ function isPhaseTerminal(name, phase) {
54
+ if (!phase)
55
+ return false;
56
+ return (phase === "validation" && name === "harness.verify.finish") ||
57
+ (phase === "review" && name === "harness.review.finish") ||
58
+ (phase === "delivery" && name === "harness.delivery.finalize") ||
59
+ (phase === "planning" && name === "harness.plan.ready");
60
+ }
61
+ function isOperationTerminal(name) {
62
+ return new Set(["harness.run.finish", "harness.audit.finish", "harness.change.finish", "harness.quick.finish", "operation.finish", "operation.completed", "operation.failed"]).has(name);
63
+ }
65
64
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/telemetry/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/telemetry/events.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,6 @@ export interface TraceContext {
4
4
  parentSpanId?: string;
5
5
  spanId: string;
6
6
  }
7
- export declare function exportEventSpan(config: HarnessProjectConfig, name: string, attributes: Record<string, unknown>, at?: Date, context?: TraceContext): Promise<void>;
7
+ /** Compatibility entry point backed by the official OpenTelemetry SDK. */
8
+ export declare function exportEventSpan(config: HarnessProjectConfig, name: string, attributes: Record<string, unknown>, _at?: Date, parent?: TraceContext): Promise<void>;
8
9
  export declare function resolveEndpoint(config: HarnessProjectConfig): string | undefined;
@@ -1,33 +1,26 @@
1
- import crypto from "node:crypto";
2
- export async function exportEventSpan(config, name, attributes, at = new Date(), context) {
1
+ import { context, trace } from "@opentelemetry/api";
2
+ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
3
+ import { resourceFromAttributes } from "@opentelemetry/resources";
4
+ import { AlwaysOnSampler, SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
5
+ import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
6
+ /** Compatibility entry point backed by the official OpenTelemetry SDK. */
7
+ export async function exportEventSpan(config, name, attributes, _at = new Date(), parent) {
3
8
  if (config.telemetry?.exporter !== "otlp-http-json")
4
9
  return;
5
10
  const endpoint = resolveEndpoint(config);
6
11
  if (!endpoint)
7
12
  throw new Error("OTLP exporter is enabled but no endpoint is configured.");
8
- const nanos = (BigInt(at.getTime()) * 1000000n).toString();
9
- const payload = {
10
- resourceSpans: [{
11
- resource: { attributes: [attribute("service.name", config.telemetry?.serviceName ?? process.env.OTEL_SERVICE_NAME ?? config.project.name)] },
12
- scopeSpans: [{
13
- scope: { name: "agentic-engineering-harness", version: "0.3.0" },
14
- spans: [{
15
- traceId: context?.traceId ?? crypto.randomBytes(16).toString("hex"), spanId: context?.spanId ?? crypto.randomBytes(8).toString("hex"), ...(context?.parentSpanId ? { parentSpanId: context.parentSpanId } : {}), name, kind: 1,
16
- startTimeUnixNano: nanos, endTimeUnixNano: nanos,
17
- attributes: Object.entries(attributes).flatMap(([key, value]) => value === undefined || value === null ? [] : [attribute(key, value)]),
18
- status: { code: 1 }
19
- }]
20
- }]
21
- }]
22
- };
23
- const response = await fetch(endpoint, {
24
- method: "POST",
25
- headers: { "content-type": "application/json", ...environmentHeaders(), ...(config.telemetry?.headers ?? {}) },
26
- body: JSON.stringify(payload),
27
- signal: AbortSignal.timeout(10_000)
13
+ const provider = new NodeTracerProvider({
14
+ sampler: new AlwaysOnSampler(),
15
+ resource: resourceFromAttributes({ "service.name": config.telemetry?.serviceName ?? process.env.OTEL_SERVICE_NAME ?? config.project.name }),
16
+ spanProcessors: [new SimpleSpanProcessor(new OTLPTraceExporter({ url: endpoint, headers: config.telemetry.headers }))]
28
17
  });
29
- if (!response.ok)
30
- throw new Error(`OTLP exporter returned HTTP ${response.status}: ${await response.text()}`);
18
+ const parentContext = parent ? trace.setSpanContext(context.active(), spanContext(parent)) : context.active();
19
+ const span = provider.getTracer("agentic-engineering-harness").startSpan(name, { attributes: safeAttributes(attributes) }, parentContext);
20
+ span.setStatus({ code: 1 });
21
+ span.end();
22
+ await provider.forceFlush();
23
+ await provider.shutdown();
31
24
  }
32
25
  export function resolveEndpoint(config) {
33
26
  const signal = process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT;
@@ -36,22 +29,8 @@ export function resolveEndpoint(config) {
36
29
  const configured = config.telemetry?.endpoint ?? process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
37
30
  if (!configured)
38
31
  return undefined;
39
- return `${configured.replace(/\/$/, "")}/v1/traces`;
40
- }
41
- function attribute(key, value) {
42
- if (typeof value === "boolean")
43
- return { key, value: { boolValue: value } };
44
- if (typeof value === "number")
45
- return Number.isInteger(value) ? { key, value: { intValue: String(value) } } : { key, value: { doubleValue: String(value) } };
46
- return { key, value: { stringValue: typeof value === "string" ? value : JSON.stringify(value) } };
47
- }
48
- function environmentHeaders() {
49
- const raw = process.env.OTEL_EXPORTER_OTLP_TRACES_HEADERS ?? process.env.OTEL_EXPORTER_OTLP_HEADERS;
50
- if (!raw)
51
- return {};
52
- return Object.fromEntries(raw.split(",").map((part) => part.trim()).filter(Boolean).map((part) => {
53
- const index = part.indexOf("=");
54
- return index < 0 ? [part, ""] : [part.slice(0, index), part.slice(index + 1)];
55
- }));
32
+ return configured.endsWith("/v1/traces") ? configured : `${configured.replace(/\/$/, "")}/v1/traces`;
56
33
  }
34
+ function spanContext(value) { return { traceId: value.traceId, spanId: value.parentSpanId ?? value.spanId, traceFlags: 1, isRemote: true }; }
35
+ function safeAttributes(attributes) { return Object.fromEntries(Object.entries(attributes).filter(([, value]) => ["string", "number", "boolean"].includes(typeof value)).map(([key, value]) => [key, typeof value === "string" ? value.slice(0, 500) : value])); }
57
36
  //# sourceMappingURL=otlp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"otlp.js","sourceRoot":"","sources":["../../src/telemetry/otlp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"otlp.js","sourceRoot":"","sources":["../../src/telemetry/otlp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type Context, type Span } from "@opentelemetry/api";
2
+ import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
3
+ import type { HarnessProjectConfig } from "../core/types.js";
4
+ export declare function ensureTracing(config: HarnessProjectConfig): NodeTracerProvider;
5
+ export declare function tracer(config: HarnessProjectConfig): import("@opentelemetry/api").Tracer;
6
+ export declare function startOperationSpan(config: HarnessProjectConfig, operationId: string, attributes: Record<string, unknown>): {
7
+ span: Span;
8
+ context: Context;
9
+ };
10
+ export declare function startEventSpan(config: HarnessProjectConfig, operationId: string | undefined, name: string, phase: string | undefined, attributes: Record<string, unknown>): {
11
+ span: Span;
12
+ parentSpanId?: string;
13
+ };
14
+ export declare function finishPhase(operationId: string, phase: string): void;
15
+ export declare function finishTracing(config: HarnessProjectConfig, operationId?: string): Promise<void>;
16
+ export declare function resetTracing(): void;
17
+ export declare function markSpanError(span: Span, error?: unknown): void;
18
+ export declare function safeAttributes(attributes: Record<string, unknown>): Record<string, string | number | boolean | string[]>;
19
+ export declare function configuredTelemetry(): HarnessProjectConfig | undefined;