diff --git a/.opencode/opencode.jsonc b/.opencode/opencode.jsonc
index dd5a4c750..369832f9f 100644
--- a/.opencode/opencode.jsonc
+++ b/.opencode/opencode.jsonc
@@ -2,7 +2,7 @@
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-openai-codex-auth"],
// "enterprise": {
- // "url": "http://localhost:3000",
+ // "url": "https://enterprise.dev.opencode.ai",
// },
"provider": {
"opencode": {
@@ -11,4 +11,10 @@
},
},
},
+ "mcp": {
+ "exa": {
+ "type": "remote",
+ "url": "https://mcp.exa.ai/mcp",
+ },
+ },
}
diff --git a/bun.lock b/bun.lock
index 41d88a231..9ea4c7de3 100644
--- a/bun.lock
+++ b/bun.lock
@@ -8,6 +8,7 @@
"@aws-sdk/client-s3": "3.933.0",
"@opencode-ai/script": "workspace:*",
"@opencode-ai/sdk": "workspace:*",
+ "typescript": "catalog:",
},
"devDependencies": {
"@tsconfig/bun": "catalog:",
@@ -19,7 +20,7 @@
},
"packages/console/app": {
"name": "@opencode-ai/console-app",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"@cloudflare/vite-plugin": "1.15.2",
"@ibm/plex": "6.4.1",
@@ -47,7 +48,7 @@
},
"packages/console/core": {
"name": "@opencode-ai/console-core",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"@aws-sdk/client-sts": "3.782.0",
"@jsx-email/render": "1.1.1",
@@ -74,7 +75,7 @@
},
"packages/console/function": {
"name": "@opencode-ai/console-function",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"@ai-sdk/anthropic": "2.0.0",
"@ai-sdk/openai": "2.0.2",
@@ -98,7 +99,7 @@
},
"packages/console/mail": {
"name": "@opencode-ai/console-mail",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"@jsx-email/all": "2.2.3",
"@jsx-email/cli": "1.4.3",
@@ -122,7 +123,7 @@
},
"packages/desktop": {
"name": "@opencode-ai/desktop",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"@kobalte/core": "catalog:",
"@opencode-ai/sdk": "workspace:*",
@@ -163,7 +164,7 @@
},
"packages/enterprise": {
"name": "@opencode-ai/enterprise",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"@opencode-ai/ui": "workspace:*",
"@opencode-ai/util": "workspace:*",
@@ -191,7 +192,7 @@
},
"packages/function": {
"name": "@opencode-ai/function",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"@octokit/auth-app": "8.0.1",
"@octokit/rest": "22.0.0",
@@ -207,7 +208,7 @@
},
"packages/opencode": {
"name": "opencode",
- "version": "1.0.115",
+ "version": "1.0.119",
"bin": {
"opencode": "./bin/opencode",
},
@@ -294,7 +295,7 @@
},
"packages/plugin": {
"name": "@opencode-ai/plugin",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"@opencode-ai/sdk": "workspace:*",
"zod": "catalog:",
@@ -314,7 +315,7 @@
},
"packages/sdk/js": {
"name": "@opencode-ai/sdk",
- "version": "1.0.115",
+ "version": "1.0.119",
"devDependencies": {
"@hey-api/openapi-ts": "0.81.0",
"@tsconfig/node22": "catalog:",
@@ -325,7 +326,7 @@
},
"packages/slack": {
"name": "@opencode-ai/slack",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"@opencode-ai/sdk": "workspace:*",
"@slack/bolt": "^3.17.1",
@@ -338,7 +339,7 @@
},
"packages/tauri": {
"name": "@opencode-ai/tauri",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"@tauri-apps/api": "^2",
"@tauri-apps/plugin-opener": "^2",
@@ -351,7 +352,7 @@
},
"packages/ui": {
"name": "@opencode-ai/ui",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"@kobalte/core": "catalog:",
"@opencode-ai/sdk": "workspace:*",
@@ -383,7 +384,7 @@
},
"packages/util": {
"name": "@opencode-ai/util",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"zod": "catalog:",
},
@@ -393,7 +394,7 @@
},
"packages/web": {
"name": "@opencode-ai/web",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"@astrojs/cloudflare": "12.6.3",
"@astrojs/markdown-remark": "6.3.1",
diff --git a/flake.lock b/flake.lock
index 231ac606b..b0749bea4 100644
--- a/flake.lock
+++ b/flake.lock
@@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
- "lastModified": 1764081664,
- "narHash": "sha256-sUoHmPr/EwXzRMpv1u/kH+dXuvJEyyF2Q7muE+t0EU4=",
+ "lastModified": 1764138170,
+ "narHash": "sha256-2bCmfCUZyi2yj9FFXYKwsDiaZmizN75cLhI/eWmf3tk=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "dc205f7b4fdb04c8b7877b43edb7b73be7730081",
+ "rev": "bb813de6d2241bcb1b5af2d3059f560c66329967",
"type": "github"
},
"original": {
diff --git a/nix/hashes.json b/nix/hashes.json
index b907f5c5e..1f11430f2 100644
--- a/nix/hashes.json
+++ b/nix/hashes.json
@@ -1,3 +1,3 @@
{
- "nodeModules": "sha256-XFJXjBWbHIUWKdSOZkGW7VmUPBVtGRgLHM2/1xVThFc="
+ "nodeModules": "sha256-dTGBX5mde/hQP36MSFwq3G81OdwpcYRl8bcjLpesbPw="
}
diff --git a/package.json b/package.json
index 6de81dc24..e85f08e4e 100644
--- a/package.json
+++ b/package.json
@@ -63,7 +63,8 @@
"dependencies": {
"@aws-sdk/client-s3": "3.933.0",
"@opencode-ai/script": "workspace:*",
- "@opencode-ai/sdk": "workspace:*"
+ "@opencode-ai/sdk": "workspace:*",
+ "typescript": "catalog:"
},
"repository": {
"type": "git",
diff --git a/packages/console/app/package.json b/packages/console/app/package.json
index 367d17691..48d82495b 100644
--- a/packages/console/app/package.json
+++ b/packages/console/app/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-app",
- "version": "1.0.115",
+ "version": "1.0.119",
"type": "module",
"scripts": {
"typecheck": "tsgo --noEmit",
diff --git a/packages/console/core/package.json b/packages/console/core/package.json
index 377d31bbf..a77d9dac2 100644
--- a/packages/console/core/package.json
+++ b/packages/console/core/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/console-core",
- "version": "1.0.115",
+ "version": "1.0.119",
"private": true,
"type": "module",
"dependencies": {
diff --git a/packages/console/function/package.json b/packages/console/function/package.json
index 86b988e0c..a3561770f 100644
--- a/packages/console/function/package.json
+++ b/packages/console/function/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-function",
- "version": "1.0.115",
+ "version": "1.0.119",
"$schema": "https://json.schemastore.org/package.json",
"private": true,
"type": "module",
diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json
index 3a5e37d33..c2583b8ff 100644
--- a/packages/console/mail/package.json
+++ b/packages/console/mail/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-mail",
- "version": "1.0.115",
+ "version": "1.0.119",
"dependencies": {
"@jsx-email/all": "2.2.3",
"@jsx-email/cli": "1.4.3",
diff --git a/packages/desktop/package.json b/packages/desktop/package.json
index 3d76b42ad..5bdd0c987 100644
--- a/packages/desktop/package.json
+++ b/packages/desktop/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/desktop",
- "version": "1.0.115",
+ "version": "1.0.119",
"description": "",
"type": "module",
"scripts": {
diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json
index 4117c2490..6a06363c6 100644
--- a/packages/enterprise/package.json
+++ b/packages/enterprise/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/enterprise",
- "version": "1.0.115",
+ "version": "1.0.119",
"private": true,
"type": "module",
"scripts": {
diff --git a/packages/extensions/zed/extension.toml b/packages/extensions/zed/extension.toml
index 057373f4b..7ceea03bb 100644
--- a/packages/extensions/zed/extension.toml
+++ b/packages/extensions/zed/extension.toml
@@ -1,7 +1,7 @@
id = "opencode"
name = "OpenCode"
description = "The AI coding agent built for the terminal"
-version = "1.0.115"
+version = "1.0.119"
schema_version = 1
authors = ["Anomaly"]
repository = "https://github.com/sst/opencode"
@@ -11,26 +11,26 @@ name = "OpenCode"
icon = "./icons/opencode.svg"
[agent_servers.opencode.targets.darwin-aarch64]
-archive = "https://github.com/sst/opencode/releases/download/v1.0.115/opencode-darwin-arm64.zip"
+archive = "https://github.com/sst/opencode/releases/download/v1.0.119/opencode-darwin-arm64.zip"
cmd = "./opencode"
args = ["acp"]
[agent_servers.opencode.targets.darwin-x86_64]
-archive = "https://github.com/sst/opencode/releases/download/v1.0.115/opencode-darwin-x64.zip"
+archive = "https://github.com/sst/opencode/releases/download/v1.0.119/opencode-darwin-x64.zip"
cmd = "./opencode"
args = ["acp"]
[agent_servers.opencode.targets.linux-aarch64]
-archive = "https://github.com/sst/opencode/releases/download/v1.0.115/opencode-linux-arm64.zip"
+archive = "https://github.com/sst/opencode/releases/download/v1.0.119/opencode-linux-arm64.zip"
cmd = "./opencode"
args = ["acp"]
[agent_servers.opencode.targets.linux-x86_64]
-archive = "https://github.com/sst/opencode/releases/download/v1.0.115/opencode-linux-x64.zip"
+archive = "https://github.com/sst/opencode/releases/download/v1.0.119/opencode-linux-x64.zip"
cmd = "./opencode"
args = ["acp"]
[agent_servers.opencode.targets.windows-x86_64]
-archive = "https://github.com/sst/opencode/releases/download/v1.0.115/opencode-windows-x64.zip"
+archive = "https://github.com/sst/opencode/releases/download/v1.0.119/opencode-windows-x64.zip"
cmd = "./opencode.exe"
args = ["acp"]
diff --git a/packages/function/package.json b/packages/function/package.json
index a72a8b901..516b0b3f7 100644
--- a/packages/function/package.json
+++ b/packages/function/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/function",
- "version": "1.0.115",
+ "version": "1.0.119",
"$schema": "https://json.schemastore.org/package.json",
"private": true,
"type": "module",
diff --git a/packages/opencode/package.json b/packages/opencode/package.json
index 8d5bf4967..e0909c194 100644
--- a/packages/opencode/package.json
+++ b/packages/opencode/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "version": "1.0.115",
+ "version": "1.0.119",
"name": "opencode",
"type": "module",
"private": true,
diff --git a/packages/opencode/src/cli/cmd/tui/app.tsx b/packages/opencode/src/cli/cmd/tui/app.tsx
index 7c72274ad..5ec737256 100644
--- a/packages/opencode/src/cli/cmd/tui/app.tsx
+++ b/packages/opencode/src/cli/cmd/tui/app.tsx
@@ -452,51 +452,14 @@ function App() {
}
}}
>
-
-
-
-
-
-
-
-
-
-
-
-
-
- open
-
- code{" "}
-
- v{Installation.VERSION}
-
-
-
- {process.cwd().replace(Global.Path.home, "~")}
- {sync.data.vcs?.branch ? `:${sync.data.vcs.branch}` : ""}
-
-
-
-
-
-
- tab
-
- {""}
-
- {local.agent.current().name.toUpperCase()}
- AGENT
-
-
-
-
+
+
+
+
+
+
+
+
)
}
diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-provider.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-provider.tsx
index 109d4d25a..30a8bb2fc 100644
--- a/packages/opencode/src/cli/cmd/tui/component/dialog-provider.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/dialog-provider.tsx
@@ -197,11 +197,24 @@ function ApiMethod(props: ApiMethodProps) {
const dialog = useDialog()
const sdk = useSDK()
const sync = useSync()
+ const { theme } = useTheme()
return (
+
+ OpenCode Zen gives you access to all the best coding models at the cheapest prices with a single API key.
+
+
+ Go to https://opencode.ai/zen to get a key
+
+
+ ) : undefined
+ }
onConfirm={async (value) => {
if (!value) return
sdk.client.auth.set({
diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx
index 5780be4e9..4232f3ae8 100644
--- a/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx
@@ -81,6 +81,7 @@ export function Autocomplete(props: {
const extmarkId = input.extmarks.create({
start: extmarkStart,
end: extmarkEnd,
+ virtual: true,
styleId,
typeId: props.promptPartTypeId(),
})
@@ -291,6 +292,11 @@ export function Autocomplete(props: {
description: "open editor",
onSelect: () => command.trigger("prompt.editor", "prompt"),
},
+ {
+ display: "/connect",
+ description: "connect to a provider",
+ onSelect: () => command.trigger("provider.connect"),
+ },
{
display: "/help",
description: "show help",
diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx
index 19986f8b6..06e9a49e6 100644
--- a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx
@@ -310,6 +310,7 @@ export function Prompt(props: PromptProps) {
const extmarkId = input.extmarks.create({
start,
end,
+ virtual: true,
styleId,
typeId: promptPartTypeId,
})
@@ -636,11 +637,7 @@ export function Prompt(props: PromptProps) {
flexGrow={1}
>