anchor-ai-sdk 0.2.0 → 0.3.1

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 (75) hide show
  1. package/README.md +73 -0
  2. package/dist/anchor.d.ts +2 -0
  3. package/dist/anchor.d.ts.map +1 -1
  4. package/dist/anchor.js +1 -0
  5. package/dist/anchor.js.map +1 -1
  6. package/dist/engine/dispatch.d.ts +0 -9
  7. package/dist/engine/dispatch.d.ts.map +1 -1
  8. package/dist/engine/dispatch.js +103 -1
  9. package/dist/engine/dispatch.js.map +1 -1
  10. package/dist/engine/loop.d.ts.map +1 -1
  11. package/dist/engine/loop.js +23 -3
  12. package/dist/engine/loop.js.map +1 -1
  13. package/dist/engine/types.d.ts +3 -0
  14. package/dist/engine/types.d.ts.map +1 -1
  15. package/dist/engine/types.js.map +1 -1
  16. package/dist/index.d.ts +3 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +3 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/json.d.ts +36 -0
  21. package/dist/json.d.ts.map +1 -0
  22. package/dist/json.js +82 -0
  23. package/dist/json.js.map +1 -0
  24. package/dist/ledger/types.d.ts +2 -1
  25. package/dist/ledger/types.d.ts.map +1 -1
  26. package/dist/ledger/types.js +0 -10
  27. package/dist/ledger/types.js.map +1 -1
  28. package/dist/lsp/tools.d.ts +5 -0
  29. package/dist/lsp/tools.d.ts.map +1 -1
  30. package/dist/lsp/tools.js +34 -18
  31. package/dist/lsp/tools.js.map +1 -1
  32. package/dist/repo.d.ts +17 -0
  33. package/dist/repo.d.ts.map +1 -0
  34. package/dist/repo.js +67 -0
  35. package/dist/repo.js.map +1 -0
  36. package/dist/skills/index.d.ts +16 -0
  37. package/dist/skills/index.d.ts.map +1 -0
  38. package/dist/skills/index.js +33 -0
  39. package/dist/skills/index.js.map +1 -0
  40. package/dist/skills/types.d.ts +28 -0
  41. package/dist/skills/types.d.ts.map +1 -0
  42. package/dist/skills/types.js +2 -0
  43. package/dist/skills/types.js.map +1 -0
  44. package/dist/tools/bash.d.ts.map +1 -1
  45. package/dist/tools/bash.js +19 -2
  46. package/dist/tools/bash.js.map +1 -1
  47. package/dist/tools/edit-file.d.ts.map +1 -1
  48. package/dist/tools/edit-file.js +3 -0
  49. package/dist/tools/edit-file.js.map +1 -1
  50. package/dist/tools/finish.d.ts.map +1 -1
  51. package/dist/tools/finish.js +4 -1
  52. package/dist/tools/finish.js.map +1 -1
  53. package/dist/tools/index.d.ts +2 -0
  54. package/dist/tools/index.d.ts.map +1 -1
  55. package/dist/tools/index.js +1 -0
  56. package/dist/tools/index.js.map +1 -1
  57. package/dist/tools/repo.d.ts +22 -0
  58. package/dist/tools/repo.d.ts.map +1 -0
  59. package/dist/tools/repo.js +40 -0
  60. package/dist/tools/repo.js.map +1 -0
  61. package/dist/tools/run-tests.d.ts.map +1 -1
  62. package/dist/tools/run-tests.js +36 -7
  63. package/dist/tools/run-tests.js.map +1 -1
  64. package/dist/tools/skills.d.ts +17 -0
  65. package/dist/tools/skills.d.ts.map +1 -0
  66. package/dist/tools/skills.js +76 -0
  67. package/dist/tools/skills.js.map +1 -0
  68. package/dist/tools/types.d.ts +16 -3
  69. package/dist/tools/types.d.ts.map +1 -1
  70. package/dist/tools/types.js.map +1 -1
  71. package/dist/trace/sink.d.ts +5 -15
  72. package/dist/trace/sink.d.ts.map +1 -1
  73. package/dist/trace/sink.js +22 -3
  74. package/dist/trace/sink.js.map +1 -1
  75. package/package.json +1 -1
package/README.md CHANGED
@@ -132,6 +132,79 @@ as failures instead of looping into `stalled`.
132
132
  Compile/verifier usage counts against the run budget. `compileLedger` remains
133
133
  exported; `create: "start"` is its only path into a run.
134
134
 
135
+ ## Peer-repository workspaces
136
+
137
+ A sandbox workspace can contain several peer repositories. The workspace root
138
+ is a container, not a git repository:
139
+
140
+ ```text
141
+ /workspace
142
+ api/ (repo A, own .git)
143
+ web/ (repo B, own .git)
144
+ infra/ (repo C, own .git)
145
+ ```
146
+
147
+ Declare them with `repos`:
148
+
149
+ ```ts
150
+ const result = await runAgent(
151
+ { messages: [{ role: "user", content: "Fix the API and its web test" }] },
152
+ {
153
+ llm,
154
+ sandbox,
155
+ agent: codingAgent,
156
+ repos: [
157
+ { name: "acme/api", path: "api" },
158
+ { name: "acme/web", path: "web" },
159
+ ],
160
+ },
161
+ );
162
+ ```
163
+
164
+ Tools target **one repository per call**:
165
+
166
+ - `bash({ repository: "acme/api", command: "npm test" })`
167
+ - `run_tests({ repository: "acme/api" })`
168
+ - `edit_file` attributes its path to the longest matching repo prefix.
169
+
170
+ There is deliberately no list-shaped “run in all repos” tool. Separate calls
171
+ keep results small, attributable, and below the truncation/spill boundary.
172
+
173
+ Read-only calls keep running in parallel. In a turn containing mutations,
174
+ different repository keys may run concurrently; calls in the same repository
175
+ serialize. Omit `repository` only for a command that intentionally spans
176
+ repositories — it runs at the workspace root and serializes globally. Effectful
177
+ tools remain serial and ordered.
178
+
179
+ `run_tests` in a multi-repo workspace requires `repository`; its metadata
180
+ includes that repo and a tree hash computed there. LSP servers are rooted per
181
+ repo when you pass `repos` to `createLspTools({ repos })`.
182
+
183
+ With no `repos`, every tool behaves exactly as before: the workspace root is
184
+ the repo. Checkpoints remain single-root; per-repo snapshots are supplied by the
185
+ consumer through `EngineOptions.snapshot`.
186
+
187
+ ### Optional skills
188
+
189
+ Skills are consumer-owned instruction bundles. Anchor supplies a compact index
190
+ and an on-demand loader; it does not own storage, trust, or content:
191
+
192
+ ```ts
193
+ import {
194
+ createSkillTools,
195
+ renderSkillIndex,
196
+ type SkillProvider,
197
+ } from "anchor-ai-sdk";
198
+
199
+ const index = renderSkillIndex(await provider.list());
200
+ const skills = createSkillTools({ provider });
201
+ ```
202
+
203
+ The consumer injects `index` into its prompt and adds `skills` to the agent.
204
+ `load_skill({ name })` returns a bounded body plus resource paths; scripts run
205
+ only through the normal `bash` tool. The body is an untrusted tool result, never
206
+ a system message. See [docs/skills.md](docs/skills.md).
207
+
135
208
  ## One sandbox interface
136
209
 
137
210
  **Configure the provider once. Keep the agent-facing machine interface the same.**
package/dist/anchor.d.ts CHANGED
@@ -2,6 +2,7 @@ import type { AgentResult, EngineOptions, RunInput } from "./engine/types.js";
2
2
  import type { Agent } from "./agents/types.js";
3
3
  import type { LLMClient } from "./llm/types.js";
4
4
  import type { Sandbox } from "./sandbox/types.js";
5
+ import type { RepoRef } from "./repo.js";
5
6
  import type { Tool } from "./tools/types.js";
6
7
  export type AnchorDefaults = Omit<Partial<EngineOptions>, "llm" | "agent" | "sandbox" | "tools" | "thread">;
7
8
  export interface CreateAnchorOptions {
@@ -9,6 +10,7 @@ export interface CreateAnchorOptions {
9
10
  agent?: Agent;
10
11
  sandbox?: Sandbox;
11
12
  tools?: Tool[];
13
+ repos?: RepoRef[];
12
14
  thread?: EngineOptions["thread"];
13
15
  /** Runtime options applied to every run; per-run overrides win. */
14
16
  defaults?: AnchorDefaults;
@@ -1 +1 @@
1
- {"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../src/anchor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,OAAO,CAAC,aAAa,CAAC,EACtB,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CACjD,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,CACD,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,SAAS,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxB,wEAAwE;IACxE,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;CACjC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAqDjE"}
1
+ {"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../src/anchor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,OAAO,CAAC,aAAa,CAAC,EACtB,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CACjD,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,CACD,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,SAAS,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxB,wEAAwE;IACxE,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;CACjC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAsDjE"}
package/dist/anchor.js CHANGED
@@ -13,6 +13,7 @@ export function createAnchor(options) {
13
13
  ...(options.agent ? { agent: options.agent } : {}),
14
14
  ...(options.sandbox ? { sandbox: options.sandbox } : {}),
15
15
  ...(options.tools ? { tools: options.tools } : {}),
16
+ ...(options.repos ? { repos: options.repos } : {}),
16
17
  ...(options.thread ? { thread: options.thread } : {}),
17
18
  ...overrides,
18
19
  });
@@ -1 +1 @@
1
- {"version":3,"file":"anchor.js","sourceRoot":"","sources":["../src/anchor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anchor.js","sourceRoot":"","sources":["../src/anchor.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,3 @@
1
- /**
2
- * Tool-call dispatch: the two shapes a model turn can take.
3
- *
4
- * A turn whose calls are ALL read-only runs them in parallel (one round trip
5
- * instead of N); anything else runs serially in the model's order, so a
6
- * `finish` or a pause is observed before later calls. Both paths reuse the
7
- * same repetition tracker and emit the same events, which is why they live
8
- * together: splitting them is how they drift.
9
- */
10
1
  import type { LLMMessage, LLMToolCall } from "../llm/types.js";
11
2
  import type { Tool } from "../tools/types.js";
12
3
  import type { ToolContext } from "../tools/types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/engine/dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/engine/dispatch.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Tool-call dispatch: the two shapes a model turn can take.
3
+ *
4
+ * A turn whose calls are ALL read-only runs them in parallel (one round trip
5
+ * instead of N); anything else runs serially in the model's order, so a
6
+ * `finish` or a pause is observed before later calls. Both paths reuse the
7
+ * same repetition tracker and emit the same events, which is why they live
8
+ * together: splitting them is how they drift.
9
+ */
10
+ import { toPlainJsonObject } from "../json.js";
1
11
  import { toolVerb } from "../tools/activity.js";
2
12
  import { boundToolResult, TOOL_RESULT_MAX_CHARS } from "../tools/truncate.js";
3
13
  import { toolResultMessage } from "./context.js";
@@ -27,7 +37,20 @@ async function invoke(tool, name, input, ctx, available) {
27
37
  };
28
38
  }
29
39
  try {
30
- const result = await tool.run(input, ctx);
40
+ const raw = await tool.run(input, ctx);
41
+ // The result is captured as evidence and persisted by consumers. Make it
42
+ // plain here, once: the model text is a string, meta is a detached JSON
43
+ // copy, so a tool can neither alias engine state nor smuggle a cycle.
44
+ const content = typeof raw.content === "string" ? raw.content : String(raw.content ?? "");
45
+ const meta = toPlainJsonObject(raw.meta);
46
+ const result = {
47
+ ...raw,
48
+ ok: raw.ok === true,
49
+ content,
50
+ ...(meta ? { meta } : {}),
51
+ };
52
+ if (!meta)
53
+ delete result.meta;
31
54
  // Consumer tools are not required to know the truncation policy. Enforce
32
55
  // one ceiling here so a badly behaved tool cannot flood context.
33
56
  if (result.content.length > TOOL_RESULT_MAX_CHARS) {
@@ -152,6 +175,85 @@ export async function dispatchToolCalls(args) {
152
175
  }
153
176
  return { runaway, jobs, settlements, ...(declared ? { declared } : {}) };
154
177
  }
178
+ // Resource-grouped mutation path. Only non-effect mutations with distinct
179
+ // repository keys are eligible; anything global/effectful/finish falls back
180
+ // to the fully ordered path below. Results are still emitted in call order.
181
+ if (calls.length > 1 && !declared && !args.pauseRequested() && !signal?.aborted) {
182
+ const prepared = calls.map((call) => {
183
+ const tool = available.get(call.name);
184
+ const { input, invalid } = parseInput(call);
185
+ const verb = toolVerb(call.name, input, tool?.verb);
186
+ const key = invalid === undefined &&
187
+ tool &&
188
+ tool.readOnly !== true &&
189
+ tool.effect === undefined &&
190
+ tool.resource
191
+ ? (() => {
192
+ try {
193
+ return tool.resource(input, toolContext);
194
+ }
195
+ catch {
196
+ return undefined;
197
+ }
198
+ })()
199
+ : undefined;
200
+ return { call, tool, input, invalid, verb, key };
201
+ });
202
+ const keys = prepared.map((item) => item.key);
203
+ const grouped = keys.every((key) => typeof key === "string") &&
204
+ new Set(keys).size > 1;
205
+ if (grouped) {
206
+ for (const item of prepared) {
207
+ if (repeat.record(`${item.call.name}:${item.call.arguments}`)) {
208
+ runaway = true;
209
+ }
210
+ emit({
211
+ type: "tool_call",
212
+ name: item.call.name,
213
+ callId: item.call.id,
214
+ input: item.input,
215
+ verb: item.verb,
216
+ phase,
217
+ step: steps,
218
+ });
219
+ }
220
+ const groups = new Map();
221
+ for (const item of prepared) {
222
+ const key = item.key;
223
+ const list = groups.get(key) ?? [];
224
+ list.push(item);
225
+ groups.set(key, list);
226
+ }
227
+ const results = new Map();
228
+ await Promise.all([...groups.values()].map(async (group) => {
229
+ for (const item of group) {
230
+ if (runaway || signal?.aborted || args.pauseRequested()) {
231
+ results.set(item.call.id, {
232
+ ok: false,
233
+ content: runaway
234
+ ? "Not executed: repeated identical calls reached the loop limit."
235
+ : signal?.aborted
236
+ ? "Not executed: cancelled by signal."
237
+ : "Not executed: the caller requested a pause.",
238
+ });
239
+ continue;
240
+ }
241
+ if (item.invalid) {
242
+ results.set(item.call.id, { ok: false, content: item.invalid });
243
+ continue;
244
+ }
245
+ const outcome = await invoke(item.tool, item.call.name, item.input, toolContext, available);
246
+ results.set(item.call.id, "invalid" in outcome
247
+ ? { ok: false, content: outcome.invalid }
248
+ : outcome.result);
249
+ }
250
+ }));
251
+ for (const item of prepared) {
252
+ emitResult(item.call, item.verb, results.get(item.call.id));
253
+ }
254
+ return { runaway, jobs, settlements };
255
+ }
256
+ }
155
257
  for (const call of calls) {
156
258
  const tool = available.get(call.name);
157
259
  const { input, invalid } = parseInput(call);
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/engine/dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/engine/dispatch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/engine/loop.ts"],"names":[],"mappings":"AAwFA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EAGZ,MAAM,YAAY,CAAC;AAUpB,YAAY,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EACX,YAAY,EACZ,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAw/DtC,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAGtB"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/engine/loop.ts"],"names":[],"mappings":"AAyFA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EAGZ,MAAM,YAAY,CAAC;AAUpB,YAAY,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EACX,YAAY,EACZ,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA0gEtC,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAGtB"}
@@ -1,4 +1,5 @@
1
1
  import { createFinishTool } from "../tools/finish.js";
2
+ import { validateRepos } from "../repo.js";
2
3
  import { BudgetTracker, DEFAULT_BUDGET_LIMITS, DEFAULT_MAX_OUTPUT_TOKENS, } from "./budgets.js";
3
4
  import { DEFAULT_TRUNCATED_REPLY_CHARS, DEFAULT_MAX_ASSISTANT_CHARS, elideReply, spillReply, } from "./elision.js";
4
5
  import { compactConversation, compactConversationStructured, DEFAULT_COMPACTION, estimateTokens, renderCompactionHandoff, } from "./compaction.js";
@@ -61,11 +62,17 @@ async function runOne(input, opts, chain = {}) {
61
62
  // A subscriber must never kill the run — same rule as sinks.
62
63
  }
63
64
  };
65
+ if (opts.repos?.length) {
66
+ if (!opts.sandbox)
67
+ throw new Error("EngineOptions.repos requires a sandbox");
68
+ validateRepos(opts.repos, opts.sandbox.workspace);
69
+ }
64
70
  const tools = opts.tools ?? opts.agent?.tools ?? [];
65
71
  const available = new Map(tools.map((tool) => [tool.definition.name, tool]));
66
72
  /** The context every tool gets — including the host's background policy. */
67
73
  const toolContext = {
68
74
  sandbox: opts.sandbox,
75
+ ...(opts.repos?.length ? { repos: opts.repos } : {}),
69
76
  ...(opts.backgroundAfterSecs !== undefined
70
77
  ? { backgroundAfterSecs: opts.backgroundAfterSecs }
71
78
  : {}),
@@ -768,7 +775,11 @@ async function runOne(input, opts, chain = {}) {
768
775
  return {
769
776
  ok: true,
770
777
  content: `Current approach: ${target.id} — ${target.goal}`,
771
- meta: { phase, previous, reason: input.reason },
778
+ meta: {
779
+ phase,
780
+ previous,
781
+ ...(typeof input.reason === "string" ? { reason: input.reason } : {}),
782
+ },
772
783
  };
773
784
  }, { verb: (input) => `Moving into the ${String(input.phase)} phase` }));
774
785
  }
@@ -931,7 +942,13 @@ async function runOne(input, opts, chain = {}) {
931
942
  ...next.requirements.map((item) => `${item.id}: ${item.text} (phase ${item.phase ?? "any"})`),
932
943
  "Use update_ledger to link evidence with a claim and verify each requirement.",
933
944
  ].join("\n"),
934
- meta: { ledger: next },
945
+ // Identifiers only: the ledger itself is emitted on task_created
946
+ // and must never ride a tool result, which is captured as evidence
947
+ // inside that same ledger.
948
+ meta: {
949
+ taskId: next.taskId,
950
+ requirements: next.requirements.map((item) => item.id),
951
+ },
935
952
  };
936
953
  }, { verb: "Creating the task contract" }));
937
954
  }
@@ -1540,9 +1557,12 @@ async function runOne(input, opts, chain = {}) {
1540
1557
  signal,
1541
1558
  pauseRequested: () => pauseRequested,
1542
1559
  onToolResult: (call, result) => {
1560
+ // Contract tools describe the ledger; they are not evidence about
1561
+ // the work and must not be recorded into the ledger they manage.
1543
1562
  if (!ledger ||
1544
1563
  call.name === "finish" ||
1545
- call.name === "update_ledger") {
1564
+ call.name === "update_ledger" ||
1565
+ call.name === "create_task") {
1546
1566
  return;
1547
1567
  }
1548
1568
  const evidenceRef = recordEvidence(ledger, {