prefix-safe-json 0.0.1-alpha.3 → 0.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/LICENSE +4 -0
- package/README.md +72 -33
- package/package.json +8 -3
- package/dist/coordinator/coordinator.d.ts +0 -53
- package/dist/coordinator/coordinator.d.ts.map +0 -1
- package/dist/coordinator/coordinator.js +0 -448
- package/dist/coordinator/coordinator.js.map +0 -1
- package/dist/coordinator/diagnostic-codes.d.ts +0 -11
- package/dist/coordinator/diagnostic-codes.d.ts.map +0 -1
- package/dist/coordinator/diagnostic-codes.js +0 -22
- package/dist/coordinator/diagnostic-codes.js.map +0 -1
- package/dist/coordinator/protocol.d.ts +0 -61
- package/dist/coordinator/protocol.d.ts.map +0 -1
- package/dist/coordinator/protocol.js +0 -2
- package/dist/coordinator/protocol.js.map +0 -1
- package/dist/coordinator/types.d.ts +0 -104
- package/dist/coordinator/types.d.ts.map +0 -1
- package/dist/coordinator/types.js +0 -7
- package/dist/coordinator/types.js.map +0 -1
- package/dist/diagnostics/codes.d.ts +0 -24
- package/dist/diagnostics/codes.d.ts.map +0 -1
- package/dist/diagnostics/codes.js +0 -28
- package/dist/diagnostics/codes.js.map +0 -1
- package/dist/diagnostics/factory.d.ts +0 -8
- package/dist/diagnostics/factory.d.ts.map +0 -1
- package/dist/diagnostics/factory.js +0 -17
- package/dist/diagnostics/factory.js.map +0 -1
- package/dist/gate/decide.d.ts +0 -20
- package/dist/gate/decide.d.ts.map +0 -1
- package/dist/gate/decide.js +0 -127
- package/dist/gate/decide.js.map +0 -1
- package/dist/gate/gate.d.ts +0 -25
- package/dist/gate/gate.d.ts.map +0 -1
- package/dist/gate/gate.js +0 -80
- package/dist/gate/gate.js.map +0 -1
- package/dist/gate/types.d.ts +0 -122
- package/dist/gate/types.d.ts.map +0 -1
- package/dist/gate/types.js +0 -2
- package/dist/gate/types.js.map +0 -1
- package/dist/grammar/frame.d.ts +0 -58
- package/dist/grammar/frame.d.ts.map +0 -1
- package/dist/grammar/frame.js +0 -87
- package/dist/grammar/frame.js.map +0 -1
- package/dist/grammar/pointer.d.ts +0 -10
- package/dist/grammar/pointer.d.ts.map +0 -1
- package/dist/grammar/pointer.js +0 -20
- package/dist/grammar/pointer.js.map +0 -1
- package/dist/grammar/stack.d.ts +0 -73
- package/dist/grammar/stack.d.ts.map +0 -1
- package/dist/grammar/stack.js +0 -168
- package/dist/grammar/stack.js.map +0 -1
- package/dist/index.d.ts +0 -37
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -37
- package/dist/index.js.map +0 -1
- package/dist/lexer/scanner.d.ts +0 -108
- package/dist/lexer/scanner.d.ts.map +0 -1
- package/dist/lexer/scanner.js +0 -676
- package/dist/lexer/scanner.js.map +0 -1
- package/dist/lexer/states.d.ts +0 -35
- package/dist/lexer/states.d.ts.map +0 -1
- package/dist/lexer/states.js +0 -39
- package/dist/lexer/states.js.map +0 -1
- package/dist/lexer/tokens.d.ts +0 -22
- package/dist/lexer/tokens.d.ts.map +0 -1
- package/dist/lexer/tokens.js +0 -22
- package/dist/lexer/tokens.js.map +0 -1
- package/dist/limits.d.ts +0 -14
- package/dist/limits.d.ts.map +0 -1
- package/dist/limits.js +0 -23
- package/dist/limits.js.map +0 -1
- package/dist/parser.d.ts +0 -6
- package/dist/parser.d.ts.map +0 -1
- package/dist/parser.js +0 -949
- package/dist/parser.js.map +0 -1
- package/dist/providers/adapter.d.ts +0 -10
- package/dist/providers/adapter.d.ts.map +0 -1
- package/dist/providers/adapter.js +0 -2
- package/dist/providers/adapter.js.map +0 -1
- package/dist/providers/ai-sdk.d.ts +0 -54
- package/dist/providers/ai-sdk.d.ts.map +0 -1
- package/dist/providers/ai-sdk.js +0 -191
- package/dist/providers/ai-sdk.js.map +0 -1
- package/dist/providers/anthropic.d.ts +0 -45
- package/dist/providers/anthropic.d.ts.map +0 -1
- package/dist/providers/anthropic.js +0 -112
- package/dist/providers/anthropic.js.map +0 -1
- package/dist/providers/gemini.d.ts +0 -31
- package/dist/providers/gemini.d.ts.map +0 -1
- package/dist/providers/gemini.js +0 -94
- package/dist/providers/gemini.js.map +0 -1
- package/dist/providers/openai-compatible.d.ts +0 -33
- package/dist/providers/openai-compatible.d.ts.map +0 -1
- package/dist/providers/openai-compatible.js +0 -160
- package/dist/providers/openai-compatible.js.map +0 -1
- package/dist/providers/openai.d.ts +0 -48
- package/dist/providers/openai.d.ts.map +0 -1
- package/dist/providers/openai.js +0 -205
- package/dist/providers/openai.js.map +0 -1
- package/dist/providers/openrouter.d.ts +0 -35
- package/dist/providers/openrouter.d.ts.map +0 -1
- package/dist/providers/openrouter.js +0 -55
- package/dist/providers/openrouter.js.map +0 -1
- package/dist/semantic/builder.d.ts +0 -55
- package/dist/semantic/builder.d.ts.map +0 -1
- package/dist/semantic/builder.js +0 -140
- package/dist/semantic/builder.js.map +0 -1
- package/dist/semantic/events.d.ts +0 -2
- package/dist/semantic/events.d.ts.map +0 -1
- package/dist/semantic/events.js +0 -5
- package/dist/semantic/events.js.map +0 -1
- package/dist/semantic/snapshot.d.ts +0 -49
- package/dist/semantic/snapshot.d.ts.map +0 -1
- package/dist/semantic/snapshot.js +0 -228
- package/dist/semantic/snapshot.js.map +0 -1
- package/dist/types.d.ts +0 -156
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +0 -1
- package/dist/utf8/decoder.d.ts +0 -53
- package/dist/utf8/decoder.d.ts.map +0 -1
- package/dist/utf8/decoder.js +0 -323
- package/dist/utf8/decoder.js.map +0 -1
|
@@ -1,448 +0,0 @@
|
|
|
1
|
-
import { Ajv } from "ajv";
|
|
2
|
-
import { createParser } from "../parser.js";
|
|
3
|
-
import { DEFAULT_COORDINATOR_LIMITS } from "./types.js";
|
|
4
|
-
class CoordinatorCallState {
|
|
5
|
-
internalId;
|
|
6
|
-
provider;
|
|
7
|
-
toolCallId;
|
|
8
|
-
toolIndex;
|
|
9
|
-
name;
|
|
10
|
-
nameComplete = false;
|
|
11
|
-
argumentStreamClosed = false;
|
|
12
|
-
parser;
|
|
13
|
-
status = "collecting";
|
|
14
|
-
schemaValid;
|
|
15
|
-
constructor(internalId, provider, parser) {
|
|
16
|
-
this.internalId = internalId;
|
|
17
|
-
this.provider = provider;
|
|
18
|
-
this.parser = parser;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
export class DefaultToolCallStreamCoordinator {
|
|
22
|
-
limits;
|
|
23
|
-
parserOptions;
|
|
24
|
-
toolValidators;
|
|
25
|
-
calls = new Map();
|
|
26
|
-
sourceKeyToInternalId = new Map();
|
|
27
|
-
callCounter = 0;
|
|
28
|
-
eventQueue = [];
|
|
29
|
-
diagnostics = [];
|
|
30
|
-
eventsProcessed = 0;
|
|
31
|
-
globalSequence = 0;
|
|
32
|
-
isFinished = false;
|
|
33
|
-
/**
|
|
34
|
-
* @param limits Coordinator-level limits (concurrent tool calls, tool name
|
|
35
|
-
* size, etc.) — distinct from `parserOptions`, which configures each
|
|
36
|
-
* underlying per-call IncrementalJsonParser (limits, repairs). Previously
|
|
37
|
-
* there was no way to pass the latter through at all; every parser the
|
|
38
|
-
* coordinator created was hardcoded to library defaults.
|
|
39
|
-
* @param toolSchemas Optional JSON Schema (draft-07) per tool name. When a
|
|
40
|
-
* call for a registered tool reaches outcome "complete", its
|
|
41
|
-
* `stableValue` is validated against the schema. Structural
|
|
42
|
-
* prefix-safety (no truncated/fabricated values) and schema validity
|
|
43
|
-
* are independent concerns — a value can be genuinely complete and
|
|
44
|
-
* still not match what the tool declared it needs (wrong type, missing
|
|
45
|
-
* required field the model never provided at all). Both must hold for
|
|
46
|
-
* `executable` to be true. Schemas are compiled eagerly here so a
|
|
47
|
-
* malformed schema fails fast at construction, not mid-stream.
|
|
48
|
-
*/
|
|
49
|
-
constructor(limits, parserOptions, toolSchemas) {
|
|
50
|
-
this.limits = { ...DEFAULT_COORDINATOR_LIMITS, ...limits };
|
|
51
|
-
this.parserOptions = parserOptions;
|
|
52
|
-
this.toolValidators = new Map();
|
|
53
|
-
if (toolSchemas) {
|
|
54
|
-
const ajv = new Ajv({ allErrors: true, strict: false });
|
|
55
|
-
for (const [toolName, schema] of Object.entries(toolSchemas)) {
|
|
56
|
-
this.toolValidators.set(toolName, ajv.compile(schema));
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
push(event) {
|
|
61
|
-
if (this.isFinished) {
|
|
62
|
-
this.addDiagnostic({
|
|
63
|
-
code: "E_EVENT_AFTER_STREAM_END",
|
|
64
|
-
severity: "error",
|
|
65
|
-
message: "Event pushed after stream end",
|
|
66
|
-
});
|
|
67
|
-
return { accepted: false };
|
|
68
|
-
}
|
|
69
|
-
if (this.eventsProcessed >= this.limits.maxNormalizedEvents) {
|
|
70
|
-
this.addDiagnostic({
|
|
71
|
-
code: "E_COORDINATOR_LIMIT_EVENTS",
|
|
72
|
-
severity: "fatal",
|
|
73
|
-
message: "Maximum normalized events exceeded",
|
|
74
|
-
});
|
|
75
|
-
return { accepted: false };
|
|
76
|
-
}
|
|
77
|
-
this.eventsProcessed++;
|
|
78
|
-
switch (event.type) {
|
|
79
|
-
case "tool_call_start":
|
|
80
|
-
this.handleStart(event);
|
|
81
|
-
break;
|
|
82
|
-
case "tool_call_identity":
|
|
83
|
-
this.handleIdentity(event);
|
|
84
|
-
break;
|
|
85
|
-
case "tool_call_name_delta":
|
|
86
|
-
this.handleNameDelta(event);
|
|
87
|
-
break;
|
|
88
|
-
case "tool_call_arguments_delta":
|
|
89
|
-
this.handleArgumentsDelta(event);
|
|
90
|
-
break;
|
|
91
|
-
case "tool_call_end":
|
|
92
|
-
this.handleCallEnd(event);
|
|
93
|
-
break;
|
|
94
|
-
case "provider_diagnostic":
|
|
95
|
-
this.handleProviderDiagnostic(event);
|
|
96
|
-
break;
|
|
97
|
-
case "provider_stream_end":
|
|
98
|
-
this.handleStreamEnd(event);
|
|
99
|
-
break;
|
|
100
|
-
}
|
|
101
|
-
return { accepted: true };
|
|
102
|
-
}
|
|
103
|
-
handleStart(event) {
|
|
104
|
-
const sourceKey = event.callRef.sourceKey;
|
|
105
|
-
const existingId = this.sourceKeyToInternalId.get(sourceKey);
|
|
106
|
-
if (existingId !== undefined) {
|
|
107
|
-
this.addDiagnostic({
|
|
108
|
-
code: "E_DUPLICATE_TOOL_CALL_START",
|
|
109
|
-
severity: "error",
|
|
110
|
-
internalId: existingId,
|
|
111
|
-
message: `Duplicate start for tool call sourceKey: ${sourceKey}`,
|
|
112
|
-
});
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
if (this.calls.size >= this.limits.maxToolCalls) {
|
|
116
|
-
this.addDiagnostic({
|
|
117
|
-
code: "E_COORDINATOR_LIMIT_CALLS",
|
|
118
|
-
severity: "error",
|
|
119
|
-
message: "Maximum tool calls exceeded",
|
|
120
|
-
});
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
const internalId = `call-${this.callCounter++}`;
|
|
124
|
-
this.sourceKeyToInternalId.set(sourceKey, internalId);
|
|
125
|
-
const parser = createParser(this.parserOptions);
|
|
126
|
-
const call = new CoordinatorCallState(internalId, event.provider, parser);
|
|
127
|
-
if (event.toolCallId !== undefined)
|
|
128
|
-
call.toolCallId = event.toolCallId;
|
|
129
|
-
if (event.toolIndex !== undefined)
|
|
130
|
-
call.toolIndex = event.toolIndex;
|
|
131
|
-
if (event.name !== undefined)
|
|
132
|
-
call.name = event.name;
|
|
133
|
-
this.calls.set(internalId, call);
|
|
134
|
-
this.eventQueue.push({
|
|
135
|
-
type: "tool_call_discovered",
|
|
136
|
-
sequence: this.globalSequence++,
|
|
137
|
-
internalId,
|
|
138
|
-
provider: event.provider,
|
|
139
|
-
});
|
|
140
|
-
if (event.toolCallId !== undefined || event.toolIndex !== undefined) {
|
|
141
|
-
this.eventQueue.push({
|
|
142
|
-
type: "tool_call_identity_updated",
|
|
143
|
-
sequence: this.globalSequence++,
|
|
144
|
-
internalId,
|
|
145
|
-
toolCallId: event.toolCallId,
|
|
146
|
-
toolIndex: event.toolIndex,
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
handleIdentity(event) {
|
|
151
|
-
const internalId = this.sourceKeyToInternalId.get(event.callRef.sourceKey);
|
|
152
|
-
if (!internalId)
|
|
153
|
-
return;
|
|
154
|
-
const call = this.getCall(internalId);
|
|
155
|
-
if (!call)
|
|
156
|
-
return;
|
|
157
|
-
let changed = false;
|
|
158
|
-
if (event.toolCallId !== undefined) {
|
|
159
|
-
if (call.toolCallId !== undefined && call.toolCallId !== event.toolCallId) {
|
|
160
|
-
this.addDiagnostic({
|
|
161
|
-
code: "E_PROVIDER_IDENTITY_CONFLICT",
|
|
162
|
-
severity: "error",
|
|
163
|
-
internalId: call.internalId,
|
|
164
|
-
message: `Conflicting ID: had ${call.toolCallId}, got ${event.toolCallId}`,
|
|
165
|
-
});
|
|
166
|
-
call.status = "invalid";
|
|
167
|
-
}
|
|
168
|
-
else if (call.toolCallId === undefined) {
|
|
169
|
-
call.toolCallId = event.toolCallId;
|
|
170
|
-
changed = true;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
if (event.toolIndex !== undefined) {
|
|
174
|
-
if (call.toolIndex !== undefined && call.toolIndex !== event.toolIndex) {
|
|
175
|
-
this.addDiagnostic({
|
|
176
|
-
code: "E_PROVIDER_INDEX_CONFLICT",
|
|
177
|
-
severity: "error",
|
|
178
|
-
internalId: call.internalId,
|
|
179
|
-
message: `Conflicting index: had ${call.toolIndex}, got ${event.toolIndex}`,
|
|
180
|
-
});
|
|
181
|
-
call.status = "invalid";
|
|
182
|
-
}
|
|
183
|
-
else if (call.toolIndex === undefined) {
|
|
184
|
-
call.toolIndex = event.toolIndex;
|
|
185
|
-
changed = true;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
if (changed) {
|
|
189
|
-
this.eventQueue.push({
|
|
190
|
-
type: "tool_call_identity_updated",
|
|
191
|
-
sequence: this.globalSequence++,
|
|
192
|
-
internalId: call.internalId,
|
|
193
|
-
toolCallId: call.toolCallId,
|
|
194
|
-
toolIndex: call.toolIndex,
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
handleNameDelta(event) {
|
|
199
|
-
const internalId = this.sourceKeyToInternalId.get(event.callRef.sourceKey);
|
|
200
|
-
if (!internalId)
|
|
201
|
-
return;
|
|
202
|
-
const call = this.getCall(internalId);
|
|
203
|
-
if (!call)
|
|
204
|
-
return;
|
|
205
|
-
if (call.status !== "collecting") {
|
|
206
|
-
this.addDiagnostic({
|
|
207
|
-
code: "E_NAME_DELTA_AFTER_END",
|
|
208
|
-
severity: "error",
|
|
209
|
-
internalId: call.internalId,
|
|
210
|
-
message: "Name delta after call ended",
|
|
211
|
-
});
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
call.name = (call.name ?? "") + event.delta;
|
|
215
|
-
if (call.name.length > this.limits.maxToolNameBytes) {
|
|
216
|
-
this.addDiagnostic({
|
|
217
|
-
code: "E_TOOL_NAME_LIMIT",
|
|
218
|
-
severity: "error",
|
|
219
|
-
internalId: call.internalId,
|
|
220
|
-
message: "Tool name exceeded maximum length",
|
|
221
|
-
});
|
|
222
|
-
call.status = "invalid";
|
|
223
|
-
}
|
|
224
|
-
this.eventQueue.push({
|
|
225
|
-
type: "tool_name_updated",
|
|
226
|
-
sequence: event.sequence,
|
|
227
|
-
internalId: call.internalId,
|
|
228
|
-
name: call.name,
|
|
229
|
-
complete: false,
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
handleArgumentsDelta(event) {
|
|
233
|
-
const internalId = this.sourceKeyToInternalId.get(event.callRef.sourceKey);
|
|
234
|
-
if (!internalId)
|
|
235
|
-
return;
|
|
236
|
-
const call = this.getCall(internalId);
|
|
237
|
-
if (!call)
|
|
238
|
-
return;
|
|
239
|
-
if (call.status !== "collecting") {
|
|
240
|
-
this.addDiagnostic({
|
|
241
|
-
code: "E_ARGUMENT_DELTA_AFTER_END",
|
|
242
|
-
severity: "error",
|
|
243
|
-
internalId: call.internalId,
|
|
244
|
-
message: "Argument delta after call ended",
|
|
245
|
-
});
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
call.parser.push(event.delta);
|
|
249
|
-
// Drain parser events and map them to coordinator events
|
|
250
|
-
const parserEvents = call.parser.drainEvents();
|
|
251
|
-
for (const pe of parserEvents) {
|
|
252
|
-
this.eventQueue.push({
|
|
253
|
-
type: "tool_argument_event",
|
|
254
|
-
sequence: this.globalSequence++,
|
|
255
|
-
internalId: call.internalId,
|
|
256
|
-
event: pe,
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
handleCallEnd(event) {
|
|
261
|
-
const internalId = this.sourceKeyToInternalId.get(event.callRef.sourceKey);
|
|
262
|
-
if (!internalId)
|
|
263
|
-
return;
|
|
264
|
-
const call = this.getCall(internalId);
|
|
265
|
-
if (!call)
|
|
266
|
-
return;
|
|
267
|
-
if (call.status !== "collecting")
|
|
268
|
-
return;
|
|
269
|
-
call.nameComplete = true;
|
|
270
|
-
call.argumentStreamClosed = true;
|
|
271
|
-
if (call.name !== undefined) {
|
|
272
|
-
this.eventQueue.push({
|
|
273
|
-
type: "tool_name_updated",
|
|
274
|
-
sequence: this.globalSequence++,
|
|
275
|
-
internalId: call.internalId,
|
|
276
|
-
name: call.name,
|
|
277
|
-
complete: true,
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
else {
|
|
281
|
-
this.addDiagnostic({
|
|
282
|
-
code: "E_TOOL_NAME_MISSING",
|
|
283
|
-
severity: "error",
|
|
284
|
-
internalId: call.internalId,
|
|
285
|
-
message: "Tool name missing at end",
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
finishCall(call, reason) {
|
|
290
|
-
if (call.status !== "collecting")
|
|
291
|
-
return;
|
|
292
|
-
// For individual call end, we pass reason to the internal parser
|
|
293
|
-
const res = call.parser.finish({ reason });
|
|
294
|
-
// Determine the mapped coordinator outcome
|
|
295
|
-
let outcome = "invalid";
|
|
296
|
-
if (res.outcome === "valid") {
|
|
297
|
-
outcome = "complete";
|
|
298
|
-
if (call.name === undefined || this.hasCallConflict(call)) {
|
|
299
|
-
outcome = "invalid";
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
else if (res.outcome === "truncated") {
|
|
303
|
-
outcome = "truncated";
|
|
304
|
-
}
|
|
305
|
-
else if (res.outcome === "salvaged") {
|
|
306
|
-
outcome = "salvaged";
|
|
307
|
-
}
|
|
308
|
-
if (reason === "cancelled")
|
|
309
|
-
outcome = "cancelled";
|
|
310
|
-
call.status = outcome;
|
|
311
|
-
// Drain remaining parser events
|
|
312
|
-
const parserEvents = call.parser.drainEvents();
|
|
313
|
-
for (const pe of parserEvents) {
|
|
314
|
-
this.eventQueue.push({
|
|
315
|
-
type: "tool_argument_event",
|
|
316
|
-
sequence: this.globalSequence++,
|
|
317
|
-
internalId: call.internalId,
|
|
318
|
-
event: pe,
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
// Schema validation is a separate concern from structural
|
|
322
|
-
// prefix-safety: only meaningful once the value is genuinely complete,
|
|
323
|
-
// and only for tools with a registered schema.
|
|
324
|
-
if (outcome === "complete" && call.name !== undefined) {
|
|
325
|
-
const validator = this.toolValidators.get(call.name);
|
|
326
|
-
if (validator) {
|
|
327
|
-
call.schemaValid = validator(res.stableValue) === true;
|
|
328
|
-
if (!call.schemaValid) {
|
|
329
|
-
const errors = (validator.errors ?? [])
|
|
330
|
-
.map((e) => `${e.instancePath || "<root>"} ${e.message ?? ""}`.trim())
|
|
331
|
-
.join("; ");
|
|
332
|
-
this.addDiagnostic({
|
|
333
|
-
code: "E_SCHEMA_VALIDATION_FAILED",
|
|
334
|
-
severity: "error",
|
|
335
|
-
internalId: call.internalId,
|
|
336
|
-
message: `Tool call arguments for "${call.name}" do not match its schema: ${errors || "unknown validation error"}`,
|
|
337
|
-
});
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
// Determine executable according to Executable Policy — structural
|
|
342
|
-
// completeness AND (if a schema is registered) schema validity.
|
|
343
|
-
const executable = outcome === "complete" && res.executable && call.schemaValid !== false;
|
|
344
|
-
this.eventQueue.push({
|
|
345
|
-
type: "tool_call_finished",
|
|
346
|
-
sequence: this.globalSequence++,
|
|
347
|
-
internalId: call.internalId,
|
|
348
|
-
outcome,
|
|
349
|
-
executable,
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
hasCallConflict(call) {
|
|
353
|
-
return this.diagnostics.some(d => d.internalId === call.internalId && (d.severity === "error" || d.severity === "fatal"));
|
|
354
|
-
}
|
|
355
|
-
handleProviderDiagnostic(event) {
|
|
356
|
-
const internalId = event.callRef ? this.sourceKeyToInternalId.get(event.callRef.sourceKey) : undefined;
|
|
357
|
-
this.addDiagnostic({
|
|
358
|
-
code: event.code,
|
|
359
|
-
severity: event.severity,
|
|
360
|
-
message: event.message,
|
|
361
|
-
internalId,
|
|
362
|
-
});
|
|
363
|
-
}
|
|
364
|
-
handleStreamEnd(event) {
|
|
365
|
-
this.isFinished = true;
|
|
366
|
-
// Close all open calls
|
|
367
|
-
for (const call of this.calls.values()) {
|
|
368
|
-
if (call.status === "collecting") {
|
|
369
|
-
if (!call.argumentStreamClosed) {
|
|
370
|
-
this.addDiagnostic({
|
|
371
|
-
code: "E_STREAM_ENDED_WITH_OPEN_CALL",
|
|
372
|
-
severity: "error",
|
|
373
|
-
internalId: call.internalId,
|
|
374
|
-
message: "Stream ended with open call",
|
|
375
|
-
});
|
|
376
|
-
}
|
|
377
|
-
this.finishCall(call, event.reason);
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
this.eventQueue.push({
|
|
381
|
-
type: "provider_stream_finished",
|
|
382
|
-
sequence: this.globalSequence++,
|
|
383
|
-
reason: event.reason,
|
|
384
|
-
});
|
|
385
|
-
}
|
|
386
|
-
getCall(internalId) {
|
|
387
|
-
const call = this.calls.get(internalId);
|
|
388
|
-
if (!call) {
|
|
389
|
-
this.addDiagnostic({
|
|
390
|
-
code: "E_TOOL_CALL_NOT_FOUND",
|
|
391
|
-
severity: "error",
|
|
392
|
-
internalId,
|
|
393
|
-
message: `Tool call ${internalId} not found`,
|
|
394
|
-
});
|
|
395
|
-
return undefined;
|
|
396
|
-
}
|
|
397
|
-
return call;
|
|
398
|
-
}
|
|
399
|
-
addDiagnostic(diag) {
|
|
400
|
-
this.diagnostics.push(diag);
|
|
401
|
-
this.eventQueue.push({
|
|
402
|
-
type: "coordinator_diagnostic",
|
|
403
|
-
sequence: this.globalSequence++,
|
|
404
|
-
diagnostic: diag,
|
|
405
|
-
});
|
|
406
|
-
}
|
|
407
|
-
snapshot() {
|
|
408
|
-
return {
|
|
409
|
-
calls: Array.from(this.calls.values()).map((c) => ({
|
|
410
|
-
internalId: c.internalId,
|
|
411
|
-
provider: c.provider,
|
|
412
|
-
toolCallId: c.toolCallId,
|
|
413
|
-
toolIndex: c.toolIndex,
|
|
414
|
-
name: c.name,
|
|
415
|
-
nameComplete: c.nameComplete,
|
|
416
|
-
parser: c.parser.snapshot(),
|
|
417
|
-
status: c.status,
|
|
418
|
-
schemaValid: c.schemaValid,
|
|
419
|
-
})),
|
|
420
|
-
diagnostics: [...this.diagnostics],
|
|
421
|
-
eventsProcessed: this.eventsProcessed,
|
|
422
|
-
isFinished: this.isFinished,
|
|
423
|
-
};
|
|
424
|
-
}
|
|
425
|
-
drainEvents() {
|
|
426
|
-
const events = this.eventQueue;
|
|
427
|
-
this.eventQueue = [];
|
|
428
|
-
return events;
|
|
429
|
-
}
|
|
430
|
-
finish(meta) {
|
|
431
|
-
if (!this.isFinished) {
|
|
432
|
-
this.handleStreamEnd({
|
|
433
|
-
type: "provider_stream_end",
|
|
434
|
-
sequence: this.eventsProcessed + 1,
|
|
435
|
-
provider: "unknown",
|
|
436
|
-
reason: meta?.reason ?? "unknown",
|
|
437
|
-
providerReason: meta?.providerReason,
|
|
438
|
-
});
|
|
439
|
-
}
|
|
440
|
-
return {
|
|
441
|
-
calls: this.snapshot().calls,
|
|
442
|
-
};
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
export function createToolCallStreamCoordinator(limits, parserOptions, toolSchemas) {
|
|
446
|
-
return new DefaultToolCallStreamCoordinator(limits, parserOptions, toolSchemas);
|
|
447
|
-
}
|
|
448
|
-
//# sourceMappingURL=coordinator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/coordinator/coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Emitted (as a stream-wide `provider_diagnostic`, no `callRef`) by a
|
|
3
|
-
* provider adapter when the underlying provider reports that generation was
|
|
4
|
-
* stopped by a content-safety/policy filter, as opposed to a generic
|
|
5
|
-
* cancellation. The execution gate matches on this to return a distinct
|
|
6
|
-
* `reason: "content_filtered"` rather than lumping it in with ordinary
|
|
7
|
-
* incomplete-stream retries - a policy termination should not be retried
|
|
8
|
-
* blindly.
|
|
9
|
-
*/
|
|
10
|
-
export declare const CONTENT_FILTERED_DIAGNOSTIC_CODE = "E_CONTENT_FILTERED";
|
|
11
|
-
//# sourceMappingURL=diagnostic-codes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostic-codes.d.ts","sourceRoot":"","sources":["../../src/coordinator/diagnostic-codes.ts"],"names":[],"mappings":"AAYA;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,uBAAuB,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// ---------------------------------------------------------------------------
|
|
2
|
-
// Cross-module coordinator-level diagnostic codes.
|
|
3
|
-
//
|
|
4
|
-
// Most coordinator diagnostics (see coordinator.ts) are inline string
|
|
5
|
-
// literals local to wherever they're raised - there's no central registry,
|
|
6
|
-
// unlike the parser-level `DiagnosticCode` in diagnostics/codes.ts. This
|
|
7
|
-
// file exists only for the handful of codes that a provider adapter raises
|
|
8
|
-
// and something *outside* that adapter (e.g. the execution gate) needs to
|
|
9
|
-
// recognize by exact code, where a shared constant is safer than either
|
|
10
|
-
// module guessing the other's string literal.
|
|
11
|
-
// ---------------------------------------------------------------------------
|
|
12
|
-
/**
|
|
13
|
-
* Emitted (as a stream-wide `provider_diagnostic`, no `callRef`) by a
|
|
14
|
-
* provider adapter when the underlying provider reports that generation was
|
|
15
|
-
* stopped by a content-safety/policy filter, as opposed to a generic
|
|
16
|
-
* cancellation. The execution gate matches on this to return a distinct
|
|
17
|
-
* `reason: "content_filtered"` rather than lumping it in with ordinary
|
|
18
|
-
* incomplete-stream retries - a policy termination should not be retried
|
|
19
|
-
* blindly.
|
|
20
|
-
*/
|
|
21
|
-
export const CONTENT_FILTERED_DIAGNOSTIC_CODE = "E_CONTENT_FILTERED";
|
|
22
|
-
//# sourceMappingURL=diagnostic-codes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostic-codes.js","sourceRoot":"","sources":["../../src/coordinator/diagnostic-codes.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mDAAmD;AACnD,EAAE;AACF,sEAAsE;AACtE,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,0EAA0E;AAC1E,wEAAwE;AACxE,8CAA8C;AAC9C,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,oBAAoB,CAAC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
export type ProviderName = "openai" | "anthropic" | "gemini" | "openrouter" | "openai-compatible" | "ai-sdk" | "unknown";
|
|
2
|
-
export interface NormalizedEventBase {
|
|
3
|
-
/**
|
|
4
|
-
* Deterministic sequence number assigned by the stream coordinator.
|
|
5
|
-
*/
|
|
6
|
-
readonly sequence: number;
|
|
7
|
-
readonly provider: ProviderName;
|
|
8
|
-
readonly rawEventType?: string;
|
|
9
|
-
readonly providerRequestId?: string;
|
|
10
|
-
}
|
|
11
|
-
export type NormalizedToolStreamEvent = ToolCallStartEvent | ToolCallIdentityEvent | ToolCallNameDeltaEvent | ToolCallArgumentsDeltaEvent | ToolCallEndEvent | ProviderDiagnosticEvent | ProviderStreamEndEvent;
|
|
12
|
-
export interface ToolCallStartEvent extends NormalizedEventBase {
|
|
13
|
-
readonly type: "tool_call_start";
|
|
14
|
-
readonly callRef: ProviderCallRef;
|
|
15
|
-
readonly toolCallId?: string;
|
|
16
|
-
readonly toolIndex?: number;
|
|
17
|
-
readonly name?: string;
|
|
18
|
-
}
|
|
19
|
-
export interface ToolCallIdentityEvent extends NormalizedEventBase {
|
|
20
|
-
readonly type: "tool_call_identity";
|
|
21
|
-
readonly callRef: ProviderCallRef;
|
|
22
|
-
readonly toolCallId?: string;
|
|
23
|
-
readonly toolIndex?: number;
|
|
24
|
-
}
|
|
25
|
-
export interface ToolCallNameDeltaEvent extends NormalizedEventBase {
|
|
26
|
-
readonly type: "tool_call_name_delta";
|
|
27
|
-
readonly callRef: ProviderCallRef;
|
|
28
|
-
readonly delta: string;
|
|
29
|
-
}
|
|
30
|
-
export interface ToolCallArgumentsDeltaEvent extends NormalizedEventBase {
|
|
31
|
-
readonly type: "tool_call_arguments_delta";
|
|
32
|
-
readonly callRef: ProviderCallRef;
|
|
33
|
-
readonly delta: string | Uint8Array;
|
|
34
|
-
}
|
|
35
|
-
export type StreamEndReason = "complete" | "length" | "cancelled" | "provider_error" | "network_error" | "unknown";
|
|
36
|
-
export interface ToolCallEndEvent extends NormalizedEventBase {
|
|
37
|
-
readonly type: "tool_call_end";
|
|
38
|
-
readonly callRef: ProviderCallRef;
|
|
39
|
-
readonly reason: StreamEndReason;
|
|
40
|
-
readonly providerReason?: string;
|
|
41
|
-
}
|
|
42
|
-
export interface ProviderDiagnosticEvent extends NormalizedEventBase {
|
|
43
|
-
readonly type: "provider_diagnostic";
|
|
44
|
-
readonly code: string;
|
|
45
|
-
readonly severity: "info" | "warning" | "error" | "fatal";
|
|
46
|
-
readonly message: string;
|
|
47
|
-
readonly callRef?: ProviderCallRef;
|
|
48
|
-
}
|
|
49
|
-
export interface ProviderStreamEndEvent extends NormalizedEventBase {
|
|
50
|
-
readonly type: "provider_stream_end";
|
|
51
|
-
readonly reason: StreamEndReason;
|
|
52
|
-
readonly providerReason?: string;
|
|
53
|
-
}
|
|
54
|
-
export interface ProviderCallRef {
|
|
55
|
-
/**
|
|
56
|
-
* Deterministic provider-local identity.
|
|
57
|
-
* e.g. "content-block:0"
|
|
58
|
-
*/
|
|
59
|
-
readonly sourceKey: string;
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/coordinator/protocol.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,mBAAmB,GACnB,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,MAAM,yBAAyB,GACjC,kBAAkB,GAClB,qBAAqB,GACrB,sBAAsB,GACtB,2BAA2B,GAC3B,gBAAgB,GAChB,uBAAuB,GACvB,sBAAsB,CAAC;AAE3B,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAElC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAElC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;CACrC;AAED,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,QAAQ,GACR,WAAW,GACX,gBAAgB,GAChB,eAAe,GACf,SAAS,CAAC;AAEd,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;CACpC;AAED,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/coordinator/protocol.ts"],"names":[],"mappings":""}
|