@tangle-network/agent-eval 0.126.4 → 0.126.6

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 CHANGED
@@ -4,6 +4,19 @@ All notable changes to `@tangle-network/agent-eval` and its sibling `agent-eval-
4
4
 
5
5
  ---
6
6
 
7
+ ## [0.126.6] - 2026-07-24 - optimizer model provenance
8
+
9
+ ### Added
10
+
11
+ - Proxied GEPA and SkillOpt runs now record the configured optimizer model in `OptimizationMethodProvenance.optimizerModel`; GEPA engines without a configured optimizer omit it.
12
+
13
+ ## [0.126.5] - 2026-07-24 - published GEPA compatibility
14
+
15
+ ### Fixed
16
+
17
+ - The standard GEPA engine now runs against the published `gepa[full]==0.1.4` package instead of requiring an unreleased source API.
18
+ - GEPA source-only engines and composition functions still fail explicitly unless the documented official source revision is installed.
19
+
7
20
  ## [0.126.4] - 2026-07-24 - train-only GEPA optimization
8
21
 
9
22
  ### Fixed
package/README.md CHANGED
@@ -33,16 +33,21 @@ python -m pip install agent-eval-rpc
33
33
  python -m pip install \
34
34
  "skillopt @ git+https://github.com/microsoft/SkillOpt.git@61735e3922efc2b90c6d6cab561e62e98452ca90"
35
35
 
36
- # GEPA Optimize Anything at the source revision tested by this release
36
+ # Standard GEPA engine from the published package
37
37
  python -m pip install agent-eval-rpc
38
- python -m pip install "gepa[full] @ git+https://github.com/gepa-ai/gepa.git@f919db0a622e2e9f9204779b81fe00cc1b2d808f"
38
+ python -m pip install "gepa[full]==0.1.4"
39
+
40
+ # GEPA Omni and source-only engines
41
+ python -m pip install \
42
+ "gepa[full] @ git+https://github.com/gepa-ai/gepa.git@f919db0a622e2e9f9204779b81fe00cc1b2d808f"
39
43
 
40
44
  # DSPy 3.2.1 with Agent Eval metrics
41
45
  python -m pip install "agent-eval-rpc[dspy]"
42
46
  ```
43
47
 
44
- The published `gepa==0.1.4` wheel does not contain the Optimize Anything API used here.
45
- The Git revision is intentional and should move only after compatibility tests pass.
48
+ The published GEPA package supports the standard `gepa` engine.
49
+ Sequential, adaptive, best-of, vote, Omni, AutoResearch, Meta Harness, and Best-of-N currently require the tested official source revision.
50
+ Move that revision only after both release and source compatibility tests pass.
46
51
  The published `skillopt==0.2.0` wheel omits the prompt files required by `ReflACTTrainer`, so the tested SkillOpt source revision is also intentional.
47
52
  DSPy 3.2.1 requires GEPA 0.0.27, while the general bridge requires GEPA 0.1.4.
48
53
  Install the DSPy adapter and the general GEPA bridge in separate Python environments.
@@ -278,7 +283,7 @@ console.table(result.scores)
278
283
  Read `scores` for final-case lift and intervals.
279
284
  Read `pairwise` before claiming one method beat another.
280
285
  Read `totalCost.accountingComplete` before using the reported dollars as a complete total.
281
- Each official method score records the optimizer and bridge package versions, source revisions and source-tree hashes, Python runtime, custom engine module hashes, compatible run ID, exact attempt ID, resume status, evaluation count, artifact directory, and available optimizer token usage in `provenance`.
286
+ Each official method score records the optimizer and bridge package versions, source revisions and source-tree hashes, Python runtime, configured optimizer model when present, custom engine module hashes, compatible run ID, exact attempt ID, resume status, evaluation count, artifact directory, and available optimizer token usage in `provenance`.
282
287
 
283
288
  The [optimizer guide](./docs/campaign-proposers.md) covers recipes, budgets, resuming, and data separation.
284
289
  The [runnable comparison](./examples/compare-optimization-methods/) can run GEPA, SkillOpt, or both.
@@ -373,6 +378,11 @@ Python compatibility tests use the locked dependencies:
373
378
 
374
379
  ```sh
375
380
  cd clients/python
381
+ uv sync --frozen --extra dev --group gepa-release
382
+ AGENT_EVAL_EXPECT_GEPA_RELEASE=1 \
383
+ uv run --frozen --extra dev --group gepa-release \
384
+ pytest tests/test_gepa_release_compatibility.py tests/test_gepa_bridge.py
385
+
376
386
  uv sync --frozen --extra dev --group skillopt-source --group gepa-source
377
387
  uv run --frozen pytest
378
388
 
@@ -17,8 +17,8 @@ import {
17
17
  runBenchmarkAdapter,
18
18
  summarizeBenchmarkCampaign
19
19
  } from "../chunk-CGG5SLH3.js";
20
- import "../chunk-P6WN2KF5.js";
21
- import "../chunk-3I74FLK6.js";
20
+ import "../chunk-E3IADPLG.js";
21
+ import "../chunk-BTACVO2W.js";
22
22
  import "../chunk-ZVCHKKOP.js";
23
23
  import "../chunk-WGXIEX7P.js";
24
24
  import "../chunk-ARU2PZFM.js";
@@ -2556,6 +2556,8 @@ interface OptimizationMethodProvenance {
2556
2556
  modules?: OptimizationModuleSource[];
2557
2557
  /** Python implementation used by the bridge process. */
2558
2558
  python?: OptimizationPythonRuntime;
2559
+ /** Exact model identifier configured for optimizer-owned model calls. */
2560
+ optimizerModel?: string;
2559
2561
  runId: string;
2560
2562
  /** Content identity shared by compatible resumptions. */
2561
2563
  compatibleRunId?: string;
@@ -32,7 +32,7 @@ import {
32
32
  userStoryScoreboard,
33
33
  validateSearchLedgerEvent,
34
34
  verifyCodeSurface
35
- } from "../chunk-P6WN2KF5.js";
35
+ } from "../chunk-E3IADPLG.js";
36
36
  import {
37
37
  acquireSingleRunLock,
38
38
  assertCodeSurfaceIdentity,
@@ -79,7 +79,7 @@ import {
79
79
  surfaceContentHash,
80
80
  surfaceHash,
81
81
  verifyLoopProvenanceRecord
82
- } from "../chunk-3I74FLK6.js";
82
+ } from "../chunk-BTACVO2W.js";
83
83
  import {
84
84
  SearchLedgerConflictError,
85
85
  SearchLedgerError,
@@ -1991,6 +1991,9 @@ function assertOptimizationProvenance(methodName, value) {
1991
1991
  if (entry !== void 0 && (typeof entry !== "string" || !entry.trim())) fail(`source.${field}`);
1992
1992
  }
1993
1993
  if (typeof value.runId !== "string" || !value.runId.trim()) fail("runId");
1994
+ if (value.optimizerModel !== void 0 && (typeof value.optimizerModel !== "string" || !value.optimizerModel.trim() || value.optimizerModel.trim() !== value.optimizerModel)) {
1995
+ fail("optimizerModel");
1996
+ }
1994
1997
  if (typeof value.resumed !== "boolean") fail("resumed");
1995
1998
  if (!Number.isSafeInteger(value.evaluationCount) || value.evaluationCount < 0) {
1996
1999
  fail("evaluationCount");
@@ -5718,6 +5721,7 @@ function gepaOptimizationMethod(config) {
5718
5721
  durationMs: Date.now() - started,
5719
5722
  provenance: {
5720
5723
  ...runtime,
5724
+ ...config.optimizer ? { optimizerModel: config.optimizer.model } : {},
5721
5725
  compatibleRunId,
5722
5726
  runId,
5723
5727
  resumed: result.resumed,
@@ -7251,6 +7255,7 @@ function skillOptOptimizationMethod(config) {
7251
7255
  durationMs: Date.now() - started,
7252
7256
  provenance: {
7253
7257
  ...runtime,
7258
+ optimizerModel: config.optimizer.model,
7254
7259
  compatibleRunId,
7255
7260
  runId,
7256
7261
  resumed: result.resumed,
@@ -7341,4 +7346,4 @@ export {
7341
7346
  emitLoopProvenance,
7342
7347
  skillOptOptimizationMethod
7343
7348
  };
7344
- //# sourceMappingURL=chunk-3I74FLK6.js.map
7349
+ //# sourceMappingURL=chunk-BTACVO2W.js.map