experimental-agent 0.0.4 → 0.0.5

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 (38) hide show
  1. package/dist/agent-workflow.d.mts +1 -1
  2. package/dist/agent-workflow.d.ts +1 -1
  3. package/dist/agent-workflow.js +739 -319
  4. package/dist/agent-workflow.mjs +1 -1
  5. package/dist/chunk-2IIWVPZB.mjs +334 -0
  6. package/dist/{chunk-TQRCSTCF.mjs → chunk-CQB6AOJ7.mjs} +2 -2
  7. package/dist/{chunk-T7PMZLOX.mjs → chunk-CRDAPJEY.mjs} +3 -3
  8. package/dist/chunk-GJETDXOU.mjs +361 -0
  9. package/dist/chunk-M2XPBOZD.mjs +1980 -0
  10. package/dist/chunk-ZWP7RQZT.mjs +1239 -0
  11. package/dist/{client-SREKHM6I.mjs → client-5C4CNU6H.mjs} +1 -1
  12. package/dist/{client-6g79J0s3.d.mts → client-9A8NO6x9.d.mts} +267 -4
  13. package/dist/{client-6g79J0s3.d.ts → client-9A8NO6x9.d.ts} +267 -4
  14. package/dist/{handler-36FM5H35.mjs → handler-SZDTM3MC.mjs} +1 -1
  15. package/dist/index.d.mts +2 -2
  16. package/dist/index.d.ts +2 -2
  17. package/dist/index.js +875 -341
  18. package/dist/index.mjs +96 -24
  19. package/dist/lifecycle-workflow.d.mts +1 -1
  20. package/dist/lifecycle-workflow.d.ts +1 -1
  21. package/dist/lifecycle-workflow.js +97 -4
  22. package/dist/lifecycle-workflow.mjs +1 -1
  23. package/dist/local-fs-handlers-BZVA3XAU.mjs +277 -0
  24. package/dist/next/loader.js +3 -3
  25. package/dist/next/loader.mjs +1 -1
  26. package/dist/next.js +6 -3
  27. package/dist/next.mjs +5 -2
  28. package/dist/{sandbox-QAPGBVYM.mjs → sandbox-M24R3JLM.mjs} +2 -2
  29. package/dist/{storage-Q376OZH3.mjs → storage-TMZQJ2OQ.mjs} +2 -2
  30. package/dist/vercel-WGN2NY3D.mjs +20 -0
  31. package/dist/{vercel-sdk-VHKEX2GQ.mjs → vercel-sdk-UKBD5JDI.mjs} +2 -2
  32. package/package.json +2 -2
  33. package/dist/chunk-GSRJYPWF.mjs +0 -284
  34. package/dist/chunk-JCPQQWIK.mjs +0 -2057
  35. package/dist/chunk-JEE2FQ4O.mjs +0 -844
  36. package/dist/chunk-VBLZWXVE.mjs +0 -318
  37. package/dist/local-fs-handlers-P4WGW3QY.mjs +0 -235
  38. package/dist/vercel-LLXAHKVJ.mjs +0 -20
@@ -1,318 +0,0 @@
1
- // src/storage/rpc.ts
2
- import { z } from "zod";
3
- var VercelLifecycleConfigSchema = z.object({
4
- pollIntervalMs: z.number().optional(),
5
- stopAfterInactiveMs: z.number().optional(),
6
- snapshotBeforeTimeoutMs: z.number().optional(),
7
- snapshotId: z.string().optional(),
8
- autoStart: z.boolean().optional()
9
- });
10
- var SandboxConfigSchema = z.discriminatedUnion("type", [
11
- z.object({
12
- type: z.literal("vercel"),
13
- resources: z.object({ vcpus: z.number() }).optional(),
14
- ports: z.array(z.number()).optional(),
15
- lifecycle: VercelLifecycleConfigSchema.optional()
16
- }),
17
- z.object({
18
- type: z.literal("local"),
19
- path: z.string().optional()
20
- }),
21
- z.object({
22
- type: z.literal("custom"),
23
- url: z.string(),
24
- headers: z.record(z.string(), z.string()).optional()
25
- })
26
- ]);
27
- var GenerationSchema = z.object({
28
- maxSteps: z.number().optional(),
29
- temperature: z.number().optional(),
30
- topK: z.number().optional(),
31
- topP: z.number().optional(),
32
- frequencyPenalty: z.number().optional(),
33
- presencePenalty: z.number().optional(),
34
- maxOutputTokens: z.number().optional(),
35
- headers: z.record(z.string(), z.string()).optional()
36
- });
37
- var SessionSchema = z.object({
38
- id: z.string(),
39
- createdAt: z.number(),
40
- updatedAt: z.number(),
41
- runId: z.string().nullable(),
42
- lastMessageId: z.string().nullable(),
43
- tags: z.record(z.string(), z.unknown()).nullable(),
44
- system: z.string().nullable(),
45
- model: z.string().nullable(),
46
- sandboxId: z.string().nullable(),
47
- skillsDir: z.array(z.string()).nullable(),
48
- hookToken: z.string().nullable(),
49
- activeTools: z.array(z.string()).nullable(),
50
- generation: GenerationSchema.nullable().default(null)
51
- });
52
- var StepUsageSchema = z.object({
53
- stepIndex: z.number(),
54
- model: z.string(),
55
- inputTokens: z.number(),
56
- outputTokens: z.number(),
57
- totalTokens: z.number(),
58
- cacheReadTokens: z.number(),
59
- cacheWriteTokens: z.number(),
60
- reasoningTokens: z.number()
61
- });
62
- var UsageSummarySchema = z.object({
63
- model: z.string(),
64
- inputTokens: z.number(),
65
- outputTokens: z.number(),
66
- totalTokens: z.number(),
67
- cacheReadTokens: z.number(),
68
- cacheWriteTokens: z.number(),
69
- reasoningTokens: z.number(),
70
- stepCount: z.number()
71
- });
72
- var MessageUsageSchema = z.object({
73
- steps: z.array(StepUsageSchema),
74
- summary: UsageSummarySchema
75
- });
76
- var MessageSchema = z.object({
77
- id: z.string(),
78
- sessionId: z.string(),
79
- role: z.enum(["user", "assistant", "system"]),
80
- createdAt: z.number(),
81
- startedAt: z.number().nullable(),
82
- completedAt: z.number().nullable(),
83
- interruptedAt: z.number().nullable(),
84
- usage: MessageUsageSchema.nullable()
85
- });
86
- var PartSchema = z.object({
87
- id: z.string(),
88
- messageId: z.string(),
89
- sessionId: z.string(),
90
- index: z.number(),
91
- part: z.unknown()
92
- });
93
- var CommandResultSchema = z.object({
94
- stdout: z.string(),
95
- stderr: z.string(),
96
- exitCode: z.number(),
97
- completedAt: z.number()
98
- });
99
- var SandboxRecordSchema = z.object({
100
- id: z.string(),
101
- config: SandboxConfigSchema,
102
- tags: z.record(z.string(), z.unknown()).nullable(),
103
- createdAt: z.number().nullable(),
104
- lastActivityAt: z.number().nullable(),
105
- acquiringLockId: z.string().nullable(),
106
- acquiringLockAt: z.number().nullable(),
107
- providerMetadata: z.discriminatedUnion("provider", [
108
- z.object({
109
- provider: z.literal("vercel"),
110
- sandboxId: z.string().nullable(),
111
- snapshotId: z.string().nullable()
112
- })
113
- ]).optional()
114
- });
115
- var CommandBaseSchema = z.object({
116
- id: z.string(),
117
- sessionId: z.string(),
118
- command: z.string(),
119
- args: z.array(z.string()).optional(),
120
- startedAt: z.number()
121
- });
122
- var CommandSchema = z.discriminatedUnion("status", [
123
- CommandBaseSchema.extend({ status: z.literal("running") }),
124
- CommandBaseSchema.extend({
125
- status: z.literal("completed"),
126
- result: CommandResultSchema
127
- }),
128
- CommandBaseSchema.extend({
129
- status: z.literal("killed"),
130
- result: CommandResultSchema.optional()
131
- }),
132
- CommandBaseSchema.extend({
133
- status: z.literal("failed"),
134
- result: CommandResultSchema
135
- })
136
- ]);
137
- function ListResultSchema(itemSchema) {
138
- return z.object({
139
- items: z.array(itemSchema),
140
- nextCursor: z.string().nullable()
141
- });
142
- }
143
- var methods = {
144
- "session.get": {
145
- params: z.object({ id: z.string() }),
146
- result: SessionSchema.nullable()
147
- },
148
- "session.set": {
149
- params: SessionSchema,
150
- result: SessionSchema
151
- },
152
- "session.list": {
153
- params: z.object({
154
- tags: z.record(z.string(), z.unknown()).optional(),
155
- order: z.enum([
156
- "createdAt_asc",
157
- "createdAt_desc",
158
- "updatedAt_asc",
159
- "updatedAt_desc"
160
- ]).optional(),
161
- cursor: z.string().optional(),
162
- limit: z.number().optional()
163
- }),
164
- result: ListResultSchema(SessionSchema)
165
- },
166
- "session.listBySandbox": {
167
- params: z.object({
168
- sandboxId: z.string(),
169
- tags: z.record(z.string(), z.unknown()).optional(),
170
- order: z.enum([
171
- "createdAt_asc",
172
- "createdAt_desc",
173
- "updatedAt_asc",
174
- "updatedAt_desc"
175
- ]).optional(),
176
- cursor: z.string().optional(),
177
- limit: z.number().optional()
178
- }),
179
- result: ListResultSchema(SessionSchema)
180
- },
181
- "session.tag.set": {
182
- params: z.object({
183
- sessionId: z.string(),
184
- tags: z.record(z.string(), z.unknown())
185
- }),
186
- result: SessionSchema
187
- },
188
- "message.get": {
189
- params: z.object({ id: z.string() }),
190
- result: MessageSchema.nullable()
191
- },
192
- "message.set": {
193
- params: MessageSchema,
194
- result: MessageSchema
195
- },
196
- "message.list": {
197
- params: z.object({
198
- sessionId: z.string(),
199
- cursor: z.string().optional(),
200
- limit: z.number().optional()
201
- }),
202
- result: ListResultSchema(MessageSchema)
203
- },
204
- "part.listByMessage": {
205
- params: z.object({
206
- messageId: z.string(),
207
- cursor: z.string().optional(),
208
- limit: z.number().optional()
209
- }),
210
- result: ListResultSchema(PartSchema)
211
- },
212
- "part.listBySession": {
213
- params: z.object({
214
- sessionId: z.string(),
215
- cursor: z.string().optional(),
216
- limit: z.number().optional()
217
- }),
218
- result: ListResultSchema(PartSchema)
219
- },
220
- "part.set": {
221
- params: PartSchema,
222
- result: PartSchema
223
- },
224
- "part.delete": {
225
- params: z.object({ id: z.string() }),
226
- result: z.void()
227
- },
228
- "sandbox.get": {
229
- params: z.object({ key: z.string() }),
230
- result: SandboxRecordSchema.nullable()
231
- },
232
- "sandbox.getBySession": {
233
- params: z.object({ sessionId: z.string() }),
234
- result: SandboxRecordSchema.nullable()
235
- },
236
- "sandbox.set": {
237
- params: SandboxRecordSchema,
238
- result: z.void()
239
- },
240
- "sandbox.list": {
241
- params: z.object({
242
- tags: z.record(z.string(), z.unknown()).optional(),
243
- order: z.enum([
244
- "createdAt_asc",
245
- "createdAt_desc",
246
- "lastActivityAt_asc",
247
- "lastActivityAt_desc"
248
- ]).optional(),
249
- cursor: z.string().optional(),
250
- limit: z.number().optional()
251
- }),
252
- result: ListResultSchema(SandboxRecordSchema)
253
- },
254
- "sandbox.tag.set": {
255
- params: z.object({
256
- sandboxId: z.string(),
257
- tags: z.record(z.string(), z.unknown())
258
- }),
259
- result: SandboxRecordSchema
260
- },
261
- "command.get": {
262
- params: z.object({ id: z.string() }),
263
- result: CommandSchema.nullable()
264
- },
265
- "command.set": {
266
- params: CommandSchema,
267
- result: CommandSchema
268
- },
269
- "command.list": {
270
- params: z.object({
271
- sessionId: z.string(),
272
- includeFinished: z.boolean().optional(),
273
- cursor: z.string().optional(),
274
- limit: z.number().optional()
275
- }),
276
- result: ListResultSchema(CommandSchema)
277
- }
278
- };
279
- var STORAGE_RPC_METHODS = Object.keys(methods);
280
-
281
- // src/storage/handler.ts
282
- async function handleStorageRpc(body, handlers) {
283
- const { method, params } = body;
284
- if (!(method in methods)) {
285
- return {
286
- error: { code: "METHOD_NOT_FOUND", message: `Unknown method: ${method}` }
287
- };
288
- }
289
- const methodName = method;
290
- const schema = methods[methodName].params;
291
- const parsed = schema.safeParse(params);
292
- if (!parsed.success) {
293
- return {
294
- error: {
295
- code: "INVALID_PARAMS",
296
- message: parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join(", ")
297
- }
298
- };
299
- }
300
- try {
301
- const handler = handlers[methodName];
302
- const result = await handler(parsed.data);
303
- return { result };
304
- } catch (e) {
305
- return {
306
- error: {
307
- code: "INTERNAL_ERROR",
308
- message: e instanceof Error ? e.message : String(e)
309
- }
310
- };
311
- }
312
- }
313
-
314
- export {
315
- STORAGE_RPC_METHODS,
316
- handleStorageRpc
317
- };
318
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3N0b3JhZ2UvcnBjLnRzIiwgIi4uL3NyYy9zdG9yYWdlL2hhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IFZlcmNlbExpZmVjeWNsZUNvbmZpZ1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgcG9sbEludGVydmFsTXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgc3RvcEFmdGVySW5hY3RpdmVNczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBzbmFwc2hvdEJlZm9yZVRpbWVvdXRNczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBzbmFwc2hvdElkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGF1dG9TdGFydDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgU2FuZGJveENvbmZpZ1NjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gIHoub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJ2ZXJjZWxcIiksXG4gICAgcmVzb3VyY2VzOiB6Lm9iamVjdCh7IHZjcHVzOiB6Lm51bWJlcigpIH0pLm9wdGlvbmFsKCksXG4gICAgcG9ydHM6IHouYXJyYXkoei5udW1iZXIoKSkub3B0aW9uYWwoKSxcbiAgICBsaWZlY3ljbGU6IFZlcmNlbExpZmVjeWNsZUNvbmZpZ1NjaGVtYS5vcHRpb25hbCgpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcImxvY2FsXCIpLFxuICAgIHBhdGg6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIHoub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJjdXN0b21cIiksXG4gICAgdXJsOiB6LnN0cmluZygpLFxuICAgIGhlYWRlcnM6IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIH0pLFxuXSk7XG5cbmV4cG9ydCB0eXBlIFNhbmRib3hDb25maWcgPSB6LmluZmVyPHR5cGVvZiBTYW5kYm94Q29uZmlnU2NoZW1hPjtcblxuY29uc3QgR2VuZXJhdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgbWF4U3RlcHM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdGVtcGVyYXR1cmU6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG9wSzogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB0b3BQOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGZyZXF1ZW5jeVBlbmFsdHk6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgcHJlc2VuY2VQZW5hbHR5OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIG1heE91dHB1dFRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBoZWFkZXJzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKS5vcHRpb25hbCgpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBTZXNzaW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZDogei5zdHJpbmcoKSxcbiAgY3JlYXRlZEF0OiB6Lm51bWJlcigpLFxuICB1cGRhdGVkQXQ6IHoubnVtYmVyKCksXG4gIHJ1bklkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGxhc3RNZXNzYWdlSWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgdGFnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLm51bGxhYmxlKCksXG4gIHN5c3RlbTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBtb2RlbDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBzYW5kYm94SWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgc2tpbGxzRGlyOiB6LmFycmF5KHouc3RyaW5nKCkpLm51bGxhYmxlKCksXG4gIGhvb2tUb2tlbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBhY3RpdmVUb29sczogei5hcnJheSh6LnN0cmluZygpKS5udWxsYWJsZSgpLFxuICBnZW5lcmF0aW9uOiBHZW5lcmF0aW9uU2NoZW1hLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgU3RlcFVzYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBzdGVwSW5kZXg6IHoubnVtYmVyKCksXG4gIG1vZGVsOiB6LnN0cmluZygpLFxuICBpbnB1dFRva2Vuczogei5udW1iZXIoKSxcbiAgb3V0cHV0VG9rZW5zOiB6Lm51bWJlcigpLFxuICB0b3RhbFRva2Vuczogei5udW1iZXIoKSxcbiAgY2FjaGVSZWFkVG9rZW5zOiB6Lm51bWJlcigpLFxuICBjYWNoZVdyaXRlVG9rZW5zOiB6Lm51bWJlcigpLFxuICByZWFzb25pbmdUb2tlbnM6IHoubnVtYmVyKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IFVzYWdlU3VtbWFyeVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgbW9kZWw6IHouc3RyaW5nKCksXG4gIGlucHV0VG9rZW5zOiB6Lm51bWJlcigpLFxuICBvdXRwdXRUb2tlbnM6IHoubnVtYmVyKCksXG4gIHRvdGFsVG9rZW5zOiB6Lm51bWJlcigpLFxuICBjYWNoZVJlYWRUb2tlbnM6IHoubnVtYmVyKCksXG4gIGNhY2hlV3JpdGVUb2tlbnM6IHoubnVtYmVyKCksXG4gIHJlYXNvbmluZ1Rva2Vuczogei5udW1iZXIoKSxcbiAgc3RlcENvdW50OiB6Lm51bWJlcigpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBNZXNzYWdlVXNhZ2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHN0ZXBzOiB6LmFycmF5KFN0ZXBVc2FnZVNjaGVtYSksXG4gIHN1bW1hcnk6IFVzYWdlU3VtbWFyeVNjaGVtYSxcbn0pO1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlVXNhZ2UgPSB6LmluZmVyPHR5cGVvZiBNZXNzYWdlVXNhZ2VTY2hlbWE+O1xuZXhwb3J0IHR5cGUgVXNhZ2VTdW1tYXJ5ID0gei5pbmZlcjx0eXBlb2YgVXNhZ2VTdW1tYXJ5U2NoZW1hPjtcbmV4cG9ydCB0eXBlIFN0ZXBVc2FnZSA9IHouaW5mZXI8dHlwZW9mIFN0ZXBVc2FnZVNjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBNZXNzYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZDogei5zdHJpbmcoKSxcbiAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICByb2xlOiB6LmVudW0oW1widXNlclwiLCBcImFzc2lzdGFudFwiLCBcInN5c3RlbVwiXSksXG4gIGNyZWF0ZWRBdDogei5udW1iZXIoKSxcbiAgc3RhcnRlZEF0OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gIGNvbXBsZXRlZEF0OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gIGludGVycnVwdGVkQXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgdXNhZ2U6IE1lc3NhZ2VVc2FnZVNjaGVtYS5udWxsYWJsZSgpLFxufSk7XG5cbi8qKlxuICogVGhlIGBwYXJ0YCBmaWVsZCBjb3JyZXNwb25kcyB0byBgVUlNZXNzYWdlW1wicGFydHNcIl1bbnVtYmVyXWAgZnJvbSB0aGUgYGFpYCBwYWNrYWdlLlxuICogV2UgdXNlIGB6LnVua25vd24oKWAgYmVjYXVzZSB0aGUgZXhhY3Qgc2hhcGUgdmFyaWVzIGJ5IHBhcnQgdHlwZSAodGV4dCwgdG9vbC1jYWxsLFxuICogdG9vbC1yZXN1bHQsIGV0Yy4pIGFuZCBtYXkgZXZvbHZlIHdpdGggdGhlIEFJIFNESy4gVGhlIFJQQyBsYXllciBqdXN0IHBhc3NlcyBpdCB0aHJvdWdoLlxuICovXG5leHBvcnQgY29uc3QgUGFydFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouc3RyaW5nKCksXG4gIG1lc3NhZ2VJZDogei5zdHJpbmcoKSxcbiAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICBpbmRleDogei5udW1iZXIoKSxcbiAgcGFydDogei51bmtub3duKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IENvbW1hbmRSZXN1bHRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHN0ZG91dDogei5zdHJpbmcoKSxcbiAgc3RkZXJyOiB6LnN0cmluZygpLFxuICBleGl0Q29kZTogei5udW1iZXIoKSxcbiAgY29tcGxldGVkQXQ6IHoubnVtYmVyKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IFNhbmRib3hSZWNvcmRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LnN0cmluZygpLFxuICBjb25maWc6IFNhbmRib3hDb25maWdTY2hlbWEsXG4gIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5udWxsYWJsZSgpLFxuICBjcmVhdGVkQXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgbGFzdEFjdGl2aXR5QXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgYWNxdWlyaW5nTG9ja0lkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGFjcXVpcmluZ0xvY2tBdDogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICBwcm92aWRlck1ldGFkYXRhOiB6XG4gICAgLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByb3ZpZGVyXCIsIFtcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcHJvdmlkZXI6IHoubGl0ZXJhbChcInZlcmNlbFwiKSxcbiAgICAgICAgc2FuZGJveElkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgICAgIHNuYXBzaG90SWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgIH0pLFxuICAgIF0pXG4gICAgLm9wdGlvbmFsKCksXG59KTtcblxuY29uc3QgQ29tbWFuZEJhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LnN0cmluZygpLFxuICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gIGNvbW1hbmQ6IHouc3RyaW5nKCksXG4gIGFyZ3M6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgc3RhcnRlZEF0OiB6Lm51bWJlcigpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBDb21tYW5kU2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJzdGF0dXNcIiwgW1xuICBDb21tYW5kQmFzZVNjaGVtYS5leHRlbmQoeyBzdGF0dXM6IHoubGl0ZXJhbChcInJ1bm5pbmdcIikgfSksXG4gIENvbW1hbmRCYXNlU2NoZW1hLmV4dGVuZCh7XG4gICAgc3RhdHVzOiB6LmxpdGVyYWwoXCJjb21wbGV0ZWRcIiksXG4gICAgcmVzdWx0OiBDb21tYW5kUmVzdWx0U2NoZW1hLFxuICB9KSxcbiAgQ29tbWFuZEJhc2VTY2hlbWEuZXh0ZW5kKHtcbiAgICBzdGF0dXM6IHoubGl0ZXJhbChcImtpbGxlZFwiKSxcbiAgICByZXN1bHQ6IENvbW1hbmRSZXN1bHRTY2hlbWEub3B0aW9uYWwoKSxcbiAgfSksXG4gIENvbW1hbmRCYXNlU2NoZW1hLmV4dGVuZCh7XG4gICAgc3RhdHVzOiB6LmxpdGVyYWwoXCJmYWlsZWRcIiksXG4gICAgcmVzdWx0OiBDb21tYW5kUmVzdWx0U2NoZW1hLFxuICB9KSxcbl0pO1xuXG5mdW5jdGlvbiBMaXN0UmVzdWx0U2NoZW1hPFQgZXh0ZW5kcyB6LlpvZFR5cGVBbnk+KGl0ZW1TY2hlbWE6IFQpIHtcbiAgcmV0dXJuIHoub2JqZWN0KHtcbiAgICBpdGVtczogei5hcnJheShpdGVtU2NoZW1hKSxcbiAgICBuZXh0Q3Vyc29yOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIH0pO1xufVxuXG5jb25zdCBtZXRob2RzID0ge1xuICBcInNlc3Npb24uZ2V0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHsgaWQ6IHouc3RyaW5nKCkgfSksXG4gICAgcmVzdWx0OiBTZXNzaW9uU2NoZW1hLm51bGxhYmxlKCksXG4gIH0sXG4gIFwic2Vzc2lvbi5zZXRcIjoge1xuICAgIHBhcmFtczogU2Vzc2lvblNjaGVtYSxcbiAgICByZXN1bHQ6IFNlc3Npb25TY2hlbWEsXG4gIH0sXG4gIFwic2Vzc2lvbi5saXN0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICAgICAgb3JkZXI6IHpcbiAgICAgICAgLmVudW0oW1xuICAgICAgICAgIFwiY3JlYXRlZEF0X2FzY1wiLFxuICAgICAgICAgIFwiY3JlYXRlZEF0X2Rlc2NcIixcbiAgICAgICAgICBcInVwZGF0ZWRBdF9hc2NcIixcbiAgICAgICAgICBcInVwZGF0ZWRBdF9kZXNjXCIsXG4gICAgICAgIF0pXG4gICAgICAgIC5vcHRpb25hbCgpLFxuICAgICAgY3Vyc29yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBsaW1pdDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogTGlzdFJlc3VsdFNjaGVtYShTZXNzaW9uU2NoZW1hKSxcbiAgfSxcbiAgXCJzZXNzaW9uLmxpc3RCeVNhbmRib3hcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgc2FuZGJveElkOiB6LnN0cmluZygpLFxuICAgICAgdGFnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLm9wdGlvbmFsKCksXG4gICAgICBvcmRlcjogelxuICAgICAgICAuZW51bShbXG4gICAgICAgICAgXCJjcmVhdGVkQXRfYXNjXCIsXG4gICAgICAgICAgXCJjcmVhdGVkQXRfZGVzY1wiLFxuICAgICAgICAgIFwidXBkYXRlZEF0X2FzY1wiLFxuICAgICAgICAgIFwidXBkYXRlZEF0X2Rlc2NcIixcbiAgICAgICAgXSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKFNlc3Npb25TY2hlbWEpLFxuICB9LFxuICBcInNlc3Npb24udGFnLnNldFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gICAgICB0YWdzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSksXG4gICAgfSksXG4gICAgcmVzdWx0OiBTZXNzaW9uU2NoZW1hLFxuICB9LFxuICBcIm1lc3NhZ2UuZ2V0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHsgaWQ6IHouc3RyaW5nKCkgfSksXG4gICAgcmVzdWx0OiBNZXNzYWdlU2NoZW1hLm51bGxhYmxlKCksXG4gIH0sXG4gIFwibWVzc2FnZS5zZXRcIjoge1xuICAgIHBhcmFtczogTWVzc2FnZVNjaGVtYSxcbiAgICByZXN1bHQ6IE1lc3NhZ2VTY2hlbWEsXG4gIH0sXG4gIFwibWVzc2FnZS5saXN0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHNlc3Npb25JZDogei5zdHJpbmcoKSxcbiAgICAgIGN1cnNvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbGltaXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IExpc3RSZXN1bHRTY2hlbWEoTWVzc2FnZVNjaGVtYSksXG4gIH0sXG4gIFwicGFydC5saXN0QnlNZXNzYWdlXCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIG1lc3NhZ2VJZDogei5zdHJpbmcoKSxcbiAgICAgIGN1cnNvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbGltaXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IExpc3RSZXN1bHRTY2hlbWEoUGFydFNjaGVtYSksXG4gIH0sXG4gIFwicGFydC5saXN0QnlTZXNzaW9uXCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHNlc3Npb25JZDogei5zdHJpbmcoKSxcbiAgICAgIGN1cnNvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbGltaXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IExpc3RSZXN1bHRTY2hlbWEoUGFydFNjaGVtYSksXG4gIH0sXG4gIFwicGFydC5zZXRcIjoge1xuICAgIHBhcmFtczogUGFydFNjaGVtYSxcbiAgICByZXN1bHQ6IFBhcnRTY2hlbWEsXG4gIH0sXG4gIFwicGFydC5kZWxldGVcIjoge1xuICAgIHBhcmFtczogei5vYmplY3QoeyBpZDogei5zdHJpbmcoKSB9KSxcbiAgICByZXN1bHQ6IHoudm9pZCgpLFxuICB9LFxuICBcInNhbmRib3guZ2V0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHsga2V5OiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogU2FuZGJveFJlY29yZFNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcInNhbmRib3guZ2V0QnlTZXNzaW9uXCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHsgc2Vzc2lvbklkOiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogU2FuZGJveFJlY29yZFNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcInNhbmRib3guc2V0XCI6IHtcbiAgICBwYXJhbXM6IFNhbmRib3hSZWNvcmRTY2hlbWEsXG4gICAgcmVzdWx0OiB6LnZvaWQoKSxcbiAgfSxcbiAgXCJzYW5kYm94Lmxpc3RcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgdGFnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLm9wdGlvbmFsKCksXG4gICAgICBvcmRlcjogelxuICAgICAgICAuZW51bShbXG4gICAgICAgICAgXCJjcmVhdGVkQXRfYXNjXCIsXG4gICAgICAgICAgXCJjcmVhdGVkQXRfZGVzY1wiLFxuICAgICAgICAgIFwibGFzdEFjdGl2aXR5QXRfYXNjXCIsXG4gICAgICAgICAgXCJsYXN0QWN0aXZpdHlBdF9kZXNjXCIsXG4gICAgICAgIF0pXG4gICAgICAgIC5vcHRpb25hbCgpLFxuICAgICAgY3Vyc29yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBsaW1pdDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogTGlzdFJlc3VsdFNjaGVtYShTYW5kYm94UmVjb3JkU2NoZW1hKSxcbiAgfSxcbiAgXCJzYW5kYm94LnRhZy5zZXRcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgc2FuZGJveElkOiB6LnN0cmluZygpLFxuICAgICAgdGFnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogU2FuZGJveFJlY29yZFNjaGVtYSxcbiAgfSxcbiAgXCJjb21tYW5kLmdldFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IGlkOiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogQ29tbWFuZFNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcImNvbW1hbmQuc2V0XCI6IHtcbiAgICBwYXJhbXM6IENvbW1hbmRTY2hlbWEsXG4gICAgcmVzdWx0OiBDb21tYW5kU2NoZW1hLFxuICB9LFxuICBcImNvbW1hbmQubGlzdFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gICAgICBpbmNsdWRlRmluaXNoZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKENvbW1hbmRTY2hlbWEpLFxuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHsgbWV0aG9kcyB9O1xuZXhwb3J0IHR5cGUgU3RvcmFnZU1ldGhvZHMgPSB0eXBlb2YgbWV0aG9kcztcbmV4cG9ydCB0eXBlIE1ldGhvZE5hbWUgPSBrZXlvZiBTdG9yYWdlTWV0aG9kcztcbmV4cG9ydCBjb25zdCBTVE9SQUdFX1JQQ19NRVRIT0RTID0gT2JqZWN0LmtleXMobWV0aG9kcykgYXMgTWV0aG9kTmFtZVtdO1xuIiwgImltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IHR5cGUgTWV0aG9kTmFtZSwgbWV0aG9kcywgdHlwZSBTdG9yYWdlTWV0aG9kcyB9IGZyb20gXCIuL3JwY1wiO1xuXG5leHBvcnQgdHlwZSBIYW5kbGVycyA9IHtcbiAgW0sgaW4gTWV0aG9kTmFtZV06IChcbiAgICBwYXJhbXM6IHouaW5mZXI8U3RvcmFnZU1ldGhvZHNbS11bXCJwYXJhbXNcIl0+XG4gICkgPT4gUHJvbWlzZTx6LmluZmVyPFN0b3JhZ2VNZXRob2RzW0tdW1wicmVzdWx0XCJdPj47XG59O1xuXG5leHBvcnQgdHlwZSBScGNSZXF1ZXN0ID0ge1xuICBtZXRob2Q6IHN0cmluZztcbiAgcGFyYW1zOiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgUnBjU3VjY2Vzc1Jlc3BvbnNlPFQgPSB1bmtub3duPiA9IHtcbiAgcmVzdWx0OiBUO1xufTtcblxuZXhwb3J0IHR5cGUgUnBjRXJyb3JSZXNwb25zZSA9IHtcbiAgZXJyb3I6IHsgY29kZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFJwY1Jlc3BvbnNlPFQgPSB1bmtub3duPiA9IFJwY1N1Y2Nlc3NSZXNwb25zZTxUPiB8IFJwY0Vycm9yUmVzcG9uc2U7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVTdG9yYWdlUnBjKFxuICBib2R5OiBScGNSZXF1ZXN0LFxuICBoYW5kbGVyczogSGFuZGxlcnNcbik6IFByb21pc2U8UnBjUmVzcG9uc2U+IHtcbiAgY29uc3QgeyBtZXRob2QsIHBhcmFtcyB9ID0gYm9keTtcblxuICBpZiAoIShtZXRob2QgaW4gbWV0aG9kcykpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3I6IHsgY29kZTogXCJNRVRIT0RfTk9UX0ZPVU5EXCIsIG1lc3NhZ2U6IGBVbmtub3duIG1ldGhvZDogJHttZXRob2R9YCB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdCBtZXRob2ROYW1lID0gbWV0aG9kIGFzIE1ldGhvZE5hbWU7XG4gIGNvbnN0IHNjaGVtYSA9IG1ldGhvZHNbbWV0aG9kTmFtZV0ucGFyYW1zO1xuICBjb25zdCBwYXJzZWQgPSBzY2hlbWEuc2FmZVBhcnNlKHBhcmFtcyk7XG5cbiAgaWYgKCFwYXJzZWQuc3VjY2Vzcykge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcjoge1xuICAgICAgICBjb2RlOiBcIklOVkFMSURfUEFSQU1TXCIsXG4gICAgICAgIG1lc3NhZ2U6IHBhcnNlZC5lcnJvci5pc3N1ZXNcbiAgICAgICAgICAubWFwKChpKSA9PiBgJHtpLnBhdGguam9pbihcIi5cIil9OiAke2kubWVzc2FnZX1gKVxuICAgICAgICAgIC5qb2luKFwiLCBcIiksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGhhbmRsZXIgPSBoYW5kbGVyc1ttZXRob2ROYW1lXSBhcyAoXG4gICAgICBwYXJhbXM6IHVua25vd25cbiAgICApID0+IFByb21pc2U8dW5rbm93bj47XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaGFuZGxlcihwYXJzZWQuZGF0YSk7XG4gICAgcmV0dXJuIHsgcmVzdWx0IH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3I6IHtcbiAgICAgICAgY29kZTogXCJJTlRFUk5BTF9FUlJPUlwiLFxuICAgICAgICBtZXNzYWdlOiBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBQSxTQUFTLFNBQVM7QUFFbEIsSUFBTSw4QkFBOEIsRUFBRSxPQUFPO0FBQUEsRUFDM0MsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLFNBQVM7QUFBQSxFQUNwQyxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsU0FBUztBQUFBLEVBQ3pDLHlCQUF5QixFQUFFLE9BQU8sRUFBRSxTQUFTO0FB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
@@ -1,235 +0,0 @@
1
- import "./chunk-3ODWQVIA.mjs";
2
-
3
- // src/storage/bindings/local-fs-handlers.ts
4
- import { mkdir, readdir, readFile, unlink, writeFile } from "node:fs/promises";
5
- import { dirname, join, resolve } from "node:path";
6
-
7
- // src/utils/paginate.ts
8
- function paginate(opts) {
9
- const { items, cursor, limit } = opts;
10
- const startIndex = cursor ? items.findIndex((m) => m.id === cursor) + 1 : 0;
11
- const sliced = limit !== void 0 ? items.slice(startIndex, startIndex + limit) : items.slice(startIndex);
12
- const nextCursor = limit !== void 0 && startIndex + limit < items.length ? sliced.at(-1)?.id ?? null : null;
13
- return { items: sliced, nextCursor };
14
- }
15
-
16
- // src/storage/bindings/local-fs-handlers.ts
17
- function createFilesystemHandlers(basePath) {
18
- const resolvedBase = resolve(basePath);
19
- const sessionDir = join(resolvedBase, "session");
20
- const messageDir = join(resolvedBase, "message");
21
- const partDir = join(resolvedBase, "part");
22
- const sandboxDir = join(resolvedBase, "sandbox");
23
- const commandDir = join(resolvedBase, "command");
24
- async function ensureDir(dir) {
25
- await mkdir(dir, { recursive: true });
26
- }
27
- async function readJson(filePath) {
28
- try {
29
- const content = await readFile(filePath, "utf-8");
30
- return JSON.parse(content);
31
- } catch {
32
- return null;
33
- }
34
- }
35
- async function writeJsonFile(filePath, data) {
36
- await ensureDir(dirname(filePath));
37
- await writeFile(filePath, JSON.stringify(data, null, 2));
38
- }
39
- async function readAllFromDir(dir) {
40
- try {
41
- const files = await readdir(dir);
42
- const results = await Promise.all(
43
- files.filter((f) => f.endsWith(".json")).map((f) => readJson(join(dir, f)))
44
- );
45
- return results.filter((r) => r !== null);
46
- } catch {
47
- return [];
48
- }
49
- }
50
- return {
51
- "session.get": async ({ id }) => {
52
- const sessionPath = join(sessionDir, `${id}.json`);
53
- return await readJson(sessionPath) ?? null;
54
- },
55
- "session.set": async (session) => {
56
- const now = Date.now();
57
- const sessionPath = join(sessionDir, `${session.id}.json`);
58
- const existing = await readJson(sessionPath);
59
- const newSession = {
60
- ...session,
61
- tags: session.tags ?? existing?.tags ?? {},
62
- createdAt: existing?.createdAt ?? session.createdAt ?? now,
63
- updatedAt: now
64
- };
65
- await writeJsonFile(sessionPath, newSession);
66
- return newSession;
67
- },
68
- "session.list": async ({ tags, cursor, limit }) => {
69
- const allSessions = await readAllFromDir(sessionDir);
70
- let filtered = allSessions;
71
- if (tags && Object.keys(tags).length > 0) {
72
- filtered = filtered.filter((s) => {
73
- const sessionTags = s.tags ?? {};
74
- return Object.entries(tags).every(
75
- ([key, value]) => sessionTags[key] === value
76
- );
77
- });
78
- }
79
- filtered.sort((a, b) => a.createdAt - b.createdAt);
80
- return paginate({ items: filtered, cursor, limit });
81
- },
82
- "session.listBySandbox": async ({ sandboxId, tags, cursor, limit }) => {
83
- const allSessions = await readAllFromDir(sessionDir);
84
- let filtered = allSessions.filter((s) => s.sandboxId === sandboxId);
85
- if (tags && Object.keys(tags).length > 0) {
86
- filtered = filtered.filter((s) => {
87
- const sessionTags = s.tags ?? {};
88
- return Object.entries(tags).every(
89
- ([key, value]) => sessionTags[key] === value
90
- );
91
- });
92
- }
93
- filtered.sort((a, b) => a.createdAt - b.createdAt);
94
- return paginate({ items: filtered, cursor, limit });
95
- },
96
- "session.tag.set": async ({ sessionId, tags }) => {
97
- const sessionPath = join(sessionDir, `${sessionId}.json`);
98
- const existing = await readJson(sessionPath);
99
- if (!existing) {
100
- throw new Error(`Session ${sessionId} not found`);
101
- }
102
- const mergedTags = { ...existing.tags, ...tags };
103
- const now = Date.now();
104
- const updatedSession = {
105
- ...existing,
106
- tags: mergedTags,
107
- updatedAt: now
108
- };
109
- await writeJsonFile(sessionPath, updatedSession);
110
- return updatedSession;
111
- },
112
- "message.get": async ({ id }) => {
113
- return await readJson(join(messageDir, `${id}.json`));
114
- },
115
- "message.set": async (message) => {
116
- await writeJsonFile(join(messageDir, `${message.id}.json`), message);
117
- return message;
118
- },
119
- "message.list": async ({ sessionId, cursor, limit }) => {
120
- const allMessages = await readAllFromDir(messageDir);
121
- const filtered = allMessages.filter((m) => m.sessionId === sessionId).sort((a, b) => a.createdAt - b.createdAt);
122
- return paginate({ items: filtered, cursor, limit });
123
- },
124
- "part.listByMessage": async ({ messageId, cursor, limit }) => {
125
- const allParts = await readAllFromDir(partDir);
126
- const filtered = allParts.filter((p) => p.messageId === messageId).sort((a, b) => a.index - b.index);
127
- return paginate({ items: filtered, cursor, limit });
128
- },
129
- "part.listBySession": async ({ sessionId, cursor, limit }) => {
130
- const allParts = await readAllFromDir(partDir);
131
- const filtered = allParts.filter((p) => p.sessionId === sessionId).sort((a, b) => {
132
- if (a.messageId !== b.messageId) {
133
- return a.messageId.localeCompare(b.messageId);
134
- }
135
- return a.index - b.index;
136
- });
137
- return paginate({ items: filtered, cursor, limit });
138
- },
139
- "part.set": async (part) => {
140
- await writeJsonFile(join(partDir, `${part.id}.json`), part);
141
- return part;
142
- },
143
- "part.delete": async ({ id }) => {
144
- try {
145
- await unlink(join(partDir, `${id}.json`));
146
- } catch {
147
- }
148
- },
149
- "sandbox.get": async ({ key }) => {
150
- const safeName = Buffer.from(key).toString("base64url");
151
- const sandboxPath = join(sandboxDir, `${safeName}.json`);
152
- const data = await readJson(sandboxPath);
153
- if (!data) {
154
- return null;
155
- }
156
- return data;
157
- },
158
- "sandbox.set": async (record) => {
159
- const safeName = Buffer.from(record.id).toString("base64url");
160
- const sandboxPath = join(sandboxDir, `${safeName}.json`);
161
- const existing = await readJson(sandboxPath);
162
- const newRecord = {
163
- ...record,
164
- tags: record.tags ?? existing?.tags ?? null
165
- };
166
- await writeJsonFile(sandboxPath, newRecord);
167
- },
168
- "sandbox.list": async ({ tags, order, cursor, limit }) => {
169
- const allSandboxes = await readAllFromDir(sandboxDir);
170
- let filtered = allSandboxes;
171
- if (tags && Object.keys(tags).length > 0) {
172
- filtered = filtered.filter((s) => {
173
- const sandboxTags = s.tags ?? {};
174
- return Object.entries(tags).every(
175
- ([key, value]) => sandboxTags[key] === value
176
- );
177
- });
178
- }
179
- const sortField = order?.startsWith("lastActivityAt") ? "lastActivityAt" : "createdAt";
180
- const sortDir = order?.endsWith("_desc") ? -1 : 1;
181
- filtered.sort(
182
- (a, b) => sortDir * ((a[sortField] ?? 0) - (b[sortField] ?? 0))
183
- );
184
- return paginate({ items: filtered, cursor, limit });
185
- },
186
- "sandbox.tag.set": async ({ sandboxId, tags }) => {
187
- const safeName = Buffer.from(sandboxId).toString("base64url");
188
- const sandboxPath = join(sandboxDir, `${safeName}.json`);
189
- const existing = await readJson(sandboxPath);
190
- if (!existing) {
191
- throw new Error(`Sandbox ${sandboxId} not found`);
192
- }
193
- const mergedTags = { ...existing.tags, ...tags };
194
- const updatedSandbox = {
195
- ...existing,
196
- tags: mergedTags
197
- };
198
- await writeJsonFile(sandboxPath, updatedSandbox);
199
- return updatedSandbox;
200
- },
201
- "sandbox.getBySession": async ({ sessionId }) => {
202
- const allSandboxes = await readAllFromDir(sandboxDir);
203
- const matching = allSandboxes.filter(
204
- (s) => s.id.startsWith(`${sessionId}-`)
205
- );
206
- if (matching.length === 0) {
207
- return null;
208
- }
209
- matching.sort(
210
- (a, b) => (b.lastActivityAt ?? 0) - (a.lastActivityAt ?? 0)
211
- );
212
- return matching[0];
213
- },
214
- "command.get": async ({ id }) => {
215
- return await readJson(join(commandDir, `${id}.json`));
216
- },
217
- "command.set": async (command) => {
218
- await writeJsonFile(join(commandDir, `${command.id}.json`), command);
219
- return command;
220
- },
221
- "command.list": async ({ sessionId, includeFinished, cursor, limit }) => {
222
- const allCommands = await readAllFromDir(commandDir);
223
- let filtered = allCommands.filter((c) => c.sessionId === sessionId);
224
- if (!includeFinished) {
225
- filtered = filtered.filter((c) => c.status === "running");
226
- }
227
- filtered.sort((a, b) => a.startedAt - b.startedAt);
228
- return paginate({ items: filtered, cursor, limit });
229
- }
230
- };
231
- }
232
- export {
233
- createFilesystemHandlers
234
- };
235
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3N0b3JhZ2UvYmluZGluZ3MvbG9jYWwtZnMtaGFuZGxlcnMudHMiLCAiLi4vc3JjL3V0aWxzL3BhZ2luYXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBta2RpciwgcmVhZGRpciwgcmVhZEZpbGUsIHVubGluaywgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwYWdpbmF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9wYWdpbmF0ZVwiO1xuaW1wb3J0IHR5cGUge1xuICBDb21tYW5kLFxuICBIYW5kbGVycyxcbiAgTWVzc2FnZSxcbiAgUGFydCxcbiAgU2FuZGJveFJlY29yZCxcbiAgU2Vzc2lvbixcbn0gZnJvbSBcIi4uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGaWxlc3lzdGVtSGFuZGxlcnMoYmFzZVBhdGg6IHN0cmluZyk6IEhhbmRsZXJzIHtcbiAgY29uc3QgcmVzb2x2ZWRCYXNlID0gcmVzb2x2ZShiYXNlUGF0aCk7XG4gIGNvbnN0IHNlc3Npb25EaXIgPSBqb2luKHJlc29sdmVkQmFzZSwgXCJzZXNzaW9uXCIpO1xuICBjb25zdCBtZXNzYWdlRGlyID0gam9pbihyZXNvbHZlZEJhc2UsIFwibWVzc2FnZVwiKTtcbiAgY29uc3QgcGFydERpciA9IGpvaW4ocmVzb2x2ZWRCYXNlLCBcInBhcnRcIik7XG4gIGNvbnN0IHNhbmRib3hEaXIgPSBqb2luKHJlc29sdmVkQmFzZSwgXCJzYW5kYm94XCIpO1xuICBjb25zdCBjb21tYW5kRGlyID0gam9pbihyZXNvbHZlZEJhc2UsIFwiY29tbWFuZFwiKTtcblxuICBhc3luYyBmdW5jdGlvbiBlbnN1cmVEaXIoZGlyOiBzdHJpbmcpIHtcbiAgICBhd2FpdCBta2RpcihkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVhZEpzb248VD4oZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCBcInV0Zi04XCIpO1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoY29udGVudCkgYXMgVDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHdyaXRlSnNvbkZpbGUoZmlsZVBhdGg6IHN0cmluZywgZGF0YTogdW5rbm93bikge1xuICAgIGF3YWl0IGVuc3VyZURpcihkaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKSk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZWFkQWxsRnJvbURpcjxUPihkaXI6IHN0cmluZyk6IFByb21pc2U8VFtdPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgcmVhZGRpcihkaXIpO1xuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBmaWxlc1xuICAgICAgICAgIC5maWx0ZXIoKGYpID0+IGYuZW5kc1dpdGgoXCIuanNvblwiKSlcbiAgICAgICAgICAubWFwKChmKSA9PiByZWFkSnNvbjxUPihqb2luKGRpciwgZikpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXN1bHRzLmZpbHRlcigocik6IHIgaXMgTm9uTnVsbGFibGU8dHlwZW9mIHI+ID0+IHIgIT09IG51bGwpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgXCJzZXNzaW9uLmdldFwiOiBhc3luYyAoeyBpZCB9KSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uUGF0aCA9IGpvaW4oc2Vzc2lvbkRpciwgYCR7aWR9Lmpzb25gKTtcbiAgICAgIHJldHVybiAoYXdhaXQgcmVhZEpzb248U2Vzc2lvbj4oc2Vzc2lvblBhdGgpKSA/PyBudWxsO1xuICAgIH0sXG5cbiAgICBcInNlc3Npb24uc2V0XCI6IGFzeW5jIChzZXNzaW9uKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3Qgc2Vzc2lvblBhdGggPSBqb2luKHNlc3Npb25EaXIsIGAke3Nlc3Npb24uaWR9Lmpzb25gKTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgcmVhZEpzb248U2Vzc2lvbj4oc2Vzc2lvblBhdGgpO1xuICAgICAgY29uc3QgbmV3U2Vzc2lvbjogU2Vzc2lvbiA9IHtcbiAgICAgICAgLi4uc2Vzc2lvbixcbiAgICAgICAgdGFnczogc2Vzc2lvbi50YWdzID8/IGV4aXN0aW5nPy50YWdzID8/IHt9LFxuICAgICAgICBjcmVhdGVkQXQ6IGV4aXN0aW5nPy5jcmVhdGVkQXQgPz8gc2Vzc2lvbi5jcmVhdGVkQXQgPz8gbm93LFxuICAgICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgIH07XG4gICAgICBhd2FpdCB3cml0ZUpzb25GaWxlKHNlc3Npb25QYXRoLCBuZXdTZXNzaW9uKTtcbiAgICAgIHJldHVybiBuZXdTZXNzaW9uO1xuICAgIH0sXG5cbiAgICBcInNlc3Npb24ubGlzdFwiOiBhc3luYyAoeyB0YWdzLCBjdXJzb3IsIGxpbWl0IH0pID0+IHtcbiAgICAgIGNvbnN0IGFsbFNlc3Npb25zID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8U2Vzc2lvbj4oc2Vzc2lvbkRpcik7XG4gICAgICBsZXQgZmlsdGVyZWQgPSBhbGxTZXNzaW9ucztcbiAgICAgIGlmICh0YWdzICYmIE9iamVjdC5rZXlzKHRhZ3MpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZmlsdGVyZWQgPSBmaWx0ZXJlZC5maWx0ZXIoKHMpID0+IHtcbiAgICAgICAgICBjb25zdCBzZXNzaW9uVGFncyA9IHMudGFncyA/PyB7fTtcbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGFncykuZXZlcnkoXG4gICAgICAgICAgICAoW2tleSwgdmFsdWVdKSA9PiBzZXNzaW9uVGFnc1trZXldID09PSB2YWx1ZVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZmlsdGVyZWQuc29ydCgoYSwgYikgPT4gYS5jcmVhdGVkQXQgLSBiLmNyZWF0ZWRBdCk7XG4gICAgICByZXR1cm4gcGFnaW5hdGUoeyBpdGVtczogZmlsdGVyZWQsIGN1cnNvciwgbGltaXQgfSk7XG4gICAgfSxcblxuICAgIFwic2Vzc2lvbi5saXN0QnlTYW5kYm94XCI6IGFzeW5jICh7IHNhbmRib3hJZCwgdGFncywgY3Vyc29yLCBsaW1pdCB9KSA9PiB7XG4gICAgICBjb25zdCBhbGxTZXNzaW9ucyA9IGF3YWl0IHJlYWRBbGxGcm9tRGlyPFNlc3Npb24+KHNlc3Npb25EaXIpO1xuICAgICAgbGV0IGZpbHRlcmVkID0gYWxsU2Vzc2lvbnMuZmlsdGVyKChzKSA9PiBzLnNhbmRib3hJZCA9PT0gc2FuZGJveElkKTtcbiAgICAgIGlmICh0YWdzICYmIE9iamVjdC5rZXlzKHRhZ3MpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZmlsdGVyZWQgPSBmaWx0ZXJlZC5maWx0ZXIoKHMpID0+IHtcbiAgICAgICAgICBjb25zdCBzZXNzaW9uVGFncyA9IHMudGFncyA/PyB7fTtcbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGFncykuZXZlcnkoXG4gICAgICAgICAgICAoW2tleSwgdmFsdWVdKSA9PiBzZXNzaW9uVGFnc1trZXldID09PSB2YWx1ZVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZmlsdGVyZWQuc29ydCgoYSwgYikgPT4gYS5jcmVhdGVkQXQgLSBiLmNyZWF0ZWRBdCk7XG4gICAgICByZXR1cm4gcGFnaW5hdGUoeyBpdGVtczogZmlsdGVyZWQsIGN1cnNvciwgbGltaXQgfSk7XG4gICAgfSxcblxuICAgIFwic2Vzc2lvbi50YWcuc2V0XCI6IGFzeW5jICh7IHNlc3Npb25JZCwgdGFncyB9KSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uUGF0aCA9IGpvaW4oc2Vzc2lvbkRpciwgYCR7c2Vzc2lvbklkfS5qc29uYCk7XG4gICAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHJlYWRKc29uPFNlc3Npb24+KHNlc3Npb25QYXRoKTtcbiAgICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXNzaW9uICR7c2Vzc2lvbklkfSBub3QgZm91bmRgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1lcmdlZFRhZ3MgPSB7IC4uLmV4aXN0aW5nLnRhZ3MsIC4uLnRhZ3MgfTtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB1cGRhdGVkU2Vzc2lvbjogU2Vzc2lvbiA9IHtcbiAgICAgICAgLi4uZXhpc3RpbmcsXG4gICAgICAgIHRhZ3M6IG1lcmdlZFRhZ3MsXG4gICAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgICAgfTtcbiAgICAgIGF3YWl0IHdyaXRlSnNvbkZpbGUoc2Vzc2lvblBhdGgsIHVwZGF0ZWRTZXNzaW9uKTtcbiAgICAgIHJldHVybiB1cGRhdGVkU2Vzc2lvbjtcbiAgICB9LFxuXG4gICAgXCJtZXNzYWdlLmdldFwiOiBhc3luYyAoeyBpZCB9KSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVhZEpzb248TWVzc2FnZT4oam9pbihtZXNzYWdlRGlyLCBgJHtpZH0uanNvbmApKTtcbiAgICB9LFxuXG4gICAgXCJtZXNzYWdlLnNldFwiOiBhc3luYyAobWVzc2FnZSkgPT4ge1xuICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShqb2luKG1lc3NhZ2VEaXIsIGAke21lc3NhZ2UuaWR9Lmpzb25gKSwgbWVzc2FnZSk7XG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9LFxuXG4gICAgXCJtZXNzYWdlLmxpc3RcIjogYXN5bmMgKHsgc2Vzc2lvbklkLCBjdXJzb3IsIGxpbWl0IH0pID0+IHtcbiAgICAgIGNvbnN0IGFsbE1lc3NhZ2VzID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8TWVzc2FnZT4obWVzc2FnZURpcik7XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IGFsbE1lc3NhZ2VzXG4gICAgICAgIC5maWx0ZXIoKG0pID0+IG0uc2Vzc2lvbklkID09PSBzZXNzaW9uSWQpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmNyZWF0ZWRBdCAtIGIuY3JlYXRlZEF0KTtcbiAgICAgIHJldHVybiBwYWdpbmF0ZSh7IGl0ZW1zOiBmaWx0ZXJlZCwgY3Vyc29yLCBsaW1pdCB9KTtcbiAgICB9LFxuXG4gICAgXCJwYXJ0Lmxpc3RCeU1lc3NhZ2VcIjogYXN5bmMgKHsgbWVzc2FnZUlkLCBjdXJzb3IsIGxpbWl0IH0pID0+IHtcbiAgICAgIGNvbnN0IGFsbFBhcnRzID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8UGFydD4ocGFydERpcik7XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IGFsbFBhcnRzXG4gICAgICAgIC5maWx0ZXIoKHApID0+IHAubWVzc2FnZUlkID09PSBtZXNzYWdlSWQpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG4gICAgICByZXR1cm4gcGFnaW5hdGUoeyBpdGVtczogZmlsdGVyZWQsIGN1cnNvciwgbGltaXQgfSk7XG4gICAgfSxcblxuICAgIFwicGFydC5saXN0QnlTZXNzaW9uXCI6IGFzeW5jICh7IHNlc3Npb25JZCwgY3Vyc29yLCBsaW1pdCB9KSA9PiB7XG4gICAgICBjb25zdCBhbGxQYXJ0cyA9IGF3YWl0IHJlYWRBbGxGcm9tRGlyPFBhcnQ+KHBhcnREaXIpO1xuICAgICAgY29uc3QgZmlsdGVyZWQgPSBhbGxQYXJ0c1xuICAgICAgICAuZmlsdGVyKChwKSA9PiBwLnNlc3Npb25JZCA9PT0gc2Vzc2lvbklkKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIGlmIChhLm1lc3NhZ2VJZCAhPT0gYi5tZXNzYWdlSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBhLm1lc3NhZ2VJZC5sb2NhbGVDb21wYXJlKGIubWVzc2FnZUlkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGEuaW5kZXggLSBiLmluZGV4O1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBwYWdpbmF0ZSh7IGl0ZW1zOiBmaWx0ZXJlZCwgY3Vyc29yLCBsaW1pdCB9KTtcbiAgICB9LFxuXG4gICAgXCJwYXJ0LnNldFwiOiBhc3luYyAocGFydCkgPT4ge1xuICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShqb2luKHBhcnREaXIsIGAke3BhcnQuaWR9Lmpzb25gKSwgcGFydCk7XG4gICAgICByZXR1cm4gcGFydDtcbiAgICB9LFxuXG4gICAgXCJwYXJ0LmRlbGV0ZVwiOiBhc3luYyAoeyBpZCB9KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB1bmxpbmsoam9pbihwYXJ0RGlyLCBgJHtpZH0uanNvbmApKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBJZ25vcmUgaWYgZmlsZSBkb2Vzbid0IGV4aXN0XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwic2FuZGJveC5nZXRcIjogYXN5bmMgKHsga2V5IH0pID0+IHtcbiAgICAgIGNvbnN0IHNhZmVOYW1lID0gQnVmZmVyLmZyb20oa2V5KS50b1N0cmluZyhcImJhc2U2NHVybFwiKTtcbiAgICAgIGNvbnN0IHNhbmRib3hQYXRoID0gam9pbihzYW5kYm94RGlyLCBgJHtzYWZlTmFtZX0uanNvbmApO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlYWRKc29uPFNhbmRib3hSZWNvcmQ+KHNhbmRib3hQYXRoKTtcbiAgICAgIGlmICghZGF0YSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0sXG5cbiAgICBcInNhbmRib3guc2V0XCI6IGFzeW5jIChyZWNvcmQpID0+IHtcbiAgICAgIGNvbnN0IHNhZmVOYW1lID0gQnVmZmVyLmZyb20ocmVjb3JkLmlkKS50b1N0cmluZyhcImJhc2U2NHVybFwiKTtcbiAgICAgIGNvbnN0IHNhbmRib3hQYXRoID0gam9pbihzYW5kYm94RGlyLCBgJHtzYWZlTmFtZX0uanNvbmApO1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkSnNvbjxTYW5kYm94UmVjb3JkPihzYW5kYm94UGF0aCk7XG4gICAgICBjb25zdCBuZXdSZWNvcmQ6IFNhbmRib3hSZWNvcmQgPSB7XG4gICAgICAgIC4uLnJlY29yZCxcbiAgICAgICAgdGFnczogcmVjb3JkLnRhZ3MgPz8gZXhpc3Rpbmc/LnRhZ3MgPz8gbnVsbCxcbiAgICAgIH07XG4gICAgICBhd2FpdCB3cml0ZUpzb25GaWxlKHNhbmRib3hQYXRoLCBuZXdSZWNvcmQpO1xuICAgIH0sXG5cbiAgICBcInNhbmRib3gubGlzdFwiOiBhc3luYyAoeyB0YWdzLCBvcmRlciwgY3Vyc29yLCBsaW1pdCB9KSA9PiB7XG4gICAgICBjb25zdCBhbGxTYW5kYm94ZXMgPSBhd2FpdCByZWFkQWxsRnJvbURpcjxTYW5kYm94UmVjb3JkPihzYW5kYm94RGlyKTtcbiAgICAgIGxldCBmaWx0ZXJlZCA9IGFsbFNhbmRib3hlcztcbiAgICAgIGlmICh0YWdzICYmIE9iamVjdC5rZXlzKHRhZ3MpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZmlsdGVyZWQgPSBmaWx0ZXJlZC5maWx0ZXIoKHMpID0+IHtcbiAgICAgICAgICBjb25zdCBzYW5kYm94VGFncyA9IHMudGFncyA/PyB7fTtcbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGFncykuZXZlcnkoXG4gICAgICAgICAgICAoW2tleSwgdmFsdWVdKSA9PiBzYW5kYm94VGFnc1trZXldID09PSB2YWx1ZVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3Qgc29ydEZpZWxkID0gb3JkZXI/LnN0YXJ0c1dpdGgoXCJsYXN0QWN0aXZpdHlBdFwiKVxuICAgICAgICA/IFwibGFzdEFjdGl2aXR5QXRcIlxuICAgICAgICA6IFwiY3JlYXRlZEF0XCI7XG4gICAgICBjb25zdCBzb3J0RGlyID0gb3JkZXI/LmVuZHNXaXRoKFwiX2Rlc2NcIikgPyAtMSA6IDE7XG4gICAgICBmaWx0ZXJlZC5zb3J0KFxuICAgICAgICAoYSwgYikgPT4gc29ydERpciAqICgoYVtzb3J0RmllbGRdID8/IDApIC0gKGJbc29ydEZpZWxkXSA/PyAwKSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gcGFnaW5hdGUoeyBpdGVtczogZmlsdGVyZWQsIGN1cnNvciwgbGltaXQgfSk7XG4gICAgfSxcblxuICAgIFwic2FuZGJveC50YWcuc2V0XCI6IGFzeW5jICh7IHNhbmRib3hJZCwgdGFncyB9KSA9PiB7XG4gICAgICBjb25zdCBzYWZlTmFtZSA9IEJ1ZmZlci5mcm9tKHNhbmRib3hJZCkudG9TdHJpbmcoXCJiYXNlNjR1cmxcIik7XG4gICAgICBjb25zdCBzYW5kYm94UGF0aCA9IGpvaW4oc2FuZGJveERpciwgYCR7c2FmZU5hbWV9Lmpzb25gKTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgcmVhZEpzb248U2FuZGJveFJlY29yZD4oc2FuZGJveFBhdGgpO1xuICAgICAgaWYgKCFleGlzdGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNhbmRib3ggJHtzYW5kYm94SWR9IG5vdCBmb3VuZGApO1xuICAgICAgfVxuICAgICAgY29uc3QgbWVyZ2VkVGFncyA9IHsgLi4uZXhpc3RpbmcudGFncywgLi4udGFncyB9O1xuICAgICAgY29uc3QgdXBkYXRlZFNhbmRib3g6IFNhbmRib3hSZWNvcmQgPSB7XG4gICAgICAgIC4uLmV4aXN0aW5nLFxuICAgICAgICB0YWdzOiBtZXJnZWRUYWdzLFxuICAgICAgfTtcbiAgICAgIGF3YWl0IHdyaXRlSnNvbkZpbGUoc2FuZGJveFBhdGgsIHVwZGF0ZWRTYW5kYm94KTtcbiAgICAgIHJldHVybiB1cGRhdGVkU2FuZGJveDtcbiAgICB9LFxuXG4gICAgXCJzYW5kYm94LmdldEJ5U2Vzc2lvblwiOiBhc3luYyAoeyBzZXNzaW9uSWQgfSkgPT4ge1xuICAgICAgY29uc3QgYWxsU2FuZGJveGVzID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8U2FuZGJveFJlY29yZD4oc2FuZGJveERpcik7XG4gICAgICBjb25zdCBtYXRjaGluZyA9IGFsbFNhbmRib3hlcy5maWx0ZXIoKHMpID0+XG4gICAgICAgIHMuaWQuc3RhcnRzV2l0aChgJHtzZXNzaW9uSWR9LWApXG4gICAgICApO1xuICAgICAgaWYgKG1hdGNoaW5nLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIG1hdGNoaW5nLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PiAoYi5sYXN0QWN0aXZpdHlBdCA/PyAwKSAtIChhLmxhc3RBY3Rpdml0eUF0ID8/IDApXG4gICAgICApO1xuICAgICAgcmV0dXJuIG1hdGNoaW5nWzBdO1xuICAgIH0sXG5cbiAgICBcImNvbW1hbmQuZ2V0XCI6IGFzeW5jICh7IGlkIH0pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCByZWFkSnNvbjxDb21tYW5kPihqb2luKGNvbW1hbmREaXIsIGAke2lkfS5qc29uYCkpO1xuICAgIH0sXG5cbiAgICBcImNvbW1hbmQuc2V0XCI6IGFzeW5jIChjb21tYW5kKSA9PiB7XG4gICAgICBhd2FpdCB3cml0ZUpzb25GaWxlKGpvaW4oY29tbWFuZERpciwgYCR7Y29tbWFuZC5pZH0uanNvbmApLCBjb21tYW5kKTtcbiAgICAgIHJldHVybiBjb21tYW5kO1xuICAgIH0sXG5cbiAgICBcImNvbW1hbmQubGlzdFwiOiBhc3luYyAoeyBzZXNzaW9uSWQsIGluY2x1ZGVGaW5pc2hlZCwgY3Vyc29yLCBsaW1pdCB9KSA9PiB7XG4gICAgICBjb25zdCBhbGxDb21tYW5kcyA9IGF3YWl0IHJlYWRBbGxGcm9tRGlyPENvbW1hbmQ+KGNvbW1hbmREaXIpO1xuICAgICAgbGV0IGZpbHRlcmVkID0gYWxsQ29tbWFuZHMuZmlsdGVyKChjKSA9PiBjLnNlc3Npb25JZCA9PT0gc2Vzc2lvbklkKTtcbiAgICAgIGlmICghaW5jbHVkZUZpbmlzaGVkKSB7XG4gICAgICAgIGZpbHRlcmVkID0gZmlsdGVyZWQuZmlsdGVyKChjKSA9PiBjLnN0YXR1cyA9PT0gXCJydW5uaW5nXCIpO1xuICAgICAgfVxuICAgICAgZmlsdGVyZWQuc29ydCgoYSwgYikgPT4gYS5zdGFydGVkQXQgLSBiLnN0YXJ0ZWRBdCk7XG4gICAgICByZXR1cm4gcGFnaW5hdGUoeyBpdGVtczogZmlsdGVyZWQsIGN1cnNvciwgbGltaXQgfSk7XG4gICAgfSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IExpc3RSZXN1bHQgfSBmcm9tIFwiLi4vc3RvcmFnZVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFnaW5hdGU8VCBleHRlbmRzIHsgaWQ6IHN0cmluZyB9PihvcHRzOiB7XG4gIGl0ZW1zOiBUW107XG4gIGN1cnNvcj86IHN0cmluZztcbiAgbGltaXQ/OiBudW1iZXI7XG59KTogTGlzdFJlc3VsdDxUPiB7XG4gIGNvbnN0IHsgaXRlbXMsIGN1cnNvciwgbGltaXQgfSA9IG9wdHM7XG4gIGNvbnN0IHN0YXJ0SW5kZXggPSBjdXJzb3IgPyBpdGVtcy5maW5kSW5kZXgoKG0pID0+IG0uaWQgPT09IGN1cnNvcikgKyAxIDogMDtcbiAgY29uc3Qgc2xpY2VkID1cbiAgICBsaW1pdCAhPT0gdW5kZWZpbmVkXG4gICAgICA/IGl0ZW1zLnNsaWNlKHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyBsaW1pdClcbiAgICAgIDogaXRlbXMuc2xpY2Uoc3RhcnRJbmRleCk7XG4gIGNvbnN0IG5leHRDdXJzb3IgPVxuICAgIGxpbWl0ICE9PSB1bmRlZmluZWQgJiYgc3RhcnRJbmRleCArIGxpbWl0IDwgaXRlbXMubGVuZ3RoXG4gICAgICA/IChzbGljZWQuYXQoLTEpPy5pZCA/PyBudWxsKVxuICAgICAgOiBudWxsO1xuICByZXR1cm4geyBpdGVtczogc2xpY2VkLCBuZXh0Q3Vyc29yIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7QUFBQSxTQUFTLE9BQU8sU0FBUyxVQUFVLFFBQVEsaUJBQWlCO0FBQzVELFNBQVMsU0FBUyxNQUFNLGVBQWU7OztBQ0NoQyxTQUFTLFNBQW1DLE1BSWpDO0FBQ2hCLFFBQU0sRUFBRSxPQUFPLFFBQVEsTUFBTSxJQUFJO0FBQ2pDLFFBQU0sYUFBYSxTQUFTLE1BQU0sVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLE1BQU0sSUFBSSxJQUFJO0FBQzFFLFFBQU0sU0FDSixVQUFVLFNBQ04sTUFBTSxNQUFNLFlBQVksYUFBYSxLQUFLLElBQzFDLE1BQU0sTUFBTSxVQUFVO0FBQzVCLFFBQU0sYUFDSixVQUFVLFVBQWEsYUFBYSxRQUFRLE1BQU0sU0FDN0MsT0FBTyxHQUFHLEVBQUUsR0FBRyxNQUFNLE9BQ3RCO0FBQ04sU0FBTyxFQUFFLE9BQU8sUUFBUSxXQUFXO0FBQ3JDOzs7QUROTyxTQUFTLHlCQUF5QixVQUE0QjtBQUNuRSxRQUFNLGVBQWUsUUFBUSxRQUFRO0FBQ3JDLFFBQU0sYUFBYSxLQUFLLGNBQWMsU0FBUztBQUMvQyxRQUFNLGFBQWEsS0FBSyxjQUFjLFNBQVM7QUFDL0MsUUFBTSxVQUFVLEtBQUssY0FBYyxNQUFNO0FBQ3pDLFFBQU0sYUFBYSxLQUFLLGNBQWMsU0FBUztBQUMvQyxRQUFNLGFBQWEsS0FBSyxjQUFjLFNBQVM7QUFFL0MsaUJBQWUsVUFBVSxLQUFhO0FBQ3BDLFVBQU0sTUFBTSxLQUFLLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFBQSxFQUN0QztBQUVBLGlCQUFlLFNBQVksVUFBcUM7QUFDOUQsUUFBSTtBQUNGLFlBQU0sVUFBVSxNQUFNLFNBQVMsVUFBVSxPQUFPO0FBQ2hELGFBQU8sS0FBSyxNQUFNLE9BQU87QUFBQSxJQUMzQixRQUFRO0FBQ04sYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsaUJBQWUs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
@@ -1,20 +0,0 @@
1
- import "./chunk-3ODWQVIA.mjs";
2
-
3
- // src/storage/bindings/vercel.ts
4
- var VERCEL_STORAGE_URL = "https://agent-sdk-storage-nine.labs.vercel.dev/api/storage";
5
- async function getVercelStorageConfig() {
6
- let token = null;
7
- try {
8
- const { getVercelOidcToken } = await import("@vercel/oidc");
9
- token = await getVercelOidcToken();
10
- } catch {
11
- }
12
- return {
13
- url: VERCEL_STORAGE_URL,
14
- headers: token ? { Authorization: `Bearer ${token}` } : {}
15
- };
16
- }
17
- export {
18
- getVercelStorageConfig
19
- };
20
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3N0b3JhZ2UvYmluZGluZ3MvdmVyY2VsLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBWRVJDRUxfU1RPUkFHRV9VUkwgPVxuICBcImh0dHBzOi8vYWdlbnQtc2RrLXN0b3JhZ2UtbmluZS5sYWJzLnZlcmNlbC5kZXYvYXBpL3N0b3JhZ2VcIjtcblxuZXhwb3J0IHR5cGUgVmVyY2VsU3RvcmFnZUNvbmZpZyA9IHtcbiAgdXJsOiBzdHJpbmc7XG4gIGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VmVyY2VsU3RvcmFnZUNvbmZpZygpOiBQcm9taXNlPFZlcmNlbFN0b3JhZ2VDb25maWc+IHtcbiAgbGV0IHRva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICB0cnkge1xuICAgIGNvbnN0IHsgZ2V0VmVyY2VsT2lkY1Rva2VuIH0gPSBhd2FpdCBpbXBvcnQoXCJAdmVyY2VsL29pZGNcIik7XG4gICAgdG9rZW4gPSBhd2FpdCBnZXRWZXJjZWxPaWRjVG9rZW4oKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gT0lEQyBub3QgYXZhaWxhYmxlIChsb2NhbCBkZXYsIG5vbi1WZXJjZWwgZW52aXJvbm1lbnQpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHVybDogVkVSQ0VMX1NUT1JBR0VfVVJMLFxuICAgIGhlYWRlcnM6IHRva2VuID8geyBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCB9IDoge30sXG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7QUFBQSxJQUFNLHFCQUNKO0FBT0YsZUFBc0IseUJBQXVEO0FBQzNFLE1BQUksUUFBdUI7QUFFM0IsTUFBSTtBQUNGLFVBQU0sRUFBRSxtQkFBbUIsSUFBSSxNQUFNLE9BQU8sY0FBYztBQUMxRCxZQUFRLE1BQU0sbUJBQW1CO0FBQUEsRUFDbkMsUUFBUTtBQUFBLEVBRVI7QUFFQSxTQUFPO0FBQUEsSUFDTCxLQUFLO0FBQUEsSUFDTCxTQUFTLFFBQVEsRUFBRSxlQUFlLFVBQVUsS0FBSyxHQUFHLElBQUksQ0FBQztBQUFBLEVBQzNEO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==