@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.
Files changed (73) hide show
  1. package/README.md +1 -1
  2. package/dist/image-client.d.ts +4 -4
  3. package/dist/image.d.ts +4 -4
  4. package/dist/image.js +2 -2
  5. package/dist/index.d.ts +2 -2
  6. package/dist/llm.d.ts +11 -11
  7. package/dist/llm.js +3 -3
  8. package/dist/protocols/anthropic-messages.js +8 -4
  9. package/dist/protocols/bedrock-converse.js +3 -5
  10. package/dist/protocols/google-images.js +2 -2
  11. package/dist/protocols/open-responses.d.ts +8 -8
  12. package/dist/protocols/open-responses.js +4 -9
  13. package/dist/protocols/openai-chat.d.ts +4 -4
  14. package/dist/protocols/openai-chat.js +3 -3
  15. package/dist/protocols/openai-compatible-chat.d.ts +2 -2
  16. package/dist/protocols/openai-compatible-responses.d.ts +2 -2
  17. package/dist/protocols/openai-images.js +2 -2
  18. package/dist/protocols/shared.d.ts +16 -16
  19. package/dist/protocols/shared.js +6 -6
  20. package/dist/protocols/utils/bedrock-media.d.ts +1 -1
  21. package/dist/protocols/utils/image-input.d.ts +5 -5
  22. package/dist/protocols/utils/image-input.js +2 -2
  23. package/dist/protocols/utils/tool-schema.d.ts +2 -2
  24. package/dist/protocols/utils/tool-stream.d.ts +7 -7
  25. package/dist/protocols/utils/tool-stream.js +2 -2
  26. package/dist/protocols/xai-images.js +2 -2
  27. package/dist/protocols/zai-images.js +2 -2
  28. package/dist/provider-error.d.ts +2 -2
  29. package/dist/provider-error.js +2 -2
  30. package/dist/provider-package.d.ts +2 -2
  31. package/dist/provider.d.ts +8 -8
  32. package/dist/providers/amazon-bedrock.d.ts +7 -7
  33. package/dist/providers/anthropic-compatible.d.ts +6 -6
  34. package/dist/providers/anthropic.d.ts +7 -7
  35. package/dist/providers/azure.d.ts +13 -13
  36. package/dist/providers/cloudflare.d.ts +8 -8
  37. package/dist/providers/github-copilot.d.ts +15 -15
  38. package/dist/providers/google-vertex-chat.d.ts +6 -6
  39. package/dist/providers/google-vertex-messages.d.ts +6 -6
  40. package/dist/providers/google-vertex-responses.d.ts +6 -6
  41. package/dist/providers/google-vertex.d.ts +6 -6
  42. package/dist/providers/google.d.ts +7 -7
  43. package/dist/providers/openai-compatible-responses.d.ts +6 -6
  44. package/dist/providers/openai-compatible.d.ts +20 -20
  45. package/dist/providers/openai.d.ts +19 -19
  46. package/dist/providers/openrouter.d.ts +11 -11
  47. package/dist/providers/xai.d.ts +19 -19
  48. package/dist/providers/zai.d.ts +4 -4
  49. package/dist/route/auth-options.d.ts +3 -3
  50. package/dist/route/auth.d.ts +4 -4
  51. package/dist/route/auth.js +4 -4
  52. package/dist/route/client.d.ts +18 -18
  53. package/dist/route/client.js +6 -6
  54. package/dist/route/executor.d.ts +3 -3
  55. package/dist/route/executor.js +4 -4
  56. package/dist/route/framing.d.ts +2 -2
  57. package/dist/route/index.d.ts +1 -1
  58. package/dist/route/protocol.d.ts +3 -3
  59. package/dist/route/transport/http.d.ts +1 -1
  60. package/dist/route/transport/index.d.ts +3 -3
  61. package/dist/route/transport/websocket.d.ts +10 -10
  62. package/dist/route/transport/websocket.js +3 -3
  63. package/dist/schema/errors.d.ts +6 -6
  64. package/dist/schema/errors.js +18 -18
  65. package/dist/schema/events.js +1 -1
  66. package/dist/schema/ids.d.ts +3 -3
  67. package/dist/schema/ids.js +4 -3
  68. package/dist/schema/messages.d.ts +2 -2
  69. package/dist/schema/messages.js +2 -2
  70. package/dist/schema/options.d.ts +38 -38
  71. package/dist/schema/options.js +31 -29
  72. package/dist/testing.d.ts +4 -4
  73. package/package.json +3 -3
@@ -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("LLM.HttpOptions")({
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 ModelLimits extends Schema.Class("LLM.ModelLimits")({
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 (ModelLimits) {
97
- /** Normalize model limit input into the canonical `ModelLimits` class. */
98
- ModelLimits.make = (input) => input instanceof ModelLimits ? input : new ModelLimits(input ?? {});
99
- })(ModelLimits || (ModelLimits = {}));
100
- export class ModelDefaults extends Schema.Class("LLM.ModelDefaults")({
101
- limits: Schema.optional(ModelLimits),
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 (ModelDefaults) {
107
+ (function (LanguageModelDefaults) {
108
108
  /** Normalize selected-model request defaults without applying precedence. */
109
- ModelDefaults.make = (input) => {
110
- if (input instanceof ModelDefaults)
109
+ LanguageModelDefaults.make = (input) => {
110
+ if (input instanceof LanguageModelDefaults)
111
111
  return input;
112
- return new ModelDefaults({
113
- limits: input.limits === undefined ? undefined : ModelLimits.make(input.limits),
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
- })(ModelDefaults || (ModelDefaults = {}));
120
- export const ModelToolSchemaCompatibility = Schema.Literals(["gemini", "moonshot"]);
121
- export const ModelMaxTokensFieldCompatibility = Schema.Literals(["max_completion_tokens", "max_tokens"]);
122
- export class ModelCompatibility extends Schema.Class("LLM.ModelCompatibility")({
123
- toolSchema: Schema.optional(ModelToolSchemaCompatibility),
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(ModelMaxTokensFieldCompatibility),
125
+ maxTokensField: Schema.optional(LanguageModelMaxTokensFieldCompatibility),
126
126
  }) {
127
127
  }
128
- (function (ModelCompatibility) {
128
+ (function (LanguageModelCompatibility) {
129
129
  /** Normalize model/upstream compatibility metadata without projecting requests. */
130
- ModelCompatibility.make = (input) => (input instanceof ModelCompatibility ? input : new ModelCompatibility(input));
131
- })(ModelCompatibility || (ModelCompatibility = {}));
132
- export class Model {
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 Model({
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 : ModelDefaults.make(input.defaults),
151
- compatibility: input.compatibility === undefined ? undefined : ModelCompatibility.make(input.compatibility),
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 Model.make({
167
- ...Model.input(model),
166
+ return LanguageModel.make({
167
+ ...LanguageModel.input(model),
168
168
  ...patch,
169
169
  });
170
170
  }
171
171
  }
172
- export const ModelSchema = Schema.declare((value) => value instanceof Model, { expected: "LLM.Model" });
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 LLMError, type LLMRequest, type UsageInput } from "./schema";
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, LLMError>;
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: LLMError, ...events: readonly LLMEvent[]) => Stream.Stream<{
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
- }, LLMError, never>;
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-16671",
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-16671",
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-16671",
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"