@polpo-ai/llm 0.17.3 → 0.18.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.
Files changed (42) hide show
  1. package/dist/gateway-runtime-adapter.d.ts.map +1 -1
  2. package/dist/gateway-runtime-adapter.js +6 -0
  3. package/dist/gateway-runtime-adapter.js.map +1 -1
  4. package/dist/index.d.ts +3 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +3 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/model-policy-turn.d.ts +3 -0
  9. package/dist/model-policy-turn.d.ts.map +1 -1
  10. package/dist/model-policy-turn.js +4 -1
  11. package/dist/model-policy-turn.js.map +1 -1
  12. package/dist/model-policy-turn.test.js +30 -0
  13. package/dist/model-policy-turn.test.js.map +1 -1
  14. package/dist/model-resolver.d.ts +3 -0
  15. package/dist/model-resolver.d.ts.map +1 -1
  16. package/dist/model-resolver.js +15 -0
  17. package/dist/model-resolver.js.map +1 -1
  18. package/dist/model-runtime-capabilities.d.ts +83 -0
  19. package/dist/model-runtime-capabilities.d.ts.map +1 -0
  20. package/dist/model-runtime-capabilities.js +215 -0
  21. package/dist/model-runtime-capabilities.js.map +1 -0
  22. package/dist/model-runtime-capabilities.test.d.ts +2 -0
  23. package/dist/model-runtime-capabilities.test.d.ts.map +1 -0
  24. package/dist/model-runtime-capabilities.test.js +101 -0
  25. package/dist/model-runtime-capabilities.test.js.map +1 -0
  26. package/dist/model-runtime.d.ts +3 -0
  27. package/dist/model-runtime.d.ts.map +1 -1
  28. package/dist/model-runtime.js.map +1 -1
  29. package/dist/provider-runtime-adapter.d.ts.map +1 -1
  30. package/dist/provider-runtime-adapter.js +5 -0
  31. package/dist/provider-runtime-adapter.js.map +1 -1
  32. package/dist/stream-turn.d.ts +11 -0
  33. package/dist/stream-turn.d.ts.map +1 -1
  34. package/dist/stream-turn.js +19 -2
  35. package/dist/stream-turn.js.map +1 -1
  36. package/dist/stream-turn.test.js +125 -2
  37. package/dist/stream-turn.test.js.map +1 -1
  38. package/dist/tool-schema.d.ts +24 -0
  39. package/dist/tool-schema.d.ts.map +1 -1
  40. package/dist/tool-schema.js +189 -15
  41. package/dist/tool-schema.js.map +1 -1
  42. package/package.json +2 -2
@@ -0,0 +1,215 @@
1
+ import { canonicalContractFingerprint, } from "@polpo-ai/core";
2
+ import { compileToolInputSchemaForRuntime } from "./tool-schema.js";
3
+ export const UNKNOWN_MODEL_RUNTIME_CAPABILITIES = Object.freeze({
4
+ tools: true,
5
+ providerStrictTools: "unknown",
6
+ structuredOutput: "unknown",
7
+ combinedToolsAndOutput: "unknown",
8
+ parallelToolCalls: "unknown",
9
+ providerExecutedTools: "unknown",
10
+ streamedToolInput: "unknown",
11
+ });
12
+ export function directProviderRuntimeCapabilities(provider) {
13
+ const normalized = provider.trim().toLowerCase();
14
+ if (["openai", "google", "xai"].includes(normalized)) {
15
+ return {
16
+ tools: true,
17
+ providerStrictTools: "supported",
18
+ structuredOutput: "native",
19
+ combinedToolsAndOutput: "unknown",
20
+ parallelToolCalls: normalized === "google" ? "unknown" : "supported",
21
+ providerExecutedTools: normalized === "openai" ? "supported" : "unknown",
22
+ streamedToolInput: "supported",
23
+ };
24
+ }
25
+ if (normalized === "anthropic") {
26
+ return {
27
+ ...UNKNOWN_MODEL_RUNTIME_CAPABILITIES,
28
+ tools: true,
29
+ providerStrictTools: "unsupported",
30
+ structuredOutput: "emulated",
31
+ parallelToolCalls: "supported",
32
+ streamedToolInput: "supported",
33
+ };
34
+ }
35
+ if (["groq", "mistral"].includes(normalized)) {
36
+ return {
37
+ ...UNKNOWN_MODEL_RUNTIME_CAPABILITIES,
38
+ tools: true,
39
+ structuredOutput: "emulated",
40
+ };
41
+ }
42
+ return { ...UNKNOWN_MODEL_RUNTIME_CAPABILITIES };
43
+ }
44
+ const strictnessByTool = new WeakMap();
45
+ /** Preserve Polpo strictness without adding provider-visible extension fields. */
46
+ export function markToolStrictness(tool, strictness) {
47
+ if (strictness)
48
+ strictnessByTool.set(tool, strictness);
49
+ return tool;
50
+ }
51
+ export class ToolCapabilityUnsupportedError extends Error {
52
+ toolName;
53
+ capability;
54
+ code = "tool_capability_unsupported";
55
+ constructor(toolName, capability) {
56
+ super(`Tool ${JSON.stringify(toolName)} requires provider-native strict input generation, but the selected runtime capability is ${capability}`);
57
+ this.toolName = toolName;
58
+ this.capability = capability;
59
+ this.name = "ToolCapabilityUnsupportedError";
60
+ }
61
+ }
62
+ export class ToolChoiceInvalidError extends Error {
63
+ code = "tool_choice_invalid";
64
+ constructor(message) {
65
+ super(message);
66
+ this.name = "ToolChoiceInvalidError";
67
+ }
68
+ }
69
+ export class OutputCapabilityUnsupportedError extends Error {
70
+ code = "output_capability_unsupported";
71
+ constructor(message) {
72
+ super(message);
73
+ this.name = "OutputCapabilityUnsupportedError";
74
+ }
75
+ }
76
+ /** Reject impossible tool/output plans before a provider request is created. */
77
+ export function assertModelTurnCapabilityPlan(input) {
78
+ const allNames = Object.keys(input.tools ?? {});
79
+ const activeNames = input.activeTools
80
+ ? input.activeTools.map(String)
81
+ : allNames;
82
+ const all = new Set(allNames);
83
+ const active = new Set(activeNames);
84
+ for (const name of active) {
85
+ if (!all.has(name)) {
86
+ throw new ToolChoiceInvalidError(`Active tool ${JSON.stringify(name)} is not present in the model-visible inventory`);
87
+ }
88
+ }
89
+ if (active.size > 0 && input.capabilities?.tools === false) {
90
+ throw new ToolCapabilityUnsupportedError(activeNames[0], "unsupported");
91
+ }
92
+ if (input.toolChoice === "required" && active.size === 0) {
93
+ throw new ToolChoiceInvalidError("toolChoice required needs at least one active tool");
94
+ }
95
+ if (input.toolChoice === "none" && active.size > 0) {
96
+ throw new ToolChoiceInvalidError("toolChoice none requires an empty model-visible tool inventory");
97
+ }
98
+ if (input.toolChoice && typeof input.toolChoice === "object") {
99
+ const forced = "toolName" in input.toolChoice
100
+ ? String(input.toolChoice.toolName)
101
+ : undefined;
102
+ if (forced && !active.has(forced)) {
103
+ throw new ToolChoiceInvalidError(`Forced tool ${JSON.stringify(forced)} is not active and model-visible`);
104
+ }
105
+ }
106
+ if (input.output !== undefined
107
+ && active.size > 0
108
+ && input.capabilities?.combinedToolsAndOutput !== "conformant") {
109
+ throw new OutputCapabilityUnsupportedError("Operational tools and terminal structured output require separate model turns for this runtime route");
110
+ }
111
+ if (input.output !== undefined && input.capabilities?.structuredOutput === "unsupported") {
112
+ throw new OutputCapabilityUnsupportedError("The selected runtime route does not support structured output");
113
+ }
114
+ }
115
+ export function prepareToolsForRuntimeCapabilities(tools, capabilities) {
116
+ if (!tools)
117
+ return { tools, warnings: [] };
118
+ const support = capabilities?.providerStrictTools ?? "unknown";
119
+ const warnings = [];
120
+ let changed = false;
121
+ const entries = Object.entries(tools).map(([name, tool]) => {
122
+ if (!tool || typeof tool !== "object")
123
+ return [name, tool];
124
+ const compiledSchema = compileToolInputSchemaForRuntime(tool.inputSchema, { preserveCanonicalConstraints: support === "supported" });
125
+ let preparedTool = tool;
126
+ if (compiledSchema.inputSchema !== preparedTool.inputSchema) {
127
+ preparedTool = { ...preparedTool, inputSchema: compiledSchema.inputSchema };
128
+ changed = true;
129
+ }
130
+ if (compiledSchema.constraintsLocalOnly) {
131
+ warnings.push({
132
+ type: "tool-schema-constraint-local-only",
133
+ toolName: name,
134
+ capability: support === "supported" ? "unknown" : support,
135
+ });
136
+ }
137
+ const strictness = strictnessByTool.get(tool);
138
+ if (!strictness || strictness === "execution")
139
+ return [name, preparedTool];
140
+ if (strictness === "provider-required" && support !== "supported") {
141
+ throw new ToolCapabilityUnsupportedError(name, support);
142
+ }
143
+ if (support === "supported") {
144
+ if (preparedTool.strict === true)
145
+ return [name, preparedTool];
146
+ changed = true;
147
+ return [name, { ...preparedTool, strict: true }];
148
+ }
149
+ warnings.push({
150
+ type: "tool-strictness-unavailable",
151
+ toolName: name,
152
+ requested: "provider-preferred",
153
+ capability: support,
154
+ });
155
+ if (!("strict" in preparedTool))
156
+ return [name, preparedTool];
157
+ changed = true;
158
+ const { strict: _strict, ...withoutStrict } = preparedTool;
159
+ return [name, withoutStrict];
160
+ });
161
+ return {
162
+ tools: (changed ? Object.fromEntries(entries) : tools),
163
+ warnings,
164
+ };
165
+ }
166
+ function normalizedToolChoice(value) {
167
+ if (value === "required" || value === "none" || value === "auto")
168
+ return value;
169
+ if (value && typeof value === "object" && "toolName" in value) {
170
+ return { tool: String(value.toolName) };
171
+ }
172
+ return "auto";
173
+ }
174
+ /** Build the immutable provider-neutral plan before any model network I/O. */
175
+ export function createEffectiveTurnPlan(input) {
176
+ const prepared = prepareToolsForRuntimeCapabilities(input.tools, input.capabilities);
177
+ assertModelTurnCapabilityPlan({
178
+ ...(prepared.tools ? { tools: prepared.tools } : {}),
179
+ ...(input.activeTools ? { activeTools: input.activeTools } : {}),
180
+ ...(input.toolChoice ? { toolChoice: input.toolChoice } : {}),
181
+ ...(input.output ? { output: input.output } : {}),
182
+ ...(input.capabilities ? { capabilities: input.capabilities } : {}),
183
+ });
184
+ const allNames = Object.keys(prepared.tools ?? {});
185
+ const activeTools = input.activeTools?.map(String) ?? allNames;
186
+ const active = new Set(activeTools);
187
+ const visibleTools = Object.entries(prepared.tools ?? {})
188
+ .filter(([name]) => active.has(name))
189
+ .map(([name, tool]) => {
190
+ const schema = tool && typeof tool === "object"
191
+ ? tool.inputSchema?.jsonSchema
192
+ : undefined;
193
+ return Object.freeze({
194
+ name,
195
+ inputSchemaFingerprint: canonicalContractFingerprint(schema ?? null),
196
+ providerStrict: Boolean(tool && typeof tool === "object" && tool.strict === true),
197
+ });
198
+ });
199
+ const capabilities = Object.freeze({
200
+ ...(input.capabilities ?? UNKNOWN_MODEL_RUNTIME_CAPABILITIES),
201
+ });
202
+ const plan = Object.freeze({
203
+ phase: input.output !== undefined && activeTools.length === 0
204
+ ? "terminal-output"
205
+ : "operational",
206
+ tools: Object.freeze(visibleTools),
207
+ activeTools: Object.freeze([...activeTools]),
208
+ toolChoice: normalizedToolChoice(input.toolChoice),
209
+ hasOutputContract: input.output !== undefined,
210
+ capabilities,
211
+ warnings: Object.freeze([...prepared.warnings]),
212
+ });
213
+ return { plan, preparedTools: prepared.tools };
214
+ }
215
+ //# sourceMappingURL=model-runtime-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-runtime-capabilities.js","sourceRoot":"","sources":["../src/model-runtime-capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=model-runtime-capabilities.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-runtime-capabilities.test.d.ts","sourceRoot":"","sources":["../src/model-runtime-capabilities.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,101 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { ToolCapabilityUnsupportedError, createEffectiveTurnPlan, directProviderRuntimeCapabilities, markToolStrictness, prepareToolsForRuntimeCapabilities, } from "./model-runtime-capabilities.js";
3
+ import { toValidatedToolInputSchema } from "./tool-schema.js";
4
+ const declaration = () => ({ inputSchema: { type: "object" } });
5
+ describe("model runtime capabilities", () => {
6
+ it.each(["openai", "google", "xai"])("declares verified provider strict tools for direct %s routes", (provider) => {
7
+ expect(directProviderRuntimeCapabilities(provider).providerStrictTools).toBe("supported");
8
+ });
9
+ it.each(["groq", "mistral", "custom"])("keeps unverified provider strictness conservative for %s", (provider) => {
10
+ expect(directProviderRuntimeCapabilities(provider).providerStrictTools).toBe("unknown");
11
+ });
12
+ it("does not claim Anthropic strict-tool support that its installed adapter cannot transmit", () => {
13
+ expect(directProviderRuntimeCapabilities("anthropic")).toMatchObject({
14
+ providerStrictTools: "unsupported",
15
+ structuredOutput: "emulated",
16
+ });
17
+ });
18
+ it("enables provider strictness only on a route declaring support", () => {
19
+ const preferred = markToolStrictness(declaration(), "provider-preferred");
20
+ const prepared = prepareToolsForRuntimeCapabilities({ lookup: preferred }, directProviderRuntimeCapabilities("openai"));
21
+ expect(prepared.tools?.lookup).toMatchObject({ strict: true });
22
+ expect(prepared.warnings).toEqual([]);
23
+ });
24
+ it("downgrades preferred strictness with a typed warning on unknown routes", () => {
25
+ const preferred = markToolStrictness({ ...declaration(), strict: true }, "provider-preferred");
26
+ const prepared = prepareToolsForRuntimeCapabilities({ lookup: preferred }, undefined);
27
+ expect(prepared.tools?.lookup).not.toHaveProperty("strict");
28
+ expect(prepared.warnings).toEqual([{
29
+ type: "tool-strictness-unavailable",
30
+ toolName: "lookup",
31
+ requested: "provider-preferred",
32
+ capability: "unknown",
33
+ }]);
34
+ });
35
+ it("rejects required provider strictness before inference on an unproved route", () => {
36
+ const required = markToolStrictness(declaration(), "provider-required");
37
+ expect(() => prepareToolsForRuntimeCapabilities({ write: required }, undefined))
38
+ .toThrow(ToolCapabilityUnsupportedError);
39
+ });
40
+ it("preserves the canonical provider schema on a verified direct route", () => {
41
+ const inputSchema = toValidatedToolInputSchema({
42
+ type: "object",
43
+ properties: { count: { type: "integer", minimum: 2 } },
44
+ required: ["count"],
45
+ additionalProperties: false,
46
+ });
47
+ const prepared = prepareToolsForRuntimeCapabilities({ lookup: { inputSchema } }, directProviderRuntimeCapabilities("openai"));
48
+ expect((prepared.tools?.lookup).inputSchema.jsonSchema)
49
+ .toMatchObject({ properties: { count: { minimum: 2 } } });
50
+ expect(prepared.warnings).toEqual([]);
51
+ });
52
+ it("reports constraints kept local on an unproved compatible route", () => {
53
+ const inputSchema = toValidatedToolInputSchema({
54
+ type: "object",
55
+ properties: { count: { type: "integer", minimum: 2 } },
56
+ required: ["count"],
57
+ });
58
+ const prepared = prepareToolsForRuntimeCapabilities({ lookup: { inputSchema } }, undefined);
59
+ expect((prepared.tools?.lookup).inputSchema.jsonSchema.properties.count)
60
+ .not.toHaveProperty("minimum");
61
+ expect(prepared.warnings).toContainEqual({
62
+ type: "tool-schema-constraint-local-only",
63
+ toolName: "lookup",
64
+ capability: "unknown",
65
+ });
66
+ });
67
+ it("freezes an exact operational and terminal plan", () => {
68
+ const capabilities = directProviderRuntimeCapabilities("openai");
69
+ const operational = createEffectiveTurnPlan({
70
+ tools: {
71
+ first: { inputSchema: toValidatedToolInputSchema({ type: "object" }) },
72
+ second: { inputSchema: toValidatedToolInputSchema({ type: "object" }) },
73
+ },
74
+ activeTools: ["second"],
75
+ toolChoice: { type: "tool", toolName: "second" },
76
+ capabilities,
77
+ });
78
+ expect(operational.plan).toMatchObject({
79
+ phase: "operational",
80
+ activeTools: ["second"],
81
+ toolChoice: { tool: "second" },
82
+ tools: [{ name: "second" }],
83
+ });
84
+ expect(Object.isFrozen(operational.plan)).toBe(true);
85
+ expect(Object.isFrozen(operational.plan.tools)).toBe(true);
86
+ const terminal = createEffectiveTurnPlan({
87
+ tools: {},
88
+ activeTools: [],
89
+ toolChoice: "none",
90
+ output: { type: "json" },
91
+ capabilities,
92
+ });
93
+ expect(terminal.plan).toMatchObject({
94
+ phase: "terminal-output",
95
+ activeTools: [],
96
+ toolChoice: "none",
97
+ hasOutputContract: true,
98
+ });
99
+ });
100
+ });
101
+ //# sourceMappingURL=model-runtime-capabilities.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-runtime-capabilities.test.js","sourceRoot":"","sources":["../src/model-runtime-capabilities.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { EmbeddingModel, LanguageModel, RerankingModel } from "ai";
2
2
  import type { ModelInvocationContext, ModelInvocationDetails, ModelInvocationUsage, ModelRef, ModelRuntimeMode, NormalizedModelError, UsageExtractionInput } from "@polpo-ai/core/model-runtime";
3
+ import type { ModelRuntimeCapabilities } from "./model-runtime-capabilities.js";
3
4
  export { MODEL_RUNTIME_MODES, isModelRuntimeMode, } from "@polpo-ai/core/model-runtime";
4
5
  export type { BillingOwner, CostSource, CredentialType, ModelInvocationContext, ModelInvocationDetails, ModelInvocationRecord, ModelInvocationStatus, ModelInvocationUsage, ModelOperation, ModelRef, ModelRuntimeMode, NormalizedModelError, UsageExtractionInput, } from "@polpo-ai/core/model-runtime";
5
6
  export interface InvocationContext extends ModelInvocationContext {
@@ -23,6 +24,8 @@ export interface ProviderOptionInput extends CreateModelInput {
23
24
  }
24
25
  export interface ModelRuntimeAdapter {
25
26
  mode: ModelRuntimeMode;
27
+ /** Capabilities for the concrete provider/model/endpoint selected by this adapter. */
28
+ resolveCapabilities?(input: CreateModelInput): ModelRuntimeCapabilities;
26
29
  createLanguageModel(input: CreateModelInput): Promise<LanguageModel> | LanguageModel;
27
30
  createEmbeddingModel?(input: CreateModelInput): Promise<EmbeddingModel> | EmbeddingModel;
28
31
  /** Optional host capability used by semantic retrieval after embedding. */
@@ -1 +1 @@
1
- {"version":3,"file":"model-runtime.d.ts","sourceRoot":"","sources":["../src/model-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,iBAAkB,SAAQ,sBAAsB;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,gBAAgB,CAAC;IACvB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;IACrF,oBAAoB,CAAC,CACnB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC;IAC5C,2EAA2E;IAC3E,oBAAoB,CAAC,CACnB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC;IAC5C,gBAAgB,CAAC,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACvE,gBAAgB,CAAC,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACvE,wBAAwB,CAAC,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC/E,iBAAiB,CAAC,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACxE,oBAAoB,CAAC,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACtI,YAAY,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,GAAG,oBAAoB,CAAC;IAChG,wBAAwB,CAAC,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,GAAG,sBAAsB,GAAG,SAAS,CAAC;IACzI,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAAC;CACrD"}
1
+ {"version":3,"file":"model-runtime.d.ts","sourceRoot":"","sources":["../src/model-runtime.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-runtime.js","sourceRoot":"","sources":["../src/model-runtime.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"model-runtime.js","sourceRoot":"","sources":["../src/model-runtime.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,8BAA8B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-runtime-adapter.d.ts","sourceRoot":"","sources":["../src/provider-runtime-adapter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,YAAY,EAEZ,sBAAsB,EACtB,oBAAoB,EACpB,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,WAAW,6BAA6B;IAC5C,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,eAAO,MAAM,mCAAmC,sEAOtC,CAAC;AAEX,wBAAgB,4BAA4B,CAAC,OAAO,GAAE,6BAAkC,GAAG,mBAAmB,CA2D7G;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAc1F;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,oBAAoB,EAC3B,YAAY,GAAE,YAAyB,GACtC,oBAAoB,CAItB;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAEjF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,oBAAoB,GAAG,sBAAsB,GAAG,SAAS,CAUhH"}
1
+ {"version":3,"file":"provider-runtime-adapter.d.ts","sourceRoot":"","sources":["../src/provider-runtime-adapter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,YAAY,EAEZ,sBAAsB,EACtB,oBAAoB,EACpB,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAS5B,MAAM,WAAW,6BAA6B;IAC5C,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,eAAO,MAAM,mCAAmC,sEAOtC,CAAC;AAEX,wBAAgB,4BAA4B,CAAC,OAAO,GAAE,6BAAkC,GAAG,mBAAmB,CA+D7G;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAc1F;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,oBAAoB,EAC3B,YAAY,GAAE,YAAyB,GACtC,oBAAoB,CAItB;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAEjF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,oBAAoB,GAAG,sBAAsB,GAAG,SAAS,CAUhH"}
@@ -7,6 +7,7 @@ import { createXai } from "@ai-sdk/xai";
7
7
  import { resolveApiKey } from "./api-keys.js";
8
8
  import { mapReasoningToProviderOptions } from "./provider-factory.js";
9
9
  import { classifyRuntimeError, extractLanguageModelUsage, } from "./runtime-normalization.js";
10
+ import { directProviderRuntimeCapabilities } from "./model-runtime-capabilities.js";
10
11
  export const SUPPORTED_DIRECT_LANGUAGE_PROVIDERS = [
11
12
  "openai",
12
13
  "anthropic",
@@ -19,6 +20,10 @@ export function createProviderRuntimeAdapter(options = {}) {
19
20
  const billingOwner = options.billingOwner ?? "external";
20
21
  return {
21
22
  mode: "provider",
23
+ resolveCapabilities(input) {
24
+ const { provider } = splitProviderModelRef(input.ref);
25
+ return directProviderRuntimeCapabilities(provider);
26
+ },
22
27
  createLanguageModel(input) {
23
28
  const { provider, modelId } = splitProviderModelRef(input.ref);
24
29
  const apiKey = options.apiKeyResolver?.(provider) ?? resolveApiKey(provider);
@@ -1 +1 @@
1
- {"version":3,"file":"provider-runtime-adapter.js","sourceRoot":"","sources":["../src/provider-runtime-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-runtime-adapter.js","sourceRoot":"","sources":["../src/provider-runtime-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
1
  import { Output, type FinishReason, type LanguageModel, type LanguageModelUsage, type ModelMessage, type ProviderMetadata, type StreamTextResult, type ToolChoice, type ToolSet, type TimeoutConfiguration, type TypedToolCall, type TypedToolResult } from "ai";
2
2
  import type { NormalizedModelError } from "./model-runtime.js";
3
+ import { type EffectiveTurnPlan, type ModelRuntimeCapabilities } from "./model-runtime-capabilities.js";
3
4
  export type ModelTurnErrorInfo = Omit<NormalizedModelError, "raw">;
4
5
  export type ModelTurnEvent<TOOLS extends ToolSet = ToolSet> = {
6
+ type: "warning";
7
+ warning: unknown;
8
+ } | {
5
9
  type: "reasoning-delta";
6
10
  id: string;
7
11
  text: string;
@@ -69,6 +73,9 @@ export type ModelTurnResult<TOOLS extends ToolSet = ToolSet> = {
69
73
  finishReason: FinishReason;
70
74
  rawFinishReason?: string;
71
75
  providerMetadata?: ProviderMetadata;
76
+ warnings?: unknown[];
77
+ /** Immutable plan admitted before the provider request. */
78
+ plan: EffectiveTurnPlan;
72
79
  responseMessages: unknown[];
73
80
  response?: Awaited<StreamTextResult<TOOLS, any>["response"]>;
74
81
  };
@@ -87,6 +94,10 @@ export type StreamModelTurnInput<TOOLS extends ToolSet = ToolSet> = {
87
94
  providerOptions?: Record<string, unknown>;
88
95
  abortSignal?: AbortSignal;
89
96
  output?: Output.Output<unknown, unknown, unknown>;
97
+ /** Capability proof for the concrete provider/model/adapter/endpoint. */
98
+ capabilities?: ModelRuntimeCapabilities;
99
+ /** Called after local admission and before any provider network I/O. */
100
+ onPlan?: (plan: EffectiveTurnPlan) => void | Promise<void>;
90
101
  };
91
102
  export declare function providerOptionsWithParallelToolCalls(providerOptions: Record<string, unknown> | undefined, parallelToolCalls: boolean | undefined): Record<string, unknown> | undefined;
92
103
  type ModelTransportIdentity = {
@@ -1 +1 @@
1
- {"version":3,"file":"stream-turn.d.ts","sourceRoot":"","sources":["../src/stream-turn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream-turn.d.ts","sourceRoot":"","sources":["../src/stream-turn.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { streamText, } from "ai";
2
+ import { assertToolInputSchemasAdmitted } from "./tool-schema.js";
3
+ import { createEffectiveTurnPlan, } from "./model-runtime-capabilities.js";
2
4
  export function providerOptionsWithParallelToolCalls(providerOptions, parallelToolCalls) {
3
5
  if (parallelToolCalls === undefined)
4
6
  return providerOptions;
@@ -421,12 +423,18 @@ function normalizeExecutableToolCalls(toolCalls) {
421
423
  return normalized;
422
424
  }
423
425
  export async function streamModelTurn(input, onEvent) {
426
+ const admitted = createEffectiveTurnPlan(input);
427
+ await assertToolInputSchemasAdmitted(admitted.preparedTools);
428
+ await input.onPlan?.(admitted.plan);
429
+ for (const warning of admitted.plan.warnings) {
430
+ await onEvent?.({ type: "warning", warning });
431
+ }
424
432
  const providerOptions = providerOptionsWithParallelToolCalls(input.providerOptions, input.parallelToolCalls);
425
433
  const result = streamText({
426
434
  model: input.model,
427
435
  ...(input.system ? { system: input.system } : {}),
428
436
  messages: prepareModelMessagesForTransport(input.messages, input.model),
429
- ...(input.tools ? { tools: input.tools } : {}),
437
+ ...(admitted.preparedTools ? { tools: admitted.preparedTools } : {}),
430
438
  ...(input.activeTools ? { activeTools: input.activeTools } : {}),
431
439
  ...(input.toolChoice ? { toolChoice: input.toolChoice } : {}),
432
440
  maxRetries: input.maxRetries ?? 2,
@@ -519,10 +527,13 @@ export async function streamModelTurn(input, onEvent) {
519
527
  const providerMetadataPromise = Promise.resolve()
520
528
  .then(() => result.providerMetadata)
521
529
  .catch(() => undefined);
530
+ const warningsPromise = Promise.resolve()
531
+ .then(() => result.warnings)
532
+ .catch(() => undefined);
522
533
  const toolResultsPromise = Promise.resolve()
523
534
  .then(() => result.toolResults)
524
535
  .catch(() => []);
525
- const [toolCalls, toolResults, usage, totalUsage, finishReason, rawFinishReason, response, providerMetadata] = await Promise.all([
536
+ const [toolCalls, toolResults, usage, totalUsage, finishReason, rawFinishReason, response, providerMetadata, warnings] = await Promise.all([
526
537
  result.toolCalls,
527
538
  toolResultsPromise,
528
539
  result.usage,
@@ -531,7 +542,11 @@ export async function streamModelTurn(input, onEvent) {
531
542
  result.rawFinishReason,
532
543
  responsePromise,
533
544
  providerMetadataPromise,
545
+ warningsPromise,
534
546
  ]);
547
+ for (const warning of warnings ?? []) {
548
+ await onEvent?.({ type: "warning", warning });
549
+ }
535
550
  const output = input.output && toolCalls.length === 0
536
551
  ? await result.output
537
552
  : undefined;
@@ -546,6 +561,8 @@ export async function streamModelTurn(input, onEvent) {
546
561
  finishReason,
547
562
  rawFinishReason,
548
563
  providerMetadata,
564
+ warnings: [...admitted.plan.warnings, ...(warnings ?? [])],
565
+ plan: admitted.plan,
549
566
  responseMessages: normalizeResponseMessagesForHistory(response?.messages ?? []),
550
567
  response,
551
568
  };