prefix-safe-json 0.2.0 → 0.4.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 +170 -89
- package/dist/coordinator/coordinator.d.ts +2 -0
- package/dist/coordinator/coordinator.d.ts.map +1 -1
- package/dist/coordinator/coordinator.js +54 -10
- package/dist/coordinator/coordinator.js.map +1 -1
- package/dist/coordinator/diagnostic-codes.d.ts +18 -0
- package/dist/coordinator/diagnostic-codes.d.ts.map +1 -1
- package/dist/coordinator/diagnostic-codes.js +26 -0
- package/dist/coordinator/diagnostic-codes.js.map +1 -1
- package/dist/coordinator/types.d.ts +2 -0
- package/dist/coordinator/types.d.ts.map +1 -1
- package/dist/gate/decide.d.ts.map +1 -1
- package/dist/gate/decide.js +9 -2
- package/dist/gate/decide.js.map +1 -1
- package/dist/gate/gate.d.ts +4 -2
- package/dist/gate/gate.d.ts.map +1 -1
- package/dist/gate/gate.js +18 -3
- package/dist/gate/gate.js.map +1 -1
- package/dist/gate/types.d.ts +7 -1
- package/dist/gate/types.d.ts.map +1 -1
- package/dist/guard/ai-sdk-execution-lock.d.ts +19 -0
- package/dist/guard/ai-sdk-execution-lock.d.ts.map +1 -0
- package/dist/guard/ai-sdk-execution-lock.js +78 -0
- package/dist/guard/ai-sdk-execution-lock.js.map +1 -0
- package/dist/guard/ai-sdk.d.ts +3 -4
- package/dist/guard/ai-sdk.d.ts.map +1 -1
- package/dist/guard/ai-sdk.js +3 -4
- package/dist/guard/ai-sdk.js.map +1 -1
- package/dist/guard/provider-guard.d.ts.map +1 -1
- package/dist/guard/provider-guard.js +3 -0
- package/dist/guard/provider-guard.js.map +1 -1
- package/dist/guard/types.d.ts +3 -1
- package/dist/guard/types.d.ts.map +1 -1
- package/dist/index.d.ts +38 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -3
- package/dist/index.js.map +1 -1
- package/dist/providers/ai-sdk.d.ts +2 -0
- package/dist/providers/ai-sdk.d.ts.map +1 -1
- package/dist/providers/ai-sdk.js +57 -3
- package/dist/providers/ai-sdk.js.map +1 -1
- package/dist/providers/gemini.d.ts +1 -1
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +35 -8
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/openai-compatible.d.ts +2 -1
- package/dist/providers/openai-compatible.d.ts.map +1 -1
- package/dist/providers/openai-compatible.js +54 -6
- package/dist/providers/openai-compatible.js.map +1 -1
- package/package.json +21 -5
|
@@ -85,6 +85,8 @@ export interface CoordinatorDiagnostic {
|
|
|
85
85
|
readonly severity: "info" | "warning" | "error" | "fatal";
|
|
86
86
|
readonly message: string;
|
|
87
87
|
readonly internalId?: string;
|
|
88
|
+
/** Provider-local identity when a violation arrived before a call existed. */
|
|
89
|
+
readonly sourceKey?: string;
|
|
88
90
|
}
|
|
89
91
|
export interface CoordinatorPushResult {
|
|
90
92
|
readonly accepted: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/coordinator/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/coordinator/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decide.d.ts","sourceRoot":"","sources":["../../src/gate/decide.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"decide.d.ts","sourceRoot":"","sources":["../../src/gate/decide.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAQ7D,OAAO,EAAoB,eAAe,EAAmB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEvG,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAE1C;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAE1C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACxD;AAoBD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,eAAe,GACnB,eAAe,GAAG,qBAAqB,CA2KzC"}
|
package/dist/gate/decide.js
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
// ahead of it.
|
|
28
28
|
// ---------------------------------------------------------------------------
|
|
29
29
|
import { DiagnosticCode } from "../diagnostics/codes.js";
|
|
30
|
-
import { CONTENT_FILTERED_DIAGNOSTIC_CODE, SDK_EXECUTION_OBSERVED_DIAGNOSTIC_CODE, SDK_EXECUTION_ERROR_DIAGNOSTIC_CODE, } from "../coordinator/diagnostic-codes.js";
|
|
30
|
+
import { AUTHORITY_PROTOCOL_VIOLATION_CODES, CONTENT_FILTERED_DIAGNOSTIC_CODE, PROJECTION_ONLY_ARGUMENTS_DIAGNOSTIC_CODE, SDK_EXECUTION_OBSERVED_DIAGNOSTIC_CODE, SDK_EXECUTION_ERROR_DIAGNOSTIC_CODE, } from "../coordinator/diagnostic-codes.js";
|
|
31
31
|
const PARSER_RESOURCE_LIMIT_CODES = new Set([
|
|
32
32
|
DiagnosticCode.E_LIMIT_DEPTH,
|
|
33
33
|
DiagnosticCode.E_LIMIT_INPUT_BYTES,
|
|
@@ -46,7 +46,7 @@ const SDK_EXECUTION_OBSERVED_CODES = new Set([
|
|
|
46
46
|
export function decideExecution(call, ctx) {
|
|
47
47
|
const parserDiagnostics = call.parser.diagnostics;
|
|
48
48
|
const callCoordinatorDiagnostics = ctx.diagnostics.filter((d) => d.internalId === call.internalId);
|
|
49
|
-
const globalCoordinatorDiagnostics = ctx.diagnostics.filter((d) => d.internalId === undefined);
|
|
49
|
+
const globalCoordinatorDiagnostics = ctx.diagnostics.filter((d) => d.internalId === undefined && d.sourceKey === undefined);
|
|
50
50
|
const coordinatorDiagnostics = [
|
|
51
51
|
...globalCoordinatorDiagnostics,
|
|
52
52
|
...callCoordinatorDiagnostics,
|
|
@@ -115,6 +115,13 @@ export function decideExecution(call, ctx) {
|
|
|
115
115
|
if (isContentFiltered) {
|
|
116
116
|
return reject("content_filtered");
|
|
117
117
|
}
|
|
118
|
+
if (callCoordinatorDiagnostics.some((d) => d.code === PROJECTION_ONLY_ARGUMENTS_DIAGNOSTIC_CODE)) {
|
|
119
|
+
return reject("projection_only");
|
|
120
|
+
}
|
|
121
|
+
if (callCoordinatorDiagnostics.some((d) => AUTHORITY_PROTOCOL_VIOLATION_CODES.has(d.code)) ||
|
|
122
|
+
globalCoordinatorDiagnostics.some((d) => AUTHORITY_PROTOCOL_VIOLATION_CODES.has(d.code))) {
|
|
123
|
+
return reject("protocol_violation");
|
|
124
|
+
}
|
|
118
125
|
// --- Status-specific handling --------------------------------------------
|
|
119
126
|
// Exhaustive over ToolCallState["status"] with no `default`: if a future
|
|
120
127
|
// coordinator version adds a new status literal without a matching case
|
package/dist/gate/decide.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decide.js","sourceRoot":"","sources":["../../src/gate/decide.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,qEAAqE;AACrE,uCAAuC;AACvC,EAAE;AACF,qEAAqE;AACrE,uEAAuE;AACvE,0EAA0E;AAC1E,uEAAuE;AACvE,yEAAyE;AACzE,2EAA2E;AAC3E,qEAAqE;AACrE,4EAA4E;AAC5E,2EAA2E;AAC3E,wEAAwE;AACxE,0EAA0E;AAC1E,yEAAyE;AACzE,yEAAyE;AACzE,yEAAyE;AACzE,4EAA4E;AAC5E,qEAAqE;AACrE,2EAA2E;AAC3E,2EAA2E;AAC3E,eAAe;AACf,8EAA8E;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EACL,gCAAgC,EAChC,sCAAsC,EACtC,mCAAmC,GACpC,MAAM,oCAAoC,CAAC;AA4B5C,MAAM,2BAA2B,GAAwB,IAAI,GAAG,CAAC;IAC/D,cAAc,CAAC,aAAa;IAC5B,cAAc,CAAC,mBAAmB;IAClC,cAAc,CAAC,oBAAoB;IACnC,cAAc,CAAC,mBAAmB;CACnC,CAAC,CAAC;AAEH,MAAM,gCAAgC,GAAwB,IAAI,GAAG,CAAC;IACpE,2BAA2B;IAC3B,4BAA4B;IAC5B,mBAAmB;CACpB,CAAC,CAAC;AAEH,MAAM,4BAA4B,GAAwB,IAAI,GAAG,CAAC;IAChE,sCAAsC;IACtC,mCAAmC;CACpC,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe,CAC7B,IAAmB,EACnB,GAAoB;IAEpB,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IAClD,MAAM,0BAA0B,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CACvD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CACxC,CAAC;IACF,MAAM,4BAA4B,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CACzD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"decide.js","sourceRoot":"","sources":["../../src/gate/decide.ts"],"names":[],"mappings":"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"}
|
package/dist/gate/gate.d.ts
CHANGED
|
@@ -16,8 +16,10 @@ import { ToolCallExecutionGate } from "./types.js";
|
|
|
16
16
|
* for (const raw of providerEvents) {
|
|
17
17
|
* for (const normalized of adapter.push(raw)) gate.push(normalized);
|
|
18
18
|
* }
|
|
19
|
-
*
|
|
20
|
-
*
|
|
19
|
+
* const final = gate.finish();
|
|
20
|
+
* for (const observed of final.decisions) {
|
|
21
|
+
* const authority = gate.takeDecision(observed.internalId);
|
|
22
|
+
* if (authority) await tools[authority.name](authority.value);
|
|
21
23
|
* }
|
|
22
24
|
* ```
|
|
23
25
|
*/
|
package/dist/gate/gate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/gate/gate.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,iBAAiB,EAEjB,cAAc,EAGf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,
|
|
1
|
+
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/gate/gate.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,iBAAiB,EAEjB,cAAc,EAGf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAGL,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AA8FpB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,EACnC,aAAa,CAAC,EAAE,aAAa,EAC7B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAC3C,qBAAqB,CAEvB"}
|
package/dist/gate/gate.js
CHANGED
|
@@ -20,6 +20,8 @@ class DefaultToolCallExecutionGate {
|
|
|
20
20
|
streamEndReason;
|
|
21
21
|
streamEndProviderReason;
|
|
22
22
|
streamEndCaptured = false;
|
|
23
|
+
finalResult;
|
|
24
|
+
consumedExecutionIds = new Set();
|
|
23
25
|
constructor(limits, parserOptions, toolSchemas) {
|
|
24
26
|
this.coordinator = createToolCallStreamCoordinator(limits, parserOptions, toolSchemas);
|
|
25
27
|
}
|
|
@@ -47,6 +49,16 @@ class DefaultToolCallExecutionGate {
|
|
|
47
49
|
drainEvents() {
|
|
48
50
|
return this.coordinator.drainEvents();
|
|
49
51
|
}
|
|
52
|
+
takeDecision(internalId) {
|
|
53
|
+
if (this.finalResult === undefined || this.consumedExecutionIds.has(internalId)) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
const decision = this.finalResult.decisions.find((candidate) => candidate.internalId === internalId);
|
|
57
|
+
if (decision?.action !== "execute")
|
|
58
|
+
return undefined;
|
|
59
|
+
this.consumedExecutionIds.add(internalId);
|
|
60
|
+
return decision;
|
|
61
|
+
}
|
|
50
62
|
finish(meta) {
|
|
51
63
|
if (!this.streamEndCaptured) {
|
|
52
64
|
this.streamEndCaptured = true;
|
|
@@ -67,7 +79,8 @@ class DefaultToolCallExecutionGate {
|
|
|
67
79
|
diagnostics,
|
|
68
80
|
};
|
|
69
81
|
const decisions = result.calls.map((call) => decideExecution(call, ctx));
|
|
70
|
-
|
|
82
|
+
this.finalResult = { decisions, diagnostics };
|
|
83
|
+
return this.finalResult;
|
|
71
84
|
}
|
|
72
85
|
}
|
|
73
86
|
/**
|
|
@@ -85,8 +98,10 @@ class DefaultToolCallExecutionGate {
|
|
|
85
98
|
* for (const raw of providerEvents) {
|
|
86
99
|
* for (const normalized of adapter.push(raw)) gate.push(normalized);
|
|
87
100
|
* }
|
|
88
|
-
*
|
|
89
|
-
*
|
|
101
|
+
* const final = gate.finish();
|
|
102
|
+
* for (const observed of final.decisions) {
|
|
103
|
+
* const authority = gate.takeDecision(observed.internalId);
|
|
104
|
+
* if (authority) await tools[authority.name](authority.value);
|
|
90
105
|
* }
|
|
91
106
|
* ```
|
|
92
107
|
*/
|
package/dist/gate/gate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/gate/gate.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,6DAA6D;AAC7D,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,yEAAyE;AACzE,0EAA0E;AAC1E,4EAA4E;AAC5E,8EAA8E;AAE9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAUhF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/gate/gate.ts"],"names":[],"mappings":"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"}
|
package/dist/gate/types.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export type ExecutionAction = "execute" | "retry" | "reject";
|
|
|
18
18
|
* Machine-readable classification of *why* an `ExecutionAction` was chosen.
|
|
19
19
|
* See `docs/EXECUTION_GATE.md` for the full decision table.
|
|
20
20
|
*/
|
|
21
|
-
export type ExecutionReason = "complete" | "truncated" | "stream_incomplete" | "schema_invalid" | "malformed" | "resource_limit" | "provider_error" | "content_filtered" | "sdk_execution_observed" | "unknown";
|
|
21
|
+
export type ExecutionReason = "complete" | "truncated" | "stream_incomplete" | "schema_invalid" | "malformed" | "resource_limit" | "provider_error" | "content_filtered" | "sdk_execution_observed" | "projection_only" | "protocol_violation" | "unknown";
|
|
22
22
|
/**
|
|
23
23
|
* Why a decision came out the way it did - observability, not a second
|
|
24
24
|
* decision input. Every field here is read-only, derived state already held
|
|
@@ -175,6 +175,12 @@ export interface ToolCallExecutionGate {
|
|
|
175
175
|
snapshot(): readonly ExecutionDecision[];
|
|
176
176
|
/** Drains the underlying coordinator's raw event queue, for advanced/UI consumers. */
|
|
177
177
|
drainEvents(): readonly ToolCallCoordinatorEvent[];
|
|
178
|
+
/**
|
|
179
|
+
* Takes this call's executable decision at most once. Returns `undefined`
|
|
180
|
+
* before `finish()`, for non-executable/unknown calls, and after the same
|
|
181
|
+
* call's authority has already been taken. Other calls are unaffected.
|
|
182
|
+
*/
|
|
183
|
+
takeDecision(internalId: string): ExecuteDecision | undefined;
|
|
178
184
|
finish(meta?: {
|
|
179
185
|
reason?: StreamEndReason;
|
|
180
186
|
providerReason?: string;
|
package/dist/gate/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/gate/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/gate/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A tool definition after {@link createAiSdkExecutionLock} has processed it.
|
|
3
|
+
* `execute` and every SDK-invoked pre-decision input-lifecycle callback
|
|
4
|
+
* (`onInputStart`, `onInputDelta`, `onInputAvailable`) are removed, not
|
|
5
|
+
* merely typed as optional-and-absent - the compiler will reject an attempt
|
|
6
|
+
* to read them off a locked tool. `needsApproval` is narrowed to the literal
|
|
7
|
+
* `true`, reflecting that this function always forces it and never leaves it
|
|
8
|
+
* caller-controlled. Every other field (schema, description, provider
|
|
9
|
+
* metadata, etc.) keeps its original type unchanged.
|
|
10
|
+
*/
|
|
11
|
+
export type LockedAiSdkTool<T> = Omit<T, "execute" | "onInputStart" | "onInputDelta" | "onInputAvailable" | "needsApproval"> & {
|
|
12
|
+
needsApproval: true;
|
|
13
|
+
};
|
|
14
|
+
/** `createAiSdkExecutionLock`'s return type: every tool in the input, individually locked. */
|
|
15
|
+
export type LockedAiSdkTools<TTools extends Record<string, object>> = {
|
|
16
|
+
[K in keyof TTools]: LockedAiSdkTool<TTools[K]>;
|
|
17
|
+
};
|
|
18
|
+
export declare function createAiSdkExecutionLock<TTools extends Record<string, object>>(tools: TTools): LockedAiSdkTools<TTools>;
|
|
19
|
+
//# sourceMappingURL=ai-sdk-execution-lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-sdk-execution-lock.d.ts","sourceRoot":"","sources":["../../src/guard/ai-sdk-execution-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,SAAS,GAAG,cAAc,GAAG,cAAc,GAAG,kBAAkB,GAAG,eAAe,CAAC,GAAG;IAC7H,aAAa,EAAE,IAAI,CAAC;CACrB,CAAC;AAEF,8FAA8F;AAC9F,MAAM,MAAM,gBAAgB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI;KACnE,CAAC,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAChD,CAAC;AAiOF,wBAAgB,wBAAwB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAwBvH"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rejects tool shapes whose real execution location this function cannot
|
|
3
|
+
* verify from the object alone. See the "Provider-executed and
|
|
4
|
+
* execution-location-ambiguous tools" section of this module's top doc
|
|
5
|
+
* comment for the exact per-major reasoning; this function only encodes the
|
|
6
|
+
* resulting decision table.
|
|
7
|
+
*/
|
|
8
|
+
function rejectUnsupportedProviderShape(name, definition) {
|
|
9
|
+
if (definition.isProviderExecuted === true) {
|
|
10
|
+
throw new Error(`createAiSdkExecutionLock: tool "${name}" is provider-executed (isProviderExecuted: true) - ` +
|
|
11
|
+
"its real operation runs entirely on the model provider's own infrastructure, which this " +
|
|
12
|
+
"function has no visibility into or control over. Wrapping it here would falsely imply a " +
|
|
13
|
+
"guarantee this function cannot make. Do not pass provider-executed tools to this function.");
|
|
14
|
+
}
|
|
15
|
+
if (definition.type === "provider") {
|
|
16
|
+
if (definition.isProviderExecuted === false) {
|
|
17
|
+
// ai@7's locally-executed provider-defined shape - see the doc comment;
|
|
18
|
+
// structurally has no `execute` field, so the SDK's own
|
|
19
|
+
// `isExecutableTool` (`typeof tool.execute === "function"`) never
|
|
20
|
+
// auto-runs it, and it falls through to the normal strip-and-relock
|
|
21
|
+
// path below like any other accepted tool.
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
throw new Error(`createAiSdkExecutionLock: tool "${name}" has type "provider" but no isProviderExecuted flag - ` +
|
|
25
|
+
"this matches ai@6's provider-tool shape, which has no discriminator at all for whether the " +
|
|
26
|
+
"operation runs on the model provider's remote infrastructure or locally in this process " +
|
|
27
|
+
"(ai@7 added isProviderExecuted for exactly this reason). This function cannot safely infer " +
|
|
28
|
+
"which applies from the object shape, so it rejects rather than risk falsely implying a " +
|
|
29
|
+
"guarantee it cannot verify. Do not pass this tool to createAiSdkExecutionLock.");
|
|
30
|
+
}
|
|
31
|
+
if (definition.type === "provider-defined") {
|
|
32
|
+
throw new Error(`createAiSdkExecutionLock: tool "${name}" has type "provider-defined" - this is ai@5's ` +
|
|
33
|
+
"provider-tool shape, which (like ai@6's) has no isProviderExecuted or equivalent " +
|
|
34
|
+
"discriminator: some provider-defined tools execute locally and some execute entirely on " +
|
|
35
|
+
"the provider's remote infrastructure, and nothing in the object shape distinguishes them. " +
|
|
36
|
+
"This function cannot safely infer which execution authority applies, so it rejects rather " +
|
|
37
|
+
"than guess. Do not pass this tool to createAiSdkExecutionLock.");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Rejects a function-valued `description`. On ai@7, `prepareTools()` calls
|
|
42
|
+
* `resolveToolDescription()`, which invokes a function-valued `description`
|
|
43
|
+
* directly - arbitrary caller code running during tool preparation, before
|
|
44
|
+
* `streamText`/`generateText`'s model call begins and therefore necessarily
|
|
45
|
+
* before this library's gate can reach any decision. ai@5/ai@6 only ever
|
|
46
|
+
* typed `description` as `string`, so this rejects nothing for a caller
|
|
47
|
+
* following those majors' own types; it is a shape check, not a version
|
|
48
|
+
* check, and applies identically regardless of which major is installed.
|
|
49
|
+
*/
|
|
50
|
+
function rejectFunctionValuedDescription(name, definition) {
|
|
51
|
+
if (typeof definition.description !== "function")
|
|
52
|
+
return;
|
|
53
|
+
throw new Error(`createAiSdkExecutionLock: tool "${name}" has a function-valued "description" - ` +
|
|
54
|
+
"on ai@7+, the AI SDK's own prepareTools()/resolveToolDescription() calls that function " +
|
|
55
|
+
"during tool preparation, before streamText/generateText's model call begins, which is " +
|
|
56
|
+
"arbitrary caller code running before this library's gate can reach any decision. A string " +
|
|
57
|
+
"description is unaffected and remains supported. Do not pass a function-valued description " +
|
|
58
|
+
"to createAiSdkExecutionLock; resolve it to a string yourself before calling this function.");
|
|
59
|
+
}
|
|
60
|
+
export function createAiSdkExecutionLock(tools) {
|
|
61
|
+
const locked = {};
|
|
62
|
+
for (const [name, definition] of Object.entries(tools)) {
|
|
63
|
+
const probe = definition;
|
|
64
|
+
rejectUnsupportedProviderShape(name, probe);
|
|
65
|
+
if (probe.type !== "provider") {
|
|
66
|
+
// Only the ordinary local-tool code path (type undefined/"function"/"dynamic")
|
|
67
|
+
// ever reaches prepareTools()'s description-invoking branch; an accepted
|
|
68
|
+
// `type: "provider"` tool's description is never read by the SDK at all
|
|
69
|
+
// (see rejectUnsupportedProviderShape's "provider" branch), so checking
|
|
70
|
+
// it there would reject shapes the SDK can never actually exploit.
|
|
71
|
+
rejectFunctionValuedDescription(name, probe);
|
|
72
|
+
}
|
|
73
|
+
const { execute: _droppedExecute, onInputStart: _droppedOnInputStart, onInputDelta: _droppedOnInputDelta, onInputAvailable: _droppedOnInputAvailable, needsApproval: _droppedNeedsApproval, ...rest } = probe;
|
|
74
|
+
locked[name] = { ...rest, needsApproval: true };
|
|
75
|
+
}
|
|
76
|
+
return locked;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=ai-sdk-execution-lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-sdk-execution-lock.js","sourceRoot":"","sources":["../../src/guard/ai-sdk-execution-lock.ts"],"names":[],"mappings":"AA4KA;;;;;;GAMG;AACH,SAAS,8BAA8B,CAAC,IAAY,EAAE,UAAsB;IAC1E,IAAI,UAAU,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,mCAAmC,IAAI,sDAAsD;YAC3F,0FAA0F;YAC1F,0FAA0F;YAC1F,4FAA4F,CAC/F,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,kBAAkB,KAAK,KAAK,EAAE,CAAC;YAC5C,wEAAwE;YACxE,wDAAwD;YACxD,kEAAkE;YAClE,oEAAoE;YACpE,2CAA2C;YAC3C,OAAO;QACT,CAAC;QACD,MAAM,IAAI,KAAK,CACb,mCAAmC,IAAI,yDAAyD;YAC9F,6FAA6F;YAC7F,0FAA0F;YAC1F,6FAA6F;YAC7F,yFAAyF;YACzF,gFAAgF,CACnF,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,mCAAmC,IAAI,iDAAiD;YACtF,mFAAmF;YACnF,0FAA0F;YAC1F,4FAA4F;YAC5F,4FAA4F;YAC5F,gEAAgE,CACnE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,+BAA+B,CAAC,IAAY,EAAE,UAAsB;IAC3E,IAAI,OAAO,UAAU,CAAC,WAAW,KAAK,UAAU;QAAE,OAAO;IACzD,MAAM,IAAI,KAAK,CACb,mCAAmC,IAAI,0CAA0C;QAC/E,yFAAyF;QACzF,wFAAwF;QACxF,4FAA4F;QAC5F,6FAA6F;QAC7F,4FAA4F,CAC/F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAwC,KAAa;IAC3F,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,UAAwB,CAAC;QACvC,8BAA8B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,+EAA+E;YAC/E,yEAAyE;YACzE,wEAAwE;YACxE,wEAAwE;YACxE,mEAAmE;YACnE,+BAA+B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,EACJ,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,oBAAoB,EAClC,YAAY,EAAE,oBAAoB,EAClC,gBAAgB,EAAE,wBAAwB,EAC1C,aAAa,EAAE,qBAAqB,EACpC,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAClD,CAAC;IACD,OAAO,MAAkC,CAAC;AAC5C,CAAC"}
|
package/dist/guard/ai-sdk.d.ts
CHANGED
|
@@ -23,10 +23,9 @@ import { AiSdkExecutionGuard, ExecutionGuardOptions } from "./types.js";
|
|
|
23
23
|
* }
|
|
24
24
|
*
|
|
25
25
|
* const final = guard.finish();
|
|
26
|
-
* for (const
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* }
|
|
26
|
+
* for (const observed of final.decisions) {
|
|
27
|
+
* const authority = guard.takeDecision(observed.internalId);
|
|
28
|
+
* if (authority) await tools[authority.name](authority.value);
|
|
30
29
|
* }
|
|
31
30
|
* ```
|
|
32
31
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-sdk.d.ts","sourceRoot":"","sources":["../../src/guard/ai-sdk.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExE
|
|
1
|
+
{"version":3,"file":"ai-sdk.d.ts","sourceRoot":"","sources":["../../src/guard/ai-sdk.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,mBAAmB,CAE9F"}
|
package/dist/guard/ai-sdk.js
CHANGED
|
@@ -24,10 +24,9 @@ import { createProviderExecutionGuard } from "./provider-guard.js";
|
|
|
24
24
|
* }
|
|
25
25
|
*
|
|
26
26
|
* const final = guard.finish();
|
|
27
|
-
* for (const
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* }
|
|
27
|
+
* for (const observed of final.decisions) {
|
|
28
|
+
* const authority = guard.takeDecision(observed.internalId);
|
|
29
|
+
* if (authority) await tools[authority.name](authority.value);
|
|
31
30
|
* }
|
|
32
31
|
* ```
|
|
33
32
|
*
|
package/dist/guard/ai-sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-sdk.js","sourceRoot":"","sources":["../../src/guard/ai-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAGnE
|
|
1
|
+
{"version":3,"file":"ai-sdk.js","sourceRoot":"","sources":["../../src/guard/ai-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAA+B;IACvE,OAAO,4BAA4B,CAAC,IAAI,kBAAkB,EAAE,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-guard.d.ts","sourceRoot":"","sources":["../../src/guard/provider-guard.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnE,wBAAgB,4BAA4B,CAAC,SAAS,EACpD,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,EACzC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,cAAc,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"provider-guard.d.ts","sourceRoot":"","sources":["../../src/guard/provider-guard.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnE,wBAAgB,4BAA4B,CAAC,SAAS,EACpD,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,EACzC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,cAAc,CAAC,SAAS,CAAC,CA8B3B"}
|
|
@@ -22,6 +22,9 @@ export function createProviderExecutionGuard(adapter, options) {
|
|
|
22
22
|
snapshot() {
|
|
23
23
|
return gate.snapshot();
|
|
24
24
|
},
|
|
25
|
+
takeDecision(internalId) {
|
|
26
|
+
return gate.takeDecision(internalId);
|
|
27
|
+
},
|
|
25
28
|
finish(meta) {
|
|
26
29
|
// If the provider stream already delivered its own terminal event
|
|
27
30
|
// through push() (the common case), the adapter is already
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-guard.js","sourceRoot":"","sources":["../../src/guard/provider-guard.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8DAA8D;AAC9D,EAAE;AACF,uEAAuE;AACvE,wEAAwE;AACxE,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,wEAAwE;AACxE,4EAA4E;AAC5E,+CAA+C;AAC/C,8EAA8E;AAE9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAM9D,MAAM,UAAU,4BAA4B,CAC1C,OAAyC,EACzC,OAA+B;IAE/B,MAAM,IAAI,GAAG,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAEpG,OAAO;QACL,IAAI,CAAC,QAAmB;YACtB,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,QAAQ;YACN,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QAED,MAAM,CAAC,IAA4D;YACjE,kEAAkE;YAClE,2DAA2D;YAC3D,+DAA+D;YAC/D,qEAAqE;YACrE,2DAA2D;YAC3D,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"provider-guard.js","sourceRoot":"","sources":["../../src/guard/provider-guard.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8DAA8D;AAC9D,EAAE;AACF,uEAAuE;AACvE,wEAAwE;AACxE,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,wEAAwE;AACxE,4EAA4E;AAC5E,+CAA+C;AAC/C,8EAA8E;AAE9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAM9D,MAAM,UAAU,4BAA4B,CAC1C,OAAyC,EACzC,OAA+B;IAE/B,MAAM,IAAI,GAAG,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAEpG,OAAO;QACL,IAAI,CAAC,QAAmB;YACtB,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,QAAQ;YACN,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QAED,YAAY,CAAC,UAAkB;YAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,CAAC,IAA4D;YACjE,kEAAkE;YAClE,2DAA2D;YAC3D,+DAA+D;YAC/D,qEAAqE;YACrE,2DAA2D;YAC3D,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/guard/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { StreamEndReason } from "../coordinator/protocol.js";
|
|
2
2
|
import { CoordinatorLimits, JsonSchemaLike } from "../coordinator/types.js";
|
|
3
|
-
import { ToolCallExecutionGateFinalResult, ExecutionDecision } from "../gate/types.js";
|
|
3
|
+
import { ToolCallExecutionGateFinalResult, ExecutionDecision, ExecuteDecision } from "../gate/types.js";
|
|
4
4
|
import { ParserOptions } from "../types.js";
|
|
5
5
|
/**
|
|
6
6
|
* High-level, provider-agnostic execution guard: composes a
|
|
@@ -18,6 +18,8 @@ export interface ExecutionGuard<TRawEvent = unknown> {
|
|
|
18
18
|
* only ever returned from `finish()`.
|
|
19
19
|
*/
|
|
20
20
|
snapshot(): readonly ExecutionDecision[];
|
|
21
|
+
/** Takes one call's executable decision once, without consuming any other call. */
|
|
22
|
+
takeDecision(internalId: string): ExecuteDecision | undefined;
|
|
21
23
|
/**
|
|
22
24
|
* Signals stream completion and returns the final decision for every tool
|
|
23
25
|
* call the stream ever produced. Safe to call even if the underlying
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/guard/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/guard/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EACL,gCAAgC,EAChC,iBAAiB,EACjB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,WAAW,cAAc,CAAC,SAAS,GAAG,OAAO;IACjD,kGAAkG;IAClG,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAEhC;;;;OAIG;IACH,QAAQ,IAAI,SAAS,iBAAiB,EAAE,CAAC;IAEzC,mFAAmF;IACnF,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IAE9D;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,eAAe,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gCAAgC,CAAC;CACxG;AAED,6EAA6E;AAC7E,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEzC,8EAA8E;IAC9E,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEpC,gEAAgE;IAChE,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,4GAA4G;AAC5G,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -39,6 +39,40 @@ export type { ToolCallExecutionGate, ToolCallExecutionGateFinalResult, Execution
|
|
|
39
39
|
*/
|
|
40
40
|
export { createAiSdkExecutionGuard } from "./guard/ai-sdk.js";
|
|
41
41
|
export type { ExecutionGuard, AiSdkExecutionGuard, ExecutionGuardOptions } from "./guard/types.js";
|
|
42
|
+
/**
|
|
43
|
+
* @public (Experimental)
|
|
44
|
+
* Removes every AI SDK-invoked callback field capable of running caller code
|
|
45
|
+
* before this library's gate reaches a decision - `execute`,
|
|
46
|
+
* `onInputStart`, `onInputDelta`, and `onInputAvailable` (verified directly
|
|
47
|
+
* against `ai@5`/`ai@6`/`ai@7`'s own real source that all three fire
|
|
48
|
+
* unconditionally, with zero reference to `needsApproval` or approval
|
|
49
|
+
* status - `needsApproval: true` alone does not stop them). Also forces
|
|
50
|
+
* `needsApproval: true`, which still closes the `execute` gap on `ai@6`+ via
|
|
51
|
+
* the SDK's own approval mechanism. Also rejects two other classes of
|
|
52
|
+
* pre-decision caller code this library cannot neutralize by stripping
|
|
53
|
+
* fields: a function-valued `description` (`ai@7`+ invokes it during tool
|
|
54
|
+
* preparation, before the model call begins), and any provider tool shape
|
|
55
|
+
* whose real execution location cannot be verified from the object alone -
|
|
56
|
+
* `isProviderExecuted: true`, `ai@6`'s discriminator-less `{ type:
|
|
57
|
+
* "provider" }`, and `ai@5`'s discriminator-less `{ type: "provider-defined"
|
|
58
|
+
* }` are all rejected; `ai@7`'s `{ type: "provider", isProviderExecuted:
|
|
59
|
+
* false }` (verified to have no `execute` field at all, so the SDK can never
|
|
60
|
+
* auto-run it) is accepted. Real execution stays exactly where it already
|
|
61
|
+
* was: driven manually from one-shot `guard.takeDecision()`. See the function's
|
|
62
|
+
* own doc comment for the exact, precisely-scoped guarantee, its real
|
|
63
|
+
* limits, and the explicit non-sandbox threat-model boundary around
|
|
64
|
+
* caller-provided schema/validation code, and
|
|
65
|
+
* `docs/EXECUTION_GATE.md#execution-ownership-tool-resulttool-error-as-evidence`.
|
|
66
|
+
*/
|
|
67
|
+
export { createAiSdkExecutionLock } from "./guard/ai-sdk-execution-lock.js";
|
|
68
|
+
export type { LockedAiSdkTool, LockedAiSdkTools } from "./guard/ai-sdk-execution-lock.js";
|
|
69
|
+
/**
|
|
70
|
+
* @public (Experimental)
|
|
71
|
+
* The contract every provider adapter above implements. Classified
|
|
72
|
+
* Experimental alongside them, not Stable: writing a custom adapter against
|
|
73
|
+
* this interface is exactly as exposed to upstream wire-shape churn as the
|
|
74
|
+
* adapters that already implement it.
|
|
75
|
+
*/
|
|
42
76
|
export type { ProviderStreamAdapter } from "./providers/adapter.js";
|
|
43
77
|
/**
|
|
44
78
|
* @public (Experimental)
|
|
@@ -50,6 +84,7 @@ export { OpenAIStreamAdapter } from "./providers/openai.js";
|
|
|
50
84
|
* @public (Experimental)
|
|
51
85
|
* Generic OpenAI-compatible `choices[].delta.tool_calls[]` streaming
|
|
52
86
|
* shape, shared by OpenAI's current API and most compatible endpoints.
|
|
87
|
+
* Requires an explicit non-negative integer `choice.index` for identity.
|
|
53
88
|
*/
|
|
54
89
|
export { OpenAICompatibleStreamAdapter } from "./providers/openai-compatible.js";
|
|
55
90
|
/**
|
|
@@ -63,7 +98,7 @@ export { AnthropicStreamAdapter } from "./providers/anthropic.js";
|
|
|
63
98
|
* Gemini's structured `functionCall` shape. Unlike the other adapters,
|
|
64
99
|
* Gemini delivers function-call arguments as an already-parsed object, not
|
|
65
100
|
* incremental raw JSON text - see docs/COMPATIBILITY.md for what that
|
|
66
|
-
* means for this adapter's
|
|
101
|
+
* means for this adapter's inspection-only, non-executable projection.
|
|
67
102
|
*/
|
|
68
103
|
export { GeminiStreamAdapter } from "./providers/gemini.js";
|
|
69
104
|
/**
|
|
@@ -76,8 +111,8 @@ export { OpenRouterStreamAdapter } from "./providers/openrouter.js";
|
|
|
76
111
|
* @public (Experimental)
|
|
77
112
|
* Vercel AI SDK's `fullStream` tool-call part shape
|
|
78
113
|
* (`tool-input-start`/`-delta`/`-end`, `tool-call`, `tool-result`,
|
|
79
|
-
* `tool-error`, `finish`, `error`, `abort`). Verified against `ai@5.0.
|
|
80
|
-
* `ai@6.0.
|
|
114
|
+
* `tool-error`, `finish`, `error`, `abort`). Verified against `ai@5.0.244`,
|
|
115
|
+
* `ai@6.0.264`, `ai@7.0.77` - see docs/COMPATIBILITY.md. Prefer
|
|
81
116
|
* `createAiSdkExecutionGuard()` (Stable, above) for the common case; use
|
|
82
117
|
* this directly only if you need the adapter instance itself.
|
|
83
118
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,YAAY,EAEV,qBAAqB,EACrB,aAAa,EAGb,UAAU,EACV,cAAc,EACd,WAAW,EAGX,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EAGnB,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,mGAAmG;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,yFAAyF;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;;GAGG;AACH,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,YAAY,EACV,yBAAyB,EACzB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzF;;;;;;GAMG;AACH,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AAGrF;;;;;GAKG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,YAAY,EACV,qBAAqB,EACrB,gCAAgC,EAChC,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAGzB;;;;;GAKG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,YAAY,EAEV,qBAAqB,EACrB,aAAa,EAGb,UAAU,EACV,cAAc,EACd,WAAW,EAGX,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EAGnB,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,mGAAmG;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,yFAAyF;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;;GAGG;AACH,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,YAAY,EACV,yBAAyB,EACzB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzF;;;;;;GAMG;AACH,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AAGrF;;;;;GAKG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,YAAY,EACV,qBAAqB,EACrB,gCAAgC,EAChC,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAGzB;;;;;GAKG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEnG;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAG1F;;;;;;GAMG;AACH,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAOpE;;;;GAIG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;GAKG;AACH,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAEjF;;;;GAIG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;;GAMG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;GAIG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;;;GAQG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -50,6 +50,32 @@ export { createToolCallExecutionGate } from "./gate/gate.js";
|
|
|
50
50
|
* `docs/EXECUTION_GATE.md#high-level-guards`.
|
|
51
51
|
*/
|
|
52
52
|
export { createAiSdkExecutionGuard } from "./guard/ai-sdk.js";
|
|
53
|
+
/**
|
|
54
|
+
* @public (Experimental)
|
|
55
|
+
* Removes every AI SDK-invoked callback field capable of running caller code
|
|
56
|
+
* before this library's gate reaches a decision - `execute`,
|
|
57
|
+
* `onInputStart`, `onInputDelta`, and `onInputAvailable` (verified directly
|
|
58
|
+
* against `ai@5`/`ai@6`/`ai@7`'s own real source that all three fire
|
|
59
|
+
* unconditionally, with zero reference to `needsApproval` or approval
|
|
60
|
+
* status - `needsApproval: true` alone does not stop them). Also forces
|
|
61
|
+
* `needsApproval: true`, which still closes the `execute` gap on `ai@6`+ via
|
|
62
|
+
* the SDK's own approval mechanism. Also rejects two other classes of
|
|
63
|
+
* pre-decision caller code this library cannot neutralize by stripping
|
|
64
|
+
* fields: a function-valued `description` (`ai@7`+ invokes it during tool
|
|
65
|
+
* preparation, before the model call begins), and any provider tool shape
|
|
66
|
+
* whose real execution location cannot be verified from the object alone -
|
|
67
|
+
* `isProviderExecuted: true`, `ai@6`'s discriminator-less `{ type:
|
|
68
|
+
* "provider" }`, and `ai@5`'s discriminator-less `{ type: "provider-defined"
|
|
69
|
+
* }` are all rejected; `ai@7`'s `{ type: "provider", isProviderExecuted:
|
|
70
|
+
* false }` (verified to have no `execute` field at all, so the SDK can never
|
|
71
|
+
* auto-run it) is accepted. Real execution stays exactly where it already
|
|
72
|
+
* was: driven manually from one-shot `guard.takeDecision()`. See the function's
|
|
73
|
+
* own doc comment for the exact, precisely-scoped guarantee, its real
|
|
74
|
+
* limits, and the explicit non-sandbox threat-model boundary around
|
|
75
|
+
* caller-provided schema/validation code, and
|
|
76
|
+
* `docs/EXECUTION_GATE.md#execution-ownership-tool-resulttool-error-as-evidence`.
|
|
77
|
+
*/
|
|
78
|
+
export { createAiSdkExecutionLock } from "./guard/ai-sdk-execution-lock.js";
|
|
53
79
|
// Provider adapters for various LLM network shapes. Each is independently
|
|
54
80
|
// classified below - see docs/COMPATIBILITY.md for what "verified" means
|
|
55
81
|
// per adapter (a specific tested SDK version vs. a documented wire shape).
|
|
@@ -64,6 +90,7 @@ export { OpenAIStreamAdapter } from "./providers/openai.js";
|
|
|
64
90
|
* @public (Experimental)
|
|
65
91
|
* Generic OpenAI-compatible `choices[].delta.tool_calls[]` streaming
|
|
66
92
|
* shape, shared by OpenAI's current API and most compatible endpoints.
|
|
93
|
+
* Requires an explicit non-negative integer `choice.index` for identity.
|
|
67
94
|
*/
|
|
68
95
|
export { OpenAICompatibleStreamAdapter } from "./providers/openai-compatible.js";
|
|
69
96
|
/**
|
|
@@ -77,7 +104,7 @@ export { AnthropicStreamAdapter } from "./providers/anthropic.js";
|
|
|
77
104
|
* Gemini's structured `functionCall` shape. Unlike the other adapters,
|
|
78
105
|
* Gemini delivers function-call arguments as an already-parsed object, not
|
|
79
106
|
* incremental raw JSON text - see docs/COMPATIBILITY.md for what that
|
|
80
|
-
* means for this adapter's
|
|
107
|
+
* means for this adapter's inspection-only, non-executable projection.
|
|
81
108
|
*/
|
|
82
109
|
export { GeminiStreamAdapter } from "./providers/gemini.js";
|
|
83
110
|
/**
|
|
@@ -90,8 +117,8 @@ export { OpenRouterStreamAdapter } from "./providers/openrouter.js";
|
|
|
90
117
|
* @public (Experimental)
|
|
91
118
|
* Vercel AI SDK's `fullStream` tool-call part shape
|
|
92
119
|
* (`tool-input-start`/`-delta`/`-end`, `tool-call`, `tool-result`,
|
|
93
|
-
* `tool-error`, `finish`, `error`, `abort`). Verified against `ai@5.0.
|
|
94
|
-
* `ai@6.0.
|
|
120
|
+
* `tool-error`, `finish`, `error`, `abort`). Verified against `ai@5.0.244`,
|
|
121
|
+
* `ai@6.0.264`, `ai@7.0.77` - see docs/COMPATIBILITY.md. Prefer
|
|
95
122
|
* `createAiSdkExecutionGuard()` (Stable, above) for the common case; use
|
|
96
123
|
* this directly only if you need the adapter instance itself.
|
|
97
124
|
*/
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gCAAgC;AAChC,EAAE;AACF,sEAAsE;AACtE,iEAAiE;AACjE,gEAAgE;AAChE,sEAAsE;AACtE,0EAA0E;AAC1E,iEAAiE;AACjE,+DAA+D;AAC/D,0EAA0E;AAC1E,oCAAoC;AACpC,8EAA8E;AAE9E;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiC3C,mGAAmG;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,yFAAyF;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,kBAAkB;AAClB;;;GAGG;AACH,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAS/E;;;;;;GAMG;AACH,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AAErF,4BAA4B;AAC5B;;;;;GAKG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAY7D,8BAA8B;AAC9B;;;;;GAKG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gCAAgC;AAChC,EAAE;AACF,sEAAsE;AACtE,iEAAiE;AACjE,gEAAgE;AAChE,sEAAsE;AACtE,0EAA0E;AAC1E,iEAAiE;AACjE,+DAA+D;AAC/D,0EAA0E;AAC1E,oCAAoC;AACpC,8EAA8E;AAE9E;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiC3C,mGAAmG;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,yFAAyF;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,kBAAkB;AAClB;;;GAGG;AACH,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAS/E;;;;;;GAMG;AACH,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AAErF,4BAA4B;AAC5B;;;;;GAKG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAY7D,8BAA8B;AAC9B;;;;;GAKG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAG9D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAa5E,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,wEAAwE;AAExE;;;;GAIG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;GAKG;AACH,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAEjF;;;;GAIG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;;GAMG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;GAIG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;;;GAQG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -53,6 +53,8 @@ export declare class AiSdkStreamAdapter implements ProviderStreamAdapter<unknown
|
|
|
53
53
|
readonly provider: ProviderName;
|
|
54
54
|
private sequence;
|
|
55
55
|
private finished;
|
|
56
|
+
private readonly startedCallKeys;
|
|
57
|
+
private readonly endedCallKeys;
|
|
56
58
|
push(rawEvent: unknown): readonly NormalizedToolStreamEvent[];
|
|
57
59
|
finish(meta?: {
|
|
58
60
|
reason?: StreamEndReason;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-sdk.d.ts","sourceRoot":"","sources":["../../src/providers/ai-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACtG,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-sdk.d.ts","sourceRoot":"","sources":["../../src/providers/ai-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACtG,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAyBrD,UAAU,uBAAuB;IAC/B,IAAI,EAAE,kBAAkB,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,kBAAkB,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,qBAAqB;IAC7B,IAAI,EAAE,gBAAgB,CAAC;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAGnB;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAInB;AAED,UAAU,kBAAkB;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,eAAe,GACvB,uBAAuB,GACvB,uBAAuB,GACvB,qBAAqB,GACrB,iBAAiB,GACjB,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,cAAc,GACd,cAAc,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AA4B7C,qBAAa,kBAAmB,YAAW,qBAAqB,CAAC,OAAO,CAAC;IACvE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAY;IAC3C,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAEnD,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,yBAAyB,EAAE;IAiQ7D,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,eAAe,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,yBAAyB,EAAE;CAW3G"}
|