@tangle-network/agent-runtime 0.103.1 → 0.105.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 (89) hide show
  1. package/README.md +177 -39
  2. package/dist/agent.d.ts +1 -1
  3. package/dist/agent.js +5 -5
  4. package/dist/analyst-loop.d.ts +1 -1
  5. package/dist/candidate-execution/index.d.ts +2 -2
  6. package/dist/candidate-execution/index.js +4 -4
  7. package/dist/{chunk-TUSOOIDV.js → chunk-C5RTIBNZ.js} +2 -2
  8. package/dist/{chunk-SNSMRT6H.js → chunk-CTRA64LY.js} +3 -3
  9. package/dist/{chunk-ZXICDSAK.js → chunk-H5QPIZNX.js} +2 -2
  10. package/dist/{chunk-6WZZXQV5.js → chunk-HLKC4UYB.js} +1 -13
  11. package/dist/chunk-HLKC4UYB.js.map +1 -0
  12. package/dist/{chunk-AAN2MB2X.js → chunk-HNP72PNU.js} +3 -10
  13. package/dist/chunk-HNP72PNU.js.map +1 -0
  14. package/dist/{chunk-M6MD6JBS.js → chunk-KRBFHMV6.js} +429 -1
  15. package/dist/chunk-KRBFHMV6.js.map +1 -0
  16. package/dist/chunk-OPVWXJ2H.js +75 -0
  17. package/dist/chunk-OPVWXJ2H.js.map +1 -0
  18. package/dist/{chunk-AYU35OTU.js → chunk-PZZKQVQV.js} +1 -1
  19. package/dist/chunk-PZZKQVQV.js.map +1 -0
  20. package/dist/{chunk-B7K7V22Y.js → chunk-RDOAVVHY.js} +2 -2
  21. package/dist/{chunk-L5DST3QC.js → chunk-SMQXZGLZ.js} +1 -1
  22. package/dist/chunk-SMQXZGLZ.js.map +1 -0
  23. package/dist/{chunk-LFM4JBRW.js → chunk-UHEZW5BU.js} +1084 -527
  24. package/dist/chunk-UHEZW5BU.js.map +1 -0
  25. package/dist/{chunk-5AITUUHO.js → chunk-VISA6CI3.js} +3 -3
  26. package/dist/{chunk-ZOYN3JR5.js → chunk-WMTCUOQL.js} +5 -5
  27. package/dist/{chunk-3LJF5XSE.js → chunk-WRTOVNN4.js} +6 -6
  28. package/dist/chunk-WRTOVNN4.js.map +1 -0
  29. package/dist/{chunk-SBTWKPVR.js → chunk-WSTRQZYQ.js} +1 -1
  30. package/dist/chunk-WSTRQZYQ.js.map +1 -0
  31. package/dist/{chunk-EAQ5YRRY.js → chunk-XBG2W2VW.js} +50 -23
  32. package/dist/chunk-XBG2W2VW.js.map +1 -0
  33. package/dist/{chunk-QYCKIV6C.js → chunk-YJZA2BIK.js} +2 -2
  34. package/dist/{chunk-QYCKIV6C.js.map → chunk-YJZA2BIK.js.map} +1 -1
  35. package/dist/{completion-gate-DLINnrkM.d.ts → completion-gate-BMy5LGoP.d.ts} +3 -3
  36. package/dist/{coordination-DTehA977.d.ts → coordination-BZZSVYpZ.d.ts} +28 -28
  37. package/dist/environment-provider.d.ts +18 -7
  38. package/dist/environment-provider.js +3 -1
  39. package/dist/index.d.ts +106 -182
  40. package/dist/index.js +374 -236
  41. package/dist/index.js.map +1 -1
  42. package/dist/intelligence.d.ts +93 -47
  43. package/dist/intelligence.js +127 -73
  44. package/dist/intelligence.js.map +1 -1
  45. package/dist/knowledge.d.ts +6 -6
  46. package/dist/knowledge.js +9 -9
  47. package/dist/{local-harness-CtK9dSny.d.ts → local-harness-BDNcl6jI.d.ts} +1 -1
  48. package/dist/{loop-runner-bin-DhIXsLAd.d.ts → loop-runner-bin-68aoM9-7.d.ts} +5 -13
  49. package/dist/loop-runner-bin.d.ts +6 -8
  50. package/dist/loop-runner-bin.js +6 -6
  51. package/dist/loops.d.ts +67 -42
  52. package/dist/loops.js +10 -6
  53. package/dist/mcp/bin.js +4 -4
  54. package/dist/mcp/index.d.ts +9 -10
  55. package/dist/mcp/index.js +11 -11
  56. package/dist/mcp/index.js.map +1 -1
  57. package/dist/mcp/memory-bin.js +1 -1
  58. package/dist/primeintellect/index.d.ts +3 -4
  59. package/dist/primeintellect/index.js +5 -6
  60. package/dist/primeintellect/index.js.map +1 -1
  61. package/dist/profiles.d.ts +6 -6
  62. package/dist/profiles.js.map +1 -1
  63. package/dist/{protected-model-port-DzkUY3HQ.d.ts → protected-model-port-B4t-OQjL.d.ts} +1 -1
  64. package/dist/{improve-B40dRu0X.d.ts → redact-BuFjxBUJ.d.ts} +201 -154
  65. package/dist/{structural-rollout-BFPIy3iw.d.ts → structural-rollout-DEh6CEsa.d.ts} +4 -4
  66. package/dist/{supervise-Cp8bNcJi.d.ts → supervise-4_48wwvy.d.ts} +3 -3
  67. package/dist/testing.js +9 -9
  68. package/dist/testing.js.map +1 -1
  69. package/dist/{types-DK11_O4L.d.ts → types-BCoemcXU.d.ts} +4 -4
  70. package/dist/{types-lZTE_LBd.d.ts → types-CvNwMzQt.d.ts} +4 -4
  71. package/dist/{worktree-fanout-DiiJWjJO.d.ts → worktree-fanout-DxhAWr5Z.d.ts} +6 -6
  72. package/package.json +8 -7
  73. package/skills/build-with-agent-runtime/SKILL.md +15 -9
  74. package/skills/loop-writer/SKILL.md +1 -1
  75. package/dist/chunk-3LJF5XSE.js.map +0 -1
  76. package/dist/chunk-6WZZXQV5.js.map +0 -1
  77. package/dist/chunk-AAN2MB2X.js.map +0 -1
  78. package/dist/chunk-AYU35OTU.js.map +0 -1
  79. package/dist/chunk-EAQ5YRRY.js.map +0 -1
  80. package/dist/chunk-L5DST3QC.js.map +0 -1
  81. package/dist/chunk-LFM4JBRW.js.map +0 -1
  82. package/dist/chunk-M6MD6JBS.js.map +0 -1
  83. package/dist/chunk-SBTWKPVR.js.map +0 -1
  84. /package/dist/{chunk-TUSOOIDV.js.map → chunk-C5RTIBNZ.js.map} +0 -0
  85. /package/dist/{chunk-SNSMRT6H.js.map → chunk-CTRA64LY.js.map} +0 -0
  86. /package/dist/{chunk-ZXICDSAK.js.map → chunk-H5QPIZNX.js.map} +0 -0
  87. /package/dist/{chunk-B7K7V22Y.js.map → chunk-RDOAVVHY.js.map} +0 -0
  88. /package/dist/{chunk-5AITUUHO.js.map → chunk-VISA6CI3.js.map} +0 -0
  89. /package/dist/{chunk-ZOYN3JR5.js.map → chunk-WMTCUOQL.js.map} +0 -0
@@ -443,7 +443,7 @@ interface Driver<Task, Output, Decision> {
443
443
  /**
444
444
  * Optional: the driver AUTHORS the winner instead of the kernel's argmax. The
445
445
  * kernel consults this at finalize ONLY when the caller did not pass an explicit
446
- * `selectWinner` to runLoop. Return the driver-declared winner (e.g. from a
446
+ * `selectWinner` to runAgentRounds. Return the driver-declared winner (e.g. from a
447
447
  * `select` topology move) or `undefined` to fall through to the default
448
448
  * (best-valid-score, earliest index). This is the SELECTOR role made
449
449
  * agent-authorable — the planner runs the selection, not the kernel.
@@ -522,7 +522,7 @@ interface SandboxClient {
522
522
  }>;
523
523
  }
524
524
  /**
525
- * Opt-in box-lineage controls for `runLoop`. Default OFF — with both flags
525
+ * Opt-in box-lineage controls for `runAgentRounds`. Default OFF — with both flags
526
526
  * unset the kernel's per-iteration behavior is byte-identical to acquiring a
527
527
  * fresh box, streaming once, and tearing it down. The independence of N fresh
528
528
  * boxes (e.g. `random@k`) is a compute-control invariant; these flags must
@@ -746,7 +746,7 @@ interface LoopTeardownFailedPayload {
746
746
  reason: string;
747
747
  }
748
748
  /**
749
- * Execution context for `runLoop`: the sandbox client the kernel creates boxes through, plus optional runtime hooks.
749
+ * Execution context for `runAgentRounds`: the sandbox client the kernel creates boxes through, plus optional runtime hooks.
750
750
  *
751
751
  * @experimental
752
752
  */
@@ -799,4 +799,4 @@ interface ExecCtx {
799
799
  parentSpanId?: string;
800
800
  }
801
801
 
802
- export { type AgentRunSpec as A, type LoopIterationEndedPayload as B, type LoopIterationStartedPayload as C, type Driver as D, type ExecCtx as E, type LoopPlanDescription as F, type LoopPlanPayload as G, type LoopStartedPayload as H, type Iteration as I, type LoopTeardownFailedPayload as J, type MountManifestEntry as K, type LoopTokenUsage as L, type MountRecorder as M, type RunProvenance as N, type OutputAdapter as O, type ValidationCtx as P, type RuntimeHooks as R, type SandboxClient as S, type Validator as V, type SelectionReceipt as a, type LoopSandboxPlacement as b, type LoopTraceEvent as c, type RuntimeDecisionEvidenceRef as d, type RuntimeDecisionKind as e, type RuntimeDecisionPoint as f, type RuntimeHookContext as g, type RuntimeHookErrorContext as h, type RuntimeHookEvent as i, type RuntimeHookPhase as j, type RuntimeHookTarget as k, type RuntimeRunHandle as l, type RuntimeRunPersistenceAdapter as m, type RuntimeRunRow as n, composeRuntimeHooks as o, defineRuntimeHooks as p, notifyRuntimeDecisionPoint as q, notifyRuntimeHookEvent as r, startRuntimeRun as s, type LoopTraceEmitter as t, type LoopWinner as u, type LoopLineageOptions as v, type LoopResult as w, type LoopDecisionPayload as x, type LoopEndedPayload as y, type LoopIterationDispatchPayload as z };
802
+ export { type AgentRunSpec as A, type LoopIterationEndedPayload as B, type LoopIterationStartedPayload as C, type Driver as D, type ExecCtx as E, type LoopPlanDescription as F, type LoopPlanPayload as G, type LoopStartedPayload as H, type Iteration as I, type LoopTeardownFailedPayload as J, type MountManifestEntry as K, type LoopTokenUsage as L, type MountRecorder as M, type RunProvenance as N, type OutputAdapter as O, type ValidationCtx as P, type RuntimeHooks as R, type SelectionReceipt as S, type Validator as V, type SandboxClient as a, type LoopSandboxPlacement as b, type LoopTraceEvent as c, type RuntimeDecisionEvidenceRef as d, type RuntimeDecisionKind as e, type RuntimeDecisionPoint as f, type RuntimeHookContext as g, type RuntimeHookErrorContext as h, type RuntimeHookEvent as i, type RuntimeHookPhase as j, type RuntimeHookTarget as k, type RuntimeRunHandle as l, type RuntimeRunPersistenceAdapter as m, type RuntimeRunRow as n, composeRuntimeHooks as o, defineRuntimeHooks as p, notifyRuntimeDecisionPoint as q, notifyRuntimeHookEvent as r, startRuntimeRun as s, type LoopTraceEmitter as t, type LoopWinner as u, type LoopLineageOptions as v, type LoopResult as w, type LoopDecisionPayload as x, type LoopEndedPayload as y, type LoopIterationDispatchPayload as z };
@@ -1,7 +1,7 @@
1
1
  import { ToolSpan, DefaultVerdict } from '@tangle-network/agent-eval';
2
2
  import { AgentProfile } from '@tangle-network/agent-interface';
3
3
  import { BackendType } from '@tangle-network/sandbox';
4
- import { L as LoopTokenUsage, R as RuntimeHooks } from './types-DK11_O4L.js';
4
+ import { L as LoopTokenUsage, R as RuntimeHooks } from './types-BCoemcXU.js';
5
5
 
6
6
  /**
7
7
  *
@@ -373,7 +373,7 @@ interface Agent<Task, Out> {
373
373
  * meters every runtime identically.
374
374
  *
375
375
  * Built-in implementations (in `runtime.ts`, NOT variants here): router/inline (a direct
376
- * Router/HTTP inference call, no box), sandbox (COMPOSES `runLoop` as a leaf, forwarding
376
+ * Router/HTTP inference call, no box), sandbox (COMPOSES `runAgentRounds` as a leaf, forwarding
377
377
  * PR #150's optional `lineage` passthrough — does NOT reinvent checkpoint/fork), cli
378
378
  * (Halo/RLM subprocess; `budgetExempt`, excluded from equal-k by construction). A user's
379
379
  * own agent (mastra/agno/raw HTTP/anything) is first-class by implementing this interface.
@@ -482,7 +482,7 @@ type Runtime = 'router' | 'inline' | 'sandbox' | 'cli' | (string & {});
482
482
  * Resolution (in `runtime.ts`):
483
483
  * - `executor` present → BYO: use it verbatim (a user's own `Executor`).
484
484
  * - `harness === null` → router/inline: a direct Router call, no box.
485
- * - `harness` is a `BackendType` → sandbox: compose `runLoop` against `profile` on that backend.
485
+ * - `harness` is a `BackendType` → sandbox: compose `runAgentRounds` against `profile` on that backend.
486
486
  * Fail loud on an unresolvable spec (no executor and an unknown harness).
487
487
  */
488
488
  interface AgentSpec {
@@ -888,7 +888,7 @@ interface SupervisorOpts {
888
888
  readonly now?: () => number;
889
889
  readonly signal?: AbortSignal;
890
890
  /** Lifecycle stream sink, threaded into the root `Scope` so every `spawn`/settle emits on the
891
- * same `agent.spawn`/`agent.child` stream `runLoop` feeds — one observable recursive tree. */
891
+ * same `agent.spawn`/`agent.child` stream `runAgentRounds` feeds — one observable recursive tree. */
892
892
  readonly hooks?: RuntimeHooks;
893
893
  }
894
894
  /** Typed terminal result (M2) — a no-winner is NEVER coerced to a best-effort output. */
@@ -1,10 +1,10 @@
1
1
  import { AgentProfile } from '@tangle-network/agent-interface';
2
2
  import { AnalystFinding, DefaultVerdict } from '@tangle-network/agent-eval';
3
- import { N as NodeId, a as Settled, g as Spend, h as AgentSpec, S as Scope, c as SpawnJournal, b as ResultBlobStore, i as ExecutorRegistry, B as Budget, A as Agent, j as RootHandle, e as SupervisedResult, f as Executor } from './types-lZTE_LBd.js';
4
- import { I as Iteration, R as RuntimeHooks } from './types-DK11_O4L.js';
3
+ import { N as NodeId, a as Settled, g as Spend, h as AgentSpec, S as Scope, c as SpawnJournal, b as ResultBlobStore, i as ExecutorRegistry, B as Budget, A as Agent, j as RootHandle, e as SupervisedResult, f as Executor } from './types-CvNwMzQt.js';
4
+ import { I as Iteration, R as RuntimeHooks } from './types-BCoemcXU.js';
5
5
  import { BackendType } from '@tangle-network/sandbox';
6
- import { W as WorktreeHarnessResult, G as GitRunner, a as WorktreeCheckRunner, D as DeliverableSpec } from './completion-gate-DLINnrkM.js';
7
- import { L as LocalHarness, r as runLocalHarness } from './local-harness-CtK9dSny.js';
6
+ import { W as WorktreeHarnessResult, G as GitRunner, a as WorktreeCheckRunner, D as DeliverableSpec } from './completion-gate-BMy5LGoP.js';
7
+ import { L as LocalHarness, r as runLocalHarness } from './local-harness-BDNcl6jI.js';
8
8
 
9
9
  /**
10
10
  *
@@ -806,11 +806,11 @@ interface CoderCheckConstraints {
806
806
  * coding-harness CLI (claude / codex / opencode) on its OWN git worktree, surfaced as the open
807
807
  * `Executor<Out>` port (`./types`). It is a LEAF executor: it plugs straight into the
808
808
  * `Scope`/`Supervisor` recursion and `gateOnDeliverable`, so it IS the canonical recursive path
809
- * (no `runLoop`/virtual-SandboxInstance shim in between).
809
+ * (no `runAgentRounds`/virtual-SandboxInstance shim in between).
810
810
  *
811
811
  * This is a THIN adapter: the physical act (worktree → profile-aware harness invocation → diff →
812
812
  * checks → cleanup) lives ONCE in `runWorktreeHarness` (`../../mcp/worktree-harness`), shared with
813
- * the `runLoop`/coder-delegate `createInProcessExecutor`. This executor only projects that core's
813
+ * the `runAgentRounds`/coder-delegate `createInProcessExecutor`. This executor only projects that core's
814
814
  * result onto the `Executor` port (artifact + spend) and owns the teardown point. The complete
815
815
  * profile delivery — direct prompt/model plus materialized file-backed resources — lives there.
816
816
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/agent-runtime",
3
- "version": "0.103.1",
3
+ "version": "0.105.0",
4
4
  "description": "Shared task-lifecycle skeleton for agents: a recursive loop kernel for chat turns, one-shot tasks, and multi-attempt loops, with trace capture and eval-gated self-improvement. Domain behavior lives in adapters; scoring and ship-gates in @tangle-network/agent-eval.",
5
5
  "homepage": "https://github.com/tangle-network/agent-runtime#readme",
6
6
  "repository": {
@@ -114,7 +114,8 @@
114
114
  "verify:bench": "pnpm build && pnpm --filter @tangle-network/agent-bench run typecheck:public && pnpm --filter @tangle-network/agent-bench test && pnpm --filter @tangle-network/agent-bench run verify:package:local-runtime",
115
115
  "verify:bench:published": "pnpm build && pnpm --filter @tangle-network/agent-bench run typecheck:public && pnpm --filter @tangle-network/agent-bench test && pnpm --filter @tangle-network/agent-bench run verify:package",
116
116
  "verify:package": "pnpm run check:testing-fixture && pnpm run check:skills && node scripts/verify-package-exports.mjs",
117
- "verify:primeintellect": "pnpm build && node scripts/verify-primeintellect-v1.mjs",
117
+ "verify:official-optimizers": "node scripts/verify-official-optimizers.mjs",
118
+ "verify:primeintellect": "pnpm build && node scripts/verify-primeintellect.mjs",
118
119
  "verify:primeintellect:live": "pnpm build && node scripts/verify-primeintellect-live.mjs",
119
120
  "docs:api": "pnpm run build && typedoc && node scripts/gen-primitive-catalog.mjs",
120
121
  "docs:freshness": "node scripts/check-docs-freshness.mjs",
@@ -122,9 +123,9 @@
122
123
  },
123
124
  "devDependencies": {
124
125
  "@biomejs/biome": "^2.4.15",
125
- "@tangle-network/agent-eval": "0.125.0",
126
+ "@tangle-network/agent-eval": "0.126.6",
126
127
  "@tangle-network/agent-interface": "0.32.0",
127
- "@tangle-network/sandbox": "^0.11.1",
128
+ "@tangle-network/sandbox": "^0.12.0",
128
129
  "@types/node": "^25.9.3",
129
130
  "@types/tar-stream": "3.1.4",
130
131
  "playwright": "^1.61.0",
@@ -154,9 +155,9 @@
154
155
  "license": "MIT",
155
156
  "packageManager": "pnpm@10.28.0",
156
157
  "peerDependencies": {
157
- "@tangle-network/agent-eval": ">=0.122.8 <0.126.0",
158
+ "@tangle-network/agent-eval": ">=0.126.6 <0.127.0",
158
159
  "@tangle-network/agent-interface": ">=0.32.0 <0.33.0",
159
- "@tangle-network/sandbox": ">=0.11.1 <1.0.0",
160
+ "@tangle-network/sandbox": ">=0.12.0 <1.0.0",
160
161
  "playwright": "^1.40.0"
161
162
  },
162
163
  "peerDependenciesMeta": {
@@ -168,7 +169,7 @@
168
169
  }
169
170
  },
170
171
  "dependencies": {
171
- "@tangle-network/agent-knowledge": "^4.1.0",
172
+ "@tangle-network/agent-knowledge": "5.0.1",
172
173
  "@tangle-network/agent-profile-materialize": "0.5.1",
173
174
  "tar-stream": "3.2.0"
174
175
  }
@@ -34,7 +34,7 @@ Do not move product storage transactions into a provider-neutral package.
34
34
  |---|---|
35
35
  | One product chat turn | `handleChatTurn(...)` |
36
36
  | One normalized streamed agent turn | `streamAgentTurn(...)` and `collectAgentTurn(...)` |
37
- | One task or multi-turn loop | `runAgentTask(...)`, `runAgentTaskStream(...)`, or `runLoop(...)` |
37
+ | One task or multi-turn loop | `runAgentTask(...)`, `runAgentTaskStream(...)`, or `runAgentRounds(...)` |
38
38
  | Supervisor and workers | `supervise(...)` or `superviseSurface(...)` |
39
39
  | Parallel work with a shared budget | `fanout(...)` |
40
40
  | Fixed composition | `pipeline(...)`, `panel(...)`, or `verify(...)` |
@@ -50,11 +50,16 @@ Do not move product storage transactions into a provider-neutral package.
50
50
 
51
51
  ## Improvement flow
52
52
 
53
- `improve(profile, findings, options)` searches one surface and returns a detached winner.
53
+ `improve(profile, options)` searches one surface and returns a detached winner.
54
54
  It never changes a profile, document, repository, memory store, or knowledge base.
55
55
 
56
- Supported profile surfaces are prompt, one named inline skill, tools, MCP, hooks, subagents, whole profile, and curated memory in `profile.resources.instructions`.
57
- Code uses isolated worktrees and returns a sealed patch candidate.
56
+ For a profile field, pass one complete agent-eval `OptimizationMethod`, explicit train, selection, and final-test partitions, judges, and the candidate execution function.
57
+ Use `officialGepa(...)` with an explicit recipe when upstream GEPA should own search.
58
+ Use `officialSkillOpt(...)` when Microsoft's SkillOpt should own search.
59
+ Both require `evaluationId`; change it whenever dispatch, judges, models, or scoring behavior changes.
60
+ Resumable runs accept `never`, `if-compatible`, or `required` and reuse state only when agent-eval derives the same run identity.
61
+ Runtime has no local prompt, skill, memory, or profile optimizer fallback.
62
+ Code uses Runtime's isolated worktrees and returns a sealed patch candidate.
58
63
  Knowledge uses `runKnowledgeImprovementJob(...)` and returns paired snapshots.
59
64
 
60
65
  Use `proposeAgentImprovement(...)` for a production proposal.
@@ -80,12 +85,12 @@ Never treat a lost response as a failed write without reconciling it.
80
85
 
81
86
  ## Surface rules
82
87
 
83
- - Prompt changes `profile.prompt` only.
84
- - Skill optimization selects one inline skill by `skills.resourceName`; profile resources must fail closed.
88
+ - Prompt changes `profile.prompt` only and requires a complete method.
89
+ - Skill optimization selects one inline skill by `skills.resourceName`, requires a complete method, and requires profile resources to fail closed.
85
90
  - Curated memory changes `profile.resources.instructions`; retrieval stores and memory databases belong in the knowledge flow.
86
- - Tools, MCP, hooks, subagents, and whole-profile changes require an explicit proposer because Runtime cannot invent domain capabilities safely.
91
+ - Tools, MCP, hooks, subagents, curated memory, rollout policy, and whole-profile changes require a complete method.
87
92
  - Code candidates must come from the Runtime worktree path so patch identity and cleanup stay intact.
88
- - Workflow and policy files are code surfaces; parameter sweeps come from agent-eval.
93
+ - Workflow files are code surfaces. Parameter sweeps belong in a complete agent-eval method.
89
94
  - Knowledge candidates remain detached until the shared activation path applies or restores their frozen snapshots.
90
95
 
91
96
  ## Product integration
@@ -104,7 +109,8 @@ The product must not recreate candidate hashing, paired comparison, confidence i
104
109
  ## Do not duplicate
105
110
 
106
111
  - Do not write a provider-specific profile wrapper; extend `AgentProfile` and its materializer.
107
- - Do not write a second optimizer loop; compose Eval proposers through `improve(...)`.
112
+ - Do not write a second optimizer loop; pass a complete agent-eval method to `improve(...)`.
113
+ - Do not use Runtime's code generator to approximate GEPA, SkillOpt, or another upstream profile optimizer.
108
114
  - Do not write a second candidate catalog; persist the immutable proposal records.
109
115
  - Do not let an analyst or adapter commit, push, open a pull request, or edit a live store.
110
116
  - Do not hand-roll SSE parsing, usage totals, profile matrices, bootstrap statistics, sandbox acquisition, or worktree cleanup.
@@ -21,7 +21,7 @@ Do not copy signatures from this skill.
21
21
  | Parallel repository workers with isolated branches | `worktreeFanout(...)` |
22
22
  | Repeated work in a graded tool environment | `runAgentic(...)` |
23
23
  | Equal-budget comparison over that environment | `runBenchmark(...)` |
24
- | Low-level round policy with custom planning and stopping | `runLoop(...)` |
24
+ | Low-level round policy with custom planning and stopping | `runAgentRounds(...)` |
25
25
 
26
26
  If an existing row fits, use it and stop.
27
27
  Do not create another wrapper solely to rename inputs or results.