@polpo-ai/llm 0.15.39 → 0.15.40

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,16 @@
1
+ import type { ExecutionRouteClassifier } from "@polpo-ai/core/execution-router";
2
+ import { type LanguageModel } from "ai";
3
+ export interface StructuredExecutionRouteGenerationResult {
4
+ readonly output?: unknown;
5
+ }
6
+ export type StructuredExecutionRouteGenerate = (options: Record<string, unknown>) => Promise<StructuredExecutionRouteGenerationResult>;
7
+ export interface StructuredExecutionRouteClassifierOptions {
8
+ readonly model: LanguageModel;
9
+ /** Host-private classifier instructions; never part of user settings. */
10
+ readonly system?: string;
11
+ readonly providerOptions?: Record<string, Record<string, unknown>>;
12
+ /** Test/host injection point. Defaults to AI SDK generateText. */
13
+ readonly generate?: StructuredExecutionRouteGenerate;
14
+ }
15
+ export declare function createStructuredExecutionRouteClassifier(options: StructuredExecutionRouteClassifierOptions): ExecutionRouteClassifier;
16
+ //# sourceMappingURL=execution-route-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-route-classifier.d.ts","sourceRoot":"","sources":["../src/execution-route-classifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAGzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AA6B9D,MAAM,WAAW,wCAAwC;IACvD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,gCAAgC,GAAG,CAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,OAAO,CAAC,wCAAwC,CAAC,CAAC;AAEvD,MAAM,WAAW,yCAAyC;IACxD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnE,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,gCAAgC,CAAC;CACtD;AAED,wBAAgB,wCAAwC,CACtD,OAAO,EAAE,yCAAyC,GACjD,wBAAwB,CA6B1B"}
@@ -0,0 +1,49 @@
1
+ import { generateText, Output } from "ai";
2
+ import { z } from "zod";
3
+ const DEFAULT_EXECUTION_ROUTE_CLASSIFIER_SYSTEM = [
4
+ "Choose direct execution or exactly one allowed loop for the current request.",
5
+ "Use only a loop listed in the input.",
6
+ "Choose direct when a normal agent turn is sufficient or the choice is uncertain.",
7
+ "Return a confidence from 0 to 1 and a short reason that does not quote the request.",
8
+ "Never return a model, provider, tool, credential, or unlisted loop.",
9
+ ].join(" ");
10
+ const DirectExecutionRouteDecisionSchema = z.object({
11
+ mode: z.literal("direct"),
12
+ confidence: z.number().min(0).max(1),
13
+ reason: z.string().min(1).max(512),
14
+ }).strict();
15
+ const LoopExecutionRouteDecisionSchema = z.object({
16
+ mode: z.literal("loop"),
17
+ loop: z.string().min(1).max(128),
18
+ confidence: z.number().min(0).max(1),
19
+ reason: z.string().min(1).max(512),
20
+ }).strict();
21
+ const ExecutionRouteDecisionSchema = z.discriminatedUnion("mode", [
22
+ DirectExecutionRouteDecisionSchema,
23
+ LoopExecutionRouteDecisionSchema,
24
+ ]);
25
+ export function createStructuredExecutionRouteClassifier(options) {
26
+ const generate = options.generate
27
+ ?? generateText;
28
+ return Object.freeze({
29
+ async classify(input, classifierOptions) {
30
+ const response = await generate({
31
+ model: options.model,
32
+ system: options.system ?? DEFAULT_EXECUTION_ROUTE_CLASSIFIER_SYSTEM,
33
+ prompt: JSON.stringify(input),
34
+ output: Output.object({ schema: ExecutionRouteDecisionSchema }),
35
+ temperature: 0,
36
+ maxOutputTokens: 256,
37
+ abortSignal: classifierOptions.signal,
38
+ ...(options.providerOptions
39
+ ? { providerOptions: options.providerOptions }
40
+ : {}),
41
+ });
42
+ if (response.output === undefined || response.output === null) {
43
+ throw new Error("Execution route classifier did not return structured output");
44
+ }
45
+ return response.output;
46
+ },
47
+ });
48
+ }
49
+ //# sourceMappingURL=execution-route-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-route-classifier.js","sourceRoot":"","sources":["../src/execution-route-classifier.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAsB,MAAM,IAAI,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,yCAAyC,GAAG;IAChD,8EAA8E;IAC9E,sCAAsC;IACtC,kFAAkF;IAClF,qFAAqF;IACrF,qEAAqE;CACtE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,kCAAkC,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CACnC,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CACnC,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,4BAA4B,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAChE,kCAAkC;IAClC,gCAAgC;CACjC,CAAC,CAAC;AAmBH,MAAM,UAAU,wCAAwC,CACtD,OAAkD;IAElD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;WAC3B,YAA4D,CAAC;IAEnE,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,CAAC,QAAQ,CACZ,KAAoC,EACpC,iBAAkD;YAElD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC;gBAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,yCAAyC;gBACnE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;gBAC/D,WAAW,EAAE,CAAC;gBACd,eAAe,EAAE,GAAG;gBACpB,WAAW,EAAE,iBAAiB,CAAC,MAAM;gBACrC,GAAG,CAAC,OAAO,CAAC,eAAe;oBACzB,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE;oBAC9C,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC,MAAM,CAAC;QACzB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=execution-route-classifier.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-route-classifier.test.d.ts","sourceRoot":"","sources":["../src/execution-route-classifier.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,102 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { createStructuredExecutionRouteClassifier } from "./execution-route-classifier.js";
3
+ const input = Object.freeze({
4
+ version: 1,
5
+ surface: "channel",
6
+ source: "channel",
7
+ input: "Build a launch page.",
8
+ loops: Object.freeze([
9
+ Object.freeze({
10
+ name: "build",
11
+ label: "Build",
12
+ description: "Create or modify project files.",
13
+ }),
14
+ ]),
15
+ labels: Object.freeze(["telegram"]),
16
+ });
17
+ describe("createStructuredExecutionRouteClassifier", () => {
18
+ it("uses strict structured output and forwards only the compact router contract", async () => {
19
+ const generate = vi.fn(async () => ({
20
+ output: {
21
+ mode: "loop",
22
+ loop: "build",
23
+ confidence: 0.94,
24
+ reason: "The request needs a deterministic build workflow.",
25
+ },
26
+ }));
27
+ const classifier = createStructuredExecutionRouteClassifier({
28
+ model: { modelId: "test-router" },
29
+ generate,
30
+ });
31
+ const abort = new AbortController();
32
+ const result = await classifier.classify(input, {
33
+ signal: abort.signal,
34
+ });
35
+ expect(result).toEqual({
36
+ mode: "loop",
37
+ loop: "build",
38
+ confidence: 0.94,
39
+ reason: "The request needs a deterministic build workflow.",
40
+ });
41
+ expect(generate).toHaveBeenCalledOnce();
42
+ expect(generate).toHaveBeenCalledWith(expect.objectContaining({
43
+ model: { modelId: "test-router" },
44
+ abortSignal: abort.signal,
45
+ temperature: 0,
46
+ maxOutputTokens: 256,
47
+ output: expect.anything(),
48
+ system: expect.stringContaining("direct execution or exactly one allowed loop"),
49
+ prompt: JSON.stringify(input),
50
+ }));
51
+ const firstCall = generate.mock.calls[0];
52
+ const serialized = JSON.stringify(firstCall[0]);
53
+ expect(serialized).not.toContain("systemPrompt");
54
+ expect(serialized).not.toContain("allowedTools");
55
+ expect(serialized).not.toContain("modelId\":\"provider/");
56
+ });
57
+ it("supports direct decisions and rejects missing structured output", async () => {
58
+ const direct = createStructuredExecutionRouteClassifier({
59
+ model: {},
60
+ generate: vi.fn(async () => ({
61
+ output: {
62
+ mode: "direct",
63
+ confidence: 0.99,
64
+ reason: "A normal response is enough.",
65
+ },
66
+ })),
67
+ });
68
+ await expect(direct.classify(input, {
69
+ signal: new AbortController().signal,
70
+ })).resolves.toMatchObject({ mode: "direct" });
71
+ const missing = createStructuredExecutionRouteClassifier({
72
+ model: {},
73
+ generate: vi.fn(async () => ({ output: null })),
74
+ });
75
+ await expect(missing.classify(input, {
76
+ signal: new AbortController().signal,
77
+ })).rejects.toThrow("did not return structured output");
78
+ });
79
+ it("keeps classifier instructions host-private and forwards provider options", async () => {
80
+ const generate = vi.fn(async () => ({
81
+ output: {
82
+ mode: "direct",
83
+ confidence: 1,
84
+ reason: "Default",
85
+ },
86
+ }));
87
+ const classifier = createStructuredExecutionRouteClassifier({
88
+ model: {},
89
+ system: "private host classifier",
90
+ providerOptions: { gateway: { order: ["fast-provider"] } },
91
+ generate,
92
+ });
93
+ await classifier.classify(input, {
94
+ signal: new AbortController().signal,
95
+ });
96
+ expect(generate).toHaveBeenCalledWith(expect.objectContaining({
97
+ system: "private host classifier",
98
+ providerOptions: { gateway: { order: ["fast-provider"] } },
99
+ }));
100
+ });
101
+ });
102
+ //# sourceMappingURL=execution-route-classifier.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-route-classifier.test.js","sourceRoot":"","sources":["../src/execution-route-classifier.test.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -31,4 +31,6 @@ export { ModelPolicyTurnError, isCommittingModelTurnEvent, runModelPolicyTurn, }
31
31
  export type { ModelPolicyAttempt, ModelPolicyAttemptFailure, ModelPolicyAttemptResolution, ModelPolicyAttemptRunner, ModelPolicyEvent, ModelPolicyTurnResult, RunModelPolicyTurnInput, } from "./model-policy-turn.js";
32
32
  export { createStructuredModelRouteClassifier } from "./model-route-classifier.js";
33
33
  export type { StructuredModelRouteClassifierOptions, StructuredModelRouteGenerate, StructuredModelRouteGenerationResult, } from "./model-route-classifier.js";
34
+ export { createStructuredExecutionRouteClassifier, } from "./execution-route-classifier.js";
35
+ export type { StructuredExecutionRouteClassifierOptions, StructuredExecutionRouteGenerate, StructuredExecutionRouteGenerationResult, } from "./execution-route-classifier.js";
34
36
  //# sourceMappingURL=index.d.ts.map
@@ -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
@@ -44,4 +44,6 @@ export { toPortableToolInputSchema, toValidatedToolInputSchema, } from "./tool-s
44
44
  export { ModelPolicyTurnError, isCommittingModelTurnEvent, runModelPolicyTurn, } from "./model-policy-turn.js";
45
45
  // ─── Model Route Classifier ─────────────────────────
46
46
  export { createStructuredModelRouteClassifier } from "./model-route-classifier.js";
47
+ // ─── Execution Route Classifier ─────────────────────
48
+ export { createStructuredExecutionRouteClassifier, } from "./execution-route-classifier.js";
47
49
  //# sourceMappingURL=index.js.map
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,mCAAmC,GACpC,MAAM,kBAAkB,CAAC;AAO1B,uDAAuD;AACvD,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAE1B,uDAAuD;AACvD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAWhC,uDAAuD;AACvD,OAAO,EAAE,oCAAoC,EAAE,MAAM,6BAA6B,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,mCAAmC,GACpC,MAAM,kBAAkB,CAAC;AAO1B,uDAAuD;AACvD,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAE1B,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polpo-ai/llm",
3
- "version": "0.15.39",
3
+ "version": "0.15.40",
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",
@@ -26,7 +26,7 @@
26
26
  "@ai-sdk/xai": "3.0.108",
27
27
  "@hyperjump/json-schema": "1.17.7",
28
28
  "zod": "^4.3.6",
29
- "@polpo-ai/core": "0.15.39"
29
+ "@polpo-ai/core": "0.15.40"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "@ai-sdk/gateway": ">=3.0.0",