@poncho-ai/harness 0.50.5 → 0.51.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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @poncho-ai/harness@0.50.5 build /home/runner/work/poncho-ai/poncho-ai/packages/harness
2
+ > @poncho-ai/harness@0.51.0 build /home/runner/work/poncho-ai/poncho-ai/packages/harness
3
3
  > node scripts/embed-docs.js && tsup src/index.ts --format esm --dts
4
4
 
5
5
  [embed-docs] Generated poncho-docs.ts with 4 topics
@@ -8,9 +8,9 @@
8
8
  CLI tsup v8.5.1
9
9
  CLI Target: es2022
10
10
  ESM Build start
11
- ESM dist/index.js 535.57 KB
11
+ ESM dist/index.js 535.65 KB
12
12
  ESM dist/isolate-F2PPSUL6.js 53.82 KB
13
- ESM ⚡️ Build success in 240ms
13
+ ESM ⚡️ Build success in 264ms
14
14
  DTS Build start
15
- DTS ⚡️ Build success in 7598ms
15
+ DTS ⚡️ Build success in 7640ms
16
16
  DTS dist/index.d.ts 91.35 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @poncho-ai/harness
2
2
 
3
+ ## 0.51.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`773f113`](https://github.com/cesr/poncho-ai/commit/773f11309e2410d6c5e17af0fde17425953105f2) Thanks [@cesr](https://github.com/cesr)! - harness: add a per-run `suppressTelemetry` flag so one harness can serve both telemetry-on and telemetry-off runs.
8
+
9
+ Telemetry was effectively an instance-level property: whether the OTLP exporter is attached is decided at construction, so a host that wants telemetry-off runs (e.g. incognito) had to build and maintain a _second_ harness instance with no exporter — duplicating all per-harness provisioning (tool registration, subagent manager, etc.) and risking drift between the two.
10
+
11
+ `RunInput.suppressTelemetry` lets a single harness — built once, with the exporter attached — emit nothing for a given run: the `invoke_agent` root span, the `execute_tool` spans, and the AI-SDK spans are all gated on `!input.suppressTelemetry`. Hosts can now keep one harness per user and pass `suppressTelemetry: true` per run instead of routing to a parallel exporter-less instance.
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [[`773f113`](https://github.com/cesr/poncho-ai/commit/773f11309e2410d6c5e17af0fde17425953105f2)]:
16
+ - @poncho-ai/sdk@1.13.0
17
+
3
18
  ## 0.50.5
4
19
 
5
20
  ### Patch Changes
package/dist/index.js CHANGED
@@ -10169,7 +10169,7 @@ var AgentHarness = class _AgentHarness {
10169
10169
  * child spans (LLM calls via AI SDK, tool execution) group under one trace.
10170
10170
  */
10171
10171
  async *runWithTelemetry(input) {
10172
- if (this.hasOtlpExporter && this.otlpTracerProvider) {
10172
+ if (this.hasOtlpExporter && this.otlpTracerProvider && !input.suppressTelemetry) {
10173
10173
  const tracer = this.otlpTracerProvider.getTracer("gen_ai");
10174
10174
  const agentName = this.parsedAgent?.frontmatter.name ?? "agent";
10175
10175
  const rootSpan = tracer.startSpan(`invoke_agent ${agentName}`, {
@@ -10863,7 +10863,7 @@ ${textContent}` };
10863
10863
  abortSignal: input.abortSignal,
10864
10864
  ...typeof maxTokens === "number" ? { maxTokens } : {},
10865
10865
  experimental_telemetry: {
10866
- isEnabled: telemetryEnabled && this.hasOtlpExporter,
10866
+ isEnabled: telemetryEnabled && this.hasOtlpExporter && !input.suppressTelemetry,
10867
10867
  recordInputs: true,
10868
10868
  recordOutputs: true
10869
10869
  }
@@ -11254,7 +11254,7 @@ ${textContent}` };
11254
11254
  return;
11255
11255
  }
11256
11256
  const toolSpans = /* @__PURE__ */ new Map();
11257
- if (this.hasOtlpExporter && this.otlpTracerProvider) {
11257
+ if (this.hasOtlpExporter && this.otlpTracerProvider && !input.suppressTelemetry) {
11258
11258
  const tracer = this.otlpTracerProvider.getTracer("gen_ai");
11259
11259
  for (const call of approvedCalls) {
11260
11260
  const toolDef = this.dispatcher.get(call.name);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poncho-ai/harness",
3
- "version": "0.50.5",
3
+ "version": "0.51.0",
4
4
  "description": "Agent execution runtime - conversation loop, tool dispatch, streaming",
5
5
  "repository": {
6
6
  "type": "git",
@@ -34,7 +34,7 @@
34
34
  "mustache": "^4.2.0",
35
35
  "yaml": "^2.4.0",
36
36
  "zod": "^3.22.0",
37
- "@poncho-ai/sdk": "1.12.0"
37
+ "@poncho-ai/sdk": "1.13.0"
38
38
  },
39
39
  "peerDependencies": {
40
40
  "esbuild": ">=0.17.0",
package/src/harness.ts CHANGED
@@ -2049,7 +2049,7 @@ export class AgentHarness {
2049
2049
  * child spans (LLM calls via AI SDK, tool execution) group under one trace.
2050
2050
  */
2051
2051
  async *runWithTelemetry(input: RunInput): AsyncGenerator<AgentEvent> {
2052
- if (this.hasOtlpExporter && this.otlpTracerProvider) {
2052
+ if (this.hasOtlpExporter && this.otlpTracerProvider && !input.suppressTelemetry) {
2053
2053
  const tracer = this.otlpTracerProvider.getTracer("gen_ai");
2054
2054
  const agentName = this.parsedAgent?.frontmatter.name ?? "agent";
2055
2055
 
@@ -2975,7 +2975,7 @@ Code is wrapped in an async IIFE — use \`return\` to return a value to the too
2975
2975
  abortSignal: input.abortSignal,
2976
2976
  ...(typeof maxTokens === "number" ? { maxTokens } : {}),
2977
2977
  experimental_telemetry: {
2978
- isEnabled: telemetryEnabled && this.hasOtlpExporter,
2978
+ isEnabled: telemetryEnabled && this.hasOtlpExporter && !input.suppressTelemetry,
2979
2979
  recordInputs: true,
2980
2980
  recordOutputs: true,
2981
2981
  },
@@ -3461,7 +3461,7 @@ Code is wrapped in an async IIFE — use \`return\` to return a value to the too
3461
3461
  // OTel GenAI execute_tool spans for tool call visibility in traces
3462
3462
  type OtelSpan = ReturnType<ReturnType<typeof trace.getTracer>["startSpan"]>;
3463
3463
  const toolSpans = new Map<string, OtelSpan>();
3464
- if (this.hasOtlpExporter && this.otlpTracerProvider) {
3464
+ if (this.hasOtlpExporter && this.otlpTracerProvider && !input.suppressTelemetry) {
3465
3465
  const tracer = this.otlpTracerProvider.getTracer("gen_ai");
3466
3466
  for (const call of approvedCalls) {
3467
3467
  const toolDef = this.dispatcher.get(call.name);