@ai-hero/sandcastle 0.4.7 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +258 -69
  2. package/dist/AgentProvider.d.ts +9 -0
  3. package/dist/AgentProvider.d.ts.map +1 -1
  4. package/dist/AgentProvider.js +14 -2
  5. package/dist/AgentProvider.js.map +1 -1
  6. package/dist/CopyToWorktree.d.ts +9 -0
  7. package/dist/CopyToWorktree.d.ts.map +1 -0
  8. package/dist/{CopyToWorkspace.js → CopyToWorktree.js} +9 -3
  9. package/dist/CopyToWorktree.js.map +1 -0
  10. package/dist/DockerLifecycle.d.ts +2 -0
  11. package/dist/DockerLifecycle.d.ts.map +1 -1
  12. package/dist/DockerLifecycle.js +7 -0
  13. package/dist/DockerLifecycle.js.map +1 -1
  14. package/dist/ErrorHandler.d.ts.map +1 -1
  15. package/dist/ErrorHandler.js +22 -2
  16. package/dist/ErrorHandler.js.map +1 -1
  17. package/dist/InitService.d.ts +6 -1
  18. package/dist/InitService.d.ts.map +1 -1
  19. package/dist/InitService.js +90 -56
  20. package/dist/InitService.js.map +1 -1
  21. package/dist/MountConfig.d.ts +13 -2
  22. package/dist/MountConfig.d.ts.map +1 -1
  23. package/dist/Orchestrator.d.ts +14 -2
  24. package/dist/Orchestrator.d.ts.map +1 -1
  25. package/dist/Orchestrator.js +56 -12
  26. package/dist/Orchestrator.js.map +1 -1
  27. package/dist/PodmanLifecycle.d.ts +10 -0
  28. package/dist/PodmanLifecycle.d.ts.map +1 -1
  29. package/dist/PodmanLifecycle.js +22 -0
  30. package/dist/PodmanLifecycle.js.map +1 -1
  31. package/dist/PromptPreprocessor.d.ts +2 -2
  32. package/dist/PromptPreprocessor.d.ts.map +1 -1
  33. package/dist/PromptPreprocessor.js +7 -2
  34. package/dist/PromptPreprocessor.js.map +1 -1
  35. package/dist/SandboxFactory.d.ts +13 -11
  36. package/dist/SandboxFactory.d.ts.map +1 -1
  37. package/dist/SandboxFactory.js +59 -41
  38. package/dist/SandboxFactory.js.map +1 -1
  39. package/dist/SandboxLifecycle.d.ts +23 -5
  40. package/dist/SandboxLifecycle.d.ts.map +1 -1
  41. package/dist/SandboxLifecycle.js +88 -18
  42. package/dist/SandboxLifecycle.js.map +1 -1
  43. package/dist/SandboxProvider.d.ts +11 -7
  44. package/dist/SandboxProvider.d.ts.map +1 -1
  45. package/dist/SandboxProvider.js.map +1 -1
  46. package/dist/SessionStore.d.ts +50 -0
  47. package/dist/SessionStore.d.ts.map +1 -0
  48. package/dist/SessionStore.js +120 -0
  49. package/dist/SessionStore.js.map +1 -0
  50. package/dist/WorktreeManager.d.ts +3 -3
  51. package/dist/WorktreeManager.d.ts.map +1 -1
  52. package/dist/WorktreeManager.js +14 -3
  53. package/dist/WorktreeManager.js.map +1 -1
  54. package/dist/createSandbox.d.ts +25 -10
  55. package/dist/createSandbox.d.ts.map +1 -1
  56. package/dist/createSandbox.js +253 -133
  57. package/dist/createSandbox.js.map +1 -1
  58. package/dist/createWorktree.d.ts +121 -0
  59. package/dist/createWorktree.d.ts.map +1 -0
  60. package/dist/createWorktree.js +318 -0
  61. package/dist/createWorktree.js.map +1 -0
  62. package/dist/errors.d.ts +110 -6
  63. package/dist/errors.d.ts.map +1 -1
  64. package/dist/errors.js +41 -3
  65. package/dist/errors.js.map +1 -1
  66. package/dist/index.d.ts +6 -1
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +2 -0
  69. package/dist/index.js.map +1 -1
  70. package/dist/interactive.d.ts +1 -1
  71. package/dist/interactive.d.ts.map +1 -1
  72. package/dist/interactive.js +63 -46
  73. package/dist/interactive.js.map +1 -1
  74. package/dist/run.d.ts +10 -10
  75. package/dist/run.d.ts.map +1 -1
  76. package/dist/run.js +23 -6
  77. package/dist/run.js.map +1 -1
  78. package/dist/sandboxes/daytona.js +4 -4
  79. package/dist/sandboxes/daytona.js.map +1 -1
  80. package/dist/sandboxes/docker.d.ts +9 -0
  81. package/dist/sandboxes/docker.d.ts.map +1 -1
  82. package/dist/sandboxes/docker.js +35 -5
  83. package/dist/sandboxes/docker.js.map +1 -1
  84. package/dist/sandboxes/no-sandbox.js +4 -4
  85. package/dist/sandboxes/no-sandbox.js.map +1 -1
  86. package/dist/sandboxes/podman.d.ts +9 -0
  87. package/dist/sandboxes/podman.d.ts.map +1 -1
  88. package/dist/sandboxes/podman.js +47 -5
  89. package/dist/sandboxes/podman.js.map +1 -1
  90. package/dist/sandboxes/test-bind-mount.d.ts +17 -0
  91. package/dist/sandboxes/test-bind-mount.d.ts.map +1 -0
  92. package/dist/sandboxes/test-bind-mount.js +91 -0
  93. package/dist/sandboxes/test-bind-mount.js.map +1 -0
  94. package/dist/sandboxes/test-isolated.js +5 -5
  95. package/dist/sandboxes/test-isolated.js.map +1 -1
  96. package/dist/sandboxes/vercel.js +7 -7
  97. package/dist/sandboxes/vercel.js.map +1 -1
  98. package/dist/startSandbox.d.ts +7 -6
  99. package/dist/startSandbox.d.ts.map +1 -1
  100. package/dist/startSandbox.js +38 -19
  101. package/dist/startSandbox.js.map +1 -1
  102. package/dist/syncIn.js +7 -7
  103. package/dist/syncIn.js.map +1 -1
  104. package/dist/syncOut.js +6 -6
  105. package/dist/syncOut.js.map +1 -1
  106. package/dist/templates/parallel-planner/implement-prompt.md +2 -2
  107. package/dist/templates/parallel-planner/main.mts +3 -7
  108. package/dist/templates/parallel-planner/merge-prompt.md +5 -1
  109. package/dist/templates/parallel-planner-with-review/implement-prompt.md +2 -2
  110. package/dist/templates/parallel-planner-with-review/main.mts +29 -63
  111. package/dist/templates/parallel-planner-with-review/merge-prompt.md +5 -1
  112. package/dist/templates/sequential-reviewer/main.mts +4 -4
  113. package/dist/templates/simple-loop/main.mts +9 -7
  114. package/package.json +1 -1
  115. package/dist/CopyToWorkspace.d.ts +0 -8
  116. package/dist/CopyToWorkspace.d.ts.map +0 -1
  117. package/dist/CopyToWorkspace.js.map +0 -1
  118. package/dist/templates/blank/.env.example +0 -5
  119. package/dist/templates/parallel-planner/.env.example +0 -5
  120. package/dist/templates/parallel-planner-with-review/.env.example +0 -5
  121. package/dist/templates/sequential-reviewer/.env.example +0 -5
  122. package/dist/templates/simple-loop/.env.example +0 -5
@@ -0,0 +1,318 @@
1
+ import { NodeContext, NodeFileSystem } from "@effect/platform-node";
2
+ import { join } from "node:path";
3
+ import { Effect, Layer } from "effect";
4
+ import { ClackDisplay, Display, FileDisplay } from "./Display.js";
5
+ import { preprocessPrompt } from "./PromptPreprocessor.js";
6
+ import { resolvePrompt } from "./PromptResolver.js";
7
+ import { SandboxFactory, makeSandboxLayerFromHandle, resolveGitMounts, SANDBOX_REPO_DIR, } from "./SandboxFactory.js";
8
+ import { withSandboxLifecycle, runHostHooks, } from "./SandboxLifecycle.js";
9
+ import { createSandboxFromWorktree } from "./createSandbox.js";
10
+ import { buildLogFilename, printFileDisplayStartup } from "./run.js";
11
+ import { orchestrate } from "./Orchestrator.js";
12
+ import { resolveEnv } from "./EnvResolver.js";
13
+ import { mergeProviderEnv } from "./mergeProviderEnv.js";
14
+ import { startSandbox } from "./startSandbox.js";
15
+ import { syncOut } from "./syncOut.js";
16
+ import * as WorktreeManager from "./WorktreeManager.js";
17
+ import { copyToWorktree } from "./CopyToWorktree.js";
18
+ import { substitutePromptArgs, validateNoBuiltInArgOverride, BUILT_IN_PROMPT_ARG_KEYS, } from "./PromptArgumentSubstitution.js";
19
+ import { noSandbox } from "./sandboxes/no-sandbox.js";
20
+ /**
21
+ * Creates a git worktree as an independent, first-class worktree.
22
+ * Returns a Worktree handle with close() and [Symbol.asyncDispose]().
23
+ *
24
+ * Only accepts 'branch' and 'merge-to-head' strategies — 'head' is a
25
+ * compile-time type error since head means no worktree.
26
+ */
27
+ export const createWorktree = async (options) => {
28
+ const hostRepoDir = options._test?.hostRepoDir ?? process.cwd();
29
+ const branch = options.branchStrategy.type === "branch"
30
+ ? options.branchStrategy.branch
31
+ : undefined;
32
+ const worktreeInfo = await Effect.gen(function* () {
33
+ yield* WorktreeManager.pruneStale(hostRepoDir).pipe(Effect.catchAll(() => Effect.void));
34
+ const info = yield* WorktreeManager.create(hostRepoDir, { branch });
35
+ if (options.copyToWorktree && options.copyToWorktree.length > 0) {
36
+ yield* copyToWorktree(options.copyToWorktree, hostRepoDir, info.path);
37
+ }
38
+ // Run host.onWorktreeReady hooks after copyToWorktree, before sandbox creation
39
+ if (options.hooks?.host?.onWorktreeReady?.length) {
40
+ yield* runHostHooks(options.hooks.host.onWorktreeReady, info.path);
41
+ }
42
+ return info;
43
+ }).pipe(Effect.provide(NodeContext.layer), Effect.runPromise);
44
+ let closed = false;
45
+ const close = async () => {
46
+ if (closed)
47
+ return { preservedWorktreePath: undefined };
48
+ closed = true;
49
+ return Effect.gen(function* () {
50
+ const isDirty = yield* WorktreeManager.hasUncommittedChanges(worktreeInfo.path).pipe(Effect.catchAll(() => Effect.succeed(false)));
51
+ if (isDirty) {
52
+ return { preservedWorktreePath: worktreeInfo.path };
53
+ }
54
+ yield* WorktreeManager.remove(worktreeInfo.path).pipe(Effect.catchAll(() => Effect.void));
55
+ return { preservedWorktreePath: undefined };
56
+ }).pipe(Effect.runPromise);
57
+ };
58
+ const worktreeInteractive = async (opts) => {
59
+ const { prompt, promptFile, hooks, agent: provider } = opts;
60
+ const resolvedSandbox = opts.sandbox ?? noSandbox();
61
+ // Validate buildInteractiveArgs is available
62
+ if (!provider.buildInteractiveArgs) {
63
+ throw new Error(`Agent provider "${provider.name}" does not support buildInteractiveArgs, required for interactive sessions.`);
64
+ }
65
+ const inner = Effect.gen(function* () {
66
+ const d = yield* Display;
67
+ // 1. Resolve prompt (from string or file), or skip if neither provided
68
+ const hasPromptSource = prompt !== undefined || promptFile !== undefined;
69
+ const rawPrompt = hasPromptSource
70
+ ? yield* resolvePrompt({ prompt, promptFile })
71
+ : "";
72
+ // 2. Resolve env vars
73
+ const resolvedEnv = yield* resolveEnv(hostRepoDir);
74
+ const env = mergeProviderEnv({
75
+ resolvedEnv,
76
+ agentProviderEnv: provider.env,
77
+ sandboxProviderEnv: resolvedSandbox.env,
78
+ });
79
+ const effectiveEnv = { ...env, ...(opts.env ?? {}) };
80
+ // 3. Prompt args substitution (skip when no prompt)
81
+ let substitutedPrompt = rawPrompt;
82
+ if (hasPromptSource) {
83
+ const userArgs = opts.promptArgs ?? {};
84
+ yield* validateNoBuiltInArgOverride(userArgs);
85
+ const effectiveArgs = {
86
+ SOURCE_BRANCH: worktreeInfo.branch,
87
+ TARGET_BRANCH: worktreeInfo.branch,
88
+ ...userArgs,
89
+ };
90
+ const builtInArgKeysSet = new Set(BUILT_IN_PROMPT_ARG_KEYS);
91
+ substitutedPrompt = yield* substitutePromptArgs(rawPrompt, effectiveArgs, builtInArgKeysSet);
92
+ }
93
+ // Display intro
94
+ yield* d.intro(opts.name ?? "sandcastle interactive");
95
+ yield* d.summary("Interactive Session", {
96
+ Agent: opts.name ?? provider.name,
97
+ Sandbox: resolvedSandbox.name,
98
+ Branch: worktreeInfo.branch,
99
+ });
100
+ // 4. Start sandbox
101
+ let handle;
102
+ if (resolvedSandbox.tag === "none") {
103
+ handle = yield* Effect.promise(() => resolvedSandbox.create({
104
+ worktreePath: worktreeInfo.path,
105
+ env: effectiveEnv,
106
+ }));
107
+ }
108
+ else if (resolvedSandbox.tag === "isolated") {
109
+ const startResult = yield* d.taskLog("Starting sandbox", () => startSandbox({
110
+ provider: resolvedSandbox,
111
+ hostRepoDir: worktreeInfo.path,
112
+ env: effectiveEnv,
113
+ }));
114
+ handle = startResult.handle;
115
+ }
116
+ else {
117
+ const gitPath = join(hostRepoDir, ".git");
118
+ const gitMounts = yield* resolveGitMounts(gitPath);
119
+ const startResult = yield* d.taskLog("Starting sandbox", () => startSandbox({
120
+ provider: resolvedSandbox,
121
+ hostRepoDir,
122
+ env: effectiveEnv,
123
+ worktreeOrRepoPath: worktreeInfo.path,
124
+ gitMounts,
125
+ repoDir: SANDBOX_REPO_DIR,
126
+ }));
127
+ handle = startResult.handle;
128
+ }
129
+ // Run lifecycle — worktree owns worktree, so no worktree cleanup here
130
+ return yield* Effect.gen(function* () {
131
+ if (!handle.interactiveExec) {
132
+ throw new Error(`Sandbox provider does not support interactiveExec. ` +
133
+ `The provider must implement the optional interactiveExec method to use interactive().`);
134
+ }
135
+ const interactiveExecFn = handle.interactiveExec.bind(handle);
136
+ const sandboxLayer = makeSandboxLayerFromHandle(handle);
137
+ const worktreePath = handle.worktreePath;
138
+ const applyToHost = resolvedSandbox.tag === "isolated"
139
+ ? () => syncOut(worktreeInfo.path, handle)
140
+ : () => Effect.void;
141
+ const lifecycleEffect = withSandboxLifecycle({
142
+ hostRepoDir,
143
+ sandboxRepoDir: worktreePath,
144
+ hooks,
145
+ branch: worktreeInfo.branch,
146
+ hostWorktreePath: worktreeInfo.path,
147
+ applyToHost,
148
+ }, (ctx) => Effect.gen(function* () {
149
+ const fullPrompt = hasPromptSource
150
+ ? yield* preprocessPrompt(substitutedPrompt, ctx.sandbox, ctx.sandboxRepoDir)
151
+ : "";
152
+ const interactiveArgs = provider.buildInteractiveArgs({
153
+ prompt: fullPrompt,
154
+ dangerouslySkipPermissions: resolvedSandbox.tag !== "none",
155
+ });
156
+ const result = yield* Effect.promise(() => interactiveExecFn(interactiveArgs, {
157
+ stdin: process.stdin,
158
+ stdout: process.stdout,
159
+ stderr: process.stderr,
160
+ cwd: worktreePath,
161
+ }));
162
+ return result.exitCode;
163
+ }));
164
+ const lifecycleResult = yield* lifecycleEffect.pipe(Effect.provide(sandboxLayer));
165
+ const exitCode = lifecycleResult.result;
166
+ // Summary
167
+ yield* d.summary("Session Complete", {
168
+ Commits: String(lifecycleResult.commits.length),
169
+ Branch: lifecycleResult.branch,
170
+ "Exit code": String(exitCode),
171
+ });
172
+ return {
173
+ commits: lifecycleResult.commits,
174
+ branch: lifecycleResult.branch,
175
+ preservedWorktreePath: undefined,
176
+ exitCode,
177
+ };
178
+ }).pipe(
179
+ // Always close sandbox handle
180
+ Effect.ensuring(Effect.promise(() => handle.close().catch(() => { }))));
181
+ });
182
+ return Effect.runPromise(inner.pipe(Effect.provide(ClackDisplay.layer), Effect.provide(NodeContext.layer), Effect.provide(NodeFileSystem.layer)));
183
+ };
184
+ const worktreeRun = async (opts) => {
185
+ const { prompt, promptFile, hooks, agent: provider } = opts;
186
+ const sandboxProvider = opts.sandbox;
187
+ const maxIterations = opts.maxIterations ?? 1;
188
+ const inner = Effect.gen(function* () {
189
+ // 1. Resolve prompt
190
+ const rawPrompt = yield* resolvePrompt({ prompt, promptFile });
191
+ // 2. Resolve env vars
192
+ const resolvedEnv = yield* resolveEnv(hostRepoDir);
193
+ const env = mergeProviderEnv({
194
+ resolvedEnv,
195
+ agentProviderEnv: provider.env,
196
+ sandboxProviderEnv: sandboxProvider.env,
197
+ });
198
+ const effectiveEnv = { ...env, ...(opts.env ?? {}) };
199
+ // 3. Prompt args substitution
200
+ const userArgs = opts.promptArgs ?? {};
201
+ yield* validateNoBuiltInArgOverride(userArgs);
202
+ const effectiveArgs = {
203
+ SOURCE_BRANCH: worktreeInfo.branch,
204
+ TARGET_BRANCH: worktreeInfo.branch,
205
+ ...userArgs,
206
+ };
207
+ const builtInArgKeysSet = new Set(BUILT_IN_PROMPT_ARG_KEYS);
208
+ const resolvedPrompt = yield* substitutePromptArgs(rawPrompt, effectiveArgs, builtInArgKeysSet);
209
+ // 4. Start sandbox
210
+ let handle;
211
+ let sandboxRepoDir;
212
+ if (sandboxProvider.tag === "isolated") {
213
+ const startResult = yield* startSandbox({
214
+ provider: sandboxProvider,
215
+ hostRepoDir: worktreeInfo.path,
216
+ env: effectiveEnv,
217
+ });
218
+ handle = startResult.handle;
219
+ sandboxRepoDir = startResult.worktreePath;
220
+ }
221
+ else {
222
+ const gitPath = join(hostRepoDir, ".git");
223
+ const gitMounts = yield* resolveGitMounts(gitPath);
224
+ const startResult = yield* startSandbox({
225
+ provider: sandboxProvider,
226
+ hostRepoDir,
227
+ env: effectiveEnv,
228
+ worktreeOrRepoPath: worktreeInfo.path,
229
+ gitMounts,
230
+ repoDir: SANDBOX_REPO_DIR,
231
+ });
232
+ handle = startResult.handle;
233
+ sandboxRepoDir = startResult.worktreePath;
234
+ }
235
+ const sandboxLayer = makeSandboxLayerFromHandle(handle);
236
+ const applyToHost = sandboxProvider.tag === "isolated"
237
+ ? () => syncOut(worktreeInfo.path, handle)
238
+ : () => Effect.void;
239
+ // 5. Resolve logging
240
+ const resolvedLogging = opts.logging ?? {
241
+ type: "file",
242
+ path: join(hostRepoDir, ".sandcastle", "logs", buildLogFilename(worktreeInfo.branch, undefined, opts.name)),
243
+ };
244
+ const runDisplayLayer = resolvedLogging.type === "file"
245
+ ? (() => {
246
+ printFileDisplayStartup({
247
+ logPath: resolvedLogging.path,
248
+ agentName: opts.name,
249
+ branch: worktreeInfo.branch,
250
+ });
251
+ return Layer.provide(FileDisplay.layer(resolvedLogging.path), NodeFileSystem.layer);
252
+ })()
253
+ : ClackDisplay.layer;
254
+ // 6. Build a SandboxFactory that reuses the started sandbox
255
+ const reuseFactoryLayer = Layer.succeed(SandboxFactory, {
256
+ withSandbox: (makeEffect) => makeEffect({
257
+ hostWorktreePath: worktreeInfo.path,
258
+ sandboxRepoPath: sandboxRepoDir,
259
+ applyToHost,
260
+ }).pipe(Effect.provide(sandboxLayer), Effect.map((value) => ({
261
+ value,
262
+ preservedWorktreePath: undefined,
263
+ }))),
264
+ });
265
+ const runLayer = Layer.merge(reuseFactoryLayer, runDisplayLayer);
266
+ // 7. Run orchestration
267
+ const result = yield* Effect.gen(function* () {
268
+ const display = yield* Display;
269
+ yield* display.intro(opts.name ?? "sandcastle");
270
+ return yield* orchestrate({
271
+ hostRepoDir,
272
+ iterations: maxIterations,
273
+ hooks,
274
+ prompt: resolvedPrompt,
275
+ branch: worktreeInfo.branch,
276
+ provider,
277
+ completionSignal: opts.completionSignal,
278
+ idleTimeoutSeconds: opts.idleTimeoutSeconds,
279
+ name: opts.name,
280
+ });
281
+ }).pipe(Effect.provide(runLayer),
282
+ // Always close sandbox handle
283
+ Effect.ensuring(Effect.promise(() => handle.close().catch(() => { }))));
284
+ return {
285
+ iterations: result.iterations,
286
+ completionSignal: result.completionSignal,
287
+ stdout: result.stdout,
288
+ commits: result.commits,
289
+ branch: result.branch,
290
+ logFilePath: resolvedLogging.type === "file" ? resolvedLogging.path : undefined,
291
+ };
292
+ });
293
+ return Effect.runPromise(inner.pipe(Effect.provide(ClackDisplay.layer), Effect.provide(NodeContext.layer), Effect.provide(NodeFileSystem.layer)));
294
+ };
295
+ const worktreeCreateSandbox = async (opts) => {
296
+ return createSandboxFromWorktree({
297
+ branch: worktreeInfo.branch,
298
+ worktreePath: worktreeInfo.path,
299
+ hostRepoDir,
300
+ sandbox: opts.sandbox,
301
+ hooks: opts.hooks,
302
+ copyToWorktree: opts.copyToWorktree,
303
+ _test: opts._test,
304
+ });
305
+ };
306
+ return {
307
+ branch: worktreeInfo.branch,
308
+ worktreePath: worktreeInfo.path,
309
+ run: worktreeRun,
310
+ interactive: worktreeInteractive,
311
+ createSandbox: worktreeCreateSandbox,
312
+ close,
313
+ async [Symbol.asyncDispose]() {
314
+ await close();
315
+ },
316
+ };
317
+ };
318
+ //# sourceMappingURL=createWorktree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createWorktree.js","sourceRoot":"","sources":["../src/createWorktree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,YAAY,GAEb,MAAM,uBAAuB,CAAC;AAW/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAErE,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAEL,oBAAoB,EACpB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAmHtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,OAA8B,EACX,EAAE;IACrB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEhE,MAAM,MAAM,GACV,OAAO,CAAC,cAAc,CAAC,IAAI,KAAK,QAAQ;QACtC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM;QAC/B,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC7C,KAAK,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CACjD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CACnC,CAAC;QACF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC;QACD,+EAA+E;QAC/E,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;YACjD,KAAK,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAE9D,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,KAAK,GAAG,KAAK,IAA0B,EAAE;QAC7C,IAAI,MAAM;YAAE,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC;QACxD,MAAM,GAAG,IAAI,CAAC;QAEd,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,qBAAqB,CAC1D,YAAY,CAAC,IAAI,CAClB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAErD,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,EAAE,qBAAqB,EAAE,YAAY,CAAC,IAAI,EAAiB,CAAC;YACrE,CAAC;YAED,KAAK,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CACnD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CACnC,CAAC;YAEF,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAiB,CAAC;QAC7D,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,KAAK,EAC/B,IAAgC,EACJ,EAAE;QAC9B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;QAEpD,6CAA6C;QAC7C,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,mBAAmB,QAAQ,CAAC,IAAI,6EAA6E,CAC9G,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAChC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;YAEzB,uEAAuE;YACvE,MAAM,eAAe,GAAG,MAAM,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,CAAC;YACzE,MAAM,SAAS,GAAG,eAAe;gBAC/B,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;gBAC9C,CAAC,CAAC,EAAE,CAAC;YAEP,sBAAsB;YACtB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG,gBAAgB,CAAC;gBAC3B,WAAW;gBACX,gBAAgB,EAAE,QAAQ,CAAC,GAAG;gBAC9B,kBAAkB,EAAE,eAAe,CAAC,GAAG;aACxC,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC;YAErD,oDAAoD;YACpD,IAAI,iBAAiB,GAAG,SAAS,CAAC;YAClC,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;gBACvC,KAAK,CAAC,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;gBAE9C,MAAM,aAAa,GAAG;oBACpB,aAAa,EAAE,YAAY,CAAC,MAAM;oBAClC,aAAa,EAAE,YAAY,CAAC,MAAM;oBAClC,GAAG,QAAQ;iBACZ,CAAC;gBACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS,wBAAwB,CAAC,CAAC;gBACpE,iBAAiB,GAAG,KAAK,CAAC,CAAC,oBAAoB,CAC7C,SAAS,EACT,aAAa,EACb,iBAAiB,CAClB,CAAC;YACJ,CAAC;YAED,gBAAgB;YAChB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,wBAAwB,CAAC,CAAC;YACtD,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE;gBACtC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;gBACjC,OAAO,EAAE,eAAe,CAAC,IAAI;gBAC7B,MAAM,EAAE,YAAY,CAAC,MAAM;aAC5B,CAAC,CAAC;YAEH,mBAAmB;YACnB,IAAI,MAGe,CAAC;YAEpB,IAAI,eAAe,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnC,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAClC,eAAe,CAAC,MAAM,CAAC;oBACrB,YAAY,EAAE,YAAY,CAAC,IAAI;oBAC/B,GAAG,EAAE,YAAY;iBAClB,CAAC,CACH,CAAC;YACJ,CAAC;iBAAM,IAAI,eAAe,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAC5D,YAAY,CAAC;oBACX,QAAQ,EAAE,eAAe;oBACzB,WAAW,EAAE,YAAY,CAAC,IAAI;oBAC9B,GAAG,EAAE,YAAY;iBAClB,CAAC,CACH,CAAC;gBACF,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBACnD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAC5D,YAAY,CAAC;oBACX,QAAQ,EAAE,eAAe;oBACzB,WAAW;oBACX,GAAG,EAAE,YAAY;oBACjB,kBAAkB,EAAE,YAAY,CAAC,IAAI;oBACrC,SAAS;oBACT,OAAO,EAAE,gBAAgB;iBAC1B,CAAC,CACH,CAAC;gBACF,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YAC9B,CAAC;YAED,sEAAsE;YACtE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CACb,qDAAqD;wBACnD,uFAAuF,CAC1F,CAAC;gBACJ,CAAC;gBACD,MAAM,iBAAiB,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9D,MAAM,YAAY,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;gBACxD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;gBAEzC,MAAM,WAAW,GACf,eAAe,CAAC,GAAG,KAAK,UAAU;oBAChC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,MAA+B,CAAC;oBACnE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;gBAExB,MAAM,eAAe,GAAG,oBAAoB,CAC1C;oBACE,WAAW;oBACX,cAAc,EAAE,YAAY;oBAC5B,KAAK;oBACL,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,gBAAgB,EAAE,YAAY,CAAC,IAAI;oBACnC,WAAW;iBACZ,EACD,CAAC,GAAG,EAAE,EAAE,CACN,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAClB,MAAM,UAAU,GAAG,eAAe;wBAChC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CACrB,iBAAiB,EACjB,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,cAAc,CACnB;wBACH,CAAC,CAAC,EAAE,CAAC;oBAEP,MAAM,eAAe,GAAG,QAAQ,CAAC,oBAAqB,CAAC;wBACrD,MAAM,EAAE,UAAU;wBAClB,0BAA0B,EAAE,eAAe,CAAC,GAAG,KAAK,MAAM;qBAC3D,CAAC,CAAC;oBACH,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CACxC,iBAAiB,CAAC,eAAe,EAAE;wBACjC,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,GAAG,EAAE,YAAY;qBAClB,CAAC,CACH,CAAC;oBAEF,OAAO,MAAM,CAAC,QAAQ,CAAC;gBACzB,CAAC,CAAC,CACL,CAAC;gBAEF,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CACjD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAC7B,CAAC;gBAEF,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC;gBAExC,UAAU;gBACV,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE;oBACnC,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC/C,MAAM,EAAE,eAAe,CAAC,MAAM;oBAC9B,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;iBAC9B,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE,eAAe,CAAC,OAAO;oBAChC,MAAM,EAAE,eAAe,CAAC,MAAM;oBAC9B,qBAAqB,EAAE,SAAS;oBAChC,QAAQ;iBACmB,CAAC;YAChC,CAAC,CAAC,CAAC,IAAI;YACL,8BAA8B;YAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CACtE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,UAAU,CACtB,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAClC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EACjC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CACrC,CACF,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,EACvB,IAAwB,EACI,EAAE;QAC9B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QAE9C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAChC,oBAAoB;YACpB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAE/D,sBAAsB;YACtB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG,gBAAgB,CAAC;gBAC3B,WAAW;gBACX,gBAAgB,EAAE,QAAQ,CAAC,GAAG;gBAC9B,kBAAkB,EAAE,eAAe,CAAC,GAAG;aACxC,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC;YAErD,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;YACvC,KAAK,CAAC,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,aAAa,GAAG;gBACpB,aAAa,EAAE,YAAY,CAAC,MAAM;gBAClC,aAAa,EAAE,YAAY,CAAC,MAAM;gBAClC,GAAG,QAAQ;aACZ,CAAC;YACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS,wBAAwB,CAAC,CAAC;YACpE,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,oBAAoB,CAChD,SAAS,EACT,aAAa,EACb,iBAAiB,CAClB,CAAC;YAEF,mBAAmB;YACnB,IAAI,MAAsD,CAAC;YAC3D,IAAI,cAAsB,CAAC;YAE3B,IAAI,eAAe,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;gBACvC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;oBACtC,QAAQ,EAAE,eAAe;oBACzB,WAAW,EAAE,YAAY,CAAC,IAAI;oBAC9B,GAAG,EAAE,YAAY;iBAClB,CAAC,CAAC;gBACH,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;gBAC5B,cAAc,GAAG,WAAW,CAAC,YAAY,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBACnD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;oBACtC,QAAQ,EAAE,eAAe;oBACzB,WAAW;oBACX,GAAG,EAAE,YAAY;oBACjB,kBAAkB,EAAE,YAAY,CAAC,IAAI;oBACrC,SAAS;oBACT,OAAO,EAAE,gBAAgB;iBAC1B,CAAC,CAAC;gBACH,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;gBAC5B,cAAc,GAAG,WAAW,CAAC,YAAY,CAAC;YAC5C,CAAC;YAED,MAAM,YAAY,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,WAAW,GACf,eAAe,CAAC,GAAG,KAAK,UAAU;gBAChC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,MAA+B,CAAC;gBACnE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YAExB,qBAAqB;YACrB,MAAM,eAAe,GAAkB,IAAI,CAAC,OAAO,IAAI;gBACrD,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CACR,WAAW,EACX,aAAa,EACb,MAAM,EACN,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAC5D;aACF,CAAC;YAEF,MAAM,eAAe,GACnB,eAAe,CAAC,IAAI,KAAK,MAAM;gBAC7B,CAAC,CAAC,CAAC,GAAG,EAAE;oBACJ,uBAAuB,CAAC;wBACtB,OAAO,EAAE,eAAe,CAAC,IAAI;wBAC7B,SAAS,EAAE,IAAI,CAAC,IAAI;wBACpB,MAAM,EAAE,YAAY,CAAC,MAAM;qBAC5B,CAAC,CAAC;oBACH,OAAO,KAAK,CAAC,OAAO,CAClB,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EACvC,cAAc,CAAC,KAAK,CACrB,CAAC;gBACJ,CAAC,CAAC,EAAE;gBACN,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;YAEzB,4DAA4D;YAC5D,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE;gBACtD,WAAW,EAAE,CAAC,UAAU,EAAE,EAAE,CAC1B,UAAU,CAAC;oBACT,gBAAgB,EAAE,YAAY,CAAC,IAAI;oBACnC,eAAe,EAAE,cAAc;oBAC/B,WAAW;iBACZ,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACrB,KAAK;oBACL,qBAAqB,EAAE,SAAS;iBACjC,CAAC,CAAC,CACG;aACX,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;YAEjE,uBAAuB;YACvB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACxC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;gBAC/B,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC;gBAEhD,OAAO,KAAK,CAAC,CAAC,WAAW,CAAC;oBACxB,WAAW;oBACX,UAAU,EAAE,aAAa;oBACzB,KAAK;oBACL,MAAM,EAAE,cAAc;oBACtB,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,QAAQ;oBACR,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;oBACvC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;oBAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;YACxB,8BAA8B;YAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CACtE,CAAC;YAEF,OAAO;gBACL,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EACT,eAAe,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;aACzC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,UAAU,CACtB,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAClC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EACjC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CACrC,CACF,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,KAAK,EACjC,IAAkC,EAChB,EAAE;QACpB,OAAO,yBAAyB,CAAC;YAC/B,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,YAAY,EAAE,YAAY,CAAC,IAAI;YAC/B,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACL,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,YAAY,EAAE,YAAY,CAAC,IAAI;QAC/B,GAAG,EAAE,WAAW;QAChB,WAAW,EAAE,mBAAmB;QAChC,aAAa,EAAE,qBAAqB;QACpC,KAAK;QACL,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YACzB,MAAM,KAAK,EAAE,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Effect } from "effect";
1
2
  declare const ExecError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
2
3
  readonly _tag: "ExecError";
3
4
  } & Readonly<A>;
@@ -90,18 +91,121 @@ export declare class InitError extends InitError_base<{
90
91
  readonly message: string;
91
92
  }> {
92
93
  }
93
- declare const TimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
94
- readonly _tag: "TimeoutError";
94
+ declare const AgentIdleTimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
95
+ readonly _tag: "AgentIdleTimeoutError";
95
96
  } & Readonly<A>;
96
- /** Run exceeded the configured idle timeout */
97
- export declare class TimeoutError extends TimeoutError_base<{
97
+ /** Run exceeded the configured agent idle timeout */
98
+ export declare class AgentIdleTimeoutError extends AgentIdleTimeoutError_base<{
98
99
  readonly message: string;
99
- readonly idleTimeoutSeconds: number;
100
+ readonly timeoutMs: number;
100
101
  /** Host path to the preserved worktree, set when the worktree was kept after failure. */
101
102
  readonly preservedWorktreePath?: string;
102
103
  }> {
103
104
  }
105
+ declare const WorktreeTimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
106
+ readonly _tag: "WorktreeTimeoutError";
107
+ } & Readonly<A>;
108
+ /** Git worktree create or prune timed out */
109
+ export declare class WorktreeTimeoutError extends WorktreeTimeoutError_base<{
110
+ readonly message: string;
111
+ readonly timeoutMs: number;
112
+ readonly path: string;
113
+ readonly operation: "create" | "prune";
114
+ }> {
115
+ }
116
+ declare const ContainerStartTimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
117
+ readonly _tag: "ContainerStartTimeoutError";
118
+ } & Readonly<A>;
119
+ /** Sandbox container start timed out */
120
+ export declare class ContainerStartTimeoutError extends ContainerStartTimeoutError_base<{
121
+ readonly message: string;
122
+ readonly timeoutMs: number;
123
+ }> {
124
+ }
125
+ declare const CopyToWorktreeTimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
126
+ readonly _tag: "CopyToWorktreeTimeoutError";
127
+ } & Readonly<A>;
128
+ /** Copying files to worktree timed out */
129
+ export declare class CopyToWorktreeTimeoutError extends CopyToWorktreeTimeoutError_base<{
130
+ readonly message: string;
131
+ readonly timeoutMs: number;
132
+ readonly paths: string[];
133
+ }> {
134
+ }
135
+ declare const SyncInTimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
136
+ readonly _tag: "SyncInTimeoutError";
137
+ } & Readonly<A>;
138
+ /** Git sync-in for isolated providers timed out */
139
+ export declare class SyncInTimeoutError extends SyncInTimeoutError_base<{
140
+ readonly message: string;
141
+ readonly timeoutMs: number;
142
+ }> {
143
+ }
144
+ declare const HookTimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
145
+ readonly _tag: "HookTimeoutError";
146
+ } & Readonly<A>;
147
+ /** onSandboxReady hook command timed out */
148
+ export declare class HookTimeoutError extends HookTimeoutError_base<{
149
+ readonly message: string;
150
+ readonly timeoutMs: number;
151
+ readonly command: string;
152
+ }> {
153
+ }
154
+ declare const GitSetupTimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
155
+ readonly _tag: "GitSetupTimeoutError";
156
+ } & Readonly<A>;
157
+ /** Git config setup command timed out */
158
+ export declare class GitSetupTimeoutError extends GitSetupTimeoutError_base<{
159
+ readonly message: string;
160
+ readonly timeoutMs: number;
161
+ readonly command: string;
162
+ }> {
163
+ }
164
+ declare const PromptExpansionTimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
165
+ readonly _tag: "PromptExpansionTimeoutError";
166
+ } & Readonly<A>;
167
+ /** Prompt shell expression expansion timed out */
168
+ export declare class PromptExpansionTimeoutError extends PromptExpansionTimeoutError_base<{
169
+ readonly message: string;
170
+ readonly timeoutMs: number;
171
+ readonly expression: string;
172
+ }> {
173
+ }
174
+ declare const CommitCollectionTimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
175
+ readonly _tag: "CommitCollectionTimeoutError";
176
+ } & Readonly<A>;
177
+ /** Commit collection timed out */
178
+ export declare class CommitCollectionTimeoutError extends CommitCollectionTimeoutError_base<{
179
+ readonly message: string;
180
+ readonly timeoutMs: number;
181
+ }> {
182
+ }
183
+ declare const MergeToHostTimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
184
+ readonly _tag: "MergeToHostTimeoutError";
185
+ } & Readonly<A>;
186
+ /** Merge-to-host branch timed out */
187
+ export declare class MergeToHostTimeoutError extends MergeToHostTimeoutError_base<{
188
+ readonly message: string;
189
+ readonly timeoutMs: number;
190
+ readonly sourceBranch: string;
191
+ readonly targetBranch: string;
192
+ }> {
193
+ }
194
+ /**
195
+ * Wrap an effect with a timeout that fails with a specific error on expiry.
196
+ * Uses `Effect.timeoutFail` under the hood.
197
+ */
198
+ export declare const withTimeout: <E>(timeoutMs: number, onTimeout: () => E) => <A, E2, R>(effect: Effect.Effect<A, E2, R>) => Effect.Effect<A, E | E2, R>;
199
+ declare const SessionCaptureError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
200
+ readonly _tag: "SessionCaptureError";
201
+ } & Readonly<A>;
202
+ /** Session capture (read, rewrite, or write) failed */
203
+ export declare class SessionCaptureError extends SessionCaptureError_base<{
204
+ readonly message: string;
205
+ readonly sessionId: string;
206
+ }> {
207
+ }
104
208
  /** Union of all sandbox-related errors */
105
- export type SandboxError = ExecError | ExecHostError | CopyError | DockerError | PodmanError | SyncError | WorktreeError | PromptError | AgentError | ConfigDirError | InitError | TimeoutError;
209
+ export type SandboxError = ExecError | ExecHostError | CopyError | DockerError | PodmanError | SyncError | WorktreeError | PromptError | AgentError | ConfigDirError | InitError | AgentIdleTimeoutError | WorktreeTimeoutError | ContainerStartTimeoutError | CopyToWorktreeTimeoutError | SyncInTimeoutError | HookTimeoutError | GitSetupTimeoutError | PromptExpansionTimeoutError | CommitCollectionTimeoutError | MergeToHostTimeoutError | SessionCaptureError;
106
210
  export {};
107
211
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAEA,8CAA8C;AAC9C,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,2CAA2C;AAC3C,qBAAa,aAAc,SAAQ,mBAAkC;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,gDAAgD;AAChD,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,6CAA6C;AAC7C,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,6CAA6C;AAC7C,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,+CAA+C;AAC/C,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,oCAAoC;AACpC,qBAAa,aAAc,SAAQ,mBAAkC;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,gDAAgD;AAChD,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,8BAA8B;AAC9B,qBAAa,UAAW,SAAQ,gBAA+B;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;CAAG;;;;AAEL,4CAA4C;AAC5C,qBAAa,cAAe,SAAQ,oBAAmC;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,+CAA+C;AAC/C,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,+CAA+C;AAC/C,qBAAa,YAAa,SAAQ,kBAAiC;IACjE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,yFAAyF;IACzF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;CAAG;AAEL,0CAA0C;AAC1C,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,aAAa,GACb,SAAS,GACT,WAAW,GACX,WAAW,GACX,SAAS,GACT,aAAa,GACb,WAAW,GACX,UAAU,GACV,cAAc,GACd,SAAS,GACT,YAAY,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;AAEhD,8CAA8C;AAC9C,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,2CAA2C;AAC3C,qBAAa,aAAc,SAAQ,mBAAkC;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,gDAAgD;AAChD,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,6CAA6C;AAC7C,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,6CAA6C;AAC7C,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,+CAA+C;AAC/C,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,oCAAoC;AACpC,qBAAa,aAAc,SAAQ,mBAAkC;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,gDAAgD;AAChD,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,8BAA8B;AAC9B,qBAAa,UAAW,SAAQ,gBAA+B;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;CAAG;;;;AAEL,4CAA4C;AAC5C,qBAAa,cAAe,SAAQ,oBAAmC;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,+CAA+C;AAC/C,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,qDAAqD;AACrD,qBAAa,qBAAsB,SAAQ,2BAEzC;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;CAAG;;;;AAEL,6CAA6C;AAC7C,qBAAa,oBAAqB,SAAQ,0BAExC;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC;CACxC,CAAC;CAAG;;;;AAEL,wCAAwC;AACxC,qBAAa,0BAA2B,SAAQ,gCAE9C;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;CAAG;;;;AAEL,0CAA0C;AAC1C,qBAAa,0BAA2B,SAAQ,gCAE9C;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,mDAAmD;AACnD,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;CAAG;;;;AAEL,4CAA4C;AAC5C,qBAAa,gBAAiB,SAAQ,sBAAqC;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,yCAAyC;AACzC,qBAAa,oBAAqB,SAAQ,0BAExC;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,kDAAkD;AAClD,qBAAa,2BAA4B,SAAQ,iCAE/C;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;CAAG;;;;AAEL,kCAAkC;AAClC,qBAAa,4BAA6B,SAAQ,kCAEhD;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;CAAG;;;;AAEL,qCAAqC;AACrC,qBAAa,uBAAwB,SAAQ,6BAE3C;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,CAAC;CAAG;AAEL;;;GAGG;AACH,eAAO,MAAM,WAAW,GACrB,CAAC,6CACD,CAAC,EAAE,EAAE,EAAE,CAAC,iEAMN,CAAC;;;;AAEN,uDAAuD;AACvD,qBAAa,mBAAoB,SAAQ,yBAEvC;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;CAAG;AAEL,0CAA0C;AAC1C,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,aAAa,GACb,SAAS,GACT,WAAW,GACX,WAAW,GACX,SAAS,GACT,aAAa,GACb,WAAW,GACX,UAAU,GACV,cAAc,GACd,SAAS,GACT,qBAAqB,GACrB,oBAAoB,GACpB,0BAA0B,GAC1B,0BAA0B,GAC1B,kBAAkB,GAClB,gBAAgB,GAChB,oBAAoB,GACpB,2BAA2B,GAC3B,4BAA4B,GAC5B,uBAAuB,GACvB,mBAAmB,CAAC"}
package/dist/errors.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Data } from "effect";
1
+ import { Data, Duration, Effect } from "effect";
2
2
  /** Command execution failed in the sandbox */
3
3
  export class ExecError extends Data.TaggedError("ExecError") {
4
4
  }
@@ -32,7 +32,45 @@ export class ConfigDirError extends Data.TaggedError("ConfigDirError") {
32
32
  /** Initialization or setup operation failed */
33
33
  export class InitError extends Data.TaggedError("InitError") {
34
34
  }
35
- /** Run exceeded the configured idle timeout */
36
- export class TimeoutError extends Data.TaggedError("TimeoutError") {
35
+ /** Run exceeded the configured agent idle timeout */
36
+ export class AgentIdleTimeoutError extends Data.TaggedError("AgentIdleTimeoutError") {
37
+ }
38
+ /** Git worktree create or prune timed out */
39
+ export class WorktreeTimeoutError extends Data.TaggedError("WorktreeTimeoutError") {
40
+ }
41
+ /** Sandbox container start timed out */
42
+ export class ContainerStartTimeoutError extends Data.TaggedError("ContainerStartTimeoutError") {
43
+ }
44
+ /** Copying files to worktree timed out */
45
+ export class CopyToWorktreeTimeoutError extends Data.TaggedError("CopyToWorktreeTimeoutError") {
46
+ }
47
+ /** Git sync-in for isolated providers timed out */
48
+ export class SyncInTimeoutError extends Data.TaggedError("SyncInTimeoutError") {
49
+ }
50
+ /** onSandboxReady hook command timed out */
51
+ export class HookTimeoutError extends Data.TaggedError("HookTimeoutError") {
52
+ }
53
+ /** Git config setup command timed out */
54
+ export class GitSetupTimeoutError extends Data.TaggedError("GitSetupTimeoutError") {
55
+ }
56
+ /** Prompt shell expression expansion timed out */
57
+ export class PromptExpansionTimeoutError extends Data.TaggedError("PromptExpansionTimeoutError") {
58
+ }
59
+ /** Commit collection timed out */
60
+ export class CommitCollectionTimeoutError extends Data.TaggedError("CommitCollectionTimeoutError") {
61
+ }
62
+ /** Merge-to-host branch timed out */
63
+ export class MergeToHostTimeoutError extends Data.TaggedError("MergeToHostTimeoutError") {
64
+ }
65
+ /**
66
+ * Wrap an effect with a timeout that fails with a specific error on expiry.
67
+ * Uses `Effect.timeoutFail` under the hood.
68
+ */
69
+ export const withTimeout = (timeoutMs, onTimeout) => (effect) => effect.pipe(Effect.timeoutFail({
70
+ duration: Duration.millis(timeoutMs),
71
+ onTimeout,
72
+ }));
73
+ /** Session capture (read, rewrite, or write) failed */
74
+ export class SessionCaptureError extends Data.TaggedError("SessionCaptureError") {
37
75
  }
38
76
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,8CAA8C;AAC9C,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAGzD;CAAG;AAEL,2CAA2C;AAC3C,MAAM,OAAO,aAAc,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,CAGjE;CAAG;AAEL,gDAAgD;AAChD,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAEzD;CAAG;AAEL,6CAA6C;AAC7C,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAE7D;CAAG;AAEL,6CAA6C;AAC7C,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAE7D;CAAG;AAEL,+CAA+C;AAC/C,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAEzD;CAAG;AAEL,oCAAoC;AACpC,MAAM,OAAO,aAAc,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,CAEjE;CAAG;AAEL,gDAAgD;AAChD,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAE7D;CAAG;AAEL,8BAA8B;AAC9B,MAAM,OAAO,UAAW,SAAQ,IAAI,CAAC,WAAW,CAAC,YAAY,CAI3D;CAAG;AAEL,4CAA4C;AAC5C,MAAM,OAAO,cAAe,SAAQ,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAEnE;CAAG;AAEL,+CAA+C;AAC/C,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAEzD;CAAG;AAEL,+CAA+C;AAC/C,MAAM,OAAO,YAAa,SAAQ,IAAI,CAAC,WAAW,CAAC,cAAc,CAK/D;CAAG"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhD,8CAA8C;AAC9C,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAGzD;CAAG;AAEL,2CAA2C;AAC3C,MAAM,OAAO,aAAc,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,CAGjE;CAAG;AAEL,gDAAgD;AAChD,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAEzD;CAAG;AAEL,6CAA6C;AAC7C,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAE7D;CAAG;AAEL,6CAA6C;AAC7C,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAE7D;CAAG;AAEL,+CAA+C;AAC/C,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAEzD;CAAG;AAEL,oCAAoC;AACpC,MAAM,OAAO,aAAc,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,CAEjE;CAAG;AAEL,gDAAgD;AAChD,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAE7D;CAAG;AAEL,8BAA8B;AAC9B,MAAM,OAAO,UAAW,SAAQ,IAAI,CAAC,WAAW,CAAC,YAAY,CAI3D;CAAG;AAEL,4CAA4C;AAC5C,MAAM,OAAO,cAAe,SAAQ,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAEnE;CAAG;AAEL,+CAA+C;AAC/C,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAEzD;CAAG;AAEL,qDAAqD;AACrD,MAAM,OAAO,qBAAsB,SAAQ,IAAI,CAAC,WAAW,CACzD,uBAAuB,CAMvB;CAAG;AAEL,6CAA6C;AAC7C,MAAM,OAAO,oBAAqB,SAAQ,IAAI,CAAC,WAAW,CACxD,sBAAsB,CAMtB;CAAG;AAEL,wCAAwC;AACxC,MAAM,OAAO,0BAA2B,SAAQ,IAAI,CAAC,WAAW,CAC9D,4BAA4B,CAI5B;CAAG;AAEL,0CAA0C;AAC1C,MAAM,OAAO,0BAA2B,SAAQ,IAAI,CAAC,WAAW,CAC9D,4BAA4B,CAK5B;CAAG;AAEL,mDAAmD;AACnD,MAAM,OAAO,kBAAmB,SAAQ,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAG3E;CAAG;AAEL,4CAA4C;AAC5C,MAAM,OAAO,gBAAiB,SAAQ,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAIvE;CAAG;AAEL,yCAAyC;AACzC,MAAM,OAAO,oBAAqB,SAAQ,IAAI,CAAC,WAAW,CACxD,sBAAsB,CAKtB;CAAG;AAEL,kDAAkD;AAClD,MAAM,OAAO,2BAA4B,SAAQ,IAAI,CAAC,WAAW,CAC/D,6BAA6B,CAK7B;CAAG;AAEL,kCAAkC;AAClC,MAAM,OAAO,4BAA6B,SAAQ,IAAI,CAAC,WAAW,CAChE,8BAA8B,CAI9B;CAAG;AAEL,qCAAqC;AACrC,MAAM,OAAO,uBAAwB,SAAQ,IAAI,CAAC,WAAW,CAC3D,yBAAyB,CAMzB;CAAG;AAEL;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GACtB,CAAI,SAAiB,EAAE,SAAkB,EAAE,EAAE,CAC7C,CAAW,MAA+B,EAA+B,EAAE,CACzE,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,WAAW,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;IACpC,SAAS;CACV,CAAC,CACH,CAAC;AAEN,uDAAuD;AACvD,MAAM,OAAO,mBAAoB,SAAQ,IAAI,CAAC,WAAW,CACvD,qBAAqB,CAIrB;CAAG"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,15 @@
1
1
  export { run } from "./run.js";
2
- export type { RunOptions, RunResult, LoggingOption } from "./run.js";
2
+ export type { RunOptions, RunResult, LoggingOption, IterationResult, } from "./run.js";
3
3
  export { interactive } from "./interactive.js";
4
4
  export type { InteractiveOptions, InteractiveResult } from "./interactive.js";
5
5
  export { createSandbox } from "./createSandbox.js";
6
6
  export type { CreateSandboxOptions, Sandbox, SandboxRunOptions, SandboxRunResult, SandboxInteractiveOptions, SandboxInteractiveResult, CloseResult, } from "./createSandbox.js";
7
+ export { createWorktree } from "./createWorktree.js";
8
+ export type { CreateWorktreeOptions, Worktree, WorktreeBranchStrategy, WorktreeInteractiveOptions, WorktreeRunOptions, WorktreeRunResult, WorktreeCreateSandboxOptions, } from "./createWorktree.js";
7
9
  export type { PromptArgs } from "./PromptArgumentSubstitution.js";
10
+ export { hostSessionStore, sandboxSessionStore, transferSession, } from "./SessionStore.js";
11
+ export type { SessionStore } from "./SessionStore.js";
12
+ export type { SandboxHooks } from "./SandboxLifecycle.js";
8
13
  export type { MountConfig } from "./MountConfig.js";
9
14
  export { claudeCode, codex, opencode, pi } from "./AgentProvider.js";
10
15
  export type { AgentProvider, AgentCommandOptions, ClaudeCodeOptions, CodexOptions, OpenCodeOptions, PiOptions, } from "./AgentProvider.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EACV,oBAAoB,EACpB,OAAO,EACP,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,wBAAwB,EACxB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACrE,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,sBAAsB,EACtB,8BAA8B,EAC9B,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EACV,oBAAoB,EACpB,OAAO,EACP,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,wBAAwB,EACxB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EACV,qBAAqB,EACrB,QAAQ,EACR,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACrE,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,sBAAsB,EACtB,8BAA8B,EAC9B,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  export { run } from "./run.js";
2
2
  export { interactive } from "./interactive.js";
3
3
  export { createSandbox } from "./createSandbox.js";
4
+ export { createWorktree } from "./createWorktree.js";
5
+ export { hostSessionStore, sandboxSessionStore, transferSession, } from "./SessionStore.js";
4
6
  export { claudeCode, codex, opencode, pi } from "./AgentProvider.js";
5
7
  export { createBindMountSandboxProvider, createIsolatedSandboxProvider, } from "./SandboxProvider.js";
6
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYnD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AASrE,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAO/B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAWrD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AASrE,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC"}
@@ -19,7 +19,7 @@ export interface InteractiveOptions {
19
19
  /** Hooks to run during sandbox lifecycle */
20
20
  readonly hooks?: SandboxHooks;
21
21
  /** Paths relative to the host repo root to copy into the worktree before sandbox start. */
22
- readonly copyToWorkspace?: string[];
22
+ readonly copyToWorktree?: string[];
23
23
  /** Key-value map for {{KEY}} placeholder substitution in prompts */
24
24
  readonly promptArgs?: PromptArgs;
25
25
  /** Environment variables to inject into the sandbox. */
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASxD,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EAIf,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EACL,KAAK,UAAU,EAKhB,MAAM,iCAAiC,CAAC;AAGzC,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IACtC,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;qHACiH;IACjH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,2FAA2F;IAC3F,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,wDAAwD;IACxD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpC,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,6DAqTvB,CAAC"}
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASxD,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EAIf,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EACL,KAAK,UAAU,EAKhB,MAAM,iCAAiC,CAAC;AAGzC,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IACtC,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;qHACiH;IACjH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,2FAA2F;IAC3F,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,wDAAwD;IACxD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpC,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,6DAsUvB,CAAC"}