@polpo-ai/llm 0.15.140 → 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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=custom-gateway-output.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-gateway-output.test.d.ts","sourceRoot":"","sources":["../src/custom-gateway-output.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,128 @@
1
+ import { afterEach, describe, expect, it, vi } from "vitest";
2
+ import { generateText, Output } from "ai";
3
+ import { createGatewayModel } from "./provider-factory.js";
4
+ import { modelOutputForJsonSchema } from "./model-output.js";
5
+ import { streamModelTurn } from "./stream-turn.js";
6
+ const schema = {
7
+ type: "object",
8
+ additionalProperties: false,
9
+ properties: {
10
+ goal: { type: "string" },
11
+ constraints: { type: "array", items: { type: "string" } },
12
+ },
13
+ required: ["goal", "constraints"],
14
+ };
15
+ const value = { goal: "Create the site", constraints: [] };
16
+ const messages = [{ role: "user", content: "Create a design brief." }];
17
+ function gateway() {
18
+ return createGatewayModel("openai", "gpt-5.6-luna", {
19
+ url: "https://custom-gateway.test/v1",
20
+ apiKey: "test-key",
21
+ headers: { "x-project": "test-project" },
22
+ });
23
+ }
24
+ function mockTransport(text = JSON.stringify(value), providerError) {
25
+ const requests = [];
26
+ vi.stubGlobal("fetch", vi.fn(async (url, init) => {
27
+ const body = JSON.parse(String(init?.body));
28
+ requests.push({ url: String(url), headers: new Headers(init?.headers), body });
29
+ if (providerError) {
30
+ return Response.json({ error: { message: providerError, type: "invalid_request_error", code: "invalid_json_schema" } }, { status: 400 });
31
+ }
32
+ if (body.stream) {
33
+ const parts = [
34
+ { id: "completion-test", created: 1, model: body.model, choices: [{ index: 0, delta: { role: "assistant", content: text }, finish_reason: null }] },
35
+ { id: "completion-test", created: 1, model: body.model, choices: [{ index: 0, delta: {}, finish_reason: "stop" }], usage: { prompt_tokens: 10, completion_tokens: 10, total_tokens: 20 } },
36
+ ];
37
+ return new Response(parts.map((part) => `data: ${JSON.stringify(part)}\n\n`).join("") + "data: [DONE]\n\n", {
38
+ headers: { "Content-Type": "text/event-stream" },
39
+ });
40
+ }
41
+ return Response.json({
42
+ id: "completion-test", created: 1, model: body.model,
43
+ choices: [{ index: 0, message: { role: "assistant", content: text }, finish_reason: "stop" }],
44
+ usage: { prompt_tokens: 10, completion_tokens: 10, total_tokens: 20 },
45
+ });
46
+ }));
47
+ return requests;
48
+ }
49
+ afterEach(() => vi.unstubAllGlobals());
50
+ describe("custom gateway structured output HTTP contract", () => {
51
+ it.each([false, true])("sends the full strict schema (stream=%s)", async (stream) => {
52
+ const requests = mockTransport();
53
+ const output = modelOutputForJsonSchema(schema, "design_brief");
54
+ const result = stream
55
+ ? await streamModelTurn({ model: gateway(), messages, output })
56
+ : await generateText({ model: gateway(), messages, output, maxRetries: 0 });
57
+ expect(result.output).toEqual(value);
58
+ expect(requests).toHaveLength(1);
59
+ expect(requests[0].url).toBe("https://custom-gateway.test/v1/chat/completions");
60
+ expect(requests[0].headers.get("authorization")).toBe("Bearer test-key");
61
+ expect(requests[0].headers.get("x-project")).toBe("test-project");
62
+ expect(requests[0].body.model).toBe("openai/gpt-5.6-luna");
63
+ expect(requests[0].body.response_format).toEqual({
64
+ type: "json_schema",
65
+ json_schema: { name: "design_brief", strict: true, schema },
66
+ });
67
+ });
68
+ it("keeps explicit JSON mode without a schema", async () => {
69
+ const requests = mockTransport();
70
+ await streamModelTurn({ model: gateway(), messages, output: Output.json() });
71
+ expect(requests[0].body.response_format).toEqual({ type: "json_object" });
72
+ });
73
+ it("does not add a response format to ordinary text requests", async () => {
74
+ const requests = mockTransport("Hello");
75
+ const result = await streamModelTurn({ model: gateway(), messages });
76
+ expect(result.text).toBe("Hello");
77
+ expect(requests[0].body).not.toHaveProperty("response_format");
78
+ });
79
+ it.each(['{"goal":42,"constraints":[]}', '{"goal":"Site"}', "not JSON"])("still rejects a nonconforming gateway response: %s", async (text) => {
80
+ const requests = mockTransport(text);
81
+ await expect(streamModelTurn({
82
+ model: gateway(), messages, output: modelOutputForJsonSchema(schema),
83
+ })).rejects.toThrow();
84
+ expect(requests).toHaveLength(1);
85
+ expect(requests[0].body.response_format.type).toBe("json_schema");
86
+ });
87
+ it("preserves a provider schema error and never retries with JSON mode", async () => {
88
+ const message = "Invalid schema: every property must be required";
89
+ const requests = mockTransport("", message);
90
+ await expect(streamModelTurn({
91
+ model: gateway(), messages, output: modelOutputForJsonSchema(schema),
92
+ })).rejects.toMatchObject({ statusCode: 400, message });
93
+ expect(requests).toHaveLength(1);
94
+ expect(requests[0].body.response_format.json_schema.strict).toBe(true);
95
+ });
96
+ it("does not silently rewrite optional properties or mutate the consumer schema", async () => {
97
+ const optionalSchema = { ...schema, required: ["goal"] };
98
+ const original = structuredClone(optionalSchema);
99
+ const requests = mockTransport();
100
+ await streamModelTurn({
101
+ model: gateway(), messages, output: modelOutputForJsonSchema(optionalSchema),
102
+ });
103
+ expect(requests[0].body.response_format.json_schema.schema).toEqual(original);
104
+ expect(optionalSchema).toEqual(original);
105
+ });
106
+ it("preserves required nullable fields and nested schemas", async () => {
107
+ const nestedSchema = {
108
+ ...schema,
109
+ properties: {
110
+ ...schema.properties,
111
+ details: {
112
+ anyOf: [
113
+ { type: "null" },
114
+ { type: "object", additionalProperties: false, properties: { note: { type: "string" } }, required: ["note"] },
115
+ ],
116
+ },
117
+ },
118
+ required: [...schema.required, "details"],
119
+ };
120
+ const requests = mockTransport(JSON.stringify({ ...value, details: null }));
121
+ const result = await streamModelTurn({
122
+ model: gateway(), messages, output: modelOutputForJsonSchema(nestedSchema),
123
+ });
124
+ expect(result.output).toEqual({ ...value, details: null });
125
+ expect(requests[0].body.response_format.json_schema.schema).toEqual(nestedSchema);
126
+ });
127
+ });
128
+ //# sourceMappingURL=custom-gateway-output.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-gateway-output.test.js","sourceRoot":"","sources":["../src/custom-gateway-output.test.ts"],"names":[],"mappings":"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"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-factory.d.ts","sourceRoot":"","sources":["../src/provider-factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAIxC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,cAAc,GACvB,aAAa,CAaf;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,aAAa,CAiB3G;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,cAAc,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CA6DrD;AAWD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,cAAc,EAC1B,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAUrC"}
1
+ {"version":3,"file":"provider-factory.d.ts","sourceRoot":"","sources":["../src/provider-factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAIxC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,cAAc,GACvB,aAAa,CAaf;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,aAAa,CAmB3G;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,cAAc,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CA6DrD;AAWD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,cAAc,EAC1B,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAUrC"}
@@ -46,6 +46,8 @@ export function createGatewayModel(provider, modelId, config) {
46
46
  name: "gateway",
47
47
  apiKey: config.apiKey,
48
48
  headers: config.headers,
49
+ // Without this, the adapter silently drops output schemas and sends json_object.
50
+ supportsStructuredOutputs: true,
49
51
  });
50
52
  const modelSpec = `${provider}/${modelId}`;
51
53
  return gatewayProvider.languageModel(modelSpec);
@@ -1 +1 @@
1
- {"version":3,"file":"provider-factory.js","sourceRoot":"","sources":["../src/provider-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-factory.js","sourceRoot":"","sources":["../src/provider-factory.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polpo-ai/llm",
3
- "version": "0.15.140",
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.140"
30
+ "@polpo-ai/core": "0.15.142"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@ai-sdk/gateway": ">=3.0.0",