zeitlich 0.2.13 → 0.2.14

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 (135) hide show
  1. package/README.md +49 -38
  2. package/dist/adapters/sandbox/daytona/index.cjs +205 -0
  3. package/dist/adapters/sandbox/daytona/index.cjs.map +1 -0
  4. package/dist/adapters/sandbox/daytona/index.d.cts +86 -0
  5. package/dist/adapters/sandbox/daytona/index.d.ts +86 -0
  6. package/dist/adapters/sandbox/daytona/index.js +202 -0
  7. package/dist/adapters/sandbox/daytona/index.js.map +1 -0
  8. package/dist/adapters/sandbox/inmemory/index.cjs +174 -0
  9. package/dist/adapters/sandbox/inmemory/index.cjs.map +1 -0
  10. package/dist/adapters/sandbox/inmemory/index.d.cts +28 -0
  11. package/dist/adapters/sandbox/inmemory/index.d.ts +28 -0
  12. package/dist/adapters/sandbox/inmemory/index.js +172 -0
  13. package/dist/adapters/sandbox/inmemory/index.js.map +1 -0
  14. package/dist/adapters/sandbox/virtual/index.cjs +405 -0
  15. package/dist/adapters/sandbox/virtual/index.cjs.map +1 -0
  16. package/dist/adapters/sandbox/virtual/index.d.cts +85 -0
  17. package/dist/adapters/sandbox/virtual/index.d.ts +85 -0
  18. package/dist/adapters/sandbox/virtual/index.js +400 -0
  19. package/dist/adapters/sandbox/virtual/index.js.map +1 -0
  20. package/dist/adapters/thread/google-genai/index.cjs +284 -0
  21. package/dist/adapters/thread/google-genai/index.cjs.map +1 -0
  22. package/dist/adapters/thread/google-genai/index.d.cts +145 -0
  23. package/dist/adapters/thread/google-genai/index.d.ts +145 -0
  24. package/dist/adapters/thread/google-genai/index.js +278 -0
  25. package/dist/adapters/thread/google-genai/index.js.map +1 -0
  26. package/dist/adapters/{langchain → thread/langchain}/index.cjs +7 -9
  27. package/dist/adapters/thread/langchain/index.cjs.map +1 -0
  28. package/dist/adapters/{langchain → thread/langchain}/index.d.cts +17 -21
  29. package/dist/adapters/{langchain → thread/langchain}/index.d.ts +17 -21
  30. package/dist/adapters/{langchain → thread/langchain}/index.js +7 -9
  31. package/dist/adapters/thread/langchain/index.js.map +1 -0
  32. package/dist/index.cjs +816 -545
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.cts +235 -74
  35. package/dist/index.d.ts +235 -74
  36. package/dist/index.js +804 -540
  37. package/dist/index.js.map +1 -1
  38. package/dist/types-B4C9txdq.d.ts +389 -0
  39. package/dist/{thread-manager-qc0g5Rvd.d.cts → types-B9ljZewB.d.cts} +1 -6
  40. package/dist/{thread-manager-qc0g5Rvd.d.ts → types-B9ljZewB.d.ts} +1 -6
  41. package/dist/types-BMXzv7TN.d.cts +476 -0
  42. package/dist/types-BMXzv7TN.d.ts +476 -0
  43. package/dist/types-BVP87m_W.d.cts +121 -0
  44. package/dist/types-CDubRtad.d.cts +115 -0
  45. package/dist/types-CDubRtad.d.ts +115 -0
  46. package/dist/types-CwwgQ_9H.d.ts +121 -0
  47. package/dist/types-GpMU4b0w.d.cts +389 -0
  48. package/dist/workflow.cjs +444 -318
  49. package/dist/workflow.cjs.map +1 -1
  50. package/dist/workflow.d.cts +271 -222
  51. package/dist/workflow.d.ts +271 -222
  52. package/dist/workflow.js +440 -316
  53. package/dist/workflow.js.map +1 -1
  54. package/package.json +59 -6
  55. package/src/adapters/sandbox/daytona/filesystem.ts +136 -0
  56. package/src/adapters/sandbox/daytona/index.ts +149 -0
  57. package/src/adapters/sandbox/daytona/types.ts +34 -0
  58. package/src/adapters/sandbox/inmemory/index.ts +213 -0
  59. package/src/adapters/sandbox/virtual/filesystem.ts +345 -0
  60. package/src/adapters/sandbox/virtual/index.ts +88 -0
  61. package/src/adapters/sandbox/virtual/mutations.ts +38 -0
  62. package/src/adapters/sandbox/virtual/provider.ts +101 -0
  63. package/src/adapters/sandbox/virtual/tree.ts +82 -0
  64. package/src/adapters/sandbox/virtual/types.ts +127 -0
  65. package/src/adapters/sandbox/virtual/virtual-sandbox.test.ts +523 -0
  66. package/src/adapters/sandbox/virtual/with-virtual-sandbox.ts +91 -0
  67. package/src/adapters/thread/google-genai/activities.ts +121 -0
  68. package/src/adapters/thread/google-genai/index.ts +41 -0
  69. package/src/adapters/thread/google-genai/model-invoker.ts +154 -0
  70. package/src/adapters/thread/google-genai/thread-manager.ts +169 -0
  71. package/src/adapters/{langchain → thread/langchain}/activities.ts +11 -15
  72. package/src/adapters/{langchain → thread/langchain}/index.ts +1 -1
  73. package/src/adapters/{langchain → thread/langchain}/model-invoker.ts +15 -18
  74. package/src/adapters/{langchain → thread/langchain}/thread-manager.ts +1 -1
  75. package/src/index.ts +32 -24
  76. package/src/lib/activity.ts +87 -0
  77. package/src/lib/hooks/index.ts +11 -0
  78. package/src/lib/hooks/types.ts +98 -0
  79. package/src/lib/model/helpers.ts +6 -0
  80. package/src/lib/model/index.ts +13 -0
  81. package/src/lib/{model-invoker.ts → model/types.ts} +18 -1
  82. package/src/lib/sandbox/index.ts +19 -0
  83. package/src/lib/sandbox/manager.ts +76 -0
  84. package/src/lib/sandbox/sandbox.test.ts +158 -0
  85. package/src/lib/{fs.ts → sandbox/tree.ts} +6 -6
  86. package/src/lib/sandbox/types.ts +164 -0
  87. package/src/lib/session/index.ts +11 -0
  88. package/src/lib/{session.ts → session/session.ts} +76 -48
  89. package/src/lib/session/types.ts +93 -0
  90. package/src/lib/skills/fs-provider.ts +16 -15
  91. package/src/lib/skills/handler.ts +31 -0
  92. package/src/lib/skills/index.ts +5 -1
  93. package/src/lib/skills/register.ts +20 -0
  94. package/src/lib/skills/tool.ts +47 -0
  95. package/src/lib/state/index.ts +9 -0
  96. package/src/lib/{state-manager.ts → state/manager.ts} +10 -147
  97. package/src/lib/state/types.ts +134 -0
  98. package/src/lib/subagent/define.ts +71 -0
  99. package/src/lib/subagent/handler.ts +99 -0
  100. package/src/lib/subagent/index.ts +13 -0
  101. package/src/lib/subagent/register.ts +53 -0
  102. package/src/lib/subagent/tool.ts +80 -0
  103. package/src/lib/subagent/types.ts +92 -0
  104. package/src/lib/thread/index.ts +7 -0
  105. package/src/lib/{thread-manager.ts → thread/manager.ts} +1 -33
  106. package/src/lib/thread/types.ts +33 -0
  107. package/src/lib/tool-router/auto-append.ts +55 -0
  108. package/src/lib/tool-router/index.ts +41 -0
  109. package/src/lib/tool-router/router.ts +462 -0
  110. package/src/lib/tool-router/types.ts +478 -0
  111. package/src/lib/tool-router/with-sandbox.ts +70 -0
  112. package/src/lib/types.ts +5 -382
  113. package/src/tools/bash/bash.test.ts +53 -55
  114. package/src/tools/bash/handler.ts +23 -51
  115. package/src/tools/edit/handler.ts +67 -81
  116. package/src/tools/glob/handler.ts +60 -17
  117. package/src/tools/read-file/handler.ts +67 -0
  118. package/src/tools/read-skill/handler.ts +1 -31
  119. package/src/tools/read-skill/tool.ts +5 -47
  120. package/src/tools/subagent/handler.ts +1 -100
  121. package/src/tools/subagent/tool.ts +5 -93
  122. package/src/tools/task-create/handler.ts +1 -1
  123. package/src/tools/task-get/handler.ts +1 -1
  124. package/src/tools/task-list/handler.ts +1 -1
  125. package/src/tools/task-update/handler.ts +1 -1
  126. package/src/tools/write-file/handler.ts +47 -0
  127. package/src/workflow.ts +88 -47
  128. package/tsup.config.ts +8 -1
  129. package/dist/adapters/langchain/index.cjs.map +0 -1
  130. package/dist/adapters/langchain/index.js.map +0 -1
  131. package/dist/model-invoker-y_zlyMqu.d.cts +0 -892
  132. package/dist/model-invoker-y_zlyMqu.d.ts +0 -892
  133. package/src/lib/tool-router.ts +0 -977
  134. package/src/lib/workflow-helpers.ts +0 -50
  135. /package/src/lib/{thread-id.ts → thread/id.ts} +0 -0
@@ -0,0 +1,115 @@
1
+ import { ApplicationFailure } from '@temporalio/common';
2
+
3
+ interface DirentEntry {
4
+ name: string;
5
+ isFile: boolean;
6
+ isDirectory: boolean;
7
+ isSymbolicLink: boolean;
8
+ }
9
+ interface FileStat {
10
+ isFile: boolean;
11
+ isDirectory: boolean;
12
+ isSymbolicLink: boolean;
13
+ size: number;
14
+ mtime: Date;
15
+ }
16
+ /**
17
+ * Provider-agnostic filesystem interface.
18
+ *
19
+ * Implementations that don't support a method should throw
20
+ * {@link SandboxNotSupportedError}.
21
+ */
22
+ interface SandboxFileSystem {
23
+ readFile(path: string): Promise<string>;
24
+ readFileBuffer(path: string): Promise<Uint8Array>;
25
+ writeFile(path: string, content: string | Uint8Array): Promise<void>;
26
+ appendFile(path: string, content: string | Uint8Array): Promise<void>;
27
+ exists(path: string): Promise<boolean>;
28
+ stat(path: string): Promise<FileStat>;
29
+ mkdir(path: string, options?: {
30
+ recursive?: boolean;
31
+ }): Promise<void>;
32
+ readdir(path: string): Promise<string[]>;
33
+ readdirWithFileTypes(path: string): Promise<DirentEntry[]>;
34
+ rm(path: string, options?: {
35
+ recursive?: boolean;
36
+ force?: boolean;
37
+ }): Promise<void>;
38
+ cp(src: string, dest: string, options?: {
39
+ recursive?: boolean;
40
+ }): Promise<void>;
41
+ mv(src: string, dest: string): Promise<void>;
42
+ readlink(path: string): Promise<string>;
43
+ resolvePath(base: string, path: string): string;
44
+ }
45
+ interface ExecOptions {
46
+ timeout?: number;
47
+ cwd?: string;
48
+ env?: Record<string, string>;
49
+ }
50
+ interface ExecResult {
51
+ exitCode: number;
52
+ stdout: string;
53
+ stderr: string;
54
+ }
55
+ interface SandboxCapabilities {
56
+ /** Sandbox supports filesystem operations */
57
+ filesystem: boolean;
58
+ /** Sandbox supports shell/command execution */
59
+ execution: boolean;
60
+ /** Sandbox state can be persisted and restored */
61
+ persistence: boolean;
62
+ }
63
+ interface Sandbox {
64
+ readonly id: string;
65
+ readonly capabilities: SandboxCapabilities;
66
+ readonly fs: SandboxFileSystem;
67
+ exec(command: string, options?: ExecOptions): Promise<ExecResult>;
68
+ destroy(): Promise<void>;
69
+ }
70
+ interface SandboxSnapshot {
71
+ sandboxId: string;
72
+ providerId: string;
73
+ /** Provider-specific serialised state */
74
+ data: unknown;
75
+ createdAt: string;
76
+ }
77
+ interface SandboxCreateOptions {
78
+ /** Preferred sandbox ID (provider may ignore) */
79
+ id?: string;
80
+ /** Seed the filesystem with these files */
81
+ initialFiles?: Record<string, string | Uint8Array>;
82
+ /** Environment variables available inside the sandbox */
83
+ env?: Record<string, string>;
84
+ }
85
+ interface SandboxCreateResult {
86
+ sandbox: Sandbox;
87
+ /** Optional state to merge into the workflow's `AgentState` via the session. */
88
+ stateUpdate?: Record<string, unknown>;
89
+ }
90
+ interface SandboxProvider<TOptions extends SandboxCreateOptions = SandboxCreateOptions, TSandbox extends Sandbox = Sandbox> {
91
+ readonly id: string;
92
+ readonly capabilities: SandboxCapabilities;
93
+ create(options?: TOptions): Promise<SandboxCreateResult>;
94
+ get(sandboxId: string): Promise<TSandbox>;
95
+ destroy(sandboxId: string): Promise<void>;
96
+ snapshot(sandboxId: string): Promise<SandboxSnapshot>;
97
+ restore(snapshot: SandboxSnapshot): Promise<Sandbox>;
98
+ }
99
+ interface SandboxOps<TOptions extends SandboxCreateOptions = SandboxCreateOptions> {
100
+ createSandbox(options?: TOptions): Promise<{
101
+ sandboxId: string;
102
+ stateUpdate?: Record<string, unknown>;
103
+ }>;
104
+ destroySandbox(sandboxId: string): Promise<void>;
105
+ snapshotSandbox(sandboxId: string): Promise<SandboxSnapshot>;
106
+ }
107
+
108
+ declare class SandboxNotSupportedError extends ApplicationFailure {
109
+ constructor(operation: string);
110
+ }
111
+ declare class SandboxNotFoundError extends ApplicationFailure {
112
+ constructor(sandboxId: string);
113
+ }
114
+
115
+ export { type DirentEntry as D, type ExecResult as E, type FileStat as F, type Sandbox as S, type SandboxFileSystem as a, type SandboxProvider as b, type SandboxCapabilities as c, type SandboxCreateOptions as d, type SandboxCreateResult as e, type SandboxSnapshot as f, type SandboxOps as g, type ExecOptions as h, SandboxNotFoundError as i, SandboxNotSupportedError as j };
@@ -0,0 +1,115 @@
1
+ import { ApplicationFailure } from '@temporalio/common';
2
+
3
+ interface DirentEntry {
4
+ name: string;
5
+ isFile: boolean;
6
+ isDirectory: boolean;
7
+ isSymbolicLink: boolean;
8
+ }
9
+ interface FileStat {
10
+ isFile: boolean;
11
+ isDirectory: boolean;
12
+ isSymbolicLink: boolean;
13
+ size: number;
14
+ mtime: Date;
15
+ }
16
+ /**
17
+ * Provider-agnostic filesystem interface.
18
+ *
19
+ * Implementations that don't support a method should throw
20
+ * {@link SandboxNotSupportedError}.
21
+ */
22
+ interface SandboxFileSystem {
23
+ readFile(path: string): Promise<string>;
24
+ readFileBuffer(path: string): Promise<Uint8Array>;
25
+ writeFile(path: string, content: string | Uint8Array): Promise<void>;
26
+ appendFile(path: string, content: string | Uint8Array): Promise<void>;
27
+ exists(path: string): Promise<boolean>;
28
+ stat(path: string): Promise<FileStat>;
29
+ mkdir(path: string, options?: {
30
+ recursive?: boolean;
31
+ }): Promise<void>;
32
+ readdir(path: string): Promise<string[]>;
33
+ readdirWithFileTypes(path: string): Promise<DirentEntry[]>;
34
+ rm(path: string, options?: {
35
+ recursive?: boolean;
36
+ force?: boolean;
37
+ }): Promise<void>;
38
+ cp(src: string, dest: string, options?: {
39
+ recursive?: boolean;
40
+ }): Promise<void>;
41
+ mv(src: string, dest: string): Promise<void>;
42
+ readlink(path: string): Promise<string>;
43
+ resolvePath(base: string, path: string): string;
44
+ }
45
+ interface ExecOptions {
46
+ timeout?: number;
47
+ cwd?: string;
48
+ env?: Record<string, string>;
49
+ }
50
+ interface ExecResult {
51
+ exitCode: number;
52
+ stdout: string;
53
+ stderr: string;
54
+ }
55
+ interface SandboxCapabilities {
56
+ /** Sandbox supports filesystem operations */
57
+ filesystem: boolean;
58
+ /** Sandbox supports shell/command execution */
59
+ execution: boolean;
60
+ /** Sandbox state can be persisted and restored */
61
+ persistence: boolean;
62
+ }
63
+ interface Sandbox {
64
+ readonly id: string;
65
+ readonly capabilities: SandboxCapabilities;
66
+ readonly fs: SandboxFileSystem;
67
+ exec(command: string, options?: ExecOptions): Promise<ExecResult>;
68
+ destroy(): Promise<void>;
69
+ }
70
+ interface SandboxSnapshot {
71
+ sandboxId: string;
72
+ providerId: string;
73
+ /** Provider-specific serialised state */
74
+ data: unknown;
75
+ createdAt: string;
76
+ }
77
+ interface SandboxCreateOptions {
78
+ /** Preferred sandbox ID (provider may ignore) */
79
+ id?: string;
80
+ /** Seed the filesystem with these files */
81
+ initialFiles?: Record<string, string | Uint8Array>;
82
+ /** Environment variables available inside the sandbox */
83
+ env?: Record<string, string>;
84
+ }
85
+ interface SandboxCreateResult {
86
+ sandbox: Sandbox;
87
+ /** Optional state to merge into the workflow's `AgentState` via the session. */
88
+ stateUpdate?: Record<string, unknown>;
89
+ }
90
+ interface SandboxProvider<TOptions extends SandboxCreateOptions = SandboxCreateOptions, TSandbox extends Sandbox = Sandbox> {
91
+ readonly id: string;
92
+ readonly capabilities: SandboxCapabilities;
93
+ create(options?: TOptions): Promise<SandboxCreateResult>;
94
+ get(sandboxId: string): Promise<TSandbox>;
95
+ destroy(sandboxId: string): Promise<void>;
96
+ snapshot(sandboxId: string): Promise<SandboxSnapshot>;
97
+ restore(snapshot: SandboxSnapshot): Promise<Sandbox>;
98
+ }
99
+ interface SandboxOps<TOptions extends SandboxCreateOptions = SandboxCreateOptions> {
100
+ createSandbox(options?: TOptions): Promise<{
101
+ sandboxId: string;
102
+ stateUpdate?: Record<string, unknown>;
103
+ }>;
104
+ destroySandbox(sandboxId: string): Promise<void>;
105
+ snapshotSandbox(sandboxId: string): Promise<SandboxSnapshot>;
106
+ }
107
+
108
+ declare class SandboxNotSupportedError extends ApplicationFailure {
109
+ constructor(operation: string);
110
+ }
111
+ declare class SandboxNotFoundError extends ApplicationFailure {
112
+ constructor(sandboxId: string);
113
+ }
114
+
115
+ export { type DirentEntry as D, type ExecResult as E, type FileStat as F, type Sandbox as S, type SandboxFileSystem as a, type SandboxProvider as b, type SandboxCapabilities as c, type SandboxCreateOptions as d, type SandboxCreateResult as e, type SandboxSnapshot as f, type SandboxOps as g, type ExecOptions as h, SandboxNotFoundError as i, SandboxNotSupportedError as j };
@@ -0,0 +1,121 @@
1
+ import { a as SandboxFileSystem, F as FileStat, D as DirentEntry, S as Sandbox, d as SandboxCreateOptions } from './types-CDubRtad.js';
2
+ import { R as RouterContext } from './types-BMXzv7TN.js';
3
+
4
+ /**
5
+ * Ephemeral {@link SandboxFileSystem} backed by a {@link FileResolver}.
6
+ *
7
+ * Created fresh for each tool invocation from the current workflow file tree.
8
+ * Directory structure is inferred from file paths. All mutations are tracked
9
+ * and can be retrieved via {@link getMutations} after the handler completes.
10
+ */
11
+ declare class VirtualSandboxFileSystem<TCtx = unknown, TMeta = FileEntryMetadata> implements SandboxFileSystem {
12
+ private resolver;
13
+ private ctx;
14
+ private entries;
15
+ private directories;
16
+ private mutations;
17
+ constructor(tree: FileEntry<TMeta>[], resolver: FileResolver<TCtx, TMeta>, ctx: TCtx);
18
+ /** Return all mutations accumulated during this invocation. */
19
+ getMutations(): TreeMutation<TMeta>[];
20
+ /** Look up a file entry by virtual path. */
21
+ getEntry(path: string): FileEntry<TMeta> | undefined;
22
+ readFile(path: string): Promise<string>;
23
+ readFileBuffer(path: string): Promise<Uint8Array>;
24
+ exists(path: string): Promise<boolean>;
25
+ stat(path: string): Promise<FileStat>;
26
+ readdir(path: string): Promise<string[]>;
27
+ readdirWithFileTypes(path: string): Promise<DirentEntry[]>;
28
+ writeFile(path: string, content: string | Uint8Array): Promise<void>;
29
+ appendFile(path: string, content: string | Uint8Array): Promise<void>;
30
+ mkdir(_path: string, _options?: {
31
+ recursive?: boolean;
32
+ }): Promise<void>;
33
+ rm(path: string, options?: {
34
+ recursive?: boolean;
35
+ force?: boolean;
36
+ }): Promise<void>;
37
+ cp(src: string, dest: string, _options?: {
38
+ recursive?: boolean;
39
+ }): Promise<void>;
40
+ mv(src: string, dest: string): Promise<void>;
41
+ readlink(_path: string): Promise<string>;
42
+ resolvePath(base: string, path: string): string;
43
+ private addParentDirectories;
44
+ }
45
+
46
+ /** Allowed value types for file-entry metadata. */
47
+ type FileEntryMetadata = Record<string, string | number | boolean | null>;
48
+ /** JSON-serializable metadata for a single file in the virtual tree. */
49
+ interface FileEntry<TMeta = FileEntryMetadata> {
50
+ id: string;
51
+ /** Virtual path inside the sandbox, e.g. "/src/index.ts" */
52
+ path: string;
53
+ size: number;
54
+ /** ISO-8601 date string (JSON-safe) */
55
+ mtime: string;
56
+ metadata: TMeta;
57
+ }
58
+ /**
59
+ * Flat list of file entries.
60
+ * Directories are inferred from file paths at runtime.
61
+ */
62
+ type VirtualFileTree<TMeta = FileEntryMetadata> = FileEntry<TMeta>[];
63
+ type TreeMutation<TMeta = FileEntryMetadata> = {
64
+ type: "add";
65
+ entry: FileEntry<TMeta>;
66
+ } | {
67
+ type: "remove";
68
+ path: string;
69
+ } | {
70
+ type: "update";
71
+ path: string;
72
+ entry: Partial<FileEntry<TMeta>>;
73
+ };
74
+ /**
75
+ * Consumer-provided bridge to the existing DB / S3 / CRUD layer.
76
+ *
77
+ * Generic over `TCtx` so every call receives workflow-level context
78
+ * (e.g. `{ projectId: string }`) without the resolver holding state.
79
+ *
80
+ * Generic over `TMeta` so resolved entries carry typed metadata.
81
+ */
82
+ interface FileResolver<TCtx = unknown, TMeta = FileEntryMetadata> {
83
+ resolveEntries(ctx: TCtx): Promise<FileEntry<TMeta>[]>;
84
+ readFile(id: string, ctx: TCtx): Promise<string>;
85
+ readFileBuffer(id: string, ctx: TCtx): Promise<Uint8Array>;
86
+ writeFile(id: string, content: string | Uint8Array, ctx: TCtx): Promise<void>;
87
+ createFile(path: string, content: string | Uint8Array, ctx: TCtx): Promise<FileEntry<TMeta>>;
88
+ deleteFile(id: string, ctx: TCtx): Promise<void>;
89
+ }
90
+ /**
91
+ * Options for {@link VirtualSandboxProvider.create}.
92
+ * Extends base options with resolver context.
93
+ */
94
+ interface VirtualSandboxCreateOptions<TCtx> extends SandboxCreateOptions {
95
+ resolverContext: TCtx;
96
+ }
97
+ /**
98
+ * The portion of workflow `AgentState` that the virtual sandbox reads via
99
+ * {@link queryParentWorkflowState}. Populated automatically by the session
100
+ * from the provider's `stateUpdate` after `createSandbox`.
101
+ */
102
+ interface VirtualSandboxState<TCtx = unknown, TMeta = FileEntryMetadata> {
103
+ sandboxId: string;
104
+ fileTree: FileEntry<TMeta>[];
105
+ resolverContext: TCtx;
106
+ }
107
+ /**
108
+ * A {@link Sandbox} whose filesystem is backed by a {@link VirtualSandboxFileSystem}.
109
+ */
110
+ type VirtualSandbox<TCtx = unknown, TMeta = FileEntryMetadata> = Sandbox & {
111
+ fs: VirtualSandboxFileSystem<TCtx, TMeta>;
112
+ };
113
+ /**
114
+ * Extended router context injected by {@link withVirtualSandbox}.
115
+ * Guarantees a live (ephemeral) sandbox built from the workflow file tree.
116
+ */
117
+ interface VirtualSandboxContext<TCtx = unknown, TMeta = FileEntryMetadata> extends RouterContext {
118
+ sandbox: VirtualSandbox<TCtx, TMeta>;
119
+ }
120
+
121
+ export { type FileEntryMetadata as F, type TreeMutation as T, type VirtualSandboxCreateOptions as V, type FileResolver as a, type VirtualSandboxContext as b, type FileEntry as c, type VirtualSandbox as d, type VirtualFileTree as e, VirtualSandboxFileSystem as f, type VirtualSandboxState as g };