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.
Files changed (119) hide show
  1. package/dist/{activities-qUflxmfS.d.cts → activities-Coafq5zr.d.cts} +2 -2
  2. package/dist/{activities-D_g13S3y.d.ts → activities-CrN-ghLo.d.ts} +2 -2
  3. package/dist/adapters/sandbox/daytona/index.cjs +4 -23
  4. package/dist/adapters/sandbox/daytona/index.cjs.map +1 -1
  5. package/dist/adapters/sandbox/daytona/index.d.cts +18 -86
  6. package/dist/adapters/sandbox/daytona/index.d.ts +18 -86
  7. package/dist/adapters/sandbox/daytona/index.js +4 -23
  8. package/dist/adapters/sandbox/daytona/index.js.map +1 -1
  9. package/dist/adapters/sandbox/daytona/workflow.cjs +1 -7
  10. package/dist/adapters/sandbox/daytona/workflow.cjs.map +1 -1
  11. package/dist/adapters/sandbox/daytona/workflow.d.cts +9 -2
  12. package/dist/adapters/sandbox/daytona/workflow.d.ts +9 -2
  13. package/dist/adapters/sandbox/daytona/workflow.js +1 -7
  14. package/dist/adapters/sandbox/daytona/workflow.js.map +1 -1
  15. package/dist/adapters/sandbox/e2b/index.cjs +9 -0
  16. package/dist/adapters/sandbox/e2b/index.cjs.map +1 -1
  17. package/dist/adapters/sandbox/e2b/index.d.cts +13 -5
  18. package/dist/adapters/sandbox/e2b/index.d.ts +13 -5
  19. package/dist/adapters/sandbox/e2b/index.js +9 -1
  20. package/dist/adapters/sandbox/e2b/index.js.map +1 -1
  21. package/dist/adapters/sandbox/e2b/workflow.cjs.map +1 -1
  22. package/dist/adapters/sandbox/e2b/workflow.d.cts +4 -2
  23. package/dist/adapters/sandbox/e2b/workflow.d.ts +4 -2
  24. package/dist/adapters/sandbox/e2b/workflow.js.map +1 -1
  25. package/dist/adapters/sandbox/inmemory/index.cjs +11 -0
  26. package/dist/adapters/sandbox/inmemory/index.cjs.map +1 -1
  27. package/dist/adapters/sandbox/inmemory/index.d.cts +11 -3
  28. package/dist/adapters/sandbox/inmemory/index.d.ts +11 -3
  29. package/dist/adapters/sandbox/inmemory/index.js +11 -1
  30. package/dist/adapters/sandbox/inmemory/index.js.map +1 -1
  31. package/dist/adapters/sandbox/inmemory/workflow.cjs.map +1 -1
  32. package/dist/adapters/sandbox/inmemory/workflow.d.cts +4 -2
  33. package/dist/adapters/sandbox/inmemory/workflow.d.ts +4 -2
  34. package/dist/adapters/sandbox/inmemory/workflow.js.map +1 -1
  35. package/dist/adapters/thread/anthropic/index.cjs.map +1 -1
  36. package/dist/adapters/thread/anthropic/index.d.cts +5 -5
  37. package/dist/adapters/thread/anthropic/index.d.ts +5 -5
  38. package/dist/adapters/thread/anthropic/index.js.map +1 -1
  39. package/dist/adapters/thread/anthropic/workflow.d.cts +5 -5
  40. package/dist/adapters/thread/anthropic/workflow.d.ts +5 -5
  41. package/dist/adapters/thread/google-genai/index.cjs.map +1 -1
  42. package/dist/adapters/thread/google-genai/index.d.cts +5 -5
  43. package/dist/adapters/thread/google-genai/index.d.ts +5 -5
  44. package/dist/adapters/thread/google-genai/index.js.map +1 -1
  45. package/dist/adapters/thread/google-genai/workflow.d.cts +5 -5
  46. package/dist/adapters/thread/google-genai/workflow.d.ts +5 -5
  47. package/dist/adapters/thread/langchain/index.cjs.map +1 -1
  48. package/dist/adapters/thread/langchain/index.d.cts +5 -5
  49. package/dist/adapters/thread/langchain/index.d.ts +5 -5
  50. package/dist/adapters/thread/langchain/index.js.map +1 -1
  51. package/dist/adapters/thread/langchain/workflow.d.cts +5 -5
  52. package/dist/adapters/thread/langchain/workflow.d.ts +5 -5
  53. package/dist/index.cjs +224 -70
  54. package/dist/index.cjs.map +1 -1
  55. package/dist/index.d.cts +66 -16
  56. package/dist/index.d.ts +66 -16
  57. package/dist/index.js +224 -70
  58. package/dist/index.js.map +1 -1
  59. package/dist/{proxy-D7mvDEO6.d.cts → proxy-Bf7uI-Hw.d.cts} +1 -1
  60. package/dist/{proxy-BbcgoXg1.d.ts → proxy-COqA95FW.d.ts} +1 -1
  61. package/dist/{thread-manager-CTXPCu9W.d.ts → thread-manager-BhkOyQ1I.d.ts} +2 -2
  62. package/dist/{thread-manager-Dqstsw4i.d.ts → thread-manager-Bi1XlbpJ.d.ts} +2 -2
  63. package/dist/{thread-manager-cLhDhRRc.d.cts → thread-manager-BsLO3Fgc.d.cts} +2 -2
  64. package/dist/{thread-manager-DrWfVjlj.d.cts → thread-manager-wRVVBFgj.d.cts} +2 -2
  65. package/dist/{types-CjF1_Idx.d.ts → types-BkX4HLzi.d.ts} +1 -1
  66. package/dist/{types-CdvcmXb6.d.cts → types-C66-BVBr.d.cts} +1 -1
  67. package/dist/types-CJ7tCdl6.d.cts +266 -0
  68. package/dist/types-CJ7tCdl6.d.ts +266 -0
  69. package/dist/{types-DjaQKUJx.d.cts → types-CdALEF3z.d.cts} +300 -20
  70. package/dist/{types-BqTmyH31.d.ts → types-ChAy_jSP.d.ts} +300 -20
  71. package/dist/types-CjY93AWZ.d.cts +84 -0
  72. package/dist/types-gVa5XCWD.d.ts +84 -0
  73. package/dist/{workflow-N1MNDoul.d.ts → workflow-BwT5EybR.d.ts} +7 -6
  74. package/dist/{workflow-CuqxgS6X.d.cts → workflow-DMmiaw6w.d.cts} +7 -6
  75. package/dist/workflow.cjs +99 -46
  76. package/dist/workflow.cjs.map +1 -1
  77. package/dist/workflow.d.cts +4 -4
  78. package/dist/workflow.d.ts +4 -4
  79. package/dist/workflow.js +99 -46
  80. package/dist/workflow.js.map +1 -1
  81. package/package.json +7 -32
  82. package/src/adapters/sandbox/daytona/index.ts +25 -48
  83. package/src/adapters/sandbox/daytona/proxy.ts +7 -8
  84. package/src/adapters/sandbox/e2b/index.ts +21 -6
  85. package/src/adapters/sandbox/e2b/proxy.ts +3 -2
  86. package/src/adapters/sandbox/inmemory/index.ts +21 -1
  87. package/src/adapters/sandbox/inmemory/proxy.ts +7 -3
  88. package/src/lib/activity.ts +5 -0
  89. package/src/lib/sandbox/capability-types.test.ts +859 -0
  90. package/src/lib/sandbox/index.ts +1 -0
  91. package/src/lib/sandbox/manager.ts +187 -31
  92. package/src/lib/sandbox/types.ts +189 -46
  93. package/src/lib/session/index.ts +1 -0
  94. package/src/lib/session/session.ts +97 -35
  95. package/src/lib/session/types.ts +181 -5
  96. package/src/lib/subagent/handler.ts +66 -43
  97. package/src/lib/subagent/types.ts +484 -16
  98. package/src/workflow.ts +3 -0
  99. package/tsup.config.ts +0 -4
  100. package/dist/adapters/sandbox/bedrock/index.cjs +0 -457
  101. package/dist/adapters/sandbox/bedrock/index.cjs.map +0 -1
  102. package/dist/adapters/sandbox/bedrock/index.d.cts +0 -25
  103. package/dist/adapters/sandbox/bedrock/index.d.ts +0 -25
  104. package/dist/adapters/sandbox/bedrock/index.js +0 -454
  105. package/dist/adapters/sandbox/bedrock/index.js.map +0 -1
  106. package/dist/adapters/sandbox/bedrock/workflow.cjs +0 -36
  107. package/dist/adapters/sandbox/bedrock/workflow.cjs.map +0 -1
  108. package/dist/adapters/sandbox/bedrock/workflow.d.cts +0 -29
  109. package/dist/adapters/sandbox/bedrock/workflow.d.ts +0 -29
  110. package/dist/adapters/sandbox/bedrock/workflow.js +0 -34
  111. package/dist/adapters/sandbox/bedrock/workflow.js.map +0 -1
  112. package/dist/types-DAsQ21Rt.d.ts +0 -74
  113. package/dist/types-lm8tMNJQ.d.cts +0 -74
  114. package/dist/types-yx0LzPGn.d.cts +0 -173
  115. package/dist/types-yx0LzPGn.d.ts +0 -173
  116. package/src/adapters/sandbox/bedrock/filesystem.ts +0 -340
  117. package/src/adapters/sandbox/bedrock/index.ts +0 -274
  118. package/src/adapters/sandbox/bedrock/proxy.ts +0 -59
  119. 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.41",
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.81.0",
224
- "@aws-sdk/client-bedrock-agentcore": "^3.900.0",
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.16.0",
231
- "@temporalio/envconfig": "1.16.0",
232
- "@temporalio/worker": "1.16.0",
233
- "@temporalio/workflow": "1.16.0",
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
- export class DaytonaSandboxProvider implements SandboxProvider<
68
- DaytonaSandboxCreateOptions,
69
- DaytonaSandbox
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
- pauseSandbox: acts[p("pauseSandbox")],
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
- export class E2bSandboxProvider implements SandboxProvider<
84
- E2bSandboxCreateOptions,
85
- E2bSandbox
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<Sandbox> {
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<Sandbox> {
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
- export class InMemorySandboxProvider implements SandboxProvider {
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 { SandboxOps } from "../../../lib/sandbox/types";
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
  }
@@ -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