experimental-agent 0.0.2 → 0.0.3
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.
- package/README.md +13 -2
- package/dist/agent-workflow.d.mts +11 -3
- package/dist/agent-workflow.d.ts +11 -3
- package/dist/agent-workflow.js +1921 -1144
- package/dist/agent-workflow.mjs +7 -3
- package/dist/chunk-3ODWQVIA.mjs +12 -0
- package/dist/chunk-64THY7Y7.mjs +155 -0
- package/dist/chunk-GSRJYPWF.mjs +284 -0
- package/dist/chunk-HJGPUEFC.mjs +42 -0
- package/dist/chunk-JEE2FQ4O.mjs +844 -0
- package/dist/chunk-TQRCSTCF.mjs +103 -0
- package/dist/chunk-UFVWOC5L.mjs +79 -0
- package/dist/chunk-VBLZWXVE.mjs +318 -0
- package/dist/chunk-ZASQBPOI.mjs +2057 -0
- package/dist/{types-DPXFq_r6.d.ts → client-BlSrVoPI.d.mts} +868 -31
- package/dist/{types-DPXFq_r6.d.mts → client-BlSrVoPI.d.ts} +868 -31
- package/dist/client-SREKHM6I.mjs +15 -0
- package/dist/client.d.mts +37 -0
- package/dist/client.d.ts +37 -0
- package/dist/client.js +58 -0
- package/dist/client.mjs +30 -0
- package/dist/{client-HUG4HT5L.mjs → handler-36FM5H35.mjs} +4 -5
- package/dist/index.d.mts +3 -4
- package/dist/index.d.ts +3 -4
- package/dist/index.js +3102 -1438
- package/dist/index.mjs +720 -147
- package/dist/lifecycle-workflow.d.mts +3 -10
- package/dist/lifecycle-workflow.d.ts +3 -10
- package/dist/lifecycle-workflow.js +170 -1246
- package/dist/lifecycle-workflow.mjs +5 -41
- package/dist/local-fs-handlers-P4WGW3QY.mjs +235 -0
- package/dist/next/loader.d.mts +14 -0
- package/dist/next/loader.d.ts +14 -0
- package/dist/next/loader.js +206 -0
- package/dist/next/loader.mjs +103 -0
- package/dist/next.d.mts +34 -0
- package/dist/next.d.ts +34 -0
- package/dist/next.js +329 -0
- package/dist/next.mjs +224 -0
- package/dist/process-manager-JAKAXROL.mjs +10 -0
- package/dist/{client-4Y3UPWFR.mjs → sandbox-QAPGBVYM.mjs} +4 -3
- package/dist/storage-Q376OZH3.mjs +20 -0
- package/dist/{vercel-2CFDMEHB.mjs → vercel-LLXAHKVJ.mjs} +3 -1
- package/dist/vercel-sdk-VHKEX2GQ.mjs +8 -0
- package/package.json +32 -19
- package/dist/chunk-24DJSI7C.mjs +0 -374
- package/dist/chunk-4RGMKC2M.mjs +0 -755
- package/dist/chunk-6ICYKNCC.mjs +0 -284
- package/dist/chunk-PGYYQ3WZ.mjs +0 -1088
- package/dist/client-BBpD9kKL.d.ts +0 -193
- package/dist/client-BGJViybU.d.mts +0 -193
- package/dist/lifecycle-workflow-steps-HHN46ZAD.mjs +0 -20
- package/dist/local-BYPFRMLZ.mjs +0 -282
- package/dist/process-manager-H2HF6G4G.mjs +0 -153
- package/dist/sandbox-BFA4ECEQ.mjs +0 -10
- package/dist/storage-2U2QFNWI.mjs +0 -27
- /package/dist/{chunk-36X6L7SK.mjs → chunk-TAXLUVIC.mjs} +0 -0
package/dist/chunk-6ICYKNCC.mjs
DELETED
|
@@ -1,284 +0,0 @@
|
|
|
1
|
-
// src/storage/rpc.ts
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
var VercelLifecycleConfigSchema = z.object({
|
|
4
|
-
stopAfterInactiveMs: z.number().optional(),
|
|
5
|
-
snapshotBeforeTimeoutMs: z.number().optional(),
|
|
6
|
-
snapshotId: z.string().optional(),
|
|
7
|
-
autoStart: z.boolean().optional()
|
|
8
|
-
});
|
|
9
|
-
var SandboxConfigSchema = z.discriminatedUnion("type", [
|
|
10
|
-
z.object({
|
|
11
|
-
type: z.literal("vercel"),
|
|
12
|
-
resources: z.object({ vcpus: z.number() }).optional(),
|
|
13
|
-
ports: z.array(z.number()).optional(),
|
|
14
|
-
lifecycle: VercelLifecycleConfigSchema.optional()
|
|
15
|
-
}),
|
|
16
|
-
z.object({
|
|
17
|
-
type: z.literal("local"),
|
|
18
|
-
path: z.string().optional()
|
|
19
|
-
}),
|
|
20
|
-
z.object({
|
|
21
|
-
type: z.literal("custom"),
|
|
22
|
-
url: z.string(),
|
|
23
|
-
headers: z.record(z.string(), z.string()).optional()
|
|
24
|
-
})
|
|
25
|
-
]);
|
|
26
|
-
var SessionSchema = z.object({
|
|
27
|
-
id: z.string(),
|
|
28
|
-
createdAt: z.number(),
|
|
29
|
-
updatedAt: z.number(),
|
|
30
|
-
runId: z.string().nullable(),
|
|
31
|
-
lastMessageId: z.string().nullable(),
|
|
32
|
-
tags: z.record(z.string(), z.unknown()).nullable(),
|
|
33
|
-
instructions: z.string().nullable(),
|
|
34
|
-
model: z.string().nullable(),
|
|
35
|
-
mcp: z.unknown().nullable(),
|
|
36
|
-
// TODO
|
|
37
|
-
sandboxId: z.string().nullable(),
|
|
38
|
-
skillsDir: z.array(z.string()).nullable(),
|
|
39
|
-
hookToken: z.string().nullable()
|
|
40
|
-
});
|
|
41
|
-
var MessageSchema = z.object({
|
|
42
|
-
id: z.string(),
|
|
43
|
-
sessionId: z.string(),
|
|
44
|
-
role: z.enum(["user", "assistant", "system"]),
|
|
45
|
-
createdAt: z.number(),
|
|
46
|
-
completedAt: z.number().nullable(),
|
|
47
|
-
interruptedAt: z.number().nullable(),
|
|
48
|
-
mcpContext: z.unknown().nullable()
|
|
49
|
-
});
|
|
50
|
-
var PartSchema = z.object({
|
|
51
|
-
id: z.string(),
|
|
52
|
-
messageId: z.string(),
|
|
53
|
-
sessionId: z.string(),
|
|
54
|
-
index: z.number(),
|
|
55
|
-
part: z.unknown()
|
|
56
|
-
});
|
|
57
|
-
var CommandResultSchema = z.object({
|
|
58
|
-
stdout: z.string(),
|
|
59
|
-
stderr: z.string(),
|
|
60
|
-
exitCode: z.number(),
|
|
61
|
-
completedAt: z.number()
|
|
62
|
-
});
|
|
63
|
-
var SandboxRecordSchema = z.object({
|
|
64
|
-
id: z.string(),
|
|
65
|
-
config: SandboxConfigSchema,
|
|
66
|
-
tags: z.record(z.string(), z.unknown()).nullable(),
|
|
67
|
-
createdAt: z.number().nullable(),
|
|
68
|
-
lastActivityAt: z.number().nullable(),
|
|
69
|
-
acquiringLockId: z.string().nullable(),
|
|
70
|
-
acquiringLockAt: z.number().nullable(),
|
|
71
|
-
providerMetadata: z.discriminatedUnion("provider", [
|
|
72
|
-
z.object({
|
|
73
|
-
provider: z.literal("vercel"),
|
|
74
|
-
sandboxId: z.string().nullable(),
|
|
75
|
-
snapshotId: z.string().nullable()
|
|
76
|
-
})
|
|
77
|
-
]).optional()
|
|
78
|
-
});
|
|
79
|
-
var CommandBaseSchema = z.object({
|
|
80
|
-
id: z.string(),
|
|
81
|
-
sessionId: z.string(),
|
|
82
|
-
command: z.string(),
|
|
83
|
-
args: z.array(z.string()).optional(),
|
|
84
|
-
startedAt: z.number()
|
|
85
|
-
});
|
|
86
|
-
var CommandSchema = z.discriminatedUnion("status", [
|
|
87
|
-
CommandBaseSchema.extend({ status: z.literal("running") }),
|
|
88
|
-
CommandBaseSchema.extend({
|
|
89
|
-
status: z.literal("completed"),
|
|
90
|
-
result: CommandResultSchema
|
|
91
|
-
}),
|
|
92
|
-
CommandBaseSchema.extend({
|
|
93
|
-
status: z.literal("killed"),
|
|
94
|
-
result: CommandResultSchema.optional()
|
|
95
|
-
}),
|
|
96
|
-
CommandBaseSchema.extend({
|
|
97
|
-
status: z.literal("failed"),
|
|
98
|
-
result: CommandResultSchema
|
|
99
|
-
})
|
|
100
|
-
]);
|
|
101
|
-
function ListResultSchema(itemSchema) {
|
|
102
|
-
return z.object({
|
|
103
|
-
items: z.array(itemSchema),
|
|
104
|
-
nextCursor: z.string().nullable()
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
var methods = {
|
|
108
|
-
"session.get": {
|
|
109
|
-
params: z.object({ id: z.string() }),
|
|
110
|
-
result: SessionSchema.nullable()
|
|
111
|
-
},
|
|
112
|
-
"session.set": {
|
|
113
|
-
params: SessionSchema,
|
|
114
|
-
result: SessionSchema
|
|
115
|
-
},
|
|
116
|
-
"session.list": {
|
|
117
|
-
params: z.object({
|
|
118
|
-
tags: z.record(z.string(), z.unknown()).optional(),
|
|
119
|
-
order: z.enum([
|
|
120
|
-
"createdAt_asc",
|
|
121
|
-
"createdAt_desc",
|
|
122
|
-
"updatedAt_asc",
|
|
123
|
-
"updatedAt_desc"
|
|
124
|
-
]).optional(),
|
|
125
|
-
cursor: z.string().optional(),
|
|
126
|
-
limit: z.number().optional()
|
|
127
|
-
}),
|
|
128
|
-
result: ListResultSchema(SessionSchema)
|
|
129
|
-
},
|
|
130
|
-
"session.listBySandbox": {
|
|
131
|
-
params: z.object({
|
|
132
|
-
sandboxId: z.string(),
|
|
133
|
-
tags: z.record(z.string(), z.unknown()).optional(),
|
|
134
|
-
order: z.enum([
|
|
135
|
-
"createdAt_asc",
|
|
136
|
-
"createdAt_desc",
|
|
137
|
-
"updatedAt_asc",
|
|
138
|
-
"updatedAt_desc"
|
|
139
|
-
]).optional(),
|
|
140
|
-
cursor: z.string().optional(),
|
|
141
|
-
limit: z.number().optional()
|
|
142
|
-
}),
|
|
143
|
-
result: ListResultSchema(SessionSchema)
|
|
144
|
-
},
|
|
145
|
-
"session.tag.set": {
|
|
146
|
-
params: z.object({
|
|
147
|
-
sessionId: z.string(),
|
|
148
|
-
tags: z.record(z.string(), z.unknown())
|
|
149
|
-
}),
|
|
150
|
-
result: SessionSchema
|
|
151
|
-
},
|
|
152
|
-
"message.get": {
|
|
153
|
-
params: z.object({ id: z.string() }),
|
|
154
|
-
result: MessageSchema.nullable()
|
|
155
|
-
},
|
|
156
|
-
"message.set": {
|
|
157
|
-
params: MessageSchema,
|
|
158
|
-
result: MessageSchema
|
|
159
|
-
},
|
|
160
|
-
"message.list": {
|
|
161
|
-
params: z.object({
|
|
162
|
-
sessionId: z.string(),
|
|
163
|
-
cursor: z.string().optional(),
|
|
164
|
-
limit: z.number().optional()
|
|
165
|
-
}),
|
|
166
|
-
result: ListResultSchema(MessageSchema)
|
|
167
|
-
},
|
|
168
|
-
"part.listByMessage": {
|
|
169
|
-
params: z.object({
|
|
170
|
-
messageId: z.string(),
|
|
171
|
-
cursor: z.string().optional(),
|
|
172
|
-
limit: z.number().optional()
|
|
173
|
-
}),
|
|
174
|
-
result: ListResultSchema(PartSchema)
|
|
175
|
-
},
|
|
176
|
-
"part.listBySession": {
|
|
177
|
-
params: z.object({
|
|
178
|
-
sessionId: z.string(),
|
|
179
|
-
cursor: z.string().optional(),
|
|
180
|
-
limit: z.number().optional()
|
|
181
|
-
}),
|
|
182
|
-
result: ListResultSchema(PartSchema)
|
|
183
|
-
},
|
|
184
|
-
"part.set": {
|
|
185
|
-
params: PartSchema,
|
|
186
|
-
result: PartSchema
|
|
187
|
-
},
|
|
188
|
-
"sandbox.get": {
|
|
189
|
-
params: z.object({ key: z.string() }),
|
|
190
|
-
result: SandboxRecordSchema.nullable()
|
|
191
|
-
},
|
|
192
|
-
"sandbox.getBySession": {
|
|
193
|
-
params: z.object({ sessionId: z.string() }),
|
|
194
|
-
result: SandboxRecordSchema.nullable()
|
|
195
|
-
},
|
|
196
|
-
"sandbox.set": {
|
|
197
|
-
params: SandboxRecordSchema,
|
|
198
|
-
result: z.void()
|
|
199
|
-
},
|
|
200
|
-
"sandbox.list": {
|
|
201
|
-
params: z.object({
|
|
202
|
-
tags: z.record(z.string(), z.unknown()).optional(),
|
|
203
|
-
order: z.enum([
|
|
204
|
-
"createdAt_asc",
|
|
205
|
-
"createdAt_desc",
|
|
206
|
-
"lastActivityAt_asc",
|
|
207
|
-
"lastActivityAt_desc"
|
|
208
|
-
]).optional(),
|
|
209
|
-
cursor: z.string().optional(),
|
|
210
|
-
limit: z.number().optional()
|
|
211
|
-
}),
|
|
212
|
-
result: ListResultSchema(SandboxRecordSchema)
|
|
213
|
-
},
|
|
214
|
-
"sandbox.tag.set": {
|
|
215
|
-
params: z.object({
|
|
216
|
-
sandboxId: z.string(),
|
|
217
|
-
tags: z.record(z.string(), z.unknown())
|
|
218
|
-
}),
|
|
219
|
-
result: SandboxRecordSchema
|
|
220
|
-
},
|
|
221
|
-
"command.get": {
|
|
222
|
-
params: z.object({ id: z.string() }),
|
|
223
|
-
result: CommandSchema.nullable()
|
|
224
|
-
},
|
|
225
|
-
"command.set": {
|
|
226
|
-
params: CommandSchema,
|
|
227
|
-
result: CommandSchema
|
|
228
|
-
},
|
|
229
|
-
"command.list": {
|
|
230
|
-
params: z.object({
|
|
231
|
-
sessionId: z.string(),
|
|
232
|
-
includeFinished: z.boolean().optional(),
|
|
233
|
-
cursor: z.string().optional(),
|
|
234
|
-
limit: z.number().optional()
|
|
235
|
-
}),
|
|
236
|
-
result: ListResultSchema(CommandSchema)
|
|
237
|
-
}
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
// src/storage/handler.ts
|
|
241
|
-
async function handleStorageRpc(body, handlers) {
|
|
242
|
-
const { method, params } = body;
|
|
243
|
-
if (!(method in methods)) {
|
|
244
|
-
return {
|
|
245
|
-
error: { code: "METHOD_NOT_FOUND", message: `Unknown method: ${method}` }
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
const methodName = method;
|
|
249
|
-
const schema = methods[methodName].params;
|
|
250
|
-
const parsed = schema.safeParse(params);
|
|
251
|
-
if (!parsed.success) {
|
|
252
|
-
return {
|
|
253
|
-
error: {
|
|
254
|
-
code: "INVALID_PARAMS",
|
|
255
|
-
message: parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join(", ")
|
|
256
|
-
}
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
try {
|
|
260
|
-
const handler = handlers[methodName];
|
|
261
|
-
const result = await handler(parsed.data);
|
|
262
|
-
return { result };
|
|
263
|
-
} catch (e) {
|
|
264
|
-
return {
|
|
265
|
-
error: {
|
|
266
|
-
code: "INTERNAL_ERROR",
|
|
267
|
-
message: e instanceof Error ? e.message : String(e)
|
|
268
|
-
}
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
export {
|
|
274
|
-
SandboxConfigSchema,
|
|
275
|
-
SessionSchema,
|
|
276
|
-
MessageSchema,
|
|
277
|
-
PartSchema,
|
|
278
|
-
CommandResultSchema,
|
|
279
|
-
SandboxRecordSchema,
|
|
280
|
-
CommandSchema,
|
|
281
|
-
methods,
|
|
282
|
-
handleStorageRpc
|
|
283
|
-
};
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3N0b3JhZ2UvcnBjLnRzIiwgIi4uL3NyYy9zdG9yYWdlL2hhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IFZlcmNlbExpZmVjeWNsZUNvbmZpZ1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3RvcEFmdGVySW5hY3RpdmVNczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBzbmFwc2hvdEJlZm9yZVRpbWVvdXRNczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBzbmFwc2hvdElkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGF1dG9TdGFydDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgU2FuZGJveENvbmZpZ1NjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gIHoub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJ2ZXJjZWxcIiksXG4gICAgcmVzb3VyY2VzOiB6Lm9iamVjdCh7IHZjcHVzOiB6Lm51bWJlcigpIH0pLm9wdGlvbmFsKCksXG4gICAgcG9ydHM6IHouYXJyYXkoei5udW1iZXIoKSkub3B0aW9uYWwoKSxcbiAgICBsaWZlY3ljbGU6IFZlcmNlbExpZmVjeWNsZUNvbmZpZ1NjaGVtYS5vcHRpb25hbCgpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcImxvY2FsXCIpLFxuICAgIHBhdGg6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIHoub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJjdXN0b21cIiksXG4gICAgdXJsOiB6LnN0cmluZygpLFxuICAgIGhlYWRlcnM6IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIH0pLFxuXSk7XG5cbmV4cG9ydCB0eXBlIFNhbmRib3hDb25maWcgPSB6LmluZmVyPHR5cGVvZiBTYW5kYm94Q29uZmlnU2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IFNlc3Npb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LnN0cmluZygpLFxuICBjcmVhdGVkQXQ6IHoubnVtYmVyKCksXG4gIHVwZGF0ZWRBdDogei5udW1iZXIoKSxcbiAgcnVuSWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgbGFzdE1lc3NhZ2VJZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICB0YWdzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkubnVsbGFibGUoKSxcbiAgaW5zdHJ1Y3Rpb25zOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIG1vZGVsOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIG1jcDogei51bmtub3duKCkubnVsbGFibGUoKSwgLy8gVE9ET1xuICBzYW5kYm94SWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgc2tpbGxzRGlyOiB6LmFycmF5KHouc3RyaW5nKCkpLm51bGxhYmxlKCksXG4gIGhvb2tUb2tlbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBNZXNzYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZDogei5zdHJpbmcoKSxcbiAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICByb2xlOiB6LmVudW0oW1widXNlclwiLCBcImFzc2lzdGFudFwiLCBcInN5c3RlbVwiXSksXG4gIGNyZWF0ZWRBdDogei5udW1iZXIoKSxcbiAgY29tcGxldGVkQXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgaW50ZXJydXB0ZWRBdDogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICBtY3BDb250ZXh0OiB6LnVua25vd24oKS5udWxsYWJsZSgpLFxufSk7XG5cbi8qKlxuICogVGhlIGBwYXJ0YCBmaWVsZCBjb3JyZXNwb25kcyB0byBgVUlNZXNzYWdlW1wicGFydHNcIl1bbnVtYmVyXWAgZnJvbSB0aGUgYGFpYCBwYWNrYWdlLlxuICogV2UgdXNlIGB6LnVua25vd24oKWAgYmVjYXVzZSB0aGUgZXhhY3Qgc2hhcGUgdmFyaWVzIGJ5IHBhcnQgdHlwZSAodGV4dCwgdG9vbC1jYWxsLFxuICogdG9vbC1yZXN1bHQsIGV0Yy4pIGFuZCBtYXkgZXZvbHZlIHdpdGggdGhlIEFJIFNESy4gVGhlIFJQQyBsYXllciBqdXN0IHBhc3NlcyBpdCB0aHJvdWdoLlxuICovXG5leHBvcnQgY29uc3QgUGFydFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouc3RyaW5nKCksXG4gIG1lc3NhZ2VJZDogei5zdHJpbmcoKSxcbiAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICBpbmRleDogei5udW1iZXIoKSxcbiAgcGFydDogei51bmtub3duKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IENvbW1hbmRSZXN1bHRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHN0ZG91dDogei5zdHJpbmcoKSxcbiAgc3RkZXJyOiB6LnN0cmluZygpLFxuICBleGl0Q29kZTogei5udW1iZXIoKSxcbiAgY29tcGxldGVkQXQ6IHoubnVtYmVyKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IFNhbmRib3hSZWNvcmRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LnN0cmluZygpLFxuICBjb25maWc6IFNhbmRib3hDb25maWdTY2hlbWEsXG4gIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5udWxsYWJsZSgpLFxuICBjcmVhdGVkQXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgbGFzdEFjdGl2aXR5QXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgYWNxdWlyaW5nTG9ja0lkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGFjcXVpcmluZ0xvY2tBdDogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICBwcm92aWRlck1ldGFkYXRhOiB6XG4gICAgLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByb3ZpZGVyXCIsIFtcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcHJvdmlkZXI6IHoubGl0ZXJhbChcInZlcmNlbFwiKSxcbiAgICAgICAgc2FuZGJveElkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgICAgIHNuYXBzaG90SWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgIH0pLFxuICAgIF0pXG4gICAgLm9wdGlvbmFsKCksXG59KTtcblxuY29uc3QgQ29tbWFuZEJhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LnN0cmluZygpLFxuICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gIGNvbW1hbmQ6IHouc3RyaW5nKCksXG4gIGFyZ3M6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgc3RhcnRlZEF0OiB6Lm51bWJlcigpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBDb21tYW5kU2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJzdGF0dXNcIiwgW1xuICBDb21tYW5kQmFzZVNjaGVtYS5leHRlbmQoeyBzdGF0dXM6IHoubGl0ZXJhbChcInJ1bm5pbmdcIikgfSksXG4gIENvbW1hbmRCYXNlU2NoZW1hLmV4dGVuZCh7XG4gICAgc3RhdHVzOiB6LmxpdGVyYWwoXCJjb21wbGV0ZWRcIiksXG4gICAgcmVzdWx0OiBDb21tYW5kUmVzdWx0U2NoZW1hLFxuICB9KSxcbiAgQ29tbWFuZEJhc2VTY2hlbWEuZXh0ZW5kKHtcbiAgICBzdGF0dXM6IHoubGl0ZXJhbChcImtpbGxlZFwiKSxcbiAgICByZXN1bHQ6IENvbW1hbmRSZXN1bHRTY2hlbWEub3B0aW9uYWwoKSxcbiAgfSksXG4gIENvbW1hbmRCYXNlU2NoZW1hLmV4dGVuZCh7XG4gICAgc3RhdHVzOiB6LmxpdGVyYWwoXCJmYWlsZWRcIiksXG4gICAgcmVzdWx0OiBDb21tYW5kUmVzdWx0U2NoZW1hLFxuICB9KSxcbl0pO1xuXG5mdW5jdGlvbiBMaXN0UmVzdWx0U2NoZW1hPFQgZXh0ZW5kcyB6LlpvZFR5cGVBbnk+KGl0ZW1TY2hlbWE6IFQpIHtcbiAgcmV0dXJuIHoub2JqZWN0KHtcbiAgICBpdGVtczogei5hcnJheShpdGVtU2NoZW1hKSxcbiAgICBuZXh0Q3Vyc29yOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgbWV0aG9kcyA9IHtcbiAgXCJzZXNzaW9uLmdldFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IGlkOiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogU2Vzc2lvblNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcInNlc3Npb24uc2V0XCI6IHtcbiAgICBwYXJhbXM6IFNlc3Npb25TY2hlbWEsXG4gICAgcmVzdWx0OiBTZXNzaW9uU2NoZW1hLFxuICB9LFxuICBcInNlc3Npb24ubGlzdFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICB0YWdzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkub3B0aW9uYWwoKSxcbiAgICAgIG9yZGVyOiB6XG4gICAgICAgIC5lbnVtKFtcbiAgICAgICAgICBcImNyZWF0ZWRBdF9hc2NcIixcbiAgICAgICAgICBcImNyZWF0ZWRBdF9kZXNjXCIsXG4gICAgICAgICAgXCJ1cGRhdGVkQXRfYXNjXCIsXG4gICAgICAgICAgXCJ1cGRhdGVkQXRfZGVzY1wiLFxuICAgICAgICBdKVxuICAgICAgICAub3B0aW9uYWwoKSxcbiAgICAgIGN1cnNvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbGltaXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IExpc3RSZXN1bHRTY2hlbWEoU2Vzc2lvblNjaGVtYSksXG4gIH0sXG4gIFwic2Vzc2lvbi5saXN0QnlTYW5kYm94XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHNhbmRib3hJZDogei5zdHJpbmcoKSxcbiAgICAgIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICAgICAgb3JkZXI6IHpcbiAgICAgICAgLmVudW0oW1xuICAgICAgICAgIFwiY3JlYXRlZEF0X2FzY1wiLFxuICAgICAgICAgIFwiY3JlYXRlZEF0X2Rlc2NcIixcbiAgICAgICAgICBcInVwZGF0ZWRBdF9hc2NcIixcbiAgICAgICAgICBcInVwZGF0ZWRBdF9kZXNjXCIsXG4gICAgICAgIF0pXG4gICAgICAgIC5vcHRpb25hbCgpLFxuICAgICAgY3Vyc29yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBsaW1pdDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogTGlzdFJlc3VsdFNjaGVtYShTZXNzaW9uU2NoZW1hKSxcbiAgfSxcbiAgXCJzZXNzaW9uLnRhZy5zZXRcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICAgICAgdGFnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogU2Vzc2lvblNjaGVtYSxcbiAgfSxcbiAgXCJtZXNzYWdlLmdldFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IGlkOiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogTWVzc2FnZVNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcIm1lc3NhZ2Uuc2V0XCI6IHtcbiAgICBwYXJhbXM6IE1lc3NhZ2VTY2hlbWEsXG4gICAgcmVzdWx0OiBNZXNzYWdlU2NoZW1hLFxuICB9LFxuICBcIm1lc3NhZ2UubGlzdFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKE1lc3NhZ2VTY2hlbWEpLFxuICB9LFxuICBcInBhcnQubGlzdEJ5TWVzc2FnZVwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBtZXNzYWdlSWQ6IHouc3RyaW5nKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKFBhcnRTY2hlbWEpLFxuICB9LFxuICBcInBhcnQubGlzdEJ5U2Vzc2lvblwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKFBhcnRTY2hlbWEpLFxuICB9LFxuICBcInBhcnQuc2V0XCI6IHtcbiAgICBwYXJhbXM6IFBhcnRTY2hlbWEsXG4gICAgcmVzdWx0OiBQYXJ0U2NoZW1hLFxuICB9LFxuICBcInNhbmRib3guZ2V0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHsga2V5OiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogU2FuZGJveFJlY29yZFNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcInNhbmRib3guZ2V0QnlTZXNzaW9uXCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHsgc2Vzc2lvbklkOiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogU2FuZGJveFJlY29yZFNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcInNhbmRib3guc2V0XCI6IHtcbiAgICBwYXJhbXM6IFNhbmRib3hSZWNvcmRTY2hlbWEsXG4gICAgcmVzdWx0OiB6LnZvaWQoKSxcbiAgfSxcbiAgXCJzYW5kYm94Lmxpc3RcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgdGFnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLm9wdGlvbmFsKCksXG4gICAgICBvcmRlcjogelxuICAgICAgICAuZW51bShbXG4gICAgICAgICAgXCJjcmVhdGVkQXRfYXNjXCIsXG4gICAgICAgICAgXCJjcmVhdGVkQXRfZGVzY1wiLFxuICAgICAgICAgIFwibGFzdEFjdGl2aXR5QXRfYXNjXCIsXG4gICAgICAgICAgXCJsYXN0QWN0aXZpdHlBdF9kZXNjXCIsXG4gICAgICAgIF0pXG4gICAgICAgIC5vcHRpb25hbCgpLFxuICAgICAgY3Vyc29yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBsaW1pdDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogTGlzdFJlc3VsdFNjaGVtYShTYW5kYm94UmVjb3JkU2NoZW1hKSxcbiAgfSxcbiAgXCJzYW5kYm94LnRhZy5zZXRcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgc2FuZGJveElkOiB6LnN0cmluZygpLFxuICAgICAgdGFnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogU2FuZGJveFJlY29yZFNjaGVtYSxcbiAgfSxcbiAgXCJjb21tYW5kLmdldFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IGlkOiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogQ29tbWFuZFNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcImNvbW1hbmQuc2V0XCI6IHtcbiAgICBwYXJhbXM6IENvbW1hbmRTY2hlbWEsXG4gICAgcmVzdWx0OiBDb21tYW5kU2NoZW1hLFxuICB9LFxuICBcImNvbW1hbmQubGlzdFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gICAgICBpbmNsdWRlRmluaXNoZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKENvbW1hbmRTY2hlbWEpLFxuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU3RvcmFnZU1ldGhvZHMgPSB0eXBlb2YgbWV0aG9kcztcbmV4cG9ydCB0eXBlIE1ldGhvZE5hbWUgPSBrZXlvZiBTdG9yYWdlTWV0aG9kcztcbiIsICJpbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyB0eXBlIE1ldGhvZE5hbWUsIG1ldGhvZHMsIHR5cGUgU3RvcmFnZU1ldGhvZHMgfSBmcm9tIFwiLi9ycGNcIjtcblxuZXhwb3J0IHR5cGUgSGFuZGxlcnMgPSB7XG4gIFtLIGluIE1ldGhvZE5hbWVdOiAoXG4gICAgcGFyYW1zOiB6LmluZmVyPFN0b3JhZ2VNZXRob2RzW0tdW1wicGFyYW1zXCJdPlxuICApID0+IFByb21pc2U8ei5pbmZlcjxTdG9yYWdlTWV0aG9kc1tLXVtcInJlc3VsdFwiXT4+O1xufTtcblxuZXhwb3J0IHR5cGUgUnBjUmVxdWVzdCA9IHtcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHBhcmFtczogdW5rbm93bjtcbn07XG5cbmV4cG9ydCB0eXBlIFJwY1N1Y2Nlc3NSZXNwb25zZTxUID0gdW5rbm93bj4gPSB7XG4gIHJlc3VsdDogVDtcbn07XG5cbmV4cG9ydCB0eXBlIFJwY0Vycm9yUmVzcG9uc2UgPSB7XG4gIGVycm9yOiB7IGNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH07XG59O1xuXG5leHBvcnQgdHlwZSBScGNSZXNwb25zZTxUID0gdW5rbm93bj4gPSBScGNTdWNjZXNzUmVzcG9uc2U8VD4gfCBScGNFcnJvclJlc3BvbnNlO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlU3RvcmFnZVJwYyhcbiAgYm9keTogUnBjUmVxdWVzdCxcbiAgaGFuZGxlcnM6IEhhbmRsZXJzXG4pOiBQcm9taXNlPFJwY1Jlc3BvbnNlPiB7XG4gIGNvbnN0IHsgbWV0aG9kLCBwYXJhbXMgfSA9IGJvZHk7XG5cbiAgaWYgKCEobWV0aG9kIGluIG1ldGhvZHMpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB7IGNvZGU6IFwiTUVUSE9EX05PVF9GT1VORFwiLCBtZXNzYWdlOiBgVW5rbm93biBtZXRob2Q6ICR7bWV0aG9kfWAgfSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbWV0aG9kTmFtZSA9IG1ldGhvZCBhcyBNZXRob2ROYW1lO1xuICBjb25zdCBzY2hlbWEgPSBtZXRob2RzW21ldGhvZE5hbWVdLnBhcmFtcztcbiAgY29uc3QgcGFyc2VkID0gc2NoZW1hLnNhZmVQYXJzZShwYXJhbXMpO1xuXG4gIGlmICghcGFyc2VkLnN1Y2Nlc3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3I6IHtcbiAgICAgICAgY29kZTogXCJJTlZBTElEX1BBUkFNU1wiLFxuICAgICAgICBtZXNzYWdlOiBwYXJzZWQuZXJyb3IuaXNzdWVzXG4gICAgICAgICAgLm1hcCgoaSkgPT4gYCR7aS5wYXRoLmpvaW4oXCIuXCIpfTogJHtpLm1lc3NhZ2V9YClcbiAgICAgICAgICAuam9pbihcIiwgXCIpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBoYW5kbGVyID0gaGFuZGxlcnNbbWV0aG9kTmFtZV0gYXMgKFxuICAgICAgcGFyYW1zOiB1bmtub3duXG4gICAgKSA9PiBQcm9taXNlPHVua25vd24+O1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIocGFyc2VkLmRhdGEpO1xuICAgIHJldHVybiB7IHJlc3VsdCB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB7XG4gICAgICAgIGNvZGU6IFwiSU5URVJOQUxfRVJST1JcIixcbiAgICAgICAgbWVzc2FnZTogZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQUEsU0FBUyxTQUFTO0FBRWxCLElBQU0sOEJBQThCLEVBQUUsT0FBTztBQUFBLEVBQzNDLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxTQUFTO0FBQUEsRUFDekMseUJBQXlCLEVBQUUsT0FBTyxFQUFFLFNBQVM7QUFBQSxFQUM3QyxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVM7QUFBQSxFQUNoQyxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVM7QUFDbEMsQ0FBQztBQUVNLElBQU0sc0JBQXNCLEVBQUUsbUJBQW1CLFFBQVE7QUFBQSxFQUM5RCxFQUFFLE9BQU87QUFBQSxJQUNQLE1BQU0sRUFBRSxRQUFRLFFBQVE7QUFBQSxJQUN4QixXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVM7QUFBQSxJQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFNBQVM7QUFBQSxJQUNwQyxXQUFXLDRCQUE0QixTQUFTO0FBQUEsRUFDbEQsQ0FBQztBQUFBLEVBQ0QsRUFBRSxPQUFPO0FBQUEsSUFDUCxNQUFNLEVBQUUsUUFBUSxPQUFPO0FBQUEsSUFDdkIsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTO0FBQUEsRUFDNUIsQ0FBQztBQUFBLEVBQ0QsRUFBRSxPQUFPO0FBQUEsSUFDUCxNQUFNLEVBQUUsUUFBUSxRQUFRO0FBQUEsSUFDeEIsS0FBSyxFQUFFLE9BQU87QUFBQSxJQUNkLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUztBQUFBLEVBQ3JELENBQUM7QUFDSCxDQUFDO0FBSU0sSUFBTSxnQkFBZ0IsRUFBRSxPQUFPO0FBQUEsRUFDcEMsSUFBSSxFQUFFLE9BQU87QUFBQSxFQUNiLFdBQVcsRUFBRSxPQUFPO0FBQUEsRUFDcEIsV0FBVyxFQUFFLE9BQU87QUFB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
|