@tangle-network/agent-eval 0.125.0 → 0.126.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 +48 -35
- package/README.md +270 -189
- package/dist/analyst/index.d.ts +15 -145
- package/dist/analyst/index.js +33 -47
- package/dist/analyst/index.js.map +1 -1
- package/dist/benchmarks/index.d.ts +45 -162
- package/dist/benchmarks/index.js +8 -9
- package/dist/campaign/index.d.ts +3671 -5389
- package/dist/campaign/index.js +21 -95
- package/dist/{chunk-R226UZOI.js → chunk-474LBSOX.js} +2 -2
- package/dist/{chunk-W5B3ZGP3.js → chunk-4B7ZZHPX.js} +8 -6
- package/dist/{chunk-W5B3ZGP3.js.map → chunk-4B7ZZHPX.js.map} +1 -1
- package/dist/{chunk-DT7OXY3C.js → chunk-CM4OILD2.js} +535 -846
- package/dist/chunk-CM4OILD2.js.map +1 -0
- package/dist/{chunk-HM6V7F3M.js → chunk-FO7HEH76.js} +3 -3
- package/dist/chunk-IILEIWGW.js +635 -0
- package/dist/chunk-IILEIWGW.js.map +1 -0
- package/dist/{chunk-EQUK3RFS.js → chunk-J5SQWP6Y.js} +8 -5
- package/dist/chunk-J5SQWP6Y.js.map +1 -0
- package/dist/chunk-KO2PZOGP.js +4637 -0
- package/dist/chunk-KO2PZOGP.js.map +1 -0
- package/dist/chunk-NTOV7RU5.js +7152 -0
- package/dist/chunk-NTOV7RU5.js.map +1 -0
- package/dist/{chunk-QFQZ3U3X.js → chunk-OCFJACJU.js} +2 -2
- package/dist/{chunk-GID26AN4.js → chunk-P22LJ3Y2.js} +4 -6
- package/dist/{chunk-GID26AN4.js.map → chunk-P22LJ3Y2.js.map} +1 -1
- package/dist/{chunk-SJT4OBVL.js → chunk-SDPM6554.js} +3 -3
- package/dist/{chunk-D5JZ7UDZ.js → chunk-UCLVDLCH.js} +136 -50
- package/dist/chunk-UCLVDLCH.js.map +1 -0
- package/dist/chunk-UI4YMIN2.js +105 -0
- package/dist/chunk-UI4YMIN2.js.map +1 -0
- package/dist/{chunk-JKDNAOF5.js → chunk-W4L6C2XT.js} +2 -2
- package/dist/{chunk-GRCDRKII.js → chunk-WS3NZZQQ.js} +58 -20
- package/dist/chunk-WS3NZZQQ.js.map +1 -0
- package/dist/cli.js +3 -3
- package/dist/contract/index.d.ts +3221 -3094
- package/dist/contract/index.js +173 -42
- package/dist/contract/index.js.map +1 -1
- package/dist/control.js +2 -3
- package/dist/fuzz.d.ts +14 -1
- package/dist/fuzz.js +1 -1
- package/dist/hosted/index.d.ts +8 -1
- package/dist/index.d.ts +71 -687
- package/dist/index.js +178 -497
- package/dist/index.js.map +1 -1
- package/dist/openapi.json +1 -1
- package/dist/rl.d.ts +5 -100
- package/dist/rl.js +4 -5
- package/dist/rl.js.map +1 -1
- package/dist/{run-campaign-I3JXKVAK.js → run-campaign-LVFKZCEU.js} +3 -3
- package/dist/traces.js +2 -3
- package/dist/wire/index.d.ts +14 -1
- package/dist/wire/index.js +3 -3
- package/docs/campaign-proposers.md +363 -168
- package/docs/design/loop-taxonomy.md +142 -190
- package/docs/design.md +1 -1
- package/docs/distributed-driver.md +8 -11
- package/docs/feature-guide.md +20 -19
- package/docs/knowledge-readiness.md +2 -5
- package/docs/multi-shot-optimization.md +35 -27
- package/docs/rollout.md +5 -5
- package/package.json +4 -4
- package/dist/chunk-A62YMFWA.js +0 -9269
- package/dist/chunk-A62YMFWA.js.map +0 -1
- package/dist/chunk-A6GT67HT.js +0 -550
- package/dist/chunk-A6GT67HT.js.map +0 -1
- package/dist/chunk-D5JZ7UDZ.js.map +0 -1
- package/dist/chunk-DT7OXY3C.js.map +0 -1
- package/dist/chunk-EQUK3RFS.js.map +0 -1
- package/dist/chunk-GC4ATIKK.js +0 -317
- package/dist/chunk-GC4ATIKK.js.map +0 -1
- package/dist/chunk-GRCDRKII.js.map +0 -1
- package/dist/chunk-LOW3U7JZ.js +0 -328
- package/dist/chunk-LOW3U7JZ.js.map +0 -1
- package/dist/chunk-PMITBABE.js +0 -3841
- package/dist/chunk-PMITBABE.js.map +0 -1
- /package/dist/{chunk-R226UZOI.js.map → chunk-474LBSOX.js.map} +0 -0
- /package/dist/{chunk-HM6V7F3M.js.map → chunk-FO7HEH76.js.map} +0 -0
- /package/dist/{chunk-QFQZ3U3X.js.map → chunk-OCFJACJU.js.map} +0 -0
- /package/dist/{chunk-SJT4OBVL.js.map → chunk-SDPM6554.js.map} +0 -0
- /package/dist/{chunk-JKDNAOF5.js.map → chunk-W4L6C2XT.js.map} +0 -0
- /package/dist/{run-campaign-I3JXKVAK.js.map → run-campaign-LVFKZCEU.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,49 +6,62 @@ All notable changes to `@tangle-network/agent-eval` and its sibling `agent-eval-
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.126.0] - 2026-07-24 - official optimizer engines
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- `skillOptOptimizationMethod()` delegates skill optimization to Microsoft's official `ReflACTTrainer`.
|
|
14
|
+
- `gepaOptimizationMethod()` delegates sequential, adaptive, best-of, vote, and Omni recipes to the official GEPA package.
|
|
15
|
+
- `engineModules` lets callers register custom engines through GEPA's public engine registry.
|
|
16
|
+
- `DspyJudgeMetric` exposes an `agent-eval-rpc` judge as a native DSPy metric.
|
|
17
|
+
- `externalTextOptimizationMethod()` adapts another optimizer to the same text or component-surface contract without adding a named local algorithm.
|
|
18
|
+
- Optimizer runs record optimizer and bridge package identity, source commits and source-tree hashes, Python runtime, custom engine module hashes, recipe, configuration, evaluation count, tokens, cost, and resume compatibility.
|
|
19
|
+
|
|
9
20
|
### Changed
|
|
10
21
|
|
|
11
|
-
- `selfImprove(
|
|
12
|
-
- `
|
|
13
|
-
- `callLlmJson()` accepts `jsonPayloadMode: 'exact'`
|
|
14
|
-
- `
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
-
|
|
22
|
+
- `selfImprove()` requires an explicit `OptimizationMethod` or caller-owned `SurfaceProposer`.
|
|
23
|
+
- `selfImprove({ budget: { candidateConcurrency } })` can score independent candidate campaigns concurrently.
|
|
24
|
+
- `callLlmJson()` accepts `jsonPayloadMode: 'exact'` to reject fenced, prose-wrapped, or multi-root responses.
|
|
25
|
+
- `CostLedger.listPending()` distinguishes active, late, and interrupted paid calls so durable runs can reconcile reservations before resuming.
|
|
26
|
+
- GEPA and SkillOpt share one OpenAI-compatible optimizer model configuration with request, output, response-size, timeout, and dollar limits.
|
|
27
|
+
- Model credentials remain in the Node process.
|
|
28
|
+
Official Python libraries receive only a temporary loopback endpoint and credential.
|
|
29
|
+
- `compareOptimizationMethods()` owns pairwise-disjoint train, selection, and final test sets.
|
|
30
|
+
Methods never receive final test rows, and final test scoring starts only after every method completes.
|
|
31
|
+
- Independent methods and candidate campaigns can run concurrently under the same exact cost accounting.
|
|
32
|
+
- Resume files use atomic writes, exclusive run locks, and one content-derived identity shared by Node and Python.
|
|
33
|
+
- `runCampaign()` gives cancelled dispatches five seconds to stop by default.
|
|
34
|
+
`dispatchShutdownTimeoutMs` changes that bound.
|
|
35
|
+
- AppWorld and GSM8K comparisons reject unequal candidate-evaluation limits and record every model, split, limit, rate, actual call count, and cost basis.
|
|
36
|
+
- CI installs GEPA and SkillOpt from exact official source commits for compatibility testing.
|
|
37
|
+
Users install either optimizer separately when they need its bridge.
|
|
38
|
+
DSPy remains a separate optional environment because DSPy 3.2.1 currently requires an older GEPA release.
|
|
21
39
|
|
|
22
40
|
### Fixed
|
|
23
41
|
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
- `
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- Compute contextual-bandit doubly robust estimates with separate logged-action and target-policy value terms, expose how many rows use DR versus IPS or the deprecated scalar path, and carry both values through belief-state records.
|
|
42
|
+
- Reserve worst-case optimizer spend before each provider call and settle it from provider-reported cost or complete token usage.
|
|
43
|
+
- Preserve cached input, cache creation, reasoning, and output token classes without double counting.
|
|
44
|
+
- Price cache-read tokens at the configured cache rate when providers omit billed cost.
|
|
45
|
+
- Reject incomplete usage, conflicting token details, hidden provider endpoints, hidden credentials, unsupported streaming, oversized input or output, and process descendants that outlive any bridge exit.
|
|
46
|
+
- Abort active candidate evaluations when an optimizer exits or times out, and bind cached scores to the exact evaluation identity.
|
|
47
|
+
- Require explicit trust and local ownership checks before restoring GEPA pickle state.
|
|
48
|
+
- Hash packaged prompts and other behavior files in optimizer identity, and report failed model attempts separately from successful calls.
|
|
49
|
+
- Reject native Windows optimizer subprocesses rather than claiming process-tree cleanup that cannot be proven; Linux and WSL use verified POSIX process groups.
|
|
50
|
+
- Abort and drain sibling campaign lanes after the first lane failure.
|
|
51
|
+
- Delay campaign results until cancelled dispatches and their paid calls settle, so late receipts cannot change reported cost after return.
|
|
52
|
+
- Preserve both the primary operation error and any subprocess, temporary-directory, callback, or model-proxy cleanup error.
|
|
53
|
+
- Keep optimizer, evaluation, and final test costs separate when a shared cost ledger contains unrelated receipts.
|
|
54
|
+
- `LlmClientOptions.jsonSchemaTransport: 'json-object'` supports providers that do not implement native JSON Schema enforcement.
|
|
55
|
+
- `InsightReport.interRater.kappa` reports quadratic weighted kappa.
|
|
56
|
+
`interRater.pearson` preserves the previous correlation measure, with ICC and Spearman reported separately.
|
|
57
|
+
- Contextual-bandit doubly robust estimates keep logged-action and target-policy value terms separate and report which rows use DR, IPS, or the deprecated scalar path.
|
|
41
58
|
|
|
42
59
|
### Breaking
|
|
43
60
|
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
Move shared method execution settings to `optimizationRunOptions` on the comparison call.
|
|
49
|
-
Read `optimizationCost`, `testCost`, and `totalCost`; each includes `totalCostUsd`, `accountingComplete`, and `incompleteReasons`.
|
|
50
|
-
- `runSkillOpt({ holdoutScenarios })` fails closed because those rows are adaptively reused.
|
|
51
|
-
Pass `selectionScenarios`; selection result fields now use `Selection` instead of `Holdout`, and `lift` is now `selectionLift`.
|
|
61
|
+
- Remove the local GEPA, SkillOpt, ACE, FAPO, HALO, policy-edit, memory-curation, trace-analyst, evolutionary, and composite proposer implementations.
|
|
62
|
+
Use the official GEPA or SkillOpt method, `externalTextOptimizationMethod()`, or pass a caller-owned `SurfaceProposer`.
|
|
63
|
+
- Remove `runSkillOpt()`, built-in optimization method factories, lineage loops, skill-patch parsing, analyst policy editing, and the experimental distillation workflow.
|
|
64
|
+
- Remove stale examples and generated comparison results tied to the deleted local implementations.
|
|
52
65
|
|
|
53
66
|
## [0.125.0] — 2026-07-24 — Claude Code supervision reader and path-bound policy edits
|
|
54
67
|
|