@openrouter/agent 0.8.0 → 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.
- package/README.md +483 -5
- package/esm/index.d.ts +19 -4
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +9 -2
- package/esm/index.js.map +1 -1
- package/esm/inner-loop/call-model.d.ts.map +1 -1
- package/esm/inner-loop/call-model.js +40 -41
- package/esm/inner-loop/call-model.js.map +1 -1
- package/esm/inner-loop/resume-tool-results.d.ts +128 -0
- package/esm/inner-loop/resume-tool-results.d.ts.map +1 -0
- package/esm/inner-loop/resume-tool-results.js +244 -0
- package/esm/inner-loop/resume-tool-results.js.map +1 -0
- package/esm/lib/agent-tool.d.ts +92 -0
- package/esm/lib/agent-tool.d.ts.map +1 -0
- package/esm/lib/agent-tool.js +211 -0
- package/esm/lib/agent-tool.js.map +1 -0
- package/esm/lib/async-params.d.ts +82 -0
- package/esm/lib/async-params.d.ts.map +1 -1
- package/esm/lib/async-params.js +5 -0
- package/esm/lib/async-params.js.map +1 -1
- package/esm/lib/async-tool-registry.d.ts +134 -0
- package/esm/lib/async-tool-registry.d.ts.map +1 -0
- package/esm/lib/async-tool-registry.js +352 -0
- package/esm/lib/async-tool-registry.js.map +1 -0
- package/esm/lib/async-tools.d.ts +23 -0
- package/esm/lib/async-tools.d.ts.map +1 -0
- package/esm/lib/async-tools.js +19 -0
- package/esm/lib/async-tools.js.map +1 -0
- package/esm/lib/conversation-state.d.ts +1 -0
- package/esm/lib/conversation-state.d.ts.map +1 -1
- package/esm/lib/conversation-state.js +8 -0
- package/esm/lib/conversation-state.js.map +1 -1
- package/esm/lib/doom-loop.d.ts +533 -0
- package/esm/lib/doom-loop.d.ts.map +1 -0
- package/esm/lib/doom-loop.js +1221 -0
- package/esm/lib/doom-loop.js.map +1 -0
- package/esm/lib/hooks-schemas.d.ts +33 -0
- package/esm/lib/hooks-schemas.d.ts.map +1 -1
- package/esm/lib/hooks-schemas.js +54 -0
- package/esm/lib/hooks-schemas.js.map +1 -1
- package/esm/lib/hooks-types.d.ts +6 -2
- package/esm/lib/hooks-types.d.ts.map +1 -1
- package/esm/lib/hooks-types.js.map +1 -1
- package/esm/lib/model-result.d.ts +646 -10
- package/esm/lib/model-result.d.ts.map +1 -1
- package/esm/lib/model-result.js +2749 -153
- package/esm/lib/model-result.js.map +1 -1
- package/esm/lib/reusable-stream.d.ts +9 -0
- package/esm/lib/reusable-stream.d.ts.map +1 -1
- package/esm/lib/reusable-stream.js +17 -0
- package/esm/lib/reusable-stream.js.map +1 -1
- package/esm/lib/stream-transformers.d.ts +20 -0
- package/esm/lib/stream-transformers.d.ts.map +1 -1
- package/esm/lib/stream-transformers.js +45 -0
- package/esm/lib/stream-transformers.js.map +1 -1
- package/esm/lib/tool-check.d.ts +76 -0
- package/esm/lib/tool-check.d.ts.map +1 -0
- package/esm/lib/tool-check.js +241 -0
- package/esm/lib/tool-check.js.map +1 -0
- package/esm/lib/tool-concurrency.d.ts +42 -0
- package/esm/lib/tool-concurrency.d.ts.map +1 -0
- package/esm/lib/tool-concurrency.js +80 -0
- package/esm/lib/tool-concurrency.js.map +1 -0
- package/esm/lib/tool-context.d.ts +45 -1
- package/esm/lib/tool-context.d.ts.map +1 -1
- package/esm/lib/tool-context.js +60 -1
- package/esm/lib/tool-context.js.map +1 -1
- package/esm/lib/tool-executor.d.ts +52 -9
- package/esm/lib/tool-executor.d.ts.map +1 -1
- package/esm/lib/tool-executor.js +253 -21
- package/esm/lib/tool-executor.js.map +1 -1
- package/esm/lib/tool-orchestrator.d.ts.map +1 -1
- package/esm/lib/tool-orchestrator.js +87 -50
- package/esm/lib/tool-orchestrator.js.map +1 -1
- package/esm/lib/tool-task.d.ts +157 -0
- package/esm/lib/tool-task.d.ts.map +1 -0
- package/esm/lib/tool-task.js +206 -0
- package/esm/lib/tool-task.js.map +1 -0
- package/esm/lib/tool-types.d.ts +473 -14
- package/esm/lib/tool-types.d.ts.map +1 -1
- package/esm/lib/tool-types.js +59 -10
- package/esm/lib/tool-types.js.map +1 -1
- package/esm/lib/tool.d.ts +184 -2
- package/esm/lib/tool.d.ts.map +1 -1
- package/esm/lib/tool.js +193 -3
- package/esm/lib/tool.js.map +1 -1
- package/package.json +30 -2
package/esm/lib/tool.js
CHANGED
|
@@ -1,10 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { agentToolBuilder } from './agent-tool.js';
|
|
2
|
+
import { TASK_TOOL_NAME } from './tool-check.js';
|
|
3
|
+
import { isClientTool, SHARED_CONTEXT_KEY, ToolType } from './tool-types.js';
|
|
2
4
|
// Implementation
|
|
3
5
|
export function tool(config) {
|
|
4
6
|
// 'shared' is reserved for shared context — forbid it as a tool name
|
|
5
7
|
if (config.name === SHARED_CONTEXT_KEY) {
|
|
6
8
|
throw new Error(`Tool name "${SHARED_CONTEXT_KEY}" is reserved for shared context. Choose a different name.`);
|
|
7
9
|
}
|
|
10
|
+
// 'task' is reserved for the universal task-interaction tool the engine
|
|
11
|
+
// registers alongside long-running tools.
|
|
12
|
+
if (config.name === TASK_TOOL_NAME) {
|
|
13
|
+
throw new Error(`Tool name "${TASK_TOOL_NAME}" is reserved for the built-in task-interaction tool. Choose a different name.`);
|
|
14
|
+
}
|
|
15
|
+
// Unified run tool (new kind). Checked before the legacy branches so a
|
|
16
|
+
// config carrying `run` never routes through execute-keyed logic —
|
|
17
|
+
// but AFTER the name guard, keeping every released path on its exact
|
|
18
|
+
// current control flow.
|
|
19
|
+
if ('run' in config && typeof config.run === 'function') {
|
|
20
|
+
return buildUnifiedTool(config);
|
|
21
|
+
}
|
|
8
22
|
// Check for HITL tool (has onToolCalled hook)
|
|
9
23
|
if ('onToolCalled' in config && typeof config.onToolCalled === 'function') {
|
|
10
24
|
// outputSchema is required at the type level for HITL configs, but
|
|
@@ -33,6 +47,18 @@ export function tool(config) {
|
|
|
33
47
|
if (config.requireApproval !== undefined) {
|
|
34
48
|
fn.requireApproval = config.requireApproval;
|
|
35
49
|
}
|
|
50
|
+
if (config.loopKey !== undefined) {
|
|
51
|
+
fn.loopKey = config.loopKey;
|
|
52
|
+
}
|
|
53
|
+
if (config.timeoutMs !== undefined) {
|
|
54
|
+
fn.timeoutMs = config.timeoutMs;
|
|
55
|
+
}
|
|
56
|
+
if (config.maxConcurrency !== undefined) {
|
|
57
|
+
fn.maxConcurrency = config.maxConcurrency;
|
|
58
|
+
}
|
|
59
|
+
if (config.strict !== undefined) {
|
|
60
|
+
fn.strict = config.strict;
|
|
61
|
+
}
|
|
36
62
|
if (config.onResponseReceived !== undefined) {
|
|
37
63
|
fn.onResponseReceived = config.onResponseReceived;
|
|
38
64
|
}
|
|
@@ -64,6 +90,18 @@ export function tool(config) {
|
|
|
64
90
|
if (config.requireApproval !== undefined) {
|
|
65
91
|
fn.requireApproval = config.requireApproval;
|
|
66
92
|
}
|
|
93
|
+
if (config.loopKey !== undefined) {
|
|
94
|
+
fn.loopKey = config.loopKey;
|
|
95
|
+
}
|
|
96
|
+
if (config.timeoutMs !== undefined) {
|
|
97
|
+
fn.timeoutMs = config.timeoutMs;
|
|
98
|
+
}
|
|
99
|
+
if (config.maxConcurrency !== undefined) {
|
|
100
|
+
fn.maxConcurrency = config.maxConcurrency;
|
|
101
|
+
}
|
|
102
|
+
if (config.strict !== undefined) {
|
|
103
|
+
fn.strict = config.strict;
|
|
104
|
+
}
|
|
67
105
|
return {
|
|
68
106
|
type: ToolType.Function,
|
|
69
107
|
function: fn,
|
|
@@ -92,9 +130,21 @@ export function tool(config) {
|
|
|
92
130
|
if (config.requireApproval !== undefined) {
|
|
93
131
|
fn.requireApproval = config.requireApproval;
|
|
94
132
|
}
|
|
133
|
+
if (config.loopKey !== undefined) {
|
|
134
|
+
fn.loopKey = config.loopKey;
|
|
135
|
+
}
|
|
136
|
+
if (config.timeoutMs !== undefined) {
|
|
137
|
+
fn.timeoutMs = config.timeoutMs;
|
|
138
|
+
}
|
|
139
|
+
if (config.maxConcurrency !== undefined) {
|
|
140
|
+
fn.maxConcurrency = config.maxConcurrency;
|
|
141
|
+
}
|
|
95
142
|
if ('toModelOutput' in config && config.toModelOutput !== undefined) {
|
|
96
143
|
fn.toModelOutput = config.toModelOutput;
|
|
97
144
|
}
|
|
145
|
+
if (config.strict !== undefined) {
|
|
146
|
+
fn.strict = config.strict;
|
|
147
|
+
}
|
|
98
148
|
return {
|
|
99
149
|
type: ToolType.Function,
|
|
100
150
|
function: fn,
|
|
@@ -120,6 +170,18 @@ export function tool(config) {
|
|
|
120
170
|
...(config.requireApproval !== undefined && {
|
|
121
171
|
requireApproval: config.requireApproval,
|
|
122
172
|
}),
|
|
173
|
+
...(config.loopKey !== undefined && {
|
|
174
|
+
loopKey: config.loopKey,
|
|
175
|
+
}),
|
|
176
|
+
...(config.timeoutMs !== undefined && {
|
|
177
|
+
timeoutMs: config.timeoutMs,
|
|
178
|
+
}),
|
|
179
|
+
...(config.maxConcurrency !== undefined && {
|
|
180
|
+
maxConcurrency: config.maxConcurrency,
|
|
181
|
+
}),
|
|
182
|
+
...(config.strict !== undefined && {
|
|
183
|
+
strict: config.strict,
|
|
184
|
+
}),
|
|
123
185
|
...('toModelOutput' in config &&
|
|
124
186
|
config.toModelOutput !== undefined && {
|
|
125
187
|
toModelOutput: config.toModelOutput,
|
|
@@ -130,6 +192,122 @@ export function tool(config) {
|
|
|
130
192
|
function: functionObj,
|
|
131
193
|
};
|
|
132
194
|
}
|
|
195
|
+
/** Copy shared config fields onto a function object when present. */
|
|
196
|
+
function assignCommonToolFields(fn, config) {
|
|
197
|
+
const fields = [
|
|
198
|
+
'description',
|
|
199
|
+
'strict',
|
|
200
|
+
'contextSchema',
|
|
201
|
+
'nextTurnParams',
|
|
202
|
+
'requireApproval',
|
|
203
|
+
'loopKey',
|
|
204
|
+
'timeoutMs',
|
|
205
|
+
'maxConcurrency',
|
|
206
|
+
'toModelOutput',
|
|
207
|
+
'eventSchema',
|
|
208
|
+
'ack',
|
|
209
|
+
'graceMs',
|
|
210
|
+
'pollAfterMs',
|
|
211
|
+
'check',
|
|
212
|
+
'logLimits',
|
|
213
|
+
];
|
|
214
|
+
for (const field of fields) {
|
|
215
|
+
if (config[field] !== undefined) {
|
|
216
|
+
fn[field] = config[field];
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Bind one deferred completion method: resolve the entry shape, prepend the
|
|
222
|
+
* tool itself to any `run` tools, and dispatch through `resumeToolResults`.
|
|
223
|
+
* The resume module is imported lazily to avoid a static
|
|
224
|
+
* tool.ts → call-model.ts → model-result.ts import cycle.
|
|
225
|
+
*/
|
|
226
|
+
function bindDeferredCompletion(toolValue, toEntry) {
|
|
227
|
+
return async (client, request, options) => {
|
|
228
|
+
const { resumeToolResults } = await import('../inner-loop/resume-tool-results.js');
|
|
229
|
+
const run = request.run;
|
|
230
|
+
return resumeToolResults(client, {
|
|
231
|
+
state: request.state,
|
|
232
|
+
tools: [
|
|
233
|
+
toolValue,
|
|
234
|
+
],
|
|
235
|
+
// Ownership guard: a taskId handed to an external system must not
|
|
236
|
+
// settle a DIFFERENT tool's task through this tool's methods.
|
|
237
|
+
...(isClientTool(toolValue) && {
|
|
238
|
+
expectToolName: toolValue.function.name,
|
|
239
|
+
}),
|
|
240
|
+
results: [
|
|
241
|
+
{
|
|
242
|
+
taskId: request.taskId,
|
|
243
|
+
...toEntry(request),
|
|
244
|
+
},
|
|
245
|
+
],
|
|
246
|
+
...(request.ifSettled !== undefined && {
|
|
247
|
+
ifSettled: request.ifSettled,
|
|
248
|
+
}),
|
|
249
|
+
...(run !== undefined && {
|
|
250
|
+
run: {
|
|
251
|
+
...run,
|
|
252
|
+
tools: [
|
|
253
|
+
toolValue,
|
|
254
|
+
...(run.tools ?? []).filter((t) => t !== toolValue),
|
|
255
|
+
],
|
|
256
|
+
},
|
|
257
|
+
}),
|
|
258
|
+
}, options);
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Build a unified `run` tool from a config. Deferred tools additionally get
|
|
263
|
+
* the typed `.resolve()/.fail()/.cancel()` completion methods.
|
|
264
|
+
*/
|
|
265
|
+
function buildUnifiedTool(config) {
|
|
266
|
+
const lifecycle = ('lifecycle' in config ? config.lifecycle : undefined) ?? 'sync';
|
|
267
|
+
// Long-running lifecycles require an outputSchema: the result settles
|
|
268
|
+
// after the round (possibly in another process) and must be validatable
|
|
269
|
+
// without the run's return-type inference. Type level enforces this too;
|
|
270
|
+
// JavaScript callers can bypass types.
|
|
271
|
+
if (lifecycle !== 'sync' && config.outputSchema === undefined) {
|
|
272
|
+
throw new Error(`Tool "${config.name}" (lifecycle: '${lifecycle}') must declare an outputSchema. Long-running results are validated when they settle — possibly long after the round that started them.`);
|
|
273
|
+
}
|
|
274
|
+
const fn = {
|
|
275
|
+
lifecycle,
|
|
276
|
+
name: config.name,
|
|
277
|
+
inputSchema: config.inputSchema,
|
|
278
|
+
run: config.run,
|
|
279
|
+
};
|
|
280
|
+
if (config.outputSchema !== undefined) {
|
|
281
|
+
fn['outputSchema'] = config.outputSchema;
|
|
282
|
+
}
|
|
283
|
+
assignCommonToolFields(fn, config);
|
|
284
|
+
const toolValue = {
|
|
285
|
+
type: ToolType.Function,
|
|
286
|
+
function: fn,
|
|
287
|
+
};
|
|
288
|
+
if (lifecycle !== 'deferred') {
|
|
289
|
+
return toolValue;
|
|
290
|
+
}
|
|
291
|
+
return Object.assign(toolValue, {
|
|
292
|
+
resolve: bindDeferredCompletion(toolValue, (request) => ({
|
|
293
|
+
output: request['output'],
|
|
294
|
+
})),
|
|
295
|
+
fail: bindDeferredCompletion(toolValue, (request) => ({
|
|
296
|
+
error: request['error'] instanceof Error
|
|
297
|
+
? request['error'].message
|
|
298
|
+
: String(request['error'] ?? 'Task failed'),
|
|
299
|
+
})),
|
|
300
|
+
cancel: bindDeferredCompletion(toolValue, (request) => ({
|
|
301
|
+
error: typeof request['reason'] === 'string' ? request['reason'] : 'Task cancelled',
|
|
302
|
+
status: 'cancelled',
|
|
303
|
+
})),
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
// Attach the agent builder as a namespaced property (expando properties on a
|
|
307
|
+
// function declaration merge into its type). `tool.agent()` keeps a
|
|
308
|
+
// dedicated builder because its config shape genuinely differs (an `agent`
|
|
309
|
+
// run-spec factory + `result` mapper instead of `run`).
|
|
310
|
+
tool.agent = agentToolBuilder;
|
|
133
311
|
//#endregion
|
|
134
312
|
//#region serverTool() Factory
|
|
135
313
|
/**
|
|
@@ -164,12 +342,24 @@ export function serverTool(config) {
|
|
|
164
342
|
* the tool's runtime behavior and wire shape are unchanged — only its type (and
|
|
165
343
|
* the runtime {@link isMcpTool} check) now identify it as MCP-originated. Used
|
|
166
344
|
* by `@openrouter/mcp` to mark wrapped remote tools.
|
|
345
|
+
*
|
|
346
|
+
* `options.loopKey` attaches a doom-loop identity to the wrapped tool —
|
|
347
|
+
* the only injection point for MCP tools, whose remote definitions cannot
|
|
348
|
+
* carry client-side functions. Like every other tool hook it is a computed
|
|
349
|
+
* function over the call's arguments (or `false` to exempt).
|
|
167
350
|
*/
|
|
168
|
-
export function markMcp(toolToMark) {
|
|
169
|
-
|
|
351
|
+
export function markMcp(toolToMark, options) {
|
|
352
|
+
const marked = {
|
|
170
353
|
...toolToMark,
|
|
171
354
|
_mcp: true,
|
|
172
355
|
};
|
|
356
|
+
if (options?.loopKey !== undefined && isClientTool(marked)) {
|
|
357
|
+
marked.function = {
|
|
358
|
+
...marked.function,
|
|
359
|
+
loopKey: options.loopKey,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
return marked;
|
|
173
363
|
}
|
|
174
364
|
//#endregion
|
|
175
365
|
//# sourceMappingURL=tool.js.map
|
package/esm/lib/tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/lib/tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/lib/tool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openrouter/agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"author": "OpenRouter",
|
|
5
5
|
"description": "Agent toolkit for building AI applications with OpenRouter — tool orchestration, streaming, multi-turn conversations, and format compatibility.",
|
|
6
6
|
"keywords": [
|
|
@@ -44,6 +44,10 @@
|
|
|
44
44
|
"types": "./esm/lib/stop-conditions.d.ts",
|
|
45
45
|
"default": "./esm/lib/stop-conditions.js"
|
|
46
46
|
},
|
|
47
|
+
"./doom-loop": {
|
|
48
|
+
"types": "./esm/lib/doom-loop.d.ts",
|
|
49
|
+
"default": "./esm/lib/doom-loop.js"
|
|
50
|
+
},
|
|
47
51
|
"./tool": {
|
|
48
52
|
"types": "./esm/lib/tool.d.ts",
|
|
49
53
|
"default": "./esm/lib/tool.js"
|
|
@@ -92,7 +96,31 @@
|
|
|
92
96
|
"types": "./esm/openrouter.d.ts",
|
|
93
97
|
"default": "./esm/openrouter.js"
|
|
94
98
|
},
|
|
95
|
-
"./package.json": "./package.json"
|
|
99
|
+
"./package.json": "./package.json",
|
|
100
|
+
"./tool-concurrency": {
|
|
101
|
+
"types": "./esm/lib/tool-concurrency.d.ts",
|
|
102
|
+
"default": "./esm/lib/tool-concurrency.js"
|
|
103
|
+
},
|
|
104
|
+
"./async-tool-registry": {
|
|
105
|
+
"types": "./esm/lib/async-tool-registry.d.ts",
|
|
106
|
+
"default": "./esm/lib/async-tool-registry.js"
|
|
107
|
+
},
|
|
108
|
+
"./resume-tool-results": {
|
|
109
|
+
"types": "./esm/inner-loop/resume-tool-results.d.ts",
|
|
110
|
+
"default": "./esm/inner-loop/resume-tool-results.js"
|
|
111
|
+
},
|
|
112
|
+
"./tool-task": {
|
|
113
|
+
"types": "./esm/lib/tool-task.d.ts",
|
|
114
|
+
"default": "./esm/lib/tool-task.js"
|
|
115
|
+
},
|
|
116
|
+
"./tool-check": {
|
|
117
|
+
"types": "./esm/lib/tool-check.d.ts",
|
|
118
|
+
"default": "./esm/lib/tool-check.js"
|
|
119
|
+
},
|
|
120
|
+
"./agent-tool": {
|
|
121
|
+
"types": "./esm/lib/agent-tool.d.ts",
|
|
122
|
+
"default": "./esm/lib/agent-tool.js"
|
|
123
|
+
}
|
|
96
124
|
},
|
|
97
125
|
"sideEffects": false,
|
|
98
126
|
"repository": {
|