zeitlich 0.2.31 → 0.2.33

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 (87) hide show
  1. package/README.md +11 -10
  2. package/dist/{activities-DRSdt8Y3.d.ts → activities-YBD5BaHh.d.ts} +6 -5
  3. package/dist/{activities-qPkJDAiq.d.cts → activities-fnX8-vhR.d.cts} +6 -5
  4. package/dist/adapters/thread/anthropic/index.cjs +19 -47
  5. package/dist/adapters/thread/anthropic/index.cjs.map +1 -1
  6. package/dist/adapters/thread/anthropic/index.d.cts +12 -11
  7. package/dist/adapters/thread/anthropic/index.d.ts +12 -11
  8. package/dist/adapters/thread/anthropic/index.js +19 -47
  9. package/dist/adapters/thread/anthropic/index.js.map +1 -1
  10. package/dist/adapters/thread/anthropic/workflow.cjs +1 -0
  11. package/dist/adapters/thread/anthropic/workflow.cjs.map +1 -1
  12. package/dist/adapters/thread/anthropic/workflow.d.cts +4 -4
  13. package/dist/adapters/thread/anthropic/workflow.d.ts +4 -4
  14. package/dist/adapters/thread/anthropic/workflow.js +1 -0
  15. package/dist/adapters/thread/anthropic/workflow.js.map +1 -1
  16. package/dist/adapters/thread/google-genai/index.cjs +34 -53
  17. package/dist/adapters/thread/google-genai/index.cjs.map +1 -1
  18. package/dist/adapters/thread/google-genai/index.d.cts +8 -8
  19. package/dist/adapters/thread/google-genai/index.d.ts +8 -8
  20. package/dist/adapters/thread/google-genai/index.js +34 -53
  21. package/dist/adapters/thread/google-genai/index.js.map +1 -1
  22. package/dist/adapters/thread/google-genai/workflow.cjs +1 -0
  23. package/dist/adapters/thread/google-genai/workflow.cjs.map +1 -1
  24. package/dist/adapters/thread/google-genai/workflow.d.cts +4 -4
  25. package/dist/adapters/thread/google-genai/workflow.d.ts +4 -4
  26. package/dist/adapters/thread/google-genai/workflow.js +1 -0
  27. package/dist/adapters/thread/google-genai/workflow.js.map +1 -1
  28. package/dist/adapters/thread/langchain/index.cjs +47 -24
  29. package/dist/adapters/thread/langchain/index.cjs.map +1 -1
  30. package/dist/adapters/thread/langchain/index.d.cts +13 -10
  31. package/dist/adapters/thread/langchain/index.d.ts +13 -10
  32. package/dist/adapters/thread/langchain/index.js +47 -24
  33. package/dist/adapters/thread/langchain/index.js.map +1 -1
  34. package/dist/adapters/thread/langchain/workflow.cjs +1 -0
  35. package/dist/adapters/thread/langchain/workflow.cjs.map +1 -1
  36. package/dist/adapters/thread/langchain/workflow.d.cts +4 -4
  37. package/dist/adapters/thread/langchain/workflow.d.ts +4 -4
  38. package/dist/adapters/thread/langchain/workflow.js +1 -0
  39. package/dist/adapters/thread/langchain/workflow.js.map +1 -1
  40. package/dist/index.cjs +42 -9
  41. package/dist/index.cjs.map +1 -1
  42. package/dist/index.d.cts +28 -13
  43. package/dist/index.d.ts +28 -13
  44. package/dist/index.js +41 -10
  45. package/dist/index.js.map +1 -1
  46. package/dist/{proxy-BkvkV2oU.d.ts → proxy-Br4unLTC.d.ts} +1 -1
  47. package/dist/{proxy-BDQ3Rj6R.d.cts → proxy-CTCYWjkr.d.cts} +1 -1
  48. package/dist/{thread-manager-BLgvv9Gf.d.cts → thread-manager-CUubPYPH.d.cts} +1 -1
  49. package/dist/{thread-manager-DowU4ntB.d.cts → thread-manager-Cv_BR28i.d.cts} +1 -1
  50. package/dist/{thread-manager-Cv82H1wi.d.ts → thread-manager-DKWxHUzD.d.ts} +1 -1
  51. package/dist/{thread-manager-HsAYkyAV.d.ts → thread-manager-YJLoc1vH.d.ts} +1 -1
  52. package/dist/{types-CjeGWQm1.d.cts → types-Bpq5fDI5.d.cts} +7 -4
  53. package/dist/{types-D6UKZZtj.d.ts → types-BxiT8w9d.d.ts} +1 -1
  54. package/dist/{types-BmS-Huc0.d.ts → types-CheCTLeV.d.ts} +7 -4
  55. package/dist/{types-e_38QaKo.d.cts → types-NJDyMyUx.d.cts} +1 -1
  56. package/dist/{workflow-CTcrPZAV.d.ts → workflow-D9nNERvs.d.ts} +30 -2
  57. package/dist/{workflow-CNshfqSO.d.cts → workflow-Od9vx5Jk.d.cts} +30 -2
  58. package/dist/workflow.cjs +22 -1
  59. package/dist/workflow.cjs.map +1 -1
  60. package/dist/workflow.d.cts +2 -2
  61. package/dist/workflow.d.ts +2 -2
  62. package/dist/workflow.js +22 -2
  63. package/dist/workflow.js.map +1 -1
  64. package/package.json +1 -1
  65. package/src/adapters/thread/anthropic/activities.ts +14 -3
  66. package/src/adapters/thread/anthropic/model-invoker.ts +15 -8
  67. package/src/adapters/thread/google-genai/activities.ts +18 -3
  68. package/src/adapters/thread/google-genai/model-invoker.ts +24 -14
  69. package/src/adapters/thread/langchain/activities.ts +14 -3
  70. package/src/adapters/thread/langchain/model-invoker.ts +63 -35
  71. package/src/index.ts +1 -0
  72. package/src/lib/activity.ts +36 -9
  73. package/src/lib/model/helpers.ts +1 -0
  74. package/src/lib/model/index.ts +1 -0
  75. package/src/lib/model/proxy.ts +50 -0
  76. package/src/lib/model/types.ts +3 -2
  77. package/src/lib/session/session-edge-cases.integration.test.ts +6 -0
  78. package/src/lib/session/session.integration.test.ts +3 -0
  79. package/src/lib/session/session.ts +4 -0
  80. package/src/lib/session/types.ts +7 -0
  81. package/src/lib/thread/proxy.ts +1 -0
  82. package/src/lib/types.ts +1 -0
  83. package/src/lib/virtual-fs/manager.ts +3 -3
  84. package/src/lib/virtual-fs/proxy.ts +3 -3
  85. package/src/lib/virtual-fs/types.ts +1 -2
  86. package/src/lib/virtual-fs/with-virtual-fs.ts +4 -4
  87. package/src/workflow.ts +3 -0
package/dist/index.d.cts CHANGED
@@ -1,12 +1,12 @@
1
- import { B as BashArgs, F as FileEditArgs, G as GlobArgs, a as FileReadArgs, b as FileWriteArgs } from './workflow-CNshfqSO.cjs';
2
- export { A as AskUserQuestionArgs, c as FileTreeAccessor, d as GrepArgs, O as ObservabilityHooks, R as ReadSkillArgs, S as SessionEndedEvent, e as SessionStartedEvent, f as SubagentArgs, T as TaskCreateArgs, g as TaskGetArgs, h as TaskListArgs, i as TaskUpdateArgs, j as ToolExecutedEvent, k as TurnCompletedEvent, W as WorkflowConfig, l as WorkflowInput, m as WorkflowSessionInput, Z as ZeitlichObservabilitySinks, n as applyVirtualTreeMutations, o as askUserQuestionTool, p as bashTool, q as composeHooks, r as createAgentStateManager, s as createAskUserQuestionHandler, t as createBashToolDescription, u as createObservabilityHooks, v as createReadSkillHandler, w as createReadSkillTool, x as createSession, y as createTaskCreateHandler, z as createTaskGetHandler, C as createTaskListHandler, D as createTaskUpdateHandler, E as createToolRouter, H as defineSubagent, I as defineSubagentWorkflow, J as defineTool, K as defineWorkflow, L as editTool, M as filesWithMimeType, N as formatVirtualFileTree, P as getShortId, Q as globTool, U as grepTool, V as hasDirectory, X as hasFileWithMimeType, Y as hasNoOtherToolCalls, _ as parseSkillFile, $ as proxyVirtualFsOps, a0 as readFileTool, a1 as taskCreateTool, a2 as taskGetTool, a3 as taskListTool, a4 as taskUpdateTool, a5 as writeFileTool } from './workflow-CNshfqSO.cjs';
3
- import { R as RouterContext, d as ToolResultConfig, c as ActivityToolHandler, J as JsonValue, b as ToolHandlerResponse, B as BaseAgentState, e as RunAgentConfig, f as SkillProvider, g as SkillMetadata, h as Skill, F as FileEntryMetadata, i as FileResolver, V as VirtualFsContext, j as TreeMutation, k as PrefixedVirtualFsOps } from './types-CjeGWQm1.cjs';
4
- export { l as AgentConfig, m as AgentFile, A as AgentResponse, n as AgentState, o as AgentStateManager, p as AgentStatus, q as AppendToolResultFn, r as FileEntry, H as Hooks, I as InferToolResults, s as JsonPrimitive, t as JsonSerializable, a as ModelInvoker, M as ModelInvokerConfig, u as ParsedToolCall, v as ParsedToolCallUnion, w as PostHumanMessageAppendHook, x as PostHumanMessageAppendHookContext, y as PostToolUseFailureHook, z as PostToolUseFailureHookContext, C as PostToolUseFailureHookResult, D as PostToolUseHook, E as PostToolUseHookContext, G as PreHumanMessageAppendHook, K as PreHumanMessageAppendHookContext, L as PreToolUseHook, N as PreToolUseHookContext, O as PreToolUseHookResult, P as PrefixedThreadOps, Q as ProcessToolCallsContext, U as RawToolCall, W as RunAgentActivity, X as SandboxInit, Y as SandboxShutdown, S as ScopedPrefix, Z as SerializableToolDefinition, _ as SessionConfig, $ as SessionEndHook, a0 as SessionEndHookContext, a1 as SessionExitReason, a2 as SessionResult, a3 as SessionStartHook, a4 as SessionStartHookContext, a5 as SubagentConfig, a6 as SubagentDefinition, a7 as SubagentFnResult, a8 as SubagentHandlerResponse, a9 as SubagentHooks, aa as SubagentSandboxConfig, ab as SubagentSandboxShutdown, ac as SubagentSessionInput, ad as SubagentWorkflow, ae as SubagentWorkflowInput, af as TaskStatus, ag as ThreadInit, T as ThreadOps, ah as TokenUsage, ai as ToolArgs, aj as ToolCallResult, ak as ToolCallResultUnion, al as ToolDefinition, am as ToolHandler, an as ToolHooks, ao as ToolMap, ap as ToolNames, aq as ToolResult, ar as ToolRouter, as as ToolRouterHooks, at as ToolWithHandler, au as VirtualFileSystem, av as VirtualFileTree, aw as VirtualFsOps, ax as VirtualFsState, ay as WorkflowTask, az as ZeitlichSession, aA as isTerminalStatus } from './types-CjeGWQm1.cjs';
1
+ import { B as BashArgs, F as FileEditArgs, G as GlobArgs, a as FileReadArgs, b as FileWriteArgs } from './workflow-Od9vx5Jk.cjs';
2
+ export { A as AskUserQuestionArgs, c as FileTreeAccessor, d as GrepArgs, O as ObservabilityHooks, R as ReadSkillArgs, S as SessionEndedEvent, e as SessionStartedEvent, f as SubagentArgs, T as TaskCreateArgs, g as TaskGetArgs, h as TaskListArgs, i as TaskUpdateArgs, j as ToolExecutedEvent, k as TurnCompletedEvent, W as WorkflowConfig, l as WorkflowInput, m as WorkflowSessionInput, Z as ZeitlichObservabilitySinks, n as applyVirtualTreeMutations, o as askUserQuestionTool, p as bashTool, q as composeHooks, r as createAgentStateManager, s as createAskUserQuestionHandler, t as createBashToolDescription, u as createObservabilityHooks, v as createReadSkillHandler, w as createReadSkillTool, x as createSession, y as createTaskCreateHandler, z as createTaskGetHandler, C as createTaskListHandler, D as createTaskUpdateHandler, E as createToolRouter, H as defineSubagent, I as defineSubagentWorkflow, J as defineTool, K as defineWorkflow, L as editTool, M as filesWithMimeType, N as formatVirtualFileTree, P as getShortId, Q as globTool, U as grepTool, V as hasDirectory, X as hasFileWithMimeType, Y as hasNoOtherToolCalls, _ as parseSkillFile, $ as proxyRunAgent, a0 as proxyVirtualFsOps, a1 as readFileTool, a2 as taskCreateTool, a3 as taskGetTool, a4 as taskListTool, a5 as taskUpdateTool, a6 as writeFileTool } from './workflow-Od9vx5Jk.cjs';
3
+ import { R as RouterContext, d as ToolResultConfig, c as ActivityToolHandler, J as JsonValue, b as ToolHandlerResponse, B as BaseAgentState, e as RunAgentConfig, f as SkillProvider, g as SkillMetadata, h as Skill, F as FileEntryMetadata, i as FileResolver, V as VirtualFsContext, j as TreeMutation, k as PrefixedVirtualFsOps } from './types-Bpq5fDI5.cjs';
4
+ export { l as AgentConfig, m as AgentFile, A as AgentResponse, n as AgentState, o as AgentStateManager, p as AgentStatus, q as AppendToolResultFn, r as FileEntry, H as Hooks, I as InferToolResults, s as JsonPrimitive, t as JsonSerializable, a as ModelInvoker, M as ModelInvokerConfig, u as ParsedToolCall, v as ParsedToolCallUnion, w as PostHumanMessageAppendHook, x as PostHumanMessageAppendHookContext, y as PostToolUseFailureHook, z as PostToolUseFailureHookContext, C as PostToolUseFailureHookResult, D as PostToolUseHook, E as PostToolUseHookContext, G as PreHumanMessageAppendHook, K as PreHumanMessageAppendHookContext, L as PreToolUseHook, N as PreToolUseHookContext, O as PreToolUseHookResult, P as PrefixedThreadOps, Q as ProcessToolCallsContext, U as RawToolCall, W as RunAgentActivity, X as SandboxInit, Y as SandboxShutdown, S as ScopedPrefix, Z as SerializableToolDefinition, _ as SessionConfig, $ as SessionEndHook, a0 as SessionEndHookContext, a1 as SessionExitReason, a2 as SessionResult, a3 as SessionStartHook, a4 as SessionStartHookContext, a5 as SubagentConfig, a6 as SubagentDefinition, a7 as SubagentFnResult, a8 as SubagentHandlerResponse, a9 as SubagentHooks, aa as SubagentSandboxConfig, ab as SubagentSandboxShutdown, ac as SubagentSessionInput, ad as SubagentWorkflow, ae as SubagentWorkflowInput, af as TaskStatus, ag as ThreadInit, T as ThreadOps, ah as TokenUsage, ai as ToolArgs, aj as ToolCallResult, ak as ToolCallResultUnion, al as ToolDefinition, am as ToolHandler, an as ToolHooks, ao as ToolMap, ap as ToolNames, aq as ToolResult, ar as ToolRouter, as as ToolRouterHooks, at as ToolWithHandler, au as VirtualFileSystem, av as VirtualFileTree, aw as VirtualFsOps, ax as VirtualFsState, ay as WorkflowTask, az as ZeitlichSession, aA as isTerminalStatus } from './types-Bpq5fDI5.cjs';
5
5
  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-AujBIMMn.cjs';
6
6
  export { h as ExecOptions, c as SandboxCapabilities, e as SandboxCreateResult, i as SandboxNotFoundError, j as SandboxNotSupportedError, g as SandboxOps } from './types-AujBIMMn.cjs';
7
7
  import { WorkflowClient } from '@temporalio/client';
8
- import { a as ThreadManagerConfig, B as BaseThreadManager } from './types-e_38QaKo.cjs';
9
- export { P as ProviderThreadManager } from './types-e_38QaKo.cjs';
8
+ import { a as ThreadManagerConfig, B as BaseThreadManager } from './types-NJDyMyUx.cjs';
9
+ export { P as ProviderThreadManager } from './types-NJDyMyUx.cjs';
10
10
  import 'zod';
11
11
  import '@temporalio/workflow';
12
12
  import '@temporalio/common';
@@ -97,27 +97,42 @@ declare function withSandbox<TArgs, TResult, TSandbox extends Sandbox = Sandbox,
97
97
  sandboxId: string;
98
98
  }) => Promise<ToolHandlerResponse<TResult, TToolResponse>>): ActivityToolHandler<TArgs, TResult | null, RouterContext, TToolResponse | string>;
99
99
 
100
+ /**
101
+ * Safely retrieve Temporal activity heartbeat and cancellation signal.
102
+ * Returns empty object when called outside a Temporal activity (e.g. tests).
103
+ */
104
+ declare function getActivityContext(): {
105
+ heartbeat?: () => void;
106
+ signal?: AbortSignal;
107
+ };
100
108
  /**
101
109
  * Query the parent workflow's state from within an activity.
102
110
  * Resolves the workflow handle from the current activity context.
103
111
  */
104
112
  declare function queryParentWorkflowState<T>(client: WorkflowClient): Promise<T>;
105
113
  /**
106
- * Wraps a handler into a `RunAgentActivity` by auto-fetching the parent
107
- * workflow's agent state before each invocation.
114
+ * Wraps a handler into a scope-prefixed `RunAgentActivity` by auto-fetching
115
+ * the parent workflow's agent state before each invocation.
116
+ *
117
+ * Returns a `Record` with a single key `run<Scope>` so it can be spread
118
+ * into the activities object alongside adapter activities.
119
+ *
120
+ * @param scope - Workflow scope used to derive the activity name.
121
+ * `"myAgentWorkflow"` produces `{ runMyAgentWorkflow: fn }`.
108
122
  *
109
123
  * @example
110
124
  * ```typescript
111
125
  * import { createRunAgentActivity } from 'zeitlich';
112
- * import { createLangChainModelInvoker } from 'zeitlich/adapters/thread/langchain';
113
126
  *
114
- * const invoker = createLangChainModelInvoker({ redis, model });
115
- * return { runAgent: createRunAgentActivity(client, invoker) };
127
+ * return {
128
+ * ...adapter.createActivities("myAgentWorkflow"),
129
+ * ...createRunAgentActivity(client, adapter.invoker, "myAgentWorkflow"),
130
+ * };
116
131
  * ```
117
132
  */
118
133
  declare function createRunAgentActivity<R, S extends BaseAgentState = BaseAgentState>(client: WorkflowClient, handler: (config: RunAgentConfig & {
119
134
  state: S;
120
- }) => Promise<R>): (config: RunAgentConfig) => Promise<R>;
135
+ }) => Promise<R>, scope: string): Record<string, (config: RunAgentConfig) => Promise<R>>;
121
136
  /**
122
137
  * Context injected into tool handlers created via {@link withParentWorkflowState}.
123
138
  */
@@ -496,4 +511,4 @@ declare const toTree: (fs: SandboxFileSystem, opts?: {
496
511
  sort?: boolean;
497
512
  }) => Promise<string>;
498
513
 
499
- export { ActivityToolHandler, type AgentStateContext, BaseAgentState, BaseThreadManager, BashArgs, ExecResult, FileEditArgs, FileEntryMetadata, FileReadArgs, FileResolver, FileSystemSkillProvider, FileWriteArgs, GlobArgs, JsonValue, NodeFsSandboxFileSystem, type PreCreateHookResult, PrefixedSandboxOps, PrefixedVirtualFsOps, RouterContext, RunAgentConfig, Sandbox, type SandboxContext, SandboxCreateOptions, DirentEntry as SandboxDirentEntry, FileStat as SandboxFileStat, SandboxFileSystem, SandboxManager, type SandboxManagerHooks, SandboxProvider, SandboxSnapshot, Skill, SkillMetadata, SkillProvider, ThreadManagerConfig, ToolHandlerResponse, ToolResultConfig, TreeMutation, VirtualFsContext, bashHandler, createRunAgentActivity, createThreadManager, createVirtualFsActivities, editHandler, globHandler, queryParentWorkflowState, readFileHandler, toTree, withAutoAppend, withParentWorkflowState, withSandbox, withVirtualFs, writeFileHandler };
514
+ export { ActivityToolHandler, type AgentStateContext, BaseAgentState, BaseThreadManager, BashArgs, ExecResult, FileEditArgs, FileEntryMetadata, FileReadArgs, FileResolver, FileSystemSkillProvider, FileWriteArgs, GlobArgs, JsonValue, NodeFsSandboxFileSystem, type PreCreateHookResult, PrefixedSandboxOps, PrefixedVirtualFsOps, RouterContext, RunAgentConfig, Sandbox, type SandboxContext, SandboxCreateOptions, DirentEntry as SandboxDirentEntry, FileStat as SandboxFileStat, SandboxFileSystem, SandboxManager, type SandboxManagerHooks, SandboxProvider, SandboxSnapshot, Skill, SkillMetadata, SkillProvider, ThreadManagerConfig, ToolHandlerResponse, ToolResultConfig, TreeMutation, VirtualFsContext, bashHandler, createRunAgentActivity, createThreadManager, createVirtualFsActivities, editHandler, getActivityContext, globHandler, queryParentWorkflowState, readFileHandler, toTree, withAutoAppend, withParentWorkflowState, withSandbox, withVirtualFs, writeFileHandler };
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
- import { B as BashArgs, F as FileEditArgs, G as GlobArgs, a as FileReadArgs, b as FileWriteArgs } from './workflow-CTcrPZAV.js';
2
- export { A as AskUserQuestionArgs, c as FileTreeAccessor, d as GrepArgs, O as ObservabilityHooks, R as ReadSkillArgs, S as SessionEndedEvent, e as SessionStartedEvent, f as SubagentArgs, T as TaskCreateArgs, g as TaskGetArgs, h as TaskListArgs, i as TaskUpdateArgs, j as ToolExecutedEvent, k as TurnCompletedEvent, W as WorkflowConfig, l as WorkflowInput, m as WorkflowSessionInput, Z as ZeitlichObservabilitySinks, n as applyVirtualTreeMutations, o as askUserQuestionTool, p as bashTool, q as composeHooks, r as createAgentStateManager, s as createAskUserQuestionHandler, t as createBashToolDescription, u as createObservabilityHooks, v as createReadSkillHandler, w as createReadSkillTool, x as createSession, y as createTaskCreateHandler, z as createTaskGetHandler, C as createTaskListHandler, D as createTaskUpdateHandler, E as createToolRouter, H as defineSubagent, I as defineSubagentWorkflow, J as defineTool, K as defineWorkflow, L as editTool, M as filesWithMimeType, N as formatVirtualFileTree, P as getShortId, Q as globTool, U as grepTool, V as hasDirectory, X as hasFileWithMimeType, Y as hasNoOtherToolCalls, _ as parseSkillFile, $ as proxyVirtualFsOps, a0 as readFileTool, a1 as taskCreateTool, a2 as taskGetTool, a3 as taskListTool, a4 as taskUpdateTool, a5 as writeFileTool } from './workflow-CTcrPZAV.js';
3
- import { R as RouterContext, d as ToolResultConfig, c as ActivityToolHandler, J as JsonValue, b as ToolHandlerResponse, B as BaseAgentState, e as RunAgentConfig, f as SkillProvider, g as SkillMetadata, h as Skill, F as FileEntryMetadata, i as FileResolver, V as VirtualFsContext, j as TreeMutation, k as PrefixedVirtualFsOps } from './types-BmS-Huc0.js';
4
- export { l as AgentConfig, m as AgentFile, A as AgentResponse, n as AgentState, o as AgentStateManager, p as AgentStatus, q as AppendToolResultFn, r as FileEntry, H as Hooks, I as InferToolResults, s as JsonPrimitive, t as JsonSerializable, a as ModelInvoker, M as ModelInvokerConfig, u as ParsedToolCall, v as ParsedToolCallUnion, w as PostHumanMessageAppendHook, x as PostHumanMessageAppendHookContext, y as PostToolUseFailureHook, z as PostToolUseFailureHookContext, C as PostToolUseFailureHookResult, D as PostToolUseHook, E as PostToolUseHookContext, G as PreHumanMessageAppendHook, K as PreHumanMessageAppendHookContext, L as PreToolUseHook, N as PreToolUseHookContext, O as PreToolUseHookResult, P as PrefixedThreadOps, Q as ProcessToolCallsContext, U as RawToolCall, W as RunAgentActivity, X as SandboxInit, Y as SandboxShutdown, S as ScopedPrefix, Z as SerializableToolDefinition, _ as SessionConfig, $ as SessionEndHook, a0 as SessionEndHookContext, a1 as SessionExitReason, a2 as SessionResult, a3 as SessionStartHook, a4 as SessionStartHookContext, a5 as SubagentConfig, a6 as SubagentDefinition, a7 as SubagentFnResult, a8 as SubagentHandlerResponse, a9 as SubagentHooks, aa as SubagentSandboxConfig, ab as SubagentSandboxShutdown, ac as SubagentSessionInput, ad as SubagentWorkflow, ae as SubagentWorkflowInput, af as TaskStatus, ag as ThreadInit, T as ThreadOps, ah as TokenUsage, ai as ToolArgs, aj as ToolCallResult, ak as ToolCallResultUnion, al as ToolDefinition, am as ToolHandler, an as ToolHooks, ao as ToolMap, ap as ToolNames, aq as ToolResult, ar as ToolRouter, as as ToolRouterHooks, at as ToolWithHandler, au as VirtualFileSystem, av as VirtualFileTree, aw as VirtualFsOps, ax as VirtualFsState, ay as WorkflowTask, az as ZeitlichSession, aA as isTerminalStatus } from './types-BmS-Huc0.js';
1
+ import { B as BashArgs, F as FileEditArgs, G as GlobArgs, a as FileReadArgs, b as FileWriteArgs } from './workflow-D9nNERvs.js';
2
+ export { A as AskUserQuestionArgs, c as FileTreeAccessor, d as GrepArgs, O as ObservabilityHooks, R as ReadSkillArgs, S as SessionEndedEvent, e as SessionStartedEvent, f as SubagentArgs, T as TaskCreateArgs, g as TaskGetArgs, h as TaskListArgs, i as TaskUpdateArgs, j as ToolExecutedEvent, k as TurnCompletedEvent, W as WorkflowConfig, l as WorkflowInput, m as WorkflowSessionInput, Z as ZeitlichObservabilitySinks, n as applyVirtualTreeMutations, o as askUserQuestionTool, p as bashTool, q as composeHooks, r as createAgentStateManager, s as createAskUserQuestionHandler, t as createBashToolDescription, u as createObservabilityHooks, v as createReadSkillHandler, w as createReadSkillTool, x as createSession, y as createTaskCreateHandler, z as createTaskGetHandler, C as createTaskListHandler, D as createTaskUpdateHandler, E as createToolRouter, H as defineSubagent, I as defineSubagentWorkflow, J as defineTool, K as defineWorkflow, L as editTool, M as filesWithMimeType, N as formatVirtualFileTree, P as getShortId, Q as globTool, U as grepTool, V as hasDirectory, X as hasFileWithMimeType, Y as hasNoOtherToolCalls, _ as parseSkillFile, $ as proxyRunAgent, a0 as proxyVirtualFsOps, a1 as readFileTool, a2 as taskCreateTool, a3 as taskGetTool, a4 as taskListTool, a5 as taskUpdateTool, a6 as writeFileTool } from './workflow-D9nNERvs.js';
3
+ import { R as RouterContext, d as ToolResultConfig, c as ActivityToolHandler, J as JsonValue, b as ToolHandlerResponse, B as BaseAgentState, e as RunAgentConfig, f as SkillProvider, g as SkillMetadata, h as Skill, F as FileEntryMetadata, i as FileResolver, V as VirtualFsContext, j as TreeMutation, k as PrefixedVirtualFsOps } from './types-CheCTLeV.js';
4
+ export { l as AgentConfig, m as AgentFile, A as AgentResponse, n as AgentState, o as AgentStateManager, p as AgentStatus, q as AppendToolResultFn, r as FileEntry, H as Hooks, I as InferToolResults, s as JsonPrimitive, t as JsonSerializable, a as ModelInvoker, M as ModelInvokerConfig, u as ParsedToolCall, v as ParsedToolCallUnion, w as PostHumanMessageAppendHook, x as PostHumanMessageAppendHookContext, y as PostToolUseFailureHook, z as PostToolUseFailureHookContext, C as PostToolUseFailureHookResult, D as PostToolUseHook, E as PostToolUseHookContext, G as PreHumanMessageAppendHook, K as PreHumanMessageAppendHookContext, L as PreToolUseHook, N as PreToolUseHookContext, O as PreToolUseHookResult, P as PrefixedThreadOps, Q as ProcessToolCallsContext, U as RawToolCall, W as RunAgentActivity, X as SandboxInit, Y as SandboxShutdown, S as ScopedPrefix, Z as SerializableToolDefinition, _ as SessionConfig, $ as SessionEndHook, a0 as SessionEndHookContext, a1 as SessionExitReason, a2 as SessionResult, a3 as SessionStartHook, a4 as SessionStartHookContext, a5 as SubagentConfig, a6 as SubagentDefinition, a7 as SubagentFnResult, a8 as SubagentHandlerResponse, a9 as SubagentHooks, aa as SubagentSandboxConfig, ab as SubagentSandboxShutdown, ac as SubagentSessionInput, ad as SubagentWorkflow, ae as SubagentWorkflowInput, af as TaskStatus, ag as ThreadInit, T as ThreadOps, ah as TokenUsage, ai as ToolArgs, aj as ToolCallResult, ak as ToolCallResultUnion, al as ToolDefinition, am as ToolHandler, an as ToolHooks, ao as ToolMap, ap as ToolNames, aq as ToolResult, ar as ToolRouter, as as ToolRouterHooks, at as ToolWithHandler, au as VirtualFileSystem, av as VirtualFileTree, aw as VirtualFsOps, ax as VirtualFsState, ay as WorkflowTask, az as ZeitlichSession, aA as isTerminalStatus } from './types-CheCTLeV.js';
5
5
  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-AujBIMMn.js';
6
6
  export { h as ExecOptions, c as SandboxCapabilities, e as SandboxCreateResult, i as SandboxNotFoundError, j as SandboxNotSupportedError, g as SandboxOps } from './types-AujBIMMn.js';
7
7
  import { WorkflowClient } from '@temporalio/client';
8
- import { a as ThreadManagerConfig, B as BaseThreadManager } from './types-D6UKZZtj.js';
9
- export { P as ProviderThreadManager } from './types-D6UKZZtj.js';
8
+ import { a as ThreadManagerConfig, B as BaseThreadManager } from './types-BxiT8w9d.js';
9
+ export { P as ProviderThreadManager } from './types-BxiT8w9d.js';
10
10
  import 'zod';
11
11
  import '@temporalio/workflow';
12
12
  import '@temporalio/common';
@@ -97,27 +97,42 @@ declare function withSandbox<TArgs, TResult, TSandbox extends Sandbox = Sandbox,
97
97
  sandboxId: string;
98
98
  }) => Promise<ToolHandlerResponse<TResult, TToolResponse>>): ActivityToolHandler<TArgs, TResult | null, RouterContext, TToolResponse | string>;
99
99
 
100
+ /**
101
+ * Safely retrieve Temporal activity heartbeat and cancellation signal.
102
+ * Returns empty object when called outside a Temporal activity (e.g. tests).
103
+ */
104
+ declare function getActivityContext(): {
105
+ heartbeat?: () => void;
106
+ signal?: AbortSignal;
107
+ };
100
108
  /**
101
109
  * Query the parent workflow's state from within an activity.
102
110
  * Resolves the workflow handle from the current activity context.
103
111
  */
104
112
  declare function queryParentWorkflowState<T>(client: WorkflowClient): Promise<T>;
105
113
  /**
106
- * Wraps a handler into a `RunAgentActivity` by auto-fetching the parent
107
- * workflow's agent state before each invocation.
114
+ * Wraps a handler into a scope-prefixed `RunAgentActivity` by auto-fetching
115
+ * the parent workflow's agent state before each invocation.
116
+ *
117
+ * Returns a `Record` with a single key `run<Scope>` so it can be spread
118
+ * into the activities object alongside adapter activities.
119
+ *
120
+ * @param scope - Workflow scope used to derive the activity name.
121
+ * `"myAgentWorkflow"` produces `{ runMyAgentWorkflow: fn }`.
108
122
  *
109
123
  * @example
110
124
  * ```typescript
111
125
  * import { createRunAgentActivity } from 'zeitlich';
112
- * import { createLangChainModelInvoker } from 'zeitlich/adapters/thread/langchain';
113
126
  *
114
- * const invoker = createLangChainModelInvoker({ redis, model });
115
- * return { runAgent: createRunAgentActivity(client, invoker) };
127
+ * return {
128
+ * ...adapter.createActivities("myAgentWorkflow"),
129
+ * ...createRunAgentActivity(client, adapter.invoker, "myAgentWorkflow"),
130
+ * };
116
131
  * ```
117
132
  */
118
133
  declare function createRunAgentActivity<R, S extends BaseAgentState = BaseAgentState>(client: WorkflowClient, handler: (config: RunAgentConfig & {
119
134
  state: S;
120
- }) => Promise<R>): (config: RunAgentConfig) => Promise<R>;
135
+ }) => Promise<R>, scope: string): Record<string, (config: RunAgentConfig) => Promise<R>>;
121
136
  /**
122
137
  * Context injected into tool handlers created via {@link withParentWorkflowState}.
123
138
  */
@@ -496,4 +511,4 @@ declare const toTree: (fs: SandboxFileSystem, opts?: {
496
511
  sort?: boolean;
497
512
  }) => Promise<string>;
498
513
 
499
- export { ActivityToolHandler, type AgentStateContext, BaseAgentState, BaseThreadManager, BashArgs, ExecResult, FileEditArgs, FileEntryMetadata, FileReadArgs, FileResolver, FileSystemSkillProvider, FileWriteArgs, GlobArgs, JsonValue, NodeFsSandboxFileSystem, type PreCreateHookResult, PrefixedSandboxOps, PrefixedVirtualFsOps, RouterContext, RunAgentConfig, Sandbox, type SandboxContext, SandboxCreateOptions, DirentEntry as SandboxDirentEntry, FileStat as SandboxFileStat, SandboxFileSystem, SandboxManager, type SandboxManagerHooks, SandboxProvider, SandboxSnapshot, Skill, SkillMetadata, SkillProvider, ThreadManagerConfig, ToolHandlerResponse, ToolResultConfig, TreeMutation, VirtualFsContext, bashHandler, createRunAgentActivity, createThreadManager, createVirtualFsActivities, editHandler, globHandler, queryParentWorkflowState, readFileHandler, toTree, withAutoAppend, withParentWorkflowState, withSandbox, withVirtualFs, writeFileHandler };
514
+ export { ActivityToolHandler, type AgentStateContext, BaseAgentState, BaseThreadManager, BashArgs, ExecResult, FileEditArgs, FileEntryMetadata, FileReadArgs, FileResolver, FileSystemSkillProvider, FileWriteArgs, GlobArgs, JsonValue, NodeFsSandboxFileSystem, type PreCreateHookResult, PrefixedSandboxOps, PrefixedVirtualFsOps, RouterContext, RunAgentConfig, Sandbox, type SandboxContext, SandboxCreateOptions, DirentEntry as SandboxDirentEntry, FileStat as SandboxFileStat, SandboxFileSystem, SandboxManager, type SandboxManagerHooks, SandboxProvider, SandboxSnapshot, Skill, SkillMetadata, SkillProvider, ThreadManagerConfig, ToolHandlerResponse, ToolResultConfig, TreeMutation, VirtualFsContext, bashHandler, createRunAgentActivity, createThreadManager, createVirtualFsActivities, editHandler, getActivityContext, globHandler, queryParentWorkflowState, readFileHandler, toTree, withAutoAppend, withParentWorkflowState, withSandbox, withVirtualFs, writeFileHandler };
package/dist/index.js CHANGED
@@ -729,6 +729,7 @@ async function createSession({
729
729
  appendHumanMessage,
730
730
  initializeThread,
731
731
  appendSystemMessage,
732
+ appendAgentMessage,
732
733
  forkThread
733
734
  } = threadOps;
734
735
  const plugins = [];
@@ -850,6 +851,7 @@ async function createSession({
850
851
  ] : result.fileTree;
851
852
  stateManager.mergeUpdate({
852
853
  fileTree,
854
+ virtualFsCtx: virtualFsConfig.ctx,
853
855
  ...skillFiles && { inlineFiles: skillFiles }
854
856
  });
855
857
  }
@@ -903,6 +905,7 @@ async function createSession({
903
905
  agentName,
904
906
  metadata
905
907
  });
908
+ await appendAgentMessage(threadId, uuid4(), message, threadKey);
906
909
  if (usage) {
907
910
  stateManager.updateUsage(usage);
908
911
  }
@@ -1407,6 +1410,23 @@ function composeHooks(...fns) {
1407
1410
  return lastResult;
1408
1411
  };
1409
1412
  }
1413
+ function proxyRunAgent(scope, options) {
1414
+ const resolvedScope = scope ?? workflowInfo().workflowType;
1415
+ const name = `run${resolvedScope.charAt(0).toUpperCase()}${resolvedScope.slice(1)}`;
1416
+ const acts = proxyActivities(
1417
+ options ?? {
1418
+ startToCloseTimeout: "10m",
1419
+ heartbeatTimeout: "1m",
1420
+ retry: {
1421
+ maximumAttempts: 3,
1422
+ initialInterval: "10s",
1423
+ maximumInterval: "2m",
1424
+ backoffCoefficient: 3
1425
+ }
1426
+ }
1427
+ );
1428
+ return acts[name];
1429
+ }
1410
1430
  var SandboxNotSupportedError = class extends ApplicationFailure$1 {
1411
1431
  constructor(operation) {
1412
1432
  super(
@@ -1546,7 +1566,7 @@ function proxyVirtualFsOps(scope, options) {
1546
1566
  }
1547
1567
  }
1548
1568
  );
1549
- const prefix = resolvedScope;
1569
+ const prefix = `virtualFs${resolvedScope.charAt(0).toUpperCase()}${resolvedScope.slice(1)}`;
1550
1570
  const p = (key) => `${prefix}${key.charAt(0).toUpperCase()}${key.slice(1)}`;
1551
1571
  return {
1552
1572
  resolveFileTree: acts[p("resolveFileTree")]
@@ -2163,6 +2183,14 @@ function createThreadManager(config) {
2163
2183
  }
2164
2184
  };
2165
2185
  }
2186
+ function getActivityContext() {
2187
+ try {
2188
+ const ctx = Context.current();
2189
+ return { heartbeat: () => ctx.heartbeat(), signal: ctx.cancellationSignal };
2190
+ } catch {
2191
+ return {};
2192
+ }
2193
+ }
2166
2194
  async function queryParentWorkflowState(client) {
2167
2195
  const { workflowExecution } = Context.current().info;
2168
2196
  const handle = client.getHandle(
@@ -2171,10 +2199,13 @@ async function queryParentWorkflowState(client) {
2171
2199
  );
2172
2200
  return handle.query("getAgentState");
2173
2201
  }
2174
- function createRunAgentActivity(client, handler) {
2175
- return async (config) => {
2176
- const state = await queryParentWorkflowState(client);
2177
- return handler({ ...config, state });
2202
+ function createRunAgentActivity(client, handler, scope) {
2203
+ const name = `run${scope.charAt(0).toUpperCase()}${scope.slice(1)}`;
2204
+ return {
2205
+ [name]: async (config) => {
2206
+ const state = await queryParentWorkflowState(client);
2207
+ return handler({ ...config, state });
2208
+ }
2178
2209
  };
2179
2210
  }
2180
2211
  function withParentWorkflowState(client, handler) {
@@ -2650,7 +2681,7 @@ var VirtualFileSystem = class {
2650
2681
  function withVirtualFs(client, resolver, handler) {
2651
2682
  return async (args, context) => {
2652
2683
  const state = await queryParentWorkflowState(client);
2653
- const { fileTree, ctx, workspaceBase, inlineFiles } = state;
2684
+ const { fileTree, virtualFsCtx, inlineFiles } = state;
2654
2685
  if (!fileTree) {
2655
2686
  return {
2656
2687
  toolResponse: `Error: No fileTree in agent state. The ${context.toolName} tool requires a virtual filesystem.`,
@@ -2660,8 +2691,8 @@ function withVirtualFs(client, resolver, handler) {
2660
2691
  const virtualFs = new VirtualFileSystem(
2661
2692
  fileTree,
2662
2693
  resolver,
2663
- ctx,
2664
- workspaceBase ?? "/",
2694
+ virtualFsCtx,
2695
+ "/",
2665
2696
  inlineFiles
2666
2697
  );
2667
2698
  const response = await handler(args, { ...context, virtualFs });
@@ -2684,7 +2715,7 @@ function createVirtualFsActivities(resolver, scope) {
2684
2715
  return { fileTree };
2685
2716
  }
2686
2717
  };
2687
- const prefix = scope;
2718
+ const prefix = `virtualFs${scope.charAt(0).toUpperCase()}${scope.slice(1)}`;
2688
2719
  const cap = (s) => s.charAt(0).toUpperCase() + s.slice(1);
2689
2720
  return Object.fromEntries(
2690
2721
  Object.entries(ops).map(([k, v]) => [`${prefix}${cap(k)}`, v])
@@ -2945,6 +2976,6 @@ var toTree = async (fs, opts = {}) => {
2945
2976
  return base + subtree;
2946
2977
  };
2947
2978
 
2948
- export { FileSystemSkillProvider, NodeFsSandboxFileSystem, SandboxManager, SandboxNotFoundError, SandboxNotSupportedError, VirtualFileSystem, applyVirtualTreeMutations, askUserQuestionTool, bashHandler, bashTool, composeHooks, createAgentStateManager, createAskUserQuestionHandler, createBashToolDescription, createObservabilityHooks, createReadSkillHandler, createReadSkillTool, createRunAgentActivity, createSession, createTaskCreateHandler, createTaskGetHandler, createTaskListHandler, createTaskUpdateHandler, createThreadManager, createToolRouter, createVirtualFsActivities, defineSubagent, defineSubagentWorkflow, defineTool, defineWorkflow, editHandler, editTool, filesWithMimeType, formatVirtualFileTree, getShortId, globHandler, globTool, grepTool, hasDirectory, hasFileWithMimeType, hasNoOtherToolCalls, isTerminalStatus, parseSkillFile, proxyVirtualFsOps, queryParentWorkflowState, readFileHandler, readFileTool, taskCreateTool, taskGetTool, taskListTool, taskUpdateTool, toTree, withAutoAppend, withParentWorkflowState, withSandbox, withVirtualFs, writeFileHandler, writeFileTool };
2979
+ export { FileSystemSkillProvider, NodeFsSandboxFileSystem, SandboxManager, SandboxNotFoundError, SandboxNotSupportedError, VirtualFileSystem, applyVirtualTreeMutations, askUserQuestionTool, bashHandler, bashTool, composeHooks, createAgentStateManager, createAskUserQuestionHandler, createBashToolDescription, createObservabilityHooks, createReadSkillHandler, createReadSkillTool, createRunAgentActivity, createSession, createTaskCreateHandler, createTaskGetHandler, createTaskListHandler, createTaskUpdateHandler, createThreadManager, createToolRouter, createVirtualFsActivities, defineSubagent, defineSubagentWorkflow, defineTool, defineWorkflow, editHandler, editTool, filesWithMimeType, formatVirtualFileTree, getActivityContext, getShortId, globHandler, globTool, grepTool, hasDirectory, hasFileWithMimeType, hasNoOtherToolCalls, isTerminalStatus, parseSkillFile, proxyRunAgent, proxyVirtualFsOps, queryParentWorkflowState, readFileHandler, readFileTool, taskCreateTool, taskGetTool, taskListTool, taskUpdateTool, toTree, withAutoAppend, withParentWorkflowState, withSandbox, withVirtualFs, writeFileHandler, writeFileTool };
2949
2980
  //# sourceMappingURL=index.js.map
2950
2981
  //# sourceMappingURL=index.js.map