@evermore.work/adapter-utils 2026.509.0-canary.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 (93) hide show
  1. package/dist/billing.d.ts +2 -0
  2. package/dist/billing.d.ts.map +1 -0
  3. package/dist/billing.js +16 -0
  4. package/dist/billing.js.map +1 -0
  5. package/dist/billing.test.d.ts +2 -0
  6. package/dist/billing.test.d.ts.map +1 -0
  7. package/dist/billing.test.js +14 -0
  8. package/dist/billing.test.js.map +1 -0
  9. package/dist/command-managed-runtime.d.ts +45 -0
  10. package/dist/command-managed-runtime.d.ts.map +1 -0
  11. package/dist/command-managed-runtime.js +164 -0
  12. package/dist/command-managed-runtime.js.map +1 -0
  13. package/dist/command-managed-runtime.test.d.ts +2 -0
  14. package/dist/command-managed-runtime.test.d.ts.map +1 -0
  15. package/dist/command-managed-runtime.test.js +102 -0
  16. package/dist/command-managed-runtime.test.js.map +1 -0
  17. package/dist/command-redaction.d.ts +3 -0
  18. package/dist/command-redaction.d.ts.map +1 -0
  19. package/dist/command-redaction.js +17 -0
  20. package/dist/command-redaction.js.map +1 -0
  21. package/dist/execution-target-sandbox.test.d.ts +2 -0
  22. package/dist/execution-target-sandbox.test.d.ts.map +1 -0
  23. package/dist/execution-target-sandbox.test.js +392 -0
  24. package/dist/execution-target-sandbox.test.js.map +1 -0
  25. package/dist/execution-target.d.ts +150 -0
  26. package/dist/execution-target.d.ts.map +1 -0
  27. package/dist/execution-target.js +791 -0
  28. package/dist/execution-target.js.map +1 -0
  29. package/dist/execution-target.test.d.ts +2 -0
  30. package/dist/execution-target.test.d.ts.map +1 -0
  31. package/dist/execution-target.test.js +314 -0
  32. package/dist/execution-target.test.js.map +1 -0
  33. package/dist/index.d.ts +8 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +5 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/log-redaction.d.ts +9 -0
  38. package/dist/log-redaction.d.ts.map +1 -0
  39. package/dist/log-redaction.js +88 -0
  40. package/dist/log-redaction.js.map +1 -0
  41. package/dist/remote-execution-env.d.ts +2 -0
  42. package/dist/remote-execution-env.d.ts.map +1 -0
  43. package/dist/remote-execution-env.js +46 -0
  44. package/dist/remote-execution-env.js.map +1 -0
  45. package/dist/remote-managed-runtime.d.ts +31 -0
  46. package/dist/remote-managed-runtime.d.ts.map +1 -0
  47. package/dist/remote-managed-runtime.js +81 -0
  48. package/dist/remote-managed-runtime.js.map +1 -0
  49. package/dist/sandbox-callback-bridge.d.ts +132 -0
  50. package/dist/sandbox-callback-bridge.d.ts.map +1 -0
  51. package/dist/sandbox-callback-bridge.js +925 -0
  52. package/dist/sandbox-callback-bridge.js.map +1 -0
  53. package/dist/sandbox-callback-bridge.test.d.ts +2 -0
  54. package/dist/sandbox-callback-bridge.test.d.ts.map +1 -0
  55. package/dist/sandbox-callback-bridge.test.js +719 -0
  56. package/dist/sandbox-callback-bridge.test.js.map +1 -0
  57. package/dist/sandbox-managed-runtime.d.ts +54 -0
  58. package/dist/sandbox-managed-runtime.d.ts.map +1 -0
  59. package/dist/sandbox-managed-runtime.js +234 -0
  60. package/dist/sandbox-managed-runtime.js.map +1 -0
  61. package/dist/sandbox-managed-runtime.test.d.ts +2 -0
  62. package/dist/sandbox-managed-runtime.test.d.ts.map +1 -0
  63. package/dist/sandbox-managed-runtime.test.js +118 -0
  64. package/dist/sandbox-managed-runtime.test.js.map +1 -0
  65. package/dist/sandbox-shell.d.ts +2 -0
  66. package/dist/sandbox-shell.d.ts.map +1 -0
  67. package/dist/sandbox-shell.js +4 -0
  68. package/dist/sandbox-shell.js.map +1 -0
  69. package/dist/server-utils.d.ts +253 -0
  70. package/dist/server-utils.d.ts.map +1 -0
  71. package/dist/server-utils.js +1522 -0
  72. package/dist/server-utils.js.map +1 -0
  73. package/dist/server-utils.test.d.ts +2 -0
  74. package/dist/server-utils.test.d.ts.map +1 -0
  75. package/dist/server-utils.test.js +685 -0
  76. package/dist/server-utils.test.js.map +1 -0
  77. package/dist/session-compaction.d.ts +25 -0
  78. package/dist/session-compaction.d.ts.map +1 -0
  79. package/dist/session-compaction.js +154 -0
  80. package/dist/session-compaction.js.map +1 -0
  81. package/dist/ssh-fixture.test.d.ts +2 -0
  82. package/dist/ssh-fixture.test.d.ts.map +1 -0
  83. package/dist/ssh-fixture.test.js +214 -0
  84. package/dist/ssh-fixture.test.js.map +1 -0
  85. package/dist/ssh.d.ts +111 -0
  86. package/dist/ssh.d.ts.map +1 -0
  87. package/dist/ssh.js +1098 -0
  88. package/dist/ssh.js.map +1 -0
  89. package/dist/types.d.ts +465 -0
  90. package/dist/types.d.ts.map +1 -0
  91. package/dist/types.js +5 -0
  92. package/dist/types.js.map +1 -0
  93. package/package.json +41 -0
@@ -0,0 +1,392 @@
1
+ import { createServer } from "node:http";
2
+ import { mkdir, mkdtemp, rm } from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { afterEach, describe, expect, it, vi } from "vitest";
6
+ import { adapterExecutionTargetSessionIdentity, adapterExecutionTargetToRemoteSpec, adapterExecutionTargetUsesEvermoreBridge, runAdapterExecutionTargetProcess, runAdapterExecutionTargetShellCommand, startAdapterExecutionTargetEvermoreBridge, } from "./execution-target.js";
7
+ import { runChildProcess } from "./server-utils.js";
8
+ describe("sandbox adapter execution targets", () => {
9
+ const cleanupDirs = [];
10
+ afterEach(async () => {
11
+ vi.unstubAllEnvs();
12
+ while (cleanupDirs.length > 0) {
13
+ const dir = cleanupDirs.pop();
14
+ if (!dir)
15
+ continue;
16
+ await rm(dir, { recursive: true, force: true }).catch(() => undefined);
17
+ }
18
+ });
19
+ function createLocalSandboxRunner() {
20
+ let counter = 0;
21
+ return {
22
+ execute: async (input) => {
23
+ counter += 1;
24
+ const command = input.command === "bash" ? "/bin/bash" : input.command;
25
+ return runChildProcess(`sandbox-run-${counter}`, command, input.args ?? [], {
26
+ cwd: input.cwd ?? process.cwd(),
27
+ env: input.env ?? {},
28
+ stdin: input.stdin,
29
+ timeoutSec: Math.max(1, Math.ceil((input.timeoutMs ?? 30_000) / 1000)),
30
+ graceSec: 5,
31
+ onLog: input.onLog ?? (async () => { }),
32
+ onSpawn: input.onSpawn
33
+ ? async (meta) => input.onSpawn?.({ pid: meta.pid, startedAt: meta.startedAt })
34
+ : undefined,
35
+ });
36
+ },
37
+ };
38
+ }
39
+ it("executes through the provider-neutral runner without a remote spec", async () => {
40
+ const runner = {
41
+ execute: vi.fn(async () => ({
42
+ exitCode: 0,
43
+ signal: null,
44
+ timedOut: false,
45
+ stdout: "ok\n",
46
+ stderr: "",
47
+ pid: null,
48
+ startedAt: new Date().toISOString(),
49
+ })),
50
+ };
51
+ const target = {
52
+ kind: "remote",
53
+ transport: "sandbox",
54
+ providerKey: "acme-sandbox",
55
+ environmentId: "env-1",
56
+ leaseId: "lease-1",
57
+ remoteCwd: "/workspace",
58
+ timeoutMs: 30_000,
59
+ runner,
60
+ };
61
+ expect(adapterExecutionTargetToRemoteSpec(target)).toBeNull();
62
+ const result = await runAdapterExecutionTargetProcess("run-1", target, "agent-cli", ["--json"], {
63
+ cwd: "/local/workspace",
64
+ env: { TOKEN: "token" },
65
+ stdin: "prompt",
66
+ timeoutSec: 5,
67
+ graceSec: 1,
68
+ onLog: async () => { },
69
+ });
70
+ expect(result.stdout).toBe("ok\n");
71
+ expect(runner.execute).toHaveBeenCalledWith(expect.objectContaining({
72
+ command: "agent-cli",
73
+ args: ["--json"],
74
+ cwd: "/workspace",
75
+ env: { TOKEN: "token" },
76
+ stdin: "prompt",
77
+ timeoutMs: 5000,
78
+ }));
79
+ expect(adapterExecutionTargetSessionIdentity(target)).toEqual({
80
+ transport: "sandbox",
81
+ providerKey: "acme-sandbox",
82
+ environmentId: "env-1",
83
+ leaseId: "lease-1",
84
+ remoteCwd: "/workspace",
85
+ });
86
+ });
87
+ it("runs shell commands through the same runner", async () => {
88
+ const runner = {
89
+ execute: vi.fn(async () => ({
90
+ exitCode: 0,
91
+ signal: null,
92
+ timedOut: false,
93
+ stdout: "/home/sandbox",
94
+ stderr: "",
95
+ pid: null,
96
+ startedAt: new Date().toISOString(),
97
+ })),
98
+ };
99
+ const target = {
100
+ kind: "remote",
101
+ transport: "sandbox",
102
+ remoteCwd: "/workspace",
103
+ runner,
104
+ };
105
+ await runAdapterExecutionTargetShellCommand("run-2", target, 'printf %s "$HOME"', {
106
+ cwd: "/local/workspace",
107
+ env: {},
108
+ timeoutSec: 7,
109
+ });
110
+ expect(runner.execute).toHaveBeenCalledWith(expect.objectContaining({
111
+ command: "sh",
112
+ args: ["-lc", 'printf %s "$HOME"'],
113
+ cwd: "/workspace",
114
+ timeoutMs: 7000,
115
+ }));
116
+ });
117
+ it("strips inherited host identity env before sandbox execution", async () => {
118
+ vi.stubEnv("PATH", "/host/bin:/usr/bin");
119
+ vi.stubEnv("HOME", "/Users/local");
120
+ vi.stubEnv("TMPDIR", "/var/folders/local/T");
121
+ const runner = {
122
+ execute: vi.fn(async () => ({
123
+ exitCode: 0,
124
+ signal: null,
125
+ timedOut: false,
126
+ stdout: "ok\n",
127
+ stderr: "",
128
+ pid: null,
129
+ startedAt: new Date().toISOString(),
130
+ })),
131
+ };
132
+ const target = {
133
+ kind: "remote",
134
+ transport: "sandbox",
135
+ remoteCwd: "/workspace",
136
+ runner,
137
+ };
138
+ await runAdapterExecutionTargetProcess("run-1b", target, "agent-cli", ["--json"], {
139
+ cwd: "/local/workspace",
140
+ env: {
141
+ PATH: "/host/bin:/usr/bin",
142
+ HOME: "/Users/local",
143
+ TMPDIR: "/var/folders/local/T",
144
+ SAFE_VALUE: "visible",
145
+ },
146
+ timeoutSec: 5,
147
+ graceSec: 1,
148
+ onLog: async () => { },
149
+ });
150
+ expect(runner.execute).toHaveBeenCalledWith(expect.objectContaining({
151
+ env: {
152
+ SAFE_VALUE: "visible",
153
+ },
154
+ }));
155
+ });
156
+ it("preserves explicit remote identity env overrides for sandbox execution", async () => {
157
+ vi.stubEnv("PATH", "/host/bin:/usr/bin");
158
+ vi.stubEnv("HOME", "/Users/local");
159
+ const runner = {
160
+ execute: vi.fn(async () => ({
161
+ exitCode: 0,
162
+ signal: null,
163
+ timedOut: false,
164
+ stdout: "ok\n",
165
+ stderr: "",
166
+ pid: null,
167
+ startedAt: new Date().toISOString(),
168
+ })),
169
+ };
170
+ const target = {
171
+ kind: "remote",
172
+ transport: "sandbox",
173
+ remoteCwd: "/workspace",
174
+ runner,
175
+ };
176
+ await runAdapterExecutionTargetProcess("run-1c", target, "agent-cli", ["--json"], {
177
+ cwd: "/local/workspace",
178
+ env: {
179
+ PATH: "/custom/remote/bin:/usr/bin",
180
+ HOME: "/home/sandbox",
181
+ SAFE_VALUE: "visible",
182
+ },
183
+ timeoutSec: 5,
184
+ graceSec: 1,
185
+ onLog: async () => { },
186
+ });
187
+ expect(runner.execute).toHaveBeenCalledWith(expect.objectContaining({
188
+ env: {
189
+ PATH: "/custom/remote/bin:/usr/bin",
190
+ HOME: "/home/sandbox",
191
+ SAFE_VALUE: "visible",
192
+ },
193
+ }));
194
+ });
195
+ it("treats SSH targets as bridge-only", () => {
196
+ const target = {
197
+ kind: "remote",
198
+ transport: "ssh",
199
+ remoteCwd: "/workspace",
200
+ spec: {
201
+ host: "ssh.example.test",
202
+ port: 22,
203
+ username: "evermore",
204
+ remoteWorkspacePath: "/workspace",
205
+ remoteCwd: "/workspace",
206
+ privateKey: null,
207
+ knownHosts: null,
208
+ strictHostKeyChecking: true,
209
+ },
210
+ };
211
+ expect(adapterExecutionTargetUsesEvermoreBridge(target)).toBe(true);
212
+ expect(adapterExecutionTargetSessionIdentity(target)).toEqual({
213
+ transport: "ssh",
214
+ host: "ssh.example.test",
215
+ port: 22,
216
+ username: "evermore",
217
+ remoteCwd: "/workspace",
218
+ });
219
+ });
220
+ it("uses the provider-declared shell for sandbox helper commands", async () => {
221
+ const runner = {
222
+ execute: vi.fn(async () => ({
223
+ exitCode: 0,
224
+ signal: null,
225
+ timedOut: false,
226
+ stdout: "/home/sandbox",
227
+ stderr: "",
228
+ pid: null,
229
+ startedAt: new Date().toISOString(),
230
+ })),
231
+ };
232
+ const target = {
233
+ kind: "remote",
234
+ transport: "sandbox",
235
+ providerKey: "custom-provider",
236
+ shellCommand: "bash",
237
+ remoteCwd: "/workspace",
238
+ runner,
239
+ };
240
+ await runAdapterExecutionTargetShellCommand("run-2b", target, 'printf %s "$HOME"', {
241
+ cwd: "/local/workspace",
242
+ env: {},
243
+ timeoutSec: 7,
244
+ });
245
+ expect(runner.execute).toHaveBeenCalledWith(expect.objectContaining({
246
+ command: "bash",
247
+ args: ["-lc", 'printf %s "$HOME"'],
248
+ cwd: "/workspace",
249
+ timeoutMs: 7000,
250
+ }));
251
+ });
252
+ it("starts a localhost Evermore bridge for sandbox targets in bridge mode", async () => {
253
+ const rootDir = await mkdtemp(path.join(os.tmpdir(), "evermore-execution-target-bridge-"));
254
+ cleanupDirs.push(rootDir);
255
+ const remoteCwd = path.join(rootDir, "workspace");
256
+ const runtimeRootDir = path.join(remoteCwd, ".evermore-runtime", "codex");
257
+ await mkdir(runtimeRootDir, { recursive: true });
258
+ const requests = [];
259
+ const apiServer = createServer((req, res) => {
260
+ requests.push({
261
+ method: req.method ?? "GET",
262
+ url: req.url ?? "/",
263
+ auth: req.headers.authorization ?? null,
264
+ runId: typeof req.headers["x-evermore-run-id"] === "string" ? req.headers["x-evermore-run-id"] : null,
265
+ });
266
+ res.writeHead(200, { "content-type": "application/json" });
267
+ res.end(JSON.stringify({ ok: true }));
268
+ });
269
+ await new Promise((resolve, reject) => {
270
+ apiServer.once("error", reject);
271
+ apiServer.listen(0, "127.0.0.1", () => resolve());
272
+ });
273
+ const address = apiServer.address();
274
+ if (!address || typeof address === "string") {
275
+ throw new Error("Expected the bridge test API server to listen on a TCP port.");
276
+ }
277
+ const target = {
278
+ kind: "remote",
279
+ transport: "sandbox",
280
+ providerKey: "e2b",
281
+ environmentId: "env-1",
282
+ leaseId: "lease-1",
283
+ remoteCwd,
284
+ runner: createLocalSandboxRunner(),
285
+ timeoutMs: 30_000,
286
+ };
287
+ const bridge = await startAdapterExecutionTargetEvermoreBridge({
288
+ runId: "run-bridge",
289
+ target,
290
+ runtimeRootDir,
291
+ adapterKey: "codex",
292
+ hostApiToken: "real-run-jwt",
293
+ hostApiUrl: `http://127.0.0.1:${address.port}`,
294
+ });
295
+ try {
296
+ expect(bridge).not.toBeNull();
297
+ expect(bridge?.env.EVERMORE_API_URL).toMatch(/^http:\/\/127\.0\.0\.1:\d+$/);
298
+ expect(bridge?.env.EVERMORE_API_KEY).not.toBe("real-run-jwt");
299
+ expect(bridge?.env.EVERMORE_API_BRIDGE_MODE).toBe("queue_v1");
300
+ const response = await fetch(`${bridge.env.EVERMORE_API_URL}/api/agents/me`, {
301
+ headers: {
302
+ authorization: `Bearer ${bridge.env.EVERMORE_API_KEY}`,
303
+ accept: "application/json",
304
+ },
305
+ });
306
+ expect(response.status).toBe(200);
307
+ expect(await response.json()).toEqual({ ok: true });
308
+ expect(requests).toEqual([{
309
+ method: "GET",
310
+ url: "/api/agents/me",
311
+ auth: "Bearer real-run-jwt",
312
+ runId: "run-bridge",
313
+ }]);
314
+ }
315
+ finally {
316
+ await bridge?.stop();
317
+ await new Promise((resolve) => apiServer.close(() => resolve()));
318
+ }
319
+ });
320
+ it("fails oversized host responses with a 502 before returning them to the sandbox client", async () => {
321
+ const rootDir = await mkdtemp(path.join(os.tmpdir(), "evermore-execution-target-bridge-limit-"));
322
+ cleanupDirs.push(rootDir);
323
+ const remoteCwd = path.join(rootDir, "workspace");
324
+ const runtimeRootDir = path.join(remoteCwd, ".evermore-runtime", "codex");
325
+ await mkdir(runtimeRootDir, { recursive: true });
326
+ const requests = [];
327
+ const largeBody = "x".repeat(64);
328
+ const apiServer = createServer((req, res) => {
329
+ requests.push({
330
+ method: req.method ?? "GET",
331
+ url: req.url ?? "/",
332
+ auth: req.headers.authorization ?? null,
333
+ runId: typeof req.headers["x-evermore-run-id"] === "string" ? req.headers["x-evermore-run-id"] : null,
334
+ });
335
+ res.writeHead(200, {
336
+ "content-type": "application/json",
337
+ "content-length": String(Buffer.byteLength(largeBody, "utf8")),
338
+ });
339
+ res.end(largeBody);
340
+ });
341
+ await new Promise((resolve, reject) => {
342
+ apiServer.once("error", reject);
343
+ apiServer.listen(0, "127.0.0.1", () => resolve());
344
+ });
345
+ const address = apiServer.address();
346
+ if (!address || typeof address === "string") {
347
+ throw new Error("Expected the bridge test API server to listen on a TCP port.");
348
+ }
349
+ const target = {
350
+ kind: "remote",
351
+ transport: "sandbox",
352
+ providerKey: "e2b",
353
+ environmentId: "env-1",
354
+ leaseId: "lease-1",
355
+ remoteCwd,
356
+ runner: createLocalSandboxRunner(),
357
+ timeoutMs: 30_000,
358
+ };
359
+ const bridge = await startAdapterExecutionTargetEvermoreBridge({
360
+ runId: "run-bridge-limit",
361
+ target,
362
+ runtimeRootDir,
363
+ adapterKey: "codex",
364
+ hostApiToken: "real-run-jwt",
365
+ hostApiUrl: `http://127.0.0.1:${address.port}`,
366
+ maxBodyBytes: 32,
367
+ });
368
+ try {
369
+ const response = await fetch(`${bridge.env.EVERMORE_API_URL}/api/agents/me`, {
370
+ headers: {
371
+ authorization: `Bearer ${bridge.env.EVERMORE_API_KEY}`,
372
+ accept: "application/json",
373
+ },
374
+ });
375
+ expect(response.status).toBe(502);
376
+ await expect(response.json()).resolves.toEqual({
377
+ error: "Bridge response body exceeded the configured size limit of 32 bytes.",
378
+ });
379
+ expect(requests).toEqual([{
380
+ method: "GET",
381
+ url: "/api/agents/me",
382
+ auth: "Bearer real-run-jwt",
383
+ runId: "run-bridge-limit",
384
+ }]);
385
+ }
386
+ finally {
387
+ await bridge?.stop();
388
+ await new Promise((resolve) => apiServer.close(() => resolve()));
389
+ }
390
+ });
391
+ });
392
+ //# sourceMappingURL=execution-target-sandbox.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-target-sandbox.test.js","sourceRoot":"","sources":["../src/execution-target-sandbox.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import type { SshRemoteExecutionSpec } from "./ssh.js";
2
+ import { type CommandManagedRuntimeRunner } from "./command-managed-runtime.js";
3
+ import { type RemoteManagedRuntimeAsset } from "./remote-managed-runtime.js";
4
+ import { type RunProcessResult, type TerminalResultCleanupOptions } from "./server-utils.js";
5
+ export interface AdapterLocalExecutionTarget {
6
+ kind: "local";
7
+ environmentId?: string | null;
8
+ leaseId?: string | null;
9
+ }
10
+ export interface AdapterSshExecutionTarget {
11
+ kind: "remote";
12
+ transport: "ssh";
13
+ environmentId?: string | null;
14
+ leaseId?: string | null;
15
+ remoteCwd: string;
16
+ spec: SshRemoteExecutionSpec;
17
+ }
18
+ export interface AdapterSandboxExecutionTarget {
19
+ kind: "remote";
20
+ transport: "sandbox";
21
+ providerKey?: string | null;
22
+ shellCommand?: "bash" | "sh" | null;
23
+ environmentId?: string | null;
24
+ leaseId?: string | null;
25
+ remoteCwd: string;
26
+ timeoutMs?: number | null;
27
+ runner?: CommandManagedRuntimeRunner;
28
+ }
29
+ export type AdapterExecutionTarget = AdapterLocalExecutionTarget | AdapterSshExecutionTarget | AdapterSandboxExecutionTarget;
30
+ export type AdapterRemoteExecutionSpec = SshRemoteExecutionSpec;
31
+ export type AdapterManagedRuntimeAsset = RemoteManagedRuntimeAsset;
32
+ export interface PreparedAdapterExecutionTargetRuntime {
33
+ target: AdapterExecutionTarget;
34
+ runtimeRootDir: string | null;
35
+ assetDirs: Record<string, string>;
36
+ restoreWorkspace(): Promise<void>;
37
+ }
38
+ export interface AdapterExecutionTargetProcessOptions {
39
+ cwd: string;
40
+ env: Record<string, string>;
41
+ stdin?: string;
42
+ timeoutSec: number;
43
+ graceSec: number;
44
+ onLog: (stream: "stdout" | "stderr", chunk: string) => Promise<void>;
45
+ onSpawn?: (meta: {
46
+ pid: number;
47
+ processGroupId: number | null;
48
+ startedAt: string;
49
+ }) => Promise<void>;
50
+ terminalResultCleanup?: TerminalResultCleanupOptions;
51
+ }
52
+ export interface AdapterExecutionTargetShellOptions {
53
+ cwd: string;
54
+ env: Record<string, string>;
55
+ timeoutSec?: number;
56
+ graceSec?: number;
57
+ onLog?: (stream: "stdout" | "stderr", chunk: string) => Promise<void>;
58
+ }
59
+ export interface AdapterExecutionTargetEvermoreBridgeHandle {
60
+ env: Record<string, string>;
61
+ stop(): Promise<void>;
62
+ }
63
+ export { sanitizeRemoteExecutionEnv } from "./remote-execution-env.js";
64
+ export declare function adapterExecutionTargetToRemoteSpec(target: AdapterExecutionTarget | null | undefined): AdapterRemoteExecutionSpec | null;
65
+ export declare function adapterExecutionTargetIsRemote(target: AdapterExecutionTarget | null | undefined): boolean;
66
+ export declare function adapterExecutionTargetUsesManagedHome(target: AdapterExecutionTarget | null | undefined): boolean;
67
+ export declare function adapterExecutionTargetRemoteCwd(target: AdapterExecutionTarget | null | undefined, localCwd: string): string;
68
+ export declare function resolveAdapterExecutionTargetCwd(target: AdapterExecutionTarget | null | undefined, configuredCwd: string | null | undefined, localFallbackCwd: string): string;
69
+ export declare function adapterExecutionTargetUsesEvermoreBridge(target: AdapterExecutionTarget | null | undefined): boolean;
70
+ export declare function describeAdapterExecutionTarget(target: AdapterExecutionTarget | null | undefined): string;
71
+ export declare function ensureAdapterExecutionTargetCommandResolvable(command: string, target: AdapterExecutionTarget | null | undefined, cwd: string, env: NodeJS.ProcessEnv, options?: {
72
+ installCommand?: string | null;
73
+ }): Promise<void>;
74
+ export declare function resolveAdapterExecutionTargetCommandForLogs(command: string, target: AdapterExecutionTarget | null | undefined, cwd: string, env: NodeJS.ProcessEnv): Promise<string>;
75
+ export declare function runAdapterExecutionTargetProcess(runId: string, target: AdapterExecutionTarget | null | undefined, command: string, args: string[], options: AdapterExecutionTargetProcessOptions): Promise<RunProcessResult>;
76
+ export declare function runAdapterExecutionTargetShellCommand(runId: string, target: AdapterExecutionTarget | null | undefined, command: string, options: AdapterExecutionTargetShellOptions): Promise<RunProcessResult>;
77
+ export interface AdapterSandboxInstallCommandCheck {
78
+ code: string;
79
+ level: "info" | "warn" | "error";
80
+ message: string;
81
+ detail?: string;
82
+ hint?: string;
83
+ }
84
+ export declare function maybeRunSandboxInstallCommand(input: {
85
+ runId: string;
86
+ target: AdapterExecutionTarget | null | undefined;
87
+ adapterKey: string;
88
+ installCommand: string;
89
+ /** When provided, skip the install if `command -v <detectCommand>` succeeds. */
90
+ detectCommand?: string | null;
91
+ env?: Record<string, string>;
92
+ timeoutSec?: number;
93
+ }): Promise<AdapterSandboxInstallCommandCheck | null>;
94
+ export declare function readAdapterExecutionTargetHomeDir(runId: string, target: AdapterExecutionTarget | null | undefined, options: AdapterExecutionTargetShellOptions): Promise<string | null>;
95
+ export declare function ensureAdapterExecutionTargetRuntimeCommandInstalled(input: {
96
+ runId: string;
97
+ target: AdapterExecutionTarget | null | undefined;
98
+ installCommand?: string | null;
99
+ detectCommand?: string | null;
100
+ cwd: string;
101
+ env: Record<string, string>;
102
+ timeoutSec?: number;
103
+ graceSec?: number;
104
+ onLog?: AdapterExecutionTargetShellOptions["onLog"];
105
+ }): Promise<void>;
106
+ export declare function ensureAdapterExecutionTargetFile(runId: string, target: AdapterExecutionTarget | null | undefined, filePath: string, options: AdapterExecutionTargetShellOptions): Promise<void>;
107
+ /**
108
+ * Ensure a working directory exists (and is a directory) on the execution target.
109
+ *
110
+ * For local targets this delegates to the local `ensureAbsoluteDirectory` helper
111
+ * (Node fs). For remote (SSH/sandbox) targets it shells out and runs
112
+ * `mkdir -p` (when allowed) followed by a `[ -d ]` check so the result reflects
113
+ * the directory state inside the environment, not on the Evermore host.
114
+ *
115
+ * Throws an Error with a human-readable message on failure.
116
+ */
117
+ export declare function ensureAdapterExecutionTargetDirectory(runId: string, target: AdapterExecutionTarget | null | undefined, cwd: string, options: AdapterExecutionTargetShellOptions & {
118
+ createIfMissing?: boolean;
119
+ }): Promise<void>;
120
+ export declare function adapterExecutionTargetSessionIdentity(target: AdapterExecutionTarget | null | undefined): Record<string, unknown> | null;
121
+ export declare function adapterExecutionTargetSessionMatches(saved: unknown, target: AdapterExecutionTarget | null | undefined): boolean;
122
+ export declare function parseAdapterExecutionTarget(value: unknown): AdapterExecutionTarget | null;
123
+ export declare function adapterExecutionTargetFromRemoteExecution(remoteExecution: unknown, metadata?: Pick<AdapterLocalExecutionTarget, "environmentId" | "leaseId">): AdapterExecutionTarget | null;
124
+ export declare function readAdapterExecutionTarget(input: {
125
+ executionTarget?: unknown;
126
+ legacyRemoteExecution?: unknown;
127
+ }): AdapterExecutionTarget | null;
128
+ export declare function prepareAdapterExecutionTargetRuntime(input: {
129
+ target: AdapterExecutionTarget | null | undefined;
130
+ adapterKey: string;
131
+ workspaceLocalDir: string;
132
+ workspaceExclude?: string[];
133
+ preserveAbsentOnRestore?: string[];
134
+ assets?: AdapterManagedRuntimeAsset[];
135
+ installCommand?: string | null;
136
+ /** When provided alongside `installCommand`, skip the install if the binary is already on PATH. */
137
+ detectCommand?: string | null;
138
+ }): Promise<PreparedAdapterExecutionTargetRuntime>;
139
+ export declare function runtimeAssetDir(prepared: Pick<PreparedAdapterExecutionTargetRuntime, "assetDirs">, key: string, fallbackRemoteCwd: string): string;
140
+ export declare function startAdapterExecutionTargetEvermoreBridge(input: {
141
+ runId: string;
142
+ target: AdapterExecutionTarget | null | undefined;
143
+ runtimeRootDir: string | null | undefined;
144
+ adapterKey: string;
145
+ hostApiToken: string | null | undefined;
146
+ hostApiUrl?: string | null;
147
+ onLog?: (stream: "stdout" | "stderr", chunk: string) => Promise<void>;
148
+ maxBodyBytes?: number | null;
149
+ }): Promise<AdapterExecutionTargetEvermoreBridgeHandle | null>;
150
+ //# sourceMappingURL=execution-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-target.d.ts","sourceRoot":"","sources":["../src/execution-target.ts"],"names":[],"mappings":"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"}