agentenkit 0.3.0 → 0.5.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 (295) hide show
  1. package/README.md +82 -15
  2. package/dist/adapters/brave.d.ts +21 -0
  3. package/dist/adapters/brave.d.ts.map +1 -0
  4. package/dist/adapters/brave.js +52 -0
  5. package/dist/adapters/brave.js.map +1 -0
  6. package/dist/adapters/computesdk.d.ts +71 -0
  7. package/dist/adapters/computesdk.d.ts.map +1 -0
  8. package/dist/adapters/computesdk.js +163 -0
  9. package/dist/adapters/computesdk.js.map +1 -0
  10. package/dist/adapters/docker.d.ts +35 -0
  11. package/dist/adapters/docker.d.ts.map +1 -0
  12. package/dist/adapters/docker.js +246 -0
  13. package/dist/adapters/docker.js.map +1 -0
  14. package/dist/adapters/e2b.d.ts +44 -0
  15. package/dist/adapters/e2b.d.ts.map +1 -0
  16. package/dist/adapters/e2b.js +349 -0
  17. package/dist/adapters/e2b.js.map +1 -0
  18. package/dist/adapters/inline.d.ts +19 -5
  19. package/dist/adapters/inline.d.ts.map +1 -1
  20. package/dist/adapters/inline.js +87 -14
  21. package/dist/adapters/inline.js.map +1 -1
  22. package/dist/adapters/jina.d.ts +34 -0
  23. package/dist/adapters/jina.d.ts.map +1 -0
  24. package/dist/adapters/jina.js +99 -0
  25. package/dist/adapters/jina.js.map +1 -0
  26. package/dist/adapters/local-sandbox.d.ts +32 -0
  27. package/dist/adapters/local-sandbox.d.ts.map +1 -0
  28. package/dist/adapters/local-sandbox.js +257 -0
  29. package/dist/adapters/local-sandbox.js.map +1 -0
  30. package/dist/adapters/memory.d.ts +146 -3
  31. package/dist/adapters/memory.d.ts.map +1 -1
  32. package/dist/adapters/memory.js +474 -3
  33. package/dist/adapters/memory.js.map +1 -1
  34. package/dist/adapters/page-reader.d.ts +39 -0
  35. package/dist/adapters/page-reader.d.ts.map +1 -0
  36. package/dist/adapters/page-reader.js +165 -0
  37. package/dist/adapters/page-reader.js.map +1 -0
  38. package/dist/adapters/prisma.d.ts +125 -18
  39. package/dist/adapters/prisma.d.ts.map +1 -1
  40. package/dist/adapters/prisma.js +308 -67
  41. package/dist/adapters/prisma.js.map +1 -1
  42. package/dist/adapters/qstash.d.ts +15 -2
  43. package/dist/adapters/qstash.d.ts.map +1 -1
  44. package/dist/adapters/qstash.js +31 -14
  45. package/dist/adapters/qstash.js.map +1 -1
  46. package/dist/adapters/redis.d.ts +40 -4
  47. package/dist/adapters/redis.d.ts.map +1 -1
  48. package/dist/adapters/redis.js +265 -20
  49. package/dist/adapters/redis.js.map +1 -1
  50. package/dist/adapters/sandbox-shell.d.ts +60 -0
  51. package/dist/adapters/sandbox-shell.d.ts.map +1 -0
  52. package/dist/adapters/sandbox-shell.js +129 -0
  53. package/dist/adapters/sandbox-shell.js.map +1 -0
  54. package/dist/adapters/sqlite.d.ts +88 -2
  55. package/dist/adapters/sqlite.d.ts.map +1 -1
  56. package/dist/adapters/sqlite.js +443 -37
  57. package/dist/adapters/sqlite.js.map +1 -1
  58. package/dist/adapters/stream-scripts.d.ts +49 -0
  59. package/dist/adapters/stream-scripts.d.ts.map +1 -0
  60. package/dist/adapters/stream-scripts.js +150 -0
  61. package/dist/adapters/stream-scripts.js.map +1 -0
  62. package/dist/adapters/upstash.d.ts +20 -0
  63. package/dist/adapters/upstash.d.ts.map +1 -1
  64. package/dist/adapters/upstash.js +29 -0
  65. package/dist/adapters/upstash.js.map +1 -1
  66. package/dist/adapters/web-search-shared.d.ts +11 -0
  67. package/dist/adapters/web-search-shared.d.ts.map +1 -0
  68. package/dist/adapters/web-search-shared.js +40 -0
  69. package/dist/adapters/web-search-shared.js.map +1 -0
  70. package/dist/admin/memory.d.ts +11 -1
  71. package/dist/admin/memory.d.ts.map +1 -1
  72. package/dist/admin/memory.js +83 -14
  73. package/dist/admin/memory.js.map +1 -1
  74. package/dist/admin/migrations/postgres/0002-run-settled-at.d.ts +5 -0
  75. package/dist/admin/migrations/postgres/0002-run-settled-at.d.ts.map +1 -0
  76. package/dist/admin/migrations/postgres/0002-run-settled-at.js +11 -0
  77. package/dist/admin/migrations/postgres/0002-run-settled-at.js.map +1 -0
  78. package/dist/admin/migrations/postgres/0003-run-enqueued-at.d.ts +5 -0
  79. package/dist/admin/migrations/postgres/0003-run-enqueued-at.d.ts.map +1 -0
  80. package/dist/admin/migrations/postgres/0003-run-enqueued-at.js +15 -0
  81. package/dist/admin/migrations/postgres/0003-run-enqueued-at.js.map +1 -0
  82. package/dist/admin/migrations/postgres/0004-run-settle-claim.d.ts +5 -0
  83. package/dist/admin/migrations/postgres/0004-run-settle-claim.d.ts.map +1 -0
  84. package/dist/admin/migrations/postgres/0004-run-settle-claim.js +15 -0
  85. package/dist/admin/migrations/postgres/0004-run-settle-claim.js.map +1 -0
  86. package/dist/admin/migrations/postgres/0005-bigint-counters.d.ts +5 -0
  87. package/dist/admin/migrations/postgres/0005-bigint-counters.d.ts.map +1 -0
  88. package/dist/admin/migrations/postgres/0005-bigint-counters.js +12 -0
  89. package/dist/admin/migrations/postgres/0005-bigint-counters.js.map +1 -0
  90. package/dist/admin/migrations/postgres/index.d.ts.map +1 -1
  91. package/dist/admin/migrations/postgres/index.js +16 -1
  92. package/dist/admin/migrations/postgres/index.js.map +1 -1
  93. package/dist/admin/migrations/runner.d.ts +21 -1
  94. package/dist/admin/migrations/runner.d.ts.map +1 -1
  95. package/dist/admin/migrations/runner.js +41 -4
  96. package/dist/admin/migrations/runner.js.map +1 -1
  97. package/dist/admin/migrations/sqlite/0002-run-settled-at.d.ts +5 -0
  98. package/dist/admin/migrations/sqlite/0002-run-settled-at.d.ts.map +1 -0
  99. package/dist/admin/migrations/sqlite/0002-run-settled-at.js +11 -0
  100. package/dist/admin/migrations/sqlite/0002-run-settled-at.js.map +1 -0
  101. package/dist/admin/migrations/sqlite/0003-run-enqueued-at.d.ts +5 -0
  102. package/dist/admin/migrations/sqlite/0003-run-enqueued-at.d.ts.map +1 -0
  103. package/dist/admin/migrations/sqlite/0003-run-enqueued-at.js +15 -0
  104. package/dist/admin/migrations/sqlite/0003-run-enqueued-at.js.map +1 -0
  105. package/dist/admin/migrations/sqlite/0004-run-settle-claim.d.ts +5 -0
  106. package/dist/admin/migrations/sqlite/0004-run-settle-claim.d.ts.map +1 -0
  107. package/dist/admin/migrations/sqlite/0004-run-settle-claim.js +15 -0
  108. package/dist/admin/migrations/sqlite/0004-run-settle-claim.js.map +1 -0
  109. package/dist/admin/migrations/sqlite/index.d.ts +2 -2
  110. package/dist/admin/migrations/sqlite/index.d.ts.map +1 -1
  111. package/dist/admin/migrations/sqlite/index.js +17 -3
  112. package/dist/admin/migrations/sqlite/index.js.map +1 -1
  113. package/dist/admin/postgres.d.ts +14 -4
  114. package/dist/admin/postgres.d.ts.map +1 -1
  115. package/dist/admin/postgres.js +131 -36
  116. package/dist/admin/postgres.js.map +1 -1
  117. package/dist/admin/shared.d.ts +19 -0
  118. package/dist/admin/shared.d.ts.map +1 -0
  119. package/dist/admin/shared.js +28 -0
  120. package/dist/admin/shared.js.map +1 -0
  121. package/dist/admin/sqlite.d.ts +9 -1
  122. package/dist/admin/sqlite.d.ts.map +1 -1
  123. package/dist/admin/sqlite.js +112 -29
  124. package/dist/admin/sqlite.js.map +1 -1
  125. package/dist/core/admin.d.ts +28 -6
  126. package/dist/core/admin.d.ts.map +1 -1
  127. package/dist/core/admin.js +92 -23
  128. package/dist/core/admin.js.map +1 -1
  129. package/dist/core/agent.d.ts +7 -4
  130. package/dist/core/agent.d.ts.map +1 -1
  131. package/dist/core/agent.js +15 -11
  132. package/dist/core/agent.js.map +1 -1
  133. package/dist/core/agui.d.ts +17 -0
  134. package/dist/core/agui.d.ts.map +1 -0
  135. package/dist/core/agui.js +69 -0
  136. package/dist/core/agui.js.map +1 -0
  137. package/dist/core/builtin/definitions.d.ts +12 -0
  138. package/dist/core/builtin/definitions.d.ts.map +1 -0
  139. package/dist/core/builtin/definitions.js +149 -0
  140. package/dist/core/builtin/definitions.js.map +1 -0
  141. package/dist/core/builtin/html.d.ts +13 -0
  142. package/dist/core/builtin/html.d.ts.map +1 -0
  143. package/dist/core/builtin/html.js +96 -0
  144. package/dist/core/builtin/html.js.map +1 -0
  145. package/dist/core/builtin/index.d.ts +21 -0
  146. package/dist/core/builtin/index.d.ts.map +1 -0
  147. package/dist/core/builtin/index.js +55 -0
  148. package/dist/core/builtin/index.js.map +1 -0
  149. package/dist/core/builtin/run.d.ts +37 -0
  150. package/dist/core/builtin/run.d.ts.map +1 -0
  151. package/dist/core/builtin/run.js +55 -0
  152. package/dist/core/builtin/run.js.map +1 -0
  153. package/dist/core/builtin/sandbox-tools.d.ts +69 -0
  154. package/dist/core/builtin/sandbox-tools.d.ts.map +1 -0
  155. package/dist/core/builtin/sandbox-tools.js +389 -0
  156. package/dist/core/builtin/sandbox-tools.js.map +1 -0
  157. package/dist/core/builtin/sandbox.d.ts +52 -0
  158. package/dist/core/builtin/sandbox.d.ts.map +1 -0
  159. package/dist/core/builtin/sandbox.js +174 -0
  160. package/dist/core/builtin/sandbox.js.map +1 -0
  161. package/dist/core/builtin/web.d.ts +54 -0
  162. package/dist/core/builtin/web.d.ts.map +1 -0
  163. package/dist/core/builtin/web.js +167 -0
  164. package/dist/core/builtin/web.js.map +1 -0
  165. package/dist/core/context.d.ts +13 -1
  166. package/dist/core/context.d.ts.map +1 -1
  167. package/dist/core/context.js +70 -19
  168. package/dist/core/context.js.map +1 -1
  169. package/dist/core/deleteThread.d.ts.map +1 -1
  170. package/dist/core/deleteThread.js +36 -4
  171. package/dist/core/deleteThread.js.map +1 -1
  172. package/dist/core/engine.d.ts +41 -11
  173. package/dist/core/engine.d.ts.map +1 -1
  174. package/dist/core/engine.js +880 -353
  175. package/dist/core/engine.js.map +1 -1
  176. package/dist/core/follow.d.ts +63 -1
  177. package/dist/core/follow.d.ts.map +1 -1
  178. package/dist/core/follow.js +293 -16
  179. package/dist/core/follow.js.map +1 -1
  180. package/dist/core/hitl.d.ts +43 -0
  181. package/dist/core/hitl.d.ts.map +1 -1
  182. package/dist/core/hitl.js +163 -35
  183. package/dist/core/hitl.js.map +1 -1
  184. package/dist/core/keys.d.ts +22 -4
  185. package/dist/core/keys.d.ts.map +1 -1
  186. package/dist/core/keys.js +23 -5
  187. package/dist/core/keys.js.map +1 -1
  188. package/dist/core/lease.d.ts +46 -0
  189. package/dist/core/lease.d.ts.map +1 -0
  190. package/dist/core/lease.js +142 -0
  191. package/dist/core/lease.js.map +1 -0
  192. package/dist/core/loop.d.ts +27 -7
  193. package/dist/core/loop.d.ts.map +1 -1
  194. package/dist/core/loop.js +140 -55
  195. package/dist/core/loop.js.map +1 -1
  196. package/dist/core/messages.d.ts +21 -2
  197. package/dist/core/messages.d.ts.map +1 -1
  198. package/dist/core/messages.js +61 -2
  199. package/dist/core/messages.js.map +1 -1
  200. package/dist/core/permanent.d.ts +11 -0
  201. package/dist/core/permanent.d.ts.map +1 -0
  202. package/dist/core/permanent.js +37 -0
  203. package/dist/core/permanent.js.map +1 -0
  204. package/dist/core/prune.d.ts +24 -0
  205. package/dist/core/prune.d.ts.map +1 -0
  206. package/dist/core/prune.js +43 -0
  207. package/dist/core/prune.js.map +1 -0
  208. package/dist/core/publish.d.ts +38 -10
  209. package/dist/core/publish.d.ts.map +1 -1
  210. package/dist/core/publish.js +126 -12
  211. package/dist/core/publish.js.map +1 -1
  212. package/dist/core/reclaim.d.ts +8 -1
  213. package/dist/core/reclaim.d.ts.map +1 -1
  214. package/dist/core/reclaim.js +149 -18
  215. package/dist/core/reclaim.js.map +1 -1
  216. package/dist/core/run.d.ts +7 -3
  217. package/dist/core/run.d.ts.map +1 -1
  218. package/dist/core/run.js +95 -35
  219. package/dist/core/run.js.map +1 -1
  220. package/dist/core/segment.d.ts +62 -0
  221. package/dist/core/segment.d.ts.map +1 -0
  222. package/dist/core/segment.js +318 -0
  223. package/dist/core/segment.js.map +1 -0
  224. package/dist/core/settle.d.ts +57 -0
  225. package/dist/core/settle.d.ts.map +1 -0
  226. package/dist/core/settle.js +181 -0
  227. package/dist/core/settle.js.map +1 -0
  228. package/dist/core/snapshot.d.ts +36 -0
  229. package/dist/core/snapshot.d.ts.map +1 -0
  230. package/dist/core/snapshot.js +87 -0
  231. package/dist/core/snapshot.js.map +1 -0
  232. package/dist/core/stop.d.ts +16 -1
  233. package/dist/core/stop.d.ts.map +1 -1
  234. package/dist/core/stop.js +69 -15
  235. package/dist/core/stop.js.map +1 -1
  236. package/dist/core/stream-events.d.ts +184 -0
  237. package/dist/core/stream-events.d.ts.map +1 -0
  238. package/dist/core/stream-events.js +26 -0
  239. package/dist/core/stream-events.js.map +1 -0
  240. package/dist/core/stream.d.ts +29 -0
  241. package/dist/core/stream.d.ts.map +1 -1
  242. package/dist/core/stream.js +79 -0
  243. package/dist/core/stream.js.map +1 -1
  244. package/dist/core/subagent.d.ts +36 -5
  245. package/dist/core/subagent.d.ts.map +1 -1
  246. package/dist/core/subagent.js +130 -25
  247. package/dist/core/subagent.js.map +1 -1
  248. package/dist/core/tools.d.ts +9 -3
  249. package/dist/core/tools.d.ts.map +1 -1
  250. package/dist/core/tools.js.map +1 -1
  251. package/dist/core/types.d.ts +212 -13
  252. package/dist/core/types.d.ts.map +1 -1
  253. package/dist/core/types.js +29 -1
  254. package/dist/core/types.js.map +1 -1
  255. package/dist/core/usage.d.ts +53 -5
  256. package/dist/core/usage.d.ts.map +1 -1
  257. package/dist/core/usage.js +170 -47
  258. package/dist/core/usage.js.map +1 -1
  259. package/dist/index.d.ts +29 -12
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +23 -7
  262. package/dist/index.js.map +1 -1
  263. package/dist/ports/admin.d.ts +59 -0
  264. package/dist/ports/admin.d.ts.map +1 -1
  265. package/dist/ports/kv.d.ts +17 -0
  266. package/dist/ports/kv.d.ts.map +1 -1
  267. package/dist/ports/queue.d.ts +87 -7
  268. package/dist/ports/queue.d.ts.map +1 -1
  269. package/dist/ports/queue.js +36 -1
  270. package/dist/ports/queue.js.map +1 -1
  271. package/dist/ports/runtime.d.ts +188 -20
  272. package/dist/ports/runtime.d.ts.map +1 -1
  273. package/dist/ports/sandbox.d.ts +159 -0
  274. package/dist/ports/sandbox.d.ts.map +1 -0
  275. package/dist/ports/sandbox.js +44 -0
  276. package/dist/ports/sandbox.js.map +1 -0
  277. package/dist/ports/storage.d.ts +26 -5
  278. package/dist/ports/storage.d.ts.map +1 -1
  279. package/dist/ports/streams.d.ts +60 -0
  280. package/dist/ports/streams.d.ts.map +1 -0
  281. package/dist/ports/streams.js +20 -0
  282. package/dist/ports/streams.js.map +1 -0
  283. package/dist/ports/tools.d.ts +60 -0
  284. package/dist/ports/tools.d.ts.map +1 -0
  285. package/dist/ports/tools.js +5 -0
  286. package/dist/ports/tools.js.map +1 -0
  287. package/dist/pricing.d.ts +29 -0
  288. package/dist/pricing.d.ts.map +1 -1
  289. package/dist/pricing.js +64 -10
  290. package/dist/pricing.js.map +1 -1
  291. package/dist/runtime.d.ts +6 -0
  292. package/dist/runtime.d.ts.map +1 -1
  293. package/dist/runtime.js +147 -46
  294. package/dist/runtime.js.map +1 -1
  295. package/package.json +1 -1
@@ -1,18 +1,98 @@
1
1
  import type { RunJob } from '../core/types.js';
2
+ /** The priority of the platform's own housekeeping: park expiries, reclaims
3
+ * and lock redrives. A user's message is never queued behind them. */
4
+ export declare const PRIORITY_LOW = -10;
5
+ /** `enqueue` refused a fresh dispatch: a depth cap is set and the queue has
6
+ * reached it. Only a fresh dispatch is ever refused; retries, redrives,
7
+ * resumes and expiries always go in, or a run already under way would be
8
+ * stranded. */
9
+ export declare class QueueFullError extends Error {
10
+ constructor(message?: string);
11
+ }
12
+ /** A job whose encoded payload is over the adapter's cap. */
13
+ export declare class PayloadTooLargeError extends Error {
14
+ constructor(message?: string);
15
+ }
16
+ /** An enqueue whose `key` is already waiting or running. */
17
+ export declare class DuplicateJobError extends Error {
18
+ constructor(key: string);
19
+ }
20
+ /** An adapter's answer to an operation it cannot do, such as counting on a
21
+ * queue with no read side. Callers treat it as "unknown", never as a
22
+ * failure. */
23
+ export declare class UnsupportedError extends Error {
24
+ constructor(what: string);
25
+ }
2
26
  export interface EnqueueOptions {
3
27
  /** Hold the job for this many seconds before delivering it: the HITL expiry
4
- * (§2.5) and a job blocked by an older run's lock (§2.8).
28
+ * (§2.5), a job blocked by an older run's lock (§2.8) and a failed run's
29
+ * retry backoff.
5
30
  *
6
- * An adapter that cannot delay may deliver immediately — both callers treat
7
- * an early arrival as a no-op — but it must NOT throw, or a park would fail
8
- * the run that scheduled it. Note the shape of the reference adapter: QStash
9
- * supports delays on publish only and rejects them on queue enqueue, so
10
- * QStashQueue publishes delayed jobs and queues the rest. */
31
+ * An adapter that cannot delay may deliver immediately — every caller
32
+ * treats an early arrival as a no-op — but it must NOT throw, or a park
33
+ * would fail the run that scheduled it. Note the shape of the reference
34
+ * adapter: QStash supports delays on publish only and rejects them on
35
+ * queue enqueue, so QStashQueue publishes delayed jobs and queues the
36
+ * rest. */
11
37
  delaySeconds?: number;
38
+ /** Dedupes. At most one live job per key: a second enqueue with the same
39
+ * key is refused with `DuplicateJobError`, and `cancel` drops the waiting
40
+ * job for a key. Omitted means no dedupe. */
41
+ key?: string;
42
+ /** Orders ready jobs: higher first, then oldest first. 0 is a normal
43
+ * dispatch; the platform's housekeeping uses `PRIORITY_LOW`. */
44
+ priority?: number;
45
+ }
46
+ /** What a queue can say about itself. */
47
+ export interface QueueStats {
48
+ /** Jobs a worker could take right now. */
49
+ ready: number;
50
+ /** Jobs held for a future run time: park expiries, retry backoffs. Not
51
+ * backlog. */
52
+ delayed: number;
53
+ /** Jobs a worker holds. */
54
+ inFlight: number;
55
+ /** Jobs the queue gave up on and kept for an operator. */
56
+ dead: number;
57
+ /** How long the oldest ready job has been waiting: the number that says a
58
+ * queue is stuck rather than merely busy. */
59
+ oldestReadyMs: number;
60
+ /** True while the consumer is told not to claim. */
61
+ paused: boolean;
62
+ /** When this process last took a job. */
63
+ lastClaimAt?: Date;
64
+ /** How many claims in a row have failed in this process. */
65
+ claimErrors: number;
66
+ }
67
+ /** One job as the queue sees it, for a host that asks where a run's job is. */
68
+ export interface QueuedJob {
69
+ id: string;
70
+ runId: string;
71
+ threadId: string;
72
+ kind: RunJob['kind'];
73
+ attempts: number;
74
+ runAt: Date;
75
+ lockedUntil?: Date;
76
+ /** How many ready jobs are ahead of it; -1 when the adapter cannot say. */
77
+ position: number;
12
78
  }
13
79
  /** Durable dispatch port (§2.8). Delivery is at-least-once — the engine's
14
- * state guard + Storage.threads.claimState make double dispatch a no-op. */
80
+ * state guard and the run lock make double dispatch a no-op.
81
+ *
82
+ * Beside `enqueue` the port carries the little an engine and a host need to
83
+ * see the queue: a way to withdraw a job by key, a way to find a run's job,
84
+ * and counts. An adapter with no read side throws `UnsupportedError` from
85
+ * `find` and `stats`; callers treat that as "unknown", never as a failure. */
15
86
  export interface Queue {
16
87
  enqueue(job: RunJob, opts?: EnqueueOptions): Promise<void>;
88
+ /** Drop every waiting job enqueued under `key`. A key nothing is waiting
89
+ * under is not an error. Best-effort by contract: a delivered job is a
90
+ * correct no-op anyway. */
91
+ cancel(key: string): Promise<void>;
92
+ /** The earliest waiting or running job for a run, or null when the queue
93
+ * holds none. */
94
+ find(runId: string): Promise<QueuedJob | null>;
95
+ /** Count what waits, runs and died. */
96
+ stats(): Promise<QueueStats>;
17
97
  }
18
98
  //# sourceMappingURL=queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/ports/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B;;;;;;;kEAO8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;6EAC6E;AAC7E,MAAM,WAAW,KAAK;IACpB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/ports/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C;uEACuE;AACvE,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC;;;gBAGgB;AAChB,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,SAAkB;CAItC;AAED,6DAA6D;AAC7D,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,SAA0B;CAI9C;AAED,4DAA4D;AAC5D,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,GAAG,EAAE,MAAM;CAIxB;AAED;;eAEe;AACf,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,IAAI,EAAE,MAAM;CAIzB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;gBASY;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;kDAE8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;qEACiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,yCAAyC;AACzC,MAAM,WAAW,UAAU;IACzB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd;mBACe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb;kDAC8C;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,MAAM,EAAE,OAAO,CAAC;IAChB,yCAAyC;IACzC,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,+EAA+E;AAC/E,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,IAAI,CAAC;IACZ,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;+EAM+E;AAC/E,MAAM,WAAW,KAAK;IACpB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D;;gCAE4B;IAC5B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC;sBACkB;IAClB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC/C,uCAAuC;IACvC,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;CAC9B"}
@@ -1,2 +1,37 @@
1
- export {};
1
+ /** The priority of the platform's own housekeeping: park expiries, reclaims
2
+ * and lock redrives. A user's message is never queued behind them. */
3
+ export const PRIORITY_LOW = -10;
4
+ /** `enqueue` refused a fresh dispatch: a depth cap is set and the queue has
5
+ * reached it. Only a fresh dispatch is ever refused; retries, redrives,
6
+ * resumes and expiries always go in, or a run already under way would be
7
+ * stranded. */
8
+ export class QueueFullError extends Error {
9
+ constructor(message = 'queue is full') {
10
+ super(message);
11
+ this.name = 'QueueFullError';
12
+ }
13
+ }
14
+ /** A job whose encoded payload is over the adapter's cap. */
15
+ export class PayloadTooLargeError extends Error {
16
+ constructor(message = 'job payload too large') {
17
+ super(message);
18
+ this.name = 'PayloadTooLargeError';
19
+ }
20
+ }
21
+ /** An enqueue whose `key` is already waiting or running. */
22
+ export class DuplicateJobError extends Error {
23
+ constructor(key) {
24
+ super(`a job with this key is already queued: ${key}`);
25
+ this.name = 'DuplicateJobError';
26
+ }
27
+ }
28
+ /** An adapter's answer to an operation it cannot do, such as counting on a
29
+ * queue with no read side. Callers treat it as "unknown", never as a
30
+ * failure. */
31
+ export class UnsupportedError extends Error {
32
+ constructor(what) {
33
+ super(`not supported by this adapter: ${what}`);
34
+ this.name = 'UnsupportedError';
35
+ }
36
+ }
2
37
  //# sourceMappingURL=queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/ports/queue.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/ports/queue.ts"],"names":[],"mappings":"AAEA;uEACuE;AACvE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,CAAC;AAEhC;;;gBAGgB;AAChB,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAO,GAAG,eAAe;QACnC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,6DAA6D;AAC7D,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAO,GAAG,uBAAuB;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,4DAA4D;AAC5D,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,GAAW;QACrB,KAAK,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;eAEe;AACf,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAY,IAAY;QACtB,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF"}
@@ -4,13 +4,21 @@ import type { TokenAttribution } from '../core/usage.js';
4
4
  import type { Storage } from './storage.js';
5
5
  import type { AdminStore, RunFilter, StepRecord } from './admin.js';
6
6
  import type { AgentRunState, BoundStorage } from '../core/state.js';
7
- import type { FollowOptions, SseOptions, SseStream } from '../core/follow.js';
7
+ import type { FollowFrame, FollowOptions, FollowThreadOptions, SseStream, ThreadCursor } from '../core/follow.js';
8
+ import type { StreamItem } from '../core/stream-events.js';
9
+ import type { StreamSnapshot } from './streams.js';
8
10
  import type { PublishEventOptions } from '../core/publish.js';
11
+ import type { SnapshotStream } from '../core/snapshot.js';
12
+ import type { PruneOptions, PruneReport } from '../core/prune.js';
13
+ import type { WireFormat } from '../core/agui.js';
14
+ import type { BuiltinToolPorts } from './tools.js';
15
+ import type { BuiltinToolName, BuiltinToolOptions } from '../core/builtin/index.js';
9
16
  export type { AdminStore, NewStepRecord, RunFilter, StepRecord } from './admin.js';
10
17
  export type { AgentRunState, BoundStorage, StorageContext } from '../core/state.js';
11
18
  import type { EventBus } from './bus.js';
12
19
  import type { Queue } from './queue.js';
13
20
  import type { Kv } from './kv.js';
21
+ import type { RunStreams } from './streams.js';
14
22
  import type { ExecuteInput, ExecuteOutcome } from '../core/engine.js';
15
23
  import type { AdminOverview, RunDetail, RunStats, ThreadDetail, ThreadSummary } from '../core/admin.js';
16
24
  export type { AdminOverview, RunDetail, RunStats, } from '../core/admin.js';
@@ -28,6 +36,8 @@ export interface RuntimePorts {
28
36
  bus: EventBus;
29
37
  queue: Queue;
30
38
  kv: Kv;
39
+ /** Run streams, one per segment; absent, none are written. */
40
+ streams?: RunStreams;
31
41
  /** User-provided model resolution (§3.3): models can live in any shape on
32
42
  * the consumer side — the platform only ever sees `ResolvedModel`. */
33
43
  resolveModel(modelName: string): ResolvedModel;
@@ -38,6 +48,8 @@ export interface RuntimePorts {
38
48
  * run, such as a usage row it failed to store. Defaults to `console`. */
39
49
  log?: Logger;
40
50
  config: AgentConfig;
51
+ /** The adapters behind the built-in tools. */
52
+ tools?: BuiltinToolPorts;
41
53
  }
42
54
  /** The little the platform needs from a logger. `console` satisfies it. */
43
55
  export interface Logger {
@@ -65,6 +77,10 @@ export interface RuntimeOptions {
65
77
  bus: EventBus;
66
78
  queue: Queue;
67
79
  kv: Kv;
80
+ /** Short-lived logs, one per run segment: where a run's live events go.
81
+ * Omitted, they are kept in memory, which only this process can read —
82
+ * fine for one process, not for web servers and workers that run apart. */
83
+ streams?: RunStreams;
68
84
  /** Models can come in any shape — config files, a database, provider SDKs.
69
85
  * The platform only ever sees the resolved `ResolvedModel`. */
70
86
  resolveModel(modelName: string): ResolvedModel;
@@ -77,6 +93,11 @@ export interface RuntimeOptions {
77
93
  * run. Defaults to `console`. */
78
94
  log?: Logger;
79
95
  config?: Partial<AgentConfig>;
96
+ /** The adapters behind the built-in tools: a search engine for
97
+ * `web_search`, a page reader for `web_fetch`, a sandbox provider for the
98
+ * tools that run commands. Only the tools you ask `builtinTools` for need
99
+ * theirs. */
100
+ tools?: BuiltinToolPorts;
80
101
  }
81
102
  export interface RunInput {
82
103
  /** Omit to create a fresh thread first (threads.create, §3.2) */
@@ -107,10 +128,40 @@ export interface RunInput {
107
128
  * from the AI SDK (§3.1). Merged over the spec default: the execute
108
129
  * input wins per provider namespace. */
109
130
  providerOptions?: ProviderOptions;
131
+ /** Name the run yourself (§2.1): your own records can be keyed by it
132
+ * before dispatch, and the worker sees the same id. Reusing one is
133
+ * refused, never silently re-run. */
134
+ runId?: string;
135
+ /** Cap this run's round trips below the config's `maxSteps`; a larger
136
+ * value is clamped to it. */
137
+ maxSteps?: number;
138
+ /** Images the user sent with the prompt. They are stored as image parts on
139
+ * the user message and reach the model natively. */
140
+ attachments?: Attachment[];
141
+ /** The caller's tenant, written on the dispatch ticket so a queue that
142
+ * spreads its claims across partitions can keep one tenant's backlog from
143
+ * starving the others. Opaque to the platform. */
144
+ partitionKey?: string;
145
+ /** The sending client's own name for the user turn. It comes back on the
146
+ * turn's MESSAGE_APPENDED, so the client that sent it can swap its
147
+ * optimistic copy for the real one by id, never by matching text. Opaque
148
+ * to the platform, and not stored. */
149
+ clientMessageId?: string;
150
+ }
151
+ /** An image on a user turn: a URL the provider can fetch, or a data: URL. */
152
+ export interface Attachment {
153
+ url: string;
154
+ mediaType?: string;
110
155
  }
156
+ /** Why a run was refused, for a host that answers differently to each:
157
+ * `active_run` (the thread already has one), `queue_full` (try again
158
+ * shortly), `billing` (the billing check said no). */
159
+ export type RefusedReason = 'active_run' | 'queue_full' | 'billing';
111
160
  export interface RunResult {
112
161
  accepted: boolean;
113
162
  threadId: string;
163
+ /** For the refusals a host acts on. */
164
+ reason?: RefusedReason;
114
165
  /** This run's id (§2.1) — the same one carried by the enqueued job. An
115
166
  * in-process worker must pass it back, or its dispatch has no identity. */
116
167
  runId?: string;
@@ -148,12 +199,16 @@ export interface ThreadUsage {
148
199
  /** The model the budget was measured against. */
149
200
  model: string;
150
201
  }
151
- /** What the platform hands a spec's `onFinish` once the run is finalized. */
202
+ /** What the platform hands a spec's `onSettle` and `onFinish`. */
152
203
  export interface RunFinishInfo {
153
204
  threadId: string;
154
205
  runId?: string;
155
206
  state: ExecutionState;
156
207
  stopReason: string;
208
+ /** A user stop (§2.1). */
209
+ cancelled: boolean;
210
+ /** Why the run failed, when it did. */
211
+ error?: string;
157
212
  tokensUsed: number;
158
213
  /** The tokens THIS segment spent. A run that parked and resumed finishes
159
214
  * once, so this is the last segment, not the whole run — and it is tokens
@@ -167,8 +222,40 @@ export interface RunFinishInfo {
167
222
  * `unpriced` above zero means some calls went unpriced and `costMicros` is
168
223
  * a floor. */
169
224
  usage: UsageTotals;
225
+ /** Set when the platform could not read the run's rows back. `usage` is
226
+ * then zeroed, and a hook that bills from it should refuse to settle
227
+ * rather than charge nothing: throw from `onSettle` and the run fails
228
+ * instead of going free. */
229
+ usageError?: unknown;
170
230
  }
231
+ /** A spec's settle hook (§5.6): where a run is charged. It runs once per run,
232
+ * whatever way the run ends — completed, stopped (while running, queued or
233
+ * parked), failed, or found later by the late-settle sweep — before the
234
+ * terminal state is written when a worker ends the run. A throw fails a run
235
+ * that was going to complete, and leaves the run unsettled so a later
236
+ * settle runs it again.
237
+ *
238
+ * Make it idempotent by `runId`. Once is kept by a claim on the run record,
239
+ * but a hook slower than the claim (10 minutes), or a mark that could not be
240
+ * written, can see the same run twice. */
241
+ export type SettleFn = (info: RunFinishInfo) => void | Promise<void>;
242
+ /** Builds the persona per step with the run's state (§3.1). It wins over the
243
+ * static `system` when set. A throw fails the step, like a model error. */
244
+ export type SystemFn = (threadId: string, state: AgentRunState) => string | Promise<string>;
245
+ /** Edits the prompt for one step, just before it is sent (§3.1): `messages` is
246
+ * the history the platform assembled (compacted, repaired, cache-stamped) and
247
+ * what comes back is what the model sees. It is the place for context that
248
+ * must NOT be saved — a screenshot the model should look at once, an editor
249
+ * snapshot — because anything added here is gone on the next step unless it
250
+ * is added again. */
251
+ export type PrepareStepFn = (threadId: string, state: AgentRunState, messages: Array<any>) => Array<any> | Promise<Array<any>>;
171
252
  /** Durable state used to hydrate a client before it starts live event replay. */
253
+ /** Where a follow starts: `cursor` (a ThreadCursor, or its wire string as an
254
+ * SSE Last-Event-ID carries it), or a bare record seq `since`. */
255
+ export interface FollowStartOptions extends Omit<FollowThreadOptions, 'cursor'> {
256
+ cursor?: ThreadCursor | string | null;
257
+ since?: number;
258
+ }
172
259
  export interface ThreadSnapshot {
173
260
  thread: ThreadDTO;
174
261
  messages: MessageDTO[];
@@ -176,10 +263,13 @@ export interface ThreadSnapshot {
176
263
  * reconnecting client rebuilds its subagent panel without depending on
177
264
  * events that only replay while a run is unfinished. */
178
265
  runs: RunRecord[];
179
- /** Cursor for starting live replay without duplicating snapshot state. */
266
+ /** The thread record's last seq. */
180
267
  lastEventSeq: number;
181
- /** Only the unfinished run's events, used to restore transient activity. */
268
+ /** The unfinished run's record entries: its open park, a refusal. */
182
269
  activeEvents: AgentEvent[];
270
+ /** The run stream in flight, or one that just ended: what the messages
271
+ * do not have yet, and where a live read picks up. */
272
+ stream: SnapshotStream | null;
183
273
  }
184
274
  /** Everything streamText accepts except the platform-owned keys (§3.1).
185
275
  * `onChunk` / `onFinish` ARE allowed — the platform chains them (§4). */
@@ -204,8 +294,14 @@ export type StreamTextAgentSpec = {
204
294
  } & Omit<Parameters<typeof import('ai').streamText>[0], 'model' | 'messages' | 'prompt' | 'system' | 'abortSignal' | 'maxSteps' | 'onStepFinish' | 'onError' | 'onFinish' | 'onChunk'> & {
205
295
  /** `system` is allowed here (static persona); per-run system is not. */
206
296
  system?: string;
297
+ /** The persona built per step with the run's state; wins over `system`. */
298
+ systemFn?: SystemFn;
299
+ /** Edits the prompt per step, for context that must not be saved. */
300
+ prepareStep?: PrepareStepFn;
207
301
  tools?: ToolSet;
208
302
  onChunk?: (para: any) => void | Promise<void>;
303
+ /** Charges the run (§5.6). See SettleFn. */
304
+ onSettle?: SettleFn;
209
305
  /** Fires once, after the platform finalized the run, with what the run did
210
306
  * and what it spent (§4). */
211
307
  onFinish?: (info: RunFinishInfo) => void | Promise<void>;
@@ -220,9 +316,26 @@ export type GenerateTextAgentSpec = {
220
316
  providerOptions?: ProviderOptions;
221
317
  } & Omit<Parameters<typeof import('ai').generateText>[0], 'model' | 'messages' | 'prompt' | 'abortSignal' | 'onFinish' | 'onStepFinish'> & {
222
318
  tools?: ToolSet;
319
+ /** The persona built per step with the run's state; wins over `system`. */
320
+ systemFn?: SystemFn;
321
+ /** Edits the prompt per step, for context that must not be saved. */
322
+ prepareStep?: PrepareStepFn;
323
+ /** Charges the run (§5.6). See SettleFn. */
324
+ onSettle?: SettleFn;
223
325
  /** Fires once, after the platform finalized the run (§4). */
224
326
  onFinish?: (info: RunFinishInfo) => void | Promise<void>;
225
327
  };
328
+ /** What a stuck-run sweep did. */
329
+ export interface ReclaimReport {
330
+ /** How many run records the sweep looked at. */
331
+ checked: number;
332
+ /** How many runs went back on the queue or were moved to their end state. */
333
+ redispatched: number;
334
+ /** How many ended runs had their settle run late. */
335
+ settled: number;
336
+ /** How many runs the sweep could not act on. */
337
+ errors: number;
338
+ }
226
339
  /** An executor bound to a generation flavor and to the user's generation
227
340
  * arguments (§3). Returned by the `create*Agent` factories. */
228
341
  export interface AgentHandle {
@@ -230,8 +343,9 @@ export interface AgentHandle {
230
343
  readonly kind: AgentKind;
231
344
  /** Worker-side only (§5.6). Throws on failure — see executeWithPolicy.
232
345
  * Returns 'lock-conflict' when another worker owns the thread's run lock
233
- * (nothing was executed) and 'stale' when a newer run has replaced this
234
- * one (§2.1, §2.8). */
346
+ * (nothing was executed), 'stale' when a newer run has replaced this
347
+ * one (§2.1, §2.8), and 'lock-lost' when this worker could not keep the
348
+ * lock and stopped early (§3.4). */
235
349
  execute(input: ExecuteInput): Promise<ExecuteOutcome>;
236
350
  /** execute + §2.8 failure policy: redrive < maxAttempts, else finalize FAILED */
237
351
  executeWithPolicy(input: ExecuteInput, policy?: {
@@ -260,6 +374,13 @@ export interface AgentCore {
260
374
  * usage rows, subagent runs, and the thread's hot kv keys (§3.2).
261
375
  * Refused while a run is active; stop() first. */
262
376
  deleteThread(threadId: string, state?: AgentRunState): Promise<DeleteThreadResult>;
377
+ /** The backstop for a run that nothing is working on (§2.5, §2.8): a QUEUED
378
+ * or RUNNING record older than `olderThanMs` whose lock nobody holds and
379
+ * whose job is gone is re-dispatched, and an ended record older than that
380
+ * whose settle never ran is settled. Call it from a periodic job. It pages
381
+ * through every such run. A record with no recorded state is read with an
382
+ * empty state. */
383
+ reclaimStuckRuns(olderThanMs: number): Promise<ReclaimReport>;
263
384
  hitl: {
264
385
  respond(input: RespondInput): Promise<RespondResult>;
265
386
  reclaimIfOrphaned(threadId: string, state?: AgentRunState): Promise<boolean>;
@@ -267,35 +388,67 @@ export interface AgentCore {
267
388
  events: {
268
389
  since(threadId: string, sinceSeq: number, state?: AgentRunState): Promise<AgentEvent[]>;
269
390
  subscribe(threadId: string, handler: (event: AgentEvent) => void): Promise<() => void>;
270
- /** Replay then live, as one sequence, with the cursor discipline already
271
- * applied (§2.2): subscribe before replaying, never emit at or below the
272
- * cursor, forward a seq-0 notice without moving it.
391
+ /** A thread live, as one sequence of frames (§2.2): its record entries
392
+ * and notices, and its run streams — the stream the cursor names read on
393
+ * from its offset, the next segment's from its RUN_STARTED, and one
394
+ * SNAPSHOT frame when the stream the client was reading is gone.
273
395
  *
274
- * Framework-neutral — an async iterable is something Express, Nest, Hono,
275
- * Next or a plain worker can each consume in their own way. Pass a signal,
276
- * or the subscription outlives the client. */
277
- follow(threadId: string, options?: FollowOptions & {
396
+ * `cursor` is where the client is: the SSE `id:` it last saw
397
+ * (Last-Event-ID), as a string or parsed. `since` is a bare record seq,
398
+ * as older clients send. Framework-neutral — an async iterable is
399
+ * something Express, Nest, Hono, Next or a plain worker can each consume
400
+ * in their own way. Pass a signal, or the follow outlives the client. */
401
+ follow(threadId: string, options?: FollowStartOptions & {
278
402
  state?: AgentRunState;
279
- }): AsyncGenerator<AgentEvent>;
280
- /** `follow`, encoded as Server-Sent Events. Returns the stream and the
403
+ }): AsyncGenerator<FollowFrame>;
404
+ /** `follow`, encoded as Server-Sent Events. Each frame that moves the
405
+ * cursor carries it as its `id:`. `wireFormat: 'ag-ui'` sends AG-UI
406
+ * events instead of our frames (opt-in). Returns the stream and the
281
407
  * headers rather than a Response, because half the ecosystem has none. */
282
- sse(threadId: string, options?: SseOptions & {
408
+ sse(threadId: string, options?: FollowStartOptions & {
409
+ retryMs?: number;
410
+ wireFormat?: WireFormat;
283
411
  state?: AgentRunState;
284
412
  }): SseStream;
413
+ /** The thread record and its notices alone, as before run streams: no
414
+ * stream frames. */
415
+ followRecord(threadId: string, options?: FollowOptions & {
416
+ state?: AgentRunState;
417
+ }): AsyncGenerator<AgentEvent>;
285
418
  /** Publish an event of your own on a thread, from anywhere on the server
286
419
  * — a webhook, a cron job, a route. Tools get the same thing bound to
287
- * their thread as `publishEvent` on their options. Durable by default;
288
- * `{ durable: false }` is a bus-only notice. Platform event types are
289
- * refused. */
420
+ * their thread as `publishEvent` on their options. Live only by default;
421
+ * `{ durable: true }` also keeps it in the thread record. Platform event
422
+ * types are refused. */
290
423
  publishEvent(threadId: string, type: string, payload: unknown, options?: PublishEventOptions & {
291
424
  state?: AgentRunState;
292
425
  }): Promise<AgentEvent>;
293
426
  };
427
+ /** Delete the stream-only rows (chunks, step markers, state changes…)
428
+ * releases before run streams left in the event table, a batch at a
429
+ * time. Nothing reads them any more; an app's own types are kept. Run it
430
+ * when it suits you, after upgrading: `{ dryRun: true }` counts first. */
431
+ pruneEvents(options?: PruneOptions): Promise<PruneReport>;
432
+ /** A run stream by id, for a caller that only cares about one run: its
433
+ * items after `after`, live until it closes. Throws StreamGoneError once
434
+ * the stream is past its grace window. */
435
+ streams: {
436
+ read(streamId: string, after: string | null, signal?: AbortSignal): AsyncIterable<StreamItem>;
437
+ snapshot(streamId: string, after?: string | null): Promise<StreamSnapshot | null>;
438
+ };
294
439
  /** Agent factories — see §4. Each call registers a handle under `spec.name`. */
295
440
  createStreamTextAgent(spec: StreamTextAgentSpec): AgentHandle;
296
441
  createGenerateTextAgent(spec: GenerateTextAgentSpec): AgentHandle;
297
442
  /** Worker-side resolution of a registered handle from the queue job. */
298
443
  getAgent(name: string): AgentHandle | null;
444
+ /** The built-in tools, ready to put in an agent's `tools`: one name and one
445
+ * input shape in every runtime, so any model that can call tools can use
446
+ * them. Throws when a tool's adapter was not given to `setupAgentCore`.
447
+ *
448
+ * ```ts
449
+ * tools: { ...runtime.builtinTools(['web_search', 'web_fetch']), lookupInvoice }
450
+ * ``` */
451
+ builtinTools(names: BuiltinToolName[], options?: BuiltinToolOptions): Record<string, any>;
299
452
  /** Operational reads (§2.9). The platform records what runs did; building a
300
453
  * view over it is the caller's business. Everything here comes from the
301
454
  * platform's OWN store — it never reads the caller's database. */
@@ -325,10 +478,25 @@ export interface AgentCore {
325
478
  * delivery (the per-thread run lock, §3.4). The HTTP layer only verifies
326
479
  * signatures, parses JSON, and calls this. */
327
480
  worker: {
328
- handleJob(job: RunJob): Promise<{
481
+ /** Run one job. Throws `UnknownAgentError` for a job naming an agent this
482
+ * process does not have, so a queue that retries on failure keeps it.
483
+ * Abort `signal` on shutdown: the segment stops at once and the job goes
484
+ * back on the queue without spending an attempt. */
485
+ handleJob(job: RunJob, options?: {
486
+ signal?: AbortSignal;
487
+ }): Promise<{
329
488
  accepted: boolean;
330
489
  reason?: string;
331
490
  }>;
491
+ /** What a queue calls when it gives up on a job (§2.8): the run behind it
492
+ * is failed with the reason and settled, so its thread does not read
493
+ * QUEUED or RUNNING for ever. A job whose run has already moved on is
494
+ * left alone. */
495
+ handleDeadJob(job: RunJob, attempts: number, cause: unknown): Promise<void>;
332
496
  };
497
+ /** The ports bundle, scoped to a run's state when one is given (§2.10): for
498
+ * a host that reads storage, publishes or checks the kv the way the
499
+ * platform does. */
500
+ ports(state?: AgentRunState): RuntimePorts;
333
501
  }
334
502
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/ports/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/ports/runtime.ts"],"names":[],"mappings":"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"}