agentenkit 0.3.0 → 0.4.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 (216) hide show
  1. package/README.md +34 -14
  2. package/dist/adapters/inline.d.ts +19 -5
  3. package/dist/adapters/inline.d.ts.map +1 -1
  4. package/dist/adapters/inline.js +87 -14
  5. package/dist/adapters/inline.js.map +1 -1
  6. package/dist/adapters/memory.d.ts +65 -3
  7. package/dist/adapters/memory.d.ts.map +1 -1
  8. package/dist/adapters/memory.js +267 -3
  9. package/dist/adapters/memory.js.map +1 -1
  10. package/dist/adapters/prisma.d.ts +125 -18
  11. package/dist/adapters/prisma.d.ts.map +1 -1
  12. package/dist/adapters/prisma.js +308 -67
  13. package/dist/adapters/prisma.js.map +1 -1
  14. package/dist/adapters/qstash.d.ts +15 -2
  15. package/dist/adapters/qstash.d.ts.map +1 -1
  16. package/dist/adapters/qstash.js +31 -14
  17. package/dist/adapters/qstash.js.map +1 -1
  18. package/dist/adapters/redis.d.ts +40 -4
  19. package/dist/adapters/redis.d.ts.map +1 -1
  20. package/dist/adapters/redis.js +265 -20
  21. package/dist/adapters/redis.js.map +1 -1
  22. package/dist/adapters/sqlite.d.ts +52 -2
  23. package/dist/adapters/sqlite.d.ts.map +1 -1
  24. package/dist/adapters/sqlite.js +342 -35
  25. package/dist/adapters/sqlite.js.map +1 -1
  26. package/dist/adapters/stream-scripts.d.ts +49 -0
  27. package/dist/adapters/stream-scripts.d.ts.map +1 -0
  28. package/dist/adapters/stream-scripts.js +150 -0
  29. package/dist/adapters/stream-scripts.js.map +1 -0
  30. package/dist/adapters/upstash.d.ts +20 -0
  31. package/dist/adapters/upstash.d.ts.map +1 -1
  32. package/dist/adapters/upstash.js +29 -0
  33. package/dist/adapters/upstash.js.map +1 -1
  34. package/dist/admin/memory.d.ts +11 -1
  35. package/dist/admin/memory.d.ts.map +1 -1
  36. package/dist/admin/memory.js +83 -14
  37. package/dist/admin/memory.js.map +1 -1
  38. package/dist/admin/migrations/postgres/0002-run-settled-at.d.ts +5 -0
  39. package/dist/admin/migrations/postgres/0002-run-settled-at.d.ts.map +1 -0
  40. package/dist/admin/migrations/postgres/0002-run-settled-at.js +11 -0
  41. package/dist/admin/migrations/postgres/0002-run-settled-at.js.map +1 -0
  42. package/dist/admin/migrations/postgres/0003-run-enqueued-at.d.ts +5 -0
  43. package/dist/admin/migrations/postgres/0003-run-enqueued-at.d.ts.map +1 -0
  44. package/dist/admin/migrations/postgres/0003-run-enqueued-at.js +15 -0
  45. package/dist/admin/migrations/postgres/0003-run-enqueued-at.js.map +1 -0
  46. package/dist/admin/migrations/postgres/0004-run-settle-claim.d.ts +5 -0
  47. package/dist/admin/migrations/postgres/0004-run-settle-claim.d.ts.map +1 -0
  48. package/dist/admin/migrations/postgres/0004-run-settle-claim.js +15 -0
  49. package/dist/admin/migrations/postgres/0004-run-settle-claim.js.map +1 -0
  50. package/dist/admin/migrations/postgres/0005-bigint-counters.d.ts +5 -0
  51. package/dist/admin/migrations/postgres/0005-bigint-counters.d.ts.map +1 -0
  52. package/dist/admin/migrations/postgres/0005-bigint-counters.js +12 -0
  53. package/dist/admin/migrations/postgres/0005-bigint-counters.js.map +1 -0
  54. package/dist/admin/migrations/postgres/index.d.ts.map +1 -1
  55. package/dist/admin/migrations/postgres/index.js +16 -1
  56. package/dist/admin/migrations/postgres/index.js.map +1 -1
  57. package/dist/admin/migrations/runner.d.ts +21 -1
  58. package/dist/admin/migrations/runner.d.ts.map +1 -1
  59. package/dist/admin/migrations/runner.js +41 -4
  60. package/dist/admin/migrations/runner.js.map +1 -1
  61. package/dist/admin/migrations/sqlite/0002-run-settled-at.d.ts +5 -0
  62. package/dist/admin/migrations/sqlite/0002-run-settled-at.d.ts.map +1 -0
  63. package/dist/admin/migrations/sqlite/0002-run-settled-at.js +11 -0
  64. package/dist/admin/migrations/sqlite/0002-run-settled-at.js.map +1 -0
  65. package/dist/admin/migrations/sqlite/0003-run-enqueued-at.d.ts +5 -0
  66. package/dist/admin/migrations/sqlite/0003-run-enqueued-at.d.ts.map +1 -0
  67. package/dist/admin/migrations/sqlite/0003-run-enqueued-at.js +15 -0
  68. package/dist/admin/migrations/sqlite/0003-run-enqueued-at.js.map +1 -0
  69. package/dist/admin/migrations/sqlite/0004-run-settle-claim.d.ts +5 -0
  70. package/dist/admin/migrations/sqlite/0004-run-settle-claim.d.ts.map +1 -0
  71. package/dist/admin/migrations/sqlite/0004-run-settle-claim.js +15 -0
  72. package/dist/admin/migrations/sqlite/0004-run-settle-claim.js.map +1 -0
  73. package/dist/admin/migrations/sqlite/index.d.ts +2 -2
  74. package/dist/admin/migrations/sqlite/index.d.ts.map +1 -1
  75. package/dist/admin/migrations/sqlite/index.js +17 -3
  76. package/dist/admin/migrations/sqlite/index.js.map +1 -1
  77. package/dist/admin/postgres.d.ts +14 -4
  78. package/dist/admin/postgres.d.ts.map +1 -1
  79. package/dist/admin/postgres.js +131 -36
  80. package/dist/admin/postgres.js.map +1 -1
  81. package/dist/admin/shared.d.ts +19 -0
  82. package/dist/admin/shared.d.ts.map +1 -0
  83. package/dist/admin/shared.js +28 -0
  84. package/dist/admin/shared.js.map +1 -0
  85. package/dist/admin/sqlite.d.ts +9 -1
  86. package/dist/admin/sqlite.d.ts.map +1 -1
  87. package/dist/admin/sqlite.js +112 -29
  88. package/dist/admin/sqlite.js.map +1 -1
  89. package/dist/core/admin.d.ts +28 -6
  90. package/dist/core/admin.d.ts.map +1 -1
  91. package/dist/core/admin.js +92 -23
  92. package/dist/core/admin.js.map +1 -1
  93. package/dist/core/agent.d.ts +7 -4
  94. package/dist/core/agent.d.ts.map +1 -1
  95. package/dist/core/agent.js +15 -11
  96. package/dist/core/agent.js.map +1 -1
  97. package/dist/core/agui.d.ts +17 -0
  98. package/dist/core/agui.d.ts.map +1 -0
  99. package/dist/core/agui.js +69 -0
  100. package/dist/core/agui.js.map +1 -0
  101. package/dist/core/context.d.ts +13 -1
  102. package/dist/core/context.d.ts.map +1 -1
  103. package/dist/core/context.js +70 -19
  104. package/dist/core/context.js.map +1 -1
  105. package/dist/core/deleteThread.d.ts.map +1 -1
  106. package/dist/core/deleteThread.js +33 -4
  107. package/dist/core/deleteThread.js.map +1 -1
  108. package/dist/core/engine.d.ts +41 -11
  109. package/dist/core/engine.d.ts.map +1 -1
  110. package/dist/core/engine.js +855 -352
  111. package/dist/core/engine.js.map +1 -1
  112. package/dist/core/follow.d.ts +63 -1
  113. package/dist/core/follow.d.ts.map +1 -1
  114. package/dist/core/follow.js +293 -16
  115. package/dist/core/follow.js.map +1 -1
  116. package/dist/core/hitl.d.ts +43 -0
  117. package/dist/core/hitl.d.ts.map +1 -1
  118. package/dist/core/hitl.js +163 -35
  119. package/dist/core/hitl.js.map +1 -1
  120. package/dist/core/keys.d.ts +22 -4
  121. package/dist/core/keys.d.ts.map +1 -1
  122. package/dist/core/keys.js +23 -5
  123. package/dist/core/keys.js.map +1 -1
  124. package/dist/core/lease.d.ts +46 -0
  125. package/dist/core/lease.d.ts.map +1 -0
  126. package/dist/core/lease.js +142 -0
  127. package/dist/core/lease.js.map +1 -0
  128. package/dist/core/loop.d.ts +27 -7
  129. package/dist/core/loop.d.ts.map +1 -1
  130. package/dist/core/loop.js +140 -55
  131. package/dist/core/loop.js.map +1 -1
  132. package/dist/core/messages.d.ts +21 -2
  133. package/dist/core/messages.d.ts.map +1 -1
  134. package/dist/core/messages.js +61 -2
  135. package/dist/core/messages.js.map +1 -1
  136. package/dist/core/prune.d.ts +24 -0
  137. package/dist/core/prune.d.ts.map +1 -0
  138. package/dist/core/prune.js +43 -0
  139. package/dist/core/prune.js.map +1 -0
  140. package/dist/core/publish.d.ts +38 -10
  141. package/dist/core/publish.d.ts.map +1 -1
  142. package/dist/core/publish.js +126 -12
  143. package/dist/core/publish.js.map +1 -1
  144. package/dist/core/reclaim.d.ts +8 -1
  145. package/dist/core/reclaim.d.ts.map +1 -1
  146. package/dist/core/reclaim.js +149 -18
  147. package/dist/core/reclaim.js.map +1 -1
  148. package/dist/core/run.d.ts +7 -3
  149. package/dist/core/run.d.ts.map +1 -1
  150. package/dist/core/run.js +95 -35
  151. package/dist/core/run.js.map +1 -1
  152. package/dist/core/segment.d.ts +62 -0
  153. package/dist/core/segment.d.ts.map +1 -0
  154. package/dist/core/segment.js +318 -0
  155. package/dist/core/segment.js.map +1 -0
  156. package/dist/core/settle.d.ts +57 -0
  157. package/dist/core/settle.d.ts.map +1 -0
  158. package/dist/core/settle.js +181 -0
  159. package/dist/core/settle.js.map +1 -0
  160. package/dist/core/snapshot.d.ts +36 -0
  161. package/dist/core/snapshot.d.ts.map +1 -0
  162. package/dist/core/snapshot.js +87 -0
  163. package/dist/core/snapshot.js.map +1 -0
  164. package/dist/core/stop.d.ts +16 -1
  165. package/dist/core/stop.d.ts.map +1 -1
  166. package/dist/core/stop.js +69 -15
  167. package/dist/core/stop.js.map +1 -1
  168. package/dist/core/stream-events.d.ts +184 -0
  169. package/dist/core/stream-events.d.ts.map +1 -0
  170. package/dist/core/stream-events.js +26 -0
  171. package/dist/core/stream-events.js.map +1 -0
  172. package/dist/core/stream.d.ts +29 -0
  173. package/dist/core/stream.d.ts.map +1 -1
  174. package/dist/core/stream.js +79 -0
  175. package/dist/core/stream.js.map +1 -1
  176. package/dist/core/subagent.d.ts +36 -5
  177. package/dist/core/subagent.d.ts.map +1 -1
  178. package/dist/core/subagent.js +117 -22
  179. package/dist/core/subagent.js.map +1 -1
  180. package/dist/core/types.d.ts +195 -12
  181. package/dist/core/types.d.ts.map +1 -1
  182. package/dist/core/types.js +26 -1
  183. package/dist/core/types.js.map +1 -1
  184. package/dist/core/usage.d.ts +53 -5
  185. package/dist/core/usage.d.ts.map +1 -1
  186. package/dist/core/usage.js +170 -47
  187. package/dist/core/usage.js.map +1 -1
  188. package/dist/index.d.ts +16 -11
  189. package/dist/index.d.ts.map +1 -1
  190. package/dist/index.js +12 -7
  191. package/dist/index.js.map +1 -1
  192. package/dist/ports/admin.d.ts +59 -0
  193. package/dist/ports/admin.d.ts.map +1 -1
  194. package/dist/ports/kv.d.ts +17 -0
  195. package/dist/ports/kv.d.ts.map +1 -1
  196. package/dist/ports/queue.d.ts +87 -7
  197. package/dist/ports/queue.d.ts.map +1 -1
  198. package/dist/ports/queue.js +36 -1
  199. package/dist/ports/queue.js.map +1 -1
  200. package/dist/ports/runtime.d.ts +171 -20
  201. package/dist/ports/runtime.d.ts.map +1 -1
  202. package/dist/ports/storage.d.ts +26 -5
  203. package/dist/ports/storage.d.ts.map +1 -1
  204. package/dist/ports/streams.d.ts +60 -0
  205. package/dist/ports/streams.d.ts.map +1 -0
  206. package/dist/ports/streams.js +20 -0
  207. package/dist/ports/streams.js.map +1 -0
  208. package/dist/pricing.d.ts +5 -0
  209. package/dist/pricing.d.ts.map +1 -1
  210. package/dist/pricing.js +35 -10
  211. package/dist/pricing.js.map +1 -1
  212. package/dist/runtime.d.ts +6 -0
  213. package/dist/runtime.d.ts.map +1 -1
  214. package/dist/runtime.js +144 -46
  215. package/dist/runtime.js.map +1 -1
  216. package/package.json +1 -1
@@ -1,10 +1,25 @@
1
1
  import { sumUsage } from '../core/usage.js';
2
+ import { DuplicateJobError, QueueFullError } from '../ports/queue.js';
3
+ import { StreamClosedError, StreamGoneError } from '../ports/streams.js';
4
+ import { isStreamEnd } from '../core/stream-events.js';
2
5
  const id = () => Math.random().toString(36).slice(2, 12);
3
6
  /** In-memory Kv — tests and local prototyping. Expiry is enforced lazily on
4
7
  * read; incr is synchronous internally, so concurrent callers can never
5
8
  * collide on the same counter (§3.4). */
6
9
  export class MemoryKv {
7
10
  m = new Map();
11
+ lastSweep = Date.now();
12
+ /** Expired keys nobody reads again are dropped as writes come in, at most
13
+ * once a minute: no timer to leak, and the map does not grow for ever. */
14
+ sweep() {
15
+ const now = Date.now();
16
+ if (now - this.lastSweep < 60_000)
17
+ return;
18
+ this.lastSweep = now;
19
+ for (const [k, e] of this.m)
20
+ if (e.expiresAt && e.expiresAt < now)
21
+ this.m.delete(k);
22
+ }
8
23
  async get(key) {
9
24
  const e = this.m.get(key);
10
25
  if (!e)
@@ -16,6 +31,7 @@ export class MemoryKv {
16
31
  return e.value;
17
32
  }
18
33
  async set(key, value, opts) {
34
+ this.sweep();
19
35
  if (opts?.onlyIfNotExists) {
20
36
  const existing = this.m.get(key);
21
37
  if (existing && !(existing.expiresAt && existing.expiresAt < Date.now()))
@@ -28,7 +44,35 @@ export class MemoryKv {
28
44
  return true;
29
45
  }
30
46
  async del(key) { this.m.delete(key); }
47
+ async setIfValue(key, expected, value, opts) {
48
+ // No awaits between the read and the write — atomic within the event loop
49
+ if ((await this.get(key)) !== expected)
50
+ return false;
51
+ this.m.set(key, {
52
+ value,
53
+ expiresAt: opts?.exSeconds ? Date.now() + opts.exSeconds * 1000 : undefined,
54
+ });
55
+ return true;
56
+ }
57
+ async delIfValue(key, expected) {
58
+ if ((await this.get(key)) !== expected)
59
+ return false;
60
+ this.m.delete(key);
61
+ return true;
62
+ }
63
+ async incrWithExpiry(key, exSeconds) {
64
+ // No awaits between read and write — atomic within the event loop
65
+ const live = await this.get(key);
66
+ const n = Number(live ?? 0) + 1;
67
+ const e = this.m.get(key);
68
+ this.m.set(key, {
69
+ value: String(n),
70
+ expiresAt: live === null ? (exSeconds > 0 ? Date.now() + exSeconds * 1000 : undefined) : e?.expiresAt,
71
+ });
72
+ return n;
73
+ }
31
74
  async incr(key) {
75
+ this.sweep();
32
76
  // No awaits between read and write — atomic within the event loop
33
77
  const e = this.m.get(key);
34
78
  const n = Number(e?.value ?? 0) + 1;
@@ -36,12 +80,19 @@ export class MemoryKv {
36
80
  return n;
37
81
  }
38
82
  }
83
+ /** How many of the latest published events a MemoryBus keeps in `published`:
84
+ * enough for any test, bounded for a dev server that runs for days. */
85
+ export const PUBLISHED_KEPT = 10_000;
39
86
  /** Synchronous in-memory bus. Publishes are delivered to subscribers in order. */
40
87
  export class MemoryBus {
41
88
  subs = new Map();
89
+ /** The latest PUBLISHED_KEPT events published, in order. */
42
90
  published = [];
43
91
  async publish(threadId, event) {
44
92
  this.published.push(event);
93
+ if (this.published.length > PUBLISHED_KEPT) {
94
+ this.published.splice(0, this.published.length - PUBLISHED_KEPT);
95
+ }
45
96
  for (const h of this.subs.get(threadId) ?? [])
46
97
  h(event);
47
98
  }
@@ -52,7 +103,12 @@ export class MemoryBus {
52
103
  this.subs.set(threadId, set);
53
104
  }
54
105
  set.add(handler);
55
- return () => { set.delete(handler); };
106
+ return () => {
107
+ set.delete(handler);
108
+ // A thread nobody watches holds nothing.
109
+ if (set.size === 0 && this.subs.get(threadId) === set)
110
+ this.subs.delete(threadId);
111
+ };
56
112
  }
57
113
  /** Live subscriptions on a thread — lets a test prove a stream cleaned up
58
114
  * after itself rather than leaking one per reconnect. */
@@ -66,10 +122,60 @@ export class MemoryQueue {
66
122
  items = [];
67
123
  /** Delivery delay requested per enqueue, index-aligned with `items`. */
68
124
  delays = [];
125
+ /** Each job's key and priority, kept on the job itself so a test that
126
+ * shifts `items` by hand leaves nothing out of step. */
127
+ meta = new WeakMap();
128
+ /** Refuses a fresh dispatch past this many waiting jobs; 0 is unbounded. */
129
+ maxDepth = 0;
69
130
  async enqueue(job, opts) {
70
- this.items.push(job);
131
+ if (opts?.key && this.items.some((j) => this.meta.get(j)?.key === opts.key)) {
132
+ throw new DuplicateJobError(opts.key);
133
+ }
134
+ // The cap counts everything ready to run, but refuses only new work: a
135
+ // retry, a resume or an expiry belongs to a run already under way.
136
+ if (this.maxDepth > 0 && !job.kind) {
137
+ const ready = this.items.filter((j) => !this.meta.get(j)?.delaySeconds).length;
138
+ if (ready >= this.maxDepth)
139
+ throw new QueueFullError();
140
+ }
141
+ const item = { ...job };
142
+ this.meta.set(item, { key: opts?.key, priority: opts?.priority ?? 0, delaySeconds: opts?.delaySeconds });
143
+ this.items.push(item);
71
144
  this.delays.push(opts?.delaySeconds);
72
145
  }
146
+ /** The key a queued job was enqueued under. */
147
+ keyOf(job) {
148
+ return this.meta.get(job)?.key;
149
+ }
150
+ /** The priority a queued job was enqueued with. */
151
+ priorityOf(job) {
152
+ return this.meta.get(job)?.priority ?? 0;
153
+ }
154
+ async cancel(key) {
155
+ for (let i = this.items.length - 1; i >= 0; i--) {
156
+ if (key && this.meta.get(this.items[i])?.key === key) {
157
+ this.items.splice(i, 1);
158
+ this.delays.splice(i, 1);
159
+ }
160
+ }
161
+ }
162
+ async find(runId) {
163
+ const i = this.items.findIndex((j) => runId && j.runId === runId);
164
+ if (i === -1)
165
+ return null;
166
+ const job = this.items[i];
167
+ return {
168
+ id: String(i), runId, threadId: job.threadId, kind: job.kind, attempts: 0,
169
+ runAt: new Date(Date.now() + (this.meta.get(job)?.delaySeconds ?? 0) * 1000), position: i,
170
+ };
171
+ }
172
+ async stats() {
173
+ const delayed = this.items.filter((j) => (this.meta.get(j)?.delaySeconds ?? 0) > 0).length;
174
+ return {
175
+ ready: this.items.length - delayed, delayed, inFlight: 0, dead: 0,
176
+ oldestReadyMs: 0, paused: false, claimErrors: 0,
177
+ };
178
+ }
73
179
  async drain(handler) {
74
180
  let n = 0;
75
181
  while (this.items.length) {
@@ -109,6 +215,7 @@ export class MemoryStorage {
109
215
  if (!this.threads.store.has(t))
110
216
  throw new Error(`Unknown thread ${t}`);
111
217
  this.threads.store.delete(t);
218
+ this.threads.runs.delete(t);
112
219
  this.messages.store.delete(t);
113
220
  this.events.store.delete(t);
114
221
  this.usage.recorded = this.usage.recorded.filter((u) => u.threadId !== t);
@@ -121,6 +228,22 @@ export class MemoryStorage {
121
228
  thread.updatedAt = new Date();
122
229
  return true;
123
230
  },
231
+ /** Each thread's current run (ThreadTransition). */
232
+ runs: new Map(),
233
+ async transition(t, tr) {
234
+ // No awaits between the read and the write — atomic within the event loop
235
+ const thread = this.store.get(t);
236
+ if (!thread || !tr.from.includes(thread.state))
237
+ return false;
238
+ const current = this.runs.get(t);
239
+ if (tr.runId && current && current !== tr.runId)
240
+ return false;
241
+ thread.state = tr.to;
242
+ thread.updatedAt = new Date();
243
+ if (tr.newRunId)
244
+ this.runs.set(t, tr.newRunId);
245
+ return true;
246
+ },
124
247
  };
125
248
  messages = {
126
249
  store: new Map(),
@@ -159,7 +282,22 @@ export class MemoryStorage {
159
282
  list = [];
160
283
  this.store.set(t, list);
161
284
  }
162
- list.push(e);
285
+ // The thread's next seq, minted here: one higher than any it holds.
286
+ const seq = list.reduce((top, x) => Math.max(top, x.seq), 0) + 1;
287
+ const event = {
288
+ threadId: t, seq, type: e.type, payload: e.payload, createdAt: e.createdAt ?? new Date(),
289
+ ...(e.runId ? { runId: e.runId } : {}),
290
+ };
291
+ list.push(event);
292
+ return event;
293
+ },
294
+ async list(t, f = {}) {
295
+ const rows = (this.store.get(t) ?? [])
296
+ .filter((e) => (!f.types || f.types.includes(e.type))
297
+ && (f.runId === undefined || e.runId === f.runId)
298
+ && (f.after === undefined || e.seq > f.after))
299
+ .sort((a, b) => a.seq - b.seq);
300
+ return f.limit ? rows.slice(0, f.limit) : rows;
163
301
  },
164
302
  async listSince(t, sinceSeq) {
165
303
  return (this.store.get(t) ?? []).filter((e) => e.seq > sinceSeq)
@@ -176,6 +314,21 @@ export class MemoryStorage {
176
314
  return (this.store.get(t) ?? []).filter((e) => e.type === type)
177
315
  .sort((a, b) => a.seq - b.seq);
178
316
  },
317
+ async prune(types, opts) {
318
+ const counts = {};
319
+ let left = opts.dryRun ? Infinity : opts.limit;
320
+ for (const [t, list] of this.store) {
321
+ const kept = list.filter((e) => {
322
+ if (left <= 0 || !types.includes(e.type))
323
+ return true;
324
+ counts[e.type] = (counts[e.type] ?? 0) + 1;
325
+ left--;
326
+ return !!opts.dryRun;
327
+ });
328
+ this.store.set(t, kept);
329
+ }
330
+ return counts;
331
+ },
179
332
  };
180
333
  usage = {
181
334
  recorded: [],
@@ -185,4 +338,115 @@ export class MemoryStorage {
185
338
  },
186
339
  };
187
340
  }
341
+ /** In-memory RunStreams — tests and local prototyping. The offset is the
342
+ * item's 1-based position. Expiry is checked on every call, and an open
343
+ * drops every expired stream, so a dev server that runs for days holds only
344
+ * live and recent streams. */
345
+ export class MemoryRunStreams {
346
+ streams = new Map();
347
+ live(streamId) {
348
+ const s = this.streams.get(streamId);
349
+ if (!s)
350
+ return null;
351
+ if (Date.now() >= s.expiresAt) {
352
+ this.drop(streamId, s);
353
+ return null;
354
+ }
355
+ return s;
356
+ }
357
+ drop(streamId, s) {
358
+ this.streams.delete(streamId);
359
+ // A reader waiting on it wakes, finds it gone and ends.
360
+ for (const wake of s.waiters)
361
+ wake();
362
+ }
363
+ sweep() {
364
+ const now = Date.now();
365
+ for (const [streamId, s] of this.streams)
366
+ if (now >= s.expiresAt)
367
+ this.drop(streamId, s);
368
+ }
369
+ async open(streamId, meta, ttlMs) {
370
+ this.sweep();
371
+ if (this.streams.has(streamId))
372
+ return;
373
+ this.streams.set(streamId, {
374
+ meta: { ...meta }, items: [], end: null, expiresAt: Date.now() + ttlMs, waiters: new Set(),
375
+ });
376
+ }
377
+ async append(streamId, events) {
378
+ const s = this.live(streamId);
379
+ if (!s)
380
+ throw new StreamGoneError(streamId);
381
+ if (s.end)
382
+ throw new StreamClosedError(streamId);
383
+ const offsets = [];
384
+ for (const e of events) {
385
+ const offset = String(s.items.length + 1);
386
+ s.items.push({ ...e, offset });
387
+ offsets.push(offset);
388
+ }
389
+ this.wake(s);
390
+ return offsets;
391
+ }
392
+ async *read(streamId, after, signal) {
393
+ let next = after ? Number(after) : 0;
394
+ for (;;) {
395
+ if (signal?.aborted)
396
+ return;
397
+ const s = this.live(streamId);
398
+ if (!s)
399
+ throw new StreamGoneError(streamId);
400
+ while (next < s.items.length) {
401
+ const item = s.items[next++];
402
+ yield item;
403
+ if (isStreamEnd(item))
404
+ return;
405
+ }
406
+ // Read from past the end item: nothing more will ever come.
407
+ if (s.end)
408
+ return;
409
+ await new Promise((resolve) => {
410
+ const done = () => {
411
+ s.waiters.delete(done);
412
+ signal?.removeEventListener('abort', done);
413
+ resolve();
414
+ };
415
+ s.waiters.add(done);
416
+ signal?.addEventListener('abort', done, { once: true });
417
+ });
418
+ }
419
+ }
420
+ async snapshot(streamId, after) {
421
+ const s = this.live(streamId);
422
+ if (!s)
423
+ return null;
424
+ return { meta: { ...s.meta }, items: s.items.slice(after ? Number(after) : 0), end: s.end };
425
+ }
426
+ async close(streamId, end, graceMs) {
427
+ const s = this.live(streamId);
428
+ if (!s)
429
+ throw new StreamGoneError(streamId);
430
+ if (s.end)
431
+ return;
432
+ s.end = { ...end };
433
+ s.items.push({ ...end, offset: String(s.items.length + 1) });
434
+ s.expiresAt = Date.now() + graceMs;
435
+ this.wake(s);
436
+ }
437
+ async delete(streamId) {
438
+ const s = this.streams.get(streamId);
439
+ if (s)
440
+ this.drop(streamId, s);
441
+ }
442
+ wake(s) {
443
+ for (const wake of [...s.waiters])
444
+ wake();
445
+ }
446
+ /** Streams held now, expired ones included until the next sweep — lets a
447
+ * test prove a stream was deleted. */
448
+ get size() {
449
+ return this.streams.size;
450
+ }
451
+ }
188
452
  //# sourceMappingURL=memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/adapters/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/adapters/memory.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
- import type { AgentEvent, ExecutionState, NewMessage, NewUsage, ThreadDTO, UsageFilter, UsageTotals } from '../core/types.js';
1
+ import type { AgentEvent, ExecutionState, MessageDTO, NewMessage, NewThreadEvent, NewUsage, ThreadDTO, ThreadEventFilter, ThreadTransition, UsageFilter, UsageTotals } from '../core/types.js';
2
2
  import type { Storage } from '../ports/storage.js';
3
+ import { type RunStreams, type StreamMeta, type StreamSnapshot } from '../ports/streams.js';
4
+ import { type StreamEnd, type StreamEvent, type StreamItem } from '../core/stream-events.js';
3
5
  /** Minimal structural type of the Prisma client surface we use. The real
4
6
  * `PrismaClient` satisfies it — no SDK import needed in the package. */
5
7
  export interface PrismaLike {
@@ -33,10 +35,16 @@ export interface PrismaLike {
33
35
  updateMany(a: {
34
36
  where: {
35
37
  id: string;
36
- state: ExecutionState;
38
+ state: ExecutionState | {
39
+ in: ExecutionState[];
40
+ };
41
+ OR?: Array<{
42
+ runId: string | null;
43
+ }>;
37
44
  };
38
45
  data: {
39
46
  state: ExecutionState;
47
+ runId?: string;
40
48
  };
41
49
  }): Promise<{
42
50
  count: number;
@@ -73,13 +81,25 @@ export interface PrismaLike {
73
81
  agentId?: string | null;
74
82
  };
75
83
  orderBy: {
76
- createdAt: 'asc';
84
+ seq: 'asc';
77
85
  };
78
86
  }): Promise<any[]>;
87
+ findFirst(a: {
88
+ where: {
89
+ id: string;
90
+ threadId: string;
91
+ };
92
+ select: {
93
+ seq: true;
94
+ };
95
+ }): Promise<{
96
+ seq: bigint | number;
97
+ } | null>;
79
98
  deleteMany(a: {
80
99
  where: {
81
- id: {
82
- in: string[];
100
+ threadId: string;
101
+ seq: {
102
+ gte: bigint | number;
83
103
  };
84
104
  };
85
105
  }): Promise<{
@@ -93,24 +113,30 @@ export interface PrismaLike {
93
113
  seq: number;
94
114
  type: string;
95
115
  payload: any;
116
+ runId?: string | null;
117
+ createdAt?: Date;
96
118
  };
97
- }): Promise<unknown>;
119
+ }): Promise<AgentEvent>;
98
120
  findMany(a: {
99
121
  where: {
100
122
  threadId: string;
101
123
  seq?: {
102
124
  gt: number;
103
125
  };
104
- type?: string;
126
+ type?: string | {
127
+ in: string[];
128
+ };
129
+ runId?: string;
105
130
  };
106
131
  orderBy: {
107
132
  seq: 'asc';
108
133
  };
134
+ take?: number;
109
135
  }): Promise<AgentEvent[]>;
110
136
  findFirst(a: {
111
137
  where: {
112
138
  threadId: string;
113
- type: string;
139
+ type?: string;
114
140
  };
115
141
  orderBy: {
116
142
  seq: 'desc';
@@ -130,13 +156,6 @@ export interface PrismaLike {
130
156
  * precise one here would make the real PrismaClient fail to satisfy this
131
157
  * interface. The RESULT is typed, which is the half the adapter reads. */
132
158
  groupBy(a: any): Promise<UsageGroupRow[]>;
133
- /** The two figures a groupBy cannot give: how many calls were estimated
134
- * or unpriced (a conditional count), and which currency the priced
135
- * rows are in. Loosely typed for the same reason as groupBy. */
136
- count(a: any): Promise<number>;
137
- findFirst(a: any): Promise<{
138
- costCurrency: string | null;
139
- } | null>;
140
159
  };
141
160
  }
142
161
  /** The row this adapter writes. `cachedInputTokens` holds cache READS, keeping
@@ -176,6 +195,9 @@ export interface UsageGroupRow {
176
195
  agentName: string | null;
177
196
  model: string | null;
178
197
  modelId: string | null;
198
+ /** Grouped on too, so a group never sums two units. Null for the unpriced
199
+ * calls. */
200
+ costCurrency: string | null;
179
201
  _count: number;
180
202
  /** BigInt columns come back as `bigint`, so every figure is coerced before
181
203
  * it is summed — mixing `bigint` and `number` arithmetic throws. */
@@ -196,24 +218,109 @@ export declare class PrismaStorage implements Storage {
196
218
  list: () => Promise<ThreadDTO[]>;
197
219
  setState: (threadId: string, state: ExecutionState) => Promise<void>;
198
220
  claimState: (threadId: string, from: ExecutionState, to: ExecutionState) => Promise<boolean>;
221
+ transition: (threadId: string, tr: ThreadTransition) => Promise<boolean>;
199
222
  delete: (threadId: string) => Promise<undefined>;
200
223
  };
201
224
  messages: {
202
- append: (threadId: string, m: NewMessage) => Promise<any>;
225
+ append: (threadId: string, m: NewMessage) => Promise<MessageDTO>;
203
226
  list: (threadId: string, opts?: {
204
227
  agentId?: string | null;
205
- }) => Promise<any[]>;
228
+ }) => Promise<MessageDTO[]>;
206
229
  deleteFrom: (threadId: string, messageId: string) => Promise<number>;
207
230
  };
208
231
  events: {
209
- append: (threadId: string, event: AgentEvent) => Promise<void>;
232
+ append: (threadId: string, event: NewThreadEvent) => Promise<AgentEvent>;
233
+ list: (threadId: string, f?: ThreadEventFilter) => Promise<AgentEvent[]>;
210
234
  listSince: (threadId: string, sinceSeq: number) => Promise<AgentEvent[]>;
211
235
  latest: (threadId: string, type: string) => Promise<AgentEvent | null>;
212
236
  listByType: (threadId: string, type: string) => Promise<AgentEvent[]>;
237
+ prune: (types: string[], opts: {
238
+ limit: number;
239
+ dryRun?: boolean;
240
+ }) => Promise<Record<string, number>>;
213
241
  };
214
242
  usage: {
215
243
  total: (threadId: string, filter?: UsageFilter) => Promise<UsageTotals>;
216
244
  record: (threadId: string, usage: NewUsage) => Promise<void>;
217
245
  };
218
246
  }
247
+ /** The Prisma surface PrismaRunStreams uses: the RunStream and
248
+ * RunStreamEvent models (see the example schema). Loosely typed where
249
+ * Prisma's generated signatures cannot be mirrored by hand; the results
250
+ * the adapter reads are typed. */
251
+ export interface PrismaStreamsLike {
252
+ runStream: {
253
+ findUnique(a: {
254
+ where: {
255
+ id: string;
256
+ };
257
+ }): Promise<RunStreamRow | null>;
258
+ create(a: any): Promise<unknown>;
259
+ updateMany(a: any): Promise<{
260
+ count: number;
261
+ }>;
262
+ deleteMany(a: any): Promise<{
263
+ count: number;
264
+ }>;
265
+ findMany(a: any): Promise<Array<{
266
+ id: string;
267
+ }>>;
268
+ };
269
+ runStreamEvent: {
270
+ create(a: {
271
+ data: {
272
+ streamId: string;
273
+ event: string;
274
+ };
275
+ }): Promise<{
276
+ pos: bigint | number;
277
+ }>;
278
+ findMany(a: any): Promise<Array<{
279
+ pos: bigint | number;
280
+ event: string;
281
+ }>>;
282
+ deleteMany(a: any): Promise<{
283
+ count: number;
284
+ }>;
285
+ };
286
+ $transaction<T>(work: (tx: any) => Promise<T>): Promise<T>;
287
+ }
288
+ export interface RunStreamRow {
289
+ id: string;
290
+ threadId: string;
291
+ runId: string;
292
+ closed: boolean;
293
+ endEvent: string | null;
294
+ expiresAt: Date;
295
+ }
296
+ /** RunStreams over Prisma: one RunStream row per stream and one
297
+ * RunStreamEvent row per event, whose autoincrement key is the offset.
298
+ *
299
+ * An append first runs a no-op UPDATE on the stream row where it is still
300
+ * open. That takes the row's lock, so a close waits for the append to
301
+ * commit, or the append finds the stream closed: an event can never land
302
+ * after the end item. Readers in this process wake on its own appends; one
303
+ * in another process sees them on its next poll. */
304
+ export declare class PrismaRunStreams implements RunStreams {
305
+ private readonly prisma;
306
+ private readonly opts;
307
+ private readonly waiters;
308
+ private swept;
309
+ constructor(prisma: PrismaStreamsLike, opts?: {
310
+ pollMs?: number;
311
+ });
312
+ private wake;
313
+ private arm;
314
+ private sweep;
315
+ private remove;
316
+ open(streamId: string, meta: StreamMeta, ttlMs: number): Promise<void>;
317
+ /** Locks the stream row inside tx, or says why it cannot. */
318
+ private lock;
319
+ append(streamId: string, events: StreamEvent[]): Promise<string[]>;
320
+ close(streamId: string, end: StreamEnd, graceMs: number): Promise<void>;
321
+ delete(streamId: string): Promise<void>;
322
+ private page;
323
+ read(streamId: string, after: string | null, signal?: AbortSignal): AsyncIterable<StreamItem>;
324
+ snapshot(streamId: string, after?: string | null): Promise<StreamSnapshot | null>;
325
+ }
219
326
  //# sourceMappingURL=prisma.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/adapters/prisma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9H,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD;yEACyE;AACzE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE;QACN,UAAU,CAAC,CAAC,EAAE;YAAE,KAAK,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG;YAAE,SAAS,EAAE,IAAI,CAAC;YAAC,SAAS,EAAE,IAAI,CAAA;SAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9I,QAAQ,CAAC,CAAC,EAAE;YAAE,OAAO,EAAE;gBAAE,SAAS,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,CAAC,EAAE;YAAE,IAAI,EAAE;gBAAE,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,CAAC,CAAC,EAAE;YAAE,KAAK,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAA;aAAE,CAAC;YAAC,IAAI,EAAE;gBAAE,KAAK,EAAE,cAAc,CAAA;aAAE,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACxF,UAAU,CAAC,CAAC,EAAE;YAAE,KAAK,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,cAAc,CAAA;aAAE,CAAC;YAAC,IAAI,EAAE;gBAAE,KAAK,EAAE,cAAc,CAAA;aAAE,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC7H,MAAM,CAAC,CAAC,EAAE;YAAE,KAAK,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACvD,OAAO,CAAC,CAAC,EAAE;YAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;YAAC,MAAM,EAAE;gBAAE,IAAI,EAAE,IAAI,CAAA;aAAE,CAAA;SAAE,GAAG,OAAO,CAC5D,KAAK,CAAC;YAAE,KAAK,EAAE,cAAc,CAAC;YAAC,MAAM,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC,CAC3D,CAAC;KACH,CAAC;IACF,OAAO,EAAE;QACP,MAAM,CAAC,CAAC,EAAE;YAAE,IAAI,EAAE;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,GAAG,CAAA;aAAE,CAAA;SAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7G,QAAQ,CAAC,CAAC,EAAE;YACV,KAAK,EAAE;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;aAAE,CAAC;YACrD,OAAO,EAAE;gBAAE,SAAS,EAAE,KAAK,CAAA;aAAE,CAAC;SAC/B,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACnB,UAAU,CAAC,CAAC,EAAE;YAAE,KAAK,EAAE;gBAAE,EAAE,EAAE;oBAAE,EAAE,EAAE,MAAM,EAAE,CAAA;iBAAE,CAAA;aAAE,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChF,CAAC;IACF,UAAU,EAAE;QACV,MAAM,CAAC,CAAC,EAAE;YAAE,IAAI,EAAE;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,GAAG,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,GAAG,CAAA;aAAE,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACrG,QAAQ,CAAC,CAAC,EAAE;YAGV,KAAK,EAAE;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,GAAG,CAAC,EAAE;oBAAE,EAAE,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YACjE,OAAO,EAAE;gBAAE,GAAG,EAAE,KAAK,CAAA;aAAE,CAAC;SACzB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1B,SAAS,CAAC,CAAC,EAAE;YAAE,KAAK,EAAE;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC;YAAC,OAAO,EAAE;gBAAE,GAAG,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;KACnH,CAAC;IACF,UAAU,EAAE;QACV,MAAM,CAAC,CAAC,EAAE;YAAE,IAAI,EAAE,aAAa,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACrD;;;;;;;mFAO2E;QAC3E,OAAO,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1C;;yEAEiE;QACjE,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC;YAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,GAAG,IAAI,CAAC,CAAC;KACpE,CAAC;CACH;AAED;;;4DAG4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB;;8EAE0E;IAC1E,gBAAgB,EAAE,GAAG,CAAC;IACtB;2EACuE;IACvE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf;yEACqE;IACrE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;CAC9C;AAED,2FAA2F;AAC3F,qBAAa,aAAc,YAAW,OAAO;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAE/C,OAAO;wBACW,MAAM;uBAhGuF,IAAI;uBAAa,IAAI;;wBAiGlH;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE;;6BAIP,MAAM,SAAS,cAAc;+BAG3B,MAAM,QAAQ,cAAc,MAAM,cAAc;2BAQ1D,MAAM;MAIzB;IAEF,QAAQ;2BACa,MAAM,KAAK,UAAU;yBAIvB,MAAM,SAAS;YAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE;+BAU9B,MAAM,aAAa,MAAM;MAetD;IAEF,MAAM;2BACqB,MAAM,SAAS,UAAU;8BAK5B,MAAM,YAAY,MAAM;2BAK3B,MAAM,QAAQ,MAAM;+BAKhB,MAAM,QAAQ,MAAM;MAE3C;IAEF,KAAK;0BACqB,MAAM,WAAU,WAAW,KAAQ,OAAO,CAAC,WAAW,CAAC;2BAuDtD,MAAM,SAAS,QAAQ;MA0BhD;CAIH"}
1
+ {"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/adapters/prisma.ts"],"names":[],"mappings":"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"}