@openrouter/agent 0.7.2 → 0.9.0

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.
Files changed (105) hide show
  1. package/README.md +728 -19
  2. package/esm/index.d.ts +24 -6
  3. package/esm/index.d.ts.map +1 -1
  4. package/esm/index.js +20 -5
  5. package/esm/index.js.map +1 -1
  6. package/esm/inner-loop/call-model.d.ts +8 -5
  7. package/esm/inner-loop/call-model.d.ts.map +1 -1
  8. package/esm/inner-loop/call-model.js +49 -40
  9. package/esm/inner-loop/call-model.js.map +1 -1
  10. package/esm/inner-loop/resume-tool-results.d.ts +128 -0
  11. package/esm/inner-loop/resume-tool-results.d.ts.map +1 -0
  12. package/esm/inner-loop/resume-tool-results.js +244 -0
  13. package/esm/inner-loop/resume-tool-results.js.map +1 -0
  14. package/esm/lib/agent-tool.d.ts +92 -0
  15. package/esm/lib/agent-tool.d.ts.map +1 -0
  16. package/esm/lib/agent-tool.js +211 -0
  17. package/esm/lib/agent-tool.js.map +1 -0
  18. package/esm/lib/async-params.d.ts +107 -6
  19. package/esm/lib/async-params.d.ts.map +1 -1
  20. package/esm/lib/async-params.js +8 -1
  21. package/esm/lib/async-params.js.map +1 -1
  22. package/esm/lib/async-tool-registry.d.ts +134 -0
  23. package/esm/lib/async-tool-registry.d.ts.map +1 -0
  24. package/esm/lib/async-tool-registry.js +352 -0
  25. package/esm/lib/async-tool-registry.js.map +1 -0
  26. package/esm/lib/async-tools.d.ts +23 -0
  27. package/esm/lib/async-tools.d.ts.map +1 -0
  28. package/esm/lib/async-tools.js +19 -0
  29. package/esm/lib/async-tools.js.map +1 -0
  30. package/esm/lib/conversation-state.d.ts +45 -1
  31. package/esm/lib/conversation-state.d.ts.map +1 -1
  32. package/esm/lib/conversation-state.js +119 -0
  33. package/esm/lib/conversation-state.js.map +1 -1
  34. package/esm/lib/doom-loop.d.ts +533 -0
  35. package/esm/lib/doom-loop.d.ts.map +1 -0
  36. package/esm/lib/doom-loop.js +1221 -0
  37. package/esm/lib/doom-loop.js.map +1 -0
  38. package/esm/lib/hooks-emit.d.ts +50 -0
  39. package/esm/lib/hooks-emit.d.ts.map +1 -0
  40. package/esm/lib/hooks-emit.js +307 -0
  41. package/esm/lib/hooks-emit.js.map +1 -0
  42. package/esm/lib/hooks-manager.d.ts +141 -0
  43. package/esm/lib/hooks-manager.d.ts.map +1 -0
  44. package/esm/lib/hooks-manager.js +282 -0
  45. package/esm/lib/hooks-manager.js.map +1 -0
  46. package/esm/lib/hooks-matchers.d.ts +12 -0
  47. package/esm/lib/hooks-matchers.d.ts.map +1 -0
  48. package/esm/lib/hooks-matchers.js +26 -0
  49. package/esm/lib/hooks-matchers.js.map +1 -0
  50. package/esm/lib/hooks-resolve.d.ts +17 -0
  51. package/esm/lib/hooks-resolve.d.ts.map +1 -0
  52. package/esm/lib/hooks-resolve.js +42 -0
  53. package/esm/lib/hooks-resolve.js.map +1 -0
  54. package/esm/lib/hooks-schemas.d.ts +221 -0
  55. package/esm/lib/hooks-schemas.d.ts.map +1 -0
  56. package/esm/lib/hooks-schemas.js +238 -0
  57. package/esm/lib/hooks-schemas.js.map +1 -0
  58. package/esm/lib/hooks-types.d.ts +178 -0
  59. package/esm/lib/hooks-types.d.ts.map +1 -0
  60. package/esm/lib/hooks-types.js +45 -0
  61. package/esm/lib/hooks-types.js.map +1 -0
  62. package/esm/lib/model-result.d.ts +848 -12
  63. package/esm/lib/model-result.d.ts.map +1 -1
  64. package/esm/lib/model-result.js +4055 -410
  65. package/esm/lib/model-result.js.map +1 -1
  66. package/esm/lib/reusable-stream.d.ts +15 -0
  67. package/esm/lib/reusable-stream.d.ts.map +1 -1
  68. package/esm/lib/reusable-stream.js +25 -0
  69. package/esm/lib/reusable-stream.js.map +1 -1
  70. package/esm/lib/stream-transformers.d.ts +20 -0
  71. package/esm/lib/stream-transformers.d.ts.map +1 -1
  72. package/esm/lib/stream-transformers.js +45 -0
  73. package/esm/lib/stream-transformers.js.map +1 -1
  74. package/esm/lib/tool-check.d.ts +76 -0
  75. package/esm/lib/tool-check.d.ts.map +1 -0
  76. package/esm/lib/tool-check.js +241 -0
  77. package/esm/lib/tool-check.js.map +1 -0
  78. package/esm/lib/tool-concurrency.d.ts +42 -0
  79. package/esm/lib/tool-concurrency.d.ts.map +1 -0
  80. package/esm/lib/tool-concurrency.js +80 -0
  81. package/esm/lib/tool-concurrency.js.map +1 -0
  82. package/esm/lib/tool-context.d.ts +45 -1
  83. package/esm/lib/tool-context.d.ts.map +1 -1
  84. package/esm/lib/tool-context.js +60 -1
  85. package/esm/lib/tool-context.js.map +1 -1
  86. package/esm/lib/tool-executor.d.ts +52 -9
  87. package/esm/lib/tool-executor.d.ts.map +1 -1
  88. package/esm/lib/tool-executor.js +263 -21
  89. package/esm/lib/tool-executor.js.map +1 -1
  90. package/esm/lib/tool-orchestrator.d.ts.map +1 -1
  91. package/esm/lib/tool-orchestrator.js +87 -47
  92. package/esm/lib/tool-orchestrator.js.map +1 -1
  93. package/esm/lib/tool-task.d.ts +157 -0
  94. package/esm/lib/tool-task.d.ts.map +1 -0
  95. package/esm/lib/tool-task.js +206 -0
  96. package/esm/lib/tool-task.js.map +1 -0
  97. package/esm/lib/tool-types.d.ts +609 -58
  98. package/esm/lib/tool-types.d.ts.map +1 -1
  99. package/esm/lib/tool-types.js +72 -10
  100. package/esm/lib/tool-types.js.map +1 -1
  101. package/esm/lib/tool.d.ts +217 -25
  102. package/esm/lib/tool.d.ts.map +1 -1
  103. package/esm/lib/tool.js +210 -1
  104. package/esm/lib/tool.js.map +1 -1
  105. package/package.json +35 -3
@@ -30,6 +30,38 @@ export declare class ToolContextStore {
30
30
  mergeToolContext(toolName: string, partial: Record<string, unknown>): void;
31
31
  private notifyListeners;
32
32
  }
33
+ /**
34
+ * Per-execution extras threaded into the ToolExecuteContext: the composed
35
+ * abort signal for this call, the call id, the conversation id, and (for
36
+ * unified `run` tools) the async-task affordances.
37
+ */
38
+ export interface ToolExecutionExtras {
39
+ signal?: AbortSignal;
40
+ callId?: string;
41
+ conversationId?: string;
42
+ /** The parent run's client — agent tools use it to start child runs. */
43
+ client?: unknown;
44
+ /**
45
+ * Unified-run affordances, wired by the engine per call:
46
+ * - `defer` — create a DeferredHandle (deferred lifecycle only)
47
+ * - `log` — append a task log entry (same pipeline as a yield)
48
+ * - `onMessage` — register the steering-inbox handler
49
+ * - `taskId` — the task id once assigned
50
+ */
51
+ runExtras?: {
52
+ defer?: (taskId: string, options?: Record<string, unknown>) => unknown;
53
+ log?: (entry: unknown) => void;
54
+ onMessage?: (handler: (message: unknown) => void) => void;
55
+ taskId?: string;
56
+ /**
57
+ * Transcript-source slot (agent tools attach their live transcript
58
+ * here). Deliberately NOT named `task`: `TurnContext.task` is typed
59
+ * `ToolTaskHandle` (check calls only) and must not be shadowed by a
60
+ * transcript-only object in run bodies.
61
+ */
62
+ taskTranscript?: unknown;
63
+ };
64
+ }
33
65
  /**
34
66
  * Build a flat ToolExecuteContext for a specific tool.
35
67
  * Returns a merged object with TurnContext fields, a `local` getter
@@ -43,9 +75,21 @@ export declare class ToolContextStore {
43
75
  * @param toolName - The tool's name
44
76
  * @param schema - The tool's contextSchema (for validation)
45
77
  * @param sharedSchema - The shared contextSchema (for validation)
78
+ * @param extras - Per-execution extras (abort signal, call id, conversation id)
46
79
  * @returns A flat ToolExecuteContext
47
80
  */
48
- export declare function buildToolExecuteContext<TName extends string, TContext extends Record<string, unknown>, TShared extends Record<string, unknown> = Record<string, unknown>>(turnContext: TurnContext, store: ToolContextStore | undefined, toolName: TName, schema: $ZodObject<$ZodShape> | undefined, sharedSchema?: $ZodObject<$ZodShape> | undefined): ToolExecuteContext<TName, TContext, TShared>;
81
+ export declare function buildToolExecuteContext<TName extends string, TContext extends Record<string, unknown>, TShared extends Record<string, unknown> = Record<string, unknown>>(turnContext: TurnContext, store: ToolContextStore | undefined, toolName: TName, schema: $ZodObject<$ZodShape> | undefined, sharedSchema?: $ZodObject<$ZodShape> | undefined, extras?: ToolExecutionExtras): ToolExecuteContext<TName, TContext, TShared>;
82
+ /**
83
+ * Build a ToolRunContext for a unified `run` tool: the base execute context
84
+ * plus the async-task affordances (`defer`, `log`, `onMessage`, `taskId`,
85
+ * `client`). Attached onto the built object (not via spread) because
86
+ * `local`/`shared` are live getters a spread would flatten.
87
+ */
88
+ export declare function buildToolRunContext<TName extends string, TContext extends Record<string, unknown>, TShared extends Record<string, unknown> = Record<string, unknown>>(turnContext: TurnContext, store: ToolContextStore | undefined, toolName: TName, schema: $ZodObject<$ZodShape> | undefined, sharedSchema?: $ZodObject<$ZodShape> | undefined, extras?: ToolExecutionExtras): ToolExecuteContext<TName, TContext, TShared> & {
89
+ defer: (taskId: string, options?: Record<string, unknown>) => unknown;
90
+ log: (entry: unknown) => void;
91
+ onMessage: (handler: (message: unknown) => void) => void;
92
+ };
49
93
  /**
50
94
  * Resolve a context input (static value, sync function, or async function) to a plain object.
51
95
  *
@@ -1 +1 @@
1
- {"version":3,"file":"tool-context.d.ts","sourceRoot":"","sources":["../../src/lib/tool-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKvE;;;GAGG;AACH,KAAK,qBAAqB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC;AAEzF;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IACtE,CAAC,GACD,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,CAAC,CAAC,GAC1B,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAMxC;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAA0C;IACvD,OAAO,CAAC,SAAS,CAAyC;gBAE9C,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IASvE,qEAAqE;IACrE,SAAS,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAOtD,8DAA8D;IAC9D,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAUtD,wDAAwD;IACxD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAUzD,2DAA2D;IAC3D,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAOvE,+EAA+E;IAC/E,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAS1E,OAAO,CAAC,eAAe;CAWxB;AAiCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAEjE,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,gBAAgB,GAAG,SAAS,EACnC,QAAQ,EAAE,KAAK,EACf,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS,EACzC,YAAY,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS,GAC/C,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CA8C9C;AAMD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpF,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,EACzC,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,CAAC,CAAC,CAUZ;AAMD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS,GACxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB"}
1
+ {"version":3,"file":"tool-context.d.ts","sourceRoot":"","sources":["../../src/lib/tool-context.ts"],"names":[],"mappings":"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"}
@@ -95,6 +95,21 @@ function validatePartialAgainstSchema(partial, schema) {
95
95
  }
96
96
  return filteredPartial;
97
97
  }
98
+ /*
99
+ * A never-aborting signal for contexts built without cancellation sources —
100
+ * keeps `ctx.signal` always present so tool bodies can pass it to fetch/etc.
101
+ * unconditionally.
102
+ *
103
+ * Deliberately a FACTORY, not one shared module-level signal. A tool body may
104
+ * `signal.addEventListener('abort', …)` and, since this signal never fires,
105
+ * nothing ever removes that listener. Sharing one object across every such call
106
+ * accumulated listeners on it for the lifetime of the process — unbounded in a
107
+ * long-lived server, and eventually a MaxListenersExceededWarning. A fresh
108
+ * signal per context is garbage-collected with the context that owns it.
109
+ */
110
+ function neverAbortSignal() {
111
+ return new AbortController().signal;
112
+ }
98
113
  /**
99
114
  * Build a flat ToolExecuteContext for a specific tool.
100
115
  * Returns a merged object with TurnContext fields, a `local` getter
@@ -108,9 +123,10 @@ function validatePartialAgainstSchema(partial, schema) {
108
123
  * @param toolName - The tool's name
109
124
  * @param schema - The tool's contextSchema (for validation)
110
125
  * @param sharedSchema - The shared contextSchema (for validation)
126
+ * @param extras - Per-execution extras (abort signal, call id, conversation id)
111
127
  * @returns A flat ToolExecuteContext
112
128
  */
113
- export function buildToolExecuteContext(turnContext, store, toolName, schema, sharedSchema) {
129
+ export function buildToolExecuteContext(turnContext, store, toolName, schema, sharedSchema, extras) {
114
130
  // Validate initial context eagerly (throws on bad data)
115
131
  if (store && schema) {
116
132
  extractToolContext(store, toolName, schema);
@@ -120,6 +136,13 @@ export function buildToolExecuteContext(turnContext, store, toolName, schema, sh
120
136
  }
121
137
  const ctx = {
122
138
  ...turnContext,
139
+ signal: extras?.signal ?? neverAbortSignal(),
140
+ ...(extras?.callId !== undefined && {
141
+ callId: extras.callId,
142
+ }),
143
+ ...(extras?.conversationId !== undefined && {
144
+ conversationId: extras.conversationId,
145
+ }),
123
146
  get local() {
124
147
  const data = store ? store.getToolContext(toolName) : {};
125
148
  return Object.freeze(data);
@@ -145,6 +168,42 @@ export function buildToolExecuteContext(turnContext, store, toolName, schema, sh
145
168
  };
146
169
  return ctx;
147
170
  }
171
+ /**
172
+ * Build a ToolRunContext for a unified `run` tool: the base execute context
173
+ * plus the async-task affordances (`defer`, `log`, `onMessage`, `taskId`,
174
+ * `client`). Attached onto the built object (not via spread) because
175
+ * `local`/`shared` are live getters a spread would flatten.
176
+ */
177
+ export function buildToolRunContext(turnContext, store, toolName, schema, sharedSchema, extras) {
178
+ const base = buildToolExecuteContext(turnContext, store, toolName, schema, sharedSchema, extras);
179
+ const runExtras = extras?.runExtras;
180
+ const ctx = Object.assign(base, {
181
+ defer: runExtras?.defer ??
182
+ (() => {
183
+ throw new Error(`Tool "${toolName}": ctx.defer() is only available on lifecycle: 'deferred' tools`);
184
+ }),
185
+ log: runExtras?.log ?? (() => undefined),
186
+ onMessage: runExtras?.onMessage ?? (() => undefined),
187
+ ...(runExtras?.taskTranscript !== undefined && {
188
+ taskTranscript: runExtras.taskTranscript,
189
+ }),
190
+ ...(extras?.client !== undefined && {
191
+ client: extras.client,
192
+ }),
193
+ });
194
+ // Live delegation: the engine's runExtras exposes taskId as a getter
195
+ // backed by the run binding, because the ToolTask (and its id) is only
196
+ // created after the call escapes the round — a static copy taken here
197
+ // would always be undefined.
198
+ if (runExtras && 'taskId' in runExtras) {
199
+ Object.defineProperty(ctx, 'taskId', {
200
+ get: () => runExtras.taskId,
201
+ enumerable: true,
202
+ configurable: true,
203
+ });
204
+ }
205
+ return ctx;
206
+ }
148
207
  //#endregion
149
208
  //#region resolveContext
150
209
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tool-context.js","sourceRoot":"","sources":["../../src/lib/tool-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-context.js","sourceRoot":"","sources":["../../src/lib/tool-context.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type * as models from '@openrouter/sdk/models';
2
2
  import * as z4 from 'zod/v4';
3
3
  import type { $ZodObject, $ZodShape, $ZodType } from 'zod/v4/core';
4
- import type { ToolContextStore } from './tool-context.js';
4
+ import type { ToolContextStore, ToolExecutionExtras } from './tool-context.js';
5
5
  import type { ClientTool, ParsedToolCall, Tool, ToolExecutionResult, TurnContext } from './tool-types.js';
6
6
  export declare const ZodError: z4.z.core.$constructor<z4.ZodError<unknown>, z4.z.core.$ZodIssue[]>;
7
7
  /**
@@ -25,8 +25,12 @@ export declare function convertZodToJsonSchema(zodSchema: $ZodType): Record<stri
25
25
  /**
26
26
  * Convert tools to OpenRouter API format. Server tools pass their SDK-shaped
27
27
  * config through untouched; client tools are packaged into the function-call
28
- * shape. Return type widens to the SDK's full request-tool union so any new
29
- * server-tool variant added upstream flows through automatically.
28
+ * shape — their wire definitions are NEVER augmented per tool (interacting
29
+ * with long-running tasks goes through the single universal `task` tool,
30
+ * appended by callModel when warranted, so the per-tool context cost stays
31
+ * constant no matter how many async tools are registered). Return type
32
+ * widens to the SDK's full request-tool union so any new server-tool
33
+ * variant added upstream flows through automatically.
30
34
  */
31
35
  export declare function convertToolsToAPIFormat(tools: readonly Tool[]): Array<models.ResponsesRequestToolUnion>;
32
36
  /**
@@ -48,14 +52,14 @@ export declare function parseToolCallArguments(argumentsString: string): unknown
48
52
  /**
49
53
  * Execute a regular (non-generator) tool
50
54
  */
51
- export declare function executeRegularTool(tool: Tool, toolCall: ParsedToolCall<Tool>, context: TurnContext, contextStore?: ToolContextStore, sharedSchema?: $ZodObject<$ZodShape>): Promise<ToolExecutionResult<Tool>>;
55
+ export declare function executeRegularTool(tool: Tool, toolCall: ParsedToolCall<Tool>, context: TurnContext, contextStore?: ToolContextStore, sharedSchema?: $ZodObject<$ZodShape>, extras?: ToolExecutionExtras): Promise<ToolExecutionResult<Tool>>;
52
56
  /**
53
57
  * Execute a generator tool and collect preliminary and final results
54
58
  * - Intermediate yields are validated against eventSchema (preliminary events)
55
59
  * - Last yield is validated against outputSchema (final result sent to model)
56
60
  * - Generator must emit at least one value
57
61
  */
58
- export declare function executeGeneratorTool(tool: Tool, toolCall: ParsedToolCall<Tool>, context: TurnContext, onPreliminaryResult?: (toolCallId: string, result: unknown) => void, contextStore?: ToolContextStore, sharedSchema?: $ZodObject<$ZodShape>): Promise<ToolExecutionResult<Tool>>;
62
+ export declare function executeGeneratorTool(tool: Tool, toolCall: ParsedToolCall<Tool>, context: TurnContext, onPreliminaryResult?: (toolCallId: string, result: unknown) => void, contextStore?: ToolContextStore, sharedSchema?: $ZodObject<$ZodShape>, extras?: ToolExecutionExtras): Promise<ToolExecutionResult<Tool>>;
59
63
  /**
60
64
  * Execute a HITL tool's `onToolCalled` hook.
61
65
  *
@@ -64,16 +68,55 @@ export declare function executeGeneratorTool(tool: Tool, toolCall: ParsedToolCal
64
68
  * - `null` if the hook returned `null` (pause — treat as manual tool)
65
69
  * - `ToolExecutionResult` with `error` set if the hook threw
66
70
  */
67
- export declare function executeHITLTool(tool: Tool, toolCall: ParsedToolCall<Tool>, context: TurnContext, contextStore?: ToolContextStore, sharedSchema?: $ZodObject<$ZodShape>): Promise<ToolExecutionResult<Tool> | null>;
71
+ export declare function executeHITLTool(tool: Tool, toolCall: ParsedToolCall<Tool>, context: TurnContext, contextStore?: ToolContextStore, sharedSchema?: $ZodObject<$ZodShape>, extras?: ToolExecutionExtras): Promise<ToolExecutionResult<Tool> | null>;
72
+ /**
73
+ * Tagged result for tools whose work escapes the synchronous round.
74
+ *
75
+ * - `'background'`: `run()` starts the tool's `execute` (input already
76
+ * validated, context built) and resolves with the OUTPUT-VALIDATED final
77
+ * value. The engine decides when to invoke it (under the background pool)
78
+ * and whether its settlement lands in-round (grace window) or later.
79
+ * - `'defer'`: the tool's `start` returned a durable task handle; the run
80
+ * should pause until the task is resolved externally.
81
+ */
82
+ export type AsyncToolInvocation = {
83
+ asyncMode: 'background';
84
+ run: () => Promise<unknown>;
85
+ ack?: string | Record<string, unknown> | undefined;
86
+ graceMs: number;
87
+ } | {
88
+ asyncMode: 'defer';
89
+ taskId: string;
90
+ ack?: string | Record<string, unknown> | undefined;
91
+ pollAfterMs?: number | undefined;
92
+ expiresAt?: number | undefined;
93
+ };
94
+ /** Type guard for {@link AsyncToolInvocation} in executeTool results. */
95
+ export declare function isAsyncToolInvocation(value: unknown): value is AsyncToolInvocation;
96
+ /**
97
+ * Prepare a unified tool invocation. Validates input eagerly; builds the
98
+ * ToolRunContext (defer/log/onMessage/client wired by the engine through
99
+ * `extras.runExtras`); then per lifecycle:
100
+ *
101
+ * - `'sync'`: runs to completion inline — a plain `ToolExecutionResult`,
102
+ * zero async overhead, behaviorally identical to `execute`.
103
+ * - `'background'` (and agent tools): returns a `'background'`
104
+ * {@link AsyncToolInvocation} thunk for the engine's grace-window race.
105
+ * - `'deferred'`: awaits the run — a plain value is the typed fast path; a
106
+ * `DeferredHandle` becomes a `'defer'` invocation.
107
+ */
108
+ export declare function prepareUnifiedInvocation(tool: Tool, toolCall: ParsedToolCall<Tool>, context: TurnContext, onPreliminaryResult?: (toolCallId: string, result: unknown) => void, contextStore?: ToolContextStore, sharedSchema?: $ZodObject<$ZodShape>, extras?: ToolExecutionExtras): Promise<ToolExecutionResult<Tool> | AsyncToolInvocation>;
68
109
  /**
69
110
  * Execute a tool call.
70
- * Automatically detects if it's a regular, generator, or HITL tool.
111
+ * Automatically detects if it's a regular, generator, HITL, or unified
112
+ * `run` tool.
71
113
  *
72
114
  * Returns `null` only for HITL tools whose `onToolCalled` returned `null`
73
- * (signaling a manual-style pause). All other tools always return a
115
+ * (signaling a manual-style pause). Unified background/deferred tools may
116
+ * return an {@link AsyncToolInvocation}. All other tools always return a
74
117
  * `ToolExecutionResult` (with `error` set on failure).
75
118
  */
76
- export declare function executeTool(tool: Tool, toolCall: ParsedToolCall<Tool>, context: TurnContext, onPreliminaryResult?: (toolCallId: string, result: unknown) => void, contextStore?: ToolContextStore, sharedSchema?: $ZodObject<$ZodShape>): Promise<ToolExecutionResult<Tool> | null>;
119
+ export declare function executeTool(tool: Tool, toolCall: ParsedToolCall<Tool>, context: TurnContext, onPreliminaryResult?: (toolCallId: string, result: unknown) => void, contextStore?: ToolContextStore, sharedSchema?: $ZodObject<$ZodShape>, extras?: ToolExecutionExtras): Promise<ToolExecutionResult<Tool> | AsyncToolInvocation | null>;
77
120
  /**
78
121
  * Find a client tool by name in the tools array. Server tools have no
79
122
  * client-side name to match against and are skipped.
@@ -1 +1 @@
1
- {"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/lib/tool-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/lib/tool-executor.ts"],"names":[],"mappings":"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"}