@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
@@ -13,15 +13,27 @@ export interface OrchestrateOptions {
13
13
  readonly branch?: string;
14
14
  readonly provider: AgentProvider;
15
15
  readonly completionSignal?: string | string[];
16
- /** Idle timeout in seconds. If the agent produces no output for this long, it fails with TimeoutError. Default: 600 (10 minutes) */
16
+ /** Idle timeout in seconds. If the agent produces no output for this long, it fails with AgentIdleTimeoutError. Default: 600 (10 minutes) */
17
17
  readonly idleTimeoutSeconds?: number;
18
18
  /** Optional name for the run, prepended to status messages as [name] */
19
19
  readonly name?: string;
20
20
  /** @internal Test-only override for the idle warning interval in milliseconds. Default: 60000 (1 minute). */
21
21
  readonly _idleWarningIntervalMs?: number;
22
+ /** @internal Override for the host projects directory (for testing). */
23
+ readonly _hostProjectsDir?: string;
24
+ /** Resume a prior Claude Code session by ID. Applied to iteration 1 only. */
25
+ readonly resumeSession?: string;
26
+ }
27
+ /** Per-iteration result carrying an optional session ID. */
28
+ export interface IterationResult {
29
+ /** Claude Code session ID extracted from the init line, or undefined for non-Claude agents. */
30
+ readonly sessionId?: string;
31
+ /** Absolute host path to the captured session JSONL, or undefined when capture is disabled or provider is non-Claude. */
32
+ readonly sessionFilePath?: string;
22
33
  }
23
34
  export interface OrchestrateResult {
24
- readonly iterationsRun: number;
35
+ /** Per-iteration results (use `iterations.length` for the count). */
36
+ readonly iterations: IterationResult[];
25
37
  /** The matched completion signal string, or undefined if none fired. */
26
38
  readonly completionSignal?: string;
27
39
  readonly stdout: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Orchestrator.d.ts","sourceRoot":"","sources":["../src/Orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA4G5D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9C,oIAAoI;IACpI,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,6GAA6G;IAC7G,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yJAAyJ;IACzJ,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC;AAED,eAAO,MAAM,WAAW,2GAwIvB,CAAC"}
1
+ {"version":3,"file":"Orchestrator.d.ts","sourceRoot":"","sources":["../src/Orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAOvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAoB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQxD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAgH5D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9C,6IAA6I;IAC7I,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,6GAA6G;IAC7G,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,wEAAwE;IACxE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,yHAAyH;IACzH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,eAAe,EAAE,CAAC;IACvC,wEAAwE;IACxE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yJAAyJ;IACzJ,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC;AAED,eAAO,MAAM,WAAW,2GAyMvB,CAAC"}
@@ -1,17 +1,19 @@
1
+ import { join } from "node:path";
1
2
  import { Deferred, Effect } from "effect";
2
3
  import { Display } from "./Display.js";
3
4
  import { preprocessPrompt } from "./PromptPreprocessor.js";
4
- import { AgentError, TimeoutError } from "./errors.js";
5
+ import { AgentError, AgentIdleTimeoutError, SessionCaptureError, } from "./errors.js";
5
6
  import { SandboxFactory } from "./SandboxFactory.js";
6
7
  import { withSandboxLifecycle } from "./SandboxLifecycle.js";
7
8
  import { TextDeltaBuffer } from "./TextDeltaBuffer.js";
9
+ import { hostSessionStore, sandboxSessionStore, transferSession, } from "./SessionStore.js";
8
10
  const IDLE_WARNING_INTERVAL_MS = 60_000;
9
- const invokeAgent = (sandbox, sandboxRepoDir, prompt, provider, idleTimeoutMs, onText, onToolCall, onIdleWarning, idleWarningIntervalMs = IDLE_WARNING_INTERVAL_MS) => Effect.gen(function* () {
11
+ const invokeAgent = (sandbox, sandboxRepoDir, prompt, provider, idleTimeoutMs, onText, onToolCall, onIdleWarning, idleWarningIntervalMs = IDLE_WARNING_INTERVAL_MS, resumeSession) => Effect.gen(function* () {
10
12
  let resultText = "";
13
+ let sessionId;
11
14
  // Deferred that will be failed when the idle timer fires
12
15
  const timeoutSignal = yield* Deferred.make();
13
16
  let timeoutHandle = null;
14
- const idleTimeoutSeconds = idleTimeoutMs / 1000;
15
17
  // Periodic idle warning state
16
18
  let warningHandle = null;
17
19
  let idleMinuteCounter = 0;
@@ -28,9 +30,9 @@ const invokeAgent = (sandbox, sandboxRepoDir, prompt, provider, idleTimeoutMs, o
28
30
  if (timeoutHandle !== null)
29
31
  clearTimeout(timeoutHandle);
30
32
  timeoutHandle = setTimeout(() => {
31
- Effect.runPromise(Deferred.fail(timeoutSignal, new TimeoutError({
32
- message: `Agent idle for ${idleTimeoutSeconds} seconds — no output received. Consider increasing the idle timeout with --idle-timeout.`,
33
- idleTimeoutSeconds,
33
+ Effect.runPromise(Deferred.fail(timeoutSignal, new AgentIdleTimeoutError({
34
+ message: `Agent idle for ${idleTimeoutMs / 1000} seconds — no output received. Consider increasing the idle timeout with --idle-timeout.`,
35
+ timeoutMs: idleTimeoutMs,
34
36
  }))).catch(() => { });
35
37
  }, idleTimeoutMs);
36
38
  // Reset warning interval on activity
@@ -41,6 +43,7 @@ const invokeAgent = (sandbox, sandboxRepoDir, prompt, provider, idleTimeoutMs, o
41
43
  const execResult = yield* sandbox.exec(provider.buildPrintCommand({
42
44
  prompt,
43
45
  dangerouslySkipPermissions: true,
46
+ resumeSession,
44
47
  }), {
45
48
  onLine: (line) => {
46
49
  resetIdleTimer();
@@ -54,6 +57,9 @@ const invokeAgent = (sandbox, sandboxRepoDir, prompt, provider, idleTimeoutMs, o
54
57
  else if (parsed.type === "tool_call") {
55
58
  onToolCall(parsed.name, parsed.args);
56
59
  }
60
+ else if (parsed.type === "session_id") {
61
+ sessionId = parsed.sessionId;
62
+ }
57
63
  }
58
64
  },
59
65
  cwd: sandboxRepoDir,
@@ -63,7 +69,7 @@ const invokeAgent = (sandbox, sandboxRepoDir, prompt, provider, idleTimeoutMs, o
63
69
  message: `${provider.name} exited with code ${execResult.exitCode}:\n${execResult.stderr}`,
64
70
  }));
65
71
  }
66
- return { result: resultText || execResult.stdout };
72
+ return { result: resultText || execResult.stdout, sessionId };
67
73
  }).pipe(Effect.ensuring(Effect.sync(() => {
68
74
  if (timeoutHandle !== null) {
69
75
  clearTimeout(timeoutHandle);
@@ -96,19 +102,36 @@ export const orchestrate = (options) => {
96
102
  }
97
103
  const label = (msg) => options.name ? `[${options.name}] ${msg}` : msg;
98
104
  const allCommits = [];
105
+ const allIterations = [];
99
106
  let allStdout = "";
100
107
  let resolvedBranch = "";
101
108
  let iterationPreservedPath;
102
109
  for (let i = 1; i <= iterations; i++) {
103
110
  yield* display.status(label(`Iteration ${i}/${iterations}`), "info");
104
- const sandboxResult = yield* factory.withSandbox(({ hostWorktreePath, sandboxWorkspacePath, applyToHost }) => withSandboxLifecycle({
111
+ const sandboxResult = yield* factory.withSandbox(({ hostWorktreePath, sandboxRepoPath, applyToHost, bindMountHandle }) => withSandboxLifecycle({
105
112
  hostRepoDir,
106
- sandboxRepoDir: sandboxWorkspacePath,
113
+ sandboxRepoDir: sandboxRepoPath,
107
114
  hooks,
108
115
  branch,
109
116
  hostWorktreePath,
110
117
  applyToHost,
111
118
  }, (ctx) => Effect.gen(function* () {
119
+ // Shared sandbox session infrastructure for resume + capture
120
+ const sandboxProjectsDir = join("/home/agent", ".claude", "projects");
121
+ // Resume session: transfer JSONL from host to sandbox before iteration 1
122
+ const iterationResumeSession = i === 1 ? options.resumeSession : undefined;
123
+ if (iterationResumeSession && bindMountHandle) {
124
+ yield* display.status(label("Resuming session"), "info");
125
+ const sbStore = sandboxSessionStore(ctx.sandboxRepoDir, bindMountHandle, sandboxProjectsDir);
126
+ const hStore = hostSessionStore(hostRepoDir, options._hostProjectsDir);
127
+ yield* Effect.tryPromise({
128
+ try: () => transferSession(hStore, sbStore, iterationResumeSession),
129
+ catch: (e) => new SessionCaptureError({
130
+ message: `Session resume failed: ${e instanceof Error ? e.message : String(e)}`,
131
+ sessionId: iterationResumeSession,
132
+ }),
133
+ });
134
+ }
112
135
  // Preprocess prompt (run !`command` expressions inside sandbox)
113
136
  const fullPrompt = yield* preprocessPrompt(prompt, ctx.sandbox, ctx.sandboxRepoDir);
114
137
  yield* display.status(label("Agent started"), "success");
@@ -130,15 +153,32 @@ export const orchestrate = (options) => {
130
153
  : `Agent idle for ${minutes} minutes`;
131
154
  Effect.runPromise(display.status(label(msg), "warn"));
132
155
  };
133
- const { result: agentOutput } = yield* invokeAgent(ctx.sandbox, ctx.sandboxRepoDir, fullPrompt, provider, idleTimeoutMs, onText, onToolCall, onIdleWarning, options._idleWarningIntervalMs);
156
+ const { result: agentOutput, sessionId } = yield* invokeAgent(ctx.sandbox, ctx.sandboxRepoDir, fullPrompt, provider, idleTimeoutMs, onText, onToolCall, onIdleWarning, options._idleWarningIntervalMs, iterationResumeSession);
134
157
  // Flush any remaining buffered text deltas
135
158
  textBuffer.dispose();
136
159
  yield* display.status(label("Agent stopped"), "info");
160
+ // Capture session while sandbox is still alive
161
+ let sessionFilePath;
162
+ if (provider.captureSessions && sessionId && bindMountHandle) {
163
+ yield* display.status(label("Capturing session"), "info");
164
+ const sbStore = sandboxSessionStore(ctx.sandboxRepoDir, bindMountHandle, sandboxProjectsDir);
165
+ const hStore = hostSessionStore(hostRepoDir, options._hostProjectsDir);
166
+ yield* Effect.tryPromise({
167
+ try: () => transferSession(sbStore, hStore, sessionId),
168
+ catch: (e) => new SessionCaptureError({
169
+ message: `Session capture failed: ${e instanceof Error ? e.message : String(e)}`,
170
+ sessionId,
171
+ }),
172
+ });
173
+ sessionFilePath = hStore.sessionFilePath(sessionId);
174
+ }
137
175
  // Check completion signal
138
176
  const matchedSignal = completionSignals.find((sig) => agentOutput.includes(sig));
139
177
  return {
140
178
  completionSignal: matchedSignal,
141
179
  stdout: agentOutput,
180
+ sessionId,
181
+ sessionFilePath,
142
182
  };
143
183
  })));
144
184
  const lifecycleResult = sandboxResult.value;
@@ -146,10 +186,14 @@ export const orchestrate = (options) => {
146
186
  allCommits.push(...lifecycleResult.commits);
147
187
  allStdout += lifecycleResult.result.stdout;
148
188
  resolvedBranch = lifecycleResult.branch;
189
+ allIterations.push({
190
+ sessionId: lifecycleResult.result.sessionId,
191
+ sessionFilePath: lifecycleResult.result.sessionFilePath,
192
+ });
149
193
  if (lifecycleResult.result.completionSignal !== undefined) {
150
194
  yield* display.status(label(`Agent signaled completion after ${i} iteration(s).`), "success");
151
195
  return {
152
- iterationsRun: i,
196
+ iterations: allIterations,
153
197
  completionSignal: lifecycleResult.result.completionSignal,
154
198
  stdout: allStdout,
155
199
  commits: allCommits,
@@ -160,7 +204,7 @@ export const orchestrate = (options) => {
160
204
  }
161
205
  yield* display.status(label(`Reached max iterations (${iterations}).`), "info");
162
206
  return {
163
- iterationsRun: iterations,
207
+ iterations: allIterations,
164
208
  completionSignal: undefined,
165
209
  stdout: allStdout,
166
210
  commits: allCommits,
@@ -1 +1 @@
1
- {"version":3,"file":"Orchestrator.js","sourceRoot":"","sources":["../src/Orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Orchestrator.js","sourceRoot":"","sources":["../src/Orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,cAAc,EAAoB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAqB,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAI3B,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,GAAG,CAClB,OAAuB,EACvB,cAAsB,EACtB,MAAc,EACd,QAAuB,EACvB,aAAqB,EACrB,MAA8B,EAC9B,UAAyD,EACzD,aAAwC,EACxC,qBAAqB,GAAW,wBAAwB,EACxD,aAAsB,EAC+C,EAAE,CACvE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,SAA6B,CAAC;IAElC,yDAAyD;IACzD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAgC,CAAC;IAC3E,IAAI,aAAa,GAAyC,IAAI,CAAC;IAE/D,8BAA8B;IAC9B,IAAI,aAAa,GAA0C,IAAI,CAAC;IAChE,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAChC,IAAI,aAAa,KAAK,IAAI;YAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QACzD,iBAAiB,GAAG,CAAC,CAAC;QACtB,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,iBAAiB,EAAE,CAAC;YACpB,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACnC,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,IAAI,aAAa,KAAK,IAAI;YAAE,YAAY,CAAC,aAAa,CAAC,CAAC;QACxD,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,MAAM,CAAC,UAAU,CACf,QAAQ,CAAC,IAAI,CACX,aAAa,EACb,IAAI,qBAAqB,CAAC;gBACxB,OAAO,EAAE,kBAAkB,aAAa,GAAG,IAAI,0FAA0F;gBACzI,SAAS,EAAE,aAAa;aACzB,CAAC,CACH,CACF,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpB,CAAC,EAAE,aAAa,CAAC,CAAC;QAClB,qCAAqC;QACrC,oBAAoB,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,cAAc,EAAE,CAAC;IAEjB,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACrC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CACpC,QAAQ,CAAC,iBAAiB,CAAC;YACzB,MAAM;YACN,0BAA0B,EAAE,IAAI;YAChC,aAAa;SACd,CAAC,EACF;YACE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,cAAc,EAAE,CAAC;gBACjB,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACtB,CAAC;yBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACpC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;oBAC7B,CAAC;yBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBACvC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;oBACvC,CAAC;yBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBACxC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;oBAC/B,CAAC;gBACH,CAAC;YACH,CAAC;YACD,GAAG,EAAE,cAAc;SACpB,CACF,CAAC;QAEF,IAAI,UAAU,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,UAAU,CAAC;gBACb,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,qBAAqB,UAAU,CAAC,QAAQ,MAAM,UAAU,CAAC,MAAM,EAAE;aAC3F,CAAC,CACH,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,aAAa,CAAC,aAAa,CAAC,CAAC;YAC7B,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CACH,CACF,CAAC;IAEF,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC;AAEL,MAAM,yBAAyB,GAAG,6BAA6B,CAAC;AAChE,MAAM,4BAA4B,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc;AA0C5D,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAA2B,EAC+C,EAAE;IAC5E,MAAM,aAAa,GACjB,CAAC,OAAO,CAAC,kBAAkB,IAAI,4BAA4B,CAAC,GAAG,IAAI,CAAC;IACtE,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;QAC/B,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAChE,OAAO,CAAC;QACV,IAAI,iBAA2B,CAAC;QAChC,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC3C,iBAAiB,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnD,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,iBAAiB,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,GAAW,EAAU,EAAE,CACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAElD,MAAM,UAAU,GAAsB,EAAE,CAAC;QACzC,MAAM,aAAa,GAAsB,EAAE,CAAC;QAC5C,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,sBAA0C,CAAC;QAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAErE,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAC9C,CAAC,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE,CACtE,oBAAoB,CAClB;gBACE,WAAW;gBACX,cAAc,EAAE,eAAe;gBAC/B,KAAK;gBACL,MAAM;gBACN,gBAAgB;gBAChB,WAAW;aACZ,EACD,CAAC,GAAG,EAAE,EAAE,CACN,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAClB,6DAA6D;gBAC7D,MAAM,kBAAkB,GAAG,IAAI,CAC7B,aAAa,EACb,SAAS,EACT,UAAU,CACX,CAAC;gBAEF,yEAAyE;gBACzE,MAAM,sBAAsB,GAC1B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9C,IAAI,sBAAsB,IAAI,eAAe,EAAE,CAAC;oBAC9C,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC;oBACzD,MAAM,OAAO,GAAG,mBAAmB,CACjC,GAAG,CAAC,cAAc,EAClB,eAAe,EACf,kBAAkB,CACnB,CAAC;oBACF,MAAM,MAAM,GAAG,gBAAgB,CAC7B,WAAW,EACX,OAAO,CAAC,gBAAgB,CACzB,CAAC;oBACF,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;wBACvB,GAAG,EAAE,GAAG,EAAE,CACR,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,sBAAsB,CAAC;wBAC1D,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,IAAI,mBAAmB,CAAC;4BACtB,OAAO,EAAE,0BAA0B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;4BAC/E,SAAS,EAAE,sBAAsB;yBAClC,CAAC;qBACL,CAAC,CAAC;gBACL,CAAC;gBAED,gEAAgE;gBAChE,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,gBAAgB,CACxC,MAAM,EACN,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,cAAc,CACnB,CAAC;gBAEF,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,CAAC;gBAEzD,6DAA6D;gBAC7D,qDAAqD;gBACrD,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC/C,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzC,CAAC,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;oBAC9B,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC,CAAC;gBACF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,aAAqB,EAAE,EAAE;oBACzD,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;gBAC3D,CAAC,CAAC;gBACF,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,EAAE;oBACxC,MAAM,GAAG,GACP,OAAO,KAAK,CAAC;wBACX,CAAC,CAAC,yBAAyB;wBAC3B,CAAC,CAAC,kBAAkB,OAAO,UAAU,CAAC;oBAC1C,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;gBACxD,CAAC,CAAC;gBACF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,CAC3D,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,cAAc,EAClB,UAAU,EACV,QAAQ,EACR,aAAa,EACb,MAAM,EACN,UAAU,EACV,aAAa,EACb,OAAO,CAAC,sBAAsB,EAC9B,sBAAsB,CACvB,CAAC;gBAEF,2CAA2C;gBAC3C,UAAU,CAAC,OAAO,EAAE,CAAC;gBAErB,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC;gBAEtD,+CAA+C;gBAC/C,IAAI,eAAmC,CAAC;gBACxC,IAAI,QAAQ,CAAC,eAAe,IAAI,SAAS,IAAI,eAAe,EAAE,CAAC;oBAC7D,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC1D,MAAM,OAAO,GAAG,mBAAmB,CACjC,GAAG,CAAC,cAAc,EAClB,eAAe,EACf,kBAAkB,CACnB,CAAC;oBACF,MAAM,MAAM,GAAG,gBAAgB,CAC7B,WAAW,EACX,OAAO,CAAC,gBAAgB,CACzB,CAAC;oBACF,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;wBACvB,GAAG,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;wBACtD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,IAAI,mBAAmB,CAAC;4BACtB,OAAO,EAAE,2BAA2B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;4BAChF,SAAS;yBACV,CAAC;qBACL,CAAC,CAAC;oBACH,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBACtD,CAAC;gBAED,0BAA0B;gBAC1B,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACnD,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC1B,CAAC;gBACF,OAAO;oBACL,gBAAgB,EAAE,aAAa;oBAC/B,MAAM,EAAE,WAAW;oBACnB,SAAS;oBACT,eAAe;iBACP,CAAC;YACb,CAAC,CAAC,CACL,CACJ,CAAC;YAEF,MAAM,eAAe,GAAG,aAAa,CAAC,KAAK,CAAC;YAC5C,sBAAsB,GAAG,aAAa,CAAC,qBAAqB,CAAC;YAE7D,UAAU,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,SAAS,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;YAC3C,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC;YAExC,aAAa,CAAC,IAAI,CAAC;gBACjB,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS;gBAC3C,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,eAAe;aACxD,CAAC,CAAC;YAEH,IAAI,eAAe,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBAC1D,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CACnB,KAAK,CAAC,mCAAmC,CAAC,gBAAgB,CAAC,EAC3D,SAAS,CACV,CAAC;gBACF,OAAO;oBACL,UAAU,EAAE,aAAa;oBACzB,gBAAgB,EAAE,eAAe,CAAC,MAAM,CAAC,gBAAgB;oBACzD,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,UAAU;oBACnB,MAAM,EAAE,cAAc;oBACtB,qBAAqB,EAAE,sBAAsB;iBAC9C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CACnB,KAAK,CAAC,2BAA2B,UAAU,IAAI,CAAC,EAChD,MAAM,CACP,CAAC;QACF,OAAO;YACL,UAAU,EAAE,aAAa;YACzB,gBAAgB,EAAE,SAAS;YAC3B,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,cAAc;YACtB,qBAAqB,EAAE,sBAAsB;SAC9C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -10,6 +10,16 @@ import { PodmanError } from "./errors.js";
10
10
  export declare const buildImage: (imageName: string, containerfileDir: string, options?: {
11
11
  readonly containerfile?: string | undefined;
12
12
  } | undefined) => Effect.Effect<void, PodmanError, never>;
13
+ /**
14
+ * Fix ownership of a directory inside the container.
15
+ * Runs as root so the target owner can write to the path.
16
+ *
17
+ * Non-fatal: if chown fails (e.g. read-only mount), a warning is logged
18
+ * but the error is not propagated. Matches Docker provider semantics.
19
+ *
20
+ * @param owner - chown-compatible owner spec, e.g. "1000:1000"
21
+ */
22
+ export declare const chownInContainer: (containerName: string, owner: string, path: string) => Effect.Effect<void, never, never>;
13
23
  /**
14
24
  * Remove a Podman image.
15
25
  */
@@ -1 +1 @@
1
- {"version":3,"file":"PodmanLifecycle.d.ts","sourceRoot":"","sources":["../src/PodmanLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAwB1C;;;;;;GAMG;AACH,eAAO,MAAM,UAAU;;yDAkBnB,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,WAAW,gEAKpB,CAAC"}
1
+ {"version":3,"file":"PodmanLifecycle.d.ts","sourceRoot":"","sources":["../src/PodmanLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAwB1C;;;;;;GAMG;AACH,eAAO,MAAM,UAAU;;yDAkBnB,CAAC;AAEL;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,2FAuB1B,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,WAAW,gEAKpB,CAAC"}
@@ -36,6 +36,28 @@ export const buildImage = (imageName, containerfileDir, options) => Effect.gen(f
36
36
  yield* podmanExec(["build", "-t", imageName, resolve(containerfileDir)]);
37
37
  }
38
38
  });
39
+ /**
40
+ * Fix ownership of a directory inside the container.
41
+ * Runs as root so the target owner can write to the path.
42
+ *
43
+ * Non-fatal: if chown fails (e.g. read-only mount), a warning is logged
44
+ * but the error is not propagated. Matches Docker provider semantics.
45
+ *
46
+ * @param owner - chown-compatible owner spec, e.g. "1000:1000"
47
+ */
48
+ export const chownInContainer = (containerName, owner, path) => Effect.asVoid(podmanExec([
49
+ "exec",
50
+ "-u",
51
+ "root",
52
+ containerName,
53
+ "chown",
54
+ "-R",
55
+ owner,
56
+ path,
57
+ ])).pipe(Effect.catchAll((error) => {
58
+ console.warn(`chown -R ${owner} ${path} in container ${containerName} failed (non-fatal): ${error.message}`);
59
+ return Effect.void;
60
+ }));
39
61
  /**
40
62
  * Remove a Podman image.
41
63
  */
@@ -1 +1 @@
1
- {"version":3,"file":"PodmanLifecycle.js","sourceRoot":"","sources":["../src/PodmanLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAC,IAAc,EAAsC,EAAE,CACxE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;IACtB,QAAQ,CACN,QAAQ,EACR,IAAI,EACJ,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,EAC/B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACxB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CACJ,MAAM,CAAC,IAAI,CACT,IAAI,WAAW,CAAC;gBACd,OAAO,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;aAC5E,CAAC,CACH,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,SAAiB,EACjB,gBAAwB,EACxB,OAA6C,EACX,EAAE,CACpC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,CAAC,UAAU,CAAC;YAChB,OAAO;YACP,IAAI;YACJ,SAAS;YACT,IAAI;YACJ,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;YAC9B,OAAO,CAAC,GAAG,EAAE;SACd,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CAAC,CAAC;AAEL;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,SAAiB,EACiB,EAAE,CACpC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"PodmanLifecycle.js","sourceRoot":"","sources":["../src/PodmanLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAC,IAAc,EAAsC,EAAE,CACxE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;IACtB,QAAQ,CACN,QAAQ,EACR,IAAI,EACJ,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,EAC/B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACxB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CACJ,MAAM,CAAC,IAAI,CACT,IAAI,WAAW,CAAC;gBACd,OAAO,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;aAC5E,CAAC,CACH,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,SAAiB,EACjB,gBAAwB,EACxB,OAA6C,EACX,EAAE,CACpC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,CAAC,UAAU,CAAC;YAChB,OAAO;YACP,IAAI;YACJ,SAAS;YACT,IAAI;YACJ,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;YAC9B,OAAO,CAAC,GAAG,EAAE;SACd,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CAAC,CAAC;AAEL;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,aAAqB,EACrB,KAAa,EACb,IAAY,EACS,EAAE,CACvB,MAAM,CAAC,MAAM,CACX,UAAU,CAAC;IACT,MAAM;IACN,IAAI;IACJ,MAAM;IACN,aAAa;IACb,OAAO;IACP,IAAI;IACJ,KAAK;IACL,IAAI;CACL,CAAC,CACH,CAAC,IAAI,CACJ,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;IACxB,OAAO,CAAC,IAAI,CACV,YAAY,KAAK,IAAI,IAAI,iBAAiB,aAAa,wBAAwB,KAAK,CAAC,OAAO,EAAE,CAC/F,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC,CACH,CAAC;AAEJ;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,SAAiB,EACiB,EAAE,CACpC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { Effect } from "effect";
2
2
  import { Display } from "./Display.js";
3
- import { PromptError } from "./errors.js";
3
+ import { PromptError, PromptExpansionTimeoutError } from "./errors.js";
4
4
  import type { ExecError } from "./errors.js";
5
5
  import type { SandboxService } from "./SandboxFactory.js";
6
- export declare const preprocessPrompt: (prompt: string, sandbox: SandboxService, cwd: string) => Effect.Effect<string, ExecError | PromptError, Display>;
6
+ export declare const preprocessPrompt: (prompt: string, sandbox: SandboxService, cwd: string) => Effect.Effect<string, ExecError | PromptError | PromptExpansionTimeoutError, Display>;
7
7
  //# sourceMappingURL=PromptPreprocessor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PromptPreprocessor.d.ts","sourceRoot":"","sources":["../src/PromptPreprocessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,eAAO,MAAM,gBAAgB,mHA6D5B,CAAC"}
1
+ {"version":3,"file":"PromptPreprocessor.d.ts","sourceRoot":"","sources":["../src/PromptPreprocessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,WAAW,EACX,2BAA2B,EAE5B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,eAAO,MAAM,gBAAgB,iJA2E5B,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { Effect } from "effect";
2
2
  import { Display } from "./Display.js";
3
- import { PromptError } from "./errors.js";
3
+ import { PromptError, PromptExpansionTimeoutError, withTimeout, } from "./errors.js";
4
+ const PROMPT_EXPANSION_TIMEOUT_MS = 30_000;
4
5
  export const preprocessPrompt = (prompt, sandbox, cwd) => {
5
6
  const pattern = /!`([^`]+)`/g;
6
7
  const matches = [...prompt.matchAll(pattern)];
@@ -21,7 +22,11 @@ export const preprocessPrompt = (prompt, sandbox, cwd) => {
21
22
  ? Effect.fail(new PromptError({
22
23
  message: `Command \`${command}\` exited with code ${execResult.exitCode}: ${execResult.stderr}`,
23
24
  }))
24
- : Effect.succeed(execResult.stdout.trimEnd()));
25
+ : Effect.succeed(execResult.stdout.trimEnd())).pipe(withTimeout(PROMPT_EXPANSION_TIMEOUT_MS, () => new PromptExpansionTimeoutError({
26
+ message: `Shell expression \`${command}\` timed out after ${PROMPT_EXPANSION_TIMEOUT_MS}ms`,
27
+ timeoutMs: PROMPT_EXPANSION_TIMEOUT_MS,
28
+ expression: command,
29
+ })));
25
30
  }), { concurrency: "unbounded" });
26
31
  // Log per-command token counts
27
32
  for (let i = 0; i < matches.length; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"PromptPreprocessor.js","sourceRoot":"","sources":["../src/PromptPreprocessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PromptPreprocessor.js","sourceRoot":"","sources":["../src/PromptPreprocessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,WAAW,GACZ,MAAM,aAAa,CAAC;AAIrB,MAAM,2BAA2B,GAAG,MAAM,CAAC;AAE3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,MAAc,EACd,OAAuB,EACvB,GAAW,EAKX,EAAE;IACF,MAAM,OAAO,GAAG,aAAa,CAAC;IAC9B,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAE9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;QAC/B,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,6BAA6B,EAAE,CAAC,OAAO,EAAE,EAAE,CACvE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,6CAA6C;YAC7C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;YACrB,CAAC;YAED,mCAAmC;YACnC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;gBAC1B,OAAO,MAAM,CAAC,OAAO,CACnB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAC9B,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,CAAC,QAAQ,KAAK,CAAC;oBACvB,CAAC,CAAC,MAAM,CAAC,IAAI,CACT,IAAI,WAAW,CAAC;wBACd,OAAO,EAAE,aAAa,OAAO,uBAAuB,UAAU,CAAC,QAAQ,KAAK,UAAU,CAAC,MAAM,EAAE;qBAChG,CAAC,CACH;oBACH,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAClD,CAAC,IAAI,CACJ,WAAW,CACT,2BAA2B,EAC3B,GAAG,EAAE,CACH,IAAI,2BAA2B,CAAC;oBAC9B,OAAO,EAAE,sBAAsB,OAAO,sBAAsB,2BAA2B,IAAI;oBAC3F,SAAS,EAAE,2BAA2B;oBACtC,UAAU,EAAE,OAAO;iBACpB,CAAC,CACL,CACF,CAAC;YACJ,CAAC,CAAC,EACF,EAAE,WAAW,EAAE,WAAW,EAAE,CAC7B,CAAC;YAEF,+BAA+B;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,OAAO,YAAY,MAAM,SAAS,CAAC,CAAC;YACjD,CAAC;YAED,wFAAwF;YACxF,IAAI,MAAM,GAAG,MAAM,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAM,CAAC;gBAC3B,MAAM;oBACJ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;wBACtB,OAAO,CAAC,CAAC,CAAC;wBACV,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { Context, Effect, Layer } from "effect";
2
2
  import { FileSystem } from "@effect/platform";
3
3
  import type { PlatformError } from "@effect/platform/Error";
4
- import { CopyError, ExecError, SyncError, WorktreeError, type DockerError } from "./errors.js";
4
+ import { CopyError, ExecError, SyncError, type SandboxError } from "./errors.js";
5
5
  import { Display } from "./Display.js";
6
6
  import type { SandboxProvider, BranchStrategy, BindMountSandboxHandle, IsolatedSandboxHandle, NoSandboxHandle } from "./SandboxProvider.js";
7
+ import { type SandboxHooks } from "./SandboxLifecycle.js";
7
8
  export interface ExecResult {
8
9
  readonly stdout: string;
9
10
  readonly stderr: string;
@@ -25,20 +26,21 @@ export declare class Sandbox extends Sandbox_base {
25
26
  }
26
27
  /**
27
28
  * Wrap a Promise-based sandbox handle into an Effect-based SandboxService layer.
28
- * Works with both bind-mount handles (copyIn/copyFileOut unsupported) and
29
- * isolated handles (copyIn/copyFileOut delegated to the handle).
29
+ * Delegates copyIn/copyFileOut to the handle when available.
30
30
  */
31
31
  export declare const makeSandboxLayerFromHandle: (handle: BindMountSandboxHandle | IsolatedSandboxHandle | NoSandboxHandle) => Layer.Layer<Sandbox, never, never>;
32
32
  /** The mount point inside the sandbox where the project worktree is bound. */
33
- export declare const SANDBOX_WORKSPACE_DIR = "/home/agent/workspace";
33
+ export declare const SANDBOX_REPO_DIR = "/home/agent/workspace";
34
34
  export interface SandboxInfo {
35
- /** Host-side path to the worktree directory (worktree mode only). */
35
+ /** Host-side path to the worktree directory (worktree/branch mode only). */
36
36
  readonly hostWorktreePath?: string;
37
- /** Absolute path to the workspace inside the sandbox, as reported by the provider. */
38
- readonly sandboxWorkspacePath: string;
37
+ /** Absolute path to the worktree inside the sandbox, as reported by the provider. */
38
+ readonly sandboxRepoPath: string;
39
39
  /** Sync changes from the sandbox to the host worktree.
40
40
  * For isolated providers, runs syncOut. For bind-mount providers, this is a no-op. */
41
41
  readonly applyToHost: () => Effect.Effect<void, SyncError>;
42
+ /** The bind-mount sandbox handle, available when the provider is a bind-mount provider. Used for session capture. */
43
+ readonly bindMountHandle?: BindMountSandboxHandle;
42
44
  }
43
45
  export interface WithSandboxResult<A> {
44
46
  readonly value: A;
@@ -46,7 +48,7 @@ export interface WithSandboxResult<A> {
46
48
  readonly preservedWorktreePath?: string;
47
49
  }
48
50
  declare const SandboxFactory_base: Context.TagClass<SandboxFactory, "SandboxFactory", {
49
- readonly withSandbox: <A, E, R>(makeEffect: (info: SandboxInfo) => Effect.Effect<A, E, R | Sandbox>) => Effect.Effect<WithSandboxResult<A>, E | DockerError | SyncError | WorktreeError, Exclude<R, Sandbox>>;
51
+ readonly withSandbox: <A, E, R>(makeEffect: (info: SandboxInfo) => Effect.Effect<A, E, R | Sandbox>) => Effect.Effect<WithSandboxResult<A>, E | SandboxError, Exclude<R, Sandbox>>;
50
52
  }>;
51
53
  export declare class SandboxFactory extends SandboxFactory_base {
52
54
  }
@@ -54,7 +56,7 @@ declare const SandboxConfig_base: Context.TagClass<SandboxConfig, "SandboxConfig
54
56
  readonly env: Record<string, string>;
55
57
  readonly hostRepoDir: string;
56
58
  /** Paths relative to the host repo root to copy into the worktree before sandbox start. */
57
- readonly copyToWorkspace?: string[] | undefined;
59
+ readonly copyToWorktree?: string[] | undefined;
58
60
  /** When specified, the run name is included in the auto-generated branch and worktree names. */
59
61
  readonly name?: string | undefined;
60
62
  /** Sandbox provider — delegates sandbox lifecycle to the provider. */
@@ -63,11 +65,11 @@ declare const SandboxConfig_base: Context.TagClass<SandboxConfig, "SandboxConfig
63
65
  readonly branchStrategy: BranchStrategy;
64
66
  /** When false, reuse an existing worktree instead of failing on collision. Default: true. */
65
67
  readonly throwOnDuplicateWorktree?: boolean | undefined;
68
+ /** Lifecycle hooks grouped by execution location (host or sandbox). */
69
+ readonly hooks?: SandboxHooks | undefined;
66
70
  }>;
67
71
  export declare class SandboxConfig extends SandboxConfig_base {
68
72
  }
69
- /** @deprecated Use SandboxConfig instead. */
70
- export declare const WorktreeSandboxConfig: typeof SandboxConfig;
71
73
  export interface MountEntry {
72
74
  readonly hostPath: string;
73
75
  readonly sandboxPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"SandboxFactory.d.ts","sourceRoot":"","sources":["../src/SandboxFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAQ,KAAK,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAEL,SAAS,EACT,SAAS,EACT,SAAS,EAET,aAAa,EACb,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAEd,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,CACb,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,KACxE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAE1C,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,CACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAEpC,uDAAuD;IACvD,QAAQ,CAAC,WAAW,EAAE,CACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;CACrC;;AAED,qBAAa,OAAQ,SAAQ,YAG1B;CAAG;AAEN;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,kHA+CnC,CAAC;AAEL,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,sFAAsF;IACtF,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC;2FACuF;IACvF,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,6GAA6G;IAC7G,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC;;2BAK0B,CAAC,EAAE,CAAC,EAAE,CAAC;;AAHlC,qBAAa,cAAe,SAAQ,mBAWjC;CAAG;;;;IAOF,2FAA2F;;IAE3F,gGAAgG;;IAEhG,sEAAsE;;IAEtE,6EAA6E;;IAE7E,6FAA6F;;;AAbjG,qBAAa,aAAc,SAAQ,kBAgBhC;CAAG;AAEN,6CAA6C;AAC7C,eAAO,MAAM,qBAAqB,sBAAgB,CAAC;AAqEnD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,wFAwBzB,CAAC;AAUL,eAAO,MAAM,4BAA4B;;CAiQxC,CAAC"}
1
+ {"version":3,"file":"SandboxFactory.d.ts","sourceRoot":"","sources":["../src/SandboxFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAQ,KAAK,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAGL,SAAS,EACT,SAAS,EACT,SAAS,EAGT,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAEd,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIxE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,CACb,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,KACxE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAE1C,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,CACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAEpC,uDAAuD;IACvD,QAAQ,CAAC,WAAW,EAAE,CACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;CACrC;;AAED,qBAAa,OAAQ,SAAQ,YAG1B;CAAG;AAmCN;;;GAGG;AACH,eAAO,MAAM,0BAA0B,kHAkCnC,CAAC;AAEL,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,qFAAqF;IACrF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;2FACuF;IACvF,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3D,qHAAqH;IACrH,QAAQ,CAAC,eAAe,CAAC,EAAE,sBAAsB,CAAC;CACnD;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,6GAA6G;IAC7G,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC;;2BAK0B,CAAC,EAAE,CAAC,EAAE,CAAC;;AAHlC,qBAAa,cAAe,SAAQ,mBAWjC;CAAG;;;;IAOF,2FAA2F;;IAE3F,gGAAgG;;IAEhG,sEAAsE;;IAEtE,6EAA6E;;IAE7E,6FAA6F;;IAE7F,uEAAuE;;;AAf3E,qBAAa,aAAc,SAAQ,kBAkBhC;CAAG;AAqEN,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,wFAwBzB,CAAC;AAUL,eAAO,MAAM,4BAA4B;;CA6QxC,CAAC"}