@opencode-ai/ai 0.0.0-next-16671 → 0.0.0-next-16680
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/README.md +1 -1
- package/dist/image-client.d.ts +4 -4
- package/dist/image.d.ts +4 -4
- package/dist/image.js +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/llm.d.ts +11 -11
- package/dist/llm.js +3 -3
- package/dist/protocols/anthropic-messages.js +8 -4
- package/dist/protocols/bedrock-converse.js +3 -5
- package/dist/protocols/google-images.js +2 -2
- package/dist/protocols/open-responses.d.ts +8 -8
- package/dist/protocols/open-responses.js +4 -9
- package/dist/protocols/openai-chat.d.ts +4 -4
- package/dist/protocols/openai-chat.js +3 -3
- package/dist/protocols/openai-compatible-chat.d.ts +2 -2
- package/dist/protocols/openai-compatible-responses.d.ts +2 -2
- package/dist/protocols/openai-images.js +2 -2
- package/dist/protocols/shared.d.ts +16 -16
- package/dist/protocols/shared.js +6 -6
- package/dist/protocols/utils/bedrock-media.d.ts +1 -1
- package/dist/protocols/utils/image-input.d.ts +5 -5
- package/dist/protocols/utils/image-input.js +2 -2
- package/dist/protocols/utils/tool-schema.d.ts +2 -2
- package/dist/protocols/utils/tool-stream.d.ts +7 -7
- package/dist/protocols/utils/tool-stream.js +2 -2
- package/dist/protocols/xai-images.js +2 -2
- package/dist/protocols/zai-images.js +2 -2
- package/dist/provider-error.d.ts +2 -2
- package/dist/provider-error.js +2 -2
- package/dist/provider-package.d.ts +2 -2
- package/dist/provider.d.ts +8 -8
- package/dist/providers/amazon-bedrock.d.ts +7 -7
- package/dist/providers/anthropic-compatible.d.ts +6 -6
- package/dist/providers/anthropic.d.ts +7 -7
- package/dist/providers/azure.d.ts +13 -13
- package/dist/providers/cloudflare.d.ts +8 -8
- package/dist/providers/github-copilot.d.ts +15 -15
- package/dist/providers/google-vertex-chat.d.ts +6 -6
- package/dist/providers/google-vertex-messages.d.ts +6 -6
- package/dist/providers/google-vertex-responses.d.ts +6 -6
- package/dist/providers/google-vertex.d.ts +6 -6
- package/dist/providers/google.d.ts +7 -7
- package/dist/providers/openai-compatible-responses.d.ts +6 -6
- package/dist/providers/openai-compatible.d.ts +20 -20
- package/dist/providers/openai.d.ts +19 -19
- package/dist/providers/openrouter.d.ts +11 -11
- package/dist/providers/xai.d.ts +19 -19
- package/dist/providers/zai.d.ts +4 -4
- package/dist/route/auth-options.d.ts +3 -3
- package/dist/route/auth.d.ts +4 -4
- package/dist/route/auth.js +4 -4
- package/dist/route/client.d.ts +18 -18
- package/dist/route/client.js +6 -6
- package/dist/route/executor.d.ts +3 -3
- package/dist/route/executor.js +4 -4
- package/dist/route/framing.d.ts +2 -2
- package/dist/route/index.d.ts +1 -1
- package/dist/route/protocol.d.ts +3 -3
- package/dist/route/transport/http.d.ts +1 -1
- package/dist/route/transport/index.d.ts +3 -3
- package/dist/route/transport/websocket.d.ts +10 -10
- package/dist/route/transport/websocket.js +3 -3
- package/dist/schema/errors.d.ts +6 -6
- package/dist/schema/errors.js +18 -18
- package/dist/schema/events.js +1 -1
- package/dist/schema/ids.d.ts +3 -3
- package/dist/schema/ids.js +4 -3
- package/dist/schema/messages.d.ts +2 -2
- package/dist/schema/messages.js +2 -2
- package/dist/schema/options.d.ts +38 -38
- package/dist/schema/options.js +31 -29
- package/dist/testing.d.ts +4 -4
- package/package.json +3 -3
package/dist/schema/options.js
CHANGED
|
@@ -40,7 +40,7 @@ export const mergeProviderOptions = (...items) => {
|
|
|
40
40
|
}
|
|
41
41
|
return Object.keys(result).length === 0 ? undefined : result;
|
|
42
42
|
};
|
|
43
|
-
export class HttpOptions extends Schema.Class("
|
|
43
|
+
export class HttpOptions extends Schema.Class("AI.HttpOptions")({
|
|
44
44
|
body: Schema.optional(JsonSchema),
|
|
45
45
|
headers: Schema.optional(Schema.Record(Schema.String, Schema.String)),
|
|
46
46
|
query: Schema.optional(Schema.Record(Schema.String, Schema.String)),
|
|
@@ -87,49 +87,49 @@ export const mergeGenerationOptions = (...items) => {
|
|
|
87
87
|
});
|
|
88
88
|
return Object.values(result).some((value) => value !== undefined) ? result : undefined;
|
|
89
89
|
};
|
|
90
|
-
export class
|
|
90
|
+
export class LanguageModelLimits extends Schema.Class("LLM.LanguageModelLimits")({
|
|
91
91
|
context: Schema.optional(Schema.Number),
|
|
92
92
|
input: Schema.optional(Schema.Number),
|
|
93
93
|
output: Schema.optional(Schema.Number),
|
|
94
94
|
}) {
|
|
95
95
|
}
|
|
96
|
-
(function (
|
|
97
|
-
/** Normalize model limit input into the canonical `
|
|
98
|
-
|
|
99
|
-
})(
|
|
100
|
-
export class
|
|
101
|
-
limits: Schema.optional(
|
|
96
|
+
(function (LanguageModelLimits) {
|
|
97
|
+
/** Normalize model limit input into the canonical `LanguageModelLimits` class. */
|
|
98
|
+
LanguageModelLimits.make = (input) => input instanceof LanguageModelLimits ? input : new LanguageModelLimits(input ?? {});
|
|
99
|
+
})(LanguageModelLimits || (LanguageModelLimits = {}));
|
|
100
|
+
export class LanguageModelDefaults extends Schema.Class("LLM.LanguageModelDefaults")({
|
|
101
|
+
limits: Schema.optional(LanguageModelLimits),
|
|
102
102
|
generation: Schema.optional(GenerationOptions),
|
|
103
103
|
providerOptions: Schema.optional(ProviderOptions),
|
|
104
104
|
http: Schema.optional(HttpOptions),
|
|
105
105
|
}) {
|
|
106
106
|
}
|
|
107
|
-
(function (
|
|
107
|
+
(function (LanguageModelDefaults) {
|
|
108
108
|
/** Normalize selected-model request defaults without applying precedence. */
|
|
109
|
-
|
|
110
|
-
if (input instanceof
|
|
109
|
+
LanguageModelDefaults.make = (input) => {
|
|
110
|
+
if (input instanceof LanguageModelDefaults)
|
|
111
111
|
return input;
|
|
112
|
-
return new
|
|
113
|
-
limits: input.limits === undefined ? undefined :
|
|
112
|
+
return new LanguageModelDefaults({
|
|
113
|
+
limits: input.limits === undefined ? undefined : LanguageModelLimits.make(input.limits),
|
|
114
114
|
generation: input.generation === undefined ? undefined : GenerationOptions.make(input.generation),
|
|
115
115
|
providerOptions: input.providerOptions,
|
|
116
116
|
http: input.http === undefined ? undefined : HttpOptions.make(input.http),
|
|
117
117
|
});
|
|
118
118
|
};
|
|
119
|
-
})(
|
|
120
|
-
export const
|
|
121
|
-
export const
|
|
122
|
-
export class
|
|
123
|
-
toolSchema: Schema.optional(
|
|
119
|
+
})(LanguageModelDefaults || (LanguageModelDefaults = {}));
|
|
120
|
+
export const LanguageModelToolSchemaCompatibility = Schema.Literals(["gemini", "moonshot"]);
|
|
121
|
+
export const LanguageModelMaxTokensFieldCompatibility = Schema.Literals(["max_completion_tokens", "max_tokens"]);
|
|
122
|
+
export class LanguageModelCompatibility extends Schema.Class("LLM.LanguageModelCompatibility")({
|
|
123
|
+
toolSchema: Schema.optional(LanguageModelToolSchemaCompatibility),
|
|
124
124
|
reasoningField: Schema.optional(Schema.String),
|
|
125
|
-
maxTokensField: Schema.optional(
|
|
125
|
+
maxTokensField: Schema.optional(LanguageModelMaxTokensFieldCompatibility),
|
|
126
126
|
}) {
|
|
127
127
|
}
|
|
128
|
-
(function (
|
|
128
|
+
(function (LanguageModelCompatibility) {
|
|
129
129
|
/** Normalize model/upstream compatibility metadata without projecting requests. */
|
|
130
|
-
|
|
131
|
-
})(
|
|
132
|
-
export class
|
|
130
|
+
LanguageModelCompatibility.make = (input) => input instanceof LanguageModelCompatibility ? input : new LanguageModelCompatibility(input);
|
|
131
|
+
})(LanguageModelCompatibility || (LanguageModelCompatibility = {}));
|
|
132
|
+
export class LanguageModel {
|
|
133
133
|
id;
|
|
134
134
|
provider;
|
|
135
135
|
route;
|
|
@@ -143,12 +143,12 @@ export class Model {
|
|
|
143
143
|
this.compatibility = input.compatibility;
|
|
144
144
|
}
|
|
145
145
|
static make(input) {
|
|
146
|
-
return new
|
|
146
|
+
return new LanguageModel({
|
|
147
147
|
id: ModelID.make(input.id),
|
|
148
148
|
provider: ProviderID.make(input.provider),
|
|
149
149
|
route: input.route,
|
|
150
|
-
defaults: input.defaults === undefined ? undefined :
|
|
151
|
-
compatibility: input.compatibility === undefined ? undefined :
|
|
150
|
+
defaults: input.defaults === undefined ? undefined : LanguageModelDefaults.make(input.defaults),
|
|
151
|
+
compatibility: input.compatibility === undefined ? undefined : LanguageModelCompatibility.make(input.compatibility),
|
|
152
152
|
});
|
|
153
153
|
}
|
|
154
154
|
static input(model) {
|
|
@@ -163,13 +163,15 @@ export class Model {
|
|
|
163
163
|
static update(model, patch) {
|
|
164
164
|
if (Object.keys(patch).length === 0)
|
|
165
165
|
return model;
|
|
166
|
-
return
|
|
167
|
-
...
|
|
166
|
+
return LanguageModel.make({
|
|
167
|
+
...LanguageModel.input(model),
|
|
168
168
|
...patch,
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
|
-
export const
|
|
172
|
+
export const LanguageModelSchema = Schema.declare((value) => value instanceof LanguageModel, {
|
|
173
|
+
expected: "LLM.LanguageModel",
|
|
174
|
+
});
|
|
173
175
|
export class CacheHint extends Schema.Class("LLM.CacheHint")({
|
|
174
176
|
type: Schema.Literals(["ephemeral", "persistent"]),
|
|
175
177
|
ttlSeconds: Schema.optional(Schema.Number),
|
package/dist/testing.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export * as TestLLM from "./testing";
|
|
2
2
|
import { type Interface as LLMClientShape } from "./route/client";
|
|
3
|
-
import { LLMEvent, type FinishReasonDetails, type
|
|
3
|
+
import { LLMEvent, type FinishReasonDetails, type AIError, type LLMRequest, type UsageInput } from "./schema";
|
|
4
4
|
import { Context, Effect, Layer, Scope, Stream } from "effect";
|
|
5
|
-
export type Response = readonly LLMEvent[] | Stream.Stream<LLMEvent,
|
|
5
|
+
export type Response = readonly LLMEvent[] | Stream.Stream<LLMEvent, AIError>;
|
|
6
6
|
export type Gate = Readonly<{
|
|
7
7
|
started: Effect.Effect<void>;
|
|
8
8
|
release: Effect.Effect<void>;
|
|
@@ -1118,7 +1118,7 @@ export declare const tool: (id: string, name: string, input: unknown) => ({
|
|
|
1118
1118
|
} | undefined;
|
|
1119
1119
|
readonly classification?: "context-overflow" | "payload-too-large" | undefined;
|
|
1120
1120
|
})[];
|
|
1121
|
-
export declare const failAfter: (error:
|
|
1121
|
+
export declare const failAfter: (error: AIError, ...events: readonly LLMEvent[]) => Stream.Stream<{
|
|
1122
1122
|
readonly type: "step-start";
|
|
1123
1123
|
readonly index: number;
|
|
1124
1124
|
} | {
|
|
@@ -1299,7 +1299,7 @@ export declare const failAfter: (error: LLMError, ...events: readonly LLMEvent[]
|
|
|
1299
1299
|
};
|
|
1300
1300
|
} | undefined;
|
|
1301
1301
|
readonly classification?: "context-overflow" | "payload-too-large" | undefined;
|
|
1302
|
-
},
|
|
1302
|
+
}, AIError, never>;
|
|
1303
1303
|
export declare const hangAfter: (...events: readonly LLMEvent[]) => Stream.Stream<{
|
|
1304
1304
|
readonly type: "step-start";
|
|
1305
1305
|
readonly index: number;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
|
-
"version": "0.0.0-next-
|
|
3
|
+
"version": "0.0.0-next-16680",
|
|
4
4
|
"name": "@opencode-ai/ai",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@clack/prompts": "1.0.0-alpha.1",
|
|
32
32
|
"@effect/platform-node": "4.0.0-beta.101",
|
|
33
|
-
"@opencode-ai/http-recorder": "0.0.0-next-
|
|
33
|
+
"@opencode-ai/http-recorder": "0.0.0-next-16680",
|
|
34
34
|
"@tsconfig/bun": "1.0.9",
|
|
35
35
|
"@types/bun": "1.3.13",
|
|
36
36
|
"@typescript/native-preview": "7.0.0-dev.20251207.1",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@smithy/eventstream-codec": "4.2.14",
|
|
41
41
|
"@smithy/util-utf8": "4.2.2",
|
|
42
|
-
"@opencode-ai/schema": "0.0.0-next-
|
|
42
|
+
"@opencode-ai/schema": "0.0.0-next-16680",
|
|
43
43
|
"aws4fetch": "1.0.20",
|
|
44
44
|
"effect": "4.0.0-beta.101",
|
|
45
45
|
"google-auth-library": "10.5.0"
|