@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.
- package/dist/gateway-runtime-adapter.d.ts.map +1 -1
- package/dist/gateway-runtime-adapter.js +6 -0
- package/dist/gateway-runtime-adapter.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/model-policy-turn.d.ts +3 -0
- package/dist/model-policy-turn.d.ts.map +1 -1
- package/dist/model-policy-turn.js +4 -1
- package/dist/model-policy-turn.js.map +1 -1
- package/dist/model-policy-turn.test.js +30 -0
- package/dist/model-policy-turn.test.js.map +1 -1
- package/dist/model-resolver.d.ts +3 -0
- package/dist/model-resolver.d.ts.map +1 -1
- package/dist/model-resolver.js +15 -0
- package/dist/model-resolver.js.map +1 -1
- package/dist/model-runtime-capabilities.d.ts +83 -0
- package/dist/model-runtime-capabilities.d.ts.map +1 -0
- package/dist/model-runtime-capabilities.js +215 -0
- package/dist/model-runtime-capabilities.js.map +1 -0
- package/dist/model-runtime-capabilities.test.d.ts +2 -0
- package/dist/model-runtime-capabilities.test.d.ts.map +1 -0
- package/dist/model-runtime-capabilities.test.js +101 -0
- package/dist/model-runtime-capabilities.test.js.map +1 -0
- package/dist/model-runtime.d.ts +3 -0
- package/dist/model-runtime.d.ts.map +1 -1
- package/dist/model-runtime.js.map +1 -1
- package/dist/provider-runtime-adapter.d.ts.map +1 -1
- package/dist/provider-runtime-adapter.js +5 -0
- package/dist/provider-runtime-adapter.js.map +1 -1
- package/dist/stream-turn.d.ts +11 -0
- package/dist/stream-turn.d.ts.map +1 -1
- package/dist/stream-turn.js +19 -2
- package/dist/stream-turn.js.map +1 -1
- package/dist/stream-turn.test.js +125 -2
- package/dist/stream-turn.test.js.map +1 -1
- package/dist/tool-schema.d.ts +24 -0
- package/dist/tool-schema.d.ts.map +1 -1
- package/dist/tool-schema.js +189 -15
- package/dist/tool-schema.js.map +1 -1
- 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 @@
|
|
|
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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"}
|
package/dist/model-runtime.d.ts
CHANGED
|
@@ -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":"
|
|
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;
|
|
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":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAYxC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EACL,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"provider-runtime-adapter.js","sourceRoot":"","sources":["../src/provider-runtime-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/stream-turn.d.ts
CHANGED
|
@@ -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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"}
|
package/dist/stream-turn.js
CHANGED
|
@@ -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
|
-
...(
|
|
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
|
};
|