diff options
| author | Aiden Cline <[email protected]> | 2025-11-22 23:29:20 -0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-11-23 01:29:20 -0600 |
| commit | 30ffcaa6673b638f7ab49431331da5426942cef1 (patch) | |
| tree | ba384796b9b9f2ebd36e4ff1b582dcea10e28ae0 /packages | |
| parent | ba1145578673e75292430dc91afaf3ac42ba11c9 (diff) | |
| download | opencode-30ffcaa6673b638f7ab49431331da5426942cef1.tar.gz opencode-30ffcaa6673b638f7ab49431331da5426942cef1.zip | |
tweak: start bundling in some ai-sdk packages (#4649)
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/opencode/package.json | 10 | ||||
| -rw-r--r-- | packages/opencode/src/bun/index.ts | 20 | ||||
| -rw-r--r-- | packages/opencode/src/provider/provider.ts | 19 | ||||
| -rw-r--r-- | packages/opencode/src/session/retry.ts | 1 |
4 files changed, 40 insertions, 10 deletions
diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 01593075e..753b5872a 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -18,8 +18,6 @@ "./*": "./src/*.ts" }, "devDependencies": { - "@ai-sdk/amazon-bedrock": "2.2.10", - "@ai-sdk/google-vertex": "3.0.16", "@babel/core": "7.28.4", "@octokit/webhooks-types": "7.6.1", "@parcel/watcher-darwin-arm64": "2.5.1", @@ -44,7 +42,14 @@ "@actions/core": "1.11.1", "@actions/github": "6.0.1", "@agentclientprotocol/sdk": "0.5.1", + "@ai-sdk/amazon-bedrock": "3.0.57", + "@ai-sdk/anthropic": "2.0.45", + "@ai-sdk/azure": "2.0.73", + "@ai-sdk/google": "2.0.42", + "@ai-sdk/google-vertex": "3.0.74", "@ai-sdk/mcp": "0.0.8", + "@ai-sdk/openai": "2.0.71", + "@ai-sdk/openai-compatible": "1.0.27", "@clack/prompts": "1.0.0-alpha.1", "@hono/standard-validator": "0.1.5", "@hono/zod-validator": "catalog:", @@ -56,6 +61,7 @@ "@opencode-ai/script": "workspace:*", "@opencode-ai/sdk": "workspace:*", "@opencode-ai/util": "workspace:*", + "@openrouter/ai-sdk-provider": "1.2.5", "@opentui/core": "0.1.49", "@opentui/solid": "0.1.49", "@parcel/watcher": "2.5.1", diff --git a/packages/opencode/src/bun/index.ts b/packages/opencode/src/bun/index.ts index b739cd225..7c19c303b 100644 --- a/packages/opencode/src/bun/index.ts +++ b/packages/opencode/src/bun/index.ts @@ -4,10 +4,12 @@ import { Log } from "../util/log" import path from "path" import { NamedError } from "../util/error" import { readableStreamToText } from "bun" +import { createRequire } from "module" import { Lock } from "../util/lock" export namespace BunProc { const log = Log.create({ service: "bun" }) + const req = createRequire(import.meta.url) export async function run(cmd: string[], options?: Bun.SpawnOptions.OptionsObject<any, any, any>) { log.info("running", { @@ -129,4 +131,22 @@ export namespace BunProc { await Bun.write(pkgjson.name!, JSON.stringify(parsed, null, 2)) return mod } + + export async function resolve(pkg: string) { + const local = workspace(pkg) + if (local) return local + const dir = path.join(Global.Path.cache, "node_modules", pkg) + const pkgjson = Bun.file(path.join(dir, "package.json")) + const exists = await pkgjson.exists() + if (exists) return dir + } + + function workspace(pkg: string) { + try { + const target = req.resolve(`${pkg}/package.json`) + return path.dirname(target) + } catch { + return + } + } } diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index e172e918b..bc212629d 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -530,13 +530,18 @@ export namespace Provider { const existing = s.sdk.get(key) if (existing) return existing - let installedPath: string - if (!pkg.startsWith("file://")) { - installedPath = await BunProc.install(pkg, "latest") - } else { - log.info("loading local provider", { pkg }) - installedPath = pkg - } + const installedPath = await (async () => { + if (pkg.startsWith("file://")) { + log.info("loading local provider", { pkg }) + return pkg + } + const resolved = await BunProc.resolve(pkg) + if (resolved) { + log.info("using preinstalled provider", { providerID: provider.id, pkg }) + return resolved + } + return BunProc.install(pkg, "latest") + })() // The `google-vertex-anthropic` provider points to the `@ai-sdk/google-vertex` package. // Ref: https://github.com/sst/models.dev/blob/0a87de42ab177bebad0620a889e2eb2b4a5dd4ab/providers/google-vertex-anthropic/provider.toml diff --git a/packages/opencode/src/session/retry.ts b/packages/opencode/src/session/retry.ts index ae0440135..75472b568 100644 --- a/packages/opencode/src/session/retry.ts +++ b/packages/opencode/src/session/retry.ts @@ -1,4 +1,3 @@ -import { iife } from "@/util/iife" import { MessageV2 } from "./message-v2" export namespace SessionRetry { |
