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
@@ -25,13 +25,14 @@ export function attributeTokens(usage, meta) {
25
25
  const anthropicCached = pick(meta?.anthropic?.cacheReadInputTokens);
26
26
  const cachedInputTokens = pick(u.cachedInputTokens) + openaiCached + anthropicCached;
27
27
  const inputTokens = openaiCached > 0 ? Math.max(0, reportedInput - openaiCached) : reportedInput;
28
- const totalFromProvider = pick(u.totalTokens);
29
- const summed = inputTokens + cachedInputTokens + outputTokens;
28
+ // Always the sum, never the provider's own total: Anthropic's leaves the
29
+ // cache reads out, so trusting it would make the same count mean different
30
+ // things per provider. The Go runtime computes it the same way.
30
31
  return {
31
32
  inputTokens,
32
33
  cachedInputTokens,
33
34
  outputTokens,
34
- totalTokens: totalFromProvider > 0 ? totalFromProvider : summed,
35
+ totalTokens: inputTokens + cachedInputTokens + outputTokens,
35
36
  };
36
37
  }
37
38
  /** Total tokens used — input + cached + output, NaN-guarded. */
@@ -89,24 +90,89 @@ export function providerMeta(meta, response) {
89
90
  * the run: a bill that is short a line is recoverable, a run that died over a
90
91
  * price list is not. Storage failures are logged for the same reason — the
91
92
  * tokens of a stopped run were still spent. */
93
+ //
94
+ // A run's own calls go through its RunLedger.record instead, which also holds
95
+ // the run to one currency and books the spend against its caps.
92
96
  export async function recordCall(deps, threadId, usage) {
93
- const log = deps.log ?? console;
97
+ const priced = await price(deps, usage);
98
+ await store(deps, threadId, priced);
99
+ return priced;
100
+ }
101
+ /** Put the pricer's cost on a usage row, leaving it unpriced when the pricer
102
+ * fails or has nothing to say. */
103
+ async function price(deps, usage) {
94
104
  const priced = { ...usage };
95
105
  if (deps.pricer && !priced.cost) {
96
106
  try {
97
107
  priced.cost = (await deps.pricer.price(priced)) ?? null;
98
108
  }
99
109
  catch (err) {
100
- log.error('usage not priced', { run: priced.runId, model: priced.model, err });
110
+ (deps.log ?? console).error('usage not priced', { run: priced.runId, model: priced.model, err });
101
111
  }
102
112
  }
113
+ return priced;
114
+ }
115
+ /** Write a usage row. A failure is logged, not thrown: the tokens of a
116
+ * stopped run were still spent. */
117
+ async function store(deps, threadId, usage) {
103
118
  try {
104
- await deps.storage.usage.record(threadId, priced);
119
+ await deps.storage.usage.record(threadId, usage);
105
120
  }
106
121
  catch (err) {
107
- log.error('usage not recorded', { run: priced.runId, thread: threadId, err });
122
+ (deps.log ?? console).error('usage not recorded', { run: usage.runId, thread: threadId, err });
108
123
  }
109
- return priced;
124
+ }
125
+ /** What a run has spent, main agent and nested runs together (§2.7): its
126
+ * tokens, its money and the one currency that money is in. Shared by
127
+ * reference so a child's spend counts against the run's caps the moment it
128
+ * happens — a budget that ignores delegated work is not a budget.
129
+ *
130
+ * A run's ledger starts from what the run already spent (`seedRunLedger`):
131
+ * its earlier segments, before a park or a retry, count against the same
132
+ * caps. After that it is kept in memory, so the caps are checked without
133
+ * reading every usage row back after every step. */
134
+ export class RunLedger {
135
+ tokensUsed = 0;
136
+ costMicros = 0;
137
+ currency;
138
+ /** Price one call, store its row and book it (§4). A run is priced in one
139
+ * currency: a call priced in another is stored unpriced, with an error
140
+ * logged, rather than mixed into a bill that cannot add it up. */
141
+ async record(deps, threadId, usage) {
142
+ const priced = await price(deps, usage);
143
+ if (priced.cost) {
144
+ this.currency ??= priced.cost.currency;
145
+ if (priced.cost.currency !== this.currency) {
146
+ (deps.log ?? console).error('usage priced in a second currency; stored unpriced', {
147
+ run: priced.runId, model: priced.model, currency: priced.cost.currency, runCurrency: this.currency,
148
+ });
149
+ priced.cost = null;
150
+ }
151
+ }
152
+ await store(deps, threadId, priced);
153
+ this.tokensUsed += priced.totalTokens;
154
+ if (priced.cost)
155
+ this.costMicros += priced.cost.micros;
156
+ return priced;
157
+ }
158
+ }
159
+ /** Start a ledger from the run's usage rows (§4). A failed read is logged and
160
+ * the ledger starts from zero: a run is not failed over its caps'
161
+ * bookkeeping. */
162
+ export async function seedRunLedger(deps, threadId, runId) {
163
+ const ledger = new RunLedger();
164
+ if (!runId)
165
+ return ledger;
166
+ try {
167
+ const spent = await deps.storage.usage.total(threadId, { runId });
168
+ ledger.tokensUsed = spent.totalTokens;
169
+ ledger.costMicros = spent.costMicros;
170
+ ledger.currency = spent.currency;
171
+ }
172
+ catch (err) {
173
+ (deps.log ?? console).error('run spend not read; the caps count from zero this segment', { run: runId, err });
174
+ }
175
+ return ledger;
110
176
  }
111
177
  /** Zero totals — what a thread with no usage rows reports. */
112
178
  export const emptyTotals = () => ({
@@ -118,54 +184,111 @@ export const emptyTotals = () => ({
118
184
  unpriced: 0,
119
185
  lines: [],
120
186
  });
187
+ /** Rebuilds UsageTotals from grouped rows that a SQL adapter read GROUP BY
188
+ * agent, model AND currency. Grouping by currency is what keeps a sum honest;
189
+ * merging here is what keeps one agent's spend on one model a single line.
190
+ *
191
+ * The rules, the same in every adapter and in the Go runtime: `costMicros`
192
+ * is summed in the first currency seen, and a group priced in another
193
+ * currency counts as unpriced there instead of being added. `costs` keeps
194
+ * every currency's own total. A line takes the currency of the first priced
195
+ * group on it; a group priced in a different currency gets a line of its
196
+ * own, and unpriced groups join the first line of their agent and model. */
197
+ export class UsageMerger {
198
+ out = emptyTotals();
199
+ lines = new Map();
200
+ costs = new Map();
201
+ add(g) {
202
+ const out = this.out;
203
+ const l = { ...g.line };
204
+ const currency = g.currency || '';
205
+ out.inputTokens += l.inputTokens;
206
+ out.cachedInputTokens += l.cacheReadInputTokens;
207
+ out.outputTokens += l.outputTokens;
208
+ out.totalTokens += g.totalTokens;
209
+ out.unpriced += g.unpriced;
210
+ if (!currency) {
211
+ l.costMicros = 0;
212
+ delete l.currency;
213
+ }
214
+ else {
215
+ const priced = l.calls - g.unpriced;
216
+ out.costs ??= [];
217
+ let i = this.costs.get(currency);
218
+ if (i === undefined) {
219
+ i = out.costs.length;
220
+ this.costs.set(currency, i);
221
+ out.costs.push({ currency, costMicros: 0, calls: 0 });
222
+ }
223
+ out.costs[i].costMicros += l.costMicros;
224
+ out.costs[i].calls += priced;
225
+ out.currency ??= currency;
226
+ if (currency === out.currency) {
227
+ out.costMicros += l.costMicros;
228
+ }
229
+ else {
230
+ // Another unit: it cannot be added to costMicros, so its calls count
231
+ // as unpriced there and costMicros stays a floor.
232
+ out.unpriced += priced;
233
+ }
234
+ l.currency = currency;
235
+ }
236
+ const key = [l.agentId ?? '', l.agentName ?? '', l.model ?? '', l.modelId ?? ''].join('\u0000');
237
+ const at = (this.lines.get(key) ?? []).find((i) => {
238
+ const c = out.lines[i].currency ?? '';
239
+ return !currency || c === currency || c === '';
240
+ });
241
+ if (at === undefined) {
242
+ this.lines.set(key, [...(this.lines.get(key) ?? []), out.lines.length]);
243
+ out.lines.push(l);
244
+ return;
245
+ }
246
+ const line = out.lines[at];
247
+ if (!line.currency && currency)
248
+ line.currency = currency;
249
+ line.inputTokens += l.inputTokens;
250
+ line.cacheReadInputTokens += l.cacheReadInputTokens;
251
+ line.cacheWriteInputTokens += l.cacheWriteInputTokens;
252
+ line.outputTokens += l.outputTokens;
253
+ line.reasoningTokens += l.reasoningTokens;
254
+ line.calls += l.calls;
255
+ line.estimated += l.estimated;
256
+ line.costMicros += l.costMicros;
257
+ }
258
+ totals() {
259
+ return this.out;
260
+ }
261
+ }
121
262
  /** Sum usage rows into the shape `total` must return: the four counters, the
122
263
  * money, and one line per agent and model.
123
264
  *
124
- * A storage adapter that can group in the database should do that instead.
125
- * This is for the ones that cannot, and for anyone writing their own adapter:
126
- * feed every matching row through it and you get exactly what the port
127
- * promises, lines in first-seen order. */
265
+ * A storage adapter that can group in the database should do that instead
266
+ * (see UsageMerger). This is for the ones that cannot, and for anyone writing
267
+ * their own adapter: feed every matching row through it and you get exactly
268
+ * what the port promises, lines in first-seen order. */
128
269
  export function sumUsage(rows) {
129
- const out = emptyTotals();
130
- const index = new Map();
270
+ const merge = new UsageMerger();
131
271
  for (const u of rows) {
132
- out.inputTokens += u.inputTokens;
133
- out.cachedInputTokens += u.cacheReadInputTokens;
134
- out.outputTokens += u.outputTokens;
135
- out.totalTokens += u.totalTokens;
136
- if (u.cost) {
137
- out.costMicros += u.cost.micros;
138
- out.currency ??= u.cost.currency;
139
- }
140
- else {
141
- out.unpriced += 1;
142
- }
143
- const key = [u.agentId ?? '', u.agentName ?? '', u.model ?? '', u.modelId ?? ''].join('\u0000');
144
- let i = index.get(key);
145
- if (i === undefined) {
146
- i = out.lines.length;
147
- index.set(key, i);
148
- out.lines.push({
272
+ merge.add({
273
+ line: {
149
274
  agentId: u.agentId ?? null,
150
275
  agentName: u.agentName ?? null,
151
276
  model: u.model ?? null,
152
277
  modelId: u.modelId ?? null,
153
- inputTokens: 0, cacheReadInputTokens: 0, cacheWriteInputTokens: 0,
154
- outputTokens: 0, reasoningTokens: 0, calls: 0, estimated: 0, costMicros: 0,
155
- });
156
- }
157
- const line = out.lines[i];
158
- line.inputTokens += u.inputTokens;
159
- line.cacheReadInputTokens += u.cacheReadInputTokens;
160
- line.cacheWriteInputTokens += u.cacheWriteInputTokens;
161
- line.outputTokens += u.outputTokens;
162
- line.reasoningTokens += u.reasoningTokens;
163
- line.calls += 1;
164
- if (u.estimated)
165
- line.estimated += 1;
166
- if (u.cost)
167
- line.costMicros += u.cost.micros;
278
+ inputTokens: u.inputTokens,
279
+ cacheReadInputTokens: u.cacheReadInputTokens,
280
+ cacheWriteInputTokens: u.cacheWriteInputTokens,
281
+ outputTokens: u.outputTokens,
282
+ reasoningTokens: u.reasoningTokens,
283
+ calls: 1,
284
+ estimated: u.estimated ? 1 : 0,
285
+ costMicros: u.cost?.micros ?? 0,
286
+ },
287
+ currency: u.cost?.currency ?? null,
288
+ totalTokens: u.totalTokens,
289
+ unpriced: u.cost ? 0 : 1,
290
+ });
168
291
  }
169
- return out;
292
+ return merge.totals();
170
293
  }
171
294
  //# sourceMappingURL=usage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/core/usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/core/usage.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,21 +1,26 @@
1
1
  export type { Storage } from './ports/storage.js';
2
2
  export type { EventBus } from './ports/bus.js';
3
- export type { EnqueueOptions, Queue } from './ports/queue.js';
3
+ export { PRIORITY_LOW, QueueFullError, PayloadTooLargeError, DuplicateJobError, UnsupportedError, type EnqueueOptions, type Queue, type QueueStats, type QueuedJob, } from './ports/queue.js';
4
4
  export type { Kv } from './ports/kv.js';
5
- export type { AgentCore, AgentHandle, AgentKind, DeleteThreadResult, GenerateTextAgentSpec, RespondInput, RespondResult, ResolvedModel, RunInput, RunResult, RuntimeOptions, RuntimePorts, StopResult, StreamTextAgentSpec, SubagentsConfig, ThreadSnapshot, ThreadUsage, Pricer, Logger, RunFinishInfo, } from './ports/runtime.js';
6
- export { setupAgentCore } from './runtime.js';
5
+ export { StreamClosedError, StreamGoneError, type RunStreams, type StreamMeta, type StreamSnapshot, } from './ports/streams.js';
6
+ export * from './core/stream-events.js';
7
+ export type { SnapshotStream } from './core/snapshot.js';
8
+ export { agUiState, toAgUi, type AgUiState, type WireFormat } from './core/agui.js';
9
+ export { pruneEvents, STREAM_ONLY_TYPES, type PruneOptions, type PruneReport } from './core/prune.js';
10
+ export type { AgentCore, AgentHandle, AgentKind, DeleteThreadResult, GenerateTextAgentSpec, RespondInput, RespondResult, ResolvedModel, RunInput, RunResult, Attachment, RefusedReason, RuntimeOptions, RuntimePorts, StopResult, StreamTextAgentSpec, SubagentsConfig, ThreadSnapshot, FollowStartOptions, ThreadUsage, Pricer, Logger, RunFinishInfo, SettleFn, SystemFn, PrepareStepFn, ReclaimReport, } from './ports/runtime.js';
11
+ export { setupAgentCore, UnknownAgentError } from './runtime.js';
7
12
  export { execute, executeStep, executeWithPolicy, finalize, markRequiresConfirmation, type ExecuteInput, type ExecuteOutcome, type FinalizeInput, type StepResult, } from './core/engine.js';
8
13
  export { agentTool, type ToolContext } from './core/tools.js';
9
- export { followEvents, toSseStream, sseFrame, SSE_HEADERS, type FollowOptions, type SseOptions, type SseStream, } from './core/follow.js';
14
+ export { followEvents, followThread, followFrame, formatCursor, parseCursor, toFollowSse, agUiFrame, toSseStream, sseFrame, SSE_HEADERS, type FollowFrame, type FollowOptions, type FollowThreadOptions, type SseOptions, type SseStream, type ThreadCursor, } from './core/follow.js';
10
15
  export type { AgentRunState, BoundStorage, StorageContext } from './core/state.js';
11
- export type { AdminThread, ThreadStart, StepRecord, RunFilter, AdminThreadFilter } from './ports/admin.js';
16
+ export type { AdminThread, ThreadStart, StepRecord, RunFilter, AdminThreadFilter, RunCursor, RunDeltas, RunTotals } from './ports/admin.js';
12
17
  export type { BillingCheck } from './core/types.js';
13
18
  export { claimRun, redriveKey, runIdKey } from './core/keys.js';
14
- export { countTokens, sumUsage, emptyTotals } from './core/usage.js';
19
+ export { countTokens, sumUsage, emptyTotals, UsageMerger, type UsageGroup } from './core/usage.js';
15
20
  /** Pricing (§4): the pricers that ship with the platform. `pricing.table(...)`
16
21
  * is the common case; see the module for `receipt` and `chain`. */
17
22
  export * as pricing from './pricing.js';
18
- export type { ModelPrice, PriceTable, ReceiptReader } from './pricing.js';
23
+ export type { ModelPrice, PriceTable, ReceiptReader, ToolPrice, ToolPriceTable } from './pricing.js';
19
24
  export { respond, parkForApproval, parkForInput, ToolParkedError, REASON_APPROVAL, hitlDeadline, isApprovalPark, type ParkRequest, loadPendingHitl, loadOpenHitls, withHitl, HITL_PARKED, HITL_TTL_MS, hitlKey, type HitlFrame, type HitlResponse, type ParkInput, type PendingHitl, } from './core/hitl.js';
20
25
  export { reclaimIfOrphaned } from './core/reclaim.js';
21
26
  export { contextBudget, contextUsage, compactContext, CONTEXT_TOKEN_CEILING } from './core/context.js';
@@ -23,11 +28,23 @@ export { Semaphore, runNestedAgent, spawnSubagentTool, type SubagentCtx } from '
23
28
  export { run } from './core/run.js';
24
29
  export { publishEvent, withPublishEvent, RESERVED_EVENT_TYPES, type PublishEventOptions, type ToolPublishEvent, } from './core/publish.js';
25
30
  export { stop } from './core/stop.js';
31
+ export { isPermanentError } from './core/permanent.js';
26
32
  export { repairDanglingToolCalls, DANGLING_CALL_RESULT } from './core/messages.js';
27
- export { DEFAULT_CONFIG, resolveConfig, type AgentConfig, type AgentEvent, type ExecutionState, type MessageDTO, type MessageRole, type NewMessage, type NewRunRecord, type NewUsage, type UsageLine, type UsageFilter, type UsageKind, type UsageOutcome, type Cost, type ResolvedModel as ResolvedModelDTO, type RunPatch, type RunRecord, type RunJob, type ResumeInfo, type ContextUsage, type NestedDescriptor, type ThreadDTO, type UsageTotals, } from './core/types.js';
28
- export { PrismaStorage, type PrismaLike } from './adapters/prisma.js';
29
- export { UpstashBus, UpstashKv, THREAD_CHANNEL, type UpstashRedisLike, type UpstashSubscriberLike } from './adapters/upstash.js';
30
- export { RedisBus, RedisKv, type RedisClientLike, type RedisSubscriberLike } from './adapters/redis.js';
33
+ export { DEFAULT_CONFIG, resolveConfig, type AgentConfig, type RunBudget, type AgentEvent, type ExecutionState, type MessageDTO, type MessageRole, type NewMessage, type NewRunRecord, type NewUsage, type UsageLine, type SubagentProfile, type CurrencyCost, type UsageFilter, type UsageKind, type UsageOutcome, type Cost, type ResolvedModel as ResolvedModelDTO, type RunPatch, type RunRecord, type RunJob, type JobKind, type ResumeInfo, type ContextUsage, type NestedDescriptor, type ThreadDTO, type UsageTotals, } from './core/types.js';
34
+ export { PrismaStorage, PrismaRunStreams, type PrismaLike, type PrismaStreamsLike } from './adapters/prisma.js';
35
+ export { UpstashBus, UpstashKv, UpstashRunStreams, THREAD_CHANNEL, type UpstashRedisLike, type UpstashSubscriberLike } from './adapters/upstash.js';
36
+ export { RedisBus, RedisKv, RedisRunStreams, type RedisClientLike, type RedisSubscriberLike } from './adapters/redis.js';
31
37
  export { QStashQueue, type QStashLike, type QStashQueueOptions } from './adapters/qstash.js';
32
- export { MemoryStorage, MemoryBus, MemoryQueue, MemoryKv } from './adapters/memory.js';
38
+ export { MemoryStorage, MemoryBus, MemoryQueue, MemoryKv, MemoryRunStreams, MemorySearch, MemoryFetcher, MemorySandbox } from './adapters/memory.js';
39
+ export { BraveWebSearch, type BraveWebSearchOptions } from './adapters/brave.js';
40
+ export { JinaWebSearch, JinaReader, type JinaOptions } from './adapters/jina.js';
41
+ export { PageReader, BlockedUrlError, isPrivateAddress, type PageReaderOptions } from './adapters/page-reader.js';
42
+ export type { BuiltinToolPorts, FetchedPage, Fetcher, FetchOptions, Search, SearchHit, SearchOptions, SearchRecency, } from './ports/tools.js';
43
+ export { LocalSandbox, type LocalSandboxOptions } from './adapters/local-sandbox.js';
44
+ export { DockerSandbox, type DockerSandboxOptions } from './adapters/docker.js';
45
+ export { E2BSandbox, type E2BSandboxOptions } from './adapters/e2b.js';
46
+ export { ComputeSdkSandbox, type ComputeSdkSandboxOptions, type ComputeSdkProviderLike, type ComputeSdkSandboxLike, } from './adapters/computesdk.js';
47
+ export { DEFAULT_COMMAND_TIMEOUT_MS, MAX_COMMAND_OUTPUT_BYTES, TIMED_OUT_EXIT_CODE, SandboxFileNotFoundError, SandboxGoneError, SandboxUnsupportedError, type CommandResult, type CreateSandboxOptions, type FileEntry, type RunCommandOptions, type Sandbox, type SandboxFileSystem, type SandboxInfo, type SandboxNetwork, type SandboxProvider, } from './ports/sandbox.js';
48
+ export { sandboxFor, withSandbox, type ThreadSandbox } from './core/builtin/sandbox.js';
49
+ export { BUILTIN_TOOL_DEFINITIONS, BUILTIN_TOOL_NAMES, type BuiltinToolName, type BuiltinToolOptions, type WebFetchOptions, type WebSearchOptions, type ApprovalRule, type BashInput, type BashOptions, type CodeExecutionInput, type CodeExecutionOptions, type TextEditorInput, type TextEditorOptions, } from './core/builtin/index.js';
33
50
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,11 +1,16 @@
1
+ export { PRIORITY_LOW, QueueFullError, PayloadTooLargeError, DuplicateJobError, UnsupportedError, } from './ports/queue.js';
2
+ export { StreamClosedError, StreamGoneError, } from './ports/streams.js';
3
+ export * from './core/stream-events.js';
4
+ export { agUiState, toAgUi } from './core/agui.js';
5
+ export { pruneEvents, STREAM_ONLY_TYPES } from './core/prune.js';
1
6
  // runtime — the factory that binds ports to behaviors
2
- export { setupAgentCore } from './runtime.js';
7
+ export { setupAgentCore, UnknownAgentError } from './runtime.js';
3
8
  // core — behaviors, all ports-only
4
9
  export { execute, executeStep, executeWithPolicy, finalize, markRequiresConfirmation, } from './core/engine.js';
5
10
  export { agentTool } from './core/tools.js';
6
- export { followEvents, toSseStream, sseFrame, SSE_HEADERS, } from './core/follow.js';
11
+ export { followEvents, followThread, followFrame, formatCursor, parseCursor, toFollowSse, agUiFrame, toSseStream, sseFrame, SSE_HEADERS, } from './core/follow.js';
7
12
  export { claimRun, redriveKey, runIdKey } from './core/keys.js';
8
- export { countTokens, sumUsage, emptyTotals } from './core/usage.js';
13
+ export { countTokens, sumUsage, emptyTotals, UsageMerger } from './core/usage.js';
9
14
  /** Pricing (§4): the pricers that ship with the platform. `pricing.table(...)`
10
15
  * is the common case; see the module for `receipt` and `chain`. */
11
16
  export * as pricing from './pricing.js';
@@ -16,13 +21,24 @@ export { Semaphore, runNestedAgent, spawnSubagentTool } from './core/subagent.js
16
21
  export { run } from './core/run.js';
17
22
  export { publishEvent, withPublishEvent, RESERVED_EVENT_TYPES, } from './core/publish.js';
18
23
  export { stop } from './core/stop.js';
24
+ export { isPermanentError } from './core/permanent.js';
19
25
  export { repairDanglingToolCalls, DANGLING_CALL_RESULT } from './core/messages.js';
20
26
  // types
21
27
  export { DEFAULT_CONFIG, resolveConfig, } from './core/types.js';
22
28
  // reference adapters
23
- export { PrismaStorage } from './adapters/prisma.js';
24
- export { UpstashBus, UpstashKv, THREAD_CHANNEL } from './adapters/upstash.js';
25
- export { RedisBus, RedisKv } from './adapters/redis.js';
29
+ export { PrismaStorage, PrismaRunStreams } from './adapters/prisma.js';
30
+ export { UpstashBus, UpstashKv, UpstashRunStreams, THREAD_CHANNEL } from './adapters/upstash.js';
31
+ export { RedisBus, RedisKv, RedisRunStreams } from './adapters/redis.js';
26
32
  export { QStashQueue } from './adapters/qstash.js';
27
- export { MemoryStorage, MemoryBus, MemoryQueue, MemoryKv } from './adapters/memory.js';
33
+ export { MemoryStorage, MemoryBus, MemoryQueue, MemoryKv, MemoryRunStreams, MemorySearch, MemoryFetcher, MemorySandbox } from './adapters/memory.js';
34
+ export { BraveWebSearch } from './adapters/brave.js';
35
+ export { JinaWebSearch, JinaReader } from './adapters/jina.js';
36
+ export { PageReader, BlockedUrlError, isPrivateAddress } from './adapters/page-reader.js';
37
+ export { LocalSandbox } from './adapters/local-sandbox.js';
38
+ export { DockerSandbox } from './adapters/docker.js';
39
+ export { E2BSandbox } from './adapters/e2b.js';
40
+ export { ComputeSdkSandbox, } from './adapters/computesdk.js';
41
+ export { DEFAULT_COMMAND_TIMEOUT_MS, MAX_COMMAND_OUTPUT_BYTES, TIMED_OUT_EXIT_CODE, SandboxFileNotFoundError, SandboxGoneError, SandboxUnsupportedError, } from './ports/sandbox.js';
42
+ export { sandboxFor, withSandbox } from './core/builtin/sandbox.js';
43
+ export { BUILTIN_TOOL_DEFINITIONS, BUILTIN_TOOL_NAMES, } from './core/builtin/index.js';
28
44
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA,sDAAsD;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,mCAAmC;AACnC,OAAO,EACL,OAAO,EACP,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,wBAAwB,GAKzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAoB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EACL,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,WAAW,GAIZ,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAErE;oEACoE;AACpE,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC,OAAO,EACL,OAAO,EACP,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EAEd,eAAe,EACf,aAAa,EACb,QAAQ,EACR,WAAW,EACX,WAAW,EACX,OAAO,GAKR,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAoB,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,GAGrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEnF,QAAQ;AACR,OAAO,EACL,cAAc,EACd,aAAa,GAuBd,MAAM,iBAAiB,CAAC;AAEzB,qBAAqB;AACrB,OAAO,EAAE,aAAa,EAAmB,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAqD,MAAM,uBAAuB,CAAC;AACjI,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAkD,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,WAAW,EAA4C,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,12 @@ export interface AdminStore {
19
19
  upsert(thread: NewAdminThread): Promise<void>;
20
20
  countByState(): Promise<Partial<Record<ExecutionState, number>>>;
21
21
  list(filter: AdminThreadFilter): Promise<AdminThread[]>;
22
+ /** One thread, or null when it was never seen. */
23
+ get(threadId: string): Promise<AdminThread | null>;
24
+ /** Remove a thread with its runs and steps: what a deleted thread leaves
25
+ * behind in operational history (§3.2). An unknown thread is not an
26
+ * error. */
27
+ delete(threadId: string): Promise<void>;
22
28
  };
23
29
  runs: {
24
30
  start(run: NewRunRecord): Promise<RunRecord>;
@@ -30,6 +36,23 @@ export interface AdminStore {
30
36
  /** Counts by state across every run. The "what is happening right now"
31
37
  * aggregate, pushed down so it never drags rows into memory. */
32
38
  countByState(): Promise<Partial<Record<ExecutionState, number>>>;
39
+ /** Claim the right to run a run's settle hook (§5.6), in one conditional
40
+ * write: it wins only while the run is not settled and no other claim on
41
+ * it is newer than `staleBefore`. A claim older than that belongs to a
42
+ * settler that died, and is taken over. False when the run is unknown,
43
+ * settled, or claimed by someone else. */
44
+ claimSettle(runId: string, token: string, staleBefore: Date): Promise<boolean>;
45
+ /** Add to a run's counters in one write (`SET steps = steps + n`), so two
46
+ * segments that close together both count. An unknown run is not an
47
+ * error. */
48
+ increment(runId: string, deltas: RunDeltas): Promise<void>;
49
+ /** Count and sum every run the filter matches, grouped in the store:
50
+ * exact however many runs there are. `limit` and `before` are ignored. */
51
+ totals(filter: RunFilter): Promise<RunTotals>;
52
+ /** End a claim made with `token`. `settled` marks the run settled for
53
+ * good; otherwise the claim is dropped so a later settle can run the hook
54
+ * again. A claim that was taken over is left alone. */
55
+ endSettle(runId: string, token: string, settled: boolean): Promise<void>;
33
56
  };
34
57
  steps: {
35
58
  record(step: NewStepRecord): Promise<void>;
@@ -112,9 +135,45 @@ export interface RunFilter {
112
135
  state?: ExecutionState[];
113
136
  agent?: string;
114
137
  threadId?: string;
138
+ /** Only runs on these threads. Omitted or empty means every thread. */
139
+ threadIds?: string[];
115
140
  since?: Date;
116
141
  until?: Date;
142
+ /** Only runs that have ended and whose settle has not run (§5.6): what the
143
+ * late-settle sweep looks for. */
144
+ unsettled?: boolean;
145
+ /** Only runs at this depth: 0 is a dispatched run. Omitted is every depth. */
146
+ depth?: number;
147
+ /** Pages through a listing: only runs that sort after this one, newest
148
+ * first by start time and then by id. Pass the last run of the previous
149
+ * page. */
150
+ before?: RunCursor;
117
151
  /** Newest first. Implementations cap this — core passes a bounded value. */
118
152
  limit?: number;
119
153
  }
154
+ /** Amounts to add to a run's counters (see `runs.increment`). */
155
+ export interface RunDeltas {
156
+ steps: number;
157
+ inputTokens: number;
158
+ cachedInputTokens: number;
159
+ outputTokens: number;
160
+ totalTokens: number;
161
+ }
162
+ /** What `runs.totals` counts over a set of runs. Tokens are summed from the
163
+ * run records: tokens only, no money. */
164
+ export interface RunTotals {
165
+ runs: number;
166
+ byState: Partial<Record<ExecutionState, number>>;
167
+ byStopReason: Record<string, number>;
168
+ steps: number;
169
+ inputTokens: number;
170
+ cachedInputTokens: number;
171
+ outputTokens: number;
172
+ totalTokens: number;
173
+ }
174
+ /** A place in a run listing (see `RunFilter.before`). */
175
+ export interface RunCursor {
176
+ startedAt: Date;
177
+ id: string;
178
+ }
120
179
  //# sourceMappingURL=admin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/ports/admin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/ports/admin.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,22 @@ export interface Kv {
12
12
  }): Promise<boolean>;
13
13
  del(key: string): Promise<void>;
14
14
  incr(key: string): Promise<number>;
15
+ /** `incr` that stamps a NEW counter (or one that had expired) with an
16
+ * expiry, so a counter nobody clears still ages out. A live counter keeps
17
+ * the expiry it already has. Atomic, like `incr`. */
18
+ incrWithExpiry(key: string, exSeconds: number): Promise<number>;
19
+ /** Compare-and-set: writes `value` only while the key still holds
20
+ * `expected` and has not expired, and returns whether it did. The renewal
21
+ * half of the run lock (§3.4): a worker that lost its lock to another can
22
+ * never extend the other's. Must be ONE atomic step (a Lua script on
23
+ * Redis), never a get followed by a set. */
24
+ setIfValue(key: string, expected: string, value: string, opts?: {
25
+ exSeconds?: number;
26
+ }): Promise<boolean>;
27
+ /** Compare-and-delete: removes the key only while it holds `expected`, and
28
+ * returns whether it did. The release half of the run lock: a worker never
29
+ * frees a lock another worker took after its own lapsed. Atomic, like
30
+ * `setIfValue`. */
31
+ delIfValue(key: string, expected: string): Promise<boolean>;
15
32
  }
16
33
  //# sourceMappingURL=kv.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kv.d.ts","sourceRoot":"","sources":["../../src/ports/kv.ts"],"names":[],"mappings":"AAAA;;+BAE+B;AAC/B,MAAM,WAAW,EAAE;IACjB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC;;2DAEuD;IACvD,GAAG,CACD,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GACvD,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpC"}
1
+ {"version":3,"file":"kv.d.ts","sourceRoot":"","sources":["../../src/ports/kv.ts"],"names":[],"mappings":"AAAA;;+BAE+B;AAC/B,MAAM,WAAW,EAAE;IACjB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC;;2DAEuD;IACvD,GAAG,CACD,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GACvD,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC;;0DAEsD;IACtD,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE;;;;iDAI6C;IAC7C,UAAU,CACR,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5B,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB;;;wBAGoB;IACpB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7D"}