@dbx-tools/shared-model 0.9.40 → 0.9.46
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/exports.ts +21 -20
- package/index.ts +2 -2
- package/lib/exports.d.ts +1 -2
- package/lib/exports.js +2 -3
- package/lib/index.d.ts +2 -2
- package/lib/index.js +3 -3
- package/lib/src/contracts.d.ts +279 -184
- package/lib/src/contracts.js +243 -2
- package/lib/src/model.d.ts +4 -218
- package/lib/src/model.js +5 -41
- package/lib/src/openai-chat.d.ts +54 -62
- package/lib/src/openai-chat.js +70 -10
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -3
- package/src/contracts.ts +300 -198
- package/src/model.ts +4 -123
- package/src/openai-chat.ts +90 -69
- package/lib/src/generated/_schemas.d.ts +0 -168
- package/lib/src/generated/_schemas.js +0 -111
- package/src/generated/_schemas.ts +0 -127
package/src/openai-chat.ts
CHANGED
|
@@ -8,60 +8,84 @@
|
|
|
8
8
|
* whereas the wire payload itself is the stable contract every caller in this
|
|
9
9
|
* repo actually codes against.
|
|
10
10
|
*
|
|
11
|
-
* Pure types plus one text-flattening helper - no zod, no runtime deps - so a
|
|
12
|
-
* browser client, a Node proxy, and an AppKit plugin can all agree on the shape
|
|
13
|
-
* without any of them pulling in the others' dependencies.
|
|
14
|
-
*
|
|
15
11
|
* @module
|
|
16
12
|
*/
|
|
17
13
|
|
|
18
|
-
|
|
19
|
-
* The roles OpenAI defines for a chat turn. {@link ChatMessage.role} is typed as
|
|
20
|
-
* a plain string rather than this union, because providers add their own (for
|
|
21
|
-
* example Databricks-hosted Claude replays a `"reasoning"` turn); use this when
|
|
22
|
-
* you want the standard set named.
|
|
23
|
-
*/
|
|
24
|
-
export type ChatRole = "system" | "developer" | "user" | "assistant" | "tool";
|
|
14
|
+
import { z } from "zod";
|
|
25
15
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
export interface ChatContentPart {
|
|
32
|
-
type?: string;
|
|
33
|
-
text?: string;
|
|
34
|
-
[key: string]: unknown;
|
|
35
|
-
}
|
|
16
|
+
export const ChatRoleSchema = z
|
|
17
|
+
.enum(["system", "developer", "user", "assistant", "tool"])
|
|
18
|
+
.describe(
|
|
19
|
+
"Standard OpenAI chat roles. Message.role stays a plain string because providers add values such as reasoning.",
|
|
20
|
+
);
|
|
36
21
|
|
|
37
|
-
|
|
38
|
-
export interface ChatToolCallFunction {
|
|
39
|
-
name: string;
|
|
40
|
-
/** JSON-encoded argument object. Streamed in fragments, so assemble before parsing. */
|
|
41
|
-
arguments: string;
|
|
42
|
-
}
|
|
22
|
+
export type ChatRole = z.infer<typeof ChatRoleSchema>;
|
|
43
23
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
24
|
+
export const ChatContentPartSchema = z
|
|
25
|
+
.object({
|
|
26
|
+
type: z
|
|
27
|
+
.string()
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("Part discriminator, such as text, input_text, or output_text."),
|
|
30
|
+
text: z.string().optional().describe("Plain-text payload carried by this part when present."),
|
|
31
|
+
})
|
|
32
|
+
.catchall(z.unknown())
|
|
33
|
+
.describe(
|
|
34
|
+
"One entry of a structured content array. Extra provider keys round-trip through the catch-all.",
|
|
35
|
+
);
|
|
51
36
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
37
|
+
export type ChatContentPart = z.infer<typeof ChatContentPartSchema>;
|
|
38
|
+
|
|
39
|
+
export const ChatToolCallFunctionSchema = z
|
|
40
|
+
.object({
|
|
41
|
+
name: z.string().describe("Function name the model wants to invoke."),
|
|
42
|
+
arguments: z
|
|
43
|
+
.string()
|
|
44
|
+
.describe("JSON-encoded argument object. Streamed in fragments, so assemble before parsing."),
|
|
45
|
+
})
|
|
46
|
+
.describe("The function a tool call invokes, with its arguments as a JSON string.");
|
|
47
|
+
|
|
48
|
+
export type ChatToolCallFunction = z.infer<typeof ChatToolCallFunctionSchema>;
|
|
49
|
+
|
|
50
|
+
export const ChatToolCallSchema = z
|
|
51
|
+
.object({
|
|
52
|
+
id: z.string().describe("Tool-call identifier echoed on the matching tool message."),
|
|
53
|
+
type: z
|
|
54
|
+
.string()
|
|
55
|
+
.describe("Tool type. function in practice; widened so unrecognized values round-trip."),
|
|
56
|
+
function: ChatToolCallFunctionSchema.describe(
|
|
57
|
+
"Function name and JSON arguments for this call.",
|
|
58
|
+
),
|
|
59
|
+
})
|
|
60
|
+
.describe("One tool call attached to an assistant turn.");
|
|
61
|
+
|
|
62
|
+
export type ChatToolCall = z.infer<typeof ChatToolCallSchema>;
|
|
63
|
+
|
|
64
|
+
export const ChatMessageSchema = z
|
|
65
|
+
.object({
|
|
66
|
+
role: z
|
|
67
|
+
.string()
|
|
68
|
+
.describe(
|
|
69
|
+
"Message author. See ChatRole for the standard values; widened for provider extensions.",
|
|
70
|
+
),
|
|
71
|
+
content: z
|
|
72
|
+
.union([z.string(), ChatContentPartSchema, z.array(ChatContentPartSchema)])
|
|
73
|
+
.nullable()
|
|
74
|
+
.optional()
|
|
75
|
+
.describe("Message body. Null when an assistant turn only calls tools."),
|
|
76
|
+
tool_calls: z
|
|
77
|
+
.array(ChatToolCallSchema)
|
|
78
|
+
.optional()
|
|
79
|
+
.describe("Tool calls attached to an assistant turn."),
|
|
80
|
+
tool_call_id: z
|
|
81
|
+
.string()
|
|
82
|
+
.optional()
|
|
83
|
+
.describe("Set on a tool turn, keying it back to the call it answers."),
|
|
84
|
+
name: z.string().optional().describe("Optional speaker or function name."),
|
|
85
|
+
})
|
|
86
|
+
.describe("A single chat message in an OpenAI Chat Completions request or response.");
|
|
87
|
+
|
|
88
|
+
export type ChatMessage = z.infer<typeof ChatMessageSchema>;
|
|
65
89
|
|
|
66
90
|
/**
|
|
67
91
|
* Top-level request fields an OpenAI client may send that Databricks Model
|
|
@@ -80,10 +104,7 @@ export interface ChatMessage {
|
|
|
80
104
|
* paths that forward a client body largely as-is.
|
|
81
105
|
*/
|
|
82
106
|
export const UNSUPPORTED_CHAT_FIELDS: readonly string[] = [
|
|
83
|
-
// Tool-calling concurrency hint. Databricks rejects it; the upstream provider
|
|
84
|
-
// decides parallelism itself.
|
|
85
107
|
"parallel_tool_calls",
|
|
86
|
-
// Response-persistence and bookkeeping fields for OpenAI's own platform.
|
|
87
108
|
"store",
|
|
88
109
|
"metadata",
|
|
89
110
|
"service_tier",
|
|
@@ -112,21 +133,20 @@ export function stripUnsupportedChatFields(
|
|
|
112
133
|
return dropped;
|
|
113
134
|
}
|
|
114
135
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
136
|
+
export const ChatContentToTextOptionsSchema = z
|
|
137
|
+
.object({
|
|
138
|
+
separator: z
|
|
139
|
+
.string()
|
|
140
|
+
.optional()
|
|
141
|
+
.describe("Placed between parts. Defaults to empty, which reassembles transport-split text."),
|
|
142
|
+
types: z
|
|
143
|
+
.array(z.string())
|
|
144
|
+
.optional()
|
|
145
|
+
.describe("Restrict flattening to these part type values when set."),
|
|
146
|
+
})
|
|
147
|
+
.describe("Options for flattening structured chat content to plain text.");
|
|
148
|
+
|
|
149
|
+
export type ChatContentToTextOptions = z.infer<typeof ChatContentToTextOptionsSchema>;
|
|
130
150
|
|
|
131
151
|
/**
|
|
132
152
|
* Normalize structured chat content to an array. Providers usually emit a
|
|
@@ -141,9 +161,10 @@ export function chatContentParts(content: unknown): ChatContentPart[] | undefine
|
|
|
141
161
|
? [content]
|
|
142
162
|
: undefined;
|
|
143
163
|
if (!values) return undefined;
|
|
144
|
-
return values.
|
|
145
|
-
|
|
146
|
-
|
|
164
|
+
return values.flatMap((part) => {
|
|
165
|
+
const parsed = ChatContentPartSchema.safeParse(part);
|
|
166
|
+
return parsed.success ? [parsed.data] : [];
|
|
167
|
+
});
|
|
147
168
|
}
|
|
148
169
|
|
|
149
170
|
/**
|
|
@@ -160,7 +181,7 @@ export function chatContentToText(
|
|
|
160
181
|
if (typeof content === "string") return content;
|
|
161
182
|
const normalized = chatContentParts(content);
|
|
162
183
|
if (!normalized) return "";
|
|
163
|
-
const { separator = "", types } = options;
|
|
184
|
+
const { separator = "", types } = ChatContentToTextOptionsSchema.parse(options);
|
|
164
185
|
const parts: string[] = [];
|
|
165
186
|
for (const part of normalized) {
|
|
166
187
|
if (types && (typeof part.type !== "string" || !types.includes(part.type))) continue;
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
/** Browser-safe model contracts owned by the TypeScript model runtime. */
|
|
3
|
-
/** Intent-oriented endpoint class slug. */
|
|
4
|
-
export declare const modelClassSchema: z.ZodUnion<readonly [z.ZodLiteral<"chat-thinking">, z.ZodLiteral<"chat-balanced">, z.ZodLiteral<"chat-fast">, z.ZodLiteral<"embedding">]>;
|
|
5
|
-
/** Reasoning effort value accepted by compatible model endpoints. */
|
|
6
|
-
export declare const reasoningEffortSchema: z.ZodUnion<readonly [z.ZodLiteral<"none">, z.ZodLiteral<"minimal">, z.ZodLiteral<"low">, z.ZodLiteral<"medium">, z.ZodLiteral<"high">, z.ZodLiteral<"xhigh">, z.ZodLiteral<"max">]>;
|
|
7
|
-
/** Relative quality, speed, and cost scores for an endpoint. */
|
|
8
|
-
export declare const modelProfileSchema: z.ZodObject<{
|
|
9
|
-
quality: z.ZodOptional<z.ZodNumber>;
|
|
10
|
-
speed: z.ZodOptional<z.ZodNumber>;
|
|
11
|
-
cost: z.ZodOptional<z.ZodNumber>;
|
|
12
|
-
}, z.core.$strip>;
|
|
13
|
-
/** Model retirement status. */
|
|
14
|
-
export declare const modelStatusSchema: z.ZodObject<{
|
|
15
|
-
deprecated: z.ZodDefault<z.ZodBoolean>;
|
|
16
|
-
}, z.core.$strip>;
|
|
17
|
-
/** Browser-safe normalized Model Serving endpoint metadata. */
|
|
18
|
-
export declare const servingEndpointSummarySchema: z.ZodObject<{
|
|
19
|
-
name: z.ZodString;
|
|
20
|
-
displayName: z.ZodOptional<z.ZodString>;
|
|
21
|
-
family: z.ZodOptional<z.ZodString>;
|
|
22
|
-
task: z.ZodOptional<z.ZodString>;
|
|
23
|
-
state: z.ZodOptional<z.ZodString>;
|
|
24
|
-
description: z.ZodOptional<z.ZodString>;
|
|
25
|
-
supportsTools: z.ZodOptional<z.ZodBoolean>;
|
|
26
|
-
profile: z.ZodOptional<z.ZodObject<{
|
|
27
|
-
quality: z.ZodOptional<z.ZodNumber>;
|
|
28
|
-
speed: z.ZodOptional<z.ZodNumber>;
|
|
29
|
-
cost: z.ZodOptional<z.ZodNumber>;
|
|
30
|
-
}, z.core.$strip>>;
|
|
31
|
-
class: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"chat-thinking">, z.ZodLiteral<"chat-balanced">, z.ZodLiteral<"chat-fast">, z.ZodLiteral<"embedding">]>>;
|
|
32
|
-
serviceNames: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
33
|
-
modelServiceName: z.ZodOptional<z.ZodString>;
|
|
34
|
-
reasoningEfforts: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"none">, z.ZodLiteral<"minimal">, z.ZodLiteral<"low">, z.ZodLiteral<"medium">, z.ZodLiteral<"high">, z.ZodLiteral<"xhigh">, z.ZodLiteral<"max">]>>>;
|
|
35
|
-
status: z.ZodOptional<z.ZodObject<{
|
|
36
|
-
deprecated: z.ZodDefault<z.ZodBoolean>;
|
|
37
|
-
}, z.core.$strip>>;
|
|
38
|
-
dimension: z.ZodOptional<z.ZodNumber>;
|
|
39
|
-
}, z.core.$strip>;
|
|
40
|
-
/** Browser-safe model catalogue search and ranking controls. */
|
|
41
|
-
export declare const modelQuerySchema: z.ZodObject<{
|
|
42
|
-
search: z.ZodOptional<z.ZodString>;
|
|
43
|
-
modelClass: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"chat-thinking">, z.ZodLiteral<"chat-balanced">, z.ZodLiteral<"chat-fast">, z.ZodLiteral<"embedding">]>>;
|
|
44
|
-
requiresTools: z.ZodOptional<z.ZodBoolean>;
|
|
45
|
-
includeDeprecated: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
-
limit: z.ZodOptional<z.ZodNumber>;
|
|
47
|
-
threshold: z.ZodOptional<z.ZodNumber>;
|
|
48
|
-
}, z.core.$strip>;
|
|
49
|
-
/** One ranked model-search result. */
|
|
50
|
-
export declare const rankedModelSchema: z.ZodObject<{
|
|
51
|
-
endpoint: z.ZodObject<{
|
|
52
|
-
name: z.ZodString;
|
|
53
|
-
displayName: z.ZodOptional<z.ZodString>;
|
|
54
|
-
family: z.ZodOptional<z.ZodString>;
|
|
55
|
-
task: z.ZodOptional<z.ZodString>;
|
|
56
|
-
state: z.ZodOptional<z.ZodString>;
|
|
57
|
-
description: z.ZodOptional<z.ZodString>;
|
|
58
|
-
supportsTools: z.ZodOptional<z.ZodBoolean>;
|
|
59
|
-
profile: z.ZodOptional<z.ZodObject<{
|
|
60
|
-
quality: z.ZodOptional<z.ZodNumber>;
|
|
61
|
-
speed: z.ZodOptional<z.ZodNumber>;
|
|
62
|
-
cost: z.ZodOptional<z.ZodNumber>;
|
|
63
|
-
}, z.core.$strip>>;
|
|
64
|
-
class: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"chat-thinking">, z.ZodLiteral<"chat-balanced">, z.ZodLiteral<"chat-fast">, z.ZodLiteral<"embedding">]>>;
|
|
65
|
-
serviceNames: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
66
|
-
modelServiceName: z.ZodOptional<z.ZodString>;
|
|
67
|
-
reasoningEfforts: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"none">, z.ZodLiteral<"minimal">, z.ZodLiteral<"low">, z.ZodLiteral<"medium">, z.ZodLiteral<"high">, z.ZodLiteral<"xhigh">, z.ZodLiteral<"max">]>>>;
|
|
68
|
-
status: z.ZodOptional<z.ZodObject<{
|
|
69
|
-
deprecated: z.ZodDefault<z.ZodBoolean>;
|
|
70
|
-
}, z.core.$strip>>;
|
|
71
|
-
dimension: z.ZodOptional<z.ZodNumber>;
|
|
72
|
-
}, z.core.$strip>;
|
|
73
|
-
modelClass: z.ZodUnion<readonly [z.ZodLiteral<"chat-thinking">, z.ZodLiteral<"chat-balanced">, z.ZodLiteral<"chat-fast">, z.ZodLiteral<"embedding">]>;
|
|
74
|
-
score: z.ZodOptional<z.ZodNumber>;
|
|
75
|
-
}, z.core.$strip>;
|
|
76
|
-
/** Capabilities derived from one normalized serving endpoint. */
|
|
77
|
-
export declare const endpointCapabilitiesSchema: z.ZodObject<{
|
|
78
|
-
chat: z.ZodBoolean;
|
|
79
|
-
embedding: z.ZodBoolean;
|
|
80
|
-
tools: z.ZodBoolean;
|
|
81
|
-
}, z.core.$strip>;
|
|
82
|
-
/** Fallback class and rank for an unscored recognized model family. */
|
|
83
|
-
export declare const familyClassSchema: z.ZodObject<{
|
|
84
|
-
class: z.ZodUnion<readonly [z.ZodLiteral<"chat-thinking">, z.ZodLiteral<"chat-balanced">, z.ZodLiteral<"chat-fast">, z.ZodLiteral<"embedding">]>;
|
|
85
|
-
rank: z.ZodNumber;
|
|
86
|
-
}, z.core.$strip>;
|
|
87
|
-
/** Documented capabilities resolved for one model identity. */
|
|
88
|
-
export declare const modelCapabilitiesSchema: z.ZodObject<{
|
|
89
|
-
responses: z.ZodBoolean;
|
|
90
|
-
imageInput: z.ZodBoolean;
|
|
91
|
-
applyPatch: z.ZodBoolean;
|
|
92
|
-
webSearch: z.ZodBoolean;
|
|
93
|
-
}, z.core.$strip>;
|
|
94
|
-
/** Published pay-per-token limits for one model. */
|
|
95
|
-
export declare const modelRateLimitsSchema: z.ZodObject<{
|
|
96
|
-
inputTokensPerMinute: z.ZodNullable<z.ZodNumber>;
|
|
97
|
-
outputTokensPerMinute: z.ZodNullable<z.ZodNumber>;
|
|
98
|
-
queriesPerHour: z.ZodNullable<z.ZodNumber>;
|
|
99
|
-
}, z.core.$strip>;
|
|
100
|
-
/** Combined retirement, capability, and rate-limit metadata. */
|
|
101
|
-
export declare const modelMetadataSchema: z.ZodObject<{
|
|
102
|
-
status: z.ZodObject<{
|
|
103
|
-
deprecated: z.ZodDefault<z.ZodBoolean>;
|
|
104
|
-
}, z.core.$strip>;
|
|
105
|
-
capabilities: z.ZodObject<{
|
|
106
|
-
responses: z.ZodBoolean;
|
|
107
|
-
imageInput: z.ZodBoolean;
|
|
108
|
-
applyPatch: z.ZodBoolean;
|
|
109
|
-
webSearch: z.ZodBoolean;
|
|
110
|
-
}, z.core.$strip>;
|
|
111
|
-
rateLimits: z.ZodOptional<z.ZodObject<{
|
|
112
|
-
inputTokensPerMinute: z.ZodNullable<z.ZodNumber>;
|
|
113
|
-
outputTokensPerMinute: z.ZodNullable<z.ZodNumber>;
|
|
114
|
-
queriesPerHour: z.ZodNullable<z.ZodNumber>;
|
|
115
|
-
}, z.core.$strip>>;
|
|
116
|
-
}, z.core.$strip>;
|
|
117
|
-
/** Result of resolving a fuzzy model identifier. */
|
|
118
|
-
export declare const resolvedModelSchema: z.ZodObject<{
|
|
119
|
-
modelId: z.ZodString;
|
|
120
|
-
matched: z.ZodBoolean;
|
|
121
|
-
score: z.ZodOptional<z.ZodNumber>;
|
|
122
|
-
}, z.core.$strip>;
|
|
123
|
-
/** Pure controls for fuzzy endpoint resolution. */
|
|
124
|
-
export declare const resolveModelOptionsSchema: z.ZodObject<{
|
|
125
|
-
threshold: z.ZodOptional<z.ZodNumber>;
|
|
126
|
-
requiresTools: z.ZodOptional<z.ZodBoolean>;
|
|
127
|
-
}, z.core.$strip>;
|
|
128
|
-
/** One endpoint paired with its fuzzy-match distance. */
|
|
129
|
-
export declare const scoredEndpointSchema: z.ZodObject<{
|
|
130
|
-
endpoint: z.ZodObject<{
|
|
131
|
-
name: z.ZodString;
|
|
132
|
-
displayName: z.ZodOptional<z.ZodString>;
|
|
133
|
-
family: z.ZodOptional<z.ZodString>;
|
|
134
|
-
task: z.ZodOptional<z.ZodString>;
|
|
135
|
-
state: z.ZodOptional<z.ZodString>;
|
|
136
|
-
description: z.ZodOptional<z.ZodString>;
|
|
137
|
-
supportsTools: z.ZodOptional<z.ZodBoolean>;
|
|
138
|
-
profile: z.ZodOptional<z.ZodObject<{
|
|
139
|
-
quality: z.ZodOptional<z.ZodNumber>;
|
|
140
|
-
speed: z.ZodOptional<z.ZodNumber>;
|
|
141
|
-
cost: z.ZodOptional<z.ZodNumber>;
|
|
142
|
-
}, z.core.$strip>>;
|
|
143
|
-
class: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"chat-thinking">, z.ZodLiteral<"chat-balanced">, z.ZodLiteral<"chat-fast">, z.ZodLiteral<"embedding">]>>;
|
|
144
|
-
serviceNames: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
145
|
-
modelServiceName: z.ZodOptional<z.ZodString>;
|
|
146
|
-
reasoningEfforts: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"none">, z.ZodLiteral<"minimal">, z.ZodLiteral<"low">, z.ZodLiteral<"medium">, z.ZodLiteral<"high">, z.ZodLiteral<"xhigh">, z.ZodLiteral<"max">]>>>;
|
|
147
|
-
status: z.ZodOptional<z.ZodObject<{
|
|
148
|
-
deprecated: z.ZodDefault<z.ZodBoolean>;
|
|
149
|
-
}, z.core.$strip>>;
|
|
150
|
-
dimension: z.ZodOptional<z.ZodNumber>;
|
|
151
|
-
}, z.core.$strip>;
|
|
152
|
-
score: z.ZodNumber;
|
|
153
|
-
}, z.core.$strip>;
|
|
154
|
-
/** Caller intent used to resolve one model from a catalogue. */
|
|
155
|
-
export declare const resolveModelInputSchema: z.ZodObject<{
|
|
156
|
-
explicit: z.ZodOptional<z.ZodString>;
|
|
157
|
-
fuzzy: z.ZodOptional<z.ZodBoolean>;
|
|
158
|
-
threshold: z.ZodOptional<z.ZodNumber>;
|
|
159
|
-
requiresTools: z.ZodOptional<z.ZodBoolean>;
|
|
160
|
-
modelClass: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"chat-thinking">, z.ZodLiteral<"chat-balanced">, z.ZodLiteral<"chat-fast">, z.ZodLiteral<"embedding">]>>;
|
|
161
|
-
fallbacks: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
162
|
-
liveOnly: z.ZodOptional<z.ZodBoolean>;
|
|
163
|
-
}, z.core.$strip>;
|
|
164
|
-
/** Selected model identifier and the policy branch that selected it. */
|
|
165
|
-
export declare const resolvedModelSelectionSchema: z.ZodObject<{
|
|
166
|
-
modelId: z.ZodString;
|
|
167
|
-
source: z.ZodUnion<readonly [z.ZodLiteral<"explicit">, z.ZodLiteral<"fuzzy-match">, z.ZodLiteral<"class">, z.ZodLiteral<"fallback">]>;
|
|
168
|
-
}, z.core.$strip>;
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
// Generated by ts-to-zod
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
/** Browser-safe model contracts owned by the TypeScript model runtime. */
|
|
4
|
-
/** Intent-oriented endpoint class slug. */
|
|
5
|
-
export const modelClassSchema = z.union([z.literal("chat-thinking"), z.literal("chat-balanced"), z.literal("chat-fast"), z.literal("embedding")]);
|
|
6
|
-
/** Reasoning effort value accepted by compatible model endpoints. */
|
|
7
|
-
export const reasoningEffortSchema = z.union([z.literal("none"), z.literal("minimal"), z.literal("low"), z.literal("medium"), z.literal("high"), z.literal("xhigh"), z.literal("max")]);
|
|
8
|
-
/** Relative quality, speed, and cost scores for an endpoint. */
|
|
9
|
-
export const modelProfileSchema = z.object({
|
|
10
|
-
quality: z.number().optional(),
|
|
11
|
-
speed: z.number().optional(),
|
|
12
|
-
cost: z.number().optional()
|
|
13
|
-
});
|
|
14
|
-
/** Model retirement status. */
|
|
15
|
-
export const modelStatusSchema = z.object({
|
|
16
|
-
deprecated: z.boolean().default(false)
|
|
17
|
-
});
|
|
18
|
-
/** Browser-safe normalized Model Serving endpoint metadata. */
|
|
19
|
-
export const servingEndpointSummarySchema = z.object({
|
|
20
|
-
name: z.string(),
|
|
21
|
-
displayName: z.string().optional(),
|
|
22
|
-
family: z.string().optional(),
|
|
23
|
-
task: z.string().optional(),
|
|
24
|
-
state: z.string().optional(),
|
|
25
|
-
description: z.string().optional(),
|
|
26
|
-
supportsTools: z.boolean().optional(),
|
|
27
|
-
profile: modelProfileSchema.optional(),
|
|
28
|
-
class: modelClassSchema.optional(),
|
|
29
|
-
serviceNames: z.record(z.string(), z.string()).optional(),
|
|
30
|
-
modelServiceName: z.string().optional(),
|
|
31
|
-
reasoningEfforts: z.array(reasoningEffortSchema).optional(),
|
|
32
|
-
status: modelStatusSchema.optional(),
|
|
33
|
-
dimension: z.number().optional()
|
|
34
|
-
});
|
|
35
|
-
/** Browser-safe model catalogue search and ranking controls. */
|
|
36
|
-
export const modelQuerySchema = z.object({
|
|
37
|
-
search: z.string().optional(),
|
|
38
|
-
modelClass: modelClassSchema.optional(),
|
|
39
|
-
requiresTools: z.boolean().optional(),
|
|
40
|
-
includeDeprecated: z.boolean().optional(),
|
|
41
|
-
limit: z.number().int().min(1).max(50).optional(),
|
|
42
|
-
threshold: z.number().min(0).max(1).optional()
|
|
43
|
-
});
|
|
44
|
-
/** One ranked model-search result. */
|
|
45
|
-
export const rankedModelSchema = z.object({
|
|
46
|
-
endpoint: servingEndpointSummarySchema,
|
|
47
|
-
modelClass: modelClassSchema,
|
|
48
|
-
score: z.number().min(0).max(1).optional()
|
|
49
|
-
});
|
|
50
|
-
/** Capabilities derived from one normalized serving endpoint. */
|
|
51
|
-
export const endpointCapabilitiesSchema = z.object({
|
|
52
|
-
chat: z.boolean(),
|
|
53
|
-
embedding: z.boolean(),
|
|
54
|
-
tools: z.boolean()
|
|
55
|
-
});
|
|
56
|
-
/** Fallback class and rank for an unscored recognized model family. */
|
|
57
|
-
export const familyClassSchema = z.object({
|
|
58
|
-
class: modelClassSchema,
|
|
59
|
-
rank: z.number().min(0)
|
|
60
|
-
});
|
|
61
|
-
/** Documented capabilities resolved for one model identity. */
|
|
62
|
-
export const modelCapabilitiesSchema = z.object({
|
|
63
|
-
responses: z.boolean(),
|
|
64
|
-
imageInput: z.boolean(),
|
|
65
|
-
applyPatch: z.boolean(),
|
|
66
|
-
webSearch: z.boolean()
|
|
67
|
-
});
|
|
68
|
-
/** Published pay-per-token limits for one model. */
|
|
69
|
-
export const modelRateLimitsSchema = z.object({
|
|
70
|
-
inputTokensPerMinute: z.number().int().min(0).nullable(),
|
|
71
|
-
outputTokensPerMinute: z.number().int().min(0).nullable(),
|
|
72
|
-
queriesPerHour: z.number().int().min(0).nullable()
|
|
73
|
-
});
|
|
74
|
-
/** Combined retirement, capability, and rate-limit metadata. */
|
|
75
|
-
export const modelMetadataSchema = z.object({
|
|
76
|
-
status: modelStatusSchema,
|
|
77
|
-
capabilities: modelCapabilitiesSchema,
|
|
78
|
-
rateLimits: modelRateLimitsSchema.optional()
|
|
79
|
-
});
|
|
80
|
-
/** Result of resolving a fuzzy model identifier. */
|
|
81
|
-
export const resolvedModelSchema = z.object({
|
|
82
|
-
modelId: z.string(),
|
|
83
|
-
matched: z.boolean(),
|
|
84
|
-
score: z.number().min(0).max(1).optional()
|
|
85
|
-
});
|
|
86
|
-
/** Pure controls for fuzzy endpoint resolution. */
|
|
87
|
-
export const resolveModelOptionsSchema = z.object({
|
|
88
|
-
threshold: z.number().min(0).max(1).optional(),
|
|
89
|
-
requiresTools: z.boolean().optional()
|
|
90
|
-
});
|
|
91
|
-
/** One endpoint paired with its fuzzy-match distance. */
|
|
92
|
-
export const scoredEndpointSchema = z.object({
|
|
93
|
-
endpoint: servingEndpointSummarySchema,
|
|
94
|
-
score: z.number().min(0).max(1)
|
|
95
|
-
});
|
|
96
|
-
/** Caller intent used to resolve one model from a catalogue. */
|
|
97
|
-
export const resolveModelInputSchema = z.object({
|
|
98
|
-
explicit: z.string().optional(),
|
|
99
|
-
fuzzy: z.boolean().optional(),
|
|
100
|
-
threshold: z.number().min(0).max(1).optional(),
|
|
101
|
-
requiresTools: z.boolean().optional(),
|
|
102
|
-
modelClass: modelClassSchema.optional(),
|
|
103
|
-
fallbacks: z.array(z.string()).optional(),
|
|
104
|
-
liveOnly: z.boolean().optional()
|
|
105
|
-
});
|
|
106
|
-
/** Selected model identifier and the policy branch that selected it. */
|
|
107
|
-
export const resolvedModelSelectionSchema = z.object({
|
|
108
|
-
modelId: z.string(),
|
|
109
|
-
source: z.union([z.literal("explicit"), z.literal("fuzzy-match"), z.literal("class"), z.literal("fallback")])
|
|
110
|
-
});
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3NjaGVtYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2VuZXJhdGVkL19zY2hlbWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlCQUF5QjtBQUN6QixPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLDBFQUEwRTtBQUMxRSwyQ0FBMkM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWxKLHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFeEwsZ0VBQWdFO0FBQ2hFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDOUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVB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QUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDL0IsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUM5QyxhQUFhLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNyQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxFQUFFO0lBQ3ZDLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUN6QyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNuQyxDQUFDLENBQUM7QUFFSCx3RUFBd0U7QUFDeEUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNuQixNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztDQUNoSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHZW5lcmF0ZWQgYnkgdHMtdG8tem9kXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG4vKiogQnJvd3Nlci1zYWZlIG1vZGVsIGNvbnRyYWN0cyBvd25lZCBieSB0aGUgVHlwZVNjcmlwdCBtb2RlbCBydW50aW1lLiAqL1xuLyoqIEludGVudC1vcmllbnRlZCBlbmRwb2ludCBjbGFzcyBzbHVnLiAqL1xuZXhwb3J0IGNvbnN0IG1vZGVsQ2xhc3NTY2hlbWEgPSB6LnVuaW9uKFt6LmxpdGVyYWwoXCJjaGF0LXRoaW5raW5nXCIpLCB6LmxpdGVyYWwoXCJjaGF0LWJhbGFuY2VkXCIpLCB6LmxpdGVyYWwoXCJjaGF0LWZhc3RcIiksIHoubGl0ZXJhbChcImVtYmVkZGluZ1wiKV0pO1xuXG4vKiogUmVhc29uaW5nIGVmZm9ydCB2YWx1ZSBhY2NlcHRlZCBieSBjb21wYXRpYmxlIG1vZGVsIGVuZHBvaW50cy4gKi9cbmV4cG9ydCBjb25zdCByZWFzb25pbmdFZmZvcnRTY2hlbWEgPSB6LnVuaW9uKFt6LmxpdGVyYWwoXCJub25lXCIpLCB6LmxpdGVyYWwoXCJtaW5pbWFsXCIpLCB6LmxpdGVyYWwoXCJsb3dcIiksIHoubGl0ZXJhbChcIm1lZGl1bVwiKSwgei5saXRlcmFsKFwiaGlnaFwiKSwgei5saXRlcmFsKFwieGhpZ2hcIiksIHoubGl0ZXJhbChcIm1heFwiKV0pO1xuXG4vKiogUmVsYXRpdmUgcXVhbGl0eSwgc3BlZWQsIGFuZCBjb3N0IHNjb3JlcyBmb3IgYW4gZW5kcG9pbnQuICovXG5leHBvcnQgY29uc3QgbW9kZWxQcm9maWxlU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIHF1YWxpdHk6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBzcGVlZDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIGNvc3Q6IHoubnVtYmVyKCkub3B0aW9uYWwoKVxufSk7XG5cbi8qKiBNb2RlbCByZXRpcmVtZW50IHN0YXR1cy4gKi9cbmV4cG9ydCBjb25zdCBtb2RlbFN0YXR1c1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBkZXByZWNhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKVxufSk7XG5cbi8qKiBCcm93c2VyLXNhZmUgbm9ybWFsaXplZCBNb2RlbCBTZXJ2aW5nIGVuZHBvaW50IG1ldGFkYXRhLiAqL1xuZXhwb3J0IGNvbnN0IHNlcnZpbmdFbmRwb2ludFN1bW1hcnlTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogei5zdHJpbmcoKSxcbiAgICBkaXNwbGF5TmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGZhbWlseTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHRhc2s6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBzdGF0ZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgc3VwcG9ydHNUb29sczogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBwcm9maWxlOiBtb2RlbFByb2ZpbGVTY2hlbWEub3B0aW9uYWwoKSxcbiAgICBjbGFzczogbW9kZWxDbGFzc1NjaGVtYS5vcHRpb25hbCgpLFxuICAgIHNlcnZpY2VOYW1lczogei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgICBtb2RlbFNlcnZpY2VOYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcmVhc29uaW5nRWZmb3J0czogei5hcnJheShyZWFzb25pbmdFZmZvcnRTY2hlbWEpLm9wdGlvbmFsKCksXG4gICAgc3RhdHVzOiBtb2RlbFN0YXR1c1NjaGVtYS5vcHRpb25hbCgpLFxuICAgIGRpbWVuc2lvbjogei5udW1iZXIoKS5vcHRpb25hbCgpXG59KTtcblxuLyoqIEJyb3dzZXItc2FmZSBtb2RlbCBjYXRhbG9ndWUgc2VhcmNoIGFuZCByYW5raW5nIGNvbnRyb2xzLiAqL1xuZXhwb3J0IGNvbnN0IG1vZGVsUXVlcnlTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgc2VhcmNoOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgbW9kZWxDbGFzczogbW9kZWxDbGFzc1NjaGVtYS5vcHRpb25hbCgpLFxuICAgIHJlcXVpcmVzVG9vbHM6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaW5jbHVkZURlcHJlY2F0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgbGltaXQ6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLm1heCg1MCkub3B0aW9uYWwoKSxcbiAgICB0aHJlc2hvbGQ6IHoubnVtYmVyKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpXG59KTtcblxuLyoqIE9uZSByYW5rZWQgbW9kZWwtc2VhcmNoIHJlc3VsdC4gKi9cbmV4cG9ydCBjb25zdCByYW5rZWRNb2RlbFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBlbmRwb2ludDogc2VydmluZ0VuZHBvaW50U3VtbWFyeVNjaGVtYSxcbiAgICBtb2RlbENsYXNzOiBtb2RlbENsYXNzU2NoZW1hLFxuICAgIHNjb3JlOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKVxufSk7XG5cbi8qKiBDYXBhYmlsaXRpZXMgZGVyaXZlZCBmcm9tIG9uZSBub3JtYWxpemVkIHNlcnZpbmcgZW5kcG9pbnQuICovXG5leHBvcnQgY29uc3QgZW5kcG9pbnRDYXBhYmlsaXRpZXNTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgY2hhdDogei5ib29sZWFuKCksXG4gICAgZW1iZWRkaW5nOiB6LmJvb2xlYW4oKSxcbiAgICB0b29sczogei5ib29sZWFuKClcbn0pO1xuXG4vKiogRmFsbGJhY2sgY2xhc3MgYW5kIHJhbmsgZm9yIGFuIHVuc2NvcmVkIHJlY29nbml6ZWQgbW9kZWwgZmFtaWx5LiAqL1xuZXhwb3J0IGNvbnN0IGZhbWlseUNsYXNzU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGNsYXNzOiBtb2RlbENsYXNzU2NoZW1hLFxuICAgIHJhbms6IHoubnVtYmVyKCkubWluKDApXG59KTtcblxuLyoqIERvY3VtZW50ZWQgY2FwYWJpbGl0aWVzIHJlc29sdmVkIGZvciBvbmUgbW9kZWwgaWRlbnRpdHkuICovXG5leHBvcnQgY29uc3QgbW9kZWxDYXBhYmlsaXRpZXNTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgcmVzcG9uc2VzOiB6LmJvb2xlYW4oKSxcbiAgICBpbWFnZUlucHV0OiB6LmJvb2xlYW4oKSxcbiAgICBhcHBseVBhdGNoOiB6LmJvb2xlYW4oKSxcbiAgICB3ZWJTZWFyY2g6IHouYm9vbGVhbigpXG59KTtcblxuLyoqIFB1Ymxpc2hlZCBwYXktcGVyLXRva2VuIGxpbWl0cyBmb3Igb25lIG1vZGVsLiAqL1xuZXhwb3J0IGNvbnN0IG1vZGVsUmF0ZUxpbWl0c1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBpbnB1dFRva2Vuc1Blck1pbnV0ZTogei5udW1iZXIoKS5pbnQoKS5taW4oMCkubnVsbGFibGUoKSxcbiAgICBvdXRwdXRUb2tlbnNQZXJNaW51dGU6IHoubnVtYmVyKCkuaW50KCkubWluKDApLm51bGxhYmxlKCksXG4gICAgcXVlcmllc1BlckhvdXI6IHoubnVtYmVyKCkuaW50KCkubWluKDApLm51bGxhYmxlKClcbn0pO1xuXG4vKiogQ29tYmluZWQgcmV0aXJlbWVudCwgY2FwYWJpbGl0eSwgYW5kIHJhdGUtbGltaXQgbWV0YWRhdGEuICovXG5leHBvcnQgY29uc3QgbW9kZWxNZXRhZGF0YVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBzdGF0dXM6IG1vZGVsU3RhdHVzU2NoZW1hLFxuICAgIGNhcGFiaWxpdGllczogbW9kZWxDYXBhYmlsaXRpZXNTY2hlbWEsXG4gICAgcmF0ZUxpbWl0czogbW9kZWxSYXRlTGltaXRzU2NoZW1hLm9wdGlvbmFsKClcbn0pO1xuXG4vKiogUmVzdWx0IG9mIHJlc29sdmluZyBhIGZ1enp5IG1vZGVsIGlkZW50aWZpZXIuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZWRNb2RlbFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBtb2RlbElkOiB6LnN0cmluZygpLFxuICAgIG1hdGNoZWQ6IHouYm9vbGVhbigpLFxuICAgIHNjb3JlOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKVxufSk7XG5cbi8qKiBQdXJlIGNvbnRyb2xzIGZvciBmdXp6eSBlbmRwb2ludCByZXNvbHV0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVNb2RlbE9wdGlvbnNTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgdGhyZXNob2xkOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxcbiAgICByZXF1aXJlc1Rvb2xzOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpXG59KTtcblxuLyoqIE9uZSBlbmRwb2ludCBwYWlyZWQgd2l0aCBpdHMgZnV6enktbWF0Y2ggZGlzdGFuY2UuICovXG5leHBvcnQgY29uc3Qgc2NvcmVkRW5kcG9pbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgZW5kcG9pbnQ6IHNlcnZpbmdFbmRwb2ludFN1bW1hcnlTY2hlbWEsXG4gICAgc2NvcmU6IHoubnVtYmVyKCkubWluKDApLm1heCgxKVxufSk7XG5cbi8qKiBDYWxsZXIgaW50ZW50IHVzZWQgdG8gcmVzb2x2ZSBvbmUgbW9kZWwgZnJvbSBhIGNhdGFsb2d1ZS4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlTW9kZWxJbnB1dFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBleHBsaWNpdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGZ1enp5OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIHRocmVzaG9sZDogei5udW1iZXIoKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCksXG4gICAgcmVxdWlyZXNUb29sczogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBtb2RlbENsYXNzOiBtb2RlbENsYXNzU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgZmFsbGJhY2tzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gICAgbGl2ZU9ubHk6IHouYm9vbGVhbigpLm9wdGlvbmFsKClcbn0pO1xuXG4vKiogU2VsZWN0ZWQgbW9kZWwgaWRlbnRpZmllciBhbmQgdGhlIHBvbGljeSBicmFuY2ggdGhhdCBzZWxlY3RlZCBpdC4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlZE1vZGVsU2VsZWN0aW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIG1vZGVsSWQ6IHouc3RyaW5nKCksXG4gICAgc291cmNlOiB6LnVuaW9uKFt6LmxpdGVyYWwoXCJleHBsaWNpdFwiKSwgei5saXRlcmFsKFwiZnV6enktbWF0Y2hcIiksIHoubGl0ZXJhbChcImNsYXNzXCIpLCB6LmxpdGVyYWwoXCJmYWxsYmFja1wiKV0pXG59KTtcbiJdfQ==
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
// Generated by ts-to-zod
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
|
|
4
|
-
/** Browser-safe model contracts owned by the TypeScript model runtime. */
|
|
5
|
-
/** Intent-oriented endpoint class slug. */
|
|
6
|
-
export const modelClassSchema = z.union([z.literal("chat-thinking"), z.literal("chat-balanced"), z.literal("chat-fast"), z.literal("embedding")]);
|
|
7
|
-
|
|
8
|
-
/** Reasoning effort value accepted by compatible model endpoints. */
|
|
9
|
-
export const reasoningEffortSchema = z.union([z.literal("none"), z.literal("minimal"), z.literal("low"), z.literal("medium"), z.literal("high"), z.literal("xhigh"), z.literal("max")]);
|
|
10
|
-
|
|
11
|
-
/** Relative quality, speed, and cost scores for an endpoint. */
|
|
12
|
-
export const modelProfileSchema = z.object({
|
|
13
|
-
quality: z.number().optional(),
|
|
14
|
-
speed: z.number().optional(),
|
|
15
|
-
cost: z.number().optional()
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
/** Model retirement status. */
|
|
19
|
-
export const modelStatusSchema = z.object({
|
|
20
|
-
deprecated: z.boolean().default(false)
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
/** Browser-safe normalized Model Serving endpoint metadata. */
|
|
24
|
-
export const servingEndpointSummarySchema = z.object({
|
|
25
|
-
name: z.string(),
|
|
26
|
-
displayName: z.string().optional(),
|
|
27
|
-
family: z.string().optional(),
|
|
28
|
-
task: z.string().optional(),
|
|
29
|
-
state: z.string().optional(),
|
|
30
|
-
description: z.string().optional(),
|
|
31
|
-
supportsTools: z.boolean().optional(),
|
|
32
|
-
profile: modelProfileSchema.optional(),
|
|
33
|
-
class: modelClassSchema.optional(),
|
|
34
|
-
serviceNames: z.record(z.string(), z.string()).optional(),
|
|
35
|
-
modelServiceName: z.string().optional(),
|
|
36
|
-
reasoningEfforts: z.array(reasoningEffortSchema).optional(),
|
|
37
|
-
status: modelStatusSchema.optional(),
|
|
38
|
-
dimension: z.number().optional()
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
/** Browser-safe model catalogue search and ranking controls. */
|
|
42
|
-
export const modelQuerySchema = z.object({
|
|
43
|
-
search: z.string().optional(),
|
|
44
|
-
modelClass: modelClassSchema.optional(),
|
|
45
|
-
requiresTools: z.boolean().optional(),
|
|
46
|
-
includeDeprecated: z.boolean().optional(),
|
|
47
|
-
limit: z.number().int().min(1).max(50).optional(),
|
|
48
|
-
threshold: z.number().min(0).max(1).optional()
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
/** One ranked model-search result. */
|
|
52
|
-
export const rankedModelSchema = z.object({
|
|
53
|
-
endpoint: servingEndpointSummarySchema,
|
|
54
|
-
modelClass: modelClassSchema,
|
|
55
|
-
score: z.number().min(0).max(1).optional()
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
/** Capabilities derived from one normalized serving endpoint. */
|
|
59
|
-
export const endpointCapabilitiesSchema = z.object({
|
|
60
|
-
chat: z.boolean(),
|
|
61
|
-
embedding: z.boolean(),
|
|
62
|
-
tools: z.boolean()
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
/** Fallback class and rank for an unscored recognized model family. */
|
|
66
|
-
export const familyClassSchema = z.object({
|
|
67
|
-
class: modelClassSchema,
|
|
68
|
-
rank: z.number().min(0)
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
/** Documented capabilities resolved for one model identity. */
|
|
72
|
-
export const modelCapabilitiesSchema = z.object({
|
|
73
|
-
responses: z.boolean(),
|
|
74
|
-
imageInput: z.boolean(),
|
|
75
|
-
applyPatch: z.boolean(),
|
|
76
|
-
webSearch: z.boolean()
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
/** Published pay-per-token limits for one model. */
|
|
80
|
-
export const modelRateLimitsSchema = z.object({
|
|
81
|
-
inputTokensPerMinute: z.number().int().min(0).nullable(),
|
|
82
|
-
outputTokensPerMinute: z.number().int().min(0).nullable(),
|
|
83
|
-
queriesPerHour: z.number().int().min(0).nullable()
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
/** Combined retirement, capability, and rate-limit metadata. */
|
|
87
|
-
export const modelMetadataSchema = z.object({
|
|
88
|
-
status: modelStatusSchema,
|
|
89
|
-
capabilities: modelCapabilitiesSchema,
|
|
90
|
-
rateLimits: modelRateLimitsSchema.optional()
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
/** Result of resolving a fuzzy model identifier. */
|
|
94
|
-
export const resolvedModelSchema = z.object({
|
|
95
|
-
modelId: z.string(),
|
|
96
|
-
matched: z.boolean(),
|
|
97
|
-
score: z.number().min(0).max(1).optional()
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
/** Pure controls for fuzzy endpoint resolution. */
|
|
101
|
-
export const resolveModelOptionsSchema = z.object({
|
|
102
|
-
threshold: z.number().min(0).max(1).optional(),
|
|
103
|
-
requiresTools: z.boolean().optional()
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
/** One endpoint paired with its fuzzy-match distance. */
|
|
107
|
-
export const scoredEndpointSchema = z.object({
|
|
108
|
-
endpoint: servingEndpointSummarySchema,
|
|
109
|
-
score: z.number().min(0).max(1)
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
/** Caller intent used to resolve one model from a catalogue. */
|
|
113
|
-
export const resolveModelInputSchema = z.object({
|
|
114
|
-
explicit: z.string().optional(),
|
|
115
|
-
fuzzy: z.boolean().optional(),
|
|
116
|
-
threshold: z.number().min(0).max(1).optional(),
|
|
117
|
-
requiresTools: z.boolean().optional(),
|
|
118
|
-
modelClass: modelClassSchema.optional(),
|
|
119
|
-
fallbacks: z.array(z.string()).optional(),
|
|
120
|
-
liveOnly: z.boolean().optional()
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
/** Selected model identifier and the policy branch that selected it. */
|
|
124
|
-
export const resolvedModelSelectionSchema = z.object({
|
|
125
|
-
modelId: z.string(),
|
|
126
|
-
source: z.union([z.literal("explicit"), z.literal("fuzzy-match"), z.literal("class"), z.literal("fallback")])
|
|
127
|
-
});
|