@opencode/ai 2.0.26 → 2.0.28
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 +8 -2
- package/dist/cache-policy.js +20 -11
- package/dist/experimental/system-one.js +1 -1
- package/dist/media.d.ts +1 -1
- package/dist/media.js +7 -6
- package/dist/protocols/alibaba-chat.d.ts +2 -2
- package/dist/protocols/alibaba-messages.d.ts +1 -1
- package/dist/protocols/anthropic-messages.js +1 -1
- package/dist/protocols/bedrock-converse.js +4 -3
- package/dist/protocols/bedrock-event-stream.js +4 -3
- package/dist/protocols/gemini.d.ts +73 -9
- package/dist/protocols/gemini.js +111 -17
- package/dist/protocols/meta-responses.js +3 -2
- package/dist/protocols/mistral-chat.d.ts +1 -1
- package/dist/protocols/mistral-chat.js +4 -2
- package/dist/protocols/open-responses-channel.d.ts +1 -1
- package/dist/protocols/open-responses-channel.js +7 -2
- package/dist/protocols/openai-chat.js +6 -2
- package/dist/protocols/openai-responses.d.ts +5 -5
- package/dist/protocols/openai-responses.js +4 -3
- package/dist/protocols/shared.d.ts +6 -2
- package/dist/protocols/shared.js +29 -3
- package/dist/protocols/utils/bedrock-auth.js +1 -1
- package/dist/protocols/utils/bedrock-media.js +4 -3
- package/dist/protocols/utils/fal-queue.d.ts +1 -1
- package/dist/protocols/utils/media-input.js +4 -3
- package/dist/protocols/utils/responses-compaction.js +6 -1
- package/dist/protocols/utils/tool-schema.js +8 -2
- package/dist/providers/alibaba.d.ts +5 -5
- package/dist/providers/amazon-bedrock-mantle.js +2 -2
- package/dist/providers/anthropic-compatible.js +2 -2
- package/dist/providers/anthropic.js +2 -2
- package/dist/providers/azure.d.ts +2 -2
- package/dist/providers/azure.js +3 -3
- package/dist/providers/baseten.js +2 -2
- package/dist/providers/cerebras.js +2 -2
- package/dist/providers/cloudflare-ai-gateway.d.ts +2 -2
- package/dist/providers/cloudflare-ai-gateway.js +2 -2
- package/dist/providers/cloudflare-workers-ai.js +2 -2
- package/dist/providers/cohere/chat.js +1 -1
- package/dist/providers/cohere.js +1 -1
- package/dist/providers/deepinfra.js +2 -2
- package/dist/providers/deepseek.js +2 -2
- package/dist/providers/fireworks.js +2 -2
- package/dist/providers/google/interactions.js +2 -2
- package/dist/providers/google-vertex/interactions.d.ts +2 -0
- package/dist/providers/google-vertex/interactions.js +1 -0
- package/dist/providers/google-vertex/mistral.d.ts +2 -0
- package/dist/providers/google-vertex/mistral.js +1 -0
- package/dist/providers/google-vertex-chat.js +3 -3
- package/dist/providers/google-vertex-interactions.d.ts +112 -0
- package/dist/providers/google-vertex-interactions.js +64 -0
- package/dist/providers/google-vertex-messages.js +3 -3
- package/dist/providers/google-vertex-mistral.d.ts +124 -0
- package/dist/providers/google-vertex-mistral.js +69 -0
- package/dist/providers/google-vertex-responses.js +3 -3
- package/dist/providers/google-vertex-shared.d.ts +3 -1
- package/dist/providers/google-vertex-shared.js +29 -3
- package/dist/providers/google-vertex.d.ts +2 -1
- package/dist/providers/google-vertex.js +4 -5
- package/dist/providers/google.d.ts +2 -1
- package/dist/providers/google.js +2 -2
- package/dist/providers/groq.js +2 -2
- package/dist/providers/index.d.ts +3 -1
- package/dist/providers/index.js +3 -1
- package/dist/providers/meta.js +1 -1
- package/dist/providers/minimax/chat.js +1 -1
- package/dist/providers/minimax/responses.js +1 -1
- package/dist/providers/minimax.js +1 -1
- package/dist/providers/mistral.js +2 -2
- package/dist/providers/moonshot/messages.js +1 -1
- package/dist/providers/moonshot/responses.js +1 -1
- package/dist/providers/moonshot.js +1 -1
- package/dist/providers/openai-compatible-responses.js +2 -2
- package/dist/providers/openai-compatible.js +2 -2
- package/dist/providers/openai.d.ts +1 -1
- package/dist/providers/openai.js +2 -2
- package/dist/providers/{opencode-zen.d.ts → opencode.d.ts} +1 -1
- package/dist/providers/{opencode-zen.js → opencode.js} +2 -2
- package/dist/providers/openrouter.js +1 -1
- package/dist/providers/togetherai.js +2 -2
- package/dist/providers/venice.js +1 -1
- package/dist/providers/vercel-ai-gateway.js +2 -2
- package/dist/providers/xai.js +1 -1
- package/dist/providers/zai-coding-plan/messages.js +1 -1
- package/dist/providers/zai-coding-plan/responses.js +1 -1
- package/dist/providers/zai-coding-plan.js +1 -1
- package/dist/providers/zai.js +1 -1
- package/dist/route/auth.d.ts +1 -1
- package/dist/route/auth.js +2 -2
- package/dist/route/executor-service.d.ts +1 -1
- package/dist/route/executor.d.ts +1 -1
- package/dist/route/executor.js +1 -1
- package/dist/route/framing.js +1 -1
- package/dist/route/media-protocol.d.ts +1 -1
- package/dist/route/media-protocol.js +1 -1
- package/dist/route/media.js +1 -1
- package/dist/route/transport/http.d.ts +1 -1
- package/dist/route/transport/http.js +5 -4
- package/dist/route/transport/websocket-channel.d.ts +1 -1
- package/dist/route/transport/websocket.d.ts +4 -4
- package/dist/route/transport/websocket.js +4 -9
- package/dist/schema/messages.js +9 -8
- package/dist/schema/options.d.ts +15 -1
- package/dist/schema/options.js +25 -5
- package/dist/tool.d.ts +10 -0
- package/dist/tool.js +21 -2
- package/package.json +5 -5
package/dist/tool.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Effect, JsonSchema, Schema } from "effect";
|
|
2
2
|
import { Tool } from "@opencode/schema/tool";
|
|
3
3
|
import { ToolDefinition, ToolFailure, ToolOutput } from "./schema/index.js";
|
|
4
|
+
import { isRecord } from "./utils/record.js";
|
|
4
5
|
export function make(config) {
|
|
5
6
|
if ("jsonSchema" in config) {
|
|
6
7
|
return {
|
|
@@ -36,7 +37,7 @@ export function make(config) {
|
|
|
36
37
|
_definition: new ToolDefinition({
|
|
37
38
|
name: "",
|
|
38
39
|
description: config.description,
|
|
39
|
-
inputSchema: toJsonSchema(config.parameters),
|
|
40
|
+
inputSchema: emptyInputJsonSchema(config.parameters) ?? toJsonSchema(config.parameters),
|
|
40
41
|
outputSchema: toJsonSchema(config.success),
|
|
41
42
|
}),
|
|
42
43
|
};
|
|
@@ -55,8 +56,26 @@ export const toDefinitions = (tools) => Object.entries(tools).map(([name, item])
|
|
|
55
56
|
inputSchema: item._definition.inputSchema,
|
|
56
57
|
outputSchema: item._definition.outputSchema,
|
|
57
58
|
}));
|
|
59
|
+
/**
|
|
60
|
+
* Describes a no-argument Effect tool input as an empty object, or returns
|
|
61
|
+
* `undefined` when the input takes arguments.
|
|
62
|
+
*
|
|
63
|
+
* Effect emits `{ not: { type: "null" } }` only for an encoded struct with no
|
|
64
|
+
* properties or index signatures, but providers require tool parameters to
|
|
65
|
+
* describe an object. Annotations are kept; any other keyword, such as a
|
|
66
|
+
* check's `minProperties`, leaves the schema as Effect emitted it.
|
|
67
|
+
*/
|
|
68
|
+
export const emptyInputJsonSchema = (schema) => {
|
|
69
|
+
const { not, ...rest } = Schema.toJsonSchemaDocument(schema, { referencePolicy: () => undefined }).schema;
|
|
70
|
+
if (!isRecord(not) || not.type !== "null" || Object.keys(not).length !== 1)
|
|
71
|
+
return undefined;
|
|
72
|
+
if (!Object.keys(rest).every((key) => annotationKeywords.has(key)))
|
|
73
|
+
return undefined;
|
|
74
|
+
return { ...rest, type: "object", properties: {}, additionalProperties: false };
|
|
75
|
+
};
|
|
76
|
+
const annotationKeywords = new Set(["title", "description", "default", "examples", "readOnly", "writeOnly"]);
|
|
58
77
|
const toJsonSchema = (schema) => {
|
|
59
|
-
const document = Schema.toJsonSchemaDocument(schema);
|
|
78
|
+
const document = Schema.toJsonSchemaDocument(schema, { onExcessProperty: "error" });
|
|
60
79
|
if (Object.keys(document.definitions).length === 0)
|
|
61
80
|
return document.schema;
|
|
62
81
|
return { ...document.schema, $defs: document.definitions };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.28",
|
|
4
4
|
"name": "@opencode/ai",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@clack/prompts": "1.0.0-alpha.1",
|
|
36
|
-
"@effect/platform-node": "4.0.
|
|
37
|
-
"@opencode/http-recorder": "2.0.
|
|
36
|
+
"@effect/platform-node": "4.0.1",
|
|
37
|
+
"@opencode/http-recorder": "2.0.28",
|
|
38
38
|
"@tsconfig/bun": "1.0.9",
|
|
39
39
|
"@types/bun": "1.4.0",
|
|
40
40
|
"@typescript/native-preview": "7.0.0-dev.20251207.1",
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"@aws-sdk/credential-providers": "3.1057.0",
|
|
45
45
|
"@smithy/eventstream-codec": "4.2.14",
|
|
46
46
|
"@smithy/util-utf8": "4.2.2",
|
|
47
|
-
"@opencode/schema": "2.0.
|
|
47
|
+
"@opencode/schema": "2.0.28",
|
|
48
48
|
"aws4fetch": "1.0.20",
|
|
49
|
-
"effect": "4.0.
|
|
49
|
+
"effect": "4.0.1",
|
|
50
50
|
"google-auth-library": "10.5.0"
|
|
51
51
|
}
|
|
52
52
|
}
|