zeitlich 0.2.41 → 0.2.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{activities-qUflxmfS.d.cts → activities-Coafq5zr.d.cts} +2 -2
- package/dist/{activities-D_g13S3y.d.ts → activities-CrN-ghLo.d.ts} +2 -2
- package/dist/adapters/sandbox/daytona/index.cjs +4 -23
- package/dist/adapters/sandbox/daytona/index.cjs.map +1 -1
- package/dist/adapters/sandbox/daytona/index.d.cts +18 -86
- package/dist/adapters/sandbox/daytona/index.d.ts +18 -86
- package/dist/adapters/sandbox/daytona/index.js +4 -23
- package/dist/adapters/sandbox/daytona/index.js.map +1 -1
- package/dist/adapters/sandbox/daytona/workflow.cjs +1 -7
- package/dist/adapters/sandbox/daytona/workflow.cjs.map +1 -1
- package/dist/adapters/sandbox/daytona/workflow.d.cts +9 -2
- package/dist/adapters/sandbox/daytona/workflow.d.ts +9 -2
- package/dist/adapters/sandbox/daytona/workflow.js +1 -7
- package/dist/adapters/sandbox/daytona/workflow.js.map +1 -1
- package/dist/adapters/sandbox/e2b/index.cjs +9 -0
- package/dist/adapters/sandbox/e2b/index.cjs.map +1 -1
- package/dist/adapters/sandbox/e2b/index.d.cts +13 -5
- package/dist/adapters/sandbox/e2b/index.d.ts +13 -5
- package/dist/adapters/sandbox/e2b/index.js +9 -1
- package/dist/adapters/sandbox/e2b/index.js.map +1 -1
- package/dist/adapters/sandbox/e2b/workflow.cjs.map +1 -1
- package/dist/adapters/sandbox/e2b/workflow.d.cts +4 -2
- package/dist/adapters/sandbox/e2b/workflow.d.ts +4 -2
- package/dist/adapters/sandbox/e2b/workflow.js.map +1 -1
- package/dist/adapters/sandbox/inmemory/index.cjs +11 -0
- package/dist/adapters/sandbox/inmemory/index.cjs.map +1 -1
- package/dist/adapters/sandbox/inmemory/index.d.cts +11 -3
- package/dist/adapters/sandbox/inmemory/index.d.ts +11 -3
- package/dist/adapters/sandbox/inmemory/index.js +11 -1
- package/dist/adapters/sandbox/inmemory/index.js.map +1 -1
- package/dist/adapters/sandbox/inmemory/workflow.cjs.map +1 -1
- package/dist/adapters/sandbox/inmemory/workflow.d.cts +4 -2
- package/dist/adapters/sandbox/inmemory/workflow.d.ts +4 -2
- package/dist/adapters/sandbox/inmemory/workflow.js.map +1 -1
- package/dist/adapters/thread/anthropic/index.cjs.map +1 -1
- package/dist/adapters/thread/anthropic/index.d.cts +5 -5
- package/dist/adapters/thread/anthropic/index.d.ts +5 -5
- package/dist/adapters/thread/anthropic/index.js.map +1 -1
- package/dist/adapters/thread/anthropic/workflow.d.cts +5 -5
- package/dist/adapters/thread/anthropic/workflow.d.ts +5 -5
- package/dist/adapters/thread/google-genai/index.cjs.map +1 -1
- package/dist/adapters/thread/google-genai/index.d.cts +5 -5
- package/dist/adapters/thread/google-genai/index.d.ts +5 -5
- package/dist/adapters/thread/google-genai/index.js.map +1 -1
- package/dist/adapters/thread/google-genai/workflow.d.cts +5 -5
- package/dist/adapters/thread/google-genai/workflow.d.ts +5 -5
- package/dist/adapters/thread/langchain/index.cjs.map +1 -1
- package/dist/adapters/thread/langchain/index.d.cts +5 -5
- package/dist/adapters/thread/langchain/index.d.ts +5 -5
- package/dist/adapters/thread/langchain/index.js.map +1 -1
- package/dist/adapters/thread/langchain/workflow.d.cts +5 -5
- package/dist/adapters/thread/langchain/workflow.d.ts +5 -5
- package/dist/index.cjs +224 -70
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +66 -16
- package/dist/index.d.ts +66 -16
- package/dist/index.js +224 -70
- package/dist/index.js.map +1 -1
- package/dist/{proxy-D7mvDEO6.d.cts → proxy-Bf7uI-Hw.d.cts} +1 -1
- package/dist/{proxy-BbcgoXg1.d.ts → proxy-COqA95FW.d.ts} +1 -1
- package/dist/{thread-manager-CTXPCu9W.d.ts → thread-manager-BhkOyQ1I.d.ts} +2 -2
- package/dist/{thread-manager-Dqstsw4i.d.ts → thread-manager-Bi1XlbpJ.d.ts} +2 -2
- package/dist/{thread-manager-cLhDhRRc.d.cts → thread-manager-BsLO3Fgc.d.cts} +2 -2
- package/dist/{thread-manager-DrWfVjlj.d.cts → thread-manager-wRVVBFgj.d.cts} +2 -2
- package/dist/{types-CjF1_Idx.d.ts → types-BkX4HLzi.d.ts} +1 -1
- package/dist/{types-CdvcmXb6.d.cts → types-C66-BVBr.d.cts} +1 -1
- package/dist/types-CJ7tCdl6.d.cts +266 -0
- package/dist/types-CJ7tCdl6.d.ts +266 -0
- package/dist/{types-DjaQKUJx.d.cts → types-CdALEF3z.d.cts} +300 -20
- package/dist/{types-BqTmyH31.d.ts → types-ChAy_jSP.d.ts} +300 -20
- package/dist/types-CjY93AWZ.d.cts +84 -0
- package/dist/types-gVa5XCWD.d.ts +84 -0
- package/dist/{workflow-N1MNDoul.d.ts → workflow-BwT5EybR.d.ts} +7 -6
- package/dist/{workflow-CuqxgS6X.d.cts → workflow-DMmiaw6w.d.cts} +7 -6
- package/dist/workflow.cjs +99 -46
- package/dist/workflow.cjs.map +1 -1
- package/dist/workflow.d.cts +4 -4
- package/dist/workflow.d.ts +4 -4
- package/dist/workflow.js +99 -46
- package/dist/workflow.js.map +1 -1
- package/package.json +7 -32
- package/src/adapters/sandbox/daytona/index.ts +25 -48
- package/src/adapters/sandbox/daytona/proxy.ts +7 -8
- package/src/adapters/sandbox/e2b/index.ts +21 -6
- package/src/adapters/sandbox/e2b/proxy.ts +3 -2
- package/src/adapters/sandbox/inmemory/index.ts +21 -1
- package/src/adapters/sandbox/inmemory/proxy.ts +7 -3
- package/src/lib/activity.ts +5 -0
- package/src/lib/sandbox/capability-types.test.ts +859 -0
- package/src/lib/sandbox/index.ts +1 -0
- package/src/lib/sandbox/manager.ts +187 -31
- package/src/lib/sandbox/types.ts +189 -46
- package/src/lib/session/index.ts +1 -0
- package/src/lib/session/session.ts +97 -35
- package/src/lib/session/types.ts +181 -5
- package/src/lib/subagent/handler.ts +66 -43
- package/src/lib/subagent/types.ts +484 -16
- package/src/workflow.ts +3 -0
- package/tsup.config.ts +0 -4
- package/dist/adapters/sandbox/bedrock/index.cjs +0 -457
- package/dist/adapters/sandbox/bedrock/index.cjs.map +0 -1
- package/dist/adapters/sandbox/bedrock/index.d.cts +0 -25
- package/dist/adapters/sandbox/bedrock/index.d.ts +0 -25
- package/dist/adapters/sandbox/bedrock/index.js +0 -454
- package/dist/adapters/sandbox/bedrock/index.js.map +0 -1
- package/dist/adapters/sandbox/bedrock/workflow.cjs +0 -36
- package/dist/adapters/sandbox/bedrock/workflow.cjs.map +0 -1
- package/dist/adapters/sandbox/bedrock/workflow.d.cts +0 -29
- package/dist/adapters/sandbox/bedrock/workflow.d.ts +0 -29
- package/dist/adapters/sandbox/bedrock/workflow.js +0 -34
- package/dist/adapters/sandbox/bedrock/workflow.js.map +0 -1
- package/dist/types-DAsQ21Rt.d.ts +0 -74
- package/dist/types-lm8tMNJQ.d.cts +0 -74
- package/dist/types-yx0LzPGn.d.cts +0 -173
- package/dist/types-yx0LzPGn.d.ts +0 -173
- package/src/adapters/sandbox/bedrock/filesystem.ts +0 -340
- package/src/adapters/sandbox/bedrock/index.ts +0 -274
- package/src/adapters/sandbox/bedrock/proxy.ts +0 -59
- package/src/adapters/sandbox/bedrock/types.ts +0 -24
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zeitlich",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.42",
|
|
4
4
|
"description": "[EXPERIMENTAL] An opinionated AI agent implementation for Temporal",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -156,26 +156,6 @@
|
|
|
156
156
|
"types": "./dist/adapters/sandbox/e2b/workflow.d.ts",
|
|
157
157
|
"default": "./dist/adapters/sandbox/e2b/workflow.js"
|
|
158
158
|
}
|
|
159
|
-
},
|
|
160
|
-
"./adapters/sandbox/bedrock": {
|
|
161
|
-
"import": {
|
|
162
|
-
"types": "./dist/adapters/sandbox/bedrock/index.d.ts",
|
|
163
|
-
"default": "./dist/adapters/sandbox/bedrock/index.js"
|
|
164
|
-
},
|
|
165
|
-
"require": {
|
|
166
|
-
"types": "./dist/adapters/sandbox/bedrock/index.d.ts",
|
|
167
|
-
"default": "./dist/adapters/sandbox/bedrock/index.js"
|
|
168
|
-
}
|
|
169
|
-
},
|
|
170
|
-
"./adapters/sandbox/bedrock/workflow": {
|
|
171
|
-
"import": {
|
|
172
|
-
"types": "./dist/adapters/sandbox/bedrock/workflow.d.ts",
|
|
173
|
-
"default": "./dist/adapters/sandbox/bedrock/workflow.js"
|
|
174
|
-
},
|
|
175
|
-
"require": {
|
|
176
|
-
"types": "./dist/adapters/sandbox/bedrock/workflow.d.ts",
|
|
177
|
-
"default": "./dist/adapters/sandbox/bedrock/workflow.js"
|
|
178
|
-
}
|
|
179
159
|
}
|
|
180
160
|
},
|
|
181
161
|
"files": [
|
|
@@ -220,17 +200,16 @@
|
|
|
220
200
|
"node": ">=18"
|
|
221
201
|
},
|
|
222
202
|
"devDependencies": {
|
|
223
|
-
"@anthropic-ai/sdk": "^0.
|
|
224
|
-
"@
|
|
225
|
-
"@daytonaio/sdk": "^0.158.1",
|
|
203
|
+
"@anthropic-ai/sdk": "^0.93.0",
|
|
204
|
+
"@daytonaio/sdk": "^0.171.0",
|
|
226
205
|
"@e2b/code-interpreter": "^2.3.3",
|
|
227
206
|
"@eslint/js": "^10.0.1",
|
|
228
207
|
"@google/genai": "^1.44.0",
|
|
229
208
|
"@langchain/core": "^1.1.30",
|
|
230
|
-
"@temporalio/common": "1.
|
|
231
|
-
"@temporalio/envconfig": "1.
|
|
232
|
-
"@temporalio/worker": "1.
|
|
233
|
-
"@temporalio/workflow": "1.
|
|
209
|
+
"@temporalio/common": "^1.17.0",
|
|
210
|
+
"@temporalio/envconfig": "^1.17.0",
|
|
211
|
+
"@temporalio/worker": "^1.17.0",
|
|
212
|
+
"@temporalio/workflow": "^1.17.0",
|
|
234
213
|
"@types/node": "^25.3.3",
|
|
235
214
|
"eslint": "^10.0.2",
|
|
236
215
|
"husky": "^9.1.7",
|
|
@@ -244,7 +223,6 @@
|
|
|
244
223
|
},
|
|
245
224
|
"peerDependencies": {
|
|
246
225
|
"@anthropic-ai/sdk": ">=0.50.0",
|
|
247
|
-
"@aws-sdk/client-bedrock-agentcore": "^3.900.0",
|
|
248
226
|
"@daytonaio/sdk": ">=0.153.0",
|
|
249
227
|
"@e2b/code-interpreter": "^2.3.3",
|
|
250
228
|
"@google/genai": "^1.43.0",
|
|
@@ -257,9 +235,6 @@
|
|
|
257
235
|
"just-bash": ">=2.0.0"
|
|
258
236
|
},
|
|
259
237
|
"peerDependenciesMeta": {
|
|
260
|
-
"@aws-sdk/client-bedrock-agentcore": {
|
|
261
|
-
"optional": true
|
|
262
|
-
},
|
|
263
238
|
"@daytonaio/sdk": {
|
|
264
239
|
"optional": true
|
|
265
240
|
},
|
|
@@ -2,16 +2,13 @@ import { Daytona, type Sandbox as DaytonaSdkSandbox } from "@daytonaio/sdk";
|
|
|
2
2
|
import type {
|
|
3
3
|
Sandbox,
|
|
4
4
|
SandboxCapabilities,
|
|
5
|
+
SandboxCapability,
|
|
5
6
|
SandboxCreateResult,
|
|
6
7
|
SandboxProvider,
|
|
7
|
-
SandboxSnapshot,
|
|
8
8
|
ExecOptions,
|
|
9
9
|
ExecResult,
|
|
10
10
|
} from "../../../lib/sandbox/types";
|
|
11
|
-
import {
|
|
12
|
-
SandboxNotFoundError,
|
|
13
|
-
SandboxNotSupportedError,
|
|
14
|
-
} from "../../../lib/sandbox/types";
|
|
11
|
+
import { SandboxNotFoundError } from "../../../lib/sandbox/types";
|
|
15
12
|
import { DaytonaSandboxFileSystem } from "./filesystem";
|
|
16
13
|
import type {
|
|
17
14
|
DaytonaSandbox,
|
|
@@ -64,16 +61,35 @@ class DaytonaSandboxImpl implements Sandbox {
|
|
|
64
61
|
// DaytonaSandboxProvider
|
|
65
62
|
// ============================================================================
|
|
66
63
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Single source of truth for the Daytona adapter's capability set. Daytona
|
|
66
|
+
* implements only base lifecycle (`create` / `get` / `destroy`); both the
|
|
67
|
+
* type-level `TCaps` (`never`) and the runtime `supportedCapabilities`
|
|
68
|
+
* set fall out of this empty array, so the two surfaces cannot drift.
|
|
69
|
+
*/
|
|
70
|
+
const DAYTONA_CAPS = [] as const satisfies readonly SandboxCapability[];
|
|
71
|
+
type DaytonaCaps = (typeof DAYTONA_CAPS)[number]; // → never
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Daytona implements only base sandbox lifecycle (`create` / `get` /
|
|
75
|
+
* `destroy`). Snapshot, restore, fork, pause, and resume are not supported
|
|
76
|
+
* — the type-level capability set is `never`, so calling any of those
|
|
77
|
+
* methods on a Daytona provider, manager, or `SandboxOps` proxy is a
|
|
78
|
+
* compile-time TypeScript error.
|
|
79
|
+
*/
|
|
80
|
+
export class DaytonaSandboxProvider
|
|
81
|
+
implements
|
|
82
|
+
SandboxProvider<DaytonaSandboxCreateOptions, DaytonaSandbox, DaytonaCaps>
|
|
83
|
+
{
|
|
71
84
|
readonly id = "daytona";
|
|
72
85
|
readonly capabilities: SandboxCapabilities = {
|
|
73
86
|
filesystem: true,
|
|
74
87
|
execution: true,
|
|
75
88
|
persistence: false,
|
|
76
89
|
};
|
|
90
|
+
readonly supportedCapabilities: ReadonlySet<DaytonaCaps> = new Set(
|
|
91
|
+
DAYTONA_CAPS
|
|
92
|
+
);
|
|
77
93
|
|
|
78
94
|
private client: Daytona;
|
|
79
95
|
private readonly defaultWorkspaceBase: string;
|
|
@@ -140,45 +156,6 @@ export class DaytonaSandboxProvider implements SandboxProvider<
|
|
|
140
156
|
// Already gone
|
|
141
157
|
}
|
|
142
158
|
}
|
|
143
|
-
|
|
144
|
-
async pause(_sandboxId: string, _ttlSeconds?: number): Promise<void> {
|
|
145
|
-
throw new SandboxNotSupportedError("pause");
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
async resume(_sandboxId: string): Promise<void> {
|
|
149
|
-
// Daytona sandboxes don't support pause, so resume is a no-op
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
async fork(
|
|
153
|
-
_sandboxId: string,
|
|
154
|
-
_options?: DaytonaSandboxCreateOptions
|
|
155
|
-
): Promise<Sandbox> {
|
|
156
|
-
throw new Error("Not implemented");
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
async snapshot(
|
|
160
|
-
_sandboxId: string,
|
|
161
|
-
_options?: DaytonaSandboxCreateOptions
|
|
162
|
-
): Promise<SandboxSnapshot> {
|
|
163
|
-
throw new SandboxNotSupportedError(
|
|
164
|
-
"snapshot (use Daytona's native snapshot API directly)"
|
|
165
|
-
);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
async restore(
|
|
169
|
-
_snapshot: SandboxSnapshot,
|
|
170
|
-
_options?: DaytonaSandboxCreateOptions
|
|
171
|
-
): Promise<never> {
|
|
172
|
-
throw new SandboxNotSupportedError(
|
|
173
|
-
"restore (use Daytona's native snapshot API directly)"
|
|
174
|
-
);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
async deleteSnapshot(_snapshot: SandboxSnapshot): Promise<void> {
|
|
178
|
-
throw new SandboxNotSupportedError(
|
|
179
|
-
"deleteSnapshot (use Daytona's native snapshot API directly)"
|
|
180
|
-
);
|
|
181
|
-
}
|
|
182
159
|
}
|
|
183
160
|
|
|
184
161
|
// Re-exports
|
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
* By default the scope is derived from `workflowInfo().workflowType`,
|
|
11
11
|
* so activities are automatically namespaced per workflow.
|
|
12
12
|
*
|
|
13
|
+
* Daytona only exposes base sandbox lifecycle (`create`/`destroy`) — the
|
|
14
|
+
* returned proxy is typed with `TCaps = never`, so calling
|
|
15
|
+
* `pauseSandbox` / `snapshotSandbox` / `forkSandbox` / etc. on it is a
|
|
16
|
+
* TypeScript error rather than a runtime throw.
|
|
17
|
+
*
|
|
13
18
|
* @example
|
|
14
19
|
* ```typescript
|
|
15
20
|
* import { proxyDaytonaSandboxOps } from 'zeitlich/adapters/sandbox/daytona/workflow';
|
|
@@ -26,7 +31,7 @@ const ADAPTER_PREFIX = "daytona";
|
|
|
26
31
|
export function proxyDaytonaSandboxOps(
|
|
27
32
|
scope?: string,
|
|
28
33
|
options?: Parameters<typeof proxyActivities>[0]
|
|
29
|
-
): SandboxOps {
|
|
34
|
+
): SandboxOps<DaytonaSandboxCreateOptions, unknown, never> {
|
|
30
35
|
const resolvedScope = scope ?? workflowInfo().workflowType;
|
|
31
36
|
|
|
32
37
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -49,11 +54,5 @@ export function proxyDaytonaSandboxOps(
|
|
|
49
54
|
return {
|
|
50
55
|
createSandbox: acts[p("createSandbox")],
|
|
51
56
|
destroySandbox: acts[p("destroySandbox")],
|
|
52
|
-
|
|
53
|
-
resumeSandbox: acts[p("resumeSandbox")],
|
|
54
|
-
snapshotSandbox: acts[p("snapshotSandbox")],
|
|
55
|
-
restoreSandbox: acts[p("restoreSandbox")],
|
|
56
|
-
deleteSandboxSnapshot: acts[p("deleteSandboxSnapshot")],
|
|
57
|
-
forkSandbox: acts[p("forkSandbox")],
|
|
58
|
-
} as SandboxOps<DaytonaSandboxCreateOptions>;
|
|
57
|
+
} as SandboxOps<DaytonaSandboxCreateOptions, unknown, never>;
|
|
59
58
|
}
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
import type {
|
|
7
7
|
Sandbox,
|
|
8
8
|
SandboxCapabilities,
|
|
9
|
+
SandboxCapability,
|
|
9
10
|
SandboxCreateResult,
|
|
10
11
|
SandboxProvider,
|
|
11
12
|
SandboxSnapshot,
|
|
@@ -80,16 +81,30 @@ class E2bSandboxImpl implements Sandbox {
|
|
|
80
81
|
// E2bSandboxProvider
|
|
81
82
|
// ============================================================================
|
|
82
83
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
/**
|
|
85
|
+
* Single source of truth for the E2B adapter's capability set. Both the
|
|
86
|
+
* runtime `supportedCapabilities` set and the type-level `TCaps` flow
|
|
87
|
+
* out of this array, so the two surfaces cannot drift.
|
|
88
|
+
*/
|
|
89
|
+
export const E2B_CAPS = [
|
|
90
|
+
"pause",
|
|
91
|
+
"resume",
|
|
92
|
+
"snapshot",
|
|
93
|
+
"restore",
|
|
94
|
+
"fork",
|
|
95
|
+
] as const satisfies readonly SandboxCapability[];
|
|
96
|
+
export type E2bCaps = (typeof E2B_CAPS)[number];
|
|
97
|
+
|
|
98
|
+
export class E2bSandboxProvider
|
|
99
|
+
implements SandboxProvider<E2bSandboxCreateOptions, E2bSandbox, E2bCaps>
|
|
100
|
+
{
|
|
87
101
|
readonly id = "e2b";
|
|
88
102
|
readonly capabilities: SandboxCapabilities = {
|
|
89
103
|
filesystem: true,
|
|
90
104
|
execution: true,
|
|
91
105
|
persistence: true,
|
|
92
106
|
};
|
|
107
|
+
readonly supportedCapabilities: ReadonlySet<E2bCaps> = new Set(E2B_CAPS);
|
|
93
108
|
|
|
94
109
|
private readonly defaultTemplate?: string;
|
|
95
110
|
private readonly defaultWorkspaceBase: string;
|
|
@@ -193,7 +208,7 @@ export class E2bSandboxProvider implements SandboxProvider<
|
|
|
193
208
|
async restore(
|
|
194
209
|
snapshot: SandboxSnapshot,
|
|
195
210
|
options?: E2bSandboxCreateOptions
|
|
196
|
-
): Promise<
|
|
211
|
+
): Promise<E2bSandbox> {
|
|
197
212
|
const data = snapshot.data as { snapshotId?: string } | null;
|
|
198
213
|
if (!data?.snapshotId) {
|
|
199
214
|
throw new SandboxNotSupportedError(
|
|
@@ -222,7 +237,7 @@ export class E2bSandboxProvider implements SandboxProvider<
|
|
|
222
237
|
async fork(
|
|
223
238
|
sandboxId: string,
|
|
224
239
|
options?: E2bSandboxCreateOptions
|
|
225
|
-
): Promise<
|
|
240
|
+
): Promise<E2bSandbox> {
|
|
226
241
|
const { snapshotId } = await E2bSdkSandbox.createSnapshot(sandboxId);
|
|
227
242
|
const sdkOpts = this.buildSdkCreateOpts(options);
|
|
228
243
|
const sdkSandbox = await E2bSdkSandbox.create(snapshotId, sdkOpts);
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { proxyActivities, workflowInfo } from "@temporalio/workflow";
|
|
21
21
|
import type { SandboxOps } from "../../../lib/sandbox/types";
|
|
22
|
+
import type { E2bCaps } from "./index";
|
|
22
23
|
import type { E2bSandboxCreateOptions } from "./types";
|
|
23
24
|
|
|
24
25
|
const ADAPTER_PREFIX = "e2b";
|
|
@@ -26,7 +27,7 @@ const ADAPTER_PREFIX = "e2b";
|
|
|
26
27
|
export function proxyE2bSandboxOps(
|
|
27
28
|
scope?: string,
|
|
28
29
|
options?: Parameters<typeof proxyActivities>[0]
|
|
29
|
-
): SandboxOps {
|
|
30
|
+
): SandboxOps<E2bSandboxCreateOptions, unknown, E2bCaps> {
|
|
30
31
|
const resolvedScope = scope ?? workflowInfo().workflowType;
|
|
31
32
|
|
|
32
33
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -55,5 +56,5 @@ export function proxyE2bSandboxOps(
|
|
|
55
56
|
restoreSandbox: acts[p("restoreSandbox")],
|
|
56
57
|
deleteSandboxSnapshot: acts[p("deleteSandboxSnapshot")],
|
|
57
58
|
forkSandbox: acts[p("forkSandbox")],
|
|
58
|
-
} as SandboxOps<E2bSandboxCreateOptions>;
|
|
59
|
+
} as SandboxOps<E2bSandboxCreateOptions, unknown, E2bCaps>;
|
|
59
60
|
}
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
import type {
|
|
9
9
|
Sandbox,
|
|
10
10
|
SandboxCapabilities,
|
|
11
|
+
SandboxCapability,
|
|
11
12
|
SandboxCreateOptions,
|
|
12
13
|
SandboxCreateResult,
|
|
13
14
|
SandboxFileSystem,
|
|
@@ -133,13 +134,32 @@ class InMemorySandboxImpl implements Sandbox {
|
|
|
133
134
|
// InMemorySandboxProvider
|
|
134
135
|
// ============================================================================
|
|
135
136
|
|
|
136
|
-
|
|
137
|
+
/**
|
|
138
|
+
* Single source of truth for the in-memory adapter's capability set. The
|
|
139
|
+
* runtime `supportedCapabilities` set and the type-level `TCaps` are both
|
|
140
|
+
* derived from this array, so the two surfaces cannot drift.
|
|
141
|
+
*/
|
|
142
|
+
export const IN_MEMORY_CAPS = [
|
|
143
|
+
"pause",
|
|
144
|
+
"resume",
|
|
145
|
+
"snapshot",
|
|
146
|
+
"restore",
|
|
147
|
+
"fork",
|
|
148
|
+
] as const satisfies readonly SandboxCapability[];
|
|
149
|
+
export type InMemoryCaps = (typeof IN_MEMORY_CAPS)[number];
|
|
150
|
+
|
|
151
|
+
export class InMemorySandboxProvider
|
|
152
|
+
implements SandboxProvider<SandboxCreateOptions, Sandbox, InMemoryCaps>
|
|
153
|
+
{
|
|
137
154
|
readonly id = "inMemory";
|
|
138
155
|
readonly capabilities: SandboxCapabilities = {
|
|
139
156
|
filesystem: true,
|
|
140
157
|
execution: true,
|
|
141
158
|
persistence: true,
|
|
142
159
|
};
|
|
160
|
+
readonly supportedCapabilities: ReadonlySet<InMemoryCaps> = new Set(
|
|
161
|
+
IN_MEMORY_CAPS
|
|
162
|
+
);
|
|
143
163
|
|
|
144
164
|
private sandboxes = new Map<string, InMemorySandboxImpl>();
|
|
145
165
|
|
|
@@ -16,14 +16,18 @@
|
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
18
|
import { proxyActivities, workflowInfo } from "@temporalio/workflow";
|
|
19
|
-
import type {
|
|
19
|
+
import type {
|
|
20
|
+
SandboxCreateOptions,
|
|
21
|
+
SandboxOps,
|
|
22
|
+
} from "../../../lib/sandbox/types";
|
|
23
|
+
import type { InMemoryCaps } from "./index";
|
|
20
24
|
|
|
21
25
|
const ADAPTER_PREFIX = "inMemory";
|
|
22
26
|
|
|
23
27
|
export function proxyInMemorySandboxOps(
|
|
24
28
|
scope?: string,
|
|
25
29
|
options?: Parameters<typeof proxyActivities>[0]
|
|
26
|
-
): SandboxOps {
|
|
30
|
+
): SandboxOps<SandboxCreateOptions, unknown, InMemoryCaps> {
|
|
27
31
|
const resolvedScope = scope ?? workflowInfo().workflowType;
|
|
28
32
|
|
|
29
33
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -52,5 +56,5 @@ export function proxyInMemorySandboxOps(
|
|
|
52
56
|
restoreSandbox: acts[p("restoreSandbox")],
|
|
53
57
|
deleteSandboxSnapshot: acts[p("deleteSandboxSnapshot")],
|
|
54
58
|
forkSandbox: acts[p("forkSandbox")],
|
|
55
|
-
} as SandboxOps
|
|
59
|
+
} as SandboxOps<SandboxCreateOptions, unknown, InMemoryCaps>;
|
|
56
60
|
}
|
package/src/lib/activity.ts
CHANGED
|
@@ -32,6 +32,11 @@ export async function queryParentWorkflowState<T>(
|
|
|
32
32
|
client: WorkflowClient
|
|
33
33
|
): Promise<T> {
|
|
34
34
|
const { workflowExecution } = Context.current().info;
|
|
35
|
+
|
|
36
|
+
if (!workflowExecution) {
|
|
37
|
+
throw new Error("No workflow execution found");
|
|
38
|
+
}
|
|
39
|
+
|
|
35
40
|
const handle = client.getHandle(
|
|
36
41
|
workflowExecution.workflowId,
|
|
37
42
|
workflowExecution.runId
|