zeitlich 0.2.6 → 0.2.7

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,12 +1,12 @@
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';
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';
3
3
  import { SimplePlugin } from '@temporalio/plugin';
4
4
  import Redis from 'ioredis';
5
5
  import { WorkflowClient } from '@temporalio/client';
6
6
  import { BaseChatModel, BaseChatModelCallOptions, BindToolsInput } from '@langchain/core/language_models/chat_models';
7
- import { StoredMessage } from '@langchain/core/messages';
8
7
  import { IFileSystem, BashOptions } from 'just-bash';
9
8
  import '@temporalio/workflow';
9
+ import '@langchain/core/messages';
10
10
  import 'zod';
11
11
  import '@temporalio/common';
12
12
 
@@ -55,13 +55,6 @@ declare function invokeModel({ redis, model, client, config: { threadId, agentNa
55
55
  }>;
56
56
  }): Promise<AgentResponse>;
57
57
 
58
- /**
59
- * Creates handler for user interaction tool - creates AI messages for display.
60
- */
61
- declare const createAskUserQuestionHandler: () => ActivityToolHandler<AskUserQuestionArgs, {
62
- chatMessages: StoredMessage[];
63
- }>;
64
-
65
58
  /**
66
59
  * Result of a glob operation
67
60
  */
@@ -109,4 +102,4 @@ declare const toTree: (fs: IFileSystem, opts?: {
109
102
  sort?: boolean;
110
103
  }) => Promise<string>;
111
104
 
112
- export { ActivityToolHandler, AgentResponse, AskUserQuestionArgs, BashArgs, FileEditArgs, GlobArgs, type InvokeModelConfig, ZeitlichPlugin, type ZeitlichPluginOptions, createAskUserQuestionHandler, createBashHandler, createEditHandler, createGlobHandler, invokeModel, toTree };
105
+ export { ActivityToolHandler, AgentResponse, BashArgs, FileEditArgs, GlobArgs, type InvokeModelConfig, ZeitlichPlugin, type ZeitlichPluginOptions, createBashHandler, createEditHandler, createGlobHandler, invokeModel, toTree };
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
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';
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';
3
3
  import { SimplePlugin } from '@temporalio/plugin';
4
4
  import Redis from 'ioredis';
5
5
  import { WorkflowClient } from '@temporalio/client';
6
6
  import { BaseChatModel, BaseChatModelCallOptions, BindToolsInput } from '@langchain/core/language_models/chat_models';
7
- import { StoredMessage } from '@langchain/core/messages';
8
7
  import { IFileSystem, BashOptions } from 'just-bash';
9
8
  import '@temporalio/workflow';
9
+ import '@langchain/core/messages';
10
10
  import 'zod';
11
11
  import '@temporalio/common';
12
12
 
@@ -55,13 +55,6 @@ declare function invokeModel({ redis, model, client, config: { threadId, agentNa
55
55
  }>;
56
56
  }): Promise<AgentResponse>;
57
57
 
58
- /**
59
- * Creates handler for user interaction tool - creates AI messages for display.
60
- */
61
- declare const createAskUserQuestionHandler: () => ActivityToolHandler<AskUserQuestionArgs, {
62
- chatMessages: StoredMessage[];
63
- }>;
64
-
65
58
  /**
66
59
  * Result of a glob operation
67
60
  */
@@ -109,4 +102,4 @@ declare const toTree: (fs: IFileSystem, opts?: {
109
102
  sort?: boolean;
110
103
  }) => Promise<string>;
111
104
 
112
- export { ActivityToolHandler, AgentResponse, AskUserQuestionArgs, BashArgs, FileEditArgs, GlobArgs, type InvokeModelConfig, ZeitlichPlugin, type ZeitlichPluginOptions, createAskUserQuestionHandler, createBashHandler, createEditHandler, createGlobHandler, invokeModel, toTree };
105
+ export { ActivityToolHandler, AgentResponse, BashArgs, FileEditArgs, GlobArgs, type InvokeModelConfig, ZeitlichPlugin, type ZeitlichPluginOptions, createBashHandler, createEditHandler, createGlobHandler, invokeModel, toTree };
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import { defineQuery, proxyActivities, setHandler, uuid4, workflowInfo, executeChild } from '@temporalio/workflow';
2
- import z3, { z } from 'zod';
1
+ import { setHandler, defineUpdate, condition, proxyActivities, defineQuery, uuid4, workflowInfo, executeChild } from '@temporalio/workflow';
2
+ import z13, { z } from 'zod';
3
3
  import { SimplePlugin } from '@temporalio/plugin';
4
- import { mapStoredMessagesToChatMessages, AIMessage, ToolMessage, SystemMessage, HumanMessage } from '@langchain/core/messages';
4
+ import { mapStoredMessagesToChatMessages, ToolMessage, AIMessage, SystemMessage, HumanMessage } from '@langchain/core/messages';
5
5
  import crypto from 'crypto';
6
6
  import { Context } from '@temporalio/activity';
7
7
  import { Bash } from 'just-bash';
@@ -39,10 +39,10 @@ function createSubagentTool(subagents) {
39
39
  return {
40
40
  name: SUBAGENT_TOOL,
41
41
  description: buildSubagentDescription(subagents),
42
- schema: z3.object({
43
- subagent: z3.enum(names).describe("The type of subagent to launch"),
44
- description: z3.string().describe("A short (3-5 word) description of the task"),
45
- prompt: z3.string().describe("The task for the agent to perform")
42
+ schema: z13.object({
43
+ subagent: z13.enum(names).describe("The type of subagent to launch"),
44
+ description: z13.string().describe("A short (3-5 word) description of the task"),
45
+ prompt: z13.string().describe("The task for the agent to perform")
46
46
  })
47
47
  };
48
48
  }
@@ -414,7 +414,8 @@ var createSession = async ({
414
414
  processToolsInParallel = true,
415
415
  hooks = {},
416
416
  appendSystemPrompt = true,
417
- systemPrompt
417
+ systemPrompt,
418
+ waitForInputTimeout = "48h"
418
419
  }) => {
419
420
  const {
420
421
  appendToolResult,
@@ -443,6 +444,25 @@ var createSession = async ({
443
444
  };
444
445
  return {
445
446
  runSession: async ({ stateManager }) => {
447
+ setHandler(
448
+ defineUpdate(`add${agentName}Message`),
449
+ async (message) => {
450
+ if (hooks.onPreHumanMessageAppend) {
451
+ await hooks.onPreHumanMessageAppend({
452
+ message,
453
+ threadId
454
+ });
455
+ }
456
+ await appendHumanMessage(threadId, message);
457
+ if (hooks.onPostHumanMessageAppend) {
458
+ await hooks.onPostHumanMessageAppend({
459
+ message,
460
+ threadId
461
+ });
462
+ }
463
+ stateManager.run();
464
+ }
465
+ );
446
466
  if (hooks.onSessionStart) {
447
467
  await hooks.onSessionStart({
448
468
  threadId,
@@ -490,8 +510,15 @@ var createSession = async ({
490
510
  turn: currentTurn
491
511
  });
492
512
  if (stateManager.getStatus() === "WAITING_FOR_INPUT") {
493
- exitReason = "waiting_for_input";
494
- break;
513
+ const conditionMet = await condition(
514
+ () => stateManager.getStatus() === "RUNNING",
515
+ waitForInputTimeout
516
+ );
517
+ if (!conditionMet) {
518
+ stateManager.cancel();
519
+ await condition(() => false, "2s");
520
+ break;
521
+ }
495
522
  }
496
523
  }
497
524
  if (stateManager.getTurns() >= maxTurns && stateManager.isRunning()) {
@@ -532,8 +559,10 @@ function proxyDefaultThreadOps(options) {
532
559
  function isTerminalStatus(status) {
533
560
  return status === "COMPLETED" || status === "FAILED" || status === "CANCELLED";
534
561
  }
535
- var getStateQuery = defineQuery("getState");
536
- function createAgentStateManager(initialState) {
562
+ function createAgentStateManager({
563
+ initialState,
564
+ agentConfig
565
+ }) {
537
566
  let status = initialState?.status ?? "RUNNING";
538
567
  let version = initialState?.version ?? 0;
539
568
  let turns = initialState?.turns ?? 0;
@@ -557,9 +586,21 @@ function createAgentStateManager(initialState) {
557
586
  ...customState
558
587
  };
559
588
  }
560
- setHandler(getStateQuery, () => {
589
+ setHandler(defineQuery(`get${agentConfig.agentName}State`), () => {
561
590
  return buildState();
562
591
  });
592
+ setHandler(
593
+ defineUpdate(
594
+ `waitFor${agentConfig.agentName}StateChange`
595
+ ),
596
+ async (lastKnownVersion) => {
597
+ await condition(
598
+ () => version > lastKnownVersion || isTerminalStatus(status),
599
+ "55s"
600
+ );
601
+ return buildState();
602
+ }
603
+ );
563
604
  return {
564
605
  getStatus() {
565
606
  return status;
@@ -648,38 +689,6 @@ var AGENT_HANDLER_NAMES = {
648
689
  waitForStateChange: "waitForStateChange",
649
690
  addMessage: "addMessage"
650
691
  };
651
- var askUserQuestionTool = {
652
- name: "AskUserQuestion",
653
- description: `Use this tool when you need to ask the user questions during execution. This allows you to:
654
-
655
- 1. Gather user preferences or requirements
656
- 2. Clarify ambiguous instructions
657
- 3. Get decisions on implementation choices as you work
658
- 4. Offer choices to the user about what direction to take.
659
-
660
- Usage notes:
661
-
662
- * Users will always be able to select "Other" to provide custom text input
663
- * Use multiSelect: true to allow multiple answers to be selected for a question
664
- * If you recommend a specific option, make that the first option in the list and add "(Recommended)" at the end of the label
665
- `,
666
- schema: z3.object({
667
- questions: z3.array(
668
- z3.object({
669
- question: z3.string().describe("The full question text to display"),
670
- header: z3.string().describe("Short label for the question (max 12 characters)"),
671
- options: z3.array(
672
- z3.object({
673
- label: z3.string(),
674
- description: z3.string()
675
- })
676
- ).min(0).max(4).describe("Array of 0-4 choices, each with label and description"),
677
- multiSelect: z3.boolean().describe("If true, users can select multiple options")
678
- })
679
- )
680
- }),
681
- strict: true
682
- };
683
692
  var globTool = {
684
693
  name: "Glob",
685
694
  description: `Search for files matching a glob pattern within the available file system.
@@ -836,17 +845,17 @@ var taskCreateTool = {
836
845
  - Include enough detail in the description for another agent to understand and complete the task
837
846
  - After creating tasks, use TaskUpdate to set up dependencies (blocks/blockedBy) if needed
838
847
  - Check TaskList first to avoid creating duplicate tasks`,
839
- schema: z3.object({
840
- subject: z3.string().describe(
848
+ schema: z13.object({
849
+ subject: z13.string().describe(
841
850
  'A brief, actionable title in imperative form (e.g., "Fix authentication bug in login flow")'
842
851
  ),
843
- description: z3.string().describe(
852
+ description: z13.string().describe(
844
853
  "Detailed description of what needs to be done, including context and acceptance criteria"
845
854
  ),
846
- activeForm: z3.string().describe(
855
+ activeForm: z13.string().describe(
847
856
  'Present continuous form shown in spinner when task is in_progress (e.g., "Fixing authentication bug"). This is displayed to the user while you work on the task.'
848
857
  ),
849
- metadata: z3.record(z3.string(), z3.string()).describe("Arbitrary key-value pairs for tracking")
858
+ metadata: z13.record(z13.string(), z13.string()).describe("Arbitrary key-value pairs for tracking")
850
859
  })
851
860
  };
852
861
  function createTaskCreateHandler(stateManager) {
@@ -871,8 +880,8 @@ function createTaskCreateHandler(stateManager) {
871
880
  var taskGetTool = {
872
881
  name: "TaskGet",
873
882
  description: `Retrieve full task details including dependencies.`,
874
- schema: z3.object({
875
- taskId: z3.string().describe("The ID of the task to get")
883
+ schema: z13.object({
884
+ taskId: z13.string().describe("The ID of the task to get")
876
885
  })
877
886
  };
878
887
 
@@ -895,7 +904,7 @@ function createTaskGetHandler(stateManager) {
895
904
  var taskListTool = {
896
905
  name: "TaskList",
897
906
  description: `List all tasks with current state.`,
898
- schema: z3.object({})
907
+ schema: z13.object({})
899
908
  };
900
909
 
901
910
  // src/tools/task-list/handler.ts
@@ -911,11 +920,11 @@ function createTaskListHandler(stateManager) {
911
920
  var taskUpdateTool = {
912
921
  name: "TaskUpdate",
913
922
  description: `Update status, add blockers, modify details.`,
914
- schema: z3.object({
915
- taskId: z3.string().describe("The ID of the task to get"),
916
- status: z3.enum(["pending", "in_progress", "completed"]).describe("The status of the task"),
917
- addBlockedBy: z3.array(z3.string()).describe("The IDs of the tasks that are blocking this task"),
918
- addBlocks: z3.array(z3.string()).describe("The IDs of the tasks that this task is blocking")
923
+ schema: z13.object({
924
+ taskId: z13.string().describe("The ID of the task to get"),
925
+ status: z13.enum(["pending", "in_progress", "completed"]).describe("The status of the task"),
926
+ addBlockedBy: z13.array(z13.string()).describe("The IDs of the tasks that are blocking this task"),
927
+ addBlocks: z13.array(z13.string()).describe("The IDs of the tasks that this task is blocking")
919
928
  })
920
929
  };
921
930
 
@@ -983,13 +992,53 @@ Use this tool to:
983
992
  - Execute scripts and chain commands with pipes (|) or logical operators (&&, ||)
984
993
  - Inspect files and directories
985
994
  `,
986
- schema: z3.object({
987
- command: z3.string().describe(
995
+ schema: z13.object({
996
+ command: z13.string().describe(
988
997
  "The bash command to execute. Can include pipes (|), redirects (>, >>), logical operators (&&, ||), and shell features like command substitution $(...)."
989
998
  )
990
999
  }),
991
1000
  strict: true
992
1001
  };
1002
+ var askUserQuestionTool = {
1003
+ name: "AskUserQuestion",
1004
+ description: `Use this tool when you need to ask the user questions during execution. This allows you to:
1005
+
1006
+ 1. Gather user preferences or requirements
1007
+ 2. Clarify ambiguous instructions
1008
+ 3. Get decisions on implementation choices as you work
1009
+ 4. Offer choices to the user about what direction to take.
1010
+
1011
+ Usage notes:
1012
+
1013
+ * Users will always be able to select "Other" to provide custom text input
1014
+ * Use multiSelect: true to allow multiple answers to be selected for a question
1015
+ * If you recommend a specific option, make that the first option in the list and add "(Recommended)" at the end of the label
1016
+ `,
1017
+ schema: z13.object({
1018
+ questions: z13.array(
1019
+ z13.object({
1020
+ question: z13.string().describe("The full question text to display"),
1021
+ header: z13.string().describe("Short label for the question (max 12 characters)"),
1022
+ options: z13.array(
1023
+ z13.object({
1024
+ label: z13.string(),
1025
+ description: z13.string()
1026
+ })
1027
+ ).min(0).max(4).describe("Array of 0-4 choices, each with label and description"),
1028
+ multiSelect: z13.boolean().describe("If true, users can select multiple options")
1029
+ })
1030
+ )
1031
+ }),
1032
+ strict: true
1033
+ };
1034
+
1035
+ // src/tools/ask-user-question/handler.ts
1036
+ var createAskUserQuestionHandler = () => (args) => {
1037
+ return {
1038
+ toolResponse: "Question submitted",
1039
+ data: { questions: args.questions }
1040
+ };
1041
+ };
993
1042
 
994
1043
  // node_modules/uuid/dist/esm-node/stringify.js
995
1044
  var byteToHex = [];
@@ -1162,7 +1211,7 @@ async function invokeModel({
1162
1211
  const parentWorkflowId = info.workflowExecution.workflowId;
1163
1212
  const parentRunId = info.workflowExecution.runId;
1164
1213
  const handle = client.getHandle(parentWorkflowId, parentRunId);
1165
- const { tools } = await handle.query(getStateQuery);
1214
+ const { tools } = await handle.query(`get${agentName}State`);
1166
1215
  const messages = await thread.load();
1167
1216
  const response = await model.invoke(
1168
1217
  [...mapStoredMessagesToChatMessages(messages)],
@@ -1189,19 +1238,6 @@ async function invokeModel({
1189
1238
  }
1190
1239
  };
1191
1240
  }
1192
- var createAskUserQuestionHandler = () => async (args) => {
1193
- const messages = args.questions.map(
1194
- ({ question, header, options, multiSelect }) => new AIMessage({
1195
- content: question,
1196
- additional_kwargs: {
1197
- header,
1198
- options,
1199
- multiSelect
1200
- }
1201
- }).toDict()
1202
- );
1203
- return { toolResponse: "Question submitted", data: { chatMessages: messages } };
1204
- };
1205
1241
  function createGlobHandler(fs) {
1206
1242
  return async (_args) => {
1207
1243
  new Bash({ fs });
@@ -1371,6 +1407,6 @@ var toTree = async (fs, opts = {}) => {
1371
1407
  return base + subtree;
1372
1408
  };
1373
1409
 
1374
- export { AGENT_HANDLER_NAMES, ZeitlichPlugin, askUserQuestionTool, bashTool, createAgentStateManager, createAskUserQuestionHandler, createBashHandler, createBashToolDescription, createEditHandler, createGlobHandler, createSession, createSharedActivities, createSubagentTool, createTaskCreateHandler, createTaskGetHandler, createTaskListHandler, createTaskUpdateHandler, createThreadManager, createToolRouter, defineSubagent, defineTool, editTool, getStateQuery, globTool, grepTool, hasNoOtherToolCalls, invokeModel, isTerminalStatus, proxyDefaultThreadOps, readTool, taskCreateTool, taskGetTool, taskListTool, taskUpdateTool, toTree, withAutoAppend, writeTool };
1410
+ export { AGENT_HANDLER_NAMES, ZeitlichPlugin, askUserQuestionTool, bashTool, createAgentStateManager, createAskUserQuestionHandler, createBashHandler, createBashToolDescription, createEditHandler, createGlobHandler, createSession, createSharedActivities, createSubagentTool, createTaskCreateHandler, createTaskGetHandler, createTaskListHandler, createTaskUpdateHandler, createThreadManager, createToolRouter, defineSubagent, defineTool, editTool, globTool, grepTool, hasNoOtherToolCalls, invokeModel, isTerminalStatus, proxyDefaultThreadOps, readTool, taskCreateTool, taskGetTool, taskListTool, taskUpdateTool, toTree, withAutoAppend, writeTool };
1375
1411
  //# sourceMappingURL=index.js.map
1376
1412
  //# sourceMappingURL=index.js.map