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/workflow.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { b as AGENT_HANDLER_NAMES, a as ActivityToolHandler, c as AgentConfig, d as AgentFile, A as AgentResponse, e as AgentState, f as AgentStateManager, g as AgentStatus, h as AppendToolResultFn, i as AskUserQuestionArgs, j as BaseAgentState, B as BashArgs, F as FileEditArgs, l as FileReadArgs, m as FileWriteArgs, G as GlobArgs, 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, $ 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, ap as createSubagentTool, aq as createTaskCreateHandler, ar as createTaskGetHandler, as as createTaskListHandler, at as createTaskUpdateHandler, 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, aK as writeTool } from './workflow-
|
|
1
|
+
export { b as AGENT_HANDLER_NAMES, a as ActivityToolHandler, c as AgentConfig, d as AgentFile, A as AgentResponse, e as AgentState, f as AgentStateManager, g as AgentStatus, h as AppendToolResultFn, i as AskUserQuestionArgs, j as BaseAgentState, B as BashArgs, F as FileEditArgs, l as FileReadArgs, m as FileWriteArgs, G as GlobArgs, 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, $ 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, ap as createSubagentTool, aq as createTaskCreateHandler, ar as createTaskGetHandler, as as createTaskListHandler, at as createTaskUpdateHandler, 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, aK as writeTool } from './workflow-BdAuMMjY.js';
|
|
2
2
|
import '@temporalio/workflow';
|
|
3
3
|
import 'ioredis';
|
|
4
4
|
import '@langchain/core/messages';
|
package/dist/workflow.js
CHANGED
|
@@ -60,11 +60,12 @@ function createSubagentHandler(subagents) {
|
|
|
60
60
|
args: [input],
|
|
61
61
|
taskQueue: config.taskQueue ?? parentTaskQueue
|
|
62
62
|
};
|
|
63
|
-
const { toolResponse, data } = typeof config.workflow === "string" ? await executeChild(config.workflow, childOpts) : await executeChild(config.workflow, childOpts);
|
|
63
|
+
const { toolResponse, data, usage } = typeof config.workflow === "string" ? await executeChild(config.workflow, childOpts) : await executeChild(config.workflow, childOpts);
|
|
64
64
|
const validated = config.resultSchema ? config.resultSchema.parse(data) : null;
|
|
65
65
|
return {
|
|
66
66
|
toolResponse,
|
|
67
|
-
data: validated
|
|
67
|
+
data: validated,
|
|
68
|
+
...usage && { usage }
|
|
68
69
|
};
|
|
69
70
|
};
|
|
70
71
|
}
|
|
@@ -76,20 +77,17 @@ function createToolRouter(options) {
|
|
|
76
77
|
for (const [_key, tool] of Object.entries(options.tools)) {
|
|
77
78
|
toolMap.set(tool.name, tool);
|
|
78
79
|
}
|
|
79
|
-
const isEnabled = (tool) => tool.enabled
|
|
80
|
+
const isEnabled = (tool) => tool.enabled?.() ?? true;
|
|
80
81
|
if (options.subagents) {
|
|
81
|
-
|
|
82
|
-
(s) => s.enabled !== false
|
|
83
|
-
);
|
|
84
|
-
if (enabledSubagents.length > 0) {
|
|
82
|
+
if (options.subagents.length > 0) {
|
|
85
83
|
const subagentHooksMap = /* @__PURE__ */ new Map();
|
|
86
|
-
for (const s of
|
|
84
|
+
for (const s of options.subagents) {
|
|
87
85
|
if (s.hooks) subagentHooksMap.set(s.agentName, s.hooks);
|
|
88
86
|
}
|
|
89
87
|
const resolveSubagentName = (args) => args.subagent;
|
|
90
88
|
toolMap.set("Subagent", {
|
|
91
|
-
...createSubagentTool(
|
|
92
|
-
handler: createSubagentHandler(
|
|
89
|
+
...createSubagentTool(options.subagents),
|
|
90
|
+
handler: createSubagentHandler(options.subagents),
|
|
93
91
|
...subagentHooksMap.size > 0 && {
|
|
94
92
|
hooks: {
|
|
95
93
|
onPreToolUse: async (ctx) => {
|
|
@@ -380,6 +378,7 @@ function hasNoOtherToolCalls(toolCalls, excludeName) {
|
|
|
380
378
|
var createSession = async ({
|
|
381
379
|
threadId,
|
|
382
380
|
agentName,
|
|
381
|
+
description,
|
|
383
382
|
maxTurns = 50,
|
|
384
383
|
metadata = {},
|
|
385
384
|
runAgent,
|
|
@@ -419,7 +418,9 @@ var createSession = async ({
|
|
|
419
418
|
}
|
|
420
419
|
};
|
|
421
420
|
return {
|
|
422
|
-
runSession: async ({
|
|
421
|
+
runSession: async ({
|
|
422
|
+
stateManager
|
|
423
|
+
}) => {
|
|
423
424
|
setHandler(
|
|
424
425
|
defineUpdate(`add${agentName}Message`),
|
|
425
426
|
async (message) => {
|
|
@@ -446,7 +447,6 @@ var createSession = async ({
|
|
|
446
447
|
metadata
|
|
447
448
|
});
|
|
448
449
|
}
|
|
449
|
-
stateManager.setTools(toolRouter.getToolDefinitions());
|
|
450
450
|
await initializeThread(threadId);
|
|
451
451
|
if (appendSystemPrompt && systemPrompt && systemPrompt.trim() !== "") {
|
|
452
452
|
await appendSystemMessage(threadId, systemPrompt);
|
|
@@ -457,15 +457,25 @@ var createSession = async ({
|
|
|
457
457
|
while (stateManager.isRunning() && !stateManager.isTerminal() && stateManager.getTurns() < maxTurns) {
|
|
458
458
|
stateManager.incrementTurns();
|
|
459
459
|
const currentTurn = stateManager.getTurns();
|
|
460
|
-
|
|
460
|
+
stateManager.setTools(toolRouter.getToolDefinitions());
|
|
461
|
+
const { message, rawToolCalls, usage } = await runAgent({
|
|
461
462
|
threadId,
|
|
462
463
|
agentName,
|
|
463
|
-
metadata
|
|
464
|
+
metadata,
|
|
465
|
+
systemPrompt,
|
|
466
|
+
description
|
|
464
467
|
});
|
|
468
|
+
if (usage) {
|
|
469
|
+
stateManager.updateUsage(usage);
|
|
470
|
+
}
|
|
465
471
|
if (!toolRouter.hasTools() || rawToolCalls.length === 0) {
|
|
466
472
|
stateManager.complete();
|
|
467
473
|
exitReason = "completed";
|
|
468
|
-
return
|
|
474
|
+
return {
|
|
475
|
+
finalMessage: message,
|
|
476
|
+
exitReason,
|
|
477
|
+
usage: stateManager.getTotalUsage()
|
|
478
|
+
};
|
|
469
479
|
}
|
|
470
480
|
const parsedToolCalls = [];
|
|
471
481
|
for (const tc of rawToolCalls) {
|
|
@@ -482,9 +492,17 @@ var createSession = async ({
|
|
|
482
492
|
});
|
|
483
493
|
}
|
|
484
494
|
}
|
|
485
|
-
await toolRouter.processToolCalls(
|
|
486
|
-
|
|
487
|
-
|
|
495
|
+
const toolCallResults = await toolRouter.processToolCalls(
|
|
496
|
+
parsedToolCalls,
|
|
497
|
+
{
|
|
498
|
+
turn: currentTurn
|
|
499
|
+
}
|
|
500
|
+
);
|
|
501
|
+
for (const result of toolCallResults) {
|
|
502
|
+
if (result.usage) {
|
|
503
|
+
stateManager.updateUsage(result.usage);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
488
506
|
if (stateManager.getStatus() === "WAITING_FOR_INPUT") {
|
|
489
507
|
const conditionMet = await condition(
|
|
490
508
|
() => stateManager.getStatus() === "RUNNING",
|
|
@@ -506,7 +524,11 @@ var createSession = async ({
|
|
|
506
524
|
} finally {
|
|
507
525
|
await callSessionEnd(exitReason, stateManager.getTurns());
|
|
508
526
|
}
|
|
509
|
-
return
|
|
527
|
+
return {
|
|
528
|
+
finalMessage: null,
|
|
529
|
+
exitReason,
|
|
530
|
+
usage: stateManager.getTotalUsage()
|
|
531
|
+
};
|
|
510
532
|
}
|
|
511
533
|
};
|
|
512
534
|
};
|
|
@@ -543,6 +565,11 @@ function createAgentStateManager({
|
|
|
543
565
|
let version = initialState?.version ?? 0;
|
|
544
566
|
let turns = initialState?.turns ?? 0;
|
|
545
567
|
let tools = initialState?.tools ?? [];
|
|
568
|
+
let totalInputTokens = 0;
|
|
569
|
+
let totalOutputTokens = 0;
|
|
570
|
+
let totalCachedWriteTokens = 0;
|
|
571
|
+
let totalCachedReadTokens = 0;
|
|
572
|
+
let totalReasonTokens = 0;
|
|
546
573
|
const tasks = new Map(initialState?.tasks);
|
|
547
574
|
const {
|
|
548
575
|
status: _,
|
|
@@ -657,6 +684,23 @@ function createAgentStateManager({
|
|
|
657
684
|
version++;
|
|
658
685
|
}
|
|
659
686
|
return deleted;
|
|
687
|
+
},
|
|
688
|
+
updateUsage(usage) {
|
|
689
|
+
totalInputTokens += usage.inputTokens ?? 0;
|
|
690
|
+
totalOutputTokens += usage.outputTokens ?? 0;
|
|
691
|
+
totalCachedWriteTokens += usage.cachedWriteTokens ?? 0;
|
|
692
|
+
totalCachedReadTokens += usage.cachedReadTokens ?? 0;
|
|
693
|
+
totalReasonTokens += usage.reasonTokens ?? 0;
|
|
694
|
+
},
|
|
695
|
+
getTotalUsage() {
|
|
696
|
+
return {
|
|
697
|
+
totalInputTokens,
|
|
698
|
+
totalOutputTokens,
|
|
699
|
+
totalCachedWriteTokens,
|
|
700
|
+
totalCachedReadTokens,
|
|
701
|
+
totalReasonTokens,
|
|
702
|
+
turns
|
|
703
|
+
};
|
|
660
704
|
}
|
|
661
705
|
};
|
|
662
706
|
}
|