@llmrtc/llmrtc-core 1.0.0 → 1.1.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/CHANGELOG.md +29 -0
- package/NOTICE +7 -0
- package/dist/hooks.d.ts +10 -6
- package/dist/hooks.js +3 -1
- package/dist/hooks.js.map +1 -1
- package/dist/logging-hooks.js +6 -1
- package/dist/logging-hooks.js.map +1 -1
- package/dist/orchestrator.d.ts +10 -7
- package/dist/orchestrator.js +142 -86
- package/dist/orchestrator.js.map +1 -1
- package/dist/playbook-engine.d.ts +6 -0
- package/dist/playbook-engine.js +8 -4
- package/dist/playbook-engine.js.map +1 -1
- package/dist/playbook-orchestrator.d.ts +22 -1
- package/dist/playbook-orchestrator.js +135 -28
- package/dist/playbook-orchestrator.js.map +1 -1
- package/dist/tool-executor.d.ts +0 -4
- package/dist/tool-executor.js +58 -43
- package/dist/tool-executor.js.map +1 -1
- package/dist/tools.d.ts +10 -2
- package/dist/tools.js +73 -26
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/package.json +13 -5
package/dist/tool-executor.js
CHANGED
|
@@ -70,6 +70,35 @@ export class ToolExecutor {
|
|
|
70
70
|
async executeSingle(call, context) {
|
|
71
71
|
const startTime = Date.now();
|
|
72
72
|
const fullContext = { ...context, callId: call.callId };
|
|
73
|
+
// Don't start work that is already cancelled
|
|
74
|
+
if (context.abortSignal?.aborted) {
|
|
75
|
+
const result = {
|
|
76
|
+
toolName: call.name,
|
|
77
|
+
callId: call.callId,
|
|
78
|
+
result: null,
|
|
79
|
+
durationMs: 0,
|
|
80
|
+
success: false,
|
|
81
|
+
error: 'Tool execution aborted',
|
|
82
|
+
};
|
|
83
|
+
this.options.onToolError?.(call.name, call.callId, new Error(result.error));
|
|
84
|
+
this.options.onToolEnd?.(result);
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
// Refuse calls whose arguments could not be parsed - running a tool
|
|
88
|
+
// with silently-empty arguments is worse than reporting the failure
|
|
89
|
+
if (call.parseError) {
|
|
90
|
+
const result = {
|
|
91
|
+
toolName: call.name,
|
|
92
|
+
callId: call.callId,
|
|
93
|
+
result: null,
|
|
94
|
+
durationMs: 0,
|
|
95
|
+
success: false,
|
|
96
|
+
error: `Malformed tool arguments: ${call.parseError}`,
|
|
97
|
+
};
|
|
98
|
+
this.options.onToolError?.(call.name, call.callId, new Error(result.error));
|
|
99
|
+
this.options.onToolEnd?.(result);
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
73
102
|
// Find the tool
|
|
74
103
|
const tool = this.registry.get(call.name);
|
|
75
104
|
if (!tool) {
|
|
@@ -137,32 +166,24 @@ export class ToolExecutor {
|
|
|
137
166
|
* Execute multiple tools in parallel with concurrency limit
|
|
138
167
|
*/
|
|
139
168
|
async executeParallel(calls, context) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
169
|
+
// Fixed-size worker pool. Results keep call order, and every in-flight
|
|
170
|
+
// execution settles before this returns, so the returned array never
|
|
171
|
+
// mutates after the caller receives it. On abort, remaining queued calls
|
|
172
|
+
// are not started.
|
|
173
|
+
const results = new Array(calls.length);
|
|
174
|
+
let nextIndex = 0;
|
|
175
|
+
const worker = async () => {
|
|
176
|
+
while (nextIndex < calls.length) {
|
|
177
|
+
if (context.abortSignal?.aborted) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const index = nextIndex++;
|
|
181
|
+
results[index] = await this.executeSingle(calls[index], context);
|
|
147
182
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
results.push(result);
|
|
153
|
-
const index = executing.indexOf(promise);
|
|
154
|
-
if (index > -1) {
|
|
155
|
-
executing.splice(index, 1);
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
executing.push(promise);
|
|
159
|
-
}
|
|
160
|
-
// Wait for at least one to complete
|
|
161
|
-
if (executing.length > 0) {
|
|
162
|
-
await Promise.race(executing);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
return results;
|
|
183
|
+
};
|
|
184
|
+
const workerCount = Math.min(this.options.maxConcurrency, calls.length);
|
|
185
|
+
await Promise.all(Array.from({ length: workerCount }, () => worker()));
|
|
186
|
+
return results.filter((r) => r !== undefined);
|
|
166
187
|
}
|
|
167
188
|
/**
|
|
168
189
|
* Execute a tool handler with timeout
|
|
@@ -172,22 +193,30 @@ export class ToolExecutor {
|
|
|
172
193
|
// Create abort controller for timeout
|
|
173
194
|
const timeoutController = new AbortController();
|
|
174
195
|
const timeoutId = setTimeout(() => timeoutController.abort(), timeoutMs);
|
|
175
|
-
//
|
|
196
|
+
// AbortSignal.any handles already-aborted inputs and removes its
|
|
197
|
+
// listeners when the combined signal is settled or collected, so a
|
|
198
|
+
// long-lived caller signal doesn't accumulate listeners per call.
|
|
176
199
|
const combinedSignal = context.abortSignal
|
|
177
|
-
?
|
|
200
|
+
? AbortSignal.any([context.abortSignal, timeoutController.signal])
|
|
178
201
|
: timeoutController.signal;
|
|
179
202
|
try {
|
|
180
203
|
const result = await Promise.race([
|
|
181
204
|
tool.handler(args, { ...context, abortSignal: combinedSignal }),
|
|
182
205
|
new Promise((_, reject) => {
|
|
183
|
-
|
|
206
|
+
const onAbort = () => {
|
|
184
207
|
if (timeoutController.signal.aborted) {
|
|
185
208
|
reject(new Error(`Tool execution timed out after ${timeoutMs}ms`));
|
|
186
209
|
}
|
|
187
210
|
else {
|
|
188
211
|
reject(new Error('Tool execution aborted'));
|
|
189
212
|
}
|
|
190
|
-
}
|
|
213
|
+
};
|
|
214
|
+
if (combinedSignal.aborted) {
|
|
215
|
+
onAbort();
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
combinedSignal.addEventListener('abort', onAbort, { once: true });
|
|
219
|
+
}
|
|
191
220
|
}),
|
|
192
221
|
]);
|
|
193
222
|
return result;
|
|
@@ -196,20 +225,6 @@ export class ToolExecutor {
|
|
|
196
225
|
clearTimeout(timeoutId);
|
|
197
226
|
}
|
|
198
227
|
}
|
|
199
|
-
/**
|
|
200
|
-
* Combine multiple abort signals into one
|
|
201
|
-
*/
|
|
202
|
-
combineAbortSignals(...signals) {
|
|
203
|
-
const controller = new AbortController();
|
|
204
|
-
for (const signal of signals) {
|
|
205
|
-
if (signal.aborted) {
|
|
206
|
-
controller.abort();
|
|
207
|
-
break;
|
|
208
|
-
}
|
|
209
|
-
signal.addEventListener('abort', () => controller.abort(), { once: true });
|
|
210
|
-
}
|
|
211
|
-
return controller.signal;
|
|
212
|
-
}
|
|
213
228
|
/**
|
|
214
229
|
* Group tool calls by their execution policy
|
|
215
230
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../src/tool-executor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../src/tool-executor.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -87,6 +87,12 @@ export interface ToolCallRequest {
|
|
|
87
87
|
name: string;
|
|
88
88
|
/** Parsed arguments from the LLM */
|
|
89
89
|
arguments: Record<string, unknown>;
|
|
90
|
+
/**
|
|
91
|
+
* Set when the provider could not parse the model's arguments as JSON
|
|
92
|
+
* (e.g. a stream truncated mid-arguments). Executors fail such calls
|
|
93
|
+
* instead of running the tool with empty arguments.
|
|
94
|
+
*/
|
|
95
|
+
parseError?: string;
|
|
90
96
|
}
|
|
91
97
|
/**
|
|
92
98
|
* Result of a tool execution
|
|
@@ -174,8 +180,10 @@ export declare class ToolRegistry {
|
|
|
174
180
|
*/
|
|
175
181
|
export declare function defineTool<TParams = Record<string, unknown>, TResult = unknown>(definition: ToolDefinition, handler: ToolHandler<TParams, TResult>): Tool<TParams, TResult>;
|
|
176
182
|
/**
|
|
177
|
-
* Validate that arguments match a tool's parameter schema
|
|
178
|
-
*
|
|
183
|
+
* Validate that arguments match a tool's parameter schema.
|
|
184
|
+
* Covers the JSONSchemaProperty subset this package can express: type,
|
|
185
|
+
* required, enum, nested properties, array items, numeric ranges, string
|
|
186
|
+
* length, and pattern.
|
|
179
187
|
*/
|
|
180
188
|
export declare function validateToolArguments(definition: ToolDefinition, args: Record<string, unknown>): {
|
|
181
189
|
valid: boolean;
|
package/dist/tools.js
CHANGED
|
@@ -111,47 +111,94 @@ export function defineTool(definition, handler) {
|
|
|
111
111
|
return { definition, handler };
|
|
112
112
|
}
|
|
113
113
|
/**
|
|
114
|
-
* Validate that arguments match a tool's parameter schema
|
|
115
|
-
*
|
|
114
|
+
* Validate that arguments match a tool's parameter schema.
|
|
115
|
+
* Covers the JSONSchemaProperty subset this package can express: type,
|
|
116
|
+
* required, enum, nested properties, array items, numeric ranges, string
|
|
117
|
+
* length, and pattern.
|
|
116
118
|
*/
|
|
117
119
|
export function validateToolArguments(definition, args) {
|
|
118
120
|
const errors = [];
|
|
119
|
-
|
|
120
|
-
|
|
121
|
+
validateObjectValue(args, definition.parameters.properties, definition.parameters.required ?? [], definition.parameters.additionalProperties, '', errors);
|
|
122
|
+
return { valid: errors.length === 0, errors };
|
|
123
|
+
}
|
|
124
|
+
function describePath(path, name) {
|
|
125
|
+
return path ? `${path}.${name}` : name;
|
|
126
|
+
}
|
|
127
|
+
function validateObjectValue(value, properties, required, additionalProperties, path, errors) {
|
|
121
128
|
for (const name of required) {
|
|
122
|
-
if (!(name in
|
|
123
|
-
errors.push(`Missing required parameter: ${name}`);
|
|
129
|
+
if (!(name in value)) {
|
|
130
|
+
errors.push(`Missing required parameter: ${describePath(path, name)}`);
|
|
124
131
|
}
|
|
125
132
|
}
|
|
126
|
-
|
|
127
|
-
for (const [name, value] of Object.entries(args)) {
|
|
133
|
+
for (const [name, propValue] of Object.entries(value)) {
|
|
128
134
|
const schema = properties[name];
|
|
129
135
|
if (!schema) {
|
|
130
|
-
if (
|
|
131
|
-
errors.push(`Unknown parameter: ${name}`);
|
|
136
|
+
if (additionalProperties === false) {
|
|
137
|
+
errors.push(`Unknown parameter: ${describePath(path, name)}`);
|
|
132
138
|
}
|
|
133
139
|
continue;
|
|
134
140
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
+
validateValue(propValue, schema, describePath(path, name), errors);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function validateValue(value, schema, path, errors) {
|
|
145
|
+
if (value === null) {
|
|
146
|
+
if (schema.type !== 'null') {
|
|
147
|
+
errors.push(`Parameter '${path}' cannot be null`);
|
|
141
148
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const valueType = Array.isArray(value) ? 'array' : typeof value;
|
|
152
|
+
if (schema.type === 'integer') {
|
|
153
|
+
if (typeof value !== 'number' || !Number.isInteger(value)) {
|
|
154
|
+
errors.push(`Parameter '${path}' must be an integer`);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else if (schema.type === 'null') {
|
|
159
|
+
errors.push(`Parameter '${path}' must be null`);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
else if (valueType !== schema.type) {
|
|
163
|
+
errors.push(`Parameter '${path}' must be of type ${schema.type}, got ${valueType}`);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (schema.enum && !schema.enum.includes(value)) {
|
|
167
|
+
errors.push(`Parameter '${path}' must be one of: ${schema.enum.join(', ')}`);
|
|
168
|
+
}
|
|
169
|
+
if (typeof value === 'number') {
|
|
170
|
+
if (schema.minimum !== undefined && value < schema.minimum) {
|
|
171
|
+
errors.push(`Parameter '${path}' must be >= ${schema.minimum}`);
|
|
172
|
+
}
|
|
173
|
+
if (schema.maximum !== undefined && value > schema.maximum) {
|
|
174
|
+
errors.push(`Parameter '${path}' must be <= ${schema.maximum}`);
|
|
146
175
|
}
|
|
147
|
-
|
|
148
|
-
|
|
176
|
+
}
|
|
177
|
+
if (typeof value === 'string') {
|
|
178
|
+
if (schema.minLength !== undefined && value.length < schema.minLength) {
|
|
179
|
+
errors.push(`Parameter '${path}' must have length >= ${schema.minLength}`);
|
|
149
180
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
181
|
+
if (schema.maxLength !== undefined && value.length > schema.maxLength) {
|
|
182
|
+
errors.push(`Parameter '${path}' must have length <= ${schema.maxLength}`);
|
|
183
|
+
}
|
|
184
|
+
if (schema.pattern !== undefined) {
|
|
185
|
+
try {
|
|
186
|
+
if (!new RegExp(schema.pattern).test(value)) {
|
|
187
|
+
errors.push(`Parameter '${path}' must match pattern ${schema.pattern}`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
// Invalid pattern in the schema itself - don't fail the arguments
|
|
192
|
+
}
|
|
153
193
|
}
|
|
154
194
|
}
|
|
155
|
-
|
|
195
|
+
if (Array.isArray(value) && schema.items) {
|
|
196
|
+
value.forEach((item, index) => {
|
|
197
|
+
validateValue(item, schema.items, `${path}[${index}]`, errors);
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
if (valueType === 'object' && schema.properties) {
|
|
201
|
+
validateObjectValue(value, schema.properties, schema.required ?? [], undefined, path, errors);
|
|
202
|
+
}
|
|
156
203
|
}
|
|
157
204
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -90,6 +90,11 @@ export interface TTSResult {
|
|
|
90
90
|
export interface TTSProvider {
|
|
91
91
|
name: string;
|
|
92
92
|
init?(): Promise<void> | void;
|
|
93
|
+
/**
|
|
94
|
+
* Sample rate (Hz) of PCM audio produced by speakStream/speak with
|
|
95
|
+
* format 'pcm'. Consumers assume 24000 when not declared.
|
|
96
|
+
*/
|
|
97
|
+
pcmSampleRate?: number;
|
|
93
98
|
speak(text: string, config?: TTSConfig): Promise<TTSResult>;
|
|
94
99
|
speakStream?(text: string, config?: TTSConfig): AsyncIterable<Buffer>;
|
|
95
100
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@llmrtc/llmrtc-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Core contracts and orchestrators for @llmrtc/LLMRTC",
|
|
5
5
|
"homepage": "https://www.llmrtc.org",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
10
10
|
"exports": {
|
|
11
11
|
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
12
13
|
"import": "./dist/index.js",
|
|
13
|
-
"
|
|
14
|
-
}
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./package.json": "./package.json"
|
|
15
17
|
},
|
|
16
18
|
"repository": {
|
|
17
19
|
"type": "git",
|
|
@@ -28,7 +30,9 @@
|
|
|
28
30
|
"files": [
|
|
29
31
|
"dist",
|
|
30
32
|
"README.md",
|
|
31
|
-
"LICENSE"
|
|
33
|
+
"LICENSE",
|
|
34
|
+
"NOTICE",
|
|
35
|
+
"CHANGELOG.md"
|
|
32
36
|
],
|
|
33
37
|
"scripts": {
|
|
34
38
|
"build": "tsc -b",
|
|
@@ -36,5 +40,9 @@
|
|
|
36
40
|
"prepublishOnly": "npm run build"
|
|
37
41
|
},
|
|
38
42
|
"dependencies": {},
|
|
39
|
-
"devDependencies": {}
|
|
43
|
+
"devDependencies": {},
|
|
44
|
+
"sideEffects": false,
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=20"
|
|
47
|
+
}
|
|
40
48
|
}
|