@tangle-network/agent-eval 1.0.2 → 1.0.4

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 (46) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/analyst/index.js +5 -5
  3. package/dist/{benchmark-command-BeDZB3BQ.js → benchmark-command-C3mZhNh7.js} +5 -5
  4. package/dist/{benchmark-command-BeDZB3BQ.js.map → benchmark-command-C3mZhNh7.js.map} +1 -1
  5. package/dist/benchmarks/index.js +3 -3
  6. package/dist/builder-eval/index.d.ts +1 -1
  7. package/dist/builder-eval/index.d.ts.map +1 -1
  8. package/dist/builder-eval/index.js +12 -138
  9. package/dist/builder-eval/index.js.map +1 -1
  10. package/dist/campaign/index.d.ts +2 -1
  11. package/dist/campaign/index.js +6 -5
  12. package/dist/{campaign-DKZiYHUq.js → campaign-CqCWhH7v.js} +5 -5
  13. package/dist/{campaign-DKZiYHUq.js.map → campaign-CqCWhH7v.js.map} +1 -1
  14. package/dist/cli.js +1 -1
  15. package/dist/contract/index.js +4 -4
  16. package/dist/{define-agent-eval-BVhGn7VV.js → define-agent-eval-BT1SOjkZ.js} +3 -3
  17. package/dist/{define-agent-eval-BVhGn7VV.js.map → define-agent-eval-BT1SOjkZ.js.map} +1 -1
  18. package/dist/{dspy-rlm-engine-C0zR2xiM.js → dspy-rlm-engine-Xt3znknf.js} +2 -2
  19. package/dist/{dspy-rlm-engine-C0zR2xiM.js.map → dspy-rlm-engine-Xt3znknf.js.map} +1 -1
  20. package/dist/{external-optimizer-process-DKgrrX0J.js → external-optimizer-process-BgitfZ-Q.js} +2 -2
  21. package/dist/{external-optimizer-process-DKgrrX0J.js.map → external-optimizer-process-BgitfZ-Q.js.map} +1 -1
  22. package/dist/{external-optimizer-subprocess-wzMaA0oN.js → external-optimizer-subprocess-CeHuAaMJ.js} +8 -17
  23. package/dist/{external-optimizer-subprocess-wzMaA0oN.js.map → external-optimizer-subprocess-CeHuAaMJ.js.map} +1 -1
  24. package/dist/{feedback-trajectory-Ck7K7AhK.d.ts → feedback-trajectory-BgomnFOe.d.ts} +2 -2
  25. package/dist/{feedback-trajectory-Ck7K7AhK.d.ts.map → feedback-trajectory-BgomnFOe.d.ts.map} +1 -1
  26. package/dist/{findings-store-DNSvmy8U.js → findings-store-Bp-0Guuv.js} +2 -2
  27. package/dist/{findings-store-DNSvmy8U.js.map → findings-store-Bp-0Guuv.js.map} +1 -1
  28. package/dist/index.d.ts +3 -3
  29. package/dist/index.js +4 -4
  30. package/dist/{llm-judge-BYBLxREr.js → llm-judge-BiUljZDR.js} +3 -3
  31. package/dist/{llm-judge-BYBLxREr.js.map → llm-judge-BiUljZDR.js.map} +1 -1
  32. package/dist/openapi.json +1 -1
  33. package/dist/{proposal-findings-duV5flPv.js → proposal-findings-BclX0PFh.js} +2 -2
  34. package/dist/{proposal-findings-duV5flPv.js.map → proposal-findings-BclX0PFh.js.map} +1 -1
  35. package/dist/sandbox-harness-BDr1GRm0.js +192 -0
  36. package/dist/sandbox-harness-BDr1GRm0.js.map +1 -0
  37. package/dist/sandbox-harness-CdO35T2g.d.ts +116 -0
  38. package/dist/sandbox-harness-CdO35T2g.d.ts.map +1 -0
  39. package/dist/{skillopt-optimization-method-DmfZz-2d.js → skillopt-optimization-method-DpasRfXS.js} +4 -4
  40. package/dist/{skillopt-optimization-method-DmfZz-2d.js.map → skillopt-optimization-method-DpasRfXS.js.map} +1 -1
  41. package/dist/traces.d.ts +1 -1
  42. package/dist/wire/index.d.ts +3 -3
  43. package/docs/concepts.md +22 -0
  44. package/package.json +1 -1
  45. package/dist/sandbox-harness-B3Kx1fOA.d.ts +0 -68
  46. package/dist/sandbox-harness-B3Kx1fOA.d.ts.map +0 -1
package/dist/traces.d.ts CHANGED
@@ -4,8 +4,8 @@ import { a as RunRecord, c as RunSplitTag, d as RunTokenUsage, u as RunTerminalO
4
4
  import { $ as QueryTracesPage, G as ReadSpanSourceResult, H as createBoundedTraceAnalysisStore, J as TraceAnalysisStore, K as SpanSourceReader, Q as ErrorCluster, U as BoundedTraceAnalysisStoreOptions, W as ReadSpanSourceInput, X as DEFAULT_TRACE_ANALYST_BUDGETS, Y as TraceAnalysisStoreContext, Z as DatasetOverview, at as TraceAnalystSpan, ct as TraceAnalystTraceSummary, dt as ViewTraceResult, et as SearchSpanResult, it as TraceAnalystFilters, lt as ViewSpansResult, nt as SpanMatchRecord, ot as TraceAnalystSpanKind, q as TRACE_ANALYSIS_LIMITS, rt as TraceAnalystByteBudgets, st as TraceAnalystSpanStatus, tt as SearchTraceResult, ut as ViewTraceOversized } from "./types-DzCO-S1m.js";
5
5
  import { G as InMemoryRawProviderSink, J as ProviderRedactor, K as InMemoryRawProviderSinkOptions, Q as RawProviderSinkFilter, U as FileSystemRawProviderSink, W as FileSystemRawProviderSinkOptions, X as RawProviderEvent, Y as RawProviderDirection, Z as RawProviderSink, q as NoopRawProviderSink } from "./types-0KglnQ9o.js";
6
6
  import { a as RunFilter, i as InMemoryTraceStore, n as FileSystemTraceStore, o as SpanFilter, r as FileSystemTraceStoreOptions, s as TraceStore, t as EventFilter } from "./store-CMs5wGXP.js";
7
- import { d as BuildTraceAnalysisToolsOptions, f as TRACE_ANALYST_TOOL_NAMESPACE, h as buildTraceAnalysisToolDescriptors, m as UNTRUSTED_TRACE_TEXT, p as TraceAnalysisToolDescriptor } from "./engine-CaHaCc3W.js";
8
7
  import { a as SpanHandle, i as RunCompleteHookContext, n as CaptureWrite, o as TraceEmitter, r as RunCompleteHook, s as TraceEmitterOptions, t as CaptureErrorHandler } from "./emitter-mAXC5PSN.js";
8
+ import { d as BuildTraceAnalysisToolsOptions, f as TRACE_ANALYST_TOOL_NAMESPACE, h as buildTraceAnalysisToolDescriptors, m as UNTRUSTED_TRACE_TEXT, p as TraceAnalysisToolDescriptor } from "./engine-CaHaCc3W.js";
9
9
  import { C as classifyKey, E as normalizeKey, _ as redactText, a as RedactionFinding, c as SafetyCategory, d as ShareSafetyVerdict, f as assessShareSafety, g as redactForShare, h as redact, i as RedactOptions, l as ShareSafetyFinding, m as emptyRedactionReport, o as RedactionProfile, p as combineVerdicts, r as REDACTION_VERSION, s as RedactionReport, t as AssessOptions, u as ShareSafetyStatus, v as shareAllowed, w as detectCredential } from "./redact-jrT0APTU.js";
10
10
  import { A as TraceInsightReadiness, B as isTraceInsightEvidence, C as TraceInsightContext, D as TraceInsightPromptInput, E as TraceInsightPanelRole, F as describeTraceInsightScope, G as AnalyzeTracesResult, H as tokenizeDomainWords, I as domainEvidencePattern, K as analyzeTraces, L as inferDomainKeywords, M as TraceInsightTask, N as buildTraceInsightContext, O as TraceInsightQualityGate, P as buildTraceInsightPrompt, R as isTraceInsightArtifact, S as TraceInsightAttribution, T as TraceInsightFinding, U as AnalyzeTracesInput, V as scoreTraceInsightReadiness, W as AnalyzeTracesOptions, _ as ToolSpansToTraceAnalysisStoreOptions, a as captureFetchToRawSink, b as OtlpSpan, c as ExtractedUsage, d as extractUsageFromSse, f as OtlpFileTraceStore, g as spanRecordsToTraceAnalysisStore, h as otlpTextToTraceAnalysisStore, i as CaptureFetchOptions, j as TraceInsightSuite, k as TraceInsightQuestion, l as SseUsageMode, m as SpanRecordsToTraceAnalysisStoreOptions, n as toolSpansToTraceAnalysisStore, o as OtlpFlatLine, p as OtlpFileTraceStoreOptions, r as CaptureFetchContext, s as ExtractUsageFromSseOptions, t as ToolTraceMissingError, u as extractUsage, v as OtlpExport, w as TraceInsightEvidence, x as exportRunAsOtlp, y as OtlpResourceSpans, z as isTraceInsightAttribution } from "./store-tool-spans-lWf6INTH.js";
11
11
  import { a as RunIntegrityReport, i as RunIntegrityIssueCode, n as RunIntegrityExpectations, o as assertRunCaptured, r as RunIntegrityIssue, t as RunIntegrityError } from "./integrity-BAdVzT8u.js";
@@ -1,7 +1,7 @@
1
1
  import { m as CustomTokenPricing, o as CostLedgerHandle } from "../cost-ledger-Czro9wmo.js";
2
2
  import { x as ChatClient } from "../types-0KglnQ9o.js";
3
3
  import { s as TraceStore } from "../store-CMs5wGXP.js";
4
- import { m as FeedbackTrajectoryStore } from "../feedback-trajectory-Ck7K7AhK.js";
4
+ import { m as FeedbackTrajectoryStore } from "../feedback-trajectory-BgomnFOe.js";
5
5
  import { z } from "zod";
6
6
  import { ServerType } from "@hono/node-server";
7
7
  import { Hono } from "hono";
@@ -267,10 +267,10 @@ export declare const FeedbackTrajectorySchema: z.ZodObject<{
267
267
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
268
268
  }, z.core.$strip>>;
269
269
  split: z.ZodOptional<z.ZodEnum<{
270
- dev: "dev";
271
- holdout: "holdout";
272
270
  train: "train";
271
+ dev: "dev";
273
272
  test: "test";
273
+ holdout: "holdout";
274
274
  }>>;
275
275
  tags: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
276
276
  createdAt: z.ZodString;
package/docs/concepts.md CHANGED
@@ -56,6 +56,28 @@ Paired lift, failure clusters, contamination checks, and outcome associations re
56
56
  Run records, scenarios, judge scores, statistics, and release decisions belong here because they work without an agent runtime.
57
57
  Agent sessions, worker coordination, sandbox execution, and runtime-specific profiles belong in `agent-runtime`.
58
58
 
59
+ ## Product integration scenarios
60
+
61
+ `runSandboxScenario()` from `@tangle-network/agent-eval/campaign` runs a
62
+ `HarnessScenario`: setup, named steps, expectations and a time budget.
63
+ The product supplies transport callbacks and keeps its SDK, credentials and
64
+ resource authorization. Steps receive one scope for measurement, assertions,
65
+ condition polling and retirement registration. Register retirement immediately
66
+ after allocation; callbacks use the scope signal for workload cancellation.
67
+ Retirements run in reverse order even after setup or workload failure, and a
68
+ failed retirement remains a failed assertion in the report.
69
+
70
+ Use `scope.resource({ name, create, ready, retire, onCreate })` to measure acquisition,
71
+ register retirement before readiness, and retain the allocated resource when readiness fails.
72
+ A step marked `advisory` retains its failure timing while required expectations still gate
73
+ the report. Unmarked steps and all setup/cleanup measurements remain required.
74
+
75
+ Pass the product's existing `measure` adapter to retain its server timing
76
+ ledgers. A poll returns `undefined` when its budget expires; the scenario must
77
+ assert the condition when exhaustion is a failure. The scope's budget signal
78
+ is cooperative: callbacks must pass it through to their transport. Campaigns
79
+ remain the owner of scenario scheduling, retries, artifacts and run reports.
80
+
59
81
  ## Measuring a complete profile
60
82
 
61
83
  Use the profile improvement functions from `/contract` when a host owns immutable agent-profile snapshots.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/agent-eval",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Evaluate and improve AI agents from runs, traces, judges, and feedback. Compare candidates, cluster failures, measure lift, and gate releases.",
5
5
  "homepage": "https://github.com/tangle-network/agent-eval#readme",
6
6
  "repository": {
@@ -1,68 +0,0 @@
1
- interface HarnessConfig {
2
- /** Setup command (e.g. "pnpm install"). Non-zero exit fails the run. */
3
- setupCommand?: string;
4
- /** Run command (e.g. "pnpm build"). */
5
- runCommand?: string;
6
- /** Test command (e.g. "pnpm test --run"). Drives the test count + pass count. */
7
- testCommand?: string;
8
- /** Absolute cwd for the subprocess driver. Ignored by docker driver. */
9
- cwd?: string;
10
- /** Max wall-clock per phase in ms. Default 10 minutes. */
11
- timeoutMs?: number;
12
- /**
13
- * Cap on captured stdout+stderr bytes per phase. A runaway process can
14
- * otherwise grow the in-memory buffer without bound. Once hit, further
15
- * output is dropped and `outputTruncated` is set. Default 16 MiB.
16
- */
17
- maxOutputBytes?: number;
18
- /** Image for the docker driver. */
19
- image?: string;
20
- /** Extra env vars (validated; shell-escaped). */
21
- env?: Record<string, string>;
22
- /** Parser for the test output — maps stdout/stderr/exit code → pass count. */
23
- testParser?: TestOutputParser;
24
- }
25
- interface TestOutputParser {
26
- id: string;
27
- parse(stdout: string, stderr: string, exitCode: number): {
28
- testsTotal: number;
29
- testsPassed: number;
30
- } | undefined;
31
- }
32
- interface SandboxResult {
33
- phase: 'setup' | 'run' | 'test';
34
- exitCode: number;
35
- stdout: string;
36
- stderr: string;
37
- wallMs: number;
38
- testsTotal?: number;
39
- testsPassed?: number;
40
- /**
41
- * True when the process was killed because it exceeded `timeoutMs`. A
42
- * SIGKILLed child can still close with exit code 0; callers MUST treat
43
- * a timed-out phase as a hard failure regardless of `exitCode`, never
44
- * as a pass. `undefined`/`false` means the process completed on its own.
45
- */
46
- killedByTimeout?: boolean;
47
- /**
48
- * True when captured stdout/stderr hit `maxOutputBytes` and further
49
- * output was dropped. The result is still returned (the process was
50
- * not killed for this), but downstream parsers see truncated text.
51
- */
52
- outputTruncated?: boolean;
53
- }
54
- interface SandboxDriver {
55
- id: string;
56
- exec(phase: SandboxResult['phase'], command: string, config: HarnessConfig): Promise<SandboxResult>;
57
- }
58
- interface SandboxHarnessResult {
59
- passed: boolean;
60
- setup?: SandboxResult;
61
- run?: SandboxResult;
62
- test?: SandboxResult;
63
- totalWallMs: number;
64
- /** Final score — 0 when no tests; otherwise testsPassed/testsTotal. */
65
- score: number;
66
- }
67
- export { SandboxDriver as n, SandboxHarnessResult as r, HarnessConfig as t };
68
- //# sourceMappingURL=sandbox-harness-B3Kx1fOA.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sandbox-harness-B3Kx1fOA.d.ts","names":[],"sources":["../src/sandbox-harness.ts"],"mappings":"A,UAoBiB;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;;EAMA;;EAEA;;EAEA,MAAM;;EAEN,aAAa;;UAGE;EACf;EACA,MACE,gBACA,gBACA;IACG;IAAoB;;;UAGV;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;;;;;;EAOA;;;;;;EAMA;;UAGe;EACf;EACA,KACE,OAAO,wBACP,iBACA,QAAQ,gBACP,QAAQ;;UA0II;EACf;EACA,QAAQ;EACR,MAAM;EACN,OAAO;EACP;;EAEA"}