zeitlich 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as AgentResponse, a as ActivityToolHandler, b as AskUserQuestionArgs, G as GlobArgs, F as FileEditArgs, B as BashArgs } from './workflow-PjeURKw4.cjs';
2
- export { c as AGENT_HANDLER_NAMES, d as AgentFile, e as AgentState, f as AgentStateManager, g as AgentStatus, h as AppendToolResultFn, i as BaseAgentState, j as BaseThreadManager, k as FileReadArgs, l as FileWriteArgs, m as GrepArgs, I as InferToolResults, J as JsonPrimitive, n as JsonSerializable, o as JsonValue, P as ParsedToolCall, p as ParsedToolCallUnion, q as PostToolUseFailureHook, r as PostToolUseFailureHookContext, s as PostToolUseFailureHookResult, t as PostToolUseHook, u as PostToolUseHookContext, v as PreToolUseHook, w as PreToolUseHookContext, x as PreToolUseHookResult, y as ProcessToolCallsContext, R as RawToolCall, z as RunAgentActivity, C as RunAgentConfig, S as SessionEndHook, D as SessionEndHookContext, E as SessionExitReason, H as SessionLifecycleHooks, K as SessionStartHook, L as SessionStartHookContext, M as SubagentArgs, N as SubagentConfig, O as SubagentHooks, Q as SubagentInput, T as TaskCreateArgs, U as TaskGetArgs, V as TaskListArgs, W as TaskStatus, X as TaskUpdateArgs, Y as ThreadManager, Z as ThreadManagerConfig, _ as ThreadOps, $ as ToolArgs, a0 as ToolCallResult, a1 as ToolCallResultUnion, a2 as ToolDefinition, a3 as ToolHandler, a4 as ToolHandlerContext, a5 as ToolHandlerResponse, a6 as ToolHooks, a7 as ToolMap, a8 as ToolMessageContent, a9 as ToolNames, aa as ToolResult, ab as ToolResultConfig, ac as ToolRouter, ad as ToolWithHandler, ae as WorkflowTask, af as ZeitlichAgentConfig, ag as ZeitlichSession, ah as ZeitlichSharedActivities, ai as askUserQuestionTool, aj as bashTool, ak as createAgentStateManager, al as createBashToolDescription, am as createSession, an as createSharedActivities, ao as createSubagentTool, ap as createTaskCreateHandler, aq as createTaskGetHandler, ar as createTaskListHandler, as as createTaskUpdateHandler, at as createThreadManager, au as createToolRouter, av as defineSubagent, aw as defineTool, ax as editTool, ay as getStateQuery, az as globTool, aA as grepTool, aB as hasNoOtherToolCalls, aC as isTerminalStatus, aD as proxyDefaultThreadOps, aE as readTool, aF as taskCreateTool, aG as taskGetTool, aH as taskListTool, aI as taskUpdateTool, aJ as withAutoAppend, aK as writeTool } from './workflow-PjeURKw4.cjs';
1
+ import { A as AgentResponse, a as ActivityToolHandler, b as AskUserQuestionArgs, G as GlobArgs, F as FileEditArgs, B as BashArgs } from './workflow-Dg5JMeOC.cjs';
2
+ export { c as AGENT_HANDLER_NAMES, d as AgentFile, e as AgentState, f as AgentStateManager, g as AgentStatus, h as AppendToolResultFn, i as BaseAgentState, j as BaseThreadManager, k as FileReadArgs, l as FileWriteArgs, m as GrepArgs, I as InferToolResults, J as JsonPrimitive, n as JsonSerializable, o as JsonValue, P as ParsedToolCall, p as ParsedToolCallUnion, q as PostToolUseFailureHook, r as PostToolUseFailureHookContext, s as PostToolUseFailureHookResult, t as PostToolUseHook, u as PostToolUseHookContext, v as PreToolUseHook, w as PreToolUseHookContext, x as PreToolUseHookResult, y as ProcessToolCallsContext, R as RawToolCall, z as RunAgentActivity, C as RunAgentConfig, S as SessionEndHook, D as SessionEndHookContext, E as SessionExitReason, H as SessionLifecycleHooks, K as SessionStartHook, L as SessionStartHookContext, M as SubagentArgs, N as SubagentConfig, O as SubagentHooks, Q as SubagentInput, T as TaskCreateArgs, U as TaskGetArgs, V as TaskListArgs, W as TaskStatus, X as TaskUpdateArgs, Y as ThreadManager, Z as ThreadManagerConfig, _ as ThreadOps, $ as ToolArgs, a0 as ToolCallResult, a1 as ToolCallResultUnion, a2 as ToolDefinition, a3 as ToolHandler, a4 as ToolHandlerContext, a5 as ToolHandlerResponse, a6 as ToolHooks, a7 as ToolMap, a8 as ToolMessageContent, a9 as ToolNames, aa as ToolResult, ab as ToolResultConfig, ac as ToolRouter, ad as ToolWithHandler, ae as WorkflowTask, af as ZeitlichAgentConfig, ag as ZeitlichSession, ah as ZeitlichSharedActivities, ai as askUserQuestionTool, aj as bashTool, ak as createAgentStateManager, al as createBashToolDescription, am as createSession, an as createSharedActivities, ao as createSubagentTool, ap as createTaskCreateHandler, aq as createTaskGetHandler, ar as createTaskListHandler, as as createTaskUpdateHandler, at as createThreadManager, au as createToolRouter, av as defineSubagent, aw as defineTool, ax as editTool, ay as getStateQuery, az as globTool, aA as grepTool, aB as hasNoOtherToolCalls, aC as isTerminalStatus, aD as proxyDefaultThreadOps, aE as readTool, aF as taskCreateTool, aG as taskGetTool, aH as taskListTool, aI as taskUpdateTool, aJ as withAutoAppend, aK as writeTool } from './workflow-Dg5JMeOC.cjs';
3
3
  import { SimplePlugin } from '@temporalio/plugin';
4
4
  import Redis from 'ioredis';
5
5
  import { WorkflowClient } from '@temporalio/client';
@@ -39,10 +39,11 @@ interface InvokeModelConfig {
39
39
  /**
40
40
  * Core model invocation logic - shared utility for workflow-specific activities
41
41
  *
42
- * @param redis - Redis client for thread management
43
- * @param config - Model invocation configuration
44
- * @param model - Pre-instantiated LangChain chat model
45
- * @param invocationConfig - Per-invocation configuration (system prompt, etc.)
42
+ * @param options - Named options object
43
+ * @param options.redis - Redis client for thread management
44
+ * @param options.config - Model invocation configuration (threadId, agentName)
45
+ * @param options.model - Pre-instantiated LangChain chat model
46
+ * @param options.client - Temporal WorkflowClient for querying workflow state
46
47
  * @returns Agent response with message and metadata
47
48
  */
48
49
  declare function invokeModel({ redis, model, client, config: { threadId, agentName }, }: {
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as AgentResponse, a as ActivityToolHandler, b as AskUserQuestionArgs, G as GlobArgs, F as FileEditArgs, B as BashArgs } from './workflow-PjeURKw4.js';
2
- export { c as AGENT_HANDLER_NAMES, d as AgentFile, e as AgentState, f as AgentStateManager, g as AgentStatus, h as AppendToolResultFn, i as BaseAgentState, j as BaseThreadManager, k as FileReadArgs, l as FileWriteArgs, m as GrepArgs, I as InferToolResults, J as JsonPrimitive, n as JsonSerializable, o as JsonValue, P as ParsedToolCall, p as ParsedToolCallUnion, q as PostToolUseFailureHook, r as PostToolUseFailureHookContext, s as PostToolUseFailureHookResult, t as PostToolUseHook, u as PostToolUseHookContext, v as PreToolUseHook, w as PreToolUseHookContext, x as PreToolUseHookResult, y as ProcessToolCallsContext, R as RawToolCall, z as RunAgentActivity, C as RunAgentConfig, S as SessionEndHook, D as SessionEndHookContext, E as SessionExitReason, H as SessionLifecycleHooks, K as SessionStartHook, L as SessionStartHookContext, M as SubagentArgs, N as SubagentConfig, O as SubagentHooks, Q as SubagentInput, T as TaskCreateArgs, U as TaskGetArgs, V as TaskListArgs, W as TaskStatus, X as TaskUpdateArgs, Y as ThreadManager, Z as ThreadManagerConfig, _ as ThreadOps, $ as ToolArgs, a0 as ToolCallResult, a1 as ToolCallResultUnion, a2 as ToolDefinition, a3 as ToolHandler, a4 as ToolHandlerContext, a5 as ToolHandlerResponse, a6 as ToolHooks, a7 as ToolMap, a8 as ToolMessageContent, a9 as ToolNames, aa as ToolResult, ab as ToolResultConfig, ac as ToolRouter, ad as ToolWithHandler, ae as WorkflowTask, af as ZeitlichAgentConfig, ag as ZeitlichSession, ah as ZeitlichSharedActivities, ai as askUserQuestionTool, aj as bashTool, ak as createAgentStateManager, al as createBashToolDescription, am as createSession, an as createSharedActivities, ao as createSubagentTool, ap as createTaskCreateHandler, aq as createTaskGetHandler, ar as createTaskListHandler, as as createTaskUpdateHandler, at as createThreadManager, au as createToolRouter, av as defineSubagent, aw as defineTool, ax as editTool, ay as getStateQuery, az as globTool, aA as grepTool, aB as hasNoOtherToolCalls, aC as isTerminalStatus, aD as proxyDefaultThreadOps, aE as readTool, aF as taskCreateTool, aG as taskGetTool, aH as taskListTool, aI as taskUpdateTool, aJ as withAutoAppend, aK as writeTool } from './workflow-PjeURKw4.js';
1
+ import { A as AgentResponse, a as ActivityToolHandler, b as AskUserQuestionArgs, G as GlobArgs, F as FileEditArgs, B as BashArgs } from './workflow-Dg5JMeOC.js';
2
+ export { c as AGENT_HANDLER_NAMES, d as AgentFile, e as AgentState, f as AgentStateManager, g as AgentStatus, h as AppendToolResultFn, i as BaseAgentState, j as BaseThreadManager, k as FileReadArgs, l as FileWriteArgs, m as GrepArgs, I as InferToolResults, J as JsonPrimitive, n as JsonSerializable, o as JsonValue, P as ParsedToolCall, p as ParsedToolCallUnion, q as PostToolUseFailureHook, r as PostToolUseFailureHookContext, s as PostToolUseFailureHookResult, t as PostToolUseHook, u as PostToolUseHookContext, v as PreToolUseHook, w as PreToolUseHookContext, x as PreToolUseHookResult, y as ProcessToolCallsContext, R as RawToolCall, z as RunAgentActivity, C as RunAgentConfig, S as SessionEndHook, D as SessionEndHookContext, E as SessionExitReason, H as SessionLifecycleHooks, K as SessionStartHook, L as SessionStartHookContext, M as SubagentArgs, N as SubagentConfig, O as SubagentHooks, Q as SubagentInput, T as TaskCreateArgs, U as TaskGetArgs, V as TaskListArgs, W as TaskStatus, X as TaskUpdateArgs, Y as ThreadManager, Z as ThreadManagerConfig, _ as ThreadOps, $ as ToolArgs, a0 as ToolCallResult, a1 as ToolCallResultUnion, a2 as ToolDefinition, a3 as ToolHandler, a4 as ToolHandlerContext, a5 as ToolHandlerResponse, a6 as ToolHooks, a7 as ToolMap, a8 as ToolMessageContent, a9 as ToolNames, aa as ToolResult, ab as ToolResultConfig, ac as ToolRouter, ad as ToolWithHandler, ae as WorkflowTask, af as ZeitlichAgentConfig, ag as ZeitlichSession, ah as ZeitlichSharedActivities, ai as askUserQuestionTool, aj as bashTool, ak as createAgentStateManager, al as createBashToolDescription, am as createSession, an as createSharedActivities, ao as createSubagentTool, ap as createTaskCreateHandler, aq as createTaskGetHandler, ar as createTaskListHandler, as as createTaskUpdateHandler, at as createThreadManager, au as createToolRouter, av as defineSubagent, aw as defineTool, ax as editTool, ay as getStateQuery, az as globTool, aA as grepTool, aB as hasNoOtherToolCalls, aC as isTerminalStatus, aD as proxyDefaultThreadOps, aE as readTool, aF as taskCreateTool, aG as taskGetTool, aH as taskListTool, aI as taskUpdateTool, aJ as withAutoAppend, aK as writeTool } from './workflow-Dg5JMeOC.js';
3
3
  import { SimplePlugin } from '@temporalio/plugin';
4
4
  import Redis from 'ioredis';
5
5
  import { WorkflowClient } from '@temporalio/client';
@@ -39,10 +39,11 @@ interface InvokeModelConfig {
39
39
  /**
40
40
  * Core model invocation logic - shared utility for workflow-specific activities
41
41
  *
42
- * @param redis - Redis client for thread management
43
- * @param config - Model invocation configuration
44
- * @param model - Pre-instantiated LangChain chat model
45
- * @param invocationConfig - Per-invocation configuration (system prompt, etc.)
42
+ * @param options - Named options object
43
+ * @param options.redis - Redis client for thread management
44
+ * @param options.config - Model invocation configuration (threadId, agentName)
45
+ * @param options.model - Pre-instantiated LangChain chat model
46
+ * @param options.client - Temporal WorkflowClient for querying workflow state
46
47
  * @returns Agent response with message and metadata
47
48
  */
48
49
  declare function invokeModel({ redis, model, client, config: { threadId, agentName }, }: {
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import { Bash } from 'just-bash';
9
9
  // src/lib/session.ts
10
10
  var SUBAGENT_TOOL = "Subagent";
11
11
  function buildSubagentDescription(subagents) {
12
- const subagentList = subagents.map((s) => `- **${s.name}**: ${s.description}`).join("\n");
12
+ const subagentList = subagents.map((s) => `- **${s.agentName}**: ${s.description}`).join("\n");
13
13
  return `Launch a new agent to handle complex tasks autonomously.
14
14
 
15
15
  The ${SUBAGENT_TOOL} tool launches specialized agents (subprocesses) that autonomously handle complex tasks. Each agent type has specific capabilities and tools available to it.
@@ -35,7 +35,7 @@ function createSubagentTool(subagents) {
35
35
  if (subagents.length === 0) {
36
36
  throw new Error("createTaskTool requires at least one subagent");
37
37
  }
38
- const names = subagents.map((s) => s.name);
38
+ const names = subagents.map((s) => s.agentName);
39
39
  return {
40
40
  name: SUBAGENT_TOOL,
41
41
  description: buildSubagentDescription(subagents),
@@ -47,15 +47,15 @@ function createSubagentTool(subagents) {
47
47
  };
48
48
  }
49
49
  function createSubagentHandler(subagents) {
50
- const { workflowId: parentWorkflowId, taskQueue: parentTaskQueue } = workflowInfo();
50
+ const { taskQueue: parentTaskQueue } = workflowInfo();
51
51
  return async (args) => {
52
- const config = subagents.find((s) => s.name === args.subagent);
52
+ const config = subagents.find((s) => s.agentName === args.subagent);
53
53
  if (!config) {
54
54
  throw new Error(
55
- `Unknown subagent: ${args.subagent}. Available: ${subagents.map((s) => s.name).join(", ")}`
55
+ `Unknown subagent: ${args.subagent}. Available: ${subagents.map((s) => s.agentName).join(", ")}`
56
56
  );
57
57
  }
58
- const childWorkflowId = `${parentWorkflowId}-${args.subagent}-${uuid4()}`;
58
+ const childWorkflowId = `${args.subagent}-${uuid4()}`;
59
59
  const input = {
60
60
  prompt: args.prompt,
61
61
  ...config.context && { context: config.context }
@@ -83,31 +83,36 @@ function createToolRouter(options) {
83
83
  }
84
84
  const isEnabled = (tool) => tool.enabled !== false;
85
85
  if (options.subagents) {
86
- const subagentHooksMap = /* @__PURE__ */ new Map();
87
- for (const s of options.subagents) {
88
- if (s.hooks) subagentHooksMap.set(s.name, s.hooks);
89
- }
90
- const resolveSubagentName = (args) => args.subagent;
91
- toolMap.set("Subagent", {
92
- ...createSubagentTool(options.subagents),
93
- handler: createSubagentHandler(options.subagents),
94
- ...subagentHooksMap.size > 0 && {
95
- hooks: {
96
- onPreToolUse: async (ctx) => {
97
- const hooks = subagentHooksMap.get(resolveSubagentName(ctx.args));
98
- return hooks?.onPreExecution?.(ctx) ?? {};
99
- },
100
- onPostToolUse: async (ctx) => {
101
- const hooks = subagentHooksMap.get(resolveSubagentName(ctx.args));
102
- await hooks?.onPostExecution?.(ctx);
103
- },
104
- onPostToolUseFailure: async (ctx) => {
105
- const hooks = subagentHooksMap.get(resolveSubagentName(ctx.args));
106
- return hooks?.onExecutionFailure?.(ctx) ?? {};
86
+ const enabledSubagents = options.subagents.filter(
87
+ (s) => s.enabled !== false
88
+ );
89
+ if (enabledSubagents.length > 0) {
90
+ const subagentHooksMap = /* @__PURE__ */ new Map();
91
+ for (const s of enabledSubagents) {
92
+ if (s.hooks) subagentHooksMap.set(s.agentName, s.hooks);
93
+ }
94
+ const resolveSubagentName = (args) => args.subagent;
95
+ toolMap.set("Subagent", {
96
+ ...createSubagentTool(enabledSubagents),
97
+ handler: createSubagentHandler(enabledSubagents),
98
+ ...subagentHooksMap.size > 0 && {
99
+ hooks: {
100
+ onPreToolUse: async (ctx) => {
101
+ const hooks = subagentHooksMap.get(resolveSubagentName(ctx.args));
102
+ return hooks?.onPreExecution?.(ctx) ?? {};
103
+ },
104
+ onPostToolUse: async (ctx) => {
105
+ const hooks = subagentHooksMap.get(resolveSubagentName(ctx.args));
106
+ await hooks?.onPostExecution?.(ctx);
107
+ },
108
+ onPostToolUseFailure: async (ctx) => {
109
+ const hooks = subagentHooksMap.get(resolveSubagentName(ctx.args));
110
+ return hooks?.onExecutionFailure?.(ctx) ?? {};
111
+ }
107
112
  }
108
113
  }
109
- }
110
- });
114
+ });
115
+ }
111
116
  }
112
117
  async function processToolCall(toolCall, turn, handlerContext) {
113
118
  const startTime = Date.now();
@@ -378,7 +383,11 @@ function withAutoAppend(threadHandler, handler) {
378
383
  toolName,
379
384
  content: response.toolResponse
380
385
  });
381
- return { toolResponse: "", data: response.data, resultAppended: true };
386
+ return {
387
+ toolResponse: "Response appended via withAutoAppend",
388
+ data: response.data,
389
+ resultAppended: true
390
+ };
382
391
  };
383
392
  }
384
393
  function defineTool(tool) {
@@ -403,11 +412,19 @@ var createSession = async ({
403
412
  subagents,
404
413
  tools = {},
405
414
  processToolsInParallel = true,
406
- hooks = {}
415
+ hooks = {},
416
+ appendSystemPrompt = true,
417
+ systemPrompt
407
418
  }) => {
419
+ const {
420
+ appendToolResult,
421
+ appendHumanMessage,
422
+ initializeThread,
423
+ appendSystemMessage
424
+ } = threadOps ?? proxyDefaultThreadOps();
408
425
  const toolRouter = createToolRouter({
409
426
  tools,
410
- appendToolResult: threadOps.appendToolResult,
427
+ appendToolResult,
411
428
  threadId,
412
429
  hooks,
413
430
  subagents,
@@ -434,8 +451,11 @@ var createSession = async ({
434
451
  });
435
452
  }
436
453
  stateManager.setTools(toolRouter.getToolDefinitions());
437
- await threadOps.initializeThread(threadId);
438
- await threadOps.appendHumanMessage(threadId, await buildContextMessage());
454
+ await initializeThread(threadId);
455
+ if (appendSystemPrompt && systemPrompt && systemPrompt.trim() !== "") {
456
+ await appendSystemMessage(threadId, systemPrompt);
457
+ }
458
+ await appendHumanMessage(threadId, await buildContextMessage());
439
459
  let exitReason = "completed";
440
460
  try {
441
461
  while (stateManager.isRunning() && !stateManager.isTerminal() && stateManager.getTurns() < maxTurns) {
@@ -456,7 +476,7 @@ var createSession = async ({
456
476
  try {
457
477
  parsedToolCalls.push(toolRouter.parseToolCall(tc));
458
478
  } catch (error) {
459
- await threadOps.appendToolResult({
479
+ await appendToolResult({
460
480
  threadId,
461
481
  toolCallId: tc.id ?? "",
462
482
  toolName: tc.name,
@@ -503,7 +523,8 @@ function proxyDefaultThreadOps(options) {
503
523
  return {
504
524
  initializeThread: activities.initializeThread,
505
525
  appendHumanMessage: activities.appendHumanMessage,
506
- appendToolResult: activities.appendToolResult
526
+ appendToolResult: activities.appendToolResult,
527
+ appendSystemMessage: activities.appendSystemMessage
507
528
  };
508
529
  }
509
530
 
@@ -1102,6 +1123,10 @@ function createSharedActivities(redis) {
1102
1123
  async appendHumanMessage(threadId, content) {
1103
1124
  const thread = createThreadManager({ redis, threadId });
1104
1125
  await thread.appendHumanMessage(content);
1126
+ },
1127
+ async appendSystemMessage(threadId, content) {
1128
+ const thread = createThreadManager({ redis, threadId });
1129
+ await thread.appendSystemMessage(content);
1105
1130
  }
1106
1131
  };
1107
1132
  }