zeitlich 0.2.25 → 0.2.26

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 (111) hide show
  1. package/dist/activities-BEJRyDVU.d.cts +137 -0
  2. package/dist/activities-LVQdLF6I.d.ts +137 -0
  3. package/dist/adapters/sandbox/virtual/index.cjs.map +1 -1
  4. package/dist/adapters/sandbox/virtual/index.d.cts +8 -7
  5. package/dist/adapters/sandbox/virtual/index.d.ts +8 -7
  6. package/dist/adapters/sandbox/virtual/index.js.map +1 -1
  7. package/dist/adapters/sandbox/virtual/workflow.d.cts +3 -2
  8. package/dist/adapters/sandbox/virtual/workflow.d.ts +3 -2
  9. package/dist/adapters/thread/anthropic/index.cjs +356 -0
  10. package/dist/adapters/thread/anthropic/index.cjs.map +1 -0
  11. package/dist/adapters/thread/anthropic/index.d.cts +148 -0
  12. package/dist/adapters/thread/anthropic/index.d.ts +148 -0
  13. package/dist/adapters/thread/anthropic/index.js +351 -0
  14. package/dist/adapters/thread/anthropic/index.js.map +1 -0
  15. package/dist/adapters/thread/anthropic/workflow.cjs +38 -0
  16. package/dist/adapters/thread/anthropic/workflow.cjs.map +1 -0
  17. package/dist/adapters/thread/anthropic/workflow.d.cts +37 -0
  18. package/dist/adapters/thread/anthropic/workflow.d.ts +37 -0
  19. package/dist/adapters/thread/anthropic/workflow.js +36 -0
  20. package/dist/adapters/thread/anthropic/workflow.js.map +1 -0
  21. package/dist/adapters/thread/google-genai/index.cjs +95 -97
  22. package/dist/adapters/thread/google-genai/index.cjs.map +1 -1
  23. package/dist/adapters/thread/google-genai/index.d.cts +9 -111
  24. package/dist/adapters/thread/google-genai/index.d.ts +9 -111
  25. package/dist/adapters/thread/google-genai/index.js +96 -97
  26. package/dist/adapters/thread/google-genai/index.js.map +1 -1
  27. package/dist/adapters/thread/google-genai/workflow.cjs +9 -4
  28. package/dist/adapters/thread/google-genai/workflow.cjs.map +1 -1
  29. package/dist/adapters/thread/google-genai/workflow.d.cts +10 -5
  30. package/dist/adapters/thread/google-genai/workflow.d.ts +10 -5
  31. package/dist/adapters/thread/google-genai/workflow.js +9 -4
  32. package/dist/adapters/thread/google-genai/workflow.js.map +1 -1
  33. package/dist/adapters/thread/langchain/index.cjs +43 -60
  34. package/dist/adapters/thread/langchain/index.cjs.map +1 -1
  35. package/dist/adapters/thread/langchain/index.d.cts +24 -38
  36. package/dist/adapters/thread/langchain/index.d.ts +24 -38
  37. package/dist/adapters/thread/langchain/index.js +43 -60
  38. package/dist/adapters/thread/langchain/index.js.map +1 -1
  39. package/dist/adapters/thread/langchain/workflow.cjs +9 -4
  40. package/dist/adapters/thread/langchain/workflow.cjs.map +1 -1
  41. package/dist/adapters/thread/langchain/workflow.d.cts +10 -5
  42. package/dist/adapters/thread/langchain/workflow.d.ts +10 -5
  43. package/dist/adapters/thread/langchain/workflow.js +9 -4
  44. package/dist/adapters/thread/langchain/workflow.js.map +1 -1
  45. package/dist/index.cjs +27 -10
  46. package/dist/index.cjs.map +1 -1
  47. package/dist/index.d.cts +13 -12
  48. package/dist/index.d.ts +13 -12
  49. package/dist/index.js +28 -11
  50. package/dist/index.js.map +1 -1
  51. package/dist/proxy-BK1ydQt0.d.ts +24 -0
  52. package/dist/proxy-BMAsMHdp.d.cts +24 -0
  53. package/dist/{queries-DwBe2CAA.d.ts → queries-BCgJ9Sr5.d.ts} +1 -1
  54. package/dist/{queries-BYGBImeC.d.cts → queries-DwnE2bu3.d.cts} +1 -1
  55. package/dist/thread-manager-CH9krS3h.d.ts +37 -0
  56. package/dist/thread-manager-Czhpxbt6.d.ts +29 -0
  57. package/dist/thread-manager-DOnQzImf.d.cts +29 -0
  58. package/dist/thread-manager-b4DML-qu.d.cts +37 -0
  59. package/dist/{types-35POpVfa.d.ts → types-BDRDbm3h.d.cts} +22 -1
  60. package/dist/{types-hmferhc2.d.ts → types-CvJyXDYt.d.ts} +44 -123
  61. package/dist/{types-LVKmCNds.d.ts → types-DFUNSYbj.d.ts} +1 -1
  62. package/dist/{types-Bf8KV0Ci.d.cts → types-DRnz-OZp.d.cts} +1 -1
  63. package/dist/{types-7PeMi1bD.d.cts → types-DSOefLpY.d.cts} +44 -123
  64. package/dist/{types-35POpVfa.d.cts → types-WNSeZbWa.d.ts} +22 -1
  65. package/dist/{types-D_igp10o.d.cts → types-mCVxKIZb.d.cts} +233 -137
  66. package/dist/{types-D_igp10o.d.ts → types-mCVxKIZb.d.ts} +233 -137
  67. package/dist/workflow.cjs +25 -9
  68. package/dist/workflow.cjs.map +1 -1
  69. package/dist/workflow.d.cts +11 -11
  70. package/dist/workflow.d.ts +11 -11
  71. package/dist/workflow.js +26 -10
  72. package/dist/workflow.js.map +1 -1
  73. package/package.json +26 -1
  74. package/src/adapters/sandbox/virtual/with-virtual-sandbox.ts +8 -3
  75. package/src/adapters/thread/anthropic/activities.ts +223 -0
  76. package/src/adapters/thread/anthropic/index.ts +44 -0
  77. package/src/adapters/thread/anthropic/model-invoker.ts +124 -0
  78. package/src/adapters/thread/anthropic/proxy.ts +33 -0
  79. package/src/adapters/thread/anthropic/thread-manager.ts +191 -0
  80. package/src/adapters/thread/google-genai/activities.ts +107 -32
  81. package/src/adapters/thread/google-genai/index.ts +3 -1
  82. package/src/adapters/thread/google-genai/model-invoker.ts +7 -40
  83. package/src/adapters/thread/google-genai/proxy.ts +6 -34
  84. package/src/adapters/thread/google-genai/thread-manager.ts +84 -104
  85. package/src/adapters/thread/langchain/activities.ts +53 -20
  86. package/src/adapters/thread/langchain/index.ts +3 -1
  87. package/src/adapters/thread/langchain/model-invoker.ts +7 -9
  88. package/src/adapters/thread/langchain/proxy.ts +6 -34
  89. package/src/adapters/thread/langchain/thread-manager.ts +44 -98
  90. package/src/index.ts +5 -1
  91. package/src/lib/activity.ts +4 -3
  92. package/src/lib/hooks/types.ts +12 -12
  93. package/src/lib/model/types.ts +2 -0
  94. package/src/lib/session/session-edge-cases.integration.test.ts +24 -6
  95. package/src/lib/session/session.ts +18 -14
  96. package/src/lib/session/types.ts +31 -14
  97. package/src/lib/subagent/handler.ts +15 -8
  98. package/src/lib/subagent/types.ts +3 -2
  99. package/src/lib/thread/index.ts +2 -0
  100. package/src/lib/thread/manager.ts +4 -7
  101. package/src/lib/thread/proxy.ts +57 -0
  102. package/src/lib/thread/types.ts +31 -0
  103. package/src/lib/tool-router/auto-append-sandbox.integration.test.ts +54 -0
  104. package/src/lib/tool-router/auto-append.ts +5 -2
  105. package/src/lib/tool-router/router-edge-cases.integration.test.ts +9 -5
  106. package/src/lib/tool-router/router.ts +13 -7
  107. package/src/lib/tool-router/types.ts +20 -13
  108. package/src/lib/tool-router/with-sandbox.ts +4 -3
  109. package/src/lib/types.ts +7 -14
  110. package/src/workflow.ts +0 -4
  111. package/tsup.config.ts +5 -0
package/dist/index.d.cts CHANGED
@@ -1,15 +1,16 @@
1
1
  import { BashArgs, FileEditArgs, GlobArgs, FileReadArgs, FileWriteArgs } from './workflow.cjs';
2
2
  export { AskUserQuestionArgs, GrepArgs, ReadSkillArgs, SubagentArgs, TaskCreateArgs, TaskGetArgs, TaskListArgs, TaskUpdateArgs, WorkflowConfig, WorkflowInput, WorkflowSessionInput, applyVirtualTreeMutations, askUserQuestionTool, bashTool, createAgentStateManager, createAskUserQuestionHandler, createBashToolDescription, createReadSkillHandler, createReadSkillTool, createSession, createTaskCreateHandler, createTaskGetHandler, createTaskListHandler, createTaskUpdateHandler, createToolRouter, defineSubagent, defineSubagentWorkflow, defineTool, defineWorkflow, editTool, formatVirtualFileTree, getShortId, globTool, grepTool, hasNoOtherToolCalls, parseSkillFile, readFileTool, taskCreateTool, taskGetTool, taskListTool, taskUpdateTool, writeFileTool } from './workflow.cjs';
3
- import { b as SkillProvider, c as SkillMetadata, d as Skill } from './types-7PeMi1bD.cjs';
4
- export { A as AgentResponse, e as AgentState, f as AgentStateManager, H as Hooks, J as JsonPrimitive, g as JsonSerializable, h as JsonValue, M as ModelInvoker, a as ModelInvokerConfig, i as PostHumanMessageAppendHook, j as PostHumanMessageAppendHookContext, k as PreHumanMessageAppendHook, l as PreHumanMessageAppendHookContext, P as PrefixedThreadOps, R as RunAgentActivity, m as SandboxInit, n as SandboxShutdown, S as ScopedPrefix, o as SessionConfig, p as SessionEndHook, q as SessionEndHookContext, r as SessionResult, s as SessionStartHook, t as SessionStartHookContext, u as SubagentConfig, v as SubagentDefinition, w as SubagentFnResult, x as SubagentHandlerResponse, y as SubagentHooks, z as SubagentSandboxConfig, B as SubagentSandboxShutdown, C as SubagentSessionInput, D as SubagentWorkflow, E as SubagentWorkflowInput, F as ThreadInit, T as ThreadOps, Z as ZeitlichSession } from './types-7PeMi1bD.cjs';
5
- import { R as RouterContext, j as ToolResultConfig, A as ActivityToolHandler, c as ToolHandlerResponse, B as BaseAgentState, g as RunAgentConfig } from './types-D_igp10o.cjs';
6
- export { l as AgentConfig, m as AgentFile, h as AgentStatus, n as AppendToolResultFn, C as ContentPart, I as InferToolResults, M as MessageContent, o as ParsedToolCall, p as ParsedToolCallUnion, q as PostToolUseFailureHook, r as PostToolUseFailureHookContext, d as PostToolUseFailureHookResult, s as PostToolUseHook, t as PostToolUseHookContext, u as PreToolUseHook, v as PreToolUseHookContext, P as PreToolUseHookResult, w as ProcessToolCallsContext, e as RawToolCall, x as SerializableToolDefinition, S as SessionExitReason, y as TaskStatus, f as TokenUsage, z as ToolArgs, D as ToolCallResult, k as ToolCallResultUnion, i as ToolDefinition, E as ToolHandler, F as ToolHooks, a as ToolMap, T as ToolMessageContent, G as ToolNames, H as ToolResult, J as ToolRouter, b as ToolRouterHooks, K as ToolWithHandler, W as WorkflowTask, L as isTerminalStatus } from './types-D_igp10o.cjs';
3
+ import { b as SkillProvider, c as SkillMetadata, d as Skill } from './types-DSOefLpY.cjs';
4
+ export { A as AgentResponse, H as Hooks, a as ModelInvoker, M as ModelInvokerConfig, e as PostHumanMessageAppendHook, f as PostHumanMessageAppendHookContext, g as PreHumanMessageAppendHook, h as PreHumanMessageAppendHookContext, P as PrefixedThreadOps, R as RunAgentActivity, i as SandboxInit, j as SandboxShutdown, S as ScopedPrefix, k as SessionConfig, l as SessionEndHook, m as SessionEndHookContext, n as SessionResult, o as SessionStartHook, p as SessionStartHookContext, q as SubagentConfig, r as SubagentDefinition, s as SubagentFnResult, t as SubagentHandlerResponse, u as SubagentHooks, v as SubagentSandboxConfig, w as SubagentSandboxShutdown, x as SubagentSessionInput, y as SubagentWorkflow, z as SubagentWorkflowInput, B as ThreadInit, T as ThreadOps, Z as ZeitlichSession } from './types-DSOefLpY.cjs';
5
+ import { R as RouterContext, g as ToolResultConfig, A as ActivityToolHandler, J as JsonValue, T as ToolHandlerResponse, B as BaseAgentState, f as RunAgentConfig } from './types-mCVxKIZb.cjs';
6
+ export { k as AgentConfig, l as AgentFile, m as AgentState, j as AgentStateManager, n as AgentStatus, o as AppendToolResultFn, I as InferToolResults, p as JsonPrimitive, i as JsonSerializable, q as ParsedToolCall, r as ParsedToolCallUnion, s as PostToolUseFailureHook, t as PostToolUseFailureHookContext, c as PostToolUseFailureHookResult, u as PostToolUseHook, v as PostToolUseHookContext, w as PreToolUseHook, x as PreToolUseHookContext, P as PreToolUseHookResult, y as ProcessToolCallsContext, d as RawToolCall, z as SerializableToolDefinition, S as SessionExitReason, C as TaskStatus, e as TokenUsage, D as ToolArgs, E as ToolCallResult, h as ToolCallResultUnion, F as ToolDefinition, G as ToolHandler, H as ToolHooks, a as ToolMap, K as ToolNames, L as ToolResult, M as ToolRouter, b as ToolRouterHooks, N as ToolWithHandler, W as WorkflowTask, O as isTerminalStatus } from './types-mCVxKIZb.cjs';
7
7
  import { S as Sandbox, a as SandboxFileSystem, d as SandboxCreateOptions, b as SandboxProvider, f as SandboxSnapshot, P as PrefixedSandboxOps, F as FileStat, D as DirentEntry, E as ExecResult } from './types-ChAMwU3q.cjs';
8
8
  export { h as ExecOptions, c as SandboxCapabilities, e as SandboxCreateResult, i as SandboxNotFoundError, j as SandboxNotSupportedError, g as SandboxOps } from './types-ChAMwU3q.cjs';
9
9
  import { WorkflowClient } from '@temporalio/client';
10
- export { f as filesWithMimeType, h as hasDirectory, a as hasFileWithMimeType } from './queries-BYGBImeC.cjs';
11
- export { F as FileEntry, a as FileEntryMetadata, b as FileResolver, T as TreeMutation, e as VirtualFileTree, g as VirtualSandboxState } from './types-Bf8KV0Ci.cjs';
12
- import { T as ThreadManagerConfig, B as BaseThreadManager } from './types-35POpVfa.cjs';
10
+ export { f as filesWithMimeType, h as hasDirectory, a as hasFileWithMimeType } from './queries-DwnE2bu3.cjs';
11
+ export { F as FileEntry, a as FileEntryMetadata, b as FileResolver, T as TreeMutation, e as VirtualFileTree, g as VirtualSandboxState } from './types-DRnz-OZp.cjs';
12
+ import { T as ThreadManagerConfig, B as BaseThreadManager } from './types-BDRDbm3h.cjs';
13
+ export { P as ProviderThreadManager } from './types-BDRDbm3h.cjs';
13
14
  import 'zod';
14
15
  import '@temporalio/common';
15
16
  import '@temporalio/workflow';
@@ -43,7 +44,7 @@ import 'ioredis';
43
44
  * );
44
45
  * ```
45
46
  */
46
- declare function withAutoAppend<TArgs, TResult, TContext extends RouterContext = RouterContext>(threadHandler: (id: string, config: ToolResultConfig) => Promise<void>, handler: ActivityToolHandler<TArgs, TResult, TContext>): ActivityToolHandler<TArgs, TResult, TContext>;
47
+ declare function withAutoAppend<TArgs, TResult, TContext extends RouterContext = RouterContext, TToolResponse = unknown>(threadHandler: (id: string, config: ToolResultConfig) => Promise<void>, handler: ActivityToolHandler<TArgs, TResult, TContext, TToolResponse>): ActivityToolHandler<TArgs, TResult, TContext>;
47
48
 
48
49
  /**
49
50
  * Extended router context with a resolved {@link Sandbox} instance.
@@ -93,12 +94,12 @@ interface SandboxContext extends RouterContext {
93
94
  * });
94
95
  * ```
95
96
  */
96
- declare function withSandbox<TArgs, TResult, TSandbox extends Sandbox = Sandbox>(manager: {
97
+ declare function withSandbox<TArgs, TResult, TSandbox extends Sandbox = Sandbox, TToolResponse = JsonValue>(manager: {
97
98
  getSandbox(id: string): Promise<TSandbox>;
98
99
  }, handler: (args: TArgs, context: RouterContext & {
99
100
  sandbox: TSandbox;
100
101
  sandboxId: string;
101
- }) => Promise<ToolHandlerResponse<TResult>>): ActivityToolHandler<TArgs, TResult | null>;
102
+ }) => Promise<ToolHandlerResponse<TResult, TToolResponse>>): ActivityToolHandler<TArgs, TResult | null, RouterContext, TToolResponse | string>;
102
103
 
103
104
  /**
104
105
  * Query the parent workflow's state from within an activity.
@@ -148,7 +149,7 @@ interface AgentStateContext<S extends BaseAgentState = BaseAgentState> extends R
148
149
  * );
149
150
  * ```
150
151
  */
151
- declare function withParentWorkflowState<TArgs, TResult, S extends BaseAgentState = BaseAgentState>(client: WorkflowClient, handler: (args: TArgs, context: AgentStateContext<S>) => Promise<ToolHandlerResponse<TResult>>): ActivityToolHandler<TArgs, TResult>;
152
+ declare function withParentWorkflowState<TArgs, TResult, S extends BaseAgentState = BaseAgentState, TToolResponse = JsonValue>(client: WorkflowClient, handler: (args: TArgs, context: AgentStateContext<S>) => Promise<ToolHandlerResponse<TResult, TToolResponse>>): ActivityToolHandler<TArgs, TResult, RouterContext, TToolResponse>;
152
153
 
153
154
  /**
154
155
  * Loads skills from a directory following the agentskills.io layout:
@@ -381,4 +382,4 @@ declare const toTree: (fs: SandboxFileSystem, opts?: {
381
382
  sort?: boolean;
382
383
  }) => Promise<string>;
383
384
 
384
- export { ActivityToolHandler, type AgentStateContext, BaseAgentState, BaseThreadManager, BashArgs, ExecResult, FileEditArgs, FileReadArgs, FileSystemSkillProvider, FileWriteArgs, GlobArgs, NodeFsSandboxFileSystem, PrefixedSandboxOps, RouterContext, RunAgentConfig, Sandbox, type SandboxContext, SandboxCreateOptions, DirentEntry as SandboxDirentEntry, FileStat as SandboxFileStat, SandboxFileSystem, SandboxManager, SandboxProvider, SandboxSnapshot, Skill, SkillMetadata, SkillProvider, ThreadManagerConfig, ToolHandlerResponse, ToolResultConfig, bashHandler, createRunAgentActivity, createThreadManager, editHandler, globHandler, queryParentWorkflowState, readFileHandler, toTree, withAutoAppend, withParentWorkflowState, withSandbox, writeFileHandler };
385
+ export { ActivityToolHandler, type AgentStateContext, BaseAgentState, BaseThreadManager, BashArgs, ExecResult, FileEditArgs, FileReadArgs, FileSystemSkillProvider, FileWriteArgs, GlobArgs, JsonValue, NodeFsSandboxFileSystem, PrefixedSandboxOps, RouterContext, RunAgentConfig, Sandbox, type SandboxContext, SandboxCreateOptions, DirentEntry as SandboxDirentEntry, FileStat as SandboxFileStat, SandboxFileSystem, SandboxManager, SandboxProvider, SandboxSnapshot, Skill, SkillMetadata, SkillProvider, ThreadManagerConfig, ToolHandlerResponse, ToolResultConfig, bashHandler, createRunAgentActivity, createThreadManager, editHandler, globHandler, queryParentWorkflowState, readFileHandler, toTree, withAutoAppend, withParentWorkflowState, withSandbox, writeFileHandler };
package/dist/index.d.ts CHANGED
@@ -1,15 +1,16 @@
1
1
  import { BashArgs, FileEditArgs, GlobArgs, FileReadArgs, FileWriteArgs } from './workflow.js';
2
2
  export { AskUserQuestionArgs, GrepArgs, ReadSkillArgs, SubagentArgs, TaskCreateArgs, TaskGetArgs, TaskListArgs, TaskUpdateArgs, WorkflowConfig, WorkflowInput, WorkflowSessionInput, applyVirtualTreeMutations, askUserQuestionTool, bashTool, createAgentStateManager, createAskUserQuestionHandler, createBashToolDescription, createReadSkillHandler, createReadSkillTool, createSession, createTaskCreateHandler, createTaskGetHandler, createTaskListHandler, createTaskUpdateHandler, createToolRouter, defineSubagent, defineSubagentWorkflow, defineTool, defineWorkflow, editTool, formatVirtualFileTree, getShortId, globTool, grepTool, hasNoOtherToolCalls, parseSkillFile, readFileTool, taskCreateTool, taskGetTool, taskListTool, taskUpdateTool, writeFileTool } from './workflow.js';
3
- import { b as SkillProvider, c as SkillMetadata, d as Skill } from './types-hmferhc2.js';
4
- export { A as AgentResponse, e as AgentState, f as AgentStateManager, H as Hooks, J as JsonPrimitive, g as JsonSerializable, h as JsonValue, M as ModelInvoker, a as ModelInvokerConfig, i as PostHumanMessageAppendHook, j as PostHumanMessageAppendHookContext, k as PreHumanMessageAppendHook, l as PreHumanMessageAppendHookContext, P as PrefixedThreadOps, R as RunAgentActivity, m as SandboxInit, n as SandboxShutdown, S as ScopedPrefix, o as SessionConfig, p as SessionEndHook, q as SessionEndHookContext, r as SessionResult, s as SessionStartHook, t as SessionStartHookContext, u as SubagentConfig, v as SubagentDefinition, w as SubagentFnResult, x as SubagentHandlerResponse, y as SubagentHooks, z as SubagentSandboxConfig, B as SubagentSandboxShutdown, C as SubagentSessionInput, D as SubagentWorkflow, E as SubagentWorkflowInput, F as ThreadInit, T as ThreadOps, Z as ZeitlichSession } from './types-hmferhc2.js';
5
- import { R as RouterContext, j as ToolResultConfig, A as ActivityToolHandler, c as ToolHandlerResponse, B as BaseAgentState, g as RunAgentConfig } from './types-D_igp10o.js';
6
- export { l as AgentConfig, m as AgentFile, h as AgentStatus, n as AppendToolResultFn, C as ContentPart, I as InferToolResults, M as MessageContent, o as ParsedToolCall, p as ParsedToolCallUnion, q as PostToolUseFailureHook, r as PostToolUseFailureHookContext, d as PostToolUseFailureHookResult, s as PostToolUseHook, t as PostToolUseHookContext, u as PreToolUseHook, v as PreToolUseHookContext, P as PreToolUseHookResult, w as ProcessToolCallsContext, e as RawToolCall, x as SerializableToolDefinition, S as SessionExitReason, y as TaskStatus, f as TokenUsage, z as ToolArgs, D as ToolCallResult, k as ToolCallResultUnion, i as ToolDefinition, E as ToolHandler, F as ToolHooks, a as ToolMap, T as ToolMessageContent, G as ToolNames, H as ToolResult, J as ToolRouter, b as ToolRouterHooks, K as ToolWithHandler, W as WorkflowTask, L as isTerminalStatus } from './types-D_igp10o.js';
3
+ import { b as SkillProvider, c as SkillMetadata, d as Skill } from './types-CvJyXDYt.js';
4
+ export { A as AgentResponse, H as Hooks, a as ModelInvoker, M as ModelInvokerConfig, e as PostHumanMessageAppendHook, f as PostHumanMessageAppendHookContext, g as PreHumanMessageAppendHook, h as PreHumanMessageAppendHookContext, P as PrefixedThreadOps, R as RunAgentActivity, i as SandboxInit, j as SandboxShutdown, S as ScopedPrefix, k as SessionConfig, l as SessionEndHook, m as SessionEndHookContext, n as SessionResult, o as SessionStartHook, p as SessionStartHookContext, q as SubagentConfig, r as SubagentDefinition, s as SubagentFnResult, t as SubagentHandlerResponse, u as SubagentHooks, v as SubagentSandboxConfig, w as SubagentSandboxShutdown, x as SubagentSessionInput, y as SubagentWorkflow, z as SubagentWorkflowInput, B as ThreadInit, T as ThreadOps, Z as ZeitlichSession } from './types-CvJyXDYt.js';
5
+ import { R as RouterContext, g as ToolResultConfig, A as ActivityToolHandler, J as JsonValue, T as ToolHandlerResponse, B as BaseAgentState, f as RunAgentConfig } from './types-mCVxKIZb.js';
6
+ export { k as AgentConfig, l as AgentFile, m as AgentState, j as AgentStateManager, n as AgentStatus, o as AppendToolResultFn, I as InferToolResults, p as JsonPrimitive, i as JsonSerializable, q as ParsedToolCall, r as ParsedToolCallUnion, s as PostToolUseFailureHook, t as PostToolUseFailureHookContext, c as PostToolUseFailureHookResult, u as PostToolUseHook, v as PostToolUseHookContext, w as PreToolUseHook, x as PreToolUseHookContext, P as PreToolUseHookResult, y as ProcessToolCallsContext, d as RawToolCall, z as SerializableToolDefinition, S as SessionExitReason, C as TaskStatus, e as TokenUsage, D as ToolArgs, E as ToolCallResult, h as ToolCallResultUnion, F as ToolDefinition, G as ToolHandler, H as ToolHooks, a as ToolMap, K as ToolNames, L as ToolResult, M as ToolRouter, b as ToolRouterHooks, N as ToolWithHandler, W as WorkflowTask, O as isTerminalStatus } from './types-mCVxKIZb.js';
7
7
  import { S as Sandbox, a as SandboxFileSystem, d as SandboxCreateOptions, b as SandboxProvider, f as SandboxSnapshot, P as PrefixedSandboxOps, F as FileStat, D as DirentEntry, E as ExecResult } from './types-ChAMwU3q.js';
8
8
  export { h as ExecOptions, c as SandboxCapabilities, e as SandboxCreateResult, i as SandboxNotFoundError, j as SandboxNotSupportedError, g as SandboxOps } from './types-ChAMwU3q.js';
9
9
  import { WorkflowClient } from '@temporalio/client';
10
- export { f as filesWithMimeType, h as hasDirectory, a as hasFileWithMimeType } from './queries-DwBe2CAA.js';
11
- export { F as FileEntry, a as FileEntryMetadata, b as FileResolver, T as TreeMutation, e as VirtualFileTree, g as VirtualSandboxState } from './types-LVKmCNds.js';
12
- import { T as ThreadManagerConfig, B as BaseThreadManager } from './types-35POpVfa.js';
10
+ export { f as filesWithMimeType, h as hasDirectory, a as hasFileWithMimeType } from './queries-BCgJ9Sr5.js';
11
+ export { F as FileEntry, a as FileEntryMetadata, b as FileResolver, T as TreeMutation, e as VirtualFileTree, g as VirtualSandboxState } from './types-DFUNSYbj.js';
12
+ import { T as ThreadManagerConfig, B as BaseThreadManager } from './types-WNSeZbWa.js';
13
+ export { P as ProviderThreadManager } from './types-WNSeZbWa.js';
13
14
  import 'zod';
14
15
  import '@temporalio/common';
15
16
  import '@temporalio/workflow';
@@ -43,7 +44,7 @@ import 'ioredis';
43
44
  * );
44
45
  * ```
45
46
  */
46
- declare function withAutoAppend<TArgs, TResult, TContext extends RouterContext = RouterContext>(threadHandler: (id: string, config: ToolResultConfig) => Promise<void>, handler: ActivityToolHandler<TArgs, TResult, TContext>): ActivityToolHandler<TArgs, TResult, TContext>;
47
+ declare function withAutoAppend<TArgs, TResult, TContext extends RouterContext = RouterContext, TToolResponse = unknown>(threadHandler: (id: string, config: ToolResultConfig) => Promise<void>, handler: ActivityToolHandler<TArgs, TResult, TContext, TToolResponse>): ActivityToolHandler<TArgs, TResult, TContext>;
47
48
 
48
49
  /**
49
50
  * Extended router context with a resolved {@link Sandbox} instance.
@@ -93,12 +94,12 @@ interface SandboxContext extends RouterContext {
93
94
  * });
94
95
  * ```
95
96
  */
96
- declare function withSandbox<TArgs, TResult, TSandbox extends Sandbox = Sandbox>(manager: {
97
+ declare function withSandbox<TArgs, TResult, TSandbox extends Sandbox = Sandbox, TToolResponse = JsonValue>(manager: {
97
98
  getSandbox(id: string): Promise<TSandbox>;
98
99
  }, handler: (args: TArgs, context: RouterContext & {
99
100
  sandbox: TSandbox;
100
101
  sandboxId: string;
101
- }) => Promise<ToolHandlerResponse<TResult>>): ActivityToolHandler<TArgs, TResult | null>;
102
+ }) => Promise<ToolHandlerResponse<TResult, TToolResponse>>): ActivityToolHandler<TArgs, TResult | null, RouterContext, TToolResponse | string>;
102
103
 
103
104
  /**
104
105
  * Query the parent workflow's state from within an activity.
@@ -148,7 +149,7 @@ interface AgentStateContext<S extends BaseAgentState = BaseAgentState> extends R
148
149
  * );
149
150
  * ```
150
151
  */
151
- declare function withParentWorkflowState<TArgs, TResult, S extends BaseAgentState = BaseAgentState>(client: WorkflowClient, handler: (args: TArgs, context: AgentStateContext<S>) => Promise<ToolHandlerResponse<TResult>>): ActivityToolHandler<TArgs, TResult>;
152
+ declare function withParentWorkflowState<TArgs, TResult, S extends BaseAgentState = BaseAgentState, TToolResponse = JsonValue>(client: WorkflowClient, handler: (args: TArgs, context: AgentStateContext<S>) => Promise<ToolHandlerResponse<TResult, TToolResponse>>): ActivityToolHandler<TArgs, TResult, RouterContext, TToolResponse>;
152
153
 
153
154
  /**
154
155
  * Loads skills from a directory following the agentskills.io layout:
@@ -381,4 +382,4 @@ declare const toTree: (fs: SandboxFileSystem, opts?: {
381
382
  sort?: boolean;
382
383
  }) => Promise<string>;
383
384
 
384
- export { ActivityToolHandler, type AgentStateContext, BaseAgentState, BaseThreadManager, BashArgs, ExecResult, FileEditArgs, FileReadArgs, FileSystemSkillProvider, FileWriteArgs, GlobArgs, NodeFsSandboxFileSystem, PrefixedSandboxOps, RouterContext, RunAgentConfig, Sandbox, type SandboxContext, SandboxCreateOptions, DirentEntry as SandboxDirentEntry, FileStat as SandboxFileStat, SandboxFileSystem, SandboxManager, SandboxProvider, SandboxSnapshot, Skill, SkillMetadata, SkillProvider, ThreadManagerConfig, ToolHandlerResponse, ToolResultConfig, bashHandler, createRunAgentActivity, createThreadManager, editHandler, globHandler, queryParentWorkflowState, readFileHandler, toTree, withAutoAppend, withParentWorkflowState, withSandbox, writeFileHandler };
385
+ export { ActivityToolHandler, type AgentStateContext, BaseAgentState, BaseThreadManager, BashArgs, ExecResult, FileEditArgs, FileReadArgs, FileSystemSkillProvider, FileWriteArgs, GlobArgs, JsonValue, NodeFsSandboxFileSystem, PrefixedSandboxOps, RouterContext, RunAgentConfig, Sandbox, type SandboxContext, SandboxCreateOptions, DirentEntry as SandboxDirentEntry, FileStat as SandboxFileStat, SandboxFileSystem, SandboxManager, SandboxProvider, SandboxSnapshot, Skill, SkillMetadata, SkillProvider, ThreadManagerConfig, ToolHandlerResponse, ToolResultConfig, bashHandler, createRunAgentActivity, createThreadManager, editHandler, globHandler, queryParentWorkflowState, readFileHandler, toTree, withAutoAppend, withParentWorkflowState, withSandbox, writeFileHandler };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { defineSignal, uuid4, setHandler, defineUpdate, ApplicationFailure, condition, defineQuery, workflowInfo, getExternalWorkflowHandle, startChild } from '@temporalio/workflow';
1
+ import { defineSignal, uuid4, setHandler, defineUpdate, ApplicationFailure, condition, defineQuery, workflowInfo, getExternalWorkflowHandle, log, startChild } from '@temporalio/workflow';
2
2
  import z14, { z } from 'zod';
3
3
  import { randomUUID, randomFillSync } from 'crypto';
4
4
  import { ApplicationFailure as ApplicationFailure$1 } from '@temporalio/common';
@@ -118,6 +118,7 @@ function createToolRouter(options) {
118
118
  if (preResult.skip) {
119
119
  await appendToolResult(uuid4(), {
120
120
  threadId: options.threadId,
121
+ threadKey: options.threadKey,
121
122
  toolCallId: toolCall.id,
122
123
  toolName: toolCall.name,
123
124
  content: JSON.stringify({
@@ -136,6 +137,7 @@ function createToolRouter(options) {
136
137
  if (tool) {
137
138
  const routerContext = {
138
139
  threadId: options.threadId,
140
+ ...options.threadKey && { threadKey: options.threadKey },
139
141
  toolCallId: toolCall.id,
140
142
  toolName: toolCall.name,
141
143
  ...sandboxId !== void 0 && { sandboxId },
@@ -167,6 +169,7 @@ function createToolRouter(options) {
167
169
  if (!resultAppended) {
168
170
  const config = {
169
171
  threadId: options.threadId,
172
+ threadKey: options.threadKey,
170
173
  toolCallId: toolCall.id,
171
174
  toolName: toolCall.name,
172
175
  content
@@ -258,6 +261,7 @@ function createToolRouter(options) {
258
261
  const processOne = async (toolCall) => {
259
262
  const routerContext = {
260
263
  threadId: options.threadId,
264
+ ...options.threadKey && { threadKey: options.threadKey },
261
265
  toolCallId: toolCall.id,
262
266
  toolName: toolCall.name,
263
267
  ...context?.sandboxId !== void 0 && {
@@ -277,6 +281,7 @@ function createToolRouter(options) {
277
281
  uuid4(),
278
282
  {
279
283
  threadId: options.threadId,
284
+ threadKey: options.threadKey,
280
285
  toolCallId: toolCall.id,
281
286
  toolName: toolCall.name,
282
287
  content: response.toolResponse
@@ -484,9 +489,10 @@ function createSubagentHandler(subagents) {
484
489
  }
485
490
  let finalToolResponse = toolResponse;
486
491
  if (allowsContinuation && childThreadId) {
487
- finalToolResponse = typeof toolResponse === "string" ? `${toolResponse}
492
+ const responseStr = typeof toolResponse === "string" ? toolResponse : JSON.stringify(toolResponse);
493
+ finalToolResponse = `${responseStr}
488
494
 
489
- [${config.agentName} Thread ID: ${childThreadId}]` : toolResponse;
495
+ [${config.agentName} Thread ID: ${childThreadId}]`;
490
496
  }
491
497
  return {
492
498
  toolResponse: finalToolResponse,
@@ -501,8 +507,14 @@ function createSubagentHandler(subagents) {
501
507
  pendingDestroys.clear();
502
508
  await Promise.all(
503
509
  handles.map(async (handle) => {
504
- await handle.signal(destroySandboxSignal);
505
- await handle.result();
510
+ try {
511
+ await handle.signal(destroySandboxSignal);
512
+ await handle.result();
513
+ } catch (err) {
514
+ log.warn("Failed to signal destroySandbox to child workflow", {
515
+ error: err
516
+ });
517
+ }
506
518
  })
507
519
  );
508
520
  };
@@ -655,6 +667,7 @@ async function createSession({
655
667
  hooks = {},
656
668
  appendSystemPrompt = true,
657
669
  waitForInputTimeout = "48h",
670
+ threadKey,
658
671
  sandboxOps,
659
672
  thread: threadInit,
660
673
  sandbox: sandboxInit,
@@ -699,6 +712,7 @@ async function createSession({
699
712
  tools,
700
713
  appendToolResult,
701
714
  threadId,
715
+ threadKey,
702
716
  hooks,
703
717
  plugins,
704
718
  parallel: processToolsInParallel
@@ -727,7 +741,7 @@ async function createSession({
727
741
  threadId
728
742
  });
729
743
  }
730
- await appendHumanMessage(threadId, uuid4(), message);
744
+ await appendHumanMessage(threadId, uuid4(), message, threadKey);
731
745
  if (hooks.onPostHumanMessageAppend) {
732
746
  await hooks.onPostHumanMessageAppend({
733
747
  message,
@@ -795,7 +809,7 @@ async function createSession({
795
809
  }
796
810
  const systemPrompt = stateManager.getSystemPrompt();
797
811
  if (threadMode === "fork" && sourceThreadId) {
798
- await forkThread(sourceThreadId, threadId);
812
+ await forkThread(sourceThreadId, threadId, threadKey);
799
813
  } else if (threadMode === "continue") ; else {
800
814
  if (appendSystemPrompt) {
801
815
  if (!systemPrompt || systemPrompt.trim() === "") {
@@ -804,12 +818,12 @@ async function createSession({
804
818
  nonRetryable: true
805
819
  });
806
820
  }
807
- await appendSystemMessage(threadId, uuid4(), systemPrompt);
821
+ await appendSystemMessage(threadId, uuid4(), systemPrompt, threadKey);
808
822
  } else {
809
- await initializeThread(threadId);
823
+ await initializeThread(threadId, threadKey);
810
824
  }
811
825
  }
812
- await appendHumanMessage(threadId, uuid4(), await buildContextMessage());
826
+ await appendHumanMessage(threadId, uuid4(), await buildContextMessage(), threadKey);
813
827
  let exitReason = "completed";
814
828
  try {
815
829
  while (stateManager.isRunning() && !stateManager.isTerminal() && stateManager.getTurns() < maxTurns) {
@@ -818,6 +832,7 @@ async function createSession({
818
832
  stateManager.setTools(toolRouter.getToolDefinitions());
819
833
  const { message, rawToolCalls, usage } = await runAgent({
820
834
  threadId,
835
+ threadKey,
821
836
  agentName,
822
837
  metadata
823
838
  });
@@ -842,6 +857,7 @@ async function createSession({
842
857
  } catch (error) {
843
858
  await appendToolResult(uuid4(), {
844
859
  threadId,
860
+ threadKey,
845
861
  toolCallId: tc.id ?? "",
846
862
  toolName: tc.name,
847
863
  content: JSON.stringify({
@@ -1137,6 +1153,7 @@ function withAutoAppend(threadHandler, handler) {
1137
1153
  const response = await handler(args, context);
1138
1154
  await threadHandler(v4_default(), {
1139
1155
  threadId: context.threadId,
1156
+ ...context.threadKey && { threadKey: context.threadKey },
1140
1157
  toolCallId: context.toolCallId,
1141
1158
  toolName: context.toolName,
1142
1159
  content: response.toolResponse
@@ -1904,7 +1921,7 @@ redis.call('SET', KEYS[1], '1', 'EX', tonumber(ARGV[1]))
1904
1921
  return 1
1905
1922
  `;
1906
1923
  function getThreadKey(threadId, key) {
1907
- return `thread:${threadId}:${key}`;
1924
+ return `${key}:thread:${threadId}`;
1908
1925
  }
1909
1926
  function createThreadManager(config) {
1910
1927
  const {