prefix-safe-json 0.0.1-alpha.4 → 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 +2 -2
- package/package.json +2 -1
- 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 -27
- package/dist/gate/decide.d.ts.map +0 -1
- package/dist/gate/decide.js +0 -138
- 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 -96
- package/dist/gate/gate.js.map +0 -1
- package/dist/gate/types.d.ts +0 -184
- 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/guard/ai-sdk.d.ts +0 -48
- package/dist/guard/ai-sdk.d.ts.map +0 -1
- package/dist/guard/ai-sdk.js +0 -51
- package/dist/guard/ai-sdk.js.map +0 -1
- package/dist/guard/provider-guard.d.ts +0 -4
- package/dist/guard/provider-guard.d.ts.map +0 -1
- package/dist/guard/provider-guard.js +0 -38
- package/dist/guard/provider-guard.js.map +0 -1
- package/dist/guard/types.d.ts +0 -48
- package/dist/guard/types.d.ts.map +0 -1
- package/dist/guard/types.js +0 -2
- package/dist/guard/types.js.map +0 -1
- package/dist/index.d.ts +0 -45
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -45
- package/dist/index.js.map +0 -1
- package/dist/lexer/scanner.d.ts +0 -106
- package/dist/lexer/scanner.d.ts.map +0 -1
- package/dist/lexer/scanner.js +0 -658
- package/dist/lexer/scanner.js.map +0 -1
- package/dist/lexer/states.d.ts +0 -31
- package/dist/lexer/states.d.ts.map +0 -1
- package/dist/lexer/states.js +0 -35
- 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 -922
- 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 -58
- package/dist/providers/ai-sdk.d.ts.map +0 -1
- package/dist/providers/ai-sdk.js +0 -212
- 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 -55
- package/dist/providers/openai.d.ts.map +0 -1
- package/dist/providers/openai.js +0 -263
- 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 -56
- package/dist/semantic/snapshot.d.ts.map +0 -1
- package/dist/semantic/snapshot.js +0 -230
- 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
package/LICENSE
ADDED
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# prefix-safe-json
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> **v0.1** — No longer alpha. Core API (`createParser`, `createToolCallStreamCoordinator`, `createToolCallExecutionGate`, `createAiSdkExecutionGuard`) is considered stable; any breaking change will be called out in [CHANGELOG.md](CHANGELOG.md). Raw provider adapters (`OpenAIStreamAdapter` and friends) remain experimental — see [Current Status](#current-status) for what's covered.
|
|
4
4
|
|
|
5
5
|
**Don't execute incomplete AI tool calls.**
|
|
6
6
|
|
|
@@ -212,7 +212,7 @@ It does **not**:
|
|
|
212
212
|
See [`docs/EXECUTION_GATE.md`](docs/EXECUTION_GATE.md#limitations---what-this-does-not-protect-against)
|
|
213
213
|
for the full list, including known internal limitations.
|
|
214
214
|
|
|
215
|
-
## Current Status
|
|
215
|
+
## Current Status
|
|
216
216
|
|
|
217
217
|
### Implemented
|
|
218
218
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prefix-safe-json",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Fail-closed execution integrity for streamed LLM tool calls — reject truncated or unconfirmed arguments before side effects",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"json",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
"files": [
|
|
36
36
|
"dist",
|
|
37
|
+
"LICENSE",
|
|
37
38
|
"LICENSE-MIT",
|
|
38
39
|
"LICENSE-APACHE",
|
|
39
40
|
"README.md"
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { ParserOptions } from "../types.js";
|
|
2
|
-
import { NormalizedToolStreamEvent, StreamEndReason } from "./protocol.js";
|
|
3
|
-
import { ToolCallStreamCoordinator, ToolCallCoordinatorSnapshot, ToolCallCoordinatorEvent, ToolCallCoordinatorFinalResult, CoordinatorPushResult, CoordinatorLimits, JsonSchemaLike } from "./types.js";
|
|
4
|
-
export declare class DefaultToolCallStreamCoordinator implements ToolCallStreamCoordinator {
|
|
5
|
-
private readonly limits;
|
|
6
|
-
private readonly parserOptions;
|
|
7
|
-
private readonly toolValidators;
|
|
8
|
-
private calls;
|
|
9
|
-
private sourceKeyToInternalId;
|
|
10
|
-
private callCounter;
|
|
11
|
-
private eventQueue;
|
|
12
|
-
private diagnostics;
|
|
13
|
-
private eventsProcessed;
|
|
14
|
-
private globalSequence;
|
|
15
|
-
private isFinished;
|
|
16
|
-
/**
|
|
17
|
-
* @param limits Coordinator-level limits (concurrent tool calls, tool name
|
|
18
|
-
* size, etc.) — distinct from `parserOptions`, which configures each
|
|
19
|
-
* underlying per-call IncrementalJsonParser (limits, repairs). Previously
|
|
20
|
-
* there was no way to pass the latter through at all; every parser the
|
|
21
|
-
* coordinator created was hardcoded to library defaults.
|
|
22
|
-
* @param toolSchemas Optional JSON Schema (draft-07) per tool name. When a
|
|
23
|
-
* call for a registered tool reaches outcome "complete", its
|
|
24
|
-
* `stableValue` is validated against the schema. Structural
|
|
25
|
-
* prefix-safety (no truncated/fabricated values) and schema validity
|
|
26
|
-
* are independent concerns — a value can be genuinely complete and
|
|
27
|
-
* still not match what the tool declared it needs (wrong type, missing
|
|
28
|
-
* required field the model never provided at all). Both must hold for
|
|
29
|
-
* `executable` to be true. Schemas are compiled eagerly here so a
|
|
30
|
-
* malformed schema fails fast at construction, not mid-stream.
|
|
31
|
-
*/
|
|
32
|
-
constructor(limits?: Partial<CoordinatorLimits>, parserOptions?: ParserOptions, toolSchemas?: Record<string, JsonSchemaLike>);
|
|
33
|
-
push(event: NormalizedToolStreamEvent): CoordinatorPushResult;
|
|
34
|
-
private handleStart;
|
|
35
|
-
private handleIdentity;
|
|
36
|
-
private handleNameDelta;
|
|
37
|
-
private handleArgumentsDelta;
|
|
38
|
-
private handleCallEnd;
|
|
39
|
-
private finishCall;
|
|
40
|
-
private hasCallConflict;
|
|
41
|
-
private handleProviderDiagnostic;
|
|
42
|
-
private handleStreamEnd;
|
|
43
|
-
private getCall;
|
|
44
|
-
private addDiagnostic;
|
|
45
|
-
snapshot(): ToolCallCoordinatorSnapshot;
|
|
46
|
-
drainEvents(): readonly ToolCallCoordinatorEvent[];
|
|
47
|
-
finish(meta?: {
|
|
48
|
-
reason?: StreamEndReason;
|
|
49
|
-
providerReason?: string;
|
|
50
|
-
}): ToolCallCoordinatorFinalResult;
|
|
51
|
-
}
|
|
52
|
-
export declare function createToolCallStreamCoordinator(limits?: Partial<CoordinatorLimits>, parserOptions?: ParserOptions, toolSchemas?: Record<string, JsonSchemaLike>): ToolCallStreamCoordinator;
|
|
53
|
-
//# sourceMappingURL=coordinator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/coordinator/coordinator.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,aAAa,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,yBAAyB,EAAgB,eAAe,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,EACxB,8BAA8B,EAC9B,qBAAqB,EACrB,iBAAiB,EAIjB,cAAc,EACf,MAAM,YAAY,CAAC;AAyBpB,qBAAa,gCAAiC,YAAW,yBAAyB;IAChF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;IAC/D,OAAO,CAAC,KAAK,CAAgD;IAC7D,OAAO,CAAC,qBAAqB,CAAkC;IAC/D,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,UAAU,CAAS;IAE3B;;;;;;;;;;;;;;;OAeG;gBAED,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,EACnC,aAAa,CAAC,EAAE,aAAa,EAC7B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAa9C,IAAI,CAAC,KAAK,EAAE,yBAAyB,GAAG,qBAAqB;IAgD7D,OAAO,CAAC,WAAW;IAqDnB,OAAO,CAAC,cAAc;IAgDtB,OAAO,CAAC,eAAe;IAqCvB,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,UAAU;IAoElB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,aAAa;IASrB,QAAQ,IAAI,2BAA2B;IAmBvC,WAAW,IAAI,SAAS,wBAAwB,EAAE;IAMlD,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,eAAe,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,8BAA8B;CAcrG;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,EACnC,aAAa,CAAC,EAAE,aAAa,EAC7B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAC3C,yBAAyB,CAE3B"}
|
|
@@ -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"}
|