@polpo-ai/llm 0.15.141 → 0.15.142

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/dist/index.d.ts CHANGED
@@ -28,7 +28,7 @@ export { streamModelTurn, providerOptionsWithParallelToolCalls, normalizeRespons
28
28
  export type { ModelTurnErrorInfo, ModelTurnEvent, ModelTurnResult, StreamModelTurnInput, } from "./stream-turn.js";
29
29
  export { toPortableToolInputSchema, toValidatedToolInputSchema, validateJsonSchema, validateToolInput, } from "./tool-schema.js";
30
30
  export type { ToolInputValidationResult } from "./tool-schema.js";
31
- export { isStructuredModelOutputError, modelOutputForJsonSchema, } from "./model-output.js";
31
+ export { StructuredOutputDeltaGate, isStructuredModelOutputError, modelOutputForJsonSchema, } from "./model-output.js";
32
32
  export { ModelPolicyTurnError, isCommittingModelTurnEvent, runModelPolicyTurn, } from "./model-policy-turn.js";
33
33
  export type { ModelPolicyAttempt, ModelPolicyAttemptFailure, ModelPolicyAttemptResolution, ModelPolicyAttemptRunner, ModelPolicyEvent, ModelPolicyTurnResult, RunModelPolicyTurnInput, } from "./model-policy-turn.js";
34
34
  export { createStructuredModelRouteClassifier } from "./model-route-classifier.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -41,7 +41,7 @@ export { streamModelTurn, providerOptionsWithParallelToolCalls, normalizeRespons
41
41
  // ─── Portable Tool Schemas ──────────────────────────
42
42
  export { toPortableToolInputSchema, toValidatedToolInputSchema, validateJsonSchema, validateToolInput, } from "./tool-schema.js";
43
43
  // ─── Structured Model Outputs ───────────────────────
44
- export { isStructuredModelOutputError, modelOutputForJsonSchema, } from "./model-output.js";
44
+ export { StructuredOutputDeltaGate, isStructuredModelOutputError, modelOutputForJsonSchema, } from "./model-output.js";
45
45
  // ─── Model Policy Turn Primitive ────────────────────
46
46
  export { ModelPolicyTurnError, isCommittingModelTurnEvent, runModelPolicyTurn, } from "./model-policy-turn.js";
47
47
  // ─── Model Route Classifier ─────────────────────────
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,0DAA0D;AAC1D,OAAO,EACL,YAAY,EACZ,cAAc,GACf,MAAM,sBAAsB,CAAC;AAG9B,wDAAwD;AACxD,OAAO;AACL,kBAAkB;AAClB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,6BAA6B,EAC7B,iCAAiC,EACjC,YAAY;AACZ,wCAAwC;AACxC,aAAa,EACb,UAAU,EACV,0BAA0B;AAC1B,qBAAqB;AACrB,oBAAoB,EACpB,oBAAoB;AACpB,kBAAkB;AAClB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,qBAAqB;AACrB,sBAAsB;AACtB,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAO7B,wDAAwD;AACxD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAmB5B,wDAAwD;AACxD,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,+BAA+B,EAC/B,kCAAkC,EAClC,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AAGtC,wDAAwD;AACxD,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,gCAAgC,EAChC,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AAGvC,wDAAwD;AACxD,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AAGpC,yDAAyD;AACzD,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,6BAA6B,EAC7B,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,wDAAwD;AACxD,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,0DAA0D;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,wDAAwD;AACxD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,0DAA0D;AAC1D,OAAO,EACL,SAAS,EACT,WAAW,EACX,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,uDAAuD;AACvD,OAAO,EACL,eAAe,EACf,oCAAoC,EACpC,mCAAmC,EACnC,+BAA+B,EAC/B,gCAAgC,GACjC,MAAM,kBAAkB,CAAC;AAQ1B,uDAAuD;AACvD,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,uDAAuD;AACvD,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,uDAAuD;AACvD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAWhC,uDAAuD;AACvD,OAAO,EAAE,oCAAoC,EAAE,MAAM,6BAA6B,CAAC;AAOnF,uDAAuD;AACvD,OAAO,EACL,wCAAwC,GACzC,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,0DAA0D;AAC1D,OAAO,EACL,YAAY,EACZ,cAAc,GACf,MAAM,sBAAsB,CAAC;AAG9B,wDAAwD;AACxD,OAAO;AACL,kBAAkB;AAClB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,6BAA6B,EAC7B,iCAAiC,EACjC,YAAY;AACZ,wCAAwC;AACxC,aAAa,EACb,UAAU,EACV,0BAA0B;AAC1B,qBAAqB;AACrB,oBAAoB,EACpB,oBAAoB;AACpB,kBAAkB;AAClB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,qBAAqB;AACrB,sBAAsB;AACtB,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAO7B,wDAAwD;AACxD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAmB5B,wDAAwD;AACxD,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,+BAA+B,EAC/B,kCAAkC,EAClC,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AAGtC,wDAAwD;AACxD,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,gCAAgC,EAChC,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AAGvC,wDAAwD;AACxD,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AAGpC,yDAAyD;AACzD,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,6BAA6B,EAC7B,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,wDAAwD;AACxD,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,0DAA0D;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,wDAAwD;AACxD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,0DAA0D;AAC1D,OAAO,EACL,SAAS,EACT,WAAW,EACX,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,uDAAuD;AACvD,OAAO,EACL,eAAe,EACf,oCAAoC,EACpC,mCAAmC,EACnC,+BAA+B,EAC/B,gCAAgC,GACjC,MAAM,kBAAkB,CAAC;AAQ1B,uDAAuD;AACvD,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,uDAAuD;AACvD,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,uDAAuD;AACvD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAWhC,uDAAuD;AACvD,OAAO,EAAE,oCAAoC,EAAE,MAAM,6BAA6B,CAAC;AAOnF,uDAAuD;AACvD,OAAO,EACL,wCAAwC,GACzC,MAAM,iCAAiC,CAAC"}
@@ -3,4 +3,20 @@ import { Output } from "ai";
3
3
  export declare function modelOutputForJsonSchema(schema: unknown, name?: string): Output.Output<unknown, unknown, never>;
4
4
  /** True only for parsing/schema failures produced while resolving an AI SDK Output. */
5
5
  export declare function isStructuredModelOutputError(error: unknown): boolean;
6
+ /**
7
+ * Per-turn gate for streaming a structured answer's raw JSON text.
8
+ *
9
+ * Holds back leading whitespace and decides on the first meaningful character:
10
+ * a turn whose text opens with `{` or `[` is streamed delta by delta, anything
11
+ * else (prose before a tool call, fenced output) is never streamed and is left
12
+ * to the final validated serialization.
13
+ */
14
+ export declare class StructuredOutputDeltaGate {
15
+ private pending;
16
+ private state;
17
+ /** Returns the text to forward for this delta, if any. */
18
+ push(text: string): string | undefined;
19
+ /** True once any text of this turn has been forwarded. */
20
+ get streamed(): boolean;
21
+ }
6
22
  //# sourceMappingURL=model-output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-output.d.ts","sourceRoot":"","sources":["../src/model-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EAEP,MAAM,IAAI,CAAC;AAQZ,0FAA0F;AAC1F,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,OAAO,EACf,IAAI,SAAqB,GACxB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAKxC;AAED,uFAAuF;AACvF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAiBpE"}
1
+ {"version":3,"file":"model-output.d.ts","sourceRoot":"","sources":["../src/model-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EAEP,MAAM,IAAI,CAAC;AAQZ,0FAA0F;AAC1F,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,OAAO,EACf,IAAI,SAAqB,GACxB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAKxC;AAED,uFAAuF;AACvF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAiBpE;AAED;;;;;;;GAOG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,KAAK,CAA+C;IAE5D,0DAA0D;IAC1D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAWtC,0DAA0D;IAC1D,IAAI,QAAQ,IAAI,OAAO,CAEtB;CACF"}
@@ -28,4 +28,34 @@ export function isStructuredModelOutputError(error) {
28
28
  }
29
29
  return false;
30
30
  }
31
+ /**
32
+ * Per-turn gate for streaming a structured answer's raw JSON text.
33
+ *
34
+ * Holds back leading whitespace and decides on the first meaningful character:
35
+ * a turn whose text opens with `{` or `[` is streamed delta by delta, anything
36
+ * else (prose before a tool call, fenced output) is never streamed and is left
37
+ * to the final validated serialization.
38
+ */
39
+ export class StructuredOutputDeltaGate {
40
+ pending = "";
41
+ state = "undecided";
42
+ /** Returns the text to forward for this delta, if any. */
43
+ push(text) {
44
+ if (this.state === "json")
45
+ return text;
46
+ if (this.state === "other")
47
+ return undefined;
48
+ this.pending += text;
49
+ const trimmed = this.pending.trimStart();
50
+ if (!trimmed)
51
+ return undefined;
52
+ this.pending = "";
53
+ this.state = trimmed[0] === "{" || trimmed[0] === "[" ? "json" : "other";
54
+ return this.state === "json" ? trimmed : undefined;
55
+ }
56
+ /** True once any text of this turn has been forwarded. */
57
+ get streamed() {
58
+ return this.state === "json";
59
+ }
60
+ }
31
61
  //# sourceMappingURL=model-output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-output.js","sourceRoot":"","sources":["../src/model-output.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,MAAM,EACN,mBAAmB,GACpB,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE9D,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvE,OAAO,UAAU,IAAI,kBAAkB,CAAC;AAC1C,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,wBAAwB,CACtC,MAAe,EACf,IAAI,GAAG,kBAAkB;IAEzB,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,0BAA0B,CAAC,MAAM,CAAC;QAC1C,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC;KACvB,CAAC,CAAC;AACL,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,4BAA4B,CAAC,KAAc;IACzD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAW,CAAC;IACnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,IACE,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC;eACvC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC;eACvC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,EACrC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,OAAO;YACzD,CAAC,CAAE,OAA+B,CAAC,KAAK;YACxC,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"model-output.js","sourceRoot":"","sources":["../src/model-output.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,MAAM,EACN,mBAAmB,GACpB,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE9D,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvE,OAAO,UAAU,IAAI,kBAAkB,CAAC;AAC1C,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,wBAAwB,CACtC,MAAe,EACf,IAAI,GAAG,kBAAkB;IAEzB,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,0BAA0B,CAAC,MAAM,CAAC;QAC1C,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC;KACvB,CAAC,CAAC;AACL,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,4BAA4B,CAAC,KAAc;IACzD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAW,CAAC;IACnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,IACE,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC;eACvC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC;eACvC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,EACrC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,OAAO;YACzD,CAAC,CAAE,OAA+B,CAAC,KAAK;YACxC,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,yBAAyB;IAC5B,OAAO,GAAG,EAAE,CAAC;IACb,KAAK,GAAmC,WAAW,CAAC;IAE5D,0DAA0D;IAC1D,IAAI,CAAC,IAAY;QACf,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC;QAC7C,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACzE,OAAO,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IAED,0DAA0D;IAC1D,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=model-output.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-output.test.d.ts","sourceRoot":"","sources":["../src/model-output.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { StructuredOutputDeltaGate } from "./model-output.js";
3
+ describe("StructuredOutputDeltaGate", () => {
4
+ it("holds leading whitespace and streams a JSON turn delta by delta", () => {
5
+ const gate = new StructuredOutputDeltaGate();
6
+ expect(gate.push("\n ")).toBeUndefined();
7
+ expect(gate.streamed).toBe(false);
8
+ expect(gate.push(' {"a"')).toBe('{"a"');
9
+ expect(gate.push(": 1}")).toBe(": 1}");
10
+ expect(gate.streamed).toBe(true);
11
+ });
12
+ it("streams top-level arrays", () => {
13
+ const gate = new StructuredOutputDeltaGate();
14
+ expect(gate.push("[1,")).toBe("[1,");
15
+ });
16
+ it("never streams a turn that opens with prose or a fence", () => {
17
+ const prose = new StructuredOutputDeltaGate();
18
+ expect(prose.push("Let me check ")).toBeUndefined();
19
+ expect(prose.push('{"a":1}')).toBeUndefined();
20
+ expect(prose.streamed).toBe(false);
21
+ const fenced = new StructuredOutputDeltaGate();
22
+ expect(fenced.push("```json\n{")).toBeUndefined();
23
+ expect(fenced.streamed).toBe(false);
24
+ });
25
+ });
26
+ //# sourceMappingURL=model-output.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-output.test.js","sourceRoot":"","sources":["../src/model-output.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,IAAI,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,KAAK,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnC,MAAM,MAAM,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polpo-ai/llm",
3
- "version": "0.15.141",
3
+ "version": "0.15.142",
4
4
  "description": "LLM abstraction for Polpo — multi-provider model resolution, streaming, cost tracking, and failover built on Vercel AI SDK + AI Gateway",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,7 +27,7 @@
27
27
  "@hyperjump/browser": "1.4.0",
28
28
  "@hyperjump/json-schema": "1.17.7",
29
29
  "zod": "^4.3.6",
30
- "@polpo-ai/core": "0.15.141"
30
+ "@polpo-ai/core": "0.15.142"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@ai-sdk/gateway": ">=3.0.0",