zeitlich 0.2.7 → 0.2.8

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, G as GlobArgs, F as FileEditArgs, B as BashArgs } from './workflow-CyYHDbrr.cjs';
2
- export { b as AGENT_HANDLER_NAMES, c as AgentConfig, d as AgentFile, e as AgentState, f as AgentStateManager, g as AgentStatus, h as AppendToolResultFn, i as AskUserQuestionArgs, j as BaseAgentState, k as BaseThreadManager, l as FileReadArgs, m as FileWriteArgs, n as GrepArgs, I as InferToolResults, J as JsonPrimitive, o as JsonSerializable, p as JsonValue, P as ParsedToolCall, q as ParsedToolCallUnion, r as PostToolUseFailureHook, s as PostToolUseFailureHookContext, t as PostToolUseFailureHookResult, u as PostToolUseHook, v as PostToolUseHookContext, w as PreToolUseHook, x as PreToolUseHookContext, y as PreToolUseHookResult, z as ProcessToolCallsContext, R as RawToolCall, C as RunAgentActivity, D as RunAgentConfig, S as SessionEndHook, E as SessionEndHookContext, H as SessionExitReason, K as SessionLifecycleHooks, L as SessionStartHook, M as SessionStartHookContext, N as SubagentArgs, O as SubagentConfig, Q as SubagentHooks, T as SubagentInput, U as TaskCreateArgs, V as TaskGetArgs, W as TaskListArgs, X as TaskStatus, Y as TaskUpdateArgs, Z as ThreadManager, _ as ThreadManagerConfig, $ as ThreadOps, a0 as ToolArgs, a1 as ToolCallResult, a2 as ToolCallResultUnion, a3 as ToolDefinition, a4 as ToolHandler, a5 as ToolHandlerContext, a6 as ToolHandlerResponse, a7 as ToolHooks, a8 as ToolMap, a9 as ToolMessageContent, aa as ToolNames, ab as ToolResult, ac as ToolResultConfig, ad as ToolRouter, ae as ToolWithHandler, af as WorkflowTask, ag as ZeitlichSession, ah as ZeitlichSharedActivities, ai as askUserQuestionTool, aj as bashTool, ak as createAgentStateManager, al as createAskUserQuestionHandler, am as createBashToolDescription, an as createSession, ao as createSharedActivities, ap as createSubagentTool, aq as createTaskCreateHandler, ar as createTaskGetHandler, as as createTaskListHandler, at as createTaskUpdateHandler, au as createThreadManager, av as createToolRouter, aw as defineSubagent, ax as defineTool, ay as editTool, 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-CyYHDbrr.cjs';
1
+ import { A as AgentResponse, a as ActivityToolHandler, G as GlobArgs, F as FileEditArgs, B as BashArgs } from './workflow-BdAuMMjY.cjs';
2
+ export { b as AGENT_HANDLER_NAMES, c as AgentConfig, d as AgentFile, e as AgentState, f as AgentStateManager, g as AgentStatus, h as AppendToolResultFn, i as AskUserQuestionArgs, j as BaseAgentState, k as BaseThreadManager, l as FileReadArgs, m as FileWriteArgs, n as GrepArgs, I as InferToolResults, J as JsonPrimitive, o as JsonSerializable, p as JsonValue, P as ParsedToolCall, q as ParsedToolCallUnion, r as PostToolUseFailureHook, s as PostToolUseFailureHookContext, t as PostToolUseFailureHookResult, u as PostToolUseHook, v as PostToolUseHookContext, w as PreToolUseHook, x as PreToolUseHookContext, y as PreToolUseHookResult, z as ProcessToolCallsContext, R as RawToolCall, C as RunAgentActivity, D as RunAgentConfig, S as SessionEndHook, E as SessionEndHookContext, H as SessionExitReason, K as SessionLifecycleHooks, L as SessionStartHook, M as SessionStartHookContext, N as SubagentArgs, O as SubagentConfig, Q as SubagentHooks, T as SubagentInput, U as TaskCreateArgs, V as TaskGetArgs, W as TaskListArgs, X as TaskStatus, Y as TaskUpdateArgs, Z as ThreadManager, _ as ThreadManagerConfig, $ as ThreadOps, a0 as ToolArgs, a1 as ToolCallResult, a2 as ToolCallResultUnion, a3 as ToolDefinition, a4 as ToolHandler, a5 as ToolHandlerContext, a6 as ToolHandlerResponse, a7 as ToolHooks, a8 as ToolMap, a9 as ToolMessageContent, aa as ToolNames, ab as ToolResult, ac as ToolResultConfig, ad as ToolRouter, ae as ToolWithHandler, af as WorkflowTask, ag as ZeitlichSession, ah as ZeitlichSharedActivities, ai as askUserQuestionTool, aj as bashTool, ak as createAgentStateManager, al as createAskUserQuestionHandler, am as createBashToolDescription, an as createSession, ao as createSharedActivities, ap as createSubagentTool, aq as createTaskCreateHandler, ar as createTaskGetHandler, as as createTaskListHandler, at as createTaskUpdateHandler, au as createThreadManager, av as createToolRouter, aw as defineSubagent, ax as defineTool, ay as editTool, 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-BdAuMMjY.cjs';
3
3
  import { SimplePlugin } from '@temporalio/plugin';
4
4
  import Redis from 'ioredis';
5
5
  import { WorkflowClient } from '@temporalio/client';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as AgentResponse, a as ActivityToolHandler, G as GlobArgs, F as FileEditArgs, B as BashArgs } from './workflow-CyYHDbrr.js';
2
- export { b as AGENT_HANDLER_NAMES, c as AgentConfig, d as AgentFile, e as AgentState, f as AgentStateManager, g as AgentStatus, h as AppendToolResultFn, i as AskUserQuestionArgs, j as BaseAgentState, k as BaseThreadManager, l as FileReadArgs, m as FileWriteArgs, n as GrepArgs, I as InferToolResults, J as JsonPrimitive, o as JsonSerializable, p as JsonValue, P as ParsedToolCall, q as ParsedToolCallUnion, r as PostToolUseFailureHook, s as PostToolUseFailureHookContext, t as PostToolUseFailureHookResult, u as PostToolUseHook, v as PostToolUseHookContext, w as PreToolUseHook, x as PreToolUseHookContext, y as PreToolUseHookResult, z as ProcessToolCallsContext, R as RawToolCall, C as RunAgentActivity, D as RunAgentConfig, S as SessionEndHook, E as SessionEndHookContext, H as SessionExitReason, K as SessionLifecycleHooks, L as SessionStartHook, M as SessionStartHookContext, N as SubagentArgs, O as SubagentConfig, Q as SubagentHooks, T as SubagentInput, U as TaskCreateArgs, V as TaskGetArgs, W as TaskListArgs, X as TaskStatus, Y as TaskUpdateArgs, Z as ThreadManager, _ as ThreadManagerConfig, $ as ThreadOps, a0 as ToolArgs, a1 as ToolCallResult, a2 as ToolCallResultUnion, a3 as ToolDefinition, a4 as ToolHandler, a5 as ToolHandlerContext, a6 as ToolHandlerResponse, a7 as ToolHooks, a8 as ToolMap, a9 as ToolMessageContent, aa as ToolNames, ab as ToolResult, ac as ToolResultConfig, ad as ToolRouter, ae as ToolWithHandler, af as WorkflowTask, ag as ZeitlichSession, ah as ZeitlichSharedActivities, ai as askUserQuestionTool, aj as bashTool, ak as createAgentStateManager, al as createAskUserQuestionHandler, am as createBashToolDescription, an as createSession, ao as createSharedActivities, ap as createSubagentTool, aq as createTaskCreateHandler, ar as createTaskGetHandler, as as createTaskListHandler, at as createTaskUpdateHandler, au as createThreadManager, av as createToolRouter, aw as defineSubagent, ax as defineTool, ay as editTool, 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-CyYHDbrr.js';
1
+ import { A as AgentResponse, a as ActivityToolHandler, G as GlobArgs, F as FileEditArgs, B as BashArgs } from './workflow-BdAuMMjY.js';
2
+ export { b as AGENT_HANDLER_NAMES, c as AgentConfig, d as AgentFile, e as AgentState, f as AgentStateManager, g as AgentStatus, h as AppendToolResultFn, i as AskUserQuestionArgs, j as BaseAgentState, k as BaseThreadManager, l as FileReadArgs, m as FileWriteArgs, n as GrepArgs, I as InferToolResults, J as JsonPrimitive, o as JsonSerializable, p as JsonValue, P as ParsedToolCall, q as ParsedToolCallUnion, r as PostToolUseFailureHook, s as PostToolUseFailureHookContext, t as PostToolUseFailureHookResult, u as PostToolUseHook, v as PostToolUseHookContext, w as PreToolUseHook, x as PreToolUseHookContext, y as PreToolUseHookResult, z as ProcessToolCallsContext, R as RawToolCall, C as RunAgentActivity, D as RunAgentConfig, S as SessionEndHook, E as SessionEndHookContext, H as SessionExitReason, K as SessionLifecycleHooks, L as SessionStartHook, M as SessionStartHookContext, N as SubagentArgs, O as SubagentConfig, Q as SubagentHooks, T as SubagentInput, U as TaskCreateArgs, V as TaskGetArgs, W as TaskListArgs, X as TaskStatus, Y as TaskUpdateArgs, Z as ThreadManager, _ as ThreadManagerConfig, $ as ThreadOps, a0 as ToolArgs, a1 as ToolCallResult, a2 as ToolCallResultUnion, a3 as ToolDefinition, a4 as ToolHandler, a5 as ToolHandlerContext, a6 as ToolHandlerResponse, a7 as ToolHooks, a8 as ToolMap, a9 as ToolMessageContent, aa as ToolNames, ab as ToolResult, ac as ToolResultConfig, ad as ToolRouter, ae as ToolWithHandler, af as WorkflowTask, ag as ZeitlichSession, ah as ZeitlichSharedActivities, ai as askUserQuestionTool, aj as bashTool, ak as createAgentStateManager, al as createAskUserQuestionHandler, am as createBashToolDescription, an as createSession, ao as createSharedActivities, ap as createSubagentTool, aq as createTaskCreateHandler, ar as createTaskGetHandler, as as createTaskListHandler, at as createTaskUpdateHandler, au as createThreadManager, av as createToolRouter, aw as defineSubagent, ax as defineTool, ay as editTool, 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-BdAuMMjY.js';
3
3
  import { SimplePlugin } from '@temporalio/plugin';
4
4
  import Redis from 'ioredis';
5
5
  import { WorkflowClient } from '@temporalio/client';
package/dist/index.js CHANGED
@@ -65,11 +65,12 @@ function createSubagentHandler(subagents) {
65
65
  args: [input],
66
66
  taskQueue: config.taskQueue ?? parentTaskQueue
67
67
  };
68
- const { toolResponse, data } = typeof config.workflow === "string" ? await executeChild(config.workflow, childOpts) : await executeChild(config.workflow, childOpts);
68
+ const { toolResponse, data, usage } = typeof config.workflow === "string" ? await executeChild(config.workflow, childOpts) : await executeChild(config.workflow, childOpts);
69
69
  const validated = config.resultSchema ? config.resultSchema.parse(data) : null;
70
70
  return {
71
71
  toolResponse,
72
- data: validated
72
+ data: validated,
73
+ ...usage && { usage }
73
74
  };
74
75
  };
75
76
  }
@@ -81,20 +82,17 @@ function createToolRouter(options) {
81
82
  for (const [_key, tool] of Object.entries(options.tools)) {
82
83
  toolMap.set(tool.name, tool);
83
84
  }
84
- const isEnabled = (tool) => tool.enabled !== false;
85
+ const isEnabled = (tool) => tool.enabled?.() ?? true;
85
86
  if (options.subagents) {
86
- const enabledSubagents = options.subagents.filter(
87
- (s) => s.enabled !== false
88
- );
89
- if (enabledSubagents.length > 0) {
87
+ if (options.subagents.length > 0) {
90
88
  const subagentHooksMap = /* @__PURE__ */ new Map();
91
- for (const s of enabledSubagents) {
89
+ for (const s of options.subagents) {
92
90
  if (s.hooks) subagentHooksMap.set(s.agentName, s.hooks);
93
91
  }
94
92
  const resolveSubagentName = (args) => args.subagent;
95
93
  toolMap.set("Subagent", {
96
- ...createSubagentTool(enabledSubagents),
97
- handler: createSubagentHandler(enabledSubagents),
94
+ ...createSubagentTool(options.subagents),
95
+ handler: createSubagentHandler(options.subagents),
98
96
  ...subagentHooksMap.size > 0 && {
99
97
  hooks: {
100
98
  onPreToolUse: async (ctx) => {
@@ -404,6 +402,7 @@ function hasNoOtherToolCalls(toolCalls, excludeName) {
404
402
  var createSession = async ({
405
403
  threadId,
406
404
  agentName,
405
+ description,
407
406
  maxTurns = 50,
408
407
  metadata = {},
409
408
  runAgent,
@@ -443,7 +442,9 @@ var createSession = async ({
443
442
  }
444
443
  };
445
444
  return {
446
- runSession: async ({ stateManager }) => {
445
+ runSession: async ({
446
+ stateManager
447
+ }) => {
447
448
  setHandler(
448
449
  defineUpdate(`add${agentName}Message`),
449
450
  async (message) => {
@@ -470,7 +471,6 @@ var createSession = async ({
470
471
  metadata
471
472
  });
472
473
  }
473
- stateManager.setTools(toolRouter.getToolDefinitions());
474
474
  await initializeThread(threadId);
475
475
  if (appendSystemPrompt && systemPrompt && systemPrompt.trim() !== "") {
476
476
  await appendSystemMessage(threadId, systemPrompt);
@@ -481,15 +481,25 @@ var createSession = async ({
481
481
  while (stateManager.isRunning() && !stateManager.isTerminal() && stateManager.getTurns() < maxTurns) {
482
482
  stateManager.incrementTurns();
483
483
  const currentTurn = stateManager.getTurns();
484
- const { message, rawToolCalls } = await runAgent({
484
+ stateManager.setTools(toolRouter.getToolDefinitions());
485
+ const { message, rawToolCalls, usage } = await runAgent({
485
486
  threadId,
486
487
  agentName,
487
- metadata
488
+ metadata,
489
+ systemPrompt,
490
+ description
488
491
  });
492
+ if (usage) {
493
+ stateManager.updateUsage(usage);
494
+ }
489
495
  if (!toolRouter.hasTools() || rawToolCalls.length === 0) {
490
496
  stateManager.complete();
491
497
  exitReason = "completed";
492
- return message;
498
+ return {
499
+ finalMessage: message,
500
+ exitReason,
501
+ usage: stateManager.getTotalUsage()
502
+ };
493
503
  }
494
504
  const parsedToolCalls = [];
495
505
  for (const tc of rawToolCalls) {
@@ -506,9 +516,17 @@ var createSession = async ({
506
516
  });
507
517
  }
508
518
  }
509
- await toolRouter.processToolCalls(parsedToolCalls, {
510
- turn: currentTurn
511
- });
519
+ const toolCallResults = await toolRouter.processToolCalls(
520
+ parsedToolCalls,
521
+ {
522
+ turn: currentTurn
523
+ }
524
+ );
525
+ for (const result of toolCallResults) {
526
+ if (result.usage) {
527
+ stateManager.updateUsage(result.usage);
528
+ }
529
+ }
512
530
  if (stateManager.getStatus() === "WAITING_FOR_INPUT") {
513
531
  const conditionMet = await condition(
514
532
  () => stateManager.getStatus() === "RUNNING",
@@ -530,7 +548,11 @@ var createSession = async ({
530
548
  } finally {
531
549
  await callSessionEnd(exitReason, stateManager.getTurns());
532
550
  }
533
- return null;
551
+ return {
552
+ finalMessage: null,
553
+ exitReason,
554
+ usage: stateManager.getTotalUsage()
555
+ };
534
556
  }
535
557
  };
536
558
  };
@@ -567,6 +589,11 @@ function createAgentStateManager({
567
589
  let version = initialState?.version ?? 0;
568
590
  let turns = initialState?.turns ?? 0;
569
591
  let tools = initialState?.tools ?? [];
592
+ let totalInputTokens = 0;
593
+ let totalOutputTokens = 0;
594
+ let totalCachedWriteTokens = 0;
595
+ let totalCachedReadTokens = 0;
596
+ let totalReasonTokens = 0;
570
597
  const tasks = new Map(initialState?.tasks);
571
598
  const {
572
599
  status: _,
@@ -681,6 +708,23 @@ function createAgentStateManager({
681
708
  version++;
682
709
  }
683
710
  return deleted;
711
+ },
712
+ updateUsage(usage) {
713
+ totalInputTokens += usage.inputTokens ?? 0;
714
+ totalOutputTokens += usage.outputTokens ?? 0;
715
+ totalCachedWriteTokens += usage.cachedWriteTokens ?? 0;
716
+ totalCachedReadTokens += usage.cachedReadTokens ?? 0;
717
+ totalReasonTokens += usage.reasonTokens ?? 0;
718
+ },
719
+ getTotalUsage() {
720
+ return {
721
+ totalInputTokens,
722
+ totalOutputTokens,
723
+ totalCachedWriteTokens,
724
+ totalCachedReadTokens,
725
+ totalReasonTokens,
726
+ turns
727
+ };
684
728
  }
685
729
  };
686
730
  }
@@ -1232,9 +1276,11 @@ async function invokeModel({
1232
1276
  args: tc.args
1233
1277
  })),
1234
1278
  usage: {
1235
- input_tokens: response.usage_metadata?.input_tokens,
1236
- output_tokens: response.usage_metadata?.output_tokens,
1237
- total_tokens: response.usage_metadata?.total_tokens
1279
+ inputTokens: response.usage_metadata?.input_tokens,
1280
+ outputTokens: response.usage_metadata?.output_tokens,
1281
+ reasonTokens: response.usage_metadata?.output_token_details?.reasoning,
1282
+ cachedWriteTokens: response.usage_metadata?.input_token_details?.cache_creation,
1283
+ cachedReadTokens: response.usage_metadata?.input_token_details?.cache_read
1238
1284
  }
1239
1285
  };
1240
1286
  }