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.
Files changed (50) hide show
  1. package/README.md +2 -0
  2. package/dist/{activities-CPwKoUlD.d.cts → activities-7OcT_vdR.d.cts} +3 -3
  3. package/dist/{activities-DlaBxNID.d.ts → activities-zG_FBoY2.d.ts} +3 -3
  4. package/dist/adapters/thread/anthropic/index.d.cts +5 -5
  5. package/dist/adapters/thread/anthropic/index.d.ts +5 -5
  6. package/dist/adapters/thread/anthropic/workflow.d.cts +5 -5
  7. package/dist/adapters/thread/anthropic/workflow.d.ts +5 -5
  8. package/dist/adapters/thread/google-genai/index.d.cts +5 -5
  9. package/dist/adapters/thread/google-genai/index.d.ts +5 -5
  10. package/dist/adapters/thread/google-genai/workflow.d.cts +6 -6
  11. package/dist/adapters/thread/google-genai/workflow.d.ts +6 -6
  12. package/dist/adapters/thread/langchain/index.d.cts +5 -5
  13. package/dist/adapters/thread/langchain/index.d.ts +5 -5
  14. package/dist/adapters/thread/langchain/workflow.d.cts +5 -5
  15. package/dist/adapters/thread/langchain/workflow.d.ts +5 -5
  16. package/dist/{cold-store-Z2wvK2cV.d.cts → cold-store-CkWoNtMh.d.cts} +1 -1
  17. package/dist/{cold-store-BDgJpwLI.d.ts → cold-store-DKMAO1Dd.d.ts} +1 -1
  18. package/dist/index.cjs +76 -10
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.cts +8 -8
  21. package/dist/index.d.ts +8 -8
  22. package/dist/index.js +76 -10
  23. package/dist/index.js.map +1 -1
  24. package/dist/{proxy-CDh3Rsa7.d.cts → proxy-B7CWEV-T.d.cts} +1 -1
  25. package/dist/{proxy-Du8ggERu.d.ts → proxy-ByFHMVRX.d.ts} +1 -1
  26. package/dist/{thread-manager-DtHYws2F.d.ts → thread-manager-7AW4rhfu.d.ts} +2 -2
  27. package/dist/{thread-manager-D8zKNFZ9.d.cts → thread-manager-B9rtMEVn.d.cts} +2 -2
  28. package/dist/{thread-manager-BjoYYXgd.d.cts → thread-manager-Cibe0X5m.d.cts} +2 -2
  29. package/dist/{thread-manager-Dw96FKH1.d.ts → thread-manager-nK-WcFzM.d.ts} +2 -2
  30. package/dist/{types-BMJrsHo0.d.cts → types-BR-k7h0e.d.cts} +1 -1
  31. package/dist/{types-CtdOquo3.d.ts → types-DO4Tkwxo.d.ts} +1 -1
  32. package/dist/{types-qQVZfhoT.d.ts → types-DeVNWqlb.d.ts} +54 -0
  33. package/dist/{types-DNEl5uxQ.d.cts → types-XUUFvrJ9.d.cts} +54 -0
  34. package/dist/{workflow-BH9ImDGq.d.cts → workflow-KbGsxpfh.d.cts} +1 -1
  35. package/dist/{workflow-Cdw3-RNB.d.ts → workflow-uhOIj9D-.d.ts} +1 -1
  36. package/dist/workflow.cjs +76 -10
  37. package/dist/workflow.cjs.map +1 -1
  38. package/dist/workflow.d.cts +2 -2
  39. package/dist/workflow.d.ts +2 -2
  40. package/dist/workflow.js +76 -10
  41. package/dist/workflow.js.map +1 -1
  42. package/package.json +6 -6
  43. package/src/lib/lifecycle.ts +13 -1
  44. package/src/lib/session/session-edge-cases.integration.test.ts +44 -0
  45. package/src/lib/session/session.ts +26 -0
  46. package/src/lib/subagent/handler.ts +55 -6
  47. package/src/lib/subagent/subagent.integration.test.ts +239 -2
  48. package/src/lib/tool-router/router-edge-cases.integration.test.ts +36 -0
  49. package/src/lib/tool-router/router.ts +29 -3
  50. package/src/lib/tool-router/types.ts +43 -0
package/dist/index.d.cts CHANGED
@@ -1,14 +1,14 @@
1
- import { B as BashArgs, F as FileEditArgs, a as FileMultiEditArgs, G as GlobArgs, b as FileReadArgs, c as FileWriteArgs } from './workflow-BH9ImDGq.cjs';
2
- export { A as AskUserQuestionArgs, D as DEFAULT_SUBAGENT_WORKFLOW_RUN_TIMEOUT, d as FileTreeAccessor, 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, X as getThreadDedupKey, Y as getThreadListKey, _ as getThreadMetaKey, $ as getThreadStateKey, 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-BH9ImDGq.cjs';
3
- import { R as RouterContext, e as ToolResultConfig, d as ActivityToolHandler, J as JsonValue, c as ToolHandlerResponse, B as BaseAgentState, f as RunAgentConfig, g as SkillProvider, h as SkillMetadata, i as Skill, F as FileEntryMetadata, j as FileResolver, V as VirtualFsContext, k as TreeMutation, l as PrefixedVirtualFsOps } from './types-DNEl5uxQ.cjs';
4
- export { m as AgentConfig, n as AgentFile, A as AgentResponse, o as AgentState, p as AgentStateManager, q as AgentStatus, r as AppendToolResultFn, s as FileEntry, H as Hooks, I as InferToolResults, t as JsonPrimitive, u as JsonSerializable, 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, U as ProcessToolCallsContext, W as ProcessToolCallsResult, X as RawToolCall, Y as RewindSignal, Z as RunAgentActivity, _ 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, 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, at as ToolHooks, au as ToolMap, av as ToolNames, aw as ToolResult, ax as ToolRouter, ay as ToolRouterHooks, az as ToolWithHandler, aA as VirtualFileSystem, aB as VirtualFileTree, aC as VirtualFsOps, aD as VirtualFsState, aE as WorkflowTask, aF as ZeitlichSession, aG as isTerminalStatus } from './types-DNEl5uxQ.cjs';
1
+ import { B as BashArgs, F as FileEditArgs, a as FileMultiEditArgs, G as GlobArgs, b as FileReadArgs, c as FileWriteArgs } from './workflow-KbGsxpfh.cjs';
2
+ export { A as AskUserQuestionArgs, D as DEFAULT_SUBAGENT_WORKFLOW_RUN_TIMEOUT, d as FileTreeAccessor, 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, X as getThreadDedupKey, Y as getThreadListKey, _ as getThreadMetaKey, $ as getThreadStateKey, 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';
3
+ import { R as RouterContext, e as ToolResultConfig, d as ActivityToolHandler, J as JsonValue, c as ToolHandlerResponse, B as BaseAgentState, f as RunAgentConfig, g as SkillProvider, h as SkillMetadata, i as Skill, F as FileEntryMetadata, j as FileResolver, V as VirtualFsContext, k as TreeMutation, l as PrefixedVirtualFsOps } from './types-XUUFvrJ9.cjs';
4
+ export { m as AgentConfig, n as AgentFile, A as AgentResponse, o as AgentState, p as AgentStateManager, q as AgentStatus, r as AppendToolResultFn, s as FileEntry, H as Hooks, I as InferToolResults, t as JsonPrimitive, u as JsonSerializable, 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, U as ProcessToolCallsContext, W as ProcessToolCallsResult, X as RawToolCall, Y as RewindSignal, Z as RunAgentActivity, _ 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, 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, at as ToolHooks, au as ToolMap, av as ToolNames, aw as ToolResult, ax as ToolRouter, ay as ToolRouterHooks, az as ToolWithHandler, aA as VirtualFileSystem, aB as VirtualFileTree, aC as VirtualFsOps, aD as VirtualFsState, aE as WorkflowTask, aF as ZeitlichSession, aG as isTerminalStatus } from './types-XUUFvrJ9.cjs';
5
5
  import { b as Sandbox, c as SandboxFileSystem, a as SandboxCreateOptions, h as SandboxCapability, d as SandboxProvider, g as SandboxSnapshot, P as PrefixedSandboxOps, F as FileStat, D as DirentEntry, E as ExecResult } from './types-CJ7tCdl6.cjs';
6
6
  export { i as ExecOptions, e as SandboxCapabilities, f as SandboxCreateResult, j as SandboxNotFoundError, k as SandboxNotSupportedError, S as SandboxOps } from './types-CJ7tCdl6.cjs';
7
7
  import { WorkflowClient } from '@temporalio/client';
8
- import { a as ThreadManagerConfig, B as BaseThreadManager } from './types-BMJrsHo0.cjs';
9
- export { P as ProviderThreadManager } from './types-BMJrsHo0.cjs';
10
- import { C as ColdThreadStore, T as ThreadSnapshot } from './cold-store-Z2wvK2cV.cjs';
11
- export { S as S3ColdStoreConfig, a as S3LikeClient, c as createS3ColdStore } from './cold-store-Z2wvK2cV.cjs';
8
+ import { a as ThreadManagerConfig, B as BaseThreadManager } from './types-BR-k7h0e.cjs';
9
+ export { P as ProviderThreadManager } from './types-BR-k7h0e.cjs';
10
+ import { C as ColdThreadStore, T as ThreadSnapshot } from './cold-store-CkWoNtMh.cjs';
11
+ export { S as S3ColdStoreConfig, a as S3LikeClient, c as createS3ColdStore } from './cold-store-CkWoNtMh.cjs';
12
12
  import Redis from 'ioredis';
13
13
  import 'zod';
14
14
  import '@temporalio/common';
package/dist/index.d.ts CHANGED
@@ -1,14 +1,14 @@
1
- import { B as BashArgs, F as FileEditArgs, a as FileMultiEditArgs, G as GlobArgs, b as FileReadArgs, c as FileWriteArgs } from './workflow-Cdw3-RNB.js';
2
- export { A as AskUserQuestionArgs, D as DEFAULT_SUBAGENT_WORKFLOW_RUN_TIMEOUT, d as FileTreeAccessor, 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, X as getThreadDedupKey, Y as getThreadListKey, _ as getThreadMetaKey, $ as getThreadStateKey, 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-Cdw3-RNB.js';
3
- import { R as RouterContext, e as ToolResultConfig, d as ActivityToolHandler, J as JsonValue, c as ToolHandlerResponse, B as BaseAgentState, f as RunAgentConfig, g as SkillProvider, h as SkillMetadata, i as Skill, F as FileEntryMetadata, j as FileResolver, V as VirtualFsContext, k as TreeMutation, l as PrefixedVirtualFsOps } from './types-qQVZfhoT.js';
4
- export { m as AgentConfig, n as AgentFile, A as AgentResponse, o as AgentState, p as AgentStateManager, q as AgentStatus, r as AppendToolResultFn, s as FileEntry, H as Hooks, I as InferToolResults, t as JsonPrimitive, u as JsonSerializable, 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, U as ProcessToolCallsContext, W as ProcessToolCallsResult, X as RawToolCall, Y as RewindSignal, Z as RunAgentActivity, _ 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, 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, at as ToolHooks, au as ToolMap, av as ToolNames, aw as ToolResult, ax as ToolRouter, ay as ToolRouterHooks, az as ToolWithHandler, aA as VirtualFileSystem, aB as VirtualFileTree, aC as VirtualFsOps, aD as VirtualFsState, aE as WorkflowTask, aF as ZeitlichSession, aG as isTerminalStatus } from './types-qQVZfhoT.js';
1
+ import { B as BashArgs, F as FileEditArgs, a as FileMultiEditArgs, G as GlobArgs, b as FileReadArgs, c as FileWriteArgs } from './workflow-uhOIj9D-.js';
2
+ export { A as AskUserQuestionArgs, D as DEFAULT_SUBAGENT_WORKFLOW_RUN_TIMEOUT, d as FileTreeAccessor, 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, X as getThreadDedupKey, Y as getThreadListKey, _ as getThreadMetaKey, $ as getThreadStateKey, 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';
3
+ import { R as RouterContext, e as ToolResultConfig, d as ActivityToolHandler, J as JsonValue, c as ToolHandlerResponse, B as BaseAgentState, f as RunAgentConfig, g as SkillProvider, h as SkillMetadata, i as Skill, F as FileEntryMetadata, j as FileResolver, V as VirtualFsContext, k as TreeMutation, l as PrefixedVirtualFsOps } from './types-DeVNWqlb.js';
4
+ export { m as AgentConfig, n as AgentFile, A as AgentResponse, o as AgentState, p as AgentStateManager, q as AgentStatus, r as AppendToolResultFn, s as FileEntry, H as Hooks, I as InferToolResults, t as JsonPrimitive, u as JsonSerializable, 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, U as ProcessToolCallsContext, W as ProcessToolCallsResult, X as RawToolCall, Y as RewindSignal, Z as RunAgentActivity, _ 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, 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, at as ToolHooks, au as ToolMap, av as ToolNames, aw as ToolResult, ax as ToolRouter, ay as ToolRouterHooks, az as ToolWithHandler, aA as VirtualFileSystem, aB as VirtualFileTree, aC as VirtualFsOps, aD as VirtualFsState, aE as WorkflowTask, aF as ZeitlichSession, aG as isTerminalStatus } from './types-DeVNWqlb.js';
5
5
  import { b as Sandbox, c as SandboxFileSystem, a as SandboxCreateOptions, h as SandboxCapability, d as SandboxProvider, g as SandboxSnapshot, P as PrefixedSandboxOps, F as FileStat, D as DirentEntry, E as ExecResult } from './types-CJ7tCdl6.js';
6
6
  export { i as ExecOptions, e as SandboxCapabilities, f as SandboxCreateResult, j as SandboxNotFoundError, k as SandboxNotSupportedError, S as SandboxOps } from './types-CJ7tCdl6.js';
7
7
  import { WorkflowClient } from '@temporalio/client';
8
- import { a as ThreadManagerConfig, B as BaseThreadManager } from './types-CtdOquo3.js';
9
- export { P as ProviderThreadManager } from './types-CtdOquo3.js';
10
- import { C as ColdThreadStore, T as ThreadSnapshot } from './cold-store-BDgJpwLI.js';
11
- export { S as S3ColdStoreConfig, a as S3LikeClient, c as createS3ColdStore } from './cold-store-BDgJpwLI.js';
8
+ import { a as ThreadManagerConfig, B as BaseThreadManager } from './types-DO4Tkwxo.js';
9
+ export { P as ProviderThreadManager } from './types-DO4Tkwxo.js';
10
+ import { C as ColdThreadStore, T as ThreadSnapshot } from './cold-store-DKMAO1Dd.js';
11
+ export { S as S3ColdStoreConfig, a as S3LikeClient, c as createS3ColdStore } from './cold-store-DKMAO1Dd.js';
12
12
  import Redis from 'ioredis';
13
13
  import 'zod';
14
14
  import '@temporalio/common';
package/dist/index.js CHANGED
@@ -125,7 +125,7 @@ function createToolRouter(options) {
125
125
  });
126
126
  }
127
127
  }
128
- async function processToolCall(toolCall, turn, sandboxId, onRewindRequested) {
128
+ async function processToolCall(toolCall, turn, sandboxId, onRewindRequested, assistantMessageId, persistThreadState) {
129
129
  const startTime = Date.now();
130
130
  const tool = toolMap.get(toolCall.name);
131
131
  const preResult = await runPreHooks(toolCall, tool, turn);
@@ -160,7 +160,9 @@ function createToolRouter(options) {
160
160
  ...options.threadKey && { threadKey: options.threadKey },
161
161
  toolCallId: toolCall.id,
162
162
  toolName: toolCall.name,
163
- ...sandboxId !== void 0 && { sandboxId }
163
+ ...sandboxId !== void 0 && { sandboxId },
164
+ ...assistantMessageId !== void 0 && { assistantMessageId },
165
+ ...persistThreadState !== void 0 && { persistThreadState }
164
166
  };
165
167
  const response = await tool.handler(
166
168
  effectiveArgs,
@@ -287,6 +289,8 @@ function createToolRouter(options) {
287
289
  }
288
290
  const turn = context?.turn ?? 0;
289
291
  const sandboxId = context?.sandboxId;
292
+ const assistantMessageId = context?.assistantMessageId;
293
+ const persistThreadState = context?.persistThreadState;
290
294
  let rewindSignal;
291
295
  if (options.parallel) {
292
296
  const scope = new CancellationScope({ cancellable: true });
@@ -299,7 +303,14 @@ function createToolRouter(options) {
299
303
  const outcomes = await scope.run(
300
304
  async () => Promise.allSettled(
301
305
  toolCalls.map(
302
- (tc) => processToolCall(tc, turn, sandboxId, onRewindRequested)
306
+ (tc) => processToolCall(
307
+ tc,
308
+ turn,
309
+ sandboxId,
310
+ onRewindRequested,
311
+ assistantMessageId,
312
+ persistThreadState
313
+ )
303
314
  )
304
315
  )
305
316
  );
@@ -319,7 +330,14 @@ function createToolRouter(options) {
319
330
  }
320
331
  const results = [];
321
332
  for (const toolCall of toolCalls) {
322
- const outcome = await processToolCall(toolCall, turn, sandboxId);
333
+ const outcome = await processToolCall(
334
+ toolCall,
335
+ turn,
336
+ sandboxId,
337
+ void 0,
338
+ assistantMessageId,
339
+ persistThreadState
340
+ );
323
341
  if (outcome.kind === "rewind") {
324
342
  rewindSignal = outcome.signal;
325
343
  break;
@@ -343,6 +361,12 @@ function createToolRouter(options) {
343
361
  toolName: toolCall.name,
344
362
  ...context?.sandboxId !== void 0 && {
345
363
  sandboxId: context.sandboxId
364
+ },
365
+ ...context?.assistantMessageId !== void 0 && {
366
+ assistantMessageId: context.assistantMessageId
367
+ },
368
+ ...context?.persistThreadState !== void 0 && {
369
+ persistThreadState: context.persistThreadState
346
370
  }
347
371
  };
348
372
  const response = await handler(
@@ -569,13 +593,26 @@ function createSubagentHandler(subagents) {
569
593
  const threadMode = config.thread ?? "new";
570
594
  const allowsContinuation = threadMode !== "new";
571
595
  const newThreadSource = config.newThreadSource ?? "new";
572
- const continuationThreadId = !allowsContinuation ? void 0 : args.threadId ?? (newThreadSource === "from-parent" ? context.threadId : void 0);
596
+ const usingParentFallback = allowsContinuation && !args.threadId && newThreadSource === "from-parent";
597
+ const continuationThreadId = !allowsContinuation ? void 0 : args.threadId ?? (usingParentFallback ? context.threadId : void 0);
573
598
  let thread;
574
599
  if (continuationThreadId) {
575
- thread = {
576
- mode: threadMode,
577
- threadId: continuationThreadId
578
- };
600
+ if (threadMode === "fork") {
601
+ thread = {
602
+ mode: "fork",
603
+ threadId: continuationThreadId,
604
+ ...usingParentFallback && context.assistantMessageId ? {
605
+ truncateAfterFork: {
606
+ fromMessageId: context.assistantMessageId
607
+ }
608
+ } : {}
609
+ };
610
+ } else {
611
+ thread = {
612
+ mode: "continue",
613
+ threadId: continuationThreadId
614
+ };
615
+ }
579
616
  }
580
617
  let sandbox;
581
618
  let sandboxShutdownOverride;
@@ -687,6 +724,17 @@ function createSubagentHandler(subagents) {
687
724
  if (isSnapshotBaseCreator) {
688
725
  snapshotBaseCreatorAgent.set(childWorkflowId, config.agentName);
689
726
  }
727
+ if (continuationThreadId && continuationThreadId === context.threadId && context.persistThreadState) {
728
+ try {
729
+ await context.persistThreadState();
730
+ } catch (err) {
731
+ log.warn("failed to persist parent thread state for subagent", {
732
+ subagent: config.agentName,
733
+ childWorkflowId,
734
+ error: err instanceof Error ? err.message : String(err)
735
+ });
736
+ }
737
+ }
690
738
  log.info("subagent spawned", {
691
739
  subagent: config.agentName,
692
740
  childWorkflowId,
@@ -1036,6 +1084,7 @@ async function createSession(config) {
1036
1084
  appendSystemMessage,
1037
1085
  appendAgentMessage,
1038
1086
  forkThread,
1087
+ truncateThread,
1039
1088
  loadThreadState,
1040
1089
  saveThreadState,
1041
1090
  hydrateThread,
@@ -1185,6 +1234,10 @@ async function createSession(config) {
1185
1234
  if (threadMode === "fork" && sourceThreadId) {
1186
1235
  await hydrateThread(sourceThreadId, threadKey);
1187
1236
  await forkThread(sourceThreadId, threadId, threadKey);
1237
+ const truncate = threadInit.truncateAfterFork;
1238
+ if (truncate?.fromMessageId) {
1239
+ await truncateThread(threadId, truncate.fromMessageId, threadKey);
1240
+ }
1188
1241
  const forkedSlice = await loadThreadState(threadId, threadKey);
1189
1242
  if (forkedSlice) rehydrateFromSlice(forkedSlice);
1190
1243
  } else if (threadMode === "continue") {
@@ -1314,7 +1367,20 @@ async function createSession(config) {
1314
1367
  parsedToolCalls,
1315
1368
  {
1316
1369
  turn: currentTurn,
1317
- ...sandboxId !== void 0 && { sandboxId }
1370
+ ...sandboxId !== void 0 && { sandboxId },
1371
+ ...assistantId !== void 0 && {
1372
+ assistantMessageId: assistantId
1373
+ },
1374
+ // Hand handlers a way to persist the parent's slice
1375
+ // mid-loop (subagents that fork or continue the parent's
1376
+ // thread need this — otherwise the child loads a stale
1377
+ // snapshot from the prior session, since `saveThreadState`
1378
+ // would otherwise only run in the `finally` below).
1379
+ persistThreadState: () => saveThreadState(
1380
+ threadId,
1381
+ stateManager.getPersistedSlice(),
1382
+ threadKey
1383
+ )
1318
1384
  }
1319
1385
  );
1320
1386
  for (const result of toolCallResults) {