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.cjs +68 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +68 -22
- package/dist/index.js.map +1 -1
- package/dist/{workflow-CyYHDbrr.d.cts → workflow-BdAuMMjY.d.cts} +44 -12
- package/dist/{workflow-CyYHDbrr.d.ts → workflow-BdAuMMjY.d.ts} +44 -12
- package/dist/workflow.cjs +63 -19
- package/dist/workflow.cjs.map +1 -1
- package/dist/workflow.d.cts +1 -1
- package/dist/workflow.d.ts +1 -1
- package/dist/workflow.js +63 -19
- package/dist/workflow.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/model-invoker.ts +7 -3
- package/src/lib/session.ts +44 -10
- package/src/lib/state-manager.ts +56 -0
- package/src/lib/tool-router.ts +12 -10
- package/src/lib/types.ts +18 -8
- package/src/tools/subagent/handler.ts +2 -1
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
85
|
+
const isEnabled = (tool) => tool.enabled?.() ?? true;
|
|
85
86
|
if (options.subagents) {
|
|
86
|
-
|
|
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
|
|
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(
|
|
97
|
-
handler: createSubagentHandler(
|
|
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 ({
|
|
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
|
-
|
|
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
|
|
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(
|
|
510
|
-
|
|
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
|
|
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
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
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
|
}
|