anchor-ai-sdk 0.1.7 → 0.1.9

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 (211) hide show
  1. package/README.md +192 -18
  2. package/dist/agents/coding/index.d.ts +1 -0
  3. package/dist/agents/coding/index.d.ts.map +1 -1
  4. package/dist/agents/coding/index.js +3 -0
  5. package/dist/agents/coding/index.js.map +1 -1
  6. package/dist/agents/index.d.ts +1 -0
  7. package/dist/agents/index.d.ts.map +1 -1
  8. package/dist/agents/index.js +1 -0
  9. package/dist/agents/index.js.map +1 -1
  10. package/dist/agents/terminal/index.d.ts +10 -0
  11. package/dist/agents/terminal/index.d.ts.map +1 -0
  12. package/dist/agents/terminal/index.js +20 -0
  13. package/dist/agents/terminal/index.js.map +1 -0
  14. package/dist/agents/terminal/phases.d.ts +4 -0
  15. package/dist/agents/terminal/phases.d.ts.map +1 -0
  16. package/dist/agents/terminal/phases.js +29 -0
  17. package/dist/agents/terminal/phases.js.map +1 -0
  18. package/dist/agents/terminal/prompt.d.ts +13 -0
  19. package/dist/agents/terminal/prompt.d.ts.map +1 -0
  20. package/dist/agents/terminal/prompt.js +33 -0
  21. package/dist/agents/terminal/prompt.js.map +1 -0
  22. package/dist/agents/terminal/strategy.d.ts +3 -0
  23. package/dist/agents/terminal/strategy.d.ts.map +1 -0
  24. package/dist/agents/terminal/strategy.js +12 -0
  25. package/dist/agents/terminal/strategy.js.map +1 -0
  26. package/dist/agents/types.d.ts +6 -0
  27. package/dist/agents/types.d.ts.map +1 -1
  28. package/dist/cli.d.ts +3 -0
  29. package/dist/cli.d.ts.map +1 -0
  30. package/dist/cli.js +188 -0
  31. package/dist/cli.js.map +1 -0
  32. package/dist/engine/budgets.d.ts +1 -0
  33. package/dist/engine/budgets.d.ts.map +1 -1
  34. package/dist/engine/budgets.js +3 -0
  35. package/dist/engine/budgets.js.map +1 -1
  36. package/dist/engine/compaction.d.ts +48 -1
  37. package/dist/engine/compaction.d.ts.map +1 -1
  38. package/dist/engine/compaction.js +210 -0
  39. package/dist/engine/compaction.js.map +1 -1
  40. package/dist/engine/context.d.ts +1 -1
  41. package/dist/engine/context.d.ts.map +1 -1
  42. package/dist/engine/context.js +6 -2
  43. package/dist/engine/context.js.map +1 -1
  44. package/dist/engine/dispatch.d.ts +35 -0
  45. package/dist/engine/dispatch.d.ts.map +1 -1
  46. package/dist/engine/dispatch.js +87 -10
  47. package/dist/engine/dispatch.js.map +1 -1
  48. package/dist/engine/events.d.ts +29 -2
  49. package/dist/engine/events.d.ts.map +1 -1
  50. package/dist/engine/inbox.d.ts +4 -1
  51. package/dist/engine/inbox.d.ts.map +1 -1
  52. package/dist/engine/inbox.js +6 -1
  53. package/dist/engine/inbox.js.map +1 -1
  54. package/dist/engine/intent.d.ts +8 -0
  55. package/dist/engine/intent.d.ts.map +1 -0
  56. package/dist/engine/intent.js +22 -0
  57. package/dist/engine/intent.js.map +1 -0
  58. package/dist/engine/loop.d.ts.map +1 -1
  59. package/dist/engine/loop.js +619 -29
  60. package/dist/engine/loop.js.map +1 -1
  61. package/dist/engine/operations.d.ts +82 -0
  62. package/dist/engine/operations.d.ts.map +1 -0
  63. package/dist/engine/operations.js +143 -0
  64. package/dist/engine/operations.js.map +1 -0
  65. package/dist/engine/prompt.d.ts +16 -0
  66. package/dist/engine/prompt.d.ts.map +1 -0
  67. package/dist/engine/prompt.js +8 -0
  68. package/dist/engine/prompt.js.map +1 -0
  69. package/dist/engine/thread.d.ts +7 -1
  70. package/dist/engine/thread.d.ts.map +1 -1
  71. package/dist/engine/thread.js.map +1 -1
  72. package/dist/engine/types.d.ts +62 -7
  73. package/dist/engine/types.d.ts.map +1 -1
  74. package/dist/index.d.ts +2 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +2 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/ledger/alignment.d.ts +30 -0
  79. package/dist/ledger/alignment.d.ts.map +1 -0
  80. package/dist/ledger/alignment.js +116 -0
  81. package/dist/ledger/alignment.js.map +1 -0
  82. package/dist/ledger/compiler.d.ts +23 -0
  83. package/dist/ledger/compiler.d.ts.map +1 -0
  84. package/dist/ledger/compiler.js +134 -0
  85. package/dist/ledger/compiler.js.map +1 -0
  86. package/dist/ledger/config.d.ts +15 -0
  87. package/dist/ledger/config.d.ts.map +1 -0
  88. package/dist/ledger/config.js +2 -0
  89. package/dist/ledger/config.js.map +1 -0
  90. package/dist/ledger/index.d.ts +6 -0
  91. package/dist/ledger/index.d.ts.map +1 -0
  92. package/dist/ledger/index.js +6 -0
  93. package/dist/ledger/index.js.map +1 -0
  94. package/dist/ledger/ledger.d.ts +45 -0
  95. package/dist/ledger/ledger.d.ts.map +1 -0
  96. package/dist/ledger/ledger.js +181 -0
  97. package/dist/ledger/ledger.js.map +1 -0
  98. package/dist/ledger/types.d.ts +97 -0
  99. package/dist/ledger/types.d.ts.map +1 -0
  100. package/dist/ledger/types.js +12 -0
  101. package/dist/ledger/types.js.map +1 -0
  102. package/dist/llm/index.d.ts +13 -0
  103. package/dist/llm/index.d.ts.map +1 -1
  104. package/dist/llm/index.js +4 -1
  105. package/dist/llm/index.js.map +1 -1
  106. package/dist/llm/openai-compatible.d.ts +15 -1
  107. package/dist/llm/openai-compatible.d.ts.map +1 -1
  108. package/dist/llm/openai-compatible.js +37 -0
  109. package/dist/llm/openai-compatible.js.map +1 -1
  110. package/dist/llm/structured.d.ts +36 -0
  111. package/dist/llm/structured.d.ts.map +1 -0
  112. package/dist/llm/structured.js +44 -0
  113. package/dist/llm/structured.js.map +1 -0
  114. package/dist/llm/types.d.ts +37 -0
  115. package/dist/llm/types.d.ts.map +1 -1
  116. package/dist/lsp/client.d.ts +33 -0
  117. package/dist/lsp/client.d.ts.map +1 -0
  118. package/dist/lsp/client.js +137 -0
  119. package/dist/lsp/client.js.map +1 -0
  120. package/dist/lsp/index.d.ts +15 -0
  121. package/dist/lsp/index.d.ts.map +1 -0
  122. package/dist/lsp/index.js +13 -0
  123. package/dist/lsp/index.js.map +1 -0
  124. package/dist/lsp/protocol.d.ts +25 -0
  125. package/dist/lsp/protocol.d.ts.map +1 -0
  126. package/dist/lsp/protocol.js +45 -0
  127. package/dist/lsp/protocol.js.map +1 -0
  128. package/dist/lsp/tools.d.ts +6 -0
  129. package/dist/lsp/tools.d.ts.map +1 -0
  130. package/dist/lsp/tools.js +198 -0
  131. package/dist/lsp/tools.js.map +1 -0
  132. package/dist/lsp/typescript.d.ts +67 -0
  133. package/dist/lsp/typescript.d.ts.map +1 -0
  134. package/dist/lsp/typescript.js +266 -0
  135. package/dist/lsp/typescript.js.map +1 -0
  136. package/dist/sandbox/command.d.ts +7 -0
  137. package/dist/sandbox/command.d.ts.map +1 -0
  138. package/dist/sandbox/command.js +60 -0
  139. package/dist/sandbox/command.js.map +1 -0
  140. package/dist/sandbox/daytona/index.d.ts +3 -1
  141. package/dist/sandbox/daytona/index.d.ts.map +1 -1
  142. package/dist/sandbox/daytona/index.js +9 -0
  143. package/dist/sandbox/daytona/index.js.map +1 -1
  144. package/dist/sandbox/docker/image.d.ts +12 -0
  145. package/dist/sandbox/docker/image.d.ts.map +1 -0
  146. package/dist/sandbox/docker/image.js +52 -0
  147. package/dist/sandbox/docker/image.js.map +1 -0
  148. package/dist/sandbox/docker/index.d.ts +14 -1
  149. package/dist/sandbox/docker/index.d.ts.map +1 -1
  150. package/dist/sandbox/docker/index.js +212 -24
  151. package/dist/sandbox/docker/index.js.map +1 -1
  152. package/dist/sandbox/e2b/image.d.ts +13 -0
  153. package/dist/sandbox/e2b/image.d.ts.map +1 -0
  154. package/dist/sandbox/e2b/image.js +57 -0
  155. package/dist/sandbox/e2b/image.js.map +1 -0
  156. package/dist/sandbox/e2b/index.d.ts +4 -1
  157. package/dist/sandbox/e2b/index.d.ts.map +1 -1
  158. package/dist/sandbox/e2b/index.js +109 -0
  159. package/dist/sandbox/e2b/index.js.map +1 -1
  160. package/dist/sandbox/heyo/exec.d.ts +2 -0
  161. package/dist/sandbox/heyo/exec.d.ts.map +1 -1
  162. package/dist/sandbox/heyo/exec.js +11 -0
  163. package/dist/sandbox/heyo/exec.js.map +1 -1
  164. package/dist/sandbox/heyo/image.d.ts +15 -0
  165. package/dist/sandbox/heyo/image.d.ts.map +1 -0
  166. package/dist/sandbox/heyo/image.js +74 -0
  167. package/dist/sandbox/heyo/image.js.map +1 -0
  168. package/dist/sandbox/heyo/index.d.ts +21 -3
  169. package/dist/sandbox/heyo/index.d.ts.map +1 -1
  170. package/dist/sandbox/heyo/index.js +191 -16
  171. package/dist/sandbox/heyo/index.js.map +1 -1
  172. package/dist/sandbox/image.d.ts +62 -0
  173. package/dist/sandbox/image.d.ts.map +1 -0
  174. package/dist/sandbox/image.js +23 -0
  175. package/dist/sandbox/image.js.map +1 -0
  176. package/dist/sandbox/index.d.ts +1 -0
  177. package/dist/sandbox/index.d.ts.map +1 -1
  178. package/dist/sandbox/index.js +1 -0
  179. package/dist/sandbox/index.js.map +1 -1
  180. package/dist/sandbox/local/index.d.ts +3 -1
  181. package/dist/sandbox/local/index.d.ts.map +1 -1
  182. package/dist/sandbox/local/index.js +32 -0
  183. package/dist/sandbox/local/index.js.map +1 -1
  184. package/dist/sandbox/process.d.ts +55 -0
  185. package/dist/sandbox/process.d.ts.map +1 -0
  186. package/dist/sandbox/process.js +165 -0
  187. package/dist/sandbox/process.js.map +1 -0
  188. package/dist/sandbox/provider.d.ts +14 -0
  189. package/dist/sandbox/provider.d.ts.map +1 -1
  190. package/dist/sandbox/types.d.ts +57 -3
  191. package/dist/sandbox/types.d.ts.map +1 -1
  192. package/dist/sandbox/types.js.map +1 -1
  193. package/dist/testing.d.ts.map +1 -1
  194. package/dist/testing.js +124 -3
  195. package/dist/testing.js.map +1 -1
  196. package/dist/tools/finish.d.ts +14 -0
  197. package/dist/tools/finish.d.ts.map +1 -1
  198. package/dist/tools/finish.js +13 -3
  199. package/dist/tools/finish.js.map +1 -1
  200. package/dist/tools/index.d.ts +3 -2
  201. package/dist/tools/index.d.ts.map +1 -1
  202. package/dist/tools/index.js +1 -1
  203. package/dist/tools/index.js.map +1 -1
  204. package/dist/tools/truncate.d.ts +7 -0
  205. package/dist/tools/truncate.d.ts.map +1 -1
  206. package/dist/tools/truncate.js +12 -0
  207. package/dist/tools/truncate.js.map +1 -1
  208. package/dist/tools/types.d.ts +57 -1
  209. package/dist/tools/types.d.ts.map +1 -1
  210. package/dist/tools/types.js.map +1 -1
  211. package/package.json +8 -1
package/README.md CHANGED
@@ -77,11 +77,47 @@ No sandbox is needed for this chat example. Model calls may incur cost.
77
77
  pass its returned `compaction` settings to the engine as shown. Catalog lookup is
78
78
  best-effort; configure overrides and fallbacks for endpoints without this metadata.
79
79
 
80
+ ## Task verification
81
+
82
+ For tasks that need evidence before completion, enable the opt-in verifier:
83
+
84
+ ```ts
85
+ const result = await runAgent(
86
+ { task: "Investigate where auth is refreshed" },
87
+ {
88
+ llm,
89
+ sandbox,
90
+ thread: { store, id: threadId },
91
+ verifier: true,
92
+ },
93
+ );
94
+ ```
95
+
96
+ The SDK owns the ledger, intent routing, evidence capture, and phase/finish
97
+ checks. The consumer supplies only the normal `ThreadStore` (the ledger is an
98
+ optional field on `StoredThread`) and the model. Greetings and other chat turns
99
+ create no ledger and make no verifier call. A separate cheap verifier model is
100
+ optional:
101
+
102
+ ```ts
103
+ verifier: {
104
+ llm: cheapLlm,
105
+ gates: ["phase", "finish"],
106
+ allowWaived: true,
107
+ }
108
+ ```
109
+
110
+ `finish` is rejected while a required ledger item is open or lacks linked
111
+ evidence; the agent loops with the missing-evidence feedback. Compiler and
112
+ verifier token usage is counted against the run budget.
113
+
80
114
  ## One sandbox interface
81
115
 
82
116
  **Configure the provider once. Keep the agent-facing machine interface the same.**
83
117
  The same layer works with the built-in coding tools, custom agents, or direct
84
- `sandbox.exec()` calls without an agent.
118
+ `sandbox.exec()` calls without an agent. For long-lived consumers — LSPs, REPLs,
119
+ dev servers, watchers — `sandbox.openProcess()` is the optional persistent
120
+ stdin/stdout primitive; check `provider.capabilities.processStream` first.
85
121
 
86
122
  | Provider | Import | Boot configuration |
87
123
  | --- | --- | --- |
@@ -116,8 +152,9 @@ const provider = heyo({
116
152
  ```
117
153
 
118
154
  Use an artifact/store you can access and a toolchain suitable for the task.
119
- Heyo configures its image on the provider and rejects per-sandbox `image` and
120
- `workspacePath` overrides. `requiredEnv` is defined in the shared runner below.
155
+ Heyo configures its default image on the provider. With `imageKind: "artifact"`,
156
+ `spec.image` can override the artifact per sandbox. `workspacePath` can select
157
+ a checkout already in the image. `requiredEnv` is defined in the shared runner below.
121
158
 
122
159
  </details>
123
160
 
@@ -193,16 +230,80 @@ try {
193
230
  }
194
231
  ```
195
232
 
196
- Provider boot settings and optional capabilities differ. Retention needs a cleanup
197
- policy; remote machines and model calls can cost money. Private HTTPS repositories
198
- can use `spec.git.token`, a caller-supplied credential callback.
233
+ Provider boot settings and optional capabilities differ. Per-sandbox
234
+ `spec.image` is supported by Docker and E2B (as a template name), and by Heyo
235
+ for artifact refs; Local rejects it. Retention needs a cleanup policy; remote
236
+ machines and model calls can cost money. Private HTTPS repositories can use
237
+ `spec.git.token`, a caller-supplied credential callback.
238
+
239
+ The Docker adapter also supports `spec.egress: "none"`: it disconnects container
240
+ networks after `start()` setup. Other adapters reject that setting. This is not a
241
+ claim that all providers offer equivalent isolation.
242
+
243
+ ### Long-lived processes
244
+
245
+ `exec()` is one-shot. When a consumer needs a REPL, watcher, dev server, or
246
+ language server, providers that declare `capabilities.processStream` also expose
247
+ `openProcess()`:
248
+
249
+ ```js
250
+ const proc = await sandbox.openProcess("node", ["server.js"], {
251
+ cwd: sandbox.workspace,
252
+ timeoutSecs: 3600,
253
+ });
254
+ await proc.write("input\n");
255
+ for await (const chunk of proc.stdout) process.stdout.write(chunk);
256
+ await proc.endInput();
257
+ await proc.wait();
258
+ ```
259
+
260
+ Streams, `wait`, `kill`, deadline/abort handling, and destroy cleanup are
261
+ available. Heyo uses a PTY: stderr is merged, EOF is Ctrl-D, and there is no
262
+ transport drain signal. See the [process-stream contract](src/sandbox/README.md).
263
+
264
+ ### Preview a guest port
265
+
266
+ Providers that declare `capabilities.previewPort` implement
267
+ `sandbox.exposePort(port)`. E2B is the first provider: it returns a public
268
+ `https://` host for the guest port. Anchor does not add preview authentication,
269
+ health checks, iframes, or product UI; that policy belongs to the consumer.
270
+
271
+ ### Publish sandbox images
272
+
273
+ Providers that can publish expose the common `imagePublisher` contract and the
274
+ `anchor image publish` command. Docker pushes a container image, E2B builds a
275
+ template, and Heyo uploads an artifact through `heyctl`:
276
+
277
+ ```bash
278
+ anchor image publish --provider docker --name ghcr.io/acme/agent:v1 \
279
+ --dockerfile Dockerfile --context .
280
+ ```
281
+
282
+ Use the returned `ref` as `spec.image`, or merge Heyo's provider config. This is
283
+ provider-native publishing, not a shared Anchor registry. Live registry paths
284
+ are credential-gated; see
285
+ [docs/sandbox-image-publishing.md](docs/sandbox-image-publishing.md).
286
+
287
+ ### Optional TypeScript LSP
288
+
289
+ The optional `anchor-ai-sdk/lsp` entry point adds read-only TypeScript/JavaScript
290
+ diagnostics, definition, references, and document symbols over process streams:
199
291
 
200
- The latest Docker adapter also supports `spec.egress: "none"`: it disconnects
201
- container networks after `start()` setup. Other adapters reject that setting.
202
- This is not a claim that all providers offer equivalent isolation.
292
+ ```js
293
+ import { createCodingAgent } from "anchor-ai-sdk";
294
+ import { createLspTools } from "anchor-ai-sdk/lsp";
295
+
296
+ const base = createCodingAgent();
297
+ const agent = { ...base, tools: [...base.tools, ...createLspTools()] };
298
+ ```
299
+
300
+ The sandbox image must provide `typescript-language-server` and `typescript`.
301
+ Search and file reads remain the fallback. See [docs/lsp.md](docs/lsp.md).
203
302
 
204
303
  **[Configuration examples](https://anchor-sdk.dev/docs.html#machine)** ·
205
- **[Provider contract and image guide](https://github.com/hrithikkoduri/anchor-ai-sdk/blob/main/src/sandbox/README.md)**
304
+ **[Provider contract and image guide](https://github.com/hrithikkoduri/anchor-ai-sdk/blob/main/src/sandbox/README.md)** ·
305
+ **[Optional LSP tools](docs/lsp.md)** ·
306
+ **[Changelog](https://anchor-sdk.dev/changelog.html)**
206
307
 
207
308
  ## Make the agent yours
208
309
 
@@ -278,11 +379,13 @@ Validate inputs and enforce permissions in your implementation.
278
379
  | Capability | Your controls |
279
380
  | --- | --- |
280
381
  | **Budgets and correction** | Step/token/known-dollar budgets, repeated-call detection, silent-tool and visible-verbosity nudges, prose checkpoints, and per-call output requests. |
382
+ | **Reasoning budget** | Per-run `reasoningEffort` (`minimal`–`max`) or an agent-bundle default, sent in the provider's native shape (`reasoning.effort` on OpenRouter, `reasoning_effort` on OpenAI). |
281
383
  | **Context and memory** | Catalog-derived or explicit compaction, supplied thread stores, agent-authored notes, and best-effort output spill. |
282
384
  | **Revival and resume** | Opt-in budget warnings, `request_revival`, `planRevival`, and `ThreadBudget`. Your app persists state and decides whether to fund or enqueue another run. |
283
385
  | **Snapshots and lifecycle** | Git-backed or custom snapshot hooks, optional push, phase-boundary pauses, heartbeats, and cancellation. |
284
386
  | **Streaming and traces** | Raw `onEvent` updates; sequenced, pattern-redacted `traceSinks`; NDJSON files, custom sinks, live projection, and replay. |
285
387
  | **Execution evidence** | Tool names/status/metadata plus recorded test-command outcomes and optional post-run Git freshness checks. Your app defines verification and release gates. |
388
+ | **External effects** | Declared effects, a write-ahead operation journal, stable operation ids, reconciliation on resume, and a stop on unknown outcomes. |
286
389
 
287
390
  <details>
288
391
  <summary><strong>Example: limits, nudges, compaction, and a recorded trace</strong></summary>
@@ -331,11 +434,51 @@ are not redacted. Use distinct trace files/IDs per run in your application.
331
434
  > `latestEvidenceForTree` can compare it with the current tree, but does not prove
332
435
  > an immutable tested snapshot, require a full suite, or inspect assertions.
333
436
 
437
+ ## Recovering external writes
438
+
439
+ A crash between "the target accepted the write" and "the thread saved the
440
+ result" must not become a duplicate write. A tool that changes something outside
441
+ the workspace declares an effect; the engine then records the intent before the
442
+ call and settles it after:
443
+
444
+ ```js
445
+ const createIssue = defineTool({ name: "create_issue", /* ... */ }, async (input, ctx) => {
446
+ const issue = await github.createIssue(input, {
447
+ idempotencyKey: ctx.operationId, // stable across retries
448
+ });
449
+ await ctx.acknowledge?.({ issue: issue.number });
450
+ return { ok: true, content: `Created #${issue.number}` };
451
+ }, {
452
+ effect: {
453
+ async reconcile({ operationId }) {
454
+ const found = await github.findByKey(operationId);
455
+ return found
456
+ ? { status: "applied", result: { ok: true, content: found.url } }
457
+ : { status: "unknown" };
458
+ },
459
+ },
460
+ });
461
+
462
+ await runAgent(task, {
463
+ llm, agent, sandbox,
464
+ operations: { store }, // a durable table in production
465
+ });
466
+ ```
467
+
468
+ On resume, a pending operation is reconciled, never replayed. An unknowable
469
+ outcome ends the run with `reason: "recovery_required"` and
470
+ `AgentResult.pendingOperations`. `MemoryOperationStore` is for tests; production
471
+ needs a durable table with a unique `operation_id`. The target's participation
472
+ (an idempotency key or a status lookup) is what turns this into
473
+ effectively-once; without it, the harness surfaces the ambiguity instead of
474
+ guessing.
475
+
334
476
  ## Test the machine contract
335
477
 
336
478
  `runSandboxConformance(provider)` from `anchor-ai-sdk/testing` exercises the
337
479
  public sandbox contract: command results, deadlines, environment handling, Git
338
- checkpoints, retention/adoption, and declared optional capabilities.
480
+ checkpoints, retention/adoption, process streams, and declared optional image
481
+ publishing capability.
339
482
 
340
483
  The repository configures local and Docker conformance in CI. Heyo and E2B live
341
484
  suites are opt-in and credential-gated; having a suite is not certification that
@@ -347,7 +490,35 @@ same contract and tests without rewriting the agent engine.
347
490
 
348
491
  ## Evaluated, with the limits visible
349
492
 
350
- The completed **Parasail GLM 5.3 / SWE-bench Lite-10** records show:
493
+ ### Latest complete harness round: v0.1.7
494
+
495
+ Anchor versus the external arm (`SWE-agent` for SWE, `Terminus-2` for Terminal)
496
+ on the same selected task set. Means are reported in parentheses.
497
+
498
+ | Bench | Model | Anchor | External | Delta |
499
+ |---|---|---:|---:|---:|
500
+ | SWE Lite | DeepSeek V4.1 Flash | **7/9 (77.8%)** | 0/10 (0%) | +77.8 pp |
501
+ | SWE Lite | Qwen3 Coder Next | **4/8 (50.0%)** | 0/10 (0%) | +50.0 pp |
502
+ | SWE Pro | DeepSeek V4.1 Flash | **10/10 (100%)** | 6/10 (60%) | +40.0 pp |
503
+ | SWE Pro | Qwen3 Coder Next | **5/10 (50%)** | 3/10 (30%) | +20.0 pp |
504
+ | Terminal | DeepSeek V4.1 Flash | 7/10 (70%) | **8/10 (80%)** | -10.0 pp |
505
+ | Terminal | Qwen3 Coder Next | 1/10 (10%) | **3/10 (30%)** | -20.0 pp |
506
+
507
+ Anchor’s full-credit denominator excludes failed tasks; external counts all ten.
508
+ The arms use different harnesses, task handling, and budgets. These are selected
509
+ samples, not a general superiority claim. The canonical v0.1.7 artifact was
510
+ measured at `2fbc92b`, while the `v0.1.7` tag points to `08472b1`.
511
+
512
+ ### v0.1.8
513
+
514
+ There is **no recorded benchmark result for v0.1.8**. The full round was
515
+ interrupted before the Anchor and external arms completed, so partial rows are
516
+ not published or compared. The next benchmark record will be a complete round,
517
+ labeled with its measured source SHA.
518
+
519
+ ### Historical selected sample
520
+
521
+ The completed **Parasail GLM 5.3 / SWE-bench Lite-10** records remain available:
351
522
 
352
523
  | | Anchor | mini-swe-agent |
353
524
  | --- | --- | --- |
@@ -358,8 +529,7 @@ The completed **Parasail GLM 5.3 / SWE-bench Lite-10** records show:
358
529
 
359
530
  Both records name `zai-org/GLM-5.3` on Parasail, temperature 0, seed 42, and
360
531
  Docker-backed tasks. This is a selected ten-task sample with different budgets
361
- and an extraction failure, not the full benchmark or a general superiority
362
- claim. The older 7/10 OpenRouter cost comparison is separate historical context.
532
+ and an extraction failure, not the full benchmark or a general superiority claim.
363
533
 
364
534
  **[Benchmark explorer](https://anchor-sdk.dev/benchmarks.html)** ·
365
535
  **[Anchor artifacts](https://github.com/hrithikkoduri/anchor-ai-sdk/tree/main/evals/benchmarks/swe-bench/results/glm53-parasail)** ·
@@ -367,16 +537,20 @@ claim. The older 7/10 OpenRouter cost comparison is separate historical context.
367
537
 
368
538
  ## Status and contributing
369
539
 
370
- **Early alpha, 0.x.** Pin exact versions and test your integration. Provider and
371
- runtime features are version-specific; the current source may be ahead of the
372
- installed package. Daytona, agent teams, and consumer skill bundles remain
373
- roadmap work in the reviewed source.
540
+ **Early alpha, 0.x. Source version: 0.1.9; latest published release: v0.1.8.** Pin exact versions and test your
541
+ integration. Provider and runtime features are version-specific; the current
542
+ source may be ahead of the installed package. Daytona, agent teams, context
543
+ reset, MCP, and consumer skill bundles remain roadmap work in the reviewed
544
+ source. See the [changelog](https://anchor-sdk.dev/changelog.html) for what
545
+ landed in each tag.
374
546
 
375
547
  Questions, bug reports, and provider contributions are welcome. Keep mechanics in
376
548
  the SDK and product policy in the consumer; provider changes should include
377
549
  conformance coverage and an honest capability declaration.
378
550
 
379
551
  **[Issues](https://github.com/hrithikkoduri/anchor-ai-sdk/issues)** ·
552
+ **[Release status](https://github.com/hrithikkoduri/anchor-ai-sdk/blob/main/docs/release-status.md)** ·
553
+ **[Completed tracker](https://github.com/hrithikkoduri/anchor-ai-sdk/blob/main/TRACKER.md)** ·
380
554
  **[Roadmap](https://github.com/hrithikkoduri/anchor-ai-sdk/blob/main/ROADMAP.md)** ·
381
555
  **[Engineering decisions](https://github.com/hrithikkoduri/anchor-ai-sdk/blob/main/DECISIONS.md)** ·
382
556
  **[MIT license](https://github.com/hrithikkoduri/anchor-ai-sdk/blob/main/LICENSE)**
@@ -16,6 +16,7 @@ export { codingPhases } from "./phases.js";
16
16
  export declare function createCodingAgent(opts?: {
17
17
  testCommand?: string;
18
18
  maxOutputTokens?: number | false;
19
+ reasoningEffort?: Agent["reasoningEffort"];
19
20
  }): Agent;
20
21
  /** The zero-config coding agent — detection instead of a configured suite. */
21
22
  export declare const codingAgent: Agent;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/coding/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CAAO,GACpE,KAAK,CASP;AAED,8EAA8E;AAC9E,eAAO,MAAM,WAAW,EAAE,KAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/coding/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,GAAE;IACJ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACjC,eAAe,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;CACvC,GACL,KAAK,CAYP;AAED,8EAA8E;AAC9E,eAAO,MAAM,WAAW,EAAE,KAA2B,CAAC"}
@@ -21,6 +21,9 @@ export function createCodingAgent(opts = {}) {
21
21
  ...(opts.maxOutputTokens !== undefined
22
22
  ? { maxOutputTokens: opts.maxOutputTokens }
23
23
  : {}),
24
+ ...(opts.reasoningEffort !== undefined
25
+ ? { reasoningEffort: opts.reasoningEffort }
26
+ : {}),
24
27
  };
25
28
  }
26
29
  /** The zero-config coding agent — detection instead of a configured suite. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/coding/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAe,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAI,GAA+D,EAAE;IAErE,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,cAAc;QACxB,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,WAAW,GAAU,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/coding/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAe,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAI,GAIA,EAAE;IAEN,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,cAAc;QACxB,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,WAAW,GAAU,iBAAiB,EAAE,CAAC"}
@@ -7,4 +7,5 @@
7
7
  export * from "./types.js";
8
8
  export * from "./coding/index.js";
9
9
  export * from "./chat/index.js";
10
+ export * from "./terminal/index.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
@@ -7,4 +7,5 @@
7
7
  export * from "./types.js";
8
8
  export * from "./coding/index.js";
9
9
  export * from "./chat/index.js";
10
+ export * from "./terminal/index.js";
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Agent } from "../types.js";
2
+ export { terminalStrategy } from "./strategy.js";
3
+ export { terminalPhases } from "./phases.js";
4
+ export { buildTerminalPrompt } from "./prompt.js";
5
+ export declare function createTerminalAgent(opts?: {
6
+ maxOutputTokens?: number | false;
7
+ reasoningEffort?: Agent["reasoningEffort"];
8
+ }): Agent;
9
+ export declare const terminalAgent: Agent;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/terminal/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,mBAAmB,CAAC,IAAI,GAAE;IACxC,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACjC,eAAe,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;CACvC,GAAG,KAAK,CAYb;AAED,eAAO,MAAM,aAAa,EAAE,KAA6B,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { createCodingTools } from "../coding/tools.js";
2
+ import { terminalStrategy } from "./strategy.js";
3
+ export { terminalStrategy } from "./strategy.js";
4
+ export { terminalPhases } from "./phases.js";
5
+ export { buildTerminalPrompt } from "./prompt.js";
6
+ export function createTerminalAgent(opts = {}) {
7
+ return {
8
+ name: "terminal",
9
+ strategy: terminalStrategy,
10
+ tools: createCodingTools(),
11
+ ...(opts.maxOutputTokens !== undefined
12
+ ? { maxOutputTokens: opts.maxOutputTokens }
13
+ : {}),
14
+ ...(opts.reasoningEffort !== undefined
15
+ ? { reasoningEffort: opts.reasoningEffort }
16
+ : {}),
17
+ };
18
+ }
19
+ export const terminalAgent = createTerminalAgent();
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/terminal/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,UAAU,mBAAmB,CAAC,IAAI,GAGpC,EAAE;IACJ,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,gBAAgB;QAC1B,KAAK,EAAE,iBAAiB,EAAE;QAC1B,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAU,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { StrategyPhase } from "../../engine/strategy.js";
2
+ /** Terminal work: inspect the machine, act, prove, report. No repo assumption. */
3
+ export declare const terminalPhases: StrategyPhase[];
4
+ //# sourceMappingURL=phases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phases.d.ts","sourceRoot":"","sources":["../../../src/agents/terminal/phases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,kFAAkF;AAClF,eAAO,MAAM,cAAc,EAAE,aAAa,EA+BzC,CAAC"}
@@ -0,0 +1,29 @@
1
+ /** Terminal work: inspect the machine, act, prove, report. No repo assumption. */
2
+ export const terminalPhases = [
3
+ {
4
+ id: "inspect",
5
+ goal: "Establish the machine state, task artifacts, and available tooling.",
6
+ guidance: "Use the shell. Check the working directory, installed runtimes, task files, and any verifier/tests. Do not assume a git repository, /testbed, or a project test command.",
7
+ },
8
+ {
9
+ id: "plan",
10
+ goal: "Choose the shortest reliable path to the task's own success condition.",
11
+ guidance: "Name the concrete commands, installs, edits, and checks. Prefer the task's own verifier over generic repo tests.",
12
+ },
13
+ {
14
+ id: "act",
15
+ goal: "Execute the task with terminal-native steps.",
16
+ guidance: "Run commands, install missing tools, modify files, and adjust when output changes the picture. Keep the workspace clean of scratch artifacts.",
17
+ },
18
+ {
19
+ id: "verify",
20
+ goal: "Run the task's verifier and inspect its actual output.",
21
+ guidance: "The task's test/verifier is the source of truth. Re-run after the final change. Report missing or flaky checks honestly.",
22
+ },
23
+ {
24
+ id: "respond",
25
+ goal: "Deliver the outcome with the commands and evidence that prove it.",
26
+ guidance: "State what changed and what was actually verified. Do not claim a pass you did not observe.",
27
+ },
28
+ ];
29
+ //# sourceMappingURL=phases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phases.js","sourceRoot":"","sources":["../../../src/agents/terminal/phases.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAClF,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,qEAAqE;QAC3E,QAAQ,EACN,0KAA0K;KAC7K;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,wEAAwE;QAC9E,QAAQ,EACN,kHAAkH;KACrH;IACD;QACE,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,8CAA8C;QACpD,QAAQ,EACN,+IAA+I;KAClJ;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,wDAAwD;QAC9D,QAAQ,EACN,0HAA0H;KAC7H;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,mEAAmE;QACzE,QAAQ,EACN,6FAA6F;KAChG;CACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { StrategyPhase } from "../../engine/strategy.js";
2
+ export interface TerminalPromptOptions {
3
+ phases?: StrategyPhase[];
4
+ context?: string;
5
+ summary?: string;
6
+ }
7
+ /**
8
+ * Terminal-native prompt. Deliberately does not tell the model to inspect a
9
+ * git diff, run a repository test suite, or trust a provisioned conda env.
10
+ * Terminal-Bench tasks are stateful shell problems with their own verifier.
11
+ */
12
+ export declare function buildTerminalPrompt(options?: TerminalPromptOptions): string;
13
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/agents/terminal/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM,CA4B/E"}
@@ -0,0 +1,33 @@
1
+ import { terminalPhases } from "./phases.js";
2
+ /**
3
+ * Terminal-native prompt. Deliberately does not tell the model to inspect a
4
+ * git diff, run a repository test suite, or trust a provisioned conda env.
5
+ * Terminal-Bench tasks are stateful shell problems with their own verifier.
6
+ */
7
+ export function buildTerminalPrompt(options = {}) {
8
+ const phases = options.phases ?? terminalPhases;
9
+ return [
10
+ "# Character",
11
+ "You are a capable terminal operator. You work directly on the machine: inspect it, install what is missing, change what is needed, and prove the result with the task's own verifier.",
12
+ "# Operating rules",
13
+ [
14
+ "- The shell is your primary tool. Use it to inspect the real state; do not assume a repository layout, a git diff, or a pre-provisioned Python environment.",
15
+ "- The task instruction and its verifier are the contract. If the task supplies tests, run them and read the actual output.",
16
+ "- Install missing tools only when needed, with the system package manager or the language's package manager.",
17
+ "- Keep the final state focused: no unrelated edits, no scratch files left behind unless the task requires them.",
18
+ "- Never claim a command or test passed unless you observed its exit code/output. Report flaky or unavailable checks honestly.",
19
+ ].join("\n"),
20
+ "# Approach phases",
21
+ [
22
+ "These describe an approach, not a prerequisite itinerary. Skip or revisit phases as the actual environment requires.",
23
+ ...phases.map((phase) => `- ${phase.id}: ${phase.goal}${phase.guidance ? ` ${phase.guidance}` : ""}`),
24
+ ].join("\n"),
25
+ options.context ? `# Environment observations\n${options.context}` : "",
26
+ options.summary
27
+ ? `# Earlier thread context (may describe obsolete plans)\n${options.summary}`
28
+ : "",
29
+ ]
30
+ .filter((part) => part.trim())
31
+ .join("\n\n");
32
+ }
33
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/agents/terminal/prompt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQ7C;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAO,GAA0B,EAAE;IACrE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC;IAChD,OAAO;QACL,aAAa;QACb,uLAAuL;QACvL,mBAAmB;QACnB;YACE,6JAA6J;YAC7J,4HAA4H;YAC5H,8GAA8G;YAC9G,iHAAiH;YACjH,+HAA+H;SAChI,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,mBAAmB;QACnB;YACE,sHAAsH;YACtH,GAAG,MAAM,CAAC,GAAG,CACX,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9E;SACF,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;QACvE,OAAO,CAAC,OAAO;YACb,CAAC,CAAC,2DAA2D,OAAO,CAAC,OAAO,EAAE;YAC9E,CAAC,CAAC,EAAE;KACP;SACE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC7B,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AgentStrategy } from "../../engine/strategy.js";
2
+ export declare const terminalStrategy: AgentStrategy;
3
+ //# sourceMappingURL=strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/agents/terminal/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI9D,eAAO,MAAM,gBAAgB,EAAE,aAQ9B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { terminalPhases } from "./phases.js";
2
+ import { buildTerminalPrompt } from "./prompt.js";
3
+ export const terminalStrategy = {
4
+ name: "terminal",
5
+ phases: terminalPhases,
6
+ requiresSandbox: true,
7
+ requiredTools: ["bash", "read_file", "edit_file"],
8
+ systemPrompt({ context, summary }) {
9
+ return buildTerminalPrompt({ context, summary });
10
+ },
11
+ };
12
+ //# sourceMappingURL=strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/agents/terminal/strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAkB;IAC7C,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,cAAc;IACtB,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC;IACjD,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;QAC/B,OAAO,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;CACF,CAAC"}
@@ -11,6 +11,7 @@
11
11
  * per-field. Custom agents are just objects built from the same primitives.
12
12
  */
13
13
  import type { AgentStrategy } from "../engine/strategy.js";
14
+ import type { ReasoningEffort } from "../llm/types.js";
14
15
  import type { Tool } from "../tools/types.js";
15
16
  export interface Agent {
16
17
  /** Short display name ("coding", "chat") — logs, dashboards, traces. */
@@ -24,5 +25,10 @@ export interface Agent {
24
25
  * An explicit engine option wins; absent, the engine default applies.
25
26
  */
26
27
  maxOutputTokens?: number | false;
28
+ /**
29
+ * Reasoning budget this bundle suggests. An explicit
30
+ * `EngineOptions.reasoningEffort` wins; absent, the provider default applies.
31
+ */
32
+ reasoningEffort?: ReasoningEffort;
27
33
  }
28
34
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,WAAW,KAAK;IACpB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,QAAQ,EAAE,aAAa,CAAC;IACxB,6EAA6E;IAC7E,KAAK,EAAE,IAAI,EAAE,CAAC;IACd;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAClC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,WAAW,KAAK;IACpB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,QAAQ,EAAE,aAAa,CAAC;IACxB,6EAA6E;IAC7E,KAAK,EAAE,IAAI,EAAE,CAAC;IACd;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACjC;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}