zeitlich 0.2.22 → 0.2.24
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/README.md +278 -59
- package/dist/adapters/sandbox/bedrock/index.cjs +427 -0
- package/dist/adapters/sandbox/bedrock/index.cjs.map +1 -0
- package/dist/adapters/sandbox/bedrock/index.d.cts +23 -0
- package/dist/adapters/sandbox/bedrock/index.d.ts +23 -0
- package/dist/adapters/sandbox/bedrock/index.js +424 -0
- package/dist/adapters/sandbox/bedrock/index.js.map +1 -0
- package/dist/adapters/sandbox/bedrock/workflow.cjs +33 -0
- package/dist/adapters/sandbox/bedrock/workflow.cjs.map +1 -0
- package/dist/adapters/sandbox/bedrock/workflow.d.cts +29 -0
- package/dist/adapters/sandbox/bedrock/workflow.d.ts +29 -0
- package/dist/adapters/sandbox/bedrock/workflow.js +31 -0
- package/dist/adapters/sandbox/bedrock/workflow.js.map +1 -0
- package/dist/adapters/sandbox/daytona/index.cjs +4 -1
- package/dist/adapters/sandbox/daytona/index.cjs.map +1 -1
- package/dist/adapters/sandbox/daytona/index.d.cts +2 -1
- package/dist/adapters/sandbox/daytona/index.d.ts +2 -1
- package/dist/adapters/sandbox/daytona/index.js +4 -1
- package/dist/adapters/sandbox/daytona/index.js.map +1 -1
- package/dist/adapters/sandbox/daytona/workflow.cjs +1 -0
- package/dist/adapters/sandbox/daytona/workflow.cjs.map +1 -1
- package/dist/adapters/sandbox/daytona/workflow.d.cts +1 -1
- package/dist/adapters/sandbox/daytona/workflow.d.ts +1 -1
- package/dist/adapters/sandbox/daytona/workflow.js +1 -0
- package/dist/adapters/sandbox/daytona/workflow.js.map +1 -1
- package/dist/adapters/sandbox/inmemory/index.cjs +16 -2
- package/dist/adapters/sandbox/inmemory/index.cjs.map +1 -1
- package/dist/adapters/sandbox/inmemory/index.d.cts +3 -2
- package/dist/adapters/sandbox/inmemory/index.d.ts +3 -2
- package/dist/adapters/sandbox/inmemory/index.js +16 -2
- package/dist/adapters/sandbox/inmemory/index.js.map +1 -1
- package/dist/adapters/sandbox/inmemory/workflow.cjs +1 -0
- package/dist/adapters/sandbox/inmemory/workflow.cjs.map +1 -1
- package/dist/adapters/sandbox/inmemory/workflow.d.cts +1 -1
- package/dist/adapters/sandbox/inmemory/workflow.d.ts +1 -1
- package/dist/adapters/sandbox/inmemory/workflow.js +1 -0
- package/dist/adapters/sandbox/inmemory/workflow.js.map +1 -1
- package/dist/adapters/sandbox/virtual/index.cjs +45 -11
- package/dist/adapters/sandbox/virtual/index.cjs.map +1 -1
- package/dist/adapters/sandbox/virtual/index.d.cts +6 -5
- package/dist/adapters/sandbox/virtual/index.d.ts +6 -5
- package/dist/adapters/sandbox/virtual/index.js +45 -11
- package/dist/adapters/sandbox/virtual/index.js.map +1 -1
- package/dist/adapters/sandbox/virtual/workflow.cjs +1 -0
- package/dist/adapters/sandbox/virtual/workflow.cjs.map +1 -1
- package/dist/adapters/sandbox/virtual/workflow.d.cts +3 -3
- package/dist/adapters/sandbox/virtual/workflow.d.ts +3 -3
- package/dist/adapters/sandbox/virtual/workflow.js +1 -0
- package/dist/adapters/sandbox/virtual/workflow.js.map +1 -1
- package/dist/adapters/thread/google-genai/index.d.cts +3 -3
- package/dist/adapters/thread/google-genai/index.d.ts +3 -3
- package/dist/adapters/thread/google-genai/workflow.d.cts +3 -3
- package/dist/adapters/thread/google-genai/workflow.d.ts +3 -3
- package/dist/adapters/thread/langchain/index.d.cts +3 -3
- package/dist/adapters/thread/langchain/index.d.ts +3 -3
- package/dist/adapters/thread/langchain/workflow.d.cts +3 -3
- package/dist/adapters/thread/langchain/workflow.d.ts +3 -3
- package/dist/index.cjs +443 -71
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +64 -10
- package/dist/index.d.ts +64 -10
- package/dist/index.js +442 -71
- package/dist/index.js.map +1 -1
- package/dist/{queries-Bw6WEPMw.d.cts → queries-BYGBImeC.d.cts} +1 -1
- package/dist/{queries-C27raDaB.d.ts → queries-DwBe2CAA.d.ts} +1 -1
- package/dist/{types-C5bkx6kQ.d.ts → types-7PeMi1bD.d.cts} +167 -36
- package/dist/{types-BJ8itUAl.d.cts → types-Bf8KV0Ci.d.cts} +6 -6
- package/dist/{types-HBosetv3.d.cts → types-ChAMwU3q.d.cts} +2 -0
- package/dist/{types-HBosetv3.d.ts → types-ChAMwU3q.d.ts} +2 -0
- package/dist/{types-YbL7JpEA.d.cts → types-D_igp10o.d.cts} +11 -0
- package/dist/{types-YbL7JpEA.d.ts → types-D_igp10o.d.ts} +11 -0
- package/dist/types-DhTCEMhr.d.cts +64 -0
- package/dist/{types-ENYCKFBk.d.ts → types-LVKmCNds.d.ts} +6 -6
- package/dist/types-d9NznUqd.d.ts +64 -0
- package/dist/{types-ClsHhtwL.d.cts → types-hmferhc2.d.ts} +167 -36
- package/dist/workflow.cjs +308 -63
- package/dist/workflow.cjs.map +1 -1
- package/dist/workflow.d.cts +54 -32
- package/dist/workflow.d.ts +54 -32
- package/dist/workflow.js +306 -61
- package/dist/workflow.js.map +1 -1
- package/package.json +27 -2
- package/src/adapters/sandbox/bedrock/filesystem.ts +313 -0
- package/src/adapters/sandbox/bedrock/index.ts +259 -0
- package/src/adapters/sandbox/bedrock/proxy.ts +56 -0
- package/src/adapters/sandbox/bedrock/types.ts +24 -0
- package/src/adapters/sandbox/daytona/filesystem.ts +1 -1
- package/src/adapters/sandbox/daytona/index.ts +4 -0
- package/src/adapters/sandbox/daytona/proxy.ts +4 -3
- package/src/adapters/sandbox/e2b/index.ts +5 -0
- package/src/adapters/sandbox/inmemory/index.ts +24 -4
- package/src/adapters/sandbox/inmemory/proxy.ts +2 -2
- package/src/adapters/sandbox/virtual/filesystem.ts +44 -18
- package/src/adapters/sandbox/virtual/provider.ts +13 -0
- package/src/adapters/sandbox/virtual/proxy.ts +1 -0
- package/src/adapters/sandbox/virtual/types.ts +9 -4
- package/src/adapters/sandbox/virtual/virtual-sandbox.test.ts +26 -0
- package/src/index.ts +2 -1
- package/src/lib/lifecycle.ts +57 -0
- package/src/lib/sandbox/manager.ts +13 -1
- package/src/lib/sandbox/node-fs.ts +115 -0
- package/src/lib/sandbox/types.ts +13 -4
- package/src/lib/session/index.ts +1 -0
- package/src/lib/session/session-edge-cases.integration.test.ts +447 -33
- package/src/lib/session/session.integration.test.ts +149 -32
- package/src/lib/session/session.ts +138 -33
- package/src/lib/session/types.ts +56 -17
- package/src/lib/skills/fs-provider.ts +65 -4
- package/src/lib/skills/handler.ts +43 -1
- package/src/lib/skills/index.ts +0 -1
- package/src/lib/skills/register.ts +17 -1
- package/src/lib/skills/skills.integration.test.ts +308 -24
- package/src/lib/skills/types.ts +6 -0
- package/src/lib/subagent/define.ts +5 -4
- package/src/lib/subagent/handler.ts +143 -14
- package/src/lib/subagent/index.ts +3 -0
- package/src/lib/subagent/register.ts +10 -3
- package/src/lib/subagent/signals.ts +8 -0
- package/src/lib/subagent/subagent.integration.test.ts +853 -150
- package/src/lib/subagent/tool.ts +2 -2
- package/src/lib/subagent/types.ts +77 -19
- package/src/lib/subagent/workflow.ts +83 -12
- package/src/lib/tool-router/router.integration.test.ts +137 -4
- package/src/lib/tool-router/router.ts +19 -6
- package/src/lib/tool-router/types.ts +11 -0
- package/src/lib/workflow.test.ts +89 -21
- package/src/lib/workflow.ts +33 -18
- package/src/workflow.ts +6 -1
- package/tsup.config.ts +3 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Duration } from '@temporalio/common';
|
|
2
|
-
import { a as ToolMap, b as ToolRouterHooks, M as MessageContent, S as SessionExitReason, c as ToolHandlerResponse, P as PreToolUseHookResult, d as PostToolUseFailureHookResult, e as RawToolCall, f as TokenUsage, B as BaseAgentState, g as RunAgentConfig, h as AgentStatus, W as WorkflowTask, i as ToolDefinition, j as ToolResultConfig, k as ToolCallResultUnion, I as InferToolResults } from './types-
|
|
2
|
+
import { a as ToolMap, b as ToolRouterHooks, M as MessageContent, S as SessionExitReason, c as ToolHandlerResponse, P as PreToolUseHookResult, d as PostToolUseFailureHookResult, e as RawToolCall, f as TokenUsage, B as BaseAgentState, g as RunAgentConfig, h as AgentStatus, W as WorkflowTask, i as ToolDefinition, j as ToolResultConfig, k as ToolCallResultUnion, I as InferToolResults } from './types-D_igp10o.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
-
import { g as SandboxOps } from './types-
|
|
4
|
+
import { g as SandboxOps } from './types-ChAMwU3q.js';
|
|
5
5
|
import { QueryDefinition, ActivityInterfaceFor } from '@temporalio/workflow';
|
|
6
6
|
import { UpdateDefinition } from '@temporalio/common/lib/interfaces';
|
|
7
7
|
|
|
@@ -69,19 +69,81 @@ interface Hooks<T extends ToolMap, TResult = unknown> extends ToolRouterHooks<T,
|
|
|
69
69
|
onSessionEnd?: SessionEndHook;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Thread initialization strategy.
|
|
74
|
+
*
|
|
75
|
+
* - `"new"` — start a fresh thread (optionally specify its ID).
|
|
76
|
+
* - `"continue"` — append directly to an existing thread in-place.
|
|
77
|
+
* - `"fork"` — copy all messages from an existing thread into a new one and
|
|
78
|
+
* continue there.
|
|
79
|
+
*/
|
|
80
|
+
type ThreadInit = {
|
|
81
|
+
mode: "new";
|
|
82
|
+
threadId?: string;
|
|
83
|
+
} | {
|
|
84
|
+
mode: "continue";
|
|
85
|
+
threadId: string;
|
|
86
|
+
} | {
|
|
87
|
+
mode: "fork";
|
|
88
|
+
threadId: string;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Sandbox initialization strategy.
|
|
92
|
+
*
|
|
93
|
+
* - `"new"` — create a fresh sandbox.
|
|
94
|
+
* - `"continue"` — resume a previously-paused sandbox (this session takes
|
|
95
|
+
* ownership and the shutdown policy applies on exit).
|
|
96
|
+
* - `"fork"` — fork from an existing (or paused) sandbox; a new sandbox is
|
|
97
|
+
* created and owned by this session.
|
|
98
|
+
* - `"inherit"` — use a sandbox owned by someone else (e.g. a parent agent).
|
|
99
|
+
* The session will **not** manage its lifecycle on exit.
|
|
100
|
+
*/
|
|
101
|
+
type SandboxInit = {
|
|
102
|
+
mode: "new";
|
|
103
|
+
} | {
|
|
104
|
+
mode: "continue";
|
|
105
|
+
sandboxId: string;
|
|
106
|
+
} | {
|
|
107
|
+
mode: "fork";
|
|
108
|
+
sandboxId: string;
|
|
109
|
+
} | {
|
|
110
|
+
mode: "inherit";
|
|
111
|
+
sandboxId: string;
|
|
112
|
+
stateUpdate?: Record<string, unknown>;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* What to do with the sandbox when the session exits.
|
|
116
|
+
*
|
|
117
|
+
* - `"destroy"` — tear down the sandbox entirely.
|
|
118
|
+
* - `"pause"` — pause the sandbox so it can be resumed later.
|
|
119
|
+
* - `"keep"` — leave the sandbox running (no-op on exit).
|
|
120
|
+
*/
|
|
121
|
+
type SandboxShutdown = "destroy" | "pause" | "keep";
|
|
122
|
+
/**
|
|
123
|
+
* Extended shutdown options available to subagent workflows.
|
|
124
|
+
*
|
|
125
|
+
* Includes all base {@link SandboxShutdown} values plus:
|
|
126
|
+
* - `"pause-until-parent-close"` — pause the sandbox on exit, then wait for
|
|
127
|
+
* the parent workflow to signal when to destroy it.
|
|
128
|
+
*/
|
|
129
|
+
type SubagentSandboxShutdown = SandboxShutdown | "pause-until-parent-close";
|
|
130
|
+
|
|
72
131
|
/** ToolHandlerResponse with threadId required (subagents must always surface their thread) */
|
|
73
132
|
type SubagentHandlerResponse<TResult = null> = ToolHandlerResponse<TResult> & {
|
|
74
133
|
threadId: string;
|
|
134
|
+
sandboxId?: string;
|
|
75
135
|
};
|
|
76
136
|
/**
|
|
77
137
|
* Raw workflow input fields passed from parent to child workflow.
|
|
78
138
|
* `defineSubagentWorkflow` maps this into `SubagentSessionInput`.
|
|
79
139
|
*/
|
|
80
140
|
interface SubagentWorkflowInput {
|
|
81
|
-
/** Thread
|
|
82
|
-
|
|
83
|
-
/** Sandbox
|
|
84
|
-
|
|
141
|
+
/** Thread initialization strategy forwarded from the parent */
|
|
142
|
+
thread?: ThreadInit;
|
|
143
|
+
/** Sandbox initialization strategy forwarded from the parent */
|
|
144
|
+
sandbox?: SandboxInit;
|
|
145
|
+
/** Sandbox shutdown override from the parent (takes precedence over workflow default) */
|
|
146
|
+
sandboxShutdown?: SubagentSandboxShutdown;
|
|
85
147
|
}
|
|
86
148
|
type SubagentWorkflow<TResult extends z.ZodType = z.ZodType> = (prompt: string, workflowInput: SubagentWorkflowInput, context?: Record<string, unknown>) => Promise<SubagentHandlerResponse<z.infer<TResult> | null>>;
|
|
87
149
|
/**
|
|
@@ -95,6 +157,21 @@ type SubagentDefinition<TResult extends z.ZodType = z.ZodType, TContext extends
|
|
|
95
157
|
};
|
|
96
158
|
/** Context value or factory — resolved at invocation time when a function is provided */
|
|
97
159
|
type SubagentContext = Record<string, unknown> | (() => Record<string, unknown>);
|
|
160
|
+
/**
|
|
161
|
+
* Sandbox configuration for a subagent.
|
|
162
|
+
*
|
|
163
|
+
* String shorthands:
|
|
164
|
+
* - `"none"` — no sandbox (default).
|
|
165
|
+
* - `"inherit"` — reuse the parent's sandbox (shared filesystem/exec).
|
|
166
|
+
* - `"own"` — the child creates and owns its own sandbox (shutdown defaults to `"destroy"`).
|
|
167
|
+
*
|
|
168
|
+
* Object form (only for `source: "own"`):
|
|
169
|
+
* - `{ source: "own", shutdown?: SubagentSandboxShutdown }` — own sandbox with explicit shutdown policy.
|
|
170
|
+
*/
|
|
171
|
+
type SubagentSandboxConfig = "none" | "inherit" | "own" | {
|
|
172
|
+
source: "own";
|
|
173
|
+
shutdown?: SubagentSandboxShutdown;
|
|
174
|
+
};
|
|
98
175
|
/**
|
|
99
176
|
* Configuration for a subagent that can be spawned by the parent workflow.
|
|
100
177
|
*
|
|
@@ -108,23 +185,34 @@ interface SubagentConfig<TResult extends z.ZodType = z.ZodType> {
|
|
|
108
185
|
/** Whether this subagent is available (default: true). Disabled subagents are excluded from the Subagent tool. */
|
|
109
186
|
enabled?: boolean | (() => boolean);
|
|
110
187
|
/** Temporal workflow function or type name (used with executeChild) */
|
|
111
|
-
workflow:
|
|
188
|
+
workflow: SubagentWorkflow<TResult>;
|
|
112
189
|
/** Optional task queue - defaults to parent's queue if not specified */
|
|
113
190
|
taskQueue?: string;
|
|
114
191
|
/** Optional Zod schema to validate the child workflow's result. If omitted, result is passed through as-is. */
|
|
115
192
|
resultSchema?: TResult;
|
|
116
193
|
/** Optional context passed to the subagent — a static object or a function evaluated at invocation time */
|
|
117
194
|
context?: SubagentContext;
|
|
118
|
-
/** Allow the parent agent to pass a threadId for this subagent to continue (default: false) */
|
|
119
|
-
allowThreadContinuation?: boolean;
|
|
120
195
|
/** Per-subagent lifecycle hooks */
|
|
121
196
|
hooks?: SubagentHooks;
|
|
197
|
+
/**
|
|
198
|
+
* Thread mode for this subagent.
|
|
199
|
+
*
|
|
200
|
+
* - `"new"` (default) — always start a fresh thread.
|
|
201
|
+
* - `"fork"` — the parent can pass a `threadId`; messages are copied into
|
|
202
|
+
* a new thread and the subagent continues there.
|
|
203
|
+
* - `"continue"` — the parent can pass a `threadId`; the subagent appends
|
|
204
|
+
* directly to the existing thread in-place.
|
|
205
|
+
*/
|
|
206
|
+
thread?: "new" | "fork" | "continue";
|
|
122
207
|
/**
|
|
123
208
|
* Sandbox strategy for this subagent.
|
|
124
|
-
*
|
|
125
|
-
*
|
|
209
|
+
*
|
|
210
|
+
* String shorthands: `"none"` (default) | `"inherit"` | `"own"`.
|
|
211
|
+
* Object form: `{ source: "own", shutdown?: SubagentSandboxShutdown }`.
|
|
212
|
+
*
|
|
213
|
+
* @see {@link SubagentSandboxConfig}
|
|
126
214
|
*/
|
|
127
|
-
sandbox?:
|
|
215
|
+
sandbox?: SubagentSandboxConfig;
|
|
128
216
|
}
|
|
129
217
|
/**
|
|
130
218
|
* Per-subagent lifecycle hooks - defined on a SubagentConfig.
|
|
@@ -144,6 +232,8 @@ interface SubagentHooks<TArgs = unknown, TResult = unknown> {
|
|
|
144
232
|
threadId: string;
|
|
145
233
|
turn: number;
|
|
146
234
|
durationMs: number;
|
|
235
|
+
/** Unvalidated metadata from the child workflow (e.g. infrastructure state) */
|
|
236
|
+
metadata?: Record<string, unknown>;
|
|
147
237
|
}) => void | Promise<void>;
|
|
148
238
|
/** Called when this subagent execution fails */
|
|
149
239
|
onExecutionFailure?: (ctx: {
|
|
@@ -153,18 +243,31 @@ interface SubagentHooks<TArgs = unknown, TResult = unknown> {
|
|
|
153
243
|
turn: number;
|
|
154
244
|
}) => PostToolUseFailureHookResult | Promise<PostToolUseFailureHookResult>;
|
|
155
245
|
}
|
|
246
|
+
/**
|
|
247
|
+
* Extended response from the subagent `fn` — includes optional cleanup callbacks
|
|
248
|
+
* stripped before signaling the parent.
|
|
249
|
+
*
|
|
250
|
+
* When `TSandboxShutdown` is `"pause-until-parent-close"`, both `destroySandbox`
|
|
251
|
+
* and `sandboxId` become required so the parent can coordinate cleanup.
|
|
252
|
+
*/
|
|
253
|
+
type SubagentFnResult<TResult = null, TSandboxShutdown extends SubagentSandboxShutdown = SubagentSandboxShutdown> = SubagentHandlerResponse<TResult> & (TSandboxShutdown extends "pause-until-parent-close" ? {
|
|
254
|
+
destroySandbox: () => Promise<void>;
|
|
255
|
+
sandboxId: string;
|
|
256
|
+
} : {
|
|
257
|
+
destroySandbox?: () => Promise<void>;
|
|
258
|
+
});
|
|
156
259
|
/**
|
|
157
260
|
* Session config fields passed from parent to child workflow.
|
|
158
261
|
*/
|
|
159
262
|
interface SubagentSessionInput {
|
|
160
263
|
/** Agent name — spread directly into `createSession` */
|
|
161
264
|
agentName: string;
|
|
162
|
-
/** Thread
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
|
|
166
|
-
/** Sandbox
|
|
167
|
-
|
|
265
|
+
/** Thread initialization strategy */
|
|
266
|
+
thread?: ThreadInit;
|
|
267
|
+
/** Sandbox initialization strategy */
|
|
268
|
+
sandbox?: SandboxInit;
|
|
269
|
+
/** Sandbox shutdown policy (default: "destroy") */
|
|
270
|
+
sandboxShutdown?: SubagentSandboxShutdown;
|
|
168
271
|
}
|
|
169
272
|
|
|
170
273
|
/**
|
|
@@ -184,6 +287,8 @@ interface SkillMetadata {
|
|
|
184
287
|
metadata?: Record<string, string>;
|
|
185
288
|
/** Space-delimited list of pre-approved tools the skill may use */
|
|
186
289
|
allowedTools?: string[];
|
|
290
|
+
/** Absolute path to the skill directory (parent of SKILL.md) */
|
|
291
|
+
location?: string;
|
|
187
292
|
}
|
|
188
293
|
/**
|
|
189
294
|
* A fully-loaded skill including the SKILL.md instruction body.
|
|
@@ -193,6 +298,8 @@ interface SkillMetadata {
|
|
|
193
298
|
interface Skill extends SkillMetadata {
|
|
194
299
|
/** The markdown body of SKILL.md (everything after the frontmatter) */
|
|
195
300
|
instructions: string;
|
|
301
|
+
/** Resource file contents keyed by relative path (e.g. `references/overview.md` → content) */
|
|
302
|
+
resourceContents?: Record<string, string>;
|
|
196
303
|
}
|
|
197
304
|
/**
|
|
198
305
|
* Abstraction for discovering and loading skills.
|
|
@@ -205,6 +312,8 @@ interface SkillProvider {
|
|
|
205
312
|
listSkills(): Promise<SkillMetadata[]>;
|
|
206
313
|
/** Load a single skill with full instructions by name */
|
|
207
314
|
getSkill(name: string): Promise<Skill>;
|
|
315
|
+
/** Load all skills with full instructions */
|
|
316
|
+
loadAll(): Promise<Skill[]>;
|
|
208
317
|
}
|
|
209
318
|
|
|
210
319
|
/**
|
|
@@ -384,8 +493,6 @@ type PrefixedThreadOps<TPrefix extends string> = {
|
|
|
384
493
|
interface SessionConfig<T extends ToolMap, M = unknown> {
|
|
385
494
|
/** The name of the agent, should be unique within the workflows */
|
|
386
495
|
agentName: string;
|
|
387
|
-
/** The thread ID to use for the session (defaults to a short generated ID) */
|
|
388
|
-
threadId?: string;
|
|
389
496
|
/** Metadata for the session */
|
|
390
497
|
metadata?: Record<string, unknown>;
|
|
391
498
|
/** Whether to append the system prompt as message to the thread */
|
|
@@ -400,7 +507,7 @@ interface SessionConfig<T extends ToolMap, M = unknown> {
|
|
|
400
507
|
tools?: T;
|
|
401
508
|
/** Subagent configurations */
|
|
402
509
|
subagents?: SubagentConfig[];
|
|
403
|
-
/** Skills available to this agent (metadata + instructions, loaded
|
|
510
|
+
/** Skills available to this agent (metadata + instructions, loaded before session creation) */
|
|
404
511
|
skills?: Skill[];
|
|
405
512
|
/** Session lifecycle hooks */
|
|
406
513
|
hooks?: Hooks<T, ToolCallResultUnion<InferToolResults<T>>>;
|
|
@@ -411,28 +518,52 @@ interface SessionConfig<T extends ToolMap, M = unknown> {
|
|
|
411
518
|
* Returns MessageContent array for the initial HumanMessage.
|
|
412
519
|
*/
|
|
413
520
|
buildContextMessage: () => MessageContent | Promise<MessageContent>;
|
|
414
|
-
/** When true, skip thread initialization and system prompt — append only the new human message to the existing thread. */
|
|
415
|
-
continueThread?: boolean;
|
|
416
521
|
/** How long to wait for input before cancelling the workflow */
|
|
417
522
|
waitForInputTimeout?: Duration;
|
|
523
|
+
/**
|
|
524
|
+
* Thread initialization strategy (default: `{ mode: "new" }`).
|
|
525
|
+
*
|
|
526
|
+
* - `{ mode: "new" }` — start a fresh thread.
|
|
527
|
+
* - `{ mode: "new", threadId: "..." }` — start a fresh thread with a specific ID.
|
|
528
|
+
* - `{ mode: "continue", threadId: "..." }` — append to an existing thread in-place.
|
|
529
|
+
* - `{ mode: "fork", threadId: "..." }` — fork an existing thread and continue in the copy.
|
|
530
|
+
*/
|
|
531
|
+
thread?: ThreadInit;
|
|
418
532
|
/** Sandbox lifecycle operations (optional — omit for agents that don't need a sandbox) */
|
|
419
|
-
|
|
533
|
+
sandboxOps?: SandboxOps;
|
|
420
534
|
/**
|
|
421
|
-
*
|
|
422
|
-
*
|
|
423
|
-
*
|
|
535
|
+
* Sandbox initialization strategy.
|
|
536
|
+
*
|
|
537
|
+
* - `{ mode: "new" }` — create a fresh sandbox.
|
|
538
|
+
* - `{ mode: "continue", sandboxId: "..." }` — resume a paused sandbox (session owns it).
|
|
539
|
+
* - `{ mode: "fork", sandboxId: "..." }` — fork from an existing sandbox.
|
|
540
|
+
* - `{ mode: "inherit", sandboxId: "..." }` — use a parent's sandbox without ownership.
|
|
541
|
+
*
|
|
542
|
+
* When omitted and `sandboxOps` is provided, defaults to `{ mode: "new" }`.
|
|
424
543
|
*/
|
|
425
|
-
|
|
544
|
+
sandbox?: SandboxInit;
|
|
545
|
+
/**
|
|
546
|
+
* What to do with the sandbox when this session exits.
|
|
547
|
+
*
|
|
548
|
+
* Defaults to `"destroy"` when omitted.
|
|
549
|
+
* Has no effect when the sandbox is inherited (`sandbox.mode === "inherit"`).
|
|
550
|
+
*/
|
|
551
|
+
sandboxShutdown?: SubagentSandboxShutdown;
|
|
426
552
|
}
|
|
427
|
-
|
|
553
|
+
type SessionResult<M, TState extends JsonSerializable<TState>, HasSandbox extends boolean = boolean> = {
|
|
554
|
+
threadId: string;
|
|
555
|
+
finalMessage: M | null;
|
|
556
|
+
exitReason: SessionExitReason;
|
|
557
|
+
usage: ReturnType<AgentStateManager<TState>["getTotalUsage"]>;
|
|
558
|
+
} & (HasSandbox extends true ? {
|
|
559
|
+
sandboxId: string;
|
|
560
|
+
} : {
|
|
561
|
+
sandboxId?: undefined;
|
|
562
|
+
});
|
|
563
|
+
interface ZeitlichSession<M = unknown, HasSandbox extends boolean = boolean> {
|
|
428
564
|
runSession<T extends JsonSerializable<T>>(args: {
|
|
429
565
|
stateManager: AgentStateManager<T>;
|
|
430
|
-
}): Promise<
|
|
431
|
-
threadId: string;
|
|
432
|
-
finalMessage: M | null;
|
|
433
|
-
exitReason: SessionExitReason;
|
|
434
|
-
usage: ReturnType<AgentStateManager<T>["getTotalUsage"]>;
|
|
435
|
-
}>;
|
|
566
|
+
}): Promise<SessionResult<M, T, HasSandbox>>;
|
|
436
567
|
}
|
|
437
568
|
|
|
438
|
-
export type { AgentResponse as A, Hooks as H, JsonPrimitive as J, ModelInvoker as M, PrefixedThreadOps as P, RunAgentActivity as R, ScopedPrefix as S, ThreadOps as T, ZeitlichSession as Z, ModelInvokerConfig as a, SkillProvider as b, SkillMetadata as c, Skill as d, AgentState as e, AgentStateManager as f, JsonSerializable as g, JsonValue as h, PostHumanMessageAppendHook as i, PostHumanMessageAppendHookContext as j, PreHumanMessageAppendHook as k, PreHumanMessageAppendHookContext as l,
|
|
569
|
+
export type { AgentResponse as A, SubagentSandboxShutdown as B, SubagentSessionInput as C, SubagentWorkflow as D, SubagentWorkflowInput as E, ThreadInit as F, Hooks as H, JsonPrimitive as J, ModelInvoker as M, PrefixedThreadOps as P, RunAgentActivity as R, ScopedPrefix as S, ThreadOps as T, ZeitlichSession as Z, ModelInvokerConfig as a, SkillProvider as b, SkillMetadata as c, Skill as d, AgentState as e, AgentStateManager as f, JsonSerializable as g, JsonValue as h, PostHumanMessageAppendHook as i, PostHumanMessageAppendHookContext as j, PreHumanMessageAppendHook as k, PreHumanMessageAppendHookContext as l, SandboxInit as m, SandboxShutdown as n, SessionConfig as o, SessionEndHook as p, SessionEndHookContext as q, SessionResult as r, SessionStartHook as s, SessionStartHookContext as t, SubagentConfig as u, SubagentDefinition as v, SubagentFnResult as w, SubagentHandlerResponse as x, SubagentHooks as y, SubagentSandboxConfig as z };
|