zeitlich 0.2.47 → 0.2.49
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 +2 -0
- package/dist/{activities-CPwKoUlD.d.cts → activities-7OcT_vdR.d.cts} +3 -3
- package/dist/{activities-DlaBxNID.d.ts → activities-zG_FBoY2.d.ts} +3 -3
- 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/workflow.d.cts +5 -5
- package/dist/adapters/thread/anthropic/workflow.d.ts +5 -5
- 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/workflow.d.cts +6 -6
- package/dist/adapters/thread/google-genai/workflow.d.ts +6 -6
- 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/workflow.d.cts +5 -5
- package/dist/adapters/thread/langchain/workflow.d.ts +5 -5
- package/dist/{cold-store-Z2wvK2cV.d.cts → cold-store-CkWoNtMh.d.cts} +1 -1
- package/dist/{cold-store-BDgJpwLI.d.ts → cold-store-DKMAO1Dd.d.ts} +1 -1
- package/dist/index.cjs +76 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +76 -10
- package/dist/index.js.map +1 -1
- package/dist/{proxy-CDh3Rsa7.d.cts → proxy-B7CWEV-T.d.cts} +1 -1
- package/dist/{proxy-Du8ggERu.d.ts → proxy-ByFHMVRX.d.ts} +1 -1
- package/dist/{thread-manager-DtHYws2F.d.ts → thread-manager-7AW4rhfu.d.ts} +2 -2
- package/dist/{thread-manager-D8zKNFZ9.d.cts → thread-manager-B9rtMEVn.d.cts} +2 -2
- package/dist/{thread-manager-BjoYYXgd.d.cts → thread-manager-Cibe0X5m.d.cts} +2 -2
- package/dist/{thread-manager-Dw96FKH1.d.ts → thread-manager-nK-WcFzM.d.ts} +2 -2
- package/dist/{types-BMJrsHo0.d.cts → types-BR-k7h0e.d.cts} +1 -1
- package/dist/{types-CtdOquo3.d.ts → types-DO4Tkwxo.d.ts} +1 -1
- package/dist/{types-qQVZfhoT.d.ts → types-DeVNWqlb.d.ts} +54 -0
- package/dist/{types-DNEl5uxQ.d.cts → types-XUUFvrJ9.d.cts} +54 -0
- package/dist/{workflow-BH9ImDGq.d.cts → workflow-KbGsxpfh.d.cts} +1 -1
- package/dist/{workflow-Cdw3-RNB.d.ts → workflow-uhOIj9D-.d.ts} +1 -1
- package/dist/workflow.cjs +76 -10
- package/dist/workflow.cjs.map +1 -1
- package/dist/workflow.d.cts +2 -2
- package/dist/workflow.d.ts +2 -2
- package/dist/workflow.js +76 -10
- package/dist/workflow.js.map +1 -1
- package/package.json +6 -6
- package/src/lib/lifecycle.ts +13 -1
- package/src/lib/session/session-edge-cases.integration.test.ts +44 -0
- package/src/lib/session/session.ts +26 -0
- package/src/lib/subagent/handler.ts +55 -6
- package/src/lib/subagent/subagent.integration.test.ts +239 -2
- package/src/lib/tool-router/router-edge-cases.integration.test.ts +36 -0
- package/src/lib/tool-router/router.ts +29 -3
- package/src/lib/tool-router/types.ts +43 -0
package/dist/workflow.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { A as AskUserQuestionArgs, B as BashArgs, D as DEFAULT_SUBAGENT_WORKFLOW_RUN_TIMEOUT, F as FileEditArgs, a as FileMultiEditArgs, b as FileReadArgs, c as FileWriteArgs, G as GlobArgs, e as GrepArgs, O as ObservabilityHooks, R as ReadSkillArgs, S as SessionEndedEvent, f as SessionStartedEvent, g as SubagentArgs, T as THREAD_TTL_SECONDS, h as TaskCreateArgs, i as TaskGetArgs, j as TaskListArgs, k as TaskUpdateArgs, l as ToolExecutedEvent, m as TurnCompletedEvent, W as WorkflowConfig, n as WorkflowInput, o as WorkflowSessionInput, Z as ZeitlichObservabilitySinks, p as applyVirtualTreeMutations, q as askUserQuestionTool, r as bashTool, s as composeHooks, t as createAgentStateManager, u as createAskUserQuestionHandler, v as createBashToolDescription, w as createObservabilityHooks, x as createReadSkillHandler, y as createReadSkillTool, z as createSession, C as createTaskCreateHandler, E as createTaskGetHandler, H as createTaskListHandler, I as createTaskUpdateHandler, J as createToolRouter, K as defineSubagent, L as defineSubagentWorkflow, M as defineTool, N as defineWorkflow, P as editTool, Q as filesWithMimeType, U as formatVirtualFileTree, V as getShortId, Y as getThreadListKey, _ as getThreadMetaKey, a0 as globTool, a1 as grepTool, a2 as hasDirectory, a3 as hasFileWithMimeType, a4 as hasNoOtherToolCalls, a5 as multiEditTool, a6 as parseSkillFile, a7 as proxyRunAgent, a8 as proxyVirtualFsOps, a9 as readFileTool, aa as taskCreateTool, ab as taskGetTool, ac as taskListTool, ad as taskUpdateTool, ae as writeFileTool } from './workflow-
|
|
2
|
-
export { d as ActivityToolHandler, m as AgentConfig, n as AgentFile, A as AgentResponse, o as AgentState, p as AgentStateManager, q as AgentStatus, r as AppendToolResultFn, B as BaseAgentState, s as FileEntry, F as FileEntryMetadata, j as FileResolver, H as Hooks, I as InferToolResults, t as JsonPrimitive, u as JsonSerializable, J as JsonValue, a as ModelInvoker, M as ModelInvokerConfig, v as ParsedToolCall, w as ParsedToolCallUnion, P as PersistedThreadState, x as PostHumanMessageAppendHook, y as PostHumanMessageAppendHookContext, z as PostToolUseFailureHook, C as PostToolUseFailureHookContext, D as PostToolUseFailureHookResult, E as PostToolUseHook, G as PostToolUseHookContext, K as PreHumanMessageAppendHook, L as PreHumanMessageAppendHookContext, N as PreToolUseHook, O as PreToolUseHookContext, Q as PreToolUseHookResult, b as PrefixedThreadOps, l as PrefixedVirtualFsOps, U as ProcessToolCallsContext, W as ProcessToolCallsResult, X as RawToolCall, Y as RewindSignal, R as RouterContext, Z as RunAgentActivity, f as RunAgentConfig, _ as SandboxInit, $ as SandboxShutdown, S as ScopedPrefix, a0 as SerializableToolDefinition, a1 as SessionConfig, a2 as SessionEndHook, a3 as SessionEndHookContext, a4 as SessionExitReason, a5 as SessionRequiredCaps, a6 as SessionResult, a7 as SessionStartHook, a8 as SessionStartHookContext, i as Skill, h as SkillMetadata, g as SkillProvider, a9 as SubagentChildWorkflowOptions, aa as SubagentConfig, ab as SubagentContinuationCaps, ac as SubagentDefinition, ad as SubagentFnResult, ae as SubagentHandlerResponse, af as SubagentHooks, ag as SubagentSandboxConfig, ah as SubagentSandboxShutdown, ai as SubagentSessionInput, aj as SubagentWorkflow, ak as SubagentWorkflowInput, al as TaskStatus, am as ThreadInit, T as ThreadOps, an as TokenUsage, ao as ToolArgs, ap as ToolCallResult, aq as ToolCallResultUnion, ar as ToolDefinition, as as ToolHandler, c as ToolHandlerResponse, at as ToolHooks, au as ToolMap, av as ToolNames, aw as ToolResult, e as ToolResultConfig, ax as ToolRouter, ay as ToolRouterHooks, az as ToolWithHandler, k as TreeMutation, aB as VirtualFileTree, aC as VirtualFsOps, aD as VirtualFsState, aE as WorkflowTask, aF as ZeitlichSession, aG as isTerminalStatus } from './types-
|
|
1
|
+
export { A as AskUserQuestionArgs, B as BashArgs, D as DEFAULT_SUBAGENT_WORKFLOW_RUN_TIMEOUT, F as FileEditArgs, a as FileMultiEditArgs, b as FileReadArgs, c as FileWriteArgs, G as GlobArgs, e as GrepArgs, O as ObservabilityHooks, R as ReadSkillArgs, S as SessionEndedEvent, f as SessionStartedEvent, g as SubagentArgs, T as THREAD_TTL_SECONDS, h as TaskCreateArgs, i as TaskGetArgs, j as TaskListArgs, k as TaskUpdateArgs, l as ToolExecutedEvent, m as TurnCompletedEvent, W as WorkflowConfig, n as WorkflowInput, o as WorkflowSessionInput, Z as ZeitlichObservabilitySinks, p as applyVirtualTreeMutations, q as askUserQuestionTool, r as bashTool, s as composeHooks, t as createAgentStateManager, u as createAskUserQuestionHandler, v as createBashToolDescription, w as createObservabilityHooks, x as createReadSkillHandler, y as createReadSkillTool, z as createSession, C as createTaskCreateHandler, E as createTaskGetHandler, H as createTaskListHandler, I as createTaskUpdateHandler, J as createToolRouter, K as defineSubagent, L as defineSubagentWorkflow, M as defineTool, N as defineWorkflow, P as editTool, Q as filesWithMimeType, U as formatVirtualFileTree, V as getShortId, Y as getThreadListKey, _ as getThreadMetaKey, a0 as globTool, a1 as grepTool, a2 as hasDirectory, a3 as hasFileWithMimeType, a4 as hasNoOtherToolCalls, a5 as multiEditTool, a6 as parseSkillFile, a7 as proxyRunAgent, a8 as proxyVirtualFsOps, a9 as readFileTool, aa as taskCreateTool, ab as taskGetTool, ac as taskListTool, ad as taskUpdateTool, ae as writeFileTool } from './workflow-KbGsxpfh.cjs';
|
|
2
|
+
export { d as ActivityToolHandler, m as AgentConfig, n as AgentFile, A as AgentResponse, o as AgentState, p as AgentStateManager, q as AgentStatus, r as AppendToolResultFn, B as BaseAgentState, s as FileEntry, F as FileEntryMetadata, j as FileResolver, H as Hooks, I as InferToolResults, t as JsonPrimitive, u as JsonSerializable, J as JsonValue, a as ModelInvoker, M as ModelInvokerConfig, v as ParsedToolCall, w as ParsedToolCallUnion, P as PersistedThreadState, x as PostHumanMessageAppendHook, y as PostHumanMessageAppendHookContext, z as PostToolUseFailureHook, C as PostToolUseFailureHookContext, D as PostToolUseFailureHookResult, E as PostToolUseHook, G as PostToolUseHookContext, K as PreHumanMessageAppendHook, L as PreHumanMessageAppendHookContext, N as PreToolUseHook, O as PreToolUseHookContext, Q as PreToolUseHookResult, b as PrefixedThreadOps, l as PrefixedVirtualFsOps, U as ProcessToolCallsContext, W as ProcessToolCallsResult, X as RawToolCall, Y as RewindSignal, R as RouterContext, Z as RunAgentActivity, f as RunAgentConfig, _ as SandboxInit, $ as SandboxShutdown, S as ScopedPrefix, a0 as SerializableToolDefinition, a1 as SessionConfig, a2 as SessionEndHook, a3 as SessionEndHookContext, a4 as SessionExitReason, a5 as SessionRequiredCaps, a6 as SessionResult, a7 as SessionStartHook, a8 as SessionStartHookContext, i as Skill, h as SkillMetadata, g as SkillProvider, a9 as SubagentChildWorkflowOptions, aa as SubagentConfig, ab as SubagentContinuationCaps, ac as SubagentDefinition, ad as SubagentFnResult, ae as SubagentHandlerResponse, af as SubagentHooks, ag as SubagentSandboxConfig, ah as SubagentSandboxShutdown, ai as SubagentSessionInput, aj as SubagentWorkflow, ak as SubagentWorkflowInput, al as TaskStatus, am as ThreadInit, T as ThreadOps, an as TokenUsage, ao as ToolArgs, ap as ToolCallResult, aq as ToolCallResultUnion, ar as ToolDefinition, as as ToolHandler, c as ToolHandlerResponse, at as ToolHooks, au as ToolMap, av as ToolNames, aw as ToolResult, e as ToolResultConfig, ax as ToolRouter, ay as ToolRouterHooks, az as ToolWithHandler, k as TreeMutation, aB as VirtualFileTree, aC as VirtualFsOps, aD as VirtualFsState, aE as WorkflowTask, aF as ZeitlichSession, aG as isTerminalStatus } from './types-XUUFvrJ9.cjs';
|
|
3
3
|
export { i as ExecOptions, E as ExecResult, P as PrefixedSandboxOps, b as Sandbox, e as SandboxCapabilities, h as SandboxCapability, a as SandboxCreateOptions, f as SandboxCreateResult, D as SandboxDirentEntry, F as SandboxFileStat, c as SandboxFileSystem, j as SandboxNotFoundError, k as SandboxNotSupportedError, S as SandboxOps, d as SandboxProvider, g as SandboxSnapshot } from './types-CJ7tCdl6.cjs';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import '@temporalio/common';
|
package/dist/workflow.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { A as AskUserQuestionArgs, B as BashArgs, D as DEFAULT_SUBAGENT_WORKFLOW_RUN_TIMEOUT, F as FileEditArgs, a as FileMultiEditArgs, b as FileReadArgs, c as FileWriteArgs, G as GlobArgs, e as GrepArgs, O as ObservabilityHooks, R as ReadSkillArgs, S as SessionEndedEvent, f as SessionStartedEvent, g as SubagentArgs, T as THREAD_TTL_SECONDS, h as TaskCreateArgs, i as TaskGetArgs, j as TaskListArgs, k as TaskUpdateArgs, l as ToolExecutedEvent, m as TurnCompletedEvent, W as WorkflowConfig, n as WorkflowInput, o as WorkflowSessionInput, Z as ZeitlichObservabilitySinks, p as applyVirtualTreeMutations, q as askUserQuestionTool, r as bashTool, s as composeHooks, t as createAgentStateManager, u as createAskUserQuestionHandler, v as createBashToolDescription, w as createObservabilityHooks, x as createReadSkillHandler, y as createReadSkillTool, z as createSession, C as createTaskCreateHandler, E as createTaskGetHandler, H as createTaskListHandler, I as createTaskUpdateHandler, J as createToolRouter, K as defineSubagent, L as defineSubagentWorkflow, M as defineTool, N as defineWorkflow, P as editTool, Q as filesWithMimeType, U as formatVirtualFileTree, V as getShortId, Y as getThreadListKey, _ as getThreadMetaKey, a0 as globTool, a1 as grepTool, a2 as hasDirectory, a3 as hasFileWithMimeType, a4 as hasNoOtherToolCalls, a5 as multiEditTool, a6 as parseSkillFile, a7 as proxyRunAgent, a8 as proxyVirtualFsOps, a9 as readFileTool, aa as taskCreateTool, ab as taskGetTool, ac as taskListTool, ad as taskUpdateTool, ae as writeFileTool } from './workflow-
|
|
2
|
-
export { d as ActivityToolHandler, m as AgentConfig, n as AgentFile, A as AgentResponse, o as AgentState, p as AgentStateManager, q as AgentStatus, r as AppendToolResultFn, B as BaseAgentState, s as FileEntry, F as FileEntryMetadata, j as FileResolver, H as Hooks, I as InferToolResults, t as JsonPrimitive, u as JsonSerializable, J as JsonValue, a as ModelInvoker, M as ModelInvokerConfig, v as ParsedToolCall, w as ParsedToolCallUnion, P as PersistedThreadState, x as PostHumanMessageAppendHook, y as PostHumanMessageAppendHookContext, z as PostToolUseFailureHook, C as PostToolUseFailureHookContext, D as PostToolUseFailureHookResult, E as PostToolUseHook, G as PostToolUseHookContext, K as PreHumanMessageAppendHook, L as PreHumanMessageAppendHookContext, N as PreToolUseHook, O as PreToolUseHookContext, Q as PreToolUseHookResult, b as PrefixedThreadOps, l as PrefixedVirtualFsOps, U as ProcessToolCallsContext, W as ProcessToolCallsResult, X as RawToolCall, Y as RewindSignal, R as RouterContext, Z as RunAgentActivity, f as RunAgentConfig, _ as SandboxInit, $ as SandboxShutdown, S as ScopedPrefix, a0 as SerializableToolDefinition, a1 as SessionConfig, a2 as SessionEndHook, a3 as SessionEndHookContext, a4 as SessionExitReason, a5 as SessionRequiredCaps, a6 as SessionResult, a7 as SessionStartHook, a8 as SessionStartHookContext, i as Skill, h as SkillMetadata, g as SkillProvider, a9 as SubagentChildWorkflowOptions, aa as SubagentConfig, ab as SubagentContinuationCaps, ac as SubagentDefinition, ad as SubagentFnResult, ae as SubagentHandlerResponse, af as SubagentHooks, ag as SubagentSandboxConfig, ah as SubagentSandboxShutdown, ai as SubagentSessionInput, aj as SubagentWorkflow, ak as SubagentWorkflowInput, al as TaskStatus, am as ThreadInit, T as ThreadOps, an as TokenUsage, ao as ToolArgs, ap as ToolCallResult, aq as ToolCallResultUnion, ar as ToolDefinition, as as ToolHandler, c as ToolHandlerResponse, at as ToolHooks, au as ToolMap, av as ToolNames, aw as ToolResult, e as ToolResultConfig, ax as ToolRouter, ay as ToolRouterHooks, az as ToolWithHandler, k as TreeMutation, aB as VirtualFileTree, aC as VirtualFsOps, aD as VirtualFsState, aE as WorkflowTask, aF as ZeitlichSession, aG as isTerminalStatus } from './types-
|
|
1
|
+
export { A as AskUserQuestionArgs, B as BashArgs, D as DEFAULT_SUBAGENT_WORKFLOW_RUN_TIMEOUT, F as FileEditArgs, a as FileMultiEditArgs, b as FileReadArgs, c as FileWriteArgs, G as GlobArgs, e as GrepArgs, O as ObservabilityHooks, R as ReadSkillArgs, S as SessionEndedEvent, f as SessionStartedEvent, g as SubagentArgs, T as THREAD_TTL_SECONDS, h as TaskCreateArgs, i as TaskGetArgs, j as TaskListArgs, k as TaskUpdateArgs, l as ToolExecutedEvent, m as TurnCompletedEvent, W as WorkflowConfig, n as WorkflowInput, o as WorkflowSessionInput, Z as ZeitlichObservabilitySinks, p as applyVirtualTreeMutations, q as askUserQuestionTool, r as bashTool, s as composeHooks, t as createAgentStateManager, u as createAskUserQuestionHandler, v as createBashToolDescription, w as createObservabilityHooks, x as createReadSkillHandler, y as createReadSkillTool, z as createSession, C as createTaskCreateHandler, E as createTaskGetHandler, H as createTaskListHandler, I as createTaskUpdateHandler, J as createToolRouter, K as defineSubagent, L as defineSubagentWorkflow, M as defineTool, N as defineWorkflow, P as editTool, Q as filesWithMimeType, U as formatVirtualFileTree, V as getShortId, Y as getThreadListKey, _ as getThreadMetaKey, a0 as globTool, a1 as grepTool, a2 as hasDirectory, a3 as hasFileWithMimeType, a4 as hasNoOtherToolCalls, a5 as multiEditTool, a6 as parseSkillFile, a7 as proxyRunAgent, a8 as proxyVirtualFsOps, a9 as readFileTool, aa as taskCreateTool, ab as taskGetTool, ac as taskListTool, ad as taskUpdateTool, ae as writeFileTool } from './workflow-uhOIj9D-.js';
|
|
2
|
+
export { d as ActivityToolHandler, m as AgentConfig, n as AgentFile, A as AgentResponse, o as AgentState, p as AgentStateManager, q as AgentStatus, r as AppendToolResultFn, B as BaseAgentState, s as FileEntry, F as FileEntryMetadata, j as FileResolver, H as Hooks, I as InferToolResults, t as JsonPrimitive, u as JsonSerializable, J as JsonValue, a as ModelInvoker, M as ModelInvokerConfig, v as ParsedToolCall, w as ParsedToolCallUnion, P as PersistedThreadState, x as PostHumanMessageAppendHook, y as PostHumanMessageAppendHookContext, z as PostToolUseFailureHook, C as PostToolUseFailureHookContext, D as PostToolUseFailureHookResult, E as PostToolUseHook, G as PostToolUseHookContext, K as PreHumanMessageAppendHook, L as PreHumanMessageAppendHookContext, N as PreToolUseHook, O as PreToolUseHookContext, Q as PreToolUseHookResult, b as PrefixedThreadOps, l as PrefixedVirtualFsOps, U as ProcessToolCallsContext, W as ProcessToolCallsResult, X as RawToolCall, Y as RewindSignal, R as RouterContext, Z as RunAgentActivity, f as RunAgentConfig, _ as SandboxInit, $ as SandboxShutdown, S as ScopedPrefix, a0 as SerializableToolDefinition, a1 as SessionConfig, a2 as SessionEndHook, a3 as SessionEndHookContext, a4 as SessionExitReason, a5 as SessionRequiredCaps, a6 as SessionResult, a7 as SessionStartHook, a8 as SessionStartHookContext, i as Skill, h as SkillMetadata, g as SkillProvider, a9 as SubagentChildWorkflowOptions, aa as SubagentConfig, ab as SubagentContinuationCaps, ac as SubagentDefinition, ad as SubagentFnResult, ae as SubagentHandlerResponse, af as SubagentHooks, ag as SubagentSandboxConfig, ah as SubagentSandboxShutdown, ai as SubagentSessionInput, aj as SubagentWorkflow, ak as SubagentWorkflowInput, al as TaskStatus, am as ThreadInit, T as ThreadOps, an as TokenUsage, ao as ToolArgs, ap as ToolCallResult, aq as ToolCallResultUnion, ar as ToolDefinition, as as ToolHandler, c as ToolHandlerResponse, at as ToolHooks, au as ToolMap, av as ToolNames, aw as ToolResult, e as ToolResultConfig, ax as ToolRouter, ay as ToolRouterHooks, az as ToolWithHandler, k as TreeMutation, aB as VirtualFileTree, aC as VirtualFsOps, aD as VirtualFsState, aE as WorkflowTask, aF as ZeitlichSession, aG as isTerminalStatus } from './types-DeVNWqlb.js';
|
|
3
3
|
export { i as ExecOptions, E as ExecResult, P as PrefixedSandboxOps, b as Sandbox, e as SandboxCapabilities, h as SandboxCapability, a as SandboxCreateOptions, f as SandboxCreateResult, D as SandboxDirentEntry, F as SandboxFileStat, c as SandboxFileSystem, j as SandboxNotFoundError, k as SandboxNotSupportedError, S as SandboxOps, d as SandboxProvider, g as SandboxSnapshot } from './types-CJ7tCdl6.js';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import '@temporalio/common';
|
package/dist/workflow.js
CHANGED
|
@@ -117,7 +117,7 @@ function createToolRouter(options) {
|
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
async function processToolCall(toolCall, turn, sandboxId, onRewindRequested) {
|
|
120
|
+
async function processToolCall(toolCall, turn, sandboxId, onRewindRequested, assistantMessageId, persistThreadState) {
|
|
121
121
|
const startTime = Date.now();
|
|
122
122
|
const tool = toolMap.get(toolCall.name);
|
|
123
123
|
const preResult = await runPreHooks(toolCall, tool, turn);
|
|
@@ -152,7 +152,9 @@ function createToolRouter(options) {
|
|
|
152
152
|
...options.threadKey && { threadKey: options.threadKey },
|
|
153
153
|
toolCallId: toolCall.id,
|
|
154
154
|
toolName: toolCall.name,
|
|
155
|
-
...sandboxId !== void 0 && { sandboxId }
|
|
155
|
+
...sandboxId !== void 0 && { sandboxId },
|
|
156
|
+
...assistantMessageId !== void 0 && { assistantMessageId },
|
|
157
|
+
...persistThreadState !== void 0 && { persistThreadState }
|
|
156
158
|
};
|
|
157
159
|
const response = await tool.handler(
|
|
158
160
|
effectiveArgs,
|
|
@@ -279,6 +281,8 @@ function createToolRouter(options) {
|
|
|
279
281
|
}
|
|
280
282
|
const turn = context?.turn ?? 0;
|
|
281
283
|
const sandboxId = context?.sandboxId;
|
|
284
|
+
const assistantMessageId = context?.assistantMessageId;
|
|
285
|
+
const persistThreadState = context?.persistThreadState;
|
|
282
286
|
let rewindSignal;
|
|
283
287
|
if (options.parallel) {
|
|
284
288
|
const scope = new CancellationScope({ cancellable: true });
|
|
@@ -291,7 +295,14 @@ function createToolRouter(options) {
|
|
|
291
295
|
const outcomes = await scope.run(
|
|
292
296
|
async () => Promise.allSettled(
|
|
293
297
|
toolCalls.map(
|
|
294
|
-
(tc) => processToolCall(
|
|
298
|
+
(tc) => processToolCall(
|
|
299
|
+
tc,
|
|
300
|
+
turn,
|
|
301
|
+
sandboxId,
|
|
302
|
+
onRewindRequested,
|
|
303
|
+
assistantMessageId,
|
|
304
|
+
persistThreadState
|
|
305
|
+
)
|
|
295
306
|
)
|
|
296
307
|
)
|
|
297
308
|
);
|
|
@@ -311,7 +322,14 @@ function createToolRouter(options) {
|
|
|
311
322
|
}
|
|
312
323
|
const results = [];
|
|
313
324
|
for (const toolCall of toolCalls) {
|
|
314
|
-
const outcome = await processToolCall(
|
|
325
|
+
const outcome = await processToolCall(
|
|
326
|
+
toolCall,
|
|
327
|
+
turn,
|
|
328
|
+
sandboxId,
|
|
329
|
+
void 0,
|
|
330
|
+
assistantMessageId,
|
|
331
|
+
persistThreadState
|
|
332
|
+
);
|
|
315
333
|
if (outcome.kind === "rewind") {
|
|
316
334
|
rewindSignal = outcome.signal;
|
|
317
335
|
break;
|
|
@@ -335,6 +353,12 @@ function createToolRouter(options) {
|
|
|
335
353
|
toolName: toolCall.name,
|
|
336
354
|
...context?.sandboxId !== void 0 && {
|
|
337
355
|
sandboxId: context.sandboxId
|
|
356
|
+
},
|
|
357
|
+
...context?.assistantMessageId !== void 0 && {
|
|
358
|
+
assistantMessageId: context.assistantMessageId
|
|
359
|
+
},
|
|
360
|
+
...context?.persistThreadState !== void 0 && {
|
|
361
|
+
persistThreadState: context.persistThreadState
|
|
338
362
|
}
|
|
339
363
|
};
|
|
340
364
|
const response = await handler(
|
|
@@ -561,13 +585,26 @@ function createSubagentHandler(subagents) {
|
|
|
561
585
|
const threadMode = config.thread ?? "new";
|
|
562
586
|
const allowsContinuation = threadMode !== "new";
|
|
563
587
|
const newThreadSource = config.newThreadSource ?? "new";
|
|
564
|
-
const
|
|
588
|
+
const usingParentFallback = allowsContinuation && !args.threadId && newThreadSource === "from-parent";
|
|
589
|
+
const continuationThreadId = !allowsContinuation ? void 0 : args.threadId ?? (usingParentFallback ? context.threadId : void 0);
|
|
565
590
|
let thread;
|
|
566
591
|
if (continuationThreadId) {
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
592
|
+
if (threadMode === "fork") {
|
|
593
|
+
thread = {
|
|
594
|
+
mode: "fork",
|
|
595
|
+
threadId: continuationThreadId,
|
|
596
|
+
...usingParentFallback && context.assistantMessageId ? {
|
|
597
|
+
truncateAfterFork: {
|
|
598
|
+
fromMessageId: context.assistantMessageId
|
|
599
|
+
}
|
|
600
|
+
} : {}
|
|
601
|
+
};
|
|
602
|
+
} else {
|
|
603
|
+
thread = {
|
|
604
|
+
mode: "continue",
|
|
605
|
+
threadId: continuationThreadId
|
|
606
|
+
};
|
|
607
|
+
}
|
|
571
608
|
}
|
|
572
609
|
let sandbox;
|
|
573
610
|
let sandboxShutdownOverride;
|
|
@@ -679,6 +716,17 @@ function createSubagentHandler(subagents) {
|
|
|
679
716
|
if (isSnapshotBaseCreator) {
|
|
680
717
|
snapshotBaseCreatorAgent.set(childWorkflowId, config.agentName);
|
|
681
718
|
}
|
|
719
|
+
if (continuationThreadId && continuationThreadId === context.threadId && context.persistThreadState) {
|
|
720
|
+
try {
|
|
721
|
+
await context.persistThreadState();
|
|
722
|
+
} catch (err) {
|
|
723
|
+
log.warn("failed to persist parent thread state for subagent", {
|
|
724
|
+
subagent: config.agentName,
|
|
725
|
+
childWorkflowId,
|
|
726
|
+
error: err instanceof Error ? err.message : String(err)
|
|
727
|
+
});
|
|
728
|
+
}
|
|
729
|
+
}
|
|
682
730
|
log.info("subagent spawned", {
|
|
683
731
|
subagent: config.agentName,
|
|
684
732
|
childWorkflowId,
|
|
@@ -1028,6 +1076,7 @@ async function createSession(config) {
|
|
|
1028
1076
|
appendSystemMessage,
|
|
1029
1077
|
appendAgentMessage,
|
|
1030
1078
|
forkThread,
|
|
1079
|
+
truncateThread,
|
|
1031
1080
|
loadThreadState,
|
|
1032
1081
|
saveThreadState,
|
|
1033
1082
|
hydrateThread,
|
|
@@ -1177,6 +1226,10 @@ async function createSession(config) {
|
|
|
1177
1226
|
if (threadMode === "fork" && sourceThreadId) {
|
|
1178
1227
|
await hydrateThread(sourceThreadId, threadKey);
|
|
1179
1228
|
await forkThread(sourceThreadId, threadId, threadKey);
|
|
1229
|
+
const truncate = threadInit.truncateAfterFork;
|
|
1230
|
+
if (truncate?.fromMessageId) {
|
|
1231
|
+
await truncateThread(threadId, truncate.fromMessageId, threadKey);
|
|
1232
|
+
}
|
|
1180
1233
|
const forkedSlice = await loadThreadState(threadId, threadKey);
|
|
1181
1234
|
if (forkedSlice) rehydrateFromSlice(forkedSlice);
|
|
1182
1235
|
} else if (threadMode === "continue") {
|
|
@@ -1306,7 +1359,20 @@ async function createSession(config) {
|
|
|
1306
1359
|
parsedToolCalls,
|
|
1307
1360
|
{
|
|
1308
1361
|
turn: currentTurn,
|
|
1309
|
-
...sandboxId !== void 0 && { sandboxId }
|
|
1362
|
+
...sandboxId !== void 0 && { sandboxId },
|
|
1363
|
+
...assistantId !== void 0 && {
|
|
1364
|
+
assistantMessageId: assistantId
|
|
1365
|
+
},
|
|
1366
|
+
// Hand handlers a way to persist the parent's slice
|
|
1367
|
+
// mid-loop (subagents that fork or continue the parent's
|
|
1368
|
+
// thread need this — otherwise the child loads a stale
|
|
1369
|
+
// snapshot from the prior session, since `saveThreadState`
|
|
1370
|
+
// would otherwise only run in the `finally` below).
|
|
1371
|
+
persistThreadState: () => saveThreadState(
|
|
1372
|
+
threadId,
|
|
1373
|
+
stateManager.getPersistedSlice(),
|
|
1374
|
+
threadKey
|
|
1375
|
+
)
|
|
1310
1376
|
}
|
|
1311
1377
|
);
|
|
1312
1378
|
for (const result of toolCallResults) {
|