diff --git a/.changeset/directory-page-heading.md b/.changeset/directory-page-heading.md
index f23be6e7d76..686e6c191e7 100644
--- a/.changeset/directory-page-heading.md
+++ b/.changeset/directory-page-heading.md
@@ -1,5 +1,5 @@
---
-"@opencode-ai/core": patch
+"@opencode/core": patch
---
Correct directory page headings when the read offset is zero.
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 19f0d44d09c..a90c3cd3d0a 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -49,7 +49,7 @@ jobs:
echo "app=true" >> "$GITHUB_OUTPUT"
exit 0
fi
- bun x turbo@2.10.2 ls --affected --filter=@opencode-ai/app --output=json > affected.json
+ bun x turbo@2.10.2 ls --affected --filter=@opencode/app --output=json > affected.json
bun -e 'const result = await Bun.file("affected.json").json(); console.log(`app=${result.packages.count > 0}`)' >> "$GITHUB_OUTPUT"
unit:
@@ -132,10 +132,10 @@ jobs:
timeout-minutes: 15
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
- bun turbo verify:package --filter=@opencode-ai/sdk
+ bun turbo verify:package --filter=@opencode/sdk
exit 0
fi
- bun turbo verify:package --affected --filter=@opencode-ai/sdk
+ bun turbo verify:package --affected --filter=@opencode/sdk
env:
TURBO_SCM_BASE: ${{ github.event_name == 'pull_request' && format('{0}^1', github.sha) || github.event.before }}
TURBO_SCM_HEAD: ${{ github.sha }}
diff --git a/.opencode/tool/github-pr-search.ts b/.opencode/tool/github-pr-search.ts
index 8bc8c554aae..c0ca3794d0f 100644
--- a/.opencode/tool/github-pr-search.ts
+++ b/.opencode/tool/github-pr-search.ts
@@ -1,5 +1,5 @@
///
-import { tool } from "@opencode-ai/plugin"
+import { tool } from "@opencode/plugin"
async function githubFetch(endpoint: string, options: RequestInit = {}) {
const response = await fetch(`https://api.github.com${endpoint}`, {
...options,
diff --git a/.opencode/tool/github-triage.ts b/.opencode/tool/github-triage.ts
index d610a81e497..c6f2f9c6875 100644
--- a/.opencode/tool/github-triage.ts
+++ b/.opencode/tool/github-triage.ts
@@ -1,5 +1,5 @@
///
-import { tool } from "@opencode-ai/plugin"
+import { tool } from "@opencode/plugin"
const TEAM = {
tui: ["kommander", "simonklee"],
diff --git a/AGENTS.md b/AGENTS.md
index 56c2c23ba72..c2d74cf6548 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -84,9 +84,9 @@ const { a, b } = obj
### Imports
- Never alias imports. Do not use `import { foo as bar } from "..."` or renamed imports like `resolve as pathResolve`.
-- Never use type-position `import("...")` references such as `Schema.declare`. Only when two imports genuinely collide on a name and no other option exists, an aliased type import (`import type { Plugin as PluginDefinition } from "..."`) is permitted as a last resort — still strongly preferred not to.
+- Never use type-position `import("...")` references such as `Schema.declare`. Only when two imports genuinely collide on a name and no other option exists, an aliased type import (`import type { Plugin as PluginDefinition } from "..."`) is permitted as a last resort — still strongly preferred not to.
- Never use star imports. Do not use `import * as Foo from "..."` or `import type * as Foo from "..."`.
-- If a namespace-style value is needed, import the module's own exported namespace by name, for example `import { Project } from "@opencode-ai/core/project"`, then reference `Project.ID`.
+- If a namespace-style value is needed, import the module's own exported namespace by name, for example `import { Project } from "@opencode/core/project"`, then reference `Project.ID`.
- Prefer dynamic imports for heavy modules that are only needed in selected code paths, especially in startup-sensitive entrypoints. Destructure dynamic import bindings near the top of the narrowest scope that needs them so they read like normal imports. Avoid inline chains such as `await import("./module").then((mod) => mod.value())` or `(await import("./module")).value()`. Keep branch-specific imports inside the branch that needs them to preserve lazy loading.
### Variables
diff --git a/bun.lock b/bun.lock
index 16f51aa7c64..2afb0ce01d6 100644
--- a/bun.lock
+++ b/bun.lock
@@ -6,8 +6,8 @@
"name": "opencode",
"dependencies": {
"@aws-sdk/client-s3": "3.933.0",
- "@opencode-ai/plugin": "workspace:*",
- "@opencode-ai/script": "workspace:*",
+ "@opencode/plugin": "workspace:*",
+ "@opencode/script": "workspace:*",
"heap-snapshot-toolkit": "1.1.3",
"typescript": "catalog:",
},
@@ -30,11 +30,11 @@
},
},
"packages/ai": {
- "name": "@opencode-ai/ai",
+ "name": "@opencode/ai",
"version": "1.17.20",
"dependencies": {
"@aws-sdk/credential-providers": "3.1057.0",
- "@opencode-ai/schema": "workspace:*",
+ "@opencode/schema": "workspace:*",
"@smithy/eventstream-codec": "4.2.14",
"@smithy/util-utf8": "4.2.2",
"aws4fetch": "1.0.20",
@@ -44,7 +44,7 @@
"devDependencies": {
"@clack/prompts": "1.0.0-alpha.1",
"@effect/platform-node": "catalog:",
- "@opencode-ai/http-recorder": "workspace:*",
+ "@opencode/http-recorder": "workspace:*",
"@tsconfig/bun": "catalog:",
"@types/bun": "catalog:",
"@typescript/native-preview": "catalog:",
@@ -52,7 +52,7 @@
},
},
"packages/app": {
- "name": "@opencode-ai/app",
+ "name": "@opencode/app",
"version": "1.18.15",
"dependencies": {
"@corvu/drawer": "catalog:",
@@ -62,12 +62,12 @@
"@dnd-kit/solid": "0.5.0",
"@ibm/plex": "6.4.1",
"@kobalte/core": "catalog:",
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/session-ui": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/client": "workspace:*",
"@opencode/plugin-browser": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/session-ui": "workspace:*",
+ "@opencode/ui": "workspace:*",
+ "@opencode/util": "workspace:*",
"@pierre/trees": "1.0.0-beta.4",
"@sentry/solid": "catalog:",
"@solid-primitives/event-bus": "1.1.2",
@@ -109,7 +109,7 @@
},
},
"packages/cli": {
- "name": "@opencode-ai/cli",
+ "name": "@opencode/cli",
"version": "1.18.4",
"bin": {
"opencode2": "./bin/opencode2.cjs",
@@ -118,13 +118,13 @@
"@agentclientprotocol/sdk": "1.2.1",
"@clack/prompts": "1.0.0-alpha.1",
"@effect/platform-node": "catalog:",
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/plugin": "workspace:*",
"@opencode-ai/pty": "0.1.13",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/server": "workspace:*",
- "@opencode-ai/tui": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/plugin": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/server": "workspace:*",
+ "@opencode/tui": "workspace:*",
+ "@opencode/util": "workspace:*",
"@opentui/core": "catalog:",
"@opentui/solid": "catalog:",
"@parcel/watcher": "2.5.1",
@@ -152,8 +152,8 @@
"@lydell/node-pty-linux-x64": "1.2.0-beta.12",
"@lydell/node-pty-win32-arm64": "1.2.0-beta.12",
"@lydell/node-pty-win32-x64": "1.2.0-beta.12",
- "@opencode-ai/protocol": "workspace:*",
- "@opencode-ai/script": "workspace:*",
+ "@opencode/protocol": "workspace:*",
+ "@opencode/script": "workspace:*",
"@parcel/watcher-darwin-arm64": "2.5.1",
"@parcel/watcher-linux-arm64-glibc": "2.5.1",
"@parcel/watcher-linux-x64-glibc": "2.5.1",
@@ -172,15 +172,15 @@
},
},
"packages/client": {
- "name": "@opencode-ai/client",
+ "name": "@opencode/client",
"version": "1.17.13",
"dependencies": {
- "@opencode-ai/protocol": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
+ "@opencode/protocol": "workspace:*",
+ "@opencode/schema": "workspace:*",
},
"devDependencies": {
"@effect/platform-node": "catalog:",
- "@opencode-ai/httpapi-codegen": "workspace:*",
+ "@opencode/httpapi-codegen": "workspace:*",
"@tsconfig/bun": "catalog:",
"@types/bun": "catalog:",
"@typescript/native-preview": "catalog:",
@@ -198,7 +198,7 @@
],
},
"packages/codemode": {
- "name": "@opencode-ai/codemode",
+ "name": "@opencode/codemode",
"version": "1.18.4",
"dependencies": {
"acorn": "8.15.0",
@@ -212,7 +212,7 @@
},
},
"packages/console/app": {
- "name": "@opencode-ai/console-app",
+ "name": "@opencode/console-app",
"version": "1.18.15",
"dependencies": {
"@cloudflare/vite-plugin": "1.15.2",
@@ -220,10 +220,10 @@
"@jsx-email/render": "1.1.1",
"@kobalte/core": "catalog:",
"@openauthjs/openauth": "catalog:",
- "@opencode-ai/console-core": "workspace:*",
- "@opencode-ai/console-mail": "workspace:*",
- "@opencode-ai/console-resource": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
+ "@opencode/console-core": "workspace:*",
+ "@opencode/console-mail": "workspace:*",
+ "@opencode/console-resource": "workspace:*",
+ "@opencode/ui": "workspace:*",
"@smithy/eventstream-codec": "4.2.7",
"@smithy/util-utf8": "4.2.0",
"@solidjs/meta": "catalog:",
@@ -248,13 +248,13 @@
},
},
"packages/console/core": {
- "name": "@opencode-ai/console-core",
+ "name": "@opencode/console-core",
"version": "1.18.15",
"dependencies": {
"@aws-sdk/client-sts": "3.782.0",
"@jsx-email/render": "1.1.1",
- "@opencode-ai/console-mail": "workspace:*",
- "@opencode-ai/console-resource": "workspace:*",
+ "@opencode/console-mail": "workspace:*",
+ "@opencode/console-resource": "workspace:*",
"@planetscale/database": "1.19.0",
"aws4fetch": "1.0.20",
"drizzle-orm": "catalog:",
@@ -275,12 +275,12 @@
},
},
"packages/console/function": {
- "name": "@opencode-ai/console-function",
+ "name": "@opencode/console-function",
"version": "1.18.15",
"dependencies": {
"@openauthjs/openauth": "0.0.0-20250322224806",
- "@opencode-ai/console-core": "workspace:*",
- "@opencode-ai/console-resource": "workspace:*",
+ "@opencode/console-core": "workspace:*",
+ "@opencode/console-resource": "workspace:*",
"zod": "catalog:",
},
"devDependencies": {
@@ -292,7 +292,7 @@
},
},
"packages/console/mail": {
- "name": "@opencode-ai/console-mail",
+ "name": "@opencode/console-mail",
"version": "1.18.15",
"dependencies": {
"@jsx-email/all": "2.2.3",
@@ -304,7 +304,7 @@
},
},
"packages/console/resource": {
- "name": "@opencode-ai/console-resource",
+ "name": "@opencode/console-resource",
"dependencies": {
"@cloudflare/workers-types": "catalog:",
},
@@ -316,11 +316,11 @@
},
},
"packages/console/support": {
- "name": "@opencode-ai/console-support",
+ "name": "@opencode/console-support",
"version": "1.18.15",
"dependencies": {
"@cloudflare/vite-plugin": "1.15.2",
- "@opencode-ai/console-core": "workspace:*",
+ "@opencode/console-core": "workspace:*",
"@solidjs/meta": "catalog:",
"@solidjs/router": "catalog:",
"@solidjs/start": "catalog:",
@@ -336,7 +336,7 @@
},
},
"packages/core": {
- "name": "@opencode-ai/core",
+ "name": "@opencode/core",
"version": "1.18.4",
"dependencies": {
"@ai-sdk/alibaba": "1.0.17",
@@ -355,13 +355,13 @@
"@ff-labs/fff-node": "0.10.5",
"@lydell/node-pty": "catalog:",
"@modelcontextprotocol/sdk": "1.29.0",
- "@opencode-ai/ai": "workspace:*",
- "@opencode-ai/codemode": "workspace:*",
- "@opencode-ai/plugin": "workspace:*",
"@opencode-ai/pty": "0.1.13",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/ai": "workspace:*",
+ "@opencode/codemode": "workspace:*",
+ "@opencode/plugin": "workspace:*",
"@opencode/plugin-browser": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/util": "workspace:*",
"@parcel/watcher": "2.5.1",
"@silvia-odwyer/photon-node": "0.3.4",
"@standard-schema/spec": "catalog:",
@@ -391,7 +391,7 @@
"devDependencies": {
"@effect/platform-node": "catalog:",
"@effect/sql-sqlite-bun": "catalog:",
- "@opencode-ai/http-recorder": "workspace:*",
+ "@opencode/http-recorder": "workspace:*",
"@parcel/watcher-darwin-arm64": "2.5.1",
"@parcel/watcher-darwin-x64": "2.5.1",
"@parcel/watcher-linux-arm64-glibc": "2.5.1",
@@ -408,7 +408,7 @@
},
},
"packages/desktop": {
- "name": "@opencode-ai/desktop",
+ "name": "@opencode/desktop",
"version": "1.18.15",
"dependencies": {
"@zip.js/zip.js": "2.7.62",
@@ -423,11 +423,11 @@
"@brendonovich/vite-plugin-opencode": "0.1.3",
"@effect/platform-node": "catalog:",
"@lydell/node-pty": "catalog:",
- "@opencode-ai/app": "workspace:*",
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
+ "@opencode/app": "workspace:*",
+ "@opencode/client": "workspace:*",
"@opencode/plugin-browser": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/ui": "workspace:*",
"@sentry/solid": "catalog:",
"@sentry/vite-plugin": "catalog:",
"@solid-primitives/storage": "catalog:",
@@ -460,17 +460,17 @@
},
},
"packages/enterprise": {
- "name": "@opencode-ai/enterprise",
+ "name": "@opencode/enterprise",
"version": "1.18.15",
"dependencies": {
"@hono/standard-validator": "catalog:",
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/core": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
"@opencode-ai/sdk": "1.18.21",
- "@opencode-ai/session-ui": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/core": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/session-ui": "workspace:*",
+ "@opencode/ui": "workspace:*",
+ "@opencode/util": "workspace:*",
"@pierre/diffs": "catalog:",
"@solidjs/meta": "catalog:",
"@solidjs/router": "catalog:",
@@ -497,7 +497,7 @@
},
},
"packages/function": {
- "name": "@opencode-ai/function",
+ "name": "@opencode/function",
"version": "1.18.15",
"dependencies": {
"@octokit/auth-app": "8.0.1",
@@ -513,7 +513,7 @@
},
},
"packages/http-recorder": {
- "name": "@opencode-ai/http-recorder",
+ "name": "@opencode/http-recorder",
"version": "1.18.15",
"dependencies": {
"@effect/platform-node-shared": "4.0.0-rc.112",
@@ -532,7 +532,7 @@
},
},
"packages/httpapi-codegen": {
- "name": "@opencode-ai/httpapi-codegen",
+ "name": "@opencode/httpapi-codegen",
"version": "0.0.0",
"dependencies": {
"effect": "catalog:",
@@ -545,10 +545,10 @@
},
},
"packages/latex": {
- "name": "@opencode-ai/latex",
+ "name": "@opencode/latex",
"version": "0.0.0",
"dependencies": {
- "@opencode-ai/plugin": "workspace:*",
+ "@opencode/plugin": "workspace:*",
"@opentui/core": "catalog:",
"string-width": "catalog:",
},
@@ -559,10 +559,10 @@
},
},
"packages/merman": {
- "name": "@opencode-ai/merman",
+ "name": "@opencode/merman",
"version": "0.0.0",
"dependencies": {
- "@opencode-ai/plugin": "workspace:*",
+ "@opencode/plugin": "workspace:*",
"@opentui/core": "catalog:",
"entities": "7.0.1",
"string-width": "catalog:",
@@ -574,21 +574,21 @@
},
},
"packages/plugin": {
- "name": "@opencode-ai/plugin",
+ "name": "@opencode/plugin",
"version": "1.18.15",
"dependencies": {
"@ai-sdk/provider": "3.0.8",
- "@opencode-ai/ai": "workspace:*",
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/protocol": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/ai": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/protocol": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/util": "workspace:*",
"@standard-schema/spec": "catalog:",
"effect": "catalog:",
"zod": "catalog:",
},
"devDependencies": {
- "@opencode-ai/theme": "workspace:*",
+ "@opencode/theme": "workspace:*",
"@opentui/core": "catalog:",
"@opentui/solid": "catalog:",
"@tsconfig/bun": "catalog:",
@@ -600,13 +600,13 @@
"typescript": "catalog:",
},
"peerDependencies": {
- "@opencode-ai/theme": "workspace:*",
+ "@opencode/theme": "workspace:*",
"@opentui/core": ">=0.5.10",
"@opentui/solid": ">=0.5.10",
"solid-js": ">=1.9.0",
},
"optionalPeers": [
- "@opencode-ai/theme",
+ "@opencode/theme",
"@opentui/core",
"@opentui/solid",
"solid-js",
@@ -616,8 +616,8 @@
"name": "@opencode/plugin-browser",
"version": "0.0.0",
"dependencies": {
- "@opencode-ai/plugin": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
+ "@opencode/plugin": "workspace:*",
+ "@opencode/schema": "workspace:*",
"effect": "catalog:",
},
"devDependencies": {
@@ -628,7 +628,7 @@
},
},
"packages/posts": {
- "name": "@opencode-ai/posts",
+ "name": "@opencode/posts",
"dependencies": {
"@astrojs/mdx": "7.0.5",
"@fontsource/commit-mono": "5.3.0",
@@ -643,10 +643,10 @@
},
},
"packages/protocol": {
- "name": "@opencode-ai/protocol",
+ "name": "@opencode/protocol",
"version": "1.17.11",
"dependencies": {
- "@opencode-ai/schema": "workspace:*",
+ "@opencode/schema": "workspace:*",
"effect": "catalog:",
},
"devDependencies": {
@@ -658,7 +658,7 @@
},
},
"packages/schema": {
- "name": "@opencode-ai/schema",
+ "name": "@opencode/schema",
"version": "1.17.11",
"dependencies": {
"@standard-schema/spec": "catalog:",
@@ -672,7 +672,7 @@
},
},
"packages/script": {
- "name": "@opencode-ai/script",
+ "name": "@opencode/script",
"dependencies": {
"semver": "^7.6.3",
},
@@ -682,56 +682,56 @@
},
},
"packages/sdk": {
- "name": "@opencode-ai/sdk",
+ "name": "@opencode/sdk",
"version": "1.18.4",
"dependencies": {
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/core": "workspace:*",
- "@opencode-ai/plugin": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/server": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/core": "workspace:*",
+ "@opencode/plugin": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/server": "workspace:*",
+ "@opencode/util": "workspace:*",
"effect": "catalog:",
},
"devDependencies": {
- "@opencode-ai/ai": "workspace:*",
- "@opencode-ai/httpapi-codegen": "workspace:*",
- "@opencode-ai/protocol": "workspace:*",
+ "@opencode/ai": "workspace:*",
+ "@opencode/httpapi-codegen": "workspace:*",
+ "@opencode/protocol": "workspace:*",
"@tsconfig/bun": "catalog:",
"@types/bun": "catalog:",
"@typescript/native-preview": "catalog:",
},
},
"packages/server": {
- "name": "@opencode-ai/server",
+ "name": "@opencode/server",
"version": "1.18.4",
"dependencies": {
"@effect/platform-node": "catalog:",
"@effect/platform-node-shared": "catalog:",
- "@opencode-ai/core": "workspace:*",
- "@opencode-ai/protocol": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/simulation": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/core": "workspace:*",
+ "@opencode/protocol": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/simulation": "workspace:*",
+ "@opencode/util": "workspace:*",
"drizzle-orm": "catalog:",
"effect": "catalog:",
},
"devDependencies": {
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/plugin": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/plugin": "workspace:*",
"@tsconfig/bun": "catalog:",
"@types/bun": "catalog:",
"@typescript/native-preview": "catalog:",
},
},
"packages/session-ui": {
- "name": "@opencode-ai/session-ui",
+ "name": "@opencode/session-ui",
"version": "1.18.15",
"dependencies": {
"@kobalte/core": "catalog:",
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/ui": "workspace:*",
+ "@opencode/util": "workspace:*",
"@pierre/diffs": "catalog:",
"@shikijs/stream": "catalog:",
"@solid-primitives/event-listener": "catalog:",
@@ -760,14 +760,14 @@
},
},
"packages/simulation": {
- "name": "@opencode-ai/simulation",
+ "name": "@opencode/simulation",
"version": "1.17.13",
"dependencies": {
- "@opencode-ai/ai": "workspace:*",
- "@opencode-ai/core": "workspace:*",
- "@opencode-ai/plugin": "workspace:*",
- "@opencode-ai/protocol": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/ai": "workspace:*",
+ "@opencode/core": "workspace:*",
+ "@opencode/plugin": "workspace:*",
+ "@opencode/protocol": "workspace:*",
+ "@opencode/util": "workspace:*",
"@opentui/core": "catalog:",
"effect": "catalog:",
"ws": "8.21.0",
@@ -780,13 +780,13 @@
},
},
"packages/stats/app": {
- "name": "@opencode-ai/stats-app",
+ "name": "@opencode/stats-app",
"version": "1.18.15",
"dependencies": {
"@ibm/plex": "6.4.1",
"@kobalte/core": "catalog:",
- "@opencode-ai/stats-core": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
+ "@opencode/stats-core": "workspace:*",
+ "@opencode/ui": "workspace:*",
"@solidjs/meta": "catalog:",
"@solidjs/router": "catalog:",
"@solidjs/start": "catalog:",
@@ -814,7 +814,7 @@
},
},
"packages/stats/core": {
- "name": "@opencode-ai/stats-core",
+ "name": "@opencode/stats-core",
"version": "1.18.15",
"dependencies": {
"@aws-sdk/client-athena": "3.933.0",
@@ -833,12 +833,12 @@
},
},
"packages/stats/server": {
- "name": "@opencode-ai/stats-server",
+ "name": "@opencode/stats-server",
"version": "1.18.15",
"dependencies": {
"@aws-sdk/client-firehose": "3.933.0",
"@effect/platform-node": "catalog:",
- "@opencode-ai/stats-core": "workspace:*",
+ "@opencode/stats-core": "workspace:*",
"effect": "catalog:",
"sst": "catalog:",
},
@@ -851,11 +851,11 @@
},
},
"packages/storybook": {
- "name": "@opencode-ai/storybook",
+ "name": "@opencode/storybook",
"devDependencies": {
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/session-ui": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/session-ui": "workspace:*",
+ "@opencode/ui": "workspace:*",
"@playwright/test": "catalog:",
"@solidjs/meta": "catalog:",
"@storybook/addon-a11y": "10.4.4",
@@ -879,7 +879,7 @@
},
},
"packages/theme": {
- "name": "@opencode-ai/theme",
+ "name": "@opencode/theme",
"version": "0.0.0",
"dependencies": {
"@opentui/core": "catalog:",
@@ -893,19 +893,19 @@
},
},
"packages/tui": {
- "name": "@opencode-ai/tui",
+ "name": "@opencode/tui",
"version": "1.18.4",
"dependencies": {
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/core": "workspace:*",
- "@opencode-ai/latex": "workspace:*",
- "@opencode-ai/merman": "workspace:*",
- "@opencode-ai/plugin": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/simulation": "workspace:*",
- "@opencode-ai/theme": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/core": "workspace:*",
+ "@opencode/latex": "workspace:*",
+ "@opencode/merman": "workspace:*",
+ "@opencode/plugin": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/simulation": "workspace:*",
+ "@opencode/theme": "workspace:*",
+ "@opencode/ui": "workspace:*",
+ "@opencode/util": "workspace:*",
"@opentui/core": "catalog:",
"@opentui/keymap": "catalog:",
"@opentui/solid": "catalog:",
@@ -928,7 +928,7 @@
},
},
"packages/ui": {
- "name": "@opencode-ai/ui",
+ "name": "@opencode/ui",
"version": "1.18.15",
"dependencies": {
"@kobalte/core": "catalog:",
@@ -963,7 +963,7 @@
},
},
"packages/updates": {
- "name": "@opencode-ai/updates",
+ "name": "@opencode/updates",
"version": "1.18.4",
"dependencies": {
"jose": "6.0.11",
@@ -979,7 +979,7 @@
},
},
"packages/util": {
- "name": "@opencode-ai/util",
+ "name": "@opencode/util",
"version": "1.18.3",
"dependencies": {
"@effect/opentelemetry": "catalog:",
@@ -1012,7 +1012,7 @@
},
},
"packages/web": {
- "name": "@opencode-ai/web",
+ "name": "@opencode/web",
"version": "1.18.15",
"dependencies": {
"@astrojs/cloudflare": "12.6.3",
@@ -1044,7 +1044,7 @@
},
},
"packages/www": {
- "name": "@opencode-ai/www",
+ "name": "@opencode/www",
"dependencies": {
"@astrojs/mdx": "7.0.5",
"astro": "7.1.3",
@@ -2138,49 +2138,9 @@
"@openauthjs/openauth": ["@openauthjs/openauth@0.0.0-20250322224806", "", { "dependencies": { "@standard-schema/spec": "1.0.0-beta.3", "aws4fetch": "1.0.20", "jose": "5.9.6" }, "peerDependencies": { "arctic": "^2.2.2", "hono": "^4.0.0" } }, "sha512-p5IWSRXvABcwocH2dNI0w8c1QJelIOFulwhKk+aLLFfUbs8u1pr7kQbYe8yCSM2+bcLHiwbogpUQc2ovrGwCuw=="],
- "@opencode-ai/ai": ["@opencode-ai/ai@workspace:packages/ai"],
+ "@opencode-ai/client": ["@opencode-ai/client@0.0.0-beta-18050", "", { "dependencies": { "@opencode-ai/protocol": "0.0.0-beta-18050", "@opencode-ai/schema": "0.0.0-beta-18050" }, "peerDependencies": { "effect": "4.0.0-rc.111", "solid-js": ">=1.9.0" }, "optionalPeers": ["effect", "solid-js"] }, "sha512-zWZv5X23iyx+/mxwiAi18YY/VMjQofTaH7RyKMBt7KL6FmaKAWf9Q05zbQhrLX8DYJD3MOtbjBeQCGLsPUDU8g=="],
- "@opencode-ai/app": ["@opencode-ai/app@workspace:packages/app"],
-
- "@opencode-ai/cli": ["@opencode-ai/cli@workspace:packages/cli"],
-
- "@opencode-ai/client": ["@opencode-ai/client@workspace:packages/client"],
-
- "@opencode-ai/codemode": ["@opencode-ai/codemode@workspace:packages/codemode"],
-
- "@opencode-ai/console-app": ["@opencode-ai/console-app@workspace:packages/console/app"],
-
- "@opencode-ai/console-core": ["@opencode-ai/console-core@workspace:packages/console/core"],
-
- "@opencode-ai/console-function": ["@opencode-ai/console-function@workspace:packages/console/function"],
-
- "@opencode-ai/console-mail": ["@opencode-ai/console-mail@workspace:packages/console/mail"],
-
- "@opencode-ai/console-resource": ["@opencode-ai/console-resource@workspace:packages/console/resource"],
-
- "@opencode-ai/console-support": ["@opencode-ai/console-support@workspace:packages/console/support"],
-
- "@opencode-ai/core": ["@opencode-ai/core@workspace:packages/core"],
-
- "@opencode-ai/desktop": ["@opencode-ai/desktop@workspace:packages/desktop"],
-
- "@opencode-ai/enterprise": ["@opencode-ai/enterprise@workspace:packages/enterprise"],
-
- "@opencode-ai/function": ["@opencode-ai/function@workspace:packages/function"],
-
- "@opencode-ai/http-recorder": ["@opencode-ai/http-recorder@workspace:packages/http-recorder"],
-
- "@opencode-ai/httpapi-codegen": ["@opencode-ai/httpapi-codegen@workspace:packages/httpapi-codegen"],
-
- "@opencode-ai/latex": ["@opencode-ai/latex@workspace:packages/latex"],
-
- "@opencode-ai/merman": ["@opencode-ai/merman@workspace:packages/merman"],
-
- "@opencode-ai/plugin": ["@opencode-ai/plugin@workspace:packages/plugin"],
-
- "@opencode-ai/posts": ["@opencode-ai/posts@workspace:packages/posts"],
-
- "@opencode-ai/protocol": ["@opencode-ai/protocol@workspace:packages/protocol"],
+ "@opencode-ai/protocol": ["@opencode-ai/protocol@0.0.0-beta-18050", "", { "dependencies": { "@opencode-ai/schema": "0.0.0-beta-18050", "effect": "4.0.0-rc.111" } }, "sha512-HDQMnvGp8IU0MdBRbEuydX1WQm09BZ4HJm9iSMQwzweJuQ2HNscgzHJPIH6P02BsbbtfJ8J7sZGPItrz1tWSgw=="],
"@opencode-ai/pty": ["@opencode-ai/pty@0.1.13", "", { "optionalDependencies": { "@opencode-ai/pty-darwin-arm64": "0.1.13", "@opencode-ai/pty-darwin-x64": "0.1.13", "@opencode-ai/pty-linux-arm64-gnu": "0.1.13", "@opencode-ai/pty-linux-arm64-musl": "0.1.13", "@opencode-ai/pty-linux-x64-gnu": "0.1.13", "@opencode-ai/pty-linux-x64-musl": "0.1.13" }, "bin": { "opencode-pty": "bin/opencode-pty.js" } }, "sha512-WPCN8h8HaZhhUcrMG0zu+4D9vco0EZiEg/gCF1K3JPRN6UsHMiXq1HVIy5IlyfcoyjfViRmQmXYE4AuU3laBjA=="],
@@ -2196,42 +2156,90 @@
"@opencode-ai/pty-linux-x64-musl": ["@opencode-ai/pty-linux-x64-musl@0.1.13", "", { "os": "linux", "cpu": "x64" }, "sha512-rXDpidW66gz2b2M/NbUN8ZKmAxaJcASnuHATeXevlrFdiPUv8uJwvkRd6Pla1fp01Q65MkBmgRa7Q9c+H1PlzA=="],
- "@opencode-ai/schema": ["@opencode-ai/schema@workspace:packages/schema"],
+ "@opencode-ai/schema": ["@opencode-ai/schema@0.0.0-beta-18050", "", { "dependencies": { "@standard-schema/spec": "1.1.0", "effect": "4.0.0-rc.111" } }, "sha512-/D6VXaWlytTXR3IOiMLIKuPcfp7FQNUzRPm9z3K7UBFd1Bw4q/WZksaf5RVcBGz+0YRxYMc1V4D7MFlceSgtyg=="],
- "@opencode-ai/script": ["@opencode-ai/script@workspace:packages/script"],
+ "@opencode-ai/sdk": ["@opencode-ai/sdk@1.18.21", "", { "dependencies": { "cross-spawn": "7.0.6" } }, "sha512-k6iHQ5C8wOPglk+LgFyYnst168cGMQYumgpbVoeXJ+iC1AtvwD5zmjuF8CxMze/y9G1K2bOeO6p9yRvA7eHZLA=="],
- "@opencode-ai/sdk": ["@opencode-ai/sdk@workspace:packages/sdk"],
+ "@opencode/ai": ["@opencode/ai@workspace:packages/ai"],
- "@opencode-ai/server": ["@opencode-ai/server@workspace:packages/server"],
+ "@opencode/app": ["@opencode/app@workspace:packages/app"],
- "@opencode-ai/session-ui": ["@opencode-ai/session-ui@workspace:packages/session-ui"],
+ "@opencode/cli": ["@opencode/cli@workspace:packages/cli"],
- "@opencode-ai/simulation": ["@opencode-ai/simulation@workspace:packages/simulation"],
+ "@opencode/client": ["@opencode/client@workspace:packages/client"],
- "@opencode-ai/stats-app": ["@opencode-ai/stats-app@workspace:packages/stats/app"],
+ "@opencode/codemode": ["@opencode/codemode@workspace:packages/codemode"],
- "@opencode-ai/stats-core": ["@opencode-ai/stats-core@workspace:packages/stats/core"],
+ "@opencode/console-app": ["@opencode/console-app@workspace:packages/console/app"],
- "@opencode-ai/stats-server": ["@opencode-ai/stats-server@workspace:packages/stats/server"],
+ "@opencode/console-core": ["@opencode/console-core@workspace:packages/console/core"],
- "@opencode-ai/storybook": ["@opencode-ai/storybook@workspace:packages/storybook"],
+ "@opencode/console-function": ["@opencode/console-function@workspace:packages/console/function"],
- "@opencode-ai/theme": ["@opencode-ai/theme@workspace:packages/theme"],
+ "@opencode/console-mail": ["@opencode/console-mail@workspace:packages/console/mail"],
- "@opencode-ai/tui": ["@opencode-ai/tui@workspace:packages/tui"],
+ "@opencode/console-resource": ["@opencode/console-resource@workspace:packages/console/resource"],
- "@opencode-ai/ui": ["@opencode-ai/ui@workspace:packages/ui"],
+ "@opencode/console-support": ["@opencode/console-support@workspace:packages/console/support"],
- "@opencode-ai/updates": ["@opencode-ai/updates@workspace:packages/updates"],
+ "@opencode/core": ["@opencode/core@workspace:packages/core"],
- "@opencode-ai/util": ["@opencode-ai/util@workspace:packages/util"],
+ "@opencode/desktop": ["@opencode/desktop@workspace:packages/desktop"],
- "@opencode-ai/web": ["@opencode-ai/web@workspace:packages/web"],
+ "@opencode/enterprise": ["@opencode/enterprise@workspace:packages/enterprise"],
- "@opencode-ai/www": ["@opencode-ai/www@workspace:packages/www"],
+ "@opencode/function": ["@opencode/function@workspace:packages/function"],
+
+ "@opencode/http-recorder": ["@opencode/http-recorder@workspace:packages/http-recorder"],
+
+ "@opencode/httpapi-codegen": ["@opencode/httpapi-codegen@workspace:packages/httpapi-codegen"],
+
+ "@opencode/latex": ["@opencode/latex@workspace:packages/latex"],
+
+ "@opencode/merman": ["@opencode/merman@workspace:packages/merman"],
+
+ "@opencode/plugin": ["@opencode/plugin@workspace:packages/plugin"],
"@opencode/plugin-browser": ["@opencode/plugin-browser@workspace:packages/plugin-browser"],
+ "@opencode/posts": ["@opencode/posts@workspace:packages/posts"],
+
+ "@opencode/protocol": ["@opencode/protocol@workspace:packages/protocol"],
+
+ "@opencode/schema": ["@opencode/schema@workspace:packages/schema"],
+
+ "@opencode/script": ["@opencode/script@workspace:packages/script"],
+
+ "@opencode/sdk": ["@opencode/sdk@workspace:packages/sdk"],
+
+ "@opencode/server": ["@opencode/server@workspace:packages/server"],
+
+ "@opencode/session-ui": ["@opencode/session-ui@workspace:packages/session-ui"],
+
+ "@opencode/simulation": ["@opencode/simulation@workspace:packages/simulation"],
+
+ "@opencode/stats-app": ["@opencode/stats-app@workspace:packages/stats/app"],
+
+ "@opencode/stats-core": ["@opencode/stats-core@workspace:packages/stats/core"],
+
+ "@opencode/stats-server": ["@opencode/stats-server@workspace:packages/stats/server"],
+
+ "@opencode/storybook": ["@opencode/storybook@workspace:packages/storybook"],
+
+ "@opencode/theme": ["@opencode/theme@workspace:packages/theme"],
+
+ "@opencode/tui": ["@opencode/tui@workspace:packages/tui"],
+
+ "@opencode/ui": ["@opencode/ui@workspace:packages/ui"],
+
+ "@opencode/updates": ["@opencode/updates@workspace:packages/updates"],
+
+ "@opencode/util": ["@opencode/util@workspace:packages/util"],
+
+ "@opencode/web": ["@opencode/web@workspace:packages/web"],
+
+ "@opencode/www": ["@opencode/www@workspace:packages/www"],
+
"@openrouter/ai-sdk-provider": ["@openrouter/ai-sdk-provider@2.10.0", "", { "peerDependencies": { "ai": "^6.0.0", "zod": "^3.25.0 || ^4.0.0" } }, "sha512-FMsAEjLUt5pWuRE2LDC/LCvVrFjLlrEzUITH5+5SZtfq7KZ2wrOHjQVxzz92sju8S9ltpzW87CLW8/b0oBXVCw=="],
"@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="],
@@ -6220,8 +6228,6 @@
"@babel/preset-env/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
- "@brendonovich/vite-plugin-opencode/@opencode-ai/client": ["@opencode-ai/client@0.0.0-beta-18050", "", { "dependencies": { "@opencode-ai/protocol": "0.0.0-beta-18050", "@opencode-ai/schema": "0.0.0-beta-18050" }, "peerDependencies": { "effect": "4.0.0-rc.111", "solid-js": ">=1.9.0" }, "optionalPeers": ["effect", "solid-js"] }, "sha512-zWZv5X23iyx+/mxwiAi18YY/VMjQofTaH7RyKMBt7KL6FmaKAWf9Q05zbQhrLX8DYJD3MOtbjBeQCGLsPUDU8g=="],
-
"@bruits/satteri-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ=="],
"@bruits/satteri-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw=="],
@@ -6350,65 +6356,63 @@
"@openauthjs/openauth/jose": ["jose@5.9.6", "", {}, "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ=="],
- "@opencode-ai/cli/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
+ "@opencode/cli/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
- "@opencode-ai/cli/vite-plugin-solid": ["vite-plugin-solid@2.11.10", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw=="],
+ "@opencode/cli/vite-plugin-solid": ["vite-plugin-solid@2.11.10", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw=="],
- "@opencode-ai/console-app/@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.7", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.11.0", "@smithy/util-hex-encoding": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-DrpkEoM3j9cBBWhufqBwnbbn+3nf1N9FP6xuVJ+e220jbactKuQgaZwjwP5CP1t+O94brm2JgVMD2atMGX3xIQ=="],
+ "@opencode/console-app/@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.7", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.11.0", "@smithy/util-hex-encoding": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-DrpkEoM3j9cBBWhufqBwnbbn+3nf1N9FP6xuVJ+e220jbactKuQgaZwjwP5CP1t+O94brm2JgVMD2atMGX3xIQ=="],
- "@opencode-ai/console-app/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="],
+ "@opencode/console-app/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="],
- "@opencode-ai/console-app/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
+ "@opencode/console-app/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
- "@opencode-ai/console-mail/@types/react": ["@types/react@18.0.25", "", { "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g=="],
+ "@opencode/console-mail/@types/react": ["@types/react@18.0.25", "", { "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g=="],
- "@opencode-ai/console-support/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
+ "@opencode/console-support/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
- "@opencode-ai/desktop/typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="],
+ "@opencode/desktop/typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="],
- "@opencode-ai/enterprise/@opencode-ai/sdk": ["@opencode-ai/sdk@1.18.21", "", { "dependencies": { "cross-spawn": "7.0.6" } }, "sha512-k6iHQ5C8wOPglk+LgFyYnst168cGMQYumgpbVoeXJ+iC1AtvwD5zmjuF8CxMze/y9G1K2bOeO6p9yRvA7eHZLA=="],
+ "@opencode/enterprise/@tailwindcss/vite": ["@tailwindcss/vite@4.1.11", "", { "dependencies": { "@tailwindcss/node": "4.1.11", "@tailwindcss/oxide": "4.1.11", "tailwindcss": "4.1.11" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw=="],
- "@opencode-ai/enterprise/@tailwindcss/vite": ["@tailwindcss/vite@4.1.11", "", { "dependencies": { "@tailwindcss/node": "4.1.11", "@tailwindcss/oxide": "4.1.11", "tailwindcss": "4.1.11" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw=="],
+ "@opencode/enterprise/tailwindcss": ["tailwindcss@4.1.11", "", {}, "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA=="],
- "@opencode-ai/enterprise/tailwindcss": ["tailwindcss@4.1.11", "", {}, "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA=="],
+ "@opencode/enterprise/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
- "@opencode-ai/enterprise/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
+ "@opencode/posts/wrangler": ["wrangler@4.110.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "4.20260708.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260708.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20260708.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-xZeXKYi7hxQRF5anL+v77RkufJNpF9f3Eqeyqq2QBsETpLZgh0Agj0jJ6JPtkbgn6ukZdh8OK5egsGPWIditgg=="],
- "@opencode-ai/posts/wrangler": ["wrangler@4.110.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "4.20260708.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260708.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20260708.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-xZeXKYi7hxQRF5anL+v77RkufJNpF9f3Eqeyqq2QBsETpLZgh0Agj0jJ6JPtkbgn6ukZdh8OK5egsGPWIditgg=="],
+ "@opencode/session-ui/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
- "@opencode-ai/session-ui/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
+ "@opencode/session-ui/vite-plugin-solid": ["vite-plugin-solid@2.11.10", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw=="],
- "@opencode-ai/session-ui/vite-plugin-solid": ["vite-plugin-solid@2.11.10", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw=="],
+ "@opencode/stats-app/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
- "@opencode-ai/stats-app/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
+ "@opencode/storybook/@tailwindcss/vite": ["@tailwindcss/vite@4.1.11", "", { "dependencies": { "@tailwindcss/node": "4.1.11", "@tailwindcss/oxide": "4.1.11", "tailwindcss": "4.1.11" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw=="],
- "@opencode-ai/storybook/@tailwindcss/vite": ["@tailwindcss/vite@4.1.11", "", { "dependencies": { "@tailwindcss/node": "4.1.11", "@tailwindcss/oxide": "4.1.11", "tailwindcss": "4.1.11" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw=="],
+ "@opencode/storybook/@types/react": ["@types/react@18.0.25", "", { "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g=="],
- "@opencode-ai/storybook/@types/react": ["@types/react@18.0.25", "", { "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g=="],
+ "@opencode/storybook/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
- "@opencode-ai/storybook/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
+ "@opencode/storybook/vite-plugin-solid": ["vite-plugin-solid@2.11.12", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-FgjPcx2OwX9h6f28jli7A4bG7PP3te8uyakE5iqsmpq3Jqi1TWLgSroC9N6cMfGRU2zXsl4Q6ISvTr2VL0QHpA=="],
- "@opencode-ai/storybook/vite-plugin-solid": ["vite-plugin-solid@2.11.12", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-FgjPcx2OwX9h6f28jli7A4bG7PP3te8uyakE5iqsmpq3Jqi1TWLgSroC9N6cMfGRU2zXsl4Q6ISvTr2VL0QHpA=="],
+ "@opencode/ui/tailwindcss": ["tailwindcss@4.1.11", "", {}, "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA=="],
- "@opencode-ai/ui/tailwindcss": ["tailwindcss@4.1.11", "", {}, "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA=="],
+ "@opencode/ui/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
- "@opencode-ai/ui/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
+ "@opencode/ui/vite-plugin-solid": ["vite-plugin-solid@2.11.10", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw=="],
- "@opencode-ai/ui/vite-plugin-solid": ["vite-plugin-solid@2.11.10", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw=="],
+ "@opencode/updates/@types/semver": ["@types/semver@7.7.1", "", {}, "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA=="],
- "@opencode-ai/updates/@types/semver": ["@types/semver@7.7.1", "", {}, "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA=="],
+ "@opencode/updates/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="],
- "@opencode-ai/updates/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="],
+ "@opencode/updates/wrangler": ["wrangler@4.110.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "4.20260708.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260708.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20260708.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-xZeXKYi7hxQRF5anL+v77RkufJNpF9f3Eqeyqq2QBsETpLZgh0Agj0jJ6JPtkbgn6ukZdh8OK5egsGPWIditgg=="],
- "@opencode-ai/updates/wrangler": ["wrangler@4.110.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "4.20260708.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260708.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20260708.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-xZeXKYi7hxQRF5anL+v77RkufJNpF9f3Eqeyqq2QBsETpLZgh0Agj0jJ6JPtkbgn6ukZdh8OK5egsGPWIditgg=="],
+ "@opencode/web/@astrojs/cloudflare": ["@astrojs/cloudflare@12.6.3", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.1", "@astrojs/underscore-redirects": "1.0.0", "@cloudflare/workers-types": "^4.20250507.0", "tinyglobby": "^0.2.13", "vite": "^6.3.5", "wrangler": "^4.14.1" }, "peerDependencies": { "astro": "^5.0.0" } }, "sha512-xhJptF5tU2k5eo70nIMyL1Udma0CqmUEnGSlGyFflLqSY82CRQI6nWZ/xZt0ZvmXuErUjIx0YYQNfZsz5CNjLQ=="],
- "@opencode-ai/web/@astrojs/cloudflare": ["@astrojs/cloudflare@12.6.3", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.1", "@astrojs/underscore-redirects": "1.0.0", "@cloudflare/workers-types": "^4.20250507.0", "tinyglobby": "^0.2.13", "vite": "^6.3.5", "wrangler": "^4.14.1" }, "peerDependencies": { "astro": "^5.0.0" } }, "sha512-xhJptF5tU2k5eo70nIMyL1Udma0CqmUEnGSlGyFflLqSY82CRQI6nWZ/xZt0ZvmXuErUjIx0YYQNfZsz5CNjLQ=="],
+ "@opencode/web/astro": ["astro@5.7.13", "", { "dependencies": { "@astrojs/compiler": "^2.11.0", "@astrojs/internal-helpers": "0.6.1", "@astrojs/markdown-remark": "6.3.1", "@astrojs/telemetry": "3.2.1", "@capsizecss/unpack": "^2.4.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.1.4", "acorn": "^8.14.1", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", "ci-info": "^4.2.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^1.0.2", "cssesc": "^3.0.0", "debug": "^4.4.0", "deterministic-object-hash": "^2.0.2", "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.6.0", "esbuild": "^0.25.0", "estree-walker": "^3.0.3", "flattie": "^1.1.1", "fontace": "~0.3.0", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.1.1", "js-yaml": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.17", "magicast": "^0.3.5", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "p-limit": "^6.2.0", "p-queue": "^8.1.0", "package-manager-detector": "^1.1.0", "picomatch": "^4.0.2", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.7.1", "shiki": "^3.2.1", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.12", "tsconfck": "^3.1.5", "ultrahtml": "^1.6.0", "unifont": "~0.5.0", "unist-util-visit": "^5.0.0", "unstorage": "^1.15.0", "vfile": "^6.0.3", "vite": "^6.3.4", "vitefu": "^1.0.6", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.1", "zod": "^3.24.2", "zod-to-json-schema": "^3.24.5", "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.33.3" }, "bin": { "astro": "astro.js" } }, "sha512-cRGq2llKOhV3XMcYwQpfBIUcssN6HEK5CRbcMxAfd9OcFhvWE7KUy50zLioAZVVl3AqgUTJoNTlmZfD2eG0G1w=="],
- "@opencode-ai/web/astro": ["astro@5.7.13", "", { "dependencies": { "@astrojs/compiler": "^2.11.0", "@astrojs/internal-helpers": "0.6.1", "@astrojs/markdown-remark": "6.3.1", "@astrojs/telemetry": "3.2.1", "@capsizecss/unpack": "^2.4.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.1.4", "acorn": "^8.14.1", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", "ci-info": "^4.2.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^1.0.2", "cssesc": "^3.0.0", "debug": "^4.4.0", "deterministic-object-hash": "^2.0.2", "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.6.0", "esbuild": "^0.25.0", "estree-walker": "^3.0.3", "flattie": "^1.1.1", "fontace": "~0.3.0", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.1.1", "js-yaml": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.17", "magicast": "^0.3.5", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "p-limit": "^6.2.0", "p-queue": "^8.1.0", "package-manager-detector": "^1.1.0", "picomatch": "^4.0.2", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.7.1", "shiki": "^3.2.1", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.12", "tsconfck": "^3.1.5", "ultrahtml": "^1.6.0", "unifont": "~0.5.0", "unist-util-visit": "^5.0.0", "unstorage": "^1.15.0", "vfile": "^6.0.3", "vite": "^6.3.4", "vitefu": "^1.0.6", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.1", "zod": "^3.24.2", "zod-to-json-schema": "^3.24.5", "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.33.3" }, "bin": { "astro": "astro.js" } }, "sha512-cRGq2llKOhV3XMcYwQpfBIUcssN6HEK5CRbcMxAfd9OcFhvWE7KUy50zLioAZVVl3AqgUTJoNTlmZfD2eG0G1w=="],
+ "@opencode/www/@astrojs/markdown-remark": ["@astrojs/markdown-remark@7.2.4", "", { "dependencies": { "@astrojs/internal-helpers": "0.10.4", "@astrojs/prism": "4.0.2", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.1.0", "unist-util-visit-parents": "^6.0.2", "vfile": "^6.0.3" } }, "sha512-MvspGMynWKAjTe4/lTUdmBPHIFKNVLTCF6UlyWGogTGzNrTvjD+D4n48k7h8swxsEPKHK2TwxkZO7uoaCv1Pow=="],
- "@opencode-ai/www/@astrojs/markdown-remark": ["@astrojs/markdown-remark@7.2.4", "", { "dependencies": { "@astrojs/internal-helpers": "0.10.4", "@astrojs/prism": "4.0.2", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.1.0", "unist-util-visit-parents": "^6.0.2", "vfile": "^6.0.3" } }, "sha512-MvspGMynWKAjTe4/lTUdmBPHIFKNVLTCF6UlyWGogTGzNrTvjD+D4n48k7h8swxsEPKHK2TwxkZO7uoaCv1Pow=="],
-
- "@opencode-ai/www/wrangler": ["wrangler@4.110.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "4.20260708.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260708.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20260708.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-xZeXKYi7hxQRF5anL+v77RkufJNpF9f3Eqeyqq2QBsETpLZgh0Agj0jJ6JPtkbgn6ukZdh8OK5egsGPWIditgg=="],
+ "@opencode/www/wrangler": ["wrangler@4.110.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "4.20260708.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260708.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20260708.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-xZeXKYi7hxQRF5anL+v77RkufJNpF9f3Eqeyqq2QBsETpLZgh0Agj0jJ6JPtkbgn6ukZdh8OK5egsGPWIditgg=="],
"@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.220.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-CmVa4ImJ+ynfrPMNaAXHET6Bhb44SwzmfyVJFq9ni2jgXJR/l7C6gfVFddNmHP+ZOkP9cf4f9DBe68qVLTHc9w=="],
@@ -7080,10 +7084,6 @@
"@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="],
- "@brendonovich/vite-plugin-opencode/@opencode-ai/client/@opencode-ai/protocol": ["@opencode-ai/protocol@0.0.0-beta-18050", "", { "dependencies": { "@opencode-ai/schema": "0.0.0-beta-18050", "effect": "4.0.0-rc.111" } }, "sha512-HDQMnvGp8IU0MdBRbEuydX1WQm09BZ4HJm9iSMQwzweJuQ2HNscgzHJPIH6P02BsbbtfJ8J7sZGPItrz1tWSgw=="],
-
- "@brendonovich/vite-plugin-opencode/@opencode-ai/client/@opencode-ai/schema": ["@opencode-ai/schema@0.0.0-beta-18050", "", { "dependencies": { "@standard-schema/spec": "1.1.0", "effect": "4.0.0-rc.111" } }, "sha512-/D6VXaWlytTXR3IOiMLIKuPcfp7FQNUzRPm9z3K7UBFd1Bw4q/WZksaf5RVcBGz+0YRxYMc1V4D7MFlceSgtyg=="],
-
"@bruits/satteri-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="],
"@electron/asar/minimatch/brace-expansion": ["brace-expansion@1.1.18", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw=="],
@@ -7268,99 +7268,99 @@
"@octokit/rest/@octokit/core/before-after-hook": ["before-after-hook@4.0.0", "", {}, "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/node": ["@tailwindcss/node@4.1.11", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "lightningcss": "1.30.1", "magic-string": "^0.30.17", "source-map-js": "^1.2.1", "tailwindcss": "4.1.11" } }, "sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/node": ["@tailwindcss/node@4.1.11", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "lightningcss": "1.30.1", "magic-string": "^0.30.17", "source-map-js": "^1.2.1", "tailwindcss": "4.1.11" } }, "sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.11", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.4.3" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.11", "@tailwindcss/oxide-darwin-arm64": "4.1.11", "@tailwindcss/oxide-darwin-x64": "4.1.11", "@tailwindcss/oxide-freebsd-x64": "4.1.11", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.11", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.11", "@tailwindcss/oxide-linux-arm64-musl": "4.1.11", "@tailwindcss/oxide-linux-x64-gnu": "4.1.11", "@tailwindcss/oxide-linux-x64-musl": "4.1.11", "@tailwindcss/oxide-wasm32-wasi": "4.1.11", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.11", "@tailwindcss/oxide-win32-x64-msvc": "4.1.11" } }, "sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.11", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.4.3" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.11", "@tailwindcss/oxide-darwin-arm64": "4.1.11", "@tailwindcss/oxide-darwin-x64": "4.1.11", "@tailwindcss/oxide-freebsd-x64": "4.1.11", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.11", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.11", "@tailwindcss/oxide-linux-arm64-musl": "4.1.11", "@tailwindcss/oxide-linux-x64-gnu": "4.1.11", "@tailwindcss/oxide-linux-x64-musl": "4.1.11", "@tailwindcss/oxide-wasm32-wasi": "4.1.11", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.11", "@tailwindcss/oxide-win32-x64-msvc": "4.1.11" } }, "sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg=="],
- "@opencode-ai/posts/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="],
+ "@opencode/posts/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="],
- "@opencode-ai/posts/wrangler/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="],
+ "@opencode/posts/wrangler/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="],
- "@opencode-ai/posts/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="],
+ "@opencode/posts/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="],
- "@opencode-ai/posts/wrangler/miniflare": ["miniflare@4.20260708.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.34.5", "undici": "7.28.0", "workerd": "1.20260708.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-c94O9zRDISdqO18EHt6l0iF/fWgWt8p18PJvRsA/L/NJZ9Cfke3s/F5Blg1XXF7WDutVRzWVWy8Vy4LaT5ifsA=="],
+ "@opencode/posts/wrangler/miniflare": ["miniflare@4.20260708.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.34.5", "undici": "7.28.0", "workerd": "1.20260708.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-c94O9zRDISdqO18EHt6l0iF/fWgWt8p18PJvRsA/L/NJZ9Cfke3s/F5Blg1XXF7WDutVRzWVWy8Vy4LaT5ifsA=="],
- "@opencode-ai/posts/wrangler/workerd": ["workerd@1.20260708.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260708.1", "@cloudflare/workerd-darwin-arm64": "1.20260708.1", "@cloudflare/workerd-linux-64": "1.20260708.1", "@cloudflare/workerd-linux-arm64": "1.20260708.1", "@cloudflare/workerd-windows-64": "1.20260708.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-WAK+Kt/VVCSldH2qSr8lx46XCJ4Q+bdlHNaFqUtOHthBEIB8C1N8HVW+VOLrxDoTCk0NGNv0zajnBeQK4JOB9w=="],
+ "@opencode/posts/wrangler/workerd": ["workerd@1.20260708.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260708.1", "@cloudflare/workerd-darwin-arm64": "1.20260708.1", "@cloudflare/workerd-linux-64": "1.20260708.1", "@cloudflare/workerd-linux-arm64": "1.20260708.1", "@cloudflare/workerd-windows-64": "1.20260708.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-WAK+Kt/VVCSldH2qSr8lx46XCJ4Q+bdlHNaFqUtOHthBEIB8C1N8HVW+VOLrxDoTCk0NGNv0zajnBeQK4JOB9w=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/node": ["@tailwindcss/node@4.1.11", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "lightningcss": "1.30.1", "magic-string": "^0.30.17", "source-map-js": "^1.2.1", "tailwindcss": "4.1.11" } }, "sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/node": ["@tailwindcss/node@4.1.11", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "lightningcss": "1.30.1", "magic-string": "^0.30.17", "source-map-js": "^1.2.1", "tailwindcss": "4.1.11" } }, "sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.11", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.4.3" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.11", "@tailwindcss/oxide-darwin-arm64": "4.1.11", "@tailwindcss/oxide-darwin-x64": "4.1.11", "@tailwindcss/oxide-freebsd-x64": "4.1.11", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.11", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.11", "@tailwindcss/oxide-linux-arm64-musl": "4.1.11", "@tailwindcss/oxide-linux-x64-gnu": "4.1.11", "@tailwindcss/oxide-linux-x64-musl": "4.1.11", "@tailwindcss/oxide-wasm32-wasi": "4.1.11", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.11", "@tailwindcss/oxide-win32-x64-msvc": "4.1.11" } }, "sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.11", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.4.3" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.11", "@tailwindcss/oxide-darwin-arm64": "4.1.11", "@tailwindcss/oxide-darwin-x64": "4.1.11", "@tailwindcss/oxide-freebsd-x64": "4.1.11", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.11", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.11", "@tailwindcss/oxide-linux-arm64-musl": "4.1.11", "@tailwindcss/oxide-linux-x64-gnu": "4.1.11", "@tailwindcss/oxide-linux-x64-musl": "4.1.11", "@tailwindcss/oxide-wasm32-wasi": "4.1.11", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.11", "@tailwindcss/oxide-win32-x64-msvc": "4.1.11" } }, "sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg=="],
- "@opencode-ai/storybook/@tailwindcss/vite/tailwindcss": ["tailwindcss@4.1.11", "", {}, "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA=="],
+ "@opencode/storybook/@tailwindcss/vite/tailwindcss": ["tailwindcss@4.1.11", "", {}, "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA=="],
- "@opencode-ai/updates/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="],
+ "@opencode/updates/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="],
- "@opencode-ai/updates/wrangler/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="],
+ "@opencode/updates/wrangler/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="],
- "@opencode-ai/updates/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="],
+ "@opencode/updates/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="],
- "@opencode-ai/updates/wrangler/miniflare": ["miniflare@4.20260708.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.34.5", "undici": "7.28.0", "workerd": "1.20260708.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-c94O9zRDISdqO18EHt6l0iF/fWgWt8p18PJvRsA/L/NJZ9Cfke3s/F5Blg1XXF7WDutVRzWVWy8Vy4LaT5ifsA=="],
+ "@opencode/updates/wrangler/miniflare": ["miniflare@4.20260708.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.34.5", "undici": "7.28.0", "workerd": "1.20260708.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-c94O9zRDISdqO18EHt6l0iF/fWgWt8p18PJvRsA/L/NJZ9Cfke3s/F5Blg1XXF7WDutVRzWVWy8Vy4LaT5ifsA=="],
- "@opencode-ai/updates/wrangler/workerd": ["workerd@1.20260708.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260708.1", "@cloudflare/workerd-darwin-arm64": "1.20260708.1", "@cloudflare/workerd-linux-64": "1.20260708.1", "@cloudflare/workerd-linux-arm64": "1.20260708.1", "@cloudflare/workerd-windows-64": "1.20260708.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-WAK+Kt/VVCSldH2qSr8lx46XCJ4Q+bdlHNaFqUtOHthBEIB8C1N8HVW+VOLrxDoTCk0NGNv0zajnBeQK4JOB9w=="],
+ "@opencode/updates/wrangler/workerd": ["workerd@1.20260708.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260708.1", "@cloudflare/workerd-darwin-arm64": "1.20260708.1", "@cloudflare/workerd-linux-64": "1.20260708.1", "@cloudflare/workerd-linux-arm64": "1.20260708.1", "@cloudflare/workerd-windows-64": "1.20260708.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-WAK+Kt/VVCSldH2qSr8lx46XCJ4Q+bdlHNaFqUtOHthBEIB8C1N8HVW+VOLrxDoTCk0NGNv0zajnBeQK4JOB9w=="],
- "@opencode-ai/web/@astrojs/cloudflare/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.7.1", "", {}, "sha512-7dwEVigz9vUWDw3nRwLQ/yH/xYovlUA0ZD86xoeKEBmkz9O6iELG1yri67PgAPW6VLL/xInA4t7H0CK6VmtkKQ=="],
+ "@opencode/web/@astrojs/cloudflare/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.7.1", "", {}, "sha512-7dwEVigz9vUWDw3nRwLQ/yH/xYovlUA0ZD86xoeKEBmkz9O6iELG1yri67PgAPW6VLL/xInA4t7H0CK6VmtkKQ=="],
- "@opencode-ai/web/@astrojs/cloudflare/@astrojs/underscore-redirects": ["@astrojs/underscore-redirects@1.0.0", "", {}, "sha512-qZxHwVnmb5FXuvRsaIGaqWgnftjCuMY+GSbaVZdBmE4j8AfgPqKPxYp8SUERyJcjpKCEmO4wD6ybuGH8A2kVRQ=="],
+ "@opencode/web/@astrojs/cloudflare/@astrojs/underscore-redirects": ["@astrojs/underscore-redirects@1.0.0", "", {}, "sha512-qZxHwVnmb5FXuvRsaIGaqWgnftjCuMY+GSbaVZdBmE4j8AfgPqKPxYp8SUERyJcjpKCEmO4wD6ybuGH8A2kVRQ=="],
- "@opencode-ai/web/@astrojs/cloudflare/vite": ["vite@6.4.3", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A=="],
+ "@opencode/web/@astrojs/cloudflare/vite": ["vite@6.4.3", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler": ["wrangler@4.110.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "4.20260708.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260708.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20260708.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-xZeXKYi7hxQRF5anL+v77RkufJNpF9f3Eqeyqq2QBsETpLZgh0Agj0jJ6JPtkbgn6ukZdh8OK5egsGPWIditgg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler": ["wrangler@4.110.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "4.20260708.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260708.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20260708.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-xZeXKYi7hxQRF5anL+v77RkufJNpF9f3Eqeyqq2QBsETpLZgh0Agj0jJ6JPtkbgn6ukZdh8OK5egsGPWIditgg=="],
- "@opencode-ai/web/astro/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="],
+ "@opencode/web/astro/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="],
- "@opencode-ai/web/astro/@astrojs/telemetry": ["@astrojs/telemetry@3.2.1", "", { "dependencies": { "ci-info": "^4.2.0", "debug": "^4.4.0", "dlv": "^1.1.3", "dset": "^3.1.4", "is-docker": "^3.0.0", "is-wsl": "^3.1.0", "which-pm-runs": "^1.1.0" } }, "sha512-SSVM820Jqc6wjsn7qYfV9qfeQvePtVc1nSofhyap7l0/iakUKywj3hfy3UJAOV4sGV4Q/u450RD4AaCaFvNPlg=="],
+ "@opencode/web/astro/@astrojs/telemetry": ["@astrojs/telemetry@3.2.1", "", { "dependencies": { "ci-info": "^4.2.0", "debug": "^4.4.0", "dlv": "^1.1.3", "dset": "^3.1.4", "is-docker": "^3.0.0", "is-wsl": "^3.1.0", "which-pm-runs": "^1.1.0" } }, "sha512-SSVM820Jqc6wjsn7qYfV9qfeQvePtVc1nSofhyap7l0/iakUKywj3hfy3UJAOV4sGV4Q/u450RD4AaCaFvNPlg=="],
- "@opencode-ai/web/astro/@capsizecss/unpack": ["@capsizecss/unpack@2.4.0", "", { "dependencies": { "blob-to-buffer": "^1.2.8", "cross-fetch": "^3.0.4", "fontkit": "^2.0.2" } }, "sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q=="],
+ "@opencode/web/astro/@capsizecss/unpack": ["@capsizecss/unpack@2.4.0", "", { "dependencies": { "blob-to-buffer": "^1.2.8", "cross-fetch": "^3.0.4", "fontkit": "^2.0.2" } }, "sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q=="],
- "@opencode-ai/web/astro/acorn": ["acorn@8.18.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ=="],
+ "@opencode/web/astro/acorn": ["acorn@8.18.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ=="],
- "@opencode-ai/web/astro/ci-info": ["ci-info@4.4.0", "", {}, "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg=="],
+ "@opencode/web/astro/ci-info": ["ci-info@4.4.0", "", {}, "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg=="],
- "@opencode-ai/web/astro/common-ancestor-path": ["common-ancestor-path@1.0.1", "", {}, "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="],
+ "@opencode/web/astro/common-ancestor-path": ["common-ancestor-path@1.0.1", "", {}, "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="],
- "@opencode-ai/web/astro/cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="],
+ "@opencode/web/astro/cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="],
- "@opencode-ai/web/astro/diff": ["diff@5.2.2", "", {}, "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A=="],
+ "@opencode/web/astro/diff": ["diff@5.2.2", "", {}, "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A=="],
- "@opencode-ai/web/astro/fontace": ["fontace@0.3.1", "", { "dependencies": { "@types/fontkit": "^2.0.8", "fontkit": "^2.0.4" } }, "sha512-9f5g4feWT1jWT8+SbL85aLIRLIXUaDygaM2xPXRmzPYxrOMNok79Lr3FGJoKVNKibE0WCunNiEVG2mwuE+2qEg=="],
+ "@opencode/web/astro/fontace": ["fontace@0.3.1", "", { "dependencies": { "@types/fontkit": "^2.0.8", "fontkit": "^2.0.4" } }, "sha512-9f5g4feWT1jWT8+SbL85aLIRLIXUaDygaM2xPXRmzPYxrOMNok79Lr3FGJoKVNKibE0WCunNiEVG2mwuE+2qEg=="],
- "@opencode-ai/web/astro/js-yaml": ["js-yaml@4.3.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ=="],
+ "@opencode/web/astro/js-yaml": ["js-yaml@4.3.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ=="],
- "@opencode-ai/web/astro/magicast": ["magicast@0.3.5", "", { "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ=="],
+ "@opencode/web/astro/magicast": ["magicast@0.3.5", "", { "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ=="],
- "@opencode-ai/web/astro/neotraverse": ["neotraverse@0.6.18", "", {}, "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA=="],
+ "@opencode/web/astro/neotraverse": ["neotraverse@0.6.18", "", {}, "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA=="],
- "@opencode-ai/web/astro/p-limit": ["p-limit@6.2.0", "", { "dependencies": { "yocto-queue": "^1.1.1" } }, "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA=="],
+ "@opencode/web/astro/p-limit": ["p-limit@6.2.0", "", { "dependencies": { "yocto-queue": "^1.1.1" } }, "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA=="],
- "@opencode-ai/web/astro/p-queue": ["p-queue@8.1.1", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" } }, "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ=="],
+ "@opencode/web/astro/p-queue": ["p-queue@8.1.1", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" } }, "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ=="],
- "@opencode-ai/web/astro/sharp": ["sharp@0.33.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="],
+ "@opencode/web/astro/sharp": ["sharp@0.33.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="],
- "@opencode-ai/web/astro/shiki": ["shiki@3.23.0", "", { "dependencies": { "@shikijs/core": "3.23.0", "@shikijs/engine-javascript": "3.23.0", "@shikijs/engine-oniguruma": "3.23.0", "@shikijs/langs": "3.23.0", "@shikijs/themes": "3.23.0", "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA=="],
+ "@opencode/web/astro/shiki": ["shiki@3.23.0", "", { "dependencies": { "@shikijs/core": "3.23.0", "@shikijs/engine-javascript": "3.23.0", "@shikijs/engine-oniguruma": "3.23.0", "@shikijs/langs": "3.23.0", "@shikijs/themes": "3.23.0", "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA=="],
- "@opencode-ai/web/astro/tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="],
+ "@opencode/web/astro/tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="],
- "@opencode-ai/web/astro/unifont": ["unifont@0.5.2", "", { "dependencies": { "css-tree": "^3.0.0", "ofetch": "^1.4.1", "ohash": "^2.0.0" } }, "sha512-LzR4WUqzH9ILFvjLAUU7dK3Lnou/qd5kD+IakBtBK4S15/+x2y9VX+DcWQv6s551R6W+vzwgVS6tFg3XggGBgg=="],
+ "@opencode/web/astro/unifont": ["unifont@0.5.2", "", { "dependencies": { "css-tree": "^3.0.0", "ofetch": "^1.4.1", "ohash": "^2.0.0" } }, "sha512-LzR4WUqzH9ILFvjLAUU7dK3Lnou/qd5kD+IakBtBK4S15/+x2y9VX+DcWQv6s551R6W+vzwgVS6tFg3XggGBgg=="],
- "@opencode-ai/web/astro/unstorage": ["unstorage@1.17.5", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.10", "lru-cache": "^11.2.7", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6 || ^7 || ^8", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg=="],
+ "@opencode/web/astro/unstorage": ["unstorage@1.17.5", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.10", "lru-cache": "^11.2.7", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6 || ^7 || ^8", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg=="],
- "@opencode-ai/web/astro/vite": ["vite@6.4.3", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A=="],
+ "@opencode/web/astro/vite": ["vite@6.4.3", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A=="],
- "@opencode-ai/web/astro/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
+ "@opencode/web/astro/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
- "@opencode-ai/www/@astrojs/markdown-remark/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.10.4", "", { "dependencies": { "@types/hast": "^3.0.4", "@types/mdast": "^4.0.4", "js-yaml": "^4.3.0", "picomatch": "^4.0.4", "retext-smartypants": "^6.2.0", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "unified": "^11.0.5" } }, "sha512-nozZSy/mKYLqe4YrqbKtdOszedAfXYCtw3wZ0d+CAjz4GqQ4L9rl1ltIL5BlgwmYVinJg/RZ0MgGuWOdlyRZlA=="],
+ "@opencode/www/@astrojs/markdown-remark/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.10.4", "", { "dependencies": { "@types/hast": "^3.0.4", "@types/mdast": "^4.0.4", "js-yaml": "^4.3.0", "picomatch": "^4.0.4", "retext-smartypants": "^6.2.0", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "unified": "^11.0.5" } }, "sha512-nozZSy/mKYLqe4YrqbKtdOszedAfXYCtw3wZ0d+CAjz4GqQ4L9rl1ltIL5BlgwmYVinJg/RZ0MgGuWOdlyRZlA=="],
- "@opencode-ai/www/@astrojs/markdown-remark/@astrojs/prism": ["@astrojs/prism@4.0.2", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA=="],
+ "@opencode/www/@astrojs/markdown-remark/@astrojs/prism": ["@astrojs/prism@4.0.2", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA=="],
- "@opencode-ai/www/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="],
+ "@opencode/www/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="],
- "@opencode-ai/www/wrangler/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="],
+ "@opencode/www/wrangler/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="],
- "@opencode-ai/www/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="],
+ "@opencode/www/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="],
- "@opencode-ai/www/wrangler/miniflare": ["miniflare@4.20260708.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.34.5", "undici": "7.28.0", "workerd": "1.20260708.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-c94O9zRDISdqO18EHt6l0iF/fWgWt8p18PJvRsA/L/NJZ9Cfke3s/F5Blg1XXF7WDutVRzWVWy8Vy4LaT5ifsA=="],
+ "@opencode/www/wrangler/miniflare": ["miniflare@4.20260708.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.34.5", "undici": "7.28.0", "workerd": "1.20260708.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-c94O9zRDISdqO18EHt6l0iF/fWgWt8p18PJvRsA/L/NJZ9Cfke3s/F5Blg1XXF7WDutVRzWVWy8Vy4LaT5ifsA=="],
- "@opencode-ai/www/wrangler/workerd": ["workerd@1.20260708.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260708.1", "@cloudflare/workerd-darwin-arm64": "1.20260708.1", "@cloudflare/workerd-linux-64": "1.20260708.1", "@cloudflare/workerd-linux-arm64": "1.20260708.1", "@cloudflare/workerd-windows-64": "1.20260708.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-WAK+Kt/VVCSldH2qSr8lx46XCJ4Q+bdlHNaFqUtOHthBEIB8C1N8HVW+VOLrxDoTCk0NGNv0zajnBeQK4JOB9w=="],
+ "@opencode/www/wrangler/workerd": ["workerd@1.20260708.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260708.1", "@cloudflare/workerd-darwin-arm64": "1.20260708.1", "@cloudflare/workerd-linux-64": "1.20260708.1", "@cloudflare/workerd-linux-arm64": "1.20260708.1", "@cloudflare/workerd-windows-64": "1.20260708.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-WAK+Kt/VVCSldH2qSr8lx46XCJ4Q+bdlHNaFqUtOHthBEIB8C1N8HVW+VOLrxDoTCk0NGNv0zajnBeQK4JOB9w=="],
"@opentelemetry/instrumentation/@opentelemetry/api-logs/@opentelemetry/api": ["@opentelemetry/api@1.9.1", "", {}, "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q=="],
@@ -8040,327 +8040,327 @@
"@octokit/rest/@octokit/core/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@28.0.0", "", {}, "sha512-0rFyLuyHvIj6uuZWuDslxkowFYdPXoNIkeAv4b27dzm2Tf4vGWXnPsMcxs7d65kLdMERgP3wc1AEPlqMz8e1cQ=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.11", "", { "os": "android", "cpu": "arm64" }, "sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.11", "", { "os": "android", "cpu": "arm64" }, "sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.11", "", { "os": "freebsd", "cpu": "x64" }, "sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.11", "", { "os": "freebsd", "cpu": "x64" }, "sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11", "", { "os": "linux", "cpu": "arm" }, "sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11", "", { "os": "linux", "cpu": "arm" }, "sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.11", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@emnapi/wasi-threads": "^1.0.2", "@napi-rs/wasm-runtime": "^0.2.11", "@tybys/wasm-util": "^0.9.0", "tslib": "^2.8.0" }, "cpu": "none" }, "sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.11", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@emnapi/wasi-threads": "^1.0.2", "@napi-rs/wasm-runtime": "^0.2.11", "@tybys/wasm-util": "^0.9.0", "tslib": "^2.8.0" }, "cpu": "none" }, "sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.11", "", { "os": "win32", "cpu": "x64" }, "sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.11", "", { "os": "win32", "cpu": "x64" }, "sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="],
- "@opencode-ai/posts/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="],
+ "@opencode/posts/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
+ "@opencode/posts/wrangler/miniflare/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
- "@opencode-ai/posts/wrangler/miniflare/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="],
+ "@opencode/posts/wrangler/miniflare/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="],
- "@opencode-ai/posts/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260708.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-HXFCvhS1wpg3uXO0CLUwmwC41i2loM5FSK69EUchOBpmYBAXxT1oHLm6EOA5lqhTk5Mu9kjRiQYxa1GwKPwfJg=="],
+ "@opencode/posts/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260708.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-HXFCvhS1wpg3uXO0CLUwmwC41i2loM5FSK69EUchOBpmYBAXxT1oHLm6EOA5lqhTk5Mu9kjRiQYxa1GwKPwfJg=="],
- "@opencode-ai/posts/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260708.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JVlJaKDoRTVKSroHIlf8g3UCPjKj4iDbMZE2CNYht5qQ+2rL0FAUiVlV82G3BqKnnw9kHYnnsMzC08b9zVtdzA=="],
+ "@opencode/posts/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260708.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JVlJaKDoRTVKSroHIlf8g3UCPjKj4iDbMZE2CNYht5qQ+2rL0FAUiVlV82G3BqKnnw9kHYnnsMzC08b9zVtdzA=="],
- "@opencode-ai/posts/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260708.1", "", { "os": "linux", "cpu": "x64" }, "sha512-3daE60YdD7YX0Jtuzc9DE/r/qMkmx8ZvHTkF8Mzmp3F5tbzlV0DAzmu5PFUPF2WuvtKbAhZKbvC2cHmWpQYxnA=="],
+ "@opencode/posts/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260708.1", "", { "os": "linux", "cpu": "x64" }, "sha512-3daE60YdD7YX0Jtuzc9DE/r/qMkmx8ZvHTkF8Mzmp3F5tbzlV0DAzmu5PFUPF2WuvtKbAhZKbvC2cHmWpQYxnA=="],
- "@opencode-ai/posts/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260708.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-VLdNYOx5Hj+9C6isy0ACWZsbMtSxex2DIJWEe7cZxUdlphZ58ZT8zxNXK8yunFiowd34hn3VwGMopdvdj8lvmA=="],
+ "@opencode/posts/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260708.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-VLdNYOx5Hj+9C6isy0ACWZsbMtSxex2DIJWEe7cZxUdlphZ58ZT8zxNXK8yunFiowd34hn3VwGMopdvdj8lvmA=="],
- "@opencode-ai/posts/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260708.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bC/aSAwLy16Vjo24i9XU3aWH+eRgz7NeR5xPKavGbembO18ZywYTQbXh14eXtY6fAqN3RzRG8psijTdhX4xydA=="],
+ "@opencode/posts/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260708.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bC/aSAwLy16Vjo24i9XU3aWH+eRgz7NeR5xPKavGbembO18ZywYTQbXh14eXtY6fAqN3RzRG8psijTdhX4xydA=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.11", "", { "os": "android", "cpu": "arm64" }, "sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.11", "", { "os": "android", "cpu": "arm64" }, "sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.11", "", { "os": "freebsd", "cpu": "x64" }, "sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.11", "", { "os": "freebsd", "cpu": "x64" }, "sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11", "", { "os": "linux", "cpu": "arm" }, "sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11", "", { "os": "linux", "cpu": "arm" }, "sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.11", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@emnapi/wasi-threads": "^1.0.2", "@napi-rs/wasm-runtime": "^0.2.11", "@tybys/wasm-util": "^0.9.0", "tslib": "^2.8.0" }, "cpu": "none" }, "sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.11", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@emnapi/wasi-threads": "^1.0.2", "@napi-rs/wasm-runtime": "^0.2.11", "@tybys/wasm-util": "^0.9.0", "tslib": "^2.8.0" }, "cpu": "none" }, "sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.11", "", { "os": "win32", "cpu": "x64" }, "sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.11", "", { "os": "win32", "cpu": "x64" }, "sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="],
- "@opencode-ai/updates/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="],
+ "@opencode/updates/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
+ "@opencode/updates/wrangler/miniflare/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
- "@opencode-ai/updates/wrangler/miniflare/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="],
+ "@opencode/updates/wrangler/miniflare/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="],
- "@opencode-ai/updates/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260708.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-HXFCvhS1wpg3uXO0CLUwmwC41i2loM5FSK69EUchOBpmYBAXxT1oHLm6EOA5lqhTk5Mu9kjRiQYxa1GwKPwfJg=="],
+ "@opencode/updates/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260708.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-HXFCvhS1wpg3uXO0CLUwmwC41i2loM5FSK69EUchOBpmYBAXxT1oHLm6EOA5lqhTk5Mu9kjRiQYxa1GwKPwfJg=="],
- "@opencode-ai/updates/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260708.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JVlJaKDoRTVKSroHIlf8g3UCPjKj4iDbMZE2CNYht5qQ+2rL0FAUiVlV82G3BqKnnw9kHYnnsMzC08b9zVtdzA=="],
+ "@opencode/updates/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260708.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JVlJaKDoRTVKSroHIlf8g3UCPjKj4iDbMZE2CNYht5qQ+2rL0FAUiVlV82G3BqKnnw9kHYnnsMzC08b9zVtdzA=="],
- "@opencode-ai/updates/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260708.1", "", { "os": "linux", "cpu": "x64" }, "sha512-3daE60YdD7YX0Jtuzc9DE/r/qMkmx8ZvHTkF8Mzmp3F5tbzlV0DAzmu5PFUPF2WuvtKbAhZKbvC2cHmWpQYxnA=="],
+ "@opencode/updates/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260708.1", "", { "os": "linux", "cpu": "x64" }, "sha512-3daE60YdD7YX0Jtuzc9DE/r/qMkmx8ZvHTkF8Mzmp3F5tbzlV0DAzmu5PFUPF2WuvtKbAhZKbvC2cHmWpQYxnA=="],
- "@opencode-ai/updates/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260708.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-VLdNYOx5Hj+9C6isy0ACWZsbMtSxex2DIJWEe7cZxUdlphZ58ZT8zxNXK8yunFiowd34hn3VwGMopdvdj8lvmA=="],
+ "@opencode/updates/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260708.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-VLdNYOx5Hj+9C6isy0ACWZsbMtSxex2DIJWEe7cZxUdlphZ58ZT8zxNXK8yunFiowd34hn3VwGMopdvdj8lvmA=="],
- "@opencode-ai/updates/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260708.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bC/aSAwLy16Vjo24i9XU3aWH+eRgz7NeR5xPKavGbembO18ZywYTQbXh14eXtY6fAqN3RzRG8psijTdhX4xydA=="],
+ "@opencode/updates/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260708.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bC/aSAwLy16Vjo24i9XU3aWH+eRgz7NeR5xPKavGbembO18ZywYTQbXh14eXtY6fAqN3RzRG8psijTdhX4xydA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare": ["miniflare@4.20260708.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.34.5", "undici": "7.28.0", "workerd": "1.20260708.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-c94O9zRDISdqO18EHt6l0iF/fWgWt8p18PJvRsA/L/NJZ9Cfke3s/F5Blg1XXF7WDutVRzWVWy8Vy4LaT5ifsA=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare": ["miniflare@4.20260708.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.34.5", "undici": "7.28.0", "workerd": "1.20260708.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-c94O9zRDISdqO18EHt6l0iF/fWgWt8p18PJvRsA/L/NJZ9Cfke3s/F5Blg1XXF7WDutVRzWVWy8Vy4LaT5ifsA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/workerd": ["workerd@1.20260708.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260708.1", "@cloudflare/workerd-darwin-arm64": "1.20260708.1", "@cloudflare/workerd-linux-64": "1.20260708.1", "@cloudflare/workerd-linux-arm64": "1.20260708.1", "@cloudflare/workerd-windows-64": "1.20260708.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-WAK+Kt/VVCSldH2qSr8lx46XCJ4Q+bdlHNaFqUtOHthBEIB8C1N8HVW+VOLrxDoTCk0NGNv0zajnBeQK4JOB9w=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/workerd": ["workerd@1.20260708.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260708.1", "@cloudflare/workerd-darwin-arm64": "1.20260708.1", "@cloudflare/workerd-linux-64": "1.20260708.1", "@cloudflare/workerd-linux-arm64": "1.20260708.1", "@cloudflare/workerd-windows-64": "1.20260708.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-WAK+Kt/VVCSldH2qSr8lx46XCJ4Q+bdlHNaFqUtOHthBEIB8C1N8HVW+VOLrxDoTCk0NGNv0zajnBeQK4JOB9w=="],
- "@opencode-ai/web/astro/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
+ "@opencode/web/astro/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
- "@opencode-ai/web/astro/p-queue/p-timeout": ["p-timeout@6.1.4", "", {}, "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg=="],
+ "@opencode/web/astro/p-queue/p-timeout": ["p-timeout@6.1.4", "", {}, "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="],
+ "@opencode/web/astro/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="],
+ "@opencode/web/astro/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="],
+ "@opencode/web/astro/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="],
+ "@opencode/web/astro/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.0.5", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="],
+ "@opencode/web/astro/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.0.5", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="],
+ "@opencode/web/astro/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.0.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="],
+ "@opencode/web/astro/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.0.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="],
+ "@opencode/web/astro/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="],
+ "@opencode/web/astro/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="],
+ "@opencode/web/astro/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="],
+ "@opencode/web/astro/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="],
+ "@opencode/web/astro/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="],
+ "@opencode/web/astro/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="],
+ "@opencode/web/astro/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="],
+ "@opencode/web/astro/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="],
+ "@opencode/web/astro/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.33.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="],
+ "@opencode/web/astro/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.33.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="],
- "@opencode-ai/web/astro/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="],
+ "@opencode/web/astro/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="],
- "@opencode-ai/web/astro/shiki/@shikijs/core": ["@shikijs/core@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA=="],
+ "@opencode/web/astro/shiki/@shikijs/core": ["@shikijs/core@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA=="],
- "@opencode-ai/web/astro/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA=="],
+ "@opencode/web/astro/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA=="],
- "@opencode-ai/web/astro/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g=="],
+ "@opencode/web/astro/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g=="],
- "@opencode-ai/web/astro/shiki/@shikijs/langs": ["@shikijs/langs@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0" } }, "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg=="],
+ "@opencode/web/astro/shiki/@shikijs/langs": ["@shikijs/langs@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0" } }, "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg=="],
- "@opencode-ai/web/astro/shiki/@shikijs/themes": ["@shikijs/themes@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0" } }, "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA=="],
+ "@opencode/web/astro/shiki/@shikijs/themes": ["@shikijs/themes@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0" } }, "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA=="],
- "@opencode-ai/web/astro/shiki/@shikijs/types": ["@shikijs/types@3.23.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ=="],
+ "@opencode/web/astro/shiki/@shikijs/types": ["@shikijs/types@3.23.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ=="],
- "@opencode-ai/web/astro/unifont/ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="],
+ "@opencode/web/astro/unifont/ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="],
- "@opencode-ai/web/astro/unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="],
+ "@opencode/web/astro/unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="],
- "@opencode-ai/web/astro/unstorage/h3": ["h3@1.15.11", "", { "dependencies": { "cookie-es": "^1.2.3", "crossws": "^0.3.5", "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg=="],
+ "@opencode/web/astro/unstorage/h3": ["h3@1.15.11", "", { "dependencies": { "cookie-es": "^1.2.3", "crossws": "^0.3.5", "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg=="],
- "@opencode-ai/web/astro/unstorage/ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="],
+ "@opencode/web/astro/unstorage/ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="],
- "@opencode-ai/www/@astrojs/markdown-remark/@astrojs/internal-helpers/js-yaml": ["js-yaml@4.3.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ=="],
+ "@opencode/www/@astrojs/markdown-remark/@astrojs/internal-helpers/js-yaml": ["js-yaml@4.3.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="],
- "@opencode-ai/www/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="],
+ "@opencode/www/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="],
- "@opencode-ai/www/wrangler/miniflare/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
+ "@opencode/www/wrangler/miniflare/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
- "@opencode-ai/www/wrangler/miniflare/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="],
+ "@opencode/www/wrangler/miniflare/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="],
- "@opencode-ai/www/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260708.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-HXFCvhS1wpg3uXO0CLUwmwC41i2loM5FSK69EUchOBpmYBAXxT1oHLm6EOA5lqhTk5Mu9kjRiQYxa1GwKPwfJg=="],
+ "@opencode/www/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260708.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-HXFCvhS1wpg3uXO0CLUwmwC41i2loM5FSK69EUchOBpmYBAXxT1oHLm6EOA5lqhTk5Mu9kjRiQYxa1GwKPwfJg=="],
- "@opencode-ai/www/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260708.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JVlJaKDoRTVKSroHIlf8g3UCPjKj4iDbMZE2CNYht5qQ+2rL0FAUiVlV82G3BqKnnw9kHYnnsMzC08b9zVtdzA=="],
+ "@opencode/www/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260708.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JVlJaKDoRTVKSroHIlf8g3UCPjKj4iDbMZE2CNYht5qQ+2rL0FAUiVlV82G3BqKnnw9kHYnnsMzC08b9zVtdzA=="],
- "@opencode-ai/www/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260708.1", "", { "os": "linux", "cpu": "x64" }, "sha512-3daE60YdD7YX0Jtuzc9DE/r/qMkmx8ZvHTkF8Mzmp3F5tbzlV0DAzmu5PFUPF2WuvtKbAhZKbvC2cHmWpQYxnA=="],
+ "@opencode/www/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260708.1", "", { "os": "linux", "cpu": "x64" }, "sha512-3daE60YdD7YX0Jtuzc9DE/r/qMkmx8ZvHTkF8Mzmp3F5tbzlV0DAzmu5PFUPF2WuvtKbAhZKbvC2cHmWpQYxnA=="],
- "@opencode-ai/www/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260708.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-VLdNYOx5Hj+9C6isy0ACWZsbMtSxex2DIJWEe7cZxUdlphZ58ZT8zxNXK8yunFiowd34hn3VwGMopdvdj8lvmA=="],
+ "@opencode/www/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260708.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-VLdNYOx5Hj+9C6isy0ACWZsbMtSxex2DIJWEe7cZxUdlphZ58ZT8zxNXK8yunFiowd34hn3VwGMopdvdj8lvmA=="],
- "@opencode-ai/www/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260708.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bC/aSAwLy16Vjo24i9XU3aWH+eRgz7NeR5xPKavGbembO18ZywYTQbXh14eXtY6fAqN3RzRG8psijTdhX4xydA=="],
+ "@opencode/www/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260708.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bC/aSAwLy16Vjo24i9XU3aWH+eRgz7NeR5xPKavGbembO18ZywYTQbXh14eXtY6fAqN3RzRG8psijTdhX4xydA=="],
"@puppeteer/browsers/yargs/cliui/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="],
@@ -8666,289 +8666,289 @@
"@jsx-email/cli/tailwindcss/chokidar/readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" }, "bundled": true }, "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" }, "bundled": true }, "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" }, "bundled": true }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" }, "bundled": true }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.9.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.9.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/node/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" }, "bundled": true }, "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" }, "bundled": true }, "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" }, "bundled": true }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" }, "bundled": true }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.9.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.9.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="],
+ "@opencode/updates/wrangler/miniflare/sharp/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260708.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-HXFCvhS1wpg3uXO0CLUwmwC41i2loM5FSK69EUchOBpmYBAXxT1oHLm6EOA5lqhTk5Mu9kjRiQYxa1GwKPwfJg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260708.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-HXFCvhS1wpg3uXO0CLUwmwC41i2loM5FSK69EUchOBpmYBAXxT1oHLm6EOA5lqhTk5Mu9kjRiQYxa1GwKPwfJg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260708.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JVlJaKDoRTVKSroHIlf8g3UCPjKj4iDbMZE2CNYht5qQ+2rL0FAUiVlV82G3BqKnnw9kHYnnsMzC08b9zVtdzA=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260708.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JVlJaKDoRTVKSroHIlf8g3UCPjKj4iDbMZE2CNYht5qQ+2rL0FAUiVlV82G3BqKnnw9kHYnnsMzC08b9zVtdzA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260708.1", "", { "os": "linux", "cpu": "x64" }, "sha512-3daE60YdD7YX0Jtuzc9DE/r/qMkmx8ZvHTkF8Mzmp3F5tbzlV0DAzmu5PFUPF2WuvtKbAhZKbvC2cHmWpQYxnA=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260708.1", "", { "os": "linux", "cpu": "x64" }, "sha512-3daE60YdD7YX0Jtuzc9DE/r/qMkmx8ZvHTkF8Mzmp3F5tbzlV0DAzmu5PFUPF2WuvtKbAhZKbvC2cHmWpQYxnA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260708.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-VLdNYOx5Hj+9C6isy0ACWZsbMtSxex2DIJWEe7cZxUdlphZ58ZT8zxNXK8yunFiowd34hn3VwGMopdvdj8lvmA=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260708.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-VLdNYOx5Hj+9C6isy0ACWZsbMtSxex2DIJWEe7cZxUdlphZ58ZT8zxNXK8yunFiowd34hn3VwGMopdvdj8lvmA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260708.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bC/aSAwLy16Vjo24i9XU3aWH+eRgz7NeR5xPKavGbembO18ZywYTQbXh14eXtY6fAqN3RzRG8psijTdhX4xydA=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260708.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bC/aSAwLy16Vjo24i9XU3aWH+eRgz7NeR5xPKavGbembO18ZywYTQbXh14eXtY6fAqN3RzRG8psijTdhX4xydA=="],
- "@opencode-ai/web/astro/unstorage/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="],
+ "@opencode/web/astro/unstorage/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="],
- "@opencode-ai/web/astro/unstorage/h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="],
+ "@opencode/web/astro/unstorage/h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="],
- "@opencode-ai/web/astro/unstorage/h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="],
+ "@opencode/web/astro/unstorage/h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="],
- "@opencode-ai/www/@astrojs/markdown-remark/@astrojs/internal-helpers/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
+ "@opencode/www/@astrojs/markdown-remark/@astrojs/internal-helpers/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="],
"@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="],
@@ -9002,63 +9002,63 @@
"@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-webcontainers-wasm32/@img/sharp-wasm32": ["@img/sharp-wasm32@0.35.2", "", { "dependencies": { "@emnapi/runtime": "^1.11.1" } }, "sha512-Mrv4JQNYVQ94xH+jzZ9r+gowleN8mv2FTgKT+PI6bx5C0G8TdNYndu161pg2i7uoBwxy2ImPMHrJOM2LZef7Bw=="],
- "@opencode-ai/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="],
+ "@opencode/enterprise/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="],
- "@opencode-ai/posts/wrangler/miniflare/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
+ "@opencode/posts/wrangler/miniflare/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
- "@opencode-ai/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="],
+ "@opencode/storybook/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="],
- "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
+ "@opencode/updates/wrangler/miniflare/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="],
- "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
+ "@opencode/www/wrangler/miniflare/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
"archiver-utils/glob/jackspeak/@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="],
@@ -9082,6 +9082,6 @@
"@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-webcontainers-wasm32/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
- "@opencode-ai/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
+ "@opencode/web/@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
}
}
diff --git a/bunfig.toml b/bunfig.toml
index 096f3f434f0..2bab1754b23 100644
--- a/bunfig.toml
+++ b/bunfig.toml
@@ -2,7 +2,7 @@
exact = true
# Only install newly resolved package versions published at least 3 days ago.
minimumReleaseAge = 259200
-minimumReleaseAgeExcludes = ["@ai-sdk/amazon-bedrock", "@ai-sdk/anthropic", "@brendonovich/vite-plugin-opencode", "@opencode-ai/sdk", "@opencode-ai/pty", "@opencode-ai/pty-darwin-arm64", "@opencode-ai/pty-darwin-x64", "@opencode-ai/pty-linux-arm64-gnu", "@opencode-ai/pty-linux-arm64-musl", "@opencode-ai/pty-linux-x64-gnu", "@opencode-ai/pty-linux-x64-musl", "@opentui/core", "@opentui/core-darwin-arm64", "@opentui/core-darwin-x64", "@opentui/core-linux-arm64", "@opentui/core-linux-arm64-musl", "@opentui/core-linux-x64", "@opentui/core-linux-x64-musl", "@opentui/core-win32-arm64", "@opentui/core-win32-x64", "@opentui/keymap", "@opentui/solid", "opentui-spinner", "gitlab-ai-provider", "opencode-gitlab-auth", "@ff-labs/fff-node", "@ff-labs/fff-bun", "@ff-labs/fff-bin-darwin-arm64", "@ff-labs/fff-bin-darwin-x64", "@ff-labs/fff-bin-linux-arm64-gnu", "@ff-labs/fff-bin-linux-arm64-musl", "@ff-labs/fff-bin-linux-x64-gnu", "@ff-labs/fff-bin-linux-x64-musl", "@ff-labs/fff-bin-win32-arm64", "@ff-labs/fff-bin-win32-x64", "@pierre/diffs", "@pierre/theming", "app-builder-lib", "dmg-builder", "electron", "electron-builder", "electron-publish", "blume", "mermaid"]
+minimumReleaseAgeExcludes = ["@ai-sdk/amazon-bedrock", "@ai-sdk/anthropic", "@brendonovich/vite-plugin-opencode", "@opencode/sdk", "@opencode-ai/pty", "@opencode-ai/pty-darwin-arm64", "@opencode-ai/pty-darwin-x64", "@opencode-ai/pty-linux-arm64-gnu", "@opencode-ai/pty-linux-arm64-musl", "@opencode-ai/pty-linux-x64-gnu", "@opencode-ai/pty-linux-x64-musl", "@opentui/core", "@opentui/core-darwin-arm64", "@opentui/core-darwin-x64", "@opentui/core-linux-arm64", "@opentui/core-linux-arm64-musl", "@opentui/core-linux-x64", "@opentui/core-linux-x64-musl", "@opentui/core-win32-arm64", "@opentui/core-win32-x64", "@opentui/keymap", "@opentui/solid", "opentui-spinner", "gitlab-ai-provider", "opencode-gitlab-auth", "@ff-labs/fff-node", "@ff-labs/fff-bun", "@ff-labs/fff-bin-darwin-arm64", "@ff-labs/fff-bin-darwin-x64", "@ff-labs/fff-bin-linux-arm64-gnu", "@ff-labs/fff-bin-linux-arm64-musl", "@ff-labs/fff-bin-linux-x64-gnu", "@ff-labs/fff-bin-linux-x64-musl", "@ff-labs/fff-bin-win32-arm64", "@ff-labs/fff-bin-win32-x64", "@pierre/diffs", "@pierre/theming", "app-builder-lib", "dmg-builder", "electron", "electron-builder", "electron-publish", "blume", "mermaid"]
[test]
root = "./do-not-run-tests-from-root"
diff --git a/install b/install
index 823f7506c48..4e7d5a334f8 100755
--- a/install
+++ b/install
@@ -165,22 +165,30 @@ else
exit 1
fi
+ package_scope="@opencode"
if [ -z "$requested_version" ]; then
- metadata=$(curl -fsSL https://registry.npmjs.org/@opencode-ai%2fcli/beta || true)
+ metadata=$(curl -fsSL https://update.opencode.ai/api/beta/cli/npm || true)
specific_version=$(echo "$metadata" | sed -n 's/.*"version":"\([^"]*\)".*/\1/p')
+ package=$(echo "$metadata" | sed -n 's/.*"package":"\([^"]*\)".*/\1/p')
- if [ -z "$specific_version" ]; then
+ if [ -z "$specific_version" ] || [ -z "$package" ]; then
echo -e "${RED}Failed to fetch version information${NC}"
exit 1
fi
+ package_scope="${package%/cli}"
else
# Strip leading 'v' if present
requested_version="${requested_version#v}"
specific_version=$requested_version
fi
- package_name="@opencode-ai/cli-$target"
- http_status=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/@opencode-ai%2fcli-$target/$specific_version" || true)
+ package_name="$package_scope/cli-$target"
+ http_status=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/$package_scope%2fcli-$target/$specific_version" || true)
+ # Older clients install the minimum release before they can migrate package names.
+ if [ "$http_status" = "404" ] && [ -n "$requested_version" ]; then
+ package_name="@opencode-ai/cli-$target"
+ http_status=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/@opencode-ai%2fcli-$target/$specific_version" || true)
+ fi
if [ "$http_status" = "404" ]; then
echo -e "${RED}Error: Version ${specific_version} is not available for $target${NC}"
echo -e "${MUTED}Available versions: https://www.npmjs.com/package/$package_name?activeTab=versions${NC}"
diff --git a/nix/desktop.nix b/nix/desktop.nix
index b90ba4d9d99..65091dcffc2 100644
--- a/nix/desktop.nix
+++ b/nix/desktop.nix
@@ -88,7 +88,7 @@ stdenv.mkDerivation (finalAttrs: {
cd packages/desktop
export OPENCODE_CLI_DIST="$TMPDIR/desktop-cli"
- cli_package=$(bun -e 'import { getCurrentCli } from "./scripts/utils.ts"; console.log(getCurrentCli().package.replace("@opencode-ai/", ""))')
+ cli_package=$(bun -e 'import { getCurrentCli } from "./scripts/utils.ts"; console.log(getCurrentCli().package.replace("@opencode/", ""))')
mkdir -p "$OPENCODE_CLI_DIST/$cli_package/bin"
cp ${lib.getExe opencode} "$OPENCODE_CLI_DIST/$cli_package/bin/opencode2"
diff --git a/nix/node_modules.nix b/nix/node_modules.nix
index fa7034b3376..35bc82f4710 100644
--- a/nix/node_modules.nix
+++ b/nix/node_modules.nix
@@ -31,7 +31,7 @@ stdenvNoCC.mkDerivation {
../package.json
../patches
../install # required by desktop build (cli.rs include_str!)
- ../.github/TEAM_MEMBERS # required by @opencode-ai/script
+ ../.github/TEAM_MEMBERS # required by @opencode/script
]
);
};
diff --git a/package.json b/package.json
index a1518ec5a44..149dce571b0 100644
--- a/package.json
+++ b/package.json
@@ -128,8 +128,8 @@
},
"dependencies": {
"@aws-sdk/client-s3": "3.933.0",
- "@opencode-ai/plugin": "workspace:*",
- "@opencode-ai/script": "workspace:*",
+ "@opencode/plugin": "workspace:*",
+ "@opencode/script": "workspace:*",
"heap-snapshot-toolkit": "1.1.3",
"typescript": "catalog:"
},
diff --git a/packages/ai/AGENTS.md b/packages/ai/AGENTS.md
index d2c3ba34e1f..9c32d27e054 100644
--- a/packages/ai/AGENTS.md
+++ b/packages/ai/AGENTS.md
@@ -121,10 +121,10 @@ Keep provider facades small and explicit:
### Provider Package Entrypoints
-Catalog-selected native providers use package-like export paths from `@opencode-ai/ai`. They are internal entrypoints in one npm package, not separately published provider packages. Every entrypoint implements `ProviderPackage.Definition` and exposes `model(modelID, settings)`, where settings are serializable provider configuration plus common `headers`, `body`, and `limits` overlays.
+Catalog-selected native providers use package-like export paths from `@opencode/ai`. They are internal entrypoints in one npm package, not separately published provider packages. Every entrypoint implements `ProviderPackage.Definition` and exposes `model(modelID, settings)`, where settings are serializable provider configuration plus common `headers`, `body`, and `limits` overlays.
```ts
-import { model } from "@opencode-ai/ai/providers/openai/responses"
+import { model } from "@opencode/ai/providers/openai/responses"
const selected = model("gpt-5", {
apiKey,
diff --git a/packages/ai/README.md b/packages/ai/README.md
index 970a78ee117..258d31ce470 100644
--- a/packages/ai/README.md
+++ b/packages/ai/README.md
@@ -1,12 +1,12 @@
-# @opencode-ai/ai
+# @opencode/ai
Schema-first language model and image-generation APIs built with Effect.
```ts
import { Effect, Layer } from "effect"
-import { LLM, LLMClient } from "@opencode-ai/ai"
-import { RequestExecutor } from "@opencode-ai/ai/route"
-import { OpenAI } from "@opencode-ai/ai/providers"
+import { LLM, LLMClient } from "@opencode/ai"
+import { RequestExecutor } from "@opencode/ai/route"
+import { OpenAI } from "@opencode/ai/providers"
const model = OpenAI.configure({ apiKey: process.env.OPENAI_API_KEY }).responses("gpt-4o-mini")
@@ -35,9 +35,9 @@ MiniMax defaults to its Messages API and reads `MINIMAX_API_KEY` when `apiKey` i
```ts
import { Effect, Layer } from "effect"
-import { LLM, LLMClient } from "@opencode-ai/ai"
-import { MiniMax } from "@opencode-ai/ai/providers"
-import { RequestExecutor } from "@opencode-ai/ai/route"
+import { LLM, LLMClient } from "@opencode/ai"
+import { MiniMax } from "@opencode/ai/providers"
+import { RequestExecutor } from "@opencode/ai/route"
const minimax = MiniMax.configure({ apiKey: process.env.MINIMAX_API_KEY })
const request = LLM.request({
@@ -53,8 +53,8 @@ console.log(response.text)
```
Select `minimax.chat("MiniMax-M3")` or `minimax.responses("MiniMax-M3")` for MiniMax's native Chat Completions
-and Responses APIs. The matching package entrypoints are `@opencode-ai/ai/providers/minimax/messages`,
-`@opencode-ai/ai/providers/minimax/chat`, and `@opencode-ai/ai/providers/minimax/responses`.
+and Responses APIs. The matching package entrypoints are `@opencode/ai/providers/minimax/messages`,
+`@opencode/ai/providers/minimax/chat`, and `@opencode/ai/providers/minimax/responses`.
- **Messages:** M3 thinking defaults off. Set `thinking: { type: "adaptive" }` to enable it or
`thinking: { type: "disabled" }` to disable it.
@@ -74,7 +74,7 @@ Chat and Responses. `configure({ baseURL })` replaces the selected API's base, i
Use Meta's direct [Model API](https://dev.meta.ai/docs/overview) with `META_API_KEY`:
```ts
-import { Meta } from "@opencode-ai/ai/providers"
+import { Meta } from "@opencode/ai/providers"
const meta = Meta.configure() // or Meta.configure({ apiKey })
const request = LLM.request({
@@ -87,7 +87,7 @@ const request = LLM.request({
`meta.chat("muse-spark-1.3")` selects Chat Completions; `meta.messages("muse-spark-1.3")` selects
the Anthropic-compatible Messages API. All use `https://api.meta.ai/v1`. The package entrypoints
-`@opencode-ai/ai/providers/meta/responses`, `meta/chat`, and `meta/messages` expose `model(modelID, settings)`.
+`@opencode/ai/providers/meta/responses`, `meta/chat`, and `meta/messages` expose `model(modelID, settings)`.
[Muse Spark](https://dev.meta.ai/docs/models) supports `minimal`, `low`, `medium`, `high`, and
`xhigh` reasoning effort; standard-tier 1.3 also supports `max`. Omitting effort uses the model's
@@ -114,7 +114,7 @@ citations or separate result blocks. Retain `response.message` for either API's
Use `Image.generate` for one-off generation or editing:
```ts
-import { Image, ImageInput } from "@opencode-ai/ai"
+import { Image, ImageInput } from "@opencode/ai"
const generation = Image.generate({
model: meta.image("muse-image-1.0"),
@@ -144,8 +144,8 @@ Meta Responses is explicitly HTTP/SSE-only and does not use WebSockets, even whe
Use `Image.generate` with an image model for direct asset generation:
```ts
-import { Image, ImageInput } from "@opencode-ai/ai"
-import { OpenAI } from "@opencode-ai/ai/providers"
+import { Image, ImageInput } from "@opencode/ai"
+import { OpenAI } from "@opencode/ai/providers"
const program = Effect.gen(function* () {
const response = yield* Image.generate({
@@ -241,7 +241,7 @@ yield *
Google's current Gemini image models use the same direct API:
```ts
-import { Google } from "@opencode-ai/ai/providers"
+import { Google } from "@opencode/ai/providers"
const googleProgram = Effect.gen(function* () {
const response = yield* Image.generate({
@@ -317,12 +317,12 @@ The hosted result is represented as a provider-executed tool call and tool resul
## Testing
-Use the deterministic test client from `@opencode-ai/ai/testing` to script provider-neutral responses and inspect
+Use the deterministic test client from `@opencode/ai/testing` to script provider-neutral responses and inspect
the requests sent by code under test:
```ts
import { Effect } from "effect"
-import { TestLLM } from "@opencode-ai/ai/testing"
+import { TestLLM } from "@opencode/ai/testing"
const programWithTestClient = Effect.gen(function* () {
const test = yield* TestLLM.Test
@@ -433,8 +433,8 @@ This capability describes protocol implementation, **not universal availability
Inside an `Effect.gen`, enable OpenAI compaction with typed provider options:
```ts
-import { LLM, LLMClient, LLMRequest, Message } from "@opencode-ai/ai"
-import { OpenAI } from "@opencode-ai/ai/providers"
+import { LLM, LLMClient, LLMRequest, Message } from "@opencode/ai"
+import { OpenAI } from "@opencode/ai/providers"
const request = LLM.request({
model: OpenAI.configure({ apiKey }).responses("gpt-5.3-codex"),
@@ -454,7 +454,7 @@ const next = LLMRequest.update(request, {
A compaction part has `provider` and exactly one representation: `encrypted` for Responses, or `text` for Anthropic. Responses also preserves the optional checkpoint `id`. These fields survive message serialization without becoming visible assistant text. Sending a checkpoint to another provider or an incompatible API fails rather than silently losing context.
```ts
-import { CompactionPart, ProviderID } from "@opencode-ai/ai"
+import { CompactionPart, ProviderID } from "@opencode/ai"
CompactionPart.make({ provider: ProviderID.make("openai"), id: "cmp_123", encrypted: "..." })
CompactionPart.make({ provider: ProviderID.make("anthropic"), text: "Summary of the conversation..." })
@@ -560,7 +560,7 @@ Normalized cache usage is read back into `response.usage.cacheReadInputTokens` a
Provider facades configure endpoint/auth/deployment details first, then expose model selectors that take only a model or deployment id. The selected model carries the executable route value used at runtime.
```ts
-import { OpenAI, CloudflareAIGateway } from "@opencode-ai/ai/providers"
+import { OpenAI, CloudflareAIGateway } from "@opencode/ai/providers"
const openai = OpenAI.configure({ apiKey: process.env.OPENAI_API_KEY }).responses("gpt-4o-mini")
const gateway = CloudflareAIGateway.configure({
@@ -574,7 +574,7 @@ Included LLM providers: OpenAI, Anthropic, Google (Gemini), Google Vertex, Amazo
Each named provider owns its module, endpoint, authentication, and route setup. Providers with the same wire format compose the shared protocol directly:
```ts
-import { DeepSeek, Fireworks } from "@opencode-ai/ai/providers"
+import { DeepSeek, Fireworks } from "@opencode/ai/providers"
const deepseek = DeepSeek.configure({ apiKey }).model("deepseek-chat")
const fireworks = Fireworks.configure({ apiKey }).model("accounts/fireworks/models/my-model")
@@ -584,10 +584,10 @@ The former `OpenAICompatible.baseten`, `.cerebras`, `.deepinfra`, `.deepseek`, `
### Provider entrypoints
-Provider modules are available through dedicated exports from `@opencode-ai/ai`. Each LLM entrypoint exports `model(modelID, settings)`, where `settings` contains provider configuration plus common `headers` and `body` overlays.
+Provider modules are available through dedicated exports from `@opencode/ai`. Each LLM entrypoint exports `model(modelID, settings)`, where `settings` contains provider configuration plus common `headers` and `body` overlays.
```ts
-import { model } from "@opencode-ai/ai/providers/openai/responses"
+import { model } from "@opencode/ai/providers/openai/responses"
const selected = model("gpt-5", {
apiKey: process.env.OPENAI_API_KEY,
@@ -597,14 +597,14 @@ const selected = model("gpt-5", {
APIs have separate entrypoints:
-- `@opencode-ai/ai/providers/openai/chat`
-- `@opencode-ai/ai/providers/openai/responses`
-- `@opencode-ai/ai/providers/openai-compatible/responses`
-- `@opencode-ai/ai/providers/anthropic-compatible`
-- `@opencode-ai/ai/providers/google-vertex/gemini`
-- `@opencode-ai/ai/providers/google-vertex/chat`
-- `@opencode-ai/ai/providers/google-vertex/responses`
-- `@opencode-ai/ai/providers/google-vertex/messages`
+- `@opencode/ai/providers/openai/chat`
+- `@opencode/ai/providers/openai/responses`
+- `@opencode/ai/providers/openai-compatible/responses`
+- `@opencode/ai/providers/anthropic-compatible`
+- `@opencode/ai/providers/google-vertex/gemini`
+- `@opencode/ai/providers/google-vertex/chat`
+- `@opencode/ai/providers/google-vertex/responses`
+- `@opencode/ai/providers/google-vertex/messages`
OpenAI Responses has one semantic route and uses HTTP by default. Advanced callers may supply a per-call WebSocket channel executor through `StreamOptions`; transport policy does not change provider settings, model identity, or route identity. The provider-neutral Open Responses implementation owns the reusable WebSocket request and event contract, while each provider opts in with its own handshake and connection policy. Azure follows the same Chat/Responses split at `providers/azure/chat` and `providers/azure/responses`. Generic OpenAI-compatible Chat remains at `providers/openai-compatible`; the Responses adapter at `providers/openai-compatible/responses` uses the provider-neutral Open Responses protocol. OpenAI Responses extends that baseline with OpenAI tools, event variants, metadata, and defaults. Generic Anthropic Messages-compatible providers use `providers/anthropic-compatible`, which the named Anthropic provider composes. Google Gemini and Amazon Bedrock expose their single native API through their existing provider paths.
@@ -613,36 +613,36 @@ Vertex Gemini, Vertex Chat, Vertex Responses, and Vertex Messages are separate A
Tuned Vertex Gemini deployments use model ids shaped like `endpoints/1234567890` and require OAuth or ADC; Vertex express-mode API keys support publisher models only.
```ts
-import { model } from "@opencode-ai/ai/providers/google-vertex/gemini"
+import { model } from "@opencode/ai/providers/google-vertex/gemini"
model("gemini-3.5-flash", { project: "my-project", location: "global" })
```
```ts
-import { model } from "@opencode-ai/ai/providers/google-vertex/chat"
+import { model } from "@opencode/ai/providers/google-vertex/chat"
model("deepseek-ai/deepseek-v3.2-maas", { project: "my-project", location: "global" })
```
```ts
-import { model } from "@opencode-ai/ai/providers/google-vertex/responses"
+import { model } from "@opencode/ai/providers/google-vertex/responses"
model("xai/grok-4.20-reasoning", { project: "my-project", location: "global" })
```
```ts
-import { model } from "@opencode-ai/ai/providers/google-vertex/messages"
+import { model } from "@opencode/ai/providers/google-vertex/messages"
model("claude-sonnet-4-6", { project: "my-project", location: "global" })
```
Additional provider entrypoints include:
-- `@opencode-ai/ai/providers/baseten`
-- `@opencode-ai/ai/providers/deepseek`
-- `@opencode-ai/ai/providers/fireworks`
-- `@opencode-ai/ai/providers/cloudflare-ai-gateway`
-- `@opencode-ai/ai/providers/cloudflare-workers-ai`
+- `@opencode/ai/providers/baseten`
+- `@opencode/ai/providers/deepseek`
+- `@opencode/ai/providers/fireworks`
+- `@opencode/ai/providers/cloudflare-ai-gateway`
+- `@opencode/ai/providers/cloudflare-workers-ai`
## Provider options & HTTP overlays
diff --git a/packages/ai/example/tutorial.ts b/packages/ai/example/tutorial.ts
index 4589785145d..2659d72dae3 100644
--- a/packages/ai/example/tutorial.ts
+++ b/packages/ai/example/tutorial.ts
@@ -1,7 +1,7 @@
import { Config, Effect, Formatter, Layer, Schema, Stream } from "effect"
-import { LLM, LLMClient, LLMRequest, Message, ProviderID, Tool, ToolRuntime } from "@opencode-ai/ai"
-import { Route, Auth, Endpoint, Framing, Protocol, RequestExecutor } from "@opencode-ai/ai/route"
-import { OpenAI } from "@opencode-ai/ai/providers"
+import { LLM, LLMClient, LLMRequest, Message, ProviderID, Tool, ToolRuntime } from "@opencode/ai"
+import { Route, Auth, Endpoint, Framing, Protocol, RequestExecutor } from "@opencode/ai/route"
+import { OpenAI } from "@opencode/ai/providers"
/**
* A runnable walkthrough of the LLM package use-site API.
diff --git a/packages/ai/package.json b/packages/ai/package.json
index e8e9a8e1ec9..7ec30a66539 100644
--- a/packages/ai/package.json
+++ b/packages/ai/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"version": "1.17.20",
- "name": "@opencode-ai/ai",
+ "name": "@opencode/ai",
"type": "module",
"license": "MIT",
"scripts": {
@@ -21,7 +21,7 @@
"devDependencies": {
"@clack/prompts": "1.0.0-alpha.1",
"@effect/platform-node": "catalog:",
- "@opencode-ai/http-recorder": "workspace:*",
+ "@opencode/http-recorder": "workspace:*",
"@tsconfig/bun": "catalog:",
"@types/bun": "catalog:",
"@typescript/native-preview": "catalog:",
@@ -31,7 +31,7 @@
"@aws-sdk/credential-providers": "3.1057.0",
"@smithy/eventstream-codec": "4.2.14",
"@smithy/util-utf8": "4.2.2",
- "@opencode-ai/schema": "workspace:*",
+ "@opencode/schema": "workspace:*",
"aws4fetch": "1.0.20",
"effect": "catalog:",
"google-auth-library": "10.5.0"
diff --git a/packages/ai/script/publish.ts b/packages/ai/script/publish.ts
index f03dd084b02..77eca8806a6 100644
--- a/packages/ai/script/publish.ts
+++ b/packages/ai/script/publish.ts
@@ -1,5 +1,5 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { fileURLToPath } from "url"
diff --git a/packages/ai/src/protocols/anthropic-messages.ts b/packages/ai/src/protocols/anthropic-messages.ts
index 62fa3fa583d..40cd6c62979 100644
--- a/packages/ai/src/protocols/anthropic-messages.ts
+++ b/packages/ai/src/protocols/anthropic-messages.ts
@@ -1,6 +1,6 @@
import { Buffer } from "node:buffer"
import { Effect, Option, Schema } from "effect"
-import { Tool } from "@opencode-ai/schema/tool"
+import { Tool } from "@opencode/schema/tool"
import { Route } from "../route/client.js"
import { Auth } from "../route/auth.js"
import { Endpoint } from "../route/endpoint.js"
diff --git a/packages/ai/src/protocols/gemini.ts b/packages/ai/src/protocols/gemini.ts
index dfeee340a7f..0489c5a29d4 100644
--- a/packages/ai/src/protocols/gemini.ts
+++ b/packages/ai/src/protocols/gemini.ts
@@ -1,5 +1,5 @@
import { Effect, Option, Schema } from "effect"
-import { Tool } from "@opencode-ai/schema/tool"
+import { Tool } from "@opencode/schema/tool"
import { Route } from "../route/client.js"
import { Auth } from "../route/auth.js"
import { Endpoint } from "../route/endpoint.js"
diff --git a/packages/ai/src/protocols/open-responses.ts b/packages/ai/src/protocols/open-responses.ts
index 0dd32b4883c..0551e692eaf 100644
--- a/packages/ai/src/protocols/open-responses.ts
+++ b/packages/ai/src/protocols/open-responses.ts
@@ -1,5 +1,5 @@
import { Effect, Option, Schema } from "effect"
-import type { Content } from "@opencode-ai/schema/tool"
+import type { Content } from "@opencode/schema/tool"
import { HttpTransport } from "../route/transport/index.js"
import { Protocol } from "../route/protocol.js"
import {
diff --git a/packages/ai/src/protocols/openai-chat.ts b/packages/ai/src/protocols/openai-chat.ts
index 9e749a90c9d..9642b89a58c 100644
--- a/packages/ai/src/protocols/openai-chat.ts
+++ b/packages/ai/src/protocols/openai-chat.ts
@@ -1,5 +1,5 @@
import { Effect, Schema } from "effect"
-import { Tool } from "@opencode-ai/schema/tool"
+import { Tool } from "@opencode/schema/tool"
import { Route } from "../route/client.js"
import { Auth } from "../route/auth.js"
import { Endpoint } from "../route/endpoint.js"
diff --git a/packages/ai/src/protocols/shared.ts b/packages/ai/src/protocols/shared.ts
index bf7d74d43a7..e2e35e74b0c 100644
--- a/packages/ai/src/protocols/shared.ts
+++ b/packages/ai/src/protocols/shared.ts
@@ -1,5 +1,5 @@
import { Buffer } from "node:buffer"
-import { Tool } from "@opencode-ai/schema/tool"
+import { Tool } from "@opencode/schema/tool"
import { Effect, Schema, Stream } from "effect"
import * as Sse from "effect/unstable/encoding/Sse"
import { Headers, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
diff --git a/packages/ai/src/schema/errors.ts b/packages/ai/src/schema/errors.ts
index 9566cb33101..d5946635a95 100644
--- a/packages/ai/src/schema/errors.ts
+++ b/packages/ai/src/schema/errors.ts
@@ -1,5 +1,5 @@
import { Schema } from "effect"
-import { Tool } from "@opencode-ai/schema/tool"
+import { Tool } from "@opencode/schema/tool"
import { ModelID, ProviderID, RouteID } from "./ids.js"
export const ProviderFailureClassification = Schema.Literals(["context-overflow", "payload-too-large"])
diff --git a/packages/ai/src/schema/events.ts b/packages/ai/src/schema/events.ts
index 6396319d5e1..cfe3b974cc8 100644
--- a/packages/ai/src/schema/events.ts
+++ b/packages/ai/src/schema/events.ts
@@ -1,5 +1,5 @@
import { Schema } from "effect"
-import { LLM } from "@opencode-ai/schema/llm"
+import { LLM } from "@opencode/schema/llm"
import { ContentBlockID, ToolCallID } from "./ids.js"
import {
Message,
diff --git a/packages/ai/src/schema/messages.ts b/packages/ai/src/schema/messages.ts
index dcc8b5bd747..bf3aa6256c3 100644
--- a/packages/ai/src/schema/messages.ts
+++ b/packages/ai/src/schema/messages.ts
@@ -1,5 +1,5 @@
import { Schema } from "effect"
-import { Tool } from "@opencode-ai/schema/tool"
+import { Tool } from "@opencode/schema/tool"
import {
CacheHint,
CachePolicy,
diff --git a/packages/ai/src/tool.ts b/packages/ai/src/tool.ts
index e324cb2000d..c04b666887c 100644
--- a/packages/ai/src/tool.ts
+++ b/packages/ai/src/tool.ts
@@ -1,5 +1,5 @@
import { Effect, JsonSchema, Schema } from "effect"
-import { Tool } from "@opencode-ai/schema/tool"
+import { Tool } from "@opencode/schema/tool"
import type {
ToolCallPart,
ToolDefinition as ToolDefinitionClass,
diff --git a/packages/ai/test/exports.test.ts b/packages/ai/test/exports.test.ts
index a79f1846ea8..fad7163797a 100644
--- a/packages/ai/test/exports.test.ts
+++ b/packages/ai/test/exports.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test"
-import { AIError, ImageInput, LanguageModel, LLM, LLMClient, Provider } from "@opencode-ai/ai"
-import { Route, Protocol, WebSocketTransport } from "@opencode-ai/ai/route"
-import { Provider as ProviderSubpath } from "@opencode-ai/ai/provider"
+import { AIError, ImageInput, LanguageModel, LLM, LLMClient, Provider } from "@opencode/ai"
+import { Route, Protocol, WebSocketTransport } from "@opencode/ai/route"
+import { Provider as ProviderSubpath } from "@opencode/ai/provider"
import {
Baseten,
CloudflareAIGateway,
@@ -12,7 +12,7 @@ import {
OpenAICompatible,
OpenRouter,
XAI,
-} from "@opencode-ai/ai/providers"
+} from "@opencode/ai/providers"
import {
OpenAIChat,
OpenAICompatibleChat,
@@ -20,9 +20,9 @@ import {
OpenAIResponses,
OpenResponses,
OpenResponsesChannel,
-} from "@opencode-ai/ai/protocols"
-import * as AnthropicMessages from "@opencode-ai/ai/protocols/anthropic-messages"
-import { TestLLM } from "@opencode-ai/ai/testing"
+} from "@opencode/ai/protocols"
+import * as AnthropicMessages from "@opencode/ai/protocols/anthropic-messages"
+import { TestLLM } from "@opencode/ai/testing"
describe("public exports", () => {
test("root exposes app-facing runtime APIs", () => {
@@ -46,7 +46,7 @@ describe("public exports", () => {
})
test("provider barrels expose user-facing facades", async () => {
- const { OpenAICompatibleResponses } = await import("@opencode-ai/ai/providers")
+ const { OpenAICompatibleResponses } = await import("@opencode/ai/providers")
expect(OpenAI.model).toBeFunction()
expect(OpenAI.provider.responses).toBe(OpenAI.responses)
diff --git a/packages/ai/test/provider-package.test.ts b/packages/ai/test/provider-package.test.ts
index 0fac7b9f1f1..bb5f23573cc 100644
--- a/packages/ai/test/provider-package.test.ts
+++ b/packages/ai/test/provider-package.test.ts
@@ -1,46 +1,46 @@
import { describe, expect, test } from "bun:test"
-import { model } from "@opencode-ai/ai/providers/openai"
+import { model } from "@opencode/ai/providers/openai"
import { LLM } from "../src/index.js"
import { Endpoint } from "../src/route/endpoint.js"
describe("provider package entrypoints", () => {
test("semantic API aliases expose the same contract", async () => {
const modules = await Promise.all([
- import("@opencode-ai/ai/providers/openai"),
- import("@opencode-ai/ai/providers/openai/responses"),
- import("@opencode-ai/ai/providers/openai/chat"),
- import("@opencode-ai/ai/providers/anthropic"),
- import("@opencode-ai/ai/providers/anthropic-compatible"),
- import("@opencode-ai/ai/providers/openai-compatible"),
- import("@opencode-ai/ai/providers/openai-compatible/responses"),
- import("@opencode-ai/ai/providers/amazon-bedrock"),
- import("@opencode-ai/ai/providers/azure"),
- import("@opencode-ai/ai/providers/azure/responses"),
- import("@opencode-ai/ai/providers/azure/chat"),
- import("@opencode-ai/ai/providers/google"),
- import("@opencode-ai/ai/providers/google-vertex"),
- import("@opencode-ai/ai/providers/google-vertex/gemini"),
- import("@opencode-ai/ai/providers/google-vertex/chat"),
- import("@opencode-ai/ai/providers/google-vertex/responses"),
- import("@opencode-ai/ai/providers/google-vertex/messages"),
- import("@opencode-ai/ai/providers/openrouter"),
- import("@opencode-ai/ai/providers/xai"),
- import("@opencode-ai/ai/providers/amazon-bedrock/mantle"),
- import("@opencode-ai/ai/providers/amazon-bedrock/mantle/chat"),
- import("@opencode-ai/ai/providers/amazon-bedrock/mantle/responses"),
- import("@opencode-ai/ai/providers/togetherai"),
- import("@opencode-ai/ai/providers/cerebras"),
- import("@opencode-ai/ai/providers/deepinfra"),
- import("@opencode-ai/ai/providers/groq"),
- import("@opencode-ai/ai/providers/baseten"),
- import("@opencode-ai/ai/providers/deepseek"),
- import("@opencode-ai/ai/providers/fireworks"),
- import("@opencode-ai/ai/providers/cloudflare-ai-gateway"),
- import("@opencode-ai/ai/providers/cloudflare-workers-ai"),
- import("@opencode-ai/ai/providers/minimax"),
- import("@opencode-ai/ai/providers/minimax/messages"),
- import("@opencode-ai/ai/providers/minimax/chat"),
- import("@opencode-ai/ai/providers/minimax/responses"),
+ import("@opencode/ai/providers/openai"),
+ import("@opencode/ai/providers/openai/responses"),
+ import("@opencode/ai/providers/openai/chat"),
+ import("@opencode/ai/providers/anthropic"),
+ import("@opencode/ai/providers/anthropic-compatible"),
+ import("@opencode/ai/providers/openai-compatible"),
+ import("@opencode/ai/providers/openai-compatible/responses"),
+ import("@opencode/ai/providers/amazon-bedrock"),
+ import("@opencode/ai/providers/azure"),
+ import("@opencode/ai/providers/azure/responses"),
+ import("@opencode/ai/providers/azure/chat"),
+ import("@opencode/ai/providers/google"),
+ import("@opencode/ai/providers/google-vertex"),
+ import("@opencode/ai/providers/google-vertex/gemini"),
+ import("@opencode/ai/providers/google-vertex/chat"),
+ import("@opencode/ai/providers/google-vertex/responses"),
+ import("@opencode/ai/providers/google-vertex/messages"),
+ import("@opencode/ai/providers/openrouter"),
+ import("@opencode/ai/providers/xai"),
+ import("@opencode/ai/providers/amazon-bedrock/mantle"),
+ import("@opencode/ai/providers/amazon-bedrock/mantle/chat"),
+ import("@opencode/ai/providers/amazon-bedrock/mantle/responses"),
+ import("@opencode/ai/providers/togetherai"),
+ import("@opencode/ai/providers/cerebras"),
+ import("@opencode/ai/providers/deepinfra"),
+ import("@opencode/ai/providers/groq"),
+ import("@opencode/ai/providers/baseten"),
+ import("@opencode/ai/providers/deepseek"),
+ import("@opencode/ai/providers/fireworks"),
+ import("@opencode/ai/providers/cloudflare-ai-gateway"),
+ import("@opencode/ai/providers/cloudflare-workers-ai"),
+ import("@opencode/ai/providers/minimax"),
+ import("@opencode/ai/providers/minimax/messages"),
+ import("@opencode/ai/providers/minimax/chat"),
+ import("@opencode/ai/providers/minimax/responses"),
])
for (const module of modules) expect(module.model).toBeFunction()
@@ -53,10 +53,10 @@ describe("provider package entrypoints", () => {
test("maps MiniMax API entrypoints onto provider-owned routes", async () => {
const modules = await Promise.all([
- import("@opencode-ai/ai/providers/minimax"),
- import("@opencode-ai/ai/providers/minimax/messages"),
- import("@opencode-ai/ai/providers/minimax/chat"),
- import("@opencode-ai/ai/providers/minimax/responses"),
+ import("@opencode/ai/providers/minimax"),
+ import("@opencode/ai/providers/minimax/messages"),
+ import("@opencode/ai/providers/minimax/chat"),
+ import("@opencode/ai/providers/minimax/responses"),
])
expect(modules[0].model).toBe(modules[1].model)
const settings = {
@@ -77,7 +77,7 @@ describe("provider package entrypoints", () => {
})
test("maps DeepInfra package settings onto its native executable model", async () => {
- const DeepInfra = await import("@opencode-ai/ai/providers/deepinfra")
+ const DeepInfra = await import("@opencode/ai/providers/deepinfra")
const settings = {
apiKey: "fixture",
baseURL: "https://provider.example.test/v1/",
@@ -96,8 +96,8 @@ describe("provider package entrypoints", () => {
test("maps Cloudflare package settings onto provider-owned models", async () => {
const modules = await Promise.all([
- import("@opencode-ai/ai/providers/cloudflare-ai-gateway"),
- import("@opencode-ai/ai/providers/cloudflare-workers-ai"),
+ import("@opencode/ai/providers/cloudflare-ai-gateway"),
+ import("@opencode/ai/providers/cloudflare-workers-ai"),
])
for (const provider of modules) {
const selected = provider.model("provider-model", {
@@ -116,8 +116,8 @@ describe("provider package entrypoints", () => {
})
test("maps OpenRouter and xAI package settings onto executable models", async () => {
- const OpenRouter = await import("@opencode-ai/ai/providers/openrouter")
- const XAI = await import("@opencode-ai/ai/providers/xai")
+ const OpenRouter = await import("@opencode/ai/providers/openrouter")
+ const XAI = await import("@opencode/ai/providers/xai")
const settings = {
apiKey: "fixture",
baseURL: "https://provider.example.test/v1",
@@ -157,7 +157,7 @@ describe("provider package entrypoints", () => {
})
test("maps OpenAI-compatible Responses settings onto the executable model", async () => {
- const OpenAICompatibleResponses = await import("@opencode-ai/ai/providers/openai-compatible/responses")
+ const OpenAICompatibleResponses = await import("@opencode/ai/providers/openai-compatible/responses")
const selected = OpenAICompatibleResponses.model("custom-model", {
apiKey: "fixture",
baseURL: "https://responses.example.test/v1",
@@ -183,7 +183,7 @@ describe("provider package entrypoints", () => {
})
test("maps Anthropic-compatible settings onto the executable model", async () => {
- const AnthropicCompatible = await import("@opencode-ai/ai/providers/anthropic-compatible")
+ const AnthropicCompatible = await import("@opencode/ai/providers/anthropic-compatible")
const selected = AnthropicCompatible.model("compatible-model", {
apiKey: "fixture",
baseURL: "https://messages.example.test/v1",
@@ -207,7 +207,7 @@ describe("provider package entrypoints", () => {
})
test("maps Anthropic provider options onto the executable model", async () => {
- const Anthropic = await import("@opencode-ai/ai/providers/anthropic")
+ const Anthropic = await import("@opencode/ai/providers/anthropic")
const selected = Anthropic.model("claude-sonnet-4-6", {
apiKey: "fixture",
providerOptions: { thinking: { type: "adaptive" } },
@@ -217,15 +217,15 @@ describe("provider package entrypoints", () => {
})
test("requires an Anthropic-compatible base URL at runtime", async () => {
- const AnthropicCompatible = await import("@opencode-ai/ai/providers/anthropic-compatible")
+ const AnthropicCompatible = await import("@opencode/ai/providers/anthropic-compatible")
expect(() =>
Reflect.apply(AnthropicCompatible.model, undefined, ["compatible-model", { apiKey: "fixture" }]),
).toThrow("Anthropic-compatible providers require a baseURL")
})
test("rejects conflicting Anthropic-compatible auth settings at runtime", async () => {
- const Anthropic = await import("@opencode-ai/ai/providers/anthropic")
- const AnthropicCompatible = await import("@opencode-ai/ai/providers/anthropic-compatible")
+ const Anthropic = await import("@opencode/ai/providers/anthropic")
+ const AnthropicCompatible = await import("@opencode/ai/providers/anthropic-compatible")
expect(() =>
Reflect.apply(AnthropicCompatible.model, undefined, [
"compatible-model",
@@ -255,9 +255,9 @@ describe("provider package entrypoints", () => {
})
test("selects Azure API entrypoints with the same model contract", async () => {
- const Azure = await import("@opencode-ai/ai/providers/azure")
- const AzureChat = await import("@opencode-ai/ai/providers/azure/chat")
- const AzureResponses = await import("@opencode-ai/ai/providers/azure/responses")
+ const Azure = await import("@opencode/ai/providers/azure")
+ const AzureChat = await import("@opencode/ai/providers/azure/chat")
+ const AzureResponses = await import("@opencode/ai/providers/azure/responses")
const settings = {
apiKey: "fixture",
resourceName: "opencode-test",
@@ -277,7 +277,7 @@ describe("provider package entrypoints", () => {
})
test("constructs Azure deployment URLs and preserves custom gateway URLs", async () => {
- const Azure = await import("@opencode-ai/ai/providers/azure")
+ const Azure = await import("@opencode/ai/providers/azure")
const deployment = Azure.model("custom-deployment", {
apiKey: "fixture",
resourceName: "opencode-test",
@@ -298,7 +298,7 @@ describe("provider package entrypoints", () => {
})
test("maps Google package settings onto the Gemini model", async () => {
- const Google = await import("@opencode-ai/ai/providers/google")
+ const Google = await import("@opencode/ai/providers/google")
const selected = Google.model("gemini-2.5-flash", {
apiKey: "fixture",
baseURL: "https://generativelanguage.test/v1beta",
@@ -315,11 +315,11 @@ describe("provider package entrypoints", () => {
})
test("selects Vertex entrypoints with the same model contract", async () => {
- const GoogleVertex = await import("@opencode-ai/ai/providers/google-vertex")
- const GoogleVertexGemini = await import("@opencode-ai/ai/providers/google-vertex/gemini")
- const GoogleVertexChat = await import("@opencode-ai/ai/providers/google-vertex/chat")
- const GoogleVertexResponses = await import("@opencode-ai/ai/providers/google-vertex/responses")
- const GoogleVertexMessages = await import("@opencode-ai/ai/providers/google-vertex/messages")
+ const GoogleVertex = await import("@opencode/ai/providers/google-vertex")
+ const GoogleVertexGemini = await import("@opencode/ai/providers/google-vertex/gemini")
+ const GoogleVertexChat = await import("@opencode/ai/providers/google-vertex/chat")
+ const GoogleVertexResponses = await import("@opencode/ai/providers/google-vertex/responses")
+ const GoogleVertexMessages = await import("@opencode/ai/providers/google-vertex/messages")
const gemini = GoogleVertex.model("gemini-3.5-flash", {
apiKey: "fixture",
headers: { "x-application": "opencode" },
@@ -378,11 +378,11 @@ describe("provider package entrypoints", () => {
})
test("rejects conflicting Vertex auth settings at runtime", async () => {
- const GoogleVertex = await import("@opencode-ai/ai/providers/google-vertex")
- const GoogleVertexChat = await import("@opencode-ai/ai/providers/google-vertex/chat")
- const GoogleVertexMessages = await import("@opencode-ai/ai/providers/google-vertex/messages")
- const GoogleVertexResponses = await import("@opencode-ai/ai/providers/google-vertex/responses")
- const Providers = await import("@opencode-ai/ai/providers")
+ const GoogleVertex = await import("@opencode/ai/providers/google-vertex")
+ const GoogleVertexChat = await import("@opencode/ai/providers/google-vertex/chat")
+ const GoogleVertexMessages = await import("@opencode/ai/providers/google-vertex/messages")
+ const GoogleVertexResponses = await import("@opencode/ai/providers/google-vertex/responses")
+ const Providers = await import("@opencode/ai/providers")
expect(() =>
Reflect.apply(GoogleVertex.model, undefined, [
"gemini-3.5-flash",
diff --git a/packages/ai/test/provider/groq.recorded.test.ts b/packages/ai/test/provider/groq.recorded.test.ts
index e17f8f21dee..01d196751f1 100644
--- a/packages/ai/test/provider/groq.recorded.test.ts
+++ b/packages/ai/test/provider/groq.recorded.test.ts
@@ -1,4 +1,4 @@
-import { configure } from "@opencode-ai/ai/providers/groq"
+import { configure } from "@opencode/ai/providers/groq"
import { describe, expect } from "bun:test"
import { Effect } from "effect"
import { LLM, LLMEvent, LLMRequest, LLMResponse, Message, ToolChoice, ToolDefinition } from "../../src/index.js"
diff --git a/packages/ai/test/provider/meta-capabilities.test.ts b/packages/ai/test/provider/meta-capabilities.test.ts
index 06406bab407..ead31e26c42 100644
--- a/packages/ai/test/provider/meta-capabilities.test.ts
+++ b/packages/ai/test/provider/meta-capabilities.test.ts
@@ -36,7 +36,7 @@ it.effect("Meta selects Messages and lowers native search alongside ordinary fun
{ name: "lookup", description: "Lookup", input_schema: { type: "object" } },
],
})
- const entrypoint = yield* Effect.promise(() => import("@opencode-ai/ai/providers/meta/messages"))
+ const entrypoint = yield* Effect.promise(() => import("@opencode/ai/providers/meta/messages"))
expect(entrypoint.model("muse-spark-1.3", {}).route.id).toBe("meta-messages")
}),
)
diff --git a/packages/ai/test/provider/mistral-chat.test.ts b/packages/ai/test/provider/mistral-chat.test.ts
index 2f4ef107f3b..550ea2ba231 100644
--- a/packages/ai/test/provider/mistral-chat.test.ts
+++ b/packages/ai/test/provider/mistral-chat.test.ts
@@ -19,7 +19,7 @@ const chunk = (delta: object, finishReason: string | null = null, usage?: object
describe("Mistral Chat", () => {
test("exposes native provider and protocol identities", async () => {
- const entrypoint = await import("@opencode-ai/ai/providers/mistral")
+ const entrypoint = await import("@opencode/ai/providers/mistral")
expect(Mistral.id).toBe("mistral")
expect(MistralChat.protocol.id).toBe("mistral-chat")
diff --git a/packages/ai/test/provider/mistral.recorded.test.ts b/packages/ai/test/provider/mistral.recorded.test.ts
index 4d2a54b4c82..a12a53a5d7b 100644
--- a/packages/ai/test/provider/mistral.recorded.test.ts
+++ b/packages/ai/test/provider/mistral.recorded.test.ts
@@ -1,4 +1,4 @@
-import { configure } from "@opencode-ai/ai/providers/mistral"
+import { configure } from "@opencode/ai/providers/mistral"
import { describe, expect } from "bun:test"
import { Effect } from "effect"
import { LLM, LLMEvent, LLMRequest, Message, ToolChoice, ToolDefinition } from "../../src/index.js"
diff --git a/packages/ai/test/recorded-golden.ts b/packages/ai/test/recorded-golden.ts
index eff68ade9f9..b00da6026e2 100644
--- a/packages/ai/test/recorded-golden.ts
+++ b/packages/ai/test/recorded-golden.ts
@@ -1,4 +1,4 @@
-import type { HttpRecorder } from "@opencode-ai/http-recorder"
+import type { HttpRecorder } from "@opencode/http-recorder"
import { describe } from "bun:test"
import { Effect } from "effect"
import type { LanguageModel } from "../src/index.js"
diff --git a/packages/ai/test/recorded-runner.ts b/packages/ai/test/recorded-runner.ts
index a201d9c47ff..31e45a8b378 100644
--- a/packages/ai/test/recorded-runner.ts
+++ b/packages/ai/test/recorded-runner.ts
@@ -1,4 +1,4 @@
-import type { HttpRecorder } from "@opencode-ai/http-recorder"
+import type { HttpRecorder } from "@opencode/http-recorder"
import { test, type TestOptions } from "bun:test"
import { Effect, type Layer } from "effect"
import { testEffect } from "./lib/effect.js"
diff --git a/packages/ai/test/recorded-test.ts b/packages/ai/test/recorded-test.ts
index 18dffa805a2..be82f53b726 100644
--- a/packages/ai/test/recorded-test.ts
+++ b/packages/ai/test/recorded-test.ts
@@ -1,4 +1,4 @@
-import { HttpRecorder } from "@opencode-ai/http-recorder"
+import { HttpRecorder } from "@opencode/http-recorder"
import { NodeSocket } from "@effect/platform-node"
import { Layer } from "effect"
import { Socket } from "effect/unstable/socket"
diff --git a/packages/ai/test/tool-runtime.test.ts b/packages/ai/test/tool-runtime.test.ts
index 523279c1759..a7a5fd7389a 100644
--- a/packages/ai/test/tool-runtime.test.ts
+++ b/packages/ai/test/tool-runtime.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import { Content } from "@opencode-ai/schema/tool"
+import { Content } from "@opencode/schema/tool"
import { Effect, Schema, Stream } from "effect"
import {
GenerationOptions,
diff --git a/packages/app/component-tests/timeline-virtualizer.fixture.tsx b/packages/app/component-tests/timeline-virtualizer.fixture.tsx
index f4bf3405c65..a675f30bee4 100644
--- a/packages/app/component-tests/timeline-virtualizer.fixture.tsx
+++ b/packages/app/component-tests/timeline-virtualizer.fixture.tsx
@@ -1,4 +1,4 @@
-import { TimelineRow } from "@opencode-ai/session-ui/timeline/projection"
+import { TimelineRow } from "@opencode/session-ui/timeline/projection"
import { onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
import { render } from "solid-js/web"
diff --git a/packages/app/e2e/performance/devex/desktop-startup.ts b/packages/app/e2e/performance/devex/desktop-startup.ts
index 41ec013eec4..69d2d81425b 100644
--- a/packages/app/e2e/performance/devex/desktop-startup.ts
+++ b/packages/app/e2e/performance/devex/desktop-startup.ts
@@ -1,4 +1,4 @@
-import { Service } from "@opencode-ai/client/service"
+import { Service } from "@opencode/client/service"
import { chromium, expect, type Browser, type Page, type TestInfo } from "@playwright/test"
import { spawn, spawnSync, type ChildProcess } from "node:child_process"
import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"
diff --git a/packages/app/e2e/performance/markdown/lifetime.bench.ts b/packages/app/e2e/performance/markdown/lifetime.bench.ts
index 8e32c891c5e..0f12e4d8958 100644
--- a/packages/app/e2e/performance/markdown/lifetime.bench.ts
+++ b/packages/app/e2e/performance/markdown/lifetime.bench.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { SessionMessageInfo } from "@opencode/client/promise"
import { benchmark, expect } from "../benchmark"
import { mockOpenCodeServer } from "../../utils/mock-server"
import { fixture } from "../timeline/session-timeline-stress.fixture"
diff --git a/packages/app/e2e/performance/patch-groups/fixture.tsx b/packages/app/e2e/performance/patch-groups/fixture.tsx
index 32cc31fc6ae..f7a76794c68 100644
--- a/packages/app/e2e/performance/patch-groups/fixture.tsx
+++ b/packages/app/e2e/performance/patch-groups/fixture.tsx
@@ -3,12 +3,12 @@
import { render } from "solid-js/web"
import { Show } from "solid-js"
import { createStore } from "solid-js/store"
-import { ThemeProvider } from "@opencode-ai/ui/theme"
+import { ThemeProvider } from "@opencode/ui/theme"
import { CurrentSessionProviders } from "../../../../session-ui/src/storybook/current-session-story"
import { emptySessionDocument } from "../../../../session-ui/src/storybook/current-session-fixtures"
import { CurrentFileToolGroup, ToolDisplay } from "../../../../session-ui/src/tools/tool-renderer"
import { patchFileGroups } from "../../../../session-ui/src/components/apply-patch-file"
-import type { SessionMessageAssistantTool } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistantTool } from "@opencode/client/promise"
import { createTwoFilesPatch, diffLines } from "diff"
import edit from "../../../../core/src/tool/plugin/edit.ts?raw"
import patch from "../../../../core/src/tool/plugin/patch.ts?raw"
diff --git a/packages/app/e2e/performance/timeline-stability/fixture.ts b/packages/app/e2e/performance/timeline-stability/fixture.ts
index 6d7b9ec37a5..5fa7a48b864 100644
--- a/packages/app/e2e/performance/timeline-stability/fixture.ts
+++ b/packages/app/e2e/performance/timeline-stability/fixture.ts
@@ -1,4 +1,4 @@
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import type {
JsonValue,
OpenCodeEvent,
@@ -8,10 +8,10 @@ import type {
SessionMessageUser,
SessionStatus,
SessionStructuredError,
-} from "@opencode-ai/client/promise"
-import { EventManifest } from "@opencode-ai/schema/event-manifest"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import type { TimelineDetail } from "@opencode-ai/session-ui/timeline/detail"
+} from "@opencode/client/promise"
+import { EventManifest } from "@opencode/schema/event-manifest"
+import { SessionMessage } from "@opencode/schema/session-message"
+import type { TimelineDetail } from "@opencode/session-ui/timeline/detail"
import { expect, type Page } from "@playwright/test"
import { Schema } from "effect"
import { mockOpenCodeServer } from "../../utils/mock-server"
diff --git a/packages/app/e2e/performance/timeline/composer-write-batch-benchmark.spec.ts b/packages/app/e2e/performance/timeline/composer-write-batch-benchmark.spec.ts
index 82b5f85820b..00c67c2afff 100644
--- a/packages/app/e2e/performance/timeline/composer-write-batch-benchmark.spec.ts
+++ b/packages/app/e2e/performance/timeline/composer-write-batch-benchmark.spec.ts
@@ -1,4 +1,4 @@
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { benchmark, benchmarkDiagnostics, expect } from "../benchmark"
import { mockOpenCodeServer } from "../../utils/mock-server"
import { expectSessionTitle } from "../../utils/waits"
diff --git a/packages/app/e2e/performance/timeline/provider-memory-benchmark.spec.ts b/packages/app/e2e/performance/timeline/provider-memory-benchmark.spec.ts
index e56fcb1c186..3af30c81207 100644
--- a/packages/app/e2e/performance/timeline/provider-memory-benchmark.spec.ts
+++ b/packages/app/e2e/performance/timeline/provider-memory-benchmark.spec.ts
@@ -4,7 +4,7 @@ import { expectSessionTitle } from "../../utils/waits"
import { fixture, pageMessages } from "./session-timeline-stress.fixture"
import { installStressSessionTabs, installTimelineSettings, stressSessionHref } from "./timeline-test-helpers"
import { waitForStableTimeline } from "./session-tab-switch-probe"
-import type { CatalogUpdated } from "@opencode-ai/client/promise"
+import type { CatalogUpdated } from "@opencode/client/promise"
benchmark("measures retained renderer memory with a large model catalog", async ({ page, report }) => {
benchmark.setTimeout(120_000)
diff --git a/packages/app/e2e/performance/timeline/session-parent-hydration-benchmark.spec.ts b/packages/app/e2e/performance/timeline/session-parent-hydration-benchmark.spec.ts
index e7481a17861..03bab3f89df 100644
--- a/packages/app/e2e/performance/timeline/session-parent-hydration-benchmark.spec.ts
+++ b/packages/app/e2e/performance/timeline/session-parent-hydration-benchmark.spec.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageAssistant, SessionMessageInfo, SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistant, SessionMessageInfo, SessionMessageUser } from "@opencode/client/promise"
import type { Page } from "@playwright/test"
import { expectSessionTitle } from "../../utils/waits"
import { mockOpenCodeServer } from "../../utils/mock-server"
diff --git a/packages/app/e2e/performance/timeline/session-tab-switch.fixture.ts b/packages/app/e2e/performance/timeline/session-tab-switch.fixture.ts
index dd03d6dbe97..da8c83755c6 100644
--- a/packages/app/e2e/performance/timeline/session-tab-switch.fixture.ts
+++ b/packages/app/e2e/performance/timeline/session-tab-switch.fixture.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { SessionMessageInfo } from "@opencode/client/promise"
import { fixture } from "./session-timeline-stress.fixture"
export const exchanges = 200
diff --git a/packages/app/e2e/performance/timeline/session-timeline-benchmark.fixture.ts b/packages/app/e2e/performance/timeline/session-timeline-benchmark.fixture.ts
index c093d1cbf8b..2041fe9d1d8 100644
--- a/packages/app/e2e/performance/timeline/session-timeline-benchmark.fixture.ts
+++ b/packages/app/e2e/performance/timeline/session-timeline-benchmark.fixture.ts
@@ -1,5 +1,5 @@
-import { base64Encode } from "@opencode-ai/util/encode"
-import type { JsonValue, OpenCodeEvent, SessionMessageAssistant, SessionMessageInfo } from "@opencode-ai/client/promise"
+import { base64Encode } from "@opencode/util/encode"
+import type { JsonValue, OpenCodeEvent, SessionMessageAssistant, SessionMessageInfo } from "@opencode/client/promise"
import type { Page } from "@playwright/test"
import { mockOpenCodeServer } from "../../utils/mock-server"
import { expectAppVisible, expectSessionTitle } from "../../utils/waits"
diff --git a/packages/app/e2e/performance/timeline/session-timeline-stress.fixture.ts b/packages/app/e2e/performance/timeline/session-timeline-stress.fixture.ts
index 4b96ec598d0..0990d00942d 100644
--- a/packages/app/e2e/performance/timeline/session-timeline-stress.fixture.ts
+++ b/packages/app/e2e/performance/timeline/session-timeline-stress.fixture.ts
@@ -389,4 +389,4 @@ export function pageMessages(sessionID: string, limit: number, before?: string)
cursor: start > 0 ? messages[start].id : undefined,
}
}
-import type { JsonValue, SessionMessageAssistant, SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { JsonValue, SessionMessageAssistant, SessionMessageInfo } from "@opencode/client/promise"
diff --git a/packages/app/e2e/performance/timeline/timeline-projection-benchmark.spec.ts b/packages/app/e2e/performance/timeline/timeline-projection-benchmark.spec.ts
index e5a3ad41329..488678e850f 100644
--- a/packages/app/e2e/performance/timeline/timeline-projection-benchmark.spec.ts
+++ b/packages/app/e2e/performance/timeline/timeline-projection-benchmark.spec.ts
@@ -1,5 +1,5 @@
import { createServer, type ServerResponse } from "node:http"
-import type { OpenCodeEvent } from "@opencode-ai/client/promise"
+import type { OpenCodeEvent } from "@opencode/client/promise"
import { benchmark, benchmarkDiagnostics, expect } from "../benchmark"
import {
buildInitialStreamEvent,
diff --git a/packages/app/e2e/performance/timeline/timeline-test-helpers.ts b/packages/app/e2e/performance/timeline/timeline-test-helpers.ts
index 1e21c20322f..82e9089b658 100644
--- a/packages/app/e2e/performance/timeline/timeline-test-helpers.ts
+++ b/packages/app/e2e/performance/timeline/timeline-test-helpers.ts
@@ -1,5 +1,5 @@
import type { Page } from "@playwright/test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { mockOpenCodeServer } from "../../utils/mock-server"
import { fixture, pageMessages } from "./session-timeline-stress.fixture"
diff --git a/packages/app/e2e/performance/unit/timeline-test-helpers.test.ts b/packages/app/e2e/performance/unit/timeline-test-helpers.test.ts
index fe607275f58..28332366938 100644
--- a/packages/app/e2e/performance/unit/timeline-test-helpers.test.ts
+++ b/packages/app/e2e/performance/unit/timeline-test-helpers.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { fixture } from "../timeline/session-timeline-stress.fixture"
import { stressSessionHref } from "../timeline/timeline-test-helpers"
diff --git a/packages/app/e2e/regression/composer-command-draft.spec.ts b/packages/app/e2e/regression/composer-command-draft.spec.ts
index 4ef2f32a5aa..cb3a764f66d 100644
--- a/packages/app/e2e/regression/composer-command-draft.spec.ts
+++ b/packages/app/e2e/regression/composer-command-draft.spec.ts
@@ -1,5 +1,5 @@
import { expect, test } from "@playwright/test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectAppVisible } from "../utils/waits"
diff --git a/packages/app/e2e/regression/composer-slash-skill.spec.ts b/packages/app/e2e/regression/composer-slash-skill.spec.ts
index c4ec1bf662b..82c13463c94 100644
--- a/packages/app/e2e/regression/composer-slash-skill.spec.ts
+++ b/packages/app/e2e/regression/composer-slash-skill.spec.ts
@@ -1,5 +1,5 @@
import { expect, test, type Page } from "@playwright/test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { mockOpenCodeServer } from "../utils/mock-server"
const directory = "/repo/slash-skills"
diff --git a/packages/app/e2e/regression/cross-server-tab-close.spec.ts b/packages/app/e2e/regression/cross-server-tab-close.spec.ts
index 16c096dacc3..09e7d370413 100644
--- a/packages/app/e2e/regression/cross-server-tab-close.spec.ts
+++ b/packages/app/e2e/regression/cross-server-tab-close.spec.ts
@@ -1,5 +1,5 @@
import { expect, test, type Page, type Route } from "@playwright/test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { currentSession } from "../utils/mock-server"
import { installSseTransport } from "../utils/sse-transport"
diff --git a/packages/app/e2e/regression/file-browser-sidebar-tab-switch.spec.ts b/packages/app/e2e/regression/file-browser-sidebar-tab-switch.spec.ts
index 627061af7b7..0c5c2b5bc2c 100644
--- a/packages/app/e2e/regression/file-browser-sidebar-tab-switch.spec.ts
+++ b/packages/app/e2e/regression/file-browser-sidebar-tab-switch.spec.ts
@@ -1,4 +1,4 @@
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { expect, test, type Page } from "@playwright/test"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectSessionTitle } from "../utils/waits"
diff --git a/packages/app/e2e/regression/mcp-workspace-toggle.spec.ts b/packages/app/e2e/regression/mcp-workspace-toggle.spec.ts
index 97a8bb1e10e..2147532db5f 100644
--- a/packages/app/e2e/regression/mcp-workspace-toggle.spec.ts
+++ b/packages/app/e2e/regression/mcp-workspace-toggle.spec.ts
@@ -1,4 +1,4 @@
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { expect, test } from "@playwright/test"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectSessionTitle } from "../utils/waits"
diff --git a/packages/app/e2e/regression/new-session-workspace-pending.spec.ts b/packages/app/e2e/regression/new-session-workspace-pending.spec.ts
index 45eb6028d23..638d3318ea2 100644
--- a/packages/app/e2e/regression/new-session-workspace-pending.spec.ts
+++ b/packages/app/e2e/regression/new-session-workspace-pending.spec.ts
@@ -1,6 +1,6 @@
import { expect, test, type Page } from "@playwright/test"
-import type { OpenCodeEvent } from "@opencode-ai/client/promise"
-import { base64Encode } from "@opencode-ai/util/encode"
+import type { OpenCodeEvent } from "@opencode/client/promise"
+import { base64Encode } from "@opencode/util/encode"
import { currentSession, mockOpenCodeServer } from "../utils/mock-server"
import { expectAppVisible } from "../utils/waits"
diff --git a/packages/app/e2e/regression/open-file-expand-folder.spec.ts b/packages/app/e2e/regression/open-file-expand-folder.spec.ts
index a1b6aad404d..6db2026dbd2 100644
--- a/packages/app/e2e/regression/open-file-expand-folder.spec.ts
+++ b/packages/app/e2e/regression/open-file-expand-folder.spec.ts
@@ -1,4 +1,4 @@
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { expect, test } from "@playwright/test"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectSessionTitle } from "../utils/waits"
diff --git a/packages/app/e2e/regression/prompt-thinking-level.spec.ts b/packages/app/e2e/regression/prompt-thinking-level.spec.ts
index bc0f060783b..865ceab3fec 100644
--- a/packages/app/e2e/regression/prompt-thinking-level.spec.ts
+++ b/packages/app/e2e/regression/prompt-thinking-level.spec.ts
@@ -1,5 +1,5 @@
import { expect, test } from "@playwright/test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectAppVisible } from "../utils/waits"
diff --git a/packages/app/e2e/regression/remote-session-settings.spec.ts b/packages/app/e2e/regression/remote-session-settings.spec.ts
index 85b2a25a73f..5fa2b4b24a9 100644
--- a/packages/app/e2e/regression/remote-session-settings.spec.ts
+++ b/packages/app/e2e/regression/remote-session-settings.spec.ts
@@ -1,4 +1,4 @@
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { expect, test, type Page, type Route } from "@playwright/test"
import { installSseTransport } from "../utils/sse-transport"
import { currentSession } from "../utils/mock-server"
diff --git a/packages/app/e2e/regression/remote-tab-busy.spec.ts b/packages/app/e2e/regression/remote-tab-busy.spec.ts
index 7074c167696..6c55b594dcc 100644
--- a/packages/app/e2e/regression/remote-tab-busy.spec.ts
+++ b/packages/app/e2e/regression/remote-tab-busy.spec.ts
@@ -1,5 +1,5 @@
import { expect, test, type Page } from "@playwright/test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { createMockServerHandler } from "../utils/mock-server"
import { installSseTransport } from "../utils/sse-transport"
diff --git a/packages/app/e2e/regression/review-image-flash.spec.ts b/packages/app/e2e/regression/review-image-flash.spec.ts
index 86230e0d62d..a768ad54472 100644
--- a/packages/app/e2e/regression/review-image-flash.spec.ts
+++ b/packages/app/e2e/regression/review-image-flash.spec.ts
@@ -1,5 +1,5 @@
import { expect, test, type Page } from "@playwright/test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectAppVisible, expectSessionTitle } from "../utils/waits"
diff --git a/packages/app/e2e/regression/review-line-comment.spec.ts b/packages/app/e2e/regression/review-line-comment.spec.ts
index 321faaf534c..cff515c6caf 100644
--- a/packages/app/e2e/regression/review-line-comment.spec.ts
+++ b/packages/app/e2e/regression/review-line-comment.spec.ts
@@ -1,5 +1,5 @@
import { expect, test, type Page } from "@playwright/test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectAppVisible, expectSessionTitle } from "../utils/waits"
diff --git a/packages/app/e2e/regression/review-open-file.spec.ts b/packages/app/e2e/regression/review-open-file.spec.ts
index ce42660e814..6af45ac8407 100644
--- a/packages/app/e2e/regression/review-open-file.spec.ts
+++ b/packages/app/e2e/regression/review-open-file.spec.ts
@@ -1,4 +1,4 @@
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { expect, test } from "@playwright/test"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectSessionTitle } from "../utils/waits"
diff --git a/packages/app/e2e/regression/review-state-persistence.spec.ts b/packages/app/e2e/regression/review-state-persistence.spec.ts
index 74af4c02e24..72dcec22d1d 100644
--- a/packages/app/e2e/regression/review-state-persistence.spec.ts
+++ b/packages/app/e2e/regression/review-state-persistence.spec.ts
@@ -1,4 +1,4 @@
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { expect, test, type Page } from "@playwright/test"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectSessionTitle } from "../utils/waits"
diff --git a/packages/app/e2e/regression/review-tab-switch.spec.ts b/packages/app/e2e/regression/review-tab-switch.spec.ts
index 26a216ed344..6913f59a12b 100644
--- a/packages/app/e2e/regression/review-tab-switch.spec.ts
+++ b/packages/app/e2e/regression/review-tab-switch.spec.ts
@@ -1,4 +1,4 @@
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { expect, test, type Page } from "@playwright/test"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectAppVisible, expectSessionTitle } from "../utils/waits"
diff --git a/packages/app/e2e/regression/review-toggle-position.spec.ts b/packages/app/e2e/regression/review-toggle-position.spec.ts
index 16380077fca..c736e8dbe21 100644
--- a/packages/app/e2e/regression/review-toggle-position.spec.ts
+++ b/packages/app/e2e/regression/review-toggle-position.spec.ts
@@ -1,4 +1,4 @@
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { expect, test, type Locator } from "@playwright/test"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectSessionTitle } from "../utils/waits"
diff --git a/packages/app/e2e/regression/session-location-sync.spec.ts b/packages/app/e2e/regression/session-location-sync.spec.ts
index 84989914c49..edfd13d7324 100644
--- a/packages/app/e2e/regression/session-location-sync.spec.ts
+++ b/packages/app/e2e/regression/session-location-sync.spec.ts
@@ -1,5 +1,5 @@
import { expect, test, type Page } from "@playwright/test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { fixture } from "../smoke/session-timeline.fixture"
import { mockOpenCodeServer } from "../utils/mock-server"
import { installSseTransport } from "../utils/sse-transport"
diff --git a/packages/app/e2e/regression/session-message-revert.spec.ts b/packages/app/e2e/regression/session-message-revert.spec.ts
index 60e0f472a59..a6f2910d0fd 100644
--- a/packages/app/e2e/regression/session-message-revert.spec.ts
+++ b/packages/app/e2e/regression/session-message-revert.spec.ts
@@ -1,5 +1,5 @@
-import type { SessionMessageInfo } from "@opencode-ai/client/promise"
-import { base64Encode } from "@opencode-ai/util/encode"
+import type { SessionMessageInfo } from "@opencode/client/promise"
+import { base64Encode } from "@opencode/util/encode"
import { expect, test } from "@playwright/test"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectSessionTitle } from "../utils/waits"
diff --git a/packages/app/e2e/regression/session-notice-truncation.spec.ts b/packages/app/e2e/regression/session-notice-truncation.spec.ts
index f8e847245f5..a944bdf62bd 100644
--- a/packages/app/e2e/regression/session-notice-truncation.spec.ts
+++ b/packages/app/e2e/regression/session-notice-truncation.spec.ts
@@ -1,5 +1,5 @@
import { expect, test } from "@playwright/test"
-import { timelinePresets } from "@opencode-ai/session-ui/timeline/detail"
+import { timelinePresets } from "@opencode/session-ui/timeline/detail"
import { setupTimeline } from "../performance/timeline-stability/fixture"
for (const width of [1400, 390]) {
diff --git a/packages/app/e2e/regression/session-queue.spec.ts b/packages/app/e2e/regression/session-queue.spec.ts
index 492e844ebae..a17aa78b103 100644
--- a/packages/app/e2e/regression/session-queue.spec.ts
+++ b/packages/app/e2e/regression/session-queue.spec.ts
@@ -1,6 +1,6 @@
import { expect, test, type Page } from "@playwright/test"
-import type { OpenCodeEvent, SessionMessageInfo } from "@opencode-ai/client/promise"
-import { base64Encode } from "@opencode-ai/util/encode"
+import type { OpenCodeEvent, SessionMessageInfo } from "@opencode/client/promise"
+import { base64Encode } from "@opencode/util/encode"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectAppVisible } from "../utils/waits"
diff --git a/packages/app/e2e/regression/session-request-docks.spec.ts b/packages/app/e2e/regression/session-request-docks.spec.ts
index 3ed13b9f10b..04e634dc48b 100644
--- a/packages/app/e2e/regression/session-request-docks.spec.ts
+++ b/packages/app/e2e/regression/session-request-docks.spec.ts
@@ -1,4 +1,4 @@
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { expect, test, type Page } from "@playwright/test"
import { mockOpenCodeServer } from "../utils/mock-server"
import { installSseTransport } from "../utils/sse-transport"
diff --git a/packages/app/e2e/regression/session-shell-completion.spec.ts b/packages/app/e2e/regression/session-shell-completion.spec.ts
index 34d235d46d6..532e88d470b 100644
--- a/packages/app/e2e/regression/session-shell-completion.spec.ts
+++ b/packages/app/e2e/regression/session-shell-completion.spec.ts
@@ -1,5 +1,5 @@
import { expect, test } from "@playwright/test"
-import type { SessionMessageAssistant, ShellInfo } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistant, ShellInfo } from "@opencode/client/promise"
import { directory, sessionID, setupTimeline } from "../performance/timeline-stability/fixture"
const shell = {
diff --git a/packages/app/e2e/regression/session-timeline-collapse-state.spec.ts b/packages/app/e2e/regression/session-timeline-collapse-state.spec.ts
index c7b4ef52044..91d611df28a 100644
--- a/packages/app/e2e/regression/session-timeline-collapse-state.spec.ts
+++ b/packages/app/e2e/regression/session-timeline-collapse-state.spec.ts
@@ -1,5 +1,5 @@
import { expect, test, type Locator, type Page } from "@playwright/test"
-import type { JsonValue, OpenCodeEvent, SessionMessageAssistant, SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { JsonValue, OpenCodeEvent, SessionMessageAssistant, SessionMessageInfo } from "@opencode/client/promise"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectAppVisible, expectSessionTitle } from "../utils/waits"
import { createTwoFilesPatch } from "diff"
diff --git a/packages/app/e2e/regression/session-timeline-context-resize.spec.ts b/packages/app/e2e/regression/session-timeline-context-resize.spec.ts
index e19658c138b..87dedc5385f 100644
--- a/packages/app/e2e/regression/session-timeline-context-resize.spec.ts
+++ b/packages/app/e2e/regression/session-timeline-context-resize.spec.ts
@@ -1,5 +1,5 @@
import { expect, test, type Page } from "@playwright/test"
-import type { JsonValue, OpenCodeEvent, SessionMessageAssistant, SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { JsonValue, OpenCodeEvent, SessionMessageAssistant, SessionMessageInfo } from "@opencode/client/promise"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectAppVisible, expectSessionTitle } from "../utils/waits"
import {
diff --git a/packages/app/e2e/regression/session-timeline-file-projection.spec.ts b/packages/app/e2e/regression/session-timeline-file-projection.spec.ts
index c6e0c671dba..0a29b72d5d9 100644
--- a/packages/app/e2e/regression/session-timeline-file-projection.spec.ts
+++ b/packages/app/e2e/regression/session-timeline-file-projection.spec.ts
@@ -1,5 +1,5 @@
import { expect, test } from "@playwright/test"
-import { timelinePresets } from "@opencode-ai/session-ui/timeline/detail"
+import { timelinePresets } from "@opencode/session-ui/timeline/detail"
import { createTwoFilesPatch } from "diff"
import {
assistantMessage,
diff --git a/packages/app/e2e/regression/session-timeline-history-root.spec.ts b/packages/app/e2e/regression/session-timeline-history-root.spec.ts
index 6bd37df115b..6fbcf1a6499 100644
--- a/packages/app/e2e/regression/session-timeline-history-root.spec.ts
+++ b/packages/app/e2e/regression/session-timeline-history-root.spec.ts
@@ -1,5 +1,5 @@
-import { base64Encode } from "@opencode-ai/util/encode"
-import type { SessionMessageAssistant } from "@opencode-ai/client/promise"
+import { base64Encode } from "@opencode/util/encode"
+import type { SessionMessageAssistant } from "@opencode/client/promise"
import { expect, test, type Page } from "@playwright/test"
import {
assistantMessage,
diff --git a/packages/app/e2e/regression/session-timeline-hydration.spec.ts b/packages/app/e2e/regression/session-timeline-hydration.spec.ts
index 9ffc88a1654..f1504a05d9d 100644
--- a/packages/app/e2e/regression/session-timeline-hydration.spec.ts
+++ b/packages/app/e2e/regression/session-timeline-hydration.spec.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { SessionMessageInfo } from "@opencode/client/promise"
import { expect, test } from "@playwright/test"
import { fixture } from "../performance/timeline/session-timeline-stress.fixture"
import { stressSessionHref } from "../performance/timeline/timeline-test-helpers"
diff --git a/packages/app/e2e/regression/session-timeline-lifecycle-state.spec.ts b/packages/app/e2e/regression/session-timeline-lifecycle-state.spec.ts
index 90447e05978..0b40bb0b9d7 100644
--- a/packages/app/e2e/regression/session-timeline-lifecycle-state.spec.ts
+++ b/packages/app/e2e/regression/session-timeline-lifecycle-state.spec.ts
@@ -1,5 +1,5 @@
import { expect, test } from "@playwright/test"
-import { timelinePresets } from "@opencode-ai/session-ui/timeline/detail"
+import { timelinePresets } from "@opencode/session-ui/timeline/detail"
import {
assistantID,
assistantMessage,
diff --git a/packages/app/e2e/regression/session-timeline-mount.spec.ts b/packages/app/e2e/regression/session-timeline-mount.spec.ts
index b77893973b5..36d233d5b80 100644
--- a/packages/app/e2e/regression/session-timeline-mount.spec.ts
+++ b/packages/app/e2e/regression/session-timeline-mount.spec.ts
@@ -1,5 +1,5 @@
import { expect, test, type Page } from "@playwright/test"
-import type { SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { SessionMessageInfo } from "@opencode/client/promise"
import { mockOpenCodeServer } from "../utils/mock-server"
import { fixture } from "../performance/timeline/session-timeline-stress.fixture"
import { expected, messages } from "../performance/timeline/session-tab-switch.fixture"
diff --git a/packages/app/e2e/regression/session-timeline-notices.spec.ts b/packages/app/e2e/regression/session-timeline-notices.spec.ts
index adb58be86e9..d340e0067c6 100644
--- a/packages/app/e2e/regression/session-timeline-notices.spec.ts
+++ b/packages/app/e2e/regression/session-timeline-notices.spec.ts
@@ -1,6 +1,6 @@
import { expect, test } from "@playwright/test"
-import type { SessionMessageAssistant, SessionMessageInfo } from "@opencode-ai/client/promise"
-import { timelinePresets } from "@opencode-ai/session-ui/timeline/detail"
+import type { SessionMessageAssistant, SessionMessageInfo } from "@opencode/client/promise"
+import { timelinePresets } from "@opencode/session-ui/timeline/detail"
import {
compactionDelta,
compactionEnded,
diff --git a/packages/app/e2e/regression/session-timeline-projection.spec.ts b/packages/app/e2e/regression/session-timeline-projection.spec.ts
index cc3dfcc96ea..bf63067fa52 100644
--- a/packages/app/e2e/regression/session-timeline-projection.spec.ts
+++ b/packages/app/e2e/regression/session-timeline-projection.spec.ts
@@ -1,5 +1,5 @@
import { expect, test } from "@playwright/test"
-import { timelinePresets } from "@opencode-ai/session-ui/timeline/detail"
+import { timelinePresets } from "@opencode/session-ui/timeline/detail"
import {
assistantMessage,
partUpdated,
diff --git a/packages/app/e2e/regression/session-timeline-shell-outline.spec.ts b/packages/app/e2e/regression/session-timeline-shell-outline.spec.ts
index cc09a4348bb..a8e1d6d33a6 100644
--- a/packages/app/e2e/regression/session-timeline-shell-outline.spec.ts
+++ b/packages/app/e2e/regression/session-timeline-shell-outline.spec.ts
@@ -1,5 +1,5 @@
import { expect, test, type Locator, type Page } from "@playwright/test"
-import { timelinePresets } from "@opencode-ai/session-ui/timeline/detail"
+import { timelinePresets } from "@opencode/session-ui/timeline/detail"
import {
assistantMessage,
setupTimeline,
diff --git a/packages/app/e2e/regression/session-timeline-tool-projection.spec.ts b/packages/app/e2e/regression/session-timeline-tool-projection.spec.ts
index ff57634a0bd..1cd6c0aaa2a 100644
--- a/packages/app/e2e/regression/session-timeline-tool-projection.spec.ts
+++ b/packages/app/e2e/regression/session-timeline-tool-projection.spec.ts
@@ -1,5 +1,5 @@
import { expect, test } from "@playwright/test"
-import { timelinePresets } from "@opencode-ai/session-ui/timeline/detail"
+import { timelinePresets } from "@opencode/session-ui/timeline/detail"
import {
assistantMessage,
partUpdated,
diff --git a/packages/app/e2e/regression/session-timeline-working.spec.ts b/packages/app/e2e/regression/session-timeline-working.spec.ts
index 796c820af77..abebeabf954 100644
--- a/packages/app/e2e/regression/session-timeline-working.spec.ts
+++ b/packages/app/e2e/regression/session-timeline-working.spec.ts
@@ -1,5 +1,5 @@
import { expect, test } from "@playwright/test"
-import { timelinePresets } from "@opencode-ai/session-ui/timeline/detail"
+import { timelinePresets } from "@opencode/session-ui/timeline/detail"
import {
assistantID,
assistantMessage,
diff --git a/packages/app/e2e/regression/subagent-child-navigation.spec.ts b/packages/app/e2e/regression/subagent-child-navigation.spec.ts
index fd79a7f98f5..2a3fe123d6f 100644
--- a/packages/app/e2e/regression/subagent-child-navigation.spec.ts
+++ b/packages/app/e2e/regression/subagent-child-navigation.spec.ts
@@ -1,5 +1,5 @@
-import { base64Encode } from "@opencode-ai/util/encode"
-import type { OpenCodeEvent, SessionMessageInfo } from "@opencode-ai/client/promise"
+import { base64Encode } from "@opencode/util/encode"
+import type { OpenCodeEvent, SessionMessageInfo } from "@opencode/client/promise"
import { expect, test, type Page } from "@playwright/test"
import { currentSession, mockOpenCodeServer } from "../utils/mock-server"
import { expectSessionTitle } from "../utils/waits"
diff --git a/packages/app/e2e/regression/tab-navigate-mousedown.spec.ts b/packages/app/e2e/regression/tab-navigate-mousedown.spec.ts
index e8706ad99f4..d541357e5e1 100644
--- a/packages/app/e2e/regression/tab-navigate-mousedown.spec.ts
+++ b/packages/app/e2e/regression/tab-navigate-mousedown.spec.ts
@@ -1,5 +1,5 @@
import { expect, test, type Page, type Route } from "@playwright/test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { currentSession } from "../utils/mock-server"
const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}`
diff --git a/packages/app/e2e/regression/terminal-composer-focus.spec.ts b/packages/app/e2e/regression/terminal-composer-focus.spec.ts
index db4a435c8a7..3c8e84d020f 100644
--- a/packages/app/e2e/regression/terminal-composer-focus.spec.ts
+++ b/packages/app/e2e/regression/terminal-composer-focus.spec.ts
@@ -1,4 +1,4 @@
-import { base64Encode, checksum } from "@opencode-ai/util/encode"
+import { base64Encode, checksum } from "@opencode/util/encode"
import { expect, test, type Page } from "@playwright/test"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectSessionTitle } from "../utils/waits"
diff --git a/packages/app/e2e/regression/terminal-tab-switch.spec.ts b/packages/app/e2e/regression/terminal-tab-switch.spec.ts
index 609662a2cdd..11160c468d5 100644
--- a/packages/app/e2e/regression/terminal-tab-switch.spec.ts
+++ b/packages/app/e2e/regression/terminal-tab-switch.spec.ts
@@ -1,4 +1,4 @@
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { expect, test, type Page } from "@playwright/test"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectSessionTitle } from "../utils/waits"
diff --git a/packages/app/e2e/regression/workspace-accent.spec.ts b/packages/app/e2e/regression/workspace-accent.spec.ts
index 9b83e136d17..e1f5f5fd79b 100644
--- a/packages/app/e2e/regression/workspace-accent.spec.ts
+++ b/packages/app/e2e/regression/workspace-accent.spec.ts
@@ -1,6 +1,6 @@
import { expect, test, type Locator, type Page } from "@playwright/test"
-import type { OpenCodeEvent, WorktreeDirectory } from "@opencode-ai/client/promise"
-import { base64Encode } from "@opencode-ai/util/encode"
+import type { OpenCodeEvent, WorktreeDirectory } from "@opencode/client/promise"
+import { base64Encode } from "@opencode/util/encode"
import { mockOpenCodeServer } from "../utils/mock-server"
import { expectAppVisible, expectSessionReady } from "../utils/waits"
diff --git a/packages/app/e2e/smoke/session-timeline.fixture.ts b/packages/app/e2e/smoke/session-timeline.fixture.ts
index 272bf267f53..16e8f0d76fe 100644
--- a/packages/app/e2e/smoke/session-timeline.fixture.ts
+++ b/packages/app/e2e/smoke/session-timeline.fixture.ts
@@ -340,4 +340,4 @@ export function pageMessages(sessionID: string, limit: number, before?: string)
cursor: start > 0 ? messages[start].id : undefined,
}
}
-import type { JsonValue, SessionMessageAssistant, SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { JsonValue, SessionMessageAssistant, SessionMessageInfo } from "@opencode/client/promise"
diff --git a/packages/app/e2e/smoke/session-timeline.spec.ts b/packages/app/e2e/smoke/session-timeline.spec.ts
index 1bc5b668ab2..c9d0f56dce8 100644
--- a/packages/app/e2e/smoke/session-timeline.spec.ts
+++ b/packages/app/e2e/smoke/session-timeline.spec.ts
@@ -1,5 +1,5 @@
import { expect, test, type Page } from "@playwright/test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { fixture, pageMessages } from "./session-timeline.fixture"
import { trackPageErrors, expectNoSmokeErrors } from "../utils/errors"
import { mockOpenCodeServer } from "../utils/mock-server"
diff --git a/packages/app/e2e/utils/command-palette.ts b/packages/app/e2e/utils/command-palette.ts
index 3a452fcde4c..bc238b296b1 100644
--- a/packages/app/e2e/utils/command-palette.ts
+++ b/packages/app/e2e/utils/command-palette.ts
@@ -1,5 +1,5 @@
import { expect, type Page } from "@playwright/test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { mockOpenCodeServer } from "./mock-server"
import { APP_READY_TIMEOUT } from "./waits"
diff --git a/packages/app/e2e/utils/mock-server.ts b/packages/app/e2e/utils/mock-server.ts
index 45bef80164e..ee30cb457ee 100644
--- a/packages/app/e2e/utils/mock-server.ts
+++ b/packages/app/e2e/utils/mock-server.ts
@@ -1,5 +1,5 @@
import type { Page } from "@playwright/test"
-import type { JsonValue, OpenCodeEvent, SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { JsonValue, OpenCodeEvent, SessionMessageInfo } from "@opencode/client/promise"
import { Duration, Effect, Layer } from "effect"
import { HttpRouter, HttpServer, HttpServerResponse } from "effect/unstable/http"
import { HttpApiBuilder, HttpApiSchema } from "effect/unstable/httpapi"
diff --git a/packages/app/e2e/utils/sse-transport.ts b/packages/app/e2e/utils/sse-transport.ts
index 2e6a7b67fa3..2a563112fd0 100644
--- a/packages/app/e2e/utils/sse-transport.ts
+++ b/packages/app/e2e/utils/sse-transport.ts
@@ -1,5 +1,5 @@
import type { Page } from "@playwright/test"
-import type { OpenCodeEvent } from "@opencode-ai/client/promise"
+import type { OpenCodeEvent } from "@opencode/client/promise"
export type SseConnectionRecord = {
id: number
diff --git a/packages/app/e2e/utils/waits.ts b/packages/app/e2e/utils/waits.ts
index bcdac591b09..9dd3d76657e 100644
--- a/packages/app/e2e/utils/waits.ts
+++ b/packages/app/e2e/utils/waits.ts
@@ -1,5 +1,5 @@
import { expect, type Locator, type Page } from "@playwright/test"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
export const APP_READY_TIMEOUT = 30_000
diff --git a/packages/app/package.json b/packages/app/package.json
index 93421f15707..0292828d197 100644
--- a/packages/app/package.json
+++ b/packages/app/package.json
@@ -1,5 +1,5 @@
{
- "name": "@opencode-ai/app",
+ "name": "@opencode/app",
"version": "1.18.15",
"description": "",
"type": "module",
@@ -63,12 +63,12 @@
"@dnd-kit/solid": "0.5.0",
"@ibm/plex": "6.4.1",
"@kobalte/core": "catalog:",
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/schema": "workspace:*",
"@opencode/plugin-browser": "workspace:*",
- "@opencode-ai/session-ui": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/session-ui": "workspace:*",
+ "@opencode/ui": "workspace:*",
+ "@opencode/util": "workspace:*",
"@pierre/trees": "1.0.0-beta.4",
"@sentry/solid": "catalog:",
"@solid-primitives/event-bus": "1.1.2",
diff --git a/packages/app/src/app.tsx b/packages/app/src/app.tsx
index f7654abe746..ecfce010bdd 100644
--- a/packages/app/src/app.tsx
+++ b/packages/app/src/app.tsx
@@ -1,8 +1,8 @@
import "@/index.css"
-import { DialogProvider } from "@opencode-ai/ui/context/dialog"
-import { FileComponentProvider } from "@opencode-ai/ui/context/file"
-import { Font } from "@opencode-ai/ui/font"
-import { ThemeProvider } from "@opencode-ai/ui/theme/context"
+import { DialogProvider } from "@opencode/ui/context/dialog"
+import { FileComponentProvider } from "@opencode/ui/context/file"
+import { Font } from "@opencode/ui/font"
+import { ThemeProvider } from "@opencode/ui/theme/context"
import { MetaProvider } from "@solidjs/meta"
import { type BaseRouterProps, Router } from "@solidjs/router"
import { QueryClient, QueryClientProvider } from "@tanstack/solid-query"
diff --git a/packages/app/src/composer/adapter.ts b/packages/app/src/composer/adapter.ts
index ef068ab233f..ffc50788d01 100644
--- a/packages/app/src/composer/adapter.ts
+++ b/packages/app/src/composer/adapter.ts
@@ -1,5 +1,5 @@
-import type { Data } from "@opencode-ai/client/solid"
-import type { SessionMessageUser } from "@opencode-ai/client/promise"
+import type { Data } from "@opencode/client/solid"
+import type { SessionMessageUser } from "@opencode/client/promise"
import type { Accessor } from "solid-js"
import type { ModelSelection } from "@/providers/models/selection"
import type { ServerSDK } from "@/runtime/server/client"
diff --git a/packages/app/src/composer/commands.tsx b/packages/app/src/composer/commands.tsx
index 407d5972c98..4cafbffaf8e 100644
--- a/packages/app/src/composer/commands.tsx
+++ b/packages/app/src/composer/commands.tsx
@@ -1,7 +1,7 @@
import { useCommand, type CommandOption } from "@/shell/commands/command"
import { useLanguage } from "@/runtime/i18n/language"
import { useLocal, type ModelSelection } from "@/providers/models/selection"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { useDialog } from "@opencode/ui/context/dialog"
import { getCursorPosition, setCursorPosition } from "./editor/dom"
import { useSessionLayout } from "@/session/session-layout"
import { createSessionOwnership } from "@/session/session-ownership"
diff --git a/packages/app/src/composer/comments.tsx b/packages/app/src/composer/comments.tsx
index 9b5bdac649a..09f5ee357b5 100644
--- a/packages/app/src/composer/comments.tsx
+++ b/packages/app/src/composer/comments.tsx
@@ -1,8 +1,8 @@
import { batch, createMemo, createRoot, onCleanup } from "solid-js"
import { createStore, reconcile, type SetStoreFunction, type Store } from "solid-js/store"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import { useParams } from "@solidjs/router"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { Persist, persisted } from "@/runtime/persistence/storage"
import { useServerSDK } from "@/runtime/server/client"
import type { ServerScope } from "@/runtime/server/scope"
diff --git a/packages/app/src/composer/composer.stories.tsx b/packages/app/src/composer/composer.stories.tsx
index 013573517a8..73c32cbb5d3 100644
--- a/packages/app/src/composer/composer.stories.tsx
+++ b/packages/app/src/composer/composer.stories.tsx
@@ -1,7 +1,7 @@
import { Show, createMemo, onMount, type JSX } from "solid-js"
import { createStore } from "solid-js/store"
import type { ModelSelection } from "@/providers/models/selection"
-import { STORY_MODEL, emptySessionDocument, pendingAndQueuedDocument } from "@opencode-ai/session-ui/storybook"
+import { STORY_MODEL, emptySessionDocument, pendingAndQueuedDocument } from "@opencode/session-ui/storybook"
import { Composer } from "./composer"
import type { ComposerModel } from "./model"
import { createComposerEditor } from "./editor/interaction"
@@ -9,7 +9,7 @@ import type { ComposerPersistedState, ComposerSuggestion } from "./types"
import { buildPromptRequest } from "./request"
import { promptLength } from "./prompt-parts"
import { SessionPreview } from "@/session/story-model"
-import { Skill } from "@opencode-ai/schema/skill"
+import { Skill } from "@opencode/schema/skill"
import { resolveSessionComposerSelection } from "@/session/composer/selection"
const selectedModel = {
diff --git a/packages/app/src/composer/composer.tsx b/packages/app/src/composer/composer.tsx
index b9833b04165..f80afc7a7c0 100644
--- a/packages/app/src/composer/composer.tsx
+++ b/packages/app/src/composer/composer.tsx
@@ -1,10 +1,10 @@
import { Show, createMemo } from "solid-js"
-import { Button } from "@opencode-ai/ui/button"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { Icon } from "@opencode-ai/ui/icon"
-import { Keybind } from "@opencode-ai/ui/keybind"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { Button } from "@opencode/ui/button"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { Icon } from "@opencode/ui/icon"
+import { Keybind } from "@opencode/ui/keybind"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
+import { Tooltip } from "@opencode/ui/tooltip"
import { ComposerEditor } from "./editor/editor"
import { ModelSelectorPopover } from "@/providers/models/select-dialog"
import { DialogSelectModelUnpaid } from "@/providers/models/unpaid"
diff --git a/packages/app/src/composer/dropzone.tsx b/packages/app/src/composer/dropzone.tsx
index b7621c009ce..e15e60dda6f 100644
--- a/packages/app/src/composer/dropzone.tsx
+++ b/packages/app/src/composer/dropzone.tsx
@@ -1,4 +1,4 @@
-import { Icon } from "@opencode-ai/ui/icon"
+import { Icon } from "@opencode/ui/icon"
import { Show, createMemo } from "solid-js"
import { createStore } from "solid-js/store"
import { useLanguage } from "@/runtime/i18n/language"
diff --git a/packages/app/src/composer/editor/actions.test.ts b/packages/app/src/composer/editor/actions.test.ts
index e903827a1f8..9d1144622ab 100644
--- a/packages/app/src/composer/editor/actions.test.ts
+++ b/packages/app/src/composer/editor/actions.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import { createStore } from "solid-js/store"
-import { Skill } from "@opencode-ai/schema/skill"
+import { Skill } from "@opencode/schema/skill"
import type { ComposerPersistedState } from "../types"
import { createComposerEditorActions } from "./actions"
diff --git a/packages/app/src/composer/editor/editor.tsx b/packages/app/src/composer/editor/editor.tsx
index 11a4cfbef48..ea0220fe706 100644
--- a/packages/app/src/composer/editor/editor.tsx
+++ b/packages/app/src/composer/editor/editor.tsx
@@ -1,20 +1,20 @@
import { createEffect, createMemo, createSignal, For, onCleanup, onMount, Show, type JSX } from "solid-js"
import { createStore } from "solid-js/store"
-import { FileIcon } from "@opencode-ai/ui/file-icon"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
+import { FileIcon } from "@opencode/ui/file-icon"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
import { createAnimatedPresence } from "@/runtime/animated-presence"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
-import { Button } from "@opencode-ai/ui/button"
-import { Keybind } from "@opencode-ai/ui/keybind"
-import { Menu } from "@opencode-ai/ui/menu"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { ScrollView } from "@opencode-ai/ui/scroll-view"
-import { AttachmentCard } from "@opencode-ai/session-ui/attachment-card"
-import { CommentCard } from "@opencode-ai/session-ui/comment-card"
-import { typeLabel } from "@opencode-ai/session-ui/message-file"
-import { Skill } from "@opencode-ai/schema/skill"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
+import { useI18n } from "@opencode/ui/context/i18n"
+import { Button } from "@opencode/ui/button"
+import { Keybind } from "@opencode/ui/keybind"
+import { Menu } from "@opencode/ui/menu"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { ScrollView } from "@opencode/ui/scroll-view"
+import { AttachmentCard } from "@opencode/session-ui/attachment-card"
+import { CommentCard } from "@opencode/session-ui/comment-card"
+import { typeLabel } from "@opencode/session-ui/message-file"
+import { Skill } from "@opencode/schema/skill"
import type {
ComposerAttachment,
ComposerComment,
diff --git a/packages/app/src/composer/editor/interaction.ts b/packages/app/src/composer/editor/interaction.ts
index f4912459e0e..71d33fe3fa6 100644
--- a/packages/app/src/composer/editor/interaction.ts
+++ b/packages/app/src/composer/editor/interaction.ts
@@ -1,6 +1,6 @@
import { createEffect, type Accessor } from "solid-js"
import { createStore, reconcile } from "solid-js/store"
-import { useFilteredList } from "@opencode-ai/ui/hooks"
+import { useFilteredList } from "@opencode/ui/hooks"
import { createComposerAttachments, type ComposerAttachmentConfig } from "../attachments/attachments"
import { createComposerEditorActions, type ComposerStateStoreInput } from "./actions"
import type {
diff --git a/packages/app/src/composer/model.ts b/packages/app/src/composer/model.ts
index a2ac5f9af88..7f5f0c485f1 100644
--- a/packages/app/src/composer/model.ts
+++ b/packages/app/src/composer/model.ts
@@ -1,6 +1,6 @@
-import { ImagePreview } from "@opencode-ai/ui/image-preview"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import type { ReferenceInfo } from "@opencode-ai/client/promise"
+import { ImagePreview } from "@opencode/ui/image-preview"
+import { useDialog } from "@opencode/ui/context/dialog"
+import type { ReferenceInfo } from "@opencode/client/promise"
import { createComponent, createEffect, createMemo, on } from "solid-js"
import type { ComposerSuggestion } from "./types"
import { createComposerEditor, createComposerEditorState, type ComposerEditorModel } from "./editor/interaction"
@@ -15,7 +15,7 @@ import { useData } from "@/runtime/server/current"
import { createSessionTabs } from "@/session/helpers"
import { showToast } from "@/shell/notifications/toast"
import { formatServerError } from "@/runtime/server/errors"
-import { Skill } from "@opencode-ai/schema/skill"
+import { Skill } from "@opencode/schema/skill"
import type { ComposerAdapter, ComposerControls, ComposerQueue } from "./adapter"
import type { ImageAttachmentPart } from "./state"
import type { PromptHistoryComment } from "./history/entry"
diff --git a/packages/app/src/composer/persistence.tsx b/packages/app/src/composer/persistence.tsx
index 1a27700dcd9..3e47ce46f3a 100644
--- a/packages/app/src/composer/persistence.tsx
+++ b/packages/app/src/composer/persistence.tsx
@@ -1,5 +1,5 @@
-import { base64Encode } from "@opencode-ai/util/encode"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { base64Encode } from "@opencode/util/encode"
+import { createSimpleContext } from "@opencode/ui/context"
import { useParams, useSearchParams } from "@solidjs/router"
import { createMemo, createResource, createRoot, getOwner, onCleanup } from "solid-js"
import { requireServerKey } from "@/shell/routes/session"
diff --git a/packages/app/src/composer/prompt.test.ts b/packages/app/src/composer/prompt.test.ts
index 6d069739c3b..c7214dab9f3 100644
--- a/packages/app/src/composer/prompt.test.ts
+++ b/packages/app/src/composer/prompt.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageUser } from "@opencode/client/promise"
import { extractPromptComments, extractPromptFromMessage } from "./prompt"
describe("extractPromptFromMessage", () => {
diff --git a/packages/app/src/composer/prompt.ts b/packages/app/src/composer/prompt.ts
index d7435c7650c..c033ae73bcf 100644
--- a/packages/app/src/composer/prompt.ts
+++ b/packages/app/src/composer/prompt.ts
@@ -1,8 +1,8 @@
import type { AgentPart, FileAttachmentPart, ImageAttachmentPart, Prompt, SkillPart } from "@/composer/state"
import { createLegacyBlobReference } from "@/runtime/persistence/drafts"
-import type { SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageUser } from "@opencode/client/promise"
import { readPromptPresentation } from "./comment-note"
-import { Skill } from "@opencode-ai/schema/skill"
+import { Skill } from "@opencode/schema/skill"
type Inline =
| {
diff --git a/packages/app/src/composer/request.test.ts b/packages/app/src/composer/request.test.ts
index e71304d9d2a..401653985db 100644
--- a/packages/app/src/composer/request.test.ts
+++ b/packages/app/src/composer/request.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import { Skill } from "@opencode-ai/schema/skill"
+import { Skill } from "@opencode/schema/skill"
import type { Prompt } from "@/composer/state"
import { buildPromptRequest } from "./request"
diff --git a/packages/app/src/composer/request.ts b/packages/app/src/composer/request.ts
index c1d156e0544..0b3f4d8a22c 100644
--- a/packages/app/src/composer/request.ts
+++ b/packages/app/src/composer/request.ts
@@ -1,4 +1,4 @@
-import { getFilename } from "@opencode-ai/util/path"
+import { getFilename } from "@opencode/util/path"
import type { FileSelection } from "@/workspaces/files/model"
import { encodeFilePath } from "@/workspaces/files/path"
import type { AgentPart, FileAttachmentPart, ImageAttachmentPart, Prompt, SkillPart } from "@/composer/state"
diff --git a/packages/app/src/composer/schema.test.ts b/packages/app/src/composer/schema.test.ts
index 89f5a93a991..7b4e9a7778d 100644
--- a/packages/app/src/composer/schema.test.ts
+++ b/packages/app/src/composer/schema.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test"
import { Schema } from "effect"
import { Persistence } from "@/runtime/persistence/schema"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
+import { SessionMessage } from "@opencode/schema/session-message"
import {
CommentStore,
ComposerStore,
diff --git a/packages/app/src/composer/schema.ts b/packages/app/src/composer/schema.ts
index 21373fadb36..960736d9d90 100644
--- a/packages/app/src/composer/schema.ts
+++ b/packages/app/src/composer/schema.ts
@@ -1,7 +1,7 @@
import { Schema, SchemaGetter } from "effect"
-import { checksum } from "@opencode-ai/util/encode"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import { Skill } from "@opencode-ai/schema/skill"
+import { checksum } from "@opencode/util/encode"
+import { SessionMessage } from "@opencode/schema/session-message"
+import { Skill } from "@opencode/schema/skill"
import { Persistence } from "@/runtime/persistence/schema"
import { FileSelection, SelectedLineRange } from "@/workspaces/files/types"
diff --git a/packages/app/src/composer/state.test.ts b/packages/app/src/composer/state.test.ts
index 87ed9874820..c86c6a2469d 100644
--- a/packages/app/src/composer/state.test.ts
+++ b/packages/app/src/composer/state.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import { createRoot } from "solid-js"
-import { Skill } from "@opencode-ai/schema/skill"
+import { Skill } from "@opencode/schema/skill"
import { Schema, Option } from "effect"
import { Persistence } from "@/runtime/persistence/schema"
import { createMemoryComposerState, DEFAULT_PROMPT } from "./state"
diff --git a/packages/app/src/composer/submit.test.ts b/packages/app/src/composer/submit.test.ts
index 517a9f3a512..f7c87b96aea 100644
--- a/packages/app/src/composer/submit.test.ts
+++ b/packages/app/src/composer/submit.test.ts
@@ -1,8 +1,8 @@
import { describe, expect, test } from "bun:test"
import type { ModelSelection } from "@/providers/models/selection"
-import type { SessionMessageUser } from "@opencode-ai/client/promise"
-import { Skill } from "@opencode-ai/schema/skill"
-import { AbsolutePath } from "@opencode-ai/schema/schema"
+import type { SessionMessageUser } from "@opencode/client/promise"
+import { Skill } from "@opencode/schema/skill"
+import { AbsolutePath } from "@opencode/schema/schema"
import type { ActiveComposerAdapter, ComposerControls, ComposerSession, NewSessionComposerAdapter } from "./adapter"
import { createMemoryComposerState } from "./state"
import { createComposerSubmit } from "./submit"
diff --git a/packages/app/src/composer/submit.ts b/packages/app/src/composer/submit.ts
index 9ac30951a07..66a7a8c5f98 100644
--- a/packages/app/src/composer/submit.ts
+++ b/packages/app/src/composer/submit.ts
@@ -1,7 +1,7 @@
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import type { SessionMessageUser, SkillInfo } from "@opencode-ai/client/promise"
-import { Skill } from "@opencode-ai/schema/skill"
-import { Event } from "@opencode-ai/schema/event"
+import { SessionMessage } from "@opencode/schema/session-message"
+import type { SessionMessageUser, SkillInfo } from "@opencode/client/promise"
+import { Skill } from "@opencode/schema/skill"
+import { Event } from "@opencode/schema/event"
import type { Accessor } from "solid-js"
import type { PromptHistoryComment } from "./history/entry"
import type { ImageAttachmentPart, Prompt } from "./state"
diff --git a/packages/app/src/home/model.ts b/packages/app/src/home/model.ts
index 4f5beb160a4..cb71e4ae709 100644
--- a/packages/app/src/home/model.ts
+++ b/packages/app/src/home/model.ts
@@ -4,7 +4,7 @@ import { ServerConnection, useServers } from "@/runtime/server/registry"
import { useTabs } from "@/shell/tabs/tabs"
import { toggleHomeProjectSelection } from "@/shell/layout/helpers"
import { createEffect, createMemo, startTransition } from "solid-js"
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo } from "@opencode/client/promise"
export function createHomeController() {
const layout = useLayout()
diff --git a/packages/app/src/home/projects/controller.tsx b/packages/app/src/home/projects/controller.tsx
index f3b239d4ffb..9149d679f13 100644
--- a/packages/app/src/home/projects/controller.tsx
+++ b/packages/app/src/home/projects/controller.tsx
@@ -8,13 +8,13 @@ import { ServerConnection } from "@/runtime/server/registry"
import { closeHomeProject, errorMessage, homeProjectDirectories } from "@/shell/layout/helpers"
import { Persist, persisted } from "@/runtime/persistence/storage"
import { showToast } from "@/shell/notifications/toast"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { useDialog } from "@opencode/ui/context/dialog"
import { createResource } from "solid-js"
import { Schema } from "effect"
import { Persistence } from "@/runtime/persistence/schema"
import type { HomeController } from "../model"
import { useGlobal } from "@/runtime/server/runtime"
-import { SessionTransfer } from "@opencode-ai/schema/session-transfer"
+import { SessionTransfer } from "@opencode/schema/session-transfer"
export const HomeServersSchema = Schema.Struct({
collapsed: Persistence.record(Persistence.fallback(Schema.Boolean, () => false)),
diff --git a/packages/app/src/home/projects/view.tsx b/packages/app/src/home/projects/view.tsx
index e4bf678325e..c2b4ed95c6f 100644
--- a/packages/app/src/home/projects/view.tsx
+++ b/packages/app/src/home/projects/view.tsx
@@ -6,12 +6,12 @@ import { isSortable, useSortable } from "@dnd-kit/solid/sortable"
import { AutoScroller, Feedback, PointerActivationConstraints } from "@dnd-kit/dom"
import { RestrictToVerticalAxis } from "@dnd-kit/abstract/modifiers"
import { RestrictToElement } from "@dnd-kit/dom/modifiers"
-import { ScrollView } from "@opencode-ai/ui/scroll-view"
-import { ProjectAvatar } from "@opencode-ai/ui/project-avatar"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Menu } from "@opencode-ai/ui/menu"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { ScrollView } from "@opencode/ui/scroll-view"
+import { ProjectAvatar } from "@opencode/ui/project-avatar"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Menu } from "@opencode/ui/menu"
+import { Tooltip } from "@opencode/ui/tooltip"
import { getProjectAvatarVariant, type HomeProjectSelection, type LocalProject } from "@/shell/state/layout"
import { ServerConnection } from "@/runtime/server/registry"
import { useLanguage } from "@/runtime/i18n/language"
diff --git a/packages/app/src/home/route.tsx b/packages/app/src/home/route.tsx
index a39f29b5eb0..2ab2dcf5da5 100644
--- a/packages/app/src/home/route.tsx
+++ b/packages/app/src/home/route.tsx
@@ -1,4 +1,4 @@
-import { ScrollView } from "@opencode-ai/ui/scroll-view"
+import { ScrollView } from "@opencode/ui/scroll-view"
import { createMediaQuery } from "@solid-primitives/media"
import { Show } from "solid-js"
import { createHomeController } from "./model"
diff --git a/packages/app/src/home/sessions/archive.ts b/packages/app/src/home/sessions/archive.ts
index 87a6081c2fb..4393703216a 100644
--- a/packages/app/src/home/sessions/archive.ts
+++ b/packages/app/src/home/sessions/archive.ts
@@ -1,6 +1,6 @@
import { notifySessionTabsRemoved } from "@/shell/titlebar/session-events"
import type { ServerConnection } from "@/runtime/server/registry"
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo } from "@opencode/client/promise"
type HomeSession = Pick
diff --git a/packages/app/src/home/sessions/command-palette.tsx b/packages/app/src/home/sessions/command-palette.tsx
index 7d8ada7d634..ec4deb74673 100644
--- a/packages/app/src/home/sessions/command-palette.tsx
+++ b/packages/app/src/home/sessions/command-palette.tsx
@@ -1,4 +1,4 @@
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { useDialog } from "@opencode/ui/context/dialog"
import { createMemo, onCleanup } from "solid-js"
import { commandPaletteOptions, useCommand } from "@/shell/commands/command"
import { useGlobal } from "@/runtime/server/runtime"
diff --git a/packages/app/src/home/sessions/controller.tsx b/packages/app/src/home/sessions/controller.tsx
index 72e5eafdc4a..1c6e698e9ed 100644
--- a/packages/app/src/home/sessions/controller.tsx
+++ b/packages/app/src/home/sessions/controller.tsx
@@ -1,7 +1,7 @@
-import type { SessionInfo } from "@opencode-ai/client/promise"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { Button } from "@opencode-ai/ui/button"
-import { DialogFooter, DialogHeader, DialogTitleGroup, Dialog } from "@opencode-ai/ui/dialog"
+import type { SessionInfo } from "@opencode/client/promise"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { Button } from "@opencode/ui/button"
+import { DialogFooter, DialogHeader, DialogTitleGroup, Dialog } from "@opencode/ui/dialog"
import { skipToken, useQuery, useQueryClient } from "@tanstack/solid-query"
import { DateTime } from "luxon"
import { type Accessor, createEffect, createMemo, type JSX, startTransition, untrack } from "solid-js"
diff --git a/packages/app/src/home/sessions/index.test.ts b/packages/app/src/home/sessions/index.test.ts
index c2dd2a5f186..283e85e11e9 100644
--- a/packages/app/src/home/sessions/index.test.ts
+++ b/packages/app/src/home/sessions/index.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo } from "@opencode/client/promise"
import { SESSION_RECENT_LIMIT, SESSION_RECENT_WINDOW } from "@/runtime/server/global-sync/types"
import {
HOME_SESSION_INDEX_LIMIT,
diff --git a/packages/app/src/home/sessions/index.ts b/packages/app/src/home/sessions/index.ts
index c81e77371db..ec699e57e92 100644
--- a/packages/app/src/home/sessions/index.ts
+++ b/packages/app/src/home/sessions/index.ts
@@ -1,4 +1,4 @@
-import type { SessionInfo, SessionsResponse } from "@opencode-ai/client/promise"
+import type { SessionInfo, SessionsResponse } from "@opencode/client/promise"
import { pathKey } from "@/workspaces/path-key"
import { SESSION_RECENT_LIMIT, SESSION_RECENT_WINDOW } from "@/runtime/server/global-sync/types"
diff --git a/packages/app/src/home/sessions/records.test.ts b/packages/app/src/home/sessions/records.test.ts
index 03aa9afa4bc..bf0bbf4011d 100644
--- a/packages/app/src/home/sessions/records.test.ts
+++ b/packages/app/src/home/sessions/records.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo } from "@opencode/client/promise"
import type { LocalProject } from "@/shell/state/layout"
import { buildHomeSessionRecords } from "./records"
diff --git a/packages/app/src/home/sessions/records.ts b/packages/app/src/home/sessions/records.ts
index 8c6595d5889..bc0c46dea9f 100644
--- a/packages/app/src/home/sessions/records.ts
+++ b/packages/app/src/home/sessions/records.ts
@@ -1,4 +1,4 @@
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo } from "@opencode/client/promise"
import type { LocalProject } from "@/shell/state/layout"
import { compareSessionTime, displayName } from "@/shell/layout/helpers"
import { pathKey } from "@/workspaces/path-key"
diff --git a/packages/app/src/home/sessions/view.tsx b/packages/app/src/home/sessions/view.tsx
index b6ef0e97511..0ad1188e8fd 100644
--- a/packages/app/src/home/sessions/view.tsx
+++ b/packages/app/src/home/sessions/view.tsx
@@ -1,15 +1,15 @@
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo } from "@opencode/client/promise"
import { Key } from "@solid-primitives/keyed"
import { createMemo, For, Index, onCleanup, Show } from "solid-js"
import { createStore, type SetStoreFunction } from "solid-js/store"
-import { InlineInput } from "@opencode-ai/ui/inline-input"
-import { Spinner } from "@opencode-ai/ui/spinner"
-import { ScrollView } from "@opencode-ai/ui/scroll-view"
-import { Button } from "@opencode-ai/ui/button"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Menu } from "@opencode-ai/ui/menu"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { InlineInput } from "@opencode/ui/inline-input"
+import { Spinner } from "@opencode/ui/spinner"
+import { ScrollView } from "@opencode/ui/scroll-view"
+import { Button } from "@opencode/ui/button"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Menu } from "@opencode/ui/menu"
+import { Tooltip } from "@opencode/ui/tooltip"
import { useLanguage } from "@/runtime/i18n/language"
import { ServerConnection } from "@/runtime/server/registry"
import { SessionTabAvatarView } from "@/shell/layout/session-tab-avatar"
diff --git a/packages/app/src/index.css b/packages/app/src/index.css
index d36bbd34397..3c0573733a0 100644
--- a/packages/app/src/index.css
+++ b/packages/app/src/index.css
@@ -1,6 +1,6 @@
-@import "@opencode-ai/ui/styles/tailwind";
-@import "@opencode-ai/session-ui/styles";
-@import "@opencode-ai/ui/styles/tokens";
+@import "@opencode/ui/styles/tailwind";
+@import "@opencode/session-ui/styles";
+@import "@opencode/ui/styles/tokens";
@import "tw-animate-css";
@font-face {
diff --git a/packages/app/src/new-session/commands.tsx b/packages/app/src/new-session/commands.tsx
index 19b7fbf540c..da53f118f16 100644
--- a/packages/app/src/new-session/commands.tsx
+++ b/packages/app/src/new-session/commands.tsx
@@ -1,4 +1,4 @@
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { useDialog } from "@opencode/ui/context/dialog"
import { useSettingsCommand } from "@/settings/command"
import { useCommand } from "@/shell/commands/command"
import { useLanguage } from "@/runtime/i18n/language"
diff --git a/packages/app/src/new-session/composer-adapter.ts b/packages/app/src/new-session/composer-adapter.ts
index a1d4e1b09fd..57cb53faa65 100644
--- a/packages/app/src/new-session/composer-adapter.ts
+++ b/packages/app/src/new-session/composer-adapter.ts
@@ -1,6 +1,6 @@
-import { base64Encode } from "@opencode-ai/util/encode"
-import type { SessionMessageUser } from "@opencode-ai/client/promise"
-import { Session } from "@opencode-ai/schema/session"
+import { base64Encode } from "@opencode/util/encode"
+import type { SessionMessageUser } from "@opencode/client/promise"
+import { Session } from "@opencode/schema/session"
import { startTransition } from "solid-js"
import type { NewSessionComposerAdapter } from "@/composer/adapter"
import { useComposerState } from "@/composer/persistence"
diff --git a/packages/app/src/new-session/project/selector.tsx b/packages/app/src/new-session/project/selector.tsx
index a9888411bf8..99e207ed33e 100644
--- a/packages/app/src/new-session/project/selector.tsx
+++ b/packages/app/src/new-session/project/selector.tsx
@@ -9,9 +9,9 @@ import {
type ComponentProps,
} from "solid-js"
import { createStore } from "solid-js/store"
-import { Menu } from "@opencode-ai/ui/menu"
-import { Icon } from "@opencode-ai/ui/icon"
-import { ProjectAvatar } from "@opencode-ai/ui/project-avatar"
+import { Menu } from "@opencode/ui/menu"
+import { Icon } from "@opencode/ui/icon"
+import { ProjectAvatar } from "@opencode/ui/project-avatar"
import { getProjectAvatarVariant } from "@/shell/state/layout"
import { useLanguage } from "@/runtime/i18n/language"
import { displayName, getProjectAvatarSource } from "@/shell/layout/helpers"
diff --git a/packages/app/src/new-session/view.tsx b/packages/app/src/new-session/view.tsx
index 05a2bd8b49e..6c3323eea69 100644
--- a/packages/app/src/new-session/view.tsx
+++ b/packages/app/src/new-session/view.tsx
@@ -1,6 +1,6 @@
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { Icon } from "@opencode-ai/ui/icon"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { Icon } from "@opencode/ui/icon"
import { Show, createMemo, createSignal } from "solid-js"
import { Schema } from "effect"
import createPresence from "solid-presence"
diff --git a/packages/app/src/new-session/wordmark.tsx b/packages/app/src/new-session/wordmark.tsx
index ced3c83ea62..00bc6962aa4 100644
--- a/packages/app/src/new-session/wordmark.tsx
+++ b/packages/app/src/new-session/wordmark.tsx
@@ -1,4 +1,4 @@
-import { Wordmark } from "@opencode-ai/ui/wordmark"
+import { Wordmark } from "@opencode/ui/wordmark"
import "./wordmark.css"
export function NewSessionWordmark() {
diff --git a/packages/app/src/new-session/workspace/selector.tsx b/packages/app/src/new-session/workspace/selector.tsx
index 06e383477fe..cf02b1d7634 100644
--- a/packages/app/src/new-session/workspace/selector.tsx
+++ b/packages/app/src/new-session/workspace/selector.tsx
@@ -1,10 +1,10 @@
import { createMemo, createSignal, For, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { createResizeObserver } from "@solid-primitives/resize-observer"
-import { Menu } from "@opencode-ai/ui/menu"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { Icon } from "@opencode-ai/ui/icon"
-import { getFilename } from "@opencode-ai/util/path"
+import { Menu } from "@opencode/ui/menu"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { Icon } from "@opencode/ui/icon"
+import { getFilename } from "@opencode/util/path"
import { useLanguage } from "@/runtime/i18n/language"
import { sameDirectory } from "@/workspaces/paths"
diff --git a/packages/app/src/providers/catalog/plugin.ts b/packages/app/src/providers/catalog/plugin.ts
index 9e240065092..ac01fe82ea8 100644
--- a/packages/app/src/providers/catalog/plugin.ts
+++ b/packages/app/src/providers/catalog/plugin.ts
@@ -1,4 +1,4 @@
-import type { PluginInfo } from "@opencode-ai/client"
+import type { PluginInfo } from "@opencode/client"
export function pluginLabel(plugin: PluginInfo) {
if (plugin.id) return plugin.id
diff --git a/packages/app/src/providers/connect/controller.ts b/packages/app/src/providers/connect/controller.ts
index af635dc8d3d..b2138b68e20 100644
--- a/packages/app/src/providers/connect/controller.ts
+++ b/packages/app/src/providers/connect/controller.ts
@@ -1,4 +1,4 @@
-import type { FormAnswer, IntegrationMethod, IntegrationOauthConnectOutput } from "@opencode-ai/client/promise"
+import type { FormAnswer, IntegrationMethod, IntegrationOauthConnectOutput } from "@opencode/client/promise"
import { useLanguage } from "@/runtime/i18n/language"
import { usePlatform } from "@/runtime/platform/platform"
import { useServerSDK } from "@/runtime/server/client"
diff --git a/packages/app/src/providers/connect/dialog.stories.tsx b/packages/app/src/providers/connect/dialog.stories.tsx
index 3525b2be00e..15553d1ba6e 100644
--- a/packages/app/src/providers/connect/dialog.stories.tsx
+++ b/packages/app/src/providers/connect/dialog.stories.tsx
@@ -1,6 +1,6 @@
// @ts-nocheck
-import { Button } from "@opencode-ai/ui/button"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { Button } from "@opencode/ui/button"
+import { useDialog } from "@opencode/ui/context/dialog"
import { QueryClient, QueryClientProvider } from "@tanstack/solid-query"
import { mockProviderAuth } from "@/runtime/server/sync"
import { onCleanup, onMount } from "solid-js"
diff --git a/packages/app/src/providers/connect/dialog.tsx b/packages/app/src/providers/connect/dialog.tsx
index 85c0520a89d..fd063605e09 100644
--- a/packages/app/src/providers/connect/dialog.tsx
+++ b/packages/app/src/providers/connect/dialog.tsx
@@ -1,12 +1,12 @@
-import { Button } from "@opencode-ai/ui/button"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { Icon } from "@opencode-ai/ui/icon"
-import { List } from "@opencode-ai/ui/list"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
-import { Spinner } from "@opencode-ai/ui/spinner"
-import { TextField } from "@opencode-ai/ui/text-field"
-import { DialogBody, DialogHeader, DialogTitle, Dialog } from "@opencode-ai/ui/dialog"
-import { TextInput } from "@opencode-ai/ui/text-input"
+import { Button } from "@opencode/ui/button"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { Icon } from "@opencode/ui/icon"
+import { List } from "@opencode/ui/list"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
+import { Spinner } from "@opencode/ui/spinner"
+import { TextField } from "@opencode/ui/text-field"
+import { DialogBody, DialogHeader, DialogTitle, Dialog } from "@opencode/ui/dialog"
+import { TextInput } from "@opencode/ui/text-input"
import { showToast } from "@/shell/notifications/toast"
import { type Component, createMemo, createUniqueId, For, Match, onMount, Show, Switch } from "solid-js"
import { createStore } from "solid-js/store"
diff --git a/packages/app/src/providers/connect/mcp-dialog.tsx b/packages/app/src/providers/connect/mcp-dialog.tsx
index a212bae5eaf..218adb456e9 100644
--- a/packages/app/src/providers/connect/mcp-dialog.tsx
+++ b/packages/app/src/providers/connect/mcp-dialog.tsx
@@ -1,9 +1,9 @@
import { Component, createMemo, Show } from "solid-js"
import { useData } from "@/runtime/server/current"
import { useWorkspaceLocation } from "@/workspaces/location"
-import { Dialog, DialogBody, DialogHeader, DialogTitleGroup } from "@opencode-ai/ui/dialog"
-import { List } from "@opencode-ai/ui/list"
-import { Switch } from "@opencode-ai/ui/switch"
+import { Dialog, DialogBody, DialogHeader, DialogTitleGroup } from "@opencode/ui/dialog"
+import { List } from "@opencode/ui/list"
+import { Switch } from "@opencode/ui/switch"
import { useLanguage } from "@/runtime/i18n/language"
import { useMcpToggle } from "@/providers/connect/mcp"
diff --git a/packages/app/src/providers/connect/usage-exceeded.tsx b/packages/app/src/providers/connect/usage-exceeded.tsx
index 3b9b66ebbe6..1703225b872 100644
--- a/packages/app/src/providers/connect/usage-exceeded.tsx
+++ b/packages/app/src/providers/connect/usage-exceeded.tsx
@@ -1,8 +1,8 @@
import { usePlatform } from "@/runtime/platform/platform"
import { useLanguage } from "@/runtime/i18n/language"
-import { Button } from "@opencode-ai/ui/button"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { Dialog, DialogBody, DialogHeader, DialogTitleGroup } from "@opencode-ai/ui/dialog"
+import { Button } from "@opencode/ui/button"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { Dialog, DialogBody, DialogHeader, DialogTitleGroup } from "@opencode/ui/dialog"
import { JSX } from "solid-js"
export type DialogGoUpsellProps = {
diff --git a/packages/app/src/providers/credentials/dialog.tsx b/packages/app/src/providers/credentials/dialog.tsx
index 63cd7eb9868..bb047439695 100644
--- a/packages/app/src/providers/credentials/dialog.tsx
+++ b/packages/app/src/providers/credentials/dialog.tsx
@@ -1,10 +1,10 @@
-import { Button } from "@opencode-ai/ui/button"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
+import { Button } from "@opencode/ui/button"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
import { useMutation } from "@tanstack/solid-query"
-import { TextField } from "@opencode-ai/ui/text-field"
+import { TextField } from "@opencode/ui/text-field"
import { showToast } from "@/shell/notifications/toast"
import { batch, For } from "solid-js"
import { createStore, produce } from "solid-js/store"
diff --git a/packages/app/src/providers/models/manage.tsx b/packages/app/src/providers/models/manage.tsx
index b07ce142901..808621f6f28 100644
--- a/packages/app/src/providers/models/manage.tsx
+++ b/packages/app/src/providers/models/manage.tsx
@@ -1,17 +1,17 @@
-import { Button } from "@opencode-ai/ui/button"
-import { Dialog, DialogBody, DialogHeader, DialogTitleGroup } from "@opencode-ai/ui/dialog"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
-import { Switch } from "@opencode-ai/ui/switch"
-import { TextInput } from "@opencode-ai/ui/text-input"
-import { useFilteredList } from "@opencode-ai/ui/hooks"
+import { Button } from "@opencode/ui/button"
+import { Dialog, DialogBody, DialogHeader, DialogTitleGroup } from "@opencode/ui/dialog"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
+import { Switch } from "@opencode/ui/switch"
+import { TextInput } from "@opencode/ui/text-input"
+import { useFilteredList } from "@opencode/ui/hooks"
import { For, Show, type Component } from "solid-js"
import { createStore } from "solid-js/store"
import { useLocal } from "@/providers/models/selection"
import { popularProviders } from "@/providers/catalog/providers"
import { useLanguage } from "@/runtime/i18n/language"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { useDialog } from "@opencode/ui/context/dialog"
import { DialogConnectProvider } from "@/providers/connect/dialog"
import { decode64 } from "@/runtime/persistence/base64"
import { SettingsList } from "@/settings/list"
diff --git a/packages/app/src/providers/models/models.tsx b/packages/app/src/providers/models/models.tsx
index be97525acb4..b1bd9d34e22 100644
--- a/packages/app/src/providers/models/models.tsx
+++ b/packages/app/src/providers/models/models.tsx
@@ -1,7 +1,7 @@
import { type Accessor, createMemo } from "solid-js"
import { DateTime } from "luxon"
import { filter, firstBy, flat, groupBy, mapValues, pipe, uniqueBy, values } from "remeda"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import { useProviders } from "@/providers/catalog/providers"
import { useGlobal } from "@/runtime/server/runtime"
diff --git a/packages/app/src/providers/models/select-dialog.tsx b/packages/app/src/providers/models/select-dialog.tsx
index 35a8ec7934e..7e34aa7eaae 100644
--- a/packages/app/src/providers/models/select-dialog.tsx
+++ b/packages/app/src/providers/models/select-dialog.tsx
@@ -2,18 +2,18 @@ import { Popover } from "@kobalte/core/popover"
import { Component, ComponentProps, createEffect, createMemo, For, JSX, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { useLocal } from "@/providers/models/selection"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { useDialog } from "@opencode/ui/context/dialog"
import { popularProviders } from "@/providers/catalog/providers"
-import { Button } from "@opencode-ai/ui/button"
-import { Badge } from "@opencode-ai/ui/badge"
-import { Dialog, DialogBody, DialogHeader, DialogTitle } from "@opencode-ai/ui/dialog"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { ScrollView } from "@opencode-ai/ui/scroll-view"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { Menu } from "@opencode-ai/ui/menu"
-import { TextInput } from "@opencode-ai/ui/text-input"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
+import { Button } from "@opencode/ui/button"
+import { Badge } from "@opencode/ui/badge"
+import { Dialog, DialogBody, DialogHeader, DialogTitle } from "@opencode/ui/dialog"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { ScrollView } from "@opencode/ui/scroll-view"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { Menu } from "@opencode/ui/menu"
+import { TextInput } from "@opencode/ui/text-input"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
import { ModelTooltip } from "./tooltip"
import { useLanguage } from "@/runtime/i18n/language"
import { decode64 } from "@/runtime/persistence/base64"
diff --git a/packages/app/src/providers/models/selection.tsx b/packages/app/src/providers/models/selection.tsx
index 936cddc483d..e9f8127f4f9 100644
--- a/packages/app/src/providers/models/selection.tsx
+++ b/packages/app/src/providers/models/selection.tsx
@@ -1,5 +1,5 @@
-import { createSimpleContext } from "@opencode-ai/ui/context"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { createSimpleContext } from "@opencode/ui/context"
+import { base64Encode } from "@opencode/util/encode"
import { useParams } from "@solidjs/router"
import { batch, createEffect, createMemo, startTransition } from "solid-js"
import { createStore } from "solid-js/store"
diff --git a/packages/app/src/providers/models/unpaid.stories.tsx b/packages/app/src/providers/models/unpaid.stories.tsx
index 501fcca9ec7..9c31a0d4032 100644
--- a/packages/app/src/providers/models/unpaid.stories.tsx
+++ b/packages/app/src/providers/models/unpaid.stories.tsx
@@ -1,6 +1,6 @@
// @ts-nocheck
-import { Button } from "@opencode-ai/ui/button"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { Button } from "@opencode/ui/button"
+import { useDialog } from "@opencode/ui/context/dialog"
import { createSignal, onMount } from "solid-js"
import { DialogSelectModelUnpaid } from "./unpaid"
diff --git a/packages/app/src/providers/models/unpaid.tsx b/packages/app/src/providers/models/unpaid.tsx
index e52ec835935..b17454a8931 100644
--- a/packages/app/src/providers/models/unpaid.tsx
+++ b/packages/app/src/providers/models/unpaid.tsx
@@ -1,10 +1,10 @@
-import { DialogBody, DialogHeader, DialogTitle, Dialog } from "@opencode-ai/ui/dialog"
-import { Badge } from "@opencode-ai/ui/badge"
-import { Icon } from "@opencode-ai/ui/icon"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { useTheme } from "@opencode-ai/ui/theme"
+import { DialogBody, DialogHeader, DialogTitle, Dialog } from "@opencode/ui/dialog"
+import { Badge } from "@opencode/ui/badge"
+import { Icon } from "@opencode/ui/icon"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { useTheme } from "@opencode/ui/theme"
import { createMemo, onCleanup, onMount, type Component, For, Show } from "solid-js"
import { useLocal } from "@/providers/models/selection"
import { useIntegrations } from "@/providers/catalog/integrations"
diff --git a/packages/app/src/runtime/i18n/language.tsx b/packages/app/src/runtime/i18n/language.tsx
index 7cdb52a2f1e..b1599cdc226 100644
--- a/packages/app/src/runtime/i18n/language.tsx
+++ b/packages/app/src/runtime/i18n/language.tsx
@@ -2,7 +2,7 @@ import { flatten, resolveTemplate, translator, type Flatten } from "@solid-primi
import { createEffect, createMemo, createResource, type JSX } from "solid-js"
import { createStore } from "solid-js/store"
import { Option, Schema, SchemaGetter } from "effect"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import {
I18nProvider,
type UiI18n,
@@ -10,11 +10,11 @@ import {
type UiI18nPluralLookupKey,
type UiI18nPluralKey,
type UiPluralCategory,
-} from "@opencode-ai/ui/context/i18n"
+} from "@opencode/ui/context/i18n"
import { Persist, persisted } from "@/runtime/persistence/storage"
import { Persistence } from "@/runtime/persistence/schema"
import en from "@/runtime/i18n/en"
-import { dict } from "@opencode-ai/ui/i18n/en"
+import { dict } from "@opencode/ui/i18n/en"
import {
createDesktopNativeBundle,
detectDesktopNativeLocale,
@@ -75,68 +75,68 @@ const merge = (app: Promise, ui: Promise) =>
Promise.all([app, ui]).then(([a, b]) => ({ ...base, ...flatten({ ...a.dict, ...b.dict }) }) as Dictionary)
const loaders: Record, () => Promise> = {
- zh: () => merge(import("@/runtime/i18n/zh"), import("@opencode-ai/ui/i18n/zh")),
- zht: () => merge(import("@/runtime/i18n/zht"), import("@opencode-ai/ui/i18n/zht")),
- ko: () => merge(import("@/runtime/i18n/ko"), import("@opencode-ai/ui/i18n/ko")),
- de: () => merge(import("@/runtime/i18n/de"), import("@opencode-ai/ui/i18n/de")),
- es: () => merge(import("@/runtime/i18n/es"), import("@opencode-ai/ui/i18n/es")),
- fr: () => merge(import("@/runtime/i18n/fr"), import("@opencode-ai/ui/i18n/fr")),
- da: () => merge(import("@/runtime/i18n/da"), import("@opencode-ai/ui/i18n/da")),
- ja: () => merge(import("@/runtime/i18n/ja"), import("@opencode-ai/ui/i18n/ja")),
- pl: () => merge(import("@/runtime/i18n/pl"), import("@opencode-ai/ui/i18n/pl")),
- ru: () => merge(import("@/runtime/i18n/ru"), import("@opencode-ai/ui/i18n/ru")),
- uk: () => merge(import("@/runtime/i18n/uk"), import("@opencode-ai/ui/i18n/uk")),
- ar: () => merge(import("@/runtime/i18n/ar"), import("@opencode-ai/ui/i18n/ar")),
- he: () => merge(import("@/runtime/i18n/he"), import("@opencode-ai/ui/i18n/he")),
- no: () => merge(import("@/runtime/i18n/no"), import("@opencode-ai/ui/i18n/no")),
- br: () => merge(import("@/runtime/i18n/br"), import("@opencode-ai/ui/i18n/br")),
- th: () => merge(import("@/runtime/i18n/th"), import("@opencode-ai/ui/i18n/th")),
- bs: () => merge(import("@/runtime/i18n/bs"), import("@opencode-ai/ui/i18n/bs")),
- tr: () => merge(import("@/runtime/i18n/tr"), import("@opencode-ai/ui/i18n/tr")),
- hi: () => merge(import("@/runtime/i18n/hi"), import("@opencode-ai/ui/i18n/hi")),
- nl: () => merge(import("@/runtime/i18n/nl"), import("@opencode-ai/ui/i18n/nl")),
- id: () => merge(import("@/runtime/i18n/id"), import("@opencode-ai/ui/i18n/id")),
- vi: () => merge(import("@/runtime/i18n/vi"), import("@opencode-ai/ui/i18n/vi")),
- it: () => merge(import("@/runtime/i18n/it"), import("@opencode-ai/ui/i18n/it")),
- ur: () => merge(import("@/runtime/i18n/ur"), import("@opencode-ai/ui/i18n/ur")),
- pa: () => merge(import("@/runtime/i18n/pa"), import("@opencode-ai/ui/i18n/pa")),
- az: () => merge(import("@/runtime/i18n/az"), import("@opencode-ai/ui/i18n/az")),
- fi: () => merge(import("@/runtime/i18n/fi"), import("@opencode-ai/ui/i18n/fi")),
- sv: () => merge(import("@/runtime/i18n/sv"), import("@opencode-ai/ui/i18n/sv")),
- am: () => merge(import("@/runtime/i18n/am"), import("@opencode-ai/ui/i18n/am")),
- bg: () => merge(import("@/runtime/i18n/bg"), import("@opencode-ai/ui/i18n/bg")),
- bn: () => merge(import("@/runtime/i18n/bn"), import("@opencode-ai/ui/i18n/bn")),
- ca: () => merge(import("@/runtime/i18n/ca"), import("@opencode-ai/ui/i18n/ca")),
- cs: () => merge(import("@/runtime/i18n/cs"), import("@opencode-ai/ui/i18n/cs")),
- dv: () => merge(import("@/runtime/i18n/dv"), import("@opencode-ai/ui/i18n/dv")),
- dz: () => merge(import("@/runtime/i18n/dz"), import("@opencode-ai/ui/i18n/dz")),
- el: () => merge(import("@/runtime/i18n/el"), import("@opencode-ai/ui/i18n/el")),
- et: () => merge(import("@/runtime/i18n/et"), import("@opencode-ai/ui/i18n/et")),
- fa: () => merge(import("@/runtime/i18n/fa"), import("@opencode-ai/ui/i18n/fa")),
- fo: () => merge(import("@/runtime/i18n/fo"), import("@opencode-ai/ui/i18n/fo")),
- hr: () => merge(import("@/runtime/i18n/hr"), import("@opencode-ai/ui/i18n/hr")),
- hu: () => merge(import("@/runtime/i18n/hu"), import("@opencode-ai/ui/i18n/hu")),
- hy: () => merge(import("@/runtime/i18n/hy"), import("@opencode-ai/ui/i18n/hy")),
- is: () => merge(import("@/runtime/i18n/is"), import("@opencode-ai/ui/i18n/is")),
- ka: () => merge(import("@/runtime/i18n/ka"), import("@opencode-ai/ui/i18n/ka")),
- km: () => merge(import("@/runtime/i18n/km"), import("@opencode-ai/ui/i18n/km")),
- lo: () => merge(import("@/runtime/i18n/lo"), import("@opencode-ai/ui/i18n/lo")),
- lt: () => merge(import("@/runtime/i18n/lt"), import("@opencode-ai/ui/i18n/lt")),
- lv: () => merge(import("@/runtime/i18n/lv"), import("@opencode-ai/ui/i18n/lv")),
- mk: () => merge(import("@/runtime/i18n/mk"), import("@opencode-ai/ui/i18n/mk")),
- mn: () => merge(import("@/runtime/i18n/mn"), import("@opencode-ai/ui/i18n/mn")),
- ms: () => merge(import("@/runtime/i18n/ms"), import("@opencode-ai/ui/i18n/ms")),
- my: () => merge(import("@/runtime/i18n/my"), import("@opencode-ai/ui/i18n/my")),
- ne: () => merge(import("@/runtime/i18n/ne"), import("@opencode-ai/ui/i18n/ne")),
- ro: () => merge(import("@/runtime/i18n/ro"), import("@opencode-ai/ui/i18n/ro")),
- si: () => merge(import("@/runtime/i18n/si"), import("@opencode-ai/ui/i18n/si")),
- sk: () => merge(import("@/runtime/i18n/sk"), import("@opencode-ai/ui/i18n/sk")),
- sl: () => merge(import("@/runtime/i18n/sl"), import("@opencode-ai/ui/i18n/sl")),
- sq: () => merge(import("@/runtime/i18n/sq"), import("@opencode-ai/ui/i18n/sq")),
- sr: () => merge(import("@/runtime/i18n/sr"), import("@opencode-ai/ui/i18n/sr")),
- tg: () => merge(import("@/runtime/i18n/tg"), import("@opencode-ai/ui/i18n/tg")),
- tk: () => merge(import("@/runtime/i18n/tk"), import("@opencode-ai/ui/i18n/tk")),
- uz: () => merge(import("@/runtime/i18n/uz"), import("@opencode-ai/ui/i18n/uz")),
+ zh: () => merge(import("@/runtime/i18n/zh"), import("@opencode/ui/i18n/zh")),
+ zht: () => merge(import("@/runtime/i18n/zht"), import("@opencode/ui/i18n/zht")),
+ ko: () => merge(import("@/runtime/i18n/ko"), import("@opencode/ui/i18n/ko")),
+ de: () => merge(import("@/runtime/i18n/de"), import("@opencode/ui/i18n/de")),
+ es: () => merge(import("@/runtime/i18n/es"), import("@opencode/ui/i18n/es")),
+ fr: () => merge(import("@/runtime/i18n/fr"), import("@opencode/ui/i18n/fr")),
+ da: () => merge(import("@/runtime/i18n/da"), import("@opencode/ui/i18n/da")),
+ ja: () => merge(import("@/runtime/i18n/ja"), import("@opencode/ui/i18n/ja")),
+ pl: () => merge(import("@/runtime/i18n/pl"), import("@opencode/ui/i18n/pl")),
+ ru: () => merge(import("@/runtime/i18n/ru"), import("@opencode/ui/i18n/ru")),
+ uk: () => merge(import("@/runtime/i18n/uk"), import("@opencode/ui/i18n/uk")),
+ ar: () => merge(import("@/runtime/i18n/ar"), import("@opencode/ui/i18n/ar")),
+ he: () => merge(import("@/runtime/i18n/he"), import("@opencode/ui/i18n/he")),
+ no: () => merge(import("@/runtime/i18n/no"), import("@opencode/ui/i18n/no")),
+ br: () => merge(import("@/runtime/i18n/br"), import("@opencode/ui/i18n/br")),
+ th: () => merge(import("@/runtime/i18n/th"), import("@opencode/ui/i18n/th")),
+ bs: () => merge(import("@/runtime/i18n/bs"), import("@opencode/ui/i18n/bs")),
+ tr: () => merge(import("@/runtime/i18n/tr"), import("@opencode/ui/i18n/tr")),
+ hi: () => merge(import("@/runtime/i18n/hi"), import("@opencode/ui/i18n/hi")),
+ nl: () => merge(import("@/runtime/i18n/nl"), import("@opencode/ui/i18n/nl")),
+ id: () => merge(import("@/runtime/i18n/id"), import("@opencode/ui/i18n/id")),
+ vi: () => merge(import("@/runtime/i18n/vi"), import("@opencode/ui/i18n/vi")),
+ it: () => merge(import("@/runtime/i18n/it"), import("@opencode/ui/i18n/it")),
+ ur: () => merge(import("@/runtime/i18n/ur"), import("@opencode/ui/i18n/ur")),
+ pa: () => merge(import("@/runtime/i18n/pa"), import("@opencode/ui/i18n/pa")),
+ az: () => merge(import("@/runtime/i18n/az"), import("@opencode/ui/i18n/az")),
+ fi: () => merge(import("@/runtime/i18n/fi"), import("@opencode/ui/i18n/fi")),
+ sv: () => merge(import("@/runtime/i18n/sv"), import("@opencode/ui/i18n/sv")),
+ am: () => merge(import("@/runtime/i18n/am"), import("@opencode/ui/i18n/am")),
+ bg: () => merge(import("@/runtime/i18n/bg"), import("@opencode/ui/i18n/bg")),
+ bn: () => merge(import("@/runtime/i18n/bn"), import("@opencode/ui/i18n/bn")),
+ ca: () => merge(import("@/runtime/i18n/ca"), import("@opencode/ui/i18n/ca")),
+ cs: () => merge(import("@/runtime/i18n/cs"), import("@opencode/ui/i18n/cs")),
+ dv: () => merge(import("@/runtime/i18n/dv"), import("@opencode/ui/i18n/dv")),
+ dz: () => merge(import("@/runtime/i18n/dz"), import("@opencode/ui/i18n/dz")),
+ el: () => merge(import("@/runtime/i18n/el"), import("@opencode/ui/i18n/el")),
+ et: () => merge(import("@/runtime/i18n/et"), import("@opencode/ui/i18n/et")),
+ fa: () => merge(import("@/runtime/i18n/fa"), import("@opencode/ui/i18n/fa")),
+ fo: () => merge(import("@/runtime/i18n/fo"), import("@opencode/ui/i18n/fo")),
+ hr: () => merge(import("@/runtime/i18n/hr"), import("@opencode/ui/i18n/hr")),
+ hu: () => merge(import("@/runtime/i18n/hu"), import("@opencode/ui/i18n/hu")),
+ hy: () => merge(import("@/runtime/i18n/hy"), import("@opencode/ui/i18n/hy")),
+ is: () => merge(import("@/runtime/i18n/is"), import("@opencode/ui/i18n/is")),
+ ka: () => merge(import("@/runtime/i18n/ka"), import("@opencode/ui/i18n/ka")),
+ km: () => merge(import("@/runtime/i18n/km"), import("@opencode/ui/i18n/km")),
+ lo: () => merge(import("@/runtime/i18n/lo"), import("@opencode/ui/i18n/lo")),
+ lt: () => merge(import("@/runtime/i18n/lt"), import("@opencode/ui/i18n/lt")),
+ lv: () => merge(import("@/runtime/i18n/lv"), import("@opencode/ui/i18n/lv")),
+ mk: () => merge(import("@/runtime/i18n/mk"), import("@opencode/ui/i18n/mk")),
+ mn: () => merge(import("@/runtime/i18n/mn"), import("@opencode/ui/i18n/mn")),
+ ms: () => merge(import("@/runtime/i18n/ms"), import("@opencode/ui/i18n/ms")),
+ my: () => merge(import("@/runtime/i18n/my"), import("@opencode/ui/i18n/my")),
+ ne: () => merge(import("@/runtime/i18n/ne"), import("@opencode/ui/i18n/ne")),
+ ro: () => merge(import("@/runtime/i18n/ro"), import("@opencode/ui/i18n/ro")),
+ si: () => merge(import("@/runtime/i18n/si"), import("@opencode/ui/i18n/si")),
+ sk: () => merge(import("@/runtime/i18n/sk"), import("@opencode/ui/i18n/sk")),
+ sl: () => merge(import("@/runtime/i18n/sl"), import("@opencode/ui/i18n/sl")),
+ sq: () => merge(import("@/runtime/i18n/sq"), import("@opencode/ui/i18n/sq")),
+ sr: () => merge(import("@/runtime/i18n/sr"), import("@opencode/ui/i18n/sr")),
+ tg: () => merge(import("@/runtime/i18n/tg"), import("@opencode/ui/i18n/tg")),
+ tk: () => merge(import("@/runtime/i18n/tk"), import("@opencode/ui/i18n/tk")),
+ uz: () => merge(import("@/runtime/i18n/uz"), import("@opencode/ui/i18n/uz")),
}
function loadDict(locale: Locale) {
diff --git a/packages/app/src/runtime/persistence/base64.ts b/packages/app/src/runtime/persistence/base64.ts
index c1f9d88c6e9..8aa7b4e18a4 100644
--- a/packages/app/src/runtime/persistence/base64.ts
+++ b/packages/app/src/runtime/persistence/base64.ts
@@ -1,4 +1,4 @@
-import { base64Decode } from "@opencode-ai/util/encode"
+import { base64Decode } from "@opencode/util/encode"
export function decode64(value: string | undefined) {
if (value === undefined) return
diff --git a/packages/app/src/runtime/persistence/storage.ts b/packages/app/src/runtime/persistence/storage.ts
index e23489426b5..6984466788e 100644
--- a/packages/app/src/runtime/persistence/storage.ts
+++ b/packages/app/src/runtime/persistence/storage.ts
@@ -1,6 +1,6 @@
import { Platform, usePlatform } from "@/runtime/platform/platform"
import { messageSync, type AsyncStorage, type SyncStorage } from "@solid-primitives/storage"
-import { checksum } from "@opencode-ai/util/encode"
+import { checksum } from "@opencode/util/encode"
import { createResource, onCleanup, type Accessor } from "solid-js"
import { createStore, type SetStoreFunction, type Store } from "solid-js/store"
import { Option, Schema } from "effect"
diff --git a/packages/app/src/runtime/platform/platform.tsx b/packages/app/src/runtime/platform/platform.tsx
index b8592aa2b25..8941741e2b3 100644
--- a/packages/app/src/runtime/platform/platform.tsx
+++ b/packages/app/src/runtime/platform/platform.tsx
@@ -1,4 +1,4 @@
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import type { AsyncStorage, SyncStorage } from "@solid-primitives/storage"
import type { Accessor } from "solid-js"
import type { DesktopMenuAction } from "@/shell/commands/desktop-menu"
diff --git a/packages/app/src/runtime/server/api.ts b/packages/app/src/runtime/server/api.ts
index d3f5cb8632f..c3f7813c447 100644
--- a/packages/app/src/runtime/server/api.ts
+++ b/packages/app/src/runtime/server/api.ts
@@ -1,4 +1,4 @@
-import { OpenCode, type OpenCodeClient } from "@opencode-ai/client/promise"
+import { OpenCode, type OpenCodeClient } from "@opencode/client/promise"
import type { ServerConnection } from "@/runtime/server/registry"
import { decode64 } from "@/runtime/persistence/base64"
diff --git a/packages/app/src/runtime/server/client.test.ts b/packages/app/src/runtime/server/client.test.ts
index 79a5feee2e7..7b2dda30d11 100644
--- a/packages/app/src/runtime/server/client.test.ts
+++ b/packages/app/src/runtime/server/client.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { OpenCodeEvent } from "@opencode-ai/client/promise"
+import type { OpenCodeEvent } from "@opencode/client/promise"
import { createRoot } from "solid-js"
import { createOpenCodeEventSource, createServerTransport } from "./client"
diff --git a/packages/app/src/runtime/server/client.tsx b/packages/app/src/runtime/server/client.tsx
index e45bc144c81..21f7b09bc1b 100644
--- a/packages/app/src/runtime/server/client.tsx
+++ b/packages/app/src/runtime/server/client.tsx
@@ -1,5 +1,5 @@
-import type { OpenCodeEvent } from "@opencode-ai/client/promise"
-import { createClientConnection, createPtyClient, type ClientConnectionStatus } from "@opencode-ai/client/solid"
+import type { OpenCodeEvent } from "@opencode/client/promise"
+import { createClientConnection, createPtyClient, type ClientConnectionStatus } from "@opencode/client/solid"
import { createGlobalEmitter } from "@solid-primitives/event-bus"
import { type Accessor, onCleanup } from "solid-js"
import { createApiForServer, type ServerApi } from "@/runtime/server/api"
diff --git a/packages/app/src/runtime/server/current.tsx b/packages/app/src/runtime/server/current.tsx
index 7246d40f99c..db01de31bbc 100644
--- a/packages/app/src/runtime/server/current.tsx
+++ b/packages/app/src/runtime/server/current.tsx
@@ -1,4 +1,4 @@
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import { ServerConnection } from "./registry"
import { useGlobal } from "./runtime"
diff --git a/packages/app/src/runtime/server/data.test.ts b/packages/app/src/runtime/server/data.test.ts
index c6ee0224073..e100fa24f8e 100644
--- a/packages/app/src/runtime/server/data.test.ts
+++ b/packages/app/src/runtime/server/data.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo } from "@opencode/client/promise"
import { createSessionMutations } from "./data"
const session = { id: "ses_test" } as SessionInfo
diff --git a/packages/app/src/runtime/server/data.ts b/packages/app/src/runtime/server/data.ts
index 5be4b7ba191..489d9536083 100644
--- a/packages/app/src/runtime/server/data.ts
+++ b/packages/app/src/runtime/server/data.ts
@@ -1,5 +1,5 @@
-import type { Data } from "@opencode-ai/client/solid"
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import type { Data } from "@opencode/client/solid"
+import type { SessionInfo } from "@opencode/client/promise"
import { onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
diff --git a/packages/app/src/runtime/server/errors.test.ts b/packages/app/src/runtime/server/errors.test.ts
index 2634bb156b8..b83fa93f2fd 100644
--- a/packages/app/src/runtime/server/errors.test.ts
+++ b/packages/app/src/runtime/server/errors.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionNotFoundError } from "@opencode-ai/client/promise"
+import type { SessionNotFoundError } from "@opencode/client/promise"
import type { ConfigInvalidError, ProviderModelNotFoundError } from "./errors"
import { formatServerError, isSessionNotFoundError, parseReadableConfigInvalidError } from "./errors"
diff --git a/packages/app/src/runtime/server/global-sync/bootstrap.test.ts b/packages/app/src/runtime/server/global-sync/bootstrap.test.ts
index 27229bbef2f..1748053e604 100644
--- a/packages/app/src/runtime/server/global-sync/bootstrap.test.ts
+++ b/packages/app/src/runtime/server/global-sync/bootstrap.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import { QueryClient } from "@tanstack/solid-query"
-import { OpenCode } from "@opencode-ai/client/promise"
+import { OpenCode } from "@opencode/client/promise"
import { createStore } from "solid-js/store"
import { bootstrapGlobal, loadPathQuery, loadProjectsQuery } from "./bootstrap"
import { ServerScope } from "@/runtime/server/scope"
diff --git a/packages/app/src/runtime/server/global-sync/bootstrap.ts b/packages/app/src/runtime/server/global-sync/bootstrap.ts
index ebeac493737..902d1e69956 100644
--- a/packages/app/src/runtime/server/global-sync/bootstrap.ts
+++ b/packages/app/src/runtime/server/global-sync/bootstrap.ts
@@ -5,10 +5,10 @@ import type {
ProjectCurrentInput,
ProjectCurrentOutput,
ProjectListOutput,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import { showToast } from "@/shell/notifications/toast"
-import { getFilename } from "@opencode-ai/util/path"
-import { retry } from "@opencode-ai/util/retry"
+import { getFilename } from "@opencode/util/path"
+import { retry } from "@opencode/util/retry"
import { reconcile, type SetStoreFunction, type Store } from "solid-js/store"
import type { State } from "./types"
import { cmp, normalizeProjectInfo } from "./utils"
diff --git a/packages/app/src/runtime/server/global-sync/child-store.test.ts b/packages/app/src/runtime/server/global-sync/child-store.test.ts
index 314b3dd00ff..e5ca2c67f20 100644
--- a/packages/app/src/runtime/server/global-sync/child-store.test.ts
+++ b/packages/app/src/runtime/server/global-sync/child-store.test.ts
@@ -4,7 +4,7 @@ import { createStore } from "solid-js/store"
import type { State } from "./types"
import type { QueryOptionsApi } from "../sync"
import { ServerScope } from "@/runtime/server/scope"
-import type { Data } from "@opencode-ai/client/solid"
+import type { Data } from "@opencode/client/solid"
import type { persisted } from "@/runtime/persistence/storage"
let createChildStoreManager: typeof import("./child-store").createChildStoreManager
diff --git a/packages/app/src/runtime/server/global-sync/child-store.ts b/packages/app/src/runtime/server/global-sync/child-store.ts
index a0db4c71d4f..82cbf7f9bec 100644
--- a/packages/app/src/runtime/server/global-sync/child-store.ts
+++ b/packages/app/src/runtime/server/global-sync/child-store.ts
@@ -18,7 +18,7 @@ import { useQuery } from "@tanstack/solid-query"
import { QueryOptionsApi } from "../sync"
import { directoryKey, type DirectoryKey } from "./utils"
import type { ServerScope } from "@/runtime/server/scope"
-import type { Data } from "@opencode-ai/client/solid"
+import type { Data } from "@opencode/client/solid"
import { normalizeAgentList, normalizeProviderList } from "./utils"
import { IconState, ProjectState, VcsState } from "../persistence"
diff --git a/packages/app/src/runtime/server/global-sync/mcp.ts b/packages/app/src/runtime/server/global-sync/mcp.ts
index c245f7ecdb1..c1805ec73b5 100644
--- a/packages/app/src/runtime/server/global-sync/mcp.ts
+++ b/packages/app/src/runtime/server/global-sync/mcp.ts
@@ -1,4 +1,4 @@
-import type { McpServer } from "@opencode-ai/client/promise"
+import type { McpServer } from "@opencode/client/promise"
export async function toggleMcp(input: {
status: McpServer["status"]["status"]
diff --git a/packages/app/src/runtime/server/global-sync/types.ts b/packages/app/src/runtime/server/global-sync/types.ts
index 705155ac46c..9813fcdbdeb 100644
--- a/packages/app/src/runtime/server/global-sync/types.ts
+++ b/packages/app/src/runtime/server/global-sync/types.ts
@@ -1,6 +1,6 @@
import type { Agent, Config, LspStatus, Path, ProviderListResponse, VcsInfo } from "@/runtime/server/types"
-import type { ReferenceInfo } from "@opencode-ai/client/promise"
-import type { CommandInfo, McpResource, McpServer } from "@opencode-ai/client/promise"
+import type { ReferenceInfo } from "@opencode/client/promise"
+import type { CommandInfo, McpResource, McpServer } from "@opencode/client/promise"
import type { Accessor } from "solid-js"
import type { SetStoreFunction, Store } from "solid-js/store"
import { IconState, ProjectState, VcsState } from "../persistence"
diff --git a/packages/app/src/runtime/server/global-sync/utils.test.ts b/packages/app/src/runtime/server/global-sync/utils.test.ts
index 1c03224a2b8..5e39ccb8cc6 100644
--- a/packages/app/src/runtime/server/global-sync/utils.test.ts
+++ b/packages/app/src/runtime/server/global-sync/utils.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { AgentListOutput, ModelListOutput, Project, ProviderListOutput } from "@opencode-ai/client/promise"
+import type { AgentListOutput, ModelListOutput, Project, ProviderListOutput } from "@opencode/client/promise"
import {
directoryKey,
normalizeAgentList,
diff --git a/packages/app/src/runtime/server/global-sync/utils.ts b/packages/app/src/runtime/server/global-sync/utils.ts
index 2f68160fae7..00dbe61f77b 100644
--- a/packages/app/src/runtime/server/global-sync/utils.ts
+++ b/packages/app/src/runtime/server/global-sync/utils.ts
@@ -1,6 +1,6 @@
-import type { AgentListOutput, ModelListOutput, ProviderListOutput } from "@opencode-ai/client/promise"
+import type { AgentListOutput, ModelListOutput, ProviderListOutput } from "@opencode/client/promise"
import type { Agent, Project, Provider, ProviderListResponse } from "@/runtime/server/types"
-import type { Project as CurrentProject } from "@opencode-ai/client/promise"
+import type { Project as CurrentProject } from "@opencode/client/promise"
import { unwrap } from "solid-js/store"
export { pathKey as directoryKey, type PathKey as DirectoryKey } from "@/workspaces/path-key"
diff --git a/packages/app/src/runtime/server/health.ts b/packages/app/src/runtime/server/health.ts
index 51e5e334702..9fe084082ec 100644
--- a/packages/app/src/runtime/server/health.ts
+++ b/packages/app/src/runtime/server/health.ts
@@ -1,7 +1,7 @@
import { usePlatform } from "@/runtime/platform/platform"
import { ServerConnection } from "@/runtime/server/registry"
import { authTokenFromCredentials } from "./api"
-import { ClientError, OpenCode } from "@opencode-ai/client"
+import { ClientError, OpenCode } from "@opencode/client"
import { Accessor, createEffect, onCleanup } from "solid-js"
import { createStore, reconcile } from "solid-js/store"
diff --git a/packages/app/src/runtime/server/image.ts b/packages/app/src/runtime/server/image.ts
index c3046b24b4e..0f3aa0f9da3 100644
--- a/packages/app/src/runtime/server/image.ts
+++ b/packages/app/src/runtime/server/image.ts
@@ -1,5 +1,5 @@
-import { getDirectory, getFilename } from "@opencode-ai/util/path"
-import type { OpenCodeClient } from "@opencode-ai/client/promise"
+import { getDirectory, getFilename } from "@opencode/util/path"
+import type { OpenCodeClient } from "@opencode/client/promise"
const types = new Map([
["png", "image/png"],
diff --git a/packages/app/src/runtime/server/registry.tsx b/packages/app/src/runtime/server/registry.tsx
index eb74728361e..d1e429b787b 100644
--- a/packages/app/src/runtime/server/registry.tsx
+++ b/packages/app/src/runtime/server/registry.tsx
@@ -1,4 +1,4 @@
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import { batch, createMemo } from "solid-js"
import { type SetStoreFunction, type Store } from "solid-js/store"
import { Persist, persisted } from "@/runtime/persistence/storage"
diff --git a/packages/app/src/runtime/server/runtime.tsx b/packages/app/src/runtime/server/runtime.tsx
index 6739e8aff91..50015e1a93a 100644
--- a/packages/app/src/runtime/server/runtime.tsx
+++ b/packages/app/src/runtime/server/runtime.tsx
@@ -1,4 +1,4 @@
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import { Accessor, createEffect, createMemo, createResource, createRoot, getOwner } from "solid-js"
import { createStore } from "solid-js/store"
import { createServerProjects, RECENTLY_CLOSED_DISPLAY_LIMIT, ServerConnection, useServers } from "./registry"
@@ -6,7 +6,7 @@ import { pathKey } from "@/workspaces/path-key"
import { useServerHealth } from "@/runtime/server/health"
import { createServerSdkContext } from "./client"
import { createServerSyncContext } from "./sync"
-import { createData } from "@opencode-ai/client/solid"
+import { createData } from "@opencode/client/solid"
import type { ServerScope } from "@/runtime/server/scope"
import { createPermissionAutoApprover } from "@/session/requests/auto-approve"
import { createServerNotificationState } from "@/shell/notifications/notification"
diff --git a/packages/app/src/runtime/server/sync.tsx b/packages/app/src/runtime/server/sync.tsx
index eebc48dc2ee..679eba5bc97 100644
--- a/packages/app/src/runtime/server/sync.tsx
+++ b/packages/app/src/runtime/server/sync.tsx
@@ -1,6 +1,6 @@
import type { Config, Path, Project, ProviderAuthResponse } from "@/runtime/server/types"
import { showToast } from "@/shell/notifications/toast"
-import { getFilename } from "@opencode-ai/util/path"
+import { getFilename } from "@opencode/util/path"
import { getOwner, onCleanup, untrack } from "solid-js"
import { createStore } from "solid-js/store"
import { useLanguage } from "@/runtime/i18n/language"
@@ -19,7 +19,7 @@ import type { ServerApi } from "@/runtime/server/api"
import { toggleMcp } from "./global-sync/mcp"
import { createConnectionSync, reconnectOrder } from "./server-sync/connection"
import { usePlatform } from "@/runtime/platform/platform"
-import type { Data } from "@opencode-ai/client/solid"
+import type { Data } from "@opencode/client/solid"
import { createWorktreeInventory, withWorktreeInventory } from "@/workspaces/inventory"
import { sameDirectory } from "@/workspaces/paths"
diff --git a/packages/app/src/runtime/server/types.ts b/packages/app/src/runtime/server/types.ts
index b86f311f4ae..fb608c2be50 100644
--- a/packages/app/src/runtime/server/types.ts
+++ b/packages/app/src/runtime/server/types.ts
@@ -1,4 +1,4 @@
-import type { ProjectListOutput, WorktreeDirectory } from "@opencode-ai/client/promise"
+import type { ProjectListOutput, WorktreeDirectory } from "@opencode/client/promise"
export type Project = Omit & {
worktree: string
diff --git a/packages/app/src/servers/connect/dialog.tsx b/packages/app/src/servers/connect/dialog.tsx
index 14354efbbad..68f763404fd 100644
--- a/packages/app/src/servers/connect/dialog.tsx
+++ b/packages/app/src/servers/connect/dialog.tsx
@@ -1,8 +1,8 @@
-import { Button } from "@opencode-ai/ui/button"
-import { Dialog, DialogBody, DialogFooter, DialogHeader, DialogTitle } from "@opencode-ai/ui/dialog"
-import { Divider } from "@opencode-ai/ui/divider"
-import { TextInput } from "@opencode-ai/ui/text-input"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { Button } from "@opencode/ui/button"
+import { Dialog, DialogBody, DialogFooter, DialogHeader, DialogTitle } from "@opencode/ui/dialog"
+import { Divider } from "@opencode/ui/divider"
+import { TextInput } from "@opencode/ui/text-input"
+import { useDialog } from "@opencode/ui/context/dialog"
import { useMutation } from "@tanstack/solid-query"
import { type Component, Show, createEffect, createMemo, createSignal, onCleanup, onMount } from "solid-js"
import { createStore } from "solid-js/store"
diff --git a/packages/app/src/servers/registry/row-menu.tsx b/packages/app/src/servers/registry/row-menu.tsx
index b6544bece5a..d8e7b6755c0 100644
--- a/packages/app/src/servers/registry/row-menu.tsx
+++ b/packages/app/src/servers/registry/row-menu.tsx
@@ -1,6 +1,6 @@
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Menu } from "@opencode-ai/ui/menu"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Menu } from "@opencode/ui/menu"
import { type Component, Show } from "solid-js"
import type { ServerActionsController } from "@/servers/registry/controller"
import { useLanguage } from "@/runtime/i18n/language"
diff --git a/packages/app/src/servers/registry/row.tsx b/packages/app/src/servers/registry/row.tsx
index 280f2192dde..6a4e398bde8 100644
--- a/packages/app/src/servers/registry/row.tsx
+++ b/packages/app/src/servers/registry/row.tsx
@@ -1,5 +1,5 @@
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { Icon } from "@opencode-ai/ui/icon"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { Icon } from "@opencode/ui/icon"
import { createResizeObserver } from "@solid-primitives/resize-observer"
import {
children,
diff --git a/packages/app/src/servers/wsl/context.tsx b/packages/app/src/servers/wsl/context.tsx
index 614084b8a08..4ecf0c0eff8 100644
--- a/packages/app/src/servers/wsl/context.tsx
+++ b/packages/app/src/servers/wsl/context.tsx
@@ -1,4 +1,4 @@
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import { queryOptions, useQuery, useQueryClient } from "@tanstack/solid-query"
import { createEffect, onCleanup } from "solid-js"
import type { WslServersState } from "./types"
diff --git a/packages/app/src/servers/wsl/dialog.tsx b/packages/app/src/servers/wsl/dialog.tsx
index cbda99b165e..95dbc13b984 100644
--- a/packages/app/src/servers/wsl/dialog.tsx
+++ b/packages/app/src/servers/wsl/dialog.tsx
@@ -1,10 +1,10 @@
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { Button } from "@opencode-ai/ui/button"
-import { Dialog, DialogBody, DialogFooter, DialogHeader, DialogTitle } from "@opencode-ai/ui/dialog"
-import { Divider } from "@opencode-ai/ui/divider"
-import { Loader } from "@opencode-ai/ui/loader"
-import { RadioGroup, RadioItem } from "@opencode-ai/ui/radio"
-import { TextInput } from "@opencode-ai/ui/text-input"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { Button } from "@opencode/ui/button"
+import { Dialog, DialogBody, DialogFooter, DialogHeader, DialogTitle } from "@opencode/ui/dialog"
+import { Divider } from "@opencode/ui/divider"
+import { Loader } from "@opencode/ui/loader"
+import { RadioGroup, RadioItem } from "@opencode/ui/radio"
+import { TextInput } from "@opencode/ui/text-input"
import { createMemo, For, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { useLanguage } from "@/runtime/i18n/language"
diff --git a/packages/app/src/servers/wsl/settings.tsx b/packages/app/src/servers/wsl/settings.tsx
index e1ebf7bc3ad..3324b723366 100644
--- a/packages/app/src/servers/wsl/settings.tsx
+++ b/packages/app/src/servers/wsl/settings.tsx
@@ -1,9 +1,9 @@
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { Badge } from "@opencode-ai/ui/badge"
-import { Button } from "@opencode-ai/ui/button"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Menu } from "@opencode-ai/ui/menu"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { Badge } from "@opencode/ui/badge"
+import { Button } from "@opencode/ui/button"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Menu } from "@opencode/ui/menu"
import { useMutation } from "@tanstack/solid-query"
import fuzzysort from "fuzzysort"
import { type Accessor, For, Show, createMemo } from "solid-js"
diff --git a/packages/app/src/session/browser/attachments.ts b/packages/app/src/session/browser/attachments.ts
index feb96e80d14..cf120f7f75f 100644
--- a/packages/app/src/session/browser/attachments.ts
+++ b/packages/app/src/session/browser/attachments.ts
@@ -1,6 +1,6 @@
import { batch, createEffect, createMemo, getOwner, onCleanup, runWithOwner } from "solid-js"
import { createStore, reconcile } from "solid-js/store"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import type { Browser } from "@opencode/plugin-browser/rpc"
import { useLanguage } from "@/runtime/i18n/language"
import type { BrowserPaneCommand, BrowserPaneRegistration, BrowserPaneState } from "@/runtime/platform/browser-pane"
diff --git a/packages/app/src/session/browser/pane.tsx b/packages/app/src/session/browser/pane.tsx
index d854a791de1..187d1feae47 100644
--- a/packages/app/src/session/browser/pane.tsx
+++ b/packages/app/src/session/browser/pane.tsx
@@ -1,7 +1,7 @@
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Loader } from "@opencode-ai/ui/loader"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Loader } from "@opencode/ui/loader"
+import { useDialog } from "@opencode/ui/context/dialog"
import { createEventListener } from "@solid-primitives/event-listener"
import { createResizeObserver } from "@solid-primitives/resize-observer"
import { createEffect, For, on, onCleanup, Show } from "solid-js"
diff --git a/packages/app/src/session/commands/export.test.ts b/packages/app/src/session/commands/export.test.ts
index adc5ae8edf1..4d5b86c865e 100644
--- a/packages/app/src/session/commands/export.test.ts
+++ b/packages/app/src/session/commands/export.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionInfo, SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo, SessionMessageInfo } from "@opencode/client/promise"
import type { ServerApi } from "@/runtime/server/api"
import type { Platform } from "@/runtime/platform/platform"
import { fetchSessionExport, saveSessionExport, sessionExportFilename } from "./export"
diff --git a/packages/app/src/session/commands/export.ts b/packages/app/src/session/commands/export.ts
index 8fb1b10a81e..f6eb0e1b57a 100644
--- a/packages/app/src/session/commands/export.ts
+++ b/packages/app/src/session/commands/export.ts
@@ -1,4 +1,4 @@
-import type { SessionInfo, SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo, SessionMessageInfo } from "@opencode/client/promise"
import type { ServerApi } from "@/runtime/server/api"
import type { Platform } from "@/runtime/platform/platform"
diff --git a/packages/app/src/session/commands/fork-dialog.tsx b/packages/app/src/session/commands/fork-dialog.tsx
index ab4b320c101..a753ac6071c 100644
--- a/packages/app/src/session/commands/fork-dialog.tsx
+++ b/packages/app/src/session/commands/fork-dialog.tsx
@@ -2,13 +2,13 @@ import { Component, createMemo } from "solid-js"
import { useNavigate, useParams } from "@solidjs/router"
import { useData } from "@/runtime/server/current"
import { useComposerState } from "@/composer/persistence"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { Dialog, DialogBody, DialogHeader, DialogTitle } from "@opencode-ai/ui/dialog"
-import { List } from "@opencode-ai/ui/list"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { Dialog, DialogBody, DialogHeader, DialogTitle } from "@opencode/ui/dialog"
+import { List } from "@opencode/ui/list"
import { showToast } from "@/shell/notifications/toast"
import { useLanguage } from "@/runtime/i18n/language"
import { useServerSDK } from "@/runtime/server/client"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { extractPromptComments, extractPromptFromMessage } from "@/composer/prompt"
import { useWorkspaceLocation } from "@/workspaces/location"
import { useServer } from "@/runtime/server/current"
diff --git a/packages/app/src/session/commands/use-session-commands.tsx b/packages/app/src/session/commands/use-session-commands.tsx
index d036aad9d54..2c67c986c73 100644
--- a/packages/app/src/session/commands/use-session-commands.tsx
+++ b/packages/app/src/session/commands/use-session-commands.tsx
@@ -1,6 +1,6 @@
import { useCommand, type CommandOption } from "@/shell/commands/command"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { previewSelectedLines } from "@opencode-ai/session-ui/pierre/selection-bridge"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { previewSelectedLines } from "@opencode/session-ui/pierre/selection-bridge"
import { useFile, selectionFromLines, type FileSelection, type SelectedLineRange } from "@/workspaces/files/model"
import { useLanguage } from "@/runtime/i18n/language"
import { useLayout } from "@/shell/state/layout"
diff --git a/packages/app/src/session/composer/queue-panel.tsx b/packages/app/src/session/composer/queue-panel.tsx
index f6e92bb6bc4..cfc4362ff62 100644
--- a/packages/app/src/session/composer/queue-panel.tsx
+++ b/packages/app/src/session/composer/queue-panel.tsx
@@ -5,10 +5,10 @@ import { AutoScroller, Feedback, PointerActivationConstraints } from "@dnd-kit/d
import { RestrictToVerticalAxis } from "@dnd-kit/abstract/modifiers"
import { RestrictToElement } from "@dnd-kit/dom/modifiers"
import { arrayMove } from "@dnd-kit/helpers"
-import { Button } from "@opencode-ai/ui/button"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { Button } from "@opencode/ui/button"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Tooltip } from "@opencode/ui/tooltip"
import { useLanguage } from "@/runtime/i18n/language"
import type { SessionQueueView } from "./queue"
diff --git a/packages/app/src/session/composer/queue.test.ts b/packages/app/src/session/composer/queue.test.ts
index adbd194fe12..c28d386a532 100644
--- a/packages/app/src/session/composer/queue.test.ts
+++ b/packages/app/src/session/composer/queue.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionInboxInfo } from "@opencode-ai/client/promise"
+import type { SessionInboxInfo } from "@opencode/client/promise"
import { queuedPromptRows } from "./queue"
const queued = [
diff --git a/packages/app/src/session/composer/queue.ts b/packages/app/src/session/composer/queue.ts
index ed81cbac8ed..07a01036d88 100644
--- a/packages/app/src/session/composer/queue.ts
+++ b/packages/app/src/session/composer/queue.ts
@@ -1,8 +1,8 @@
import { createEffect, createMemo, onCleanup, type Accessor } from "solid-js"
import { createStore } from "solid-js/store"
import { useMutation } from "@tanstack/solid-query"
-import type { SessionInboxInfo } from "@opencode-ai/client/promise"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
+import type { SessionInboxInfo } from "@opencode/client/promise"
+import { SessionMessage } from "@opencode/schema/session-message"
import type { ComposerDelivery } from "@/composer/adapter"
import type { ComposerStateTarget } from "@/composer/submission-state"
import type { ImageAttachmentPart, Prompt } from "@/composer/state"
diff --git a/packages/app/src/session/composer/region.tsx b/packages/app/src/session/composer/region.tsx
index eb1b4591615..fee03f7dcf6 100644
--- a/packages/app/src/session/composer/region.tsx
+++ b/packages/app/src/session/composer/region.tsx
@@ -1,7 +1,7 @@
-import type { SessionUserActions } from "@opencode-ai/session-ui/message"
-import { getFilename } from "@opencode-ai/util/path"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { isScrollKeyTarget, scrollKey, scrollKeyOwner } from "@opencode-ai/ui/scroll-view"
+import type { SessionUserActions } from "@opencode/session-ui/message"
+import { getFilename } from "@opencode/util/path"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { isScrollKeyTarget, scrollKey, scrollKeyOwner } from "@opencode/ui/scroll-view"
import { makeEventListener } from "@solid-primitives/event-listener"
import { useNavigate } from "@solidjs/router"
import { createEffect, createMemo, on, onMount, type Accessor } from "solid-js"
diff --git a/packages/app/src/session/files/file-tabs.tsx b/packages/app/src/session/files/file-tabs.tsx
index beb3f2ba484..6ecd3a261ce 100644
--- a/packages/app/src/session/files/file-tabs.tsx
+++ b/packages/app/src/session/files/file-tabs.tsx
@@ -2,15 +2,15 @@ import { createEffect, createMemo, createSignal, Match, on, onCleanup, Switch }
import { createStore } from "solid-js/store"
import { Dynamic } from "solid-js/web"
import { makeEventListener } from "@solid-primitives/event-listener"
-import type { FileSearchHandle } from "@opencode-ai/session-ui/file"
-import { useFileComponent } from "@opencode-ai/ui/context/file"
-import { cloneSelectedLineRange, previewSelectedLines } from "@opencode-ai/session-ui/pierre/selection-bridge"
-import { createLineCommentControllerV2 } from "@opencode-ai/session-ui/v2/line-comment-annotations-v2"
-import { sampledChecksum } from "@opencode-ai/util/encode"
-import { LineCommentOverflowIcon } from "@opencode-ai/ui/line-comment"
-import { Menu } from "@opencode-ai/ui/menu"
-import { Tabs } from "@opencode-ai/ui/tabs"
-import { ScrollView } from "@opencode-ai/ui/scroll-view"
+import type { FileSearchHandle } from "@opencode/session-ui/file"
+import { useFileComponent } from "@opencode/ui/context/file"
+import { cloneSelectedLineRange, previewSelectedLines } from "@opencode/session-ui/pierre/selection-bridge"
+import { createLineCommentControllerV2 } from "@opencode/session-ui/v2/line-comment-annotations-v2"
+import { sampledChecksum } from "@opencode/util/encode"
+import { LineCommentOverflowIcon } from "@opencode/ui/line-comment"
+import { Menu } from "@opencode/ui/menu"
+import { Tabs } from "@opencode/ui/tabs"
+import { ScrollView } from "@opencode/ui/scroll-view"
import { showToast } from "@/shell/notifications/toast"
import { selectionFromLines, useFile, type FileSelection, type SelectedLineRange } from "@/workspaces/files/model"
import { useComments } from "@/composer/comments"
diff --git a/packages/app/src/session/files/file-tree-v2.tsx b/packages/app/src/session/files/file-tree-v2.tsx
index 958b01d0a7b..dde7c27659e 100644
--- a/packages/app/src/session/files/file-tree-v2.tsx
+++ b/packages/app/src/session/files/file-tree-v2.tsx
@@ -1,6 +1,6 @@
import { useFile } from "@/workspaces/files/model"
-import { FileIcon } from "@opencode-ai/ui/file-icon"
-import "@opencode-ai/ui/file-tree.css"
+import { FileIcon } from "@opencode/ui/file-icon"
+import "@opencode/ui/file-tree.css"
import {
createEffect,
createMemo,
@@ -13,7 +13,7 @@ import {
} from "solid-js"
import { Dynamic } from "solid-js/web"
import type { FileNode } from "@/runtime/server/types"
-import { Icon } from "@opencode-ai/ui/icon"
+import { Icon } from "@opencode/ui/icon"
import { pathToFileUrl, withFileDragImage, type Kind } from "@/session/files/file-tree"
import { createVirtualizer, defaultRangeExtractor } from "@tanstack/solid-virtual"
import {
diff --git a/packages/app/src/session/files/file-tree.test.ts b/packages/app/src/session/files/file-tree.test.ts
index f0b692e111f..8edd007113c 100644
--- a/packages/app/src/session/files/file-tree.test.ts
+++ b/packages/app/src/session/files/file-tree.test.ts
@@ -22,15 +22,15 @@ beforeAll(async () => {
},
}),
}))
- mock.module("@opencode-ai/ui/collapsible", () => ({
+ mock.module("@opencode/ui/collapsible", () => ({
Collapsible: {
Trigger: (props: { children?: unknown }) => props.children,
Content: (props: { children?: unknown }) => props.children,
},
}))
- mock.module("@opencode-ai/ui/file-icon", () => ({ FileIcon: () => null }))
- mock.module("@opencode-ai/ui/icon", () => ({ Icon: () => null }))
- mock.module("@opencode-ai/ui/tooltip", () => ({ Tooltip: (props: { children?: unknown }) => props.children }))
+ mock.module("@opencode/ui/file-icon", () => ({ FileIcon: () => null }))
+ mock.module("@opencode/ui/icon", () => ({ Icon: () => null }))
+ mock.module("@opencode/ui/tooltip", () => ({ Tooltip: (props: { children?: unknown }) => props.children }))
const mod = await import("./file-tree")
shouldListRoot = mod.shouldListRoot
shouldListExpanded = mod.shouldListExpanded
diff --git a/packages/app/src/session/files/file-tree.tsx b/packages/app/src/session/files/file-tree.tsx
index d9ed02d690d..e8f85ee1d7e 100644
--- a/packages/app/src/session/files/file-tree.tsx
+++ b/packages/app/src/session/files/file-tree.tsx
@@ -1,8 +1,8 @@
import { useFile } from "@/workspaces/files/model"
import { encodeFilePath } from "@/workspaces/files/path"
-import { Collapsible } from "@opencode-ai/ui/collapsible"
-import { FileIcon } from "@opencode-ai/ui/file-icon"
-import { Icon } from "@opencode-ai/ui/icon"
+import { Collapsible } from "@opencode/ui/collapsible"
+import { FileIcon } from "@opencode/ui/file-icon"
+import { Icon } from "@opencode/ui/icon"
import {
createEffect,
createMemo,
diff --git a/packages/app/src/session/files/list.tsx b/packages/app/src/session/files/list.tsx
index aa73cd5ea1b..3d070116015 100644
--- a/packages/app/src/session/files/list.tsx
+++ b/packages/app/src/session/files/list.tsx
@@ -1,6 +1,6 @@
-import { FileIcon } from "@opencode-ai/ui/file-icon"
-import "@opencode-ai/ui/file-tree.css"
-import { getDirectory, getFilename } from "@opencode-ai/util/path"
+import { FileIcon } from "@opencode/ui/file-icon"
+import "@opencode/ui/file-tree.css"
+import { getDirectory, getFilename } from "@opencode/util/path"
import { createEffect, createMemo, createSignal, For, Show } from "solid-js"
import { kindChange, kindLabel, syncFileTreeV2Width, type Kind } from "@/session/files/file-tree-v2"
import { normalizePath } from "@/session/review/review-diff-kinds"
diff --git a/packages/app/src/session/files/open-in-app-button.tsx b/packages/app/src/session/files/open-in-app-button.tsx
index d340e18a0e2..b4501ea724b 100644
--- a/packages/app/src/session/files/open-in-app-button.tsx
+++ b/packages/app/src/session/files/open-in-app-button.tsx
@@ -1,10 +1,10 @@
import { createSignal, For, Show, type ParentProps } from "solid-js"
-import { AppIcon } from "@opencode-ai/ui/app-icon"
-import { Icon } from "@opencode-ai/ui/icon"
-import { Spinner } from "@opencode-ai/ui/spinner"
-import { Menu } from "@opencode-ai/ui/menu"
-import { SplitButton, SplitButtonAction, SplitButtonMenuTrigger } from "@opencode-ai/ui/split-button"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { AppIcon } from "@opencode/ui/app-icon"
+import { Icon } from "@opencode/ui/icon"
+import { Spinner } from "@opencode/ui/spinner"
+import { Menu } from "@opencode/ui/menu"
+import { SplitButton, SplitButtonAction, SplitButtonMenuTrigger } from "@opencode/ui/split-button"
+import { Tooltip } from "@opencode/ui/tooltip"
import { useLanguage } from "@/runtime/i18n/language"
import { type OpenApp, useOpenInApp } from "@/session/files/open-in-app"
diff --git a/packages/app/src/session/files/session-context-tab.tsx b/packages/app/src/session/files/session-context-tab.tsx
index d90a58da5c7..7e6686cfdde 100644
--- a/packages/app/src/session/files/session-context-tab.tsx
+++ b/packages/app/src/session/files/session-context-tab.tsx
@@ -1,16 +1,16 @@
import { createMemo, createEffect, on, onCleanup, For, Show } from "solid-js"
import type { JSX } from "solid-js"
import { useData } from "@/runtime/server/current"
-import { checksum } from "@opencode-ai/util/encode"
+import { checksum } from "@opencode/util/encode"
import { same } from "@/runtime/persistence/equality"
-import { Icon } from "@opencode-ai/ui/icon"
-import { Button } from "@opencode-ai/ui/button"
-import { Accordion } from "@opencode-ai/ui/accordion"
-import { StickyAccordionHeader } from "@opencode-ai/ui/sticky-accordion-header"
-import { File } from "@opencode-ai/session-ui/file"
-import { Markdown } from "@opencode-ai/session-ui/markdown"
-import { ScrollView } from "@opencode-ai/ui/scroll-view"
-import type { SessionMessageInfo } from "@opencode-ai/client/promise"
+import { Icon } from "@opencode/ui/icon"
+import { Button } from "@opencode/ui/button"
+import { Accordion } from "@opencode/ui/accordion"
+import { StickyAccordionHeader } from "@opencode/ui/sticky-accordion-header"
+import { File } from "@opencode/session-ui/file"
+import { Markdown } from "@opencode/session-ui/markdown"
+import { ScrollView } from "@opencode/ui/scroll-view"
+import type { SessionMessageInfo } from "@opencode/client/promise"
import { showToast } from "@/shell/notifications/toast"
import { fetchSessionExport, saveSessionExport, sessionExportFilename } from "@/session/commands/export"
import { useLanguage } from "@/runtime/i18n/language"
diff --git a/packages/app/src/session/files/session-file-browser-tab.tsx b/packages/app/src/session/files/session-file-browser-tab.tsx
index e271f0832d3..ca16ebaad8c 100644
--- a/packages/app/src/session/files/session-file-browser-tab.tsx
+++ b/packages/app/src/session/files/session-file-browser-tab.tsx
@@ -1,9 +1,9 @@
import { createMemo, createUniqueId, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { createQuery } from "@tanstack/solid-query"
-import { Icon } from "@opencode-ai/ui/icon"
-import { SessionFilePanelV2, SessionFilePanelV2Empty } from "@opencode-ai/session-ui/v2/session-file-panel-v2"
-import { SessionReviewV2Sidebar } from "@opencode-ai/session-ui/v2/session-review-v2"
+import { Icon } from "@opencode/ui/icon"
+import { SessionFilePanelV2, SessionFilePanelV2Empty } from "@opencode/session-ui/v2/session-file-panel-v2"
+import { SessionReviewV2Sidebar } from "@opencode/session-ui/v2/session-review-v2"
import FileTreeV2, { type Kind } from "@/session/files/file-tree-v2"
import { useFile } from "@/workspaces/files/model"
import { useLanguage } from "@/runtime/i18n/language"
diff --git a/packages/app/src/session/files/session-mobile-files.tsx b/packages/app/src/session/files/session-mobile-files.tsx
index d5d1c6e919c..2a60f5b0b99 100644
--- a/packages/app/src/session/files/session-mobile-files.tsx
+++ b/packages/app/src/session/files/session-mobile-files.tsx
@@ -1,6 +1,6 @@
-import { Button } from "@opencode-ai/ui/button"
-import { Tabs } from "@opencode-ai/ui/tabs"
-import { getFilename } from "@opencode-ai/util/path"
+import { Button } from "@opencode/ui/button"
+import { Tabs } from "@opencode/ui/tabs"
+import { getFilename } from "@opencode/util/path"
import { createMemo, For } from "solid-js"
import { createStore } from "solid-js/store"
import { useLanguage } from "@/runtime/i18n/language"
diff --git a/packages/app/src/session/files/session-side-panel.tsx b/packages/app/src/session/files/session-side-panel.tsx
index 26c22772a2e..0c4fd28906e 100644
--- a/packages/app/src/session/files/session-side-panel.tsx
+++ b/packages/app/src/session/files/session-side-panel.tsx
@@ -5,15 +5,15 @@ import { isSortable } from "@dnd-kit/solid/sortable"
import { Accessibility, AutoScroller, Feedback, PointerActivationConstraints } from "@dnd-kit/dom"
import { RestrictToHorizontalAxis } from "@dnd-kit/abstract/modifiers"
import { RestrictToElement } from "@dnd-kit/dom/modifiers"
-import { Tabs } from "@opencode-ai/ui/tabs"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Icon } from "@opencode-ai/ui/icon"
-import { ResizeHandle } from "@opencode-ai/ui/resize-handle"
-import { Mark } from "@opencode-ai/ui/logo"
-import { Keybind } from "@opencode-ai/ui/keybind"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { Menu } from "@opencode-ai/ui/menu"
-import type { FileDiffInfo } from "@opencode-ai/client/promise"
+import { Tabs } from "@opencode/ui/tabs"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Icon } from "@opencode/ui/icon"
+import { ResizeHandle } from "@opencode/ui/resize-handle"
+import { Mark } from "@opencode/ui/logo"
+import { Keybind } from "@opencode/ui/keybind"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { Menu } from "@opencode/ui/menu"
+import type { FileDiffInfo } from "@opencode/client/promise"
import FileTree from "@/session/files/file-tree"
import { normalizeFileTreeV2Path } from "@/session/files/file-tree-v2-model"
diff --git a/packages/app/src/session/files/session-sortable-tab.tsx b/packages/app/src/session/files/session-sortable-tab.tsx
index dabd1a5358b..ad522bdeb94 100644
--- a/packages/app/src/session/files/session-sortable-tab.tsx
+++ b/packages/app/src/session/files/session-sortable-tab.tsx
@@ -1,7 +1,7 @@
import { Show } from "solid-js"
import type { JSX } from "solid-js"
-import { FileIcon } from "@opencode-ai/ui/file-icon"
-import { getFilename } from "@opencode-ai/util/path"
+import { FileIcon } from "@opencode/ui/file-icon"
+import { getFilename } from "@opencode/util/path"
export function FileVisual(props: { path: string; active?: boolean; temporary?: boolean }): JSX.Element {
return (
diff --git a/packages/app/src/session/files/tab.tsx b/packages/app/src/session/files/tab.tsx
index 14f246f944e..7f644ed0c20 100644
--- a/packages/app/src/session/files/tab.tsx
+++ b/packages/app/src/session/files/tab.tsx
@@ -1,9 +1,9 @@
import { children, createMemo, Show } from "solid-js"
import type { JSX } from "solid-js"
import { useSortable } from "@dnd-kit/solid/sortable"
-import { Keybind } from "@opencode-ai/ui/keybind"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { Tabs } from "@opencode-ai/ui/tabs"
+import { Keybind } from "@opencode/ui/keybind"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { Tabs } from "@opencode/ui/tabs"
import { useFile } from "@/workspaces/files/model"
import { useLanguage } from "@/runtime/i18n/language"
import { useCommand } from "@/shell/commands/command"
diff --git a/packages/app/src/session/handoff.test.ts b/packages/app/src/session/handoff.test.ts
index 205ad5d192a..1a8f9acb9d0 100644
--- a/packages/app/src/session/handoff.test.ts
+++ b/packages/app/src/session/handoff.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import type { SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageUser } from "@opencode/client/promise"
import { clearSessionMessageHandoff, getSessionMessageHandoff, setSessionMessageHandoff } from "./handoff"
test("stores and clears a message handoff", () => {
diff --git a/packages/app/src/session/handoff.ts b/packages/app/src/session/handoff.ts
index 6e00814c7ef..90e1ac5c082 100644
--- a/packages/app/src/session/handoff.ts
+++ b/packages/app/src/session/handoff.ts
@@ -1,5 +1,5 @@
import type { SelectedLineRange } from "@/workspaces/files/model"
-import type { SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageUser } from "@opencode/client/promise"
import { createStore } from "solid-js/store"
type HandoffSession = {
diff --git a/packages/app/src/session/header/session-header-actions.tsx b/packages/app/src/session/header/session-header-actions.tsx
index 9572f1a3fb3..d8853dc960d 100644
--- a/packages/app/src/session/header/session-header-actions.tsx
+++ b/packages/app/src/session/header/session-header-actions.tsx
@@ -1,8 +1,8 @@
import { Show } from "solid-js"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Keybind } from "@opencode-ai/ui/keybind"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Keybind } from "@opencode/ui/keybind"
+import { Tooltip } from "@opencode/ui/tooltip"
import { useCommand } from "@/shell/commands/command"
import { reviewTooltipKeybind } from "@/shell/commands/tooltip-keybind"
import { useLanguage } from "@/runtime/i18n/language"
diff --git a/packages/app/src/session/header/session-header.tsx b/packages/app/src/session/header/session-header.tsx
index 9acc4845a20..46b7e416742 100644
--- a/packages/app/src/session/header/session-header.tsx
+++ b/packages/app/src/session/header/session-header.tsx
@@ -5,7 +5,7 @@ import { useSettings } from "@/settings/model"
import { useSessionLayout } from "@/session/session-layout"
import { StatusPopover } from "@/shell/status/status-popover"
import { TitlebarRight } from "@/shell/titlebar/right-slot"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { Tooltip } from "@opencode/ui/tooltip"
export function SessionHeader() {
const language = useLanguage()
diff --git a/packages/app/src/session/incompatible-server-panel.tsx b/packages/app/src/session/incompatible-server-panel.tsx
index 744470cd45d..7dbfc7fd5b8 100644
--- a/packages/app/src/session/incompatible-server-panel.tsx
+++ b/packages/app/src/session/incompatible-server-panel.tsx
@@ -1,5 +1,5 @@
-import { Button } from "@opencode-ai/ui/button"
-import { Icon } from "@opencode-ai/ui/icon"
+import { Button } from "@opencode/ui/button"
+import { Icon } from "@opencode/ui/icon"
import { Show } from "solid-js"
import { useLanguage } from "@/runtime/i18n/language"
import { useServer } from "@/runtime/server/current"
diff --git a/packages/app/src/session/list.test.ts b/packages/app/src/session/list.test.ts
index e10e7817ebc..66736dbf2c2 100644
--- a/packages/app/src/session/list.test.ts
+++ b/packages/app/src/session/list.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionApi, SessionInfo, SessionListInput } from "@opencode-ai/client/promise"
+import type { SessionApi, SessionInfo, SessionListInput } from "@opencode/client/promise"
import { listAllSessions } from "./list"
describe("listAllSessions", () => {
diff --git a/packages/app/src/session/list.ts b/packages/app/src/session/list.ts
index a299354f503..02058f0714b 100644
--- a/packages/app/src/session/list.ts
+++ b/packages/app/src/session/list.ts
@@ -1,4 +1,4 @@
-import type { SessionApi, SessionInfo, SessionListInput } from "@opencode-ai/client/promise"
+import type { SessionApi, SessionInfo, SessionListInput } from "@opencode/client/promise"
export async function listAllSessions(api: Pick, input: Omit) {
const load = async (cursor?: string): Promise => {
diff --git a/packages/app/src/session/model.test.ts b/packages/app/src/session/model.test.ts
index c0a5124c34d..0d97e0902d0 100644
--- a/packages/app/src/session/model.test.ts
+++ b/packages/app/src/session/model.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionMessageAssistant, SessionMessageInfo, SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistant, SessionMessageInfo, SessionMessageUser } from "@opencode/client/promise"
import { createRoot, createSignal } from "solid-js"
import {
normalizeSessionTab,
diff --git a/packages/app/src/session/model.ts b/packages/app/src/session/model.ts
index 4711554ce9e..c9ff52b92c1 100644
--- a/packages/app/src/session/model.ts
+++ b/packages/app/src/session/model.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageInfo, SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageInfo, SessionMessageUser } from "@opencode/client/promise"
import { createMediaQuery } from "@solid-primitives/media"
import { createMemo } from "solid-js"
import { useFile } from "@/workspaces/files/model"
diff --git a/packages/app/src/session/requests/auto-approve.ts b/packages/app/src/session/requests/auto-approve.ts
index 1b81bc9ca0a..7efa1b2820d 100644
--- a/packages/app/src/session/requests/auto-approve.ts
+++ b/packages/app/src/session/requests/auto-approve.ts
@@ -1,6 +1,6 @@
import { createEffect, onCleanup } from "solid-js"
-import type { PermissionRequest } from "@opencode-ai/client/promise"
-import type { Data } from "@opencode-ai/client/solid"
+import type { PermissionRequest } from "@opencode/client/promise"
+import type { Data } from "@opencode/client/solid"
import type { ServerSDK } from "@/runtime/server/client"
import { useSettings } from "@/settings/model"
diff --git a/packages/app/src/session/requests/background.ts b/packages/app/src/session/requests/background.ts
index 9b523d7cbd1..2bb969cba18 100644
--- a/packages/app/src/session/requests/background.ts
+++ b/packages/app/src/session/requests/background.ts
@@ -1,4 +1,4 @@
-import type { SessionInfo, SessionMessageAssistant, SessionMessageInfo, ShellInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo, SessionMessageAssistant, SessionMessageInfo, ShellInfo } from "@opencode/client/promise"
import { createMemo } from "solid-js"
type Task =
diff --git a/packages/app/src/session/requests/model.ts b/packages/app/src/session/requests/model.ts
index 91f9e52792f..98db702113d 100644
--- a/packages/app/src/session/requests/model.ts
+++ b/packages/app/src/session/requests/model.ts
@@ -1,6 +1,6 @@
import { createEffect, createMemo } from "solid-js"
import { createStore } from "solid-js/store"
-import type { FormInfo, PermissionRequest } from "@opencode-ai/client/promise"
+import type { FormInfo, PermissionRequest } from "@opencode/client/promise"
import { useParams } from "@solidjs/router"
import { showToast } from "@/shell/notifications/toast"
import { useServerSDK } from "@/runtime/server/client"
diff --git a/packages/app/src/session/requests/session-permission-dock.tsx b/packages/app/src/session/requests/session-permission-dock.tsx
index 3622a487f35..4657d61c9d7 100644
--- a/packages/app/src/session/requests/session-permission-dock.tsx
+++ b/packages/app/src/session/requests/session-permission-dock.tsx
@@ -1,8 +1,8 @@
import { For, Show } from "solid-js"
-import type { PermissionRequest } from "@opencode-ai/client/promise"
-import { Button } from "@opencode-ai/ui/button"
-import { DockPrompt } from "@opencode-ai/session-ui/dock-prompt"
-import { Icon } from "@opencode-ai/ui/icon"
+import type { PermissionRequest } from "@opencode/client/promise"
+import { Button } from "@opencode/ui/button"
+import { DockPrompt } from "@opencode/session-ui/dock-prompt"
+import { Icon } from "@opencode/ui/icon"
import { useLanguage } from "@/runtime/i18n/language"
export function SessionPermissionDock(props: {
diff --git a/packages/app/src/session/requests/session-question-dock.tsx b/packages/app/src/session/requests/session-question-dock.tsx
index 5e1d0ce1019..d298766ad01 100644
--- a/packages/app/src/session/requests/session-question-dock.tsx
+++ b/packages/app/src/session/requests/session-question-dock.tsx
@@ -1,13 +1,13 @@
import { For, Show, createEffect, createMemo, onCleanup, onMount, type Component } from "solid-js"
import { createStore } from "solid-js/store"
import { useMutation } from "@tanstack/solid-query"
-import { Button } from "@opencode-ai/ui/button"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { DockPrompt } from "@opencode-ai/session-ui/dock-prompt"
-import { Icon } from "@opencode-ai/ui/icon"
-import { useSpring } from "@opencode-ai/ui/motion-spring"
+import { Button } from "@opencode/ui/button"
+import { IconButton } from "@opencode/ui/icon-button"
+import { DockPrompt } from "@opencode/session-ui/dock-prompt"
+import { Icon } from "@opencode/ui/icon"
+import { useSpring } from "@opencode/ui/motion-spring"
import { showToast } from "@/shell/notifications/toast"
-import type { FormAnswer, FormInfo, FormMultiselectField, FormStringField } from "@opencode-ai/client/promise"
+import type { FormAnswer, FormInfo, FormMultiselectField, FormStringField } from "@opencode/client/promise"
import { useLanguage } from "@/runtime/i18n/language"
import { makeEventListener } from "@solid-primitives/event-listener"
import { createResizeObserver } from "@solid-primitives/resize-observer"
diff --git a/packages/app/src/session/requests/session-request-tree.test.ts b/packages/app/src/session/requests/session-request-tree.test.ts
index ce461b6db2e..8836170e323 100644
--- a/packages/app/src/session/requests/session-request-tree.test.ts
+++ b/packages/app/src/session/requests/session-request-tree.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { FormInfo, PermissionRequest, SessionInfo } from "@opencode-ai/client/promise"
+import type { FormInfo, PermissionRequest, SessionInfo } from "@opencode/client/promise"
import { sessionPermissionRequest, sessionFormRequest, sessionTreeIDs } from "@/session/requests/session-request-tree"
const session = (input: { id: string; parentID?: string }) =>
diff --git a/packages/app/src/session/requests/session-request-tree.ts b/packages/app/src/session/requests/session-request-tree.ts
index c3d933fc4cf..93f5da25576 100644
--- a/packages/app/src/session/requests/session-request-tree.ts
+++ b/packages/app/src/session/requests/session-request-tree.ts
@@ -1,4 +1,4 @@
-import type { FormInfo, PermissionRequest, SessionInfo } from "@opencode-ai/client/promise"
+import type { FormInfo, PermissionRequest, SessionInfo } from "@opencode/client/promise"
function sessionTreeRequest(
session: SessionInfo[],
diff --git a/packages/app/src/session/requests/session-websearch-dock.tsx b/packages/app/src/session/requests/session-websearch-dock.tsx
index c3f564dbdd0..5cec0f82abf 100644
--- a/packages/app/src/session/requests/session-websearch-dock.tsx
+++ b/packages/app/src/session/requests/session-websearch-dock.tsx
@@ -1,7 +1,7 @@
import { createMemo, Show } from "solid-js"
-import { Button } from "@opencode-ai/ui/button"
-import { DockShell, DockTray } from "@opencode-ai/ui/dock-surface"
-import { Select } from "@opencode-ai/ui/select"
+import { Button } from "@opencode/ui/button"
+import { DockShell, DockTray } from "@opencode/ui/dock-surface"
+import { Select } from "@opencode/ui/select"
import { useLanguage } from "@/runtime/i18n/language"
import { SettingsRow } from "@/settings/row"
import type { WebSearchRequestModel } from "./websearch"
diff --git a/packages/app/src/session/requests/websearch.test.ts b/packages/app/src/session/requests/websearch.test.ts
index bc515f752ec..4385289919b 100644
--- a/packages/app/src/session/requests/websearch.test.ts
+++ b/packages/app/src/session/requests/websearch.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { FormAnswer, FormCreated, FormReplyInput, OpenCodeEvent } from "@opencode-ai/client/promise"
+import type { FormAnswer, FormCreated, FormReplyInput, OpenCodeEvent } from "@opencode/client/promise"
import { replyWebSearch } from "./websearch"
const consent: FormCreated["data"]["form"] = {
diff --git a/packages/app/src/session/requests/websearch.ts b/packages/app/src/session/requests/websearch.ts
index bdc4efd2c70..78b437487f0 100644
--- a/packages/app/src/session/requests/websearch.ts
+++ b/packages/app/src/session/requests/websearch.ts
@@ -1,4 +1,4 @@
-import type { FormInfo, FormOption, FormReplyInput, FormStringField } from "@opencode-ai/client/promise"
+import type { FormInfo, FormOption, FormReplyInput, FormStringField } from "@opencode/client/promise"
import { createEffect, createMemo, createResource, on, onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
import type { OpenCodeEventStream } from "@/runtime/server/client"
diff --git a/packages/app/src/session/revert.ts b/packages/app/src/session/revert.ts
index 080e4cc2e77..bd75fa10237 100644
--- a/packages/app/src/session/revert.ts
+++ b/packages/app/src/session/revert.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageUser } from "@opencode/client/promise"
import { useComposerState } from "@/composer/persistence"
import { useData } from "@/runtime/server/current"
import { useServerSDK } from "@/runtime/server/client"
diff --git a/packages/app/src/session/review/model.ts b/packages/app/src/session/review/model.ts
index d4d9cd68ddb..4c8f3f2601a 100644
--- a/packages/app/src/session/review/model.ts
+++ b/packages/app/src/session/review/model.ts
@@ -1,7 +1,7 @@
-import type { FileDiffInfo } from "@opencode-ai/client/promise"
-import type { SessionReviewLineComment } from "@opencode-ai/session-ui/session-review"
-import { previewSelectedLines } from "@opencode-ai/session-ui/pierre/selection-bridge"
-import { checksum } from "@opencode-ai/util/encode"
+import type { FileDiffInfo } from "@opencode/client/promise"
+import type { SessionReviewLineComment } from "@opencode/session-ui/session-review"
+import { previewSelectedLines } from "@opencode/session-ui/pierre/selection-bridge"
+import { checksum } from "@opencode/util/encode"
import { createQuery, skipToken, useQueryClient } from "@tanstack/solid-query"
import { debounce } from "@solid-primitives/scheduled"
import { createEffect, createMemo, on, onCleanup, type Accessor } from "solid-js"
diff --git a/packages/app/src/session/review/panel-state.ts b/packages/app/src/session/review/panel-state.ts
index 50ca9f3c5ae..e2339453eaa 100644
--- a/packages/app/src/session/review/panel-state.ts
+++ b/packages/app/src/session/review/panel-state.ts
@@ -3,7 +3,7 @@ import {
SESSION_REVIEW_V2_SIDEBAR_WIDTH_MAX,
SESSION_REVIEW_V2_SIDEBAR_WIDTH_MIN,
type SessionReviewExpandMode,
-} from "@opencode-ai/session-ui/v2/session-review-v2"
+} from "@opencode/session-ui/v2/session-review-v2"
import { createSignal } from "solid-js"
import { Schema } from "effect"
import type { Platform } from "@/runtime/platform/platform"
diff --git a/packages/app/src/session/review/panel.tsx b/packages/app/src/session/review/panel.tsx
index 8e47e78d66a..750e1d805a9 100644
--- a/packages/app/src/session/review/panel.tsx
+++ b/packages/app/src/session/review/panel.tsx
@@ -1,13 +1,13 @@
import { createMemo, createResource, createSignal, Show, type JSX } from "solid-js"
-import type { FileDiffInfo } from "@opencode-ai/client/promise"
+import type { FileDiffInfo } from "@opencode/client/promise"
import {
SESSION_REVIEW_V2_SIDEBAR_WIDTH_MAX,
SESSION_REVIEW_V2_SIDEBAR_WIDTH_MIN,
SessionReviewV2,
SessionReviewV2Sidebar,
-} from "@opencode-ai/session-ui/v2/session-review-v2"
-import { SessionReviewFilePreviewV2 } from "@opencode-ai/session-ui/v2/session-review-file-preview-v2"
-import { DiffChanges } from "@opencode-ai/ui/diff-changes"
+} from "@opencode/session-ui/v2/session-review-v2"
+import { SessionReviewFilePreviewV2 } from "@opencode/session-ui/v2/session-review-file-preview-v2"
+import { DiffChanges } from "@opencode/ui/diff-changes"
import type {
SessionReviewComment,
SessionReviewCommentActions,
@@ -16,7 +16,7 @@ import type {
SessionReviewDiffStyle,
SessionReviewFocus,
SessionReviewLineComment,
-} from "@opencode-ai/session-ui/session-review"
+} from "@opencode/session-ui/session-review"
import FileTreeV2 from "@/session/files/file-tree-v2"
import { sortFileTreeV2Paths } from "@/session/files/file-tree-v2-model"
import { useLanguage } from "@/runtime/i18n/language"
diff --git a/packages/app/src/session/review/review-diff-kinds.ts b/packages/app/src/session/review/review-diff-kinds.ts
index 93317af60c2..d8a9bfa170c 100644
--- a/packages/app/src/session/review/review-diff-kinds.ts
+++ b/packages/app/src/session/review/review-diff-kinds.ts
@@ -1,4 +1,4 @@
-import type { FileDiffInfo } from "@opencode-ai/client/promise"
+import type { FileDiffInfo } from "@opencode/client/promise"
import type { Kind } from "@/session/files/file-tree-v2"
import { normalizeFileTreeV2Path } from "@/session/files/file-tree-v2-model"
diff --git a/packages/app/src/session/review/review-tab.tsx b/packages/app/src/session/review/review-tab.tsx
index afabb3e48ba..25b855a2722 100644
--- a/packages/app/src/session/review/review-tab.tsx
+++ b/packages/app/src/session/review/review-tab.tsx
@@ -1,12 +1,12 @@
import { createEffect, onCleanup, type JSX } from "solid-js"
import { makeEventListener } from "@solid-primitives/event-listener"
-import type { FileDiffInfo } from "@opencode-ai/client/promise"
-import { SessionReview } from "@opencode-ai/session-ui/session-review"
+import type { FileDiffInfo } from "@opencode/client/promise"
+import { SessionReview } from "@opencode/session-ui/session-review"
import type {
SessionReviewCommentActions,
SessionReviewCommentDelete,
SessionReviewCommentUpdate,
-} from "@opencode-ai/session-ui/session-review"
+} from "@opencode/session-ui/session-review"
import type { SelectedLineRange } from "@/workspaces/files/model"
import { useWorkspaceLocation } from "@/workspaces/location"
import { useServerSDK } from "@/runtime/server/client"
diff --git a/packages/app/src/session/review/view.tsx b/packages/app/src/session/review/view.tsx
index 1f3e78cc2b1..6497ac3ae2a 100644
--- a/packages/app/src/session/review/view.tsx
+++ b/packages/app/src/session/review/view.tsx
@@ -1,10 +1,10 @@
-import { SessionReviewEmptyChangesV2 } from "@opencode-ai/session-ui/v2/session-review-empty-changes-v2"
-import { SessionReviewV2SidebarToggle } from "@opencode-ai/session-ui/v2/session-review-v2"
-import { Select } from "@opencode-ai/ui/select"
-import { Tabs } from "@opencode-ai/ui/tabs"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Menu } from "@opencode-ai/ui/menu"
+import { SessionReviewEmptyChangesV2 } from "@opencode/session-ui/v2/session-review-empty-changes-v2"
+import { SessionReviewV2SidebarToggle } from "@opencode/session-ui/v2/session-review-v2"
+import { Select } from "@opencode/ui/select"
+import { Tabs } from "@opencode/ui/tabs"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Menu } from "@opencode/ui/menu"
import { For, Match, Show, Suspense, Switch, lazy, createEffect, onCleanup, type JSX } from "solid-js"
import { createStore } from "solid-js/store"
import { useLanguage } from "@/runtime/i18n/language"
diff --git a/packages/app/src/session/route-error.tsx b/packages/app/src/session/route-error.tsx
index 526a112ce6d..830441151d9 100644
--- a/packages/app/src/session/route-error.tsx
+++ b/packages/app/src/session/route-error.tsx
@@ -1,4 +1,4 @@
-import { Button } from "@opencode-ai/ui/button"
+import { Button } from "@opencode/ui/button"
import { createMemo, Show } from "solid-js"
import { ErrorPage } from "@/shell/errors/error"
import { useLanguage } from "@/runtime/i18n/language"
diff --git a/packages/app/src/session/route.tsx b/packages/app/src/session/route.tsx
index 64b4b4b05a8..26c1d4c13e9 100644
--- a/packages/app/src/session/route.tsx
+++ b/packages/app/src/session/route.tsx
@@ -1,8 +1,8 @@
import { ErrorBoundary, createEffect, createMemo, Show, type ParentProps } from "solid-js"
import { useParams } from "@solidjs/router"
-import { DataProvider } from "@opencode-ai/session-ui/context"
-import { SessionUserMessage } from "@opencode-ai/session-ui/message"
-import { TextShimmer } from "@opencode-ai/ui/text-shimmer"
+import { DataProvider } from "@opencode/session-ui/context"
+import { SessionUserMessage } from "@opencode/session-ui/message"
+import { TextShimmer } from "@opencode/ui/text-shimmer"
import { CommentsProvider } from "@/composer/comments"
import { readPromptPresentation } from "@/composer/comment-note"
import { FileProvider } from "@/workspaces/files/model"
diff --git a/packages/app/src/session/screen.tsx b/packages/app/src/session/screen.tsx
index 54432cc8274..575f1d39a62 100644
--- a/packages/app/src/session/screen.tsx
+++ b/packages/app/src/session/screen.tsx
@@ -11,7 +11,7 @@ import {
on,
} from "solid-js"
import { createStore } from "solid-js/store"
-import { ResizeHandle } from "@opencode-ai/ui/resize-handle"
+import { ResizeHandle } from "@opencode/ui/resize-handle"
import { MessageTimeline, SessionSummaryPanel } from "@/session/timeline/message-timeline"
import { useServer } from "@/runtime/server/current"
import { projectForSession } from "@/shell/layout/helpers"
diff --git a/packages/app/src/session/session-domain.ts b/packages/app/src/session/session-domain.ts
index 0f68094948f..0d36a8a5b2a 100644
--- a/packages/app/src/session/session-domain.ts
+++ b/packages/app/src/session/session-domain.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageInfo, SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageInfo, SessionMessageUser } from "@opencode/client/promise"
export function normalizeSessionTab(tab: string, normalizeFileTab: (tab: string) => string) {
if (!tab.startsWith("file://")) return tab
diff --git a/packages/app/src/session/session-identity-header.tsx b/packages/app/src/session/session-identity-header.tsx
index 9a5202e9537..879199dc716 100644
--- a/packages/app/src/session/session-identity-header.tsx
+++ b/packages/app/src/session/session-identity-header.tsx
@@ -1,10 +1,10 @@
-import type { SessionInfo } from "@opencode-ai/client/promise"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Menu } from "@opencode-ai/ui/menu"
-import { ProjectAvatar } from "@opencode-ai/ui/project-avatar"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import type { SessionInfo } from "@opencode/client/promise"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Menu } from "@opencode/ui/menu"
+import { ProjectAvatar } from "@opencode/ui/project-avatar"
+import { Tooltip } from "@opencode/ui/tooltip"
import { createResizeObserver } from "@solid-primitives/resize-observer"
import { useNavigate } from "@solidjs/router"
import { createMemo, Show, type ParentProps } from "solid-js"
diff --git a/packages/app/src/session/session-layout.ts b/packages/app/src/session/session-layout.ts
index 120938ac56b..1442b2fcdb9 100644
--- a/packages/app/src/session/session-layout.ts
+++ b/packages/app/src/session/session-layout.ts
@@ -4,7 +4,7 @@ import { useLayout } from "@/shell/state/layout"
import { SessionRouteKey, SessionStateKey } from "@/runtime/server/scope"
import { useWorkspaceLocation } from "@/workspaces/location"
import { useServerSDK } from "@/runtime/server/client"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { ServerConnection } from "@/runtime/server/registry"
import { findSessionTab, tabKey, useTabs } from "@/shell/tabs/tabs"
diff --git a/packages/app/src/session/session-screen.stories.tsx b/packages/app/src/session/session-screen.stories.tsx
index 8119f28023c..6d9d7daf104 100644
--- a/packages/app/src/session/session-screen.stories.tsx
+++ b/packages/app/src/session/session-screen.stories.tsx
@@ -13,7 +13,7 @@ import {
STORY_TIME,
subagentDocument,
terminalPassedDocument,
-} from "@opencode-ai/session-ui/storybook"
+} from "@opencode/session-ui/storybook"
import { SessionPreview } from "./story-model"
const description = "opencode · modular-session-ui"
diff --git a/packages/app/src/session/story-model.tsx b/packages/app/src/session/story-model.tsx
index 111fdaa2687..1d2e968d10e 100644
--- a/packages/app/src/session/story-model.tsx
+++ b/packages/app/src/session/story-model.tsx
@@ -7,15 +7,15 @@ import {
type SessionComposerRegionViewController,
} from "@/session/composer/session-composer-region"
import { SessionPanelFrame, SessionRouteFrame } from "@/session/session-frame"
-import type { FormInfo, PermissionRequest, SessionStatus } from "@opencode-ai/client/promise"
-import type { SessionDocument } from "@opencode-ai/session-ui/document"
-import { CurrentSessionProviders, STORY_MODEL } from "@opencode-ai/session-ui/storybook"
-import { SessionTimeline } from "@opencode-ai/session-ui/timeline"
-import { SessionReviewEmptyChangesV2 } from "@opencode-ai/session-ui/v2/session-review-empty-changes-v2"
+import type { FormInfo, PermissionRequest, SessionStatus } from "@opencode/client/promise"
+import type { SessionDocument } from "@opencode/session-ui/document"
+import { CurrentSessionProviders, STORY_MODEL } from "@opencode/session-ui/storybook"
+import { SessionTimeline } from "@opencode/session-ui/timeline"
+import { SessionReviewEmptyChangesV2 } from "@opencode/session-ui/v2/session-review-empty-changes-v2"
import { createComposerEditor } from "@/composer/editor/interaction"
import type { ComposerPersistedState } from "@/composer/types"
-import { Button } from "@opencode-ai/ui/button"
-import { Icon } from "@opencode-ai/ui/icon"
+import { Button } from "@opencode/ui/button"
+import { Icon } from "@opencode/ui/icon"
import { QueryClient, QueryClientProvider } from "@tanstack/solid-query"
import { Show } from "solid-js"
import { createStore } from "solid-js/store"
diff --git a/packages/app/src/session/terminal/context.test.ts b/packages/app/src/session/terminal/context.test.ts
index 45ec02945bc..8c93e83ce95 100644
--- a/packages/app/src/session/terminal/context.test.ts
+++ b/packages/app/src/session/terminal/context.test.ts
@@ -1,6 +1,6 @@
import { beforeAll, describe, expect, mock, test } from "bun:test"
import { ServerScope } from "@/runtime/server/scope"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { Persist } from "@/runtime/persistence/storage"
import { Persistence } from "@/runtime/persistence/schema"
import type { Platform } from "@/runtime/platform/platform"
diff --git a/packages/app/src/session/terminal/context.tsx b/packages/app/src/session/terminal/context.tsx
index 1114563cb4e..3bd7aa97867 100644
--- a/packages/app/src/session/terminal/context.tsx
+++ b/packages/app/src/session/terminal/context.tsx
@@ -1,10 +1,10 @@
import { createStore, produce } from "solid-js/store"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import { batch, createEffect, createMemo, createRoot, on, onCleanup } from "solid-js"
import { useWorkspaceLocation, type LocationContext } from "@/workspaces/location"
import type { Platform } from "@/runtime/platform/platform"
import { useServerSDK } from "@/runtime/server/client"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { defaultTitle, titleNumber } from "./title"
import { Persist, persisted, removePersisted } from "@/runtime/persistence/storage"
import { ScopedKey, ServerScope } from "@/runtime/server/scope"
diff --git a/packages/app/src/session/terminal/panel.tsx b/packages/app/src/session/terminal/panel.tsx
index 29b205eb8cd..a265f3ee5e8 100644
--- a/packages/app/src/session/terminal/panel.tsx
+++ b/packages/app/src/session/terminal/panel.tsx
@@ -7,11 +7,11 @@ import { isSortable } from "@dnd-kit/solid/sortable"
import { Accessibility, AutoScroller, Feedback, PointerActivationConstraints } from "@dnd-kit/dom"
import { RestrictToHorizontalAxis } from "@dnd-kit/abstract/modifiers"
import { RestrictToElement } from "@dnd-kit/dom/modifiers"
-import { Tabs } from "@opencode-ai/ui/tabs"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Icon } from "@opencode-ai/ui/icon"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { Keybind } from "@opencode-ai/ui/keybind"
+import { Tabs } from "@opencode/ui/tabs"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Icon } from "@opencode/ui/icon"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { Keybind } from "@opencode/ui/keybind"
import { SortableTerminalTab } from "@/session/terminal/tab"
import { Terminal } from "@/session/terminal/terminal"
diff --git a/packages/app/src/session/terminal/surface.tsx b/packages/app/src/session/terminal/surface.tsx
index 80c0f36d2b7..56dfb28c72d 100644
--- a/packages/app/src/session/terminal/surface.tsx
+++ b/packages/app/src/session/terminal/surface.tsx
@@ -1,4 +1,4 @@
-import { ResizeHandle } from "@opencode-ai/ui/resize-handle"
+import { ResizeHandle } from "@opencode/ui/resize-handle"
import type { ParentProps } from "solid-js"
export function TerminalSurface(
diff --git a/packages/app/src/session/terminal/tab.tsx b/packages/app/src/session/terminal/tab.tsx
index 82f3ff55a82..06919bb67a7 100644
--- a/packages/app/src/session/terminal/tab.tsx
+++ b/packages/app/src/session/terminal/tab.tsx
@@ -2,8 +2,8 @@ import type { JSX } from "solid-js"
import { Show, createEffect, onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
import { useSortable } from "@dnd-kit/solid/sortable"
-import { Tabs } from "@opencode-ai/ui/tabs"
-import { Menu } from "@opencode-ai/ui/menu"
+import { Tabs } from "@opencode/ui/tabs"
+import { Menu } from "@opencode/ui/menu"
import { isDefaultTitle } from "@/session/terminal/title"
import { useTerminal, type LocalPTY } from "@/session/terminal/context"
import { useLanguage } from "@/runtime/i18n/language"
diff --git a/packages/app/src/session/terminal/terminal.tsx b/packages/app/src/session/terminal/terminal.tsx
index ffd90f85622..1e6c95c9126 100644
--- a/packages/app/src/session/terminal/terminal.tsx
+++ b/packages/app/src/session/terminal/terminal.tsx
@@ -1,8 +1,8 @@
-import { withAlpha } from "@opencode-ai/ui/theme/color"
-import { useTheme } from "@opencode-ai/ui/theme/context"
-import { resolveThemeVariant } from "@opencode-ai/ui/theme/resolve"
-import { resolveThemeVariantV2 } from "@opencode-ai/ui/theme/v2/resolve"
-import type { HexColor, ResolvedV2Theme } from "@opencode-ai/ui/theme/types"
+import { withAlpha } from "@opencode/ui/theme/color"
+import { useTheme } from "@opencode/ui/theme/context"
+import { resolveThemeVariant } from "@opencode/ui/theme/resolve"
+import { resolveThemeVariantV2 } from "@opencode/ui/theme/v2/resolve"
+import type { HexColor, ResolvedV2Theme } from "@opencode/ui/theme/types"
import { showToast } from "@/shell/notifications/toast"
import type { FitAddon, Ghostty, Terminal as Term } from "ghostty-web"
import { type ComponentProps, createEffect, createMemo, onCleanup, onMount, splitProps } from "solid-js"
diff --git a/packages/app/src/session/timeline/controller-projection.test.ts b/packages/app/src/session/timeline/controller-projection.test.ts
index 27f514e74ed..8d85e8dd544 100644
--- a/packages/app/src/session/timeline/controller-projection.test.ts
+++ b/packages/app/src/session/timeline/controller-projection.test.ts
@@ -1,9 +1,9 @@
import { describe, expect, test } from "bun:test"
-import type { SessionInboxInfo, SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { SessionInboxInfo, SessionMessageInfo } from "@opencode/client/promise"
import { createRoot } from "solid-js"
import { applyTimelineMessageHandoff, visibleTimelineMessages } from "./controller-projection"
import { createTimelineProjection } from "./projection"
-import { timelinePresets } from "@opencode-ai/session-ui/timeline/detail"
+import { timelinePresets } from "@opencode/session-ui/timeline/detail"
const messages = [
{ id: "msg_1", type: "user", text: "first", time: { created: 1 } },
diff --git a/packages/app/src/session/timeline/controller-projection.ts b/packages/app/src/session/timeline/controller-projection.ts
index 29d79aae12e..4a7527fa3dd 100644
--- a/packages/app/src/session/timeline/controller-projection.ts
+++ b/packages/app/src/session/timeline/controller-projection.ts
@@ -1,4 +1,4 @@
-import type { SessionInboxInfo, SessionMessageInfo, SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionInboxInfo, SessionMessageInfo, SessionMessageUser } from "@opencode/client/promise"
export function applyTimelineMessageHandoff(messages: SessionMessageInfo[], handoff?: SessionMessageUser) {
if (!handoff) return messages
diff --git a/packages/app/src/session/timeline/controller.tsx b/packages/app/src/session/timeline/controller.tsx
index b75fdf5d79a..723fbcea8ea 100644
--- a/packages/app/src/session/timeline/controller.tsx
+++ b/packages/app/src/session/timeline/controller.tsx
@@ -1,11 +1,11 @@
-import type { SessionMessageInfo } from "@opencode-ai/client/promise"
-import { DialogFooter, DialogHeader, DialogTitleGroup, Dialog } from "@opencode-ai/ui/dialog"
-import { Button } from "@opencode-ai/ui/button"
+import type { SessionMessageInfo } from "@opencode/client/promise"
+import { DialogFooter, DialogHeader, DialogTitleGroup, Dialog } from "@opencode/ui/dialog"
+import { Button } from "@opencode/ui/button"
import { useNavigate } from "@solidjs/router"
import { createEffect, createMemo, on } from "solid-js"
import { createStore } from "solid-js/store"
import { notifySessionTabsRemoved } from "@/shell/titlebar/session-events"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { useDialog } from "@opencode/ui/context/dialog"
import { useLanguage } from "@/runtime/i18n/language"
import { useSettings } from "@/settings/model"
import { useWorkspaceLocation } from "@/workspaces/location"
@@ -22,7 +22,7 @@ import { applyTimelineMessageHandoff, timelineChildTitle, visibleTimelineMessage
import { createTimelineProjection } from "./projection"
import { useServer } from "@/runtime/server/current"
import { getSessionMessageHandoff } from "@/session/handoff"
-import type { ReasoningMode } from "@opencode-ai/session-ui/timeline/projection"
+import type { ReasoningMode } from "@opencode/session-ui/timeline/projection"
const emptyMessages: SessionMessageInfo[] = []
const taskDescription = (message: SessionMessageInfo, sessionID: string): string | undefined => {
diff --git a/packages/app/src/session/timeline/interaction.ts b/packages/app/src/session/timeline/interaction.ts
index 1c30100e259..30d618f79e6 100644
--- a/packages/app/src/session/timeline/interaction.ts
+++ b/packages/app/src/session/timeline/interaction.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageUser } from "@opencode/client/promise"
import { createResizeObserver } from "@solid-primitives/resize-observer"
import { useLocation } from "@solidjs/router"
import { createEffect, on, onCleanup } from "solid-js"
diff --git a/packages/app/src/session/timeline/message-timeline.tsx b/packages/app/src/session/timeline/message-timeline.tsx
index 9cd68dddfa9..823373de1ce 100644
--- a/packages/app/src/session/timeline/message-timeline.tsx
+++ b/packages/app/src/session/timeline/message-timeline.tsx
@@ -1,26 +1,26 @@
import { createEffect, createMemo, createSignal, For, on, onCleanup, Show, type Accessor, type JSX } from "solid-js"
import { createStore } from "solid-js/store"
import { createAnimatedPresence } from "@/runtime/animated-presence"
-import type { SessionUserActions } from "@opencode-ai/session-ui/actions"
-import { Button } from "@opencode-ai/ui/button"
-import { DiffChanges } from "@opencode-ai/ui/diff-changes"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { InlineInput } from "@opencode-ai/ui/inline-input"
-import { Keybind } from "@opencode-ai/ui/keybind"
-import { Menu } from "@opencode-ai/ui/menu"
-import { TextShimmer } from "@opencode-ai/ui/text-shimmer"
-import { ProjectAvatar } from "@opencode-ai/ui/project-avatar"
+import type { SessionUserActions } from "@opencode/session-ui/actions"
+import { Button } from "@opencode/ui/button"
+import { DiffChanges } from "@opencode/ui/diff-changes"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { InlineInput } from "@opencode/ui/inline-input"
+import { Keybind } from "@opencode/ui/keybind"
+import { Menu } from "@opencode/ui/menu"
+import { TextShimmer } from "@opencode/ui/text-shimmer"
+import { ProjectAvatar } from "@opencode/ui/project-avatar"
import type { Project } from "@/runtime/server/types"
-import { getFilename } from "@opencode-ai/util/path"
+import { getFilename } from "@opencode/util/path"
import { Popover } from "@kobalte/core/popover"
import { SessionContextUsage } from "@/session/timeline/session-context-usage"
import { useLanguage } from "@/runtime/i18n/language"
import { useData, useServer } from "@/runtime/server/current"
import { useWorkspaceLocation } from "@/workspaces/location"
-import { Timeline, TimelineRow } from "@opencode-ai/session-ui/timeline/projection"
-import { createSessionTimelineRowRenderer } from "@opencode-ai/session-ui/timeline/row"
-import { getReadyMarkdown, preloadMarkdown } from "@opencode-ai/session-ui/markdown-cache"
+import { Timeline, TimelineRow } from "@opencode/session-ui/timeline/projection"
+import { createSessionTimelineRowRenderer } from "@opencode/session-ui/timeline/row"
+import { getReadyMarkdown, preloadMarkdown } from "@opencode/session-ui/markdown-cache"
import { createTimelineController, type TimelineController, type TimelineSessionSource } from "./controller"
import { createTimelineVirtualizer } from "./virtualizer"
import { containsDirectory, isWorkspaceDirectory, workspaceDirectories } from "@/workspaces/paths"
diff --git a/packages/app/src/session/timeline/model.test.ts b/packages/app/src/session/timeline/model.test.ts
index 064fdd6cb8f..5c187facc9b 100644
--- a/packages/app/src/session/timeline/model.test.ts
+++ b/packages/app/src/session/timeline/model.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionMessageAssistant, SessionMessageInfo, SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistant, SessionMessageInfo, SessionMessageUser } from "@opencode/client/promise"
import {
enrichLeadingTurn,
leadingTurnNeedsParent,
diff --git a/packages/app/src/session/timeline/model.ts b/packages/app/src/session/timeline/model.ts
index f0fd35ace8d..6629dabb01c 100644
--- a/packages/app/src/session/timeline/model.ts
+++ b/packages/app/src/session/timeline/model.ts
@@ -1,5 +1,5 @@
import { createMemo, createResource, type Accessor } from "solid-js"
-import type { SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { SessionMessageInfo } from "@opencode/client/promise"
import { useData } from "@/runtime/server/current"
import type { SessionModel } from "../model"
diff --git a/packages/app/src/session/timeline/projection.ts b/packages/app/src/session/timeline/projection.ts
index 28307ae9ae5..bd23dcffea0 100644
--- a/packages/app/src/session/timeline/projection.ts
+++ b/packages/app/src/session/timeline/projection.ts
@@ -1,6 +1,6 @@
-import { createReactiveTimelineProjection } from "@opencode-ai/session-ui/timeline/projection"
+import { createReactiveTimelineProjection } from "@opencode/session-ui/timeline/projection"
-export { reuseTimelineRows } from "@opencode-ai/session-ui/timeline/projection"
+export { reuseTimelineRows } from "@opencode/session-ui/timeline/projection"
export function createTimelineProjection(input: Parameters[0]) {
return createReactiveTimelineProjection(input)
diff --git a/packages/app/src/session/timeline/search-bar.tsx b/packages/app/src/session/timeline/search-bar.tsx
index 382f2c50a38..aaa38ecf7df 100644
--- a/packages/app/src/session/timeline/search-bar.tsx
+++ b/packages/app/src/session/timeline/search-bar.tsx
@@ -1,5 +1,5 @@
-import { Icon } from "@opencode-ai/ui/icon"
-import "@opencode-ai/ui/text-input.css"
+import { Icon } from "@opencode/ui/icon"
+import "@opencode/ui/text-input.css"
import { Show } from "solid-js"
import type { TimelineSearchController } from "./search-controller"
import "./search-bar.css"
diff --git a/packages/app/src/session/timeline/search-controller.ts b/packages/app/src/session/timeline/search-controller.ts
index 6a8b633fc83..dbbb434d0f7 100644
--- a/packages/app/src/session/timeline/search-controller.ts
+++ b/packages/app/src/session/timeline/search-controller.ts
@@ -1,7 +1,7 @@
import { useCommand } from "@/shell/commands/command"
import { useLanguage } from "@/runtime/i18n/language"
import { useData } from "@/runtime/server/current"
-import { Timeline } from "@opencode-ai/session-ui/timeline/projection"
+import { Timeline } from "@opencode/session-ui/timeline/projection"
import { createEffect, createMemo, createSignal, on, onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
diff --git a/packages/app/src/session/timeline/session-context-usage.tsx b/packages/app/src/session/timeline/session-context-usage.tsx
index c8690f8f432..eaa8f5a5cd4 100644
--- a/packages/app/src/session/timeline/session-context-usage.tsx
+++ b/packages/app/src/session/timeline/session-context-usage.tsx
@@ -1,7 +1,7 @@
import { Show, createMemo, type ComponentProps, type JSX } from "solid-js"
-import { ProgressCircle } from "@opencode-ai/ui/progress-circle"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { ProgressCircle } from "@opencode/ui/progress-circle"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Tooltip } from "@opencode/ui/tooltip"
import { createMediaQuery } from "@solid-primitives/media"
import { useFile } from "@/workspaces/files/model"
diff --git a/packages/app/src/session/timeline/session-workspace-menu.tsx b/packages/app/src/session/timeline/session-workspace-menu.tsx
index f9ad1d42b59..3454c9641cb 100644
--- a/packages/app/src/session/timeline/session-workspace-menu.tsx
+++ b/packages/app/src/session/timeline/session-workspace-menu.tsx
@@ -1,6 +1,6 @@
-import { Menu } from "@opencode-ai/ui/menu"
-import { Icon } from "@opencode-ai/ui/icon"
-import { getFilename } from "@opencode-ai/util/path"
+import { Menu } from "@opencode/ui/menu"
+import { Icon } from "@opencode/ui/icon"
+import { getFilename } from "@opencode/util/path"
import { createStore } from "solid-js/store"
import { createSignal, For, Show, type ComponentProps, type JSX } from "solid-js"
import type { Project } from "@/runtime/server/types"
diff --git a/packages/app/src/session/timeline/virtualizer.tsx b/packages/app/src/session/timeline/virtualizer.tsx
index 9d5838f8cef..e00af2ba389 100644
--- a/packages/app/src/session/timeline/virtualizer.tsx
+++ b/packages/app/src/session/timeline/virtualizer.tsx
@@ -5,8 +5,8 @@ import {
type Range,
type VirtualItem,
} from "@tanstack/solid-virtual"
-import { isScrollKeyTarget, scrollKey, scrollKeyOwner, ScrollView } from "@opencode-ai/ui/scroll-view"
-import { TimelineRow } from "@opencode-ai/session-ui/timeline/projection"
+import { isScrollKeyTarget, scrollKey, scrollKeyOwner, ScrollView } from "@opencode/ui/scroll-view"
+import { TimelineRow } from "@opencode/session-ui/timeline/projection"
import { useLanguage } from "@/runtime/i18n/language"
import {
batch,
diff --git a/packages/app/src/session/title.ts b/packages/app/src/session/title.ts
index ccab3aa2e7f..6e52c3a3b22 100644
--- a/packages/app/src/session/title.ts
+++ b/packages/app/src/session/title.ts
@@ -1,5 +1,5 @@
-import type { SessionInfo } from "@opencode-ai/client/promise"
-import { displayLabel } from "@opencode-ai/util/session-title-fallback"
+import type { SessionInfo } from "@opencode/client/promise"
+import { displayLabel } from "@opencode/util/session-title-fallback"
const pattern = /^(New session|Child session) - \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/
diff --git a/packages/app/src/session/usage-exceeded-dialogs.tsx b/packages/app/src/session/usage-exceeded-dialogs.tsx
index 7b29a5c16f3..09e05d97de1 100644
--- a/packages/app/src/session/usage-exceeded-dialogs.tsx
+++ b/packages/app/src/session/usage-exceeded-dialogs.tsx
@@ -1,11 +1,11 @@
import { useWorkspaceLocation } from "@/workspaces/location"
import { Persist, persisted } from "@/runtime/persistence/storage"
-import type { SessionStatus } from "@opencode-ai/client/promise"
+import type { SessionStatus } from "@opencode/client/promise"
import { onCleanup } from "solid-js"
import { Schema } from "effect"
import { Persistence } from "@/runtime/persistence/schema"
import { useSessionLayout } from "./session-layout"
-import { useDialog, useI18n } from "@opencode-ai/ui/context"
+import { useDialog, useI18n } from "@opencode/ui/context"
import { DialogUsageExceeded } from "@/providers/connect/usage-exceeded"
const GO_UPSELL_FREE_TIER_LAST_SEEN_AT = "go_upsell_last_seen_at"
diff --git a/packages/app/src/session/use-session-hash-scroll.ts b/packages/app/src/session/use-session-hash-scroll.ts
index 67271c3208c..2d3a8a8853e 100644
--- a/packages/app/src/session/use-session-hash-scroll.ts
+++ b/packages/app/src/session/use-session-hash-scroll.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageUser } from "@opencode/client/promise"
import { useLocation, useNavigate } from "@solidjs/router"
import { createEffect, createMemo, onCleanup, onMount } from "solid-js"
import { messageIdFromHash } from "./message-id-from-hash"
diff --git a/packages/app/src/settings/appearance/appearance.tsx b/packages/app/src/settings/appearance/appearance.tsx
index 586f728d473..1d526788498 100644
--- a/packages/app/src/settings/appearance/appearance.tsx
+++ b/packages/app/src/settings/appearance/appearance.tsx
@@ -1,6 +1,6 @@
import { Component } from "solid-js"
-import { Select } from "@opencode-ai/ui/select"
-import { TextInput } from "@opencode-ai/ui/text-input"
+import { Select } from "@opencode/ui/select"
+import { TextInput } from "@opencode/ui/text-input"
import { useLanguage } from "@/runtime/i18n/language"
import { ExternalLink } from "@/runtime/platform/external-link"
import { SettingsList } from "@/settings/list"
diff --git a/packages/app/src/settings/experimental/experimental.tsx b/packages/app/src/settings/experimental/experimental.tsx
index a83e2d8c645..fecb37fadbd 100644
--- a/packages/app/src/settings/experimental/experimental.tsx
+++ b/packages/app/src/settings/experimental/experimental.tsx
@@ -1,6 +1,6 @@
import { Component, Show } from "solid-js"
-import { Select } from "@opencode-ai/ui/select"
-import { Switch } from "@opencode-ai/ui/switch"
+import { Select } from "@opencode/ui/select"
+import { Switch } from "@opencode/ui/switch"
import { useLanguage } from "@/runtime/i18n/language"
import { usePlatform } from "@/runtime/platform/platform"
import { SettingsList } from "@/settings/list"
diff --git a/packages/app/src/settings/general/controllers.ts b/packages/app/src/settings/general/controllers.ts
index c67e3ce8d47..8d878c43223 100644
--- a/packages/app/src/settings/general/controllers.ts
+++ b/packages/app/src/settings/general/controllers.ts
@@ -1,6 +1,6 @@
import { createMemo, createResource, onMount, type Accessor } from "solid-js"
-import type { ColorScheme } from "@opencode-ai/ui/theme/context"
-import { useTheme } from "@opencode-ai/ui/theme/context"
+import type { ColorScheme } from "@opencode/ui/theme/context"
+import { useTheme } from "@opencode/ui/theme/context"
import {
monoDefault,
monoFontFamily,
diff --git a/packages/app/src/settings/general/general.tsx b/packages/app/src/settings/general/general.tsx
index f34397545b2..fbf0d9d01e0 100644
--- a/packages/app/src/settings/general/general.tsx
+++ b/packages/app/src/settings/general/general.tsx
@@ -1,9 +1,9 @@
import { Component, Show, createMemo, createResource } from "solid-js"
import { createMediaQuery } from "@solid-primitives/media"
-import { Button } from "@opencode-ai/ui/button"
-import { Select } from "@opencode-ai/ui/select"
-import { Switch } from "@opencode-ai/ui/switch"
-import { TextInput } from "@opencode-ai/ui/text-input"
+import { Button } from "@opencode/ui/button"
+import { Select } from "@opencode/ui/select"
+import { Switch } from "@opencode/ui/switch"
+import { TextInput } from "@opencode/ui/text-input"
import { TimelineDetailControl } from "@/settings/timeline-detail"
import { useLanguage } from "@/runtime/i18n/language"
import { usePlatform } from "@/runtime/platform/platform"
diff --git a/packages/app/src/settings/keybinds/keybinds.tsx b/packages/app/src/settings/keybinds/keybinds.tsx
index 3b65578c346..a6d03d5f144 100644
--- a/packages/app/src/settings/keybinds/keybinds.tsx
+++ b/packages/app/src/settings/keybinds/keybinds.tsx
@@ -1,9 +1,9 @@
import { For, Show, createMemo, lazy, onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
import { makeEventListener } from "@solid-primitives/event-listener"
-import { Button } from "@opencode-ai/ui/button"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { TextInput } from "@opencode-ai/ui/text-input"
+import { Button } from "@opencode/ui/button"
+import { IconButton } from "@opencode/ui/icon-button"
+import { TextInput } from "@opencode/ui/text-input"
import { showToast } from "@/shell/notifications/toast"
import fuzzysort from "fuzzysort"
import { DEFAULT_PALETTE_KEYBIND, formatKeybind, parseKeybind, useCommand } from "@/shell/commands/command"
@@ -11,7 +11,7 @@ import { useLanguage } from "@/runtime/i18n/language"
import { useSettings } from "@/settings/model"
import { SettingsList } from "@/settings/list"
-const Icon = lazy(() => import("@opencode-ai/ui/icon").then((module) => ({ default: module.Icon })))
+const Icon = lazy(() => import("@opencode/ui/icon").then((module) => ({ default: module.Icon })))
const IS_MAC = typeof navigator === "object" && /(Mac|iPod|iPhone|iPad)/.test(navigator.platform)
const PALETTE_ID = "command.palette"
diff --git a/packages/app/src/settings/model.test.ts b/packages/app/src/settings/model.test.ts
index 554947ca9fe..e5fa21e7a12 100644
--- a/packages/app/src/settings/model.test.ts
+++ b/packages/app/src/settings/model.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import { Schema } from "effect"
-import { timelinePresets } from "@opencode-ai/session-ui/timeline/detail"
+import { timelinePresets } from "@opencode/session-ui/timeline/detail"
import { Persistence } from "@/runtime/persistence/schema"
import {
settingsSchema,
diff --git a/packages/app/src/settings/model.tsx b/packages/app/src/settings/model.tsx
index 937a33226f9..5e627edfa7e 100644
--- a/packages/app/src/settings/model.tsx
+++ b/packages/app/src/settings/model.tsx
@@ -1,8 +1,8 @@
import { reconcile, unwrap } from "solid-js/store"
import { createEffect, createMemo } from "solid-js"
import { Effect, Option, Schema, SchemaGetter } from "effect"
-import { createSimpleContext } from "@opencode-ai/ui/context"
-import { timelinePresets, type TimelineCategory, type TimelineDetail } from "@opencode-ai/session-ui/timeline/detail"
+import { createSimpleContext } from "@opencode/ui/context"
+import { timelinePresets, type TimelineCategory, type TimelineDetail } from "@opencode/session-ui/timeline/detail"
import { persisted } from "@/runtime/persistence/storage"
import { Persistence } from "@/runtime/persistence/schema"
import { ScopedKey, type ServerScope } from "@/runtime/server/scope"
diff --git a/packages/app/src/settings/models/models.tsx b/packages/app/src/settings/models/models.tsx
index d6930df6d5a..d51ccf1b262 100644
--- a/packages/app/src/settings/models/models.tsx
+++ b/packages/app/src/settings/models/models.tsx
@@ -1,9 +1,9 @@
-import { useFilteredList } from "@opencode-ai/ui/hooks"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
-import { Switch } from "@opencode-ai/ui/switch"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { TextInput } from "@opencode-ai/ui/text-input"
+import { useFilteredList } from "@opencode/ui/hooks"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
+import { Switch } from "@opencode/ui/switch"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { TextInput } from "@opencode/ui/text-input"
import { type Component, For, Show } from "solid-js"
import { Schema } from "effect"
import { Persistence } from "@/runtime/persistence/schema"
diff --git a/packages/app/src/settings/notifications/notifications.tsx b/packages/app/src/settings/notifications/notifications.tsx
index 522f40cd166..9b891b16c18 100644
--- a/packages/app/src/settings/notifications/notifications.tsx
+++ b/packages/app/src/settings/notifications/notifications.tsx
@@ -1,6 +1,6 @@
import { Component } from "solid-js"
-import { Select } from "@opencode-ai/ui/select"
-import { Switch } from "@opencode-ai/ui/switch"
+import { Select } from "@opencode/ui/select"
+import { Switch } from "@opencode/ui/switch"
import { useLanguage } from "@/runtime/i18n/language"
import { useSettings } from "@/settings/model"
import { SettingsList } from "@/settings/list"
diff --git a/packages/app/src/settings/providers/extensions.tsx b/packages/app/src/settings/providers/extensions.tsx
index 747adeebf2b..b34bebd9445 100644
--- a/packages/app/src/settings/providers/extensions.tsx
+++ b/packages/app/src/settings/providers/extensions.tsx
@@ -1,7 +1,7 @@
import { Component, For, createEffect, createMemo, createResource } from "solid-js"
-import { Icon } from "@opencode-ai/ui/icon"
-import { Switch } from "@opencode-ai/ui/switch"
-import { Tabs } from "@opencode-ai/ui/tabs"
+import { Icon } from "@opencode/ui/icon"
+import { Switch } from "@opencode/ui/switch"
+import { Tabs } from "@opencode/ui/tabs"
import { useLanguage } from "@/runtime/i18n/language"
import { useData } from "@/runtime/server/current"
import { useServerSDK } from "@/runtime/server/client"
diff --git a/packages/app/src/settings/providers/providers.tsx b/packages/app/src/settings/providers/providers.tsx
index d1103de34f6..a9d841f53a2 100644
--- a/packages/app/src/settings/providers/providers.tsx
+++ b/packages/app/src/settings/providers/providers.tsx
@@ -1,7 +1,7 @@
-import { Button } from "@opencode-ai/ui/button"
-import { Badge } from "@opencode-ai/ui/badge"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
+import { Button } from "@opencode/ui/button"
+import { Badge } from "@opencode/ui/badge"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
import { showToast } from "@/shell/notifications/toast"
import { popularProviders, useProviders } from "@/providers/catalog/providers"
import { useIntegrations } from "@/providers/catalog/integrations"
diff --git a/packages/app/src/settings/server-select.tsx b/packages/app/src/settings/server-select.tsx
index e9236034c1f..82941102d37 100644
--- a/packages/app/src/settings/server-select.tsx
+++ b/packages/app/src/settings/server-select.tsx
@@ -1,5 +1,5 @@
import { Show, createMemo, type Component } from "solid-js"
-import { Select } from "@opencode-ai/ui/select"
+import { Select } from "@opencode/ui/select"
import { useGlobal } from "@/runtime/server/runtime"
import { ServerConnection, serverName } from "@/runtime/server/registry"
diff --git a/packages/app/src/settings/servers/servers.tsx b/packages/app/src/settings/servers/servers.tsx
index 455dc62e06d..ddd769001fa 100644
--- a/packages/app/src/settings/servers/servers.tsx
+++ b/packages/app/src/settings/servers/servers.tsx
@@ -1,8 +1,8 @@
-import { Badge } from "@opencode-ai/ui/badge"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { TextInput } from "@opencode-ai/ui/text-input"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { Badge } from "@opencode/ui/badge"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { TextInput } from "@opencode/ui/text-input"
+import { useDialog } from "@opencode/ui/context/dialog"
import fuzzysort from "fuzzysort"
import { type Component, For, Show, createMemo } from "solid-js"
import { createStore } from "solid-js/store"
diff --git a/packages/app/src/settings/settings.css b/packages/app/src/settings/settings.css
index 43a9ce4e9da..2ab7007b329 100644
--- a/packages/app/src/settings/settings.css
+++ b/packages/app/src/settings/settings.css
@@ -1,5 +1,5 @@
-@import "@opencode-ai/ui/text-input.css";
-@import "@opencode-ai/ui/button.css";
+@import "@opencode/ui/text-input.css";
+@import "@opencode/ui/button.css";
[data-component="tabs-v2"][data-variant="settings"] {
height: 100%;
diff --git a/packages/app/src/settings/shell.tsx b/packages/app/src/settings/shell.tsx
index 589f113dde1..4c743985196 100644
--- a/packages/app/src/settings/shell.tsx
+++ b/packages/app/src/settings/shell.tsx
@@ -1,9 +1,9 @@
import { Component, createEffect, createMemo, For, Show, onMount, startTransition } from "solid-js"
import { createStore } from "solid-js/store"
-import { Tabs } from "@opencode-ai/ui/tabs"
-import { Icon } from "@opencode-ai/ui/icon"
-import { Menu } from "@opencode-ai/ui/menu"
-import { Button } from "@opencode-ai/ui/button"
+import { Tabs } from "@opencode/ui/tabs"
+import { Icon } from "@opencode/ui/icon"
+import { Menu } from "@opencode/ui/menu"
+import { Button } from "@opencode/ui/button"
import { useLanguage } from "@/runtime/i18n/language"
import { SettingsGeneral } from "./general/general"
import { SettingsAppearance } from "./appearance/appearance"
@@ -18,7 +18,7 @@ import { SettingsProjects } from "./workspaces/projects"
import { SettingsExtensions } from "./providers/extensions"
import { SettingsAbout } from "./about/about"
import { SettingsServerScope } from "./server-scope"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { useDialog } from "@opencode/ui/context/dialog"
import { useLayout } from "@/shell/state/layout"
import { useTabs } from "@/shell/tabs/tabs"
import { useGlobal, useServerCtx } from "@/runtime/server/runtime"
diff --git a/packages/app/src/settings/surface.tsx b/packages/app/src/settings/surface.tsx
index 1b7d9021f1c..c2188e39c71 100644
--- a/packages/app/src/settings/surface.tsx
+++ b/packages/app/src/settings/surface.tsx
@@ -1,6 +1,6 @@
import { useLocation, useNavigate } from "@solidjs/router"
import { createEffect, on } from "solid-js"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import { useLayout, type LayoutRoute } from "@/shell/state/layout"
import { useCommand } from "@/shell/commands/command"
diff --git a/packages/app/src/settings/timeline-detail.stories.tsx b/packages/app/src/settings/timeline-detail.stories.tsx
index 7c0acda919b..1f0cc52edf3 100644
--- a/packages/app/src/settings/timeline-detail.stories.tsx
+++ b/packages/app/src/settings/timeline-detail.stories.tsx
@@ -1,7 +1,7 @@
import { Show } from "solid-js"
import { createStore } from "solid-js/store"
-import { Button } from "@opencode-ai/ui/button"
-import { timelinePresets, type TimelineDetail } from "@opencode-ai/session-ui/timeline/detail"
+import { Button } from "@opencode/ui/button"
+import { timelinePresets, type TimelineDetail } from "@opencode/session-ui/timeline/detail"
import { SettingsList } from "./list"
import { TimelineDetailControl } from "./timeline-detail"
import "./settings.css"
diff --git a/packages/app/src/settings/timeline-detail.tsx b/packages/app/src/settings/timeline-detail.tsx
index d4dc49a15cd..05a03bf2037 100644
--- a/packages/app/src/settings/timeline-detail.tsx
+++ b/packages/app/src/settings/timeline-detail.tsx
@@ -1,10 +1,10 @@
import { For, Show, createMemo, createUniqueId } from "solid-js"
import { createStore } from "solid-js/store"
-import { Collapsible } from "@opencode-ai/ui/collapsible"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Switch } from "@opencode-ai/ui/switch"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { Collapsible } from "@opencode/ui/collapsible"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Switch } from "@opencode/ui/switch"
+import { Tooltip } from "@opencode/ui/tooltip"
import {
timelineCategories,
timelinePreset,
@@ -12,7 +12,7 @@ import {
type TimelineCategory,
type TimelineDetail,
type TimelinePlacement,
-} from "@opencode-ai/session-ui/timeline/detail"
+} from "@opencode/session-ui/timeline/detail"
import { useLanguage } from "@/runtime/i18n/language"
import "./timeline-detail.css"
diff --git a/packages/app/src/settings/workspaces/project-dialog.tsx b/packages/app/src/settings/workspaces/project-dialog.tsx
index 7d8232c4857..c500f592a81 100644
--- a/packages/app/src/settings/workspaces/project-dialog.tsx
+++ b/packages/app/src/settings/workspaces/project-dialog.tsx
@@ -1,11 +1,11 @@
-import { Button } from "@opencode-ai/ui/button"
-import { Dialog, DialogFooter } from "@opencode-ai/ui/dialog"
-import { Field } from "@opencode-ai/ui/field"
-import { Icon } from "@opencode-ai/ui/icon"
-import { ProjectAvatar, PROJECT_AVATAR_VARIANTS } from "@opencode-ai/ui/project-avatar"
-import { Tabs } from "@opencode-ai/ui/tabs"
-import { Textarea } from "@opencode-ai/ui/textarea"
-import { TextInput } from "@opencode-ai/ui/text-input"
+import { Button } from "@opencode/ui/button"
+import { Dialog, DialogFooter } from "@opencode/ui/dialog"
+import { Field } from "@opencode/ui/field"
+import { Icon } from "@opencode/ui/icon"
+import { ProjectAvatar, PROJECT_AVATAR_VARIANTS } from "@opencode/ui/project-avatar"
+import { Tabs } from "@opencode/ui/tabs"
+import { Textarea } from "@opencode/ui/textarea"
+import { TextInput } from "@opencode/ui/text-input"
import { For, Show, createSignal, startTransition } from "solid-js"
import { useLanguage } from "@/runtime/i18n/language"
import { getProjectAvatarVariant, type LocalProject } from "@/shell/state/layout"
diff --git a/packages/app/src/settings/workspaces/project-extensions.tsx b/packages/app/src/settings/workspaces/project-extensions.tsx
index 90018bdab45..67dc78dcc2e 100644
--- a/packages/app/src/settings/workspaces/project-extensions.tsx
+++ b/packages/app/src/settings/workspaces/project-extensions.tsx
@@ -1,6 +1,6 @@
-import { Icon } from "@opencode-ai/ui/icon"
-import { Switch } from "@opencode-ai/ui/switch"
-import { Tabs } from "@opencode-ai/ui/tabs"
+import { Icon } from "@opencode/ui/icon"
+import { Switch } from "@opencode/ui/switch"
+import { Tabs } from "@opencode/ui/tabs"
import { type Component, For, Show, createEffect, createMemo, createResource, createSignal, type JSX } from "solid-js"
import { useLanguage } from "@/runtime/i18n/language"
import { useMcpToggle } from "@/providers/connect/mcp"
diff --git a/packages/app/src/settings/workspaces/project-model.ts b/packages/app/src/settings/workspaces/project-model.ts
index f63d6ae1c86..fcf6b90ab53 100644
--- a/packages/app/src/settings/workspaces/project-model.ts
+++ b/packages/app/src/settings/workspaces/project-model.ts
@@ -1,5 +1,5 @@
-import { getFilename } from "@opencode-ai/util/path"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { getFilename } from "@opencode/util/path"
+import { useDialog } from "@opencode/ui/context/dialog"
import { useMutation } from "@tanstack/solid-query"
import { createMemo } from "solid-js"
import { createStore } from "solid-js/store"
diff --git a/packages/app/src/settings/workspaces/projects.tsx b/packages/app/src/settings/workspaces/projects.tsx
index 2f98fdfa414..17bfa636855 100644
--- a/packages/app/src/settings/workspaces/projects.tsx
+++ b/packages/app/src/settings/workspaces/projects.tsx
@@ -1,7 +1,7 @@
import { Component, For, Show, createMemo, createSignal } from "solid-js"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Icon } from "@opencode-ai/ui/icon"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Icon } from "@opencode/ui/icon"
+import { useDialog } from "@opencode/ui/context/dialog"
import { useLanguage } from "@/runtime/i18n/language"
import { useGlobal } from "@/runtime/server/runtime"
import { ServerConnection, serverName } from "@/runtime/server/registry"
diff --git a/packages/app/src/settings/workspaces/workspaces.tsx b/packages/app/src/settings/workspaces/workspaces.tsx
index e8a582343c7..eaf9a3b6c19 100644
--- a/packages/app/src/settings/workspaces/workspaces.tsx
+++ b/packages/app/src/settings/workspaces/workspaces.tsx
@@ -3,16 +3,16 @@ import { For, Show, createEffect, createMemo, createSignal } from "solid-js"
import { createStore } from "solid-js/store"
import { createResizeObserver } from "@solid-primitives/resize-observer"
import { Key } from "@solid-primitives/keyed"
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo } from "@opencode/client/promise"
import { useQuery } from "@tanstack/solid-query"
-import { Button } from "@opencode-ai/ui/button"
-import { Dialog, DialogFooter, DialogHeader, DialogTitleGroup } from "@opencode-ai/ui/dialog"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Menu } from "@opencode-ai/ui/menu"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { getFilename } from "@opencode-ai/util/path"
+import { Button } from "@opencode/ui/button"
+import { Dialog, DialogFooter, DialogHeader, DialogTitleGroup } from "@opencode/ui/dialog"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Menu } from "@opencode/ui/menu"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { getFilename } from "@opencode/util/path"
import { useLanguage } from "@/runtime/i18n/language"
import { useServerSDK } from "@/runtime/server/client"
import { useData } from "@/runtime/server/current"
diff --git a/packages/app/src/shell/commands/command.tsx b/packages/app/src/shell/commands/command.tsx
index 4801d3e7243..494c0e77582 100644
--- a/packages/app/src/shell/commands/command.tsx
+++ b/packages/app/src/shell/commands/command.tsx
@@ -1,5 +1,5 @@
-import { createSimpleContext } from "@opencode-ai/ui/context"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { createSimpleContext } from "@opencode/ui/context"
+import { useDialog } from "@opencode/ui/context/dialog"
import { type Accessor, createEffect, createMemo, onCleanup, onMount } from "solid-js"
import { createStore } from "solid-js/store"
import { Schema } from "effect"
diff --git a/packages/app/src/shell/commands/dialog.tsx b/packages/app/src/shell/commands/dialog.tsx
index 98949d36f76..0199a9b5325 100644
--- a/packages/app/src/shell/commands/dialog.tsx
+++ b/packages/app/src/shell/commands/dialog.tsx
@@ -1,10 +1,10 @@
-import { getDirectory, getFilename } from "@opencode-ai/util/path"
-import { FileIcon } from "@opencode-ai/ui/file-icon"
-import { ScrollView } from "@opencode-ai/ui/scroll-view"
-import { Dialog, DialogBody } from "@opencode-ai/ui/dialog"
-import { Icon } from "@opencode-ai/ui/icon"
-import { Keybind } from "@opencode-ai/ui/keybind"
-import { TextInput } from "@opencode-ai/ui/text-input"
+import { getDirectory, getFilename } from "@opencode/util/path"
+import { FileIcon } from "@opencode/ui/file-icon"
+import { ScrollView } from "@opencode/ui/scroll-view"
+import { Dialog, DialogBody } from "@opencode/ui/dialog"
+import { Icon } from "@opencode/ui/icon"
+import { Keybind } from "@opencode/ui/keybind"
+import { TextInput } from "@opencode/ui/text-input"
import { createEffect, createMemo, For, Match, Show, Switch } from "solid-js"
import { createStore } from "solid-js/store"
import { formatKeybindParts } from "@/shell/commands/command"
diff --git a/packages/app/src/shell/commands/palette.ts b/packages/app/src/shell/commands/palette.ts
index 7b204a3c02d..fa886c4a5bd 100644
--- a/packages/app/src/shell/commands/palette.ts
+++ b/packages/app/src/shell/commands/palette.ts
@@ -1,7 +1,7 @@
-import { getFilename } from "@opencode-ai/util/path"
+import { getFilename } from "@opencode/util/path"
import type { Project } from "@/runtime/server/types"
-import type { SessionInfo } from "@opencode-ai/client/promise"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import type { SessionInfo } from "@opencode/client/promise"
+import { useDialog } from "@opencode/ui/context/dialog"
import { createMemo, onCleanup } from "solid-js"
import { commandPaletteOptions, useCommand, type CommandOption } from "@/shell/commands/command"
import { useFile } from "@/workspaces/files/model"
diff --git a/packages/app/src/shell/debug/debug-bar.tsx b/packages/app/src/shell/debug/debug-bar.tsx
index 9db2c5307a3..3880c4349e9 100644
--- a/packages/app/src/shell/debug/debug-bar.tsx
+++ b/packages/app/src/shell/debug/debug-bar.tsx
@@ -2,7 +2,7 @@ import { useIsRouting, useLocation } from "@solidjs/router"
import { batch, createEffect, onCleanup, onMount, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { makeEventListener } from "@solid-primitives/event-listener"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { Tooltip } from "@opencode/ui/tooltip"
import { useLanguage } from "@/runtime/i18n/language"
import { usePlatform } from "@/runtime/platform/platform"
diff --git a/packages/app/src/shell/errors/error.tsx b/packages/app/src/shell/errors/error.tsx
index 69ef5477d29..6d05d34afa7 100644
--- a/packages/app/src/shell/errors/error.tsx
+++ b/packages/app/src/shell/errors/error.tsx
@@ -1,12 +1,12 @@
-import { TextField } from "@opencode-ai/ui/text-field"
+import { TextField } from "@opencode/ui/text-field"
import type { captureException } from "@sentry/solid"
-import { Logo } from "@opencode-ai/ui/logo"
-import { Button } from "@opencode-ai/ui/button"
+import { Logo } from "@opencode/ui/logo"
+import { Button } from "@opencode/ui/button"
import { Component, createSignal, onMount, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { usePlatform } from "@/runtime/platform/platform"
import { useLanguage } from "@/runtime/i18n/language"
-import { Icon } from "@opencode-ai/ui/icon"
+import { Icon } from "@opencode/ui/icon"
import { errorDescriptionKey, errorStatus } from "./description"
export type InitError = {
diff --git a/packages/app/src/shell/layout/helpers.test.ts b/packages/app/src/shell/layout/helpers.test.ts
index b000c4bc890..93cbb42864e 100644
--- a/packages/app/src/shell/layout/helpers.test.ts
+++ b/packages/app/src/shell/layout/helpers.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo } from "@opencode/client/promise"
import {
childSessionOnPath,
closeHomeProject,
diff --git a/packages/app/src/shell/layout/helpers.ts b/packages/app/src/shell/layout/helpers.ts
index b83424d806e..1987b5d46db 100644
--- a/packages/app/src/shell/layout/helpers.ts
+++ b/packages/app/src/shell/layout/helpers.ts
@@ -1,5 +1,5 @@
-import { getFilename } from "@opencode-ai/util/path"
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import { getFilename } from "@opencode/util/path"
+import type { SessionInfo } from "@opencode/client/promise"
import { pathKey } from "@/workspaces/path-key"
import { isProjectDirectory } from "@/workspaces/paths"
import type { ServerConnection } from "@/runtime/server/registry"
diff --git a/packages/app/src/shell/layout/project-icon.tsx b/packages/app/src/shell/layout/project-icon.tsx
index e7218ce42b1..87c028f100a 100644
--- a/packages/app/src/shell/layout/project-icon.tsx
+++ b/packages/app/src/shell/layout/project-icon.tsx
@@ -1,4 +1,4 @@
-import { ProjectAvatar, type ProjectAvatarProps } from "@opencode-ai/ui/project-avatar"
+import { ProjectAvatar, type ProjectAvatarProps } from "@opencode/ui/project-avatar"
import { splitProps } from "solid-js"
import { displayName, getProjectAvatarSource } from "@/shell/layout/helpers"
import { getProjectAvatarVariant, type LocalProject } from "@/shell/state/layout"
diff --git a/packages/app/src/shell/layout/session-tab-avatar.tsx b/packages/app/src/shell/layout/session-tab-avatar.tsx
index 93d10fe3b43..f6c6fa8458d 100644
--- a/packages/app/src/shell/layout/session-tab-avatar.tsx
+++ b/packages/app/src/shell/layout/session-tab-avatar.tsx
@@ -2,8 +2,8 @@ import { getProjectAvatarVariant, type LocalProject } from "@/shell/state/layout
import type { ServerConnection } from "@/runtime/server/registry"
import { displayName, getProjectAvatarSource } from "@/shell/layout/helpers"
import { useSessionTabAvatarState } from "@/shell/layout/project-avatar-state"
-import { ProjectAvatar } from "@opencode-ai/ui/project-avatar"
-import { SessionProgressIndicatorV2 } from "@opencode-ai/session-ui/v2/session-progress-indicator-v2"
+import { ProjectAvatar } from "@opencode/ui/project-avatar"
+import { SessionProgressIndicatorV2 } from "@opencode/session-ui/v2/session-progress-indicator-v2"
import { Show } from "solid-js"
export function SessionTabAvatar(props: {
diff --git a/packages/app/src/shell/mobile-panel-drawer.tsx b/packages/app/src/shell/mobile-panel-drawer.tsx
index fefbbaaf1da..c6e44ebaaa2 100644
--- a/packages/app/src/shell/mobile-panel-drawer.tsx
+++ b/packages/app/src/shell/mobile-panel-drawer.tsx
@@ -1,5 +1,5 @@
import type { ParentProps } from "solid-js"
-import { Button } from "@opencode-ai/ui/button"
+import { Button } from "@opencode/ui/button"
import { useLanguage } from "@/runtime/i18n/language"
import { MobileDrawer, MobileDrawerClose, MobileDrawerContent, MobileDrawerLabel } from "./mobile-drawer"
import "./mobile-panel-drawer.css"
diff --git a/packages/app/src/shell/notifications/notification.tsx b/packages/app/src/shell/notifications/notification.tsx
index a4bcdd754cb..69b833f3d8b 100644
--- a/packages/app/src/shell/notifications/notification.tsx
+++ b/packages/app/src/shell/notifications/notification.tsx
@@ -1,10 +1,10 @@
import { createStore, reconcile } from "solid-js/store"
import { Schema } from "effect"
-import { SessionError } from "@opencode-ai/schema/session-error"
+import { SessionError } from "@opencode/schema/session-error"
import { type Accessor, batch, createEffect, createMemo, createRoot, getOwner, onCleanup } from "solid-js"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import type { ServerSDK } from "@/runtime/server/client"
-import type { Data } from "@opencode-ai/client/solid"
+import type { Data } from "@opencode/client/solid"
import { usePlatform } from "@/runtime/platform/platform"
import { useLanguage } from "@/runtime/i18n/language"
import { useSettings } from "@/settings/model"
diff --git a/packages/app/src/shell/notifications/toast.tsx b/packages/app/src/shell/notifications/toast.tsx
index f3571179c1b..8520b3368e0 100644
--- a/packages/app/src/shell/notifications/toast.tsx
+++ b/packages/app/src/shell/notifications/toast.tsx
@@ -1,5 +1,5 @@
-import { Icon, type IconProps } from "@opencode-ai/ui/icon"
-import { Toast, showToast, toaster, type ToastOptions } from "@opencode-ai/ui/toast"
+import { Icon, type IconProps } from "@opencode/ui/icon"
+import { Toast, showToast, toaster, type ToastOptions } from "@opencode/ui/toast"
import type { JSX } from "solid-js"
type AppToastOptions = Omit & {
diff --git a/packages/app/src/shell/routes/routes.tsx b/packages/app/src/shell/routes/routes.tsx
index dacfe431128..3f6afa1c862 100644
--- a/packages/app/src/shell/routes/routes.tsx
+++ b/packages/app/src/shell/routes/routes.tsx
@@ -11,7 +11,7 @@ import { SettingsSurfaceProvider } from "@/settings/surface"
import Shell from "@/shell/shell"
import { requireServerKey } from "./session"
-export const File = lazy(() => import("@opencode-ai/session-ui/file").then((module) => ({ default: module.File })))
+export const File = lazy(() => import("@opencode/session-ui/file").then((module) => ({ default: module.File })))
const loadSessionRoute = () => Promise.all([import("@/session/route"), File.preload()]).then(([module]) => module)
const DraftRoute = lazy(() => import("@/new-session/route").then((module) => ({ default: module.DraftRoute })))
const SettingsScreen = lazy(() => import("@/settings/shell").then((module) => ({ default: module.SettingsScreen })))
diff --git a/packages/app/src/shell/routes/session-ui-provider.tsx b/packages/app/src/shell/routes/session-ui-provider.tsx
index 6ab59b9f89c..bb45b941416 100644
--- a/packages/app/src/shell/routes/session-ui-provider.tsx
+++ b/packages/app/src/shell/routes/session-ui-provider.tsx
@@ -1,5 +1,5 @@
-import { DataProvider } from "@opencode-ai/session-ui/context"
-import { MarkdownProvider, type ReadMarkdownImage } from "@opencode-ai/session-ui/context/markdown"
+import { DataProvider } from "@opencode/session-ui/context"
+import { MarkdownProvider, type ReadMarkdownImage } from "@opencode/session-ui/context/markdown"
import { useNavigate, useParams } from "@solidjs/router"
import { createMemo, type ParentProps } from "solid-js"
import { useProviders } from "@/providers/catalog/providers"
diff --git a/packages/app/src/shell/routes/session.ts b/packages/app/src/shell/routes/session.ts
index 01c8b9e47ae..7885def0de3 100644
--- a/packages/app/src/shell/routes/session.ts
+++ b/packages/app/src/shell/routes/session.ts
@@ -1,4 +1,4 @@
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { ServerConnection } from "@/runtime/server/registry"
import { decode64 } from "@/runtime/persistence/base64"
diff --git a/packages/app/src/shell/shell.tsx b/packages/app/src/shell/shell.tsx
index d02237ab73e..2c084c1cdf6 100644
--- a/packages/app/src/shell/shell.tsx
+++ b/packages/app/src/shell/shell.tsx
@@ -1,7 +1,7 @@
import { lazy, Show, Suspense, type ParentProps } from "solid-js"
import { createStore } from "solid-js/store"
import { createMediaQuery } from "@solid-primitives/media"
-import { ResizeHandle } from "@opencode-ai/ui/resize-handle"
+import { ResizeHandle } from "@opencode/ui/resize-handle"
import { Titlebar, type TitlebarUpdate } from "@/shell/titlebar/titlebar"
import { usePlatform } from "@/runtime/platform/platform"
import { ToastRegion } from "@/shell/notifications/toast"
diff --git a/packages/app/src/shell/state/layout.tsx b/packages/app/src/shell/state/layout.tsx
index 9ad44297ac9..1210923b49e 100644
--- a/packages/app/src/shell/state/layout.tsx
+++ b/packages/app/src/shell/state/layout.tsx
@@ -2,7 +2,7 @@ import { createStore, produce, reconcile } from "solid-js/store"
import { Schema, SchemaGetter } from "effect"
import { batch, createEffect, createMemo, onCleanup, onMount, type Accessor } from "solid-js"
import { useLocation } from "@solidjs/router"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import { makeEventListener } from "@solid-primitives/event-listener"
import { ServerConnection, useServers } from "@/runtime/server/registry"
import { usePlatform } from "@/runtime/platform/platform"
@@ -14,7 +14,7 @@ import { decode64 } from "@/runtime/persistence/base64"
import { same } from "@/runtime/persistence/equality"
import { createScrollPersistence, type SessionScroll } from "./scroll"
import { createPathHelpers } from "@/workspaces/files/path"
-import type { ProjectAvatarVariant } from "@opencode-ai/ui/project-avatar"
+import type { ProjectAvatarVariant } from "@opencode/ui/project-avatar"
import { SessionStateKey } from "@/runtime/server/scope"
import { createSessionKeyReader, ensureSessionKey, pruneSessionKeys } from "./helpers"
import { requireServerKey } from "@/shell/routes/session"
diff --git a/packages/app/src/shell/status/body.tsx b/packages/app/src/shell/status/body.tsx
index 48a8c7fcad1..ff3812c9a1b 100644
--- a/packages/app/src/shell/status/body.tsx
+++ b/packages/app/src/shell/status/body.tsx
@@ -1,5 +1,5 @@
-import { Switch } from "@opencode-ai/ui/switch"
-import { Tabs } from "@opencode-ai/ui/tabs"
+import { Switch } from "@opencode/ui/switch"
+import { Tabs } from "@opencode/ui/tabs"
import { createMemo, createResource, For, Index, type JSXElement, Show } from "solid-js"
import { useLanguage } from "@/runtime/i18n/language"
import { useMcpToggle } from "@/providers/connect/mcp"
diff --git a/packages/app/src/shell/status/indicator.ts b/packages/app/src/shell/status/indicator.ts
index 3a93f24e0fc..723e68161f8 100644
--- a/packages/app/src/shell/status/indicator.ts
+++ b/packages/app/src/shell/status/indicator.ts
@@ -1,5 +1,5 @@
import type { LspStatus } from "@/runtime/server/types"
-import type { McpServer } from "@opencode-ai/client/promise"
+import type { McpServer } from "@opencode/client/promise"
export function hasServiceNeedingAttention(input: { mcp: Array }) {
return input.mcp.some((status) => status === "needs_auth")
diff --git a/packages/app/src/shell/status/status-popover.tsx b/packages/app/src/shell/status/status-popover.tsx
index ca3688a9960..e5208110993 100644
--- a/packages/app/src/shell/status/status-popover.tsx
+++ b/packages/app/src/shell/status/status-popover.tsx
@@ -1,6 +1,6 @@
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Popover } from "@opencode-ai/ui/popover"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Popover } from "@opencode/ui/popover"
import { Suspense, createMemo, createSignal, lazy, Show, type JSX } from "solid-js"
import { useLanguage } from "@/runtime/i18n/language"
import { useGlobal } from "@/runtime/server/runtime"
diff --git a/packages/app/src/shell/tabs/tabs.tsx b/packages/app/src/shell/tabs/tabs.tsx
index 68fefd6e0bd..648cc6fd127 100644
--- a/packages/app/src/shell/tabs/tabs.tsx
+++ b/packages/app/src/shell/tabs/tabs.tsx
@@ -1,6 +1,6 @@
-import type { SessionInfo, SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionInfo, SessionMessageUser } from "@opencode/client/promise"
import type { ComposerSelection } from "@/composer/adapter"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import { createStore, produce } from "solid-js/store"
import { Persist, persisted, removePersisted, draftPersistedKeys } from "@/runtime/persistence/storage"
import { ServerConnection, useServers } from "@/runtime/server/registry"
diff --git a/packages/app/src/shell/titlebar/tab-nav.tsx b/packages/app/src/shell/titlebar/tab-nav.tsx
index 5806a654d8b..e6479e0e5ee 100644
--- a/packages/app/src/shell/titlebar/tab-nav.tsx
+++ b/packages/app/src/shell/titlebar/tab-nav.tsx
@@ -3,16 +3,16 @@ import { createStore } from "solid-js/store"
import { makeEventListener } from "@solid-primitives/event-listener"
import { createResizeObserver } from "@solid-primitives/resize-observer"
import { createMutation } from "@tanstack/solid-query"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Icon } from "@opencode-ai/ui/icon"
-import { Menu } from "@opencode-ai/ui/menu"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Icon } from "@opencode/ui/icon"
+import { Menu } from "@opencode/ui/menu"
import { useGlobal, useServerCtx } from "@/runtime/server/runtime"
import { useLanguage } from "@/runtime/i18n/language"
import { ServerConnection, serverName, useServers } from "@/runtime/server/registry"
import { displayName, projectForSession } from "@/shell/layout/helpers"
import { SessionTabAvatar } from "@/shell/layout/session-tab-avatar"
-import { SessionProgressIndicatorV2 } from "@opencode-ai/session-ui/v2/session-progress-indicator-v2"
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import { SessionProgressIndicatorV2 } from "@opencode/session-ui/v2/session-progress-indicator-v2"
+import type { SessionInfo } from "@opencode/client/promise"
import { sessionTabTitle } from "./tab-title"
import { useSettings } from "@/settings/model"
import { canOpenTabRename, forwardTabRef } from "./tab-gesture"
diff --git a/packages/app/src/shell/titlebar/tab-strip.tsx b/packages/app/src/shell/titlebar/tab-strip.tsx
index 2e03bf3e8f5..75ae584ace3 100644
--- a/packages/app/src/shell/titlebar/tab-strip.tsx
+++ b/packages/app/src/shell/titlebar/tab-strip.tsx
@@ -14,11 +14,11 @@ import { useLanguage } from "@/runtime/i18n/language"
import { useCommand } from "@/shell/commands/command"
import { useTabs } from "@/shell/tabs/tabs"
import { createTabComposerState } from "@/composer/persistence"
-import { base64Encode } from "@opencode-ai/util/encode"
+import { base64Encode } from "@opencode/util/encode"
import { showToast } from "@/shell/notifications/toast"
import { canStartTabDrag, isTabCloseTarget } from "./tab-gesture"
import { adjacentTabKey, mergeVisibleTabOrder } from "./tab-order"
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo } from "@opencode/client/promise"
function SessionTabSlot(props: {
tab: SessionTab
diff --git a/packages/app/src/shell/titlebar/tab-title.ts b/packages/app/src/shell/titlebar/tab-title.ts
index 105fca2e675..99f25db31e1 100644
--- a/packages/app/src/shell/titlebar/tab-title.ts
+++ b/packages/app/src/shell/titlebar/tab-title.ts
@@ -1,4 +1,4 @@
-import { isFallbackTitle } from "@opencode-ai/util/session-title-fallback"
+import { isFallbackTitle } from "@opencode/util/session-title-fallback"
// Draft, preparing, and untitled session tabs share one localized label.
export function sessionTabTitle(title: string | undefined, fallback: string) {
diff --git a/packages/app/src/shell/titlebar/titlebar.tsx b/packages/app/src/shell/titlebar/titlebar.tsx
index 83a4b5c62b7..435b53023de 100644
--- a/packages/app/src/shell/titlebar/titlebar.tsx
+++ b/packages/app/src/shell/titlebar/titlebar.tsx
@@ -2,10 +2,10 @@ import { createEffect, createMemo, createResource, Match, Show, Switch, untrack
import { createStore, unwrap } from "solid-js/store"
import { Dynamic, Portal } from "solid-js/web"
import { useLocation, useNavigate } from "@solidjs/router"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Icon } from "@opencode-ai/ui/icon"
-import { Keybind } from "@opencode-ai/ui/keybind"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Icon } from "@opencode/ui/icon"
+import { Keybind } from "@opencode/ui/keybind"
+import { Tooltip } from "@opencode/ui/tooltip"
import { LayoutRoute, useLayout } from "@/shell/state/layout"
import { usePlatform } from "@/runtime/platform/platform"
@@ -28,7 +28,7 @@ import { TitlebarRightMount } from "@/shell/titlebar/right-slot"
import { MobileDrawer, MobileDrawerContent, MobileDrawerLabel, MobileDrawerTrigger } from "@/shell/mobile-drawer"
import { sessionTabTitle } from "./tab-title"
import { SessionTabAvatar } from "@/shell/layout/session-tab-avatar"
-import { SessionProgressIndicatorV2 } from "@opencode-ai/session-ui/v2/session-progress-indicator-v2"
+import { SessionProgressIndicatorV2 } from "@opencode/session-ui/v2/session-progress-indicator-v2"
import { projectForSession } from "@/shell/layout/helpers"
import { useSettingsDialog } from "@/settings/command"
import devIcon from "../../../../desktop/icons/dev/64x64.png"
diff --git a/packages/app/src/shell/titlebar/windows-menu.tsx b/packages/app/src/shell/titlebar/windows-menu.tsx
index 6e023880286..30b85a6454b 100644
--- a/packages/app/src/shell/titlebar/windows-menu.tsx
+++ b/packages/app/src/shell/titlebar/windows-menu.tsx
@@ -1,8 +1,8 @@
import { makeEventListener } from "@solid-primitives/event-listener"
import { For, onMount, type JSX } from "solid-js"
-import { Menu } from "@opencode-ai/ui/menu"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
+import { Menu } from "@opencode/ui/menu"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
import { matchKeybind, parseKeybind, useCommand } from "@/shell/commands/command"
import {
diff --git a/packages/app/src/shell/updates/highlights.tsx b/packages/app/src/shell/updates/highlights.tsx
index 801e97e60b6..8896833235e 100644
--- a/packages/app/src/shell/updates/highlights.tsx
+++ b/packages/app/src/shell/updates/highlights.tsx
@@ -1,8 +1,8 @@
import { createEffect, onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
import { Schema } from "effect"
-import { createSimpleContext } from "@opencode-ai/ui/context"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { createSimpleContext } from "@opencode/ui/context"
+import { useDialog } from "@opencode/ui/context/dialog"
import { usePlatform } from "@/runtime/platform/platform"
import { useSettings } from "@/settings/model"
import { persisted } from "@/runtime/persistence/storage"
diff --git a/packages/app/src/shell/updates/release-notes.tsx b/packages/app/src/shell/updates/release-notes.tsx
index daee0a30ccb..96a8dfcb34a 100644
--- a/packages/app/src/shell/updates/release-notes.tsx
+++ b/packages/app/src/shell/updates/release-notes.tsx
@@ -1,7 +1,7 @@
import { createSignal, Index, Show } from "solid-js"
-import { Dialog } from "@opencode-ai/ui/dialog"
-import { Button } from "@opencode-ai/ui/button"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { Dialog } from "@opencode/ui/dialog"
+import { Button } from "@opencode/ui/button"
+import { useDialog } from "@opencode/ui/context/dialog"
import { useLanguage } from "@/runtime/i18n/language"
import { useSettings } from "@/settings/model"
diff --git a/packages/app/src/workspaces/create.test.ts b/packages/app/src/workspaces/create.test.ts
index 7e5c3ad1d32..dee9e8ca64e 100644
--- a/packages/app/src/workspaces/create.test.ts
+++ b/packages/app/src/workspaces/create.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
-import { OpenCode } from "@opencode-ai/client/promise"
-import { createData } from "@opencode-ai/client/solid"
+import { OpenCode } from "@opencode/client/promise"
+import { createData } from "@opencode/client/solid"
import { createRoot } from "solid-js"
import { createWorktree } from "./create"
diff --git a/packages/app/src/workspaces/create.ts b/packages/app/src/workspaces/create.ts
index cb538dcd0cf..70fbe6c397d 100644
--- a/packages/app/src/workspaces/create.ts
+++ b/packages/app/src/workspaces/create.ts
@@ -1,5 +1,5 @@
-import type { LocationGetOutput, OpenCodeClient } from "@opencode-ai/client/promise"
-import type { Data } from "@opencode-ai/client/solid"
+import type { LocationGetOutput, OpenCodeClient } from "@opencode/client/promise"
+import type { Data } from "@opencode/client/solid"
export async function createWorktree(input: {
api: Pick
diff --git a/packages/app/src/workspaces/files/model.tsx b/packages/app/src/workspaces/files/model.tsx
index 85bfbf203ae..5d532690d37 100644
--- a/packages/app/src/workspaces/files/model.tsx
+++ b/packages/app/src/workspaces/files/model.tsx
@@ -1,10 +1,10 @@
import { batch, createEffect, createMemo, onCleanup } from "solid-js"
import { createStore, produce, reconcile } from "solid-js/store"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import { showToast } from "@/shell/notifications/toast"
import { useParams } from "@solidjs/router"
-import { base64Encode } from "@opencode-ai/util/encode"
-import { getFilename } from "@opencode-ai/util/path"
+import { base64Encode } from "@opencode/util/encode"
+import { getFilename } from "@opencode/util/path"
import { useWorkspaceLocation } from "@/workspaces/location"
import { useLanguage } from "@/runtime/i18n/language"
import { useLayout } from "@/shell/state/layout"
diff --git a/packages/app/src/workspaces/files/watcher.test.ts b/packages/app/src/workspaces/files/watcher.test.ts
index 4a43983aa75..a9f50f4c694 100644
--- a/packages/app/src/workspaces/files/watcher.test.ts
+++ b/packages/app/src/workspaces/files/watcher.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { OpenCodeEvent } from "@opencode-ai/client/promise"
+import type { OpenCodeEvent } from "@opencode/client/promise"
import { invalidateFromWatcher } from "./watcher"
type FilesystemEvent = Extract
diff --git a/packages/app/src/workspaces/files/watcher.ts b/packages/app/src/workspaces/files/watcher.ts
index 5209a3e9a24..a77b2e4a950 100644
--- a/packages/app/src/workspaces/files/watcher.ts
+++ b/packages/app/src/workspaces/files/watcher.ts
@@ -1,5 +1,5 @@
import type { FileNode } from "@/runtime/server/types"
-import type { OpenCodeEvent } from "@opencode-ai/client/promise"
+import type { OpenCodeEvent } from "@opencode/client/promise"
type WatcherEvent = Extract
diff --git a/packages/app/src/workspaces/inventory.test.ts b/packages/app/src/workspaces/inventory.test.ts
index af1ef5b60dc..88cad6d5f7f 100644
--- a/packages/app/src/workspaces/inventory.test.ts
+++ b/packages/app/src/workspaces/inventory.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import { QueryClient } from "@tanstack/solid-query"
-import type { WorktreeDirectory } from "@opencode-ai/client/promise"
+import type { WorktreeDirectory } from "@opencode/client/promise"
import { createWorktreeInventory, withWorktreeInventory, worktreeInventoryKey } from "./inventory"
import { ServerScope } from "@/runtime/server/scope"
import { normalizeProjectInfo, updateProjectInfo } from "@/runtime/server/global-sync/utils"
diff --git a/packages/app/src/workspaces/inventory.ts b/packages/app/src/workspaces/inventory.ts
index 6016745fab8..e40f374f354 100644
--- a/packages/app/src/workspaces/inventory.ts
+++ b/packages/app/src/workspaces/inventory.ts
@@ -1,5 +1,5 @@
import type { QueryClient } from "@tanstack/solid-query"
-import type { WorktreeDirectory } from "@opencode-ai/client/promise"
+import type { WorktreeDirectory } from "@opencode/client/promise"
import type { ServerApi } from "@/runtime/server/api"
import type { ServerScope } from "@/runtime/server/scope"
import type { Project } from "@/runtime/server/types"
diff --git a/packages/app/src/workspaces/location.tsx b/packages/app/src/workspaces/location.tsx
index 056247b10a9..70a25f24d03 100644
--- a/packages/app/src/workspaces/location.tsx
+++ b/packages/app/src/workspaces/location.tsx
@@ -1,6 +1,6 @@
-import { createSimpleContext } from "@opencode-ai/ui/context"
-import type { LocationGetOutput, LocationRef } from "@opencode-ai/client/promise"
-import { retry } from "@opencode-ai/util/retry"
+import { createSimpleContext } from "@opencode/ui/context"
+import type { LocationGetOutput, LocationRef } from "@opencode/client/promise"
+import { retry } from "@opencode/util/retry"
import { type Accessor, createEffect, createMemo, onCleanup } from "solid-js"
import { type LocationContext, useServerSDK } from "@/runtime/server/client"
import { useData, useServer } from "@/runtime/server/current"
diff --git a/packages/app/src/workspaces/paths.test.ts b/packages/app/src/workspaces/paths.test.ts
index d8113350ed0..bb20e6cbe3e 100644
--- a/packages/app/src/workspaces/paths.test.ts
+++ b/packages/app/src/workspaces/paths.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo } from "@opencode/client/promise"
import {
filterWorkspaceInventory,
inspectWorkspaceDeletion,
diff --git a/packages/app/src/workspaces/paths.ts b/packages/app/src/workspaces/paths.ts
index 9ffb6d98baa..2ed98693bd2 100644
--- a/packages/app/src/workspaces/paths.ts
+++ b/packages/app/src/workspaces/paths.ts
@@ -1,6 +1,6 @@
import { pathKey } from "@/workspaces/path-key"
import type { WorkspaceDefaultDestination, WorkspaceLastUsed } from "@/settings/model"
-import type { SessionInfo, WorktreeDirectory } from "@opencode-ai/client/promise"
+import type { SessionInfo, WorktreeDirectory } from "@opencode/client/promise"
type WorkspaceProject = {
worktree: string
diff --git a/packages/app/src/workspaces/selection/dialog.tsx b/packages/app/src/workspaces/selection/dialog.tsx
index ecefb8ce336..d3c3c3fb67a 100644
--- a/packages/app/src/workspaces/selection/dialog.tsx
+++ b/packages/app/src/workspaces/selection/dialog.tsx
@@ -1,14 +1,14 @@
import "@pierre/trees/web-components"
import { FileTree } from "@pierre/trees"
-import { Dialog, DialogBody, DialogFooter, DialogHeader, DialogTitle } from "@opencode-ai/ui/dialog"
-import { Button } from "@opencode-ai/ui/button"
-import { TextInput } from "@opencode-ai/ui/text-input"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { Dialog, DialogBody, DialogFooter, DialogHeader, DialogTitle } from "@opencode/ui/dialog"
+import { Button } from "@opencode/ui/button"
+import { TextInput } from "@opencode/ui/text-input"
+import { useDialog } from "@opencode/ui/context/dialog"
import { createEffect, createMemo, createResource, createSignal, For, onCleanup, onMount, Show } from "solid-js"
import { useGlobal } from "@/runtime/server/runtime"
import { useLanguage } from "@/runtime/i18n/language"
import { ServerConnection } from "@/runtime/server/registry"
-import type { LocationRef } from "@opencode-ai/client/promise"
+import type { LocationRef } from "@opencode/client/promise"
import {
absoluteTreePath,
activeTreeNavigation,
@@ -31,7 +31,7 @@ import {
pickerAbsolutePath,
} from "./domain"
import "./dialog.css"
-import { Divider } from "@opencode-ai/ui/divider"
+import { Divider } from "@opencode/ui/divider"
interface DirectoryPickerDialogProps {
title?: string
diff --git a/packages/app/src/workspaces/selection/domain.ts b/packages/app/src/workspaces/selection/domain.ts
index ae8cc33f5c2..4353771637e 100644
--- a/packages/app/src/workspaces/selection/domain.ts
+++ b/packages/app/src/workspaces/selection/domain.ts
@@ -250,7 +250,7 @@ export function nativePickerPath(path: string) {
if (/^[A-Za-z]:\//.test(value) || value.startsWith("//")) return value.replaceAll("/", "\\")
return value
}
-import { getFilename } from "@opencode-ai/util/path"
+import { getFilename } from "@opencode/util/path"
import fuzzysort from "fuzzysort"
import { ServerSDK } from "@/runtime/server/client"
diff --git a/packages/app/src/workspaces/selection/picker.tsx b/packages/app/src/workspaces/selection/picker.tsx
index a8098948a1b..13c29917334 100644
--- a/packages/app/src/workspaces/selection/picker.tsx
+++ b/packages/app/src/workspaces/selection/picker.tsx
@@ -1,8 +1,8 @@
-import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { useDialog } from "@opencode/ui/context/dialog"
import { ServerConnection } from "@/runtime/server/registry"
import { usePlatform } from "@/runtime/platform/platform"
import { lazy } from "solid-js"
-import type { LocationRef } from "@opencode-ai/client/promise"
+import type { LocationRef } from "@opencode/client/promise"
import { directoryPickerKind } from "./policy"
const DirectoryPickerDialog = lazy(() =>
diff --git a/packages/app/test-browser/auto-scroll.test.ts b/packages/app/test-browser/auto-scroll.test.ts
index d0a5f60bd5f..4cf21f3f1ab 100644
--- a/packages/app/test-browser/auto-scroll.test.ts
+++ b/packages/app/test-browser/auto-scroll.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import { createAutoScroll } from "@opencode-ai/ui/hooks"
+import { createAutoScroll } from "@opencode/ui/hooks"
import { createRoot } from "solid-js"
test("restores bottom anchoring when Suspense reattaches the scroll viewport", async () => {
diff --git a/packages/app/test-browser/command-palette.test.ts b/packages/app/test-browser/command-palette.test.ts
index 64bad99605c..f7bf5f77819 100644
--- a/packages/app/test-browser/command-palette.test.ts
+++ b/packages/app/test-browser/command-palette.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import type { Project } from "@/runtime/server/types"
-import type { SessionInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo } from "@opencode/client/promise"
import { createRoot } from "solid-js"
import { createServerSessionEntries } from "@/shell/commands/palette"
import type { LocalProject } from "@/shell/state/layout"
diff --git a/packages/app/test-browser/composer-write-batch.test.ts b/packages/app/test-browser/composer-write-batch.test.ts
index 31e26b2c92e..dc661337b40 100644
--- a/packages/app/test-browser/composer-write-batch.test.ts
+++ b/packages/app/test-browser/composer-write-batch.test.ts
@@ -1,6 +1,6 @@
import { expect, test } from "bun:test"
import { createComputed, createRoot } from "solid-js"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
+import { SessionMessage } from "@opencode/schema/session-message"
import { ServerScope } from "@/runtime/server/scope"
import { createComposerState, type ComposerStore } from "@/composer/state"
import { createComposerEditorActions } from "@/composer/editor/actions"
diff --git a/packages/app/test-browser/motion-spring.test.ts b/packages/app/test-browser/motion-spring.test.ts
index fc251af0088..cbf7d97cfe2 100644
--- a/packages/app/test-browser/motion-spring.test.ts
+++ b/packages/app/test-browser/motion-spring.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import { useSpring } from "@opencode-ai/ui/motion-spring"
+import { useSpring } from "@opencode/ui/motion-spring"
import { createRoot, createSignal } from "solid-js"
test("snaps spring progress when the session changes", async () => {
diff --git a/packages/app/test-browser/review-panel-state.test.ts b/packages/app/test-browser/review-panel-state.test.ts
index 963464ef02c..e10de113658 100644
--- a/packages/app/test-browser/review-panel-state.test.ts
+++ b/packages/app/test-browser/review-panel-state.test.ts
@@ -27,7 +27,7 @@ const platform: Platform = {
}
beforeAll(async () => {
- mock.module("@opencode-ai/session-ui/v2/session-review-v2", () => ({
+ mock.module("@opencode/session-ui/v2/session-review-v2", () => ({
SESSION_REVIEW_V2_SIDEBAR_WIDTH_DEFAULT: 240,
SESSION_REVIEW_V2_SIDEBAR_WIDTH_MIN: 200,
SESSION_REVIEW_V2_SIDEBAR_WIDTH_MAX: 480,
diff --git a/packages/app/test-browser/session-background.test.ts b/packages/app/test-browser/session-background.test.ts
index 04945a8af99..355eacbc0e6 100644
--- a/packages/app/test-browser/session-background.test.ts
+++ b/packages/app/test-browser/session-background.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionInfo, SessionMessageAssistantTool, ShellInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo, SessionMessageAssistantTool, ShellInfo } from "@opencode/client/promise"
import { createRoot } from "solid-js"
import { createStore } from "solid-js/store"
import { createSessionBackground } from "@/session/requests/background"
diff --git a/packages/app/test-browser/timeline-projection.test.ts b/packages/app/test-browser/timeline-projection.test.ts
index 7b1b1a16ee4..1a234cc2df2 100644
--- a/packages/app/test-browser/timeline-projection.test.ts
+++ b/packages/app/test-browser/timeline-projection.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionMessageAssistant, SessionMessageInfo, SessionStatus } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistant, SessionMessageInfo, SessionStatus } from "@opencode/client/promise"
import { createRoot } from "solid-js"
import { createStore, produce } from "solid-js/store"
import {
@@ -8,7 +8,7 @@ import {
Timeline,
TimelineRow,
type ReasoningMode,
-} from "@opencode-ai/session-ui/timeline/projection"
+} from "@opencode/session-ui/timeline/projection"
import { createTimelineProjection } from "../src/session/timeline/projection"
const assistant = (id: string, content: SessionMessageAssistant["content"]): SessionMessageAssistant => ({
diff --git a/packages/app/test-browser/toast-owner.test.ts b/packages/app/test-browser/toast-owner.test.ts
index 867e8a5faa0..2d144fe6fbc 100644
--- a/packages/app/test-browser/toast-owner.test.ts
+++ b/packages/app/test-browser/toast-owner.test.ts
@@ -1,6 +1,6 @@
import { beforeEach, describe, expect, test } from "bun:test"
import { createSignal, type JSX } from "solid-js"
-import { showToast, toaster } from "@opencode-ai/ui/toast"
+import { showToast, toaster } from "@opencode/ui/toast"
describe("showToast", () => {
// The toast registry is module state, so each test starts from an empty stack.
diff --git a/packages/app/test-browser/websearch-request.test.ts b/packages/app/test-browser/websearch-request.test.ts
index 0faadec481f..f3ab6a691e2 100644
--- a/packages/app/test-browser/websearch-request.test.ts
+++ b/packages/app/test-browser/websearch-request.test.ts
@@ -1,5 +1,5 @@
import { afterEach, describe, expect, test } from "bun:test"
-import type { FormCreated, FormReplyInput, OpenCodeEvent } from "@opencode-ai/client/promise"
+import type { FormCreated, FormReplyInput, OpenCodeEvent } from "@opencode/client/promise"
import { createEffect, createRoot } from "solid-js"
import { createStore } from "solid-js/store"
import { createWebSearchRequest } from "@/session/requests/websearch"
diff --git a/packages/app/vite.js b/packages/app/vite.js
index 3c75bbd0227..bb034893776 100644
--- a/packages/app/vite.js
+++ b/packages/app/vite.js
@@ -45,7 +45,7 @@ export default [
},
optimizeDeps: {
exclude: ["@shikijs/stream", "marked", "marked-shiki", "remend"],
- include: ["@opencode-ai/session-ui > mermaid", "@opencode-ai/session-ui > mermaid > katex"],
+ include: ["@opencode/session-ui > mermaid", "@opencode/session-ui > mermaid > katex"],
},
}
},
diff --git a/packages/cli/AGENTS.md b/packages/cli/AGENTS.md
index 2e00ca707b7..a39796a59a1 100644
--- a/packages/cli/AGENTS.md
+++ b/packages/cli/AGENTS.md
@@ -1,4 +1,4 @@
# CLI and TUI development guide
-- Use `@opencode-ai/client` and the location-scoped data in `packages/tui/src/context/data.tsx` instead of adding dependencies on legacy sync state.
+- Use `@opencode/client` and the location-scoped data in `packages/tui/src/context/data.tsx` instead of adding dependencies on legacy sync state.
- Preserve established TUI behavior unless the task intentionally changes it.
diff --git a/packages/cli/bin/opencode2.cjs b/packages/cli/bin/opencode2.cjs
index 80b7ad408fb..fc6fd153b2d 100755
--- a/packages/cli/bin/opencode2.cjs
+++ b/packages/cli/bin/opencode2.cjs
@@ -37,7 +37,7 @@ const nodeBuild = command === "opencode2-node"
const cached = path.join(scriptDir, `.${command}`)
const platform = { darwin: "darwin", linux: "linux", win32: "windows" }[os.platform()] || os.platform()
const arch = { x64: "x64", arm64: "arm64", arm: "arm" }[os.arch()] || os.arch()
-const base = `@opencode-ai/cli${nodeBuild ? "-node" : ""}-` + platform + "-" + arch
+const base = `@opencode/cli${nodeBuild ? "-node" : ""}-` + platform + "-" + arch
const binary = platform === "windows" ? `${command}.exe` : command
function supportsAvx2() {
diff --git a/packages/cli/package.json b/packages/cli/package.json
index deac1fa518d..d94831ebf58 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/cli",
+ "name": "@opencode/cli",
"version": "1.18.4",
"type": "module",
"license": "MIT",
@@ -25,13 +25,13 @@
"@agentclientprotocol/sdk": "1.2.1",
"@clack/prompts": "1.0.0-alpha.1",
"@effect/platform-node": "catalog:",
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/plugin": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/plugin": "workspace:*",
"@opencode-ai/pty": "0.1.13",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/server": "workspace:*",
- "@opencode-ai/tui": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/server": "workspace:*",
+ "@opencode/tui": "workspace:*",
+ "@opencode/util": "workspace:*",
"@opentui/core": "catalog:",
"@opentui/solid": "catalog:",
"@parcel/watcher": "2.5.1",
@@ -48,8 +48,8 @@
"ws": "8.21.0"
},
"devDependencies": {
- "@opencode-ai/script": "workspace:*",
- "@opencode-ai/protocol": "workspace:*",
+ "@opencode/script": "workspace:*",
+ "@opencode/protocol": "workspace:*",
"@tsconfig/bun": "catalog:",
"@types/bun": "catalog:",
"@typescript/native-preview": "catalog:",
diff --git a/packages/cli/script/build-node.ts b/packages/cli/script/build-node.ts
index e283199d817..f8dafdf3a77 100644
--- a/packages/cli/script/build-node.ts
+++ b/packages/cli/script/build-node.ts
@@ -6,7 +6,7 @@ import { chmod, copyFile, mkdir, mkdtemp, readFile, realpath, rename, rm, stat,
import os from "node:os"
import path from "node:path"
import { build } from "vite"
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import pkg from "../package.json"
import { collectNodeAssets, copyNodeAssets, hashNodeAssets, seaAssetMap } from "./node-assets"
import { mainConfig } from "../vite.node.config"
@@ -138,7 +138,7 @@ for (const target of targets) {
path.join(outdir, name, "package.json"),
`${JSON.stringify(
{
- name: `@opencode-ai/${name}`,
+ name: `@opencode/${name}`,
version: Script.version,
license: pkg.license,
repository: { type: "git", url: "git+https://github.com/anomalyco/opencode.git" },
diff --git a/packages/cli/script/build.ts b/packages/cli/script/build.ts
index dbb38f05f75..3c0c7057b4f 100755
--- a/packages/cli/script/build.ts
+++ b/packages/cli/script/build.ts
@@ -3,7 +3,7 @@
import { $ } from "bun"
import { mkdir, rm } from "fs/promises"
import path from "path"
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { createSolidTransformPlugin } from "@opentui/solid/bun-plugin"
import type { BunPlugin } from "bun"
import pkg from "../package.json"
@@ -169,7 +169,7 @@ export default { path: file, version: ${JSON.stringify(opencodePty.version)}, sh
path.join(outdir, name, "package.json"),
JSON.stringify(
{
- name: `@opencode-ai/${name}`,
+ name: `@opencode/${name}`,
version: Script.version,
license: "MIT",
repository: { type: "git", url: "git+https://github.com/anomalyco/opencode.git" },
diff --git a/packages/cli/script/publish.ts b/packages/cli/script/publish.ts
index 01669503086..7bd46db8790 100755
--- a/packages/cli/script/publish.ts
+++ b/packages/cli/script/publish.ts
@@ -1,13 +1,14 @@
#!/usr/bin/env bun
import { $ } from "bun"
import pkg from "../package.json"
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { fileURLToPath } from "url"
import { existsSync } from "fs"
import { UpdateArtifact } from "../../../script/update-artifact"
const dir = fileURLToPath(new URL("..", import.meta.url))
process.chdir(dir)
+const dryRun = process.argv.includes("--dry-run")
async function published(name: string, version: string) {
return (await $`npm view ${name}@${version} version`.nothrow()).exitCode === 0
@@ -15,11 +16,11 @@ async function published(name: string, version: string) {
async function publish(dir: string, name: string, version: string) {
if (process.platform !== "win32") await $`chmod -R 755 .`.cwd(dir)
- const exists = await published(name, version)
+ const exists = !dryRun && (await published(name, version))
if (exists) console.log(`already published ${name}@${version}`)
if (!exists) {
await $`bun pm pack`.cwd(dir)
- await $`npm publish *.tgz --access public --tag ${Script.channel}`.cwd(dir)
+ if (!dryRun) await $`npm publish *.tgz --access public --tag ${Script.channel}`.cwd(dir)
}
}
@@ -74,10 +75,11 @@ async function publishDistribution(input: {
await Promise.all(
Object.entries(binaries).map(([name, version]) =>
- publish(`${input.root}/${name.replace("@opencode-ai/", "")}`, name, version),
+ publish(`${input.root}/${name.replace("@opencode/", "")}`, name, version),
),
)
await publish(`${input.root}/${input.name}`, input.name, version)
+ if (dryRun) return
await UpdateArtifact.publish({
channel: Script.channel,
name: input.artifact,
@@ -91,15 +93,15 @@ await publishDistribution({
root: "./dist",
name: pkg.name,
binary: "opencode2",
- packagePrefix: "@opencode-ai/cli-",
+ packagePrefix: "@opencode/cli-",
artifact: "cli",
})
if (existsSync("./dist/node")) {
await publishDistribution({
root: "./dist/node",
- name: "opencode-node",
+ name: "@opencode/cli-node",
binary: "opencode2-node",
- packagePrefix: "@opencode-ai/cli-node-",
+ packagePrefix: "@opencode/cli-node-",
artifact: "cli-node",
})
}
diff --git a/packages/cli/script/service-smoke.ts b/packages/cli/script/service-smoke.ts
index 46d0582d97e..7353a99b9fa 100644
--- a/packages/cli/script/service-smoke.ts
+++ b/packages/cli/script/service-smoke.ts
@@ -1,8 +1,8 @@
#!/usr/bin/env bun
import { NodeFileSystem } from "@effect/platform-node"
-import { Service } from "@opencode-ai/client/effect/service"
-import { ServiceStatus } from "@opencode-ai/protocol/groups/health"
+import { Service } from "@opencode/client/effect/service"
+import { ServiceStatus } from "@opencode/protocol/groups/health"
import { Effect, Schema } from "effect"
import fs from "node:fs/promises"
import os from "node:os"
diff --git a/packages/cli/src/acp/agent.ts b/packages/cli/src/acp/agent.ts
index c01ec940186..2d962c2b734 100644
--- a/packages/cli/src/acp/agent.ts
+++ b/packages/cli/src/acp/agent.ts
@@ -16,7 +16,7 @@ import {
type SetSessionConfigOptionRequest,
type SetSessionModeRequest,
} from "@agentclientprotocol/sdk"
-import type { OpenCodeClient } from "@opencode-ai/client/promise"
+import type { OpenCodeClient } from "@opencode/client/promise"
import { ACPError } from "./error"
import { ACPService } from "./service"
diff --git a/packages/cli/src/acp/event.ts b/packages/cli/src/acp/event.ts
index 86746a5f091..9bb1cfaebda 100644
--- a/packages/cli/src/acp/event.ts
+++ b/packages/cli/src/acp/event.ts
@@ -4,7 +4,7 @@ import type {
OpenCodeClient,
SessionMessageAssistant,
SessionMessageInfo,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import { partsToContentChunks, type ReplayPart } from "./content"
import { ACPError } from "./error"
import { replyPermission, syncEditedFiles } from "./permission"
diff --git a/packages/cli/src/acp/permission.ts b/packages/cli/src/acp/permission.ts
index cef7fc2cf4c..83c8e2f28f1 100644
--- a/packages/cli/src/acp/permission.ts
+++ b/packages/cli/src/acp/permission.ts
@@ -1,6 +1,6 @@
import type { AgentSideConnection, PermissionOption, ToolCallContent, ToolCallLocation } from "@agentclientprotocol/sdk"
-import type { EventSubscribeOutput, OpenCodeClient } from "@opencode-ai/client/promise"
-import { Patch } from "@opencode-ai/util/patch"
+import type { EventSubscribeOutput, OpenCodeClient } from "@opencode/client/promise"
+import { Patch } from "@opencode/util/patch"
import { Result } from "effect"
import { isAbsolute, resolve } from "node:path"
import { pendingToolCall, stringValue, toLocations, toToolKind, type ToolInput } from "./tool"
diff --git a/packages/cli/src/acp/service.ts b/packages/cli/src/acp/service.ts
index f2fa2ab180e..97d94518b3a 100644
--- a/packages/cli/src/acp/service.ts
+++ b/packages/cli/src/acp/service.ts
@@ -7,8 +7,8 @@ import {
type SessionInfo,
type SessionMessageInfo,
type SkillInfo,
-} from "@opencode-ai/client/promise"
-import { withTimestampedFallback } from "@opencode-ai/util/session-title-fallback"
+} from "@opencode/client/promise"
+import { withTimestampedFallback } from "@opencode/util/session-title-fallback"
import type {
AgentSideConnection,
AuthenticateRequest,
@@ -40,7 +40,7 @@ import type {
SetSessionModeResponse,
} from "@agentclientprotocol/sdk"
import { OPENCODE_VERSION } from "../version"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
+import { SessionMessage } from "@opencode/schema/session-message"
import { buildConfigOptions, parseModelSelection, type ConfigOptionProvider } from "./config-option"
import { promptContentToParts } from "./content"
import {
diff --git a/packages/cli/src/acp/tool.ts b/packages/cli/src/acp/tool.ts
index 74092d88535..68075e66b1a 100644
--- a/packages/cli/src/acp/tool.ts
+++ b/packages/cli/src/acp/tool.ts
@@ -1,6 +1,6 @@
import { isAbsolute, resolve } from "node:path"
import type { ToolCall, ToolCallContent, ToolCallLocation, ToolCallUpdate, ToolKind } from "@agentclientprotocol/sdk"
-import { readDisplayText } from "@opencode-ai/tui/mini/tool"
+import { readDisplayText } from "@opencode/tui/mini/tool"
export type ToolInput = Record
export type ToolContent = ReadonlyArray<
diff --git a/packages/cli/src/commands/handlers/acp.ts b/packages/cli/src/commands/handlers/acp.ts
index 3d0e9f73bb2..9170b646eed 100644
--- a/packages/cli/src/commands/handlers/acp.ts
+++ b/packages/cli/src/commands/handlers/acp.ts
@@ -1,6 +1,6 @@
import { AgentSideConnection, ndJsonStream } from "@agentclientprotocol/sdk"
-import { OpenCode } from "@opencode-ai/client/promise"
-import { Service } from "@opencode-ai/client/effect/service"
+import { OpenCode } from "@opencode/client/promise"
+import { Service } from "@opencode/client/effect/service"
import { Effect } from "effect"
import { ACP } from "../../acp/agent"
import { Commands } from "../commands"
diff --git a/packages/cli/src/commands/handlers/api.ts b/packages/cli/src/commands/handlers/api.ts
index e1177a035c6..ed511cbec40 100644
--- a/packages/cli/src/commands/handlers/api.ts
+++ b/packages/cli/src/commands/handlers/api.ts
@@ -2,7 +2,7 @@ import { EOL } from "node:os"
import { Effect, Option } from "effect"
import { Commands } from "../commands"
import { Runtime } from "../../framework/runtime"
-import { Service, type Endpoint } from "@opencode-ai/client/effect/service"
+import { Service, type Endpoint } from "@opencode/client/effect/service"
import { ServerConnection } from "../../services/server-connection"
const methods = new Set(["delete", "get", "head", "options", "patch", "post", "put"])
diff --git a/packages/cli/src/commands/handlers/auth/form.ts b/packages/cli/src/commands/handlers/auth/form.ts
index d1b931db978..0068f149036 100644
--- a/packages/cli/src/commands/handlers/auth/form.ts
+++ b/packages/cli/src/commands/handlers/auth/form.ts
@@ -1,6 +1,6 @@
import { confirm, log, multiselect, password, select, text, type Option } from "@clack/prompts"
import { Effect } from "effect"
-import type { FormAnswer, FormField, FormFields } from "@opencode-ai/client"
+import type { FormAnswer, FormField, FormFields } from "@opencode/client"
import { openUrl, prompt, requireInteractive } from "../../../ui/prompt"
const skip = Symbol("skip")
diff --git a/packages/cli/src/commands/handlers/auth/login.ts b/packages/cli/src/commands/handlers/auth/login.ts
index 20ec8c68e22..123240a7339 100644
--- a/packages/cli/src/commands/handlers/auth/login.ts
+++ b/packages/cli/src/commands/handlers/auth/login.ts
@@ -1,6 +1,6 @@
import { autocomplete, intro, log, outro, select, spinner, text } from "@clack/prompts"
import { Effect, Option } from "effect"
-import type { FormAnswer, IntegrationInfo, OpenCodeClient } from "@opencode-ai/client"
+import type { FormAnswer, IntegrationInfo, OpenCodeClient } from "@opencode/client"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
import { handlePromptErrors, openUrl, prompt, requireInteractive } from "../../../ui/prompt"
diff --git a/packages/cli/src/commands/handlers/auth/logout.ts b/packages/cli/src/commands/handlers/auth/logout.ts
index e9ac770d36f..d883eb62c24 100644
--- a/packages/cli/src/commands/handlers/auth/logout.ts
+++ b/packages/cli/src/commands/handlers/auth/logout.ts
@@ -1,6 +1,6 @@
import { autocomplete, intro, outro, spinner } from "@clack/prompts"
import { Effect, Option } from "effect"
-import type { IntegrationInfo } from "@opencode-ai/client"
+import type { IntegrationInfo } from "@opencode/client"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
import { handlePromptErrors, prompt, requireInteractive } from "../../../ui/prompt"
diff --git a/packages/cli/src/commands/handlers/auth/shared.ts b/packages/cli/src/commands/handlers/auth/shared.ts
index 6a1bdf12363..b3d91dd7889 100644
--- a/packages/cli/src/commands/handlers/auth/shared.ts
+++ b/packages/cli/src/commands/handlers/auth/shared.ts
@@ -1,6 +1,6 @@
import { Effect } from "effect"
-import { OpenCode, type IntegrationInfo, type IntegrationMethod, type OpenCodeClient } from "@opencode-ai/client"
-import { Service } from "@opencode-ai/client/effect/service"
+import { OpenCode, type IntegrationInfo, type IntegrationMethod, type OpenCodeClient } from "@opencode/client"
+import { Service } from "@opencode/client/effect/service"
import { ServerConnection } from "../../../services/server-connection"
export const location = { directory: process.cwd() }
diff --git a/packages/cli/src/commands/handlers/console/login.ts b/packages/cli/src/commands/handlers/console/login.ts
index a0c767c718d..0ee62295c3a 100644
--- a/packages/cli/src/commands/handlers/console/login.ts
+++ b/packages/cli/src/commands/handlers/console/login.ts
@@ -1,7 +1,7 @@
import { Cause, Effect, Exit, Option } from "effect"
-import { Service } from "@opencode-ai/client/effect/service"
-import { OpenCode, type OpenCodeClient } from "@opencode-ai/client/promise"
-import { AppProcess } from "@opencode-ai/util/process"
+import { Service } from "@opencode/client/effect/service"
+import { OpenCode, type OpenCodeClient } from "@opencode/client/promise"
+import { AppProcess } from "@opencode/util/process"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
import { ServiceConfig } from "../../../services/service-config"
diff --git a/packages/cli/src/commands/handlers/debug/agents.ts b/packages/cli/src/commands/handlers/debug/agents.ts
index 4d81e6c8b28..784d8648360 100644
--- a/packages/cli/src/commands/handlers/debug/agents.ts
+++ b/packages/cli/src/commands/handlers/debug/agents.ts
@@ -1,9 +1,9 @@
import { EOL } from "os"
import { Effect } from "effect"
-import { OpenCode } from "@opencode-ai/client"
+import { OpenCode } from "@opencode/client"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
-import { Service } from "@opencode-ai/client/effect/service"
+import { Service } from "@opencode/client/effect/service"
import { ServiceConfig } from "../../../services/service-config"
export default Runtime.handler(
diff --git a/packages/cli/src/commands/handlers/debug/config.ts b/packages/cli/src/commands/handlers/debug/config.ts
index 7dd822ce84d..3eb1b608507 100644
--- a/packages/cli/src/commands/handlers/debug/config.ts
+++ b/packages/cli/src/commands/handlers/debug/config.ts
@@ -1,7 +1,7 @@
import { EOL } from "os"
import { Effect } from "effect"
-import { OpenCode } from "@opencode-ai/client"
-import { Service } from "@opencode-ai/client/effect/service"
+import { OpenCode } from "@opencode/client"
+import { Service } from "@opencode/client/effect/service"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
import { ServiceConfig } from "../../../services/service-config"
diff --git a/packages/cli/src/commands/handlers/debug/paths.ts b/packages/cli/src/commands/handlers/debug/paths.ts
index 732dae9ff2e..6e02917a7dc 100644
--- a/packages/cli/src/commands/handlers/debug/paths.ts
+++ b/packages/cli/src/commands/handlers/debug/paths.ts
@@ -1,6 +1,6 @@
import { EOL } from "os"
import { Effect } from "effect"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
diff --git a/packages/cli/src/commands/handlers/default.ts b/packages/cli/src/commands/handlers/default.ts
index 90dcc14110b..cc47db98eed 100644
--- a/packages/cli/src/commands/handlers/default.ts
+++ b/packages/cli/src/commands/handlers/default.ts
@@ -1,6 +1,6 @@
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Global } from "@opencode-ai/util/global"
-import { run } from "@opencode-ai/tui"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Global } from "@opencode/util/global"
+import { run } from "@opencode/tui"
import { Commands } from "../commands"
import { Runtime } from "../../framework/runtime"
import { Config } from "../../config"
@@ -8,7 +8,7 @@ import { Context, Effect, Fiber, FileSystem, Option, Queue } from "effect"
import { ServerConnection } from "../../services/server-connection"
import { Updater } from "../../services/updater"
import { UpdatePreflight } from "../../services/update-preflight"
-import { Npm } from "@opencode-ai/util/npm"
+import { Npm } from "@opencode/util/npm"
import { OPENCODE_ARTIFACT, OPENCODE_CHANNEL, OPENCODE_VERSION } from "../../version"
import { Env } from "../../env"
diff --git a/packages/cli/src/commands/handlers/export.ts b/packages/cli/src/commands/handlers/export.ts
index f8fbff092ed..0487bc436e8 100644
--- a/packages/cli/src/commands/handlers/export.ts
+++ b/packages/cli/src/commands/handlers/export.ts
@@ -1,6 +1,6 @@
import { autocomplete, cancel, intro, isCancel, log, outro } from "@clack/prompts"
-import { OpenCode } from "@opencode-ai/client"
-import { Service } from "@opencode-ai/client/effect/service"
+import { OpenCode } from "@opencode/client"
+import { Service } from "@opencode/client/effect/service"
import { Effect, Option } from "effect"
import { EOL } from "node:os"
import { Commands } from "../commands"
diff --git a/packages/cli/src/commands/handlers/import.ts b/packages/cli/src/commands/handlers/import.ts
index c23643fc6fb..fddd73dde94 100644
--- a/packages/cli/src/commands/handlers/import.ts
+++ b/packages/cli/src/commands/handlers/import.ts
@@ -1,7 +1,7 @@
-import { OpenCode } from "@opencode-ai/client"
-import { Service } from "@opencode-ai/client/effect/service"
-import { Session } from "@opencode-ai/schema/session"
-import { SessionTransfer } from "@opencode-ai/schema/session-transfer"
+import { OpenCode } from "@opencode/client"
+import { Service } from "@opencode/client/effect/service"
+import { Session } from "@opencode/schema/session"
+import { SessionTransfer } from "@opencode/schema/session-transfer"
import { Effect, Option, Schema } from "effect"
import { EOL } from "node:os"
import path from "node:path"
diff --git a/packages/cli/src/commands/handlers/mcp/add.ts b/packages/cli/src/commands/handlers/mcp/add.ts
index 89d2c937f19..9e8a7087d37 100644
--- a/packages/cli/src/commands/handlers/mcp/add.ts
+++ b/packages/cli/src/commands/handlers/mcp/add.ts
@@ -3,7 +3,7 @@ import path from "node:path"
import { readFile, stat, writeFile } from "node:fs/promises"
import { Effect, Option } from "effect"
import { applyEdits, modify } from "jsonc-parser"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
diff --git a/packages/cli/src/commands/handlers/mcp/auth.ts b/packages/cli/src/commands/handlers/mcp/auth.ts
index 0d7fd3afd4a..bd8ab349c48 100644
--- a/packages/cli/src/commands/handlers/mcp/auth.ts
+++ b/packages/cli/src/commands/handlers/mcp/auth.ts
@@ -5,10 +5,10 @@ import {
type IntegrationAttemptStatus,
type IntegrationOAuthMethod,
type OpenCodeClient,
-} from "@opencode-ai/client"
+} from "@opencode/client"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
-import { Service } from "@opencode-ai/client/effect/service"
+import { Service } from "@opencode/client/effect/service"
import { ServiceConfig } from "../../../services/service-config"
import { resolveIntegration } from "./resolve"
diff --git a/packages/cli/src/commands/handlers/mcp/list.ts b/packages/cli/src/commands/handlers/mcp/list.ts
index d26e24e3d1e..e1dbf956e19 100644
--- a/packages/cli/src/commands/handlers/mcp/list.ts
+++ b/packages/cli/src/commands/handlers/mcp/list.ts
@@ -1,9 +1,9 @@
import { EOL } from "node:os"
import { Effect } from "effect"
-import { OpenCode, type McpServer } from "@opencode-ai/client"
+import { OpenCode, type McpServer } from "@opencode/client"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
-import { Service } from "@opencode-ai/client/effect/service"
+import { Service } from "@opencode/client/effect/service"
import { ServiceConfig } from "../../../services/service-config"
export default Runtime.handler(
diff --git a/packages/cli/src/commands/handlers/mcp/logout.ts b/packages/cli/src/commands/handlers/mcp/logout.ts
index 6935bc6a8ab..ddcc02bb176 100644
--- a/packages/cli/src/commands/handlers/mcp/logout.ts
+++ b/packages/cli/src/commands/handlers/mcp/logout.ts
@@ -1,9 +1,9 @@
import { EOL } from "node:os"
import { Effect } from "effect"
-import { OpenCode } from "@opencode-ai/client"
+import { OpenCode } from "@opencode/client"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
-import { Service } from "@opencode-ai/client/effect/service"
+import { Service } from "@opencode/client/effect/service"
import { ServiceConfig } from "../../../services/service-config"
import { resolveIntegration } from "./resolve"
diff --git a/packages/cli/src/commands/handlers/mcp/resolve.ts b/packages/cli/src/commands/handlers/mcp/resolve.ts
index 1ee5e195686..449adccb4eb 100644
--- a/packages/cli/src/commands/handlers/mcp/resolve.ts
+++ b/packages/cli/src/commands/handlers/mcp/resolve.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import type { OpenCodeClient } from "@opencode-ai/client"
+import type { OpenCodeClient } from "@opencode/client"
// Resolve through the MCP-owned integrationID rather than matching integration names: the shared
// integration registry also holds provider/plugin integrations, whose names could collide with a server.
diff --git a/packages/cli/src/commands/handlers/mini.ts b/packages/cli/src/commands/handlers/mini.ts
index 596c17a1b79..9175311de1c 100644
--- a/packages/cli/src/commands/handlers/mini.ts
+++ b/packages/cli/src/commands/handlers/mini.ts
@@ -3,8 +3,8 @@ import { Commands } from "../commands"
import { Runtime } from "../../framework/runtime"
import { ServerConnection } from "../../services/server-connection"
import { Config } from "../../config"
-import { resolve } from "@opencode-ai/tui/config"
-import { Global } from "@opencode-ai/util/global"
+import { resolve } from "@opencode/tui/config"
+import { Global } from "@opencode/util/global"
export default Runtime.handler(Commands.commands.mini, (input) =>
Effect.gen(function* () {
diff --git a/packages/cli/src/commands/handlers/models.ts b/packages/cli/src/commands/handlers/models.ts
index 9b23c6d0c36..2ad341ec4e2 100644
--- a/packages/cli/src/commands/handlers/models.ts
+++ b/packages/cli/src/commands/handlers/models.ts
@@ -1,5 +1,5 @@
-import { OpenCode } from "@opencode-ai/client"
-import { Service } from "@opencode-ai/client/effect/service"
+import { OpenCode } from "@opencode/client"
+import { Service } from "@opencode/client/effect/service"
import { Effect, Option } from "effect"
import { EOL } from "node:os"
import { Commands } from "../commands"
diff --git a/packages/cli/src/commands/handlers/pair.ts b/packages/cli/src/commands/handlers/pair.ts
index e938444efbd..8dee29b235b 100644
--- a/packages/cli/src/commands/handlers/pair.ts
+++ b/packages/cli/src/commands/handlers/pair.ts
@@ -1,7 +1,7 @@
import { EOL } from "os"
import { Effect } from "effect"
-import { Service } from "@opencode-ai/client/effect/service"
-import { OpenCode } from "@opencode-ai/client/promise"
+import { Service } from "@opencode/client/effect/service"
+import { OpenCode } from "@opencode/client/promise"
import { renderUnicodeCompact } from "uqr"
import { Commands } from "../commands"
import { Runtime } from "../../framework/runtime"
diff --git a/packages/cli/src/commands/handlers/plugin/add.ts b/packages/cli/src/commands/handlers/plugin/add.ts
index 18fb9ca9c74..fca542bf450 100644
--- a/packages/cli/src/commands/handlers/plugin/add.ts
+++ b/packages/cli/src/commands/handlers/plugin/add.ts
@@ -3,9 +3,9 @@ import path from "node:path"
import { mkdir, readFile, rename, writeFile } from "node:fs/promises"
import { Effect } from "effect"
import { applyEdits, modify, parse, type ParseError } from "jsonc-parser"
-import { Global } from "@opencode-ai/util/global"
-import { Npm } from "@opencode-ai/util/npm"
-import { Host } from "@opencode-ai/plugin/host"
+import { Global } from "@opencode/util/global"
+import { Npm } from "@opencode/util/npm"
+import { Host } from "@opencode/plugin/host"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
import { resolveConfigPath } from "../mcp/add"
diff --git a/packages/cli/src/commands/handlers/plugin/inventory.ts b/packages/cli/src/commands/handlers/plugin/inventory.ts
index c897774db35..5c19e1ee1d8 100644
--- a/packages/cli/src/commands/handlers/plugin/inventory.ts
+++ b/packages/cli/src/commands/handlers/plugin/inventory.ts
@@ -1,8 +1,8 @@
import { EOL } from "node:os"
import { Cause, Effect, Exit } from "effect"
-import { OpenCode, type PluginInfo } from "@opencode-ai/client"
-import { Service } from "@opencode-ai/client/effect/service"
-import { Npm } from "@opencode-ai/util/npm"
+import { OpenCode, type PluginInfo } from "@opencode/client"
+import { Service } from "@opencode/client/effect/service"
+import { Npm } from "@opencode/util/npm"
import { Config } from "../../../config"
import { ServiceConfig } from "../../../services/service-config"
diff --git a/packages/cli/src/commands/handlers/plugin/list.ts b/packages/cli/src/commands/handlers/plugin/list.ts
index 8104ed3f729..f35c2898182 100644
--- a/packages/cli/src/commands/handlers/plugin/list.ts
+++ b/packages/cli/src/commands/handlers/plugin/list.ts
@@ -1,17 +1,17 @@
import { EOL } from "node:os"
import path from "node:path"
import { Effect } from "effect"
-import { OpenCode, type PluginInfo } from "@opencode-ai/client"
-import { Service } from "@opencode-ai/client/effect/service"
+import { OpenCode, type PluginInfo } from "@opencode/client"
+import { Service } from "@opencode/client/effect/service"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
import { ServiceConfig } from "../../../services/service-config"
import { Config } from "../../../config"
-import { Global } from "@opencode-ai/util/global"
-import { Npm } from "@opencode-ai/util/npm"
-import { Host } from "@opencode-ai/plugin/host"
+import { Global } from "@opencode/util/global"
+import { Npm } from "@opencode/util/npm"
+import { Host } from "@opencode/plugin/host"
import { fileURLToPath } from "node:url"
-import { discoverPluginTargets, localPluginDirectories, localSource } from "@opencode-ai/tui/plugin/discovery"
+import { discoverPluginTargets, localPluginDirectories, localSource } from "@opencode/tui/plugin/discovery"
export default Runtime.handler(
Commands.commands.plugin.commands.list,
diff --git a/packages/cli/src/commands/handlers/plugin/remove.ts b/packages/cli/src/commands/handlers/plugin/remove.ts
index b93000bd676..c471e92e278 100644
--- a/packages/cli/src/commands/handlers/plugin/remove.ts
+++ b/packages/cli/src/commands/handlers/plugin/remove.ts
@@ -3,7 +3,7 @@ import path from "node:path"
import { readFile, rename, writeFile } from "node:fs/promises"
import { Effect } from "effect"
import { applyEdits, modify, parse, type ParseError } from "jsonc-parser"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
import { Config } from "../../../config"
diff --git a/packages/cli/src/commands/handlers/plugin/update.ts b/packages/cli/src/commands/handlers/plugin/update.ts
index 3d8f92cc086..010f13c6d36 100644
--- a/packages/cli/src/commands/handlers/plugin/update.ts
+++ b/packages/cli/src/commands/handlers/plugin/update.ts
@@ -1,6 +1,6 @@
import { EOL } from "node:os"
import { Cause, Effect, Exit, Option } from "effect"
-import { Npm } from "@opencode-ai/util/npm"
+import { Npm } from "@opencode/util/npm"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
import { inspect } from "./inventory"
diff --git a/packages/cli/src/commands/handlers/service/restart.ts b/packages/cli/src/commands/handlers/service/restart.ts
index b18691677c2..afc7bb457c1 100644
--- a/packages/cli/src/commands/handlers/service/restart.ts
+++ b/packages/cli/src/commands/handlers/service/restart.ts
@@ -1,6 +1,6 @@
import { EOL } from "os"
import { Effect } from "effect"
-import { Service } from "@opencode-ai/client/effect/service"
+import { Service } from "@opencode/client/effect/service"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
import { ServiceConfig } from "../../../services/service-config"
diff --git a/packages/cli/src/commands/handlers/service/start.ts b/packages/cli/src/commands/handlers/service/start.ts
index dfdbac3997a..6adb647a02c 100644
--- a/packages/cli/src/commands/handlers/service/start.ts
+++ b/packages/cli/src/commands/handlers/service/start.ts
@@ -1,6 +1,6 @@
import { EOL } from "os"
import { Effect } from "effect"
-import { Service } from "@opencode-ai/client/effect/service"
+import { Service } from "@opencode/client/effect/service"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
import { ServiceConfig } from "../../../services/service-config"
diff --git a/packages/cli/src/commands/handlers/service/status.ts b/packages/cli/src/commands/handlers/service/status.ts
index 8f27ab2ec2d..ade0a391993 100644
--- a/packages/cli/src/commands/handlers/service/status.ts
+++ b/packages/cli/src/commands/handlers/service/status.ts
@@ -1,6 +1,6 @@
import { EOL } from "os"
import { Effect } from "effect"
-import { Service } from "@opencode-ai/client/effect/service"
+import { Service } from "@opencode/client/effect/service"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
import { ServiceConfig } from "../../../services/service-config"
diff --git a/packages/cli/src/commands/handlers/service/stop.ts b/packages/cli/src/commands/handlers/service/stop.ts
index 5127355d285..d29f33275b4 100644
--- a/packages/cli/src/commands/handlers/service/stop.ts
+++ b/packages/cli/src/commands/handlers/service/stop.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import { Service } from "@opencode-ai/client/effect/service"
+import { Service } from "@opencode/client/effect/service"
import { Commands } from "../../commands"
import { Runtime } from "../../../framework/runtime"
import { ServiceConfig } from "../../../services/service-config"
diff --git a/packages/cli/src/commands/handlers/session/delete.ts b/packages/cli/src/commands/handlers/session/delete.ts
index 9b11f80c33b..549e517309b 100644
--- a/packages/cli/src/commands/handlers/session/delete.ts
+++ b/packages/cli/src/commands/handlers/session/delete.ts
@@ -1,5 +1,5 @@
-import { OpenCode } from "@opencode-ai/client"
-import { Service } from "@opencode-ai/client/effect/service"
+import { OpenCode } from "@opencode/client"
+import { Service } from "@opencode/client/effect/service"
import { Effect, Option } from "effect"
import { EOL } from "node:os"
import { Commands } from "../../commands"
diff --git a/packages/cli/src/commands/handlers/session/list.ts b/packages/cli/src/commands/handlers/session/list.ts
index e56a3195d20..969867c9d21 100644
--- a/packages/cli/src/commands/handlers/session/list.ts
+++ b/packages/cli/src/commands/handlers/session/list.ts
@@ -1,5 +1,5 @@
-import { OpenCode, type SessionInfo } from "@opencode-ai/client"
-import { Service } from "@opencode-ai/client/effect/service"
+import { OpenCode, type SessionInfo } from "@opencode/client"
+import { Service } from "@opencode/client/effect/service"
import { Effect, Option, Stream } from "effect"
import { EOL } from "node:os"
import { Commands } from "../../commands"
@@ -59,8 +59,8 @@ const handler = Effect.fn("cli.session.list")(function* (
return
}
- const { AppProcess } = yield* Effect.promise(() => import("@opencode-ai/util/process"))
- const { LayerNode } = yield* Effect.promise(() => import("@opencode-ai/util/effect/layer-node"))
+ const { AppProcess } = yield* Effect.promise(() => import("@opencode/util/process"))
+ const { LayerNode } = yield* Effect.promise(() => import("@opencode/util/effect/layer-node"))
const { ChildProcess } = yield* Effect.promise(() => import("effect/unstable/process"))
yield* Effect.gen(function* () {
const processService = yield* AppProcess.Service
diff --git a/packages/cli/src/commands/handlers/stats.ts b/packages/cli/src/commands/handlers/stats.ts
index 321007a73df..2e88b2ca4b8 100644
--- a/packages/cli/src/commands/handlers/stats.ts
+++ b/packages/cli/src/commands/handlers/stats.ts
@@ -1,7 +1,7 @@
-import { ClientError, OpenCode, type SessionStatsInfo } from "@opencode-ai/client"
-import { Service } from "@opencode-ai/client/effect/service"
-import { TokenUsage } from "@opencode-ai/schema/token-usage"
-import { activityCalendar } from "@opencode-ai/util/activity-calendar"
+import { ClientError, OpenCode, type SessionStatsInfo } from "@opencode/client"
+import { Service } from "@opencode/client/effect/service"
+import { TokenUsage } from "@opencode/schema/token-usage"
+import { activityCalendar } from "@opencode/util/activity-calendar"
import { Effect, Option } from "effect"
import { EOL } from "node:os"
import { Commands } from "../commands"
diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts
index 6fc29a0b8e4..cdb31286950 100644
--- a/packages/cli/src/config/config.ts
+++ b/packages/cli/src/config/config.ts
@@ -1,7 +1,7 @@
export * as Config from "./config"
-import { Global } from "@opencode-ai/util/global"
-import { Flock } from "@opencode-ai/util/flock"
+import { Global } from "@opencode/util/global"
+import { Flock } from "@opencode/util/flock"
import { Context, Effect, FileSystem, Layer, Option, Schema } from "effect"
import { produce, type Draft } from "immer"
import { applyEdits, modify, parse, type ParseError } from "jsonc-parser"
diff --git a/packages/cli/src/config/migrate.ts b/packages/cli/src/config/migrate.ts
index 18e135089e4..4745d510465 100644
--- a/packages/cli/src/config/migrate.ts
+++ b/packages/cli/src/config/migrate.ts
@@ -1,8 +1,8 @@
export * as ConfigMigration from "./migrate"
-import { TuiConfigV1 } from "@opencode-ai/tui/config/v1"
-import { TuiKeybind } from "@opencode-ai/tui/config/v1/keybind"
-import { Definitions } from "@opencode-ai/tui/config/keybind"
+import { TuiConfigV1 } from "@opencode/tui/config/v1"
+import { TuiKeybind } from "@opencode/tui/config/v1/keybind"
+import { Definitions } from "@opencode/tui/config/keybind"
import { Effect, FileSystem, Option, Schema } from "effect"
import { randomUUID } from "crypto"
import { applyEdits, createScanner, modify, parse, parseTree, type Node, type ParseError } from "jsonc-parser"
diff --git a/packages/cli/src/config/schema.ts b/packages/cli/src/config/schema.ts
index 211eeebcc19..687dd1e2224 100644
--- a/packages/cli/src/config/schema.ts
+++ b/packages/cli/src/config/schema.ts
@@ -1,4 +1,4 @@
-import { Config } from "@opencode-ai/tui/config"
+import { Config } from "@opencode/tui/config"
import { Schema } from "effect"
export const SchemaURL = "https://opencode.ai/v2/cli.json"
diff --git a/packages/cli/src/cpu-profile.ts b/packages/cli/src/cpu-profile.ts
index 9c7bcf2751d..bd36528e7d3 100644
--- a/packages/cli/src/cpu-profile.ts
+++ b/packages/cli/src/cpu-profile.ts
@@ -1,6 +1,6 @@
export * as CpuProfile from "./cpu-profile"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Effect, FileSystem, Queue } from "effect"
import { Session } from "node:inspector"
import path from "node:path"
diff --git a/packages/cli/src/framework/runtime.ts b/packages/cli/src/framework/runtime.ts
index c0a84008164..76c99ab9df5 100644
--- a/packages/cli/src/framework/runtime.ts
+++ b/packages/cli/src/framework/runtime.ts
@@ -2,10 +2,10 @@ import { Effect, FileSystem, Scope } from "effect"
import { Command } from "effect/unstable/cli"
import { PrintLogs } from "../commands/commands"
import { Spec } from "./spec"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Updater } from "../services/updater"
import { Config } from "../config"
-import { Npm } from "@opencode-ai/util/npm"
+import { Npm } from "@opencode/util/npm"
export type Input =
Value extends Spec.Node
diff --git a/packages/cli/src/heap.ts b/packages/cli/src/heap.ts
index 7bf76da98ba..e6930d19e0a 100644
--- a/packages/cli/src/heap.ts
+++ b/packages/cli/src/heap.ts
@@ -1,4 +1,4 @@
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Effect, Queue } from "effect"
import path from "node:path"
diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts
index 7f445f2d799..2aa07a08c16 100755
--- a/packages/cli/src/index.ts
+++ b/packages/cli/src/index.ts
@@ -4,14 +4,14 @@ import { NodeRuntime, NodeServices } from "@effect/platform-node"
import { Effect } from "effect"
import { Commands } from "./commands/commands"
import { Runtime } from "./framework/runtime"
-import { Observability } from "@opencode-ai/util/observability"
+import { Observability } from "@opencode/util/observability"
import { Updater } from "./services/updater"
import { OPENCODE_ARTIFACT, OPENCODE_CHANNEL, OPENCODE_LOCAL, OPENCODE_VERSION } from "./version"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Global } from "@opencode-ai/util/global"
-import { AppProcess } from "@opencode-ai/util/process"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Global } from "@opencode/util/global"
+import { AppProcess } from "@opencode/util/process"
import { Config } from "./config"
-import { Npm } from "@opencode-ai/util/npm"
+import { Npm } from "@opencode/util/npm"
import { Heap } from "./heap"
import { CpuProfile } from "./cpu-profile"
diff --git a/packages/cli/src/mini-host.ts b/packages/cli/src/mini-host.ts
index ef81a4930c9..3e734ac5872 100644
--- a/packages/cli/src/mini-host.ts
+++ b/packages/cli/src/mini-host.ts
@@ -1,5 +1,5 @@
-import type { MiniFrontendInput } from "@opencode-ai/tui/mini"
-import { createModelPreferenceRepository } from "@opencode-ai/tui/model-preference"
+import type { MiniFrontendInput } from "@opencode/tui/mini"
+import { createModelPreferenceRepository } from "@opencode/tui/model-preference"
import fs from "node:fs"
import { readFile } from "node:fs/promises"
import path from "node:path"
@@ -151,7 +151,7 @@ export function createMiniHost(input: {
},
editor: {
async open(options) {
- const { openEditor } = await import("@opencode-ai/tui/editor")
+ const { openEditor } = await import("@opencode/tui/editor")
return openEditor(options)
},
},
diff --git a/packages/cli/src/mini.ts b/packages/cli/src/mini.ts
index c6735e922a6..aeeda5570d4 100644
--- a/packages/cli/src/mini.ts
+++ b/packages/cli/src/mini.ts
@@ -1,6 +1,6 @@
-import { Service, type Endpoint } from "@opencode-ai/client/effect/service"
-import { ClientError, OpenCode, type OpenCodeClient } from "@opencode-ai/client/promise"
-import type { MiniFrontendInput } from "@opencode-ai/tui/mini"
+import { Service, type Endpoint } from "@opencode/client/effect/service"
+import { ClientError, OpenCode, type OpenCodeClient } from "@opencode/client/promise"
+import type { MiniFrontendInput } from "@opencode/tui/mini"
import { setTimeout } from "node:timers/promises"
import { readStdin } from "./util/io"
import { createMiniHost, INTERACTIVE_INPUT_ERROR, usingInteractiveStdin } from "./mini-host"
@@ -35,7 +35,7 @@ export async function runMini(input: MiniCommandInput) {
validate(input)
const result = await usingInteractiveStdin(async (terminal) => {
const initialInput = mergeInput(process.stdin.isTTY ? undefined : await readStdin(), input.prompt)
- const frontendTask = import("@opencode-ai/tui/mini")
+ const frontendTask = import("@opencode/tui/mini")
const directory = localDirectory()
const connection = createMiniConnection(input.server)
const sdk = connection.sdk
diff --git a/packages/cli/src/node/plugin-runtime.effect.ts b/packages/cli/src/node/plugin-runtime.effect.ts
index d17fab342fd..17488f239ed 100644
--- a/packages/cli/src/node/plugin-runtime.effect.ts
+++ b/packages/cli/src/node/plugin-runtime.effect.ts
@@ -9,8 +9,8 @@ import {
Provider,
Reference,
Skill,
-} from "@opencode-ai/plugin/effect"
-import { Tool } from "@opencode-ai/schema/tool"
+} from "@opencode/plugin/effect"
+import { Tool } from "@opencode/schema/tool"
const key = Symbol.for("opencode.plugin.v2.effect")
;(globalThis as typeof globalThis & { [key]?: unknown })[key] = {
diff --git a/packages/cli/src/node/plugin-runtime.promise.ts b/packages/cli/src/node/plugin-runtime.promise.ts
index fa33d6edae7..cca121a61ad 100644
--- a/packages/cli/src/node/plugin-runtime.promise.ts
+++ b/packages/cli/src/node/plugin-runtime.promise.ts
@@ -9,7 +9,7 @@ import {
Provider,
Reference,
Skill,
-} from "@opencode-ai/plugin"
+} from "@opencode/plugin"
const key = Symbol.for("opencode.plugin.v2.promise")
;(globalThis as typeof globalThis & { [key]?: unknown })[key] = {
diff --git a/packages/cli/src/node/target.ts b/packages/cli/src/node/target.ts
index c9cfcb0eadb..06216d729ec 100644
--- a/packages/cli/src/node/target.ts
+++ b/packages/cli/src/node/target.ts
@@ -39,9 +39,9 @@ export const shellParserWasmAssets = {
export const nodeExecArgv = ["--experimental-ffi", "--use-system-ca", "--disable-warning=ExperimentalWarning"] as const
export const attentionSoundAssets = [
- "@opencode-ai/ui/audio/bip-bop-01.mp3",
- "@opencode-ai/ui/audio/bip-bop-03.mp3",
- "@opencode-ai/ui/audio/staplebops-06.mp3",
- "@opencode-ai/ui/audio/nope-03.mp3",
- "@opencode-ai/ui/audio/yup-01.mp3",
+ "@opencode/ui/audio/bip-bop-01.mp3",
+ "@opencode/ui/audio/bip-bop-03.mp3",
+ "@opencode/ui/audio/staplebops-06.mp3",
+ "@opencode/ui/audio/nope-03.mp3",
+ "@opencode/ui/audio/yup-01.mp3",
] as const
diff --git a/packages/cli/src/run/noninteractive.ts b/packages/cli/src/run/noninteractive.ts
index e90aac231fb..e97898d5b01 100644
--- a/packages/cli/src/run/noninteractive.ts
+++ b/packages/cli/src/run/noninteractive.ts
@@ -6,11 +6,11 @@ import type {
SessionMessageAssistantTool,
SessionMessageInfo,
ToolContent,
-} from "@opencode-ai/client/promise"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
+} from "@opencode/client/promise"
+import { SessionMessage } from "@opencode/schema/session-message"
import { EOL } from "node:os"
import { readFile } from "node:fs/promises"
-import { nonEmptyToolContent, toolOutputText, type MiniToolPart } from "@opencode-ai/tui/mini/tool"
+import { nonEmptyToolContent, toolOutputText, type MiniToolPart } from "@opencode/tui/mini/tool"
import { UI } from "./ui"
type Model = {
diff --git a/packages/cli/src/run/run.ts b/packages/cli/src/run/run.ts
index 737738db7c8..41e0b1b795b 100644
--- a/packages/cli/src/run/run.ts
+++ b/packages/cli/src/run/run.ts
@@ -1,12 +1,12 @@
-import { Service, type Endpoint } from "@opencode-ai/client/effect/service"
-import { OpenCode, type OpenCodeClient, type SessionMessageAssistantTool } from "@opencode-ai/client/promise"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { Service, type Endpoint } from "@opencode/client/effect/service"
+import { OpenCode, type OpenCodeClient, type SessionMessageAssistantTool } from "@opencode/client/promise"
+import { FSUtil } from "@opencode/util/fs-util"
import { open } from "node:fs/promises"
import path from "node:path"
import { readStdin } from "../util/io"
import { ServerConnection } from "../services/server-connection"
import { parseSessionTargetModel, resolveSessionTarget } from "../session-target"
-import { toolInlineInfo } from "@opencode-ai/tui/mini/tool"
+import { toolInlineInfo } from "@opencode/tui/mini/tool"
import { runNonInteractivePrompt } from "./noninteractive"
import { UI } from "./ui"
import { Env } from "../env"
diff --git a/packages/cli/src/run/v1.ts b/packages/cli/src/run/v1.ts
index f58b73bc105..966d85e0876 100644
--- a/packages/cli/src/run/v1.ts
+++ b/packages/cli/src/run/v1.ts
@@ -1,4 +1,4 @@
-import type { Endpoint } from "@opencode-ai/client/effect/service"
+import type { Endpoint } from "@opencode/client/effect/service"
import { Effect } from "effect"
import path from "node:path"
import { Standalone } from "../services/standalone"
diff --git a/packages/cli/src/server-process.ts b/packages/cli/src/server-process.ts
index 3438ef9907e..764b2dc64f0 100644
--- a/packages/cli/src/server-process.ts
+++ b/packages/cli/src/server-process.ts
@@ -1,14 +1,14 @@
export * as ServerProcess from "./server-process"
import { NodeServices } from "@effect/platform-node"
-import { Service, type DiscoverOptions } from "@opencode-ai/client/effect/service"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Global } from "@opencode-ai/util/global"
+import { Service, type DiscoverOptions } from "@opencode/client/effect/service"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Global } from "@opencode/util/global"
import { OPENCODE_ARTIFACT, OPENCODE_CHANNEL, OPENCODE_VERSION } from "./version"
-import { AppProcess } from "@opencode-ai/util/process"
+import { AppProcess } from "@opencode/util/process"
import { randomBytes, randomUUID } from "node:crypto"
import { Effect, Option, Redacted, Schedule, Schema } from "effect"
-import { PersistentPty } from "@opencode-ai/schema/persistent-pty"
+import { PersistentPty } from "@opencode/schema/persistent-pty"
import { HttpServer } from "effect/unstable/http"
import { Env } from "./env"
import { ServiceConfig } from "./services/service-config"
@@ -64,7 +64,7 @@ const processEffect = Effect.fnUntraced(function* (options: Options) {
? yield* Service.incumbent({ ...serviceOptions, url: serviceURL(hostname, port) })
: undefined
if (incumbent !== undefined) return
- const { start } = yield* Effect.promise(() => import("@opencode-ai/server/process"))
+ const { start } = yield* Effect.promise(() => import("@opencode/server/process"))
const environmentPassword = yield* Env.password
// Keep the lease credential out of the environment inherited by tools.
if (options.mode === "stdio") {
diff --git a/packages/cli/src/services/server-connection.ts b/packages/cli/src/services/server-connection.ts
index 048966554dd..496abd4a6cb 100644
--- a/packages/cli/src/services/server-connection.ts
+++ b/packages/cli/src/services/server-connection.ts
@@ -1,5 +1,5 @@
-import { Service, type Endpoint, type EnsureOptions } from "@opencode-ai/client/effect/service"
-import { ClientError, isUnauthorizedError, OpenCode } from "@opencode-ai/client/promise"
+import { Service, type Endpoint, type EnsureOptions } from "@opencode/client/effect/service"
+import { ClientError, isUnauthorizedError, OpenCode } from "@opencode/client/promise"
import { OPENCODE_VERSION } from "../version"
import { Effect, Redacted } from "effect"
import { Env } from "../env"
diff --git a/packages/cli/src/services/service-config.ts b/packages/cli/src/services/service-config.ts
index ba4512a8c79..d857efa919c 100644
--- a/packages/cli/src/services/service-config.ts
+++ b/packages/cli/src/services/service-config.ts
@@ -1,7 +1,7 @@
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { OPENCODE_CHANNEL, OPENCODE_VERSION } from "../version"
-import { Hash } from "@opencode-ai/util/hash"
-import { Service } from "@opencode-ai/client/effect/service"
+import { Hash } from "@opencode/util/hash"
+import { Service } from "@opencode/client/effect/service"
import { Effect, FileSystem, Option, Schema } from "effect"
import { randomBytes } from "crypto"
import path from "path"
diff --git a/packages/cli/src/services/service-registration.ts b/packages/cli/src/services/service-registration.ts
index 80ff7dfbd71..68e3e307d45 100644
--- a/packages/cli/src/services/service-registration.ts
+++ b/packages/cli/src/services/service-registration.ts
@@ -1,6 +1,6 @@
export * as ServiceRegistration from "./service-registration"
-import { Service, type Info } from "@opencode-ai/client/effect/service"
+import { Service, type Info } from "@opencode/client/effect/service"
import path from "node:path"
import { Effect, FileSystem, Schedule, Schema } from "effect"
import { HttpServer } from "effect/unstable/http"
diff --git a/packages/cli/src/services/standalone.ts b/packages/cli/src/services/standalone.ts
index 4be0d901905..9ec70ac8431 100644
--- a/packages/cli/src/services/standalone.ts
+++ b/packages/cli/src/services/standalone.ts
@@ -1,6 +1,6 @@
-import { Service, type Endpoint } from "@opencode-ai/client/effect/service"
-import { CrossSpawnSpawner } from "@opencode-ai/util/cross-spawn-spawner"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Service, type Endpoint } from "@opencode/client/effect/service"
+import { CrossSpawnSpawner } from "@opencode/util/cross-spawn-spawner"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { Deferred, Effect, Schema, Stream } from "effect"
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process"
import { randomBytes } from "node:crypto"
diff --git a/packages/cli/src/services/update-preflight.tsx b/packages/cli/src/services/update-preflight.tsx
index f18f4a8ff3a..c163b0a93d3 100644
--- a/packages/cli/src/services/update-preflight.tsx
+++ b/packages/cli/src/services/update-preflight.tsx
@@ -4,9 +4,9 @@
import { createCliRenderer, RGBA, TextAttributes, type CliRenderer, type ThemeMode } from "@opentui/core"
import { render, useTerminalDimensions } from "@opentui/solid"
import { OPENCODE_VERSION } from "../version"
-import { registerOpencodeSpinner } from "@opencode-ai/tui/component/register-spinner"
-import { SPINNER_FRAMES } from "@opencode-ai/tui/component/spinner"
-import { go } from "@opencode-ai/tui/logo"
+import { registerOpencodeSpinner } from "@opencode/tui/component/register-spinner"
+import { SPINNER_FRAMES } from "@opencode/tui/component/spinner"
+import { go } from "@opencode/tui/logo"
import { setTimeout } from "node:timers/promises"
import {
batch,
diff --git a/packages/cli/src/services/updater.ts b/packages/cli/src/services/updater.ts
index b1372dfa31a..d7a6de0b37b 100644
--- a/packages/cli/src/services/updater.ts
+++ b/packages/cli/src/services/updater.ts
@@ -1,5 +1,5 @@
-import { Global } from "@opencode-ai/util/global"
-import { AppProcess } from "@opencode-ai/util/process"
+import { Global } from "@opencode/util/global"
+import { AppProcess } from "@opencode/util/process"
import { OPENCODE_ARTIFACT, OPENCODE_CHANNEL, OPENCODE_LOCAL, OPENCODE_VERSION } from "../version"
import { Context, Duration, Effect, FileSystem, Layer, Ref, Schedule } from "effect"
import { ChildProcess } from "effect/unstable/process"
diff --git a/packages/cli/src/services/web-ui.ts b/packages/cli/src/services/web-ui.ts
index 9a3615720a2..56c55991a2c 100644
--- a/packages/cli/src/services/web-ui.ts
+++ b/packages/cli/src/services/web-ui.ts
@@ -1,4 +1,4 @@
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { Effect, FileSystem } from "effect"
import { HttpServerError, HttpServerRequest, HttpServerResponse } from "effect/unstable/http"
import { createHash } from "node:crypto"
diff --git a/packages/cli/src/session-target.ts b/packages/cli/src/session-target.ts
index 4d6a7b20258..06b5f1b67d4 100644
--- a/packages/cli/src/session-target.ts
+++ b/packages/cli/src/session-target.ts
@@ -1,5 +1,5 @@
-import type { LocationGetOutput, ModelRef, OpenCodeClient, SessionInfo } from "@opencode-ai/client/promise"
-import { Model } from "@opencode-ai/schema/model"
+import type { LocationGetOutput, ModelRef, OpenCodeClient, SessionInfo } from "@opencode/client/promise"
+import { Model } from "@opencode/schema/model"
const SESSION_PAGE_LIMIT = 50
diff --git a/packages/cli/src/ui/timeline.tsx b/packages/cli/src/ui/timeline.tsx
index d5319098ab9..2ed7ade3ede 100644
--- a/packages/cli/src/ui/timeline.tsx
+++ b/packages/cli/src/ui/timeline.tsx
@@ -1,7 +1,7 @@
/** @jsxImportSource @opentui/solid */
import { createCliRenderer, RGBA, type CliRenderer, type ColorInput, type ScrollbackWriter } from "@opentui/core"
import { createScrollbackWriter, render, useKeyboard } from "@opentui/solid"
-import { registerOpencodeSpinner } from "@opencode-ai/tui/component/register-spinner"
+import { registerOpencodeSpinner } from "@opencode/tui/component/register-spinner"
import { Show, createSignal } from "solid-js"
registerOpencodeSpinner()
diff --git a/packages/cli/test/acp/event-behavior.test.ts b/packages/cli/test/acp/event-behavior.test.ts
index 6985a7cca44..8420904046a 100644
--- a/packages/cli/test/acp/event-behavior.test.ts
+++ b/packages/cli/test/acp/event-behavior.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import type { AgentSideConnection } from "@agentclientprotocol/sdk"
-import type { SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { SessionMessageInfo } from "@opencode/client/promise"
import { resolve } from "node:path"
import { replayMessages, streamTurn, type ChildSessionUpdate, type TurnControl } from "../../src/acp/event"
import { createSseFixture, durableEvent, ephemeralEvent, withTimeout } from "./sse-fixture"
diff --git a/packages/cli/test/acp/event.test.ts b/packages/cli/test/acp/event.test.ts
index b6bef9a5670..5ed9f5da066 100644
--- a/packages/cli/test/acp/event.test.ts
+++ b/packages/cli/test/acp/event.test.ts
@@ -1,6 +1,6 @@
import { expect, test } from "bun:test"
import type { AgentSideConnection } from "@agentclientprotocol/sdk"
-import { OpenCode } from "@opencode-ai/client/promise"
+import { OpenCode } from "@opencode/client/promise"
import { streamTurn } from "../../src/acp/event"
test("acp prompt resolves after ordered turn updates", async () => {
diff --git a/packages/cli/test/acp/service-fixture.ts b/packages/cli/test/acp/service-fixture.ts
index 7b615ac6e50..f690def4584 100644
--- a/packages/cli/test/acp/service-fixture.ts
+++ b/packages/cli/test/acp/service-fixture.ts
@@ -8,7 +8,7 @@ import {
type SessionInfo,
type SkillInfo,
type TokenUsageInfo,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import { ACPService } from "../../src/acp/service"
export type FixtureRequest = {
diff --git a/packages/cli/test/acp/service.test.ts b/packages/cli/test/acp/service.test.ts
index 6410acf7f9b..30ca6dab80d 100644
--- a/packages/cli/test/acp/service.test.ts
+++ b/packages/cli/test/acp/service.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import type { AgentSideConnection } from "@agentclientprotocol/sdk"
-import { OpenCode } from "@opencode-ai/client/promise"
+import { OpenCode } from "@opencode/client/promise"
import { ACPService } from "../../src/acp/service"
import { ChildSessionUpdatesCapability } from "../../src/acp/event"
diff --git a/packages/cli/test/acp/sse-fixture.ts b/packages/cli/test/acp/sse-fixture.ts
index 36497c8f6bc..8b8516a99aa 100644
--- a/packages/cli/test/acp/sse-fixture.ts
+++ b/packages/cli/test/acp/sse-fixture.ts
@@ -1,4 +1,4 @@
-import { OpenCode, type OpenCodeEvent, type SessionMessageInfo } from "@opencode-ai/client/promise"
+import { OpenCode, type OpenCodeEvent, type SessionMessageInfo } from "@opencode/client/promise"
type DurableEvent = Extract
type EphemeralEvent = Exclude
diff --git a/packages/cli/test/config.test.ts b/packages/cli/test/config.test.ts
index f8cb3cd88d8..1b6cd4a4aeb 100644
--- a/packages/cli/test/config.test.ts
+++ b/packages/cli/test/config.test.ts
@@ -1,6 +1,6 @@
import { NodeFileSystem } from "@effect/platform-node"
-import { Flock } from "@opencode-ai/util/flock"
-import { Global } from "@opencode-ai/util/global"
+import { Flock } from "@opencode/util/flock"
+import { Global } from "@opencode/util/global"
import { Effect, FileSystem, Option, Schema } from "effect"
import { expect, test } from "bun:test"
import { parse } from "jsonc-parser"
diff --git a/packages/cli/test/cors.test.ts b/packages/cli/test/cors.test.ts
index 5adab448fbc..d87589ef9a6 100644
--- a/packages/cli/test/cors.test.ts
+++ b/packages/cli/test/cors.test.ts
@@ -1,5 +1,5 @@
import { NodeServices } from "@effect/platform-node"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { expect, test } from "bun:test"
import { Effect, Exit, FileSystem } from "effect"
import { Command } from "effect/unstable/cli"
diff --git a/packages/cli/test/cpu-profile.test.ts b/packages/cli/test/cpu-profile.test.ts
index e64951193fc..50526e15646 100644
--- a/packages/cli/test/cpu-profile.test.ts
+++ b/packages/cli/test/cpu-profile.test.ts
@@ -1,5 +1,5 @@
import { NodeFileSystem } from "@effect/platform-node"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { expect, test } from "bun:test"
import { Effect } from "effect"
import { CpuProfile } from "../src/cpu-profile"
diff --git a/packages/cli/test/fixture/config-concurrency.ts b/packages/cli/test/fixture/config-concurrency.ts
index 43e84d94eac..2460267506d 100644
--- a/packages/cli/test/fixture/config-concurrency.ts
+++ b/packages/cli/test/fixture/config-concurrency.ts
@@ -1,5 +1,5 @@
import { NodeFileSystem } from "@effect/platform-node"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Effect, FileSystem } from "effect"
import { Config } from "../../src/config"
diff --git a/packages/cli/test/fixture/standalone-owner.ts b/packages/cli/test/fixture/standalone-owner.ts
index a5c2acb75b5..7af034cc487 100644
--- a/packages/cli/test/fixture/standalone-owner.ts
+++ b/packages/cli/test/fixture/standalone-owner.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import { Service } from "@opencode-ai/client/effect/service"
+import { Service } from "@opencode/client/effect/service"
import path from "node:path"
import { Standalone } from "../../src/services/standalone"
diff --git a/packages/cli/test/import-boundaries.test.ts b/packages/cli/test/import-boundaries.test.ts
index 79773cd1456..3c24c3c16f2 100644
--- a/packages/cli/test/import-boundaries.test.ts
+++ b/packages/cli/test/import-boundaries.test.ts
@@ -10,15 +10,15 @@ describe("CLI frontend import boundaries", () => {
const imports: string[] = []
for await (const file of glob.scan({ cwd: path.join(root, "packages/cli") })) {
const source = await Bun.file(path.join(root, "packages/cli", file)).text()
- if (/["']@opencode-ai\/core(?:\/[^"']*)?["']/.test(source)) imports.push(file)
+ if (/["']@opencode\/core(?:\/[^"']*)?["']/.test(source)) imports.push(file)
}
expect(imports).toEqual([])
})
test("exposes only the intentional package entrypoints", async () => {
- const run = await import("@opencode-ai/cli/run")
- const mini = await import("@opencode-ai/tui/mini")
- const tool = await import("@opencode-ai/tui/mini/tool")
+ const run = await import("@opencode/cli/run")
+ const mini = await import("@opencode/tui/mini")
+ const tool = await import("@opencode/tui/mini/tool")
const cli = await Bun.file(path.join(root, "packages/cli/package.json")).json()
expect(Object.keys(run).sort()).toEqual(["runNonInteractive", "runV1Bridge"])
@@ -59,7 +59,7 @@ describe("CLI frontend import boundaries", () => {
const imports: string[] = []
for await (const file of glob.scan({ cwd: path.join(root, "packages/tui/src/mini") })) {
const source = await Bun.file(path.join(root, "packages/tui/src/mini", file)).text()
- if (/["']@opencode-ai\/(?:core|server|cli)(?:\/[^"']*)?["']/.test(source)) imports.push(file)
+ if (/["']@opencode\/(?:core|server|cli)(?:\/[^"']*)?["']/.test(source)) imports.push(file)
}
expect(imports).toEqual([])
diff --git a/packages/cli/test/mini-config.test.ts b/packages/cli/test/mini-config.test.ts
index a93990d0334..78eadc323e1 100644
--- a/packages/cli/test/mini-config.test.ts
+++ b/packages/cli/test/mini-config.test.ts
@@ -1,5 +1,5 @@
import { NodeFileSystem } from "@effect/platform-node"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Effect, Option } from "effect"
import { expect, mock, test } from "bun:test"
import { mkdir, rm } from "node:fs/promises"
diff --git a/packages/cli/test/mini.test.ts b/packages/cli/test/mini.test.ts
index fa0390db574..9ee1594488e 100644
--- a/packages/cli/test/mini.test.ts
+++ b/packages/cli/test/mini.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import { ClientError, OpenCode } from "@opencode-ai/client/promise"
+import { ClientError, OpenCode } from "@opencode/client/promise"
import { OPENCODE_VERSION } from "../src/version"
import path from "node:path"
import { createMiniConnection, mergeInput as mergeInteractiveInput, resolveMiniTarget } from "../src/mini"
diff --git a/packages/cli/test/run/noninteractive.test.ts b/packages/cli/test/run/noninteractive.test.ts
index 8da880f1f5a..a9399e293b6 100644
--- a/packages/cli/test/run/noninteractive.test.ts
+++ b/packages/cli/test/run/noninteractive.test.ts
@@ -4,7 +4,7 @@ import {
type EventSubscribeOutput,
type SessionMessageAssistantTool,
type SessionMessageInfo,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import { runNonInteractivePrompt } from "../../src/run/noninteractive"
type V2Event = EventSubscribeOutput
diff --git a/packages/cli/test/server-connection.test.ts b/packages/cli/test/server-connection.test.ts
index f5ec0dc6e8f..a18e6958716 100644
--- a/packages/cli/test/server-connection.test.ts
+++ b/packages/cli/test/server-connection.test.ts
@@ -1,5 +1,5 @@
import { NodeFileSystem } from "@effect/platform-node"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { OPENCODE_VERSION } from "../src/version"
import { expect, test } from "bun:test"
import { Effect, FileSystem, Scope } from "effect"
diff --git a/packages/cli/test/service.test.ts b/packages/cli/test/service.test.ts
index 00c7c9a97d0..035fd3a83c4 100644
--- a/packages/cli/test/service.test.ts
+++ b/packages/cli/test/service.test.ts
@@ -1,6 +1,6 @@
import { NodeFileSystem } from "@effect/platform-node"
-import { Service, type Info } from "@opencode-ai/client/effect/service"
-import { Global } from "@opencode-ai/util/global"
+import { Service, type Info } from "@opencode/client/effect/service"
+import { Global } from "@opencode/util/global"
import { OPENCODE_VERSION } from "../src/version"
import { expect, test } from "bun:test"
import { Effect, Schema } from "effect"
diff --git a/packages/cli/test/session-target.test.ts b/packages/cli/test/session-target.test.ts
index a40e8819c84..301de51cb26 100644
--- a/packages/cli/test/session-target.test.ts
+++ b/packages/cli/test/session-target.test.ts
@@ -1,5 +1,5 @@
import { afterEach, describe, expect, mock, spyOn, test } from "bun:test"
-import { OpenCode, type LocationGetOutput, type ModelRef, type SessionInfo } from "@opencode-ai/client/promise"
+import { OpenCode, type LocationGetOutput, type ModelRef, type SessionInfo } from "@opencode/client/promise"
import { resolveSessionTarget, SessionTargetMutationError } from "../src/session-target"
function location(directory: string, workspaceID?: string): LocationGetOutput {
diff --git a/packages/cli/test/stats.test.ts b/packages/cli/test/stats.test.ts
index e3d3d81b09a..1dc48a594d0 100644
--- a/packages/cli/test/stats.test.ts
+++ b/packages/cli/test/stats.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import { ClientError, type SessionStatsInfo } from "@opencode-ai/client"
+import { ClientError, type SessionStatsInfo } from "@opencode/client"
import { Effect } from "effect"
import { renderStats, request } from "../src/commands/handlers/stats"
diff --git a/packages/cli/test/updater-install.test.ts b/packages/cli/test/updater-install.test.ts
index f452753afce..8f606e96982 100644
--- a/packages/cli/test/updater-install.test.ts
+++ b/packages/cli/test/updater-install.test.ts
@@ -1,6 +1,6 @@
import { NodeServices } from "@effect/platform-node"
-import { Global } from "@opencode-ai/util/global"
-import { AppProcess } from "@opencode-ai/util/process"
+import { Global } from "@opencode/util/global"
+import { AppProcess } from "@opencode/util/process"
import { expect, spyOn, test } from "bun:test"
import { Effect, FileSystem, Stream } from "effect"
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process"
@@ -17,7 +17,7 @@ function fixture(
respond: (command: ChildProcess.StandardCommand) => Partial & {
error?: AppProcess.AppProcessError
} = () => ({}),
- name = "@opencode-ai/cli",
+ name = "@opencode/cli",
) {
return Effect.gen(function* () {
const fs = yield* FileSystem.FileSystem
@@ -88,12 +88,12 @@ function fixture(
}
const installs = [
- { method: "npm", command: ["npm", "install", "--global", "@opencode-ai/cli@2.3.4-beta.1"] },
+ { method: "npm", command: ["npm", "install", "--global", "@opencode/cli@2.3.4-beta.1"] },
{
method: "pnpm",
- command: ["pnpm", "add", "--global", "--allow-build=@opencode-ai/cli", "@opencode-ai/cli@2.3.4-beta.1"],
+ command: ["pnpm", "add", "--global", "--allow-build=@opencode/cli", "@opencode/cli@2.3.4-beta.1"],
},
- { method: "yarn", command: ["yarn", "global", "add", "@opencode-ai/cli@2.3.4-beta.1"] },
+ { method: "yarn", command: ["yarn", "global", "add", "@opencode/cli@2.3.4-beta.1"] },
] as const
installs.forEach(({ method, command }) => {
@@ -117,7 +117,7 @@ installs.forEach(({ method, command }) => {
const cache = test.commands[0]?.[5]
expect(cache).toStartWith(path.join(test.global.cache, "update-"))
expect(test.commands).toEqual([
- ["bun", "install", "--global", "--trust", "--cache-dir", cache, "@opencode-ai/cli@2.3.4-beta.1"],
+ ["bun", "install", "--global", "--trust", "--cache-dir", cache, "@opencode/cli@2.3.4-beta.1"],
])
expect(yield* test.fs.readDirectory(test.global.cache)).toEqual([])
expect(result._tag).toBe(exitCode === 0 ? "None" : "Some")
@@ -184,12 +184,12 @@ it.live("install failures expose stderr and process errors do not report success
it.live(`method detection identifies ${method ?? "an unknown installation"} using the V2 package`, () =>
Effect.gen(function* () {
const test = yield* fixture((command) => ({
- stdout: Buffer.from(command.command === method ? "@opencode-ai/cli@2.3.4" : "opencode-ai@1.0.0"),
+ stdout: Buffer.from(command.command === method ? "@opencode/cli@2.3.4" : "opencode-ai@1.0.0"),
}))
expect(yield* test.updater.method()).toBe(method)
expect(test.commands).toEqual([
- ["npm", "list", "-g", "--depth=0", "@opencode-ai/cli"],
- ["pnpm", "list", "-g", "--depth=0", "@opencode-ai/cli"],
+ ["npm", "list", "-g", "--depth=0", "@opencode/cli"],
+ ["pnpm", "list", "-g", "--depth=0", "@opencode/cli"],
["bun", "pm", "ls", "-g"],
["yarn", "global", "list"],
])
@@ -201,7 +201,7 @@ it.live("method detection tolerates unavailable package managers", () =>
Effect.gen(function* () {
const test = yield* fixture((command) =>
command.command === "yarn"
- ? { stdout: Buffer.from("@opencode-ai/cli@2.3.4") }
+ ? { stdout: Buffer.from("@opencode/cli@2.3.4") }
: { error: new AppProcess.AppProcessError({ command: command.command }) },
)
expect(yield* test.updater.method()).toBe("yarn")
@@ -238,20 +238,20 @@ if (typeof OPENCODE_CLI_NAME === "string" && OPENCODE_CLI_NAME === "opencode2-no
Effect.gen(function* () {
const test = yield* fixture(
(command) => ({
- stdout: Buffer.from(command.command === "npm" ? "opencode-node@2.3.4" : ""),
+ stdout: Buffer.from(command.command === "npm" ? "@opencode/cli-node@2.3.4" : ""),
}),
- "opencode-node",
+ "@opencode/cli-node",
)
expect(yield* test.updater.method()).toBe("npm")
yield* test.updater.upgrade("npm", "v2.3.4")
yield* test.updater.upgrade("pnpm", "v2.3.4")
expect(test.commands).toEqual([
- ["npm", "list", "-g", "--depth=0", "opencode-node"],
- ["pnpm", "list", "-g", "--depth=0", "opencode-node"],
+ ["npm", "list", "-g", "--depth=0", "@opencode/cli-node"],
+ ["pnpm", "list", "-g", "--depth=0", "@opencode/cli-node"],
["bun", "pm", "ls", "-g"],
["yarn", "global", "list"],
- ["npm", "install", "--global", "opencode-node@2.3.4"],
- ["pnpm", "add", "--global", "--allow-build=opencode-node", "opencode-node@2.3.4"],
+ ["npm", "install", "--global", "@opencode/cli-node@2.3.4"],
+ ["pnpm", "add", "--global", "--allow-build=@opencode/cli-node", "@opencode/cli-node@2.3.4"],
])
}),
)
diff --git a/packages/cli/vite.node.config.ts b/packages/cli/vite.node.config.ts
index 92f7fef1e18..62993b9f39c 100644
--- a/packages/cli/vite.node.config.ts
+++ b/packages/cli/vite.node.config.ts
@@ -158,12 +158,12 @@ const __filename = import.meta.filename
const __dirname = import.meta.dirname
const require = __cjs_mod__.createRequire(import.meta.url)
const __ocPluginModules = ${JSON.stringify({
- "@opencode-ai/plugin": "opencode:plugin-v2",
- "@opencode-ai/plugin/promise/plugin": "opencode:plugin-promise-plugin",
- "@opencode-ai/plugin/promise/tool": "opencode:plugin-promise-tool",
- "@opencode-ai/plugin/effect": "opencode:plugin-v2-effect",
- "@opencode-ai/plugin/effect/plugin": "opencode:plugin-v2-effect-plugin",
- "@opencode-ai/plugin/effect/tool": "opencode:plugin-v2-effect-tool",
+ "@opencode/plugin": "opencode:plugin-v2",
+ "@opencode/plugin/promise/plugin": "opencode:plugin-promise-plugin",
+ "@opencode/plugin/promise/tool": "opencode:plugin-promise-tool",
+ "@opencode/plugin/effect": "opencode:plugin-v2-effect",
+ "@opencode/plugin/effect/plugin": "opencode:plugin-v2-effect-plugin",
+ "@opencode/plugin/effect/tool": "opencode:plugin-v2-effect-tool",
})}
const __ocPluginSources = ${JSON.stringify({
"opencode:plugin-v2": promiseModule,
diff --git a/packages/client/README.md b/packages/client/README.md
index 8c53e47c7e6..308078cd11d 100644
--- a/packages/client/README.md
+++ b/packages/client/README.md
@@ -1,22 +1,22 @@
-# @opencode-ai/client
+# @opencode/client
Private generation target for clients derived directly from OpenCode's authoritative Effect `HttpApi`.
## Entrypoints
-- `@opencode-ai/client`: zero-Effect Promise client using `fetch`.
-- `@opencode-ai/client/effect`: rich Effect network client using an environment-provided `HttpClient`.
+- `@opencode/client`: zero-Effect Promise client using `fetch`.
+- `@opencode/client/effect`: rich Effect network client using an environment-provided `HttpClient`.
-The generated surface includes every standard HTTP group from Server's concrete API. The build compiler reads `@opencode-ai/server/api`; the generated Effect runtime imports a client-local projection built from Protocol, with a generation-equivalence test preventing transport drift. Custom transports such as the PTY WebSocket connection remain outside the generic HTTP client. Run `bun run generate` after changing the contract and `bun run check:generated` to detect committed-output drift.
+The generated surface includes every standard HTTP group from Server's concrete API. The build compiler reads `@opencode/server/api`; the generated Effect runtime imports a client-local projection built from Protocol, with a generation-equivalence test preventing transport drift. Custom transports such as the PTY WebSocket connection remain outside the generic HTTP client. Run `bun run generate` after changing the contract and `bun run check:generated` to detect committed-output drift.
-The Effect entrypoint uses canonical decoded values such as `Session.ID`, `Location.Ref`, and `Prompt`. These datatypes come from the lightweight `@opencode-ai/schema` package and are re-exported so callers depend only on the client surface. Protocol owns endpoint construction and middleware placement; Server supplies the concrete middleware keys used by the build-time API.
+The Effect entrypoint uses canonical decoded values such as `Session.ID`, `Location.Ref`, and `Prompt`. These datatypes come from the lightweight `@opencode/schema` package and are re-exported so callers depend only on the client surface. Protocol owns endpoint construction and middleware placement; Server supplies the concrete middleware keys used by the build-time API.
The Promise root remains structural and has no Core or Effect runtime dependency. `/effect` depends only on Effect, Schema, and Protocol and is browser-bundle safe. Bundle-boundary tests enforce both import graphs.
Effect consumers construct canonical decoded inputs:
```ts
-import { AbsolutePath, Location, OpenCode, Prompt } from "@opencode-ai/client/effect"
+import { AbsolutePath, Location, OpenCode, Prompt } from "@opencode/client/effect"
const client = yield * OpenCode.make({ baseUrl: "https://opencode.example" })
yield *
diff --git a/packages/client/package.json b/packages/client/package.json
index 57b3eb1f27d..2636b5dd6be 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/client",
+ "name": "@opencode/client",
"version": "1.17.13",
"type": "module",
"license": "MIT",
@@ -33,8 +33,8 @@
"typecheck": "tsgo --noEmit"
},
"dependencies": {
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/protocol": "workspace:*"
+ "@opencode/schema": "workspace:*",
+ "@opencode/protocol": "workspace:*"
},
"peerDependencies": {
"effect": "4.0.0-rc.112",
@@ -50,7 +50,7 @@
},
"devDependencies": {
"@effect/platform-node": "catalog:",
- "@opencode-ai/httpapi-codegen": "workspace:*",
+ "@opencode/httpapi-codegen": "workspace:*",
"@tsconfig/bun": "catalog:",
"@types/bun": "catalog:",
"@typescript/native-preview": "catalog:",
diff --git a/packages/client/script/build.ts b/packages/client/script/build.ts
index 544d5229fa8..e5e11e16b64 100644
--- a/packages/client/script/build.ts
+++ b/packages/client/script/build.ts
@@ -1,87 +1,87 @@
import { NodeFileSystem } from "@effect/platform-node"
-import { compile, emitEffectImported, emitEffectShape, emitPromise, write } from "@opencode-ai/httpapi-codegen"
-import { ClientApi, effectOmitEndpoints, groupNames, promiseOmitEndpoints } from "@opencode-ai/protocol/client"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Command } from "@opencode-ai/schema/command"
-import { Config } from "@opencode-ai/schema/config"
-import { Credential } from "@opencode-ai/schema/credential"
-import { Event } from "@opencode-ai/schema/event"
-import { EventLog } from "@opencode-ai/schema/event-log"
-import { FileDiff } from "@opencode-ai/schema/file-diff"
-import { FileSystem } from "@opencode-ai/schema/filesystem"
-import { Form } from "@opencode-ai/schema/form"
-import { InstructionEntry } from "@opencode-ai/schema/instruction-entry"
-import { Integration } from "@opencode-ai/schema/integration"
-import { Location } from "@opencode-ai/schema/location"
-import { Mcp } from "@opencode-ai/schema/mcp"
-import { Model } from "@opencode-ai/schema/model"
-import { Permission } from "@opencode-ai/schema/permission"
-import { PermissionSaved } from "@opencode-ai/schema/permission-saved"
-import { Plugin } from "@opencode-ai/schema/plugin"
-import { Project } from "@opencode-ai/schema/project"
-import { Worktree } from "@opencode-ai/schema/worktree"
-import { AgentAttachment, FileAttachment, Prompt, PromptMention } from "@opencode-ai/schema/prompt"
-import { PromptInput } from "@opencode-ai/schema/prompt-input"
-import { Provider } from "@opencode-ai/schema/provider"
-import { Pty } from "@opencode-ai/schema/pty"
-import { PtyTicket } from "@opencode-ai/schema/pty-ticket"
-import { Question } from "@opencode-ai/schema/question"
-import { Reference } from "@opencode-ai/schema/reference"
-import { AbsolutePath, PositiveInt, RelativePath } from "@opencode-ai/schema/schema"
-import { Session } from "@opencode-ai/schema/session"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import { SessionInbox } from "@opencode-ai/schema/session-inbox"
-import { Shell } from "@opencode-ai/schema/shell"
-import { Skill } from "@opencode-ai/schema/skill"
-import { Vcs } from "@opencode-ai/schema/vcs"
-import { WebSearch } from "@opencode-ai/schema/websearch"
-import { Workspace } from "@opencode-ai/schema/workspace"
+import { compile, emitEffectImported, emitEffectShape, emitPromise, write } from "@opencode/httpapi-codegen"
+import { ClientApi, effectOmitEndpoints, groupNames, promiseOmitEndpoints } from "@opencode/protocol/client"
+import { Agent } from "@opencode/schema/agent"
+import { Command } from "@opencode/schema/command"
+import { Config } from "@opencode/schema/config"
+import { Credential } from "@opencode/schema/credential"
+import { Event } from "@opencode/schema/event"
+import { EventLog } from "@opencode/schema/event-log"
+import { FileDiff } from "@opencode/schema/file-diff"
+import { FileSystem } from "@opencode/schema/filesystem"
+import { Form } from "@opencode/schema/form"
+import { InstructionEntry } from "@opencode/schema/instruction-entry"
+import { Integration } from "@opencode/schema/integration"
+import { Location } from "@opencode/schema/location"
+import { Mcp } from "@opencode/schema/mcp"
+import { Model } from "@opencode/schema/model"
+import { Permission } from "@opencode/schema/permission"
+import { PermissionSaved } from "@opencode/schema/permission-saved"
+import { Plugin } from "@opencode/schema/plugin"
+import { Project } from "@opencode/schema/project"
+import { Worktree } from "@opencode/schema/worktree"
+import { AgentAttachment, FileAttachment, Prompt, PromptMention } from "@opencode/schema/prompt"
+import { PromptInput } from "@opencode/schema/prompt-input"
+import { Provider } from "@opencode/schema/provider"
+import { Pty } from "@opencode/schema/pty"
+import { PtyTicket } from "@opencode/schema/pty-ticket"
+import { Question } from "@opencode/schema/question"
+import { Reference } from "@opencode/schema/reference"
+import { AbsolutePath, PositiveInt, RelativePath } from "@opencode/schema/schema"
+import { Session } from "@opencode/schema/session"
+import { SessionMessage } from "@opencode/schema/session-message"
+import { SessionInbox } from "@opencode/schema/session-inbox"
+import { Shell } from "@opencode/schema/shell"
+import { Skill } from "@opencode/schema/skill"
+import { Vcs } from "@opencode/schema/vcs"
+import { WebSearch } from "@opencode/schema/websearch"
+import { Workspace } from "@opencode/schema/workspace"
import { Effect, Schema } from "effect"
import { fileURLToPath } from "url"
const promiseContract = compile(ClientApi, { groupNames, omitEndpoints: promiseOmitEndpoints })
const effectContract = compile(ClientApi, { groupNames, omitEndpoints: effectOmitEndpoints })
const effectTypeReferences = [
- ...namespaceTypes("Agent", "@opencode-ai/schema/agent", Agent),
- ...namespaceTypes("Command", "@opencode-ai/schema/command", Command),
- ...namespaceTypes("Config", "@opencode-ai/schema/config", Config),
- ...namespaceTypes("Credential", "@opencode-ai/schema/credential", Credential),
- ...namespaceTypes("Event", "@opencode-ai/schema/event", Event),
- ...namespaceTypes("EventLog", "@opencode-ai/schema/event-log", EventLog),
- ...namespaceTypes("FileDiff", "@opencode-ai/schema/file-diff", FileDiff),
- ...namespaceTypes("FileSystem", "@opencode-ai/schema/filesystem", FileSystem),
- ...namespaceTypes("Form", "@opencode-ai/schema/form", Form),
- ...namespaceTypes("InstructionEntry", "@opencode-ai/schema/instruction-entry", InstructionEntry),
- ...namespaceTypes("Integration", "@opencode-ai/schema/integration", Integration),
- ...namespaceTypes("Location", "@opencode-ai/schema/location", Location),
- ...namespaceTypes("Mcp", "@opencode-ai/schema/mcp", Mcp),
- ...namespaceTypes("Model", "@opencode-ai/schema/model", Model),
- ...namespaceTypes("Permission", "@opencode-ai/schema/permission", Permission),
- ...namespaceTypes("PermissionSaved", "@opencode-ai/schema/permission-saved", PermissionSaved),
- ...namespaceTypes("Plugin", "@opencode-ai/schema/plugin", Plugin),
- ...namespaceTypes("Project", "@opencode-ai/schema/project", Project),
- ...namespaceTypes("Worktree", "@opencode-ai/schema/worktree", Worktree),
- ...namespaceTypes("PromptInput", "@opencode-ai/schema/prompt-input", PromptInput),
- ...namespaceTypes("Provider", "@opencode-ai/schema/provider", Provider),
- ...namespaceTypes("Pty", "@opencode-ai/schema/pty", Pty),
- ...namespaceTypes("PtyTicket", "@opencode-ai/schema/pty-ticket", PtyTicket),
- ...namespaceTypes("Question", "@opencode-ai/schema/question", Question),
- ...namespaceTypes("Reference", "@opencode-ai/schema/reference", Reference),
- ...namespaceTypes("Session", "@opencode-ai/schema/session", Session),
- ...namespaceTypes("SessionMessage", "@opencode-ai/schema/session-message", SessionMessage),
- ...namespaceTypes("SessionInbox", "@opencode-ai/schema/session-inbox", SessionInbox),
- ...namespaceTypes("Shell", "@opencode-ai/schema/shell", Shell),
- ...namespaceTypes("Skill", "@opencode-ai/schema/skill", Skill),
- ...namespaceTypes("Vcs", "@opencode-ai/schema/vcs", Vcs),
- ...namespaceTypes("WebSearch", "@opencode-ai/schema/websearch", WebSearch),
- ...namespaceTypes("Workspace", "@opencode-ai/schema/workspace", Workspace),
- typeReference("Prompt", "@opencode-ai/schema/prompt", Prompt),
- typeReference("PromptMention", "@opencode-ai/schema/prompt", PromptMention),
- typeReference("FileAttachment", "@opencode-ai/schema/prompt", FileAttachment),
- typeReference("AgentAttachment", "@opencode-ai/schema/prompt", AgentAttachment),
- typeReference("AbsolutePath", "@opencode-ai/schema/schema", AbsolutePath),
- typeReference("PositiveInt", "@opencode-ai/schema/schema", PositiveInt),
- typeReference("RelativePath", "@opencode-ai/schema/schema", RelativePath),
+ ...namespaceTypes("Agent", "@opencode/schema/agent", Agent),
+ ...namespaceTypes("Command", "@opencode/schema/command", Command),
+ ...namespaceTypes("Config", "@opencode/schema/config", Config),
+ ...namespaceTypes("Credential", "@opencode/schema/credential", Credential),
+ ...namespaceTypes("Event", "@opencode/schema/event", Event),
+ ...namespaceTypes("EventLog", "@opencode/schema/event-log", EventLog),
+ ...namespaceTypes("FileDiff", "@opencode/schema/file-diff", FileDiff),
+ ...namespaceTypes("FileSystem", "@opencode/schema/filesystem", FileSystem),
+ ...namespaceTypes("Form", "@opencode/schema/form", Form),
+ ...namespaceTypes("InstructionEntry", "@opencode/schema/instruction-entry", InstructionEntry),
+ ...namespaceTypes("Integration", "@opencode/schema/integration", Integration),
+ ...namespaceTypes("Location", "@opencode/schema/location", Location),
+ ...namespaceTypes("Mcp", "@opencode/schema/mcp", Mcp),
+ ...namespaceTypes("Model", "@opencode/schema/model", Model),
+ ...namespaceTypes("Permission", "@opencode/schema/permission", Permission),
+ ...namespaceTypes("PermissionSaved", "@opencode/schema/permission-saved", PermissionSaved),
+ ...namespaceTypes("Plugin", "@opencode/schema/plugin", Plugin),
+ ...namespaceTypes("Project", "@opencode/schema/project", Project),
+ ...namespaceTypes("Worktree", "@opencode/schema/worktree", Worktree),
+ ...namespaceTypes("PromptInput", "@opencode/schema/prompt-input", PromptInput),
+ ...namespaceTypes("Provider", "@opencode/schema/provider", Provider),
+ ...namespaceTypes("Pty", "@opencode/schema/pty", Pty),
+ ...namespaceTypes("PtyTicket", "@opencode/schema/pty-ticket", PtyTicket),
+ ...namespaceTypes("Question", "@opencode/schema/question", Question),
+ ...namespaceTypes("Reference", "@opencode/schema/reference", Reference),
+ ...namespaceTypes("Session", "@opencode/schema/session", Session),
+ ...namespaceTypes("SessionMessage", "@opencode/schema/session-message", SessionMessage),
+ ...namespaceTypes("SessionInbox", "@opencode/schema/session-inbox", SessionInbox),
+ ...namespaceTypes("Shell", "@opencode/schema/shell", Shell),
+ ...namespaceTypes("Skill", "@opencode/schema/skill", Skill),
+ ...namespaceTypes("Vcs", "@opencode/schema/vcs", Vcs),
+ ...namespaceTypes("WebSearch", "@opencode/schema/websearch", WebSearch),
+ ...namespaceTypes("Workspace", "@opencode/schema/workspace", Workspace),
+ typeReference("Prompt", "@opencode/schema/prompt", Prompt),
+ typeReference("PromptMention", "@opencode/schema/prompt", PromptMention),
+ typeReference("FileAttachment", "@opencode/schema/prompt", FileAttachment),
+ typeReference("AgentAttachment", "@opencode/schema/prompt", AgentAttachment),
+ typeReference("AbsolutePath", "@opencode/schema/schema", AbsolutePath),
+ typeReference("PositiveInt", "@opencode/schema/schema", PositiveInt),
+ typeReference("RelativePath", "@opencode/schema/schema", RelativePath),
]
await Effect.runPromise(
@@ -107,7 +107,7 @@ await Effect.runPromise(
outputTypes: {
"event.subscribe": {
name: "OpenCodeEvent",
- import: 'import type { OpenCodeEvent } from "@opencode-ai/protocol/groups/event"',
+ import: 'import type { OpenCodeEvent } from "@opencode/protocol/groups/event"',
},
},
}),
diff --git a/packages/client/script/publish.ts b/packages/client/script/publish.ts
index 8e37674b644..30538cbc1cb 100644
--- a/packages/client/script/publish.ts
+++ b/packages/client/script/publish.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { rm } from "node:fs/promises"
import { fileURLToPath } from "node:url"
diff --git a/packages/client/src/contract.ts b/packages/client/src/contract.ts
index cff1312c8ac..aa033158041 100644
--- a/packages/client/src/contract.ts
+++ b/packages/client/src/contract.ts
@@ -1 +1 @@
-export { ClientApi, effectOmitEndpoints, groupNames, promiseOmitEndpoints } from "@opencode-ai/protocol/client"
+export { ClientApi, effectOmitEndpoints, groupNames, promiseOmitEndpoints } from "@opencode/protocol/client"
diff --git a/packages/client/src/effect/api/api.ts b/packages/client/src/effect/api/api.ts
index c45a1d80366..38758b0a799 100644
--- a/packages/client/src/effect/api/api.ts
+++ b/packages/client/src/effect/api/api.ts
@@ -1,44 +1,44 @@
-// Generated by @opencode-ai/httpapi-codegen. Do not edit.
+// Generated by @opencode/httpapi-codegen. Do not edit.
import type { Effect, Stream } from "effect"
-import type { Location } from "@opencode-ai/schema/location"
-import type { Agent } from "@opencode-ai/schema/agent"
-import type { Plugin } from "@opencode-ai/schema/plugin"
-import type { Workspace } from "@opencode-ai/schema/workspace"
-import type { Session } from "@opencode-ai/schema/session"
-import type { AbsolutePath } from "@opencode-ai/schema/schema"
-import type { Project } from "@opencode-ai/schema/project"
-import type { RelativePath } from "@opencode-ai/schema/schema"
+import type { Location } from "@opencode/schema/location"
+import type { Agent } from "@opencode/schema/agent"
+import type { Plugin } from "@opencode/schema/plugin"
+import type { Workspace } from "@opencode/schema/workspace"
+import type { Session } from "@opencode/schema/session"
+import type { AbsolutePath } from "@opencode/schema/schema"
+import type { Project } from "@opencode/schema/project"
+import type { RelativePath } from "@opencode/schema/schema"
import type { Brand } from "effect"
-import type { Model } from "@opencode-ai/schema/model"
+import type { Model } from "@opencode/schema/model"
import type { DateTime } from "effect"
-import type { SessionMessage } from "@opencode-ai/schema/session-message"
-import type { SessionInbox } from "@opencode-ai/schema/session-inbox"
-import type { PromptInput } from "@opencode-ai/schema/prompt-input"
-import type { AgentAttachment } from "@opencode-ai/schema/prompt"
-import type { Skill } from "@opencode-ai/schema/skill"
-import type { Event } from "@opencode-ai/schema/event"
-import type { InstructionEntry } from "@opencode-ai/schema/instruction-entry"
+import type { SessionMessage } from "@opencode/schema/session-message"
+import type { SessionInbox } from "@opencode/schema/session-inbox"
+import type { PromptInput } from "@opencode/schema/prompt-input"
+import type { AgentAttachment } from "@opencode/schema/prompt"
+import type { Skill } from "@opencode/schema/skill"
+import type { Event } from "@opencode/schema/event"
+import type { InstructionEntry } from "@opencode/schema/instruction-entry"
import type { Schema } from "effect"
-import type { EventLog } from "@opencode-ai/schema/event-log"
-import type { Shell } from "@opencode-ai/schema/shell"
-import type { Provider } from "@opencode-ai/schema/provider"
-import type { Integration } from "@opencode-ai/schema/integration"
-import type { Form } from "@opencode-ai/schema/form"
-import type { Mcp } from "@opencode-ai/schema/mcp"
-import type { Credential } from "@opencode-ai/schema/credential"
-import type { Permission } from "@opencode-ai/schema/permission"
-import type { PermissionSaved } from "@opencode-ai/schema/permission-saved"
-import type { FileSystem } from "@opencode-ai/schema/filesystem"
-import type { Command } from "@opencode-ai/schema/command"
-import type { OpenCodeEvent } from "@opencode-ai/protocol/groups/event"
-import type { Pty } from "@opencode-ai/schema/pty"
-import type { PtyTicket } from "@opencode-ai/schema/pty-ticket"
-import type { Reference } from "@opencode-ai/schema/reference"
-import type { Worktree } from "@opencode-ai/schema/worktree"
-import type { Vcs } from "@opencode-ai/schema/vcs"
-import type { FileDiff } from "@opencode-ai/schema/file-diff"
-import type { WebSearch } from "@opencode-ai/schema/websearch"
-import type { Config } from "@opencode-ai/schema/config"
+import type { EventLog } from "@opencode/schema/event-log"
+import type { Shell } from "@opencode/schema/shell"
+import type { Provider } from "@opencode/schema/provider"
+import type { Integration } from "@opencode/schema/integration"
+import type { Form } from "@opencode/schema/form"
+import type { Mcp } from "@opencode/schema/mcp"
+import type { Credential } from "@opencode/schema/credential"
+import type { Permission } from "@opencode/schema/permission"
+import type { PermissionSaved } from "@opencode/schema/permission-saved"
+import type { FileSystem } from "@opencode/schema/filesystem"
+import type { Command } from "@opencode/schema/command"
+import type { OpenCodeEvent } from "@opencode/protocol/groups/event"
+import type { Pty } from "@opencode/schema/pty"
+import type { PtyTicket } from "@opencode/schema/pty-ticket"
+import type { Reference } from "@opencode/schema/reference"
+import type { Worktree } from "@opencode/schema/worktree"
+import type { Vcs } from "@opencode/schema/vcs"
+import type { FileDiff } from "@opencode/schema/file-diff"
+import type { WebSearch } from "@opencode/schema/websearch"
+import type { Config } from "@opencode/schema/config"
export type HealthGetOutput = { readonly healthy: true; readonly version: string; readonly pid: number }
export type HealthGetOperation = () => Effect.Effect
diff --git a/packages/client/src/effect/client.ts b/packages/client/src/effect/client.ts
index 2aba49b2137..7eba0c3d2ef 100644
--- a/packages/client/src/effect/client.ts
+++ b/packages/client/src/effect/client.ts
@@ -7,7 +7,7 @@ import { ClientError, OpenCode } from "./generated/index.js"
import { RpcClientRuntime } from "./rpc.js"
import type { RpcCallOptions } from "../promise/rpc.js"
-const CurrentHeaders = Context.Reference("@opencode-ai/client/effect/rpc/headers", {
+const CurrentHeaders = Context.Reference("@opencode/client/effect/rpc/headers", {
defaultValue: () => undefined,
})
diff --git a/packages/client/src/effect/generated/client.ts b/packages/client/src/effect/generated/client.ts
index 3a0616854dd..e6cd7d6662d 100644
--- a/packages/client/src/effect/generated/client.ts
+++ b/packages/client/src/effect/generated/client.ts
@@ -1,4 +1,4 @@
-// Generated by @opencode-ai/httpapi-codegen. Do not edit.
+// Generated by @opencode/httpapi-codegen. Do not edit.
import { Effect, Stream, Schema } from "effect"
import { Sse } from "effect/unstable/encoding"
import { HttpClientError } from "effect/unstable/http"
diff --git a/packages/client/src/effect/index.ts b/packages/client/src/effect/index.ts
index 142f4e79b17..5e8088732e7 100644
--- a/packages/client/src/effect/index.ts
+++ b/packages/client/src/effect/index.ts
@@ -23,33 +23,33 @@ export type {
SessionApi,
SkillApi,
} from "./api.js"
-export { Agent } from "@opencode-ai/schema/agent"
-export { Command } from "@opencode-ai/schema/command"
-export { Config } from "@opencode-ai/schema/config"
-export { Credential } from "@opencode-ai/schema/credential"
-export { Event } from "@opencode-ai/schema/event"
-export { EventLog } from "@opencode-ai/schema/event-log"
-export { FileSystem } from "@opencode-ai/schema/filesystem"
-export { Form } from "@opencode-ai/schema/form"
-export { Integration } from "@opencode-ai/schema/integration"
-export { Location } from "@opencode-ai/schema/location"
-export { Model } from "@opencode-ai/schema/model"
-export { Permission } from "@opencode-ai/schema/permission"
-export { PermissionSaved } from "@opencode-ai/schema/permission-saved"
-export { Project } from "@opencode-ai/schema/project"
-export { Worktree } from "@opencode-ai/schema/worktree"
-export { Vcs } from "@opencode-ai/schema/vcs"
-export { Provider } from "@opencode-ai/schema/provider"
-export { Pty } from "@opencode-ai/schema/pty"
-export { Question } from "@opencode-ai/schema/question"
-export { Reference } from "@opencode-ai/schema/reference"
-export { WebSearch } from "@opencode-ai/schema/websearch"
-export { AbsolutePath, RelativePath } from "@opencode-ai/schema/schema"
-export { Session } from "@opencode-ai/schema/session"
-export { SessionInbox } from "@opencode-ai/schema/session-inbox"
-export { SessionMessage } from "@opencode-ai/schema/session-message"
-export { Skill } from "@opencode-ai/schema/skill"
-export { Prompt } from "@opencode-ai/schema/prompt"
-export { PromptInput } from "@opencode-ai/schema/prompt-input"
-export type { OpenCodeEvent } from "@opencode-ai/protocol/groups/event"
+export { Agent } from "@opencode/schema/agent"
+export { Command } from "@opencode/schema/command"
+export { Config } from "@opencode/schema/config"
+export { Credential } from "@opencode/schema/credential"
+export { Event } from "@opencode/schema/event"
+export { EventLog } from "@opencode/schema/event-log"
+export { FileSystem } from "@opencode/schema/filesystem"
+export { Form } from "@opencode/schema/form"
+export { Integration } from "@opencode/schema/integration"
+export { Location } from "@opencode/schema/location"
+export { Model } from "@opencode/schema/model"
+export { Permission } from "@opencode/schema/permission"
+export { PermissionSaved } from "@opencode/schema/permission-saved"
+export { Project } from "@opencode/schema/project"
+export { Worktree } from "@opencode/schema/worktree"
+export { Vcs } from "@opencode/schema/vcs"
+export { Provider } from "@opencode/schema/provider"
+export { Pty } from "@opencode/schema/pty"
+export { Question } from "@opencode/schema/question"
+export { Reference } from "@opencode/schema/reference"
+export { WebSearch } from "@opencode/schema/websearch"
+export { AbsolutePath, RelativePath } from "@opencode/schema/schema"
+export { Session } from "@opencode/schema/session"
+export { SessionInbox } from "@opencode/schema/session-inbox"
+export { SessionMessage } from "@opencode/schema/session-message"
+export { Skill } from "@opencode/schema/skill"
+export { Prompt } from "@opencode/schema/prompt"
+export { PromptInput } from "@opencode/schema/prompt-input"
+export type { OpenCodeEvent } from "@opencode/protocol/groups/event"
export type OpenCodeClient = Effect.Success>
diff --git a/packages/client/src/effect/rpc.ts b/packages/client/src/effect/rpc.ts
index b1933ba11ba..623ec549e1c 100644
--- a/packages/client/src/effect/rpc.ts
+++ b/packages/client/src/effect/rpc.ts
@@ -1,8 +1,8 @@
export * as RpcClientRuntime from "./rpc.js"
-import type { Rpc } from "@opencode-ai/schema/rpc"
-import type { RpcError, RpcInternalError } from "@opencode-ai/protocol/errors"
-import type { OpenCodeEvent } from "@opencode-ai/protocol/groups/event"
+import type { Rpc } from "@opencode/schema/rpc"
+import type { RpcError, RpcInternalError } from "@opencode/protocol/errors"
+import type { OpenCodeEvent } from "@opencode/protocol/groups/event"
import { Effect, Schema, Stream } from "effect"
import type { RpcArguments, RpcCallOptions } from "../promise/rpc.js"
import { RpcRuntime } from "../rpc-runtime.js"
diff --git a/packages/client/src/effect/service.ts b/packages/client/src/effect/service.ts
index 3839fa43722..7ae3d917a58 100644
--- a/packages/client/src/effect/service.ts
+++ b/packages/client/src/effect/service.ts
@@ -1,4 +1,4 @@
-import { ServiceStatus } from "@opencode-ai/protocol/groups/health"
+import { ServiceStatus } from "@opencode/protocol/groups/health"
import { Effect, FileSystem, Option, Schedule, Schema } from "effect"
import { homedir } from "node:os"
import { join } from "node:path"
diff --git a/packages/client/src/promise/rpc.ts b/packages/client/src/promise/rpc.ts
index 1d3c270bb5c..e7c502e1cc8 100644
--- a/packages/client/src/promise/rpc.ts
+++ b/packages/client/src/promise/rpc.ts
@@ -1,4 +1,4 @@
-import type { Rpc } from "@opencode-ai/schema/rpc"
+import type { Rpc } from "@opencode/schema/rpc"
import type { make, RequestOptions } from "./generated/client.js"
import { isRpcError, isRpcInternalError } from "./generated/types.js"
import type { EventSubscribeOutput, LocationGetInput, RpcCallInput } from "./generated/types.js"
diff --git a/packages/client/src/pty-handoff.ts b/packages/client/src/pty-handoff.ts
index 61e9568c449..6e65a1fa5c9 100644
--- a/packages/client/src/pty-handoff.ts
+++ b/packages/client/src/pty-handoff.ts
@@ -1,6 +1,6 @@
export * as PtyHandoff from "./pty-handoff.js"
-import type { PersistentPty } from "@opencode-ai/schema/persistent-pty"
+import type { PersistentPty } from "@opencode/schema/persistent-pty"
import { readFile, rename, rm, writeFile } from "node:fs/promises"
import type { Info } from "./service.js"
diff --git a/packages/client/src/rpc-runtime.ts b/packages/client/src/rpc-runtime.ts
index 3b79ca933b4..2267db8ee0a 100644
--- a/packages/client/src/rpc-runtime.ts
+++ b/packages/client/src/rpc-runtime.ts
@@ -1,8 +1,8 @@
export * as RpcRuntime from "./rpc-runtime.js"
-import type { Rpc } from "@opencode-ai/schema/rpc"
-import type { OpenCodeEvent } from "@opencode-ai/protocol/groups/event"
-import { RpcError, RpcInternalError } from "@opencode-ai/protocol/errors"
+import type { Rpc } from "@opencode/schema/rpc"
+import type { OpenCodeEvent } from "@opencode/protocol/groups/event"
+import { RpcError, RpcInternalError } from "@opencode/protocol/errors"
import { Effect, Schema } from "effect"
type RpcEvent = Extract
diff --git a/packages/client/src/solid/data.ts b/packages/client/src/solid/data.ts
index 6cea279b906..7fb8d710fbb 100644
--- a/packages/client/src/solid/data.ts
+++ b/packages/client/src/solid/data.ts
@@ -38,9 +38,9 @@ import type {
OpenCodeClient,
WebSearchProvider,
} from "../promise"
-import { Worktree } from "@opencode-ai/schema/worktree"
-import { SessionID } from "@opencode-ai/schema/session-id"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
+import { Worktree } from "@opencode/schema/worktree"
+import { SessionID } from "@opencode/schema/session-id"
+import { SessionMessage } from "@opencode/schema/session-message"
import {
isFormAlreadySettledError,
isFormNotFoundError,
@@ -48,7 +48,7 @@ import {
type SessionPromptInput,
} from "../promise"
import { createStore, produce, reconcile } from "solid-js/store"
-import type { SessionInbox } from "@opencode-ai/schema/session-inbox"
+import type { SessionInbox } from "@opencode/schema/session-inbox"
import { batch, createEffect, createMemo, createSignal, onCleanup } from "solid-js"
export type DataSessionStatus = "idle" | "running"
diff --git a/packages/client/test/api.types.ts b/packages/client/test/api.types.ts
index 1cb35e5dcae..02533630fed 100644
--- a/packages/client/test/api.types.ts
+++ b/packages/client/test/api.types.ts
@@ -1,6 +1,6 @@
import { Effect } from "effect"
import { OpenCode as EffectOpenCode, type AppApi as EffectApi } from "../src/effect"
-import type { Session } from "@opencode-ai/schema/session"
+import type { Session } from "@opencode/schema/session"
import type { DiscoverOptions } from "../src/service"
type EffectClient = Effect.Success>
diff --git a/packages/client/test/contract-identity.test.ts b/packages/client/test/contract-identity.test.ts
index 63e80e8ee5d..46737340154 100644
--- a/packages/client/test/contract-identity.test.ts
+++ b/packages/client/test/contract-identity.test.ts
@@ -1,12 +1,12 @@
import { expect, test } from "bun:test"
import { Schema } from "effect"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Config } from "@opencode-ai/schema/config"
-import { Model } from "@opencode-ai/schema/model"
-import { Prompt } from "@opencode-ai/schema/prompt"
-import { Session } from "@opencode-ai/schema/session"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import { Vcs } from "@opencode-ai/schema/vcs"
+import { Agent } from "@opencode/schema/agent"
+import { Config } from "@opencode/schema/config"
+import { Model } from "@opencode/schema/model"
+import { Prompt } from "@opencode/schema/prompt"
+import { Session } from "@opencode/schema/session"
+import { SessionMessage } from "@opencode/schema/session-message"
+import { Vcs } from "@opencode/schema/vcs"
const Client = await import("../src/effect")
diff --git a/packages/client/test/import-boundaries.test.ts b/packages/client/test/import-boundaries.test.ts
index b323c6215e6..2f571d453ac 100644
--- a/packages/client/test/import-boundaries.test.ts
+++ b/packages/client/test/import-boundaries.test.ts
@@ -12,7 +12,7 @@ const server = resolve(import.meta.dir, "../../server")
describe("public import boundaries", () => {
test("isolates each public entrypoint", async () => {
- const root = await bundleInputs("@opencode-ai/client", "browser")
+ const root = await bundleInputs("@opencode/client", "browser")
expect(within(root.all, effect)).toEqual([])
expect(within(root.all, schema)).toEqual([])
@@ -20,7 +20,7 @@ describe("public import boundaries", () => {
expect(within(root.all, core)).toEqual([])
expect(within(root.all, server)).toEqual([])
- const network = await bundleInputs("@opencode-ai/client/effect", "browser")
+ const network = await bundleInputs("@opencode/client/effect", "browser")
expect(within(network.eager, effect).length).toBeGreaterThan(0)
expect(within(network.eager, schema).length).toBeGreaterThan(0)
@@ -28,7 +28,7 @@ describe("public import boundaries", () => {
expect(within(network.all, core)).toEqual([])
expect(within(network.all, server)).toEqual([])
- const promiseService = await bundleInputs("@opencode-ai/client/service", "bun")
+ const promiseService = await bundleInputs("@opencode/client/service", "bun")
expect(within(promiseService.all, effect)).toEqual([])
expect(within(promiseService.all, schema)).toEqual([])
@@ -36,7 +36,7 @@ describe("public import boundaries", () => {
expect(within(promiseService.all, core)).toEqual([])
expect(within(promiseService.all, server)).toEqual([])
- const effectService = await bundleInputs("@opencode-ai/client/effect/service", "bun")
+ const effectService = await bundleInputs("@opencode/client/effect/service", "bun")
expect(within(effectService.eager, effect).length).toBeGreaterThan(0)
expect(within(effectService.eager, protocol).length).toBeGreaterThan(0)
diff --git a/packages/client/test/worktree.test.ts b/packages/client/test/worktree.test.ts
index 2037af98aa3..db1028ed300 100644
--- a/packages/client/test/worktree.test.ts
+++ b/packages/client/test/worktree.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import { Schema } from "effect"
-import { Worktree } from "@opencode-ai/schema/worktree"
+import { Worktree } from "@opencode/schema/worktree"
describe("Worktree.adopt", () => {
const event = {
diff --git a/packages/codemode/AGENTS.md b/packages/codemode/AGENTS.md
index e59d7fc1768..368ed6bb788 100644
--- a/packages/codemode/AGENTS.md
+++ b/packages/codemode/AGENTS.md
@@ -1,4 +1,4 @@
-# @opencode-ai/codemode
+# @opencode/codemode
- This local package owns confined execution over explicit schema-described tools. Applications own authorization, persistence, external authority, and tool-specific delivery semantics.
- Do not add a speculative generic permission or approval policy. A host omits tools it does not expose and enforces domain authorization inside each provided tool.
diff --git a/packages/codemode/README.md b/packages/codemode/README.md
index f6f47f35dbc..024c87e2794 100644
--- a/packages/codemode/README.md
+++ b/packages/codemode/README.md
@@ -1,4 +1,4 @@
-# @opencode-ai/codemode
+# @opencode/codemode
This is our take on code mode: a lightweight, pure interpreter for a JavaScript-like language built around calling
tools. It supports familiar JavaScript syntax with a few key differences and limitations. See the
@@ -26,7 +26,7 @@ Unsupported syntax returns an `UnsupportedSyntax` diagnostic with a source locat
## Quick Start
```ts
-import { CodeMode, Namespace, Tool } from "@opencode-ai/codemode"
+import { CodeMode, Namespace, Tool } from "@opencode/codemode"
import { Effect, Schema } from "effect"
const lookupOrder = Tool.make({
diff --git a/packages/codemode/package.json b/packages/codemode/package.json
index 721a068e882..cda2631ca70 100644
--- a/packages/codemode/package.json
+++ b/packages/codemode/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/codemode",
+ "name": "@opencode/codemode",
"version": "1.18.4",
"description": "Effect-native confined code execution over schema-described tools",
"type": "module",
diff --git a/packages/codemode/script/publish.ts b/packages/codemode/script/publish.ts
index aa2d08b54a8..346185c5804 100644
--- a/packages/codemode/script/publish.ts
+++ b/packages/codemode/script/publish.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { mkdtemp, rm } from "node:fs/promises"
import { tmpdir } from "node:os"
diff --git a/packages/console/app/package.json b/packages/console/app/package.json
index 59feda0c8c5..d178a188783 100644
--- a/packages/console/app/package.json
+++ b/packages/console/app/package.json
@@ -1,5 +1,5 @@
{
- "name": "@opencode-ai/console-app",
+ "name": "@opencode/console-app",
"version": "1.18.15",
"type": "module",
"license": "MIT",
@@ -16,10 +16,10 @@
"@jsx-email/render": "1.1.1",
"@kobalte/core": "catalog:",
"@openauthjs/openauth": "catalog:",
- "@opencode-ai/console-core": "workspace:*",
- "@opencode-ai/console-mail": "workspace:*",
- "@opencode-ai/console-resource": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
+ "@opencode/console-core": "workspace:*",
+ "@opencode/console-mail": "workspace:*",
+ "@opencode/console-resource": "workspace:*",
+ "@opencode/ui": "workspace:*",
"@smithy/eventstream-codec": "4.2.7",
"@smithy/util-utf8": "4.2.0",
"@solidjs/meta": "catalog:",
diff --git a/packages/console/app/src/app.tsx b/packages/console/app/src/app.tsx
index 1f1d0066ecc..bc27e135dd7 100644
--- a/packages/console/app/src/app.tsx
+++ b/packages/console/app/src/app.tsx
@@ -2,8 +2,8 @@ import { MetaProvider, Title, Meta } from "@solidjs/meta"
import { Router } from "@solidjs/router"
import { FileRoutes } from "@solidjs/start/router"
import { Suspense } from "solid-js"
-import { Favicon } from "@opencode-ai/ui/favicon"
-import { Font } from "@opencode-ai/ui/font"
+import { Favicon } from "@opencode/ui/favicon"
+import { Font } from "@opencode/ui/font"
import "@ibm/plex/css/ibm-plex.css"
import "./app.css"
import { LanguageProvider } from "~/context/language"
diff --git a/packages/console/app/src/component/email-signup.tsx b/packages/console/app/src/component/email-signup.tsx
index caedaf0f2e4..171a99a4698 100644
--- a/packages/console/app/src/component/email-signup.tsx
+++ b/packages/console/app/src/component/email-signup.tsx
@@ -1,5 +1,5 @@
import { action, useSubmission } from "@solidjs/router"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import { Show } from "solid-js"
import { useI18n } from "~/context/i18n"
diff --git a/packages/console/app/src/component/go-referral.tsx b/packages/console/app/src/component/go-referral.tsx
index 4223dfd47c0..546e3dc72c3 100644
--- a/packages/console/app/src/component/go-referral.tsx
+++ b/packages/console/app/src/component/go-referral.tsx
@@ -1,7 +1,7 @@
import { action, json, query, useAction, useSubmission } from "@solidjs/router"
import { createEffect, createMemo, createSignal, For, onCleanup, Show } from "solid-js"
import { getRequestEvent } from "solid-js/web"
-import { Referral } from "@opencode-ai/console-core/referral.js"
+import { Referral } from "@opencode/console-core/referral.js"
import { withActor } from "~/context/auth.withActor"
import { Modal } from "~/component/modal"
import { IconCheck, IconCopy } from "~/component/icon"
diff --git a/packages/console/app/src/context/auth.ts b/packages/console/app/src/context/auth.ts
index aed07a630f8..a370ccc5d4a 100644
--- a/packages/console/app/src/context/auth.ts
+++ b/packages/console/app/src/context/auth.ts
@@ -1,8 +1,8 @@
import { getRequestEvent } from "solid-js/web"
-import { and, Database, eq, inArray, isNull, sql } from "@opencode-ai/console-core/drizzle/index.js"
-import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js"
+import { and, Database, eq, inArray, isNull, sql } from "@opencode/console-core/drizzle/index.js"
+import { UserTable } from "@opencode/console-core/schema/user.sql.js"
import { redirect } from "@solidjs/router"
-import { Actor } from "@opencode-ai/console-core/actor.js"
+import { Actor } from "@opencode/console-core/actor.js"
import { createClient } from "@openauthjs/openauth/client"
@@ -12,7 +12,7 @@ export const AuthClient = createClient({
})
import { useSession } from "@solidjs/start/http"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
export interface AuthSession {
account?: Record<
diff --git a/packages/console/app/src/context/auth.withActor.ts b/packages/console/app/src/context/auth.withActor.ts
index ff377cda460..2cb97026992 100644
--- a/packages/console/app/src/context/auth.withActor.ts
+++ b/packages/console/app/src/context/auth.withActor.ts
@@ -1,4 +1,4 @@
-import { Actor } from "@opencode-ai/console-core/actor.js"
+import { Actor } from "@opencode/console-core/actor.js"
import { getActor } from "./auth"
export async function withActor(fn: () => T, workspace?: string) {
diff --git a/packages/console/app/src/context/i18n.tsx b/packages/console/app/src/context/i18n.tsx
index 5d178c8b8d9..51d92196e9b 100644
--- a/packages/console/app/src/context/i18n.tsx
+++ b/packages/console/app/src/context/i18n.tsx
@@ -1,5 +1,5 @@
import { createMemo } from "solid-js"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import { i18n, type Key } from "~/i18n"
import { useLanguage } from "~/context/language"
diff --git a/packages/console/app/src/context/language.tsx b/packages/console/app/src/context/language.tsx
index 2999242f0ff..310b56596a6 100644
--- a/packages/console/app/src/context/language.tsx
+++ b/packages/console/app/src/context/language.tsx
@@ -1,7 +1,7 @@
import { createEffect } from "solid-js"
import { createStore } from "solid-js/store"
import { getRequestEvent } from "solid-js/web"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import {
LOCALES,
type Locale,
diff --git a/packages/console/app/src/lib/referral-invite.ts b/packages/console/app/src/lib/referral-invite.ts
index dc83ff0f4cd..f87606b2d94 100644
--- a/packages/console/app/src/lib/referral-invite.ts
+++ b/packages/console/app/src/lib/referral-invite.ts
@@ -1,5 +1,5 @@
-import { Actor } from "@opencode-ai/console-core/actor.js"
-import { Referral } from "@opencode-ai/console-core/referral.js"
+import { Actor } from "@opencode/console-core/actor.js"
+import { Referral } from "@opencode/console-core/referral.js"
import { getRequestEvent } from "solid-js/web"
const REFERRAL_COOKIE = "oc_referral"
diff --git a/packages/console/app/src/lib/salesforce.ts b/packages/console/app/src/lib/salesforce.ts
index 48e0caee7d0..b02f39e6a02 100644
--- a/packages/console/app/src/lib/salesforce.ts
+++ b/packages/console/app/src/lib/salesforce.ts
@@ -1,4 +1,4 @@
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
async function login() {
const url = Resource.SALESFORCE_INSTANCE_URL.value.replace(/\/$/, "")
diff --git a/packages/console/app/src/lib/stats-proxy.ts b/packages/console/app/src/lib/stats-proxy.ts
index 48e95bd74a1..5b520821151 100644
--- a/packages/console/app/src/lib/stats-proxy.ts
+++ b/packages/console/app/src/lib/stats-proxy.ts
@@ -1,5 +1,5 @@
import type { APIEvent } from "@solidjs/start/server"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import { LOCALE_HEADER, cookie, localeFromRequest, route, tag } from "~/lib/language"
const dataPath = "/data"
diff --git a/packages/console/app/src/routes/api/enterprise.ts b/packages/console/app/src/routes/api/enterprise.ts
index 65f5c72b231..7533c521237 100644
--- a/packages/console/app/src/routes/api/enterprise.ts
+++ b/packages/console/app/src/routes/api/enterprise.ts
@@ -1,6 +1,6 @@
import type { APIEvent } from "@solidjs/start/server"
-import { AWS } from "@opencode-ai/console-core/aws.js"
-import { Resource } from "@opencode-ai/console-resource"
+import { AWS } from "@opencode/console-core/aws.js"
+import { Resource } from "@opencode/console-resource"
import { i18n } from "~/i18n"
import { localeFromRequest } from "~/lib/language"
import { createLead } from "~/lib/salesforce"
diff --git a/packages/console/app/src/routes/api/support/actions/create-referral.ts b/packages/console/app/src/routes/api/support/actions/create-referral.ts
index ac4d107bee1..0119fe50298 100644
--- a/packages/console/app/src/routes/api/support/actions/create-referral.ts
+++ b/packages/console/app/src/routes/api/support/actions/create-referral.ts
@@ -1,7 +1,7 @@
import type { APIEvent } from "@solidjs/start/server"
-import { Referral } from "@opencode-ai/console-core/referral.js"
-import { safeEqual } from "@opencode-ai/console-core/util/crypto.js"
-import { Resource } from "@opencode-ai/console-resource"
+import { Referral } from "@opencode/console-core/referral.js"
+import { safeEqual } from "@opencode/console-core/util/crypto.js"
+import { Resource } from "@opencode/console-resource"
import z from "zod"
const Body = z.object({
diff --git a/packages/console/app/src/routes/api/support/actions/delete-account.ts b/packages/console/app/src/routes/api/support/actions/delete-account.ts
index a713107df64..7d64a5c7ba3 100644
--- a/packages/console/app/src/routes/api/support/actions/delete-account.ts
+++ b/packages/console/app/src/routes/api/support/actions/delete-account.ts
@@ -1,7 +1,7 @@
import type { APIEvent } from "@solidjs/start/server"
-import { Account } from "@opencode-ai/console-core/account.js"
-import { safeEqual } from "@opencode-ai/console-core/util/crypto.js"
-import { Resource } from "@opencode-ai/console-resource"
+import { Account } from "@opencode/console-core/account.js"
+import { safeEqual } from "@opencode/console-core/util/crypto.js"
+import { Resource } from "@opencode/console-resource"
import z from "zod"
const Body = z.object({ email: z.email() })
diff --git a/packages/console/app/src/routes/api/support/actions/unblock-workspace.ts b/packages/console/app/src/routes/api/support/actions/unblock-workspace.ts
index 7a89f99647a..7173ed18091 100644
--- a/packages/console/app/src/routes/api/support/actions/unblock-workspace.ts
+++ b/packages/console/app/src/routes/api/support/actions/unblock-workspace.ts
@@ -1,7 +1,7 @@
import type { APIEvent } from "@solidjs/start/server"
-import { Workspace } from "@opencode-ai/console-core/workspace.js"
-import { safeEqual } from "@opencode-ai/console-core/util/crypto.js"
-import { Resource } from "@opencode-ai/console-resource"
+import { Workspace } from "@opencode/console-core/workspace.js"
+import { safeEqual } from "@opencode/console-core/util/crypto.js"
+import { Resource } from "@opencode/console-resource"
import z from "zod"
const Body = z.object({ workspaceID: z.string().startsWith("wrk_") })
diff --git a/packages/console/app/src/routes/bench/[id].tsx b/packages/console/app/src/routes/bench/[id].tsx
index c6d10826b3c..6508b0b468f 100644
--- a/packages/console/app/src/routes/bench/[id].tsx
+++ b/packages/console/app/src/routes/bench/[id].tsx
@@ -1,8 +1,8 @@
import { Title } from "@solidjs/meta"
import { createAsync, query, useParams } from "@solidjs/router"
import { createSignal, For, Show } from "solid-js"
-import { Database, eq } from "@opencode-ai/console-core/drizzle/index.js"
-import { BenchmarkTable } from "@opencode-ai/console-core/schema/benchmark.sql.js"
+import { Database, eq } from "@opencode/console-core/drizzle/index.js"
+import { BenchmarkTable } from "@opencode/console-core/schema/benchmark.sql.js"
import { useI18n } from "~/context/i18n"
interface TaskSource {
diff --git a/packages/console/app/src/routes/bench/index.tsx b/packages/console/app/src/routes/bench/index.tsx
index 17798eff4e1..3253beff3bd 100644
--- a/packages/console/app/src/routes/bench/index.tsx
+++ b/packages/console/app/src/routes/bench/index.tsx
@@ -1,8 +1,8 @@
import { Title } from "@solidjs/meta"
import { A, createAsync, query } from "@solidjs/router"
import { createMemo, For, Show } from "solid-js"
-import { Database, desc } from "@opencode-ai/console-core/drizzle/index.js"
-import { BenchmarkTable } from "@opencode-ai/console-core/schema/benchmark.sql.js"
+import { Database, desc } from "@opencode/console-core/drizzle/index.js"
+import { BenchmarkTable } from "@opencode/console-core/schema/benchmark.sql.js"
import { useI18n } from "~/context/i18n"
interface BenchmarkResult {
diff --git a/packages/console/app/src/routes/bench/submission.ts b/packages/console/app/src/routes/bench/submission.ts
index 969ff165931..f5e3d23a3fe 100644
--- a/packages/console/app/src/routes/bench/submission.ts
+++ b/packages/console/app/src/routes/bench/submission.ts
@@ -1,7 +1,7 @@
import type { APIEvent } from "@solidjs/start/server"
-import { Database } from "@opencode-ai/console-core/drizzle/index.js"
-import { BenchmarkTable } from "@opencode-ai/console-core/schema/benchmark.sql.js"
-import { Identifier } from "@opencode-ai/console-core/identifier.js"
+import { Database } from "@opencode/console-core/drizzle/index.js"
+import { BenchmarkTable } from "@opencode/console-core/schema/benchmark.sql.js"
+import { Identifier } from "@opencode/console-core/identifier.js"
import { i18n } from "~/i18n"
import { localeFromRequest } from "~/lib/language"
diff --git a/packages/console/app/src/routes/black/index.tsx b/packages/console/app/src/routes/black/index.tsx
index 8bce3cd464f..a0f96577d68 100644
--- a/packages/console/app/src/routes/black/index.tsx
+++ b/packages/console/app/src/routes/black/index.tsx
@@ -4,7 +4,7 @@ import { createMemo, createSignal, For, Match, onMount, Show, Switch } from "sol
import { PlanIcon, plans } from "./common"
import { useI18n } from "~/context/i18n"
import { useLanguage } from "~/context/language"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
const getPaused = query(async () => {
"use server"
diff --git a/packages/console/app/src/routes/black/subscribe/[plan].tsx b/packages/console/app/src/routes/black/subscribe/[plan].tsx
index c29c5fac80a..39f6258a1e1 100644
--- a/packages/console/app/src/routes/black/subscribe/[plan].tsx
+++ b/packages/console/app/src/routes/black/subscribe/[plan].tsx
@@ -6,18 +6,18 @@ import { Elements, PaymentElement, useStripe, useElements, AddressElement } from
import { PlanID, plans } from "../common"
import { getActor, useAuthSession } from "~/context/auth"
import { withActor } from "~/context/auth.withActor"
-import { Actor } from "@opencode-ai/console-core/actor.js"
-import { and, Database, eq, isNull } from "@opencode-ai/console-core/drizzle/index.js"
-import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js"
-import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js"
+import { Actor } from "@opencode/console-core/actor.js"
+import { and, Database, eq, isNull } from "@opencode/console-core/drizzle/index.js"
+import { WorkspaceTable } from "@opencode/console-core/schema/workspace.sql.js"
+import { UserTable } from "@opencode/console-core/schema/user.sql.js"
import { createList } from "solid-list"
import { Modal } from "~/component/modal"
-import { BillingTable } from "@opencode-ai/console-core/schema/billing.sql.js"
-import { Billing } from "@opencode-ai/console-core/billing.js"
+import { BillingTable } from "@opencode/console-core/schema/billing.sql.js"
+import { Billing } from "@opencode/console-core/billing.js"
import { useI18n } from "~/context/i18n"
import { useLanguage } from "~/context/language"
import { formError } from "~/lib/form-error"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
const getEnabled = query(async () => {
"use server"
diff --git a/packages/console/app/src/routes/docs/[...path].ts b/packages/console/app/src/routes/docs/[...path].ts
index 164bd2872e3..517108b0650 100644
--- a/packages/console/app/src/routes/docs/[...path].ts
+++ b/packages/console/app/src/routes/docs/[...path].ts
@@ -1,5 +1,5 @@
import type { APIEvent } from "@solidjs/start/server"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import { cookie, docs, localeFromRequest, tag } from "~/lib/language"
async function handler(evt: APIEvent) {
diff --git a/packages/console/app/src/routes/docs/index.ts b/packages/console/app/src/routes/docs/index.ts
index 164bd2872e3..517108b0650 100644
--- a/packages/console/app/src/routes/docs/index.ts
+++ b/packages/console/app/src/routes/docs/index.ts
@@ -1,5 +1,5 @@
import type { APIEvent } from "@solidjs/start/server"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import { cookie, docs, localeFromRequest, tag } from "~/lib/language"
async function handler(evt: APIEvent) {
diff --git a/packages/console/app/src/routes/honeycomb/webhook.ts b/packages/console/app/src/routes/honeycomb/webhook.ts
index 0cae3629b7b..fc5052fe994 100644
--- a/packages/console/app/src/routes/honeycomb/webhook.ts
+++ b/packages/console/app/src/routes/honeycomb/webhook.ts
@@ -1,7 +1,7 @@
import type { APIEvent } from "@solidjs/start/server"
import { z } from "zod"
-import { Resource } from "@opencode-ai/console-resource"
-import { safeEqual } from "@opencode-ai/console-core/util/crypto.js"
+import { Resource } from "@opencode/console-resource"
+import { safeEqual } from "@opencode/console-core/util/crypto.js"
const DISCORD_ALERT_ROLE_ID = "1520924666359713863"
diff --git a/packages/console/app/src/routes/s/[id].ts b/packages/console/app/src/routes/s/[id].ts
index 374fd79ad0c..374e09ae170 100644
--- a/packages/console/app/src/routes/s/[id].ts
+++ b/packages/console/app/src/routes/s/[id].ts
@@ -1,5 +1,5 @@
import type { APIEvent } from "@solidjs/start/server"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import { cookie, docs, localeFromRequest, tag } from "~/lib/language"
async function handler(evt: APIEvent) {
diff --git a/packages/console/app/src/routes/stripe/webhook.ts b/packages/console/app/src/routes/stripe/webhook.ts
index e1e4e6cbd39..4f638ccfe70 100644
--- a/packages/console/app/src/routes/stripe/webhook.ts
+++ b/packages/console/app/src/routes/stripe/webhook.ts
@@ -1,15 +1,15 @@
import type { Stripe } from "stripe"
-import { Billing } from "@opencode-ai/console-core/billing.js"
+import { Billing } from "@opencode/console-core/billing.js"
import type { APIEvent } from "@solidjs/start/server"
-import { and, Database, eq, sql } from "@opencode-ai/console-core/drizzle/index.js"
-import { BillingTable, LiteTable, PaymentTable } from "@opencode-ai/console-core/schema/billing.sql.js"
-import { Identifier } from "@opencode-ai/console-core/identifier.js"
-import { centsToMicroCents } from "@opencode-ai/console-core/util/price.js"
-import { Actor } from "@opencode-ai/console-core/actor.js"
-import { Resource } from "@opencode-ai/console-resource"
-import { LiteData } from "@opencode-ai/console-core/lite.js"
-import { BlackData } from "@opencode-ai/console-core/black.js"
-import { Referral } from "@opencode-ai/console-core/referral.js"
+import { and, Database, eq, sql } from "@opencode/console-core/drizzle/index.js"
+import { BillingTable, LiteTable, PaymentTable } from "@opencode/console-core/schema/billing.sql.js"
+import { Identifier } from "@opencode/console-core/identifier.js"
+import { centsToMicroCents } from "@opencode/console-core/util/price.js"
+import { Actor } from "@opencode/console-core/actor.js"
+import { Resource } from "@opencode/console-resource"
+import { LiteData } from "@opencode/console-core/lite.js"
+import { BlackData } from "@opencode/console-core/black.js"
+import { Referral } from "@opencode/console-core/referral.js"
export async function POST(input: APIEvent) {
const body = await Billing.stripe().webhooks.constructEventAsync(
diff --git a/packages/console/app/src/routes/workspace-picker.tsx b/packages/console/app/src/routes/workspace-picker.tsx
index 83f5582ebe0..9b32470e0f7 100644
--- a/packages/console/app/src/routes/workspace-picker.tsx
+++ b/packages/console/app/src/routes/workspace-picker.tsx
@@ -1,11 +1,11 @@
import { query, useParams, action, createAsync, redirect, useSubmission } from "@solidjs/router"
import { For, createEffect, createSignal } from "solid-js"
import { withActor } from "~/context/auth.withActor"
-import { Actor } from "@opencode-ai/console-core/actor.js"
-import { and, Database, eq, isNull } from "@opencode-ai/console-core/drizzle/index.js"
-import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js"
-import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js"
-import { Workspace } from "@opencode-ai/console-core/workspace.js"
+import { Actor } from "@opencode/console-core/actor.js"
+import { and, Database, eq, isNull } from "@opencode/console-core/drizzle/index.js"
+import { WorkspaceTable } from "@opencode/console-core/schema/workspace.sql.js"
+import { UserTable } from "@opencode/console-core/schema/user.sql.js"
+import { Workspace } from "@opencode/console-core/workspace.js"
import { Dropdown, DropdownItem } from "~/component/dropdown"
import { Modal } from "~/component/modal"
import { useI18n } from "~/context/i18n"
diff --git a/packages/console/app/src/routes/workspace.tsx b/packages/console/app/src/routes/workspace.tsx
index 10e503ac526..858373d972c 100644
--- a/packages/console/app/src/routes/workspace.tsx
+++ b/packages/console/app/src/routes/workspace.tsx
@@ -4,8 +4,8 @@ import { IconWorkspaceLogo } from "../component/icon"
import { WorkspacePicker } from "./workspace-picker"
import { UserMenu } from "./user-menu"
import { withActor } from "~/context/auth.withActor"
-import { User } from "@opencode-ai/console-core/user.js"
-import { Actor } from "@opencode-ai/console-core/actor.js"
+import { User } from "@opencode/console-core/user.js"
+import { Actor } from "@opencode/console-core/actor.js"
import { useLanguage } from "~/context/language"
const getUserEmail = query(async (workspaceID: string) => {
diff --git a/packages/console/app/src/routes/workspace/[id]/billing/billing-section.tsx b/packages/console/app/src/routes/workspace/[id]/billing/billing-section.tsx
index 90280635ff7..07748a0ed44 100644
--- a/packages/console/app/src/routes/workspace/[id]/billing/billing-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/billing/billing-section.tsx
@@ -1,7 +1,7 @@
import { action, useParams, useAction, createAsync, useSubmission, json } from "@solidjs/router"
import { createMemo, Match, Show, Switch, createEffect } from "solid-js"
import { createStore } from "solid-js/store"
-import { Billing } from "@opencode-ai/console-core/billing.js"
+import { Billing } from "@opencode/console-core/billing.js"
import { withActor } from "~/context/auth.withActor"
import { IconAlipay, IconCreditCard, IconStripe, IconUpi, IconWechat } from "~/component/icon"
import styles from "./billing-section.module.css"
diff --git a/packages/console/app/src/routes/workspace/[id]/billing/black-section.tsx b/packages/console/app/src/routes/workspace/[id]/billing/black-section.tsx
index ee3c1fc8307..12c9ec0db0b 100644
--- a/packages/console/app/src/routes/workspace/[id]/billing/black-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/billing/black-section.tsx
@@ -1,12 +1,12 @@
import { action, useParams, useAction, useSubmission, json, query, createAsync } from "@solidjs/router"
import { createStore } from "solid-js/store"
import { Show } from "solid-js"
-import { Billing } from "@opencode-ai/console-core/billing.js"
-import { Database, eq, and, isNull, sql } from "@opencode-ai/console-core/drizzle/index.js"
-import { BillingTable, SubscriptionTable } from "@opencode-ai/console-core/schema/billing.sql.js"
-import { Actor } from "@opencode-ai/console-core/actor.js"
-import { Subscription } from "@opencode-ai/console-core/subscription.js"
-import { BlackData } from "@opencode-ai/console-core/black.js"
+import { Billing } from "@opencode/console-core/billing.js"
+import { Database, eq, and, isNull, sql } from "@opencode/console-core/drizzle/index.js"
+import { BillingTable, SubscriptionTable } from "@opencode/console-core/schema/billing.sql.js"
+import { Actor } from "@opencode/console-core/actor.js"
+import { Subscription } from "@opencode/console-core/subscription.js"
+import { BlackData } from "@opencode/console-core/black.js"
import { withActor } from "~/context/auth.withActor"
import { queryBillingInfo } from "../../common"
import styles from "./black-section.module.css"
diff --git a/packages/console/app/src/routes/workspace/[id]/billing/monthly-limit-section.tsx b/packages/console/app/src/routes/workspace/[id]/billing/monthly-limit-section.tsx
index 7da1de23893..9aceb51c00b 100644
--- a/packages/console/app/src/routes/workspace/[id]/billing/monthly-limit-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/billing/monthly-limit-section.tsx
@@ -2,7 +2,7 @@ import { json, action, useParams, createAsync, useSubmission } from "@solidjs/ro
import { createEffect, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { withActor } from "~/context/auth.withActor"
-import { Billing } from "@opencode-ai/console-core/billing.js"
+import { Billing } from "@opencode/console-core/billing.js"
import styles from "./monthly-limit-section.module.css"
import { queryBillingInfo } from "../../common"
import { useI18n } from "~/context/i18n"
diff --git a/packages/console/app/src/routes/workspace/[id]/billing/payment-section.tsx b/packages/console/app/src/routes/workspace/[id]/billing/payment-section.tsx
index 6da5c42ed0c..410ff3ee7d4 100644
--- a/packages/console/app/src/routes/workspace/[id]/billing/payment-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/billing/payment-section.tsx
@@ -1,4 +1,4 @@
-import { Billing } from "@opencode-ai/console-core/billing.js"
+import { Billing } from "@opencode/console-core/billing.js"
import { query, action, useParams, createAsync, useAction } from "@solidjs/router"
import { For, Match, Show, Switch } from "solid-js"
import { withActor } from "~/context/auth.withActor"
diff --git a/packages/console/app/src/routes/workspace/[id]/billing/redeem-section.tsx b/packages/console/app/src/routes/workspace/[id]/billing/redeem-section.tsx
index 872e8954bef..70bfd1cf817 100644
--- a/packages/console/app/src/routes/workspace/[id]/billing/redeem-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/billing/redeem-section.tsx
@@ -1,10 +1,10 @@
import { json, action, useParams, useSubmission } from "@solidjs/router"
import { Show } from "solid-js"
import { withActor } from "~/context/auth.withActor"
-import { Billing } from "@opencode-ai/console-core/billing.js"
-import { User } from "@opencode-ai/console-core/user.js"
-import { Actor } from "@opencode-ai/console-core/actor.js"
-import { CouponType } from "@opencode-ai/console-core/schema/billing.sql.js"
+import { Billing } from "@opencode/console-core/billing.js"
+import { User } from "@opencode/console-core/user.js"
+import { Actor } from "@opencode/console-core/actor.js"
+import { CouponType } from "@opencode/console-core/schema/billing.sql.js"
import styles from "./redeem-section.module.css"
import { queryBillingInfo } from "../../common"
import { useI18n } from "~/context/i18n"
diff --git a/packages/console/app/src/routes/workspace/[id]/billing/reload-section.tsx b/packages/console/app/src/routes/workspace/[id]/billing/reload-section.tsx
index c9a72c08791..3d4cf6e8283 100644
--- a/packages/console/app/src/routes/workspace/[id]/billing/reload-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/billing/reload-section.tsx
@@ -2,9 +2,9 @@ import { json, action, useParams, createAsync, useSubmission } from "@solidjs/ro
import { createEffect, Show, createMemo } from "solid-js"
import { createStore } from "solid-js/store"
import { withActor } from "~/context/auth.withActor"
-import { Billing } from "@opencode-ai/console-core/billing.js"
-import { Database, eq } from "@opencode-ai/console-core/drizzle/index.js"
-import { BillingTable } from "@opencode-ai/console-core/schema/billing.sql.js"
+import { Billing } from "@opencode/console-core/billing.js"
+import { Database, eq } from "@opencode/console-core/drizzle/index.js"
+import { BillingTable } from "@opencode/console-core/schema/billing.sql.js"
import styles from "./reload-section.module.css"
import { queryBillingInfo } from "../../common"
import { useI18n } from "~/context/i18n"
diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx
index da1b053a358..9a14d12a2b3 100644
--- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx
@@ -2,14 +2,14 @@ import { action, useParams, useAction, useSubmission, json, query, createAsync }
import { createStore } from "solid-js/store"
import { createMemo, For, Show } from "solid-js"
import { Modal } from "~/component/modal"
-import { Billing } from "@opencode-ai/console-core/billing.js"
-import { Database, eq, and, isNull } from "@opencode-ai/console-core/drizzle/index.js"
-import { BillingTable, LiteTable } from "@opencode-ai/console-core/schema/billing.sql.js"
-import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js"
-import { Actor } from "@opencode-ai/console-core/actor.js"
-import { Workspace } from "@opencode-ai/console-core/workspace.js"
-import { Subscription } from "@opencode-ai/console-core/subscription.js"
-import { LiteData } from "@opencode-ai/console-core/lite.js"
+import { Billing } from "@opencode/console-core/billing.js"
+import { Database, eq, and, isNull } from "@opencode/console-core/drizzle/index.js"
+import { BillingTable, LiteTable } from "@opencode/console-core/schema/billing.sql.js"
+import { WorkspaceTable } from "@opencode/console-core/schema/workspace.sql.js"
+import { Actor } from "@opencode/console-core/actor.js"
+import { Workspace } from "@opencode/console-core/workspace.js"
+import { Subscription } from "@opencode/console-core/subscription.js"
+import { LiteData } from "@opencode/console-core/lite.js"
import { withActor } from "~/context/auth.withActor"
import { queryBillingInfo } from "../../common"
import styles from "./lite-section.module.css"
diff --git a/packages/console/app/src/routes/workspace/[id]/keys/key-section.tsx b/packages/console/app/src/routes/workspace/[id]/keys/key-section.tsx
index 09c67f230bd..aa1e51e04d3 100644
--- a/packages/console/app/src/routes/workspace/[id]/keys/key-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/keys/key-section.tsx
@@ -1,11 +1,11 @@
import { json, query, action, useParams, createAsync, useSubmission } from "@solidjs/router"
import { createEffect, createSignal, For, Show } from "solid-js"
import { IconCopy, IconCheck } from "~/component/icon"
-import { Key } from "@opencode-ai/console-core/key.js"
+import { Key } from "@opencode/console-core/key.js"
import { withActor } from "~/context/auth.withActor"
import { createStore } from "solid-js/store"
import styles from "./key-section.module.css"
-import { Actor } from "@opencode-ai/console-core/actor.js"
+import { Actor } from "@opencode/console-core/actor.js"
import { useI18n } from "~/context/i18n"
import { formError, localizeError } from "~/lib/form-error"
diff --git a/packages/console/app/src/routes/workspace/[id]/members/member-section.tsx b/packages/console/app/src/routes/workspace/[id]/members/member-section.tsx
index 00edb400c97..f0ea92a95fb 100644
--- a/packages/console/app/src/routes/workspace/[id]/members/member-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/members/member-section.tsx
@@ -3,9 +3,9 @@ import { createEffect, For, Show } from "solid-js"
import { withActor } from "~/context/auth.withActor"
import { createStore } from "solid-js/store"
import styles from "./member-section.module.css"
-import { UserRole } from "@opencode-ai/console-core/schema/user.sql.js"
-import { Actor } from "@opencode-ai/console-core/actor.js"
-import { User } from "@opencode-ai/console-core/user.js"
+import { UserRole } from "@opencode/console-core/schema/user.sql.js"
+import { Actor } from "@opencode/console-core/actor.js"
+import { User } from "@opencode/console-core/user.js"
import { RoleDropdown } from "./role-dropdown"
import { useI18n } from "~/context/i18n"
import { useLanguage } from "~/context/language"
diff --git a/packages/console/app/src/routes/workspace/[id]/model-section.tsx b/packages/console/app/src/routes/workspace/[id]/model-section.tsx
index 96c91889c1f..315d9bda4ec 100644
--- a/packages/console/app/src/routes/workspace/[id]/model-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/model-section.tsx
@@ -1,8 +1,8 @@
-import { Model } from "@opencode-ai/console-core/model.js"
+import { Model } from "@opencode/console-core/model.js"
import { query, action, useParams, createAsync, json } from "@solidjs/router"
import { createMemo, For, Show } from "solid-js"
import { withActor } from "~/context/auth.withActor"
-import { ZenData } from "@opencode-ai/console-core/model.js"
+import { ZenData } from "@opencode/console-core/model.js"
import styles from "./model-section.module.css"
import { querySessionInfo } from "../common"
import {
diff --git a/packages/console/app/src/routes/workspace/[id]/new-user-section.tsx b/packages/console/app/src/routes/workspace/[id]/new-user-section.tsx
index a50efc288d6..f0a2095b5d8 100644
--- a/packages/console/app/src/routes/workspace/[id]/new-user-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/new-user-section.tsx
@@ -1,8 +1,8 @@
import { query, useParams, createAsync } from "@solidjs/router"
import { createMemo, createSignal, Show } from "solid-js"
import { IconCopy, IconCheck } from "~/component/icon"
-import { Key } from "@opencode-ai/console-core/key.js"
-import { Billing } from "@opencode-ai/console-core/billing.js"
+import { Key } from "@opencode/console-core/key.js"
+import { Billing } from "@opencode/console-core/billing.js"
import { withActor } from "~/context/auth.withActor"
import styles from "./new-user-section.module.css"
import { useI18n } from "~/context/i18n"
diff --git a/packages/console/app/src/routes/workspace/[id]/provider-section.tsx b/packages/console/app/src/routes/workspace/[id]/provider-section.tsx
index acdd897425c..ce147cd7eef 100644
--- a/packages/console/app/src/routes/workspace/[id]/provider-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/provider-section.tsx
@@ -1,6 +1,6 @@
import { json, query, action, useParams, createAsync, useSubmission } from "@solidjs/router"
import { createEffect, For, Show } from "solid-js"
-import { Provider } from "@opencode-ai/console-core/provider.js"
+import { Provider } from "@opencode/console-core/provider.js"
import { withActor } from "~/context/auth.withActor"
import { createStore } from "solid-js/store"
import styles from "./provider-section.module.css"
diff --git a/packages/console/app/src/routes/workspace/[id]/settings/settings-section.tsx b/packages/console/app/src/routes/workspace/[id]/settings/settings-section.tsx
index a6795c1ba66..610cb7e55c9 100644
--- a/packages/console/app/src/routes/workspace/[id]/settings/settings-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/settings/settings-section.tsx
@@ -2,10 +2,10 @@ import { json, action, useParams, useSubmission, createAsync, query } from "@sol
import { createEffect, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { withActor } from "~/context/auth.withActor"
-import { Workspace } from "@opencode-ai/console-core/workspace.js"
+import { Workspace } from "@opencode/console-core/workspace.js"
import styles from "./settings-section.module.css"
-import { Database, eq } from "@opencode-ai/console-core/drizzle/index.js"
-import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js"
+import { Database, eq } from "@opencode/console-core/drizzle/index.js"
+import { WorkspaceTable } from "@opencode/console-core/schema/workspace.sql.js"
import { useI18n } from "~/context/i18n"
import { formError, localizeError } from "~/lib/form-error"
diff --git a/packages/console/app/src/routes/workspace/[id]/usage/graph-section.tsx b/packages/console/app/src/routes/workspace/[id]/usage/graph-section.tsx
index b5033f25f6d..c5d138ff3f7 100644
--- a/packages/console/app/src/routes/workspace/[id]/usage/graph-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/usage/graph-section.tsx
@@ -1,8 +1,8 @@
-import { and, Database, eq, gte, inArray, isNull, lt, or, sql, sum } from "@opencode-ai/console-core/drizzle/index.js"
-import { UsageTable } from "@opencode-ai/console-core/schema/billing.sql.js"
-import { KeyTable } from "@opencode-ai/console-core/schema/key.sql.js"
-import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js"
-import { AuthTable } from "@opencode-ai/console-core/schema/auth.sql.js"
+import { and, Database, eq, gte, inArray, isNull, lt, or, sql, sum } from "@opencode/console-core/drizzle/index.js"
+import { UsageTable } from "@opencode/console-core/schema/billing.sql.js"
+import { KeyTable } from "@opencode/console-core/schema/key.sql.js"
+import { UserTable } from "@opencode/console-core/schema/user.sql.js"
+import { AuthTable } from "@opencode/console-core/schema/auth.sql.js"
import { useParams } from "@solidjs/router"
import { createEffect, createMemo, onCleanup, Show, For } from "solid-js"
import { createStore } from "solid-js/store"
diff --git a/packages/console/app/src/routes/workspace/[id]/usage/usage-section.tsx b/packages/console/app/src/routes/workspace/[id]/usage/usage-section.tsx
index 2075052c7db..63ef2c88a5d 100644
--- a/packages/console/app/src/routes/workspace/[id]/usage/usage-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/usage/usage-section.tsx
@@ -1,4 +1,4 @@
-import { Billing } from "@opencode-ai/console-core/billing.js"
+import { Billing } from "@opencode/console-core/billing.js"
import { createAsync, query, useParams } from "@solidjs/router"
import { createMemo, For, Show, Switch, Match, createEffect, createSignal } from "solid-js"
import { formatDateUTC, formatDateForTable } from "../../common"
diff --git a/packages/console/app/src/routes/workspace/common.tsx b/packages/console/app/src/routes/workspace/common.tsx
index d41793dd92b..4af094f5fc0 100644
--- a/packages/console/app/src/routes/workspace/common.tsx
+++ b/packages/console/app/src/routes/workspace/common.tsx
@@ -1,11 +1,11 @@
-import { Resource } from "@opencode-ai/console-resource"
-import { Actor } from "@opencode-ai/console-core/actor.js"
+import { Resource } from "@opencode/console-resource"
+import { Actor } from "@opencode/console-core/actor.js"
import { action, json, query } from "@solidjs/router"
import { withActor } from "~/context/auth.withActor"
-import { Billing } from "@opencode-ai/console-core/billing.js"
-import { and, Database, desc, eq, isNull } from "@opencode-ai/console-core/drizzle/index.js"
-import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js"
-import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js"
+import { Billing } from "@opencode/console-core/billing.js"
+import { and, Database, desc, eq, isNull } from "@opencode/console-core/drizzle/index.js"
+import { WorkspaceTable } from "@opencode/console-core/schema/workspace.sql.js"
+import { UserTable } from "@opencode/console-core/schema/user.sql.js"
export function formatDateForTable(date: Date) {
const options: Intl.DateTimeFormatOptions = {
diff --git a/packages/console/app/src/routes/zen/go/v1/models.ts b/packages/console/app/src/routes/zen/go/v1/models.ts
index 83ef74fb614..dc7f6473067 100644
--- a/packages/console/app/src/routes/zen/go/v1/models.ts
+++ b/packages/console/app/src/routes/zen/go/v1/models.ts
@@ -1,5 +1,5 @@
import type { APIEvent } from "@solidjs/start/server"
-import { ZenData } from "@opencode-ai/console-core/model.js"
+import { ZenData } from "@opencode/console-core/model.js"
import { buildModelsResponse, buildOptionsResponse } from "../../util/modelsHandler"
export async function OPTIONS(_input: APIEvent) {
diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts
index 35dcb00e1c7..70e671e53fc 100644
--- a/packages/console/app/src/routes/zen/util/handler.ts
+++ b/packages/console/app/src/routes/zen/util/handler.ts
@@ -1,19 +1,19 @@
import type { APIEvent } from "@solidjs/start/server"
-import { and, Database, eq, isNull, lt, or, sql } from "@opencode-ai/console-core/drizzle/index.js"
-import { KeyTable } from "@opencode-ai/console-core/schema/key.sql.js"
-import { BillingTable, LiteTable, SubscriptionTable, UsageTable } from "@opencode-ai/console-core/schema/billing.sql.js"
-import { centsToMicroCents } from "@opencode-ai/console-core/util/price.js"
-import { getMonthlyBounds, getWeekBounds } from "@opencode-ai/console-core/util/date.js"
-import { Identifier } from "@opencode-ai/console-core/identifier.js"
-import { Billing } from "@opencode-ai/console-core/billing.js"
-import { Actor } from "@opencode-ai/console-core/actor.js"
-import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js"
-import { ZenData } from "@opencode-ai/console-core/model.js"
-import { Subscription } from "@opencode-ai/console-core/subscription.js"
-import { BlackData } from "@opencode-ai/console-core/black.js"
-import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js"
-import { ModelTable } from "@opencode-ai/console-core/schema/model.sql.js"
-import { ProviderTable } from "@opencode-ai/console-core/schema/provider.sql.js"
+import { and, Database, eq, isNull, lt, or, sql } from "@opencode/console-core/drizzle/index.js"
+import { KeyTable } from "@opencode/console-core/schema/key.sql.js"
+import { BillingTable, LiteTable, SubscriptionTable, UsageTable } from "@opencode/console-core/schema/billing.sql.js"
+import { centsToMicroCents } from "@opencode/console-core/util/price.js"
+import { getMonthlyBounds, getWeekBounds } from "@opencode/console-core/util/date.js"
+import { Identifier } from "@opencode/console-core/identifier.js"
+import { Billing } from "@opencode/console-core/billing.js"
+import { Actor } from "@opencode/console-core/actor.js"
+import { WorkspaceTable } from "@opencode/console-core/schema/workspace.sql.js"
+import { ZenData } from "@opencode/console-core/model.js"
+import { Subscription } from "@opencode/console-core/subscription.js"
+import { BlackData } from "@opencode/console-core/black.js"
+import { UserTable } from "@opencode/console-core/schema/user.sql.js"
+import { ModelTable } from "@opencode/console-core/schema/model.sql.js"
+import { ProviderTable } from "@opencode/console-core/schema/provider.sql.js"
import { logger } from "./logger"
import {
AuthError,
@@ -42,15 +42,15 @@ import { createRateLimiter as createIpRateLimiter } from "./ipRateLimiter"
import { createRateLimiter as createKeyRateLimiter } from "./keyRateLimiter"
import { createTrialLimiter } from "./trialLimiter"
import { createStickyTracker } from "./stickyProviderTracker"
-import { LiteData } from "@opencode-ai/console-core/lite.js"
-import { Resource } from "@opencode-ai/console-resource"
+import { LiteData } from "@opencode/console-core/lite.js"
+import { Resource } from "@opencode/console-resource"
import { i18n, type Key } from "~/i18n"
import { localeFromRequest } from "~/lib/language"
import { createModelTpmLimiter } from "./modelTpmLimiter"
import { createModelTpsLimiter } from "./modelTpsLimiter"
import { createProviderBudgetTracker } from "./providerBudgetTracker"
import { accumulateUsage, HOT_WORKSPACES } from "./usageBatcher"
-import { Workspace } from "@opencode-ai/console-core/workspace.js"
+import { Workspace } from "@opencode/console-core/workspace.js"
import { countryFromRequest } from "~/lib/request-country"
type ZenData = Awaited>
diff --git a/packages/console/app/src/routes/zen/util/ipRateLimiter.ts b/packages/console/app/src/routes/zen/util/ipRateLimiter.ts
index 7461fa63135..4f4ad7f1000 100644
--- a/packages/console/app/src/routes/zen/util/ipRateLimiter.ts
+++ b/packages/console/app/src/routes/zen/util/ipRateLimiter.ts
@@ -3,7 +3,7 @@ import { logger } from "./logger"
import { buildRateLimitKey, getRedis } from "./redis"
import { i18n } from "~/i18n"
import { localeFromRequest } from "~/lib/language"
-import { Subscription } from "@opencode-ai/console-core/subscription.js"
+import { Subscription } from "@opencode/console-core/subscription.js"
export function createRateLimiter(modelId: string, rateLimit: number | undefined, rawIp: string, request: Request) {
const dict = i18n(localeFromRequest(request))
diff --git a/packages/console/app/src/routes/zen/util/logger.ts b/packages/console/app/src/routes/zen/util/logger.ts
index aef46ddd0e6..6db759e7137 100644
--- a/packages/console/app/src/routes/zen/util/logger.ts
+++ b/packages/console/app/src/routes/zen/util/logger.ts
@@ -1,4 +1,4 @@
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
export const logger = {
metric: (values: Record) => {
diff --git a/packages/console/app/src/routes/zen/util/modelTpmLimiter.ts b/packages/console/app/src/routes/zen/util/modelTpmLimiter.ts
index 8e3e8cc95ed..87dc27e34cb 100644
--- a/packages/console/app/src/routes/zen/util/modelTpmLimiter.ts
+++ b/packages/console/app/src/routes/zen/util/modelTpmLimiter.ts
@@ -1,5 +1,5 @@
-import { and, Database, eq, inArray, sql } from "@opencode-ai/console-core/drizzle/index.js"
-import { ModelTpmRateLimitTable } from "@opencode-ai/console-core/schema/ip.sql.js"
+import { and, Database, eq, inArray, sql } from "@opencode/console-core/drizzle/index.js"
+import { ModelTpmRateLimitTable } from "@opencode/console-core/schema/ip.sql.js"
import { UsageInfo } from "./provider/provider"
export function createModelTpmLimiter(providers: { id: string; model: string; tpmLimit?: number }[]) {
diff --git a/packages/console/app/src/routes/zen/util/modelTpsLimiter.ts b/packages/console/app/src/routes/zen/util/modelTpsLimiter.ts
index fbdab6d319a..ce3d1a0242a 100644
--- a/packages/console/app/src/routes/zen/util/modelTpsLimiter.ts
+++ b/packages/console/app/src/routes/zen/util/modelTpsLimiter.ts
@@ -1,5 +1,5 @@
-import { and, Database, inArray, sql } from "@opencode-ai/console-core/drizzle/index.js"
-import { ModelTpsRateLimitTable } from "@opencode-ai/console-core/schema/ip.sql.js"
+import { and, Database, inArray, sql } from "@opencode/console-core/drizzle/index.js"
+import { ModelTpsRateLimitTable } from "@opencode/console-core/schema/ip.sql.js"
import { UsageInfo } from "./provider/provider"
export function createModelTpsLimiter(providers: { id: string; model: string; tpsGoal?: number }[]) {
diff --git a/packages/console/app/src/routes/zen/util/provider/provider.ts b/packages/console/app/src/routes/zen/util/provider/provider.ts
index 9b26c82377b..99bce0a72df 100644
--- a/packages/console/app/src/routes/zen/util/provider/provider.ts
+++ b/packages/console/app/src/routes/zen/util/provider/provider.ts
@@ -1,4 +1,4 @@
-import { ZenData } from "@opencode-ai/console-core/model.js"
+import { ZenData } from "@opencode/console-core/model.js"
import {
fromAnthropicChunk,
fromAnthropicRequest,
diff --git a/packages/console/app/src/routes/zen/util/providerBudgetTracker.ts b/packages/console/app/src/routes/zen/util/providerBudgetTracker.ts
index a21f70b5385..e3c898216bb 100644
--- a/packages/console/app/src/routes/zen/util/providerBudgetTracker.ts
+++ b/packages/console/app/src/routes/zen/util/providerBudgetTracker.ts
@@ -1,4 +1,4 @@
-import { centsToMicroCents } from "@opencode-ai/console-core/util/price.js"
+import { centsToMicroCents } from "@opencode/console-core/util/price.js"
import { buildRateLimitKey, getRedis } from "./redis"
import { logger } from "./logger"
diff --git a/packages/console/app/src/routes/zen/util/redis.ts b/packages/console/app/src/routes/zen/util/redis.ts
index 512523298a8..9e6ec68b1ae 100644
--- a/packages/console/app/src/routes/zen/util/redis.ts
+++ b/packages/console/app/src/routes/zen/util/redis.ts
@@ -1,4 +1,4 @@
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import { Redis } from "@upstash/redis/cloudflare"
let redis: Redis | undefined
diff --git a/packages/console/app/src/routes/zen/util/stickyProviderTracker.ts b/packages/console/app/src/routes/zen/util/stickyProviderTracker.ts
index 67fe3ed4057..5a8645289ba 100644
--- a/packages/console/app/src/routes/zen/util/stickyProviderTracker.ts
+++ b/packages/console/app/src/routes/zen/util/stickyProviderTracker.ts
@@ -1,5 +1,5 @@
-import { Database, eq } from "@opencode-ai/console-core/drizzle/index.js"
-import { ModelStickyProviderTable } from "@opencode-ai/console-core/schema/ip.sql.js"
+import { Database, eq } from "@opencode/console-core/drizzle/index.js"
+import { ModelStickyProviderTable } from "@opencode/console-core/schema/ip.sql.js"
export function createStickyTracker(
modelId: string,
diff --git a/packages/console/app/src/routes/zen/util/trialLimiter.ts b/packages/console/app/src/routes/zen/util/trialLimiter.ts
index 319825dd79f..06ee6e2f5fd 100644
--- a/packages/console/app/src/routes/zen/util/trialLimiter.ts
+++ b/packages/console/app/src/routes/zen/util/trialLimiter.ts
@@ -1,7 +1,7 @@
-import { Database, eq, sql } from "@opencode-ai/console-core/drizzle/index.js"
-import { IpTable } from "@opencode-ai/console-core/schema/ip.sql.js"
+import { Database, eq, sql } from "@opencode/console-core/drizzle/index.js"
+import { IpTable } from "@opencode/console-core/schema/ip.sql.js"
import { UsageInfo } from "./provider/provider"
-import { Subscription } from "@opencode-ai/console-core/subscription.js"
+import { Subscription } from "@opencode/console-core/subscription.js"
export function createTrialLimiter(trialProviders: string[] | undefined, ip: string) {
if (!trialProviders) return
diff --git a/packages/console/app/src/routes/zen/util/usageBatcher.ts b/packages/console/app/src/routes/zen/util/usageBatcher.ts
index 315ce0a2ebb..741a10c2d3e 100644
--- a/packages/console/app/src/routes/zen/util/usageBatcher.ts
+++ b/packages/console/app/src/routes/zen/util/usageBatcher.ts
@@ -1,4 +1,4 @@
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import { getRedis } from "./redis"
// Workspaces whose balance/usage updates should be batched in Redis to avoid
diff --git a/packages/console/app/src/routes/zen/v1/models.ts b/packages/console/app/src/routes/zen/v1/models.ts
index 68c3cac6946..01b94871809 100644
--- a/packages/console/app/src/routes/zen/v1/models.ts
+++ b/packages/console/app/src/routes/zen/v1/models.ts
@@ -1,9 +1,9 @@
import type { APIEvent } from "@solidjs/start/server"
-import { ZenData } from "@opencode-ai/console-core/model.js"
-import { and, Database, eq, isNull } from "@opencode-ai/console-core/drizzle/index.js"
-import { KeyTable } from "@opencode-ai/console-core/schema/key.sql.js"
-import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js"
-import { ModelTable } from "@opencode-ai/console-core/schema/model.sql.js"
+import { ZenData } from "@opencode/console-core/model.js"
+import { and, Database, eq, isNull } from "@opencode/console-core/drizzle/index.js"
+import { KeyTable } from "@opencode/console-core/schema/key.sql.js"
+import { WorkspaceTable } from "@opencode/console-core/schema/workspace.sql.js"
+import { ModelTable } from "@opencode/console-core/schema/model.sql.js"
import { buildOptionsResponse, buildModelsResponse } from "~/routes/zen/util/modelsHandler"
export async function OPTIONS(_input: APIEvent) {
diff --git a/packages/console/app/test/providerUsage.test.ts b/packages/console/app/test/providerUsage.test.ts
index 7be3aacffdd..890e2ab8eca 100644
--- a/packages/console/app/test/providerUsage.test.ts
+++ b/packages/console/app/test/providerUsage.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { ZenData } from "@opencode-ai/console-core/model.js"
+import type { ZenData } from "@opencode/console-core/model.js"
import type { ProviderHelper } from "../src/routes/zen/util/provider/provider"
import { anthropicHelper } from "../src/routes/zen/util/provider/anthropic"
import { googleHelper } from "../src/routes/zen/util/provider/google"
diff --git a/packages/console/core/package.json b/packages/console/core/package.json
index 21dbdbf8b7c..243f890926d 100644
--- a/packages/console/core/package.json
+++ b/packages/console/core/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/console-core",
+ "name": "@opencode/console-core",
"version": "1.18.15",
"private": true,
"type": "module",
@@ -8,8 +8,8 @@
"dependencies": {
"@aws-sdk/client-sts": "3.782.0",
"@jsx-email/render": "1.1.1",
- "@opencode-ai/console-mail": "workspace:*",
- "@opencode-ai/console-resource": "workspace:*",
+ "@opencode/console-mail": "workspace:*",
+ "@opencode/console-resource": "workspace:*",
"@planetscale/database": "1.19.0",
"aws4fetch": "1.0.20",
"drizzle-orm": "catalog:",
diff --git a/packages/console/core/script/create-api-key.ts b/packages/console/core/script/create-api-key.ts
index dba2ee946c4..1db2de0d306 100644
--- a/packages/console/core/script/create-api-key.ts
+++ b/packages/console/core/script/create-api-key.ts
@@ -1,4 +1,4 @@
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import { and, Database, eq, isNull } from "../src/drizzle/index.js"
import { Identifier } from "../src/identifier.js"
import { AccountTable } from "../src/schema/account.sql.js"
diff --git a/packages/console/core/script/reset-db.ts b/packages/console/core/script/reset-db.ts
index 02d49890176..b2f36b143ef 100644
--- a/packages/console/core/script/reset-db.ts
+++ b/packages/console/core/script/reset-db.ts
@@ -1,4 +1,4 @@
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import { Database } from "../src/drizzle/index.js"
import { UserTable } from "../src/schema/user.sql.js"
import { AccountTable } from "../src/schema/account.sql.js"
diff --git a/packages/console/core/src/aws.ts b/packages/console/core/src/aws.ts
index a4c1510862c..2d618f683f3 100644
--- a/packages/console/core/src/aws.ts
+++ b/packages/console/core/src/aws.ts
@@ -1,5 +1,5 @@
import { z } from "zod"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import { AwsClient } from "aws4fetch"
import { fn } from "./util/fn"
diff --git a/packages/console/core/src/billing.ts b/packages/console/core/src/billing.ts
index 879cd8c6775..86f6fdc81aa 100644
--- a/packages/console/core/src/billing.ts
+++ b/packages/console/core/src/billing.ts
@@ -12,7 +12,7 @@ import {
import { Actor } from "./actor"
import { fn } from "./util/fn"
import { z } from "zod"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import { Identifier } from "./identifier"
import { centsToMicroCents } from "./util/price"
import { User } from "./user"
diff --git a/packages/console/core/src/black.ts b/packages/console/core/src/black.ts
index 1908403a276..f244c637313 100644
--- a/packages/console/core/src/black.ts
+++ b/packages/console/core/src/black.ts
@@ -1,6 +1,6 @@
import { z } from "zod"
import { fn } from "./util/fn"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import { BlackPlans } from "./schema/billing.sql"
import { Subscription } from "./subscription"
diff --git a/packages/console/core/src/drizzle/index.ts b/packages/console/core/src/drizzle/index.ts
index 933e59a204d..595eee9c5c3 100644
--- a/packages/console/core/src/drizzle/index.ts
+++ b/packages/console/core/src/drizzle/index.ts
@@ -1,5 +1,5 @@
import { drizzle } from "drizzle-orm/planetscale-serverless"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
export * from "drizzle-orm"
import { Client } from "@planetscale/database"
diff --git a/packages/console/core/src/lite.ts b/packages/console/core/src/lite.ts
index 717940ea656..23b01fbb6db 100644
--- a/packages/console/core/src/lite.ts
+++ b/packages/console/core/src/lite.ts
@@ -1,6 +1,6 @@
import { z } from "zod"
import { fn } from "./util/fn"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import { Subscription } from "./subscription"
export namespace LiteData {
diff --git a/packages/console/core/src/model.ts b/packages/console/core/src/model.ts
index f4ac40183f1..29205282421 100644
--- a/packages/console/core/src/model.ts
+++ b/packages/console/core/src/model.ts
@@ -5,7 +5,7 @@ import { ModelTable } from "./schema/model.sql"
import { Identifier } from "./identifier"
import { fn } from "./util/fn"
import { Actor } from "./actor"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
export namespace ZenData {
const FormatSchema = z.enum(["anthropic", "google", "openai", "oa-compat"])
diff --git a/packages/console/core/src/subscription.ts b/packages/console/core/src/subscription.ts
index adbb0a55bcd..36c1b5a690d 100644
--- a/packages/console/core/src/subscription.ts
+++ b/packages/console/core/src/subscription.ts
@@ -2,7 +2,7 @@ import { z } from "zod"
import { fn } from "./util/fn"
import { centsToMicroCents } from "./util/price"
import { getWeekBounds, getMonthlyBounds } from "./util/date"
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
export namespace Subscription {
const LimitsSchema = z.object({
diff --git a/packages/console/core/src/user.ts b/packages/console/core/src/user.ts
index ea379b2b48a..97fcda085cc 100644
--- a/packages/console/core/src/user.ts
+++ b/packages/console/core/src/user.ts
@@ -139,7 +139,7 @@ export namespace User {
.then((rows) => rows[0]),
)
- const { InviteEmail } = await import("@opencode-ai/console-mail/InviteEmail.jsx")
+ const { InviteEmail } = await import("@opencode/console-mail/InviteEmail.jsx")
await AWS.sendEmail({
to: email,
subject: `You've been invited to join the ${emailInfo.workspaceName} workspace on OpenCode`,
diff --git a/packages/console/function/package.json b/packages/console/function/package.json
index 57ba6633539..644d1b66585 100644
--- a/packages/console/function/package.json
+++ b/packages/console/function/package.json
@@ -1,5 +1,5 @@
{
- "name": "@opencode-ai/console-function",
+ "name": "@opencode/console-function",
"version": "1.18.15",
"$schema": "https://json.schemastore.org/package.json",
"private": true,
@@ -16,8 +16,8 @@
"@typescript/native-preview": "catalog:"
},
"dependencies": {
- "@opencode-ai/console-core": "workspace:*",
- "@opencode-ai/console-resource": "workspace:*",
+ "@opencode/console-core": "workspace:*",
+ "@opencode/console-resource": "workspace:*",
"@openauthjs/openauth": "0.0.0-20250322224806",
"zod": "catalog:"
}
diff --git a/packages/console/function/src/auth.ts b/packages/console/function/src/auth.ts
index 6d56b967060..46a85666eee 100644
--- a/packages/console/function/src/auth.ts
+++ b/packages/console/function/src/auth.ts
@@ -7,16 +7,16 @@ import { THEME_OPENAUTH } from "@openauthjs/openauth/ui/theme"
import { GithubProvider } from "@openauthjs/openauth/provider/github"
import { GoogleOidcProvider } from "@openauthjs/openauth/provider/google"
import { CloudflareStorage } from "@openauthjs/openauth/storage/cloudflare"
-import { Account } from "@opencode-ai/console-core/account.js"
-import { Workspace } from "@opencode-ai/console-core/workspace.js"
-import { Actor } from "@opencode-ai/console-core/actor.js"
-import { Resource } from "@opencode-ai/console-resource"
-import { User } from "@opencode-ai/console-core/user.js"
-import { and, Database, eq, isNull, or } from "@opencode-ai/console-core/drizzle/index.js"
-import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js"
-import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js"
-import { AuthTable } from "@opencode-ai/console-core/schema/auth.sql.js"
-import { Identifier } from "@opencode-ai/console-core/identifier.js"
+import { Account } from "@opencode/console-core/account.js"
+import { Workspace } from "@opencode/console-core/workspace.js"
+import { Actor } from "@opencode/console-core/actor.js"
+import { Resource } from "@opencode/console-resource"
+import { User } from "@opencode/console-core/user.js"
+import { and, Database, eq, isNull, or } from "@opencode/console-core/drizzle/index.js"
+import { WorkspaceTable } from "@opencode/console-core/schema/workspace.sql.js"
+import { UserTable } from "@opencode/console-core/schema/user.sql.js"
+import { AuthTable } from "@opencode/console-core/schema/auth.sql.js"
+import { Identifier } from "@opencode/console-core/identifier.js"
type Env = {
AuthStorage: KVNamespace
diff --git a/packages/console/function/src/log-processor.ts b/packages/console/function/src/log-processor.ts
index 75daba2b504..a10d7f40202 100644
--- a/packages/console/function/src/log-processor.ts
+++ b/packages/console/function/src/log-processor.ts
@@ -1,4 +1,4 @@
-import { Resource } from "@opencode-ai/console-resource"
+import { Resource } from "@opencode/console-resource"
import type { TraceItem } from "@cloudflare/workers-types"
export default {
diff --git a/packages/console/function/src/stat.ts b/packages/console/function/src/stat.ts
index 957adf491a6..a319806214b 100644
--- a/packages/console/function/src/stat.ts
+++ b/packages/console/function/src/stat.ts
@@ -1,5 +1,5 @@
-import { and, Database, inArray } from "@opencode-ai/console-core/drizzle/index.js"
-import { ModelTpsRateLimitTable } from "@opencode-ai/console-core/schema/ip.sql.js"
+import { and, Database, inArray } from "@opencode/console-core/drizzle/index.js"
+import { ModelTpsRateLimitTable } from "@opencode/console-core/schema/ip.sql.js"
type Result = Record
diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json
index 5a0941327dc..327298d49c1 100644
--- a/packages/console/mail/package.json
+++ b/packages/console/mail/package.json
@@ -1,5 +1,5 @@
{
- "name": "@opencode-ai/console-mail",
+ "name": "@opencode/console-mail",
"version": "1.18.15",
"dependencies": {
"@jsx-email/all": "2.2.3",
diff --git a/packages/console/resource/package.json b/packages/console/resource/package.json
index 6e874331d24..ba42c124ed2 100644
--- a/packages/console/resource/package.json
+++ b/packages/console/resource/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/console-resource",
+ "name": "@opencode/console-resource",
"license": "MIT",
"dependencies": {
"@cloudflare/workers-types": "catalog:"
diff --git a/packages/console/support/package.json b/packages/console/support/package.json
index 1ad1d82e9df..0baa5d7f8a8 100644
--- a/packages/console/support/package.json
+++ b/packages/console/support/package.json
@@ -1,5 +1,5 @@
{
- "name": "@opencode-ai/console-support",
+ "name": "@opencode/console-support",
"version": "1.18.15",
"type": "module",
"license": "MIT",
@@ -9,7 +9,7 @@
},
"dependencies": {
"@cloudflare/vite-plugin": "1.15.2",
- "@opencode-ai/console-core": "workspace:*",
+ "@opencode/console-core": "workspace:*",
"@solidjs/meta": "catalog:",
"@solidjs/router": "catalog:",
"@solidjs/start": "catalog:",
diff --git a/packages/console/support/src/lib/lookup.ts b/packages/console/support/src/lib/lookup.ts
index 5bf2b06f6b7..dae8153716c 100644
--- a/packages/console/support/src/lib/lookup.ts
+++ b/packages/console/support/src/lib/lookup.ts
@@ -1,8 +1,8 @@
"use server"
-import { Database, and, eq, isNull, sql } from "@opencode-ai/console-core/drizzle/index.js"
-import { AuthTable } from "@opencode-ai/console-core/schema/auth.sql.js"
-import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js"
+import { Database, and, eq, isNull, sql } from "@opencode/console-core/drizzle/index.js"
+import { AuthTable } from "@opencode/console-core/schema/auth.sql.js"
+import { UserTable } from "@opencode/console-core/schema/user.sql.js"
import {
BillingTable,
PaymentTable,
@@ -10,15 +10,15 @@ import {
BlackPlans,
UsageTable,
LiteTable,
-} from "@opencode-ai/console-core/schema/billing.sql.js"
-import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js"
-import { KeyTable } from "@opencode-ai/console-core/schema/key.sql.js"
-import { ModelTable } from "@opencode-ai/console-core/schema/model.sql.js"
-import { BlackData } from "@opencode-ai/console-core/black.js"
-import { LiteData } from "@opencode-ai/console-core/lite.js"
-import { Subscription } from "@opencode-ai/console-core/subscription.js"
-import { centsToMicroCents } from "@opencode-ai/console-core/util/price.js"
-import { getWeekBounds } from "@opencode-ai/console-core/util/date.js"
+} from "@opencode/console-core/schema/billing.sql.js"
+import { WorkspaceTable } from "@opencode/console-core/schema/workspace.sql.js"
+import { KeyTable } from "@opencode/console-core/schema/key.sql.js"
+import { ModelTable } from "@opencode/console-core/schema/model.sql.js"
+import { BlackData } from "@opencode/console-core/black.js"
+import { LiteData } from "@opencode/console-core/lite.js"
+import { Subscription } from "@opencode/console-core/subscription.js"
+import { centsToMicroCents } from "@opencode/console-core/util/price.js"
+import { getWeekBounds } from "@opencode/console-core/util/date.js"
export type LookupResult = {
identifier: string
diff --git a/packages/core/README.md b/packages/core/README.md
index 6c80690fc07..7ea8334eae1 100644
--- a/packages/core/README.md
+++ b/packages/core/README.md
@@ -1,3 +1,3 @@
-# @opencode-ai/core
+# @opencode/core
Core runtime services for OpenCode.
diff --git a/packages/core/package.json b/packages/core/package.json
index 8e4efb2d3a5..14a92dd349e 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"version": "1.18.4",
- "name": "@opencode-ai/core",
+ "name": "@opencode/core",
"type": "module",
"license": "MIT",
"repository": {
@@ -95,7 +95,7 @@
"@parcel/watcher-linux-x64-musl": "2.5.1",
"@parcel/watcher-win32-arm64": "2.5.1",
"@parcel/watcher-win32-x64": "2.5.1",
- "@opencode-ai/http-recorder": "workspace:*",
+ "@opencode/http-recorder": "workspace:*",
"drizzle-kit": "catalog:"
},
"dependencies": {
@@ -115,13 +115,13 @@
"@modelcontextprotocol/sdk": "1.29.0",
"@ff-labs/fff-bun": "0.10.5",
"@ff-labs/fff-node": "0.10.5",
- "@opencode-ai/codemode": "workspace:*",
- "@opencode-ai/ai": "workspace:*",
+ "@opencode/codemode": "workspace:*",
+ "@opencode/ai": "workspace:*",
"@opencode-ai/pty": "0.1.13",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/plugin": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/plugin": "workspace:*",
"@opencode/plugin-browser": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/util": "workspace:*",
"@standard-schema/spec": "catalog:",
"@parcel/watcher": "2.5.1",
"@silvia-odwyer/photon-node": "0.3.4",
diff --git a/packages/core/script/benchmark-location-memory.ts b/packages/core/script/benchmark-location-memory.ts
index 637516fd92c..4e3b930fe1f 100644
--- a/packages/core/script/benchmark-location-memory.ts
+++ b/packages/core/script/benchmark-location-memory.ts
@@ -12,8 +12,8 @@ import os from "os"
import path from "path"
import { heapStats } from "bun:jsc"
import { Effect, Layer, Logger, Scope } from "effect"
-import { Global } from "@opencode-ai/util/global"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Global } from "@opencode/util/global"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { AppNodeBuilder } from "../src/effect/app-node-builder"
import { Bus } from "../src/bus"
import { Catalog } from "../src/catalog"
diff --git a/packages/core/script/benchmark-location.ts b/packages/core/script/benchmark-location.ts
index dc29e5046e7..a1a60d7bb70 100644
--- a/packages/core/script/benchmark-location.ts
+++ b/packages/core/script/benchmark-location.ts
@@ -1,7 +1,7 @@
import path from "path"
import { Effect, Logger } from "effect"
import { AppNodeBuilder } from "../src/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { Database } from "../src/database/database"
import { Bus } from "../src/bus"
import { SdkPlugins } from "../src/plugin/sdk"
diff --git a/packages/core/script/publish.ts b/packages/core/script/publish.ts
index 39c65f086a4..f18a254d637 100644
--- a/packages/core/script/publish.ts
+++ b/packages/core/script/publish.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { rm } from "node:fs/promises"
import { fileURLToPath } from "node:url"
diff --git a/packages/core/src/agent.ts b/packages/core/src/agent.ts
index fe22869345c..2130cb95d15 100644
--- a/packages/core/src/agent.ts
+++ b/packages/core/src/agent.ts
@@ -1,10 +1,10 @@
export * as Agent from "./agent.js"
import path from "path"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Array, Context, Effect, Layer, Types } from "effect"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Global } from "@opencode-ai/util/global"
+import { Agent } from "@opencode/schema/agent"
+import { Global } from "@opencode/util/global"
import { Bus } from "./bus.js"
import { State } from "./state.js"
@@ -22,7 +22,7 @@ export const Color = Agent.Color
export const Info = Agent.Info
export type Info = Agent.Info
-export { Event } from "@opencode-ai/schema/agent"
+export { Event } from "@opencode/schema/agent"
export interface Selection {
readonly id: ID
diff --git a/packages/core/src/aisdk-native.ts b/packages/core/src/aisdk-native.ts
index 9bb7873c8ab..f29122d9951 100644
--- a/packages/core/src/aisdk-native.ts
+++ b/packages/core/src/aisdk-native.ts
@@ -1,6 +1,6 @@
export * as AISDKNative from "./aisdk-native.js"
-import { isRecord } from "@opencode-ai/ai/utils/record"
+import { isRecord } from "@opencode/ai/utils/record"
import { Provider } from "./provider.js"
export interface Mapping {
@@ -22,7 +22,7 @@ export function map(input: MapInput): Mapping | undefined {
switch (input.packageName) {
case "@ai-sdk/anthropic":
return {
- package: "@opencode-ai/ai/providers/anthropic",
+ package: "@opencode/ai/providers/anthropic",
settings: {
...baseSettings,
...mapAPIKey(input.settings),
@@ -32,7 +32,7 @@ export function map(input: MapInput): Mapping | undefined {
}
case "@ai-sdk/amazon-bedrock":
return {
- package: "@opencode-ai/ai/providers/amazon-bedrock",
+ package: "@opencode/ai/providers/amazon-bedrock",
settings: mapBedrockSettings(input.settings, baseSettings),
...mapBedrockRequest(input),
}
@@ -40,7 +40,7 @@ export function map(input: MapInput): Mapping | undefined {
return mapBedrockMantle(input, baseSettings)
case "@ai-sdk/azure":
return {
- package: `@opencode-ai/ai/providers/azure/${input.settings.useCompletionUrls === true ? "chat" : "responses"}`,
+ package: `@opencode/ai/providers/azure/${input.settings.useCompletionUrls === true ? "chat" : "responses"}`,
settings: {
...baseSettings,
...mapAPIKey(input.settings),
@@ -58,7 +58,7 @@ export function map(input: MapInput): Mapping | undefined {
case "@ai-sdk/groq":
case "@ai-sdk/togetherai":
return {
- package: `@opencode-ai/ai/providers/${input.packageName.slice("@ai-sdk/".length)}`,
+ package: `@opencode/ai/providers/${input.packageName.slice("@ai-sdk/".length)}`,
settings: {
...baseSettings,
...mapAPIKey(input.settings),
@@ -68,7 +68,7 @@ export function map(input: MapInput): Mapping | undefined {
}
case "@ai-sdk/google":
return {
- package: "@opencode-ai/ai/providers/google",
+ package: "@opencode/ai/providers/google",
settings: {
...baseSettings,
...mapAPIKey(input.settings),
@@ -77,7 +77,7 @@ export function map(input: MapInput): Mapping | undefined {
}
case "@ai-sdk/google-vertex":
return {
- package: "@opencode-ai/ai/providers/google-vertex",
+ package: "@opencode/ai/providers/google-vertex",
settings: {
...baseSettings,
...(typeof input.settings.accessToken === "string" ? { accessToken: input.settings.accessToken } : {}),
@@ -90,7 +90,7 @@ export function map(input: MapInput): Mapping | undefined {
}
case "@ai-sdk/google-vertex/anthropic":
return {
- package: "@opencode-ai/ai/providers/google-vertex/messages",
+ package: "@opencode/ai/providers/google-vertex/messages",
settings: {
...baseSettings,
...(typeof input.settings.accessToken === "string" ? { accessToken: input.settings.accessToken } : {}),
@@ -109,7 +109,7 @@ export function map(input: MapInput): Mapping | undefined {
}
case "@ai-sdk/mistral":
return {
- package: "@opencode-ai/ai/providers/mistral",
+ package: "@opencode/ai/providers/mistral",
settings: {
...baseSettings,
...mapAPIKey(input.settings),
@@ -120,7 +120,7 @@ export function map(input: MapInput): Mapping | undefined {
}
case "@ai-sdk/openai":
return {
- package: "@opencode-ai/ai/providers/openai",
+ package: "@opencode/ai/providers/openai",
settings: {
...baseSettings,
...mapAPIKey(input.settings),
@@ -133,7 +133,7 @@ export function map(input: MapInput): Mapping | undefined {
case "@ai-sdk/openai-compatible":
if (typeof input.settings.baseURL !== "string") return
return {
- package: "@opencode-ai/ai/providers/openai-compatible",
+ package: "@opencode/ai/providers/openai-compatible",
settings: {
...baseSettings,
...mapAPIKey(input.settings),
@@ -145,7 +145,7 @@ export function map(input: MapInput): Mapping | undefined {
return mapOpenRouter(input.settings, baseSettings)
case "@ai-sdk/xai":
return {
- package: "@opencode-ai/ai/providers/xai",
+ package: "@opencode/ai/providers/xai",
settings: {
...baseSettings,
...mapAPIKey(input.settings),
@@ -165,7 +165,7 @@ function mapBedrockMantle(input: MapInput, baseSettings: Readonly = (event: Event.Payload) => Effect.Effect
export type Unsubscribe = Effect.Effect
diff --git a/packages/core/src/catalog.ts b/packages/core/src/catalog.ts
index 3b00d35f4eb..e946e21bd9c 100644
--- a/packages/core/src/catalog.ts
+++ b/packages/core/src/catalog.ts
@@ -1,8 +1,8 @@
export * as Catalog from "./catalog.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Array, Context, Effect, Layer, Order, pipe } from "effect"
-import { Catalog } from "@opencode-ai/schema/catalog"
+import { Catalog } from "@opencode/schema/catalog"
import { Model } from "./model.js"
import { Provider } from "./provider.js"
import { Bus } from "./bus.js"
@@ -16,7 +16,7 @@ export type ProviderRecord = {
export type DefaultModel = { providerID: Provider.ID; modelID: Model.ID }
-export { Event } from "@opencode-ai/schema/catalog"
+export { Event } from "@opencode/schema/catalog"
type Data = {
providers: Map
diff --git a/packages/core/src/codemode/instructions.ts b/packages/core/src/codemode/instructions.ts
index 2391389089e..6138d952a4a 100644
--- a/packages/core/src/codemode/instructions.ts
+++ b/packages/core/src/codemode/instructions.ts
@@ -1,6 +1,6 @@
export * as CodeModeInstructions from "./instructions.js"
-import { searchSignature, toolExpression } from "@opencode-ai/codemode"
+import { searchSignature, toolExpression } from "@opencode/codemode"
import { Effect, Schema } from "effect"
import { Instructions } from "../instructions/index.js"
import { CodeModeCatalog } from "./catalog.js"
diff --git a/packages/core/src/codemode/tool.ts b/packages/core/src/codemode/tool.ts
index b57447487c0..f99afba31dd 100644
--- a/packages/core/src/codemode/tool.ts
+++ b/packages/core/src/codemode/tool.ts
@@ -1,6 +1,6 @@
export * as CodeModeTool from "./tool.js"
-import { CodeMode, Namespace, Tool, toolError } from "@opencode-ai/codemode"
+import { CodeMode, Namespace, Tool, toolError } from "@opencode/codemode"
import type {
Content,
Context,
@@ -9,7 +9,7 @@ import type {
Metadata,
Namespace as ToolNamespace,
Result,
-} from "@opencode-ai/schema/tool"
+} from "@opencode/schema/tool"
import { Effect, Ref, Schema, Semaphore } from "effect"
import { definition, normalizedName } from "../tool/runtime.js"
import { CodeModeCatalog } from "./catalog.js"
diff --git a/packages/core/src/command.ts b/packages/core/src/command.ts
index 9650ad477ac..8cf1b06bcfb 100644
--- a/packages/core/src/command.ts
+++ b/packages/core/src/command.ts
@@ -1,17 +1,17 @@
export * as Command from "./command.js"
-import { Command } from "@opencode-ai/schema/command"
-import type { PromptInput } from "@opencode-ai/schema/prompt-input"
-import type { Session } from "@opencode-ai/schema/session"
-import type { SessionInbox } from "@opencode-ai/schema/session-inbox"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { Command } from "@opencode/schema/command"
+import type { PromptInput } from "@opencode/schema/prompt-input"
+import type { Session } from "@opencode/schema/session"
+import type { SessionInbox } from "@opencode/schema/session-inbox"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, Effect, Layer, Schema } from "effect"
import { Bus } from "./bus.js"
import { State } from "./state.js"
export const Info = Command.Info
export type Info = Command.Info
-export { Event } from "@opencode-ai/schema/command"
+export { Event } from "@opencode/schema/command"
export interface Invocation {
readonly sessionID: Session.ID
diff --git a/packages/core/src/config.ts b/packages/core/src/config.ts
index fb4220f1747..6d6a92d12ea 100644
--- a/packages/core/src/config.ts
+++ b/packages/core/src/config.ts
@@ -1,6 +1,6 @@
export * as Config from "./config.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import path from "path"
import { isDeepStrictEqual } from "node:util"
import { type ParseError, parse } from "jsonc-parser"
@@ -13,12 +13,12 @@ import {
Info,
type Entry,
Event,
-} from "@opencode-ai/schema/config"
+} from "@opencode/schema/config"
import { Credential } from "./credential.js"
import { Bus } from "./bus.js"
import { Watcher } from "./filesystem/watcher.js"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
import { Location } from "./location.js"
import { AbsolutePath } from "./schema.js"
import { ConfigVariable } from "./config/variable.js"
diff --git a/packages/core/src/config/discovery.ts b/packages/core/src/config/discovery.ts
index 8214c481bf1..71c0c03d9b7 100644
--- a/packages/core/src/config/discovery.ts
+++ b/packages/core/src/config/discovery.ts
@@ -2,8 +2,8 @@ export * as ConfigDiscovery from "./discovery.js"
import path from "path"
import { Effect } from "effect"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
import { Location } from "../location.js"
import { AbsolutePath } from "../schema.js"
import type { Options } from "../config.js"
diff --git a/packages/core/src/config/normalize.ts b/packages/core/src/config/normalize.ts
index b97110c81d0..2805cc04cd3 100644
--- a/packages/core/src/config/normalize.ts
+++ b/packages/core/src/config/normalize.ts
@@ -1,22 +1,22 @@
export * as ConfigNormalize from "./normalize.js"
import { isDeepStrictEqual } from "node:util"
-import { isRecord } from "@opencode-ai/ai/utils/record"
+import { isRecord } from "@opencode/ai/utils/record"
import { Option, Schema } from "effect"
-import { Info } from "@opencode-ai/schema/config"
-import { ConfigAgent } from "@opencode-ai/schema/config/agent"
-import { ConfigCommand } from "@opencode-ai/schema/config/command"
-import { ConfigCompaction } from "@opencode-ai/schema/config/compaction"
-import { ConfigFormatter } from "@opencode-ai/schema/config/formatter"
-import { ConfigLSP } from "@opencode-ai/schema/config/lsp"
-import { ConfigMedia } from "@opencode-ai/schema/config/media"
-import { ConfigMCP } from "@opencode-ai/schema/config/mcp"
-import { ConfigPlugin } from "@opencode-ai/schema/config/plugin"
-import { ConfigPolicy } from "@opencode-ai/schema/config/policy"
-import { ConfigProvider } from "@opencode-ai/schema/config/provider"
-import { ConfigReference } from "@opencode-ai/schema/config/reference"
-import { ConfigExperimental } from "@opencode-ai/schema/config/experimental"
-import { Permission } from "@opencode-ai/schema/permission"
+import { Info } from "@opencode/schema/config"
+import { ConfigAgent } from "@opencode/schema/config/agent"
+import { ConfigCommand } from "@opencode/schema/config/command"
+import { ConfigCompaction } from "@opencode/schema/config/compaction"
+import { ConfigFormatter } from "@opencode/schema/config/formatter"
+import { ConfigLSP } from "@opencode/schema/config/lsp"
+import { ConfigMedia } from "@opencode/schema/config/media"
+import { ConfigMCP } from "@opencode/schema/config/mcp"
+import { ConfigPlugin } from "@opencode/schema/config/plugin"
+import { ConfigPolicy } from "@opencode/schema/config/policy"
+import { ConfigProvider } from "@opencode/schema/config/provider"
+import { ConfigReference } from "@opencode/schema/config/reference"
+import { ConfigExperimental } from "@opencode/schema/config/experimental"
+import { Permission } from "@opencode/schema/permission"
import { ConfigAgentV1 } from "../v1/config/agent.js"
import { ConfigAttachmentV1 } from "../v1/config/attachment.js"
import { ConfigCommandV1 } from "../v1/config/command.js"
diff --git a/packages/core/src/config/plugin/agent.ts b/packages/core/src/config/plugin/agent.ts
index ba402bdc12f..c5bb84a323d 100644
--- a/packages/core/src/config/plugin/agent.ts
+++ b/packages/core/src/config/plugin/agent.ts
@@ -1,17 +1,17 @@
export * as ConfigAgentPlugin from "./agent.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Document, Info, type Entry } from "@opencode-ai/schema/config"
-import { ConfigAgent } from "@opencode-ai/schema/config/agent"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Document, Info, type Entry } from "@opencode/schema/config"
+import { ConfigAgent } from "@opencode/schema/config/agent"
import path from "path"
import { Effect, Option, PubSub, Schema, Stream } from "effect"
import { Agent } from "../../agent.js"
import { Config } from "../../config.js"
import { ConfigMarkdown } from "../markdown.js"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { ConfigAgentV1 } from "../../v1/config/agent.js"
import { ConfigMigrateV1 } from "../../v1/config/migrate.js"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Permission } from "../../permission.js"
import type { FileAccess } from "../../file-access.js"
import type { ReadTool } from "../../tool/plugin/read.js"
diff --git a/packages/core/src/config/plugin/command.ts b/packages/core/src/config/plugin/command.ts
index f7cf3647b36..3be2d5bb7a6 100644
--- a/packages/core/src/config/plugin/command.ts
+++ b/packages/core/src/config/plugin/command.ts
@@ -1,11 +1,11 @@
export * as ConfigCommandPlugin from "./command.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Info, type Entry } from "@opencode-ai/schema/config"
-import { ConfigCommand } from "@opencode-ai/schema/config/command"
-import { Model } from "@opencode-ai/schema/model"
-import { Provider } from "@opencode-ai/schema/provider"
-import { AppProcess } from "@opencode-ai/util/process"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Info, type Entry } from "@opencode/schema/config"
+import { ConfigCommand } from "@opencode/schema/config/command"
+import { Model } from "@opencode/schema/model"
+import { Provider } from "@opencode/schema/provider"
+import { AppProcess } from "@opencode/util/process"
import path from "path"
import { Effect, Option, PubSub, Schema, Stream } from "effect"
import { ChildProcess } from "effect/unstable/process"
@@ -15,7 +15,7 @@ import { Location } from "../../location.js"
import { Session } from "../../session.js"
import { SubagentJob } from "../../session/subagent-job.js"
import { ShellSelect } from "../../shell/select.js"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { ConfigMarkdown } from "../markdown.js"
const decodeCommand = Schema.decodeUnknownOption(ConfigCommand.Info)
diff --git a/packages/core/src/config/plugin/compaction.ts b/packages/core/src/config/plugin/compaction.ts
index 0b7a2c60ede..6788ca7d320 100644
--- a/packages/core/src/config/plugin/compaction.ts
+++ b/packages/core/src/config/plugin/compaction.ts
@@ -1,6 +1,6 @@
export * as ConfigCompactionPlugin from "./compaction.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect } from "effect"
import { Config } from "../../config.js"
import { SessionCompaction } from "../../session/compaction.js"
diff --git a/packages/core/src/config/plugin/entry-observer.ts b/packages/core/src/config/plugin/entry-observer.ts
index dd9a832c0b3..a62344014b8 100644
--- a/packages/core/src/config/plugin/entry-observer.ts
+++ b/packages/core/src/config/plugin/entry-observer.ts
@@ -1,6 +1,6 @@
export * as ConfigEntryObserver from "./entry-observer.js"
-import type { EventDomain } from "@opencode-ai/plugin/effect/event"
+import type { EventDomain } from "@opencode/plugin/effect/event"
import { Effect, Stream } from "effect"
import { Config } from "../../config.js"
diff --git a/packages/core/src/config/plugin/formatter.ts b/packages/core/src/config/plugin/formatter.ts
index 483e8727706..572fc0ee1d6 100644
--- a/packages/core/src/config/plugin/formatter.ts
+++ b/packages/core/src/config/plugin/formatter.ts
@@ -1,10 +1,10 @@
export * as ConfigFormatterPlugin from "./formatter.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
-import { Npm } from "@opencode-ai/util/npm"
-import { AppProcess } from "@opencode-ai/util/process"
+import { define } from "@opencode/plugin/effect/plugin"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
+import { Npm } from "@opencode/util/npm"
+import { AppProcess } from "@opencode/util/process"
import { Effect } from "effect"
import { Config } from "../../config.js"
import { Formatter } from "../../formatter.js"
diff --git a/packages/core/src/config/plugin/image.ts b/packages/core/src/config/plugin/image.ts
index ac18c8c6f0f..23450f425c7 100644
--- a/packages/core/src/config/plugin/image.ts
+++ b/packages/core/src/config/plugin/image.ts
@@ -1,6 +1,6 @@
export * as ConfigImagePlugin from "./image.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect } from "effect"
import { Config } from "../../config.js"
import { Image } from "../../image.js"
diff --git a/packages/core/src/config/plugin/instruction.ts b/packages/core/src/config/plugin/instruction.ts
index df50d0a2b22..3685b248f3d 100644
--- a/packages/core/src/config/plugin/instruction.ts
+++ b/packages/core/src/config/plugin/instruction.ts
@@ -1,8 +1,8 @@
export * as ConfigInstructionPlugin from "./instruction.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
+import { define } from "@opencode/plugin/effect/plugin"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
import { dirname, join } from "path"
import { Effect, PubSub, Semaphore, Stream } from "effect"
import { Watcher } from "../../filesystem/watcher.js"
diff --git a/packages/core/src/config/plugin/location-watcher.ts b/packages/core/src/config/plugin/location-watcher.ts
index 2db0d42985e..cf3dca93bde 100644
--- a/packages/core/src/config/plugin/location-watcher.ts
+++ b/packages/core/src/config/plugin/location-watcher.ts
@@ -1,6 +1,6 @@
export * as ConfigLocationWatcherPlugin from "./location-watcher.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect } from "effect"
import { Config } from "../../config.js"
import { LocationWatcherPolicy } from "../../filesystem/location-watcher-policy.js"
diff --git a/packages/core/src/config/plugin/mcp.ts b/packages/core/src/config/plugin/mcp.ts
index a18632703a5..ff544c2ab1f 100644
--- a/packages/core/src/config/plugin/mcp.ts
+++ b/packages/core/src/config/plugin/mcp.ts
@@ -1,8 +1,8 @@
export * as ConfigMcpPlugin from "./mcp.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Document, type Entry } from "@opencode-ai/schema/config"
-import type { ServerConfig } from "@opencode-ai/schema/mcp"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Document, type Entry } from "@opencode/schema/config"
+import type { ServerConfig } from "@opencode/schema/mcp"
import { Effect, Stream } from "effect"
import { Config } from "../../config.js"
import { Mcp } from "../../mcp/index.js"
diff --git a/packages/core/src/config/plugin/policy.ts b/packages/core/src/config/plugin/policy.ts
index f2a69b08864..d19f0ee71e8 100644
--- a/packages/core/src/config/plugin/policy.ts
+++ b/packages/core/src/config/plugin/policy.ts
@@ -1,7 +1,7 @@
export * as ConfigPolicyPlugin from "./policy.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Document } from "@opencode-ai/schema/config"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Document } from "@opencode/schema/config"
import { Effect } from "effect"
import { Config } from "../../config.js"
import { Wildcard } from "../../util/wildcard.js"
diff --git a/packages/core/src/config/plugin/provider.ts b/packages/core/src/config/plugin/provider.ts
index 1b2245e393f..e9022cf9c83 100644
--- a/packages/core/src/config/plugin/provider.ts
+++ b/packages/core/src/config/plugin/provider.ts
@@ -1,8 +1,8 @@
export * as ConfigProviderPlugin from "./provider.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Document, type Entry } from "@opencode-ai/schema/config"
-import { Money } from "@opencode-ai/schema/money"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Document, type Entry } from "@opencode/schema/config"
+import { Money } from "@opencode/schema/money"
import { Effect } from "effect"
import { Config } from "../../config.js"
import { Provider } from "../../provider.js"
diff --git a/packages/core/src/config/plugin/reference.ts b/packages/core/src/config/plugin/reference.ts
index 486239b4915..4c8c35032fb 100644
--- a/packages/core/src/config/plugin/reference.ts
+++ b/packages/core/src/config/plugin/reference.ts
@@ -1,14 +1,14 @@
export * as ConfigReferencePlugin from "./reference.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Document } from "@opencode-ai/schema/config"
-import { ConfigReference } from "@opencode-ai/schema/config/reference"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Document } from "@opencode/schema/config"
+import { ConfigReference } from "@opencode/schema/config/reference"
import path from "path"
import { Effect } from "effect"
import { Config } from "../../config.js"
import { Reference } from "../../reference.js"
import { AbsolutePath } from "../../schema.js"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Location } from "../../location.js"
import { ConfigEntryObserver } from "./entry-observer.js"
diff --git a/packages/core/src/config/plugin/shell.ts b/packages/core/src/config/plugin/shell.ts
index bb2f60c8bc3..0b90bb1b881 100644
--- a/packages/core/src/config/plugin/shell.ts
+++ b/packages/core/src/config/plugin/shell.ts
@@ -1,6 +1,6 @@
export * as ConfigShellPlugin from "./shell.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect } from "effect"
import { Config } from "../../config.js"
import { ShellSelect } from "../../shell/select.js"
diff --git a/packages/core/src/config/plugin/skill.ts b/packages/core/src/config/plugin/skill.ts
index 88004d5b80e..79cba9c4abf 100644
--- a/packages/core/src/config/plugin/skill.ts
+++ b/packages/core/src/config/plugin/skill.ts
@@ -1,9 +1,9 @@
export * as ConfigSkillPlugin from "./skill.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import type { Entry } from "@opencode-ai/schema/config"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
+import { define } from "@opencode/plugin/effect/plugin"
+import type { Entry } from "@opencode/schema/config"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
import path from "path"
import { Effect, FiberMap, PubSub, Semaphore, Stream } from "effect"
import { Config } from "../../config.js"
diff --git a/packages/core/src/config/plugin/snapshot.ts b/packages/core/src/config/plugin/snapshot.ts
index 3ee0b24d769..c40fb300afc 100644
--- a/packages/core/src/config/plugin/snapshot.ts
+++ b/packages/core/src/config/plugin/snapshot.ts
@@ -1,6 +1,6 @@
export * as ConfigSnapshotPlugin from "./snapshot.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect } from "effect"
import { Config } from "../../config.js"
import { Snapshot } from "../../snapshot.js"
diff --git a/packages/core/src/config/plugin/source.ts b/packages/core/src/config/plugin/source.ts
index 97df76141f1..ef1057abe82 100644
--- a/packages/core/src/config/plugin/source.ts
+++ b/packages/core/src/config/plugin/source.ts
@@ -1,10 +1,10 @@
export * as ConfigPluginSource from "./source.js"
-import { Directory, Document, type Entry } from "@opencode-ai/schema/config"
-import { ConfigPlugin } from "@opencode-ai/schema/config/plugin"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Host } from "@opencode-ai/plugin/host"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { Directory, Document, type Entry } from "@opencode/schema/config"
+import { ConfigPlugin } from "@opencode/schema/config/plugin"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Host } from "@opencode/plugin/host"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, Effect, Layer, Option, PubSub, Scope, Stream } from "effect"
import path from "path"
import { fileURLToPath, pathToFileURL } from "url"
diff --git a/packages/core/src/config/plugin/tool-output.ts b/packages/core/src/config/plugin/tool-output.ts
index c565191d1b6..51bec57cc7a 100644
--- a/packages/core/src/config/plugin/tool-output.ts
+++ b/packages/core/src/config/plugin/tool-output.ts
@@ -1,6 +1,6 @@
export * as ConfigToolOutputPlugin from "./tool-output.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect } from "effect"
import { Config } from "../../config.js"
import { ToolOutput } from "../../tool-output.js"
diff --git a/packages/core/src/config/plugin/websearch.ts b/packages/core/src/config/plugin/websearch.ts
index 502dd234eb0..a620916ce76 100644
--- a/packages/core/src/config/plugin/websearch.ts
+++ b/packages/core/src/config/plugin/websearch.ts
@@ -1,6 +1,6 @@
export * as ConfigWebSearchPlugin from "./websearch.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect } from "effect"
import { Config } from "../../config.js"
import { ConfigEntryObserver } from "./entry-observer.js"
diff --git a/packages/core/src/config/plugin/worktree.ts b/packages/core/src/config/plugin/worktree.ts
index 106188422fe..56af489d77c 100644
--- a/packages/core/src/config/plugin/worktree.ts
+++ b/packages/core/src/config/plugin/worktree.ts
@@ -1,10 +1,10 @@
export * as ConfigWorktreePlugin from "./worktree.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect } from "effect"
import path from "path"
import { Config } from "../../config.js"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Location } from "../../location.js"
import { AbsolutePath } from "../../schema.js"
import { Worktree } from "../../worktree.js"
diff --git a/packages/core/src/config/variable.ts b/packages/core/src/config/variable.ts
index 15128128d11..e6d7ad4d266 100644
--- a/packages/core/src/config/variable.ts
+++ b/packages/core/src/config/variable.ts
@@ -3,7 +3,7 @@ export * as ConfigVariable from "./variable.js"
import os from "os"
import path from "path"
import { Effect } from "effect"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { InvalidError } from "../v1/config/error.js"
type ParseSource =
diff --git a/packages/core/src/config/watch.ts b/packages/core/src/config/watch.ts
index e511fbec1cc..c4a8859f461 100644
--- a/packages/core/src/config/watch.ts
+++ b/packages/core/src/config/watch.ts
@@ -1,7 +1,7 @@
export * as ConfigWatch from "./watch.js"
import path from "path"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import type { Watcher } from "../filesystem/watcher.js"
import type { ConfigDiscovery } from "./discovery.js"
diff --git a/packages/core/src/credential.ts b/packages/core/src/credential.ts
index d8560f14819..4ea4e985abb 100644
--- a/packages/core/src/credential.ts
+++ b/packages/core/src/credential.ts
@@ -2,11 +2,11 @@ export * as Credential from "./credential.js"
import { asc, desc, eq } from "drizzle-orm"
import { Cause, Context, Effect, Layer, Schema } from "effect"
-import { Credential } from "@opencode-ai/schema/credential"
-import { Integration } from "@opencode-ai/schema/integration"
+import { Credential } from "@opencode/schema/credential"
+import { Integration } from "@opencode/schema/integration"
import { Database } from "./database/database.js"
import { Bus } from "./bus.js"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { CredentialTable } from "./credential/sql.js"
import { ErrorSummary } from "./util/error-summary.js"
diff --git a/packages/core/src/database/database.ts b/packages/core/src/database/database.ts
index 2581bd5ec59..1f02ae29dc5 100644
--- a/packages/core/src/database/database.ts
+++ b/packages/core/src/database/database.ts
@@ -4,10 +4,10 @@ import { EffectDrizzleSqlite } from "./drizzle.js"
import { sqliteLayer, supportsForeignKeyToggle, supportsTuningPragmas } from "#sqlite"
import { Context, Effect, Layer, Schema, Semaphore } from "effect"
import type { SqlClient } from "effect/unstable/sql"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { isAbsolute, join } from "path"
import { DatabaseMigration } from "./migration.js"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
const makeDatabase = EffectDrizzleSqlite.makeWithDefaults()
type DatabaseShape = Effect.Success
diff --git a/packages/core/src/database/drizzle/README.md b/packages/core/src/database/drizzle/README.md
index b4910b23787..4c00befb09c 100644
--- a/packages/core/src/database/drizzle/README.md
+++ b/packages/core/src/database/drizzle/README.md
@@ -17,7 +17,7 @@ copy provenance.
## Local Boundary
-The supported local entrypoint is `@opencode-ai/core/database/drizzle`, exposed
+The supported local entrypoint is `@opencode/core/database/drizzle`, exposed
as the `EffectDrizzleSqlite` namespace. OpenCode's database service consumes that
facade from `database/database.ts`.
diff --git a/packages/core/src/database/drizzle/effect-sqlite/driver.ts b/packages/core/src/database/drizzle/effect-sqlite/driver.ts
index 33aa7302946..669aa0d211f 100644
--- a/packages/core/src/database/drizzle/effect-sqlite/driver.ts
+++ b/packages/core/src/database/drizzle/effect-sqlite/driver.ts
@@ -37,7 +37,7 @@ export const DefaultServices = Layer.merge(EffectCache.Default, EffectLogger.Def
* @example
* ```ts
* import { SqliteClient } from "@effect/sql-sqlite-node"
- * import { EffectDrizzleSqlite } from "@opencode-ai/core/database/drizzle"
+ * import { EffectDrizzleSqlite } from "@opencode/core/database/drizzle"
* import { Effect } from "effect"
*
* const db = yield* EffectDrizzleSqlite.make({ relations }).pipe(
diff --git a/packages/core/src/database/migration.ts b/packages/core/src/database/migration.ts
index 2d0c05a2a89..c7925b61ed1 100644
--- a/packages/core/src/database/migration.ts
+++ b/packages/core/src/database/migration.ts
@@ -6,7 +6,7 @@ import { supportsForeignKeyToggle } from "#sqlite"
import type { EffectDrizzleSqlite } from "./drizzle.js"
import { migrations } from "./migration.gen.js"
import schema from "./schema.gen.js"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
type Database = EffectDrizzleSqlite.EffectSQLiteDatabase
type Transaction = Parameters[0]>[0]
diff --git a/packages/core/src/database/migration/20260805200742_import_legacy_credentials.ts b/packages/core/src/database/migration/20260805200742_import_legacy_credentials.ts
index 3a6507540f7..0da25f13041 100644
--- a/packages/core/src/database/migration/20260805200742_import_legacy_credentials.ts
+++ b/packages/core/src/database/migration/20260805200742_import_legacy_credentials.ts
@@ -2,10 +2,10 @@ import { readFile } from "node:fs/promises"
import path from "node:path"
import { sql } from "drizzle-orm"
import { Effect, Option, Schema } from "effect"
-import { Credential } from "@opencode-ai/schema/credential"
-import { Integration } from "@opencode-ai/schema/integration"
-import { NonNegativeInt } from "@opencode-ai/schema/schema"
-import { Global } from "@opencode-ai/util/global"
+import { Credential } from "@opencode/schema/credential"
+import { Integration } from "@opencode/schema/integration"
+import { NonNegativeInt } from "@opencode/schema/schema"
+import { Global } from "@opencode/util/global"
import type { DatabaseMigration } from "../migration.js"
const LegacyOAuth = Schema.Struct({
diff --git a/packages/core/src/database/sqlite.bun.ts b/packages/core/src/database/sqlite.bun.ts
index f44e9783d24..ddf586d945d 100644
--- a/packages/core/src/database/sqlite.bun.ts
+++ b/packages/core/src/database/sqlite.bun.ts
@@ -5,7 +5,7 @@ import { SqlClient } from "effect/unstable/sql"
import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError"
import { Sqlite } from "./sqlite.js"
-const TypeId = "~@opencode-ai/core/database/SqliteBun" as const
+const TypeId = "~@opencode/core/database/SqliteBun" as const
export const supportsTuningPragmas = true
diff --git a/packages/core/src/database/sqlite.node.ts b/packages/core/src/database/sqlite.node.ts
index 837beaa1f88..354e1407655 100644
--- a/packages/core/src/database/sqlite.node.ts
+++ b/packages/core/src/database/sqlite.node.ts
@@ -5,7 +5,7 @@ import { SqlClient } from "effect/unstable/sql"
import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError"
import { Sqlite } from "./sqlite.js"
-const TypeId = "~@opencode-ai/core/database/SqliteNode" as const
+const TypeId = "~@opencode/core/database/SqliteNode" as const
export const supportsTuningPragmas = true
diff --git a/packages/core/src/database/sqlite.ts b/packages/core/src/database/sqlite.ts
index 6ab22de8caf..884626d6ad2 100644
--- a/packages/core/src/database/sqlite.ts
+++ b/packages/core/src/database/sqlite.ts
@@ -6,7 +6,7 @@ import { SqlClient, Statement } from "effect/unstable/sql"
import type { Connection } from "effect/unstable/sql/SqlConnection"
import type { SqlError } from "effect/unstable/sql/SqlError"
-export class Native extends Context.Service()("@opencode-ai/core/database/SqliteNative") {}
+export class Native extends Context.Service()("@opencode/core/database/SqliteNative") {}
export interface ClientConfig {
readonly spanAttributes?: Record
diff --git a/packages/core/src/database/sqlite.workerd.ts b/packages/core/src/database/sqlite.workerd.ts
index 651460893d2..86e38e3163c 100644
--- a/packages/core/src/database/sqlite.workerd.ts
+++ b/packages/core/src/database/sqlite.workerd.ts
@@ -8,7 +8,7 @@ import { Sqlite } from "./sqlite.js"
const ATTR_DB_SYSTEM_NAME = "db.system.name"
-const TypeId = "~@opencode-ai/core/database/SqliteWorkerd" as const
+const TypeId = "~@opencode/core/database/SqliteWorkerd" as const
type TypeId = typeof TypeId
// Durable Object SQLite only allowlists introspection pragmas; journal_mode,
@@ -60,7 +60,7 @@ interface Config {
// DurableObjectStorage.transaction-backed implementation; this service only
// tracks the active transaction connection for statements and nesting checks.
const WorkerdTransaction = Context.Service(
- "@opencode-ai/core/database/SqliteWorkerdTransaction",
+ "@opencode/core/database/SqliteWorkerdTransaction",
)
const transactionError = (message: string) =>
diff --git a/packages/core/src/database/v1-migration.bun.ts b/packages/core/src/database/v1-migration.bun.ts
index 193d454831d..4609b03af99 100644
--- a/packages/core/src/database/v1-migration.bun.ts
+++ b/packages/core/src/database/v1-migration.bun.ts
@@ -3,17 +3,17 @@ export * as V1Migration from "./v1-migration.js"
import { Cause, Effect, Layer, Option, Schema, Semaphore } from "effect"
import { Database } from "./database.js"
import { SessionMessageTable, SessionTable } from "../session/sql.js"
-import { SessionV1 } from "@opencode-ai/schema/session-v1"
+import { SessionV1 } from "@opencode/schema/session-v1"
import { SessionMessage } from "../session/message.js"
import { SessionSchema } from "../session/schema.js"
import { KVTable } from "../kv/sql.js"
import { EventSequenceTable } from "../event/sql.js"
import { eq, sql } from "drizzle-orm"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { existsSync } from "node:fs"
import path from "node:path"
import type { Database as SQLiteDatabase } from "bun:sqlite"
-import { Project } from "@opencode-ai/schema/project"
+import { Project } from "@opencode/schema/project"
export type SourceMessage = {
readonly id: string
diff --git a/packages/core/src/effect/app-node-builder.ts b/packages/core/src/effect/app-node-builder.ts
index 0a62edbbe41..dfefbf8d662 100644
--- a/packages/core/src/effect/app-node-builder.ts
+++ b/packages/core/src/effect/app-node-builder.ts
@@ -1,7 +1,7 @@
import { buildLocationServiceMap } from "../location-services.js"
import { LocationServiceMap } from "../location-service-map.js"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { Effect, Layer } from "effect"
import { Instance } from "../instance/service.js"
diff --git a/packages/core/src/effect/app-node-platform.ts b/packages/core/src/effect/app-node-platform.ts
index dcf00887b3a..718c6456c7b 100644
--- a/packages/core/src/effect/app-node-platform.ts
+++ b/packages/core/src/effect/app-node-platform.ts
@@ -1,7 +1,7 @@
-import { LLMClient, RequestExecutor } from "@opencode-ai/ai/route"
+import { LLMClient, RequestExecutor } from "@opencode/ai/route"
import { Socket } from "effect/unstable/socket"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { httpClient } from "@opencode-ai/util/effect/app-node-platform"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { httpClient } from "@opencode/util/effect/app-node-platform"
import { WebSocketConstructor } from "./websocket-constructor.js"
export const requestExecutor = makeGlobalNode({
diff --git a/packages/core/src/environment/environment.ts b/packages/core/src/environment/environment.ts
index dc242e08eaf..0dc997fda93 100644
--- a/packages/core/src/environment/environment.ts
+++ b/packages/core/src/environment/environment.ts
@@ -1,5 +1,5 @@
-import { CrossSpawnSpawner } from "@opencode-ai/util/cross-spawn-spawner"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { CrossSpawnSpawner } from "@opencode/util/cross-spawn-spawner"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, Effect, Layer } from "effect"
import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
import type { Files } from "./files.js"
diff --git a/packages/core/src/environment/exec-defaults.ts b/packages/core/src/environment/exec-defaults.ts
index 2c5d2415019..d2350fb7588 100644
--- a/packages/core/src/environment/exec-defaults.ts
+++ b/packages/core/src/environment/exec-defaults.ts
@@ -1,7 +1,7 @@
import { Effect, Stream } from "effect"
import { ChildProcess } from "effect/unstable/process"
import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
-import { collectStream } from "@opencode-ai/util/process"
+import { collectStream } from "@opencode/util/process"
import { Failed, NotFound, WrongKind, type FileInfo, type FileType, type FilesImpl } from "./files.js"
/**
diff --git a/packages/core/src/event-logger.ts b/packages/core/src/event-logger.ts
index 50cd97d6d80..e8b047a0076 100644
--- a/packages/core/src/event-logger.ts
+++ b/packages/core/src/event-logger.ts
@@ -1,7 +1,7 @@
export * as EventLogger from "./event-logger.js"
import { Effect, Layer } from "effect"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { Bus } from "./bus.js"
const EVENT_TYPES = new Set(["agent.updated", "catalog.updated", "command.updated", "config.updated"])
diff --git a/packages/core/src/event/sql.ts b/packages/core/src/event/sql.ts
index 13e1d9f6857..cb4c98ec738 100644
--- a/packages/core/src/event/sql.ts
+++ b/packages/core/src/event/sql.ts
@@ -1,5 +1,5 @@
import { sqliteTable, text, integer, index, uniqueIndex } from "drizzle-orm/sqlite-core"
-import { Event } from "@opencode-ai/schema/event"
+import { Event } from "@opencode/schema/event"
export const EventSequenceTable = sqliteTable("event_sequence", {
aggregate_id: text().notNull().primaryKey(),
diff --git a/packages/core/src/file-access.ts b/packages/core/src/file-access.ts
index e30139c3932..880bb3b60b7 100644
--- a/packages/core/src/file-access.ts
+++ b/packages/core/src/file-access.ts
@@ -1,8 +1,8 @@
export * as FileAccess from "./file-access.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
import { Array, Context, Effect, Layer, Schema } from "effect"
import path from "path"
import { Location } from "./location.js"
diff --git a/packages/core/src/file-mutation.ts b/packages/core/src/file-mutation.ts
index 2914868273a..53d53e42fde 100644
--- a/packages/core/src/file-mutation.ts
+++ b/packages/core/src/file-mutation.ts
@@ -1,10 +1,10 @@
export * as FileMutation from "./file-mutation.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, Effect, Layer } from "effect"
import { KeyedMutex } from "./effect/keyed-mutex.js"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Bom } from "@opencode-ai/util/bom"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Bom } from "@opencode/util/bom"
import { Environment } from "./environment/index.js"
import type { Files } from "./environment/index.js"
import type { FileAccess } from "./file-access.js"
diff --git a/packages/core/src/file-retention.ts b/packages/core/src/file-retention.ts
index 864d2009e63..a325f2165fc 100644
--- a/packages/core/src/file-retention.ts
+++ b/packages/core/src/file-retention.ts
@@ -1,7 +1,7 @@
export * as FileRetention from "./file-retention.js"
import { Duration, Effect, Option } from "effect"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
export const cleanup = Effect.fn("FileRetention.cleanup")(function* (
fs: FSUtil.Interface,
diff --git a/packages/core/src/file.ts b/packages/core/src/file.ts
index 72717ad9ce2..5175e5b3410 100644
--- a/packages/core/src/file.ts
+++ b/packages/core/src/file.ts
@@ -1,6 +1,6 @@
export * as File from "./file.js"
-import { FileDiff } from "@opencode-ai/schema/file-diff"
+import { FileDiff } from "@opencode/schema/file-diff"
export const Diff = FileDiff.Info
export type Diff = typeof Diff.Type
diff --git a/packages/core/src/filesystem.ts b/packages/core/src/filesystem.ts
index b1464b1fed4..47372c45ea9 100644
--- a/packages/core/src/filesystem.ts
+++ b/packages/core/src/filesystem.ts
@@ -1,14 +1,14 @@
export * as FileSystem from "./filesystem.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import path from "path"
import { Context, Effect, Layer, Schema } from "effect"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { Location } from "./location.js"
import { PositiveInt, RelativePath } from "./schema.js"
import { FileSystemSearch } from "./filesystem/search.js"
-import { Entry, FileSystem, FindInput } from "@opencode-ai/schema/filesystem"
-export { Entry, Match, Submatch } from "@opencode-ai/schema/filesystem"
+import { Entry, FileSystem, FindInput } from "@opencode/schema/filesystem"
+export { Entry, Match, Submatch } from "@opencode/schema/filesystem"
export const ReadInput = Schema.Struct({
path: RelativePath,
diff --git a/packages/core/src/filesystem/location-watcher-policy.ts b/packages/core/src/filesystem/location-watcher-policy.ts
index c700b27a5b4..8bc51aab46a 100644
--- a/packages/core/src/filesystem/location-watcher-policy.ts
+++ b/packages/core/src/filesystem/location-watcher-policy.ts
@@ -1,6 +1,6 @@
export * as LocationWatcherPolicy from "./location-watcher-policy.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, Effect, Layer, Scope } from "effect"
import { State } from "../state.js"
diff --git a/packages/core/src/filesystem/location-watcher.ts b/packages/core/src/filesystem/location-watcher.ts
index 100ee9dbfcd..a8d9b339ff5 100644
--- a/packages/core/src/filesystem/location-watcher.ts
+++ b/packages/core/src/filesystem/location-watcher.ts
@@ -1,11 +1,11 @@
export * as LocationWatcher from "./location-watcher.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Cause, Context, Effect, Exit, Layer, Scope, Semaphore, Stream } from "effect"
-import { FileSystem } from "@opencode-ai/schema/filesystem"
+import { FileSystem } from "@opencode/schema/filesystem"
import path from "path"
import { Bus } from "../bus.js"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { Git } from "../git.js"
import { Location } from "../location.js"
import { Plugin } from "../plugin.js"
diff --git a/packages/core/src/filesystem/search.ts b/packages/core/src/filesystem/search.ts
index faa6da14a91..7b32acee3db 100644
--- a/packages/core/src/filesystem/search.ts
+++ b/packages/core/src/filesystem/search.ts
@@ -1,11 +1,11 @@
export * as FileSystemSearch from "./search.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import path from "path"
import { Clock, Context, Deferred, Duration, Effect, Layer, Schema, Scope } from "effect"
import { Fff } from "#fff"
import fuzzysort from "fuzzysort"
-import { FileSystem } from "@opencode-ai/schema/filesystem"
+import { FileSystem } from "@opencode/schema/filesystem"
import { Location } from "../location.js"
import { Ripgrep } from "../ripgrep.js"
import { RelativePath } from "../schema.js"
diff --git a/packages/core/src/filesystem/watcher.ts b/packages/core/src/filesystem/watcher.ts
index b1ef3fefaae..9b653308878 100644
--- a/packages/core/src/filesystem/watcher.ts
+++ b/packages/core/src/filesystem/watcher.ts
@@ -3,9 +3,9 @@ export * as Watcher from "./watcher.js"
// @ts-ignore
import { createWrapper } from "@parcel/watcher/wrapper"
import type ParcelWatcher from "@parcel/watcher"
-import { FileSystem } from "@opencode-ai/schema/filesystem"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FileSystem } from "@opencode/schema/filesystem"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { FSUtil } from "@opencode/util/fs-util"
import { Cause, Context, Effect, Layer, PubSub, RcMap, Schema, Stream } from "effect"
import { lazy } from "../util/lazy.js"
import { watch } from "node:fs"
diff --git a/packages/core/src/form.ts b/packages/core/src/form.ts
index a3ef68994c8..0d1cfa594ea 100644
--- a/packages/core/src/form.ts
+++ b/packages/core/src/form.ts
@@ -1,8 +1,8 @@
export * as Form from "./form.js"
-import { Form } from "@opencode-ai/schema/form"
+import { Form } from "@opencode/schema/form"
import { Cache, Context, Deferred, Duration, Effect, Exit, Layer, Option, Schema } from "effect"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Bus } from "./bus.js"
const RETENTION = Duration.minutes(10)
@@ -32,7 +32,7 @@ export type Answer = typeof Answer.Type
export const Reply = Form.Reply
export type Reply = typeof Reply.Type
-export { Event } from "@opencode-ai/schema/form"
+export { Event } from "@opencode/schema/form"
export class NotFoundError extends Schema.TaggedError()("Form.NotFoundError", {
id: ID,
diff --git a/packages/core/src/formatter.ts b/packages/core/src/formatter.ts
index f487f696892..eb85babf56e 100644
--- a/packages/core/src/formatter.ts
+++ b/packages/core/src/formatter.ts
@@ -3,8 +3,8 @@ export * as Formatter from "./formatter.js"
import { Context, Effect, Layer } from "effect"
import { ChildProcess } from "effect/unstable/process"
import path from "path"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { AppProcess } from "@opencode-ai/util/process"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { AppProcess } from "@opencode/util/process"
import { Location } from "./location.js"
import type { Info } from "./formatter/builtins.js"
import { State } from "./state.js"
diff --git a/packages/core/src/formatter/builtins.ts b/packages/core/src/formatter/builtins.ts
index 0b53b096394..ba8354f807b 100644
--- a/packages/core/src/formatter/builtins.ts
+++ b/packages/core/src/formatter/builtins.ts
@@ -1,8 +1,8 @@
import { Effect } from "effect"
import { ChildProcess } from "effect/unstable/process"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Npm } from "@opencode-ai/util/npm"
-import { AppProcess } from "@opencode-ai/util/process"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Npm } from "@opencode/util/npm"
+import { AppProcess } from "@opencode/util/process"
import { which } from "../util/which.js"
export interface Info {
diff --git a/packages/core/src/generate.ts b/packages/core/src/generate.ts
index d58023755d7..e3f558fd790 100644
--- a/packages/core/src/generate.ts
+++ b/packages/core/src/generate.ts
@@ -1,8 +1,8 @@
export * as Generate from "./generate.js"
-import { LLM, LLMClient, AIError } from "@opencode-ai/ai"
+import { LLM, LLMClient, AIError } from "@opencode/ai"
import { Context, Effect, Layer, Schema } from "effect"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { llmClient } from "./effect/app-node-platform.js"
import { ModelResolver } from "./model-resolver.js"
import { Model } from "./model.js"
diff --git a/packages/core/src/git.ts b/packages/core/src/git.ts
index da745e5f369..6e2e155323c 100644
--- a/packages/core/src/git.ts
+++ b/packages/core/src/git.ts
@@ -4,9 +4,9 @@ import path from "path"
import { Context, Effect, Layer, Schema } from "effect"
import { ChildProcess } from "effect/unstable/process"
import { AbsolutePath, RelativePath } from "./schema.js"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { AppProcess } from "@opencode-ai/util/process"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { FSUtil } from "@opencode/util/fs-util"
+import { AppProcess } from "@opencode/util/process"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { File } from "./file.js"
import { KeyedMutex } from "./effect/keyed-mutex.js"
diff --git a/packages/core/src/github-copilot/models.ts b/packages/core/src/github-copilot/models.ts
index 89aa53b3f6d..936d1a65854 100644
--- a/packages/core/src/github-copilot/models.ts
+++ b/packages/core/src/github-copilot/models.ts
@@ -1,6 +1,6 @@
export * as CopilotModels from "./models.js"
-import { Money } from "@opencode-ai/schema/money"
+import { Money } from "@opencode/schema/money"
import { Option, Schema } from "effect"
import { Model } from "../model.js"
import { Provider } from "../provider.js"
diff --git a/packages/core/src/id/id.ts b/packages/core/src/id/id.ts
index 269f4e89a9c..f849c0558b0 100644
--- a/packages/core/src/id/id.ts
+++ b/packages/core/src/id/id.ts
@@ -1,4 +1,4 @@
-import { create } from "@opencode-ai/schema/identifier"
+import { create } from "@opencode/schema/identifier"
const prefixes = {
job: "job",
diff --git a/packages/core/src/image.ts b/packages/core/src/image.ts
index 2547b43a048..a19d3fa884c 100644
--- a/packages/core/src/image.ts
+++ b/packages/core/src/image.ts
@@ -1,6 +1,6 @@
export * as Image from "./image.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, Effect, Layer, Schema } from "effect"
import { FileSystem } from "./filesystem.js"
import { State } from "./state.js"
diff --git a/packages/core/src/instance.ts b/packages/core/src/instance.ts
index cf600c54111..e6ca45992d0 100644
--- a/packages/core/src/instance.ts
+++ b/packages/core/src/instance.ts
@@ -4,8 +4,8 @@ import { AISDK } from "./aisdk.js"
import { Catalog } from "./catalog.js"
import { Command } from "./command.js"
import { Config } from "./config.js"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Node } from "@opencode-ai/util/effect/app-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Node } from "@opencode/util/effect/app-node"
import { FileMutation } from "./file-mutation.js"
import { Environment } from "./environment/index.js"
import { Formatter } from "./formatter.js"
diff --git a/packages/core/src/instance/service.ts b/packages/core/src/instance/service.ts
index 3a003765c25..dd6ef5892e4 100644
--- a/packages/core/src/instance/service.ts
+++ b/packages/core/src/instance/service.ts
@@ -2,9 +2,9 @@ export * as Instance from "./service.js"
export type { Services } from "../instance.js"
import { Context, type Effect } from "effect"
-import type { Session } from "@opencode-ai/schema/session"
-import { Node } from "@opencode-ai/util/effect/app-node"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import type { Session } from "@opencode/schema/session"
+import { Node } from "@opencode/util/effect/app-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import type { Services } from "../instance.js"
/** Selects Session capabilities; implementations own caching and lifetime. */
diff --git a/packages/core/src/instruction-discovery.ts b/packages/core/src/instruction-discovery.ts
index abab217f11c..ec1821f1b87 100644
--- a/packages/core/src/instruction-discovery.ts
+++ b/packages/core/src/instruction-discovery.ts
@@ -1,7 +1,7 @@
export * as InstructionDiscovery from "./instruction-discovery.js"
import { Context, Effect, Layer, Schema, Types } from "effect"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { createPatch } from "diff"
import { Bus } from "./bus.js"
import { Instructions } from "./instructions/index.js"
diff --git a/packages/core/src/instructions/builtins.ts b/packages/core/src/instructions/builtins.ts
index 5b27bb4b196..47c8e5c7515 100644
--- a/packages/core/src/instructions/builtins.ts
+++ b/packages/core/src/instructions/builtins.ts
@@ -1,9 +1,9 @@
export * as InstructionBuiltIns from "./builtins.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, DateTime, Effect, Layer, Schema } from "effect"
-import type { Session } from "@opencode-ai/schema/session"
-import { Global } from "@opencode-ai/util/global"
+import type { Session } from "@opencode/schema/session"
+import { Global } from "@opencode/util/global"
import { Location } from "../location.js"
import { Instructions } from "./index.js"
diff --git a/packages/core/src/instructions/index.ts b/packages/core/src/instructions/index.ts
index 27e1d2a650d..315f8b78506 100644
--- a/packages/core/src/instructions/index.ts
+++ b/packages/core/src/instructions/index.ts
@@ -1,7 +1,7 @@
export * as Instructions from "./index.js"
import { createHash } from "crypto"
-import { Instruction } from "@opencode-ai/schema/instruction"
+import { Instruction } from "@opencode/schema/instruction"
import { Data, Effect, Option, Schema } from "effect"
export const Key = Instruction.Key
diff --git a/packages/core/src/integration.ts b/packages/core/src/integration.ts
index d73f85ac518..d1c235805c4 100644
--- a/packages/core/src/integration.ts
+++ b/packages/core/src/integration.ts
@@ -1,6 +1,6 @@
export * as Integration from "./integration.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import {
Cause,
Clock,
@@ -17,12 +17,12 @@ import {
SynchronizedRef,
Types,
} from "effect"
-import { Integration } from "@opencode-ai/schema/integration"
+import { Integration } from "@opencode/schema/integration"
import { Credential } from "./credential.js"
import { State } from "./state.js"
import { Bus } from "./bus.js"
import { IntegrationConnection } from "./integration/connection.js"
-import { AppProcess } from "@opencode-ai/util/process"
+import { AppProcess } from "@opencode/util/process"
import { ChildProcess } from "effect/unstable/process"
import { Form } from "./form.js"
@@ -115,7 +115,7 @@ export class AuthorizationError extends Schema.TaggedError()
export type Error = CodeRequiredError | AuthorizationError
-export { Event } from "@opencode-ai/schema/integration"
+export { Event } from "@opencode/schema/integration"
export const Ref = Integration.Ref
export type Ref = Integration.Ref
diff --git a/packages/core/src/integration/connection.ts b/packages/core/src/integration/connection.ts
index cb7693a5492..cefa7d54c2e 100644
--- a/packages/core/src/integration/connection.ts
+++ b/packages/core/src/integration/connection.ts
@@ -1,6 +1,6 @@
export * as IntegrationConnection from "./connection.js"
-import { Connection } from "@opencode-ai/schema/connection"
+import { Connection } from "@opencode/schema/connection"
export const CredentialInfo = Connection.CredentialInfo
export type CredentialInfo = Connection.CredentialInfo
diff --git a/packages/core/src/job.ts b/packages/core/src/job.ts
index 08faea74e1e..8a1ee000ad6 100644
--- a/packages/core/src/job.ts
+++ b/packages/core/src/job.ts
@@ -1,7 +1,7 @@
export * as Job from "./job.js"
import { Array, Cause, Clock, Context, Deferred, Effect, Exit, Layer, Schema, Scope, SynchronizedRef } from "effect"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { Identifier } from "./id/id.js"
import { KV } from "./kv.js"
import { SessionMessage } from "./session/message.js"
diff --git a/packages/core/src/kv.ts b/packages/core/src/kv.ts
index d4cf15896af..a8bc5ae62c1 100644
--- a/packages/core/src/kv.ts
+++ b/packages/core/src/kv.ts
@@ -3,7 +3,7 @@ export * as KV from "./kv.js"
import { and, asc, eq, gt, gte, lt } from "drizzle-orm"
import { Context, Effect, Layer, Schema } from "effect"
import { Database } from "./database/database.js"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { KVTable } from "./kv/sql.js"
export type Value = Schema.Json
diff --git a/packages/core/src/location-activity.ts b/packages/core/src/location-activity.ts
index 81e9bddea9f..0425e9acab0 100644
--- a/packages/core/src/location-activity.ts
+++ b/packages/core/src/location-activity.ts
@@ -7,7 +7,7 @@ import { LocationServiceMap } from "./location-service-map.js"
import { SessionEvent } from "./session/event.js"
import { SessionExecution } from "./session/execution.js"
import { SessionStore } from "./session/store.js"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
const isSessionEvent = Schema.is(SessionEvent.Durable)
diff --git a/packages/core/src/location-service-map.ts b/packages/core/src/location-service-map.ts
index 297baf8c3de..37a44d14754 100644
--- a/packages/core/src/location-service-map.ts
+++ b/packages/core/src/location-service-map.ts
@@ -1,7 +1,7 @@
import { Context, Effect, Layer, LayerMap } from "effect"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Node } from "@opencode-ai/util/effect/app-node"
-import { AbsolutePath } from "@opencode-ai/schema/schema"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Node } from "@opencode/util/effect/app-node"
+import { AbsolutePath } from "@opencode/schema/schema"
import path from "path"
import { Location } from "./location.js"
import type { Instance } from "./instance.js"
diff --git a/packages/core/src/location-services.ts b/packages/core/src/location-services.ts
index f44685cc7a6..5b4f3a28901 100644
--- a/packages/core/src/location-services.ts
+++ b/packages/core/src/location-services.ts
@@ -1,5 +1,5 @@
import { Duration, Effect, Exit, Layer, LayerMap, MutableHashMap, Option } from "effect"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { Instance } from "./instance.js"
import { Location } from "./location.js"
import { LocationServiceMap } from "./location-service-map.js"
diff --git a/packages/core/src/location.ts b/packages/core/src/location.ts
index d3bfa4d5e81..79192c7ce8a 100644
--- a/packages/core/src/location.ts
+++ b/packages/core/src/location.ts
@@ -1,8 +1,8 @@
import { Context, Effect, Layer } from "effect"
-import { Info, Ref, response } from "@opencode-ai/schema/location"
+import { Info, Ref, response } from "@opencode/schema/location"
import { Project } from "./project.js"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { makeLocationNode, tags } from "@opencode-ai/util/effect/app-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { makeLocationNode, tags } from "@opencode/util/effect/app-node"
export * as Location from "./location.js"
diff --git a/packages/core/src/mcp/client.ts b/packages/core/src/mcp/client.ts
index d82aa5c1b7e..027508c063e 100644
--- a/packages/core/src/mcp/client.ts
+++ b/packages/core/src/mcp/client.ts
@@ -25,8 +25,8 @@ import {
ToolSchema,
} from "@modelcontextprotocol/sdk/types.js"
import { Cause, Effect, Exit, Schema } from "effect"
-import { ConfigMCP } from "@opencode-ai/schema/config/mcp"
-import type { Session } from "@opencode-ai/schema/session"
+import { ConfigMCP } from "@opencode/schema/config/mcp"
+import type { Session } from "@opencode/schema/session"
import { McpStdio } from "./stdio.js"
const DEFAULT_STARTUP_TIMEOUT = 30_000
diff --git a/packages/core/src/mcp/index.ts b/packages/core/src/mcp/index.ts
index 88e351379d3..e32176e3d7c 100644
--- a/packages/core/src/mcp/index.ts
+++ b/packages/core/src/mcp/index.ts
@@ -1,13 +1,13 @@
export * as Mcp from "./index.js"
-import { Mcp } from "@opencode-ai/schema/mcp"
-import { McpEvent } from "@opencode-ai/schema/mcp-event"
-import { ephemeral } from "@opencode-ai/schema/event"
-import type { Session } from "@opencode-ai/schema/session"
+import { Mcp } from "@opencode/schema/mcp"
+import { McpEvent } from "@opencode/schema/mcp-event"
+import { ephemeral } from "@opencode/schema/event"
+import type { Session } from "@opencode/schema/session"
import { createHash } from "node:crypto"
import { isDeepStrictEqual } from "node:util"
import { Cause, Context, Effect, Exit, FiberSet, Latch, Layer, Schema, Scope, Semaphore, Stream, Types } from "effect"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Credential } from "../credential.js"
import { Bus } from "../bus.js"
import { Environment } from "../environment/index.js"
@@ -15,7 +15,7 @@ import { Form } from "../form.js"
import { Integration } from "../integration.js"
import { KeyedMutex } from "../effect/keyed-mutex.js"
import { Location } from "../location.js"
-import { waitForAbort } from "@opencode-ai/util/process"
+import { waitForAbort } from "@opencode/util/process"
import { State } from "../state.js"
import type { McpClient } from "./client.js"
@@ -23,7 +23,7 @@ export const ServerName = Schema.String.pipe(Schema.brand("MCP.ServerName"))
export const PromptsChanged = ephemeral({ type: "mcp.prompts.changed", schema: { server: Schema.String } })
export type ServerName = typeof ServerName.Type
-// The status union is a public wire contract, so it lives in @opencode-ai/schema and is re-exported here.
+// The status union is a public wire contract, so it lives in @opencode/schema and is re-exported here.
export const Status = Mcp.Status
export type Status = Mcp.Status
diff --git a/packages/core/src/mcp/instructions.ts b/packages/core/src/mcp/instructions.ts
index 592954dd880..b582bf65884 100644
--- a/packages/core/src/mcp/instructions.ts
+++ b/packages/core/src/mcp/instructions.ts
@@ -1,6 +1,6 @@
export * as McpInstructions from "./instructions.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, Effect, Layer, Schema } from "effect"
import { Agent } from "../agent.js"
import { Permission } from "../permission.js"
diff --git a/packages/core/src/mcp/oauth.ts b/packages/core/src/mcp/oauth.ts
index be89bddbf43..3d0b32a228d 100644
--- a/packages/core/src/mcp/oauth.ts
+++ b/packages/core/src/mcp/oauth.ts
@@ -10,8 +10,8 @@ import {
import type { OAuthClientInformationMixed, OAuthTokens } from "@modelcontextprotocol/sdk/shared/auth.js"
import type { FetchLike } from "@modelcontextprotocol/sdk/shared/transport.js"
import { Cause, Deferred, Effect } from "effect"
-import { Credential } from "@opencode-ai/schema/credential"
-import { ConfigMCP } from "@opencode-ai/schema/config/mcp"
+import { Credential } from "@opencode/schema/credential"
+import { ConfigMCP } from "@opencode/schema/config/mcp"
import { OauthCallbackPage } from "../oauth/page.js"
import type { Integration } from "../integration.js"
import { ErrorSummary } from "../util/error-summary.js"
diff --git a/packages/core/src/modal/models.ts b/packages/core/src/modal/models.ts
index 16714968148..4ee089d71ad 100644
--- a/packages/core/src/modal/models.ts
+++ b/packages/core/src/modal/models.ts
@@ -1,6 +1,6 @@
export * as ModalModels from "./models.js"
-import { Money } from "@opencode-ai/schema/money"
+import { Money } from "@opencode/schema/money"
import { Option, Schema } from "effect"
import { Model } from "../model.js"
import { Provider } from "../provider.js"
diff --git a/packages/core/src/model-resolver.ts b/packages/core/src/model-resolver.ts
index 2894c4f8cde..c8e9582c8b0 100644
--- a/packages/core/src/model-resolver.ts
+++ b/packages/core/src/model-resolver.ts
@@ -1,8 +1,8 @@
export * as ModelResolver from "./model-resolver.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { LanguageModel } from "@opencode-ai/ai"
-import { Auth } from "@opencode-ai/ai/route"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { LanguageModel } from "@opencode/ai"
+import { Auth } from "@opencode/ai/route"
import { Context, Effect, Layer, Schema, Struct } from "effect"
import { AISDK } from "./aisdk.js"
import { AISDKNative } from "./aisdk-native.js"
@@ -10,7 +10,7 @@ import { Catalog } from "./catalog.js"
import { Credential } from "./credential.js"
import { Integration } from "./integration.js"
import { Capabilities, ID, Info, Ref, VariantID } from "./model.js"
-import { Npm } from "@opencode-ai/util/npm"
+import { Npm } from "@opencode/util/npm"
import { Provider } from "./provider.js"
export class VariantUnavailableError extends Schema.TaggedError()(
@@ -164,7 +164,7 @@ const resolveCatalogModel = Effect.fn("ModelResolver.resolveCatalogModel")(funct
providerID: resolved.canonical ?? resolved.providerID,
})
: undefined
- const native = mapping?.package ?? resolved.package
+ const native = mapping?.package ?? packageName
if (Provider.isAISDK(resolved.package) && !mapping) {
const loadAISDK = dependencies?.loadAISDK
if (!loadAISDK) return yield* unsupported(resolved)
@@ -258,14 +258,11 @@ function unresolvedProviderVariables(model: Info, baseURL: string) {
const nativeCredentialSettings = (specifier: string, credential: Credential.Value | undefined) => {
if (!credential) return {}
if (credential.type === "key") return { apiKey: credential.key }
- if (
- specifier === "@opencode-ai/ai/providers/anthropic" ||
- specifier === "@opencode-ai/ai/providers/anthropic-compatible"
- )
+ if (specifier === "@opencode/ai/providers/anthropic" || specifier === "@opencode/ai/providers/anthropic-compatible")
return { authToken: credential.access }
if (
- specifier === "@opencode-ai/ai/providers/google-vertex" ||
- specifier.startsWith("@opencode-ai/ai/providers/google-vertex/")
+ specifier === "@opencode/ai/providers/google-vertex" ||
+ specifier.startsWith("@opencode/ai/providers/google-vertex/")
)
return { accessToken: credential.access }
return { apiKey: credential.access }
@@ -368,26 +365,26 @@ function usesAPIKeyAuth(packageName: string | undefined) {
name === "@ai-sdk/xai" ||
name === "@openrouter/ai-sdk-provider" ||
name === "@ai-sdk/azure" ||
- name === "@opencode-ai/ai/providers/openai" ||
- name?.startsWith("@opencode-ai/ai/providers/openai/") === true ||
- name === "@opencode-ai/ai/providers/anthropic" ||
- name === "@opencode-ai/ai/providers/anthropic-compatible" ||
- name === "@opencode-ai/ai/providers/baseten" ||
- name === "@opencode-ai/ai/providers/cerebras" ||
- name === "@opencode-ai/ai/providers/cloudflare-ai-gateway" ||
- name === "@opencode-ai/ai/providers/cloudflare-workers-ai" ||
- name === "@opencode-ai/ai/providers/deepinfra" ||
- name === "@opencode-ai/ai/providers/deepseek" ||
- name === "@opencode-ai/ai/providers/fireworks" ||
- name === "@opencode-ai/ai/providers/openai-compatible" ||
- name === "@opencode-ai/ai/providers/google" ||
- name === "@opencode-ai/ai/providers/groq" ||
- name === "@opencode-ai/ai/providers/mistral" ||
- name === "@opencode-ai/ai/providers/togetherai" ||
- name === "@opencode-ai/ai/providers/xai" ||
- name === "@opencode-ai/ai/providers/openrouter" ||
- name === "@opencode-ai/ai/providers/azure" ||
- name?.startsWith("@opencode-ai/ai/providers/azure/") === true
+ name === "@opencode/ai/providers/openai" ||
+ name?.startsWith("@opencode/ai/providers/openai/") === true ||
+ name === "@opencode/ai/providers/anthropic" ||
+ name === "@opencode/ai/providers/anthropic-compatible" ||
+ name === "@opencode/ai/providers/baseten" ||
+ name === "@opencode/ai/providers/cerebras" ||
+ name === "@opencode/ai/providers/cloudflare-ai-gateway" ||
+ name === "@opencode/ai/providers/cloudflare-workers-ai" ||
+ name === "@opencode/ai/providers/deepinfra" ||
+ name === "@opencode/ai/providers/deepseek" ||
+ name === "@opencode/ai/providers/fireworks" ||
+ name === "@opencode/ai/providers/openai-compatible" ||
+ name === "@opencode/ai/providers/google" ||
+ name === "@opencode/ai/providers/groq" ||
+ name === "@opencode/ai/providers/mistral" ||
+ name === "@opencode/ai/providers/togetherai" ||
+ name === "@opencode/ai/providers/xai" ||
+ name === "@opencode/ai/providers/openrouter" ||
+ name === "@opencode/ai/providers/azure" ||
+ name?.startsWith("@opencode/ai/providers/azure/") === true
)
}
diff --git a/packages/core/src/model.ts b/packages/core/src/model.ts
index dec621381ac..62189aeadc9 100644
--- a/packages/core/src/model.ts
+++ b/packages/core/src/model.ts
@@ -1,4 +1,4 @@
-import { Model } from "@opencode-ai/schema/model"
+import { Model } from "@opencode/schema/model"
import { Provider } from "./provider.js"
import type { DeepMutable } from "./schema.js"
diff --git a/packages/core/src/models-dev.ts b/packages/core/src/models-dev.ts
index fe844ead9aa..a4526d87c5f 100644
--- a/packages/core/src/models-dev.ts
+++ b/packages/core/src/models-dev.ts
@@ -1,13 +1,13 @@
import { Cause, Context, Duration, Effect, Layer, Option, Schedule, Schema, Semaphore } from "effect"
import { HttpClient, HttpClientRequest } from "effect/unstable/http"
-import { ModelsDev } from "@opencode-ai/schema/models-dev"
-import { Money } from "@opencode-ai/schema/money"
+import { ModelsDev } from "@opencode/schema/models-dev"
+import { Money } from "@opencode/schema/money"
import { App } from "./app.js"
-import { Hash } from "@opencode-ai/util/hash"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { Hash } from "@opencode/util/hash"
+import { FSUtil } from "@opencode/util/fs-util"
import { Bus } from "./bus.js"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { httpClient } from "@opencode-ai/util/effect/app-node-platform"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { httpClient } from "@opencode/util/effect/app-node-platform"
import { Model } from "./model.js"
import { Provider } from "./provider.js"
import { KV } from "./kv.js"
@@ -519,7 +519,7 @@ function modelInfo(
}
}
-export { Event } from "@opencode-ai/schema/models-dev"
+export { Event } from "@opencode/schema/models-dev"
export interface Interface {
readonly get: () => Effect.Effect
diff --git a/packages/core/src/permission.ts b/packages/core/src/permission.ts
index acc0705352c..b7109a96d54 100644
--- a/packages/core/src/permission.ts
+++ b/packages/core/src/permission.ts
@@ -1,8 +1,8 @@
export * as Permission from "./permission.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, Deferred, Effect, Layer, Schema } from "effect"
-import { Permission } from "@opencode-ai/schema/permission"
+import { Permission } from "@opencode/schema/permission"
import { Bus } from "./bus.js"
import { Location } from "./location.js"
import { Agent } from "./agent.js"
@@ -15,7 +15,7 @@ import { PluginHooks } from "./plugin/hooks.js"
const PermissionEffect = Permission.Effect
export { PermissionEffect as Effect }
-export { Rule, Ruleset } from "@opencode-ai/schema/permission"
+export { Rule, Ruleset } from "@opencode/schema/permission"
const missingAgentPermissions: Permission.Ruleset = [{ action: "*", resource: "*", effect: "deny" }]
export const ID = Permission.ID
@@ -59,7 +59,7 @@ export const AskResult = Schema.Struct({
}).annotate({ identifier: "Permission.AskResult" })
export type AskResult = typeof AskResult.Type
-export { Event } from "@opencode-ai/schema/permission"
+export { Event } from "@opencode/schema/permission"
export class DeclinedError extends Schema.TaggedError()("Permission.DeclinedError", {}) {}
diff --git a/packages/core/src/permission/saved.ts b/packages/core/src/permission/saved.ts
index 184b0553a68..2d2b76206f8 100644
--- a/packages/core/src/permission/saved.ts
+++ b/packages/core/src/permission/saved.ts
@@ -2,11 +2,11 @@ export * as PermissionSaved from "./saved.js"
import { eq } from "drizzle-orm"
import { Context, Effect, Layer, Schema } from "effect"
-import { Project } from "@opencode-ai/schema/project"
+import { Project } from "@opencode/schema/project"
import { Database } from "../database/database.js"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { PermissionTable } from "./sql.js"
-import { PermissionSaved } from "@opencode-ai/schema/permission-saved"
+import { PermissionSaved } from "@opencode/schema/permission-saved"
export const ID = PermissionSaved.ID
export type ID = typeof ID.Type
diff --git a/packages/core/src/permission/sql.ts b/packages/core/src/permission/sql.ts
index 0df5fdc692e..4283f13411a 100644
--- a/packages/core/src/permission/sql.ts
+++ b/packages/core/src/permission/sql.ts
@@ -1,5 +1,5 @@
import { sqliteTable, text, uniqueIndex } from "drizzle-orm/sqlite-core"
-import type { Project } from "@opencode-ai/schema/project"
+import type { Project } from "@opencode/schema/project"
import { Timestamps } from "../database/schema.sql.js"
import { ProjectTable } from "../project/sql.js"
import type { PermissionSaved } from "./saved.js"
diff --git a/packages/core/src/persistent-pty/daemon.ts b/packages/core/src/persistent-pty/daemon.ts
index 4310c080de7..2b97889c3c5 100644
--- a/packages/core/src/persistent-pty/daemon.ts
+++ b/packages/core/src/persistent-pty/daemon.ts
@@ -3,7 +3,7 @@ import { readFile } from "node:fs/promises"
import net from "node:net"
import path from "node:path"
import { Data, Duration, Effect, Schema, Semaphore } from "effect"
-import type { Handoff } from "@opencode-ai/schema/persistent-pty"
+import type { Handoff } from "@opencode/schema/persistent-pty"
const ProtocolVersion = 7
const MaxFrameBytes = 8 * 1024 * 1024
diff --git a/packages/core/src/persistent-pty/index.ts b/packages/core/src/persistent-pty/index.ts
index b898c66f76b..1b500f7e368 100644
--- a/packages/core/src/persistent-pty/index.ts
+++ b/packages/core/src/persistent-pty/index.ts
@@ -3,12 +3,12 @@ export * as PersistentPty from "./index.js"
import os from "node:os"
import path from "node:path"
import { Context, Effect, Layer, Schema } from "effect"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { Added, Handoff, PersistentPty, ReadLines, Removed, type ReadResult } from "@opencode-ai/schema/persistent-pty"
-import { Session } from "@opencode-ai/schema/session"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { Added, Handoff, PersistentPty, ReadLines, Removed, type ReadResult } from "@opencode/schema/persistent-pty"
+import { Session } from "@opencode/schema/session"
import { Bus } from "../bus.js"
-import { Pty } from "@opencode-ai/schema/pty"
-import { Global } from "@opencode-ai/util/global"
+import { Pty } from "@opencode/schema/pty"
+import { Global } from "@opencode/util/global"
import { ShellSelect } from "../shell/select.js"
import {
makeDaemonTransport,
@@ -21,7 +21,7 @@ import {
import { resolveBinary } from "#persistent-pty-binary"
export type { Role, StreamEvent } from "./daemon.js"
-export { Handoff } from "@opencode-ai/schema/persistent-pty"
+export { Handoff } from "@opencode/schema/persistent-pty"
export const Options = Schema.Struct({ handoff: Schema.optional(Handoff) })
export type Options = typeof Options.Type
diff --git a/packages/core/src/persistent-pty/pty-binding.ts b/packages/core/src/persistent-pty/pty-binding.ts
index d0fe7614408..9aae038c0e6 100644
--- a/packages/core/src/persistent-pty/pty-binding.ts
+++ b/packages/core/src/persistent-pty/pty-binding.ts
@@ -1,3 +1,4 @@
+// Published separately by anomalyco/opencode-pty; it has not migrated npm scopes.
import { binaryPath } from "@opencode-ai/pty"
const binding: string | { readonly path: string; readonly version: string; readonly sha256: string } | undefined =
diff --git a/packages/core/src/plugin.ts b/packages/core/src/plugin.ts
index 337e571168d..8ade6826585 100644
--- a/packages/core/src/plugin.ts
+++ b/packages/core/src/plugin.ts
@@ -1,9 +1,9 @@
export * as Plugin from "./plugin.js"
-export { Event, ID, Info, Source, State } from "@opencode-ai/schema/plugin"
+export { Event, ID, Info, Source, State } from "@opencode/schema/plugin"
-import { Plugin } from "@opencode-ai/schema/plugin"
-import { Node } from "@opencode-ai/util/effect/app-node"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Plugin } from "@opencode/schema/plugin"
+import { Node } from "@opencode/util/effect/app-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import type { PersistentPty } from "./persistent-pty.js"
import { Cause, Context, Effect, Exit, Latch, Layer, Logger, Queue, References, Scope, Semaphore } from "effect"
import { Bus } from "./bus.js"
diff --git a/packages/core/src/plugin/agent.ts b/packages/core/src/plugin/agent.ts
index 8d16ae58a87..d0d12713ea4 100644
--- a/packages/core/src/plugin/agent.ts
+++ b/packages/core/src/plugin/agent.ts
@@ -1,6 +1,6 @@
export * as AgentPlugin from "./agent.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect } from "effect"
import { Agent } from "../agent.js"
import { Permission } from "../permission.js"
diff --git a/packages/core/src/plugin/command.ts b/packages/core/src/plugin/command.ts
index 3b5df7daa0c..1f7d590b3e5 100644
--- a/packages/core/src/plugin/command.ts
+++ b/packages/core/src/plugin/command.ts
@@ -1,6 +1,6 @@
export * as CommandPlugin from "./command.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect, Stream } from "effect"
import { Bus } from "../bus.js"
import { Location } from "../location.js"
diff --git a/packages/core/src/plugin/hooks.ts b/packages/core/src/plugin/hooks.ts
index a849efab368..1cfd2e63772 100644
--- a/packages/core/src/plugin/hooks.ts
+++ b/packages/core/src/plugin/hooks.ts
@@ -1,13 +1,13 @@
export * as PluginHooks from "./hooks.js"
-import type { AISDKHooks } from "@opencode-ai/plugin/effect/aisdk"
-import type { SessionHooks } from "@opencode-ai/plugin/effect/session"
-import type { ShellHooks } from "@opencode-ai/plugin/effect/shell"
-import type { ToolFailures, ToolHooks } from "@opencode-ai/plugin/effect/tool"
-import type { ModelHookOptions } from "@opencode-ai/plugin/effect/registration"
-import type { PermissionHooks } from "@opencode-ai/plugin/effect/permission"
+import type { AISDKHooks } from "@opencode/plugin/effect/aisdk"
+import type { SessionHooks } from "@opencode/plugin/effect/session"
+import type { ShellHooks } from "@opencode/plugin/effect/shell"
+import type { ToolFailures, ToolHooks } from "@opencode/plugin/effect/tool"
+import type { ModelHookOptions } from "@opencode/plugin/effect/registration"
+import type { PermissionHooks } from "@opencode/plugin/effect/permission"
import { Context, Effect, Layer, Scope } from "effect"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { State } from "../state.js"
export interface Domains {
diff --git a/packages/core/src/plugin/host.ts b/packages/core/src/plugin/host.ts
index d28741c75c9..44beadcc6cc 100644
--- a/packages/core/src/plugin/host.ts
+++ b/packages/core/src/plugin/host.ts
@@ -1,10 +1,10 @@
export * as PluginHost from "./host.js"
-import { Plugin } from "@opencode-ai/plugin/effect"
-import type { IntegrationMethodRegistration } from "@opencode-ai/plugin/effect/integration"
-import { EventManifest } from "@opencode-ai/schema/event-manifest"
-import type { Event } from "@opencode-ai/schema/event"
-import { ServerConfig } from "@opencode-ai/schema/mcp"
+import { Plugin } from "@opencode/plugin/effect"
+import type { IntegrationMethodRegistration } from "@opencode/plugin/effect/integration"
+import { EventManifest } from "@opencode/schema/event-manifest"
+import type { Event } from "@opencode/schema/event"
+import { ServerConfig } from "@opencode/schema/mcp"
import { App } from "../app.js"
import { Effect, Schema, Stream } from "effect"
import { Agent } from "../agent.js"
@@ -35,7 +35,7 @@ import { Generate } from "../generate.js"
import { Permission } from "../permission.js"
import { PluginHooks } from "./hooks.js"
import type { Interface } from "../plugin.js"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
const mutable = (value: T) => value as DeepMutable
type RpcEvent = Event.Payload & {
diff --git a/packages/core/src/plugin/instance.ts b/packages/core/src/plugin/instance.ts
index 598e89240fd..d1e5056ddbd 100644
--- a/packages/core/src/plugin/instance.ts
+++ b/packages/core/src/plugin/instance.ts
@@ -1,8 +1,8 @@
export * as InstancePlugins from "./instance.js"
-import type { Plugin } from "@opencode-ai/plugin/effect/plugin"
+import type { Plugin } from "@opencode/plugin/effect/plugin"
import { Context, Layer } from "effect"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import type { Generation } from "../plugin.js"
/**
diff --git a/packages/core/src/plugin/internal.ts b/packages/core/src/plugin/internal.ts
index f5b2d09678a..1691a3c7bbe 100644
--- a/packages/core/src/plugin/internal.ts
+++ b/packages/core/src/plugin/internal.ts
@@ -1,9 +1,9 @@
export * as PluginInternal from "./internal.js"
-import type { Plugin } from "@opencode-ai/plugin/effect/plugin"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { httpClient } from "@opencode-ai/util/effect/app-node-platform"
-import { AppProcess } from "@opencode-ai/util/process"
+import type { Plugin } from "@opencode/plugin/effect/plugin"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { httpClient } from "@opencode/util/effect/app-node-platform"
+import { AppProcess } from "@opencode/util/process"
import { Context, Effect, Scope } from "effect"
import { HttpClient } from "effect/unstable/http"
import { Agent } from "../agent.js"
@@ -37,8 +37,8 @@ import { Formatter } from "../formatter.js"
import { Form } from "../form.js"
import { FileSystem } from "../filesystem.js"
import { LocationWatcherPolicy } from "../filesystem/location-watcher-policy.js"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
import { Image } from "../image.js"
import { InstructionDiscovery } from "../instruction-discovery.js"
import { Integration } from "../integration.js"
@@ -47,7 +47,7 @@ import { KV } from "../kv.js"
import { Location } from "../location.js"
import { ModelsDev } from "../models-dev.js"
import { Mcp } from "../mcp/index.js"
-import { Npm } from "@opencode-ai/util/npm"
+import { Npm } from "@opencode/util/npm"
import { Permission } from "../permission.js"
import { Reference } from "../reference.js"
import { WebSearch } from "../websearch.js"
diff --git a/packages/core/src/plugin/mcp-codemode-exclusion.ts b/packages/core/src/plugin/mcp-codemode-exclusion.ts
index cfd3c4bd7d3..ff07dac05c9 100644
--- a/packages/core/src/plugin/mcp-codemode-exclusion.ts
+++ b/packages/core/src/plugin/mcp-codemode-exclusion.ts
@@ -1,6 +1,6 @@
export * as McpCodeModeExclusionPlugin from "./mcp-codemode-exclusion.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect } from "effect"
// These servers provide Code Mode, so expose them directly instead of nesting them inside OpenCode Code Mode.
diff --git a/packages/core/src/plugin/models-dev.ts b/packages/core/src/plugin/models-dev.ts
index 9235733a7a4..271cee547e8 100644
--- a/packages/core/src/plugin/models-dev.ts
+++ b/packages/core/src/plugin/models-dev.ts
@@ -1,6 +1,6 @@
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Integration } from "@opencode-ai/schema/integration"
-import { Provider } from "@opencode-ai/schema/provider"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Integration } from "@opencode/schema/integration"
+import { Provider } from "@opencode/schema/provider"
import { Effect, Stream } from "effect"
import { Bus } from "../bus.js"
import { ModelsDev } from "../models-dev.js"
diff --git a/packages/core/src/plugin/module.ts b/packages/core/src/plugin/module.ts
index 039a5b7ae8c..31cab39795f 100644
--- a/packages/core/src/plugin/module.ts
+++ b/packages/core/src/plugin/module.ts
@@ -1,9 +1,9 @@
export * as PluginModule from "./module.js"
-import type { Plugin } from "@opencode-ai/plugin/effect/plugin"
-import { Host } from "@opencode-ai/plugin/host"
-import { createPluginSources } from "@opencode-ai/plugin/source"
-import { Npm } from "@opencode-ai/util/npm"
+import type { Plugin } from "@opencode/plugin/effect/plugin"
+import { Host } from "@opencode/plugin/host"
+import { createPluginSources } from "@opencode/plugin/source"
+import { Npm } from "@opencode/util/npm"
import { Deferred, Effect, FiberSet, PubSub, Schema, Stream } from "effect"
import path from "path"
import { stat } from "node:fs/promises"
diff --git a/packages/core/src/plugin/optimize.ts b/packages/core/src/plugin/optimize.ts
index 5ec05a41bdc..6dc8dedf5e1 100644
--- a/packages/core/src/plugin/optimize.ts
+++ b/packages/core/src/plugin/optimize.ts
@@ -1,8 +1,8 @@
export * as OptimizePlugin from "./optimize.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import type { SessionHooks } from "@opencode-ai/plugin/effect/session"
-import { Model } from "@opencode-ai/schema/model"
+import { define } from "@opencode/plugin/effect/plugin"
+import type { SessionHooks } from "@opencode/plugin/effect/session"
+import { Model } from "@opencode/schema/model"
import { Effect } from "effect"
import { SessionSystemPrompt } from "../session/system-prompt.js"
diff --git a/packages/core/src/plugin/plan.ts b/packages/core/src/plugin/plan.ts
index 68799b9bc39..39f8b54c500 100644
--- a/packages/core/src/plugin/plan.ts
+++ b/packages/core/src/plugin/plan.ts
@@ -1,10 +1,10 @@
export * as PlanPlugin from "./plan.js"
-import { Message, ToolFailure } from "@opencode-ai/ai"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Agent } from "@opencode-ai/schema/agent"
-import type { SessionEvent } from "@opencode-ai/schema/session-event"
-import { Global } from "@opencode-ai/util/global"
+import { Message, ToolFailure } from "@opencode/ai"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Agent } from "@opencode/schema/agent"
+import type { SessionEvent } from "@opencode/schema/session-event"
+import { Global } from "@opencode/util/global"
import { Effect, Stream } from "effect"
import path from "path"
import { Permission } from "../permission.js"
diff --git a/packages/core/src/plugin/promise.ts b/packages/core/src/plugin/promise.ts
index 1291387a5ac..9c58bc5151c 100644
--- a/packages/core/src/plugin/promise.ts
+++ b/packages/core/src/plugin/promise.ts
@@ -1,3 +1,3 @@
export * as PluginPromise from "./promise.js"
-export { fromPromise } from "@opencode-ai/plugin/promise/adapter"
+export { fromPromise } from "@opencode/plugin/promise/adapter"
diff --git a/packages/core/src/plugin/provider/amazon-bedrock.ts b/packages/core/src/plugin/provider/amazon-bedrock.ts
index 6ff156471b5..d15ffd4b499 100644
--- a/packages/core/src/plugin/provider/amazon-bedrock.ts
+++ b/packages/core/src/plugin/provider/amazon-bedrock.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Provider } from "../../provider.js"
// Ambient inputs the AWS default credential chain can turn into credentials
@@ -15,7 +15,7 @@ const CHAIN_ENV = [
const isBedrock = (item: { readonly package: string }) => {
const name = Provider.packageName(item.package)
- return name.startsWith("@ai-sdk/amazon-bedrock") || name.startsWith("@opencode-ai/ai/providers/amazon-bedrock")
+ return name.startsWith("@ai-sdk/amazon-bedrock") || name.startsWith("@opencode/ai/providers/amazon-bedrock")
}
export const AmazonBedrockPlugin = define({
diff --git a/packages/core/src/plugin/provider/anthropic.ts b/packages/core/src/plugin/provider/anthropic.ts
index 0a2708a3e71..f2865a675f6 100644
--- a/packages/core/src/plugin/provider/anthropic.ts
+++ b/packages/core/src/plugin/provider/anthropic.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Provider } from "../../provider.js"
export const AnthropicPlugin = define({
diff --git a/packages/core/src/plugin/provider/azure.ts b/packages/core/src/plugin/provider/azure.ts
index 694ea6ce29d..0c8d0e8c379 100644
--- a/packages/core/src/plugin/provider/azure.ts
+++ b/packages/core/src/plugin/provider/azure.ts
@@ -1,8 +1,8 @@
import { Clock, Effect, Schema, Semaphore, Stream } from "effect"
import { ChildProcess } from "effect/unstable/process"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Form } from "@opencode-ai/schema/form"
-import { AppProcess } from "@opencode-ai/util/process"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Form } from "@opencode/schema/form"
+import { AppProcess } from "@opencode/util/process"
import { App } from "../../app.js"
import { Bus } from "../../bus.js"
import { Credential } from "../../credential.js"
diff --git a/packages/core/src/plugin/provider/cerebras.ts b/packages/core/src/plugin/provider/cerebras.ts
index 43c61fd2c8e..3baf20f1977 100644
--- a/packages/core/src/plugin/provider/cerebras.ts
+++ b/packages/core/src/plugin/provider/cerebras.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Provider } from "../../provider.js"
export const CerebrasPlugin = define({
@@ -8,7 +8,7 @@ export const CerebrasPlugin = define({
yield* ctx.catalog.transform((evt) => {
for (const item of evt.provider.list()) {
const name = Provider.packageName(item.provider.package)
- if (name !== "@ai-sdk/cerebras" && name !== "@opencode-ai/ai/providers/cerebras") continue
+ if (name !== "@ai-sdk/cerebras" && name !== "@opencode/ai/providers/cerebras") continue
evt.provider.update(item.provider.id, (provider) => {
provider.headers = { ...provider.headers, "X-Cerebras-3rd-Party-Integration": "opencode" }
})
diff --git a/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts b/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts
index bc8dd302594..45d1ff7fa4c 100644
--- a/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts
+++ b/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts
@@ -1,8 +1,8 @@
import os from "os"
import { App } from "../../app.js"
import { Effect, Option, Schema } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Form } from "@opencode-ai/schema/form"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Form } from "@opencode/schema/form"
import { Provider } from "../../provider.js"
import { iife } from "../../util/iife.js"
import { configuredSettings } from "./configured.js"
diff --git a/packages/core/src/plugin/provider/cloudflare-workers-ai.ts b/packages/core/src/plugin/provider/cloudflare-workers-ai.ts
index e8600788e18..60e1a92d82f 100644
--- a/packages/core/src/plugin/provider/cloudflare-workers-ai.ts
+++ b/packages/core/src/plugin/provider/cloudflare-workers-ai.ts
@@ -1,8 +1,8 @@
import os from "os"
import { App } from "../../app.js"
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Form } from "@opencode-ai/schema/form"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Form } from "@opencode/schema/form"
import { Provider } from "../../provider.js"
import { iife } from "../../util/iife.js"
import { configuredSettings } from "./configured.js"
diff --git a/packages/core/src/plugin/provider/configured.ts b/packages/core/src/plugin/provider/configured.ts
index 89f7d2874a8..9dc6b06c4a7 100644
--- a/packages/core/src/plugin/provider/configured.ts
+++ b/packages/core/src/plugin/provider/configured.ts
@@ -1,5 +1,5 @@
import { Effect, Option } from "effect"
-import type { Document, Entry } from "@opencode-ai/schema/config"
+import type { Document, Entry } from "@opencode/schema/config"
import { Catalog } from "../../catalog.js"
import { Config } from "../../config.js"
import { Provider } from "../../provider.js"
diff --git a/packages/core/src/plugin/provider/digitalocean.ts b/packages/core/src/plugin/provider/digitalocean.ts
index e2da1af4ab3..be61459d256 100644
--- a/packages/core/src/plugin/provider/digitalocean.ts
+++ b/packages/core/src/plugin/provider/digitalocean.ts
@@ -1,5 +1,5 @@
-import type { IntegrationOAuthMethodRegistration } from "@opencode-ai/plugin/effect/integration"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import type { IntegrationOAuthMethodRegistration } from "@opencode/plugin/effect/integration"
+import { define } from "@opencode/plugin/effect/plugin"
import { Clock, Deferred, Effect, Option, Schedule, Schema, Semaphore, Stream } from "effect"
import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
import type { Server } from "node:http"
diff --git a/packages/core/src/plugin/provider/dynamic.ts b/packages/core/src/plugin/provider/dynamic.ts
index e7bab3777b2..0521f72c440 100644
--- a/packages/core/src/plugin/provider/dynamic.ts
+++ b/packages/core/src/plugin/provider/dynamic.ts
@@ -1,6 +1,6 @@
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Npm } from "@opencode-ai/util/npm"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Npm } from "@opencode/util/npm"
import { loadSDKFactory } from "./sdk-factory.js"
export const DynamicProviderPlugin = define({
diff --git a/packages/core/src/plugin/provider/factory.ts b/packages/core/src/plugin/provider/factory.ts
index fe4b89a7c39..017323c3a66 100644
--- a/packages/core/src/plugin/provider/factory.ts
+++ b/packages/core/src/plugin/provider/factory.ts
@@ -1,5 +1,5 @@
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import type { AISDKHooks } from "@opencode-ai/plugin/effect/aisdk"
+import { define } from "@opencode/plugin/effect/plugin"
+import type { AISDKHooks } from "@opencode/plugin/effect/aisdk"
import { Effect } from "effect"
export function createProviderPlugin(input: {
diff --git a/packages/core/src/plugin/provider/github-copilot.ts b/packages/core/src/plugin/provider/github-copilot.ts
index 816b615ab2a..e77743006bd 100644
--- a/packages/core/src/plugin/provider/github-copilot.ts
+++ b/packages/core/src/plugin/provider/github-copilot.ts
@@ -1,5 +1,5 @@
-import type { IntegrationOAuthMethodRegistration } from "@opencode-ai/plugin/effect/integration"
-import type { SessionRequestKind } from "@opencode-ai/plugin/effect/session"
+import type { IntegrationOAuthMethodRegistration } from "@opencode/plugin/effect/integration"
+import type { SessionRequestKind } from "@opencode/plugin/effect/session"
import { Effect, Option, Schema, Semaphore, Stream } from "effect"
import { Catalog } from "../../catalog.js"
import { Credential } from "../../credential.js"
@@ -8,7 +8,7 @@ import { CopilotModels } from "../../github-copilot/models.js"
import { App } from "../../app.js"
import { Integration } from "../../integration.js"
import { Model } from "../../model.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Provider } from "../../provider.js"
import type { PluginInternal } from "../internal.js"
diff --git a/packages/core/src/plugin/provider/gitlab.ts b/packages/core/src/plugin/provider/gitlab.ts
index 1ef6218f8d7..6d0e52b3305 100644
--- a/packages/core/src/plugin/provider/gitlab.ts
+++ b/packages/core/src/plugin/provider/gitlab.ts
@@ -1,7 +1,7 @@
import os from "os"
import { App } from "../../app.js"
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Provider } from "../../provider.js"
export const GitLabPlugin = define({
diff --git a/packages/core/src/plugin/provider/google-vertex.ts b/packages/core/src/plugin/provider/google-vertex.ts
index 26fa1bd26a2..1107494f899 100644
--- a/packages/core/src/plugin/provider/google-vertex.ts
+++ b/packages/core/src/plugin/provider/google-vertex.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Provider } from "../../provider.js"
function resolveProject(options: Record) {
diff --git a/packages/core/src/plugin/provider/kilo.ts b/packages/core/src/plugin/provider/kilo.ts
index 6efaf39f5d8..17e46d168e3 100644
--- a/packages/core/src/plugin/provider/kilo.ts
+++ b/packages/core/src/plugin/provider/kilo.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Provider } from "../../provider.js"
export const KiloPlugin = define({
diff --git a/packages/core/src/plugin/provider/llmgateway.ts b/packages/core/src/plugin/provider/llmgateway.ts
index 2580e88608b..c720455cc65 100644
--- a/packages/core/src/plugin/provider/llmgateway.ts
+++ b/packages/core/src/plugin/provider/llmgateway.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Integration } from "../../integration.js"
import { Provider } from "../../provider.js"
diff --git a/packages/core/src/plugin/provider/lmstudio.ts b/packages/core/src/plugin/provider/lmstudio.ts
index ce8c257a181..5642549a12d 100644
--- a/packages/core/src/plugin/provider/lmstudio.ts
+++ b/packages/core/src/plugin/provider/lmstudio.ts
@@ -1,5 +1,5 @@
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import type { Entry } from "@opencode-ai/schema/config"
+import { define } from "@opencode/plugin/effect/plugin"
+import type { Entry } from "@opencode/schema/config"
import { Duration, Effect, Schedule, Schema, Semaphore, Stream } from "effect"
import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
import { Config } from "../../config.js"
@@ -52,7 +52,7 @@ export function make(origin = "http://127.0.0.1:1234", interval: Duration.Input
catalog.provider.update(providerID, (provider) => {
provider.name = "LM Studio"
provider.activation = "enabled"
- provider.package = "@opencode-ai/ai/providers/openai-compatible"
+ provider.package = "@opencode/ai/providers/openai-compatible"
provider.settings = {
baseURL: source.current.baseURL,
provider: providerID,
diff --git a/packages/core/src/plugin/provider/modal.ts b/packages/core/src/plugin/provider/modal.ts
index 38e7f1ad589..5201103b6e6 100644
--- a/packages/core/src/plugin/provider/modal.ts
+++ b/packages/core/src/plugin/provider/modal.ts
@@ -1,5 +1,5 @@
import { Effect, Semaphore, Stream } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Bus } from "../../bus.js"
import { Catalog } from "../../catalog.js"
import { Credential } from "../../credential.js"
diff --git a/packages/core/src/plugin/provider/nvidia.ts b/packages/core/src/plugin/provider/nvidia.ts
index c15a7eb6ffc..e8266ffdfd0 100644
--- a/packages/core/src/plugin/provider/nvidia.ts
+++ b/packages/core/src/plugin/provider/nvidia.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Provider } from "../../provider.js"
export const NvidiaPlugin = define({
diff --git a/packages/core/src/plugin/provider/ollama.ts b/packages/core/src/plugin/provider/ollama.ts
index dceafd0132a..9be6b7b58ef 100644
--- a/packages/core/src/plugin/provider/ollama.ts
+++ b/packages/core/src/plugin/provider/ollama.ts
@@ -1,5 +1,5 @@
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import type { Entry } from "@opencode-ai/schema/config"
+import { define } from "@opencode/plugin/effect/plugin"
+import type { Entry } from "@opencode/schema/config"
import { Duration, Effect, Schedule, Schema, Semaphore, Stream } from "effect"
import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
import { Config } from "../../config.js"
@@ -74,7 +74,7 @@ export function make(origin = "http://127.0.0.1:11434", interval: Duration.Input
catalog.provider.update(providerID, (provider) => {
provider.name = "Ollama"
provider.activation = "enabled"
- provider.package = "@opencode-ai/ai/providers/openai-compatible"
+ provider.package = "@opencode/ai/providers/openai-compatible"
provider.settings = {
baseURL: source.current.baseURL,
provider: providerID,
diff --git a/packages/core/src/plugin/provider/openai-compatible.ts b/packages/core/src/plugin/provider/openai-compatible.ts
index 97fbe965d7b..0e256c1b034 100644
--- a/packages/core/src/plugin/provider/openai-compatible.ts
+++ b/packages/core/src/plugin/provider/openai-compatible.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
export const OpenAICompatiblePlugin = define({
id: "opencode.provider.openai.compatible",
diff --git a/packages/core/src/plugin/provider/openai.ts b/packages/core/src/plugin/provider/openai.ts
index 9c5e3b79d7c..72cd1bc438c 100644
--- a/packages/core/src/plugin/provider/openai.ts
+++ b/packages/core/src/plugin/provider/openai.ts
@@ -1,5 +1,5 @@
-import type { IntegrationOAuthMethodRegistration } from "@opencode-ai/plugin/effect/integration"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import type { IntegrationOAuthMethodRegistration } from "@opencode/plugin/effect/integration"
+import { define } from "@opencode/plugin/effect/plugin"
import { Deferred, Effect, Option, Schema, Semaphore, Stream } from "effect"
import type { Server } from "node:http"
import { App } from "../../app.js"
diff --git a/packages/core/src/plugin/provider/opencode.ts b/packages/core/src/plugin/provider/opencode.ts
index a9f5dc99c88..e2917ac1664 100644
--- a/packages/core/src/plugin/provider/opencode.ts
+++ b/packages/core/src/plugin/provider/opencode.ts
@@ -1,14 +1,14 @@
import { Duration, Effect, Schema, Semaphore, Stream } from "effect"
import type { Scope } from "effect"
-import type { IntegrationOAuthMethodRegistration } from "@opencode-ai/plugin/effect/integration"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import type { IntegrationOAuthMethodRegistration } from "@opencode/plugin/effect/integration"
+import { define } from "@opencode/plugin/effect/plugin"
import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
import { Bus } from "../../bus.js"
import { Credential } from "../../credential.js"
import { Integration } from "../../integration.js"
import { Provider } from "../../provider.js"
-import { ConfigProvider } from "@opencode-ai/schema/config/provider"
-import { Money } from "@opencode-ai/schema/money"
+import { ConfigProvider } from "@opencode/schema/config/provider"
+import { Money } from "@opencode/schema/money"
const defaultServer = "https://opencode.ai/console"
const clientID = "opencode-cli"
diff --git a/packages/core/src/plugin/provider/openrouter.ts b/packages/core/src/plugin/provider/openrouter.ts
index 9fd357eeccc..eb392171d3e 100644
--- a/packages/core/src/plugin/provider/openrouter.ts
+++ b/packages/core/src/plugin/provider/openrouter.ts
@@ -1,7 +1,7 @@
import { Effect } from "effect"
import { Model } from "../../model.js"
import { Provider } from "../../provider.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
export const OpenRouterPlugin = define({
id: "opencode.provider.openrouter",
diff --git a/packages/core/src/plugin/provider/sap-ai-core.ts b/packages/core/src/plugin/provider/sap-ai-core.ts
index f07babc2c29..4085378e84f 100644
--- a/packages/core/src/plugin/provider/sap-ai-core.ts
+++ b/packages/core/src/plugin/provider/sap-ai-core.ts
@@ -1,6 +1,6 @@
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Npm } from "@opencode-ai/util/npm"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Npm } from "@opencode/util/npm"
import { Provider } from "../../provider.js"
import { loadSDKFactory } from "./sdk-factory.js"
diff --git a/packages/core/src/plugin/provider/sdk-factory.ts b/packages/core/src/plugin/provider/sdk-factory.ts
index 9e7d22d8d48..9a7e6c08d6d 100644
--- a/packages/core/src/plugin/provider/sdk-factory.ts
+++ b/packages/core/src/plugin/provider/sdk-factory.ts
@@ -1,6 +1,6 @@
import { Effect } from "effect"
-import { Npm } from "@opencode-ai/util/npm"
-import { importModule, resolveModule } from "@opencode-ai/util/runtime-import"
+import { Npm } from "@opencode/util/npm"
+import { importModule, resolveModule } from "@opencode/util/runtime-import"
export const loadSDKFactory = Effect.fnUntraced(function* (npm: Npm.Interface, packageName: string) {
const installedPath = packageName.startsWith("file://")
diff --git a/packages/core/src/plugin/provider/snowflake-cortex.ts b/packages/core/src/plugin/provider/snowflake-cortex.ts
index 3d9e8e1f0a4..b32fa54836d 100644
--- a/packages/core/src/plugin/provider/snowflake-cortex.ts
+++ b/packages/core/src/plugin/provider/snowflake-cortex.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Provider } from "../../provider.js"
type FetchLike = (url: string | URL | Request, init?: RequestInit) => Promise
diff --git a/packages/core/src/plugin/provider/vercel.ts b/packages/core/src/plugin/provider/vercel.ts
index 653742ac6f3..afe3ecede4d 100644
--- a/packages/core/src/plugin/provider/vercel.ts
+++ b/packages/core/src/plugin/provider/vercel.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Provider } from "../../provider.js"
export const VercelPlugin = define({
diff --git a/packages/core/src/plugin/provider/vllm.ts b/packages/core/src/plugin/provider/vllm.ts
index a0e4a6b99f8..36e1a8b2c70 100644
--- a/packages/core/src/plugin/provider/vllm.ts
+++ b/packages/core/src/plugin/provider/vllm.ts
@@ -1,5 +1,5 @@
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import type { Entry } from "@opencode-ai/schema/config"
+import { define } from "@opencode/plugin/effect/plugin"
+import type { Entry } from "@opencode/schema/config"
import { Duration, Effect, Schedule, Schema, Semaphore, Stream } from "effect"
import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
import { Config } from "../../config.js"
@@ -40,7 +40,7 @@ export function make(origin = "http://127.0.0.1:8000", interval: Duration.Input
}
catalog.provider.update(providerID, (provider) => {
provider.name = "vLLM"
- provider.package = "@opencode-ai/ai/providers/openai-compatible"
+ provider.package = "@opencode/ai/providers/openai-compatible"
provider.settings = {
baseURL: source.current.baseURL,
provider: providerID,
diff --git a/packages/core/src/plugin/provider/xai.ts b/packages/core/src/plugin/provider/xai.ts
index 94b0be539eb..99d21c56ace 100644
--- a/packages/core/src/plugin/provider/xai.ts
+++ b/packages/core/src/plugin/provider/xai.ts
@@ -1,5 +1,5 @@
-import type { IntegrationOAuthMethodRegistration } from "@opencode-ai/plugin/effect/integration"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import type { IntegrationOAuthMethodRegistration } from "@opencode/plugin/effect/integration"
+import { define } from "@opencode/plugin/effect/plugin"
import { Clock, Effect, Option, Schema } from "effect"
import { App } from "../../app.js"
import { Credential } from "../../credential.js"
diff --git a/packages/core/src/plugin/provider/zenmux.ts b/packages/core/src/plugin/provider/zenmux.ts
index 738630508b4..8b90bde2b37 100644
--- a/packages/core/src/plugin/provider/zenmux.ts
+++ b/packages/core/src/plugin/provider/zenmux.ts
@@ -1,5 +1,5 @@
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Provider } from "../../provider.js"
export const ZenmuxPlugin = define({
diff --git a/packages/core/src/plugin/sdk.ts b/packages/core/src/plugin/sdk.ts
index 829b9edd5e4..a71b2f98c46 100644
--- a/packages/core/src/plugin/sdk.ts
+++ b/packages/core/src/plugin/sdk.ts
@@ -1,15 +1,15 @@
export * as SdkPlugins from "./sdk.js"
-import type { Plugin } from "@opencode-ai/plugin/effect/plugin"
+import type { Plugin } from "@opencode/plugin/effect/plugin"
import { Context, Effect, Layer } from "effect"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { Bus } from "../bus.js"
import type { Generation } from "../plugin.js"
export const Updated = Bus.ephemeral({ type: "sdk.plugin.updated", schema: {} })
/**
- * Holds the plugins an embedder (the `@opencode-ai/sdk` host) contributes,
+ * Holds the plugins an embedder (the `@opencode/sdk` host) contributes,
* so the application loader can add them on every Location boot through its
* ordinary generation path. Registration publishes an unlocated update so every booted Location
* reloads its plugin generation from the shared store.
diff --git a/packages/core/src/plugin/service.ts b/packages/core/src/plugin/service.ts
index 991f18ba065..b4f1bccf3be 100644
--- a/packages/core/src/plugin/service.ts
+++ b/packages/core/src/plugin/service.ts
@@ -2,8 +2,8 @@ export * as Plugin from "./service.js"
// The service tag lives apart from the layer so Session entry points can wait on activation without
// importing the plugin host, which itself depends on Session.
-import { Plugin } from "@opencode-ai/schema/plugin"
-import type { Plugin as PluginDefinition } from "@opencode-ai/plugin/effect/plugin"
+import { Plugin } from "@opencode/schema/plugin"
+import type { Plugin as PluginDefinition } from "@opencode/plugin/effect/plugin"
import { Context, type Effect, type Exit } from "effect"
export interface Interface {
diff --git a/packages/core/src/plugin/skill.ts b/packages/core/src/plugin/skill.ts
index f65ec249951..05c27eeef95 100644
--- a/packages/core/src/plugin/skill.ts
+++ b/packages/core/src/plugin/skill.ts
@@ -2,8 +2,8 @@
export * as SkillPlugin from "./skill.js"
-import { define, type Context } from "@opencode-ai/plugin/effect/plugin"
-import { Document } from "@opencode-ai/schema/config"
+import { define, type Context } from "@opencode/plugin/effect/plugin"
+import { Document } from "@opencode/schema/config"
import { Effect } from "effect"
import { AbsolutePath } from "../schema.js"
import { Skill } from "../skill.js"
diff --git a/packages/core/src/plugin/skill/opencode.md b/packages/core/src/plugin/skill/opencode.md
index f8c21723701..08a1f9e84fb 100644
--- a/packages/core/src/plugin/skill/opencode.md
+++ b/packages/core/src/plugin/skill/opencode.md
@@ -217,10 +217,10 @@ For questions about connecting an application to OpenCode over the network,
fetch the full [client guide](https://opencode.ai/v2/docs/build/client) before
answering.
-`@opencode-ai/client` is the generated TypeScript client for the OpenCode HTTP
+`@opencode/client` is the generated TypeScript client for the OpenCode HTTP
API. Its methods and types come from the same contract as the API reference.
The default entrypoint exposes Promise-based resource clients and async
-iterables for streaming endpoints. The `@opencode-ai/client/effect` entrypoint
+iterables for streaming endpoints. The `@opencode/client/effect` entrypoint
exposes typed Effects, Streams, and decoded OpenCode schema values. Its
`Service` API can discover, start, stop, and authenticate with the local
background service from a Node application.
diff --git a/packages/core/src/plugin/source-directory.ts b/packages/core/src/plugin/source-directory.ts
index 887b659cb76..79c247cb0a6 100644
--- a/packages/core/src/plugin/source-directory.ts
+++ b/packages/core/src/plugin/source-directory.ts
@@ -1,6 +1,6 @@
export * as PluginSourceDirectory from "./source-directory.js"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { Effect, Option } from "effect"
import path from "path"
diff --git a/packages/core/src/plugin/supervisor.ts b/packages/core/src/plugin/supervisor.ts
index bc7ed473857..32de3582721 100644
--- a/packages/core/src/plugin/supervisor.ts
+++ b/packages/core/src/plugin/supervisor.ts
@@ -1,12 +1,12 @@
export * as PluginSupervisor from "./supervisor.js"
-import { Event } from "@opencode-ai/schema/config"
+import { Event } from "@opencode/schema/config"
import { Cause, Effect, Layer, Queue, Stream } from "effect"
import path from "path"
import { ConfigPluginSource } from "../config/plugin/source.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Bus } from "../bus.js"
-import { Npm } from "@opencode-ai/util/npm"
+import { Npm } from "@opencode/util/npm"
import { Plugin } from "../plugin.js"
import { InstancePlugins } from "./instance.js"
import { PluginInternal } from "./internal.js"
diff --git a/packages/core/src/plugin/update.ts b/packages/core/src/plugin/update.ts
index da4aecff8c8..7a9188da85b 100644
--- a/packages/core/src/plugin/update.ts
+++ b/packages/core/src/plugin/update.ts
@@ -1,9 +1,9 @@
export * as PluginUpdate from "./update.js"
import { Clock, Context, Effect, Exit, Layer, Option, PubSub, Stream } from "effect"
-import { Npm } from "@opencode-ai/util/npm"
-import { EffectFlock } from "@opencode-ai/util/effect-flock"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { Npm } from "@opencode/util/npm"
+import { EffectFlock } from "@opencode/util/effect-flock"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { KeyedMutex } from "../effect/keyed-mutex.js"
const interval = 24 * 60 * 60 * 1_000
diff --git a/packages/core/src/plugin/variant.ts b/packages/core/src/plugin/variant.ts
index f988ecc6e85..0931e68c07c 100644
--- a/packages/core/src/plugin/variant.ts
+++ b/packages/core/src/plugin/variant.ts
@@ -1,8 +1,8 @@
export * as VariantPlugin from "./variant.js"
import { Effect } from "effect"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Model } from "@opencode-ai/schema/model"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Model } from "@opencode/schema/model"
import { Provider } from "../provider.js"
export const Plugin = define({
diff --git a/packages/core/src/plugin/vcs/git.ts b/packages/core/src/plugin/vcs/git.ts
index dd62b34925d..4a637148a05 100644
--- a/packages/core/src/plugin/vcs/git.ts
+++ b/packages/core/src/plugin/vcs/git.ts
@@ -1,11 +1,11 @@
export * as VcsGitPlugin from "./git.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect } from "effect"
import { ChildProcess } from "effect/unstable/process"
-import { FileDiff } from "@opencode-ai/schema/file-diff"
-import { Base, BranchList, FileStatus, Info, Mode } from "@opencode-ai/schema/vcs"
-import { AppProcess } from "@opencode-ai/util/process"
+import { FileDiff } from "@opencode/schema/file-diff"
+import { Base, BranchList, FileStatus, Info, Mode } from "@opencode/schema/vcs"
+import { AppProcess } from "@opencode/util/process"
import { Location } from "../../location.js"
import type { Adapter, BranchOptions, DiffOptions } from "../../vcs.js"
import { DiffError } from "../../vcs.js"
diff --git a/packages/core/src/plugin/vcs/hg.ts b/packages/core/src/plugin/vcs/hg.ts
index 0f79dbeb37f..fbf5a09410a 100644
--- a/packages/core/src/plugin/vcs/hg.ts
+++ b/packages/core/src/plugin/vcs/hg.ts
@@ -3,11 +3,11 @@ export * as VcsHgPlugin from "./hg.js"
import path from "path"
import { Effect } from "effect"
import { ChildProcess } from "effect/unstable/process"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { FileDiff } from "@opencode-ai/schema/file-diff"
-import { FileStatus, Info, Mode } from "@opencode-ai/schema/vcs"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { AppProcess } from "@opencode-ai/util/process"
+import { define } from "@opencode/plugin/effect/plugin"
+import { FileDiff } from "@opencode/schema/file-diff"
+import { FileStatus, Info, Mode } from "@opencode/schema/vcs"
+import { FSUtil } from "@opencode/util/fs-util"
+import { AppProcess } from "@opencode/util/process"
import { Location } from "../../location.js"
import type { Adapter, DiffOptions } from "../../vcs.js"
import { DiffError } from "../../vcs.js"
diff --git a/packages/core/src/plugin/warming.ts b/packages/core/src/plugin/warming.ts
index 09784145064..afc1465e83d 100644
--- a/packages/core/src/plugin/warming.ts
+++ b/packages/core/src/plugin/warming.ts
@@ -1,7 +1,7 @@
export * as WarmingPlugin from "./warming.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import type { Session } from "@opencode-ai/schema/session"
+import { define } from "@opencode/plugin/effect/plugin"
+import type { Session } from "@opencode/schema/session"
import { Clock, Duration, Effect, Scope } from "effect"
import { Config } from "../config.js"
diff --git a/packages/core/src/plugin/websearch/exa.ts b/packages/core/src/plugin/websearch/exa.ts
index 77b380db370..1dc3a26108b 100644
--- a/packages/core/src/plugin/websearch/exa.ts
+++ b/packages/core/src/plugin/websearch/exa.ts
@@ -1,6 +1,6 @@
export * as WebSearchExa from "./exa.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect, Schema, Scope } from "effect"
import { HttpClient } from "effect/unstable/http"
import { WebSearchMcp } from "./mcp.js"
diff --git a/packages/core/src/plugin/websearch/firecrawl.ts b/packages/core/src/plugin/websearch/firecrawl.ts
index 4cb56956405..1ea260e0c5d 100644
--- a/packages/core/src/plugin/websearch/firecrawl.ts
+++ b/packages/core/src/plugin/websearch/firecrawl.ts
@@ -1,6 +1,6 @@
export * as WebSearchFirecrawl from "./firecrawl.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect, Option, Schema, Scope } from "effect"
import { HttpClient } from "effect/unstable/http"
import { App } from "../../app.js"
diff --git a/packages/core/src/plugin/websearch/parallel.ts b/packages/core/src/plugin/websearch/parallel.ts
index 577aafc2546..5184155482b 100644
--- a/packages/core/src/plugin/websearch/parallel.ts
+++ b/packages/core/src/plugin/websearch/parallel.ts
@@ -1,6 +1,6 @@
export * as WebSearchParallel from "./parallel.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect, Schema, Scope } from "effect"
import { HttpClient } from "effect/unstable/http"
import { App } from "../../app.js"
diff --git a/packages/core/src/plugin/websearch/tavily.ts b/packages/core/src/plugin/websearch/tavily.ts
index 34cf739e18e..4b568a1fb0d 100644
--- a/packages/core/src/plugin/websearch/tavily.ts
+++ b/packages/core/src/plugin/websearch/tavily.ts
@@ -1,6 +1,6 @@
export * as WebSearchTavily from "./tavily.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Duration, Effect, Schema, Scope } from "effect"
import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
import { App } from "../../app.js"
diff --git a/packages/core/src/project.ts b/packages/core/src/project.ts
index 7d7d0eb607b..bad6d3ab6a9 100644
--- a/packages/core/src/project.ts
+++ b/packages/core/src/project.ts
@@ -7,12 +7,12 @@ import path from "path"
import { AbsolutePath } from "./schema.js"
import { Bus } from "./bus.js"
import { Database } from "./database/database.js"
-import { Worktree } from "@opencode-ai/schema/worktree"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { Worktree } from "@opencode/schema/worktree"
+import { FSUtil } from "@opencode/util/fs-util"
import { Git } from "./git.js"
-import { AppProcess } from "@opencode-ai/util/process"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { Hash } from "@opencode-ai/util/hash"
+import { AppProcess } from "@opencode/util/process"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { Hash } from "@opencode/util/hash"
import { ProjectSchema } from "./project/schema.js"
import { ProjectTable, upsertProject } from "./project/sql.js"
import { WorktreeTable } from "./worktree/sql.js"
diff --git a/packages/core/src/project/schema.ts b/packages/core/src/project/schema.ts
index 4d30552797e..1c3802c4ac6 100644
--- a/packages/core/src/project/schema.ts
+++ b/packages/core/src/project/schema.ts
@@ -1,7 +1,7 @@
export * as ProjectSchema from "./schema.js"
import { Schema } from "effect"
-import { Project } from "@opencode-ai/schema/project"
+import { Project } from "@opencode/schema/project"
import { AbsolutePath } from "../schema.js"
export const ID = Project.ID
diff --git a/packages/core/src/provider.ts b/packages/core/src/provider.ts
index fe8ab7dd057..ac46e0f7d80 100644
--- a/packages/core/src/provider.ts
+++ b/packages/core/src/provider.ts
@@ -1,12 +1,12 @@
export * as Provider from "./provider.js"
import { Effect, Schema } from "effect"
-import { Provider } from "@opencode-ai/schema/provider"
-import type { ProviderPackageDefinition } from "@opencode-ai/ai"
-import { isRecord } from "@opencode-ai/ai/utils/record"
-import { Npm } from "@opencode-ai/util/npm"
+import { Provider } from "@opencode/schema/provider"
+import type { ProviderPackageDefinition } from "@opencode/ai"
+import { isRecord } from "@opencode/ai/utils/record"
+import { Npm } from "@opencode/util/npm"
import type { DeepMutable } from "./schema.js"
-import { importModule, resolveModule } from "@opencode-ai/util/runtime-import"
+import { importModule, resolveModule } from "@opencode/util/runtime-import"
export const ID = Provider.ID
export type ID = typeof ID.Type
@@ -18,6 +18,8 @@ export function packageName(value: string): string
export function packageName(value: undefined): undefined
export function packageName(value: string | undefined): string | undefined
export function packageName(value: string | undefined) {
+ // Native provider entrypoints can persist in user configuration across the npm scope migration.
+ if (value?.startsWith("@opencode-ai/ai/")) return value.replace("@opencode-ai/", "@opencode/")
if (value === undefined || !isAISDK(value)) return value
return value.slice(AISDK_PREFIX.length)
}
@@ -34,55 +36,50 @@ export type ProviderPackage = ProviderPackageDefinition
const packages = new Map>()
const builtins = new Map Promise>([
- ["@opencode-ai/ai/providers/amazon-bedrock", () => import("@opencode-ai/ai/providers/amazon-bedrock")],
- ["@opencode-ai/ai/providers/amazon-bedrock/mantle", () => import("@opencode-ai/ai/providers/amazon-bedrock/mantle")],
+ ["@opencode/ai/providers/amazon-bedrock", () => import("@opencode/ai/providers/amazon-bedrock")],
+ ["@opencode/ai/providers/amazon-bedrock/mantle", () => import("@opencode/ai/providers/amazon-bedrock/mantle")],
[
- "@opencode-ai/ai/providers/amazon-bedrock/mantle/chat",
- () => import("@opencode-ai/ai/providers/amazon-bedrock/mantle/chat"),
+ "@opencode/ai/providers/amazon-bedrock/mantle/chat",
+ () => import("@opencode/ai/providers/amazon-bedrock/mantle/chat"),
],
[
- "@opencode-ai/ai/providers/amazon-bedrock/mantle/responses",
- () => import("@opencode-ai/ai/providers/amazon-bedrock/mantle/responses"),
+ "@opencode/ai/providers/amazon-bedrock/mantle/responses",
+ () => import("@opencode/ai/providers/amazon-bedrock/mantle/responses"),
],
- ["@opencode-ai/ai/providers/anthropic", () => import("@opencode-ai/ai/providers/anthropic")],
- ["@opencode-ai/ai/providers/azure", () => import("@opencode-ai/ai/providers/azure")],
- ["@opencode-ai/ai/providers/azure/chat", () => import("@opencode-ai/ai/providers/azure/chat")],
- ["@opencode-ai/ai/providers/azure/responses", () => import("@opencode-ai/ai/providers/azure/responses")],
- ["@opencode-ai/ai/providers/baseten", () => import("@opencode-ai/ai/providers/baseten")],
- ["@opencode-ai/ai/providers/cerebras", () => import("@opencode-ai/ai/providers/cerebras")],
- ["@opencode-ai/ai/providers/cloudflare-ai-gateway", () => import("@opencode-ai/ai/providers/cloudflare-ai-gateway")],
- ["@opencode-ai/ai/providers/cloudflare-workers-ai", () => import("@opencode-ai/ai/providers/cloudflare-workers-ai")],
- ["@opencode-ai/ai/providers/deepinfra", () => import("@opencode-ai/ai/providers/deepinfra")],
- ["@opencode-ai/ai/providers/deepseek", () => import("@opencode-ai/ai/providers/deepseek")],
- ["@opencode-ai/ai/providers/fireworks", () => import("@opencode-ai/ai/providers/fireworks")],
- ["@opencode-ai/ai/providers/google", () => import("@opencode-ai/ai/providers/google")],
- ["@opencode-ai/ai/providers/google-vertex", () => import("@opencode-ai/ai/providers/google-vertex")],
- ["@opencode-ai/ai/providers/google-vertex/gemini", () => import("@opencode-ai/ai/providers/google-vertex/gemini")],
- ["@opencode-ai/ai/providers/google-vertex/chat", () => import("@opencode-ai/ai/providers/google-vertex/chat")],
- [
- "@opencode-ai/ai/providers/google-vertex/responses",
- () => import("@opencode-ai/ai/providers/google-vertex/responses"),
- ],
- [
- "@opencode-ai/ai/providers/google-vertex/messages",
- () => import("@opencode-ai/ai/providers/google-vertex/messages"),
- ],
- ["@opencode-ai/ai/providers/groq", () => import("@opencode-ai/ai/providers/groq")],
- ["@opencode-ai/ai/providers/mistral", () => import("@opencode-ai/ai/providers/mistral")],
- ["@opencode-ai/ai/providers/openai", () => import("@opencode-ai/ai/providers/openai")],
- ["@opencode-ai/ai/providers/openai/chat", () => import("@opencode-ai/ai/providers/openai/chat")],
- ["@opencode-ai/ai/providers/openai/responses", () => import("@opencode-ai/ai/providers/openai/responses")],
- ["@opencode-ai/ai/providers/openai-compatible", () => import("@opencode-ai/ai/providers/openai-compatible")],
- ["@opencode-ai/ai/providers/openrouter", () => import("@opencode-ai/ai/providers/openrouter")],
- ["@opencode-ai/ai/providers/togetherai", () => import("@opencode-ai/ai/providers/togetherai")],
- ["@opencode-ai/ai/providers/xai", () => import("@opencode-ai/ai/providers/xai")],
+ ["@opencode/ai/providers/anthropic", () => import("@opencode/ai/providers/anthropic")],
+ ["@opencode/ai/providers/azure", () => import("@opencode/ai/providers/azure")],
+ ["@opencode/ai/providers/azure/chat", () => import("@opencode/ai/providers/azure/chat")],
+ ["@opencode/ai/providers/azure/responses", () => import("@opencode/ai/providers/azure/responses")],
+ ["@opencode/ai/providers/baseten", () => import("@opencode/ai/providers/baseten")],
+ ["@opencode/ai/providers/cerebras", () => import("@opencode/ai/providers/cerebras")],
+ ["@opencode/ai/providers/cloudflare-ai-gateway", () => import("@opencode/ai/providers/cloudflare-ai-gateway")],
+ ["@opencode/ai/providers/cloudflare-workers-ai", () => import("@opencode/ai/providers/cloudflare-workers-ai")],
+ ["@opencode/ai/providers/deepinfra", () => import("@opencode/ai/providers/deepinfra")],
+ ["@opencode/ai/providers/deepseek", () => import("@opencode/ai/providers/deepseek")],
+ ["@opencode/ai/providers/fireworks", () => import("@opencode/ai/providers/fireworks")],
+ ["@opencode/ai/providers/google", () => import("@opencode/ai/providers/google")],
+ ["@opencode/ai/providers/google-vertex", () => import("@opencode/ai/providers/google-vertex")],
+ ["@opencode/ai/providers/google-vertex/gemini", () => import("@opencode/ai/providers/google-vertex/gemini")],
+ ["@opencode/ai/providers/google-vertex/chat", () => import("@opencode/ai/providers/google-vertex/chat")],
+ ["@opencode/ai/providers/google-vertex/responses", () => import("@opencode/ai/providers/google-vertex/responses")],
+ ["@opencode/ai/providers/google-vertex/messages", () => import("@opencode/ai/providers/google-vertex/messages")],
+ ["@opencode/ai/providers/groq", () => import("@opencode/ai/providers/groq")],
+ ["@opencode/ai/providers/mistral", () => import("@opencode/ai/providers/mistral")],
+ ["@opencode/ai/providers/openai", () => import("@opencode/ai/providers/openai")],
+ ["@opencode/ai/providers/openai/chat", () => import("@opencode/ai/providers/openai/chat")],
+ ["@opencode/ai/providers/openai/responses", () => import("@opencode/ai/providers/openai/responses")],
+ ["@opencode/ai/providers/openai-compatible", () => import("@opencode/ai/providers/openai-compatible")],
+ ["@opencode/ai/providers/openrouter", () => import("@opencode/ai/providers/openrouter")],
+ ["@opencode/ai/providers/togetherai", () => import("@opencode/ai/providers/togetherai")],
+ ["@opencode/ai/providers/xai", () => import("@opencode/ai/providers/xai")],
])
-export const loadPackage = Effect.fn("Provider.loadPackage")(function* (specifier: string, npm?: Npm.Interface) {
+export const loadPackage = Effect.fn("Provider.loadPackage")(function* (input: string, npm?: Npm.Interface) {
+ const specifier = packageName(input)
const builtin = builtins.get(specifier)
if (builtin) return yield* importPackage(specifier, specifier, builtin)
const resolved = yield* Effect.sync(() => {
- if (specifier.startsWith("file://") || specifier.startsWith("@opencode-ai/ai/")) return specifier
+ if (specifier.startsWith("file://") || specifier.startsWith("@opencode/ai/")) return specifier
try {
return import.meta.resolve(specifier)
} catch {
diff --git a/packages/core/src/pty.ts b/packages/core/src/pty.ts
index c7219d5ae1a..3e3b631237e 100644
--- a/packages/core/src/pty.ts
+++ b/packages/core/src/pty.ts
@@ -1,9 +1,9 @@
export * as Pty from "./pty.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import type { Disp, Proc } from "#pty"
import { Context, Effect, Layer, Schema, Types } from "effect"
-import { Pty } from "@opencode-ai/schema/pty"
+import { Pty } from "@opencode/schema/pty"
import { Bus } from "./bus.js"
import { Location } from "./location.js"
import { PtyID } from "./pty/schema.js"
@@ -46,7 +46,7 @@ export const UpdateInput = Pty.UpdateInput
export type UpdateInput = Types.DeepMutable
-export { Event } from "@opencode-ai/schema/pty"
+export { Event } from "@opencode/schema/pty"
export type AttachInput = {
// Absolute output cursor to replay from. -1 tails from the current end; omitted replays the full retained buffer.
diff --git a/packages/core/src/pty/schema.ts b/packages/core/src/pty/schema.ts
index ab0c40521b1..35c60307d73 100644
--- a/packages/core/src/pty/schema.ts
+++ b/packages/core/src/pty/schema.ts
@@ -1 +1 @@
-export { ID as PtyID } from "@opencode-ai/schema/pty"
+export { ID as PtyID } from "@opencode/schema/pty"
diff --git a/packages/core/src/pty/ticket.ts b/packages/core/src/pty/ticket.ts
index 49a67cb00f1..677a9b1f984 100644
--- a/packages/core/src/pty/ticket.ts
+++ b/packages/core/src/pty/ticket.ts
@@ -1,10 +1,10 @@
export * as PtyTicket from "./ticket.js"
-import type { Workspace } from "@opencode-ai/schema/workspace"
-import { PtyTicket } from "@opencode-ai/schema/pty-ticket"
+import type { Workspace } from "@opencode/schema/workspace"
+import { PtyTicket } from "@opencode/schema/pty-ticket"
import { PtyID } from "./schema.js"
import { Cache, Context, Duration, Effect, Layer } from "effect"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
const DEFAULT_TTL = Duration.seconds(60)
const CAPACITY = 10_000
diff --git a/packages/core/src/reference.ts b/packages/core/src/reference.ts
index 5e0b965b004..d567abd5f5d 100644
--- a/packages/core/src/reference.ts
+++ b/packages/core/src/reference.ts
@@ -1,9 +1,9 @@
export * as Reference from "./reference.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, Effect, Layer, Scope } from "effect"
-import { Reference } from "@opencode-ai/schema/reference"
-import { Global } from "@opencode-ai/util/global"
+import { Reference } from "@opencode/schema/reference"
+import { Global } from "@opencode/util/global"
import { Bus } from "./bus.js"
import { Repository } from "./repository.js"
import { RepositoryCache } from "./repository-cache.js"
@@ -19,7 +19,7 @@ export type GitSource = Reference.GitSource
export const Source = Reference.Source
export type Source = Reference.Source
-export { Event } from "@opencode-ai/schema/reference"
+export { Event } from "@opencode/schema/reference"
export const Info = Reference.Info
export type Info = Reference.Info
diff --git a/packages/core/src/reference/instructions.ts b/packages/core/src/reference/instructions.ts
index 2aa84e1a6bb..36d40887339 100644
--- a/packages/core/src/reference/instructions.ts
+++ b/packages/core/src/reference/instructions.ts
@@ -1,6 +1,6 @@
export * as ReferenceInstructions from "./instructions.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, Effect, Layer, Schema } from "effect"
import { Reference } from "../reference.js"
import { Instructions } from "../instructions/index.js"
diff --git a/packages/core/src/repository-cache.ts b/packages/core/src/repository-cache.ts
index a16f6512af3..c6d664a6af4 100644
--- a/packages/core/src/repository-cache.ts
+++ b/packages/core/src/repository-cache.ts
@@ -7,13 +7,13 @@
*/
import path from "path"
import { Clock, Context, Duration, Effect, Layer, Option, Schema } from "effect"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { Git } from "./git.js"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Repository } from "./repository.js"
import { AbsolutePath } from "./schema.js"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { EffectFlock } from "@opencode-ai/util/effect-flock"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { EffectFlock } from "@opencode/util/effect-flock"
import { KV } from "./kv.js"
const Refresh = Schema.Struct({
diff --git a/packages/core/src/ripgrep.ts b/packages/core/src/ripgrep.ts
index c40b2936918..82841581c6b 100644
--- a/packages/core/src/ripgrep.ts
+++ b/packages/core/src/ripgrep.ts
@@ -2,9 +2,9 @@ export * as Ripgrep from "./ripgrep.js"
import { Context, Effect, Fiber, Layer, Schema, Stream } from "effect"
import { ChildProcess } from "effect/unstable/process"
-import { Entry, Match } from "@opencode-ai/schema/filesystem"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { collectStream, waitForAbort } from "@opencode-ai/util/process"
+import { Entry, Match } from "@opencode/schema/filesystem"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { collectStream, waitForAbort } from "@opencode/util/process"
import { Environment } from "./environment/index.js"
import { NonNegativeInt, PositiveInt, RelativePath } from "./schema.js"
import { RipgrepBinary } from "./ripgrep/binary.js"
diff --git a/packages/core/src/ripgrep/binary.ts b/packages/core/src/ripgrep/binary.ts
index 594f87f123b..4ca73e8bb8d 100644
--- a/packages/core/src/ripgrep/binary.ts
+++ b/packages/core/src/ripgrep/binary.ts
@@ -3,11 +3,11 @@ import { Context, Effect, Layer, Stream } from "effect"
import { HttpClient, HttpClientRequest } from "effect/unstable/http"
import { ChildProcess } from "effect/unstable/process"
import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
-import { CrossSpawnSpawner } from "@opencode-ai/util/cross-spawn-spawner"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { httpClient } from "@opencode-ai/util/effect/app-node-platform"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
+import { CrossSpawnSpawner } from "@opencode/util/cross-spawn-spawner"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { httpClient } from "@opencode/util/effect/app-node-platform"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
import { which } from "../util/which.js"
export namespace RipgrepBinary {
diff --git a/packages/core/src/rpc.ts b/packages/core/src/rpc.ts
index d085abc890d..94bd3763799 100644
--- a/packages/core/src/rpc.ts
+++ b/packages/core/src/rpc.ts
@@ -1,13 +1,13 @@
export * as Rpc from "./rpc.js"
-export { define } from "@opencode-ai/schema/rpc"
-export type { Definition, EventPayload, Failure } from "@opencode-ai/schema/rpc"
+export { define } from "@opencode/schema/rpc"
+export type { Definition, EventPayload, Failure } from "@opencode/schema/rpc"
-import type { RpcClient, RpcDomain, RpcHandlers } from "@opencode-ai/plugin/effect/rpc"
-import type { Rpc } from "@opencode-ai/schema/rpc"
-import { Event } from "@opencode-ai/schema/event"
-import type { Tool } from "@opencode-ai/schema/tool"
+import type { RpcClient, RpcDomain, RpcHandlers } from "@opencode/plugin/effect/rpc"
+import type { Rpc } from "@opencode/schema/rpc"
+import { Event } from "@opencode/schema/event"
+import type { Tool } from "@opencode/schema/tool"
import type { StandardSchemaV1 } from "@standard-schema/spec"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, Effect, JsonSchema, Layer, Schema, SchemaRepresentation, Stream } from "effect"
import { Bus } from "./bus.js"
import { Location } from "./location.js"
diff --git a/packages/core/src/schema.ts b/packages/core/src/schema.ts
index 24c2c68baf7..eb0ae4b07dc 100644
--- a/packages/core/src/schema.ts
+++ b/packages/core/src/schema.ts
@@ -7,7 +7,7 @@ import {
PositiveInt,
RelativePath,
statics,
-} from "@opencode-ai/schema/schema"
+} from "@opencode/schema/schema"
export { AbsolutePath, DateTimeUtcFromMillis, NonNegativeInt, optional, PositiveInt, RelativePath, statics }
diff --git a/packages/core/src/session.ts b/packages/core/src/session.ts
index 3e8fdb57777..04429fd2315 100644
--- a/packages/core/src/session.ts
+++ b/packages/core/src/session.ts
@@ -2,14 +2,14 @@ export * as Session from "./session.js"
export * from "./session/schema.js"
import { Effect, Layer, Schema, Context, Stream } from "effect"
-import { LLMClient } from "@opencode-ai/ai"
-import { ListAnchor } from "@opencode-ai/schema/session"
+import { LLMClient } from "@opencode/ai"
+import { ListAnchor } from "@opencode/schema/session"
import { and, desc, eq } from "drizzle-orm"
import { Project } from "./project.js"
-import { Model } from "@opencode-ai/schema/model"
+import { Model } from "@opencode/schema/model"
import { Location } from "./location.js"
import { SessionMessage } from "./session/message.js"
-import { PromptInput } from "@opencode-ai/schema/prompt-input"
+import { PromptInput } from "@opencode/schema/prompt-input"
import { Bus } from "./bus.js"
import { Instance } from "./instance/service.js"
import { Database } from "./database/database.js"
@@ -17,7 +17,7 @@ import { SessionProjector } from "./session/projector.js"
import { SessionMessageTable } from "./session/sql.js"
import { SessionSchema } from "./session/schema.js"
import { RelativePath } from "./schema.js"
-import { Agent } from "@opencode-ai/schema/agent"
+import { Agent } from "@opencode/schema/agent"
import { App } from "./app.js"
import { Slug } from "./util/slug.js"
import path from "path"
@@ -40,8 +40,8 @@ import {
SkillNotFoundError,
SyntheticConflictError,
} from "./session/error.js"
-import { Node } from "@opencode-ai/util/effect/app-node"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Node } from "@opencode/util/effect/app-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { SessionEvent } from "./session/event.js"
import { SessionInbox } from "./session/inbox.js"
import { InstructionState } from "./session/instruction-state.js"
@@ -57,8 +57,8 @@ import { SessionModelTransport } from "./session/model-transport.js"
import { llmClient } from "./effect/app-node-platform.js"
import { Snapshot } from "./snapshot.js"
import { Session } from "./session/session.js"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import type { EventLog } from "@opencode-ai/schema/event-log"
+import { FSUtil } from "@opencode/util/fs-util"
+import type { EventLog } from "@opencode/schema/event-log"
import { Job } from "./job.js"
import type { Command } from "./command.js"
import { SessionEnvironment } from "./session/environment.js"
diff --git a/packages/core/src/session/command.ts b/packages/core/src/session/command.ts
index e7bba05bc76..302f12e40c4 100644
--- a/packages/core/src/session/command.ts
+++ b/packages/core/src/session/command.ts
@@ -1,8 +1,8 @@
export * as SessionCommand from "./command.js"
-import type { PromptInput } from "@opencode-ai/schema/prompt-input"
-import type { Session } from "@opencode-ai/schema/session"
-import type { SessionInbox } from "@opencode-ai/schema/session-inbox"
+import type { PromptInput } from "@opencode/schema/prompt-input"
+import type { Session } from "@opencode/schema/session"
+import type { SessionInbox } from "@opencode/schema/session-inbox"
import { Effect } from "effect"
import { Command } from "../command.js"
import { Instance } from "../instance/service.js"
diff --git a/packages/core/src/session/compaction.ts b/packages/core/src/session/compaction.ts
index 38da673fc1d..d3d44ee4965 100644
--- a/packages/core/src/session/compaction.ts
+++ b/packages/core/src/session/compaction.ts
@@ -10,13 +10,13 @@ import {
LLMRequest,
Message,
type ContentPart,
-} from "@opencode-ai/ai"
-import { Agent } from "@opencode-ai/schema/agent"
-import { SessionError } from "@opencode-ai/schema/session-error"
+} from "@opencode/ai"
+import { Agent } from "@opencode/schema/agent"
+import { SessionError } from "@opencode/schema/session-error"
import { Context, Effect, Layer, Stream } from "effect"
import { Bus } from "../bus.js"
import { Database } from "../database/database.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { llmClient } from "../effect/app-node-platform.js"
import { SessionEvent } from "./event.js"
import type { SessionContext } from "./context.js"
diff --git a/packages/core/src/session/context.ts b/packages/core/src/session/context.ts
index 81afec73872..f2afd986dde 100644
--- a/packages/core/src/session/context.ts
+++ b/packages/core/src/session/context.ts
@@ -1,12 +1,12 @@
export * as SessionContext from "./context.js"
-import { Model } from "@opencode-ai/schema/model"
+import { Model } from "@opencode/schema/model"
import { Context, Effect, Layer } from "effect"
import { Agent } from "../agent.js"
import { Catalog } from "../catalog.js"
import { CodeModeInstructions } from "../codemode/instructions.js"
import { Database } from "../database/database.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { InstructionDiscovery } from "../instruction-discovery.js"
import { Instructions } from "../instructions/index.js"
import { InstructionBuiltIns } from "../instructions/builtins.js"
diff --git a/packages/core/src/session/environment.ts b/packages/core/src/session/environment.ts
index d6671703ad2..0991badb57d 100644
--- a/packages/core/src/session/environment.ts
+++ b/packages/core/src/session/environment.ts
@@ -1,7 +1,7 @@
export * as SessionEnvironment from "./environment.js"
import { Context, Effect, Layer } from "effect"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { SessionSchema } from "./schema.js"
export type Variables = Readonly>
diff --git a/packages/core/src/session/error.ts b/packages/core/src/session/error.ts
index 13eaae975f0..2f98c65ee0b 100644
--- a/packages/core/src/session/error.ts
+++ b/packages/core/src/session/error.ts
@@ -1,11 +1,11 @@
export * as SessionErrors from "./error.js"
import { Schema } from "effect"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Skill } from "@opencode-ai/schema/skill"
+import { Agent } from "@opencode/schema/agent"
+import { Skill } from "@opencode/schema/skill"
import { SessionMessage } from "./message.js"
import { SessionSchema } from "./schema.js"
-import { SessionError } from "@opencode-ai/schema/session-error"
+import { SessionError } from "@opencode/schema/session-error"
export class NotFoundError extends Schema.TaggedError()("Session.NotFoundError", {
sessionID: SessionSchema.ID,
diff --git a/packages/core/src/session/event.ts b/packages/core/src/session/event.ts
index 78e40a69941..bc59fe63bd2 100644
--- a/packages/core/src/session/event.ts
+++ b/packages/core/src/session/event.ts
@@ -1,2 +1,2 @@
-export * from "@opencode-ai/schema/session-event"
-export * as SessionEvent from "@opencode-ai/schema/session-event"
+export * from "@opencode/schema/session-event"
+export * as SessionEvent from "@opencode/schema/session-event"
diff --git a/packages/core/src/session/execution.ts b/packages/core/src/session/execution.ts
index 3e15f306ba4..0932c5f5b5d 100644
--- a/packages/core/src/session/execution.ts
+++ b/packages/core/src/session/execution.ts
@@ -5,7 +5,7 @@ import { Bus } from "../bus.js"
import { Database } from "../database/database.js"
import { Job } from "../job.js"
import { Instance } from "../instance/service.js"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { SessionEvent } from "./event.js"
import { SessionRunCoordinator } from "./run-coordinator.js"
import { SessionRunner } from "./runner/index.js"
diff --git a/packages/core/src/session/execution/restart.ts b/packages/core/src/session/execution/restart.ts
index af048a1e9da..72f606416c3 100644
--- a/packages/core/src/session/execution/restart.ts
+++ b/packages/core/src/session/execution/restart.ts
@@ -1,7 +1,7 @@
export * as SessionRestart from "./restart.js"
import { Context, Effect, Layer } from "effect"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { Bus } from "../../bus.js"
import { Job } from "../../job.js"
import { Session } from "../../session.js"
diff --git a/packages/core/src/session/generate.ts b/packages/core/src/session/generate.ts
index 71694f8683d..47b9dd1f6e5 100644
--- a/packages/core/src/session/generate.ts
+++ b/packages/core/src/session/generate.ts
@@ -1,6 +1,6 @@
export * as SessionGenerate from "./generate.js"
-import { LLMClient, Message, type AIError } from "@opencode-ai/ai"
+import { LLMClient, Message, type AIError } from "@opencode/ai"
import { Effect } from "effect"
import { Database } from "../database/database.js"
import { Instance } from "../instance/service.js"
diff --git a/packages/core/src/session/inbox.ts b/packages/core/src/session/inbox.ts
index 727389c9644..a91eed65af1 100644
--- a/packages/core/src/session/inbox.ts
+++ b/packages/core/src/session/inbox.ts
@@ -2,7 +2,7 @@ export * as SessionInbox from "./inbox.js"
import { and, asc, eq, or } from "drizzle-orm"
import { Context, DateTime, Effect, Layer, Schema } from "effect"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import {
Compaction,
CompactionPayload,
@@ -15,7 +15,7 @@ import {
SyntheticPayload,
User,
UserPayload,
-} from "@opencode-ai/schema/session-inbox"
+} from "@opencode/schema/session-inbox"
import { Database } from "../database/database.js"
import { Bus } from "../bus.js"
import { KeyedMutex } from "../effect/keyed-mutex.js"
diff --git a/packages/core/src/session/info.ts b/packages/core/src/session/info.ts
index d5fe96885fa..1ae8adc3a20 100644
--- a/packages/core/src/session/info.ts
+++ b/packages/core/src/session/info.ts
@@ -1,15 +1,15 @@
import { DateTime, Schema } from "effect"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Location } from "@opencode-ai/schema/location"
-import { Model } from "@opencode-ai/schema/model"
-import { Project } from "@opencode-ai/schema/project"
-import { Provider } from "@opencode-ai/schema/provider"
+import { Agent } from "@opencode/schema/agent"
+import { Location } from "@opencode/schema/location"
+import { Model } from "@opencode/schema/model"
+import { Project } from "@opencode/schema/project"
+import { Provider } from "@opencode/schema/provider"
import { AbsolutePath, RelativePath } from "../schema.js"
-import { Workspace } from "@opencode-ai/schema/workspace"
+import { Workspace } from "@opencode/schema/workspace"
import { SessionSchema } from "./schema.js"
import type { SessionTable } from "./sql.js"
-import { PersistedRevert } from "@opencode-ai/schema/session-revert"
-import { Money } from "@opencode-ai/schema/money"
+import { PersistedRevert } from "@opencode/schema/session-revert"
+import { Money } from "@opencode/schema/money"
const decodeRevert = Schema.decodeUnknownSync(PersistedRevert)
diff --git a/packages/core/src/session/instruction-entry.ts b/packages/core/src/session/instruction-entry.ts
index 8a7ed643909..517e7766743 100644
--- a/packages/core/src/session/instruction-entry.ts
+++ b/packages/core/src/session/instruction-entry.ts
@@ -2,9 +2,9 @@ export * as InstructionEntry from "./instruction-entry.js"
import { and, asc, eq, isNotNull, isNull, ne, or } from "drizzle-orm"
import { Context, Effect, Layer, Schema } from "effect"
-import { InstructionEntry } from "@opencode-ai/schema/instruction-entry"
+import { InstructionEntry } from "@opencode/schema/instruction-entry"
import { Database } from "../database/database.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Instructions } from "../instructions/index.js"
import { SessionSchema } from "./schema.js"
import { InstructionEntryTable } from "./sql.js"
diff --git a/packages/core/src/session/instructions.ts b/packages/core/src/session/instructions.ts
index 190003b3b41..1165ea6e6d1 100644
--- a/packages/core/src/session/instructions.ts
+++ b/packages/core/src/session/instructions.ts
@@ -2,9 +2,9 @@ export * as SessionInstructions from "./instructions.js"
import { relative } from "path"
import { Context, Effect, Layer, Option, Ref, Schema } from "effect"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Bus } from "../bus.js"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { Location } from "../location.js"
import { SessionEvent } from "./event.js"
import { MessageDecodeError } from "./error.js"
diff --git a/packages/core/src/session/message.ts b/packages/core/src/session/message.ts
index d1d7189b1db..5ced40fa772 100644
--- a/packages/core/src/session/message.ts
+++ b/packages/core/src/session/message.ts
@@ -1,2 +1,2 @@
-export * as SessionMessage from "@opencode-ai/schema/session-message"
-export * from "@opencode-ai/schema/session-message"
+export * as SessionMessage from "@opencode/schema/session-message"
+export * from "@opencode/schema/session-message"
diff --git a/packages/core/src/session/model-request.ts b/packages/core/src/session/model-request.ts
index ce097b4940b..83a27358bdd 100644
--- a/packages/core/src/session/model-request.ts
+++ b/packages/core/src/session/model-request.ts
@@ -1,14 +1,14 @@
export * as SessionModelRequest from "./model-request.js"
-import { HttpOptions, LanguageModel, LLM, LLMRequest, Message, SystemPart } from "@opencode-ai/ai"
-import type { StreamOptions } from "@opencode-ai/ai/route"
-import type { SessionRequestKind } from "@opencode-ai/plugin/effect/session"
-import type { Agent } from "@opencode-ai/schema/agent"
-import type { Model } from "@opencode-ai/schema/model"
-import type { Content } from "@opencode-ai/schema/tool"
+import { HttpOptions, LanguageModel, LLM, LLMRequest, Message, SystemPart } from "@opencode/ai"
+import type { StreamOptions } from "@opencode/ai/route"
+import type { SessionRequestKind } from "@opencode/plugin/effect/session"
+import type { Agent } from "@opencode/schema/agent"
+import type { Model } from "@opencode/schema/model"
+import type { Content } from "@opencode/schema/tool"
import { Cause, Config, Context, Effect, Layer, Result, Stream } from "effect"
import { HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { App } from "../app.js"
import { Permission } from "../permission.js"
import { PluginHooks } from "../plugin/hooks.js"
diff --git a/packages/core/src/session/model-transport.ts b/packages/core/src/session/model-transport.ts
index b6d8f3a3a21..5877443d24b 100644
--- a/packages/core/src/session/model-transport.ts
+++ b/packages/core/src/session/model-transport.ts
@@ -9,12 +9,12 @@ import {
type WebSocketChannelExecutor,
type WebSocketConnection,
type WebSocketConnector,
-} from "@opencode-ai/ai/route"
-import { AIError, AIErrorReason, TransportError, type TransportOperation } from "@opencode-ai/ai"
-import { Hash } from "@opencode-ai/util/hash"
+} from "@opencode/ai/route"
+import { AIError, AIErrorReason, TransportError, type TransportOperation } from "@opencode/ai"
+import { Hash } from "@opencode/util/hash"
import { Cause, Clock, Context, Effect, Fiber, Layer, Metric, Queue, Scope, Semaphore, Stream } from "effect"
import { Socket } from "effect/unstable/socket"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { SessionSchema } from "./schema.js"
import { webSocketConstructor } from "../effect/app-node-platform.js"
diff --git a/packages/core/src/session/move.ts b/packages/core/src/session/move.ts
index 1a66df00cba..f11e4990031 100644
--- a/packages/core/src/session/move.ts
+++ b/packages/core/src/session/move.ts
@@ -1,9 +1,9 @@
export * as SessionMove from "./move.js"
-import type { Session } from "@opencode-ai/schema/session"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
+import type { Session } from "@opencode/schema/session"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
import { Cause, Context, Effect, Layer, Schema } from "effect"
import path from "path"
import { Bus } from "../bus.js"
diff --git a/packages/core/src/session/projector.ts b/packages/core/src/session/projector.ts
index 8cebd9c1dab..dbc9d90950d 100644
--- a/packages/core/src/session/projector.ts
+++ b/packages/core/src/session/projector.ts
@@ -5,22 +5,22 @@ import { DateTime, Effect, Layer, Schema, Stream } from "effect"
import path from "path"
import { Database } from "../database/database.js"
import { Bus } from "../bus.js"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Model } from "@opencode-ai/schema/model"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { Agent } from "@opencode/schema/agent"
+import { Model } from "@opencode/schema/model"
import { SessionEvent } from "./event.js"
import { SessionMessage } from "./message.js"
import { SessionMessageUpdater } from "./message-updater.js"
import { SessionInbox } from "./inbox.js"
-import { Workspace } from "@opencode-ai/schema/workspace"
+import { Workspace } from "@opencode/schema/workspace"
import { InstructionState } from "./instruction-state.js"
import { SessionInboxTable, SessionMessageTable, SessionTable } from "./sql.js"
import { InstructionEntry } from "./instruction-entry.js"
import { Slug } from "../util/slug.js"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Money } from "@opencode-ai/schema/money"
-import { Worktree } from "@opencode-ai/schema/worktree"
-import { Project } from "@opencode-ai/schema/project"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Money } from "@opencode/schema/money"
+import { Worktree } from "@opencode/schema/worktree"
+import { Project } from "@opencode/schema/project"
import { AbsolutePath, RelativePath } from "../schema.js"
import type { SessionSchema } from "./schema.js"
import { ProjectTable } from "../project/sql.js"
diff --git a/packages/core/src/session/prompt.ts b/packages/core/src/session/prompt.ts
index e06290bd1a6..bb552681e77 100644
--- a/packages/core/src/session/prompt.ts
+++ b/packages/core/src/session/prompt.ts
@@ -1,11 +1,11 @@
export * as SessionPrompt from "./prompt.js"
-import { Base64, FileAttachment, Prompt } from "@opencode-ai/schema/prompt"
-import { PromptInput } from "@opencode-ai/schema/prompt-input"
-import { SessionInbox } from "@opencode-ai/schema/session-inbox"
-import type { Session } from "@opencode-ai/schema/session"
-import type { SessionMessage } from "@opencode-ai/schema/session-message"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { Base64, FileAttachment, Prompt } from "@opencode/schema/prompt"
+import { PromptInput } from "@opencode/schema/prompt-input"
+import { SessionInbox } from "@opencode/schema/session-inbox"
+import type { Session } from "@opencode/schema/session"
+import type { SessionMessage } from "@opencode/schema/session-message"
+import { FSUtil } from "@opencode/util/fs-util"
import { Effect } from "effect"
import path from "path"
import { fileURLToPath } from "url"
diff --git a/packages/core/src/session/provider-context.ts b/packages/core/src/session/provider-context.ts
index 4880a45772e..b6d22302eda 100644
--- a/packages/core/src/session/provider-context.ts
+++ b/packages/core/src/session/provider-context.ts
@@ -1,10 +1,10 @@
export * as SessionProviderContext from "./provider-context.js"
-import { Message } from "@opencode-ai/ai"
-import { SessionProviderContext } from "@opencode-ai/schema/session-provider-context"
+import { Message } from "@opencode/ai"
+import { SessionProviderContext } from "@opencode/schema/session-provider-context"
import { Schema } from "effect"
import { isDeepStrictEqual } from "node:util"
-import { Hash } from "@opencode-ai/util/hash"
+import { Hash } from "@opencode/util/hash"
import type { SessionMessage } from "./message.js"
import type { SessionRunnerModel } from "./runner/model.js"
diff --git a/packages/core/src/session/runner/index.ts b/packages/core/src/session/runner/index.ts
index 38cb3afdef4..749902ee748 100644
--- a/packages/core/src/session/runner/index.ts
+++ b/packages/core/src/session/runner/index.ts
@@ -1,6 +1,6 @@
export * as SessionRunner from "./index.js"
-import type { AIError } from "@opencode-ai/ai"
+import type { AIError } from "@opencode/ai"
import { Context, Data, Effect } from "effect"
import { SessionSchema } from "../schema.js"
import type { Promotable } from "../inbox.js"
diff --git a/packages/core/src/session/runner/llm.ts b/packages/core/src/session/runner/llm.ts
index e0bc68fa574..d6c6992fd6a 100644
--- a/packages/core/src/session/runner/llm.ts
+++ b/packages/core/src/session/runner/llm.ts
@@ -1,6 +1,6 @@
export * as SessionRunnerLLM from "./llm.js"
-import { Message } from "@opencode-ai/ai"
+import { Message } from "@opencode/ai"
import { and, desc, eq, sql } from "drizzle-orm"
import { Cause, Effect, Exit, FiberMap, Layer } from "effect"
import { Database } from "../../database/database.js"
@@ -21,7 +21,7 @@ import { SessionMessageTable } from "../sql.js"
import { SessionTitle } from "../title.js"
import { DrainResult, Service, type Interface } from "./index.js"
import { Snapshot } from "../../snapshot.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { llmClient } from "../../effect/app-node-platform.js"
import { StepFailedError } from "../error.js"
import { SessionRunnerRetry } from "./retry.js"
diff --git a/packages/core/src/session/runner/model.ts b/packages/core/src/session/runner/model.ts
index 2afc1af49e2..a6f6734d41b 100644
--- a/packages/core/src/session/runner/model.ts
+++ b/packages/core/src/session/runner/model.ts
@@ -1,9 +1,9 @@
export * as SessionRunnerModel from "./model.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { LanguageModel } from "@opencode-ai/ai"
-import { Model } from "@opencode-ai/schema/model"
-import { Provider } from "@opencode-ai/schema/provider"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { LanguageModel } from "@opencode/ai"
+import { Model } from "@opencode/schema/model"
+import { Provider } from "@opencode/schema/provider"
import { Context, Effect, Layer, Schema } from "effect"
import { ModelResolver } from "../../model-resolver.js"
import { SessionSchema } from "../schema.js"
diff --git a/packages/core/src/session/runner/publish-llm-event.ts b/packages/core/src/session/runner/publish-llm-event.ts
index eed6e5b8b55..729f70d8678 100644
--- a/packages/core/src/session/runner/publish-llm-event.ts
+++ b/packages/core/src/session/runner/publish-llm-event.ts
@@ -1,16 +1,16 @@
-import { type LLMEvent, type ProviderMetadata, type ToolResultValue } from "@opencode-ai/ai"
-import type { Agent } from "@opencode-ai/schema/agent"
-import type { Model } from "@opencode-ai/schema/model"
-import type { RelativePath } from "@opencode-ai/schema/schema"
-import type { Snapshot } from "@opencode-ai/schema/snapshot"
+import { type LLMEvent, type ProviderMetadata, type ToolResultValue } from "@opencode/ai"
+import type { Agent } from "@opencode/schema/agent"
+import type { Model } from "@opencode/schema/model"
+import type { RelativePath } from "@opencode/schema/schema"
+import type { Snapshot } from "@opencode/schema/snapshot"
import { Effect, Fiber, Iterable } from "effect"
import { isReadonlyArrayNonEmpty } from "effect/Array"
import { Bus } from "../../bus.js"
import { SessionEvent } from "../event.js"
import { SessionMessage } from "../message.js"
import { SessionSchema } from "../schema.js"
-import { SessionError } from "@opencode-ai/schema/session-error"
-import { Money } from "@opencode-ai/schema/money"
+import { SessionError } from "@opencode/schema/session-error"
+import { Money } from "@opencode/schema/money"
import { SessionUsage } from "../usage.js"
import type { Tool } from "../../tool.js"
diff --git a/packages/core/src/session/runner/retry.ts b/packages/core/src/session/runner/retry.ts
index f508c6981bd..a010a8e52f0 100644
--- a/packages/core/src/session/runner/retry.ts
+++ b/packages/core/src/session/runner/retry.ts
@@ -1,9 +1,9 @@
export * as SessionRunnerRetry from "./retry.js"
-import { AIError, isContextOverflowFailure } from "@opencode-ai/ai"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Model } from "@opencode-ai/schema/model"
-import { SessionError } from "@opencode-ai/schema/session-error"
+import { AIError, isContextOverflowFailure } from "@opencode/ai"
+import { Agent } from "@opencode/schema/agent"
+import { Model } from "@opencode/schema/model"
+import { SessionError } from "@opencode/schema/session-error"
import { Clock, Duration, Effect, Pull, Schedule } from "effect"
import { Bus } from "../../bus.js"
import type { PluginHooks } from "../../plugin/hooks.js"
diff --git a/packages/core/src/session/runner/step.ts b/packages/core/src/session/runner/step.ts
index e827c216b5e..919ea8676fa 100644
--- a/packages/core/src/session/runner/step.ts
+++ b/packages/core/src/session/runner/step.ts
@@ -8,10 +8,10 @@ import {
isContextOverflowFailure,
type ProviderErrorEvent,
type ToolCall,
-} from "@opencode-ai/ai"
-import type { Agent } from "@opencode-ai/schema/agent"
+} from "@opencode/ai"
+import type { Agent } from "@opencode/schema/agent"
import { Cause, Data, Effect, Exit, Fiber, Option, Stream } from "effect"
-import { SessionError } from "@opencode-ai/schema/session-error"
+import { SessionError } from "@opencode/schema/session-error"
import { Bus } from "../../bus.js"
import { Permission } from "../../permission.js"
import { Snapshot } from "../../snapshot.js"
diff --git a/packages/core/src/session/runner/to-llm-message.ts b/packages/core/src/session/runner/to-llm-message.ts
index 17fb423c5b4..37840abc0c0 100644
--- a/packages/core/src/session/runner/to-llm-message.ts
+++ b/packages/core/src/session/runner/to-llm-message.ts
@@ -1,10 +1,10 @@
-import { Message, ToolCallPart, ToolResultPart, type ContentPart, type ProviderMetadata } from "@opencode-ai/ai"
-import type { Model } from "@opencode-ai/schema/model"
+import { Message, ToolCallPart, ToolResultPart, type ContentPart, type ProviderMetadata } from "@opencode/ai"
+import type { Model } from "@opencode/schema/model"
import { Option, Schema } from "effect"
import { fileURLToPath } from "url"
import { SessionMessage } from "../message.js"
import { SessionProviderContext } from "../provider-context.js"
-import type { FileAttachment } from "@opencode-ai/schema/prompt"
+import type { FileAttachment } from "@opencode/schema/prompt"
const imageMimes = new Set(["image/png", "image/jpeg", "image/gif", "image/webp"])
@@ -299,7 +299,7 @@ ${message.recent}
}
}
-/** Translate projected Session history into canonical @opencode-ai/ai context. */
+/** Translate projected Session history into canonical @opencode/ai context. */
export const toLLMMessages = (
messages: readonly SessionMessage.Info[],
model: Model.Ref,
diff --git a/packages/core/src/session/schema.ts b/packages/core/src/session/schema.ts
index bba2b61e9ea..175ec9829d6 100644
--- a/packages/core/src/session/schema.ts
+++ b/packages/core/src/session/schema.ts
@@ -1,6 +1,6 @@
-export * as SessionSchema from "@opencode-ai/schema/session"
+export * as SessionSchema from "@opencode/schema/session"
-import { Session } from "@opencode-ai/schema/session"
+import { Session } from "@opencode/schema/session"
export const ID = Session.ID
export type ID = typeof ID.Type
diff --git a/packages/core/src/session/session.ts b/packages/core/src/session/session.ts
index b67366ce004..52023e41029 100644
--- a/packages/core/src/session/session.ts
+++ b/packages/core/src/session/session.ts
@@ -1,10 +1,10 @@
export * as Session from "./session.js"
import { DateTime, Effect, Fiber, Schema, Scope } from "effect"
-import type { Agent } from "@opencode-ai/schema/agent"
-import type { Model } from "@opencode-ai/schema/model"
-import { Event } from "@opencode-ai/schema/event"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import type { Agent } from "@opencode/schema/agent"
+import type { Model } from "@opencode/schema/model"
+import { Event } from "@opencode/schema/event"
+import { FSUtil } from "@opencode/util/fs-util"
import { Bus } from "../bus.js"
import { Database } from "../database/database.js"
import { Instance } from "../instance/service.js"
diff --git a/packages/core/src/session/shell.ts b/packages/core/src/session/shell.ts
index 7ed73d9035d..b4e2a1a7d3d 100644
--- a/packages/core/src/session/shell.ts
+++ b/packages/core/src/session/shell.ts
@@ -1,6 +1,6 @@
export * as SessionShell from "./shell.js"
-import type { Session } from "@opencode-ai/schema/session"
+import type { Session } from "@opencode/schema/session"
import { Effect } from "effect"
import { Instance } from "../instance/service.js"
import { Plugin } from "../plugin/service.js"
diff --git a/packages/core/src/session/skill.ts b/packages/core/src/session/skill.ts
index 0300e51e5f7..69d200c1d58 100644
--- a/packages/core/src/session/skill.ts
+++ b/packages/core/src/session/skill.ts
@@ -1,6 +1,6 @@
export * as SessionSkill from "./skill.js"
-import type { Session } from "@opencode-ai/schema/session"
+import type { Session } from "@opencode/schema/session"
import { Effect } from "effect"
import { Instance } from "../instance/service.js"
import { Plugin } from "../plugin/service.js"
diff --git a/packages/core/src/session/sql.ts b/packages/core/src/session/sql.ts
index facad140a46..59d3a7231da 100644
--- a/packages/core/src/session/sql.ts
+++ b/packages/core/src/session/sql.ts
@@ -4,16 +4,16 @@ import { directoryColumn, pathColumn } from "../database/path.js"
import { ProjectTable } from "../project/sql.js"
import type { SessionMessage } from "./message.js"
import type { SessionInbox } from "./inbox.js"
-import type { FileDiff } from "@opencode-ai/schema/file-diff"
-import type { PermissionV1 } from "@opencode-ai/schema/permission-v1"
-import type { Project } from "@opencode-ai/schema/project"
+import type { FileDiff } from "@opencode/schema/file-diff"
+import type { PermissionV1 } from "@opencode/schema/permission-v1"
+import type { Project } from "@opencode/schema/project"
import type { SessionSchema } from "./schema.js"
-import type { Workspace } from "@opencode-ai/schema/workspace"
+import type { Workspace } from "@opencode/schema/workspace"
import { Timestamps } from "../database/schema.sql.js"
-import type { Instruction } from "@opencode-ai/schema/instruction"
-import type { Session } from "@opencode-ai/schema/session"
-import type { CompactionPayload, MovePayload, SyntheticPayload, UserPayload } from "@opencode-ai/schema/session-inbox"
-import type { RevertV1 } from "@opencode-ai/schema/session-revert"
+import type { Instruction } from "@opencode/schema/instruction"
+import type { Session } from "@opencode/schema/session"
+import type { CompactionPayload, MovePayload, SyntheticPayload, UserPayload } from "@opencode/schema/session-inbox"
+import type { RevertV1 } from "@opencode/schema/session-revert"
import type { Schema } from "effect"
type DistributiveOmit = T extends unknown ? Omit : never
diff --git a/packages/core/src/session/stats.ts b/packages/core/src/session/stats.ts
index 0704d97bf6d..952c6e9f50d 100644
--- a/packages/core/src/session/stats.ts
+++ b/packages/core/src/session/stats.ts
@@ -2,13 +2,13 @@ export * as SessionStats from "./stats.js"
import { DateTime, Effect, Option, Schema } from "effect"
import { and, eq, gte, inArray, lt, sql } from "drizzle-orm"
-import { Model } from "@opencode-ai/schema/model"
-import { Money } from "@opencode-ai/schema/money"
-import { Project } from "@opencode-ai/schema/project"
-import { Provider } from "@opencode-ai/schema/provider"
-import { SessionEvent } from "@opencode-ai/schema/session-event"
-import { ToolMode } from "@opencode-ai/schema/session-stats"
-import { TokenUsage } from "@opencode-ai/schema/token-usage"
+import { Model } from "@opencode/schema/model"
+import { Money } from "@opencode/schema/money"
+import { Project } from "@opencode/schema/project"
+import { Provider } from "@opencode/schema/provider"
+import { SessionEvent } from "@opencode/schema/session-event"
+import { ToolMode } from "@opencode/schema/session-stats"
+import { TokenUsage } from "@opencode/schema/token-usage"
import { Database } from "../database/database.js"
import { EventTable } from "../event/sql.js"
import { SessionMessageTable, SessionTable } from "./sql.js"
diff --git a/packages/core/src/session/store.ts b/packages/core/src/session/store.ts
index 427d62601ba..c01abb3e2e2 100644
--- a/packages/core/src/session/store.ts
+++ b/packages/core/src/session/store.ts
@@ -2,15 +2,15 @@ export * as SessionStore from "./store.js"
import { and, asc, desc, eq, gt, isNotNull, isNull, like, lt, notInArray, or, sql, type SQL } from "drizzle-orm"
import { Context, Effect, Layer, Schema } from "effect"
-import { Project } from "@opencode-ai/schema/project"
-import { Workspace } from "@opencode-ai/schema/workspace"
-import { AbsolutePath, PositiveInt, RelativePath } from "@opencode-ai/schema/schema"
+import { Project } from "@opencode/schema/project"
+import { Workspace } from "@opencode/schema/workspace"
+import { AbsolutePath, PositiveInt, RelativePath } from "@opencode/schema/schema"
import { Database } from "../database/database.js"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { SessionHistory } from "./history.js"
import { MessageDecodeError } from "./error.js"
import { SessionMessage } from "./message.js"
-import { Session } from "@opencode-ai/schema/session"
+import { Session } from "@opencode/schema/session"
import { SessionMessageTable, SessionTable } from "./sql.js"
import { fromRow } from "./info.js"
diff --git a/packages/core/src/session/title.ts b/packages/core/src/session/title.ts
index 7fbbfdcf1ab..83066d1e790 100644
--- a/packages/core/src/session/title.ts
+++ b/packages/core/src/session/title.ts
@@ -1,13 +1,13 @@
export * as SessionTitle from "./title.js"
import { isDeepStrictEqual } from "node:util"
-import { LLMClient, LLMEvent, Message, SystemPart } from "@opencode-ai/ai"
-import type { Agent } from "@opencode-ai/schema/agent"
+import { LLMClient, LLMEvent, Message, SystemPart } from "@opencode/ai"
+import type { Agent } from "@opencode/schema/agent"
import { Context, DateTime, Effect, Layer, Stream } from "effect"
import { Database } from "../database/database.js"
import { Bus } from "../bus.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { isExactRootFallback } from "@opencode-ai/util/session-title-fallback"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { isExactRootFallback } from "@opencode/util/session-title-fallback"
import { llmClient } from "../effect/app-node-platform.js"
import { SessionContext } from "./context.js"
import { SessionEvent } from "./event.js"
diff --git a/packages/core/src/session/to-session-error.ts b/packages/core/src/session/to-session-error.ts
index bcbc9626e01..e9306f9491d 100644
--- a/packages/core/src/session/to-session-error.ts
+++ b/packages/core/src/session/to-session-error.ts
@@ -1,6 +1,6 @@
-import { AIError, ToolFailure } from "@opencode-ai/ai"
-import { Tool } from "@opencode-ai/schema/tool"
-import { SessionError } from "@opencode-ai/schema/session-error"
+import { AIError, ToolFailure } from "@opencode/ai"
+import { Tool } from "@opencode/schema/tool"
+import { SessionError } from "@opencode/schema/session-error"
import { Permission } from "../permission.js"
import { Integration } from "../integration.js"
import { AgentNotFoundError, StepFailedError, UserInterruptedError } from "./error.js"
diff --git a/packages/core/src/session/transfer.ts b/packages/core/src/session/transfer.ts
index 6484602cb93..9f018c66b12 100644
--- a/packages/core/src/session/transfer.ts
+++ b/packages/core/src/session/transfer.ts
@@ -1,13 +1,13 @@
export * as SessionTransfer from "./transfer.js"
-import { SessionTransfer } from "@opencode-ai/schema/session-transfer"
-import { Tool } from "@opencode-ai/schema/tool"
-import { Skill } from "@opencode-ai/schema/skill"
+import { SessionTransfer } from "@opencode/schema/session-transfer"
+import { Tool } from "@opencode/schema/tool"
+import { Skill } from "@opencode/schema/skill"
import { eq } from "drizzle-orm"
import { Clock, Context, DateTime, Effect, Layer, Schema } from "effect"
import { map } from "effect/Array"
import path from "path"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { App } from "../app.js"
import { Bus } from "../bus.js"
import { Database } from "../database/database.js"
diff --git a/packages/core/src/session/usage.ts b/packages/core/src/session/usage.ts
index 569da6df93f..5a6f39a2cc6 100644
--- a/packages/core/src/session/usage.ts
+++ b/packages/core/src/session/usage.ts
@@ -1,9 +1,9 @@
export * as SessionUsage from "./usage.js"
-import type { Usage } from "@opencode-ai/ai"
-import { Money } from "@opencode-ai/schema/money"
-import type { TokenUsage } from "@opencode-ai/schema/token-usage"
-import type { Model } from "@opencode-ai/schema/model"
+import type { Usage } from "@opencode/ai"
+import { Money } from "@opencode/schema/money"
+import type { TokenUsage } from "@opencode/schema/token-usage"
+import type { Model } from "@opencode/schema/model"
const finite = (value: number) => (Number.isFinite(value) ? value : 0)
const safe = (value: number | undefined) => Math.max(0, finite(value ?? 0))
diff --git a/packages/core/src/shell.ts b/packages/core/src/shell.ts
index bf147ab41a3..6f1d0363515 100644
--- a/packages/core/src/shell.ts
+++ b/packages/core/src/shell.ts
@@ -4,17 +4,17 @@ import path from "path"
import { Context, Deferred, Duration, Effect, Fiber, Latch, Layer, Schema, Schedule, Stream } from "effect"
import { ChildProcess } from "effect/unstable/process"
import { produce } from "immer"
-import { Shell } from "@opencode-ai/schema/shell"
-import { AppProcess } from "@opencode-ai/util/process"
-import { makeGlobalNode, makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { Shell } from "@opencode/schema/shell"
+import { AppProcess } from "@opencode/util/process"
+import { makeGlobalNode, makeLocationNode } from "@opencode/util/effect/app-node"
+import { FSUtil } from "@opencode/util/fs-util"
import { Bus } from "./bus.js"
import { Environment } from "./environment/index.js"
import { FileRetention } from "./file-retention.js"
import { Location } from "./location.js"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { ShellSelect } from "./shell/select.js"
-import type { ShellCreateBefore } from "@opencode-ai/plugin/effect/shell"
+import type { ShellCreateBefore } from "@opencode/plugin/effect/shell"
import { PluginHooks } from "./plugin/hooks.js"
import { SessionEnvironment } from "./session/environment.js"
import { SessionSchema } from "./session/schema.js"
diff --git a/packages/core/src/shell/result.ts b/packages/core/src/shell/result.ts
index 4c377e779b7..8860486d9fa 100644
--- a/packages/core/src/shell/result.ts
+++ b/packages/core/src/shell/result.ts
@@ -1,6 +1,6 @@
export * as ShellResult from "./result.js"
-import type { Shell } from "@opencode-ai/schema/shell"
+import type { Shell } from "@opencode/schema/shell"
export type Result = {
info: Shell.Info
diff --git a/packages/core/src/shell/select.ts b/packages/core/src/shell/select.ts
index 44445fd7783..5d0cfb022a1 100644
--- a/packages/core/src/shell/select.ts
+++ b/packages/core/src/shell/select.ts
@@ -4,9 +4,9 @@ import path from "path"
import { readFile } from "fs/promises"
import { statSync } from "fs"
import { Context, Effect, Layer, Schema } from "effect"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
import { State } from "../state.js"
import { which } from "../util/which.js"
diff --git a/packages/core/src/skill.ts b/packages/core/src/skill.ts
index ed56dbe5d8e..c6a08eb88f1 100644
--- a/packages/core/src/skill.ts
+++ b/packages/core/src/skill.ts
@@ -1,11 +1,11 @@
export * as Skill from "./skill.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import type { FSUtil } from "@opencode-ai/util/fs-util"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import type { FSUtil } from "@opencode/util/fs-util"
import path from "path"
import { Context, Effect, Layer, Types } from "effect"
-import type { Agent } from "@opencode-ai/schema/agent"
-import { Skill } from "@opencode-ai/schema/skill"
+import type { Agent } from "@opencode/schema/agent"
+import { Skill } from "@opencode/schema/skill"
import { Bus } from "./bus.js"
import { Permission } from "./permission.js"
import { State } from "./state.js"
@@ -29,7 +29,7 @@ export type ID = Skill.ID
export const Name = Skill.Name
export type Name = Skill.Name
-export { Event } from "@opencode-ai/schema/skill"
+export { Event } from "@opencode/schema/skill"
export const available = (skills: ReadonlyArray, agent: Agent.Info) =>
skills.filter((skill) => Permission.evaluate("skill", skill.id, agent.permissions).effect !== "deny")
diff --git a/packages/core/src/skill/discovery.ts b/packages/core/src/skill/discovery.ts
index 783d4c23602..f3173184cec 100644
--- a/packages/core/src/skill/discovery.ts
+++ b/packages/core/src/skill/discovery.ts
@@ -3,12 +3,12 @@ export * as SkillDiscovery from "./discovery.js"
import path from "path"
import { Context, Effect, Layer, Schedule, Schema } from "effect"
import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { httpClient } from "@opencode-ai/util/effect/app-node-platform"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { httpClient } from "@opencode/util/effect/app-node-platform"
import { AbsolutePath } from "../schema.js"
-import { Hash } from "@opencode-ai/util/hash"
+import { Hash } from "@opencode/util/hash"
const skillConcurrency = 4
const fileConcurrency = 8
diff --git a/packages/core/src/skill/instructions.ts b/packages/core/src/skill/instructions.ts
index 1d23cdc693a..2cac66a4454 100644
--- a/packages/core/src/skill/instructions.ts
+++ b/packages/core/src/skill/instructions.ts
@@ -1,6 +1,6 @@
export * as SkillInstructions from "./instructions.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, Effect, Layer, Schema } from "effect"
import { Agent } from "../agent.js"
import { Skill } from "../skill.js"
diff --git a/packages/core/src/snapshot.ts b/packages/core/src/snapshot.ts
index 25e79d29e09..0e0a4f42fa4 100644
--- a/packages/core/src/snapshot.ts
+++ b/packages/core/src/snapshot.ts
@@ -1,16 +1,16 @@
export * as Snapshot from "./snapshot.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import path from "path"
import { Context, Effect, Fiber, Layer, Schema, Scope } from "effect"
import { File } from "./file.js"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { Git } from "./git.js"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Location } from "./location.js"
import { AbsolutePath, RelativePath } from "./schema.js"
-import { ID } from "@opencode-ai/schema/snapshot"
-import { Hash } from "@opencode-ai/util/hash"
+import { ID } from "@opencode/schema/snapshot"
+import { Hash } from "@opencode/util/hash"
import { State } from "./state.js"
export { ID }
diff --git a/packages/core/src/tool-output.ts b/packages/core/src/tool-output.ts
index 53738be14be..68f5c1595b6 100644
--- a/packages/core/src/tool-output.ts
+++ b/packages/core/src/tool-output.ts
@@ -3,9 +3,9 @@ export * as ToolOutput from "./tool-output.js"
import path from "path"
import type { Tool } from "./tool.js"
import { Context, Duration, Effect, Layer, Schedule } from "effect"
-import { makeGlobalNode, makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
+import { makeGlobalNode, makeLocationNode } from "@opencode/util/effect/app-node"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
import { FileRetention } from "./file-retention.js"
import { Identifier } from "./id/id.js"
import { State } from "./state.js"
diff --git a/packages/core/src/tool.ts b/packages/core/src/tool.ts
index cc66732df8a..23f1959fbcf 100644
--- a/packages/core/src/tool.ts
+++ b/packages/core/src/tool.ts
@@ -1,11 +1,11 @@
export * as Tool from "./tool.js"
-export { CallID, Content, Error, FileContent, TextContent } from "@opencode-ai/schema/tool"
-export type { Context, Metadata, Namespace, Options, Result } from "@opencode-ai/schema/tool"
+export { CallID, Content, Error, FileContent, TextContent } from "@opencode/schema/tool"
+export type { Context, Metadata, Namespace, Options, Result } from "@opencode/schema/tool"
-import { ToolDefinition, type ToolCall } from "@opencode-ai/ai"
-import { Tool } from "@opencode-ai/schema/tool"
+import { ToolDefinition, type ToolCall } from "@opencode/ai"
+import { Tool } from "@opencode/schema/tool"
import { Context, Effect, Layer, Result, Schema, SchemaIssue, Types } from "effect"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import type { Agent } from "./agent.js"
import { CodeModeCatalog } from "./codemode/catalog.js"
import { CodeModeTool } from "./codemode/tool.js"
diff --git a/packages/core/src/tool/mcp.ts b/packages/core/src/tool/mcp.ts
index 8bc5ec14e6b..810cac466d9 100644
--- a/packages/core/src/tool/mcp.ts
+++ b/packages/core/src/tool/mcp.ts
@@ -1,9 +1,9 @@
export * as McpTool from "./mcp.js"
-import { ToolFailure } from "@opencode-ai/ai"
-import { McpEvent } from "@opencode-ai/schema/mcp-event"
+import { ToolFailure } from "@opencode/ai"
+import { McpEvent } from "@opencode/schema/mcp-event"
import { Context, Effect, Fiber, type JsonSchema, Layer, PubSub, Semaphore, Stream } from "effect"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Bus } from "../bus.js"
import { Mcp } from "../mcp/index.js"
diff --git a/packages/core/src/tool/plugin/edit.ts b/packages/core/src/tool/plugin/edit.ts
index d5033c76969..b736c45beb3 100644
--- a/packages/core/src/tool/plugin/edit.ts
+++ b/packages/core/src/tool/plugin/edit.ts
@@ -6,10 +6,10 @@
*/
export * as EditTool from "./edit.js"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
-import { ToolFailure } from "@opencode-ai/ai"
-import { FileDiff } from "@opencode-ai/schema/file-diff"
-import { Bom } from "@opencode-ai/util/bom"
+import type { Context } from "@opencode/plugin/effect/plugin"
+import { ToolFailure } from "@opencode/ai"
+import { FileDiff } from "@opencode/schema/file-diff"
+import { Bom } from "@opencode/util/bom"
import { Effect, Schema } from "effect"
import { Environment } from "../../environment/index.js"
import { FileMutation } from "../../file-mutation.js"
diff --git a/packages/core/src/tool/plugin/file-diff.ts b/packages/core/src/tool/plugin/file-diff.ts
index 250390c0f4a..b40f11c967f 100644
--- a/packages/core/src/tool/plugin/file-diff.ts
+++ b/packages/core/src/tool/plugin/file-diff.ts
@@ -1,4 +1,4 @@
-import { FileDiff } from "@opencode-ai/schema/file-diff"
+import { FileDiff } from "@opencode/schema/file-diff"
import { createTwoFilesPatch, diffLines } from "diff"
export function fileDiff(
diff --git a/packages/core/src/tool/plugin/glob.ts b/packages/core/src/tool/plugin/glob.ts
index 6847e106e09..ebe9af112cd 100644
--- a/packages/core/src/tool/plugin/glob.ts
+++ b/packages/core/src/tool/plugin/glob.ts
@@ -1,7 +1,7 @@
export * as GlobTool from "./glob.js"
-import { ToolFailure } from "@opencode-ai/ai"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
+import { ToolFailure } from "@opencode/ai"
+import type { Context } from "@opencode/plugin/effect/plugin"
import { Effect, Schema } from "effect"
import path from "path"
import { Environment } from "../../environment/index.js"
diff --git a/packages/core/src/tool/plugin/grep.ts b/packages/core/src/tool/plugin/grep.ts
index 0f1b321da0b..e13466a37e1 100644
--- a/packages/core/src/tool/plugin/grep.ts
+++ b/packages/core/src/tool/plugin/grep.ts
@@ -1,7 +1,7 @@
export * as GrepTool from "./grep.js"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
-import { ToolFailure } from "@opencode-ai/ai"
+import type { Context } from "@opencode/plugin/effect/plugin"
+import { ToolFailure } from "@opencode/ai"
import { Effect, Schema } from "effect"
import path from "path"
import { Environment } from "../../environment/index.js"
diff --git a/packages/core/src/tool/plugin/opencode.ts b/packages/core/src/tool/plugin/opencode.ts
index d43e6c087dd..352a54e3a55 100644
--- a/packages/core/src/tool/plugin/opencode.ts
+++ b/packages/core/src/tool/plugin/opencode.ts
@@ -1,9 +1,9 @@
export * as OpenCodeTools from "./opencode.js"
-import { SystemPart, ToolFailure } from "@opencode-ai/ai"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
-import { AbsolutePath } from "@opencode-ai/schema/schema"
-import { Session } from "@opencode-ai/schema/session"
+import { SystemPart, ToolFailure } from "@opencode/ai"
+import type { Context } from "@opencode/plugin/effect/plugin"
+import { AbsolutePath } from "@opencode/schema/schema"
+import { Session } from "@opencode/schema/session"
import { Effect, Schema } from "effect"
export const RenameInput = Schema.Struct({
diff --git a/packages/core/src/tool/plugin/patch.ts b/packages/core/src/tool/plugin/patch.ts
index 1a3e73dce83..98fca2f7f41 100644
--- a/packages/core/src/tool/plugin/patch.ts
+++ b/packages/core/src/tool/plugin/patch.ts
@@ -1,16 +1,16 @@
export * as PatchTool from "./patch.js"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
-import { ToolFailure } from "@opencode-ai/ai"
-import { FileDiff } from "@opencode-ai/schema/file-diff"
+import type { Context } from "@opencode/plugin/effect/plugin"
+import { ToolFailure } from "@opencode/ai"
+import { FileDiff } from "@opencode/schema/file-diff"
import { Effect, Result, Schema } from "effect"
-import { Bom } from "@opencode-ai/util/bom"
+import { Bom } from "@opencode/util/bom"
import { Environment } from "../../environment/index.js"
import { Formatter } from "../../formatter.js"
import { FileMutation } from "../../file-mutation.js"
import { Location } from "../../location.js"
import { FileAccess } from "../../file-access.js"
-import { Patch } from "@opencode-ai/util/patch"
+import { Patch } from "@opencode/util/patch"
import { Permission } from "../../permission.js"
import DESCRIPTION from "../patch.txt"
import { fileDiff } from "./file-diff.js"
diff --git a/packages/core/src/tool/plugin/question.ts b/packages/core/src/tool/plugin/question.ts
index 21bd40b4d77..29eaa874a3e 100644
--- a/packages/core/src/tool/plugin/question.ts
+++ b/packages/core/src/tool/plugin/question.ts
@@ -1,11 +1,11 @@
export * as QuestionTool from "./question.js"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
-import { ToolFailure } from "@opencode-ai/ai"
+import type { Context } from "@opencode/plugin/effect/plugin"
+import { ToolFailure } from "@opencode/ai"
import { Effect, Schema } from "effect"
import { Form } from "../../form.js"
import { Permission } from "../../permission.js"
-import { Question } from "@opencode-ai/schema/question"
+import { Question } from "@opencode/schema/question"
export const name = "question"
diff --git a/packages/core/src/tool/plugin/read.ts b/packages/core/src/tool/plugin/read.ts
index e3b34a0244b..4618ddcbacb 100644
--- a/packages/core/src/tool/plugin/read.ts
+++ b/packages/core/src/tool/plugin/read.ts
@@ -1,10 +1,10 @@
export * as ReadTool from "./read.js"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
+import type { Context } from "@opencode/plugin/effect/plugin"
import { basename, dirname, join } from "path"
-import { ToolFailure } from "@opencode-ai/ai"
+import { ToolFailure } from "@opencode/ai"
import { Effect, Schema } from "effect"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { Location } from "../../location.js"
import { FileAccess } from "../../file-access.js"
import { SessionInstructions } from "../../session/instructions.js"
diff --git a/packages/core/src/tool/plugin/shell.ts b/packages/core/src/tool/plugin/shell.ts
index b286df95a24..c3cd52c20e9 100644
--- a/packages/core/src/tool/plugin/shell.ts
+++ b/packages/core/src/tool/plugin/shell.ts
@@ -1,9 +1,9 @@
export * as ShellTool from "./shell.js"
-import { ToolFailure } from "@opencode-ai/ai"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
-import type { ShellCreateBefore } from "@opencode-ai/plugin/effect/shell"
-import type { Tool } from "@opencode-ai/schema/tool"
+import { ToolFailure } from "@opencode/ai"
+import type { Context } from "@opencode/plugin/effect/plugin"
+import type { ShellCreateBefore } from "@opencode/plugin/effect/shell"
+import type { Tool } from "@opencode/schema/tool"
import { Deferred, Effect, Schema, Scope } from "effect"
import { Config } from "../../config.js"
import { Environment } from "../../environment/index.js"
diff --git a/packages/core/src/tool/plugin/skill.ts b/packages/core/src/tool/plugin/skill.ts
index 1ed68adaf8a..225ed7c06d0 100644
--- a/packages/core/src/tool/plugin/skill.ts
+++ b/packages/core/src/tool/plugin/skill.ts
@@ -1,9 +1,9 @@
export * as SkillTool from "./skill.js"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
-import { ToolFailure } from "@opencode-ai/ai"
+import type { Context } from "@opencode/plugin/effect/plugin"
+import { ToolFailure } from "@opencode/ai"
import { Effect, Schema } from "effect"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { Skill } from "../../skill.js"
import { Permission } from "../../permission.js"
diff --git a/packages/core/src/tool/plugin/subagent.ts b/packages/core/src/tool/plugin/subagent.ts
index c12eaeccbe3..2ccb2827c56 100644
--- a/packages/core/src/tool/plugin/subagent.ts
+++ b/packages/core/src/tool/plugin/subagent.ts
@@ -1,7 +1,7 @@
export * as SubagentTool from "./subagent.js"
-import { ToolFailure } from "@opencode-ai/ai"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
+import { ToolFailure } from "@opencode/ai"
+import type { Context } from "@opencode/plugin/effect/plugin"
import { Effect, Schema } from "effect"
import { Agent } from "../../agent.js"
import { Config } from "../../config.js"
diff --git a/packages/core/src/tool/plugin/webfetch.ts b/packages/core/src/tool/plugin/webfetch.ts
index 415b69aa388..ec445e469b5 100644
--- a/packages/core/src/tool/plugin/webfetch.ts
+++ b/packages/core/src/tool/plugin/webfetch.ts
@@ -1,7 +1,7 @@
export * as WebFetchTool from "./webfetch.js"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
-import { ToolFailure } from "@opencode-ai/ai"
+import type { Context } from "@opencode/plugin/effect/plugin"
+import { ToolFailure } from "@opencode/ai"
import { Duration, Effect, Schema } from "effect"
import { HttpClient, type HttpClientError, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
import { Parser } from "htmlparser2"
diff --git a/packages/core/src/tool/plugin/websearch.ts b/packages/core/src/tool/plugin/websearch.ts
index ae27ab1957f..a8cb48455a6 100644
--- a/packages/core/src/tool/plugin/websearch.ts
+++ b/packages/core/src/tool/plugin/websearch.ts
@@ -1,7 +1,7 @@
export * as WebSearchTool from "./websearch.js"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
-import { ToolFailure } from "@opencode-ai/ai"
+import type { Context } from "@opencode/plugin/effect/plugin"
+import { ToolFailure } from "@opencode/ai"
import { Effect, Schema, Semaphore } from "effect"
import { HttpClientError } from "effect/unstable/http"
import { Form } from "../../form.js"
diff --git a/packages/core/src/tool/plugin/write.ts b/packages/core/src/tool/plugin/write.ts
index 62ab149ac0b..17996009036 100644
--- a/packages/core/src/tool/plugin/write.ts
+++ b/packages/core/src/tool/plugin/write.ts
@@ -6,10 +6,10 @@
*/
export * as WriteTool from "./write.js"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
-import { ToolFailure } from "@opencode-ai/ai"
+import type { Context } from "@opencode/plugin/effect/plugin"
+import { ToolFailure } from "@opencode/ai"
import { Effect, Schema } from "effect"
-import { Bom } from "@opencode-ai/util/bom"
+import { Bom } from "@opencode/util/bom"
import { Environment } from "../../environment/index.js"
import { FileMutation } from "../../file-mutation.js"
import { Formatter } from "../../formatter.js"
diff --git a/packages/core/src/tool/read-filesystem.ts b/packages/core/src/tool/read-filesystem.ts
index 2198e688a7c..abafaea32b9 100644
--- a/packages/core/src/tool/read-filesystem.ts
+++ b/packages/core/src/tool/read-filesystem.ts
@@ -2,7 +2,7 @@ export * as ReadToolFileSystem from "./read-filesystem.js"
import path from "path"
import { pathToFileURL } from "url"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Context, Effect, Layer, Schema } from "effect"
import { lookup } from "mime-types"
import { Environment } from "../environment/index.js"
diff --git a/packages/core/src/tool/runtime.ts b/packages/core/src/tool/runtime.ts
index b08f231e6b5..f21c67a533e 100644
--- a/packages/core/src/tool/runtime.ts
+++ b/packages/core/src/tool/runtime.ts
@@ -1,5 +1,5 @@
-import type { ToolDefinition } from "@opencode-ai/ai"
-import { Tool } from "@opencode-ai/schema/tool"
+import type { ToolDefinition } from "@opencode/ai"
+import { Tool } from "@opencode/schema/tool"
import type { StandardJSONSchemaV1, StandardSchemaV1 } from "@standard-schema/spec"
import { Cache, Effect, JsonSchema, Schema, SchemaIssue, SchemaRepresentation } from "effect"
import { $ZodType, toJSONSchema } from "zod/v4/core"
diff --git a/packages/core/src/util/identifier.ts b/packages/core/src/util/identifier.ts
index 442fbb39833..dfaa0443b39 100644
--- a/packages/core/src/util/identifier.ts
+++ b/packages/core/src/util/identifier.ts
@@ -1 +1 @@
-export * as Identifier from "@opencode-ai/schema/identifier"
+export * as Identifier from "@opencode/schema/identifier"
diff --git a/packages/core/src/util/process-lock.ts b/packages/core/src/util/process-lock.ts
index 28856618e2b..7c9a05e8856 100644
--- a/packages/core/src/util/process-lock.ts
+++ b/packages/core/src/util/process-lock.ts
@@ -3,7 +3,7 @@ import { closeSync, mkdirSync, openSync } from "node:fs"
import { connect, createServer, type Server, type Socket } from "node:net"
import path from "node:path"
import { Effect, Schema } from "effect"
-import { Hash } from "@opencode-ai/util/hash"
+import { Hash } from "@opencode/util/hash"
export namespace ProcessLock {
export class HeldError extends Schema.TaggedError()("ProcessLockHeldError", {
diff --git a/packages/core/src/v1/config/config.ts b/packages/core/src/v1/config/config.ts
index 1e9e59d6405..ff77cc8d38b 100644
--- a/packages/core/src/v1/config/config.ts
+++ b/packages/core/src/v1/config/config.ts
@@ -1,7 +1,7 @@
export * as ConfigV1 from "./config.js"
import { Schema } from "effect"
-import { ConfigReference } from "@opencode-ai/schema/config/reference"
+import { ConfigReference } from "@opencode/schema/config/reference"
import { NonNegativeInt, PositiveInt, type DeepMutable } from "../../schema.js"
import { ConfigAgentV1 } from "./agent.js"
import { ConfigAttachmentV1 } from "./attachment.js"
diff --git a/packages/core/src/v1/config/migrate.ts b/packages/core/src/v1/config/migrate.ts
index 271689ce412..ccc70d87820 100644
--- a/packages/core/src/v1/config/migrate.ts
+++ b/packages/core/src/v1/config/migrate.ts
@@ -1,7 +1,7 @@
export * as ConfigMigrateV1 from "./migrate.js"
-import { Info } from "@opencode-ai/schema/config"
-import { ConfigAgent } from "@opencode-ai/schema/config/agent"
+import { Info } from "@opencode/schema/config"
+import { ConfigAgent } from "@opencode/schema/config/agent"
import { Schema } from "effect"
import { ConfigV1 } from "./config.js"
import { ConfigAgentV1 } from "./agent.js"
diff --git a/packages/core/src/v1/permission.ts b/packages/core/src/v1/permission.ts
index 0e8ea590a9e..4eb16b24713 100644
--- a/packages/core/src/v1/permission.ts
+++ b/packages/core/src/v1/permission.ts
@@ -1,8 +1,8 @@
export * as PermissionV1 from "./permission.js"
import { Schema } from "effect"
-export * from "@opencode-ai/schema/permission-v1"
-import { ID } from "@opencode-ai/schema/permission-v1"
+export * from "@opencode/schema/permission-v1"
+import { ID } from "@opencode/schema/permission-v1"
export class RejectedError extends Schema.TaggedError()("PermissionRejectedError", {}) {
override get message() {
diff --git a/packages/core/src/vcs.ts b/packages/core/src/vcs.ts
index 389b5b8ec27..1bbe9196def 100644
--- a/packages/core/src/vcs.ts
+++ b/packages/core/src/vcs.ts
@@ -2,13 +2,13 @@ export * as Vcs from "./vcs.js"
import path from "path"
import { Cause, Context, Effect, FiberSet, Layer, Schema, Semaphore, Stream } from "effect"
-import type { VcsDefinition, VcsEditor } from "@opencode-ai/plugin/effect/vcs"
-import { FileDiff } from "@opencode-ai/schema/file-diff"
-import { FileSystem } from "@opencode-ai/schema/filesystem"
-import { Base, BranchList, FileStatus, Info, Mode } from "@opencode-ai/schema/vcs"
-import { VcsEvent } from "@opencode-ai/schema/vcs-event"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import type { VcsDefinition, VcsEditor } from "@opencode/plugin/effect/vcs"
+import { FileDiff } from "@opencode/schema/file-diff"
+import { FileSystem } from "@opencode/schema/filesystem"
+import { Base, BranchList, FileStatus, Info, Mode } from "@opencode/schema/vcs"
+import { VcsEvent } from "@opencode/schema/vcs-event"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { FSUtil } from "@opencode/util/fs-util"
import { Location } from "./location.js"
import { Bus } from "./bus.js"
import { State } from "./state.js"
diff --git a/packages/core/src/websearch.ts b/packages/core/src/websearch.ts
index ea0e1b90776..7ec63bb7b97 100644
--- a/packages/core/src/websearch.ts
+++ b/packages/core/src/websearch.ts
@@ -1,11 +1,11 @@
export * as WebSearch from "./websearch.js"
-import { WebSearch } from "@opencode-ai/schema/websearch"
-import type { Session } from "@opencode-ai/schema/session"
-import { SessionEvent } from "@opencode-ai/schema/session-event"
+import { WebSearch } from "@opencode/schema/websearch"
+import type { Session } from "@opencode/schema/session"
+import { SessionEvent } from "@opencode/schema/session-event"
import { Clock, Context, Effect, Layer, Option, Schema, Stream } from "effect"
import { HttpClientError } from "effect/unstable/http"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Bus } from "./bus.js"
import { KV } from "./kv.js"
import { State } from "./state.js"
@@ -16,7 +16,7 @@ export type ID = WebSearch.ID
export const Provider = WebSearch.Provider
export type Provider = WebSearch.Provider
-export { Event } from "@opencode-ai/schema/websearch"
+export { Event } from "@opencode/schema/websearch"
export const Input = WebSearch.Input
export type Input = WebSearch.Input
diff --git a/packages/core/src/wellknown.ts b/packages/core/src/wellknown.ts
index 1160a8edd45..206e42071fb 100644
--- a/packages/core/src/wellknown.ts
+++ b/packages/core/src/wellknown.ts
@@ -1,11 +1,11 @@
export * as WellKnown from "./wellknown.js"
-import { Integration } from "@opencode-ai/schema/integration"
+import { Integration } from "@opencode/schema/integration"
import { Context, Effect, Layer, Ref, Schema, Semaphore } from "effect"
import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
import { isDeepStrictEqual } from "node:util"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { httpClient } from "@opencode-ai/util/effect/app-node-platform"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { httpClient } from "@opencode/util/effect/app-node-platform"
import { Bus } from "./bus.js"
import { KV } from "./kv.js"
diff --git a/packages/core/src/wellknown/plugin.ts b/packages/core/src/wellknown/plugin.ts
index 4a1da602c08..23b2e4052e7 100644
--- a/packages/core/src/wellknown/plugin.ts
+++ b/packages/core/src/wellknown/plugin.ts
@@ -1,6 +1,6 @@
export * as WellKnownPlugin from "./plugin.js"
-import { define } from "@opencode-ai/plugin/effect/plugin"
+import { define } from "@opencode/plugin/effect/plugin"
import { Effect, Stream } from "effect"
import { Bus } from "../bus.js"
import { WellKnown } from "../wellknown.js"
diff --git a/packages/core/src/workspace.ts b/packages/core/src/workspace.ts
index 43347228325..a71b84bfba7 100644
--- a/packages/core/src/workspace.ts
+++ b/packages/core/src/workspace.ts
@@ -1,7 +1,7 @@
export * as Workspace from "./workspace.js"
-import { Workspace } from "@opencode-ai/schema/workspace"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { Workspace } from "@opencode/schema/workspace"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { eq } from "drizzle-orm"
import { Clock, Context, Deferred, Duration, Effect, Exit, FiberSet, Layer, Ref, Schedule, Schema, Scope } from "effect"
import { systemError } from "effect/PlatformError"
diff --git a/packages/core/src/workspace/driver.ts b/packages/core/src/workspace/driver.ts
index 4ddab5579c7..fcb6f641ae7 100644
--- a/packages/core/src/workspace/driver.ts
+++ b/packages/core/src/workspace/driver.ts
@@ -1,7 +1,7 @@
export * as WorkspaceDriver from "./driver.js"
-import { Workspace } from "@opencode-ai/schema/workspace"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { Workspace } from "@opencode/schema/workspace"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { Context, Effect, Layer, Schema } from "effect"
import type { Scope } from "effect"
import type { EnvironmentDriver } from "../environment/driver.js"
diff --git a/packages/core/src/workspace/sql.ts b/packages/core/src/workspace/sql.ts
index 4fc3ac0a47f..488f697081b 100644
--- a/packages/core/src/workspace/sql.ts
+++ b/packages/core/src/workspace/sql.ts
@@ -1,4 +1,4 @@
-import { Workspace } from "@opencode-ai/schema/workspace"
+import { Workspace } from "@opencode/schema/workspace"
import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core"
import type { WorkspaceDriver } from "./driver.js"
diff --git a/packages/core/src/worktree.ts b/packages/core/src/worktree.ts
index c196815604a..62f3a7bc627 100644
--- a/packages/core/src/worktree.ts
+++ b/packages/core/src/worktree.ts
@@ -4,27 +4,27 @@ import { Context, Effect, Layer, Schema } from "effect"
import { and, asc, desc, eq, isNull, sql } from "drizzle-orm"
import path from "path"
import { AbsolutePath } from "./schema.js"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { Git } from "./git.js"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { Global } from "@opencode-ai/util/global"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { Global } from "@opencode/util/global"
import { ProjectSchema } from "./project/schema.js"
import { Slug } from "./util/slug.js"
import { Bus } from "./bus.js"
import { Database } from "./database/database.js"
import { Location } from "./location.js"
-import { Worktree } from "@opencode-ai/schema/worktree"
+import { Worktree } from "@opencode/schema/worktree"
import { WorktreeTable } from "./worktree/sql.js"
import { canonical, DirectoryUnavailableError } from "./worktree/directory.js"
import { WorktreeGit } from "./worktree/git.js"
import type { EffectDrizzleSqlite } from "./database/drizzle.js"
import { ProjectTable } from "./project/sql.js"
-import { AppProcess } from "@opencode-ai/util/process"
+import { AppProcess } from "@opencode/util/process"
import { ChildProcess } from "effect/unstable/process"
import { State } from "./state.js"
export { DirectoryUnavailableError } from "./worktree/directory.js"
-export { OperationError } from "@opencode-ai/schema/worktree"
+export { OperationError } from "@opencode/schema/worktree"
export const StrategyID = Worktree.StrategyID
export type StrategyID = typeof StrategyID.Type
diff --git a/packages/core/src/worktree/directory.ts b/packages/core/src/worktree/directory.ts
index 9321027173b..7bbbe7b6f85 100644
--- a/packages/core/src/worktree/directory.ts
+++ b/packages/core/src/worktree/directory.ts
@@ -1,7 +1,7 @@
export * as WorktreeDirectory from "./directory.js"
import { Effect, Schema } from "effect"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { FSUtil } from "@opencode/util/fs-util"
import { AbsolutePath } from "../schema.js"
export class DirectoryUnavailableError extends Schema.TaggedError()(
diff --git a/packages/core/src/worktree/git.ts b/packages/core/src/worktree/git.ts
index 6889d5b167c..854a0e2581a 100644
--- a/packages/core/src/worktree/git.ts
+++ b/packages/core/src/worktree/git.ts
@@ -1,8 +1,8 @@
export * as WorktreeGit from "./git.js"
import { Effect } from "effect"
-import { Worktree } from "@opencode-ai/schema/worktree"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { Worktree } from "@opencode/schema/worktree"
+import { FSUtil } from "@opencode/util/fs-util"
import { Git } from "../git.js"
import { canonical, DirectoryUnavailableError } from "./directory.js"
import type { ListEntry, Strategy } from "../worktree.js"
diff --git a/packages/core/src/worktree/refresh.ts b/packages/core/src/worktree/refresh.ts
index 1aa7defbbb2..e706337d2e4 100644
--- a/packages/core/src/worktree/refresh.ts
+++ b/packages/core/src/worktree/refresh.ts
@@ -1,7 +1,7 @@
export * as WorktreeRefresh from "./refresh.js"
import { Effect, Layer } from "effect"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Location } from "../location.js"
import { Plugin } from "../plugin.js"
import { PluginSupervisor } from "../plugin/supervisor.js"
diff --git a/packages/core/test/agent.test.ts b/packages/core/test/agent.test.ts
index 6f87cff5fc3..1784bf5655d 100644
--- a/packages/core/test/agent.test.ts
+++ b/packages/core/test/agent.test.ts
@@ -1,15 +1,15 @@
import path from "path"
import { describe, expect } from "bun:test"
import { Effect, Exit, Fiber, Layer, Scope, Stream } from "effect"
-import { Agent } from "@opencode-ai/core/agent"
-import { Bus } from "@opencode-ai/core/bus"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Location } from "@opencode-ai/core/location"
-import { Permission } from "@opencode-ai/core/permission"
-import { AgentPlugin } from "@opencode-ai/core/plugin/agent"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Global } from "@opencode-ai/util/global"
+import { Agent } from "@opencode/core/agent"
+import { Bus } from "@opencode/core/bus"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Location } from "@opencode/core/location"
+import { Permission } from "@opencode/core/permission"
+import { AgentPlugin } from "@opencode/core/plugin/agent"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Global } from "@opencode/util/global"
import { location } from "./fixture/location"
import { testEffect } from "./lib/effect"
import { agentHost, host } from "./plugin/host"
diff --git a/packages/core/test/aisdk-native.test.ts b/packages/core/test/aisdk-native.test.ts
index 146d87f8aeb..1f6caccbd63 100644
--- a/packages/core/test/aisdk-native.test.ts
+++ b/packages/core/test/aisdk-native.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import { AISDKNative } from "@opencode-ai/core/aisdk-native"
+import { AISDKNative } from "@opencode/core/aisdk-native"
const map = (packageName: string, settings: Readonly>, modelID = "test-model") =>
AISDKNative.map({ packageName, settings, modelID, providerID: "test-provider" })
@@ -17,7 +17,7 @@ describe("AISDKNative", () => {
truncation: "auto",
}),
).toEqual({
- package: "@opencode-ai/ai/providers/openai",
+ package: "@opencode/ai/providers/openai",
settings: {
apiKey: "secret",
baseURL: "https://api.meta.ai/v1",
@@ -31,7 +31,7 @@ describe("AISDKNative", () => {
},
})
expect(map("@ai-sdk/openai-compatible", { baseURL: "https://example.com/v1", reasoningEffort: "high" })).toEqual({
- package: "@opencode-ai/ai/providers/openai-compatible",
+ package: "@opencode/ai/providers/openai-compatible",
settings: {
baseURL: "https://example.com/v1",
provider: "test-provider",
@@ -49,7 +49,7 @@ describe("AISDKNative", () => {
effort: "high",
}),
).toEqual({
- package: "@opencode-ai/ai/providers/anthropic",
+ package: "@opencode/ai/providers/anthropic",
settings: {
authToken: "token",
baseURL: "https://anthropic.example/v1",
@@ -73,7 +73,7 @@ describe("AISDKNative", () => {
customOption: { enabled: true },
}),
).toEqual({
- package: `@opencode-ai/ai/providers/${name}`,
+ package: `@opencode/ai/providers/${name}`,
settings: {
apiKey: "secret",
baseURL: `https://${name}.example/v1`,
@@ -82,7 +82,7 @@ describe("AISDKNative", () => {
headers: { "x-provider": name },
})
expect(map(`@ai-sdk/${name}`, {})).toEqual({
- package: `@opencode-ai/ai/providers/${name}`,
+ package: `@opencode/ai/providers/${name}`,
settings: {},
})
}
@@ -97,7 +97,7 @@ describe("AISDKNative", () => {
thinkingConfig: { thinkingLevel: "high" },
}),
).toEqual({
- package: "@opencode-ai/ai/providers/google-vertex",
+ package: "@opencode/ai/providers/google-vertex",
settings: {
project: "project",
location: "us-central1",
@@ -129,7 +129,7 @@ describe("AISDKNative", () => {
unsupported: true,
}),
).toEqual({
- package: "@opencode-ai/ai/providers/mistral",
+ package: "@opencode/ai/providers/mistral",
settings: {
apiKey: "secret",
baseURL: "https://mistral.example/v1",
@@ -164,18 +164,18 @@ describe("AISDKNative", () => {
generateId: "ignored",
}),
).toEqual({
- package: "@opencode-ai/ai/providers/mistral",
+ package: "@opencode/ai/providers/mistral",
settings: {},
})
})
test("maps both models.dev Bedrock packages to native providers", () => {
expect(map("@ai-sdk/amazon-bedrock", { region: "us-east-1" })).toEqual({
- package: "@opencode-ai/ai/providers/amazon-bedrock",
+ package: "@opencode/ai/providers/amazon-bedrock",
settings: { region: "us-east-1" },
})
expect(map("@ai-sdk/amazon-bedrock/mantle", { region: "us-east-1" }, "openai.gpt-oss-120b")).toEqual({
- package: "@opencode-ai/ai/providers/amazon-bedrock/mantle/responses",
+ package: "@opencode/ai/providers/amazon-bedrock/mantle/responses",
settings: { region: "us-east-1" },
})
})
@@ -190,7 +190,7 @@ describe("AISDKNative", () => {
reasoningEffort: "high",
}
expect(map("@ai-sdk/azure", settings, "deployment")).toEqual({
- package: "@opencode-ai/ai/providers/azure/responses",
+ package: "@opencode/ai/providers/azure/responses",
settings: {
apiKey: "secret",
resourceName: "resource",
@@ -201,7 +201,7 @@ describe("AISDKNative", () => {
},
})
expect(map("@ai-sdk/azure", { ...settings, useCompletionUrls: true }, "custom-deployment")?.package).toBe(
- "@opencode-ai/ai/providers/azure/chat",
+ "@opencode/ai/providers/azure/chat",
)
})
@@ -225,7 +225,7 @@ describe("AISDKNative", () => {
"anthropic.claude-sonnet-4-6-v1",
),
).toEqual({
- package: "@opencode-ai/ai/providers/amazon-bedrock",
+ package: "@opencode/ai/providers/amazon-bedrock",
settings: { region: "us-east-1", topP: 0.8 },
headers: { "x-test": "value" },
body: {
@@ -269,7 +269,7 @@ describe("AISDKNative", () => {
}
expect(map("@ai-sdk/amazon-bedrock/mantle", settings, "openai.gpt-oss-120b")).toEqual({
- package: "@opencode-ai/ai/providers/amazon-bedrock/mantle/responses",
+ package: "@opencode/ai/providers/amazon-bedrock/mantle/responses",
settings: {
apiKey: "token",
baseURL: "https://mantle.test/v1",
@@ -284,7 +284,7 @@ describe("AISDKNative", () => {
})
for (const modelID of ["openai.gpt-oss-safeguard-20b", "openai.gpt-oss-safeguard-120b"]) {
expect(map("@ai-sdk/amazon-bedrock/mantle", settings, modelID)?.package).toBe(
- "@opencode-ai/ai/providers/amazon-bedrock/mantle/chat",
+ "@opencode/ai/providers/amazon-bedrock/mantle/chat",
)
}
expect(
@@ -318,7 +318,7 @@ describe("AISDKNative", () => {
"openai.gpt-oss-120b",
),
).toEqual({
- package: "@opencode-ai/ai/providers/amazon-bedrock/mantle/responses",
+ package: "@opencode/ai/providers/amazon-bedrock/mantle/responses",
settings: {
credentials: {
accessKeyId: "key",
@@ -336,11 +336,11 @@ describe("AISDKNative", () => {
expect(
map("@ai-sdk/amazon-bedrock", { profile: "work", auth: "sigv4", region: "eu-west-1" }, "anthropic.claude"),
).toEqual({
- package: "@opencode-ai/ai/providers/amazon-bedrock",
+ package: "@opencode/ai/providers/amazon-bedrock",
settings: { profile: "work", auth: "sigv4", region: "eu-west-1" },
})
expect(map("@ai-sdk/amazon-bedrock", { auth: "bogus" }, "anthropic.claude")).toEqual({
- package: "@opencode-ai/ai/providers/amazon-bedrock",
+ package: "@opencode/ai/providers/amazon-bedrock",
settings: {},
})
})
@@ -369,7 +369,7 @@ describe("AISDKNative", () => {
future_option: { enabled: true },
}),
).toEqual({
- package: "@opencode-ai/ai/providers/openrouter",
+ package: "@opencode/ai/providers/openrouter",
settings: {
providerOptions: {
models: ["anthropic/claude-sonnet-4.6"],
@@ -401,7 +401,7 @@ describe("AISDKNative", () => {
},
}),
).toEqual({
- package: "@opencode-ai/ai/providers/google",
+ package: "@opencode/ai/providers/google",
settings: {
providerOptions: {
cachedContent: "cachedContents/example",
@@ -455,7 +455,7 @@ describe("AISDKNative", () => {
thinkingConfig: { thinkingLevel: "high" },
}),
).toEqual({
- package: "@opencode-ai/ai/providers/google-vertex",
+ package: "@opencode/ai/providers/google-vertex",
settings: {
accessToken: "vertex-token",
baseURL: "https://vertex.example/v1",
@@ -482,7 +482,7 @@ describe("AISDKNative", () => {
effort: "high",
}),
).toEqual({
- package: "@opencode-ai/ai/providers/google-vertex/messages",
+ package: "@opencode/ai/providers/google-vertex/messages",
settings: {
accessToken: "vertex-token",
baseURL: "https://vertex.example/v1",
@@ -506,7 +506,7 @@ describe("AISDKNative", () => {
store: true,
}),
).toEqual({
- package: "@opencode-ai/ai/providers/xai",
+ package: "@opencode/ai/providers/xai",
settings: {
apiKey: "secret",
baseURL: "https://xai.example/v1",
@@ -530,7 +530,7 @@ describe("AISDKNative", () => {
searchParameters: { mode: "auto" },
}),
).toEqual({
- package: "@opencode-ai/ai/providers/xai",
+ package: "@opencode/ai/providers/xai",
settings: {},
})
})
diff --git a/packages/core/test/aisdk.test.ts b/packages/core/test/aisdk.test.ts
index 9d890a8c719..ec362a6740b 100644
--- a/packages/core/test/aisdk.test.ts
+++ b/packages/core/test/aisdk.test.ts
@@ -2,11 +2,11 @@ import { APICallError } from "@ai-sdk/provider"
import type { LanguageModelV3, LanguageModelV3StreamPart } from "@ai-sdk/provider"
import { createMistral } from "@ai-sdk/mistral"
import { createOpenAICompatible } from "@ai-sdk/openai-compatible"
-import { AISDK } from "@opencode-ai/core/aisdk"
-import { SessionRunnerRetry } from "@opencode-ai/core/session/runner/retry"
-import { toSessionError } from "@opencode-ai/core/session/to-session-error"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
+import { AISDK } from "@opencode/core/aisdk"
+import { SessionRunnerRetry } from "@opencode/core/session/runner/retry"
+import { toSessionError } from "@opencode/core/session/to-session-error"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
import {
LLM,
AIError,
@@ -19,9 +19,9 @@ import {
TransportError,
UnknownProviderError,
isContextOverflowFailure,
-} from "@opencode-ai/ai"
-import { LLMClient, RequestExecutor } from "@opencode-ai/ai/route"
-import { compileRequest } from "@opencode-ai/ai/route/client"
+} from "@opencode/ai"
+import { LLMClient, RequestExecutor } from "@opencode/ai/route"
+import { compileRequest } from "@opencode/ai/route/client"
import { expect } from "bun:test"
import { Effect, Layer } from "effect"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/app.test.ts b/packages/core/test/app.test.ts
index 06bac015e7a..1fefbeac9dc 100644
--- a/packages/core/test/app.test.ts
+++ b/packages/core/test/app.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import { App } from "@opencode-ai/core/app"
+import { App } from "@opencode/core/app"
test("formats app metadata as a user agent", () => {
expect(App.useragent(App.make({ name: "sdk", version: "1.2.3", channel: "beta" }))).toBe("opencode/beta/1.2.3/sdk")
diff --git a/packages/core/test/bus-session-routing.test.ts b/packages/core/test/bus-session-routing.test.ts
index c3cf7b78c0e..deb47fe131c 100644
--- a/packages/core/test/bus-session-routing.test.ts
+++ b/packages/core/test/bus-session-routing.test.ts
@@ -1,21 +1,21 @@
import { describe, expect } from "bun:test"
import { Deferred, Effect, Exit, Fiber, Stream } from "effect"
import { eq } from "drizzle-orm"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Location } from "@opencode-ai/core/location"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionMessageTable, SessionTable } from "@opencode-ai/core/session/sql"
-import { Event } from "@opencode-ai/schema/event"
-import { Project } from "@opencode-ai/schema/project"
-import { AbsolutePath } from "@opencode-ai/schema/schema"
-import { SessionID } from "@opencode-ai/schema/session-id"
-import { SessionEvent } from "@opencode-ai/schema/session-event"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import { WorkspaceID } from "@opencode-ai/schema/workspace-id"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Location } from "@opencode/core/location"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionMessageTable, SessionTable } from "@opencode/core/session/sql"
+import { Event } from "@opencode/schema/event"
+import { Project } from "@opencode/schema/project"
+import { AbsolutePath } from "@opencode/schema/schema"
+import { SessionID } from "@opencode/schema/session-id"
+import { SessionEvent } from "@opencode/schema/session-event"
+import { SessionMessage } from "@opencode/schema/session-message"
+import { WorkspaceID } from "@opencode/schema/workspace-id"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { location } from "./fixture/location"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/bus.test.ts b/packages/core/test/bus.test.ts
index 26f638986c4..48a2d994017 100644
--- a/packages/core/test/bus.test.ts
+++ b/packages/core/test/bus.test.ts
@@ -1,16 +1,16 @@
import { describe, expect } from "bun:test"
import { Cause, Deferred, Effect, Exit, Fiber, Layer, Ref, Schema, Stream } from "effect"
-import { Bus } from "@opencode-ai/core/bus"
-import { Event } from "@opencode-ai/schema/event"
-import { Session } from "@opencode-ai/schema/session"
-import { SessionEvent } from "@opencode-ai/schema/session-event"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { EventSequenceTable, EventTable } from "@opencode-ai/core/event/sql"
-import { Location } from "@opencode-ai/core/location"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Workspace } from "@opencode-ai/core/workspace"
+import { Bus } from "@opencode/core/bus"
+import { Event } from "@opencode/schema/event"
+import { Session } from "@opencode/schema/session"
+import { SessionEvent } from "@opencode/schema/session-event"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { EventSequenceTable, EventTable } from "@opencode/core/event/sql"
+import { Location } from "@opencode/core/location"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Workspace } from "@opencode/core/workspace"
import { eq } from "drizzle-orm"
import { location } from "./fixture/location"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/catalog.test.ts b/packages/core/test/catalog.test.ts
index 0a1213621f2..4c06bdd6de7 100644
--- a/packages/core/test/catalog.test.ts
+++ b/packages/core/test/catalog.test.ts
@@ -1,18 +1,18 @@
import { describe, expect } from "bun:test"
-import { LanguageModel } from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols"
+import { LanguageModel } from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols"
import { Effect, Fiber, Layer, Stream } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Integration } from "@opencode-ai/core/integration"
-import { Credential } from "@opencode-ai/core/credential"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Location } from "@opencode-ai/core/location"
-import { Model } from "@opencode-ai/core/model"
-import { ModelResolver } from "@opencode-ai/core/model-resolver"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import { Catalog } from "@opencode/core/catalog"
+import { Integration } from "@opencode/core/integration"
+import { Credential } from "@opencode/core/credential"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Location } from "@opencode/core/location"
+import { Model } from "@opencode/core/model"
+import { ModelResolver } from "@opencode/core/model-resolver"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
import { location } from "./fixture/location"
import { testEffect } from "./lib/effect"
@@ -40,7 +40,7 @@ describe("Catalog", () => {
const modelID = Model.ID.make("fixture-model")
yield* catalog.transform((editor) =>
editor.model.update(providerID, modelID, (model) => {
- model.package = path === "aisdk" ? Provider.aisdk("@ai-sdk/fixture") : "@opencode-ai/ai/providers/openai"
+ model.package = path === "aisdk" ? Provider.aisdk("@ai-sdk/fixture") : "@opencode/ai/providers/openai"
model.settings = {
apiKey: path === "empty-key" ? "" : "fixture-key",
baseURL: "https://fixture.example/v1",
diff --git a/packages/core/test/codemode.test.ts b/packages/core/test/codemode.test.ts
index 28f1e1847f8..8f94541bdca 100644
--- a/packages/core/test/codemode.test.ts
+++ b/packages/core/test/codemode.test.ts
@@ -1,8 +1,8 @@
import { describe, expect } from "bun:test"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Location } from "@opencode-ai/core/location"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Tool } from "@opencode-ai/core/tool"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Location } from "@opencode/core/location"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Tool } from "@opencode/core/tool"
import { Effect, Schema } from "effect"
import { it } from "./lib/effect"
diff --git a/packages/core/test/codemode/catalog.test.ts b/packages/core/test/codemode/catalog.test.ts
index 730bcc6e8d0..3534ea3b6b7 100644
--- a/packages/core/test/codemode/catalog.test.ts
+++ b/packages/core/test/codemode/catalog.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
-import { CodeModeCatalog } from "@opencode-ai/core/codemode/catalog"
-import { CodeModeInstructions } from "@opencode-ai/core/codemode/instructions"
+import { CodeModeCatalog } from "@opencode/core/codemode/catalog"
+import { CodeModeInstructions } from "@opencode/core/codemode/instructions"
const entry = (path: string, description: string, signature?: string, pinned = false): CodeModeCatalog.Tool => ({
type: "tool",
diff --git a/packages/core/test/codemode/instructions.test.ts b/packages/core/test/codemode/instructions.test.ts
index 427649dc436..c2892d021ea 100644
--- a/packages/core/test/codemode/instructions.test.ts
+++ b/packages/core/test/codemode/instructions.test.ts
@@ -1,10 +1,10 @@
import { describe, expect } from "bun:test"
-import { CodeModeCatalog } from "@opencode-ai/core/codemode/catalog"
-import { CodeModeInstructions } from "@opencode-ai/core/codemode/instructions"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Location } from "@opencode-ai/core/location"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Tool } from "@opencode-ai/core/tool"
+import { CodeModeCatalog } from "@opencode/core/codemode/catalog"
+import { CodeModeInstructions } from "@opencode/core/codemode/instructions"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Location } from "@opencode/core/location"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Tool } from "@opencode/core/tool"
import { Effect, Schema } from "effect"
import { it } from "../lib/effect"
import { readInitial, readUpdate } from "../lib/instructions"
diff --git a/packages/core/test/command.test.ts b/packages/core/test/command.test.ts
index 9cb5db7f638..263d8638c39 100644
--- a/packages/core/test/command.test.ts
+++ b/packages/core/test/command.test.ts
@@ -1,7 +1,7 @@
import { describe, expect } from "bun:test"
-import { Command } from "@opencode-ai/core/command"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Session } from "@opencode-ai/schema/session"
+import { Command } from "@opencode/core/command"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Session } from "@opencode/schema/session"
import { Effect } from "effect"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/config/agent.test.ts b/packages/core/test/config/agent.test.ts
index 7dcd90773e6..f9be179ef0f 100644
--- a/packages/core/test/config/agent.test.ts
+++ b/packages/core/test/config/agent.test.ts
@@ -2,20 +2,20 @@ import { describe, expect, test } from "bun:test"
import fs from "fs/promises"
import path from "path"
import { Effect, Fiber, Schema, Stream } from "effect"
-import { Agent } from "@opencode-ai/core/agent"
-import { Bus } from "@opencode-ai/core/bus"
-import { Config } from "@opencode-ai/core/config"
-import { Directory, Document, Event, Info } from "@opencode-ai/schema/config"
-import { ConfigAgentPlugin } from "@opencode-ai/core/config/plugin/agent"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
-import { Permission } from "@opencode-ai/core/permission"
-import { AgentPlugin } from "@opencode-ai/core/plugin/agent"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { ConfigMigrateV1 } from "@opencode-ai/core/v1/config/migrate"
-import { ConfigAgentV1 } from "@opencode-ai/core/v1/config/agent"
+import { Agent } from "@opencode/core/agent"
+import { Bus } from "@opencode/core/bus"
+import { Config } from "@opencode/core/config"
+import { Directory, Document, Event, Info } from "@opencode/schema/config"
+import { ConfigAgentPlugin } from "@opencode/core/config/plugin/agent"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
+import { Permission } from "@opencode/core/permission"
+import { AgentPlugin } from "@opencode/core/plugin/agent"
+import { AbsolutePath } from "@opencode/core/schema"
+import { ConfigMigrateV1 } from "@opencode/core/v1/config/migrate"
+import { ConfigAgentV1 } from "@opencode/core/v1/config/agent"
import { advance, drain } from "../lib/clock"
import { tmpdir } from "../fixture/tmpdir"
import { testEffect } from "../lib/effect"
diff --git a/packages/core/test/config/command-subagent.test.ts b/packages/core/test/config/command-subagent.test.ts
index 44db54dbede..a5351e0a1dd 100644
--- a/packages/core/test/config/command-subagent.test.ts
+++ b/packages/core/test/config/command-subagent.test.ts
@@ -1,21 +1,21 @@
import { describe, expect } from "bun:test"
import path from "path"
import { Effect, Layer } from "effect"
-import { LanguageModel } from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols/openai-chat"
-import { TestLLM } from "@opencode-ai/ai/testing"
-import { Agent } from "@opencode-ai/core/agent"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNodePlatform } from "@opencode-ai/core/effect/app-node-platform"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Global } from "@opencode-ai/util/global"
+import { LanguageModel } from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols/openai-chat"
+import { TestLLM } from "@opencode/ai/testing"
+import { Agent } from "@opencode/core/agent"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNodePlatform } from "@opencode/core/effect/app-node-platform"
+import { Watcher } from "@opencode/core/filesystem/watcher"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Global } from "@opencode/util/global"
import { tempGlobalLayer } from "../fixture/global"
import { offlineModels } from "../fixture/models"
import { tmpdirScoped } from "../fixture/tmpdir"
diff --git a/packages/core/test/config/command.test.ts b/packages/core/test/config/command.test.ts
index 86fdd0582f7..35832b22a5f 100644
--- a/packages/core/test/config/command.test.ts
+++ b/packages/core/test/config/command.test.ts
@@ -3,29 +3,29 @@ import path from "path"
import { describe, expect } from "bun:test"
import { DateTime, Deferred, Effect, Fiber, Layer, Option, PubSub, Schema, Stream } from "effect"
import { advance, drain } from "../lib/clock"
-import { Directory, Document, Event, Info } from "@opencode-ai/schema/config"
-import { Session } from "@opencode-ai/core/session"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { Job } from "@opencode-ai/core/job"
-import { Agent } from "@opencode-ai/core/agent"
-import { SessionInbox } from "@opencode-ai/schema/session-inbox"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import { Command } from "@opencode-ai/core/command"
-import { Config } from "@opencode-ai/core/config"
-import { ConfigCommandPlugin } from "@opencode-ai/core/config/plugin/command"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Bus } from "@opencode-ai/core/bus"
-import { Credential } from "@opencode-ai/core/credential"
-import { WellKnown } from "@opencode-ai/core/wellknown"
-import { Global } from "@opencode-ai/util/global"
-import { AppProcess } from "@opencode-ai/util/process"
-import { Location } from "@opencode-ai/core/location"
-import { Mcp } from "@opencode-ai/core/mcp/index"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { ShellSelect } from "@opencode-ai/core/shell/select"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
+import { Directory, Document, Event, Info } from "@opencode/schema/config"
+import { Session } from "@opencode/core/session"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { Job } from "@opencode/core/job"
+import { Agent } from "@opencode/core/agent"
+import { SessionInbox } from "@opencode/schema/session-inbox"
+import { SessionMessage } from "@opencode/schema/session-message"
+import { Command } from "@opencode/core/command"
+import { Config } from "@opencode/core/config"
+import { ConfigCommandPlugin } from "@opencode/core/config/plugin/command"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Bus } from "@opencode/core/bus"
+import { Credential } from "@opencode/core/credential"
+import { WellKnown } from "@opencode/core/wellknown"
+import { Global } from "@opencode/util/global"
+import { AppProcess } from "@opencode/util/process"
+import { Location } from "@opencode/core/location"
+import { Mcp } from "@opencode/core/mcp/index"
+import { AbsolutePath } from "@opencode/core/schema"
+import { ShellSelect } from "@opencode/core/shell/select"
+import { Watcher } from "@opencode/core/filesystem/watcher"
import { emptyCredentialNode, emptyWellknownNode } from "../fixture/config-nodes"
import { emptyConfigLayer, emptyMcpLayer, testLocationLayer } from "../fixture/mcp"
import { location } from "../fixture/location"
diff --git a/packages/core/test/config/compaction.test.ts b/packages/core/test/config/compaction.test.ts
index 16950880c33..5db8a10d97d 100644
--- a/packages/core/test/config/compaction.test.ts
+++ b/packages/core/test/config/compaction.test.ts
@@ -1,25 +1,25 @@
import { describe, expect } from "bun:test"
-import { LanguageModel, LLMClient, LLMEvent } from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols"
-import { Bus } from "@opencode-ai/core/bus"
-import { Config } from "@opencode-ai/core/config"
-import { ConfigCompactionPlugin } from "@opencode-ai/core/config/plugin/compaction"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { llmClient } from "@opencode-ai/core/effect/app-node-platform"
-import { SessionCompaction } from "@opencode-ai/core/session/compaction"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionModelRequest } from "@opencode-ai/core/session/model-request"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { Session } from "@opencode-ai/core/session"
-import { Agent } from "@opencode-ai/core/agent"
-import { Location } from "@opencode-ai/core/location"
-import { Project } from "@opencode-ai/core/project"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { ConfigCompaction } from "@opencode-ai/schema/config/compaction"
-import { Document, Event, Info } from "@opencode-ai/schema/config"
-import { Money } from "@opencode-ai/schema/money"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { LanguageModel, LLMClient, LLMEvent } from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols"
+import { Bus } from "@opencode/core/bus"
+import { Config } from "@opencode/core/config"
+import { ConfigCompactionPlugin } from "@opencode/core/config/plugin/compaction"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { llmClient } from "@opencode/core/effect/app-node-platform"
+import { SessionCompaction } from "@opencode/core/session/compaction"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionModelRequest } from "@opencode/core/session/model-request"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { Session } from "@opencode/core/session"
+import { Agent } from "@opencode/core/agent"
+import { Location } from "@opencode/core/location"
+import { Project } from "@opencode/core/project"
+import { AbsolutePath } from "@opencode/core/schema"
+import { ConfigCompaction } from "@opencode/schema/config/compaction"
+import { Document, Event, Info } from "@opencode/schema/config"
+import { Money } from "@opencode/schema/money"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { DateTime, Effect, Fiber, Layer, Option, Schema, Stream } from "effect"
import { testEffect } from "../lib/effect"
import { host } from "../plugin/host"
diff --git a/packages/core/test/config/config.test.ts b/packages/core/test/config/config.test.ts
index 3e1e40ecc98..b593c19dd6c 100644
--- a/packages/core/test/config/config.test.ts
+++ b/packages/core/test/config/config.test.ts
@@ -3,26 +3,26 @@ import fs from "fs/promises"
import { describe, expect, test } from "bun:test"
import { Effect, Fiber, Layer, Logger, Schema, Stream } from "effect"
import { FastCheck } from "effect/testing"
-import { Config } from "@opencode-ai/core/config"
-import { AgentsDirectory, Directory, Document, Event, Info } from "@opencode-ai/schema/config"
-import { ConfigModel } from "@opencode-ai/schema/config/model"
-import { ConfigProvider } from "@opencode-ai/schema/config/provider"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Credential } from "@opencode-ai/core/credential"
-import { ConfigMigrateV1 } from "@opencode-ai/core/v1/config/migrate"
-import { ConfigV1 } from "@opencode-ai/core/v1/config/config"
-import { ConfigNormalize } from "@opencode-ai/core/config/normalize"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
-import { Bus } from "@opencode-ai/core/bus"
-import { Global } from "@opencode-ai/util/global"
-import { Location } from "@opencode-ai/core/location"
-import { Project } from "@opencode-ai/core/project"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { WellKnown } from "@opencode-ai/core/wellknown"
-import { Integration } from "@opencode-ai/schema/integration"
+import { Config } from "@opencode/core/config"
+import { AgentsDirectory, Directory, Document, Event, Info } from "@opencode/schema/config"
+import { ConfigModel } from "@opencode/schema/config/model"
+import { ConfigProvider } from "@opencode/schema/config/provider"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Credential } from "@opencode/core/credential"
+import { ConfigMigrateV1 } from "@opencode/core/v1/config/migrate"
+import { ConfigV1 } from "@opencode/core/v1/config/config"
+import { ConfigNormalize } from "@opencode/core/config/normalize"
+import { Watcher } from "@opencode/core/filesystem/watcher"
+import { Bus } from "@opencode/core/bus"
+import { Global } from "@opencode/util/global"
+import { Location } from "@opencode/core/location"
+import { Project } from "@opencode/core/project"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
+import { WellKnown } from "@opencode/core/wellknown"
+import { Integration } from "@opencode/schema/integration"
import { emptyCredentialNode, emptyWellknownNode } from "../fixture/config-nodes"
import { location } from "../fixture/location"
import { tmpdir } from "../fixture/tmpdir"
diff --git a/packages/core/test/config/entry-observer.test.ts b/packages/core/test/config/entry-observer.test.ts
index 42ff6354c4f..03d5c6a57f5 100644
--- a/packages/core/test/config/entry-observer.test.ts
+++ b/packages/core/test/config/entry-observer.test.ts
@@ -1,7 +1,7 @@
import { describe, expect } from "bun:test"
-import { Config } from "@opencode-ai/core/config"
-import { Document, Info, type Entry } from "@opencode-ai/schema/config"
-import { Event } from "@opencode-ai/schema/event"
+import { Config } from "@opencode/core/config"
+import { Document, Info, type Entry } from "@opencode/schema/config"
+import { Event } from "@opencode/schema/event"
import { Deferred, Effect, PubSub, Ref, Stream } from "effect"
import { ConfigEntryObserver } from "../../src/config/plugin/entry-observer"
import { it } from "../lib/effect"
diff --git a/packages/core/test/config/image.test.ts b/packages/core/test/config/image.test.ts
index 38c75092e3d..f8185f7083a 100644
--- a/packages/core/test/config/image.test.ts
+++ b/packages/core/test/config/image.test.ts
@@ -1,12 +1,12 @@
import { describe, expect } from "bun:test"
-import { Bus } from "@opencode-ai/core/bus"
-import { Config } from "@opencode-ai/core/config"
-import { ConfigImagePlugin } from "@opencode-ai/core/config/plugin/image"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Image } from "@opencode-ai/core/image"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { Document, Event, Info, type Entry } from "@opencode-ai/schema/config"
+import { Bus } from "@opencode/core/bus"
+import { Config } from "@opencode/core/config"
+import { ConfigImagePlugin } from "@opencode/core/config/plugin/image"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Image } from "@opencode/core/image"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { Document, Event, Info, type Entry } from "@opencode/schema/config"
import { Effect, Layer, Schema, Stream } from "effect"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "../plugin/fixture"
diff --git a/packages/core/test/config/model.test.ts b/packages/core/test/config/model.test.ts
index 940e9eeef47..516b7040217 100644
--- a/packages/core/test/config/model.test.ts
+++ b/packages/core/test/config/model.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test"
-import { ConfigModel } from "@opencode-ai/schema/config/model"
-import { Model } from "@opencode-ai/schema/model"
-import { Provider } from "@opencode-ai/schema/provider"
+import { ConfigModel } from "@opencode/schema/config/model"
+import { Model } from "@opencode/schema/model"
+import { Provider } from "@opencode/schema/provider"
import { Schema } from "effect"
const decode = Schema.decodeUnknownSync(ConfigModel.Selection)
diff --git a/packages/core/test/config/normalization.test.ts b/packages/core/test/config/normalization.test.ts
index f4e913aaad9..28702520f24 100644
--- a/packages/core/test/config/normalization.test.ts
+++ b/packages/core/test/config/normalization.test.ts
@@ -1,8 +1,8 @@
import { describe, expect, test } from "bun:test"
import { Duration, Schema } from "effect"
import { FastCheck } from "effect/testing"
-import { ConfigNormalize } from "@opencode-ai/core/config/normalize"
-import { Info } from "@opencode-ai/schema/config"
+import { ConfigNormalize } from "@opencode/core/config/normalize"
+import { Info } from "@opencode/schema/config"
const options = { errors: "all", onExcessProperty: "ignore", propertyOrder: "original" } as const
diff --git a/packages/core/test/config/policy.test.ts b/packages/core/test/config/policy.test.ts
index bc5286e1c3d..c58f7159f06 100644
--- a/packages/core/test/config/policy.test.ts
+++ b/packages/core/test/config/policy.test.ts
@@ -1,12 +1,12 @@
import { describe, expect } from "bun:test"
-import { Document, Event, Info, type Entry } from "@opencode-ai/schema/config"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Config } from "@opencode-ai/core/config"
-import { ConfigPolicyPlugin } from "@opencode-ai/core/config/plugin/policy"
-import { Bus } from "@opencode-ai/core/bus"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { Provider } from "@opencode-ai/core/provider"
+import { Document, Event, Info, type Entry } from "@opencode/schema/config"
+import { Catalog } from "@opencode/core/catalog"
+import { Config } from "@opencode/core/config"
+import { ConfigPolicyPlugin } from "@opencode/core/config/plugin/policy"
+import { Bus } from "@opencode/core/bus"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { Provider } from "@opencode/core/provider"
import { Effect, Schema } from "effect"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "../plugin/fixture"
diff --git a/packages/core/test/config/provider-options.test.ts b/packages/core/test/config/provider-options.test.ts
index ac746e44417..0cb3ada7459 100644
--- a/packages/core/test/config/provider-options.test.ts
+++ b/packages/core/test/config/provider-options.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import { ConfigProviderOptionsV1 } from "@opencode-ai/core/v1/config/provider-options"
+import { ConfigProviderOptionsV1 } from "@opencode/core/v1/config/provider-options"
describe("ConfigProviderOptionsV1", () => {
test("splits provider overlays without changing package settings", () => {
diff --git a/packages/core/test/config/provider.test.ts b/packages/core/test/config/provider.test.ts
index 5e9d9ad74f0..5b129c2a769 100644
--- a/packages/core/test/config/provider.test.ts
+++ b/packages/core/test/config/provider.test.ts
@@ -1,17 +1,17 @@
import { describe, expect } from "bun:test"
-import { Money } from "@opencode-ai/schema/money"
-import { Document, Info, type Entry } from "@opencode-ai/schema/config"
+import { Money } from "@opencode/schema/money"
+import { Document, Info, type Entry } from "@opencode/schema/config"
import { Effect, Schema } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Config } from "@opencode-ai/core/config"
-import { ConfigProviderPlugin } from "@opencode-ai/core/config/plugin/provider"
-import { ConfigNormalize } from "@opencode-ai/core/config/normalize"
-import { Integration } from "@opencode-ai/core/integration"
-import { Model } from "@opencode-ai/core/model"
-import { ModelResolver } from "@opencode-ai/core/model-resolver"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Config } from "@opencode/core/config"
+import { ConfigProviderPlugin } from "@opencode/core/config/plugin/provider"
+import { ConfigNormalize } from "@opencode/core/config/normalize"
+import { Integration } from "@opencode/core/integration"
+import { Model } from "@opencode/core/model"
+import { ModelResolver } from "@opencode/core/model-resolver"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { Provider } from "@opencode/core/provider"
import { withEnv } from "../fixture/env"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "../plugin/fixture"
@@ -41,17 +41,17 @@ describe("ConfigProviderPlugin.Plugin", () => {
info: decode({
providers: {
custom: {
- package: "@opencode-ai/ai/providers/openai/responses",
+ package: "@opencode/ai/providers/openai/responses",
compaction: { mode: "provider", threshold: 120_000 },
models: {
native: {},
reset: { compaction: { mode: "provider" } },
threshold: { compaction: { mode: "provider", threshold: 90_000 } },
- local: { compaction: { mode: "local" }, package: "@opencode-ai/ai/providers/openai/chat" },
- unsupported: { package: "@opencode-ai/ai/providers/openai/chat" },
+ local: { compaction: { mode: "local" }, package: "@opencode/ai/providers/openai/chat" },
+ unsupported: { package: "@opencode/ai/providers/openai/chat" },
},
},
- default: { package: "@opencode-ai/ai/providers/openai/chat", models: { chat: {} } },
+ default: { package: "@opencode/ai/providers/openai/chat", models: { chat: {} } },
},
}),
}),
diff --git a/packages/core/test/config/reload.test.ts b/packages/core/test/config/reload.test.ts
index dedb1c8928f..17f0609ae6d 100644
--- a/packages/core/test/config/reload.test.ts
+++ b/packages/core/test/config/reload.test.ts
@@ -2,35 +2,35 @@ import path from "path"
import fs from "fs/promises"
import { writeFileSync } from "node:fs"
import { describe, expect } from "bun:test"
-import { Document, Event, Info } from "@opencode-ai/schema/config"
-import { Agent } from "@opencode-ai/core/agent"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Command } from "@opencode-ai/core/command"
-import { Config } from "@opencode-ai/core/config"
-import { ConfigAgentPlugin } from "@opencode-ai/core/config/plugin/agent"
-import { ConfigCommandPlugin } from "@opencode-ai/core/config/plugin/command"
-import { ConfigProviderPlugin } from "@opencode-ai/core/config/plugin/provider"
-import { ConfigReferencePlugin } from "@opencode-ai/core/config/plugin/reference"
-import { ConfigSkillPlugin } from "@opencode-ai/core/config/plugin/skill"
-import { Bus } from "@opencode-ai/core/bus"
-import { Integration } from "@opencode-ai/core/integration"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Provider } from "@opencode-ai/core/provider"
-import { Reference } from "@opencode-ai/core/reference"
-import { Skill } from "@opencode-ai/core/skill"
-import { ShellSelect } from "@opencode-ai/core/shell/select"
-import { Job } from "@opencode-ai/core/job"
-import { Global } from "@opencode-ai/util/global"
-import { Location } from "@opencode-ai/core/location"
-import { Credential } from "@opencode-ai/core/credential"
-import { WellKnown } from "@opencode-ai/core/wellknown"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
-import { AppProcess } from "@opencode-ai/util/process"
+import { Document, Event, Info } from "@opencode/schema/config"
+import { Agent } from "@opencode/core/agent"
+import { Catalog } from "@opencode/core/catalog"
+import { Command } from "@opencode/core/command"
+import { Config } from "@opencode/core/config"
+import { ConfigAgentPlugin } from "@opencode/core/config/plugin/agent"
+import { ConfigCommandPlugin } from "@opencode/core/config/plugin/command"
+import { ConfigProviderPlugin } from "@opencode/core/config/plugin/provider"
+import { ConfigReferencePlugin } from "@opencode/core/config/plugin/reference"
+import { ConfigSkillPlugin } from "@opencode/core/config/plugin/skill"
+import { Bus } from "@opencode/core/bus"
+import { Integration } from "@opencode/core/integration"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Provider } from "@opencode/core/provider"
+import { Reference } from "@opencode/core/reference"
+import { Skill } from "@opencode/core/skill"
+import { ShellSelect } from "@opencode/core/shell/select"
+import { Job } from "@opencode/core/job"
+import { Global } from "@opencode/util/global"
+import { Location } from "@opencode/core/location"
+import { Credential } from "@opencode/core/credential"
+import { WellKnown } from "@opencode/core/wellknown"
+import { Watcher } from "@opencode/core/filesystem/watcher"
+import { AppProcess } from "@opencode/util/process"
import { Deferred, Effect, Layer, Schema } from "effect"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { AbsolutePath } from "@opencode/core/schema"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "../plugin/fixture"
import { emptyCredentialNode, emptyWellknownNode } from "../fixture/config-nodes"
diff --git a/packages/core/test/config/shell.test.ts b/packages/core/test/config/shell.test.ts
index 7ecb664cd85..c0bb0f29edb 100644
--- a/packages/core/test/config/shell.test.ts
+++ b/packages/core/test/config/shell.test.ts
@@ -1,13 +1,13 @@
import { describe, expect } from "bun:test"
-import { Bus } from "@opencode-ai/core/bus"
-import { Config } from "@opencode-ai/core/config"
-import { ConfigShellPlugin } from "@opencode-ai/core/config/plugin/shell"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { ShellSelect } from "@opencode-ai/core/shell/select"
-import { Document, Event, Info } from "@opencode-ai/schema/config"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { Bus } from "@opencode/core/bus"
+import { Config } from "@opencode/core/config"
+import { ConfigShellPlugin } from "@opencode/core/config/plugin/shell"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { ShellSelect } from "@opencode/core/shell/select"
+import { Document, Event, Info } from "@opencode/schema/config"
+import { FSUtil } from "@opencode/util/fs-util"
import { Effect, Layer } from "effect"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "../plugin/fixture"
diff --git a/packages/core/test/config/skill.test.ts b/packages/core/test/config/skill.test.ts
index 4213e7d5894..af02cadd682 100644
--- a/packages/core/test/config/skill.test.ts
+++ b/packages/core/test/config/skill.test.ts
@@ -2,22 +2,22 @@ import fs from "fs/promises"
import path from "path"
import { describe, expect, test } from "bun:test"
import { Deferred, Effect, Fiber, Layer, Schema, Stream } from "effect"
-import { Config } from "@opencode-ai/core/config"
-import { AgentsDirectory, ClaudeDirectory, Directory, Document, type Entry, Info } from "@opencode-ai/schema/config"
-import { ConfigSkillPlugin } from "@opencode-ai/core/config/plugin/skill"
-import { SkillFile } from "@opencode-ai/core/config/plugin/skill-file"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
-import { Bus } from "@opencode-ai/core/bus"
-import { Credential } from "@opencode-ai/core/credential"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Location } from "@opencode-ai/core/location"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Skill } from "@opencode-ai/core/skill"
-import { SkillDiscovery } from "@opencode-ai/core/skill/discovery"
-import { WellKnown } from "@opencode-ai/core/wellknown"
+import { Config } from "@opencode/core/config"
+import { AgentsDirectory, ClaudeDirectory, Directory, Document, type Entry, Info } from "@opencode/schema/config"
+import { ConfigSkillPlugin } from "@opencode/core/config/plugin/skill"
+import { SkillFile } from "@opencode/core/config/plugin/skill-file"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Watcher } from "@opencode/core/filesystem/watcher"
+import { Bus } from "@opencode/core/bus"
+import { Credential } from "@opencode/core/credential"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Location } from "@opencode/core/location"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Skill } from "@opencode/core/skill"
+import { SkillDiscovery } from "@opencode/core/skill/discovery"
+import { WellKnown } from "@opencode/core/wellknown"
import { emptyCredentialNode, emptyWellknownNode } from "../fixture/config-nodes"
import { tmpdir } from "../fixture/tmpdir"
import { location } from "../fixture/location"
diff --git a/packages/core/test/config/snapshot.test.ts b/packages/core/test/config/snapshot.test.ts
index 42e7489afa3..33423b45a62 100644
--- a/packages/core/test/config/snapshot.test.ts
+++ b/packages/core/test/config/snapshot.test.ts
@@ -2,17 +2,17 @@ import { $ } from "bun"
import { describe, expect } from "bun:test"
import fs from "fs/promises"
import path from "path"
-import { Bus } from "@opencode-ai/core/bus"
-import { Config } from "@opencode-ai/core/config"
-import { ConfigSnapshotPlugin } from "@opencode-ai/core/config/plugin/snapshot"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Location } from "@opencode-ai/core/location"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Snapshot } from "@opencode-ai/core/snapshot"
-import { Document, Event, Info } from "@opencode-ai/schema/config"
-import { Global } from "@opencode-ai/util/global"
+import { Bus } from "@opencode/core/bus"
+import { Config } from "@opencode/core/config"
+import { ConfigSnapshotPlugin } from "@opencode/core/config/plugin/snapshot"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Location } from "@opencode/core/location"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Snapshot } from "@opencode/core/snapshot"
+import { Document, Event, Info } from "@opencode/schema/config"
+import { Global } from "@opencode/util/global"
import { Effect } from "effect"
import { tmpdir } from "../fixture/tmpdir"
import { it } from "../lib/effect"
diff --git a/packages/core/test/config/tool-output.test.ts b/packages/core/test/config/tool-output.test.ts
index 81c1a76e6c3..a86db85680e 100644
--- a/packages/core/test/config/tool-output.test.ts
+++ b/packages/core/test/config/tool-output.test.ts
@@ -1,14 +1,14 @@
import { describe, expect } from "bun:test"
-import { Bus } from "@opencode-ai/core/bus"
-import { Config } from "@opencode-ai/core/config"
-import { ConfigToolOutputPlugin } from "@opencode-ai/core/config/plugin/tool-output"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { ToolOutput } from "@opencode-ai/core/tool-output"
-import { Document, Event, Info } from "@opencode-ai/schema/config"
-import { ConfigToolOutput } from "@opencode-ai/schema/config/tool-output"
-import { Global } from "@opencode-ai/util/global"
+import { Bus } from "@opencode/core/bus"
+import { Config } from "@opencode/core/config"
+import { ConfigToolOutputPlugin } from "@opencode/core/config/plugin/tool-output"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { ToolOutput } from "@opencode/core/tool-output"
+import { Document, Event, Info } from "@opencode/schema/config"
+import { ConfigToolOutput } from "@opencode/schema/config/tool-output"
+import { Global } from "@opencode/util/global"
import { Effect } from "effect"
import { tmpdir } from "../fixture/tmpdir"
import { it } from "../lib/effect"
diff --git a/packages/core/test/config/warming.test.ts b/packages/core/test/config/warming.test.ts
index 6b1ebfbce63..104b18ba1a3 100644
--- a/packages/core/test/config/warming.test.ts
+++ b/packages/core/test/config/warming.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import { Duration, Schema } from "effect"
-import { Info } from "@opencode-ai/schema/config"
+import { Info } from "@opencode/schema/config"
const decode = Schema.decodeUnknownSync(Info)
diff --git a/packages/core/test/config/watch.test.ts b/packages/core/test/config/watch.test.ts
index 7fb3d06f074..303b0749361 100644
--- a/packages/core/test/config/watch.test.ts
+++ b/packages/core/test/config/watch.test.ts
@@ -1,8 +1,8 @@
import path from "path"
import { describe, expect, test } from "bun:test"
-import type { ConfigDiscovery } from "@opencode-ai/core/config/discovery"
-import { ConfigWatch } from "@opencode-ai/core/config/watch"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import type { ConfigDiscovery } from "@opencode/core/config/discovery"
+import { ConfigWatch } from "@opencode/core/config/watch"
+import { AbsolutePath } from "@opencode/core/schema"
const project = path.resolve("watch-plan-project")
const root = AbsolutePath.make(path.join(project, ".opencode"))
diff --git a/packages/core/test/config/websearch.test.ts b/packages/core/test/config/websearch.test.ts
index d9a4519d1c3..50ae5c000e5 100644
--- a/packages/core/test/config/websearch.test.ts
+++ b/packages/core/test/config/websearch.test.ts
@@ -1,12 +1,12 @@
import { describe, expect } from "bun:test"
-import { Bus } from "@opencode-ai/core/bus"
-import { Config } from "@opencode-ai/core/config"
-import { ConfigWebSearchPlugin } from "@opencode-ai/core/config/plugin/websearch"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { WebSearch } from "@opencode-ai/core/websearch"
-import { Document, Event, Info } from "@opencode-ai/schema/config"
-import { ConfigWebSearch } from "@opencode-ai/schema/config/websearch"
+import { Bus } from "@opencode/core/bus"
+import { Config } from "@opencode/core/config"
+import { ConfigWebSearchPlugin } from "@opencode/core/config/plugin/websearch"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { WebSearch } from "@opencode/core/websearch"
+import { Document, Event, Info } from "@opencode/schema/config"
+import { ConfigWebSearch } from "@opencode/schema/config/websearch"
import { Effect } from "effect"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "../plugin/fixture"
diff --git a/packages/core/test/credential.test.ts b/packages/core/test/credential.test.ts
index 7bc0f74680f..f68e635c4da 100644
--- a/packages/core/test/credential.test.ts
+++ b/packages/core/test/credential.test.ts
@@ -1,16 +1,16 @@
import { describe, expect } from "bun:test"
import { eq } from "drizzle-orm"
import { Effect } from "effect"
-import { Bus } from "@opencode-ai/core/bus"
-import { Credential } from "@opencode-ai/core/credential"
-import { CredentialTable } from "@opencode-ai/core/credential/sql"
-import { Database } from "@opencode-ai/core/database/database"
-import { Location } from "@opencode-ai/core/location"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Workspace } from "@opencode-ai/core/workspace"
-import { Event } from "@opencode-ai/schema/event"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Integration } from "@opencode-ai/core/integration"
+import { Bus } from "@opencode/core/bus"
+import { Credential } from "@opencode/core/credential"
+import { CredentialTable } from "@opencode/core/credential/sql"
+import { Database } from "@opencode/core/database/database"
+import { Location } from "@opencode/core/location"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Workspace } from "@opencode/core/workspace"
+import { Event } from "@opencode/schema/event"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Integration } from "@opencode/core/integration"
import { location } from "./fixture/location"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/database-drizzle.test.ts b/packages/core/test/database-drizzle.test.ts
index 57922fb2284..d2c0958dcef 100644
--- a/packages/core/test/database-drizzle.test.ts
+++ b/packages/core/test/database-drizzle.test.ts
@@ -9,7 +9,7 @@ import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core"
import { Cause, Effect, Tracer } from "effect"
import type { SqlClient } from "effect/unstable/sql/SqlClient"
import { isSqlError } from "effect/unstable/sql/SqlError"
-import { EffectDrizzleSqlite } from "@opencode-ai/core/database/drizzle"
+import { EffectDrizzleSqlite } from "@opencode/core/database/drizzle"
import { EffectDrizzleQueryError } from "drizzle-orm/effect-core/errors"
const users = sqliteTable("users", {
diff --git a/packages/core/test/database-migration.test.ts b/packages/core/test/database-migration.test.ts
index 3708a5dc6ca..33e35017585 100644
--- a/packages/core/test/database-migration.test.ts
+++ b/packages/core/test/database-migration.test.ts
@@ -3,24 +3,24 @@ import { $ } from "bun"
import { fileURLToPath } from "url"
import path from "path"
import { SqliteClient } from "@effect/sql-sqlite-bun"
-import { EffectDrizzleSqlite } from "@opencode-ai/core/database/drizzle"
+import { EffectDrizzleSqlite } from "@opencode/core/database/drizzle"
import { Deferred, Effect, Fiber, Layer } from "effect"
import { Reactivity } from "effect/unstable/reactivity"
import { SqlClient, Statement } from "effect/unstable/sql"
import { sql } from "drizzle-orm"
-import { DatabaseMigration } from "@opencode-ai/core/database/migration"
-import { migrations } from "@opencode-ai/core/database/migration.gen"
-import workspaceNameMigration from "@opencode-ai/core/database/migration/20260410174513_workspace-name"
-import { Database } from "@opencode-ai/core/database/database"
+import { DatabaseMigration } from "@opencode/core/database/migration"
+import { migrations } from "@opencode/core/database/migration.gen"
+import workspaceNameMigration from "@opencode/core/database/migration/20260410174513_workspace-name"
+import { Database } from "@opencode/core/database/database"
import { tmpdir } from "./fixture/tmpdir"
-import legacyCredentialsMigration from "@opencode-ai/core/database/migration/20260805200742_import_legacy_credentials"
-import worktreeMigration from "@opencode-ai/core/database/migration/20260812213948_worktree"
-import previousV2Migration from "@opencode-ai/core/database/migration/20260804233008_loose_psylocke"
-import workspaceMigration from "@opencode-ai/core/database/migration/20260808023530_workspace_domain"
-import executionClaimsMigration from "@opencode-ai/core/database/migration/20260811161259_execution_claim_attempts"
-import sessionInboxMigration from "@opencode-ai/core/database/migration/20260812181746_session_inbox"
-import sessionViewedStateMigration from "@opencode-ai/core/database/migration/20260819222447_session_viewed_state"
-import { Global } from "@opencode-ai/util/global"
+import legacyCredentialsMigration from "@opencode/core/database/migration/20260805200742_import_legacy_credentials"
+import worktreeMigration from "@opencode/core/database/migration/20260812213948_worktree"
+import previousV2Migration from "@opencode/core/database/migration/20260804233008_loose_psylocke"
+import workspaceMigration from "@opencode/core/database/migration/20260808023530_workspace_domain"
+import executionClaimsMigration from "@opencode/core/database/migration/20260811161259_execution_claim_attempts"
+import sessionInboxMigration from "@opencode/core/database/migration/20260812181746_session_inbox"
+import sessionViewedStateMigration from "@opencode/core/database/migration/20260819222447_session_viewed_state"
+import { Global } from "@opencode/util/global"
const run = (
effect: Effect.Effect,
diff --git a/packages/core/test/effect-app-node-platform.test.ts b/packages/core/test/effect-app-node-platform.test.ts
index 0e987a5015f..380852721cf 100644
--- a/packages/core/test/effect-app-node-platform.test.ts
+++ b/packages/core/test/effect-app-node-platform.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
-import { WebSocketTransport } from "@opencode-ai/ai/route"
-import { WebSocketConstructor } from "@opencode-ai/core/effect/websocket-constructor"
+import { WebSocketTransport } from "@opencode/ai/route"
+import { WebSocketConstructor } from "@opencode/core/effect/websocket-constructor"
import { Effect } from "effect"
import { Headers } from "effect/unstable/http"
import { Socket } from "effect/unstable/socket"
diff --git a/packages/core/test/effect/cross-spawn-spawner.test.ts b/packages/core/test/effect/cross-spawn-spawner.test.ts
index 3c3a018f814..a7887642723 100644
--- a/packages/core/test/effect/cross-spawn-spawner.test.ts
+++ b/packages/core/test/effect/cross-spawn-spawner.test.ts
@@ -4,8 +4,8 @@ import os from "node:os"
import path from "node:path"
import { Deferred, Effect, Exit, PlatformError, Stream } from "effect"
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process"
-import { CrossSpawnSpawner } from "@opencode-ai/util/cross-spawn-spawner"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { CrossSpawnSpawner } from "@opencode/util/cross-spawn-spawner"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { testEffect } from "../lib/effect"
const live = LayerNode.compile(CrossSpawnSpawner.node)
diff --git a/packages/core/test/effect/keyed-mutex.test.ts b/packages/core/test/effect/keyed-mutex.test.ts
index b6638ff4b19..6d939a829fc 100644
--- a/packages/core/test/effect/keyed-mutex.test.ts
+++ b/packages/core/test/effect/keyed-mutex.test.ts
@@ -1,6 +1,6 @@
import { describe, expect } from "bun:test"
import { Deferred, Effect, Fiber } from "effect"
-import { KeyedMutex } from "@opencode-ai/core/effect/keyed-mutex"
+import { KeyedMutex } from "@opencode/core/effect/keyed-mutex"
import { it } from "../lib/effect"
describe("KeyedMutex", () => {
diff --git a/packages/core/test/effect/layer-node/layer-node-types.test.ts b/packages/core/test/effect/layer-node/layer-node-types.test.ts
index d1208b28baa..6d44b37cfc6 100644
--- a/packages/core/test/effect/layer-node/layer-node-types.test.ts
+++ b/packages/core/test/effect/layer-node/layer-node-types.test.ts
@@ -1,7 +1,7 @@
import { test } from "bun:test"
import { Context, Effect, Layer } from "effect"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { makeGlobalNode, makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { makeGlobalNode, makeLocationNode } from "@opencode/util/effect/app-node"
class A extends Context.Service()("test/LayerNodeA") {}
class B extends Context.Service()("test/LayerNodeB") {}
diff --git a/packages/core/test/effect/layer-node/layer-node.test.ts b/packages/core/test/effect/layer-node/layer-node.test.ts
index ec530319048..bfb82a8f93e 100644
--- a/packages/core/test/effect/layer-node/layer-node.test.ts
+++ b/packages/core/test/effect/layer-node/layer-node.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import { Context, Deferred, Duration, Effect, Fiber, Layer, LayerMap, Option } from "effect"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { testEffect } from "../../lib/effect"
class Value extends Context.Service()("test/LayerNodeValue") {}
diff --git a/packages/core/test/effect/layer-node/node-build.test.ts b/packages/core/test/effect/layer-node/node-build.test.ts
index baed42e3b07..4343c7fc049 100644
--- a/packages/core/test/effect/layer-node/node-build.test.ts
+++ b/packages/core/test/effect/layer-node/node-build.test.ts
@@ -1,13 +1,13 @@
import { describe, expect, test } from "bun:test"
import { Context, Effect, Layer, Option } from "effect"
-import { Node } from "@opencode-ai/util/effect/app-node"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Location } from "@opencode-ai/core/location"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import { buildLocationServiceMap } from "@opencode-ai/core/location-services"
-import { Project } from "@opencode-ai/core/project"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import { Node } from "@opencode/util/effect/app-node"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Location } from "@opencode/core/location"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import { buildLocationServiceMap } from "@opencode/core/location-services"
+import { Project } from "@opencode/core/project"
+import { AbsolutePath } from "@opencode/core/schema"
import { tmpdir } from "../../fixture/tmpdir"
import { testEffect } from "../../lib/effect"
diff --git a/packages/core/test/effect/observability.test.ts b/packages/core/test/effect/observability.test.ts
index 0c190fd0af6..7bdad6fc514 100644
--- a/packages/core/test/effect/observability.test.ts
+++ b/packages/core/test/effect/observability.test.ts
@@ -4,8 +4,8 @@ import { Effect, Layer, Logger } from "effect"
import fs from "fs/promises"
import os from "os"
import path from "path"
-import { fileLogger } from "@opencode-ai/util/observability/logging"
-import { resource } from "@opencode-ai/util/observability/otlp"
+import { fileLogger } from "@opencode/util/observability/logging"
+import { resource } from "@opencode/util/observability/otlp"
const otelResourceAttributes = process.env.OTEL_RESOURCE_ATTRIBUTES
@@ -61,7 +61,7 @@ test("falls back to local logging when OTLP initialization fails", async () => {
"--eval",
`
import { Effect } from "effect"
- import { Observability } from "@opencode-ai/util/observability"
+ import { Observability } from "@opencode/util/observability"
await Effect.void.pipe(Effect.provide(Observability.layer()), Effect.scoped, Effect.runPromise)
`,
],
diff --git a/packages/core/test/environment.test.ts b/packages/core/test/environment.test.ts
index 94fbc04a188..a093eab9ec7 100644
--- a/packages/core/test/environment.test.ts
+++ b/packages/core/test/environment.test.ts
@@ -2,8 +2,8 @@ import fs from "node:fs/promises"
import { describe, expect } from "bun:test"
import { Effect } from "effect"
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process"
-import { CrossSpawnSpawner } from "@opencode-ai/util/cross-spawn-spawner"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { CrossSpawnSpawner } from "@opencode/util/cross-spawn-spawner"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { EnvironmentUnavailable } from "../src/environment/unavailable"
import {
execDefaults,
diff --git a/packages/core/test/event-logger.test.ts b/packages/core/test/event-logger.test.ts
index fe91ceae953..ca1d651102e 100644
--- a/packages/core/test/event-logger.test.ts
+++ b/packages/core/test/event-logger.test.ts
@@ -1,15 +1,15 @@
import { describe, expect, test } from "bun:test"
import { Effect, Logger } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Database } from "@opencode-ai/core/database/database"
-import { Bus } from "@opencode-ai/core/bus"
-import { EventLogger } from "@opencode-ai/core/event-logger"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Catalog } from "@opencode-ai/schema/catalog"
-import { Command } from "@opencode-ai/schema/command"
-import { Config } from "@opencode-ai/schema/config"
-import { McpEvent } from "@opencode-ai/schema/mcp-event"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Database } from "@opencode/core/database/database"
+import { Bus } from "@opencode/core/bus"
+import { EventLogger } from "@opencode/core/event-logger"
+import { Agent } from "@opencode/schema/agent"
+import { Catalog } from "@opencode/schema/catalog"
+import { Command } from "@opencode/schema/command"
+import { Config } from "@opencode/schema/config"
+import { McpEvent } from "@opencode/schema/mcp-event"
const UnlistedUpdated = Bus.ephemeral({ type: "test.updated", schema: {} })
diff --git a/packages/core/test/file-access-path.test.ts b/packages/core/test/file-access-path.test.ts
index 80cc925a3cb..b514c519666 100644
--- a/packages/core/test/file-access-path.test.ts
+++ b/packages/core/test/file-access-path.test.ts
@@ -2,12 +2,12 @@ import fs from "fs/promises"
import path from "path"
import { describe, expect, test } from "bun:test"
import { Effect, Layer, Schema } from "effect"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Location } from "@opencode-ai/core/location"
-import { FileAccess } from "@opencode-ai/core/file-access"
-import { Permission } from "@opencode-ai/core/permission"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Global } from "@opencode-ai/util/global"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Location } from "@opencode/core/location"
+import { FileAccess } from "@opencode/core/file-access"
+import { Permission } from "@opencode/core/permission"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Global } from "@opencode/util/global"
import { tmpdirScoped, withTempDir } from "./fixture/tmpdir"
import { location } from "./fixture/location"
import { it } from "./lib/effect"
diff --git a/packages/core/test/file-access.test.ts b/packages/core/test/file-access.test.ts
index 5e9d44af217..7d7497b434f 100644
--- a/packages/core/test/file-access.test.ts
+++ b/packages/core/test/file-access.test.ts
@@ -2,14 +2,14 @@ import { describe, expect } from "bun:test"
import fs from "fs/promises"
import path from "path"
import { Effect } from "effect"
-import { FileAccess } from "@opencode-ai/core/file-access"
-import { Location } from "@opencode-ai/core/location"
-import { Permission } from "@opencode-ai/core/permission"
-import { Session } from "@opencode-ai/core/session"
-import { Tool } from "@opencode-ai/core/tool"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { FileAccess } from "@opencode/core/file-access"
+import { Location } from "@opencode/core/location"
+import { Permission } from "@opencode/core/permission"
+import { Session } from "@opencode/core/session"
+import { Tool } from "@opencode/core/tool"
+import { AbsolutePath } from "@opencode/core/schema"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { tempLocationLayer } from "./fixture/location"
import { tmpdirScoped } from "./fixture/tmpdir"
import { it } from "./lib/effect"
diff --git a/packages/core/test/file-mutation.test.ts b/packages/core/test/file-mutation.test.ts
index 9ac33e0b7c6..b3bb756555a 100644
--- a/packages/core/test/file-mutation.test.ts
+++ b/packages/core/test/file-mutation.test.ts
@@ -2,14 +2,14 @@ import fs from "fs/promises"
import path from "path"
import { describe, expect } from "bun:test"
import { Deferred, Effect, Fiber, Layer } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { FileMutation } from "@opencode-ai/core/file-mutation"
-import { Environment } from "@opencode-ai/core/environment/index"
-import { Location } from "@opencode-ai/core/location"
-import { FileAccess } from "@opencode-ai/core/file-access"
-import { Permission } from "@opencode-ai/core/permission"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { FileMutation } from "@opencode/core/file-mutation"
+import { Environment } from "@opencode/core/environment/index"
+import { Location } from "@opencode/core/location"
+import { FileAccess } from "@opencode/core/file-access"
+import { Permission } from "@opencode/core/permission"
+import { AbsolutePath } from "@opencode/core/schema"
import { type EnvironmentFilesTransform, transformEnvironmentFiles } from "./fixture/environment"
import { location } from "./fixture/location"
import { withTempDir } from "./fixture/tmpdir"
diff --git a/packages/core/test/filesystem/filesystem.test.ts b/packages/core/test/filesystem/filesystem.test.ts
index de5dc5cdea0..e24dc33940e 100644
--- a/packages/core/test/filesystem/filesystem.test.ts
+++ b/packages/core/test/filesystem/filesystem.test.ts
@@ -1,8 +1,8 @@
import { describe, test, expect } from "bun:test"
import { Effect, FileSystem, Layer } from "effect"
-import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { LayerNodePlatform } from "@opencode/util/effect/app-node-platform"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { FSUtil } from "@opencode/util/fs-util"
import { testEffect } from "../lib/effect"
import path from "path"
diff --git a/packages/core/test/filesystem/ignore.test.ts b/packages/core/test/filesystem/ignore.test.ts
index 88f210b1bc7..bda0f757d78 100644
--- a/packages/core/test/filesystem/ignore.test.ts
+++ b/packages/core/test/filesystem/ignore.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import { Ignore } from "@opencode-ai/core/filesystem/ignore"
+import { Ignore } from "@opencode/core/filesystem/ignore"
// @ts-ignore
import { createWrapper } from "@parcel/watcher/wrapper"
diff --git a/packages/core/test/filesystem/location-watcher-policy.test.ts b/packages/core/test/filesystem/location-watcher-policy.test.ts
index 9936729d425..ed6f8fdd3bb 100644
--- a/packages/core/test/filesystem/location-watcher-policy.test.ts
+++ b/packages/core/test/filesystem/location-watcher-policy.test.ts
@@ -1,8 +1,8 @@
import { describe, expect } from "bun:test"
import { Effect, Scope } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LocationWatcherPolicy } from "@opencode-ai/core/filesystem/location-watcher-policy"
-import { State } from "@opencode-ai/core/state"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LocationWatcherPolicy } from "@opencode/core/filesystem/location-watcher-policy"
+import { State } from "@opencode/core/state"
import { testEffect } from "../lib/effect"
const it = testEffect(AppNodeBuilder.build(LocationWatcherPolicy.node))
diff --git a/packages/core/test/filesystem/search.test.ts b/packages/core/test/filesystem/search.test.ts
index ff8e5da2175..4a3f0c9e03c 100644
--- a/packages/core/test/filesystem/search.test.ts
+++ b/packages/core/test/filesystem/search.test.ts
@@ -5,14 +5,14 @@ import os from "os"
import path from "path"
import { Deferred, Effect, Layer } from "effect"
import { TestClock } from "effect/testing"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { FileSystem } from "@opencode-ai/core/filesystem"
-import { Protected } from "@opencode-ai/core/filesystem/protected"
-import { FileSystemSearch } from "@opencode-ai/core/filesystem/search"
-import { Location } from "@opencode-ai/core/location"
-import { Ripgrep } from "@opencode-ai/core/ripgrep"
-import { AbsolutePath, RelativePath } from "@opencode-ai/core/schema"
-import { Workspace } from "@opencode-ai/core/workspace"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { FileSystem } from "@opencode/core/filesystem"
+import { Protected } from "@opencode/core/filesystem/protected"
+import { FileSystemSearch } from "@opencode/core/filesystem/search"
+import { Location } from "@opencode/core/location"
+import { Ripgrep } from "@opencode/core/ripgrep"
+import { AbsolutePath, RelativePath } from "@opencode/core/schema"
+import { Workspace } from "@opencode/core/workspace"
import { location } from "../fixture/location"
import { tmpdir } from "../fixture/tmpdir"
import { it } from "../lib/effect"
diff --git a/packages/core/test/filesystem/watcher.test.ts b/packages/core/test/filesystem/watcher.test.ts
index ee023636ad8..feaaeecb8fe 100644
--- a/packages/core/test/filesystem/watcher.test.ts
+++ b/packages/core/test/filesystem/watcher.test.ts
@@ -3,22 +3,22 @@ import { describe, expect } from "bun:test"
import fs from "fs/promises"
import path from "path"
import { Deferred, Duration, Effect, Fiber, Layer, Option, Schedule, Stream } from "effect"
-import { Config } from "@opencode-ai/core/config"
-import { ConfigLocationWatcherPlugin } from "@opencode-ai/core/config/plugin/location-watcher"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { LocationWatcher } from "@opencode-ai/core/filesystem/location-watcher"
-import { LocationWatcherPolicy } from "@opencode-ai/core/filesystem/location-watcher-policy"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
-import { FileSystem } from "@opencode-ai/schema/filesystem"
-import { Document, Event, Info, type Entry } from "@opencode-ai/schema/config"
-import { Location } from "@opencode-ai/core/location"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginSupervisor } from "@opencode-ai/core/plugin/supervisor"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import { Config } from "@opencode/core/config"
+import { ConfigLocationWatcherPlugin } from "@opencode/core/config/plugin/location-watcher"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { FSUtil } from "@opencode/util/fs-util"
+import { LocationWatcher } from "@opencode/core/filesystem/location-watcher"
+import { LocationWatcherPolicy } from "@opencode/core/filesystem/location-watcher-policy"
+import { Watcher } from "@opencode/core/filesystem/watcher"
+import { FileSystem } from "@opencode/schema/filesystem"
+import { Document, Event, Info, type Entry } from "@opencode/schema/config"
+import { Location } from "@opencode/core/location"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginSupervisor } from "@opencode/core/plugin/supervisor"
+import { AbsolutePath } from "@opencode/core/schema"
import { location } from "../fixture/location"
import { tmpdir } from "../fixture/tmpdir"
import { testEffect } from "../lib/effect"
diff --git a/packages/core/test/fixture/config-nodes.ts b/packages/core/test/fixture/config-nodes.ts
index 71a1fd2acbb..5f4cb935331 100644
--- a/packages/core/test/fixture/config-nodes.ts
+++ b/packages/core/test/fixture/config-nodes.ts
@@ -1,7 +1,7 @@
import { Effect, Layer } from "effect"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { Credential } from "@opencode-ai/core/credential"
-import { WellKnown } from "@opencode-ai/core/wellknown"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { Credential } from "@opencode/core/credential"
+import { WellKnown } from "@opencode/core/wellknown"
export const emptyCredentialNode = makeGlobalNode({
service: Credential.Service,
diff --git a/packages/core/test/fixture/durable-object-storage.ts b/packages/core/test/fixture/durable-object-storage.ts
index fcb5a43a581..a961d71c4cc 100644
--- a/packages/core/test/fixture/durable-object-storage.ts
+++ b/packages/core/test/fixture/durable-object-storage.ts
@@ -1,5 +1,5 @@
import { Database } from "bun:sqlite"
-import type { DurableObjectStorage } from "@opencode-ai/core/database/sqlite.workerd"
+import type { DurableObjectStorage } from "@opencode/core/database/sqlite.workerd"
// Emulates the Durable Object storage API over bun:sqlite so the workerd
// adapter and the workerd server profile can be verified without workerd or
diff --git a/packages/core/test/fixture/effect-flock-worker.ts b/packages/core/test/fixture/effect-flock-worker.ts
index 894254f2956..d9c4aa01b86 100644
--- a/packages/core/test/fixture/effect-flock-worker.ts
+++ b/packages/core/test/fixture/effect-flock-worker.ts
@@ -1,9 +1,9 @@
import fs from "fs/promises"
import os from "os"
import { Effect } from "effect"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { EffectFlock } from "@opencode-ai/util/effect-flock"
-import { Global } from "@opencode-ai/util/global"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { EffectFlock } from "@opencode/util/effect-flock"
+import { Global } from "@opencode/util/global"
type Msg = {
key: string
diff --git a/packages/core/test/fixture/environment.ts b/packages/core/test/fixture/environment.ts
index 3f43043b1c5..31c31535d0f 100644
--- a/packages/core/test/fixture/environment.ts
+++ b/packages/core/test/fixture/environment.ts
@@ -1,6 +1,6 @@
-import { Environment } from "@opencode-ai/core/environment/index"
-import { CrossSpawnSpawner } from "@opencode-ai/util/cross-spawn-spawner"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Environment } from "@opencode/core/environment/index"
+import { CrossSpawnSpawner } from "@opencode/util/cross-spawn-spawner"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { Effect, Layer } from "effect"
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process"
diff --git a/packages/core/test/fixture/flock-worker.ts b/packages/core/test/fixture/flock-worker.ts
index ece4dc6f501..efccd7c5d3f 100644
--- a/packages/core/test/fixture/flock-worker.ts
+++ b/packages/core/test/fixture/flock-worker.ts
@@ -1,5 +1,5 @@
import fs from "fs/promises"
-import { Flock } from "@opencode-ai/util/flock"
+import { Flock } from "@opencode/util/flock"
type Msg = {
key: string
diff --git a/packages/core/test/fixture/git.ts b/packages/core/test/fixture/git.ts
index 94610e90a51..2fadb80f4da 100644
--- a/packages/core/test/fixture/git.ts
+++ b/packages/core/test/fixture/git.ts
@@ -4,7 +4,7 @@ import fs from "fs/promises"
import path from "path"
import { promisify } from "util"
import { pathToFileURL } from "url"
-import { Repository } from "@opencode-ai/core/repository"
+import { Repository } from "@opencode/core/repository"
import { Effect } from "effect"
import { tmpdir } from "./tmpdir"
diff --git a/packages/core/test/fixture/global.ts b/packages/core/test/fixture/global.ts
index f9248dca862..dbe8797b1e1 100644
--- a/packages/core/test/fixture/global.ts
+++ b/packages/core/test/fixture/global.ts
@@ -1,5 +1,5 @@
import path from "path"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Effect, Layer } from "effect"
import { tmpdir } from "./tmpdir"
diff --git a/packages/core/test/fixture/location.ts b/packages/core/test/fixture/location.ts
index d82d439943a..73734033531 100644
--- a/packages/core/test/fixture/location.ts
+++ b/packages/core/test/fixture/location.ts
@@ -1,6 +1,6 @@
-import { Location } from "@opencode-ai/core/location"
-import { Project } from "@opencode-ai/core/project"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import { Location } from "@opencode/core/location"
+import { Project } from "@opencode/core/project"
+import { AbsolutePath } from "@opencode/core/schema"
import { Effect, Layer } from "effect"
import { tmpdir } from "./tmpdir"
diff --git a/packages/core/test/fixture/mcp.ts b/packages/core/test/fixture/mcp.ts
index e4200f1452e..e39dd6ab9db 100644
--- a/packages/core/test/fixture/mcp.ts
+++ b/packages/core/test/fixture/mcp.ts
@@ -1,8 +1,8 @@
import { Effect, Layer } from "effect"
-import { Config } from "@opencode-ai/core/config"
-import { Location } from "@opencode-ai/core/location"
-import { Mcp } from "@opencode-ai/core/mcp/index"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import { Config } from "@opencode/core/config"
+import { Location } from "@opencode/core/location"
+import { Mcp } from "@opencode/core/mcp/index"
+import { AbsolutePath } from "@opencode/core/schema"
import { location } from "./location"
export const emptyMcpLayer = Layer.succeed(
diff --git a/packages/core/test/fixture/models.ts b/packages/core/test/fixture/models.ts
index dfad11c4aef..fc0831086d5 100644
--- a/packages/core/test/fixture/models.ts
+++ b/packages/core/test/fixture/models.ts
@@ -1,4 +1,4 @@
-import { ModelsDev } from "@opencode-ai/core/models-dev"
+import { ModelsDev } from "@opencode/core/models-dev"
// Core is env-free, so the default ModelsDev node refreshes from models.dev
// unless the graph says otherwise. Real-Location fixtures opt out here; the
diff --git a/packages/core/test/fixture/process-lock-worker.ts b/packages/core/test/fixture/process-lock-worker.ts
index 8a283c68fed..2f8a063b8fd 100644
--- a/packages/core/test/fixture/process-lock-worker.ts
+++ b/packages/core/test/fixture/process-lock-worker.ts
@@ -1,4 +1,4 @@
-import { ProcessLock } from "@opencode-ai/core/util/process-lock"
+import { ProcessLock } from "@opencode/core/util/process-lock"
import { Effect, Schema } from "effect"
import fs from "node:fs/promises"
diff --git a/packages/core/test/fixture/prompt-location.ts b/packages/core/test/fixture/prompt-location.ts
index 79a092f9937..13f2a42c3b3 100644
--- a/packages/core/test/fixture/prompt-location.ts
+++ b/packages/core/test/fixture/prompt-location.ts
@@ -1,13 +1,13 @@
-import { Bus } from "@opencode-ai/core/bus"
-import { Image } from "@opencode-ai/core/image"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import type { LocationServices } from "@opencode-ai/core/location-services"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { Skill } from "@opencode-ai/core/skill"
-import type { Location } from "@opencode-ai/schema/location"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Image } from "@opencode/core/image"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import type { LocationServices } from "@opencode/core/location-services"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { Skill } from "@opencode/core/skill"
+import type { Location } from "@opencode/schema/location"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { Effect, Layer, LayerMap } from "effect"
// Plain-prompt unit fixtures use virtual directories.
diff --git a/packages/core/test/form.test.ts b/packages/core/test/form.test.ts
index 29c790b4b53..fe929fd97b4 100644
--- a/packages/core/test/form.test.ts
+++ b/packages/core/test/form.test.ts
@@ -1,10 +1,10 @@
import { describe, expect } from "bun:test"
import { Deferred, Effect, Exit, Fiber } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Form } from "@opencode-ai/core/form"
-import { SessionSchema } from "@opencode-ai/core/session/schema"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Form } from "@opencode/core/form"
+import { SessionSchema } from "@opencode/core/session/schema"
import { testEffect } from "./lib/effect"
const forms = AppNodeBuilder.build(LayerNode.group([Bus.node, Form.node]))
diff --git a/packages/core/test/formatter.test.ts b/packages/core/test/formatter.test.ts
index 837813b2f22..2d03c3620ef 100644
--- a/packages/core/test/formatter.test.ts
+++ b/packages/core/test/formatter.test.ts
@@ -2,16 +2,16 @@ import fs from "fs/promises"
import path from "path"
import { describe, expect } from "bun:test"
import { Deferred, Effect, Fiber } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { LocationServiceMap } from "@opencode-ai/core/location-services"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { SdkPlugins } from "@opencode-ai/core/plugin/sdk"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Info } from "@opencode-ai/schema/config"
-import { Global } from "@opencode-ai/util/global"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { LocationServiceMap } from "@opencode/core/location-services"
+import { Plugin } from "@opencode/core/plugin"
+import { SdkPlugins } from "@opencode/core/plugin/sdk"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Info } from "@opencode/schema/config"
+import { Global } from "@opencode/util/global"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { Formatter } from "../src/formatter"
import { Location } from "../src/location"
import { tempGlobalLayer } from "./fixture/global"
diff --git a/packages/core/test/generate.test.ts b/packages/core/test/generate.test.ts
index 494bcca2cee..a85ae654593 100644
--- a/packages/core/test/generate.test.ts
+++ b/packages/core/test/generate.test.ts
@@ -1,15 +1,15 @@
import { expect } from "bun:test"
-import { LanguageModel } from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols"
-import { TestLLM } from "@opencode-ai/ai/testing"
-import { AISDK } from "@opencode-ai/core/aisdk"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Generate } from "@opencode-ai/core/generate"
-import { Integration } from "@opencode-ai/core/integration"
-import { ModelResolver } from "@opencode-ai/core/model-resolver"
-import { ID, Info, Ref } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
-import { Npm } from "@opencode-ai/util/npm"
+import { LanguageModel } from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols"
+import { TestLLM } from "@opencode/ai/testing"
+import { AISDK } from "@opencode/core/aisdk"
+import { Catalog } from "@opencode/core/catalog"
+import { Generate } from "@opencode/core/generate"
+import { Integration } from "@opencode/core/integration"
+import { ModelResolver } from "@opencode/core/model-resolver"
+import { ID, Info, Ref } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
+import { Npm } from "@opencode/util/npm"
import { Effect, Layer } from "effect"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/git.test.ts b/packages/core/test/git.test.ts
index 49b3e59db29..3a07e7d69e3 100644
--- a/packages/core/test/git.test.ts
+++ b/packages/core/test/git.test.ts
@@ -3,9 +3,9 @@ import { $ } from "bun"
import fs from "fs/promises"
import path from "path"
import { Effect } from "effect"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Git } from "@opencode-ai/core/git"
-import { AbsolutePath, RelativePath } from "@opencode-ai/core/schema"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Git } from "@opencode/core/git"
+import { AbsolutePath, RelativePath } from "@opencode/core/schema"
import { branch, commit, initRepo, read, withRemote } from "./fixture/git"
import { tmpdir } from "./fixture/tmpdir"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/github-copilot/convert-to-copilot-messages.test.ts b/packages/core/test/github-copilot/convert-to-copilot-messages.test.ts
index 2654810441d..0cb57d347de 100644
--- a/packages/core/test/github-copilot/convert-to-copilot-messages.test.ts
+++ b/packages/core/test/github-copilot/convert-to-copilot-messages.test.ts
@@ -1,4 +1,4 @@
-import { convertToOpenAICompatibleChatMessages } from "@opencode-ai/core/github-copilot/chat/convert-to-openai-compatible-chat-messages"
+import { convertToOpenAICompatibleChatMessages } from "@opencode/core/github-copilot/chat/convert-to-openai-compatible-chat-messages"
import { describe, test, expect } from "bun:test"
describe("system messages", () => {
diff --git a/packages/core/test/github-copilot/copilot-chat-model.test.ts b/packages/core/test/github-copilot/copilot-chat-model.test.ts
index 0bc388787d5..7568b98eabf 100644
--- a/packages/core/test/github-copilot/copilot-chat-model.test.ts
+++ b/packages/core/test/github-copilot/copilot-chat-model.test.ts
@@ -1,4 +1,4 @@
-import { OpenAICompatibleChatLanguageModel } from "@opencode-ai/core/github-copilot/chat/openai-compatible-chat-language-model"
+import { OpenAICompatibleChatLanguageModel } from "@opencode/core/github-copilot/chat/openai-compatible-chat-language-model"
import { describe, test, expect, mock } from "bun:test"
import type { LanguageModelV3Prompt } from "@ai-sdk/provider"
diff --git a/packages/core/test/github-copilot/models.test.ts b/packages/core/test/github-copilot/models.test.ts
index 0c323cc4c2f..b08a4f6e194 100644
--- a/packages/core/test/github-copilot/models.test.ts
+++ b/packages/core/test/github-copilot/models.test.ts
@@ -1,7 +1,7 @@
import { expect, test } from "bun:test"
-import { CopilotModels } from "@opencode-ai/core/github-copilot/models"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
+import { CopilotModels } from "@opencode/core/github-copilot/models"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
test("defensively syncs advertised Copilot models", async () => {
const server = Bun.serve({
diff --git a/packages/core/test/github-copilot/openai-responses-language-model.test.ts b/packages/core/test/github-copilot/openai-responses-language-model.test.ts
index a68c8f469bc..5a3b2108637 100644
--- a/packages/core/test/github-copilot/openai-responses-language-model.test.ts
+++ b/packages/core/test/github-copilot/openai-responses-language-model.test.ts
@@ -1,5 +1,5 @@
-import { OpenAIResponsesLanguageModel } from "@opencode-ai/core/github-copilot/responses/openai-responses-language-model"
-import { convertToOpenAIResponsesInput } from "@opencode-ai/core/github-copilot/responses/convert-to-openai-responses-input"
+import { OpenAIResponsesLanguageModel } from "@opencode/core/github-copilot/responses/openai-responses-language-model"
+import { convertToOpenAIResponsesInput } from "@opencode/core/github-copilot/responses/convert-to-openai-responses-input"
import { describe, test, expect, mock } from "bun:test"
import type { LanguageModelV3Prompt, LanguageModelV3ProviderTool, LanguageModelV3StreamPart } from "@ai-sdk/provider"
diff --git a/packages/core/test/github-copilot/openai-responses-prepare-tools.test.ts b/packages/core/test/github-copilot/openai-responses-prepare-tools.test.ts
index 154392662de..66b0f81d9c8 100644
--- a/packages/core/test/github-copilot/openai-responses-prepare-tools.test.ts
+++ b/packages/core/test/github-copilot/openai-responses-prepare-tools.test.ts
@@ -4,7 +4,7 @@ import type {
LanguageModelV3FunctionTool,
LanguageModelV3ProviderTool,
} from "@ai-sdk/provider"
-import { prepareResponsesTools } from "@opencode-ai/core/github-copilot/responses/openai-responses-prepare-tools"
+import { prepareResponsesTools } from "@opencode/core/github-copilot/responses/openai-responses-prepare-tools"
function prepare(strict: boolean | undefined, strictJsonSchema: boolean) {
const tool: LanguageModelV3FunctionTool = {
diff --git a/packages/core/test/instance-vanilla.test.ts b/packages/core/test/instance-vanilla.test.ts
index 3db41381aef..75d450aa56d 100644
--- a/packages/core/test/instance-vanilla.test.ts
+++ b/packages/core/test/instance-vanilla.test.ts
@@ -2,16 +2,16 @@ import fs from "fs/promises"
import path from "path"
import { describe, expect } from "bun:test"
import { Duration, Effect, Layer, LayerMap } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Global } from "@opencode-ai/util/global"
-import { Config } from "@opencode-ai/core/config"
-import { Instance } from "@opencode-ai/core/instance"
-import { InstructionDiscovery } from "@opencode-ai/core/instruction-discovery"
-import { LocationServiceMap } from "@opencode-ai/core/location-services"
-import { Location } from "@opencode-ai/core/location"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Global } from "@opencode/util/global"
+import { Config } from "@opencode/core/config"
+import { Instance } from "@opencode/core/instance"
+import { InstructionDiscovery } from "@opencode/core/instruction-discovery"
+import { LocationServiceMap } from "@opencode/core/location-services"
+import { Location } from "@opencode/core/location"
+import { Plugin } from "@opencode/core/plugin"
+import { AbsolutePath } from "@opencode/core/schema"
import { tmpdir } from "./fixture/tmpdir"
import { tempGlobalLayer } from "./fixture/global"
import { offlineModels } from "./fixture/models"
diff --git a/packages/core/test/instruction-discovery.test.ts b/packages/core/test/instruction-discovery.test.ts
index f6c21957954..e5a4d701284 100644
--- a/packages/core/test/instruction-discovery.test.ts
+++ b/packages/core/test/instruction-discovery.test.ts
@@ -2,16 +2,16 @@ import { describe, expect } from "bun:test"
import { Deferred, Effect, Fiber, Layer, Stream } from "effect"
import fs from "fs/promises"
import path from "path"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Bus } from "@opencode-ai/core/bus"
-import { ConfigInstructionPlugin } from "@opencode-ai/core/config/plugin/instruction"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
-import { InstructionDiscovery } from "@opencode-ai/core/instruction-discovery"
-import { Location } from "@opencode-ai/core/location"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Bus } from "@opencode/core/bus"
+import { ConfigInstructionPlugin } from "@opencode/core/config/plugin/instruction"
+import { Watcher } from "@opencode/core/filesystem/watcher"
+import { InstructionDiscovery } from "@opencode/core/instruction-discovery"
+import { Location } from "@opencode/core/location"
+import { AbsolutePath } from "@opencode/core/schema"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { tempGlobalLayer } from "./fixture/global"
import { location } from "./fixture/location"
import { tmpdir } from "./fixture/tmpdir"
diff --git a/packages/core/test/instruction-state.test.ts b/packages/core/test/instruction-state.test.ts
index 023c9a0b4b0..13abc386782 100644
--- a/packages/core/test/instruction-state.test.ts
+++ b/packages/core/test/instruction-state.test.ts
@@ -1,25 +1,25 @@
import { describe, expect } from "bun:test"
import { and, asc, eq } from "drizzle-orm"
import { Effect, Schema } from "effect"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Event } from "@opencode-ai/schema/event"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { Instructions } from "@opencode-ai/core/instructions/index"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { InstructionState } from "@opencode-ai/core/session/instruction-state"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionSchema } from "@opencode-ai/core/session/schema"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Event } from "@opencode/schema/event"
+import { EventTable } from "@opencode/core/event/sql"
+import { Instructions } from "@opencode/core/instructions/index"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { AbsolutePath } from "@opencode/core/schema"
+import { InstructionState } from "@opencode/core/session/instruction-state"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionSchema } from "@opencode/core/session/schema"
import {
InstructionBlobTable,
InstructionStateTable,
SessionMessageTable,
SessionTable,
-} from "@opencode-ai/core/session/sql"
+} from "@opencode/core/session/sql"
import { testEffect } from "./lib/effect"
const it = testEffect(
diff --git a/packages/core/test/instructions/builtins.test.ts b/packages/core/test/instructions/builtins.test.ts
index 60453fa8101..c6e7df1b8e6 100644
--- a/packages/core/test/instructions/builtins.test.ts
+++ b/packages/core/test/instructions/builtins.test.ts
@@ -2,13 +2,13 @@ import { describe, expect } from "bun:test"
import os from "os"
import { Effect, Layer } from "effect"
import { TestClock } from "effect/testing"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Location } from "@opencode-ai/core/location"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { InstructionBuiltIns } from "@opencode-ai/core/instructions/builtins"
-import { SessionSchema } from "@opencode-ai/core/session/schema"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Location } from "@opencode/core/location"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
+import { AbsolutePath } from "@opencode/core/schema"
+import { InstructionBuiltIns } from "@opencode/core/instructions/builtins"
+import { SessionSchema } from "@opencode/core/session/schema"
import { location } from "../fixture/location"
import { testEffect } from "../lib/effect"
import { readInitial, readUpdate } from "../lib/instructions"
diff --git a/packages/core/test/instructions/index.test.ts b/packages/core/test/instructions/index.test.ts
index e54483d6eaa..4b02a925082 100644
--- a/packages/core/test/instructions/index.test.ts
+++ b/packages/core/test/instructions/index.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import { Cause, Effect, Exit, Option, Schema } from "effect"
-import { Instructions } from "@opencode-ai/core/instructions/index"
+import { Instructions } from "@opencode/core/instructions/index"
import { it } from "../lib/effect"
const key = (value: string) => Instructions.Key.make(value)
diff --git a/packages/core/test/integration.test.ts b/packages/core/test/integration.test.ts
index cd43187366a..f670f8f1847 100644
--- a/packages/core/test/integration.test.ts
+++ b/packages/core/test/integration.test.ts
@@ -1,13 +1,13 @@
import { describe, expect } from "bun:test"
import { Cause, Clock, Duration, Effect, Exit, Fiber, Layer, Scope, Stream } from "effect"
import { TestClock } from "effect/testing"
-import { Credential } from "@opencode-ai/core/credential"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Integration } from "@opencode-ai/core/integration"
-import { State } from "@opencode-ai/core/state"
+import { Credential } from "@opencode/core/credential"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Integration } from "@opencode/core/integration"
+import { State } from "@opencode/core/state"
import { testEffect } from "./lib/effect"
const it = testEffect(AppNodeBuilder.build(LayerNode.group([Integration.node, Credential.node, Bus.node])))
diff --git a/packages/core/test/job.test.ts b/packages/core/test/job.test.ts
index 62302facd2e..5c30051e6ae 100644
--- a/packages/core/test/job.test.ts
+++ b/packages/core/test/job.test.ts
@@ -1,10 +1,10 @@
import { describe, expect } from "bun:test"
-import { Job } from "@opencode-ai/core/job"
-import { KV } from "@opencode-ai/core/kv"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Job } from "@opencode/core/job"
+import { KV } from "@opencode/core/kv"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { Deferred, Effect, Exit, Fiber, Scope } from "effect"
-import { SessionSchema } from "@opencode-ai/core/session/schema"
+import { SessionSchema } from "@opencode/core/session/schema"
import { testEffect } from "./lib/effect"
const it = testEffect(AppNodeBuilder.build(LayerNode.group([Job.node, KV.node])))
diff --git a/packages/core/test/kv.test.ts b/packages/core/test/kv.test.ts
index 5eba7e75c96..f3b7743d5c1 100644
--- a/packages/core/test/kv.test.ts
+++ b/packages/core/test/kv.test.ts
@@ -1,7 +1,7 @@
import { describe, expect } from "bun:test"
import { Effect } from "effect"
-import { KV } from "@opencode-ai/core/kv"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { KV } from "@opencode/core/kv"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { testEffect } from "./lib/effect"
const it = testEffect(LayerNode.compile(KV.node))
diff --git a/packages/core/test/lib/environment-conformance.ts b/packages/core/test/lib/environment-conformance.ts
index 786407c7b89..63d96924c72 100644
--- a/packages/core/test/lib/environment-conformance.ts
+++ b/packages/core/test/lib/environment-conformance.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
-import { Failed, NotFound, WrongKind, type Files } from "@opencode-ai/core/environment/index"
+import { Failed, NotFound, WrongKind, type Files } from "@opencode/core/environment/index"
export interface EnvironmentHarness {
readonly files: Files
diff --git a/packages/core/test/lib/image.ts b/packages/core/test/lib/image.ts
index 72ac03fdf1e..60289ad3cde 100644
--- a/packages/core/test/lib/image.ts
+++ b/packages/core/test/lib/image.ts
@@ -1,4 +1,4 @@
-import { Image } from "@opencode-ai/core/image"
+import { Image } from "@opencode/core/image"
import { Effect, Layer } from "effect"
/** Passthrough resizer for tests that build Tool.node without a Location. */
diff --git a/packages/core/test/lib/instructions.ts b/packages/core/test/lib/instructions.ts
index aae2d283744..060bb7683f3 100644
--- a/packages/core/test/lib/instructions.ts
+++ b/packages/core/test/lib/instructions.ts
@@ -1,5 +1,5 @@
import { Effect, Option, Schema } from "effect"
-import { Instructions } from "@opencode-ai/core/instructions/index"
+import { Instructions } from "@opencode/core/instructions/index"
export interface State {
readonly values: Readonly>
diff --git a/packages/core/test/lib/permission.ts b/packages/core/test/lib/permission.ts
index 63787794ecf..6c8d2420a3a 100644
--- a/packages/core/test/lib/permission.ts
+++ b/packages/core/test/lib/permission.ts
@@ -1,4 +1,4 @@
-import { Permission } from "@opencode-ai/core/permission"
+import { Permission } from "@opencode/core/permission"
import { Layer } from "effect"
export const permissionLayer = (overrides: Partial = {}) =>
diff --git a/packages/core/test/lib/project.ts b/packages/core/test/lib/project.ts
index 9c45d984a7e..5ae3a27af62 100644
--- a/packages/core/test/lib/project.ts
+++ b/packages/core/test/lib/project.ts
@@ -1,7 +1,7 @@
-import { Database } from "@opencode-ai/core/database/database"
-import { Project } from "@opencode-ai/core/project"
-import { upsertProject } from "@opencode-ai/core/project/sql"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { Database } from "@opencode/core/database/database"
+import { Project } from "@opencode/core/project"
+import { upsertProject } from "@opencode/core/project/sql"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { Effect, Layer } from "effect"
export const globalProjectNode = makeGlobalNode({
diff --git a/packages/core/test/lib/tool.ts b/packages/core/test/lib/tool.ts
index ce02d51de3c..6275ffbfcea 100644
--- a/packages/core/test/lib/tool.ts
+++ b/packages/core/test/lib/tool.ts
@@ -1,11 +1,11 @@
-import { Agent } from "@opencode-ai/core/agent"
-import { CodeModeCatalog } from "@opencode-ai/core/codemode/catalog"
-import type { Permission } from "@opencode-ai/core/permission"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { toSessionError } from "@opencode-ai/core/session/to-session-error"
-import type { SessionError } from "@opencode-ai/schema/session-error"
-import { Tool } from "@opencode-ai/core/tool"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
+import { Agent } from "@opencode/core/agent"
+import { CodeModeCatalog } from "@opencode/core/codemode/catalog"
+import type { Permission } from "@opencode/core/permission"
+import { SessionMessage } from "@opencode/core/session/message"
+import { toSessionError } from "@opencode/core/session/to-session-error"
+import type { SessionError } from "@opencode/schema/session-error"
+import { Tool } from "@opencode/core/tool"
+import type { Context } from "@opencode/plugin/effect/plugin"
import { Effect, type Scope } from "effect"
import { host } from "../plugin/host"
diff --git a/packages/core/test/lib/websearch.ts b/packages/core/test/lib/websearch.ts
index ac3bae2da97..defe86af230 100644
--- a/packages/core/test/lib/websearch.ts
+++ b/packages/core/test/lib/websearch.ts
@@ -2,12 +2,12 @@ export * as TestWebSearch from "./websearch"
import { Context, Deferred, Effect, Layer } from "effect"
import { HttpClientError, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { KV } from "@opencode-ai/core/kv"
-import { WebSearch } from "@opencode-ai/core/websearch"
-import type { Session } from "@opencode-ai/schema/session"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { KV } from "@opencode/core/kv"
+import { WebSearch } from "@opencode/core/websearch"
+import type { Session } from "@opencode/schema/session"
export interface Interface extends WebSearch.Interface {
readonly queries: readonly WebSearch.Input[]
diff --git a/packages/core/test/location-activity.test.ts b/packages/core/test/location-activity.test.ts
index 689d0392220..4ca873afbc0 100644
--- a/packages/core/test/location-activity.test.ts
+++ b/packages/core/test/location-activity.test.ts
@@ -1,25 +1,25 @@
import { describe, expect } from "bun:test"
import { Context, Deferred, Duration, Effect, Fiber, Layer, LayerMap, RcMap, Schema } from "effect"
import { TestClock } from "effect/testing"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { Form } from "@opencode-ai/core/form"
-import { Location } from "@opencode-ai/core/location"
-import { LocationActivity } from "@opencode-ai/core/location-activity"
-import { LocationServiceMap, type LocationServices } from "@opencode-ai/core/location-services"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionRunner } from "@opencode-ai/core/session/runner/index"
-import { SessionTable } from "@opencode-ai/core/session/sql"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { Workspace } from "@opencode-ai/core/workspace"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { Form } from "@opencode/core/form"
+import { Location } from "@opencode/core/location"
+import { LocationActivity } from "@opencode/core/location-activity"
+import { LocationServiceMap, type LocationServices } from "@opencode/core/location-services"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionRunner } from "@opencode/core/session/runner/index"
+import { SessionTable } from "@opencode/core/session/sql"
+import { SessionStore } from "@opencode/core/session/store"
+import { Workspace } from "@opencode/core/workspace"
import { testEffect } from "./lib/effect"
// Keep real execution ownership, location caching, forms, and eviction. The fixture
diff --git a/packages/core/test/location-filesystem.test.ts b/packages/core/test/location-filesystem.test.ts
index 5e8e291b82a..8ce5a27b02e 100644
--- a/packages/core/test/location-filesystem.test.ts
+++ b/packages/core/test/location-filesystem.test.ts
@@ -2,11 +2,11 @@ import fs from "fs/promises"
import path from "path"
import { describe, expect } from "bun:test"
import { Effect, Exit, Layer } from "effect"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { FileSystem } from "@opencode-ai/core/filesystem"
-import { Location } from "@opencode-ai/core/location"
-import { AbsolutePath, RelativePath } from "@opencode-ai/core/schema"
-import { Workspace } from "@opencode-ai/core/workspace"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { FileSystem } from "@opencode/core/filesystem"
+import { Location } from "@opencode/core/location"
+import { AbsolutePath, RelativePath } from "@opencode/core/schema"
+import { Workspace } from "@opencode/core/workspace"
import { location } from "./fixture/location"
import { tmpdir } from "./fixture/tmpdir"
import { it } from "./lib/effect"
diff --git a/packages/core/test/location-layer.test.ts b/packages/core/test/location-layer.test.ts
index 41216cba752..8c9f28cf984 100644
--- a/packages/core/test/location-layer.test.ts
+++ b/packages/core/test/location-layer.test.ts
@@ -1,8 +1,8 @@
import fs from "fs/promises"
import path from "path"
import { describe, expect } from "bun:test"
-import { Config } from "@opencode-ai/schema/config"
-import { Money } from "@opencode-ai/schema/money"
+import { Config } from "@opencode/schema/config"
+import { Money } from "@opencode/schema/money"
import {
Cause,
DateTime,
@@ -22,24 +22,24 @@ import {
Stream,
} from "effect"
import { TestClock } from "effect/testing"
-import { Agent } from "@opencode-ai/core/agent"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Global } from "@opencode-ai/util/global"
-import { LocationServiceMap, type LocationServices } from "@opencode-ai/core/location-services"
-import { LocationActivity } from "@opencode-ai/core/location-activity"
-import { Location } from "@opencode-ai/core/location"
-import { LocationWatcher } from "@opencode-ai/core/filesystem/location-watcher"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { Model } from "@opencode-ai/core/model"
-import { Project } from "@opencode-ai/core/project"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { Workspace } from "@opencode-ai/core/workspace"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
+import { Agent } from "@opencode/core/agent"
+import { Catalog } from "@opencode/core/catalog"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Global } from "@opencode/util/global"
+import { LocationServiceMap, type LocationServices } from "@opencode/core/location-services"
+import { LocationActivity } from "@opencode/core/location-activity"
+import { Location } from "@opencode/core/location"
+import { LocationWatcher } from "@opencode/core/filesystem/location-watcher"
+import { Plugin } from "@opencode/core/plugin"
+import { Model } from "@opencode/core/model"
+import { Project } from "@opencode/core/project"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { Workspace } from "@opencode/core/workspace"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
import { tmpdir, tmpdirScoped } from "./fixture/tmpdir"
import { tempGlobalLayer } from "./fixture/global"
import { offlineModels } from "./fixture/models"
diff --git a/packages/core/test/location.test.ts b/packages/core/test/location.test.ts
index 3512c8f2ee6..499b0e61d1b 100644
--- a/packages/core/test/location.test.ts
+++ b/packages/core/test/location.test.ts
@@ -1,10 +1,10 @@
import { describe, expect } from "bun:test"
import { Effect, Layer } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Location } from "@opencode-ai/core/location"
-import { Project } from "@opencode-ai/core/project"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Workspace } from "@opencode-ai/core/workspace"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Location } from "@opencode/core/location"
+import { Project } from "@opencode/core/project"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Workspace } from "@opencode/core/workspace"
import { testEffect } from "./lib/effect"
const workspaceID = Workspace.ID.make("wrk_test")
diff --git a/packages/core/test/logging.test.ts b/packages/core/test/logging.test.ts
index 88269ce5630..1b3aab27518 100644
--- a/packages/core/test/logging.test.ts
+++ b/packages/core/test/logging.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test"
import path from "path"
-import { Global } from "@opencode-ai/util/global"
-import { Logging } from "@opencode-ai/util/observability/logging"
+import { Global } from "@opencode/util/global"
+import { Logging } from "@opencode/util/observability/logging"
describe("Logging", () => {
test("uses a local-specific log file for local installs", () => {
diff --git a/packages/core/test/mcp-instructions.test.ts b/packages/core/test/mcp-instructions.test.ts
index 870974dacd2..8deac660c0d 100644
--- a/packages/core/test/mcp-instructions.test.ts
+++ b/packages/core/test/mcp-instructions.test.ts
@@ -1,11 +1,11 @@
import { describe, expect } from "bun:test"
import { Effect, Layer } from "effect"
-import { Agent } from "@opencode-ai/core/agent"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Mcp } from "@opencode-ai/core/mcp/index"
-import { McpInstructions } from "@opencode-ai/core/mcp/instructions"
-import { Permission } from "@opencode-ai/core/permission"
-import { McpTool } from "@opencode-ai/core/tool/mcp"
+import { Agent } from "@opencode/core/agent"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Mcp } from "@opencode/core/mcp/index"
+import { McpInstructions } from "@opencode/core/mcp/instructions"
+import { Permission } from "@opencode/core/permission"
+import { McpTool } from "@opencode/core/tool/mcp"
import { it } from "./lib/effect"
import { readInitial, readUpdate } from "./lib/instructions"
diff --git a/packages/core/test/mcp-oauth.test.ts b/packages/core/test/mcp-oauth.test.ts
index cfad7553257..6fd6656a6e0 100644
--- a/packages/core/test/mcp-oauth.test.ts
+++ b/packages/core/test/mcp-oauth.test.ts
@@ -1,9 +1,9 @@
import { afterAll, describe, expect, test } from "bun:test"
import { auth, refreshAuthorization } from "@modelcontextprotocol/sdk/client/auth.js"
-import { ConfigMCP } from "@opencode-ai/schema/config/mcp"
-import { Credential } from "@opencode-ai/schema/credential"
-import { Integration } from "@opencode-ai/core/integration"
-import { McpOAuth } from "@opencode-ai/core/mcp/oauth"
+import { ConfigMCP } from "@opencode/schema/config/mcp"
+import { Credential } from "@opencode/schema/credential"
+import { Integration } from "@opencode/core/integration"
+import { McpOAuth } from "@opencode/core/mcp/oauth"
import { Effect } from "effect"
const authServer = Bun.serve({ port: 0, fetch: () => new Response(null, { status: 404 }) })
diff --git a/packages/core/test/mcp.test.ts b/packages/core/test/mcp.test.ts
index 68039b86ce1..ac0ebde5b5e 100644
--- a/packages/core/test/mcp.test.ts
+++ b/packages/core/test/mcp.test.ts
@@ -13,30 +13,30 @@ import {
ListToolsRequestSchema,
ReadResourceRequestSchema,
} from "@modelcontextprotocol/sdk/types.js"
-import { Document, Event, Info } from "@opencode-ai/schema/config"
-import { ConfigMCP } from "@opencode-ai/schema/config/mcp"
-import { McpEvent } from "@opencode-ai/schema/mcp-event"
-import { Config } from "@opencode-ai/core/config"
-import { ConfigMcpPlugin } from "@opencode-ai/core/config/plugin/mcp"
-import { Credential } from "@opencode-ai/core/credential"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { ID, type Payload } from "@opencode-ai/schema/event"
-import { Form } from "@opencode-ai/core/form"
-import { Integration } from "@opencode-ai/core/integration"
-import { Environment } from "@opencode-ai/core/environment/index"
-import { EnvironmentUnavailable } from "@opencode-ai/core/environment/unavailable"
-import { Location } from "@opencode-ai/core/location"
-import { Mcp } from "@opencode-ai/core/mcp/index"
-import { McpClient } from "@opencode-ai/core/mcp/client"
-import { McpStdio } from "@opencode-ai/core/mcp/stdio"
-import { Permission } from "@opencode-ai/core/permission"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { State } from "@opencode-ai/core/state"
-import { McpTool } from "@opencode-ai/core/tool/mcp"
-import { Tool } from "@opencode-ai/core/tool"
+import { Document, Event, Info } from "@opencode/schema/config"
+import { ConfigMCP } from "@opencode/schema/config/mcp"
+import { McpEvent } from "@opencode/schema/mcp-event"
+import { Config } from "@opencode/core/config"
+import { ConfigMcpPlugin } from "@opencode/core/config/plugin/mcp"
+import { Credential } from "@opencode/core/credential"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { ID, type Payload } from "@opencode/schema/event"
+import { Form } from "@opencode/core/form"
+import { Integration } from "@opencode/core/integration"
+import { Environment } from "@opencode/core/environment/index"
+import { EnvironmentUnavailable } from "@opencode/core/environment/unavailable"
+import { Location } from "@opencode/core/location"
+import { Mcp } from "@opencode/core/mcp/index"
+import { McpClient } from "@opencode/core/mcp/client"
+import { McpStdio } from "@opencode/core/mcp/stdio"
+import { Permission } from "@opencode/core/permission"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { State } from "@opencode/core/state"
+import { McpTool } from "@opencode/core/tool/mcp"
+import { Tool } from "@opencode/core/tool"
import {
Context,
Deferred,
@@ -55,7 +55,7 @@ import {
import { TestClock } from "effect/testing"
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process"
import { ExitCode, makeHandle, ProcessId } from "effect/unstable/process/ChildProcessSpawner"
-import { Image } from "@opencode-ai/core/image"
+import { Image } from "@opencode/core/image"
import { advance, drain } from "./lib/clock"
import { testEffect } from "./lib/effect"
import { imagePassthrough } from "./lib/image"
diff --git a/packages/core/test/modal/models.test.ts b/packages/core/test/modal/models.test.ts
index a74e9d15ed1..fb12f0446cb 100644
--- a/packages/core/test/modal/models.test.ts
+++ b/packages/core/test/modal/models.test.ts
@@ -1,9 +1,9 @@
import { expect, test } from "bun:test"
-import { ModalModels } from "@opencode-ai/core/modal/models"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
-import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
-import { Money } from "@opencode-ai/schema/money"
+import { ModalModels } from "@opencode/core/modal/models"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
+import { ProviderPlugins } from "@opencode/core/plugin/provider"
+import { Money } from "@opencode/schema/money"
const providerID = Provider.ID.make("modal")
diff --git a/packages/core/test/model-resolver.test.ts b/packages/core/test/model-resolver.test.ts
index 02f9cd04c3e..c11a997eeaf 100644
--- a/packages/core/test/model-resolver.test.ts
+++ b/packages/core/test/model-resolver.test.ts
@@ -1,17 +1,17 @@
import { describe, expect } from "bun:test"
-import { LLM, LanguageModel, Message } from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols"
-import { compileRequest } from "@opencode-ai/ai/route/client"
+import { LLM, LanguageModel, Message } from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols"
+import { compileRequest } from "@opencode/ai/route/client"
import { ConfigProvider, Effect, Layer } from "effect"
import { Headers } from "effect/unstable/http"
-import { Credential } from "@opencode-ai/core/credential"
-import { Integration } from "@opencode-ai/core/integration"
-import { Compatibility, ID, Info, VariantID } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
-import { ModelResolver } from "@opencode-ai/core/model-resolver"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { AISDK } from "@opencode-ai/core/aisdk"
-import { Npm } from "@opencode-ai/util/npm"
+import { Credential } from "@opencode/core/credential"
+import { Integration } from "@opencode/core/integration"
+import { Compatibility, ID, Info, VariantID } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
+import { ModelResolver } from "@opencode/core/model-resolver"
+import { Catalog } from "@opencode/core/catalog"
+import { AISDK } from "@opencode/core/aisdk"
+import { Npm } from "@opencode/util/npm"
import { it } from "./lib/effect"
interface ModelOptions {
@@ -315,13 +315,13 @@ describe("ModelResolver", () => {
settings: { baseURL: "https://mistral.example.com/v1" },
headers: { "cf-access-token": "access-token" },
}),
- model("@opencode-ai/ai/providers/mistral", {
+ model("@opencode/ai/providers/mistral", {
providerID: Provider.ID.make("gateway"),
settings: { baseURL: "https://native-mistral.example.com/v1" },
headers: { "cf-access-token": "access-token" },
}),
...["baseten", "cloudflare-ai-gateway", "cloudflare-workers-ai", "deepseek", "fireworks"].map((name) =>
- model(`@opencode-ai/ai/providers/${name}`, {
+ model(`@opencode/ai/providers/${name}`, {
providerID: Provider.ID.make("gateway"),
settings: { baseURL: `https://${name}.example.com/v1` },
headers: { "cf-access-token": "access-token" },
@@ -718,7 +718,7 @@ describe("ModelResolver", () => {
it.effect("applies plugin-projected OpenAI endpoint and headers", () =>
Effect.gen(function* () {
const resolved = yield* ModelResolver.fromCatalogModel(
- model("@opencode-ai/ai/providers/openai", {
+ model("@opencode/ai/providers/openai", {
settings: { baseURL: "https://chatgpt.com/backend-api/codex" },
headers: { "chatgpt-account-id": "acct_123" },
body: {},
@@ -768,7 +768,7 @@ describe("ModelResolver", () => {
it.effect("does not route native OpenAI-compatible packages to the codex backend", () =>
Effect.gen(function* () {
const resolved = yield* ModelResolver.fromCatalogModel(
- model("@opencode-ai/ai/providers/openai-compatible", {
+ model("@opencode/ai/providers/openai-compatible", {
settings: { baseURL: "https://compatible.example/v1" },
}),
Credential.OAuth.make({
@@ -841,7 +841,7 @@ describe("ModelResolver", () => {
}),
)
const resolved = yield* ModelResolver.fromCatalogModel(
- model("@opencode-ai/ai/providers/custom", {
+ model("@opencode/ai/providers/custom", {
settings: { region: "test" },
headers: { "x-package": "header" },
body: { custom: true },
@@ -849,7 +849,7 @@ describe("ModelResolver", () => {
undefined,
{
loadPackage: (specifier) => {
- expect(specifier).toBe("@opencode-ai/ai/providers/custom")
+ expect(specifier).toBe("@opencode/ai/providers/custom")
return Effect.succeed({
model: (modelID, settings) => {
expect(modelID).toBe("api-test-model")
@@ -884,13 +884,13 @@ describe("ModelResolver", () => {
expires: Date.now() + 60_000,
})
const packages = [
- ["@opencode-ai/ai/providers/google-vertex", "accessToken"],
- ["@opencode-ai/ai/providers/google-vertex/gemini", "accessToken"],
- ["@opencode-ai/ai/providers/google-vertex/chat", "accessToken"],
- ["@opencode-ai/ai/providers/google-vertex/responses", "accessToken"],
- ["@opencode-ai/ai/providers/google-vertex/messages", "accessToken"],
- ["@opencode-ai/ai/providers/anthropic", "authToken"],
- ["@opencode-ai/ai/providers/anthropic-compatible", "authToken"],
+ ["@opencode/ai/providers/google-vertex", "accessToken"],
+ ["@opencode/ai/providers/google-vertex/gemini", "accessToken"],
+ ["@opencode/ai/providers/google-vertex/chat", "accessToken"],
+ ["@opencode/ai/providers/google-vertex/responses", "accessToken"],
+ ["@opencode/ai/providers/google-vertex/messages", "accessToken"],
+ ["@opencode/ai/providers/anthropic", "authToken"],
+ ["@opencode/ai/providers/anthropic-compatible", "authToken"],
] as const
yield* Effect.forEach(packages, ([specifier, key]) =>
@@ -914,7 +914,7 @@ describe("ModelResolver", () => {
const packages = [
[
"@ai-sdk/openai",
- "@opencode-ai/ai/providers/openai",
+ "@opencode/ai/providers/openai",
{
reasoningEffort: "xhigh",
reasoningSummary: "auto",
@@ -928,55 +928,55 @@ describe("ModelResolver", () => {
],
[
"@ai-sdk/anthropic",
- "@opencode-ai/ai/providers/anthropic",
+ "@opencode/ai/providers/anthropic",
{ thinking: { type: "adaptive", display: "summarized" }, effort: "high" },
{ thinking: { type: "adaptive", display: "summarized" }, effort: "high" },
],
[
"@ai-sdk/cerebras",
- "@opencode-ai/ai/providers/cerebras",
+ "@opencode/ai/providers/cerebras",
{ reasoningEffort: "high" },
{ reasoningEffort: "high" },
],
[
"@ai-sdk/deepinfra",
- "@opencode-ai/ai/providers/deepinfra",
+ "@opencode/ai/providers/deepinfra",
{ reasoningEffort: "none" },
{ reasoningEffort: "none" },
],
[
"@ai-sdk/openai-compatible",
- "@opencode-ai/ai/providers/openai-compatible",
+ "@opencode/ai/providers/openai-compatible",
{ reasoningEffort: "high" },
{ reasoningEffort: "high" },
],
[
"@ai-sdk/google",
- "@opencode-ai/ai/providers/google",
+ "@opencode/ai/providers/google",
{ thinkingConfig: { thinkingLevel: "high" } },
{ thinkingConfig: { thinkingLevel: "high" } },
],
[
"@ai-sdk/google-vertex",
- "@opencode-ai/ai/providers/google-vertex",
+ "@opencode/ai/providers/google-vertex",
{ thinkingConfig: { thinkingLevel: "high" } },
{ thinkingConfig: { thinkingLevel: "high" } },
],
[
"@openrouter/ai-sdk-provider",
- "@opencode-ai/ai/providers/openrouter",
+ "@opencode/ai/providers/openrouter",
{ reasoning: { effort: "high" } },
{ reasoning: { effort: "high" } },
],
[
"@ai-sdk/groq",
- "@opencode-ai/ai/providers/groq",
+ "@opencode/ai/providers/groq",
{ reasoningEffort: "high", parallelToolCalls: false },
{ reasoningEffort: "high", parallelToolCalls: false },
],
[
"@ai-sdk/mistral",
- "@opencode-ai/ai/providers/mistral",
+ "@opencode/ai/providers/mistral",
{
safePrompt: true,
documentImageLimit: 4,
@@ -994,11 +994,11 @@ describe("ModelResolver", () => {
],
[
"@ai-sdk/togetherai",
- "@opencode-ai/ai/providers/togetherai",
+ "@opencode/ai/providers/togetherai",
{ reasoningEffort: "high" },
{ reasoningEffort: "high" },
],
- ["@ai-sdk/xai", "@opencode-ai/ai/providers/xai", { reasoningEffort: "high" }, { reasoningEffort: "high" }],
+ ["@ai-sdk/xai", "@opencode/ai/providers/xai", { reasoningEffort: "high" }, { reasoningEffort: "high" }],
] as const
yield* Effect.forEach(packages, ([catalogPackage, nativePackage, sourceOptions, providerOptions]) =>
@@ -1037,26 +1037,26 @@ describe("ModelResolver", () => {
it.effect("never loads the AI SDK for packages with native implementations", () =>
Effect.gen(function* () {
const packages = [
- ["@ai-sdk/anthropic", "@opencode-ai/ai/providers/anthropic", "api-model"],
- ["@ai-sdk/amazon-bedrock", "@opencode-ai/ai/providers/amazon-bedrock", "api-model"],
+ ["@ai-sdk/anthropic", "@opencode/ai/providers/anthropic", "api-model"],
+ ["@ai-sdk/amazon-bedrock", "@opencode/ai/providers/amazon-bedrock", "api-model"],
[
"@ai-sdk/amazon-bedrock/mantle",
- "@opencode-ai/ai/providers/amazon-bedrock/mantle/responses",
+ "@opencode/ai/providers/amazon-bedrock/mantle/responses",
"openai.gpt-oss-120b",
],
- ["@ai-sdk/azure", "@opencode-ai/ai/providers/azure/responses", "api-model"],
- ["@ai-sdk/cerebras", "@opencode-ai/ai/providers/cerebras", "api-model"],
- ["@ai-sdk/deepinfra", "@opencode-ai/ai/providers/deepinfra", "api-model"],
- ["@ai-sdk/google", "@opencode-ai/ai/providers/google", "api-model"],
- ["@ai-sdk/google-vertex", "@opencode-ai/ai/providers/google-vertex", "api-model"],
- ["@ai-sdk/google-vertex/anthropic", "@opencode-ai/ai/providers/google-vertex/messages", "claude-sonnet-4-6"],
- ["@ai-sdk/groq", "@opencode-ai/ai/providers/groq", "api-model"],
- ["@ai-sdk/mistral", "@opencode-ai/ai/providers/mistral", "api-model"],
- ["@ai-sdk/openai", "@opencode-ai/ai/providers/openai", "api-model"],
- ["@ai-sdk/openai-compatible", "@opencode-ai/ai/providers/openai-compatible", "api-model"],
- ["@openrouter/ai-sdk-provider", "@opencode-ai/ai/providers/openrouter", "api-model"],
- ["@ai-sdk/togetherai", "@opencode-ai/ai/providers/togetherai", "api-model"],
- ["@ai-sdk/xai", "@opencode-ai/ai/providers/xai", "api-model"],
+ ["@ai-sdk/azure", "@opencode/ai/providers/azure/responses", "api-model"],
+ ["@ai-sdk/cerebras", "@opencode/ai/providers/cerebras", "api-model"],
+ ["@ai-sdk/deepinfra", "@opencode/ai/providers/deepinfra", "api-model"],
+ ["@ai-sdk/google", "@opencode/ai/providers/google", "api-model"],
+ ["@ai-sdk/google-vertex", "@opencode/ai/providers/google-vertex", "api-model"],
+ ["@ai-sdk/google-vertex/anthropic", "@opencode/ai/providers/google-vertex/messages", "claude-sonnet-4-6"],
+ ["@ai-sdk/groq", "@opencode/ai/providers/groq", "api-model"],
+ ["@ai-sdk/mistral", "@opencode/ai/providers/mistral", "api-model"],
+ ["@ai-sdk/openai", "@opencode/ai/providers/openai", "api-model"],
+ ["@ai-sdk/openai-compatible", "@opencode/ai/providers/openai-compatible", "api-model"],
+ ["@openrouter/ai-sdk-provider", "@opencode/ai/providers/openrouter", "api-model"],
+ ["@ai-sdk/togetherai", "@opencode/ai/providers/togetherai", "api-model"],
+ ["@ai-sdk/xai", "@opencode/ai/providers/xai", "api-model"],
] as const
yield* Effect.forEach(packages, ([catalogPackage, nativePackage, modelID]) =>
@@ -1104,7 +1104,7 @@ describe("ModelResolver", () => {
credential,
{
loadPackage: (specifier) => {
- expect(specifier).toBe("@opencode-ai/ai/providers/google-vertex/messages")
+ expect(specifier).toBe("@opencode/ai/providers/google-vertex/messages")
return Effect.succeed({
model: (modelID, settings) => {
expect(modelID).toBe("claude-sonnet-4-6")
@@ -1421,7 +1421,7 @@ describe("ModelResolver", () => {
it.effect("reports whether a catalog model declares a provider package", () =>
Effect.sync(() => {
expect(ModelResolver.hasPackage(model(Provider.aisdk("@ai-sdk/openai")))).toBe(true)
- expect(ModelResolver.hasPackage(model("@opencode-ai/ai/providers/custom"))).toBe(true)
+ expect(ModelResolver.hasPackage(model("@opencode/ai/providers/custom"))).toBe(true)
expect(ModelResolver.hasPackage(model(undefined))).toBe(false)
}),
)
diff --git a/packages/core/test/model.test.ts b/packages/core/test/model.test.ts
index 3844e42a0dd..065e9781231 100644
--- a/packages/core/test/model.test.ts
+++ b/packages/core/test/model.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test"
import { Schema } from "effect"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
const decode = Schema.decodeUnknownSync(Model.Ref)
diff --git a/packages/core/test/models.test.ts b/packages/core/test/models.test.ts
index 2c0fed83a3d..1672464ce92 100644
--- a/packages/core/test/models.test.ts
+++ b/packages/core/test/models.test.ts
@@ -1,15 +1,15 @@
import { describe, expect, test } from "bun:test"
-import { Money } from "@opencode-ai/schema/money"
+import { Money } from "@opencode/schema/money"
import { Effect, Fiber, Layer, Ref, Scope, Stream } from "effect"
import { HttpClient, HttpClientResponse } from "effect/unstable/http"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { KV } from "@opencode-ai/core/kv"
-import { Model } from "@opencode-ai/core/model"
-import { bodyDigest, ModelsDev } from "@opencode-ai/core/models-dev"
-import { Provider } from "@opencode-ai/core/provider"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNodePlatform } from "@opencode/util/effect/app-node-platform"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { KV } from "@opencode/core/kv"
+import { Model } from "@opencode/core/model"
+import { bodyDigest, ModelsDev } from "@opencode/core/models-dev"
+import { Provider } from "@opencode/core/provider"
import { it } from "./lib/effect"
const cacheKey = "models-dev:catalog"
diff --git a/packages/core/test/network-guard.test.ts b/packages/core/test/network-guard.test.ts
index cf55ff07d78..c4b8481afb7 100644
--- a/packages/core/test/network-guard.test.ts
+++ b/packages/core/test/network-guard.test.ts
@@ -1,8 +1,8 @@
import { describe, expect, test } from "bun:test"
import { Effect, Layer } from "effect"
import { FetchHttpClient, HttpClient, HttpClientResponse } from "effect/unstable/http"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNodePlatform } from "@opencode/util/effect/app-node-platform"
import { it, refuseNetwork } from "./lib/effect"
describe("test harness network guard", () => {
diff --git a/packages/core/test/npm-config.test.ts b/packages/core/test/npm-config.test.ts
index a2faba8eb36..de155643925 100644
--- a/packages/core/test/npm-config.test.ts
+++ b/packages/core/test/npm-config.test.ts
@@ -1,7 +1,7 @@
import path from "path"
import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
-import { NpmConfig } from "@opencode-ai/util/npm-config"
+import { NpmConfig } from "@opencode/util/npm-config"
import { tmpdir } from "./fixture/tmpdir"
describe("NpmConfig.load", () => {
diff --git a/packages/core/test/npm.test.ts b/packages/core/test/npm.test.ts
index 8df1c49a4bf..ff73b82a954 100644
--- a/packages/core/test/npm.test.ts
+++ b/packages/core/test/npm.test.ts
@@ -3,9 +3,9 @@ import path from "path"
import { pathToFileURL } from "url"
import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Global } from "@opencode-ai/util/global"
-import { Npm } from "@opencode-ai/util/npm"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Global } from "@opencode/util/global"
+import { Npm } from "@opencode/util/npm"
import { tmpdir } from "./fixture/tmpdir"
const win = process.platform === "win32"
diff --git a/packages/core/test/patch.test.ts b/packages/core/test/patch.test.ts
index f4056439db5..22df2a13271 100644
--- a/packages/core/test/patch.test.ts
+++ b/packages/core/test/patch.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import { Patch } from "@opencode-ai/util/patch"
+import { Patch } from "@opencode/util/patch"
import { Result } from "effect"
const parse = (input: string) => Result.getOrThrow(Patch.parse(input))
diff --git a/packages/core/test/permission.test.ts b/packages/core/test/permission.test.ts
index 6dba198515b..54ae17bb28a 100644
--- a/packages/core/test/permission.test.ts
+++ b/packages/core/test/permission.test.ts
@@ -1,21 +1,21 @@
import { describe, expect } from "bun:test"
import { Cause, Deferred, Effect, Fiber, Layer } from "effect"
-import { Agent } from "@opencode-ai/core/agent"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Location } from "@opencode-ai/core/location"
-import { Permission } from "@opencode-ai/core/permission"
-import { PermissionTable } from "@opencode-ai/core/permission/sql"
-import { PermissionSaved } from "@opencode-ai/core/permission/saved"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionTable } from "@opencode-ai/core/session/sql"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { ShellParse } from "@opencode-ai/core/shell/parse"
+import { Agent } from "@opencode/core/agent"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Location } from "@opencode/core/location"
+import { Permission } from "@opencode/core/permission"
+import { PermissionTable } from "@opencode/core/permission/sql"
+import { PermissionSaved } from "@opencode/core/permission/saved"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionTable } from "@opencode/core/session/sql"
+import { SessionStore } from "@opencode/core/session/store"
+import { ShellParse } from "@opencode/core/shell/parse"
import { eq } from "drizzle-orm"
import { location } from "./fixture/location"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/plugin-failure.test.ts b/packages/core/test/plugin-failure.test.ts
index d0ca5a24a9c..a800b5d8578 100644
--- a/packages/core/test/plugin-failure.test.ts
+++ b/packages/core/test/plugin-failure.test.ts
@@ -1,10 +1,10 @@
import { expect } from "bun:test"
import { Deferred, Effect, Exit, Fiber, Schema } from "effect"
-import { Bus } from "@opencode-ai/core/bus"
-import { Command } from "@opencode-ai/core/command"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { Rpc } from "@opencode-ai/core/rpc"
+import { Bus } from "@opencode/core/bus"
+import { Command } from "@opencode/core/command"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { Rpc } from "@opencode/core/rpc"
import { testEffect } from "./lib/effect"
import { PluginTestLayer } from "./plugin/fixture"
diff --git a/packages/core/test/plugin.test.ts b/packages/core/test/plugin.test.ts
index ea5757e472c..1b71e18978d 100644
--- a/packages/core/test/plugin.test.ts
+++ b/packages/core/test/plugin.test.ts
@@ -2,15 +2,15 @@ import { expect } from "bun:test"
import path from "path"
import { Clock, Deferred, Effect } from "effect"
import { TestClock } from "effect/testing"
-import { Command } from "@opencode-ai/core/command"
-import { Bus } from "@opencode-ai/core/bus"
-import { Credential } from "@opencode-ai/core/credential"
-import { Integration } from "@opencode-ai/core/integration"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginModule } from "@opencode-ai/core/plugin/module"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
-import { fromPromise } from "@opencode-ai/plugin/promise/adapter"
-import { Session } from "@opencode-ai/schema/session"
+import { Command } from "@opencode/core/command"
+import { Bus } from "@opencode/core/bus"
+import { Credential } from "@opencode/core/credential"
+import { Integration } from "@opencode/core/integration"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginModule } from "@opencode/core/plugin/module"
+import { Watcher } from "@opencode/core/filesystem/watcher"
+import { fromPromise } from "@opencode/plugin/promise/adapter"
+import { Session } from "@opencode/schema/session"
import { testEffect } from "./lib/effect"
import { PluginTestLayer } from "./plugin/fixture"
diff --git a/packages/core/test/plugin/command.test.ts b/packages/core/test/plugin/command.test.ts
index cf802ecc4d5..f953b94ddf2 100644
--- a/packages/core/test/plugin/command.test.ts
+++ b/packages/core/test/plugin/command.test.ts
@@ -1,16 +1,16 @@
import { describe, expect, test } from "bun:test"
import { Effect, Layer } from "effect"
-import { Command } from "@opencode-ai/core/command"
-import { Bus } from "@opencode-ai/core/bus"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Location } from "@opencode-ai/core/location"
-import { Mcp } from "@opencode-ai/core/mcp/index"
-import { CommandPlugin } from "@opencode-ai/core/plugin/command"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/schema/session"
-import { SessionInbox } from "@opencode-ai/schema/session-inbox"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Command } from "@opencode/core/command"
+import { Bus } from "@opencode/core/bus"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Location } from "@opencode/core/location"
+import { Mcp } from "@opencode/core/mcp/index"
+import { CommandPlugin } from "@opencode/core/plugin/command"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/schema/session"
+import { SessionInbox } from "@opencode/schema/session-inbox"
+import { SessionMessage } from "@opencode/schema/session-message"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { DateTime } from "effect"
import { emptyMcpLayer } from "../fixture/mcp"
import { location } from "../fixture/location"
diff --git a/packages/core/test/plugin/fixture.ts b/packages/core/test/plugin/fixture.ts
index 9f323bec9ee..bf848c8b742 100644
--- a/packages/core/test/plugin/fixture.ts
+++ b/packages/core/test/plugin/fixture.ts
@@ -1,38 +1,38 @@
-import { Agent } from "@opencode-ai/core/agent"
-import { AISDK } from "@opencode-ai/core/aisdk"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Command } from "@opencode-ai/core/command"
-import { Config } from "@opencode-ai/core/config"
-import { Credential } from "@opencode-ai/core/credential"
-import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform"
-import { AppProcess } from "@opencode-ai/util/process"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { FileSystem } from "@opencode-ai/core/filesystem"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Form } from "@opencode-ai/core/form"
-import { Generate } from "@opencode-ai/core/generate"
-import { Integration } from "@opencode-ai/core/integration"
-import { KV } from "@opencode-ai/core/kv"
-import { Location } from "@opencode-ai/core/location"
-import { Mcp } from "@opencode-ai/core/mcp/index"
-import { Npm } from "@opencode-ai/util/npm"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { Session } from "@opencode-ai/core/session"
-import { PersistentPty } from "@opencode-ai/core/persistent-pty"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Permission } from "@opencode-ai/core/permission"
-import { Reference } from "@opencode-ai/core/reference"
-import { Rpc } from "@opencode-ai/core/rpc"
-import { Skill } from "@opencode-ai/core/skill"
-import { SkillDiscovery } from "@opencode-ai/core/skill/discovery"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
-import { Tool } from "@opencode-ai/core/tool"
-import { Vcs } from "@opencode-ai/core/vcs"
-import { WebSearch } from "@opencode-ai/core/websearch"
-import { Worktree } from "@opencode-ai/core/worktree"
+import { Agent } from "@opencode/core/agent"
+import { AISDK } from "@opencode/core/aisdk"
+import { Catalog } from "@opencode/core/catalog"
+import { Command } from "@opencode/core/command"
+import { Config } from "@opencode/core/config"
+import { Credential } from "@opencode/core/credential"
+import { LayerNodePlatform } from "@opencode/util/effect/app-node-platform"
+import { AppProcess } from "@opencode/util/process"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { FileSystem } from "@opencode/core/filesystem"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Form } from "@opencode/core/form"
+import { Generate } from "@opencode/core/generate"
+import { Integration } from "@opencode/core/integration"
+import { KV } from "@opencode/core/kv"
+import { Location } from "@opencode/core/location"
+import { Mcp } from "@opencode/core/mcp/index"
+import { Npm } from "@opencode/util/npm"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { Session } from "@opencode/core/session"
+import { PersistentPty } from "@opencode/core/persistent-pty"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Permission } from "@opencode/core/permission"
+import { Reference } from "@opencode/core/reference"
+import { Rpc } from "@opencode/core/rpc"
+import { Skill } from "@opencode/core/skill"
+import { SkillDiscovery } from "@opencode/core/skill/discovery"
+import { Watcher } from "@opencode/core/filesystem/watcher"
+import { Tool } from "@opencode/core/tool"
+import { Vcs } from "@opencode/core/vcs"
+import { WebSearch } from "@opencode/core/websearch"
+import { Worktree } from "@opencode/core/worktree"
import { Effect, Layer } from "effect"
import { tempLocationLayer } from "../fixture/location"
import { emptyMcpLayer } from "../fixture/mcp"
diff --git a/packages/core/test/plugin/fixtures/greeting.ts b/packages/core/test/plugin/fixtures/greeting.ts
index 1c2f47c3fe9..3b7547f1a19 100644
--- a/packages/core/test/plugin/fixtures/greeting.ts
+++ b/packages/core/test/plugin/fixtures/greeting.ts
@@ -1,4 +1,4 @@
-import { Plugin } from "@opencode-ai/plugin"
+import { Plugin } from "@opencode/plugin"
export default Plugin.define({
id: "greeting",
diff --git a/packages/core/test/plugin/host.ts b/packages/core/test/plugin/host.ts
index 76fe9a62ad6..3cbe696ab4e 100644
--- a/packages/core/test/plugin/host.ts
+++ b/packages/core/test/plugin/host.ts
@@ -1,15 +1,15 @@
-import { Plugin } from "@opencode-ai/plugin/effect"
-import type { IntegrationMethod } from "@opencode-ai/plugin/effect/integration"
-import { Agent } from "@opencode-ai/core/agent"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Credential } from "@opencode-ai/core/credential"
-import { Integration } from "@opencode-ai/core/integration"
-import { Location } from "@opencode-ai/core/location"
-import { Model } from "@opencode-ai/core/model"
-import { Project } from "@opencode-ai/core/project"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { WebSearch } from "@opencode-ai/core/websearch"
+import { Plugin } from "@opencode/plugin/effect"
+import type { IntegrationMethod } from "@opencode/plugin/effect/integration"
+import { Agent } from "@opencode/core/agent"
+import { Catalog } from "@opencode/core/catalog"
+import { Credential } from "@opencode/core/credential"
+import { Integration } from "@opencode/core/integration"
+import { Location } from "@opencode/core/location"
+import { Model } from "@opencode/core/model"
+import { Project } from "@opencode/core/project"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
+import { WebSearch } from "@opencode/core/websearch"
import { Effect, Stream } from "effect"
type Overrides = Partial> & {
diff --git a/packages/core/test/plugin/mcp-codemode-exclusion.test.ts b/packages/core/test/plugin/mcp-codemode-exclusion.test.ts
index fafa4604d04..5ab4f316345 100644
--- a/packages/core/test/plugin/mcp-codemode-exclusion.test.ts
+++ b/packages/core/test/plugin/mcp-codemode-exclusion.test.ts
@@ -1,6 +1,6 @@
import { expect } from "bun:test"
-import { McpCodeModeExclusionPlugin } from "@opencode-ai/core/plugin/mcp-codemode-exclusion"
-import type { Mcp } from "@opencode-ai/schema/mcp"
+import { McpCodeModeExclusionPlugin } from "@opencode/core/plugin/mcp-codemode-exclusion"
+import type { Mcp } from "@opencode/schema/mcp"
import { Effect, type Types } from "effect"
import { it } from "../lib/effect"
import { host } from "./host"
diff --git a/packages/core/test/plugin/models-dev.test.ts b/packages/core/test/plugin/models-dev.test.ts
index d4177ffec40..7ad621c8de7 100644
--- a/packages/core/test/plugin/models-dev.test.ts
+++ b/packages/core/test/plugin/models-dev.test.ts
@@ -1,22 +1,22 @@
import path from "path"
import { describe, expect } from "bun:test"
-import { Money } from "@opencode-ai/schema/money"
+import { Money } from "@opencode/schema/money"
import { Context, Effect, Exit, Layer, Scope } from "effect"
import { TestClock } from "effect/testing"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Integration } from "@opencode-ai/core/integration"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Location } from "@opencode-ai/core/location"
-import { Model } from "@opencode-ai/core/model"
-import { ModelsDev } from "@opencode-ai/core/models-dev"
-import { ModelsDevPlugin } from "@opencode-ai/core/plugin/models-dev"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import { Catalog } from "@opencode/core/catalog"
+import { Integration } from "@opencode/core/integration"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Location } from "@opencode/core/location"
+import { Model } from "@opencode/core/model"
+import { ModelsDev } from "@opencode/core/models-dev"
+import { ModelsDevPlugin } from "@opencode/core/plugin/models-dev"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { ProviderPlugins } from "@opencode/core/plugin/provider"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
import { withEnv } from "../fixture/env"
import { location } from "../fixture/location"
import { testEffect } from "../lib/effect"
diff --git a/packages/core/test/plugin/module.test.ts b/packages/core/test/plugin/module.test.ts
index b1039d6bd7c..d93716f4e0d 100644
--- a/packages/core/test/plugin/module.test.ts
+++ b/packages/core/test/plugin/module.test.ts
@@ -1,11 +1,11 @@
import { expect } from "bun:test"
import path from "node:path"
import { Deferred, Effect, Exit, Fiber, Layer, Schedule, Scope, Stream } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
-import { PluginModule } from "@opencode-ai/core/plugin/module"
-import { Global } from "@opencode-ai/util/global"
-import { Npm } from "@opencode-ai/util/npm"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Watcher } from "@opencode/core/filesystem/watcher"
+import { PluginModule } from "@opencode/core/plugin/module"
+import { Global } from "@opencode/util/global"
+import { Npm } from "@opencode/util/npm"
import { tempGlobalLayer } from "../fixture/global"
import { tmpdirScoped } from "../fixture/tmpdir"
import { testEffect } from "../lib/effect"
diff --git a/packages/core/test/plugin/optimize.test.ts b/packages/core/test/plugin/optimize.test.ts
index fd6dc3ea75e..3519d431888 100644
--- a/packages/core/test/plugin/optimize.test.ts
+++ b/packages/core/test/plugin/optimize.test.ts
@@ -1,16 +1,16 @@
import { describe, expect, test } from "bun:test"
-import { SystemPart } from "@opencode-ai/ai"
-import { Agent } from "@opencode-ai/core/agent"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { OptimizePlugin } from "@opencode-ai/core/plugin/optimize"
-import { Session } from "@opencode-ai/core/session"
-import { SessionSystemPrompt } from "@opencode-ai/core/session/system-prompt"
-import type { SessionHooks } from "@opencode-ai/plugin/effect/session"
-import { Model } from "@opencode-ai/schema/model"
-import { Provider } from "@opencode-ai/schema/provider"
+import { SystemPart } from "@opencode/ai"
+import { Agent } from "@opencode/core/agent"
+import { Catalog } from "@opencode/core/catalog"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { OptimizePlugin } from "@opencode/core/plugin/optimize"
+import { Session } from "@opencode/core/session"
+import { SessionSystemPrompt } from "@opencode/core/session/system-prompt"
+import type { SessionHooks } from "@opencode/plugin/effect/session"
+import { Model } from "@opencode/schema/model"
+import { Provider } from "@opencode/schema/provider"
import { Effect } from "effect"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/plan.test.ts b/packages/core/test/plugin/plan.test.ts
index 25b14394b2b..bb2f948bdcf 100644
--- a/packages/core/test/plugin/plan.test.ts
+++ b/packages/core/test/plugin/plan.test.ts
@@ -1,21 +1,21 @@
import { describe, expect } from "bun:test"
-import { Message, ToolFailure } from "@opencode-ai/ai"
+import { Message, ToolFailure } from "@opencode/ai"
import { DateTime, Effect, Option, Stream, Types } from "effect"
-import type { SessionContext } from "@opencode-ai/plugin/effect/session"
-import type { ToolHooks } from "@opencode-ai/plugin/effect/tool"
-import { Agent } from "@opencode-ai/core/agent"
-import { Environment } from "@opencode-ai/core/environment/index"
-import { Event } from "@opencode-ai/schema/event"
-import { Model } from "@opencode-ai/core/model"
-import { PlanPlugin } from "@opencode-ai/core/plugin/plan"
-import { Permission } from "@opencode-ai/core/permission"
-import { Provider } from "@opencode-ai/core/provider"
-import { Session } from "@opencode-ai/core/session"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionInbox } from "@opencode-ai/core/session/inbox"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { Tool } from "@opencode-ai/schema/tool"
-import { Global } from "@opencode-ai/util/global"
+import type { SessionContext } from "@opencode/plugin/effect/session"
+import type { ToolHooks } from "@opencode/plugin/effect/tool"
+import { Agent } from "@opencode/core/agent"
+import { Environment } from "@opencode/core/environment/index"
+import { Event } from "@opencode/schema/event"
+import { Model } from "@opencode/core/model"
+import { PlanPlugin } from "@opencode/core/plugin/plan"
+import { Permission } from "@opencode/core/permission"
+import { Provider } from "@opencode/core/provider"
+import { Session } from "@opencode/core/session"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionInbox } from "@opencode/core/session/inbox"
+import { SessionMessage } from "@opencode/core/session/message"
+import { Tool } from "@opencode/schema/tool"
+import { Global } from "@opencode/util/global"
import path from "path"
import { it } from "../lib/effect"
import { host } from "./host"
diff --git a/packages/core/test/plugin/provider-amazon-bedrock.test.ts b/packages/core/test/plugin/provider-amazon-bedrock.test.ts
index c486b7c21f7..44e6a57c4bb 100644
--- a/packages/core/test/plugin/provider-amazon-bedrock.test.ts
+++ b/packages/core/test/plugin/provider-amazon-bedrock.test.ts
@@ -1,11 +1,11 @@
import { describe, expect } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Integration } from "@opencode-ai/core/integration"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { AmazonBedrockPlugin } from "@opencode-ai/core/plugin/provider/amazon-bedrock"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Integration } from "@opencode/core/integration"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { AmazonBedrockPlugin } from "@opencode/core/plugin/provider/amazon-bedrock"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
@@ -209,7 +209,7 @@ describe("AmazonBedrockPlugin", () => {
item.package = Provider.aisdk("@ai-sdk/amazon-bedrock/mantle")
})
catalog.provider.update(Provider.ID.make("native"), (item) => {
- item.package = "@opencode-ai/ai/providers/amazon-bedrock"
+ item.package = "@opencode/ai/providers/amazon-bedrock"
})
catalog.provider.update(Provider.ID.make("other"), (item) => {
item.package = Provider.aisdk("@ai-sdk/anthropic")
diff --git a/packages/core/test/plugin/provider-anthropic.test.ts b/packages/core/test/plugin/provider-anthropic.test.ts
index 40ccaee4f6a..0d670cc5826 100644
--- a/packages/core/test/plugin/provider-anthropic.test.ts
+++ b/packages/core/test/plugin/provider-anthropic.test.ts
@@ -1,12 +1,12 @@
-import { AISDK } from "@opencode-ai/core/aisdk"
+import { AISDK } from "@opencode/core/aisdk"
import { describe, expect } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { AnthropicPlugin } from "@opencode-ai/core/plugin/provider/anthropic"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { AnthropicPlugin } from "@opencode/core/plugin/provider/anthropic"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-azure.test.ts b/packages/core/test/plugin/provider-azure.test.ts
index 942270782d9..8aacb8dc37c 100644
--- a/packages/core/test/plugin/provider-azure.test.ts
+++ b/packages/core/test/plugin/provider-azure.test.ts
@@ -1,20 +1,20 @@
import { chmod } from "node:fs/promises"
-import { Agent } from "@opencode-ai/core/agent"
-import { AISDK } from "@opencode-ai/core/aisdk"
+import { Agent } from "@opencode/core/agent"
+import { AISDK } from "@opencode/core/aisdk"
import { describe, expect } from "bun:test"
import { Effect, Schedule } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Credential } from "@opencode-ai/core/credential"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { AzurePlugin } from "@opencode-ai/core/plugin/provider/azure"
-import { Provider } from "@opencode-ai/core/provider"
-import { Integration } from "@opencode-ai/core/integration"
-import { Location } from "@opencode-ai/core/location"
-import { Session } from "@opencode-ai/core/session"
-import { AppProcess } from "@opencode-ai/util/process"
+import { Catalog } from "@opencode/core/catalog"
+import { Credential } from "@opencode/core/credential"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { AzurePlugin } from "@opencode/core/plugin/provider/azure"
+import { Provider } from "@opencode/core/provider"
+import { Integration } from "@opencode/core/integration"
+import { Location } from "@opencode/core/location"
+import { Session } from "@opencode/core/session"
+import { AppProcess } from "@opencode/util/process"
import { fakeSelectorSdk } from "../fixture/selector"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-cerebras.test.ts b/packages/core/test/plugin/provider-cerebras.test.ts
index 51511f6a3a3..9940c5b5bd5 100644
--- a/packages/core/test/plugin/provider-cerebras.test.ts
+++ b/packages/core/test/plugin/provider-cerebras.test.ts
@@ -1,10 +1,10 @@
import { describe, expect } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { CerebrasPlugin } from "@opencode-ai/core/plugin/provider/cerebras"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { CerebrasPlugin } from "@opencode/core/plugin/provider/cerebras"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
@@ -49,7 +49,7 @@ describe("CerebrasPlugin", () => {
const providerID = Provider.ID.make("custom-cerebras")
yield* catalog.transform((catalog) => {
catalog.provider.update(providerID, (item) => {
- item.package = "@opencode-ai/ai/providers/cerebras"
+ item.package = "@opencode/ai/providers/cerebras"
item.headers = { Existing: "1" }
})
})
diff --git a/packages/core/test/plugin/provider-cloudflare-ai-gateway.test.ts b/packages/core/test/plugin/provider-cloudflare-ai-gateway.test.ts
index db02833508b..c4ac8fcbe7e 100644
--- a/packages/core/test/plugin/provider-cloudflare-ai-gateway.test.ts
+++ b/packages/core/test/plugin/provider-cloudflare-ai-gateway.test.ts
@@ -1,14 +1,14 @@
-import { AISDK } from "@opencode-ai/core/aisdk"
+import { AISDK } from "@opencode/core/aisdk"
import { describe, expect, mock } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { CloudflareAIGatewayPlugin } from "@opencode-ai/core/plugin/provider/cloudflare-ai-gateway"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { CloudflareAIGatewayPlugin } from "@opencode/core/plugin/provider/cloudflare-ai-gateway"
+import { Provider } from "@opencode/core/provider"
import { withEnv } from "../fixture/env"
-import { Integration } from "@opencode-ai/core/integration"
+import { Integration } from "@opencode/core/integration"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-cloudflare-workers-ai.test.ts b/packages/core/test/plugin/provider-cloudflare-workers-ai.test.ts
index 74603029f2a..1d2d525268d 100644
--- a/packages/core/test/plugin/provider-cloudflare-workers-ai.test.ts
+++ b/packages/core/test/plugin/provider-cloudflare-workers-ai.test.ts
@@ -1,13 +1,13 @@
-import { AISDK } from "@opencode-ai/core/aisdk"
+import { AISDK } from "@opencode/core/aisdk"
import { describe, expect } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { CloudflareWorkersAIPlugin } from "@opencode-ai/core/plugin/provider/cloudflare-workers-ai"
-import { Provider } from "@opencode-ai/core/provider"
-import { Integration } from "@opencode-ai/core/integration"
+import { Catalog } from "@opencode/core/catalog"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { CloudflareWorkersAIPlugin } from "@opencode/core/plugin/provider/cloudflare-workers-ai"
+import { Provider } from "@opencode/core/provider"
+import { Integration } from "@opencode/core/integration"
import { fakeSelectorSdk } from "../fixture/selector"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-digitalocean.test.ts b/packages/core/test/plugin/provider-digitalocean.test.ts
index 3323fa34bb5..9986435570c 100644
--- a/packages/core/test/plugin/provider-digitalocean.test.ts
+++ b/packages/core/test/plugin/provider-digitalocean.test.ts
@@ -2,15 +2,15 @@ import { describe, expect, test } from "bun:test"
import { Clock, Effect, Schedule } from "effect"
import { TestClock } from "effect/testing"
import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Credential } from "@opencode-ai/core/credential"
-import { Integration } from "@opencode-ai/core/integration"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { Provider } from "@opencode-ai/core/provider"
-import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
-import { DigitalOceanPlugin } from "@opencode-ai/core/plugin/provider/digitalocean"
+import { Catalog } from "@opencode/core/catalog"
+import { Credential } from "@opencode/core/credential"
+import { Integration } from "@opencode/core/integration"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { Provider } from "@opencode/core/provider"
+import { ProviderPlugins } from "@opencode/core/plugin/provider"
+import { DigitalOceanPlugin } from "@opencode/core/plugin/provider/digitalocean"
import { drain } from "../lib/clock"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-dynamic.test.ts b/packages/core/test/plugin/provider-dynamic.test.ts
index c07deaf9393..c29767ba136 100644
--- a/packages/core/test/plugin/provider-dynamic.test.ts
+++ b/packages/core/test/plugin/provider-dynamic.test.ts
@@ -1,16 +1,16 @@
-import { Npm } from "@opencode-ai/util/npm"
+import { Npm } from "@opencode/util/npm"
import { describe, expect } from "bun:test"
import { Cause, Effect, Layer } from "effect"
import fs from "fs/promises"
import os from "os"
import path from "path"
-import { AISDK } from "@opencode-ai/core/aisdk"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { DynamicProviderPlugin } from "@opencode-ai/core/plugin/provider/dynamic"
-import { Provider } from "@opencode-ai/core/provider"
+import { AISDK } from "@opencode/core/aisdk"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { DynamicProviderPlugin } from "@opencode/core/plugin/provider/dynamic"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-factory.test.ts b/packages/core/test/plugin/provider-factory.test.ts
index 2b1f44f2939..cb6e3901dba 100644
--- a/packages/core/test/plugin/provider-factory.test.ts
+++ b/packages/core/test/plugin/provider-factory.test.ts
@@ -1,16 +1,16 @@
import { expect } from "bun:test"
import { Effect } from "effect"
-import { AISDK } from "@opencode-ai/core/aisdk"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { AlibabaPlugin } from "@opencode-ai/core/plugin/provider/alibaba"
-import { CoherePlugin } from "@opencode-ai/core/plugin/provider/cohere"
-import { GatewayPlugin } from "@opencode-ai/core/plugin/provider/gateway"
-import { MistralPlugin } from "@opencode-ai/core/plugin/provider/mistral"
-import { PerplexityPlugin } from "@opencode-ai/core/plugin/provider/perplexity"
-import { VenicePlugin } from "@opencode-ai/core/plugin/provider/venice"
-import { Provider } from "@opencode-ai/core/provider"
+import { AISDK } from "@opencode/core/aisdk"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { AlibabaPlugin } from "@opencode/core/plugin/provider/alibaba"
+import { CoherePlugin } from "@opencode/core/plugin/provider/cohere"
+import { GatewayPlugin } from "@opencode/core/plugin/provider/gateway"
+import { MistralPlugin } from "@opencode/core/plugin/provider/mistral"
+import { PerplexityPlugin } from "@opencode/core/plugin/provider/perplexity"
+import { VenicePlugin } from "@opencode/core/plugin/provider/venice"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-github-copilot.test.ts b/packages/core/test/plugin/provider-github-copilot.test.ts
index e9ee64ea904..6e4c53aac72 100644
--- a/packages/core/test/plugin/provider-github-copilot.test.ts
+++ b/packages/core/test/plugin/provider-github-copilot.test.ts
@@ -1,25 +1,25 @@
-import { AISDK } from "@opencode-ai/core/aisdk"
-import { App } from "@opencode-ai/core/app"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Session } from "@opencode-ai/core/session"
-import { Location } from "@opencode-ai/core/location"
+import { AISDK } from "@opencode/core/aisdk"
+import { App } from "@opencode/core/app"
+import { Agent } from "@opencode/schema/agent"
+import { Session } from "@opencode/core/session"
+import { Location } from "@opencode/core/location"
import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Model } from "@opencode-ai/core/model"
-import { ModelResolver } from "@opencode-ai/core/model-resolver"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
+import { Catalog } from "@opencode/core/catalog"
+import { Model } from "@opencode/core/model"
+import { ModelResolver } from "@opencode/core/model-resolver"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
import {
copilotBaseURL,
copilotEntitlementError,
copilotFetch,
GithubCopilotPlugin,
-} from "@opencode-ai/core/plugin/provider/github-copilot"
-import { Provider } from "@opencode-ai/core/provider"
-import { Integration } from "@opencode-ai/core/integration"
-import type { SessionRequestKind } from "@opencode-ai/plugin/effect/session"
+} from "@opencode/core/plugin/provider/github-copilot"
+import { Provider } from "@opencode/core/provider"
+import { Integration } from "@opencode/core/integration"
+import type { SessionRequestKind } from "@opencode/plugin/effect/session"
import { fakeSelectorSdk } from "../fixture/selector"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-gitlab.test.ts b/packages/core/test/plugin/provider-gitlab.test.ts
index b8f72bcfd00..03be47cc1fe 100644
--- a/packages/core/test/plugin/provider-gitlab.test.ts
+++ b/packages/core/test/plugin/provider-gitlab.test.ts
@@ -1,11 +1,11 @@
-import { AISDK } from "@opencode-ai/core/aisdk"
+import { AISDK } from "@opencode/core/aisdk"
import { describe, expect, mock } from "bun:test"
import { Effect } from "effect"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { GitLabPlugin } from "@opencode-ai/core/plugin/provider/gitlab"
-import { Provider } from "@opencode-ai/core/provider"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { GitLabPlugin } from "@opencode/core/plugin/provider/gitlab"
+import { Provider } from "@opencode/core/provider"
import { withEnv } from "../fixture/env"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-google-vertex.test.ts b/packages/core/test/plugin/provider-google-vertex.test.ts
index 40530330a8b..6f625d35935 100644
--- a/packages/core/test/plugin/provider-google-vertex.test.ts
+++ b/packages/core/test/plugin/provider-google-vertex.test.ts
@@ -1,12 +1,12 @@
-import { AISDK } from "@opencode-ai/core/aisdk"
+import { AISDK } from "@opencode/core/aisdk"
import { describe, expect, mock } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { GoogleVertexPlugin } from "@opencode-ai/core/plugin/provider/google-vertex"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { GoogleVertexPlugin } from "@opencode/core/plugin/provider/google-vertex"
+import { Provider } from "@opencode/core/provider"
import { fakeSelectorSdk } from "../fixture/selector"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-kilo.test.ts b/packages/core/test/plugin/provider-kilo.test.ts
index 6b9635da20f..ccfd90241c9 100644
--- a/packages/core/test/plugin/provider-kilo.test.ts
+++ b/packages/core/test/plugin/provider-kilo.test.ts
@@ -1,11 +1,11 @@
import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
-import { KiloPlugin } from "@opencode-ai/core/plugin/provider/kilo"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { ProviderPlugins } from "@opencode/core/plugin/provider"
+import { KiloPlugin } from "@opencode/core/plugin/provider/kilo"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-llmgateway.test.ts b/packages/core/test/plugin/provider-llmgateway.test.ts
index 06cc4324a15..5f8e381983f 100644
--- a/packages/core/test/plugin/provider-llmgateway.test.ts
+++ b/packages/core/test/plugin/provider-llmgateway.test.ts
@@ -1,12 +1,12 @@
import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Integration } from "@opencode-ai/core/integration"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
-import { LLMGatewayPlugin } from "@opencode-ai/core/plugin/provider/llmgateway"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Integration } from "@opencode/core/integration"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { ProviderPlugins } from "@opencode/core/plugin/provider"
+import { LLMGatewayPlugin } from "@opencode/core/plugin/provider/llmgateway"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-lmstudio.test.ts b/packages/core/test/plugin/provider-lmstudio.test.ts
index b0cc276c5d9..ede3939fc34 100644
--- a/packages/core/test/plugin/provider-lmstudio.test.ts
+++ b/packages/core/test/plugin/provider-lmstudio.test.ts
@@ -1,14 +1,14 @@
-import { Bus } from "@opencode-ai/core/bus"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Config } from "@opencode-ai/core/config"
-import { Integration } from "@opencode-ai/core/integration"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { LMStudioPlugin, make } from "@opencode-ai/core/plugin/provider/lmstudio"
-import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
-import { Provider } from "@opencode-ai/core/provider"
-import { Document, Event, Info } from "@opencode-ai/schema/config"
+import { Bus } from "@opencode/core/bus"
+import { Catalog } from "@opencode/core/catalog"
+import { Config } from "@opencode/core/config"
+import { Integration } from "@opencode/core/integration"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { LMStudioPlugin, make } from "@opencode/core/plugin/provider/lmstudio"
+import { ProviderPlugins } from "@opencode/core/plugin/provider"
+import { Provider } from "@opencode/core/provider"
+import { Document, Event, Info } from "@opencode/schema/config"
import { describe, expect, test } from "bun:test"
import { Duration, Effect, Layer, Schema } from "effect"
import { testEffect } from "../lib/effect"
@@ -101,7 +101,7 @@ describe("LMStudioPlugin", () => {
id: providerID,
name: "LM Studio",
activation: "enabled",
- package: "@opencode-ai/ai/providers/openai-compatible",
+ package: "@opencode/ai/providers/openai-compatible",
settings: { baseURL: `${server.url.origin}/v1`, provider: "lmstudio", apiKey: "" },
})
expect((yield* catalog.provider.available()).map((provider) => provider.id)).toContain(providerID)
diff --git a/packages/core/test/plugin/provider-nvidia.test.ts b/packages/core/test/plugin/provider-nvidia.test.ts
index 23e5c185a74..667fc6c44ae 100644
--- a/packages/core/test/plugin/provider-nvidia.test.ts
+++ b/packages/core/test/plugin/provider-nvidia.test.ts
@@ -1,11 +1,11 @@
import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
-import { NvidiaPlugin } from "@opencode-ai/core/plugin/provider/nvidia"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { ProviderPlugins } from "@opencode/core/plugin/provider"
+import { NvidiaPlugin } from "@opencode/core/plugin/provider/nvidia"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-ollama.test.ts b/packages/core/test/plugin/provider-ollama.test.ts
index 3ef226774a5..1bf3fb7d789 100644
--- a/packages/core/test/plugin/provider-ollama.test.ts
+++ b/packages/core/test/plugin/provider-ollama.test.ts
@@ -1,14 +1,14 @@
-import { Bus } from "@opencode-ai/core/bus"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Config } from "@opencode-ai/core/config"
-import { Integration } from "@opencode-ai/core/integration"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { OllamaPlugin, make } from "@opencode-ai/core/plugin/provider/ollama"
-import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
-import { Provider } from "@opencode-ai/core/provider"
-import { Document, Event, Info } from "@opencode-ai/schema/config"
+import { Bus } from "@opencode/core/bus"
+import { Catalog } from "@opencode/core/catalog"
+import { Config } from "@opencode/core/config"
+import { Integration } from "@opencode/core/integration"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { OllamaPlugin, make } from "@opencode/core/plugin/provider/ollama"
+import { ProviderPlugins } from "@opencode/core/plugin/provider"
+import { Provider } from "@opencode/core/provider"
+import { Document, Event, Info } from "@opencode/schema/config"
import { describe, expect } from "bun:test"
import { Duration, Effect, Layer, Schema } from "effect"
import { testEffect } from "../lib/effect"
@@ -93,7 +93,7 @@ describe("OllamaPlugin", () => {
id: providerID,
name: "Ollama",
activation: "enabled",
- package: "@opencode-ai/ai/providers/openai-compatible",
+ package: "@opencode/ai/providers/openai-compatible",
settings: { baseURL: `${server.url.origin}/v1`, provider: "ollama", apiKey: "" },
})
expect(model).toMatchObject({
diff --git a/packages/core/test/plugin/provider-openai-compatible.test.ts b/packages/core/test/plugin/provider-openai-compatible.test.ts
index 280949f6468..f9a4b815c31 100644
--- a/packages/core/test/plugin/provider-openai-compatible.test.ts
+++ b/packages/core/test/plugin/provider-openai-compatible.test.ts
@@ -1,11 +1,11 @@
-import { AISDK } from "@opencode-ai/core/aisdk"
+import { AISDK } from "@opencode/core/aisdk"
import { describe, expect } from "bun:test"
import { Effect } from "effect"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { OpenAICompatiblePlugin } from "@opencode-ai/core/plugin/provider/openai-compatible"
-import { Provider } from "@opencode-ai/core/provider"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { OpenAICompatiblePlugin } from "@opencode/core/plugin/provider/openai-compatible"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-openai.test.ts b/packages/core/test/plugin/provider-openai.test.ts
index a31f786e57b..992d0295bc2 100644
--- a/packages/core/test/plugin/provider-openai.test.ts
+++ b/packages/core/test/plugin/provider-openai.test.ts
@@ -1,25 +1,25 @@
-import { Money } from "@opencode-ai/schema/money"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Session } from "@opencode-ai/schema/session"
-import { OpenAIResponses } from "@opencode-ai/ai/protocols/openai-responses"
+import { Money } from "@opencode/schema/money"
+import { Agent } from "@opencode/schema/agent"
+import { Session } from "@opencode/schema/session"
+import { OpenAIResponses } from "@opencode/ai/protocols/openai-responses"
import { describe, expect } from "bun:test"
import { ConfigProvider, DateTime, Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Credential } from "@opencode-ai/core/credential"
-import { Integration } from "@opencode-ai/core/integration"
-import { Location } from "@opencode-ai/core/location"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { GithubCopilotPlugin } from "@opencode-ai/core/plugin/provider/github-copilot"
-import { OpenAIPlugin } from "@opencode-ai/core/plugin/provider/openai"
-import { Project } from "@opencode-ai/core/project"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { SessionModelRequest } from "@opencode-ai/core/session/model-request"
-import { SessionModelTransport } from "@opencode-ai/core/session/model-transport"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
+import { Catalog } from "@opencode/core/catalog"
+import { Credential } from "@opencode/core/credential"
+import { Integration } from "@opencode/core/integration"
+import { Location } from "@opencode/core/location"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { GithubCopilotPlugin } from "@opencode/core/plugin/provider/github-copilot"
+import { OpenAIPlugin } from "@opencode/core/plugin/provider/openai"
+import { Project } from "@opencode/core/project"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
+import { SessionModelRequest } from "@opencode/core/session/model-request"
+import { SessionModelTransport } from "@opencode/core/session/model-transport"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-opencode.test.ts b/packages/core/test/plugin/provider-opencode.test.ts
index 11119a7bc1f..57d4d7e7387 100644
--- a/packages/core/test/plugin/provider-opencode.test.ts
+++ b/packages/core/test/plugin/provider-opencode.test.ts
@@ -1,18 +1,18 @@
import { describe, expect } from "bun:test"
-import { LLM } from "@opencode-ai/ai"
-import { LLMClient, RequestExecutor } from "@opencode-ai/ai/route"
-import { Money } from "@opencode-ai/schema/money"
+import { LLM } from "@opencode/ai"
+import { LLMClient, RequestExecutor } from "@opencode/ai/route"
+import { Money } from "@opencode/schema/money"
import { Effect, Layer, Stream } from "effect"
import { HttpClient, HttpClientResponse } from "effect/unstable/http"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Credential } from "@opencode-ai/core/credential"
-import { Integration } from "@opencode-ai/core/integration"
-import { Model } from "@opencode-ai/core/model"
-import { ModelResolver } from "@opencode-ai/core/model-resolver"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { OpencodePlugin } from "@opencode-ai/core/plugin/provider/opencode"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Credential } from "@opencode/core/credential"
+import { Integration } from "@opencode/core/integration"
+import { Model } from "@opencode/core/model"
+import { ModelResolver } from "@opencode/core/model-resolver"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { OpencodePlugin } from "@opencode/core/plugin/provider/opencode"
+import { Provider } from "@opencode/core/provider"
import { withEnv } from "../fixture/env"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-openrouter.test.ts b/packages/core/test/plugin/provider-openrouter.test.ts
index e93b2a9172b..3a4061852bd 100644
--- a/packages/core/test/plugin/provider-openrouter.test.ts
+++ b/packages/core/test/plugin/provider-openrouter.test.ts
@@ -1,12 +1,12 @@
import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
-import { OpenRouterPlugin } from "@opencode-ai/core/plugin/provider/openrouter"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { ProviderPlugins } from "@opencode/core/plugin/provider"
+import { OpenRouterPlugin } from "@opencode/core/plugin/provider/openrouter"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-sap-ai-core.test.ts b/packages/core/test/plugin/provider-sap-ai-core.test.ts
index 4dbbae924cb..18df46c2d0b 100644
--- a/packages/core/test/plugin/provider-sap-ai-core.test.ts
+++ b/packages/core/test/plugin/provider-sap-ai-core.test.ts
@@ -1,12 +1,12 @@
-import { AISDK } from "@opencode-ai/core/aisdk"
+import { AISDK } from "@opencode/core/aisdk"
import { describe, expect } from "bun:test"
import { Effect } from "effect"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { Npm } from "@opencode-ai/util/npm"
-import { SapAICorePlugin } from "@opencode-ai/core/plugin/provider/sap-ai-core"
-import { Provider } from "@opencode-ai/core/provider"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { Npm } from "@opencode/util/npm"
+import { SapAICorePlugin } from "@opencode/core/plugin/provider/sap-ai-core"
+import { Provider } from "@opencode/core/provider"
import { withEnv } from "../fixture/env"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-snowflake-cortex.test.ts b/packages/core/test/plugin/provider-snowflake-cortex.test.ts
index 9caed67b7ae..1f1c108d294 100644
--- a/packages/core/test/plugin/provider-snowflake-cortex.test.ts
+++ b/packages/core/test/plugin/provider-snowflake-cortex.test.ts
@@ -1,12 +1,12 @@
-import { AISDK } from "@opencode-ai/core/aisdk"
+import { AISDK } from "@opencode/core/aisdk"
import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { SnowflakeCortexPlugin, cortexFetch } from "@opencode-ai/core/plugin/provider/snowflake-cortex"
-import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
-import { Provider } from "@opencode-ai/core/provider"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { SnowflakeCortexPlugin, cortexFetch } from "@opencode/core/plugin/provider/snowflake-cortex"
+import { ProviderPlugins } from "@opencode/core/plugin/provider"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-vercel.test.ts b/packages/core/test/plugin/provider-vercel.test.ts
index e5cc83a4d7f..a2c34f856f1 100644
--- a/packages/core/test/plugin/provider-vercel.test.ts
+++ b/packages/core/test/plugin/provider-vercel.test.ts
@@ -1,12 +1,12 @@
-import { AISDK } from "@opencode-ai/core/aisdk"
+import { AISDK } from "@opencode/core/aisdk"
import { describe, expect } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { VercelPlugin } from "@opencode-ai/core/plugin/provider/vercel"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { VercelPlugin } from "@opencode/core/plugin/provider/vercel"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-vllm.test.ts b/packages/core/test/plugin/provider-vllm.test.ts
index 672252ccc27..8a855cc1681 100644
--- a/packages/core/test/plugin/provider-vllm.test.ts
+++ b/packages/core/test/plugin/provider-vllm.test.ts
@@ -1,14 +1,14 @@
-import { Bus } from "@opencode-ai/core/bus"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Config } from "@opencode-ai/core/config"
-import { Integration } from "@opencode-ai/core/integration"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
-import { make, VLLMPlugin } from "@opencode-ai/core/plugin/provider/vllm"
-import { Provider } from "@opencode-ai/core/provider"
-import { Document, Event, Info } from "@opencode-ai/schema/config"
+import { Bus } from "@opencode/core/bus"
+import { Catalog } from "@opencode/core/catalog"
+import { Config } from "@opencode/core/config"
+import { Integration } from "@opencode/core/integration"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { ProviderPlugins } from "@opencode/core/plugin/provider"
+import { make, VLLMPlugin } from "@opencode/core/plugin/provider/vllm"
+import { Provider } from "@opencode/core/provider"
+import { Document, Event, Info } from "@opencode/schema/config"
import { describe, expect } from "bun:test"
import { Duration, Effect, Layer, Schema } from "effect"
import { testEffect } from "../lib/effect"
@@ -92,7 +92,7 @@ describe("VLLMPlugin", () => {
expect(yield* catalog.provider.get(providerID)).toEqual({
id: providerID,
name: "vLLM",
- package: "@opencode-ai/ai/providers/openai-compatible",
+ package: "@opencode/ai/providers/openai-compatible",
settings: { baseURL: `${server.url.origin}/v1`, provider: "vllm", apiKey: "" },
activation: "enabled",
})
diff --git a/packages/core/test/plugin/provider-xai.test.ts b/packages/core/test/plugin/provider-xai.test.ts
index 40f4cd46723..9dbbacf2f40 100644
--- a/packages/core/test/plugin/provider-xai.test.ts
+++ b/packages/core/test/plugin/provider-xai.test.ts
@@ -1,13 +1,13 @@
import { describe, expect } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Credential } from "@opencode-ai/core/credential"
-import { Integration } from "@opencode-ai/core/integration"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { XAIPlugin } from "@opencode-ai/core/plugin/provider/xai"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Credential } from "@opencode/core/credential"
+import { Integration } from "@opencode/core/integration"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { XAIPlugin } from "@opencode/core/plugin/provider/xai"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/provider-zenmux.test.ts b/packages/core/test/plugin/provider-zenmux.test.ts
index e88ceac88de..9ada80a90d2 100644
--- a/packages/core/test/plugin/provider-zenmux.test.ts
+++ b/packages/core/test/plugin/provider-zenmux.test.ts
@@ -1,11 +1,11 @@
import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHost } from "@opencode-ai/core/plugin/host"
-import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
-import { ZenmuxPlugin } from "@opencode-ai/core/plugin/provider/zenmux"
-import { Provider } from "@opencode-ai/core/provider"
+import { Catalog } from "@opencode/core/catalog"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHost } from "@opencode/core/plugin/host"
+import { ProviderPlugins } from "@opencode/core/plugin/provider"
+import { ZenmuxPlugin } from "@opencode/core/plugin/provider/zenmux"
+import { Provider } from "@opencode/core/provider"
import { testEffect } from "../lib/effect"
import { PluginTestLayer } from "./fixture"
diff --git a/packages/core/test/plugin/skill.test.ts b/packages/core/test/plugin/skill.test.ts
index b92ba84c4bb..66fdbed8931 100644
--- a/packages/core/test/plugin/skill.test.ts
+++ b/packages/core/test/plugin/skill.test.ts
@@ -1,10 +1,10 @@
import { describe, expect } from "bun:test"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Config } from "@opencode-ai/core/config"
-import { Document, Info } from "@opencode-ai/schema/config"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Config } from "@opencode/core/config"
+import { Document, Info } from "@opencode/schema/config"
import { Effect, Layer, Stream } from "effect"
-import { SkillPlugin } from "@opencode-ai/core/plugin/skill"
-import { Skill } from "@opencode-ai/core/skill"
+import { SkillPlugin } from "@opencode/core/plugin/skill"
+import { Skill } from "@opencode/core/skill"
import { testEffect } from "../lib/effect"
import { host } from "./host"
diff --git a/packages/core/test/plugin/supervisor-reload.test.ts b/packages/core/test/plugin/supervisor-reload.test.ts
index 30005221854..c4005882e69 100644
--- a/packages/core/test/plugin/supervisor-reload.test.ts
+++ b/packages/core/test/plugin/supervisor-reload.test.ts
@@ -3,23 +3,23 @@ import fs from "fs/promises"
import path from "path"
import { Deferred, Duration, Effect, Fiber, Layer, LayerMap, Schedule } from "effect"
import { TestClock } from "effect/testing"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Event } from "@opencode-ai/schema/config"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Global } from "@opencode-ai/util/global"
-import { Npm } from "@opencode-ai/util/npm"
-import { Bus } from "@opencode-ai/core/bus"
-import { Command } from "@opencode-ai/core/command"
-import { Database } from "@opencode-ai/core/database/database"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
-import { Instance } from "@opencode-ai/core/instance"
-import { LocationServiceMap } from "@opencode-ai/core/location-services"
-import { Location } from "@opencode-ai/core/location"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { Rpc } from "@opencode-ai/core/rpc"
-import { SdkPlugins } from "@opencode-ai/core/plugin/sdk"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Event } from "@opencode/schema/config"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Global } from "@opencode/util/global"
+import { Npm } from "@opencode/util/npm"
+import { Bus } from "@opencode/core/bus"
+import { Command } from "@opencode/core/command"
+import { Database } from "@opencode/core/database/database"
+import { Watcher } from "@opencode/core/filesystem/watcher"
+import { Instance } from "@opencode/core/instance"
+import { LocationServiceMap } from "@opencode/core/location-services"
+import { Location } from "@opencode/core/location"
+import { Plugin } from "@opencode/core/plugin"
+import { Rpc } from "@opencode/core/rpc"
+import { SdkPlugins } from "@opencode/core/plugin/sdk"
+import { AbsolutePath } from "@opencode/core/schema"
import { tempGlobalLayer } from "../fixture/global"
import { offlineModels } from "../fixture/models"
import { tmpdirScoped } from "../fixture/tmpdir"
diff --git a/packages/core/test/plugin/supervisor.test.ts b/packages/core/test/plugin/supervisor.test.ts
index 9113fee0df6..b96c3afed73 100644
--- a/packages/core/test/plugin/supervisor.test.ts
+++ b/packages/core/test/plugin/supervisor.test.ts
@@ -1,18 +1,18 @@
import { describe, expect } from "bun:test"
import { Deferred, Duration, Effect, Layer, LayerMap, Stream } from "effect"
import { TestClock } from "effect/testing"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Global } from "@opencode-ai/util/global"
-import { Command } from "@opencode-ai/core/command"
-import { ConfigPluginSource } from "@opencode-ai/core/config/plugin/source"
-import { Instance } from "@opencode-ai/core/instance"
-import { LocationServiceMap } from "@opencode-ai/core/location-services"
-import { Location } from "@opencode-ai/core/location"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { SdkPlugins } from "@opencode-ai/core/plugin/sdk"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import { define } from "@opencode/plugin/effect/plugin"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Global } from "@opencode/util/global"
+import { Command } from "@opencode/core/command"
+import { ConfigPluginSource } from "@opencode/core/config/plugin/source"
+import { Instance } from "@opencode/core/instance"
+import { LocationServiceMap } from "@opencode/core/location-services"
+import { Location } from "@opencode/core/location"
+import { Plugin } from "@opencode/core/plugin"
+import { SdkPlugins } from "@opencode/core/plugin/sdk"
+import { AbsolutePath } from "@opencode/core/schema"
import { Database } from "../../src/database/database"
import { Bus } from "../../src/bus"
import { tempGlobalLayer } from "../fixture/global"
diff --git a/packages/core/test/plugin/variant.test.ts b/packages/core/test/plugin/variant.test.ts
index 2a253634704..249364592a6 100644
--- a/packages/core/test/plugin/variant.test.ts
+++ b/packages/core/test/plugin/variant.test.ts
@@ -1,11 +1,11 @@
import { describe, expect } from "bun:test"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Location } from "@opencode-ai/core/location"
-import { Model } from "@opencode-ai/core/model"
-import { VariantPlugin } from "@opencode-ai/core/plugin/variant"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import { Catalog } from "@opencode/core/catalog"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Location } from "@opencode/core/location"
+import { Model } from "@opencode/core/model"
+import { VariantPlugin } from "@opencode/core/plugin/variant"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
import { Effect, Layer } from "effect"
import { location } from "../fixture/location"
import { testEffect } from "../lib/effect"
diff --git a/packages/core/test/plugin/websearch-fixture.ts b/packages/core/test/plugin/websearch-fixture.ts
index 4067c1bd594..3933adcde16 100644
--- a/packages/core/test/plugin/websearch-fixture.ts
+++ b/packages/core/test/plugin/websearch-fixture.ts
@@ -1,13 +1,13 @@
import { Effect, Layer } from "effect"
import { HttpClient, HttpClientResponse } from "effect/unstable/http"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Credential } from "@opencode-ai/core/credential"
-import { Config } from "@opencode-ai/core/config"
-import { Bus } from "@opencode-ai/core/bus"
-import { Form } from "@opencode-ai/core/form"
-import { Integration } from "@opencode-ai/core/integration"
-import { WebSearch } from "@opencode-ai/core/websearch"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Credential } from "@opencode/core/credential"
+import { Config } from "@opencode/core/config"
+import { Bus } from "@opencode/core/bus"
+import { Form } from "@opencode/core/form"
+import { Integration } from "@opencode/core/integration"
+import { WebSearch } from "@opencode/core/websearch"
import { testEffect } from "../lib/effect"
interface WebSearchRequest {
diff --git a/packages/core/test/plugin/websearch.test.ts b/packages/core/test/plugin/websearch.test.ts
index d1ba027d17a..4d8b60493ea 100644
--- a/packages/core/test/plugin/websearch.test.ts
+++ b/packages/core/test/plugin/websearch.test.ts
@@ -1,11 +1,11 @@
import { beforeEach, describe, expect } from "bun:test"
import { Effect } from "effect"
-import { Integration } from "@opencode-ai/core/integration"
-import { WebSearch } from "@opencode-ai/core/websearch"
-import { WebSearchExa } from "@opencode-ai/core/plugin/websearch/exa"
-import { WebSearchFirecrawl } from "@opencode-ai/core/plugin/websearch/firecrawl"
-import { WebSearchParallel } from "@opencode-ai/core/plugin/websearch/parallel"
-import { WebSearchTavily } from "@opencode-ai/core/plugin/websearch/tavily"
+import { Integration } from "@opencode/core/integration"
+import { WebSearch } from "@opencode/core/websearch"
+import { WebSearchExa } from "@opencode/core/plugin/websearch/exa"
+import { WebSearchFirecrawl } from "@opencode/core/plugin/websearch/firecrawl"
+import { WebSearchParallel } from "@opencode/core/plugin/websearch/parallel"
+import { WebSearchTavily } from "@opencode/core/plugin/websearch/tavily"
import { host, integrationHost, webSearchHost } from "./host"
import { requests, signals, resetWebSearchFixture, webSearchIntegrationTest } from "./websearch-fixture"
diff --git a/packages/core/test/plugin/worktree.test.ts b/packages/core/test/plugin/worktree.test.ts
index 1e9ef6bf307..56aac88ea2e 100644
--- a/packages/core/test/plugin/worktree.test.ts
+++ b/packages/core/test/plugin/worktree.test.ts
@@ -1,9 +1,9 @@
import { expect } from "bun:test"
import { Cause, Deferred, Effect, Exit, Fiber } from "effect"
-import { Plugin } from "@opencode-ai/plugin"
-import type { WorktreeDefinition } from "@opencode-ai/plugin/effect/worktree"
-import { PluginPromise } from "@opencode-ai/core/plugin/promise"
-import { State } from "@opencode-ai/core/state"
+import { Plugin } from "@opencode/plugin"
+import type { WorktreeDefinition } from "@opencode/plugin/effect/worktree"
+import { PluginPromise } from "@opencode/core/plugin/promise"
+import { State } from "@opencode/core/state"
import { it } from "../lib/effect"
import { host } from "./host"
diff --git a/packages/core/test/preload.test.ts b/packages/core/test/preload.test.ts
index 33595e11c4c..986281d8115 100644
--- a/packages/core/test/preload.test.ts
+++ b/packages/core/test/preload.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test"
import os from "os"
import path from "path"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
describe("Core test environment", () => {
test("disables public npm security audits", () => {
diff --git a/packages/core/test/process/process.test.ts b/packages/core/test/process/process.test.ts
index aadd111ac1d..1ee13c4cbb7 100644
--- a/packages/core/test/process/process.test.ts
+++ b/packages/core/test/process/process.test.ts
@@ -6,8 +6,8 @@ import { tmpdir } from "node:os"
import path from "node:path"
import { Effect, Exit, Fiber, Stream } from "effect"
import { ChildProcess } from "effect/unstable/process"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { AppProcess } from "@opencode-ai/util/process"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { AppProcess } from "@opencode/util/process"
import { testEffect } from "../lib/effect"
const it = testEffect(LayerNode.compile(AppProcess.node))
diff --git a/packages/core/test/project.test.ts b/packages/core/test/project.test.ts
index 7dc43e6f890..3c50b57bb31 100644
--- a/packages/core/test/project.test.ts
+++ b/packages/core/test/project.test.ts
@@ -3,15 +3,15 @@ import { $ } from "bun"
import fs from "fs/promises"
import path from "path"
import { Effect, Stream } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectSchema } from "@opencode-ai/core/project/schema"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Hash } from "@opencode-ai/util/hash"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { Project } from "@opencode/core/project"
+import { ProjectSchema } from "@opencode/core/project/schema"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Hash } from "@opencode/util/hash"
import { tmpdir } from "./fixture/tmpdir"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/provider.test.ts b/packages/core/test/provider.test.ts
index 199f1253d04..1dfb50edc08 100644
--- a/packages/core/test/provider.test.ts
+++ b/packages/core/test/provider.test.ts
@@ -1,25 +1,25 @@
import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
-import { Provider } from "@opencode-ai/core/provider"
+import { Provider } from "@opencode/core/provider"
describe("Provider", () => {
test("loads bundled native provider entrypoints", async () => {
const packages = [
- "@opencode-ai/ai/providers/baseten",
- "@opencode-ai/ai/providers/cerebras",
- "@opencode-ai/ai/providers/cloudflare-ai-gateway",
- "@opencode-ai/ai/providers/cloudflare-workers-ai",
- "@opencode-ai/ai/providers/deepinfra",
- "@opencode-ai/ai/providers/deepseek",
- "@opencode-ai/ai/providers/fireworks",
- "@opencode-ai/ai/providers/google-vertex",
- "@opencode-ai/ai/providers/google-vertex/gemini",
- "@opencode-ai/ai/providers/google-vertex/chat",
- "@opencode-ai/ai/providers/google-vertex/responses",
- "@opencode-ai/ai/providers/google-vertex/messages",
- "@opencode-ai/ai/providers/groq",
- "@opencode-ai/ai/providers/mistral",
- "@opencode-ai/ai/providers/togetherai",
+ "@opencode/ai/providers/baseten",
+ "@opencode/ai/providers/cerebras",
+ "@opencode/ai/providers/cloudflare-ai-gateway",
+ "@opencode/ai/providers/cloudflare-workers-ai",
+ "@opencode/ai/providers/deepinfra",
+ "@opencode/ai/providers/deepseek",
+ "@opencode/ai/providers/fireworks",
+ "@opencode/ai/providers/google-vertex",
+ "@opencode/ai/providers/google-vertex/gemini",
+ "@opencode/ai/providers/google-vertex/chat",
+ "@opencode/ai/providers/google-vertex/responses",
+ "@opencode/ai/providers/google-vertex/messages",
+ "@opencode/ai/providers/groq",
+ "@opencode/ai/providers/mistral",
+ "@opencode/ai/providers/togetherai",
]
for (const specifier of packages) {
diff --git a/packages/core/test/pty/info-schema.test.ts b/packages/core/test/pty/info-schema.test.ts
index 6cdf263a5bb..9af99bed5fa 100644
--- a/packages/core/test/pty/info-schema.test.ts
+++ b/packages/core/test/pty/info-schema.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import { Schema } from "effect"
-import { Pty } from "@opencode-ai/core/pty"
+import { Pty } from "@opencode/core/pty"
const sample = (pid: number) => ({
id: "pty_01J5Y5H0AH4Q4NXJ6P4C3P5V2K",
diff --git a/packages/core/test/pty/protocol.test.ts b/packages/core/test/pty/protocol.test.ts
index 2bf9610595f..85090d44387 100644
--- a/packages/core/test/pty/protocol.test.ts
+++ b/packages/core/test/pty/protocol.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import { PtyProtocol } from "@opencode-ai/core/pty/protocol"
+import { PtyProtocol } from "@opencode/core/pty/protocol"
describe("pty protocol", () => {
test("drops invalid binary input frames and decodes valid ones", () => {
diff --git a/packages/core/test/pty/pty-session.test.ts b/packages/core/test/pty/pty-session.test.ts
index b9dfa200f35..f22f487cac0 100644
--- a/packages/core/test/pty/pty-session.test.ts
+++ b/packages/core/test/pty/pty-session.test.ts
@@ -1,13 +1,13 @@
import { describe, expect } from "bun:test"
import { Cause, Deferred, Effect, Exit, Layer, Queue } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Location } from "@opencode-ai/core/location"
-import { Pty } from "@opencode-ai/core/pty"
-import { PtyID } from "@opencode-ai/core/pty/schema"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { ShellSelect } from "@opencode-ai/core/shell/select"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Location } from "@opencode/core/location"
+import { Pty } from "@opencode/core/pty"
+import { PtyID } from "@opencode/core/pty/schema"
+import { AbsolutePath } from "@opencode/core/schema"
+import { ShellSelect } from "@opencode/core/shell/select"
import { location } from "../fixture/location"
import { testEffect } from "../lib/effect"
diff --git a/packages/core/test/pty/ticket.test.ts b/packages/core/test/pty/ticket.test.ts
index 31c87de49af..1a9e6d2bb55 100644
--- a/packages/core/test/pty/ticket.test.ts
+++ b/packages/core/test/pty/ticket.test.ts
@@ -1,9 +1,9 @@
import { describe, expect } from "bun:test"
import { Effect, Layer } from "effect"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { PtyID } from "@opencode-ai/core/pty/schema"
-import { PtyTicket } from "@opencode-ai/core/pty/ticket"
-import { Workspace } from "@opencode-ai/core/workspace"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { PtyID } from "@opencode/core/pty/schema"
+import { PtyTicket } from "@opencode/core/pty/ticket"
+import { Workspace } from "@opencode/core/workspace"
import { testEffect } from "../lib/effect"
const it = testEffect(LayerNode.compile(PtyTicket.node))
diff --git a/packages/core/test/reference-instructions.test.ts b/packages/core/test/reference-instructions.test.ts
index 2baf4cb15cb..b1e8fce2777 100644
--- a/packages/core/test/reference-instructions.test.ts
+++ b/packages/core/test/reference-instructions.test.ts
@@ -1,9 +1,9 @@
import { describe, expect } from "bun:test"
import { Effect, Layer } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Reference } from "@opencode-ai/core/reference"
-import { ReferenceInstructions } from "@opencode-ai/core/reference/instructions"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Reference } from "@opencode/core/reference"
+import { ReferenceInstructions } from "@opencode/core/reference/instructions"
import { it } from "./lib/effect"
import { readInitial, readUpdate } from "./lib/instructions"
diff --git a/packages/core/test/reference.test.ts b/packages/core/test/reference.test.ts
index 1e1d14020c8..826101d6ae2 100644
--- a/packages/core/test/reference.test.ts
+++ b/packages/core/test/reference.test.ts
@@ -1,14 +1,14 @@
import { describe, expect } from "bun:test"
import { Deferred, Effect, Exit, Layer, Scope } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Bus } from "@opencode-ai/core/bus"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { State } from "@opencode-ai/core/state"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Global } from "@opencode-ai/util/global"
-import { Reference } from "@opencode-ai/core/reference"
-import { Repository } from "@opencode-ai/core/repository"
-import { RepositoryCache } from "@opencode-ai/core/repository-cache"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Bus } from "@opencode/core/bus"
+import { AbsolutePath } from "@opencode/core/schema"
+import { State } from "@opencode/core/state"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Global } from "@opencode/util/global"
+import { Reference } from "@opencode/core/reference"
+import { Repository } from "@opencode/core/repository"
+import { RepositoryCache } from "@opencode/core/repository-cache"
import { it } from "./lib/effect"
const cache = Layer.mock(RepositoryCache.Service, {
diff --git a/packages/core/test/repository-cache.test.ts b/packages/core/test/repository-cache.test.ts
index 4b9f2ee2074..fde7c331589 100644
--- a/packages/core/test/repository-cache.test.ts
+++ b/packages/core/test/repository-cache.test.ts
@@ -3,13 +3,13 @@ import fs from "fs/promises"
import path from "path"
import { pathToFileURL } from "url"
import { Clock, Duration, Effect, Layer } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Global } from "@opencode-ai/util/global"
-import { Repository } from "@opencode-ai/core/repository"
-import { RepositoryCache } from "@opencode-ai/core/repository-cache"
-import { Database } from "@opencode-ai/core/database/database"
-import { KV } from "@opencode-ai/core/kv"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Global } from "@opencode/util/global"
+import { Repository } from "@opencode/core/repository"
+import { RepositoryCache } from "@opencode/core/repository-cache"
+import { Database } from "@opencode/core/database/database"
+import { KV } from "@opencode/core/kv"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { branch, commit, git, read, withRemote } from "./fixture/git"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/repository.test.ts b/packages/core/test/repository.test.ts
index 1a6af675d12..a877b6dd92b 100644
--- a/packages/core/test/repository.test.ts
+++ b/packages/core/test/repository.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test"
import path from "path"
import { pathToFileURL } from "url"
-import { Repository } from "@opencode-ai/core/repository"
+import { Repository } from "@opencode/core/repository"
describe("Repository", () => {
test("parses github shorthand and builds an explicit-root cache path", () => {
diff --git a/packages/core/test/ripgrep.test.ts b/packages/core/test/ripgrep.test.ts
index 08bbbe53384..8937161ada6 100644
--- a/packages/core/test/ripgrep.test.ts
+++ b/packages/core/test/ripgrep.test.ts
@@ -2,10 +2,10 @@ import { describe, expect } from "bun:test"
import fs from "fs/promises"
import path from "path"
import { Effect } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Location } from "@opencode-ai/core/location"
-import { Ripgrep } from "@opencode-ai/core/ripgrep"
-import { RelativePath } from "@opencode-ai/core/schema"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Location } from "@opencode/core/location"
+import { Ripgrep } from "@opencode/core/ripgrep"
+import { RelativePath } from "@opencode/core/schema"
import { tmpdir } from "./fixture/tmpdir"
import { testEffect } from "./lib/effect"
import { tempLocationLayer } from "./fixture/location"
diff --git a/packages/core/test/rpc-handler-errors.test.ts b/packages/core/test/rpc-handler-errors.test.ts
index bcf77f799c6..6dad9b0d15f 100644
--- a/packages/core/test/rpc-handler-errors.test.ts
+++ b/packages/core/test/rpc-handler-errors.test.ts
@@ -1,8 +1,8 @@
import { expect } from "bun:test"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Location } from "@opencode-ai/core/location"
-import { Rpc } from "@opencode-ai/core/rpc"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Location } from "@opencode/core/location"
+import { Rpc } from "@opencode/core/rpc"
+import { AbsolutePath } from "@opencode/core/schema"
import { Effect, Layer, Logger, Schema } from "effect"
import { location } from "./fixture/location"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/session-activation.test.ts b/packages/core/test/session-activation.test.ts
index b2ba2358bcd..8a7482fb3c8 100644
--- a/packages/core/test/session-activation.test.ts
+++ b/packages/core/test/session-activation.test.ts
@@ -1,17 +1,17 @@
import { describe, expect, setDefaultTimeout } from "bun:test"
import { Effect } from "effect"
import path from "path"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Global } from "@opencode-ai/util/global"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Watcher } from "@opencode/core/filesystem/watcher"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Global } from "@opencode/util/global"
import { tempGlobalLayer } from "./fixture/global"
import { offlineModels } from "./fixture/models"
import { tmpdirScoped } from "./fixture/tmpdir"
diff --git a/packages/core/test/session-checkpoint-transport.test.ts b/packages/core/test/session-checkpoint-transport.test.ts
index b2b2a42c55a..16726a4ad43 100644
--- a/packages/core/test/session-checkpoint-transport.test.ts
+++ b/packages/core/test/session-checkpoint-transport.test.ts
@@ -1,10 +1,10 @@
import { expect } from "bun:test"
-import { LLM, LLMRequest, Message } from "@opencode-ai/ai"
-import { LLMClient, RequestExecutor } from "@opencode-ai/ai/route"
-import { configure } from "@opencode-ai/ai/providers/openai"
+import { LLM, LLMRequest, Message } from "@opencode/ai"
+import { LLMClient, RequestExecutor } from "@opencode/ai/route"
+import { configure } from "@opencode/ai/providers/openai"
import { SessionModelTransport } from "../src/session/model-transport"
import { WebSocketConstructor } from "../src/effect/websocket-constructor"
-import { Session } from "@opencode-ai/schema/session"
+import { Session } from "@opencode/schema/session"
import { Effect, Layer, Schema } from "effect"
import { FetchHttpClient } from "effect/unstable/http"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/session-compact.test.ts b/packages/core/test/session-compact.test.ts
index c15112d7aed..496d599fbdb 100644
--- a/packages/core/test/session-compact.test.ts
+++ b/packages/core/test/session-compact.test.ts
@@ -1,24 +1,24 @@
import { describe, expect } from "bun:test"
-import { LLMClient, LLMEvent, LanguageModel, type LLMRequest } from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols"
-import { Config } from "@opencode-ai/core/config"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Location } from "@opencode-ai/core/location"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import type { LocationServices } from "@opencode-ai/core/location-services"
-import { Project } from "@opencode-ai/core/project"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionCompaction } from "@opencode-ai/core/session/compaction"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { SessionStore } from "@opencode-ai/core/session/store"
+import { LLMClient, LLMEvent, LanguageModel, type LLMRequest } from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols"
+import { Config } from "@opencode/core/config"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Location } from "@opencode/core/location"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import type { LocationServices } from "@opencode/core/location-services"
+import { Project } from "@opencode/core/project"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionCompaction } from "@opencode/core/session/compaction"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { SessionStore } from "@opencode/core/session/store"
import { Effect, Layer, LayerMap, Stream } from "effect"
import { testEffect } from "./lib/effect"
import { globalProjectNode } from "./lib/project"
diff --git a/packages/core/test/session-compaction-transport.test.ts b/packages/core/test/session-compaction-transport.test.ts
index c060536a50b..96b01be6685 100644
--- a/packages/core/test/session-compaction-transport.test.ts
+++ b/packages/core/test/session-compaction-transport.test.ts
@@ -1,10 +1,10 @@
import { expect } from "bun:test"
-import { LLM, LLMClient, LLMRequest, Message } from "@opencode-ai/ai"
-import { OpenAI } from "@opencode-ai/ai/providers"
-import { RequestExecutor, WebSocketTransport } from "@opencode-ai/ai/route"
-import { SessionModelTransport } from "@opencode-ai/core/session/model-transport"
-import { WebSocketConstructor } from "@opencode-ai/core/effect/websocket-constructor"
-import { Session } from "@opencode-ai/schema/session"
+import { LLM, LLMClient, LLMRequest, Message } from "@opencode/ai"
+import { OpenAI } from "@opencode/ai/providers"
+import { RequestExecutor, WebSocketTransport } from "@opencode/ai/route"
+import { SessionModelTransport } from "@opencode/core/session/model-transport"
+import { WebSocketConstructor } from "@opencode/core/effect/websocket-constructor"
+import { Session } from "@opencode/schema/session"
import { Effect, Latch, Layer, Schema } from "effect"
import { FetchHttpClient } from "effect/unstable/http"
import { Socket } from "effect/unstable/socket"
diff --git a/packages/core/test/session-compaction.test.ts b/packages/core/test/session-compaction.test.ts
index 3c50dc1e1a1..5384eb99efe 100644
--- a/packages/core/test/session-compaction.test.ts
+++ b/packages/core/test/session-compaction.test.ts
@@ -1,32 +1,32 @@
import { expect, test } from "bun:test"
-import { LLMClient, LLMEvent, LanguageModel, ToolDefinition, type LLMRequest } from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { llmClient } from "@opencode-ai/core/effect/app-node-platform"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { SessionCompaction } from "@opencode-ai/core/session/compaction"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionModelRequest } from "@opencode-ai/core/session/model-request"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { SessionTable } from "@opencode-ai/core/session/sql"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { Session } from "@opencode-ai/core/session"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { App } from "@opencode-ai/core/app"
-import { Agent } from "@opencode-ai/core/agent"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
-import { Location } from "@opencode-ai/core/location"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Money } from "@opencode-ai/schema/money"
-import { Skill } from "@opencode-ai/schema/skill"
-import { Shell } from "@opencode-ai/schema/shell"
+import { LLMClient, LLMEvent, LanguageModel, ToolDefinition, type LLMRequest } from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { llmClient } from "@opencode/core/effect/app-node-platform"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { EventTable } from "@opencode/core/event/sql"
+import { SessionCompaction } from "@opencode/core/session/compaction"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionModelRequest } from "@opencode/core/session/model-request"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { SessionTable } from "@opencode/core/session/sql"
+import { SessionStore } from "@opencode/core/session/store"
+import { Session } from "@opencode/core/session"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { App } from "@opencode/core/app"
+import { Agent } from "@opencode/core/agent"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
+import { Location } from "@opencode/core/location"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Money } from "@opencode/schema/money"
+import { Skill } from "@opencode/schema/skill"
+import { Shell } from "@opencode/schema/shell"
import { DateTime, Effect, Fiber, Layer, Schema, Stream } from "effect"
import { asc, eq } from "drizzle-orm"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/session-create.test.ts b/packages/core/test/session-create.test.ts
index b30334e9d19..dc2f31ee5ea 100644
--- a/packages/core/test/session-create.test.ts
+++ b/packages/core/test/session-create.test.ts
@@ -4,38 +4,38 @@ import fs from "fs/promises"
import path from "path"
import { DateTime, Effect, Layer, Stream } from "effect"
import { TestClock } from "effect/testing"
-import { Money } from "@opencode-ai/schema/money"
-import { Shell } from "@opencode-ai/schema/shell"
-import { Skill } from "@opencode-ai/schema/skill"
-import { Agent } from "@opencode-ai/core/agent"
+import { Money } from "@opencode/schema/money"
+import { Shell } from "@opencode/schema/shell"
+import { Skill } from "@opencode/schema/skill"
+import { Agent } from "@opencode/core/agent"
import { asc, eq } from "drizzle-orm"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Hash } from "@opencode-ai/util/hash"
-import { Bus } from "@opencode-ai/core/bus"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { Instructions } from "@opencode-ai/core/instructions/index"
-import { Location } from "@opencode-ai/core/location"
-import { Model } from "@opencode-ai/core/model"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath, RelativePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionInbox } from "@opencode-ai/core/session/inbox"
-import { InstructionEntry } from "@opencode-ai/core/session/instruction-entry"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionTable } from "@opencode-ai/core/session/sql"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { SessionTransfer } from "@opencode-ai/core/session/transfer"
-import { Workspace } from "@opencode-ai/core/workspace"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Hash } from "@opencode/util/hash"
+import { Bus } from "@opencode/core/bus"
+import { EventTable } from "@opencode/core/event/sql"
+import { Instructions } from "@opencode/core/instructions/index"
+import { Location } from "@opencode/core/location"
+import { Model } from "@opencode/core/model"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath, RelativePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionInbox } from "@opencode/core/session/inbox"
+import { InstructionEntry } from "@opencode/core/session/instruction-entry"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionTable } from "@opencode/core/session/sql"
+import { SessionStore } from "@opencode/core/session/store"
+import { SessionTransfer } from "@opencode/core/session/transfer"
+import { Workspace } from "@opencode/core/workspace"
import { Expected } from "./lib/session-message"
import { testEffect } from "./lib/effect"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
import { offlineModels } from "./fixture/models"
import { promptLocationNode } from "./fixture/prompt-location"
import { globalProjectNode } from "./lib/project"
diff --git a/packages/core/test/session-environment.test.ts b/packages/core/test/session-environment.test.ts
index ee1db0736e8..4c38e95f473 100644
--- a/packages/core/test/session-environment.test.ts
+++ b/packages/core/test/session-environment.test.ts
@@ -1,8 +1,8 @@
import { describe, expect } from "bun:test"
import { Effect } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Session } from "@opencode-ai/core/session"
-import { SessionEnvironment } from "@opencode-ai/core/session/environment"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Session } from "@opencode/core/session"
+import { SessionEnvironment } from "@opencode/core/session/environment"
import { testEffect } from "./lib/effect"
const it = testEffect(AppNodeBuilder.build(SessionEnvironment.node))
diff --git a/packages/core/test/session-error.test.ts b/packages/core/test/session-error.test.ts
index 8febfa53f2e..6de68bfe14c 100644
--- a/packages/core/test/session-error.test.ts
+++ b/packages/core/test/session-error.test.ts
@@ -16,14 +16,14 @@ import {
UnknownProviderError,
ToolFailure,
HttpContext,
-} from "@opencode-ai/ai"
-import { Permission } from "@opencode-ai/core/permission"
-import { ID } from "@opencode-ai/core/model"
-import { ModelResolver } from "@opencode-ai/core/model-resolver"
-import { Provider } from "@opencode-ai/core/provider"
-import { Tool } from "@opencode-ai/schema/tool"
-import { toSessionError } from "@opencode-ai/core/session/to-session-error"
-import { SessionRunnerRetry } from "@opencode-ai/core/session/runner/retry"
+} from "@opencode/ai"
+import { Permission } from "@opencode/core/permission"
+import { ID } from "@opencode/core/model"
+import { ModelResolver } from "@opencode/core/model-resolver"
+import { Provider } from "@opencode/core/provider"
+import { Tool } from "@opencode/schema/tool"
+import { toSessionError } from "@opencode/core/session/to-session-error"
+import { SessionRunnerRetry } from "@opencode/core/session/runner/retry"
const llm = (reason: AIError["reason"]) => new AIError({ reason })
diff --git a/packages/core/test/session-execution.test.ts b/packages/core/test/session-execution.test.ts
index 3d34e97f2c0..ba6234b60ab 100644
--- a/packages/core/test/session-execution.test.ts
+++ b/packages/core/test/session-execution.test.ts
@@ -1,27 +1,27 @@
import { describe, expect, test } from "bun:test"
-import { AIError, TransportError } from "@opencode-ai/ai"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Instance } from "@opencode-ai/core/instance/service"
-import { Job } from "@opencode-ai/core/job"
-import { KV } from "@opencode-ai/core/kv"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import type { LocationServices } from "@opencode-ai/core/location-services"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionRestart } from "@opencode-ai/core/session/execution/restart"
-import { UserInterruptedError } from "@opencode-ai/core/session/error"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionInbox } from "@opencode-ai/core/session/inbox"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionRunner } from "@opencode-ai/core/session/runner/index"
-import { SessionInboxTable, SessionTable } from "@opencode-ai/core/session/sql"
-import { SessionStore } from "@opencode-ai/core/session/store"
+import { AIError, TransportError } from "@opencode/ai"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Instance } from "@opencode/core/instance/service"
+import { Job } from "@opencode/core/job"
+import { KV } from "@opencode/core/kv"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import type { LocationServices } from "@opencode/core/location-services"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionRestart } from "@opencode/core/session/execution/restart"
+import { UserInterruptedError } from "@opencode/core/session/error"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionInbox } from "@opencode/core/session/inbox"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionRunner } from "@opencode/core/session/runner/index"
+import { SessionInboxTable, SessionTable } from "@opencode/core/session/sql"
+import { SessionStore } from "@opencode/core/session/store"
import { Cause, Context, Deferred, Effect, Exit, Fiber, Layer, LayerMap, Scope } from "effect"
import { eq } from "drizzle-orm"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/session-generate.test.ts b/packages/core/test/session-generate.test.ts
index 39c5b381691..573390728f9 100644
--- a/packages/core/test/session-generate.test.ts
+++ b/packages/core/test/session-generate.test.ts
@@ -1,45 +1,45 @@
import { expect } from "bun:test"
-import { LLMClient, LLMEvent, LLMResponse, LanguageModel, ToolDefinition, type LLMRequest } from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols"
-import type { StreamOptions } from "@opencode-ai/ai/route"
-import { Agent } from "@opencode-ai/core/agent"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { llmClient } from "@opencode-ai/core/effect/app-node-platform"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { InstructionDiscovery } from "@opencode-ai/core/instruction-discovery"
-import { Instance } from "@opencode-ai/core/instance/service"
-import { Instructions } from "@opencode-ai/core/instructions/index"
-import { InstructionBuiltIns } from "@opencode-ai/core/instructions/builtins"
-import { Location } from "@opencode-ai/core/location"
-import { McpInstructions } from "@opencode-ai/core/mcp/instructions"
-import { ID } from "@opencode-ai/core/model"
-import { Project } from "@opencode-ai/core/project"
-import { Provider } from "@opencode-ai/core/provider"
-import { ReferenceInstructions } from "@opencode-ai/core/reference/instructions"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionContext } from "@opencode-ai/core/session/context"
-import { SessionGenerate } from "@opencode-ai/core/session/generate"
-import { InstructionState } from "@opencode-ai/core/session/instruction-state"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { SessionSchema } from "@opencode-ai/core/session/schema"
+import { LLMClient, LLMEvent, LLMResponse, LanguageModel, ToolDefinition, type LLMRequest } from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols"
+import type { StreamOptions } from "@opencode/ai/route"
+import { Agent } from "@opencode/core/agent"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { llmClient } from "@opencode/core/effect/app-node-platform"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { EventTable } from "@opencode/core/event/sql"
+import { InstructionDiscovery } from "@opencode/core/instruction-discovery"
+import { Instance } from "@opencode/core/instance/service"
+import { Instructions } from "@opencode/core/instructions/index"
+import { InstructionBuiltIns } from "@opencode/core/instructions/builtins"
+import { Location } from "@opencode/core/location"
+import { McpInstructions } from "@opencode/core/mcp/instructions"
+import { ID } from "@opencode/core/model"
+import { Project } from "@opencode/core/project"
+import { Provider } from "@opencode/core/provider"
+import { ReferenceInstructions } from "@opencode/core/reference/instructions"
+import { AbsolutePath } from "@opencode/core/schema"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionContext } from "@opencode/core/session/context"
+import { SessionGenerate } from "@opencode/core/session/generate"
+import { InstructionState } from "@opencode/core/session/instruction-state"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { SessionSchema } from "@opencode/core/session/schema"
import {
InstructionBlobTable,
InstructionStateTable,
SessionMessageTable,
SessionInboxTable,
SessionTable,
-} from "@opencode-ai/core/session/sql"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { SkillInstructions } from "@opencode-ai/core/skill/instructions"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginSupervisor } from "@opencode-ai/core/plugin/supervisor"
-import { Tool } from "@opencode-ai/core/tool"
+} from "@opencode/core/session/sql"
+import { SessionStore } from "@opencode/core/session/store"
+import { SkillInstructions } from "@opencode/core/skill/instructions"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginSupervisor } from "@opencode/core/plugin/supervisor"
+import { Tool } from "@opencode/core/tool"
import { asc, eq } from "drizzle-orm"
import { Effect, Layer, Schema, Stream } from "effect"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/session-instructions.test.ts b/packages/core/test/session-instructions.test.ts
index 418c708e054..d9401195b24 100644
--- a/packages/core/test/session-instructions.test.ts
+++ b/packages/core/test/session-instructions.test.ts
@@ -2,35 +2,35 @@ import { describe, expect, test } from "bun:test"
import fs from "fs/promises"
import path from "path"
import { DateTime, Effect, Layer } from "effect"
-import { Agent } from "@opencode-ai/core/agent"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Config } from "@opencode-ai/core/config"
-import { Database } from "@opencode-ai/core/database/database"
-import { Bus } from "@opencode-ai/core/bus"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
-import { Image } from "@opencode-ai/core/image"
-import { Location } from "@opencode-ai/core/location"
-import { FileAccess } from "@opencode-ai/core/file-access"
-import { Model } from "@opencode-ai/core/model"
-import { Permission } from "@opencode-ai/core/permission"
-import { Project } from "@opencode-ai/core/project"
-import { Provider } from "@opencode-ai/core/provider"
-import { ReadTool } from "@opencode-ai/core/tool/plugin/read"
-import { ReadToolFileSystem } from "@opencode-ai/core/tool/read-filesystem"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionInstructions } from "@opencode-ai/core/session/instructions"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { Session } from "@opencode-ai/core/session"
-import { toLLMMessages } from "@opencode-ai/core/session/runner/to-llm-message"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { Tool } from "@opencode-ai/core/tool"
+import { Agent } from "@opencode/core/agent"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Config } from "@opencode/core/config"
+import { Database } from "@opencode/core/database/database"
+import { Bus } from "@opencode/core/bus"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
+import { Image } from "@opencode/core/image"
+import { Location } from "@opencode/core/location"
+import { FileAccess } from "@opencode/core/file-access"
+import { Model } from "@opencode/core/model"
+import { Permission } from "@opencode/core/permission"
+import { Project } from "@opencode/core/project"
+import { Provider } from "@opencode/core/provider"
+import { ReadTool } from "@opencode/core/tool/plugin/read"
+import { ReadToolFileSystem } from "@opencode/core/tool/read-filesystem"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionInstructions } from "@opencode/core/session/instructions"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionStore } from "@opencode/core/session/store"
+import { Session } from "@opencode/core/session"
+import { toLLMMessages } from "@opencode/core/session/runner/to-llm-message"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { Tool } from "@opencode/core/tool"
import { tempLocationLayer } from "./fixture/location"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { testEffect } from "./lib/effect"
import { permissionLayer } from "./lib/permission"
import { globalProjectNode } from "./lib/project"
diff --git a/packages/core/test/session-log.test.ts b/packages/core/test/session-log.test.ts
index a0a739428c7..9f2501569c8 100644
--- a/packages/core/test/session-log.test.ts
+++ b/packages/core/test/session-log.test.ts
@@ -1,20 +1,20 @@
import { describe, expect } from "bun:test"
import { Effect, Fiber, Schema, Stream } from "effect"
-import { Database } from "@opencode-ai/core/database/database"
-import { Agent } from "@opencode-ai/core/agent"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Event } from "@opencode-ai/schema/event"
-import { Location } from "@opencode-ai/core/location"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { SessionTable } from "@opencode-ai/core/session/sql"
+import { Database } from "@opencode/core/database/database"
+import { Agent } from "@opencode/core/agent"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Event } from "@opencode/schema/event"
+import { Location } from "@opencode/core/location"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionStore } from "@opencode/core/session/store"
+import { SessionTable } from "@opencode/core/session/sql"
import { testEffect } from "./lib/effect"
import { globalProjectNode } from "./lib/project"
diff --git a/packages/core/test/session-message-update.test.ts b/packages/core/test/session-message-update.test.ts
index 25076956662..b89bd2d2ac8 100644
--- a/packages/core/test/session-message-update.test.ts
+++ b/packages/core/test/session-message-update.test.ts
@@ -2,25 +2,25 @@ import { describe, expect } from "bun:test"
import path from "path"
import { Effect, Layer, Stream } from "effect"
import { asc, eq } from "drizzle-orm"
-import { Agent } from "@opencode-ai/core/agent"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { Location } from "@opencode-ai/core/location"
-import { Model } from "@opencode-ai/core/model"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { Money } from "@opencode-ai/schema/money"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Agent } from "@opencode/core/agent"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { EventTable } from "@opencode/core/event/sql"
+import { Location } from "@opencode/core/location"
+import { Model } from "@opencode/core/model"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionStore } from "@opencode/core/session/store"
+import { Money } from "@opencode/schema/money"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { tmpdirScoped } from "./fixture/tmpdir"
import { testEffect } from "./lib/effect"
import { globalProjectNode } from "./lib/project"
diff --git a/packages/core/test/session-model-request-hooks.test.ts b/packages/core/test/session-model-request-hooks.test.ts
index 6082fe77494..16fb9e593ce 100644
--- a/packages/core/test/session-model-request-hooks.test.ts
+++ b/packages/core/test/session-model-request-hooks.test.ts
@@ -1,16 +1,16 @@
import { describe, expect } from "bun:test"
-import { OpenAIChat } from "@opencode-ai/ai/protocols"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Money } from "@opencode-ai/schema/money"
-import { Session } from "@opencode-ai/schema/session"
-import type { SessionRequestKind } from "@opencode-ai/plugin/effect/session"
-import { Location } from "@opencode-ai/core/location"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { Project } from "@opencode-ai/core/project"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { SessionModelRequest } from "@opencode-ai/core/session/model-request"
-import { SessionModelTransport } from "@opencode-ai/core/session/model-transport"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
+import { OpenAIChat } from "@opencode/ai/protocols"
+import { Agent } from "@opencode/schema/agent"
+import { Money } from "@opencode/schema/money"
+import { Session } from "@opencode/schema/session"
+import type { SessionRequestKind } from "@opencode/plugin/effect/session"
+import { Location } from "@opencode/core/location"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { Project } from "@opencode/core/project"
+import { AbsolutePath } from "@opencode/core/schema"
+import { SessionModelRequest } from "@opencode/core/session/model-request"
+import { SessionModelTransport } from "@opencode/core/session/model-transport"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
import { DateTime, Effect } from "effect"
import { HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/session-model-request.test.ts b/packages/core/test/session-model-request.test.ts
index f87ab1e085a..17238d59177 100644
--- a/packages/core/test/session-model-request.test.ts
+++ b/packages/core/test/session-model-request.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
-import { Message, ToolResultPart } from "@opencode-ai/ai"
-import { boundImages, unsupportedParts } from "@opencode-ai/core/session/model-request"
+import { Message, ToolResultPart } from "@opencode/ai"
+import { boundImages, unsupportedParts } from "@opencode/core/session/model-request"
const capabilities = (input: string[]) => ({ tools: true, input, output: ["text"] })
diff --git a/packages/core/test/session-model-transport-live.test.ts b/packages/core/test/session-model-transport-live.test.ts
index 4aad9c8daf7..4946408e32c 100644
--- a/packages/core/test/session-model-transport-live.test.ts
+++ b/packages/core/test/session-model-transport-live.test.ts
@@ -1,16 +1,16 @@
import { describe, expect, test } from "bun:test"
-import { AIError, LLM, Message } from "@opencode-ai/ai"
+import { AIError, LLM, Message } from "@opencode/ai"
import {
LLMClient,
RequestExecutor,
WebSocketTransport,
type ChannelObservation,
type WebSocketChannelExchange,
-} from "@opencode-ai/ai/route"
-import { configure } from "@opencode-ai/ai/providers/openai"
-import { SessionModelTransport } from "@opencode-ai/core/session/model-transport"
-import { WebSocketConstructor } from "@opencode-ai/core/effect/websocket-constructor"
-import { Session } from "@opencode-ai/schema/session"
+} from "@opencode/ai/route"
+import { configure } from "@opencode/ai/providers/openai"
+import { SessionModelTransport } from "@opencode/core/session/model-transport"
+import { WebSocketConstructor } from "@opencode/core/effect/websocket-constructor"
+import { Session } from "@opencode/schema/session"
import { Effect, Fiber, Layer, Stream } from "effect"
import { Headers } from "effect/unstable/http"
import { Socket } from "effect/unstable/socket"
diff --git a/packages/core/test/session-model-transport.test.ts b/packages/core/test/session-model-transport.test.ts
index 1970bb04833..b86d267e42a 100644
--- a/packages/core/test/session-model-transport.test.ts
+++ b/packages/core/test/session-model-transport.test.ts
@@ -1,13 +1,13 @@
import { describe, expect, test } from "bun:test"
-import { AIError, HttpContext, TransportError } from "@opencode-ai/ai"
+import { AIError, HttpContext, TransportError } from "@opencode/ai"
import type {
ChannelObservation,
WebSocketChannelExchange,
WebSocketConnection,
WebSocketConnector,
-} from "@opencode-ai/ai/route"
-import { SessionModelTransport } from "@opencode-ai/core/session/model-transport"
-import { Session } from "@opencode-ai/schema/session"
+} from "@opencode/ai/route"
+import { SessionModelTransport } from "@opencode/core/session/model-transport"
+import { Session } from "@opencode/schema/session"
import { Cause, Deferred, Effect, Fiber, Metric, Queue, Stream } from "effect"
import { TestClock } from "effect/testing"
import { Headers } from "effect/unstable/http"
diff --git a/packages/core/test/session-move.test.ts b/packages/core/test/session-move.test.ts
index e235206f6ab..b3797515af0 100644
--- a/packages/core/test/session-move.test.ts
+++ b/packages/core/test/session-move.test.ts
@@ -2,28 +2,28 @@ import { describe, expect } from "bun:test"
import path from "path"
import { chmod, mkdir, readdir, rm } from "fs/promises"
import { Cause, Context, Deferred, Duration, Effect, Exit, Fiber, Layer, LayerMap, Queue } from "effect"
-import { Worktree } from "@opencode-ai/schema/worktree"
-import { Workspace } from "@opencode-ai/schema/workspace"
-import { Bus } from "@opencode-ai/core/bus"
-import { Config } from "@opencode-ai/core/config"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Instance } from "@opencode-ai/core/instance"
-import { Location } from "@opencode-ai/core/location"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import type { LocationServices } from "@opencode-ai/core/location-services"
-import { Project } from "@opencode-ai/core/project"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionMove } from "@opencode-ai/core/session/move"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionRunner } from "@opencode-ai/core/session/runner/index"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { Global } from "@opencode-ai/util/global"
+import { Worktree } from "@opencode/schema/worktree"
+import { Workspace } from "@opencode/schema/workspace"
+import { Bus } from "@opencode/core/bus"
+import { Config } from "@opencode/core/config"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Instance } from "@opencode/core/instance"
+import { Location } from "@opencode/core/location"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import type { LocationServices } from "@opencode/core/location-services"
+import { Project } from "@opencode/core/project"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionMove } from "@opencode/core/session/move"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionRunner } from "@opencode/core/session/runner/index"
+import { SessionStore } from "@opencode/core/session/store"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { Global } from "@opencode/util/global"
import { tempGlobalLayer } from "./fixture/global"
import { offlineModels } from "./fixture/models"
import { tmpdirScoped } from "./fixture/tmpdir"
diff --git a/packages/core/test/session-native-compaction.test.ts b/packages/core/test/session-native-compaction.test.ts
index 3262b1406f6..7a68439fff1 100644
--- a/packages/core/test/session-native-compaction.test.ts
+++ b/packages/core/test/session-native-compaction.test.ts
@@ -1,29 +1,29 @@
import { expect, test } from "bun:test"
-import { LLMClient, LanguageModel, Message, ToolDefinition } from "@opencode-ai/ai"
-import { OpenAI } from "@opencode-ai/ai/providers"
-import { Agent } from "@opencode-ai/core/agent"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { llmClient } from "@opencode-ai/core/effect/app-node-platform"
-import { Instructions } from "@opencode-ai/core/instructions/index"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { SessionCompaction } from "@opencode-ai/core/session/compaction"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionHistory } from "@opencode-ai/core/session/history"
-import { SessionInbox } from "@opencode-ai/core/session/inbox"
-import { InstructionState } from "@opencode-ai/core/session/instruction-state"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionModelRequest } from "@opencode-ai/core/session/model-request"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionProviderContext } from "@opencode-ai/core/session/provider-context"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { SessionSchema } from "@opencode-ai/core/session/schema"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { LLMClient, LanguageModel, Message, ToolDefinition } from "@opencode/ai"
+import { OpenAI } from "@opencode/ai/providers"
+import { Agent } from "@opencode/core/agent"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { llmClient } from "@opencode/core/effect/app-node-platform"
+import { Instructions } from "@opencode/core/instructions/index"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { AbsolutePath } from "@opencode/core/schema"
+import { SessionCompaction } from "@opencode/core/session/compaction"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionHistory } from "@opencode/core/session/history"
+import { SessionInbox } from "@opencode/core/session/inbox"
+import { InstructionState } from "@opencode/core/session/instruction-state"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionModelRequest } from "@opencode/core/session/model-request"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionProviderContext } from "@opencode/core/session/provider-context"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { SessionSchema } from "@opencode/core/session/schema"
+import { SessionStore } from "@opencode/core/session/store"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { DateTime, Deferred, Effect, Fiber, Schema } from "effect"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/session-owned.test.ts b/packages/core/test/session-owned.test.ts
index 64ec38edb35..ffb8e253c88 100644
--- a/packages/core/test/session-owned.test.ts
+++ b/packages/core/test/session-owned.test.ts
@@ -1,16 +1,16 @@
import { describe, expect } from "bun:test"
import { and, eq } from "drizzle-orm"
import { Cause, Context, DateTime, Deferred, Effect, Exit, Fiber, Layer, Scope } from "effect"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Event } from "@opencode-ai/schema/event"
-import { Model } from "@opencode-ai/schema/model"
-import { Money } from "@opencode-ai/schema/money"
-import { Project } from "@opencode-ai/schema/project"
-import { Provider } from "@opencode-ai/schema/provider"
-import { ID, Info, Output } from "@opencode-ai/schema/shell"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
+import { Agent } from "@opencode/schema/agent"
+import { Event } from "@opencode/schema/event"
+import { Model } from "@opencode/schema/model"
+import { Money } from "@opencode/schema/money"
+import { Project } from "@opencode/schema/project"
+import { Provider } from "@opencode/schema/provider"
+import { ID, Info, Output } from "@opencode/schema/shell"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
import { Bus } from "../src/bus.js"
import { Database } from "../src/database/database.js"
import { EventTable } from "../src/event/sql.js"
diff --git a/packages/core/test/session-projector.test.ts b/packages/core/test/session-projector.test.ts
index 0043dffdf4d..3f678c0d2f5 100644
--- a/packages/core/test/session-projector.test.ts
+++ b/packages/core/test/session-projector.test.ts
@@ -1,36 +1,36 @@
import { describe, expect } from "bun:test"
import { DateTime, Effect, Fiber, Option, Schema, Stream } from "effect"
import { asc, eq, sql } from "drizzle-orm"
-import { Database } from "@opencode-ai/core/database/database"
-import { Agent } from "@opencode-ai/core/agent"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Bus } from "@opencode-ai/core/bus"
-import { Event } from "@opencode-ai/schema/event"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { Model } from "@opencode-ai/core/model"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath, RelativePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { Money } from "@opencode-ai/schema/money"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { fromRow } from "@opencode-ai/core/session/info"
-import { SessionInbox } from "@opencode-ai/core/session/inbox"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { Shell } from "@opencode-ai/schema/shell"
+import { Database } from "@opencode/core/database/database"
+import { Agent } from "@opencode/core/agent"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Bus } from "@opencode/core/bus"
+import { Event } from "@opencode/schema/event"
+import { EventTable } from "@opencode/core/event/sql"
+import { Model } from "@opencode/core/model"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath, RelativePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionMessage } from "@opencode/core/session/message"
+import { Money } from "@opencode/schema/money"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { fromRow } from "@opencode/core/session/info"
+import { SessionInbox } from "@opencode/core/session/inbox"
+import { SessionStore } from "@opencode/core/session/store"
+import { Shell } from "@opencode/schema/shell"
import {
InstructionStateTable,
SessionInboxTable,
SessionMessageTable,
SessionTable,
-} from "@opencode-ai/core/session/sql"
+} from "@opencode/core/session/sql"
import { testEffect } from "./lib/effect"
-import { Snapshot } from "@opencode-ai/core/snapshot"
+import { Snapshot } from "@opencode/core/snapshot"
const it = testEffect(
AppNodeBuilder.build(
diff --git a/packages/core/test/session-prompt.test.ts b/packages/core/test/session-prompt.test.ts
index ba6784e40f4..adce8aeabc6 100644
--- a/packages/core/test/session-prompt.test.ts
+++ b/packages/core/test/session-prompt.test.ts
@@ -3,34 +3,34 @@ import { DateTime, Effect, Fiber, Layer, LayerMap, Schema, Stream } from "effect
import path from "path"
import { pathToFileURL } from "url"
import { eq } from "drizzle-orm"
-import { Database } from "@opencode-ai/core/database/database"
-import { Agent } from "@opencode-ai/core/agent"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { Location } from "@opencode-ai/schema/location"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionInbox } from "@opencode-ai/core/session/inbox"
-import { SessionInboxTable, SessionMessageTable, SessionTable } from "@opencode-ai/core/session/sql"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import type { LocationServices } from "@opencode-ai/core/location-services"
-import { Image } from "@opencode-ai/core/image"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { Snapshot } from "@opencode-ai/core/snapshot"
-import { Skill } from "@opencode-ai/core/skill"
+import { Database } from "@opencode/core/database/database"
+import { Agent } from "@opencode/core/agent"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { Bus } from "@opencode/core/bus"
+import { EventTable } from "@opencode/core/event/sql"
+import { Location } from "@opencode/schema/location"
+import { SessionEvent } from "@opencode/core/session/event"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionInbox } from "@opencode/core/session/inbox"
+import { SessionInboxTable, SessionMessageTable, SessionTable } from "@opencode/core/session/sql"
+import { SessionStore } from "@opencode/core/session/store"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import type { LocationServices } from "@opencode/core/location-services"
+import { Image } from "@opencode/core/image"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { Snapshot } from "@opencode/core/snapshot"
+import { Skill } from "@opencode/core/skill"
import { tmpdirScoped } from "./fixture/tmpdir"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/session-provider-context.test.ts b/packages/core/test/session-provider-context.test.ts
index 02ede815735..a98b024cd1b 100644
--- a/packages/core/test/session-provider-context.test.ts
+++ b/packages/core/test/session-provider-context.test.ts
@@ -1,28 +1,28 @@
import { expect, test } from "bun:test"
-import { CompactionPart, LanguageModel, Message, ToolCallPart } from "@opencode-ai/ai"
-import { OpenAIResponses } from "@opencode-ai/ai/protocols"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { Instructions } from "@opencode-ai/core/instructions/index"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionHistory } from "@opencode-ai/core/session/history"
-import { SessionInbox } from "@opencode-ai/core/session/inbox"
-import { InstructionState } from "@opencode-ai/core/session/instruction-state"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionProviderContext } from "@opencode-ai/core/session/provider-context"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { toLLMMessages } from "@opencode-ai/core/session/runner/to-llm-message"
-import { SessionSchema } from "@opencode-ai/core/session/schema"
-import { InstructionStateTable, SessionTable } from "@opencode-ai/core/session/sql"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Model } from "@opencode-ai/schema/model"
+import { CompactionPart, LanguageModel, Message, ToolCallPart } from "@opencode/ai"
+import { OpenAIResponses } from "@opencode/ai/protocols"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { EventTable } from "@opencode/core/event/sql"
+import { Instructions } from "@opencode/core/instructions/index"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { AbsolutePath } from "@opencode/core/schema"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionHistory } from "@opencode/core/session/history"
+import { SessionInbox } from "@opencode/core/session/inbox"
+import { InstructionState } from "@opencode/core/session/instruction-state"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionProviderContext } from "@opencode/core/session/provider-context"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { toLLMMessages } from "@opencode/core/session/runner/to-llm-message"
+import { SessionSchema } from "@opencode/core/session/schema"
+import { InstructionStateTable, SessionTable } from "@opencode/core/session/sql"
+import { SessionStore } from "@opencode/core/session/store"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Model } from "@opencode/schema/model"
import { asc, eq } from "drizzle-orm"
import { Effect, Schema } from "effect"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/session-remove.test.ts b/packages/core/test/session-remove.test.ts
index 42b4e7d49a7..2e39ee6233c 100644
--- a/packages/core/test/session-remove.test.ts
+++ b/packages/core/test/session-remove.test.ts
@@ -1,20 +1,20 @@
import { describe, expect } from "bun:test"
import { Effect, Layer, RcMap, Scope } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Database } from "@opencode-ai/core/database/database"
-import { Bus } from "@opencode-ai/core/bus"
-import { Instance } from "@opencode-ai/core/instance/service"
-import { Location } from "@opencode-ai/core/location"
-import { Project } from "@opencode-ai/core/project"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionModelTransport } from "@opencode-ai/core/session/model-transport"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { SessionEnvironment } from "@opencode-ai/core/session/environment"
-import { LocationServiceMap } from "@opencode-ai/core/location-services"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Database } from "@opencode/core/database/database"
+import { Bus } from "@opencode/core/bus"
+import { Instance } from "@opencode/core/instance/service"
+import { Location } from "@opencode/core/location"
+import { Project } from "@opencode/core/project"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionModelTransport } from "@opencode/core/session/model-transport"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionStore } from "@opencode/core/session/store"
+import { SessionEnvironment } from "@opencode/core/session/environment"
+import { LocationServiceMap } from "@opencode/core/location-services"
import { testEffect } from "./lib/effect"
import { globalProjectNode } from "./lib/project"
import { offlineModels } from "./fixture/models"
diff --git a/packages/core/test/session-revert.test.ts b/packages/core/test/session-revert.test.ts
index 629a5f3693e..4853f615403 100644
--- a/packages/core/test/session-revert.test.ts
+++ b/packages/core/test/session-revert.test.ts
@@ -3,25 +3,25 @@ import { describe, expect } from "bun:test"
import fs from "fs/promises"
import path from "path"
import { Effect } from "effect"
-import { Agent } from "@opencode-ai/core/agent"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import { Model } from "@opencode-ai/core/model"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionInbox } from "@opencode-ai/core/session/inbox"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { Snapshot } from "@opencode-ai/core/snapshot"
-import { Money } from "@opencode-ai/schema/money"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Global } from "@opencode-ai/util/global"
+import { Agent } from "@opencode/core/agent"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import { Model } from "@opencode/core/model"
+import { Plugin } from "@opencode/core/plugin"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionInbox } from "@opencode/core/session/inbox"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { Snapshot } from "@opencode/core/snapshot"
+import { Money } from "@opencode/schema/money"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Global } from "@opencode/util/global"
import { tempGlobalLayer } from "./fixture/global"
import { offlineModels } from "./fixture/models"
import { tmpdirScoped } from "./fixture/tmpdir"
diff --git a/packages/core/test/session-run-coordinator.test.ts b/packages/core/test/session-run-coordinator.test.ts
index e04ea8e16bd..e02a84511d5 100644
--- a/packages/core/test/session-run-coordinator.test.ts
+++ b/packages/core/test/session-run-coordinator.test.ts
@@ -1,7 +1,7 @@
import { describe, expect } from "bun:test"
import { Cause, Deferred, Effect, Exit, Fiber, Layer } from "effect"
-import { SessionInbox } from "@opencode-ai/core/session/inbox"
-import { SessionRunCoordinator } from "@opencode-ai/core/session/run-coordinator"
+import { SessionInbox } from "@opencode/core/session/inbox"
+import { SessionRunCoordinator } from "@opencode/core/session/run-coordinator"
import { testEffect } from "./lib/effect"
const it = testEffect(Layer.empty)
diff --git a/packages/core/test/session-runner-message.test.ts b/packages/core/test/session-runner-message.test.ts
index 5f37a4d19aa..2f51aa49a61 100644
--- a/packages/core/test/session-runner-message.test.ts
+++ b/packages/core/test/session-runner-message.test.ts
@@ -1,15 +1,15 @@
import { describe, expect, test } from "bun:test"
-import { Message } from "@opencode-ai/ai"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { AgentAttachment, Base64, FileAttachment, SkillAttachment } from "@opencode-ai/schema/prompt"
-import { Skill } from "@opencode-ai/schema/skill"
-import { toLLMMessages } from "@opencode-ai/core/session/runner/to-llm-message"
-import { Agent } from "@opencode-ai/core/agent"
-import { Shell } from "@opencode-ai/schema/shell"
-import { Location } from "@opencode-ai/schema/location"
-import { AbsolutePath } from "@opencode-ai/schema/schema"
+import { Message } from "@opencode/ai"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
+import { SessionMessage } from "@opencode/core/session/message"
+import { AgentAttachment, Base64, FileAttachment, SkillAttachment } from "@opencode/schema/prompt"
+import { Skill } from "@opencode/schema/skill"
+import { toLLMMessages } from "@opencode/core/session/runner/to-llm-message"
+import { Agent } from "@opencode/core/agent"
+import { Shell } from "@opencode/schema/shell"
+import { Location } from "@opencode/schema/location"
+import { AbsolutePath } from "@opencode/schema/schema"
import { DateTime } from "effect"
import path from "path"
import { pathToFileURL } from "url"
diff --git a/packages/core/test/session-runner-recorded.test.ts b/packages/core/test/session-runner-recorded.test.ts
index 75a24fa14fa..03346d4976d 100644
--- a/packages/core/test/session-runner-recorded.test.ts
+++ b/packages/core/test/session-runner-recorded.test.ts
@@ -1,47 +1,47 @@
-import { HttpRecorder } from "@opencode-ai/http-recorder"
-import { OpenAIChat } from "@opencode-ai/ai/protocols/openai-chat"
-import { Auth, LLMClient, type LLMClientService, RequestExecutor } from "@opencode-ai/ai/route"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNodePlatform } from "@opencode-ai/core/effect/app-node-platform"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { Permission } from "@opencode-ai/core/permission"
-import { Agent } from "@opencode-ai/core/agent"
-import { Config } from "@opencode-ai/core/config"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { Snapshot } from "@opencode-ai/core/snapshot"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionRunCoordinator } from "@opencode-ai/core/session/run-coordinator"
-import { SessionRunner } from "@opencode-ai/core/session/runner/index"
-import { SessionRunnerLLM } from "@opencode-ai/core/session/runner/llm"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { Tool } from "@opencode-ai/core/tool"
-import { SessionTable } from "@opencode-ai/core/session/sql"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { Location } from "@opencode-ai/core/location"
-import { InstructionBuiltIns } from "@opencode-ai/core/instructions/builtins"
-import { InstructionDiscovery } from "@opencode-ai/core/instruction-discovery"
-import { Instructions } from "@opencode-ai/core/instructions/index"
-import { SkillInstructions } from "@opencode-ai/core/skill/instructions"
-import { ReferenceInstructions } from "@opencode-ai/core/reference/instructions"
-import { McpInstructions } from "@opencode-ai/core/mcp/instructions"
-import { PluginSupervisor } from "@opencode-ai/core/plugin/supervisor"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { OptimizePlugin } from "@opencode-ai/core/plugin/optimize"
+import { HttpRecorder } from "@opencode/http-recorder"
+import { OpenAIChat } from "@opencode/ai/protocols/openai-chat"
+import { Auth, LLMClient, type LLMClientService, RequestExecutor } from "@opencode/ai/route"
+import { Catalog } from "@opencode/core/catalog"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNodePlatform } from "@opencode/core/effect/app-node-platform"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { EventTable } from "@opencode/core/event/sql"
+import { Permission } from "@opencode/core/permission"
+import { Agent } from "@opencode/core/agent"
+import { Config } from "@opencode/core/config"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { Snapshot } from "@opencode/core/snapshot"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionRunCoordinator } from "@opencode/core/session/run-coordinator"
+import { SessionRunner } from "@opencode/core/session/runner/index"
+import { SessionRunnerLLM } from "@opencode/core/session/runner/llm"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { Tool } from "@opencode/core/tool"
+import { SessionTable } from "@opencode/core/session/sql"
+import { SessionStore } from "@opencode/core/session/store"
+import { Location } from "@opencode/core/location"
+import { InstructionBuiltIns } from "@opencode/core/instructions/builtins"
+import { InstructionDiscovery } from "@opencode/core/instruction-discovery"
+import { Instructions } from "@opencode/core/instructions/index"
+import { SkillInstructions } from "@opencode/core/skill/instructions"
+import { ReferenceInstructions } from "@opencode/core/reference/instructions"
+import { McpInstructions } from "@opencode/core/mcp/instructions"
+import { PluginSupervisor } from "@opencode/core/plugin/supervisor"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { OptimizePlugin } from "@opencode/core/plugin/optimize"
import { describe, expect } from "bun:test"
import { eq } from "drizzle-orm"
import { Effect, Layer } from "effect"
import path from "node:path"
import { testEffect } from "./lib/effect"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
import { promptLocationNode } from "./fixture/prompt-location"
import { permissionLayer } from "./lib/permission"
import { agentHost, catalogHost, host } from "./plugin/host"
diff --git a/packages/core/test/session-runner-tool-events.test.ts b/packages/core/test/session-runner-tool-events.test.ts
index 4e0fdc9121d..24255e62d93 100644
--- a/packages/core/test/session-runner-tool-events.test.ts
+++ b/packages/core/test/session-runner-tool-events.test.ts
@@ -1,27 +1,27 @@
import { expect, test } from "bun:test"
import { Cause, Deferred, Effect, Exit, Fiber, Schema } from "effect"
import { eq } from "drizzle-orm"
-import { LLMEvent } from "@opencode-ai/ai"
-import { Money } from "@opencode-ai/schema/money"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { Event } from "@opencode-ai/schema/event"
-import { Agent } from "@opencode-ai/core/agent"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { Session } from "@opencode-ai/core/session"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionMessageTable, SessionTable } from "@opencode-ai/core/session/sql"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath, RelativePath } from "@opencode-ai/core/schema"
-import { Snapshot } from "@opencode-ai/core/snapshot"
-import { createLLMEventPublisher } from "@opencode-ai/core/session/runner/publish-llm-event"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { LLMEvent } from "@opencode/ai"
+import { Money } from "@opencode/schema/money"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { EventTable } from "@opencode/core/event/sql"
+import { Event } from "@opencode/schema/event"
+import { Agent } from "@opencode/core/agent"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionMessage } from "@opencode/core/session/message"
+import { Session } from "@opencode/core/session"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionMessageTable, SessionTable } from "@opencode/core/session/sql"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath, RelativePath } from "@opencode/core/schema"
+import { Snapshot } from "@opencode/core/snapshot"
+import { createLLMEventPublisher } from "@opencode/core/session/runner/publish-llm-event"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { it, testEffect } from "./lib/effect"
import { TestClock } from "effect/testing"
diff --git a/packages/core/test/session-runner.test.ts b/packages/core/test/session-runner.test.ts
index 15ff0b97a03..14c442af845 100644
--- a/packages/core/test/session-runner.test.ts
+++ b/packages/core/test/session-runner.test.ts
@@ -15,81 +15,81 @@ import {
InvalidRequestError,
RateLimitError,
UnknownProviderError,
-} from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols/openai-chat"
-import { AnthropicMessages, OpenAIResponses } from "@opencode-ai/ai/protocols"
-import { compileRequest } from "@opencode-ai/ai/route/client"
-import { TestLLM } from "@opencode-ai/ai/testing"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Database } from "@opencode-ai/core/database/database"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNodePlatform } from "@opencode-ai/core/effect/app-node-platform"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Event } from "@opencode-ai/schema/event"
-import { App } from "@opencode-ai/core/app"
-import { Permission } from "@opencode-ai/core/permission"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { Form } from "@opencode-ai/core/form"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { Snapshot } from "@opencode-ai/core/snapshot"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionCompaction } from "@opencode-ai/core/session/compaction"
-import { SessionInbox } from "@opencode-ai/core/session/inbox"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionModelTransport } from "@opencode-ai/core/session/model-transport"
-import { SessionProviderContext } from "@opencode-ai/core/session/provider-context"
-import { Money } from "@opencode-ai/schema/money"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionRunCoordinator } from "@opencode-ai/core/session/run-coordinator"
-import { SessionRunner } from "@opencode-ai/core/session/runner/index"
-import { SessionRunnerLLM } from "@opencode-ai/core/session/runner/llm"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { SessionUsage } from "@opencode-ai/core/session/usage"
-import { PluginSupervisor } from "@opencode-ai/core/plugin/supervisor"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { OptimizePlugin } from "@opencode-ai/core/plugin/optimize"
-import { QuestionTool } from "@opencode-ai/core/tool/plugin/question"
-import { Agent } from "@opencode-ai/core/agent"
-import { Config } from "@opencode-ai/core/config"
-import { Document, Info } from "@opencode-ai/schema/config"
-import { ConfigCompaction } from "@opencode-ai/schema/config/compaction"
-import { Tool } from "@opencode-ai/core/tool"
-import type { Info as ToolInfo } from "@opencode-ai/schema/tool"
+} from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols/openai-chat"
+import { AnthropicMessages, OpenAIResponses } from "@opencode/ai/protocols"
+import { compileRequest } from "@opencode/ai/route/client"
+import { TestLLM } from "@opencode/ai/testing"
+import { Catalog } from "@opencode/core/catalog"
+import { Database } from "@opencode/core/database/database"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNodePlatform } from "@opencode/core/effect/app-node-platform"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Event } from "@opencode/schema/event"
+import { App } from "@opencode/core/app"
+import { Permission } from "@opencode/core/permission"
+import { EventTable } from "@opencode/core/event/sql"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { Form } from "@opencode/core/form"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { Snapshot } from "@opencode/core/snapshot"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionCompaction } from "@opencode/core/session/compaction"
+import { SessionInbox } from "@opencode/core/session/inbox"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionModelTransport } from "@opencode/core/session/model-transport"
+import { SessionProviderContext } from "@opencode/core/session/provider-context"
+import { Money } from "@opencode/schema/money"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionRunCoordinator } from "@opencode/core/session/run-coordinator"
+import { SessionRunner } from "@opencode/core/session/runner/index"
+import { SessionRunnerLLM } from "@opencode/core/session/runner/llm"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { SessionUsage } from "@opencode/core/session/usage"
+import { PluginSupervisor } from "@opencode/core/plugin/supervisor"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { OptimizePlugin } from "@opencode/core/plugin/optimize"
+import { QuestionTool } from "@opencode/core/tool/plugin/question"
+import { Agent } from "@opencode/core/agent"
+import { Config } from "@opencode/core/config"
+import { Document, Info } from "@opencode/schema/config"
+import { ConfigCompaction } from "@opencode/schema/config/compaction"
+import { Tool } from "@opencode/core/tool"
+import type { Info as ToolInfo } from "@opencode/schema/tool"
import {
InstructionStateTable,
SessionInboxTable,
SessionMessageTable,
SessionTable,
-} from "@opencode-ai/core/session/sql"
-import { InstructionEntry } from "@opencode-ai/core/session/instruction-entry"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { Instructions } from "@opencode-ai/core/instructions/index"
-import { InstructionBuiltIns } from "@opencode-ai/core/instructions/builtins"
-import { InstructionDiscovery } from "@opencode-ai/core/instruction-discovery"
-import { SkillInstructions } from "@opencode-ai/core/skill/instructions"
-import { ReferenceInstructions } from "@opencode-ai/core/reference/instructions"
-import { McpInstructions } from "@opencode-ai/core/mcp/instructions"
-import { SessionSystemPrompt } from "@opencode-ai/core/session/system-prompt"
-import { ID, Model } from "@opencode-ai/core/model"
-import { Location } from "@opencode-ai/core/location"
-import { Provider } from "@opencode-ai/core/provider"
+} from "@opencode/core/session/sql"
+import { InstructionEntry } from "@opencode/core/session/instruction-entry"
+import { SessionStore } from "@opencode/core/session/store"
+import { Instructions } from "@opencode/core/instructions/index"
+import { InstructionBuiltIns } from "@opencode/core/instructions/builtins"
+import { InstructionDiscovery } from "@opencode/core/instruction-discovery"
+import { SkillInstructions } from "@opencode/core/skill/instructions"
+import { ReferenceInstructions } from "@opencode/core/reference/instructions"
+import { McpInstructions } from "@opencode/core/mcp/instructions"
+import { SessionSystemPrompt } from "@opencode/core/session/system-prompt"
+import { ID, Model } from "@opencode/core/model"
+import { Location } from "@opencode/core/location"
+import { Provider } from "@opencode/core/provider"
import { Cause, Context, Deferred, Effect, Exit, Fiber, Layer, Queue, Schema, Scope, Stream } from "effect"
import { TestClock } from "effect/testing"
import { asc, desc, eq, sql } from "drizzle-orm"
import { testEffect } from "./lib/effect"
import { promptLocationNode } from "./fixture/prompt-location"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
import { Expected } from "./lib/session-message"
import { permissionLayer } from "./lib/permission"
import { agentHost, catalogHost, host } from "./plugin/host"
-import { CodeModeInstructions } from "@opencode-ai/core/codemode/instructions"
+import { CodeModeInstructions } from "@opencode/core/codemode/instructions"
const emptyCodeMode = `\n\n${CodeModeInstructions.render({ total: 0, shown: 0, namespaces: [] })}`
type ToolBarrier = {
diff --git a/packages/core/test/session-shell.test.ts b/packages/core/test/session-shell.test.ts
index ecff6a27693..f93b6aa21f7 100644
--- a/packages/core/test/session-shell.test.ts
+++ b/packages/core/test/session-shell.test.ts
@@ -2,17 +2,17 @@ import { describe, expect, setDefaultTimeout } from "bun:test"
import fs from "fs/promises"
import path from "path"
import { Cause, Context, Deferred, Effect, Exit, Fiber, Layer, Option, Schedule, Stream } from "effect"
-import { Bus } from "@opencode-ai/core/bus"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Location } from "@opencode-ai/core/location"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionRunCoordinator } from "@opencode-ai/core/session/run-coordinator"
-import { Shell } from "@opencode-ai/core/shell"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Location } from "@opencode/core/location"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionRunCoordinator } from "@opencode/core/session/run-coordinator"
+import { Shell } from "@opencode/core/shell"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { location } from "./fixture/location"
import { offlineModels } from "./fixture/models"
import { tmpdirScoped } from "./fixture/tmpdir"
diff --git a/packages/core/test/session-skill.test.ts b/packages/core/test/session-skill.test.ts
index 3214f5310eb..c15ad5d60f8 100644
--- a/packages/core/test/session-skill.test.ts
+++ b/packages/core/test/session-skill.test.ts
@@ -1,28 +1,28 @@
import path from "path"
import { describe, expect } from "bun:test"
import { Effect, Layer, LayerMap } from "effect"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Image } from "@opencode-ai/core/image"
-import { Location } from "@opencode-ai/core/location"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import type { LocationServices } from "@opencode-ai/core/location-services"
-import { Project } from "@opencode-ai/core/project"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { SessionInbox } from "@opencode-ai/core/session/inbox"
-import { Skill } from "@opencode-ai/core/skill"
-import { Event } from "@opencode-ai/schema/event"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { Bus } from "@opencode/core/bus"
+import { Image } from "@opencode/core/image"
+import { Location } from "@opencode/core/location"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import type { LocationServices } from "@opencode/core/location-services"
+import { Project } from "@opencode/core/project"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionStore } from "@opencode/core/session/store"
+import { SessionInbox } from "@opencode/core/session/inbox"
+import { Skill } from "@opencode/core/skill"
+import { Event } from "@opencode/schema/event"
import { testEffect } from "./lib/effect"
import { globalProjectNode } from "./lib/project"
diff --git a/packages/core/test/session-sql.types.ts b/packages/core/test/session-sql.types.ts
index dccb39cde91..ad4b0184dcb 100644
--- a/packages/core/test/session-sql.types.ts
+++ b/packages/core/test/session-sql.types.ts
@@ -1,4 +1,4 @@
-import { SessionMessageTable } from "@opencode-ai/core/session/sql"
+import { SessionMessageTable } from "@opencode/core/session/sql"
type MessageData = (typeof SessionMessageTable.$inferInsert)["data"]
diff --git a/packages/core/test/session-stats.test.ts b/packages/core/test/session-stats.test.ts
index 6321cf6c8ed..2cdb4c005c4 100644
--- a/packages/core/test/session-stats.test.ts
+++ b/packages/core/test/session-stats.test.ts
@@ -1,20 +1,20 @@
import { describe, expect } from "bun:test"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Event } from "@opencode-ai/schema/event"
-import { Model } from "@opencode-ai/schema/model"
-import { Money } from "@opencode-ai/schema/money"
-import { Project } from "@opencode-ai/schema/project"
-import { Provider } from "@opencode-ai/schema/provider"
-import { Session } from "@opencode-ai/schema/session"
-import { SessionEvent } from "@opencode-ai/schema/session-event"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Database } from "@opencode-ai/core/database/database"
-import { EventSequenceTable, EventTable } from "@opencode-ai/core/event/sql"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { SessionMessageTable, SessionTable } from "@opencode-ai/core/session/sql"
-import { SessionStats } from "@opencode-ai/core/session/stats"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
+import { Agent } from "@opencode/schema/agent"
+import { Event } from "@opencode/schema/event"
+import { Model } from "@opencode/schema/model"
+import { Money } from "@opencode/schema/money"
+import { Project } from "@opencode/schema/project"
+import { Provider } from "@opencode/schema/provider"
+import { Session } from "@opencode/schema/session"
+import { SessionEvent } from "@opencode/schema/session-event"
+import { SessionMessage } from "@opencode/schema/session-message"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Database } from "@opencode/core/database/database"
+import { EventSequenceTable, EventTable } from "@opencode/core/event/sql"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { SessionMessageTable, SessionTable } from "@opencode/core/session/sql"
+import { SessionStats } from "@opencode/core/session/stats"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
import { DateTime, Effect, Schema } from "effect"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/session-step.test.ts b/packages/core/test/session-step.test.ts
index b8f9fa3a633..5c6150b549b 100644
--- a/packages/core/test/session-step.test.ts
+++ b/packages/core/test/session-step.test.ts
@@ -1,25 +1,25 @@
import { expect } from "bun:test"
-import { LanguageModel, LLM, LLMEvent } from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols/openai-chat"
-import { TestLLM } from "@opencode-ai/ai/testing"
-import { Agent } from "@opencode-ai/core/agent"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { AbsolutePath, RelativePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { SessionStep } from "@opencode-ai/core/session/runner/step"
-import { SessionMessageTable, SessionTable } from "@opencode-ai/core/session/sql"
-import { Snapshot } from "@opencode-ai/core/snapshot"
-import { ToolOutput } from "@opencode-ai/core/tool-output"
-import { Money } from "@opencode-ai/schema/money"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { LanguageModel, LLM, LLMEvent } from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols/openai-chat"
+import { TestLLM } from "@opencode/ai/testing"
+import { Agent } from "@opencode/core/agent"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { EventTable } from "@opencode/core/event/sql"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { AbsolutePath, RelativePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { SessionStep } from "@opencode/core/session/runner/step"
+import { SessionMessageTable, SessionTable } from "@opencode/core/session/sql"
+import { Snapshot } from "@opencode/core/snapshot"
+import { ToolOutput } from "@opencode/core/tool-output"
+import { Money } from "@opencode/schema/money"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { asc, eq } from "drizzle-orm"
import { Effect, Exit, Layer } from "effect"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/session-store.test.ts b/packages/core/test/session-store.test.ts
index ae72cfc52e8..19292795d14 100644
--- a/packages/core/test/session-store.test.ts
+++ b/packages/core/test/session-store.test.ts
@@ -1,18 +1,18 @@
import { describe, expect } from "bun:test"
import { Effect } from "effect"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { Event } from "@opencode-ai/schema/event"
-import { Project } from "@opencode-ai/schema/project"
-import { AbsolutePath } from "@opencode-ai/schema/schema"
-import { Session } from "@opencode-ai/schema/session"
-import { SessionEvent } from "@opencode-ai/schema/session-event"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionStore } from "@opencode/core/session/store"
+import { Event } from "@opencode/schema/event"
+import { Project } from "@opencode/schema/project"
+import { AbsolutePath } from "@opencode/schema/schema"
+import { Session } from "@opencode/schema/session"
+import { SessionEvent } from "@opencode/schema/session-event"
+import { SessionMessage } from "@opencode/schema/session-message"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { testEffect } from "./lib/effect"
const it = testEffect(
diff --git a/packages/core/test/session-system-prompt.test.ts b/packages/core/test/session-system-prompt.test.ts
index cfa29702b35..874c1725a06 100644
--- a/packages/core/test/session-system-prompt.test.ts
+++ b/packages/core/test/session-system-prompt.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import { SessionSystemPrompt } from "@opencode-ai/core/session/system-prompt"
+import { SessionSystemPrompt } from "@opencode/core/session/system-prompt"
test("renders the default system prompt instructions", () => {
const prompt = SessionSystemPrompt.make(["edit", "read", "shell"])
diff --git a/packages/core/test/session-title.test.ts b/packages/core/test/session-title.test.ts
index 00ba75502d9..ccd2fb86dd0 100644
--- a/packages/core/test/session-title.test.ts
+++ b/packages/core/test/session-title.test.ts
@@ -1,31 +1,31 @@
import { beforeEach, expect } from "bun:test"
-import { AIError, LLMClient, LLMEvent, LanguageModel, TransportError, type LLMRequest } from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols"
-import { Agent } from "@opencode-ai/core/agent"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { llmClient } from "@opencode-ai/core/effect/app-node-platform"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { SessionTable } from "@opencode-ai/core/session/sql"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { SessionTitle } from "@opencode-ai/core/session/title"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { PluginSupervisor } from "@opencode-ai/core/plugin/supervisor"
-import { Location } from "@opencode-ai/core/location"
-import { Session } from "@opencode-ai/core/session"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { App } from "@opencode-ai/core/app"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Money } from "@opencode-ai/schema/money"
+import { AIError, LLMClient, LLMEvent, LanguageModel, TransportError, type LLMRequest } from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols"
+import { Agent } from "@opencode/core/agent"
+import { Catalog } from "@opencode/core/catalog"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { llmClient } from "@opencode/core/effect/app-node-platform"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { SessionTable } from "@opencode/core/session/sql"
+import { SessionStore } from "@opencode/core/session/store"
+import { SessionTitle } from "@opencode/core/session/title"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { PluginSupervisor } from "@opencode/core/plugin/supervisor"
+import { Location } from "@opencode/core/location"
+import { Session } from "@opencode/core/session"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { App } from "@opencode/core/app"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Money } from "@opencode/schema/money"
import { Deferred, Effect, Fiber, Layer, Stream } from "effect"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/session-tool-progress.test.ts b/packages/core/test/session-tool-progress.test.ts
index 191d8be18bd..505dff452f9 100644
--- a/packages/core/test/session-tool-progress.test.ts
+++ b/packages/core/test/session-tool-progress.test.ts
@@ -1,22 +1,22 @@
import { describe, expect } from "bun:test"
import { asc, eq } from "drizzle-orm"
import { Effect, Schema } from "effect"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Agent } from "@opencode-ai/core/agent"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { Model } from "@opencode-ai/core/model"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionTable, SessionMessageTable } from "@opencode-ai/core/session/sql"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Agent } from "@opencode/core/agent"
+import { EventTable } from "@opencode/core/event/sql"
+import { Model } from "@opencode/core/model"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionTable, SessionMessageTable } from "@opencode/core/session/sql"
import { testEffect } from "./lib/effect"
const it = testEffect(
diff --git a/packages/core/test/session-view.test.ts b/packages/core/test/session-view.test.ts
index e6b244785bc..1092abf68e0 100644
--- a/packages/core/test/session-view.test.ts
+++ b/packages/core/test/session-view.test.ts
@@ -1,20 +1,20 @@
import { describe, expect } from "bun:test"
import path from "path"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { EventTable } from "@opencode-ai/core/event/sql"
-import { Location } from "@opencode-ai/core/location"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionTable } from "@opencode-ai/core/session/sql"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { EventTable } from "@opencode/core/event/sql"
+import { Location } from "@opencode/core/location"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionTable } from "@opencode/core/session/sql"
+import { SessionStore } from "@opencode/core/session/store"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { DateTime, Effect, Layer } from "effect"
import { asc, eq } from "drizzle-orm"
import { tmpdirScoped } from "./fixture/tmpdir"
diff --git a/packages/core/test/session-wait.test.ts b/packages/core/test/session-wait.test.ts
index 1f01d9803c0..03bbbabebdd 100644
--- a/packages/core/test/session-wait.test.ts
+++ b/packages/core/test/session-wait.test.ts
@@ -1,16 +1,16 @@
import { describe, expect } from "bun:test"
import { Effect, Layer } from "effect"
-import { Database } from "@opencode-ai/core/database/database"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Location } from "@opencode-ai/core/location"
-import { Project } from "@opencode-ai/core/project"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionProjector } from "@opencode-ai/core/session/projector"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionStore } from "@opencode-ai/core/session/store"
+import { Database } from "@opencode/core/database/database"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Location } from "@opencode/core/location"
+import { Project } from "@opencode/core/project"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionProjector } from "@opencode/core/session/projector"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionStore } from "@opencode/core/session/store"
import { testEffect } from "./lib/effect"
import { globalProjectNode } from "./lib/project"
diff --git a/packages/core/test/shared-schema.test.ts b/packages/core/test/shared-schema.test.ts
index 50fbea8effe..9279d2082d0 100644
--- a/packages/core/test/shared-schema.test.ts
+++ b/packages/core/test/shared-schema.test.ts
@@ -1,33 +1,33 @@
import { expect, test } from "bun:test"
import { Schema } from "effect"
-import { Agent } from "@opencode-ai/core/agent"
-import { Session } from "@opencode-ai/core/session"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { Location } from "@opencode-ai/schema/location"
-import { Model } from "@opencode-ai/schema/model"
-import { Provider } from "@opencode-ai/schema/provider"
-import { Project } from "@opencode-ai/schema/project"
-import { Worktree } from "@opencode-ai/schema/worktree"
-import { PermissionV1 } from "@opencode-ai/schema/permission-v1"
-import { Prompt } from "@opencode-ai/schema/prompt"
-import { SessionInbox } from "@opencode-ai/schema/session-inbox"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import { Workspace } from "@opencode-ai/schema/workspace"
-import { Command } from "@opencode-ai/schema/command"
-import { Connection } from "@opencode-ai/schema/connection"
-import { Credential } from "@opencode-ai/schema/credential"
-import { FileSystem } from "@opencode-ai/schema/filesystem"
-import { Integration } from "@opencode-ai/schema/integration"
-import { LLM } from "@opencode-ai/schema/llm"
-import { Permission } from "@opencode-ai/schema/permission"
-import { Pty } from "@opencode-ai/schema/pty"
-import { Reference } from "@opencode-ai/schema/reference"
-import { Skill } from "@opencode-ai/schema/skill"
-import { AbsolutePath, optional, statics } from "@opencode-ai/schema/schema"
+import { Agent } from "@opencode/core/agent"
+import { Session } from "@opencode/core/session"
+import { SessionStore } from "@opencode/core/session/store"
+import { Location } from "@opencode/schema/location"
+import { Model } from "@opencode/schema/model"
+import { Provider } from "@opencode/schema/provider"
+import { Project } from "@opencode/schema/project"
+import { Worktree } from "@opencode/schema/worktree"
+import { PermissionV1 } from "@opencode/schema/permission-v1"
+import { Prompt } from "@opencode/schema/prompt"
+import { SessionInbox } from "@opencode/schema/session-inbox"
+import { SessionMessage } from "@opencode/schema/session-message"
+import { Workspace } from "@opencode/schema/workspace"
+import { Command } from "@opencode/schema/command"
+import { Connection } from "@opencode/schema/connection"
+import { Credential } from "@opencode/schema/credential"
+import { FileSystem } from "@opencode/schema/filesystem"
+import { Integration } from "@opencode/schema/integration"
+import { LLM } from "@opencode/schema/llm"
+import { Permission } from "@opencode/schema/permission"
+import { Pty } from "@opencode/schema/pty"
+import { Reference } from "@opencode/schema/reference"
+import { Skill } from "@opencode/schema/skill"
+import { AbsolutePath, optional, statics } from "@opencode/schema/schema"
test("Core reuses the canonical shared schemas", async () => {
- const schemaAgent = await import("@opencode-ai/schema/agent")
- const schemaSession = await import("@opencode-ai/schema/session")
+ const schemaAgent = await import("@opencode/schema/agent")
+ const schemaSession = await import("@opencode/schema/session")
const [
coreCommand,
coreConnection,
@@ -50,26 +50,26 @@ test("Core reuses the canonical shared schemas", async () => {
coreSchema,
coreWorkspace,
] = await Promise.all([
- import("@opencode-ai/core/command"),
- import("@opencode-ai/core/integration/connection"),
- import("@opencode-ai/core/credential"),
- import("@opencode-ai/core/filesystem"),
- import("@opencode-ai/core/integration"),
- import("@opencode-ai/core/location"),
- import("@opencode-ai/ai"),
- import("@opencode-ai/core/model"),
- import("@opencode-ai/core/permission"),
- import("@opencode-ai/core/v1/permission"),
- import("@opencode-ai/core/worktree"),
- import("@opencode-ai/core/pty"),
- import("@opencode-ai/core/project/schema"),
- import("@opencode-ai/core/provider"),
- import("@opencode-ai/core/reference"),
- import("@opencode-ai/core/session/inbox"),
- import("@opencode-ai/core/session/message"),
- import("@opencode-ai/core/skill"),
- import("@opencode-ai/core/schema"),
- import("@opencode-ai/core/workspace"),
+ import("@opencode/core/command"),
+ import("@opencode/core/integration/connection"),
+ import("@opencode/core/credential"),
+ import("@opencode/core/filesystem"),
+ import("@opencode/core/integration"),
+ import("@opencode/core/location"),
+ import("@opencode/ai"),
+ import("@opencode/core/model"),
+ import("@opencode/core/permission"),
+ import("@opencode/core/v1/permission"),
+ import("@opencode/core/worktree"),
+ import("@opencode/core/pty"),
+ import("@opencode/core/project/schema"),
+ import("@opencode/core/provider"),
+ import("@opencode/core/reference"),
+ import("@opencode/core/session/inbox"),
+ import("@opencode/core/session/message"),
+ import("@opencode/core/skill"),
+ import("@opencode/core/schema"),
+ import("@opencode/core/workspace"),
])
const schemas = [
diff --git a/packages/core/test/shell-cleanup.test.ts b/packages/core/test/shell-cleanup.test.ts
index 30b8cdd315d..ddd9f1aa2fd 100644
--- a/packages/core/test/shell-cleanup.test.ts
+++ b/packages/core/test/shell-cleanup.test.ts
@@ -1,11 +1,11 @@
import { describe, expect } from "bun:test"
import path from "path"
import { Effect } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Shell } from "@opencode-ai/core/shell"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Shell } from "@opencode/core/shell"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
import { tmpdir } from "./fixture/tmpdir"
import { it } from "./lib/effect"
diff --git a/packages/core/test/shell-parse.test.ts b/packages/core/test/shell-parse.test.ts
index 5ad4a43e928..39e35b46ecc 100644
--- a/packages/core/test/shell-parse.test.ts
+++ b/packages/core/test/shell-parse.test.ts
@@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
import os from "os"
import path from "path"
-import { ShellParse } from "@opencode-ai/core/shell/parse"
+import { ShellParse } from "@opencode/core/shell/parse"
describe("ShellParse", () => {
test("splits bash commands and derives reusable prefixes", async () => {
diff --git a/packages/core/test/shell-retention.test.ts b/packages/core/test/shell-retention.test.ts
index 33bddfa9cc4..d0a400d8230 100644
--- a/packages/core/test/shell-retention.test.ts
+++ b/packages/core/test/shell-retention.test.ts
@@ -2,12 +2,12 @@ import { expect } from "bun:test"
import { Deferred, Effect, Fiber, Layer, Queue, Scope, Sink, Stream } from "effect"
import { ChildProcessSpawner } from "effect/unstable/process"
import { ExitCode, makeHandle, ProcessId } from "effect/unstable/process/ChildProcessSpawner"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Config } from "@opencode-ai/core/config"
-import { Environment } from "@opencode-ai/core/environment/index"
-import { Location } from "@opencode-ai/core/location"
-import { Shell } from "@opencode-ai/core/shell"
-import { Global } from "@opencode-ai/util/global"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Config } from "@opencode/core/config"
+import { Environment } from "@opencode/core/environment/index"
+import { Location } from "@opencode/core/location"
+import { Shell } from "@opencode/core/shell"
+import { Global } from "@opencode/util/global"
import { hostEnvironmentLayer } from "./fixture/environment"
import { tempGlobalLayer } from "./fixture/global"
import { tempLocationLayer } from "./fixture/location"
diff --git a/packages/core/test/shell.test.ts b/packages/core/test/shell.test.ts
index 11fb974c8e8..204d6e146d7 100644
--- a/packages/core/test/shell.test.ts
+++ b/packages/core/test/shell.test.ts
@@ -1,8 +1,8 @@
import { describe, expect, test } from "bun:test"
import path from "path"
-import { ShellSelect } from "@opencode-ai/core/shell/select"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { which } from "@opencode-ai/core/util/which"
+import { ShellSelect } from "@opencode/core/shell/select"
+import { FSUtil } from "@opencode/util/fs-util"
+import { which } from "@opencode/core/util/which"
import fs from "node:fs/promises"
import { tmpdir } from "./fixture/tmpdir"
diff --git a/packages/core/test/skill-discovery.test.ts b/packages/core/test/skill-discovery.test.ts
index 0c49d558301..fb60bf9014c 100644
--- a/packages/core/test/skill-discovery.test.ts
+++ b/packages/core/test/skill-discovery.test.ts
@@ -5,9 +5,9 @@ import { describe, expect } from "bun:test"
import { NodeHttpServer } from "@effect/platform-node"
import { Effect } from "effect"
import { HttpServer, HttpServerRequest, HttpServerResponse } from "effect/unstable/http"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Global } from "@opencode-ai/util/global"
-import { SkillDiscovery } from "@opencode-ai/core/skill/discovery"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Global } from "@opencode/util/global"
+import { SkillDiscovery } from "@opencode/core/skill/discovery"
import { tmpdir } from "./fixture/tmpdir"
import { it } from "./lib/effect"
diff --git a/packages/core/test/skill.test.ts b/packages/core/test/skill.test.ts
index a3221069d97..87f01953550 100644
--- a/packages/core/test/skill.test.ts
+++ b/packages/core/test/skill.test.ts
@@ -1,11 +1,11 @@
import { describe, expect } from "bun:test"
import { Deferred, Effect, Fiber, Stream } from "effect"
-import { Agent } from "@opencode-ai/core/agent"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Skill } from "@opencode-ai/core/skill"
+import { Agent } from "@opencode/core/agent"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Skill } from "@opencode/core/skill"
import { testEffect } from "./lib/effect"
const it = testEffect(AppNodeBuilder.build(LayerNode.group([Skill.node, Agent.node, Bus.node])))
diff --git a/packages/core/test/skill/instructions.test.ts b/packages/core/test/skill/instructions.test.ts
index c3e352dc650..6026b1b751b 100644
--- a/packages/core/test/skill/instructions.test.ts
+++ b/packages/core/test/skill/instructions.test.ts
@@ -1,11 +1,11 @@
import path from "path"
import { describe, expect } from "bun:test"
import { Effect, Layer } from "effect"
-import { Agent } from "@opencode-ai/core/agent"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Skill } from "@opencode-ai/core/skill"
-import { SkillInstructions } from "@opencode-ai/core/skill/instructions"
+import { Agent } from "@opencode/core/agent"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Skill } from "@opencode/core/skill"
+import { SkillInstructions } from "@opencode/core/skill/instructions"
import { it } from "../lib/effect"
import { readInitial, readUpdate } from "../lib/instructions"
diff --git a/packages/core/test/snapshot.test.ts b/packages/core/test/snapshot.test.ts
index 9e1b03956ac..e1ca564a330 100644
--- a/packages/core/test/snapshot.test.ts
+++ b/packages/core/test/snapshot.test.ts
@@ -3,13 +3,13 @@ import { describe, expect } from "bun:test"
import fs from "fs/promises"
import path from "path"
import { Deferred, Effect, Fiber, Layer } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Git } from "@opencode-ai/core/git"
-import { Global } from "@opencode-ai/util/global"
-import { Location } from "@opencode-ai/core/location"
-import { AbsolutePath, RelativePath } from "@opencode-ai/core/schema"
-import { Snapshot } from "@opencode-ai/core/snapshot"
-import { Hash } from "@opencode-ai/util/hash"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Git } from "@opencode/core/git"
+import { Global } from "@opencode/util/global"
+import { Location } from "@opencode/core/location"
+import { AbsolutePath, RelativePath } from "@opencode/core/schema"
+import { Snapshot } from "@opencode/core/snapshot"
+import { Hash } from "@opencode/util/hash"
import { tmpdir } from "./fixture/tmpdir"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/sqlite-workerd.test.ts b/packages/core/test/sqlite-workerd.test.ts
index e539b5efe8a..8bfdaf3663c 100644
--- a/packages/core/test/sqlite-workerd.test.ts
+++ b/packages/core/test/sqlite-workerd.test.ts
@@ -2,8 +2,8 @@ import { describe, expect, test } from "bun:test"
import { Effect, Layer } from "effect"
import { SqlClient } from "effect/unstable/sql"
import { SqlError } from "effect/unstable/sql/SqlError"
-import { sqliteLayer } from "@opencode-ai/core/database/sqlite.workerd"
-import type { DurableObjectStorage } from "@opencode-ai/core/database/sqlite.workerd"
+import { sqliteLayer } from "@opencode/core/database/sqlite.workerd"
+import type { DurableObjectStorage } from "@opencode/core/database/sqlite.workerd"
import { makeDurableObjectStorage } from "./fixture/durable-object-storage"
import { tempGlobalLayer } from "./fixture/global"
@@ -79,7 +79,7 @@ describe("sqlite.workerd", () => {
test("boots the full database layer with migrations over injected storage", async () => {
const storage = makeDurableObjectStorage()
- const core = await import("@opencode-ai/core/database/database")
+ const core = await import("@opencode/core/database/database")
await Effect.runPromise(
Effect.scoped(
Layer.build(
diff --git a/packages/core/test/state-group.test.ts b/packages/core/test/state-group.test.ts
index 8bc34a1c365..3caca356fbb 100644
--- a/packages/core/test/state-group.test.ts
+++ b/packages/core/test/state-group.test.ts
@@ -1,6 +1,6 @@
import { expect } from "bun:test"
import { Effect } from "effect"
-import { State } from "@opencode-ai/core/state"
+import { State } from "@opencode/core/state"
import { it } from "./lib/effect"
it.effect("detaches every registration of a failed group and refreshes every affected domain", () =>
diff --git a/packages/core/test/state-replay.test.ts b/packages/core/test/state-replay.test.ts
index 4c92c1a4b97..299f42255f3 100644
--- a/packages/core/test/state-replay.test.ts
+++ b/packages/core/test/state-replay.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import { State } from "@opencode-ai/core/state"
+import { State } from "@opencode/core/state"
import { Effect } from "effect"
import { FastCheck } from "effect/testing"
diff --git a/packages/core/test/state.test.ts b/packages/core/test/state.test.ts
index 8aa05c9ebf1..1a73acf2891 100644
--- a/packages/core/test/state.test.ts
+++ b/packages/core/test/state.test.ts
@@ -1,5 +1,5 @@
import { describe, expect } from "bun:test"
-import { State } from "@opencode-ai/core/state"
+import { State } from "@opencode/core/state"
import { Cause, Deferred, Effect, Exit, Fiber, Scope } from "effect"
import { it } from "./lib/effect"
diff --git a/packages/core/test/tool-edit.test.ts b/packages/core/test/tool-edit.test.ts
index 2e7f0b1337d..ef5698fef38 100644
--- a/packages/core/test/tool-edit.test.ts
+++ b/packages/core/test/tool-edit.test.ts
@@ -2,22 +2,22 @@ import fs from "fs/promises"
import path from "path"
import { describe, expect } from "bun:test"
import { Effect, Layer } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Environment } from "@opencode-ai/core/environment/index"
-import { FileMutation } from "@opencode-ai/core/file-mutation"
-import { Formatter } from "@opencode-ai/core/formatter"
-import { Location } from "@opencode-ai/core/location"
-import { FileAccess } from "@opencode-ai/core/file-access"
-import { Permission } from "@opencode-ai/core/permission"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { Tool } from "@opencode-ai/core/tool"
-import { EditTool } from "@opencode-ai/core/tool/plugin/edit"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Environment } from "@opencode/core/environment/index"
+import { FileMutation } from "@opencode/core/file-mutation"
+import { Formatter } from "@opencode/core/formatter"
+import { Location } from "@opencode/core/location"
+import { FileAccess } from "@opencode/core/file-access"
+import { Permission } from "@opencode/core/permission"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { Tool } from "@opencode/core/tool"
+import { EditTool } from "@opencode/core/tool/plugin/edit"
import { transformEnvironmentFiles } from "./fixture/environment"
import { location } from "./fixture/location"
import { tmpdir, withTempDir } from "./fixture/tmpdir"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { testEffect } from "./lib/effect"
import { permissionLayer } from "./lib/permission"
import { toolIdentity, executeTool, registerToolPlugin, toolDefinitions } from "./lib/tool"
diff --git a/packages/core/test/tool-execute.test.ts b/packages/core/test/tool-execute.test.ts
index f76a18a08c5..e99d73701c1 100644
--- a/packages/core/test/tool-execute.test.ts
+++ b/packages/core/test/tool-execute.test.ts
@@ -1,11 +1,11 @@
import { expect, test } from "bun:test"
-import { CodeModeTool } from "@opencode-ai/core/codemode/tool"
-import { Tool } from "@opencode-ai/core/tool"
-import { execute } from "@opencode-ai/core/tool/runtime"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Session } from "@opencode-ai/schema/session"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import type { Info } from "@opencode-ai/schema/tool"
+import { CodeModeTool } from "@opencode/core/codemode/tool"
+import { Tool } from "@opencode/core/tool"
+import { execute } from "@opencode/core/tool/runtime"
+import { Agent } from "@opencode/schema/agent"
+import { Session } from "@opencode/schema/session"
+import { SessionMessage } from "@opencode/schema/session-message"
+import type { Info } from "@opencode/schema/tool"
import { Effect, Schema } from "effect"
const context = {
diff --git a/packages/core/test/tool-output.test.ts b/packages/core/test/tool-output.test.ts
index 35dfef6a3c2..35255063bd8 100644
--- a/packages/core/test/tool-output.test.ts
+++ b/packages/core/test/tool-output.test.ts
@@ -1,13 +1,13 @@
import { describe, expect } from "bun:test"
import path from "path"
import { Effect } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { ToolOutput } from "@opencode-ai/core/tool-output"
-import type { Tool } from "@opencode-ai/core/tool"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
-import { Identifier } from "@opencode-ai/core/id/id"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { ToolOutput } from "@opencode/core/tool-output"
+import type { Tool } from "@opencode/core/tool"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
+import { Identifier } from "@opencode/core/id/id"
import { tmpdir } from "./fixture/tmpdir"
import { it } from "./lib/effect"
diff --git a/packages/core/test/tool-patch.test.ts b/packages/core/test/tool-patch.test.ts
index 99055430d27..4fdfb487f58 100644
--- a/packages/core/test/tool-patch.test.ts
+++ b/packages/core/test/tool-patch.test.ts
@@ -2,22 +2,22 @@ import fs from "fs/promises"
import path from "path"
import { describe, expect } from "bun:test"
import { Effect, Exit, Layer, Schema } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Environment } from "@opencode-ai/core/environment/index"
-import { Formatter } from "@opencode-ai/core/formatter"
-import { FileMutation } from "@opencode-ai/core/file-mutation"
-import { Location } from "@opencode-ai/core/location"
-import { FileAccess } from "@opencode-ai/core/file-access"
-import { Permission } from "@opencode-ai/core/permission"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { Tool } from "@opencode-ai/core/tool"
-import { PatchTool } from "@opencode-ai/core/tool/plugin/patch"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Environment } from "@opencode/core/environment/index"
+import { Formatter } from "@opencode/core/formatter"
+import { FileMutation } from "@opencode/core/file-mutation"
+import { Location } from "@opencode/core/location"
+import { FileAccess } from "@opencode/core/file-access"
+import { Permission } from "@opencode/core/permission"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { Tool } from "@opencode/core/tool"
+import { PatchTool } from "@opencode/core/tool/plugin/patch"
import { transformEnvironmentFiles } from "./fixture/environment"
import { location } from "./fixture/location"
import { tmpdir } from "./fixture/tmpdir"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { testEffect } from "./lib/effect"
import { permissionLayer } from "./lib/permission"
import { toolIdentity, executeTool, registerToolPlugin, toolDefinitions } from "./lib/tool"
diff --git a/packages/core/test/tool-question.test.ts b/packages/core/test/tool-question.test.ts
index ec5becae5fd..bd397f8ea45 100644
--- a/packages/core/test/tool-question.test.ts
+++ b/packages/core/test/tool-question.test.ts
@@ -1,17 +1,17 @@
import { describe, expect } from "bun:test"
import { Cause, Effect, Exit, Fiber, Layer } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Form } from "@opencode-ai/core/form"
-import { Permission } from "@opencode-ai/core/permission"
-import { Session } from "@opencode-ai/core/session"
-import { Tool } from "@opencode-ai/core/tool"
-import { QuestionTool } from "@opencode-ai/core/tool/plugin/question"
-import { Image } from "@opencode-ai/core/image"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Form } from "@opencode/core/form"
+import { Permission } from "@opencode/core/permission"
+import { Session } from "@opencode/core/session"
+import { Tool } from "@opencode/core/tool"
+import { QuestionTool } from "@opencode/core/tool/plugin/question"
+import { Image } from "@opencode/core/image"
import { testEffect } from "./lib/effect"
import { imagePassthrough } from "./lib/image"
import { permissionLayer } from "./lib/permission"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { toolIdentity, executeTool, registerToolPlugin, toolDefinitions } from "./lib/tool"
const sessionID = Session.ID.make("ses_question_tool_test")
diff --git a/packages/core/test/tool-read-filesystem.test.ts b/packages/core/test/tool-read-filesystem.test.ts
index 41c673599e1..2e5d0bb6f03 100644
--- a/packages/core/test/tool-read-filesystem.test.ts
+++ b/packages/core/test/tool-read-filesystem.test.ts
@@ -1,12 +1,12 @@
import { describe, expect } from "bun:test"
import fs from "fs/promises"
import path from "path"
-import { Environment } from "@opencode-ai/core/environment/index"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { ReadToolFileSystem } from "@opencode-ai/core/tool/read-filesystem"
-import { CrossSpawnSpawner } from "@opencode-ai/util/cross-spawn-spawner"
-import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Environment } from "@opencode/core/environment/index"
+import { AbsolutePath } from "@opencode/core/schema"
+import { ReadToolFileSystem } from "@opencode/core/tool/read-filesystem"
+import { CrossSpawnSpawner } from "@opencode/util/cross-spawn-spawner"
+import { LayerNodePlatform } from "@opencode/util/effect/app-node-platform"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { Effect, FileSystem } from "effect"
import { ChildProcessSpawner } from "effect/unstable/process"
import { testEffect } from "./lib/effect"
diff --git a/packages/core/test/tool-read.test.ts b/packages/core/test/tool-read.test.ts
index 61e646ffd10..f24c5c4aab9 100644
--- a/packages/core/test/tool-read.test.ts
+++ b/packages/core/test/tool-read.test.ts
@@ -1,25 +1,25 @@
import { beforeEach, describe, expect } from "bun:test"
import path from "path"
import { Effect, Exit, Layer, Result } from "effect"
-import { Config } from "@opencode-ai/core/config"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { FileSystem } from "@opencode-ai/core/filesystem"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Location } from "@opencode-ai/core/location"
-import { Image } from "@opencode-ai/core/image"
-import { Permission } from "@opencode-ai/core/permission"
-import { Session } from "@opencode-ai/core/session"
-import { AbsolutePath, RelativePath } from "@opencode-ai/core/schema"
-import { Global } from "@opencode-ai/util/global"
-import { FileAccess } from "@opencode-ai/core/file-access"
+import { Config } from "@opencode/core/config"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { FileSystem } from "@opencode/core/filesystem"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Location } from "@opencode/core/location"
+import { Image } from "@opencode/core/image"
+import { Permission } from "@opencode/core/permission"
+import { Session } from "@opencode/core/session"
+import { AbsolutePath, RelativePath } from "@opencode/core/schema"
+import { Global } from "@opencode/util/global"
+import { FileAccess } from "@opencode/core/file-access"
import { location } from "./fixture/location"
-import { Tool } from "@opencode-ai/core/tool"
-import { ReadTool } from "@opencode-ai/core/tool/plugin/read"
-import { ReadToolFileSystem } from "@opencode-ai/core/tool/read-filesystem"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { SessionInstructions } from "@opencode-ai/core/session/instructions"
-import { Environment } from "@opencode-ai/core/environment/index"
+import { Tool } from "@opencode/core/tool"
+import { ReadTool } from "@opencode/core/tool/plugin/read"
+import { ReadToolFileSystem } from "@opencode/core/tool/read-filesystem"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { SessionInstructions } from "@opencode/core/session/instructions"
+import { Environment } from "@opencode/core/environment/index"
import { testEffect } from "./lib/effect"
import { permissionLayer } from "./lib/permission"
import { toolIdentity, executeTool, registerToolPlugin, toolDefinitions } from "./lib/tool"
diff --git a/packages/core/test/tool-registry.test.ts b/packages/core/test/tool-registry.test.ts
index f7d7c761db9..1fbabfe1d0f 100644
--- a/packages/core/test/tool-registry.test.ts
+++ b/packages/core/test/tool-registry.test.ts
@@ -1,15 +1,15 @@
import { describe, expect } from "bun:test"
-import { Agent } from "@opencode-ai/core/agent"
-import type { Permission } from "@opencode-ai/core/permission"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Image } from "@opencode-ai/core/image"
-import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
-import { Session } from "@opencode-ai/core/session"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { State } from "@opencode-ai/core/state"
-import { Tool } from "@opencode-ai/core/tool"
-import type { Info } from "@opencode-ai/schema/tool"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Agent } from "@opencode/core/agent"
+import type { Permission } from "@opencode/core/permission"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Image } from "@opencode/core/image"
+import { PluginHooks } from "@opencode/core/plugin/hooks"
+import { Session } from "@opencode/core/session"
+import { SessionMessage } from "@opencode/core/session/message"
+import { State } from "@opencode/core/state"
+import { Tool } from "@opencode/core/tool"
+import type { Info } from "@opencode/schema/tool"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { codeModeListings, executeTool, toolDefinitions } from "./lib/tool"
import { Deferred, Effect, Exit, Fiber, Layer, Logger, Schema, SchemaGetter, SchemaIssue, Scope } from "effect"
import { z } from "zod"
diff --git a/packages/core/test/tool-schema.test.ts b/packages/core/test/tool-schema.test.ts
index 443fa88ee03..7e90941edde 100644
--- a/packages/core/test/tool-schema.test.ts
+++ b/packages/core/test/tool-schema.test.ts
@@ -1,10 +1,10 @@
import { expect, test } from "bun:test"
import { Effect, Schema } from "effect"
import { z } from "zod"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Session } from "@opencode-ai/schema/session"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import type { Info } from "@opencode-ai/schema/tool"
+import { Agent } from "@opencode/schema/agent"
+import { Session } from "@opencode/schema/session"
+import { SessionMessage } from "@opencode/schema/session-message"
+import type { Info } from "@opencode/schema/tool"
import { Tool } from "../src/tool"
import { definition, execute } from "../src/tool/runtime"
diff --git a/packages/core/test/tool-search.test.ts b/packages/core/test/tool-search.test.ts
index 99fbde1bd98..26314e46cf8 100644
--- a/packages/core/test/tool-search.test.ts
+++ b/packages/core/test/tool-search.test.ts
@@ -2,20 +2,20 @@ import { describe, expect } from "bun:test"
import fs from "fs/promises"
import path from "path"
import { Effect, Layer } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Environment } from "@opencode-ai/core/environment/index"
-import { FileSystem } from "@opencode-ai/core/filesystem"
-import { Location } from "@opencode-ai/core/location"
-import { FileAccess } from "@opencode-ai/core/file-access"
-import { Permission } from "@opencode-ai/core/permission"
-import { Ripgrep } from "@opencode-ai/core/ripgrep"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { GlobTool } from "@opencode-ai/core/tool/plugin/glob"
-import { GrepTool } from "@opencode-ai/core/tool/plugin/grep"
-import { Tool } from "@opencode-ai/core/tool"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Environment } from "@opencode/core/environment/index"
+import { FileSystem } from "@opencode/core/filesystem"
+import { Location } from "@opencode/core/location"
+import { FileAccess } from "@opencode/core/file-access"
+import { Permission } from "@opencode/core/permission"
+import { Ripgrep } from "@opencode/core/ripgrep"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { GlobTool } from "@opencode/core/tool/plugin/glob"
+import { GrepTool } from "@opencode/core/tool/plugin/grep"
+import { Tool } from "@opencode/core/tool"
import { location } from "./fixture/location"
import { tmpdir } from "./fixture/tmpdir"
import { it } from "./lib/effect"
diff --git a/packages/core/test/tool-shell.test.ts b/packages/core/test/tool-shell.test.ts
index 4096abcc0e0..e7d92732f69 100644
--- a/packages/core/test/tool-shell.test.ts
+++ b/packages/core/test/tool-shell.test.ts
@@ -4,40 +4,40 @@ import os from "os"
import path from "path"
import { describe, expect } from "bun:test"
import { Cause, Deferred, Duration, Effect, Exit, Fiber, Layer, Queue, Scope, Stream } from "effect"
-import { Money } from "@opencode-ai/schema/money"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { makeGlobalNode, makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { filesystem } from "@opencode-ai/util/effect/app-node-platform"
-import { Database } from "@opencode-ai/core/database/database"
-import { Bus } from "@opencode-ai/core/bus"
-import { Config } from "@opencode-ai/core/config"
-import { Environment } from "@opencode-ai/core/environment/index"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Global } from "@opencode-ai/util/global"
-import { Location } from "@opencode-ai/core/location"
-import { FileAccess } from "@opencode-ai/core/file-access"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Agent } from "@opencode-ai/core/agent"
-import { Job } from "@opencode-ai/core/job"
-import { Session } from "@opencode-ai/core/session"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { Permission } from "@opencode-ai/core/permission"
-import { PermissionSaved } from "@opencode-ai/core/permission/saved"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginSupervisor } from "@opencode-ai/core/plugin/supervisor"
-import { Shell } from "@opencode-ai/core/shell"
-import { ShellSelect } from "@opencode-ai/core/shell/select"
-import { ID } from "@opencode-ai/schema/shell"
-import { ShellTool } from "@opencode-ai/core/tool/plugin/shell"
-import { ToolOutput } from "@opencode-ai/core/tool-output"
-import { Tool } from "@opencode-ai/core/tool"
+import { Money } from "@opencode/schema/money"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { makeGlobalNode, makeLocationNode } from "@opencode/util/effect/app-node"
+import { filesystem } from "@opencode/util/effect/app-node-platform"
+import { Database } from "@opencode/core/database/database"
+import { Bus } from "@opencode/core/bus"
+import { Config } from "@opencode/core/config"
+import { Environment } from "@opencode/core/environment/index"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Global } from "@opencode/util/global"
+import { Location } from "@opencode/core/location"
+import { FileAccess } from "@opencode/core/file-access"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Agent } from "@opencode/core/agent"
+import { Job } from "@opencode/core/job"
+import { Session } from "@opencode/core/session"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionStore } from "@opencode/core/session/store"
+import { Permission } from "@opencode/core/permission"
+import { PermissionSaved } from "@opencode/core/permission/saved"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginSupervisor } from "@opencode/core/plugin/supervisor"
+import { Shell } from "@opencode/core/shell"
+import { ShellSelect } from "@opencode/core/shell/select"
+import { ID } from "@opencode/schema/shell"
+import { ShellTool } from "@opencode/core/tool/plugin/shell"
+import { ToolOutput } from "@opencode/core/tool-output"
+import { Tool } from "@opencode/core/tool"
import { tmpdir, tmpdirScoped } from "./fixture/tmpdir"
import { tempGlobalLayer } from "./fixture/global"
import { offlineModels } from "./fixture/models"
diff --git a/packages/core/test/tool-skill.test.ts b/packages/core/test/tool-skill.test.ts
index ecd27383a03..fc1b9c8a656 100644
--- a/packages/core/test/tool-skill.test.ts
+++ b/packages/core/test/tool-skill.test.ts
@@ -2,21 +2,21 @@ import fs from "fs/promises"
import path from "path"
import { describe, expect } from "bun:test"
import { Effect, Layer } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Permission } from "@opencode-ai/core/permission"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { Skill } from "@opencode-ai/core/skill"
-import { SkillTool } from "@opencode-ai/core/tool/plugin/skill"
-import { Tool } from "@opencode-ai/core/tool"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Permission } from "@opencode/core/permission"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { Skill } from "@opencode/core/skill"
+import { SkillTool } from "@opencode/core/tool/plugin/skill"
+import { Tool } from "@opencode/core/tool"
import { tmpdir } from "./fixture/tmpdir"
-import { Image } from "@opencode-ai/core/image"
+import { Image } from "@opencode/core/image"
import { it } from "./lib/effect"
import { imagePassthrough } from "./lib/image"
import { permissionLayer } from "./lib/permission"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { FSUtil } from "@opencode/util/fs-util"
import { toolIdentity, executeTool, registerToolPlugin, toolDefinitions } from "./lib/tool"
const skillToolNode = makeLocationNode({
diff --git a/packages/core/test/tool-subagent.test.ts b/packages/core/test/tool-subagent.test.ts
index 6b800e1c7a8..4981bba667b 100644
--- a/packages/core/test/tool-subagent.test.ts
+++ b/packages/core/test/tool-subagent.test.ts
@@ -1,39 +1,39 @@
import { describe, expect } from "bun:test"
import { Deferred, Effect, Fiber, Layer, Schema, Stream } from "effect"
-import { LanguageModel } from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols"
-import { TestLLM } from "@opencode-ai/ai/testing"
+import { LanguageModel } from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols"
+import { TestLLM } from "@opencode/ai/testing"
import path from "path"
-import { Money } from "@opencode-ai/schema/money"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNodePlatform } from "@opencode-ai/core/effect/app-node-platform"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Global } from "@opencode-ai/util/global"
-import { makeGlobalNode, makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { Database } from "@opencode-ai/core/database/database"
-import { Bus } from "@opencode-ai/core/bus"
-import { Config } from "@opencode-ai/core/config"
-import { Location } from "@opencode-ai/core/location"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Agent } from "@opencode-ai/core/agent"
-import { Job } from "@opencode-ai/core/job"
-import { KV } from "@opencode-ai/core/kv"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import { Session } from "@opencode-ai/core/session"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionRestart } from "@opencode-ai/core/session/execution/restart"
-import { SessionInbox } from "@opencode-ai/core/session/inbox"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { SessionStore } from "@opencode-ai/core/session/store"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginSupervisor } from "@opencode-ai/core/plugin/supervisor"
-import { Permission } from "@opencode-ai/core/permission"
-import { SubagentTool } from "@opencode-ai/core/tool/plugin/subagent"
-import { Tool } from "@opencode-ai/core/tool"
+import { Money } from "@opencode/schema/money"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNodePlatform } from "@opencode/core/effect/app-node-platform"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Global } from "@opencode/util/global"
+import { makeGlobalNode, makeLocationNode } from "@opencode/util/effect/app-node"
+import { Database } from "@opencode/core/database/database"
+import { Bus } from "@opencode/core/bus"
+import { Config } from "@opencode/core/config"
+import { Location } from "@opencode/core/location"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Agent } from "@opencode/core/agent"
+import { Job } from "@opencode/core/job"
+import { KV } from "@opencode/core/kv"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import { Session } from "@opencode/core/session"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionRestart } from "@opencode/core/session/execution/restart"
+import { SessionInbox } from "@opencode/core/session/inbox"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { SessionStore } from "@opencode/core/session/store"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginSupervisor } from "@opencode/core/plugin/supervisor"
+import { Permission } from "@opencode/core/permission"
+import { SubagentTool } from "@opencode/core/tool/plugin/subagent"
+import { Tool } from "@opencode/core/tool"
import { tmpdir } from "./fixture/tmpdir"
import { tempGlobalLayer } from "./fixture/global"
import { offlineModels } from "./fixture/models"
diff --git a/packages/core/test/tool-webfetch.test.ts b/packages/core/test/tool-webfetch.test.ts
index f58f6cf8bc4..1f1ec9aee9b 100644
--- a/packages/core/test/tool-webfetch.test.ts
+++ b/packages/core/test/tool-webfetch.test.ts
@@ -2,15 +2,15 @@ import { describe, expect, test } from "bun:test"
import { Duration, Effect, Fiber, Layer, Schema } from "effect"
import * as TestClock from "effect/testing/TestClock"
import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform"
-import { Permission } from "@opencode-ai/core/permission"
-import { Session } from "@opencode-ai/core/session"
-import { Tool } from "@opencode-ai/core/tool"
-import { WebFetchTool } from "@opencode-ai/core/tool/plugin/webfetch"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { Image } from "@opencode-ai/core/image"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { LayerNodePlatform } from "@opencode/util/effect/app-node-platform"
+import { Permission } from "@opencode/core/permission"
+import { Session } from "@opencode/core/session"
+import { Tool } from "@opencode/core/tool"
+import { WebFetchTool } from "@opencode/core/tool/plugin/webfetch"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { Image } from "@opencode/core/image"
import { testEffect } from "./lib/effect"
import { imagePassthrough } from "./lib/image"
import { permissionLayer } from "./lib/permission"
diff --git a/packages/core/test/tool-websearch.test.ts b/packages/core/test/tool-websearch.test.ts
index bbe2a86ed9a..7e3f8e8dd72 100644
--- a/packages/core/test/tool-websearch.test.ts
+++ b/packages/core/test/tool-websearch.test.ts
@@ -1,18 +1,18 @@
import { describe, expect } from "bun:test"
import { Context, Effect, Layer } from "effect"
import type { HttpClientError } from "effect/unstable/http"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Permission } from "@opencode-ai/core/permission"
-import { KV } from "@opencode-ai/core/kv"
-import { Form } from "@opencode-ai/core/form"
-import { WebSearch } from "@opencode-ai/core/websearch"
-import { Session } from "@opencode-ai/core/session"
-import { toSessionError } from "@opencode-ai/core/session/to-session-error"
-import { Tool } from "@opencode-ai/core/tool"
-import { WebSearchTool } from "@opencode-ai/core/tool/plugin/websearch"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
-import { Image } from "@opencode-ai/core/image"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Permission } from "@opencode/core/permission"
+import { KV } from "@opencode/core/kv"
+import { Form } from "@opencode/core/form"
+import { WebSearch } from "@opencode/core/websearch"
+import { Session } from "@opencode/core/session"
+import { toSessionError } from "@opencode/core/session/to-session-error"
+import { Tool } from "@opencode/core/tool"
+import { WebSearchTool } from "@opencode/core/tool/plugin/websearch"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
+import { Image } from "@opencode/core/image"
import { testEffect } from "./lib/effect"
import { imagePassthrough } from "./lib/image"
import { permissionLayer } from "./lib/permission"
diff --git a/packages/core/test/tool-write.test.ts b/packages/core/test/tool-write.test.ts
index 0c734a27e40..4e5b6422585 100644
--- a/packages/core/test/tool-write.test.ts
+++ b/packages/core/test/tool-write.test.ts
@@ -2,22 +2,22 @@ import fs from "fs/promises"
import path from "path"
import { describe, expect } from "bun:test"
import { Effect, Layer } from "effect"
-import { FileMutation } from "@opencode-ai/core/file-mutation"
-import { Formatter } from "@opencode-ai/core/formatter"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Environment } from "@opencode-ai/core/environment/index"
-import { Location } from "@opencode-ai/core/location"
-import { FileAccess } from "@opencode-ai/core/file-access"
-import { Permission } from "@opencode-ai/core/permission"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { Tool } from "@opencode-ai/core/tool"
-import { WriteTool } from "@opencode-ai/core/tool/plugin/write"
+import { FileMutation } from "@opencode/core/file-mutation"
+import { Formatter } from "@opencode/core/formatter"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Environment } from "@opencode/core/environment/index"
+import { Location } from "@opencode/core/location"
+import { FileAccess } from "@opencode/core/file-access"
+import { Permission } from "@opencode/core/permission"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { Tool } from "@opencode/core/tool"
+import { WriteTool } from "@opencode/core/tool/plugin/write"
import { transformEnvironmentFiles } from "./fixture/environment"
import { location } from "./fixture/location"
import { tmpdir, withTempDir } from "./fixture/tmpdir"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { testEffect } from "./lib/effect"
import { permissionLayer } from "./lib/permission"
import { toolIdentity, executeTool, registerToolPlugin, toolDefinitions } from "./lib/tool"
diff --git a/packages/core/test/util/effect-flock.test.ts b/packages/core/test/util/effect-flock.test.ts
index ff4e074e30b..947ea6191e3 100644
--- a/packages/core/test/util/effect-flock.test.ts
+++ b/packages/core/test/util/effect-flock.test.ts
@@ -4,10 +4,10 @@ import path from "path"
import os from "os"
import { Cause, Effect, Exit } from "effect"
import { testEffect } from "../lib/effect"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { EffectFlock } from "@opencode-ai/util/effect-flock"
-import { Global } from "@opencode-ai/util/global"
-import { Hash } from "@opencode-ai/util/hash"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { EffectFlock } from "@opencode/util/effect-flock"
+import { Global } from "@opencode/util/global"
+import { Hash } from "@opencode/util/hash"
import { runLockWorker, spawnLockWorker, stopLockWorker, waitForFile } from "../fixture/lock-worker"
import { tmpdir } from "../fixture/tmpdir"
diff --git a/packages/core/test/util/flock.test.ts b/packages/core/test/util/flock.test.ts
index b3db99740f0..2c5eee410f6 100644
--- a/packages/core/test/util/flock.test.ts
+++ b/packages/core/test/util/flock.test.ts
@@ -1,8 +1,8 @@
import { describe, expect, test } from "bun:test"
import fs from "fs/promises"
import path from "path"
-import { Flock } from "@opencode-ai/util/flock"
-import { Hash } from "@opencode-ai/util/hash"
+import { Flock } from "@opencode/util/flock"
+import { Hash } from "@opencode/util/hash"
import { runLockWorker, spawnLockWorker, stopLockWorker, waitForFile } from "../fixture/lock-worker"
import { tmpdir } from "../fixture/tmpdir"
diff --git a/packages/core/test/util/process-lock.test.ts b/packages/core/test/util/process-lock.test.ts
index 9457b9c08e5..eb52b53537d 100644
--- a/packages/core/test/util/process-lock.test.ts
+++ b/packages/core/test/util/process-lock.test.ts
@@ -1,5 +1,5 @@
import { expect } from "bun:test"
-import { ProcessLock } from "@opencode-ai/core/util/process-lock"
+import { ProcessLock } from "@opencode/core/util/process-lock"
import { Effect } from "effect"
import fs from "node:fs/promises"
import os from "node:os"
diff --git a/packages/core/test/util/which.test.ts b/packages/core/test/util/which.test.ts
index d07e2670720..bbf8821e406 100644
--- a/packages/core/test/util/which.test.ts
+++ b/packages/core/test/util/which.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test"
import fs from "fs/promises"
import path from "path"
-import { which } from "@opencode-ai/core/util/which"
+import { which } from "@opencode/core/util/which"
import { tmpdir } from "../fixture/tmpdir"
async function cmd(dir: string, name: string, exec = true) {
diff --git a/packages/core/test/v1-migration.test.ts b/packages/core/test/v1-migration.test.ts
index b8ca1879f08..fdddbdc421b 100644
--- a/packages/core/test/v1-migration.test.ts
+++ b/packages/core/test/v1-migration.test.ts
@@ -1,16 +1,16 @@
import { describe, expect, test } from "bun:test"
import { SqliteClient } from "@effect/sql-sqlite-bun"
-import { EffectDrizzleSqlite } from "@opencode-ai/core/database/drizzle"
-import { Database } from "@opencode-ai/core/database/database"
-import { DatabaseMigration } from "@opencode-ai/core/database/migration"
-import { V1Migration } from "@opencode-ai/core/database/v1-migration"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionSchema } from "@opencode-ai/core/session/schema"
-import { SessionTable } from "@opencode-ai/core/session/sql"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Global } from "@opencode-ai/util/global"
+import { EffectDrizzleSqlite } from "@opencode/core/database/drizzle"
+import { Database } from "@opencode/core/database/database"
+import { DatabaseMigration } from "@opencode/core/database/migration"
+import { V1Migration } from "@opencode/core/database/v1-migration"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionSchema } from "@opencode/core/session/schema"
+import { SessionTable } from "@opencode/core/session/sql"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Global } from "@opencode/util/global"
import { Effect, Fiber, Layer, Logger, Schedule, Schema, Scope } from "effect"
import { eq, sql } from "drizzle-orm"
import type { SqlClient } from "effect/unstable/sql/SqlClient"
diff --git a/packages/core/test/vcs-hg.test.ts b/packages/core/test/vcs-hg.test.ts
index 3563b70fa98..73aaf20ff69 100644
--- a/packages/core/test/vcs-hg.test.ts
+++ b/packages/core/test/vcs-hg.test.ts
@@ -3,16 +3,16 @@ import { describe, expect } from "bun:test"
import fs from "fs/promises"
import path from "path"
import { Effect, Fiber, Layer, Stream } from "effect"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { AppProcess } from "@opencode-ai/util/process"
-import { Bus } from "@opencode-ai/core/bus"
-import { Location } from "@opencode-ai/core/location"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Vcs } from "@opencode-ai/core/vcs"
-import { VcsHgPlugin } from "@opencode-ai/core/plugin/vcs/hg"
-import { FileSystem } from "@opencode-ai/schema/filesystem"
-import { VcsEvent } from "@opencode-ai/schema/vcs-event"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { FSUtil } from "@opencode/util/fs-util"
+import { AppProcess } from "@opencode/util/process"
+import { Bus } from "@opencode/core/bus"
+import { Location } from "@opencode/core/location"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Vcs } from "@opencode/core/vcs"
+import { VcsHgPlugin } from "@opencode/core/plugin/vcs/hg"
+import { FileSystem } from "@opencode/schema/filesystem"
+import { VcsEvent } from "@opencode/schema/vcs-event"
import { location } from "./fixture/location"
import { tmpdir } from "./fixture/tmpdir"
import { it } from "./lib/effect"
diff --git a/packages/core/test/vcs.test.ts b/packages/core/test/vcs.test.ts
index 4d8db4ff2a8..00148b294f3 100644
--- a/packages/core/test/vcs.test.ts
+++ b/packages/core/test/vcs.test.ts
@@ -4,19 +4,19 @@ import fs from "fs/promises"
import path from "path"
import { Cause, Context, Deferred, Effect, Exit, Fiber, Layer, Option, Schema, Scope, Stream } from "effect"
import { TestClock } from "effect/testing"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { AppProcess } from "@opencode-ai/util/process"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Git } from "@opencode-ai/core/git"
-import { Bus } from "@opencode-ai/core/bus"
-import { Location } from "@opencode-ai/core/location"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { State } from "@opencode-ai/core/state"
-import { Vcs } from "@opencode-ai/core/vcs"
-import { VcsGitPlugin } from "@opencode-ai/core/plugin/vcs/git"
-import type { VcsDefinition, VcsDiffInput } from "@opencode-ai/plugin/effect/vcs"
-import { FileSystem } from "@opencode-ai/schema/filesystem"
-import { VcsEvent } from "@opencode-ai/schema/vcs-event"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { AppProcess } from "@opencode/util/process"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Git } from "@opencode/core/git"
+import { Bus } from "@opencode/core/bus"
+import { Location } from "@opencode/core/location"
+import { AbsolutePath } from "@opencode/core/schema"
+import { State } from "@opencode/core/state"
+import { Vcs } from "@opencode/core/vcs"
+import { VcsGitPlugin } from "@opencode/core/plugin/vcs/git"
+import type { VcsDefinition, VcsDiffInput } from "@opencode/plugin/effect/vcs"
+import { FileSystem } from "@opencode/schema/filesystem"
+import { VcsEvent } from "@opencode/schema/vcs-event"
import { location } from "./fixture/location"
import { tmpdir } from "./fixture/tmpdir"
import { it, testEffect } from "./lib/effect"
diff --git a/packages/core/test/websearch.test.ts b/packages/core/test/websearch.test.ts
index f147b34ce1f..59f0c32d105 100644
--- a/packages/core/test/websearch.test.ts
+++ b/packages/core/test/websearch.test.ts
@@ -1,13 +1,13 @@
import { describe, expect } from "bun:test"
import { Deferred, Effect, Exit, Fiber, Scope } from "effect"
import { TestClock } from "effect/testing"
-import { KV } from "@opencode-ai/core/kv"
-import { Bus } from "@opencode-ai/core/bus"
-import { WebSearch } from "@opencode-ai/core/websearch"
-import { Session } from "@opencode-ai/schema/session"
-import { SessionEvent } from "@opencode-ai/schema/session-event"
-import { Project } from "@opencode-ai/schema/project"
-import { AbsolutePath } from "@opencode-ai/schema/schema"
+import { KV } from "@opencode/core/kv"
+import { Bus } from "@opencode/core/bus"
+import { WebSearch } from "@opencode/core/websearch"
+import { Session } from "@opencode/schema/session"
+import { SessionEvent } from "@opencode/schema/session-event"
+import { Project } from "@opencode/schema/project"
+import { AbsolutePath } from "@opencode/schema/schema"
import { testEffect } from "./lib/effect"
import { TestWebSearch } from "./lib/websearch"
diff --git a/packages/core/test/wellknown.test.ts b/packages/core/test/wellknown.test.ts
index 9a2e4e10677..1e49c90e8b8 100644
--- a/packages/core/test/wellknown.test.ts
+++ b/packages/core/test/wellknown.test.ts
@@ -1,10 +1,10 @@
import { expect } from "bun:test"
import { Effect, Fiber, Stream } from "effect"
import { FetchHttpClient } from "effect/unstable/http"
-import { KV } from "@opencode-ai/core/kv"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { WellKnown } from "@opencode-ai/core/wellknown"
+import { KV } from "@opencode/core/kv"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { WellKnown } from "@opencode/core/wellknown"
import { testEffect } from "./lib/effect"
const it = testEffect(FetchHttpClient.layer)
diff --git a/packages/core/test/workspace.test.ts b/packages/core/test/workspace.test.ts
index 3797cfdffe5..8666b05e226 100644
--- a/packages/core/test/workspace.test.ts
+++ b/packages/core/test/workspace.test.ts
@@ -1,11 +1,11 @@
import { beforeEach, expect } from "bun:test"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Database } from "@opencode-ai/core/database/database"
-import { makeMemoryDriver } from "@opencode-ai/core/environment/index"
-import { Workspace } from "@opencode-ai/core/workspace"
-import { WorkspaceDriver } from "@opencode-ai/core/workspace/driver"
-import { WorkspaceTable } from "@opencode-ai/core/workspace/sql"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Database } from "@opencode/core/database/database"
+import { makeMemoryDriver } from "@opencode/core/environment/index"
+import { Workspace } from "@opencode/core/workspace"
+import { WorkspaceDriver } from "@opencode/core/workspace/driver"
+import { WorkspaceTable } from "@opencode/core/workspace/sql"
+import { LayerNode } from "@opencode/util/effect/layer-node"
import { eq } from "drizzle-orm"
import { Deferred, Effect, Fiber } from "effect"
import { TestClock } from "effect/testing"
diff --git a/packages/core/test/worktree.test.ts b/packages/core/test/worktree.test.ts
index 9a65b33c36f..151799a4081 100644
--- a/packages/core/test/worktree.test.ts
+++ b/packages/core/test/worktree.test.ts
@@ -4,27 +4,27 @@ import fs from "fs/promises"
import path from "path"
import { and, eq, isNull } from "drizzle-orm"
import { Context, Effect, Exit, Fiber, Layer, Queue, Scope, Stream } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Git } from "@opencode-ai/core/git"
-import { Database } from "@opencode-ai/core/database/database"
-import { Bus } from "@opencode-ai/core/bus"
-import { Project } from "@opencode-ai/core/project"
-import { ProjectTable } from "@opencode-ai/core/project/sql"
-import { Worktree } from "@opencode-ai/core/worktree"
-import { WorktreeDirectory } from "@opencode-ai/core/worktree/directory"
-import { WorktreeTable } from "@opencode-ai/core/worktree/sql"
-import { WorktreeGit } from "@opencode-ai/core/worktree/git"
-import { Location } from "@opencode-ai/core/location"
-import { Global } from "@opencode-ai/util/global"
-import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Config } from "@opencode-ai/core/config"
-import { ConfigWorktreePlugin } from "@opencode-ai/core/config/plugin/worktree"
-import { ConfigNormalize } from "@opencode-ai/core/config/normalize"
-import { Document, Event, Info } from "@opencode-ai/schema/config"
-import { EventManifest } from "@opencode-ai/schema/event-manifest"
-import { Workspace } from "@opencode-ai/schema/workspace"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Git } from "@opencode/core/git"
+import { Database } from "@opencode/core/database/database"
+import { Bus } from "@opencode/core/bus"
+import { Project } from "@opencode/core/project"
+import { ProjectTable } from "@opencode/core/project/sql"
+import { Worktree } from "@opencode/core/worktree"
+import { WorktreeDirectory } from "@opencode/core/worktree/directory"
+import { WorktreeTable } from "@opencode/core/worktree/sql"
+import { WorktreeGit } from "@opencode/core/worktree/git"
+import { Location } from "@opencode/core/location"
+import { Global } from "@opencode/util/global"
+import { FSUtil } from "@opencode/util/fs-util"
+import { Config } from "@opencode/core/config"
+import { ConfigWorktreePlugin } from "@opencode/core/config/plugin/worktree"
+import { ConfigNormalize } from "@opencode/core/config/normalize"
+import { Document, Event, Info } from "@opencode/schema/config"
+import { EventManifest } from "@opencode/schema/event-manifest"
+import { Workspace } from "@opencode/schema/workspace"
import { host } from "./plugin/host"
import { initRepo } from "./fixture/git"
import { tmpdir } from "./fixture/tmpdir"
diff --git a/packages/desktop/electron.vite.config.ts b/packages/desktop/electron.vite.config.ts
index 8a4b44c63e1..feb761fe5b8 100644
--- a/packages/desktop/electron.vite.config.ts
+++ b/packages/desktop/electron.vite.config.ts
@@ -10,7 +10,7 @@ const channel = (() => {
const nodePtyPkg = `@lydell/node-pty-${process.platform}-${process.arch}`
-const appPlugin = (await import("@opencode-ai/app/vite")).default
+const appPlugin = (await import("@opencode/app/vite")).default
const sentry =
process.env.SENTRY_AUTH_TOKEN && process.env.SENTRY_ORG && process.env.SENTRY_PROJECT
? (await import("@sentry/vite-plugin")).sentryVitePlugin({
diff --git a/packages/desktop/package.json b/packages/desktop/package.json
index 7f79a04e3d9..317278d5bd7 100644
--- a/packages/desktop/package.json
+++ b/packages/desktop/package.json
@@ -1,5 +1,5 @@
{
- "name": "@opencode-ai/desktop",
+ "name": "@opencode/desktop",
"private": true,
"version": "1.18.15",
"type": "module",
@@ -36,11 +36,11 @@
"@brendonovich/vite-plugin-opencode": "0.1.3",
"@effect/platform-node": "catalog:",
"@lydell/node-pty": "catalog:",
- "@opencode-ai/app": "workspace:*",
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
+ "@opencode/app": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/schema": "workspace:*",
"@opencode/plugin-browser": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
+ "@opencode/ui": "workspace:*",
"@sentry/solid": "catalog:",
"@sentry/vite-plugin": "catalog:",
"@solid-primitives/storage": "catalog:",
diff --git a/packages/desktop/scripts/prepare.ts b/packages/desktop/scripts/prepare.ts
index 0dfd5a35cbf..2240290abe1 100755
--- a/packages/desktop/scripts/prepare.ts
+++ b/packages/desktop/scripts/prepare.ts
@@ -1,5 +1,5 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
await import("./prebuild")
diff --git a/packages/desktop/scripts/utils.ts b/packages/desktop/scripts/utils.ts
index 8c6b0e72298..4142481f96c 100644
--- a/packages/desktop/scripts/utils.ts
+++ b/packages/desktop/scripts/utils.ts
@@ -17,37 +17,37 @@ export function resolveChannel(): Channel {
export const CLI_BINARIES: Array<{ target: string; package: string; os: string; cpu: string }> = [
{
target: "aarch64-apple-darwin",
- package: "@opencode-ai/cli-darwin-arm64",
+ package: "@opencode/cli-darwin-arm64",
os: "darwin",
cpu: "arm64",
},
{
target: "x86_64-apple-darwin",
- package: "@opencode-ai/cli-darwin-x64-baseline",
+ package: "@opencode/cli-darwin-x64-baseline",
os: "darwin",
cpu: "x64",
},
{
target: "aarch64-pc-windows-msvc",
- package: "@opencode-ai/cli-windows-arm64",
+ package: "@opencode/cli-windows-arm64",
os: "win32",
cpu: "arm64",
},
{
target: "x86_64-pc-windows-msvc",
- package: "@opencode-ai/cli-windows-x64-baseline",
+ package: "@opencode/cli-windows-x64-baseline",
os: "win32",
cpu: "x64",
},
{
target: "x86_64-unknown-linux-gnu",
- package: "@opencode-ai/cli-linux-x64-baseline",
+ package: "@opencode/cli-linux-x64-baseline",
os: "linux",
cpu: "x64",
},
{
target: "aarch64-unknown-linux-gnu",
- package: "@opencode-ai/cli-linux-arm64",
+ package: "@opencode/cli-linux-arm64",
os: "linux",
cpu: "arm64",
},
@@ -88,7 +88,7 @@ export async function downloadCliToResources(version = CLI_VERSION, dest = windo
export async function copyBuiltCliToResources(root: string, dest = windowsify("resources/opencode-cli")) {
const cli = getCurrentCli()
- const directory = cli.package.replace("@opencode-ai/", "")
+ const directory = cli.package.replace("@opencode/", "")
await copyCliToResources(join(root, directory, "bin", cli.os === "win32" ? "opencode2.exe" : "opencode2"), dest)
}
diff --git a/packages/desktop/src/main/browser-pane.ts b/packages/desktop/src/main/browser-pane.ts
index 8f4ae105c9d..21b8c8b7e50 100644
--- a/packages/desktop/src/main/browser-pane.ts
+++ b/packages/desktop/src/main/browser-pane.ts
@@ -1,8 +1,8 @@
-import type { BrowserPaneCommand, BrowserPaneLayout, BrowserPaneTarget } from "@opencode-ai/app/desktop"
+import type { BrowserPaneCommand, BrowserPaneLayout, BrowserPaneTarget } from "@opencode/app/desktop"
import { NodeHttpClient } from "@effect/platform-node"
import { Browser } from "@opencode/plugin-browser/rpc"
-import { OpenCode } from "@opencode-ai/client/effect"
-import { SessionID } from "@opencode-ai/schema/session-id"
+import { OpenCode } from "@opencode/client/effect"
+import { SessionID } from "@opencode/schema/session-id"
import type { BrowserWindow } from "electron"
import { Deferred, Effect, ManagedRuntime, Queue, Schedule, Schema, Stream } from "effect"
import { HttpClient, HttpClientRequest } from "effect/unstable/http"
diff --git a/packages/desktop/src/main/browser/network.ts b/packages/desktop/src/main/browser/network.ts
index 0942bb76e33..4969085d1de 100644
--- a/packages/desktop/src/main/browser/network.ts
+++ b/packages/desktop/src/main/browser/network.ts
@@ -1,6 +1,6 @@
import { session, type WebContents } from "electron"
-import type { RpcClient } from "@opencode-ai/client/effect/api"
-import type { Session } from "@opencode-ai/schema/session"
+import type { RpcClient } from "@opencode/client/effect/api"
+import type { Session } from "@opencode/schema/session"
import { Browser } from "@opencode/plugin-browser/rpc"
import { BrowserProxy } from "@opencode/plugin-browser/proxy"
import { Effect, Encoding } from "effect"
diff --git a/packages/desktop/src/main/ipc-handlers/app.ts b/packages/desktop/src/main/ipc-handlers/app.ts
index 6d69709c7b6..f605f4179d5 100644
--- a/packages/desktop/src/main/ipc-handlers/app.ts
+++ b/packages/desktop/src/main/ipc-handlers/app.ts
@@ -1,5 +1,5 @@
import { BrowserWindow } from "electron"
-import { parseDesktopNativeBundle } from "@opencode-ai/app/i18n/desktop-native"
+import { parseDesktopNativeBundle } from "@opencode/app/i18n/desktop-native"
import { Effect } from "effect"
import { AppRpcs } from "../../shared/ipc-rpc"
import { openExternalURL } from "../files"
diff --git a/packages/desktop/src/main/native/menu-actions.ts b/packages/desktop/src/main/native/menu-actions.ts
index b1a20358bb9..8e1d4a34982 100644
--- a/packages/desktop/src/main/native/menu-actions.ts
+++ b/packages/desktop/src/main/native/menu-actions.ts
@@ -1,5 +1,5 @@
import { BrowserWindow } from "electron"
-import type { DesktopMenuAction } from "@opencode-ai/app/desktop-menu"
+import type { DesktopMenuAction } from "@opencode/app/desktop-menu"
import { setZoomFactor } from "../windows"
export type DesktopMenuActionHandlers = Partial<{
diff --git a/packages/desktop/src/main/native/menu.ts b/packages/desktop/src/main/native/menu.ts
index 44121e2c79e..d8640337e7c 100644
--- a/packages/desktop/src/main/native/menu.ts
+++ b/packages/desktop/src/main/native/menu.ts
@@ -5,7 +5,7 @@ import {
desktopMenuVisible,
type DesktopMenuEntry,
type DesktopMenuRole,
-} from "@opencode-ai/app/desktop-menu"
+} from "@opencode/app/desktop-menu"
import { MenuCommandTriggered } from "../../shared/ipc-rpc/events"
import { emitIpcEvent } from "../ipc-events"
diff --git a/packages/desktop/src/main/native/translations.ts b/packages/desktop/src/main/native/translations.ts
index 80e5caf412e..5d20bc24eee 100644
--- a/packages/desktop/src/main/native/translations.ts
+++ b/packages/desktop/src/main/native/translations.ts
@@ -4,7 +4,7 @@ import {
formatDesktopNativeMessage,
type DesktopNativeBundle,
type DesktopNativeKey,
-} from "@opencode-ai/app/i18n/desktop-native"
+} from "@opencode/app/i18n/desktop-native"
let bundle: DesktopNativeBundle = { locale: "en", messages: { ...DESKTOP_NATIVE_ENGLISH } }
diff --git a/packages/desktop/src/main/service/background-service.ts b/packages/desktop/src/main/service/background-service.ts
index a051341917d..ab6ef067767 100644
--- a/packages/desktop/src/main/service/background-service.ts
+++ b/packages/desktop/src/main/service/background-service.ts
@@ -35,7 +35,7 @@ const connect = Effect.fn("BackgroundService.connect")(function* (mode: "initial
const cli = yield* desktopCli.resolve
const version = mode === "initial" ? cli.version : undefined
if (isolated) process.env.XDG_STATE_HOME = app.getPath("userData")
- const client = yield* Effect.promise(() => import("@opencode-ai/client/service"))
+ const client = yield* Effect.promise(() => import("@opencode/client/service"))
const service = yield* Effect.tryPromise(() =>
client.Service.ensure({
file:
diff --git a/packages/desktop/src/main/storage/store.ts b/packages/desktop/src/main/storage/store.ts
index 497e51b9ec8..5e5df974737 100644
--- a/packages/desktop/src/main/storage/store.ts
+++ b/packages/desktop/src/main/storage/store.ts
@@ -13,7 +13,7 @@ const cache = new Map()
// We cannot instantiate the electron-store at module load time because
// module import hoisting causes this to run before app.setPath("userData", ...)
// in index.ts has executed, which would result in files being written to the default directory
-// (e.g. bad: %APPDATA%\@opencode-ai\desktop\opencode.settings vs good: %APPDATA%\ai.opencode.desktop.dev\opencode.settings).
+// (e.g. bad: %APPDATA%\@opencode\desktop\opencode.settings vs good: %APPDATA%\ai.opencode.desktop.dev\opencode.settings).
export function getStore(name = SETTINGS_STORE) {
const cached = cache.get(name)
if (cached) return cached
diff --git a/packages/desktop/src/main/updater/index.ts b/packages/desktop/src/main/updater/index.ts
index 516c3835dc3..4fc58ccb311 100644
--- a/packages/desktop/src/main/updater/index.ts
+++ b/packages/desktop/src/main/updater/index.ts
@@ -2,7 +2,7 @@ export * as Updater from "./index"
import type { WebContents } from "electron"
import { Context, Deferred, Effect, Exit, Fiber, Layer } from "effect"
-import type { UpdaterState } from "@opencode-ai/app/updater"
+import type { UpdaterState } from "@opencode/app/updater"
import { UpdaterStateChanged } from "../../shared/ipc-rpc/events"
import { emitIpcEvent } from "../ipc-events"
diff --git a/packages/desktop/src/main/updater/live.ts b/packages/desktop/src/main/updater/live.ts
index b5f1a0dc2a2..149918a1303 100644
--- a/packages/desktop/src/main/updater/live.ts
+++ b/packages/desktop/src/main/updater/live.ts
@@ -2,7 +2,7 @@ export * as UpdaterLive from "./live"
import { dialog } from "electron"
import { Effect, Layer } from "effect"
-import type { UpdaterState } from "@opencode-ai/app/updater"
+import type { UpdaterState } from "@opencode/app/updater"
import { UPDATER_ENABLED } from "../constants"
import { DesktopInitialization } from "../lifecycle/desktop-initialization"
import { ApplicationLifecycle } from "../lifecycle"
diff --git a/packages/desktop/src/main/windows/appearance.ts b/packages/desktop/src/main/windows/appearance.ts
index 9b6800348ff..ac36abc9851 100644
--- a/packages/desktop/src/main/windows/appearance.ts
+++ b/packages/desktop/src/main/windows/appearance.ts
@@ -1,5 +1,5 @@
-import { resolveThemeVariant } from "@opencode-ai/ui/theme/resolve"
-import type { DesktopTheme } from "@opencode-ai/ui/theme/types"
+import { resolveThemeVariant } from "@opencode/ui/theme/resolve"
+import type { DesktopTheme } from "@opencode/ui/theme/types"
import oc2ThemeJson from "../../../../ui/src/theme/themes/oc-2.json"
import { app, BrowserWindow, nativeImage, nativeTheme } from "electron"
import type { Path } from "effect"
diff --git a/packages/desktop/src/main/wsl/ipc.ts b/packages/desktop/src/main/wsl/ipc.ts
index c0765027863..123dc07d148 100644
--- a/packages/desktop/src/main/wsl/ipc.ts
+++ b/packages/desktop/src/main/wsl/ipc.ts
@@ -2,7 +2,7 @@ export * as WslIpc from "./ipc"
import { app } from "electron"
import type { WebContents } from "electron"
-import type { WslServerConfig, WslServersState } from "@opencode-ai/app/wsl/types"
+import type { WslServerConfig, WslServersState } from "@opencode/app/wsl/types"
import { Effect } from "effect"
import { WslServersChanged } from "../../shared/ipc-rpc/events"
import { emitIpcEvent } from "../ipc-events"
diff --git a/packages/desktop/src/main/wsl/runtime.ts b/packages/desktop/src/main/wsl/runtime.ts
index 662ad260ec9..ff534b26e91 100644
--- a/packages/desktop/src/main/wsl/runtime.ts
+++ b/packages/desktop/src/main/wsl/runtime.ts
@@ -1,6 +1,6 @@
import { spawn } from "node:child_process"
import * as pty from "@lydell/node-pty"
-import type { WslDistroProbe, WslInstalledDistro, WslOnlineDistro, WslRuntimeCheck } from "@opencode-ai/app/wsl/types"
+import type { WslDistroProbe, WslInstalledDistro, WslOnlineDistro, WslRuntimeCheck } from "@opencode/app/wsl/types"
import { Effect, FileSystem, Path } from "effect"
import { nativeT } from "../native/translations"
import { parseCliVersion } from "../service/cli-version"
diff --git a/packages/desktop/src/main/wsl/servers.test.ts b/packages/desktop/src/main/wsl/servers.test.ts
index 557bde87b8d..0bc37412a83 100644
--- a/packages/desktop/src/main/wsl/servers.test.ts
+++ b/packages/desktop/src/main/wsl/servers.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import type { WslServerConfig } from "@opencode-ai/app/wsl/types"
+import type { WslServerConfig } from "@opencode/app/wsl/types"
import { Effect } from "effect"
import { wslCliInstallCommand } from "./runtime"
import { createWslServersController } from "./servers"
diff --git a/packages/desktop/src/main/wsl/servers.ts b/packages/desktop/src/main/wsl/servers.ts
index 259e2267373..b251f69d4e3 100644
--- a/packages/desktop/src/main/wsl/servers.ts
+++ b/packages/desktop/src/main/wsl/servers.ts
@@ -7,7 +7,7 @@ import type {
WslServerRuntime,
WslServersEvent,
WslServersState,
-} from "@opencode-ai/app/wsl/types"
+} from "@opencode/app/wsl/types"
import { Effect } from "effect"
import { nativeT } from "../native/translations"
import {
diff --git a/packages/desktop/src/renderer/api-types.ts b/packages/desktop/src/renderer/api-types.ts
index aea01a8f246..a4ef9be06f6 100644
--- a/packages/desktop/src/renderer/api-types.ts
+++ b/packages/desktop/src/renderer/api-types.ts
@@ -1,8 +1,8 @@
-import type { BrowserPaneEvent } from "@opencode-ai/app/desktop"
-import type { DesktopMenuAction } from "@opencode-ai/app/desktop-menu"
-import type { DesktopNativeBundle } from "@opencode-ai/app/i18n/desktop-native"
-import type { UpdaterState } from "@opencode-ai/app/updater"
-import type { WslServersPlatform } from "@opencode-ai/app/wsl/types"
+import type { BrowserPaneEvent } from "@opencode/app/desktop"
+import type { DesktopMenuAction } from "@opencode/app/desktop-menu"
+import type { DesktopNativeBundle } from "@opencode/app/i18n/desktop-native"
+import type { UpdaterState } from "@opencode/app/updater"
+import type { WslServersPlatform } from "@opencode/app/wsl/types"
import type { BrowserPaneRequest } from "../shared/ipc-rpc/browser"
import type {
ClipboardImage,
diff --git a/packages/desktop/src/renderer/api.ts b/packages/desktop/src/renderer/api.ts
index 71d4ad3a825..ff2ee9ddd45 100644
--- a/packages/desktop/src/renderer/api.ts
+++ b/packages/desktop/src/renderer/api.ts
@@ -1,5 +1,5 @@
import type { ElectronAPI } from "./api-types"
-import type { UpdaterState } from "@opencode-ai/app/updater"
+import type { UpdaterState } from "@opencode/app/updater"
import { invoke, listen, send } from "./ipc-client"
type Mutable =
diff --git a/packages/desktop/src/renderer/desktop-app.tsx b/packages/desktop/src/renderer/desktop-app.tsx
index 9c5f36e8395..608af6deef9 100644
--- a/packages/desktop/src/renderer/desktop-app.tsx
+++ b/packages/desktop/src/renderer/desktop-app.tsx
@@ -15,8 +15,8 @@ import {
useWslServers,
type LayoutRoute,
type UpdaterPlatform,
-} from "@opencode-ai/app/desktop"
-import { useTheme } from "@opencode-ai/ui/theme/context"
+} from "@opencode/app/desktop"
+import { useTheme } from "@opencode/ui/theme/context"
import type { BaseRouterProps } from "@solidjs/router"
import { createEffect, createMemo, createResource, lazy, Show, Suspense } from "solid-js"
import { createStore } from "solid-js/store"
diff --git a/packages/desktop/src/renderer/migration-status.tsx b/packages/desktop/src/renderer/migration-status.tsx
index 18717746baf..cc3b4a9fdf5 100644
--- a/packages/desktop/src/renderer/migration-status.tsx
+++ b/packages/desktop/src/renderer/migration-status.tsx
@@ -1,7 +1,7 @@
-import { OpenCode, type MigrationV1StatusOutput } from "@opencode-ai/client/promise"
-import { useLanguage } from "@opencode-ai/app/desktop"
-import { Loader } from "@opencode-ai/ui/loader"
-import { showToast, toaster, Toast } from "@opencode-ai/ui/toast"
+import { OpenCode, type MigrationV1StatusOutput } from "@opencode/client/promise"
+import { useLanguage } from "@opencode/app/desktop"
+import { Loader } from "@opencode/ui/loader"
+import { showToast, toaster, Toast } from "@opencode/ui/toast"
import { createRoot, createSignal, onCleanup, onMount } from "solid-js"
import type { ServerReadyData } from "../shared/ipc-contract"
diff --git a/packages/desktop/src/renderer/onboarding/index.tsx b/packages/desktop/src/renderer/onboarding/index.tsx
index c890f15ff9f..869a4d61897 100644
--- a/packages/desktop/src/renderer/onboarding/index.tsx
+++ b/packages/desktop/src/renderer/onboarding/index.tsx
@@ -1,4 +1,4 @@
-import { ServerConnection, useServers, useTabs } from "@opencode-ai/app/desktop"
+import { ServerConnection, useServers, useTabs } from "@opencode/app/desktop"
import { onMount } from "solid-js"
import type { ElectronAPI } from "../api-types"
diff --git a/packages/desktop/src/renderer/platform/files.ts b/packages/desktop/src/renderer/platform/files.ts
index 67b7a352251..401bb59bcac 100644
--- a/packages/desktop/src/renderer/platform/files.ts
+++ b/packages/desktop/src/renderer/platform/files.ts
@@ -1,4 +1,4 @@
-import type { Platform } from "@opencode-ai/app/desktop"
+import type { Platform } from "@opencode/app/desktop"
import type { ElectronAPI } from "../api-types"
type DesktopOS = Extract["os"]
diff --git a/packages/desktop/src/renderer/platform/index.ts b/packages/desktop/src/renderer/platform/index.ts
index 9b01958ec17..3e939440dc2 100644
--- a/packages/desktop/src/renderer/platform/index.ts
+++ b/packages/desktop/src/renderer/platform/index.ts
@@ -3,7 +3,7 @@ import {
ServerConnection,
type Platform,
type UpdaterPlatform,
-} from "@opencode-ai/app/desktop"
+} from "@opencode/app/desktop"
import type { ElectronAPI } from "../api-types"
import { setPinchZoomEnabled, webviewZoom } from "../window/zoom"
import { windowFullscreen } from "../window/fullscreen"
diff --git a/packages/desktop/src/renderer/platform/menu.ts b/packages/desktop/src/renderer/platform/menu.ts
index 77edecb17e4..8edddf3c588 100644
--- a/packages/desktop/src/renderer/platform/menu.ts
+++ b/packages/desktop/src/renderer/platform/menu.ts
@@ -1,4 +1,4 @@
-import type { Platform } from "@opencode-ai/app/desktop"
+import type { Platform } from "@opencode/app/desktop"
import type { ElectronAPI } from "../api-types"
import { resetZoom, zoomIn, zoomOut } from "../window/zoom"
diff --git a/packages/desktop/src/renderer/platform/notifications.ts b/packages/desktop/src/renderer/platform/notifications.ts
index 4d802f24d10..c9a7ebe95eb 100644
--- a/packages/desktop/src/renderer/platform/notifications.ts
+++ b/packages/desktop/src/renderer/platform/notifications.ts
@@ -1,4 +1,4 @@
-import type { Platform } from "@opencode-ai/app/desktop"
+import type { Platform } from "@opencode/app/desktop"
import type { ElectronAPI } from "../api-types"
export function createDesktopNotify(api: ElectronAPI): Platform["notify"] {
diff --git a/packages/desktop/src/renderer/platform/storage.ts b/packages/desktop/src/renderer/platform/storage.ts
index b14d5a281c9..5bea3bf7a9e 100644
--- a/packages/desktop/src/renderer/platform/storage.ts
+++ b/packages/desktop/src/renderer/platform/storage.ts
@@ -4,7 +4,7 @@ import {
flushPersisted,
type NamespaceStorage,
type Platform,
-} from "@opencode-ai/app/desktop"
+} from "@opencode/app/desktop"
import type { ElectronAPI } from "../api-types"
import { onBeforeDispose } from "../ipc-client"
diff --git a/packages/desktop/src/renderer/platform/updater.ts b/packages/desktop/src/renderer/platform/updater.ts
index d293517d440..cdba497b3e1 100644
--- a/packages/desktop/src/renderer/platform/updater.ts
+++ b/packages/desktop/src/renderer/platform/updater.ts
@@ -1,4 +1,4 @@
-import type { UpdaterPlatform, UpdaterState } from "@opencode-ai/app/desktop"
+import type { UpdaterPlatform, UpdaterState } from "@opencode/app/desktop"
import { createSignal } from "solid-js"
import type { ElectronAPI } from "../api-types"
diff --git a/packages/desktop/src/renderer/startup/locale.ts b/packages/desktop/src/renderer/startup/locale.ts
index ced84615312..19eab71ef8d 100644
--- a/packages/desktop/src/renderer/startup/locale.ts
+++ b/packages/desktop/src/renderer/startup/locale.ts
@@ -1,4 +1,4 @@
-import { loadLocaleDict, normalizeLocale, type Locale, type Platform } from "@opencode-ai/app/desktop"
+import { loadLocaleDict, normalizeLocale, type Locale, type Platform } from "@opencode/app/desktop"
import { storedLocaleValue } from "./locale-value"
export async function preloadStoredLocale(platform: Platform) {
diff --git a/packages/desktop/src/renderer/startup/splash.tsx b/packages/desktop/src/renderer/startup/splash.tsx
index 26dd78c0f4b..49911de2b52 100644
--- a/packages/desktop/src/renderer/startup/splash.tsx
+++ b/packages/desktop/src/renderer/startup/splash.tsx
@@ -1,4 +1,4 @@
-import { Splash } from "@opencode-ai/ui/logo"
+import { Splash } from "@opencode/ui/logo"
export function LoadingSplash(props: { deep: boolean }) {
return (
diff --git a/packages/desktop/src/renderer/wsl/connections.test.ts b/packages/desktop/src/renderer/wsl/connections.test.ts
index 417566efd9e..b05a9e00f1f 100644
--- a/packages/desktop/src/renderer/wsl/connections.test.ts
+++ b/packages/desktop/src/renderer/wsl/connections.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { WslServersState } from "@opencode-ai/app/wsl/types"
+import type { WslServersState } from "@opencode/app/wsl/types"
import { availableStartupServer, readyWslConnections } from "./connections"
const state = (kind: "starting" | "ready" | "failed" | "stopped"): WslServersState => ({
diff --git a/packages/desktop/src/renderer/wsl/connections.ts b/packages/desktop/src/renderer/wsl/connections.ts
index 8cbb6f9fd13..c7db9cc1133 100644
--- a/packages/desktop/src/renderer/wsl/connections.ts
+++ b/packages/desktop/src/renderer/wsl/connections.ts
@@ -1,4 +1,4 @@
-import type { WslServersState } from "@opencode-ai/app/wsl/types"
+import type { WslServersState } from "@opencode/app/wsl/types"
export function readyWslConnections(state?: WslServersState, label = "WSL") {
return (state?.servers ?? []).flatMap((item) => {
diff --git a/packages/desktop/test/browser/contract.ts b/packages/desktop/test/browser/contract.ts
index 5bf43bac10d..1ccc32ba868 100644
--- a/packages/desktop/test/browser/contract.ts
+++ b/packages/desktop/test/browser/contract.ts
@@ -1,5 +1,5 @@
-import { Rpc } from "@opencode-ai/schema/rpc"
-import { Session } from "@opencode-ai/schema/session"
+import { Rpc } from "@opencode/schema/rpc"
+import { Session } from "@opencode/schema/session"
import { Schema } from "effect"
export const Smoke = Rpc.define({
diff --git a/packages/desktop/test/browser/native.ts b/packages/desktop/test/browser/native.ts
index 498ff3e287f..e71878d1afb 100644
--- a/packages/desktop/test/browser/native.ts
+++ b/packages/desktop/test/browser/native.ts
@@ -5,7 +5,7 @@ import { createHash } from "node:crypto"
import path from "node:path"
import { app, BrowserWindow, nativeImage } from "electron"
import { Browser } from "@opencode/plugin-browser/rpc"
-import { OpenCode } from "@opencode-ai/client"
+import { OpenCode } from "@opencode/client"
import { Effect, Fiber, Schema, Stream } from "effect"
import { createBrowserPane } from "../../src/main/browser-pane"
import { bindIpcEvents, ipcEventStream } from "../../src/main/ipc-events"
diff --git a/packages/desktop/test/browser/plugin/index.ts b/packages/desktop/test/browser/plugin/index.ts
index 3ce0cc93fea..b66783fd4c3 100644
--- a/packages/desktop/test/browser/plugin/index.ts
+++ b/packages/desktop/test/browser/plugin/index.ts
@@ -1,7 +1,7 @@
-import { Plugin } from "@opencode-ai/plugin/effect"
-import { Agent } from "@opencode-ai/schema/agent"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import { Tool } from "@opencode-ai/schema/tool"
+import { Plugin } from "@opencode/plugin/effect"
+import { Agent } from "@opencode/schema/agent"
+import { SessionMessage } from "@opencode/schema/session-message"
+import { Tool } from "@opencode/schema/tool"
import { CodeModeTool } from "../../../../core/src/codemode/tool"
import { execute } from "../../../../core/src/tool/runtime"
import { Effect, Schema } from "effect"
diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json
index 93a523b21b5..12d5d6f6625 100644
--- a/packages/enterprise/package.json
+++ b/packages/enterprise/package.json
@@ -1,5 +1,5 @@
{
- "name": "@opencode-ai/enterprise",
+ "name": "@opencode/enterprise",
"version": "1.18.15",
"private": true,
"type": "module",
@@ -13,13 +13,13 @@
"shell-prod": "sst shell --target Teams --stage production"
},
"dependencies": {
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/core": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/core": "workspace:*",
+ "@opencode/schema": "workspace:*",
"@opencode-ai/sdk": "1.18.21",
- "@opencode-ai/session-ui": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/session-ui": "workspace:*",
+ "@opencode/ui": "workspace:*",
+ "@opencode/util": "workspace:*",
"aws4fetch": "^1.0.20",
"@pierre/diffs": "catalog:",
"@solidjs/router": "catalog:",
diff --git a/packages/enterprise/src/app.css b/packages/enterprise/src/app.css
index ba08d986853..a78fea2f56a 100644
--- a/packages/enterprise/src/app.css
+++ b/packages/enterprise/src/app.css
@@ -1,3 +1,3 @@
-@import "@opencode-ai/ui/styles/tailwind";
-@import "@opencode-ai/session-ui/styles";
-@import "@opencode-ai/ui/styles/tokens";
+@import "@opencode/ui/styles/tailwind";
+@import "@opencode/session-ui/styles";
+@import "@opencode/ui/styles/tokens";
diff --git a/packages/enterprise/src/app.tsx b/packages/enterprise/src/app.tsx
index cca18b7a6d7..dc61d1a73d2 100644
--- a/packages/enterprise/src/app.tsx
+++ b/packages/enterprise/src/app.tsx
@@ -1,10 +1,10 @@
import { Router } from "@solidjs/router"
import { FileRoutes } from "@solidjs/start/router"
-import { Font } from "@opencode-ai/ui/font"
+import { Font } from "@opencode/ui/font"
import { MetaProvider } from "@solidjs/meta"
-import { MarkedProvider } from "@opencode-ai/ui/context/marked"
-import { DialogProvider } from "@opencode-ai/ui/context/dialog"
-import { I18nProvider } from "@opencode-ai/ui/context"
+import { MarkedProvider } from "@opencode/ui/context/marked"
+import { DialogProvider } from "@opencode/ui/context/dialog"
+import { I18nProvider } from "@opencode/ui/context"
import {
pluralCategory,
pluralKey,
@@ -12,13 +12,13 @@ import {
type UiI18nPluralKey,
type UiPluralCategory,
type UiTranslate,
-} from "@opencode-ai/ui/context/i18n"
-import { dict as uiEn } from "@opencode-ai/ui/i18n/en"
-import { dict as uiZh } from "@opencode-ai/ui/i18n/zh"
+} from "@opencode/ui/context/i18n"
+import { dict as uiEn } from "@opencode/ui/i18n/en"
+import { dict as uiZh } from "@opencode/ui/i18n/zh"
import { createEffect, createMemo, Suspense, type ParentProps } from "solid-js"
import { getRequestEvent } from "solid-js/web"
import "./app.css"
-import { Favicon } from "@opencode-ai/ui/favicon"
+import { Favicon } from "@opencode/ui/favicon"
function resolveTemplate(text: string, params?: UiI18nParams) {
if (!params) return text
diff --git a/packages/enterprise/src/core/share-document.ts b/packages/enterprise/src/core/share-document.ts
index 491ec251cb4..b07c55bf2a0 100644
--- a/packages/enterprise/src/core/share-document.ts
+++ b/packages/enterprise/src/core/share-document.ts
@@ -8,8 +8,8 @@ import type {
SessionMessageCompaction,
SessionMessageInfo,
SessionMessageUser,
-} from "@opencode-ai/client/promise"
-import type { SessionV1 } from "@opencode-ai/schema/session-v1"
+} from "@opencode/client/promise"
+import type { SessionV1 } from "@opencode/schema/session-v1"
import type { Share } from "./share"
type Entry = Extract["data"]
@@ -38,7 +38,7 @@ async function mapFromLegacySession(blob: {
parts: Entry<"part">[]
}) {
const [{ SessionV1 }, { Option, Schema }] = await Promise.all([
- import("@opencode-ai/schema/session-v1"),
+ import("@opencode/schema/session-v1"),
import("effect"),
])
const session = Schema.decodeUnknownSync(SessionV1.SessionInfo)(legacySessionDefaults(blob.session))
diff --git a/packages/enterprise/src/core/share.ts b/packages/enterprise/src/core/share.ts
index e962e782779..910cefaa990 100644
--- a/packages/enterprise/src/core/share.ts
+++ b/packages/enterprise/src/core/share.ts
@@ -1,5 +1,5 @@
import { Message, Model, Part, Session, SnapshotFileDiff } from "@opencode-ai/sdk/v2"
-import type { SessionInfo, SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { SessionInfo, SessionMessageInfo } from "@opencode/client/promise"
import z from "zod"
import { Storage } from "./storage"
diff --git a/packages/enterprise/src/core/storage.ts b/packages/enterprise/src/core/storage.ts
index 58d61aca789..e5b50efff8d 100644
--- a/packages/enterprise/src/core/storage.ts
+++ b/packages/enterprise/src/core/storage.ts
@@ -1,5 +1,5 @@
import { AwsClient } from "aws4fetch"
-import { lazy } from "@opencode-ai/core/util/lazy"
+import { lazy } from "@opencode/core/util/lazy"
export namespace Storage {
export interface Adapter {
diff --git a/packages/enterprise/src/routes/share/[shareID].tsx b/packages/enterprise/src/routes/share/[shareID].tsx
index ebe9b426619..15faca14dba 100644
--- a/packages/enterprise/src/routes/share/[shareID].tsx
+++ b/packages/enterprise/src/routes/share/[shareID].tsx
@@ -1,35 +1,35 @@
-import { SessionTimeline } from "@opencode-ai/session-ui/timeline"
-import type { SessionDocument } from "@opencode-ai/session-ui/document"
-import type { SessionMessageInfo } from "@opencode-ai/client/promise"
-import { SessionReview } from "@opencode-ai/session-ui/session-review"
-import { DataProvider } from "@opencode-ai/session-ui/context"
-import { FileComponentProvider } from "@opencode-ai/ui/context/file"
-import { WorkerPoolProvider } from "@opencode-ai/ui/context/worker-pool"
-import { withTimestampedFallback } from "@opencode-ai/util/session-title-fallback"
+import { SessionTimeline } from "@opencode/session-ui/timeline"
+import type { SessionDocument } from "@opencode/session-ui/document"
+import type { SessionMessageInfo } from "@opencode/client/promise"
+import { SessionReview } from "@opencode/session-ui/session-review"
+import { DataProvider } from "@opencode/session-ui/context"
+import { FileComponentProvider } from "@opencode/ui/context/file"
+import { WorkerPoolProvider } from "@opencode/ui/context/worker-pool"
+import { withTimestampedFallback } from "@opencode/util/session-title-fallback"
import { createAsync, query, useParams } from "@solidjs/router"
import { createMemo, createSignal, ErrorBoundary, Match, Show, Switch, type JSX } from "solid-js"
import { Share } from "~/core/share"
import { readShareDocument } from "~/core/share-document"
-import { Logo, Mark } from "@opencode-ai/ui/logo"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Icon } from "@opencode-ai/ui/icon"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
-import { iife } from "@opencode-ai/core/util/iife"
-import { Binary } from "@opencode-ai/util/binary"
-import { NamedError } from "@opencode-ai/core/util/error"
+import { Logo, Mark } from "@opencode/ui/logo"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Icon } from "@opencode/ui/icon"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
+import { iife } from "@opencode/core/util/iife"
+import { Binary } from "@opencode/util/binary"
+import { NamedError } from "@opencode/core/util/error"
import { DateTime } from "luxon"
import { createStore } from "solid-js/store"
import NotFound from "../[...404]"
-import { Tabs } from "@opencode-ai/ui/tabs"
-import { MessageNav } from "@opencode-ai/session-ui/message-nav"
-import { FileSSR } from "@opencode-ai/session-ui/file-ssr"
+import { Tabs } from "@opencode/ui/tabs"
+import { MessageNav } from "@opencode/session-ui/message-nav"
+import { FileSSR } from "@opencode/session-ui/file-ssr"
import { clientOnly } from "@solidjs/start"
import { Meta, Title } from "@solidjs/meta"
import { Base64 } from "js-base64"
import { getRequestEvent } from "solid-js/web"
const ClientOnlyWorkerPoolProvider = clientOnly(() =>
- import("@opencode-ai/session-ui/pierre/worker").then((m) => ({
+ import("@opencode/session-ui/pierre/worker").then((m) => ({
default: (props: { children: JSX.Element }) => (
{props.children}
),
diff --git a/packages/enterprise/test/core/share.test.ts b/packages/enterprise/test/core/share.test.ts
index b81da94da45..ce9b2d3639d 100644
--- a/packages/enterprise/test/core/share.test.ts
+++ b/packages/enterprise/test/core/share.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test"
import { Share } from "../../src/core/share"
import { Storage } from "../../src/core/storage"
-import { Identifier } from "@opencode-ai/core/util/identifier"
+import { Identifier } from "@opencode/core/util/identifier"
describe.concurrent("core.share", () => {
test("should create a share", async () => {
diff --git a/packages/function/package.json b/packages/function/package.json
index 1cae807ebe4..687c379d417 100644
--- a/packages/function/package.json
+++ b/packages/function/package.json
@@ -1,5 +1,5 @@
{
- "name": "@opencode-ai/function",
+ "name": "@opencode/function",
"version": "1.18.15",
"$schema": "https://json.schemastore.org/package.json",
"private": true,
diff --git a/packages/http-recorder/README.md b/packages/http-recorder/README.md
index f5f5bb1c4c1..05cde80c963 100644
--- a/packages/http-recorder/README.md
+++ b/packages/http-recorder/README.md
@@ -1,4 +1,4 @@
-# @opencode-ai/http-recorder
+# @opencode/http-recorder
Record real Effect HTTP and WebSocket traffic once, then replay it from deterministic JSON cassettes.
@@ -10,7 +10,7 @@ Use it for provider integrations, retries, polling, multi-step flows, and any te
```sh
bun add effect@4.0.0-beta.107
-bun add -d @opencode-ai/http-recorder @effect/vitest@4.0.0-beta.107 vitest@^4
+bun add -d @opencode/http-recorder @effect/vitest@4.0.0-beta.107 vitest@^4
```
The package supports Node.js 22+ and Bun. It is not intended for browsers, workers, or Deno.
@@ -31,7 +31,7 @@ Effect `4.0.0-beta.107` currently contains unresolved symbols in its published d
import { assert, describe, it } from "@effect/vitest"
import { Effect, Schema } from "effect"
import { HttpClient, HttpClientRequest } from "effect/unstable/http"
-import { HttpRecorder } from "@opencode-ai/http-recorder"
+import { HttpRecorder } from "@opencode/http-recorder"
const User = Schema.Struct({
id: Schema.Number,
@@ -113,7 +113,7 @@ import { NodeSocket } from "@effect/platform-node"
import { it } from "@effect/vitest"
import { Deferred, Effect, Layer } from "effect"
import { Socket } from "effect/unstable/socket"
-import { HttpRecorder } from "@opencode-ai/http-recorder"
+import { HttpRecorder } from "@opencode/http-recorder"
const roundTrip = Effect.fn("Echo.roundTrip")(function* (url: string, message: string) {
const socket = yield* Socket.makeWebSocket(url, { closeCodeIsError: () => false })
diff --git a/packages/http-recorder/package.json b/packages/http-recorder/package.json
index aa5b49d5cdf..080665caa59 100644
--- a/packages/http-recorder/package.json
+++ b/packages/http-recorder/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"version": "1.18.15",
- "name": "@opencode-ai/http-recorder",
+ "name": "@opencode/http-recorder",
"description": "Record and replay Effect HTTP and WebSocket traffic with deterministic cassettes",
"type": "module",
"license": "MIT",
diff --git a/packages/http-recorder/script/build.ts b/packages/http-recorder/script/build.ts
index 9d9de65e625..065450ec235 100644
--- a/packages/http-recorder/script/build.ts
+++ b/packages/http-recorder/script/build.ts
@@ -12,7 +12,7 @@ const build = await Bun.build({
format: "esm",
packages: "external",
})
-if (!build.success) throw new AggregateError(build.logs, "Failed to build @opencode-ai/http-recorder")
+if (!build.success) throw new AggregateError(build.logs, "Failed to build @opencode/http-recorder")
await Promise.all(
(await readdir("dist", { recursive: true }))
diff --git a/packages/http-recorder/script/verify-package.ts b/packages/http-recorder/script/verify-package.ts
index 04f1f2bca5c..bc4beb54042 100644
--- a/packages/http-recorder/script/verify-package.ts
+++ b/packages/http-recorder/script/verify-package.ts
@@ -24,7 +24,7 @@ export const verifyPackage = async (archive: string) => {
)
await writeFile(
path.join(directory, "consumer.ts"),
- `import { HttpRecorder } from "@opencode-ai/http-recorder"
+ `import { HttpRecorder } from "@opencode/http-recorder"
import { NodeSocket } from "@effect/platform-node"
import { Layer } from "effect"
import { HttpClient } from "effect/unstable/http"
@@ -48,9 +48,9 @@ HttpRecorder.layerSocket("consumer/socket", { match: () => true })
)
await writeFile(
path.join(directory, "exports.mjs"),
- `import { HttpRecorder } from "@opencode-ai/http-recorder"
+ `import { HttpRecorder } from "@opencode/http-recorder"
-const root = Object.keys(await import("@opencode-ai/http-recorder")).sort()
+const root = Object.keys(await import("@opencode/http-recorder")).sort()
if (JSON.stringify(root) !== JSON.stringify(["HttpRecorder"])) {
throw new Error(\`Unexpected root exports: \${root}\`)
}
@@ -63,7 +63,7 @@ if (JSON.stringify(namespace) !== JSON.stringify(["hasCassetteSync", "layer", "l
)
await writeFile(
path.join(directory, "deep-import.mjs"),
- `import "@opencode-ai/http-recorder/internal"
+ `import "@opencode/http-recorder/internal"
`,
)
await writeFile(
diff --git a/packages/http-recorder/src/cassette/store.ts b/packages/http-recorder/src/cassette/store.ts
index e1fba898877..a1805850d27 100644
--- a/packages/http-recorder/src/cassette/store.ts
+++ b/packages/http-recorder/src/cassette/store.ts
@@ -47,7 +47,7 @@ export interface Interface {
readonly list: () => Effect.Effect>
}
-export class Service extends Context.Service()("@opencode-ai/http-recorder/Cassette") {}
+export class Service extends Context.Service()("@opencode/http-recorder/Cassette") {}
const cassettePath = (directory: string, name: string) => {
if (!name || path.isAbsolute(name) || path.win32.isAbsolute(name) || name.split(/[\\/]/).includes(".."))
diff --git a/packages/httpapi-codegen/README.md b/packages/httpapi-codegen/README.md
index 9f45ebc31f1..63e524562e6 100644
--- a/packages/httpapi-codegen/README.md
+++ b/packages/httpapi-codegen/README.md
@@ -1,4 +1,4 @@
-# @opencode-ai/httpapi-codegen
+# @opencode/httpapi-codegen
Build-time source generation for domain-oriented Promise and Effect APIs derived directly from `HttpApi` and Effect Schema contracts.
diff --git a/packages/httpapi-codegen/package.json b/packages/httpapi-codegen/package.json
index f2a5e4da79a..aa3bfc7c080 100644
--- a/packages/httpapi-codegen/package.json
+++ b/packages/httpapi-codegen/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/httpapi-codegen",
+ "name": "@opencode/httpapi-codegen",
"version": "0.0.0",
"private": true,
"type": "module",
diff --git a/packages/httpapi-codegen/src/index.ts b/packages/httpapi-codegen/src/index.ts
index 001c5ae2123..e686a8be4c6 100644
--- a/packages/httpapi-codegen/src/index.ts
+++ b/packages/httpapi-codegen/src/index.ts
@@ -437,7 +437,7 @@ function renderEffectShape(
]
: [`readonly ${JSON.stringify(group.identifier)}: ${groupShapeName(group)}`],
)
- return `// Generated by @opencode-ai/httpapi-codegen. Do not edit.
+ return `// Generated by @opencode/httpapi-codegen. Do not edit.
import type { Effect, Stream } from "effect"
${[...imports].join("\n")}
@@ -756,7 +756,7 @@ function renderImportedEffectFiles(
options.shapeModule === undefined
? ""
: `const preserveEffect = () => (effect: Effect.Effect) => effect\n${usesStream ? "const preserveStream = () => (stream: Stream.Stream) => stream\n" : ""}\n`
- const client = `// Generated by @opencode-ai/httpapi-codegen. Do not edit.\nimport { Effect${usesStream ? ", Stream" : ""}, Schema } from "effect"\nimport { Sse } from "effect/unstable/encoding"\nimport { HttpClientError } from "effect/unstable/http"\n${httpApiImport}${imports}\n${shapeImport}import { ClientError } from "./client-error.js"\n\n${projection?.source ?? ""}type RawClient = HttpApiClient.ForApi\n\nconst mapClientError = (error: E) => HttpClientError.isHttpClientError(error) || Schema.isSchemaError(error) || Sse.Retry.is(error) ? new ClientError({ cause: error }) : error\n\n${preserve}${adapters.join("\n\n")}\n\nconst adaptClient = (raw: RawClient) => ({ ${fields.join(", ")} })\n\nexport const make = (options?: { readonly baseUrl?: URL | string }) => HttpApiClient.make(${api}, options).pipe(Effect.map(adaptClient))\n`
+ const client = `// Generated by @opencode/httpapi-codegen. Do not edit.\nimport { Effect${usesStream ? ", Stream" : ""}, Schema } from "effect"\nimport { Sse } from "effect/unstable/encoding"\nimport { HttpClientError } from "effect/unstable/http"\n${httpApiImport}${imports}\n${shapeImport}import { ClientError } from "./client-error.js"\n\n${projection?.source ?? ""}type RawClient = HttpApiClient.ForApi\n\nconst mapClientError = (error: E) => HttpClientError.isHttpClientError(error) || Schema.isSchemaError(error) || Sse.Retry.is(error) ? new ClientError({ cause: error }) : error\n\n${preserve}${adapters.join("\n\n")}\n\nconst adaptClient = (raw: RawClient) => ({ ${fields.join(", ")} })\n\nexport const make = (options?: { readonly baseUrl?: URL | string }) => HttpApiClient.make(${api}, options).pipe(Effect.map(adaptClient))\n`
return [
{
path: "client-error.ts",
@@ -1861,7 +1861,7 @@ function renderGroup(group: Group) {
? `HttpApiClient.Client`
: `HttpApiClient.Client.Group`
const usesStream = group.endpoints.some((item) => item.operation.success === "stream")
- return `// Generated by @opencode-ai/httpapi-codegen. Do not edit.\nimport { Effect, Schema${usesStream ? ", Stream" : ""} } from "effect"\nimport { Sse } from "effect/unstable/encoding"\nimport { HttpClientError } from "effect/unstable/http"\nimport { HttpApiClient, HttpApiEndpoint, HttpApiGroup${usesHttpApiSchema ? ", HttpApiSchema" : ""} } from "effect/unstable/httpapi"\nimport { ClientError } from "./client-error.js"\n\n${declarations}\n\nexport const Group${name} = ${groupSource}\n\ntype RawGroup = ${rawGroup}\n\n${adapters.join("\n\n")}\n\nexport const adaptGroup${name} = (raw: RawGroup) => ({ ${methods} })\n`
+ return `// Generated by @opencode/httpapi-codegen. Do not edit.\nimport { Effect, Schema${usesStream ? ", Stream" : ""} } from "effect"\nimport { Sse } from "effect/unstable/encoding"\nimport { HttpClientError } from "effect/unstable/http"\nimport { HttpApiClient, HttpApiEndpoint, HttpApiGroup${usesHttpApiSchema ? ", HttpApiSchema" : ""} } from "effect/unstable/httpapi"\nimport { ClientError } from "./client-error.js"\n\n${declarations}\n\nexport const Group${name} = ${groupSource}\n\ntype RawGroup = ${rawGroup}\n\n${adapters.join("\n\n")}\n\nexport const adaptGroup${name} = (raw: RawGroup) => ({ ${methods} })\n`
}
function renderEffectRequestPart(
@@ -1946,5 +1946,5 @@ function renderClient(groups: ReadonlyArray) {
const raw = `{ ${group.endpoints.map((item) => `${JSON.stringify(item.endpoint.identifier)}: raw[${JSON.stringify(item.endpoint.identifier)}]`).join(", ")} }`
return [`...adaptGroup${groupTypeName(group)}(${raw})`]
})
- return `// Generated by @opencode-ai/httpapi-codegen. Do not edit.\nimport { Effect } from "effect"\nimport { HttpApi, HttpApiClient } from "effect/unstable/httpapi"\n${imports}\n\nconst Api = ${api}\nconst adaptClient = (raw: HttpApiClient.ForApi) => ({ ${fields.join(", ")} })\n\nexport const make = (options?: { readonly baseUrl?: URL | string }) =>\n HttpApiClient.make(Api, options).pipe(Effect.map(adaptClient))\n`
+ return `// Generated by @opencode/httpapi-codegen. Do not edit.\nimport { Effect } from "effect"\nimport { HttpApi, HttpApiClient } from "effect/unstable/httpapi"\n${imports}\n\nconst Api = ${api}\nconst adaptClient = (raw: HttpApiClient.ForApi) => ({ ${fields.join(", ")} })\n\nexport const make = (options?: { readonly baseUrl?: URL | string }) =>\n HttpApiClient.make(Api, options).pipe(Effect.map(adaptClient))\n`
}
diff --git a/packages/httpapi-codegen/test/generated/client.ts b/packages/httpapi-codegen/test/generated/client.ts
index 8379f4d9afe..0e412b20ef5 100644
--- a/packages/httpapi-codegen/test/generated/client.ts
+++ b/packages/httpapi-codegen/test/generated/client.ts
@@ -1,4 +1,4 @@
-// Generated by @opencode-ai/httpapi-codegen. Do not edit.
+// Generated by @opencode/httpapi-codegen. Do not edit.
import { Effect } from "effect"
import { HttpApi, HttpApiClient } from "effect/unstable/httpapi"
import { adaptGroupSession, GroupSession } from "./session"
diff --git a/packages/httpapi-codegen/test/generated/event.ts b/packages/httpapi-codegen/test/generated/event.ts
index d1799d2ad1b..1f6411dfb26 100644
--- a/packages/httpapi-codegen/test/generated/event.ts
+++ b/packages/httpapi-codegen/test/generated/event.ts
@@ -1,4 +1,4 @@
-// Generated by @opencode-ai/httpapi-codegen. Do not edit.
+// Generated by @opencode/httpapi-codegen. Do not edit.
import { Effect, Schema, Stream } from "effect"
import { Sse } from "effect/unstable/encoding"
import { HttpClientError } from "effect/unstable/http"
diff --git a/packages/httpapi-codegen/test/generated/session.ts b/packages/httpapi-codegen/test/generated/session.ts
index 24706d83fa1..23c35b74b0a 100644
--- a/packages/httpapi-codegen/test/generated/session.ts
+++ b/packages/httpapi-codegen/test/generated/session.ts
@@ -1,4 +1,4 @@
-// Generated by @opencode-ai/httpapi-codegen. Do not edit.
+// Generated by @opencode/httpapi-codegen. Do not edit.
import { Effect, Schema } from "effect"
import { Sse } from "effect/unstable/encoding"
import { HttpClientError } from "effect/unstable/http"
diff --git a/packages/httpapi-codegen/test/generated/system.ts b/packages/httpapi-codegen/test/generated/system.ts
index 4cd56d9c965..7b85ecd6011 100644
--- a/packages/httpapi-codegen/test/generated/system.ts
+++ b/packages/httpapi-codegen/test/generated/system.ts
@@ -1,4 +1,4 @@
-// Generated by @opencode-ai/httpapi-codegen. Do not edit.
+// Generated by @opencode/httpapi-codegen. Do not edit.
import { Effect, Schema } from "effect"
import { Sse } from "effect/unstable/encoding"
import { HttpClientError } from "effect/unstable/http"
diff --git a/packages/latex/package.json b/packages/latex/package.json
index f21ea473bba..c03db470846 100644
--- a/packages/latex/package.json
+++ b/packages/latex/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/latex",
+ "name": "@opencode/latex",
"version": "0.0.0",
"private": true,
"type": "module",
@@ -13,7 +13,7 @@
"typecheck": "tsgo --noEmit"
},
"dependencies": {
- "@opencode-ai/plugin": "workspace:*",
+ "@opencode/plugin": "workspace:*",
"@opentui/core": "catalog:",
"string-width": "catalog:"
},
diff --git a/packages/latex/src/plugin.ts b/packages/latex/src/plugin.ts
index 39a648c04be..2a427297b24 100644
--- a/packages/latex/src/plugin.ts
+++ b/packages/latex/src/plugin.ts
@@ -1,4 +1,4 @@
-import { Plugin } from "@opencode-ai/plugin/tui"
+import { Plugin } from "@opencode/plugin/tui"
import { createLatexCodeBlockRenderer } from "./markdown"
export default Plugin.define({
diff --git a/packages/merman/package.json b/packages/merman/package.json
index 66877df294e..32779908950 100644
--- a/packages/merman/package.json
+++ b/packages/merman/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/merman",
+ "name": "@opencode/merman",
"version": "0.0.0",
"private": true,
"type": "module",
@@ -15,7 +15,7 @@
"typecheck": "tsgo --noEmit"
},
"dependencies": {
- "@opencode-ai/plugin": "workspace:*",
+ "@opencode/plugin": "workspace:*",
"@opentui/core": "catalog:",
"entities": "7.0.1",
"string-width": "catalog:"
diff --git a/packages/merman/src/plugin.ts b/packages/merman/src/plugin.ts
index 6c4d55ec1f9..6d955de4725 100644
--- a/packages/merman/src/plugin.ts
+++ b/packages/merman/src/plugin.ts
@@ -1,4 +1,4 @@
-import { Plugin } from "@opencode-ai/plugin/tui"
+import { Plugin } from "@opencode/plugin/tui"
import { createMermaidCodeBlockRenderer } from "./markdown.js"
import { resolveOpenCodeDiagramPalette } from "./palette.js"
diff --git a/packages/plugin-browser/package.json b/packages/plugin-browser/package.json
index 268f09b9e88..ec449d63999 100644
--- a/packages/plugin-browser/package.json
+++ b/packages/plugin-browser/package.json
@@ -27,8 +27,8 @@
"test": "bun test"
},
"dependencies": {
- "@opencode-ai/plugin": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
+ "@opencode/plugin": "workspace:*",
+ "@opencode/schema": "workspace:*",
"effect": "catalog:"
},
"devDependencies": {
diff --git a/packages/plugin-browser/script/publish.ts b/packages/plugin-browser/script/publish.ts
index 41cbd570e4d..be0b257090f 100644
--- a/packages/plugin-browser/script/publish.ts
+++ b/packages/plugin-browser/script/publish.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { rm } from "node:fs/promises"
import { fileURLToPath } from "node:url"
diff --git a/packages/plugin-browser/src/connection.ts b/packages/plugin-browser/src/connection.ts
index 6b5b4f82e34..5842e223450 100644
--- a/packages/plugin-browser/src/connection.ts
+++ b/packages/plugin-browser/src/connection.ts
@@ -1,9 +1,9 @@
export * as BrowserConnection from "./connection.js"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
-import type { RpcRegistration } from "@opencode-ai/plugin/effect/rpc"
-import type { Session } from "@opencode-ai/schema/session"
-import { Tool } from "@opencode-ai/schema/tool"
+import type { Context } from "@opencode/plugin/effect/plugin"
+import type { RpcRegistration } from "@opencode/plugin/effect/rpc"
+import type { Session } from "@opencode/schema/session"
+import { Tool } from "@opencode/schema/tool"
import { Deferred, Effect, Schema, Stream } from "effect"
import { Browser } from "./rpc.js"
import { BrowserTunnel } from "./tunnel.js"
diff --git a/packages/plugin-browser/src/files.ts b/packages/plugin-browser/src/files.ts
index 01fe5e09aed..b8741c0c3d2 100644
--- a/packages/plugin-browser/src/files.ts
+++ b/packages/plugin-browser/src/files.ts
@@ -1,7 +1,7 @@
export * as BrowserFiles from "./files.js"
import { Browser } from "./rpc.js"
-import { Tool } from "@opencode-ai/schema/tool"
+import { Tool } from "@opencode/schema/tool"
import { Effect } from "effect"
// Files cross machines as bytes. Only this endpoint interprets its local paths.
diff --git a/packages/plugin-browser/src/index.ts b/packages/plugin-browser/src/index.ts
index 00900b9cc7d..3ef7c6b8779 100644
--- a/packages/plugin-browser/src/index.ts
+++ b/packages/plugin-browser/src/index.ts
@@ -1,4 +1,4 @@
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { Plugin } from "@opencode/plugin/effect"
import { Effect } from "effect"
import { BrowserConnection } from "./connection.js"
import { BrowserTools } from "./tools.js"
diff --git a/packages/plugin-browser/src/rpc.ts b/packages/plugin-browser/src/rpc.ts
index 22dbe2449f0..1e44a86350c 100644
--- a/packages/plugin-browser/src/rpc.ts
+++ b/packages/plugin-browser/src/rpc.ts
@@ -1,9 +1,9 @@
export * as Browser from "./rpc.js"
import { Schema } from "effect"
-import { Rpc } from "@opencode-ai/schema/rpc"
-import { Session } from "@opencode-ai/schema/session"
-import { optional } from "@opencode-ai/schema/schema"
+import { Rpc } from "@opencode/schema/rpc"
+import { Session } from "@opencode/schema/session"
+import { optional } from "@opencode/schema/schema"
export const MAX_FILE_BYTES = 5 * 1024 * 1024
export const TUNNEL_CHUNK_BYTES = 64 * 1024
diff --git a/packages/plugin-browser/src/tools.ts b/packages/plugin-browser/src/tools.ts
index e5cc986c7aa..3224876dd03 100644
--- a/packages/plugin-browser/src/tools.ts
+++ b/packages/plugin-browser/src/tools.ts
@@ -1,7 +1,7 @@
export * as BrowserTools from "./tools.js"
-import type { Context } from "@opencode-ai/plugin/effect/plugin"
-import { Tool } from "@opencode-ai/schema/tool"
+import type { Context } from "@opencode/plugin/effect/plugin"
+import { Tool } from "@opencode/schema/tool"
import { Effect, Encoding, Result, Schema } from "effect"
import type { BrowserConnection } from "./connection.js"
import { BrowserFiles } from "./files.js"
diff --git a/packages/plugin/AGENTS.md b/packages/plugin/AGENTS.md
index 0d98cecc888..65623af766d 100644
--- a/packages/plugin/AGENTS.md
+++ b/packages/plugin/AGENTS.md
@@ -1,6 +1,6 @@
# Plugin Package Guide
- The plugin package has two versions: Effect and Promise.
-- In the Effect version, every domain must extend the corresponding Effect API client interface from `@opencode-ai/client/effect/api`.
+- In the Effect version, every domain must extend the corresponding Effect API client interface from `@opencode/client/effect/api`.
- Do not redefine functions that already exist on the Effect API client interface.
- Plugin domains add only the additional functions that make sense in the plugin context.
diff --git a/packages/plugin/package.json b/packages/plugin/package.json
index c05b94fdf1d..f80ad6e81ec 100644
--- a/packages/plugin/package.json
+++ b/packages/plugin/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/plugin",
+ "name": "@opencode/plugin",
"version": "1.18.15",
"type": "module",
"license": "MIT",
@@ -28,23 +28,23 @@
],
"dependencies": {
"@ai-sdk/provider": "3.0.8",
- "@opencode-ai/ai": "workspace:*",
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/protocol": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/ai": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/protocol": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/util": "workspace:*",
"@standard-schema/spec": "catalog:",
"effect": "catalog:",
"zod": "catalog:"
},
"peerDependencies": {
- "@opencode-ai/theme": "workspace:*",
+ "@opencode/theme": "workspace:*",
"@opentui/core": ">=0.5.10",
"@opentui/solid": ">=0.5.10",
"solid-js": ">=1.9.0"
},
"peerDependenciesMeta": {
- "@opencode-ai/theme": {
+ "@opencode/theme": {
"optional": true
},
"@opentui/core": {
@@ -58,7 +58,7 @@
}
},
"devDependencies": {
- "@opencode-ai/theme": "workspace:*",
+ "@opencode/theme": "workspace:*",
"@opentui/core": "catalog:",
"@opentui/solid": "catalog:",
"@tsconfig/bun": "catalog:",
diff --git a/packages/plugin/script/publish.ts b/packages/plugin/script/publish.ts
index 73b3799b8ae..9613f179c77 100755
--- a/packages/plugin/script/publish.ts
+++ b/packages/plugin/script/publish.ts
@@ -1,5 +1,5 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { fileURLToPath } from "url"
diff --git a/packages/plugin/src/README.md b/packages/plugin/src/README.md
index df75ce7866c..284b2cb4347 100644
--- a/packages/plugin/src/README.md
+++ b/packages/plugin/src/README.md
@@ -1,6 +1,6 @@
# OpenCode V2 Promise Plugin API
-The Promise plugin API at `@opencode-ai/plugin` is the async/await equivalent of `@opencode-ai/plugin/effect`. It grants plugins the same two in-process capabilities:
+The Promise plugin API at `@opencode/plugin` is the async/await equivalent of `@opencode/plugin/effect`. It grants plugins the same two in-process capabilities:
- `hook` installs behavior at an OpenCode extension point.
- `reload` reruns every transform hook for a stateful domain.
@@ -12,7 +12,7 @@ editor callbacks remain synchronous.
## Defining A Plugin
```ts
-import { Plugin } from "@opencode-ai/plugin"
+import { Plugin } from "@opencode/plugin"
export default Plugin.define({
id: "example",
diff --git a/packages/plugin/src/effect/PLAN.md b/packages/plugin/src/effect/PLAN.md
index bd9dfc2104d..30c27a84dad 100644
--- a/packages/plugin/src/effect/PLAN.md
+++ b/packages/plugin/src/effect/PLAN.md
@@ -7,8 +7,8 @@ This document describes the agreed target design for the V2 plugin system. It is
## Goals
- Internal and external plugins use the same public plugin API.
-- Effect plugins import `@opencode-ai/plugin/effect`, not `@opencode-ai/core`.
-- Public domain values use generated `@opencode-ai/sdk` types.
+- Effect plugins import `@opencode/plugin/effect`, not `@opencode/core`.
+- Public domain values use generated `@opencode/sdk` types.
- Core may retain branded IDs, decoded Effect schemas, and internal service types.
- Plugins may register replayable domain transforms and runtime hooks imperatively during setup.
- Registrations are scoped, independently disposable, ordered, and removable.
@@ -424,7 +424,7 @@ The Effect implementation remains the canonical runtime. Promise and embedding w
### 1. Define Public Contracts
-- Define `PluginHost` domain capabilities in `@opencode-ai/plugin/effect`.
+- Define `PluginHost` domain capabilities in `@opencode/plugin/effect`.
- Define SDK-typed editors for agent, catalog, command, integration, reference, skill, and tool.
- Define typed runtime hook maps per domain.
- Define `Registration`.
diff --git a/packages/plugin/src/effect/README.md b/packages/plugin/src/effect/README.md
index 33785038a92..4a678a03651 100644
--- a/packages/plugin/src/effect/README.md
+++ b/packages/plugin/src/effect/README.md
@@ -8,7 +8,7 @@ The Effect plugin API grants plugins two in-process capabilities:
## Defining A Plugin
```ts
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { Plugin } from "@opencode/plugin/effect"
import { Effect } from "effect"
export default Plugin.define({
diff --git a/packages/plugin/src/effect/agent.ts b/packages/plugin/src/effect/agent.ts
index 6233434691b..3719bf17632 100644
--- a/packages/plugin/src/effect/agent.ts
+++ b/packages/plugin/src/effect/agent.ts
@@ -1,5 +1,5 @@
-import type { AgentApi } from "@opencode-ai/client/effect/api"
-import type { Agent } from "@opencode-ai/schema/agent"
+import type { AgentApi } from "@opencode/client/effect/api"
+import type { Agent } from "@opencode/schema/agent"
import type { Effect, Types } from "effect"
import type { Transform } from "./registration.js"
diff --git a/packages/plugin/src/effect/aisdk.ts b/packages/plugin/src/effect/aisdk.ts
index 37d68179cd2..9516b306259 100644
--- a/packages/plugin/src/effect/aisdk.ts
+++ b/packages/plugin/src/effect/aisdk.ts
@@ -1,5 +1,5 @@
import type { LanguageModelV3 } from "@ai-sdk/provider"
-import type { Model } from "@opencode-ai/schema/model"
+import type { Model } from "@opencode/schema/model"
import type { ModelHooks } from "./registration.js"
export interface AISDKHooks {
diff --git a/packages/plugin/src/effect/catalog.ts b/packages/plugin/src/effect/catalog.ts
index 27e5e8163de..20f89e38091 100644
--- a/packages/plugin/src/effect/catalog.ts
+++ b/packages/plugin/src/effect/catalog.ts
@@ -1,6 +1,6 @@
-import type { CatalogApi } from "@opencode-ai/client/effect/api"
-import { Model } from "@opencode-ai/schema/model"
-import { Provider } from "@opencode-ai/schema/provider"
+import type { CatalogApi } from "@opencode/client/effect/api"
+import { Model } from "@opencode/schema/model"
+import { Provider } from "@opencode/schema/provider"
import type { Effect, Types } from "effect"
import type { Transform } from "./registration.js"
diff --git a/packages/plugin/src/effect/command.ts b/packages/plugin/src/effect/command.ts
index 22bb3a86926..c8b10bb26e1 100644
--- a/packages/plugin/src/effect/command.ts
+++ b/packages/plugin/src/effect/command.ts
@@ -1,7 +1,7 @@
-import type { CommandApi } from "@opencode-ai/client/effect/api"
-import type { PromptInput } from "@opencode-ai/schema/prompt-input"
-import type { Session } from "@opencode-ai/schema/session"
-import type { SessionInbox } from "@opencode-ai/schema/session-inbox"
+import type { CommandApi } from "@opencode/client/effect/api"
+import type { PromptInput } from "@opencode/schema/prompt-input"
+import type { Session } from "@opencode/schema/session"
+import type { SessionInbox } from "@opencode/schema/session-inbox"
import type { Effect } from "effect"
import type { Transform } from "./registration.js"
diff --git a/packages/plugin/src/effect/event.ts b/packages/plugin/src/effect/event.ts
index 283d4109f05..d4ab10c0f4b 100644
--- a/packages/plugin/src/effect/event.ts
+++ b/packages/plugin/src/effect/event.ts
@@ -1,3 +1,3 @@
-import type { EventApi } from "@opencode-ai/client/effect/api"
+import type { EventApi } from "@opencode/client/effect/api"
export interface EventDomain extends Pick, "subscribe"> {}
diff --git a/packages/plugin/src/effect/index.ts b/packages/plugin/src/effect/index.ts
index d0bf50fab14..9f4047f075d 100644
--- a/packages/plugin/src/effect/index.ts
+++ b/packages/plugin/src/effect/index.ts
@@ -1,19 +1,19 @@
export * as Plugin from "./plugin.js"
export type { StorageEntry, StorageScanOptions, StorageScanResult } from "../storage.js"
-export { Agent } from "@opencode-ai/schema/agent"
-export { Command } from "@opencode-ai/schema/command"
-export { Connection } from "@opencode-ai/schema/connection"
-export { Credential } from "@opencode-ai/schema/credential"
-export { Integration } from "@opencode-ai/schema/integration"
-export { Location } from "@opencode-ai/schema/location"
-export { Mcp } from "@opencode-ai/schema/mcp"
-export { Model } from "@opencode-ai/schema/model"
-export { PersistentPty } from "@opencode-ai/schema/persistent-pty"
-export { Provider } from "@opencode-ai/schema/provider"
-export { Reference } from "@opencode-ai/schema/reference"
-export { Rpc } from "@opencode-ai/schema/rpc"
-export { Skill } from "@opencode-ai/schema/skill"
-export { Vcs } from "@opencode-ai/schema/vcs"
-export { WebSearch } from "@opencode-ai/schema/websearch"
-export { Worktree } from "@opencode-ai/schema/worktree"
+export { Agent } from "@opencode/schema/agent"
+export { Command } from "@opencode/schema/command"
+export { Connection } from "@opencode/schema/connection"
+export { Credential } from "@opencode/schema/credential"
+export { Integration } from "@opencode/schema/integration"
+export { Location } from "@opencode/schema/location"
+export { Mcp } from "@opencode/schema/mcp"
+export { Model } from "@opencode/schema/model"
+export { PersistentPty } from "@opencode/schema/persistent-pty"
+export { Provider } from "@opencode/schema/provider"
+export { Reference } from "@opencode/schema/reference"
+export { Rpc } from "@opencode/schema/rpc"
+export { Skill } from "@opencode/schema/skill"
+export { Vcs } from "@opencode/schema/vcs"
+export { WebSearch } from "@opencode/schema/websearch"
+export { Worktree } from "@opencode/schema/worktree"
diff --git a/packages/plugin/src/effect/integration.ts b/packages/plugin/src/effect/integration.ts
index 5c42d4068a6..1848d3a6e40 100644
--- a/packages/plugin/src/effect/integration.ts
+++ b/packages/plugin/src/effect/integration.ts
@@ -1,7 +1,7 @@
-import type { ConnectionInfo } from "@opencode-ai/client"
-import type { IntegrationApi } from "@opencode-ai/client/effect/api"
-import { Credential } from "@opencode-ai/schema/credential"
-import { Form } from "@opencode-ai/schema/form"
+import type { ConnectionInfo } from "@opencode/client"
+import type { IntegrationApi } from "@opencode/client/effect/api"
+import { Credential } from "@opencode/schema/credential"
+import { Form } from "@opencode/schema/form"
import type { Effect, Scope } from "effect"
import type { Transform } from "./registration.js"
diff --git a/packages/plugin/src/effect/mcp.ts b/packages/plugin/src/effect/mcp.ts
index e614991139d..9e920682e61 100644
--- a/packages/plugin/src/effect/mcp.ts
+++ b/packages/plugin/src/effect/mcp.ts
@@ -1,5 +1,5 @@
-import type { McpApi } from "@opencode-ai/client/effect/api"
-import type { Mcp } from "@opencode-ai/schema/mcp"
+import type { McpApi } from "@opencode/client/effect/api"
+import type { Mcp } from "@opencode/schema/mcp"
import type { Effect, Types } from "effect"
import type { Transform } from "./registration.js"
diff --git a/packages/plugin/src/effect/permission.ts b/packages/plugin/src/effect/permission.ts
index 01f72484c46..e97fbf3ebe5 100644
--- a/packages/plugin/src/effect/permission.ts
+++ b/packages/plugin/src/effect/permission.ts
@@ -1,7 +1,7 @@
-import type { PermissionApi } from "@opencode-ai/client/effect/api"
-import type { Agent } from "@opencode-ai/schema/agent"
-import type { Permission } from "@opencode-ai/schema/permission"
-import type { Session } from "@opencode-ai/schema/session"
+import type { PermissionApi } from "@opencode/client/effect/api"
+import type { Agent } from "@opencode/schema/agent"
+import type { Permission } from "@opencode/schema/permission"
+import type { Session } from "@opencode/schema/session"
import type { Hooks } from "./registration.js"
export interface PermissionEvaluation {
diff --git a/packages/plugin/src/effect/plugin.ts b/packages/plugin/src/effect/plugin.ts
index 4500ac13f36..5f4ce665399 100644
--- a/packages/plugin/src/effect/plugin.ts
+++ b/packages/plugin/src/effect/plugin.ts
@@ -1,5 +1,5 @@
-import type { ExperimentalApi, GenerateApi, PluginApi } from "@opencode-ai/client/effect/api"
-import type { Location } from "@opencode-ai/schema/location"
+import type { ExperimentalApi, GenerateApi, PluginApi } from "@opencode/client/effect/api"
+import type { Location } from "@opencode/schema/location"
import type { Effect, Scope } from "effect"
import type { PluginOptions } from "../options.js"
import type { App } from "../app.js"
diff --git a/packages/plugin/src/effect/reference.ts b/packages/plugin/src/effect/reference.ts
index bdb84f02a34..f714f8ac41b 100644
--- a/packages/plugin/src/effect/reference.ts
+++ b/packages/plugin/src/effect/reference.ts
@@ -1,5 +1,5 @@
-import type { ReferenceGitSource, ReferenceLocalSource } from "@opencode-ai/client"
-import type { ReferenceApi } from "@opencode-ai/client/effect/api"
+import type { ReferenceGitSource, ReferenceLocalSource } from "@opencode/client"
+import type { ReferenceApi } from "@opencode/client/effect/api"
import type { Effect } from "effect"
import type { Transform } from "./registration.js"
diff --git a/packages/plugin/src/effect/rpc.ts b/packages/plugin/src/effect/rpc.ts
index 5378d1474cc..f4109c3e85d 100644
--- a/packages/plugin/src/effect/rpc.ts
+++ b/packages/plugin/src/effect/rpc.ts
@@ -1,6 +1,6 @@
-import type { RpcApi } from "@opencode-ai/client/effect/api"
-export type { RpcClient } from "@opencode-ai/client/effect/api"
-import type { Rpc } from "@opencode-ai/schema/rpc"
+import type { RpcApi } from "@opencode/client/effect/api"
+export type { RpcClient } from "@opencode/client/effect/api"
+import type { Rpc } from "@opencode/schema/rpc"
import type { Effect, Scope } from "effect"
import type { Registration } from "./registration.js"
diff --git a/packages/plugin/src/effect/session.ts b/packages/plugin/src/effect/session.ts
index 19ee5a9f2b3..89cb42bc7c4 100644
--- a/packages/plugin/src/effect/session.ts
+++ b/packages/plugin/src/effect/session.ts
@@ -1,12 +1,12 @@
-import type { SessionApi } from "@opencode-ai/client/effect/api"
-import type { GenerationOptionsFields, Message, SystemPart } from "@opencode-ai/ai"
-import type { Agent } from "@opencode-ai/schema/agent"
-import type { Model } from "@opencode-ai/schema/model"
-import type { PromptInput } from "@opencode-ai/schema/prompt-input"
-import type { Session } from "@opencode-ai/schema/session"
-import type { SessionInbox } from "@opencode-ai/schema/session-inbox"
-import type { SessionError } from "@opencode-ai/schema/session-error"
-import type { SessionMessage } from "@opencode-ai/schema/session-message"
+import type { SessionApi } from "@opencode/client/effect/api"
+import type { GenerationOptionsFields, Message, SystemPart } from "@opencode/ai"
+import type { Agent } from "@opencode/schema/agent"
+import type { Model } from "@opencode/schema/model"
+import type { PromptInput } from "@opencode/schema/prompt-input"
+import type { Session } from "@opencode/schema/session"
+import type { SessionInbox } from "@opencode/schema/session-inbox"
+import type { SessionError } from "@opencode/schema/session-error"
+import type { SessionMessage } from "@opencode/schema/session-message"
import type { JsonSchema, Types } from "effect"
import type { ModelHooks } from "./registration.js"
diff --git a/packages/plugin/src/effect/skill.ts b/packages/plugin/src/effect/skill.ts
index 2008171812e..b86587dc261 100644
--- a/packages/plugin/src/effect/skill.ts
+++ b/packages/plugin/src/effect/skill.ts
@@ -1,5 +1,5 @@
-import type { SkillApi } from "@opencode-ai/client/effect/api"
-import { Skill } from "@opencode-ai/schema/skill"
+import type { SkillApi } from "@opencode/client/effect/api"
+import { Skill } from "@opencode/schema/skill"
import type { Effect, Types } from "effect"
import type { Transform } from "./registration.js"
diff --git a/packages/plugin/src/effect/tool.ts b/packages/plugin/src/effect/tool.ts
index 56b8e30015a..1fd90a5113e 100644
--- a/packages/plugin/src/effect/tool.ts
+++ b/packages/plugin/src/effect/tool.ts
@@ -1,7 +1,7 @@
-import { Tool } from "@opencode-ai/schema/tool"
-import type { Agent } from "@opencode-ai/schema/agent"
-import type { Session } from "@opencode-ai/schema/session"
-import type { SessionMessage } from "@opencode-ai/schema/session-message"
+import { Tool } from "@opencode/schema/tool"
+import type { Agent } from "@opencode/schema/agent"
+import type { Session } from "@opencode/schema/session"
+import type { SessionMessage } from "@opencode/schema/session-message"
import type { Effect, Types } from "effect"
import type { Hooks, Transform } from "./registration.js"
diff --git a/packages/plugin/src/effect/vcs.ts b/packages/plugin/src/effect/vcs.ts
index 20386cce8f6..36a2e2c5c93 100644
--- a/packages/plugin/src/effect/vcs.ts
+++ b/packages/plugin/src/effect/vcs.ts
@@ -1,6 +1,6 @@
-import type { VcsApi } from "@opencode-ai/client/effect/api"
-import type { FileDiff } from "@opencode-ai/schema/file-diff"
-import type { Vcs } from "@opencode-ai/schema/vcs"
+import type { VcsApi } from "@opencode/client/effect/api"
+import type { FileDiff } from "@opencode/schema/file-diff"
+import type { Vcs } from "@opencode/schema/vcs"
import type { Effect } from "effect"
import type { Transform } from "./registration.js"
diff --git a/packages/plugin/src/effect/websearch.ts b/packages/plugin/src/effect/websearch.ts
index 9e3acbc8778..66caffd8115 100644
--- a/packages/plugin/src/effect/websearch.ts
+++ b/packages/plugin/src/effect/websearch.ts
@@ -1,5 +1,5 @@
-import type { WebSearch } from "@opencode-ai/schema/websearch"
-import type { WebSearchApi } from "@opencode-ai/client/effect/api"
+import type { WebSearch } from "@opencode/schema/websearch"
+import type { WebSearchApi } from "@opencode/client/effect/api"
import type { Effect } from "effect"
import type { Transform } from "./registration.js"
diff --git a/packages/plugin/src/effect/worktree.ts b/packages/plugin/src/effect/worktree.ts
index 4b3dd8e358b..33cbe48c093 100644
--- a/packages/plugin/src/effect/worktree.ts
+++ b/packages/plugin/src/effect/worktree.ts
@@ -1,4 +1,4 @@
-import type { WorktreeApi } from "@opencode-ai/client/effect/api"
+import type { WorktreeApi } from "@opencode/client/effect/api"
import type { Effect } from "effect"
import type { WorktreeCreateInput, WorktreeEntry, WorktreeRemoveInput, WorktreeResult } from "../worktree.js"
import type { Transform } from "./registration.js"
diff --git a/packages/plugin/src/host.ts b/packages/plugin/src/host.ts
index 259ceddab0d..80a2b03972c 100644
--- a/packages/plugin/src/host.ts
+++ b/packages/plugin/src/host.ts
@@ -1,7 +1,7 @@
export * as Host from "./host.js"
import path from "node:path"
-import { importModule, resolveModule } from "@opencode-ai/util/runtime-import"
+import { importModule, resolveModule } from "@opencode/util/runtime-import"
export interface Target {
readonly directory: string
diff --git a/packages/plugin/src/promise/adapter.ts b/packages/plugin/src/promise/adapter.ts
index ec5b6dc294d..8e09b61e1e8 100644
--- a/packages/plugin/src/promise/adapter.ts
+++ b/packages/plugin/src/promise/adapter.ts
@@ -1,6 +1,6 @@
-import { Tool } from "@opencode-ai/schema/tool"
-import type { Rpc } from "@opencode-ai/schema/rpc"
-import type { RpcCallOptions, RpcEventPayload } from "@opencode-ai/client/promise/api"
+import { Tool } from "@opencode/schema/tool"
+import type { Rpc } from "@opencode/schema/rpc"
+import type { RpcCallOptions, RpcEventPayload } from "@opencode/client/promise/api"
import { Effect, Schema, SchemaAST, Stream } from "effect"
import type { Scope } from "effect"
import { HttpApiEndpoint, HttpApiSchema } from "effect/unstable/httpapi"
@@ -217,7 +217,7 @@ export function fromPromise(plugin: Plugin) {
effect: (host) =>
Effect.gen(function* () {
const [{ ClientApi }, { OpenCodeEvent }] = yield* Effect.promise(() =>
- Promise.all([import("@opencode-ai/protocol/client"), import("@opencode-ai/protocol/groups/event")]),
+ Promise.all([import("@opencode/protocol/client"), import("@opencode/protocol/groups/event")]),
)
const AgentEndpoints = ClientApi.groups["server.agent"].endpoints
const CommandEndpoints = ClientApi.groups["server.command"].endpoints
diff --git a/packages/plugin/src/promise/agent.ts b/packages/plugin/src/promise/agent.ts
index 228a6c7aa68..b6b8e3bfd9d 100644
--- a/packages/plugin/src/promise/agent.ts
+++ b/packages/plugin/src/promise/agent.ts
@@ -1,5 +1,5 @@
-import type { AgentApi } from "@opencode-ai/client/promise/api"
-import type { Agent } from "@opencode-ai/schema/agent"
+import type { AgentApi } from "@opencode/client/promise/api"
+import type { Agent } from "@opencode/schema/agent"
import type { Transform } from "./registration.js"
import type { DeepMutable } from "./types.js"
diff --git a/packages/plugin/src/promise/aisdk.ts b/packages/plugin/src/promise/aisdk.ts
index 37d68179cd2..9516b306259 100644
--- a/packages/plugin/src/promise/aisdk.ts
+++ b/packages/plugin/src/promise/aisdk.ts
@@ -1,5 +1,5 @@
import type { LanguageModelV3 } from "@ai-sdk/provider"
-import type { Model } from "@opencode-ai/schema/model"
+import type { Model } from "@opencode/schema/model"
import type { ModelHooks } from "./registration.js"
export interface AISDKHooks {
diff --git a/packages/plugin/src/promise/catalog.ts b/packages/plugin/src/promise/catalog.ts
index 018ad992459..48bee160d0f 100644
--- a/packages/plugin/src/promise/catalog.ts
+++ b/packages/plugin/src/promise/catalog.ts
@@ -1,6 +1,6 @@
-import type { CatalogApi } from "@opencode-ai/client/promise/api"
-import type { Model } from "@opencode-ai/schema/model"
-import type { Provider } from "@opencode-ai/schema/provider"
+import type { CatalogApi } from "@opencode/client/promise/api"
+import type { Model } from "@opencode/schema/model"
+import type { Provider } from "@opencode/schema/provider"
import type { Transform } from "./registration.js"
import type { DeepMutable } from "./types.js"
diff --git a/packages/plugin/src/promise/command.ts b/packages/plugin/src/promise/command.ts
index c51b0549d81..5a6231f89a4 100644
--- a/packages/plugin/src/promise/command.ts
+++ b/packages/plugin/src/promise/command.ts
@@ -1,7 +1,7 @@
-import type { CommandApi } from "@opencode-ai/client/promise/api"
-import type { PromptInput } from "@opencode-ai/schema/prompt-input"
-import type { Session } from "@opencode-ai/schema/session"
-import type { SessionInbox } from "@opencode-ai/schema/session-inbox"
+import type { CommandApi } from "@opencode/client/promise/api"
+import type { PromptInput } from "@opencode/schema/prompt-input"
+import type { Session } from "@opencode/schema/session"
+import type { SessionInbox } from "@opencode/schema/session-inbox"
import type { Transform } from "./registration.js"
export interface CommandInvocation {
diff --git a/packages/plugin/src/promise/event.ts b/packages/plugin/src/promise/event.ts
index 344f5d6f30a..74ac6e5fde2 100644
--- a/packages/plugin/src/promise/event.ts
+++ b/packages/plugin/src/promise/event.ts
@@ -1,3 +1,3 @@
-import type { EventApi } from "@opencode-ai/client/promise/api"
+import type { EventApi } from "@opencode/client/promise/api"
export interface EventDomain extends Pick {}
diff --git a/packages/plugin/src/promise/index.ts b/packages/plugin/src/promise/index.ts
index b2e06aaf772..1a8b1bb1e4d 100644
--- a/packages/plugin/src/promise/index.ts
+++ b/packages/plugin/src/promise/index.ts
@@ -2,19 +2,19 @@ export type { PluginOptions } from "../options.js"
export type { StorageEntry, StorageScanOptions, StorageScanResult } from "../storage.js"
export * as Plugin from "./plugin.js"
-export { Agent } from "@opencode-ai/schema/agent"
-export { Command } from "@opencode-ai/schema/command"
-export { Connection } from "@opencode-ai/schema/connection"
-export { Credential } from "@opencode-ai/schema/credential"
-export { Integration } from "@opencode-ai/schema/integration"
-export { Location } from "@opencode-ai/schema/location"
-export { Mcp } from "@opencode-ai/schema/mcp"
-export { Model } from "@opencode-ai/schema/model"
-export { PersistentPty } from "@opencode-ai/schema/persistent-pty"
-export { Provider } from "@opencode-ai/schema/provider"
-export { Reference } from "@opencode-ai/schema/reference"
-export { Rpc } from "@opencode-ai/schema/rpc"
-export { Skill } from "@opencode-ai/schema/skill"
-export { Vcs } from "@opencode-ai/schema/vcs"
-export { WebSearch } from "@opencode-ai/schema/websearch"
-export { Worktree } from "@opencode-ai/schema/worktree"
+export { Agent } from "@opencode/schema/agent"
+export { Command } from "@opencode/schema/command"
+export { Connection } from "@opencode/schema/connection"
+export { Credential } from "@opencode/schema/credential"
+export { Integration } from "@opencode/schema/integration"
+export { Location } from "@opencode/schema/location"
+export { Mcp } from "@opencode/schema/mcp"
+export { Model } from "@opencode/schema/model"
+export { PersistentPty } from "@opencode/schema/persistent-pty"
+export { Provider } from "@opencode/schema/provider"
+export { Reference } from "@opencode/schema/reference"
+export { Rpc } from "@opencode/schema/rpc"
+export { Skill } from "@opencode/schema/skill"
+export { Vcs } from "@opencode/schema/vcs"
+export { WebSearch } from "@opencode/schema/websearch"
+export { Worktree } from "@opencode/schema/worktree"
diff --git a/packages/plugin/src/promise/integration.ts b/packages/plugin/src/promise/integration.ts
index 84f59501188..c8e488f6cd4 100644
--- a/packages/plugin/src/promise/integration.ts
+++ b/packages/plugin/src/promise/integration.ts
@@ -1,7 +1,7 @@
-import type { ConnectionInfo } from "@opencode-ai/client"
-import type { IntegrationApi } from "@opencode-ai/client/promise/api"
-import { Credential } from "@opencode-ai/schema/credential"
-import { Form } from "@opencode-ai/schema/form"
+import type { ConnectionInfo } from "@opencode/client"
+import type { IntegrationApi } from "@opencode/client/promise/api"
+import { Credential } from "@opencode/schema/credential"
+import { Form } from "@opencode/schema/form"
import type { Transform } from "./registration.js"
type IntegrationRef = { id: string; name: string }
diff --git a/packages/plugin/src/promise/mcp.ts b/packages/plugin/src/promise/mcp.ts
index e2a0f488ed9..bffe93a89f8 100644
--- a/packages/plugin/src/promise/mcp.ts
+++ b/packages/plugin/src/promise/mcp.ts
@@ -1,5 +1,5 @@
-import type { McpApi } from "@opencode-ai/client/promise/api"
-import type { Mcp } from "@opencode-ai/schema/mcp"
+import type { McpApi } from "@opencode/client/promise/api"
+import type { Mcp } from "@opencode/schema/mcp"
import type { Transform } from "./registration.js"
import type { DeepMutable } from "./types.js"
diff --git a/packages/plugin/src/promise/permission.ts b/packages/plugin/src/promise/permission.ts
index 8dcfdb1e779..1729cac29b5 100644
--- a/packages/plugin/src/promise/permission.ts
+++ b/packages/plugin/src/promise/permission.ts
@@ -1,7 +1,7 @@
-import type { PermissionApi } from "@opencode-ai/client/promise/api"
-import type { Agent } from "@opencode-ai/schema/agent"
-import type { Permission } from "@opencode-ai/schema/permission"
-import type { Session } from "@opencode-ai/schema/session"
+import type { PermissionApi } from "@opencode/client/promise/api"
+import type { Agent } from "@opencode/schema/agent"
+import type { Permission } from "@opencode/schema/permission"
+import type { Session } from "@opencode/schema/session"
import type { Hooks } from "./registration.js"
export interface PermissionEvaluation {
diff --git a/packages/plugin/src/promise/plugin.ts b/packages/plugin/src/promise/plugin.ts
index 423c6779e92..ec4d7331709 100644
--- a/packages/plugin/src/promise/plugin.ts
+++ b/packages/plugin/src/promise/plugin.ts
@@ -1,6 +1,6 @@
-import type { OpenCodeClient } from "@opencode-ai/client"
-import type { GenerateApi, PluginApi } from "@opencode-ai/client/promise/api"
-import type { Location } from "@opencode-ai/schema/location"
+import type { OpenCodeClient } from "@opencode/client"
+import type { GenerateApi, PluginApi } from "@opencode/client/promise/api"
+import type { Location } from "@opencode/schema/location"
import type { PluginOptions } from "../options.js"
import type { App } from "../app.js"
import type { AgentDomain } from "./agent.js"
diff --git a/packages/plugin/src/promise/reference.ts b/packages/plugin/src/promise/reference.ts
index fc07c308903..77d6bb07a38 100644
--- a/packages/plugin/src/promise/reference.ts
+++ b/packages/plugin/src/promise/reference.ts
@@ -1,5 +1,5 @@
-import type { ReferenceApi } from "@opencode-ai/client/promise/api"
-import type { ReferenceGitSource, ReferenceLocalSource } from "@opencode-ai/client"
+import type { ReferenceApi } from "@opencode/client/promise/api"
+import type { ReferenceGitSource, ReferenceLocalSource } from "@opencode/client"
import type { Transform } from "./registration.js"
export interface ReferenceEditor {
diff --git a/packages/plugin/src/promise/rpc.ts b/packages/plugin/src/promise/rpc.ts
index 12075742953..45d3f984ad0 100644
--- a/packages/plugin/src/promise/rpc.ts
+++ b/packages/plugin/src/promise/rpc.ts
@@ -1,8 +1,8 @@
-import type { RpcApi, RpcCallOptions } from "@opencode-ai/client/promise/api"
-import type { Rpc } from "@opencode-ai/schema/rpc"
+import type { RpcApi, RpcCallOptions } from "@opencode/client/promise/api"
+import type { Rpc } from "@opencode/schema/rpc"
import type { Registration } from "./registration.js"
-export type { RpcEventPayload } from "@opencode-ai/client/promise/api"
+export type { RpcEventPayload } from "@opencode/client/promise/api"
export interface RpcCallContext {
readonly signal: AbortSignal
diff --git a/packages/plugin/src/promise/session.ts b/packages/plugin/src/promise/session.ts
index cf0f6832504..2a89c007d58 100644
--- a/packages/plugin/src/promise/session.ts
+++ b/packages/plugin/src/promise/session.ts
@@ -1,12 +1,12 @@
-import type { SessionApi } from "@opencode-ai/client/promise/api"
-import type { GenerationOptionsFields, Message, SystemPart } from "@opencode-ai/ai"
-import type { Agent } from "@opencode-ai/schema/agent"
-import type { Model } from "@opencode-ai/schema/model"
-import type { PromptInput } from "@opencode-ai/schema/prompt-input"
-import type { Session } from "@opencode-ai/schema/session"
-import type { SessionInbox } from "@opencode-ai/schema/session-inbox"
-import type { SessionError } from "@opencode-ai/schema/session-error"
-import type { SessionMessage } from "@opencode-ai/schema/session-message"
+import type { SessionApi } from "@opencode/client/promise/api"
+import type { GenerationOptionsFields, Message, SystemPart } from "@opencode/ai"
+import type { Agent } from "@opencode/schema/agent"
+import type { Model } from "@opencode/schema/model"
+import type { PromptInput } from "@opencode/schema/prompt-input"
+import type { Session } from "@opencode/schema/session"
+import type { SessionInbox } from "@opencode/schema/session-inbox"
+import type { SessionError } from "@opencode/schema/session-error"
+import type { SessionMessage } from "@opencode/schema/session-message"
import type { JsonSchema, Types } from "effect"
import type { ModelHooks } from "./registration.js"
diff --git a/packages/plugin/src/promise/skill.ts b/packages/plugin/src/promise/skill.ts
index 61b1a068598..a0733f86a31 100644
--- a/packages/plugin/src/promise/skill.ts
+++ b/packages/plugin/src/promise/skill.ts
@@ -1,5 +1,5 @@
-import type { SkillApi } from "@opencode-ai/client/promise/api"
-import type { Skill } from "@opencode-ai/schema/skill"
+import type { SkillApi } from "@opencode/client/promise/api"
+import type { Skill } from "@opencode/schema/skill"
import type { Transform } from "./registration.js"
import type { DeepMutable } from "./types.js"
diff --git a/packages/plugin/src/promise/tool.ts b/packages/plugin/src/promise/tool.ts
index 35d823107fd..729cb7e5493 100644
--- a/packages/plugin/src/promise/tool.ts
+++ b/packages/plugin/src/promise/tool.ts
@@ -1,10 +1,10 @@
-export { CallID, Error } from "@opencode-ai/schema/tool"
-export type { Metadata, Options, Result } from "@opencode-ai/schema/tool"
+export { CallID, Error } from "@opencode/schema/tool"
+export type { Metadata, Options, Result } from "@opencode/schema/tool"
-import { Tool } from "@opencode-ai/schema/tool"
-import type { Agent } from "@opencode-ai/schema/agent"
-import type { Session } from "@opencode-ai/schema/session"
-import type { SessionMessage } from "@opencode-ai/schema/session-message"
+import { Tool } from "@opencode/schema/tool"
+import type { Agent } from "@opencode/schema/agent"
+import type { Session } from "@opencode/schema/session"
+import type { SessionMessage } from "@opencode/schema/session-message"
import type { Types } from "effect"
import type { Hooks, Transform } from "./registration.js"
diff --git a/packages/plugin/src/promise/vcs.ts b/packages/plugin/src/promise/vcs.ts
index 9d32a826ce4..5792d665bcd 100644
--- a/packages/plugin/src/promise/vcs.ts
+++ b/packages/plugin/src/promise/vcs.ts
@@ -1,6 +1,6 @@
-import type { VcsApi } from "@opencode-ai/client/promise/api"
-import type { FileDiff } from "@opencode-ai/schema/file-diff"
-import type { Vcs } from "@opencode-ai/schema/vcs"
+import type { VcsApi } from "@opencode/client/promise/api"
+import type { FileDiff } from "@opencode/schema/file-diff"
+import type { Vcs } from "@opencode/schema/vcs"
import type { Transform } from "./registration.js"
export interface VcsScope {
diff --git a/packages/plugin/src/promise/websearch.ts b/packages/plugin/src/promise/websearch.ts
index 7916414e8fd..516fa4f508f 100644
--- a/packages/plugin/src/promise/websearch.ts
+++ b/packages/plugin/src/promise/websearch.ts
@@ -1,5 +1,5 @@
-import type { WebSearch } from "@opencode-ai/schema/websearch"
-import type { WebSearchApi } from "@opencode-ai/client/promise/api"
+import type { WebSearch } from "@opencode/schema/websearch"
+import type { WebSearchApi } from "@opencode/client/promise/api"
import type { Transform } from "./registration.js"
export interface WebSearchDefinition {
diff --git a/packages/plugin/src/promise/worktree.ts b/packages/plugin/src/promise/worktree.ts
index b71077fc59b..1d083ed97f1 100644
--- a/packages/plugin/src/promise/worktree.ts
+++ b/packages/plugin/src/promise/worktree.ts
@@ -1,4 +1,4 @@
-import type { WorktreeApi } from "@opencode-ai/client/promise/api"
+import type { WorktreeApi } from "@opencode/client/promise/api"
import type { WorktreeCreateInput, WorktreeEntry, WorktreeRemoveInput, WorktreeResult } from "../worktree.js"
import type { Transform } from "./registration.js"
diff --git a/packages/plugin/src/rpc.ts b/packages/plugin/src/rpc.ts
index 5b5665e4243..f383b5e9294 100644
--- a/packages/plugin/src/rpc.ts
+++ b/packages/plugin/src/rpc.ts
@@ -1 +1 @@
-export { Rpc } from "@opencode-ai/schema/rpc"
+export { Rpc } from "@opencode/schema/rpc"
diff --git a/packages/plugin/src/source.ts b/packages/plugin/src/source.ts
index 1c941e4bb8b..4eb82892a74 100644
--- a/packages/plugin/src/source.ts
+++ b/packages/plugin/src/source.ts
@@ -1,7 +1,7 @@
import { readFileSync, readdirSync } from "node:fs"
import { fileURLToPath, pathToFileURL } from "node:url"
import path from "node:path"
-import { Hash } from "@opencode-ai/util/hash"
+import { Hash } from "@opencode/util/hash"
// Keep source fingerprints and import attempts together. Filesystem events
// should reload changed local graphs, not repeat unchanged evaluations.
diff --git a/packages/plugin/src/tui/context.ts b/packages/plugin/src/tui/context.ts
index 16066dbbe4b..365a07d7f28 100644
--- a/packages/plugin/src/tui/context.ts
+++ b/packages/plugin/src/tui/context.ts
@@ -22,8 +22,8 @@ import type {
ShellInfo,
SkillInfo,
VcsInfo,
-} from "@opencode-ai/client"
-import type { ResolvedTheme } from "@opencode-ai/theme/tui"
+} from "@opencode/client"
+import type { ResolvedTheme } from "@opencode/theme/tui"
import type { CliRenderer, KeyEvent, MarkdownCodeBlockRenderer, Renderable } from "@opentui/core"
import type { JSX } from "@opentui/solid"
import type { Store } from "solid-js/store"
diff --git a/packages/posts/package.json b/packages/posts/package.json
index 1a3ec752673..bdb245501bc 100644
--- a/packages/posts/package.json
+++ b/packages/posts/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/posts",
+ "name": "@opencode/posts",
"private": true,
"type": "module",
"scripts": {
diff --git a/packages/protocol/package.json b/packages/protocol/package.json
index 11b6ecd9393..faa62805beb 100644
--- a/packages/protocol/package.json
+++ b/packages/protocol/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/protocol",
+ "name": "@opencode/protocol",
"version": "1.17.11",
"type": "module",
"license": "MIT",
@@ -26,7 +26,7 @@
"typecheck": "tsgo --noEmit"
},
"dependencies": {
- "@opencode-ai/schema": "workspace:*",
+ "@opencode/schema": "workspace:*",
"effect": "catalog:"
},
"devDependencies": {
diff --git a/packages/protocol/script/publish.ts b/packages/protocol/script/publish.ts
index 8e37674b644..30538cbc1cb 100644
--- a/packages/protocol/script/publish.ts
+++ b/packages/protocol/script/publish.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { rm } from "node:fs/promises"
import { fileURLToPath } from "node:url"
diff --git a/packages/protocol/src/api.ts b/packages/protocol/src/api.ts
index 4f4c9161ff3..00473c6d0cf 100644
--- a/packages/protocol/src/api.ts
+++ b/packages/protocol/src/api.ts
@@ -13,7 +13,7 @@ import { CommandGroup } from "./groups/command.js"
import { SkillGroup } from "./groups/skill.js"
import { RpcGroup } from "./groups/rpc.js"
import { EventGroup, makeEventGroup } from "./groups/event.js"
-import type { Definition } from "@opencode-ai/schema/event"
+import type { Definition } from "@opencode/schema/event"
import { AgentGroup } from "./groups/agent.js"
import { PluginGroup } from "./groups/plugin.js"
import { HealthGroup } from "./groups/health.js"
diff --git a/packages/protocol/src/client.ts b/packages/protocol/src/client.ts
index 0417f872a53..9c940d6b8d7 100644
--- a/packages/protocol/src/client.ts
+++ b/packages/protocol/src/client.ts
@@ -6,11 +6,11 @@ import { HttpApiMiddleware } from "effect/unstable/httpapi"
import type { EventGroup } from "./groups/event.js"
class LocationMiddleware extends HttpApiMiddleware.Service()(
- "@opencode-ai/client/LocationMiddleware",
+ "@opencode/client/LocationMiddleware",
) {}
class SessionLocationMiddleware extends HttpApiMiddleware.Service()(
- "@opencode-ai/client/SessionLocationMiddleware",
+ "@opencode/client/SessionLocationMiddleware",
{ error: [InvalidRequestError, SessionNotFoundError] },
) {}
diff --git a/packages/protocol/src/errors.ts b/packages/protocol/src/errors.ts
index 54f8b396638..ae68f38577d 100644
--- a/packages/protocol/src/errors.ts
+++ b/packages/protocol/src/errors.ts
@@ -1,5 +1,5 @@
import { Schema } from "effect"
-import { Skill } from "@opencode-ai/schema/skill"
+import { Skill } from "@opencode/schema/skill"
export class InvalidRequestError extends Schema.TaggedError()(
"InvalidRequestError",
diff --git a/packages/protocol/src/groups/agent.ts b/packages/protocol/src/groups/agent.ts
index cdfaaf5a72f..8e6cba69810 100644
--- a/packages/protocol/src/groups/agent.ts
+++ b/packages/protocol/src/groups/agent.ts
@@ -1,5 +1,5 @@
-import { Agent } from "@opencode-ai/schema/agent"
-import { Location } from "@opencode-ai/schema/location"
+import { Agent } from "@opencode/schema/agent"
+import { Location } from "@opencode/schema/location"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { LocationQuery, locationQueryOpenApi } from "./location.js"
diff --git a/packages/protocol/src/groups/command.ts b/packages/protocol/src/groups/command.ts
index cc27e0f12ec..937c30f1c3f 100644
--- a/packages/protocol/src/groups/command.ts
+++ b/packages/protocol/src/groups/command.ts
@@ -1,5 +1,5 @@
-import { Command } from "@opencode-ai/schema/command"
-import { Location } from "@opencode-ai/schema/location"
+import { Command } from "@opencode/schema/command"
+import { Location } from "@opencode/schema/location"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { LocationQuery, locationQueryOpenApi } from "./location.js"
diff --git a/packages/protocol/src/groups/config.ts b/packages/protocol/src/groups/config.ts
index b078ad9042e..15b65298daf 100644
--- a/packages/protocol/src/groups/config.ts
+++ b/packages/protocol/src/groups/config.ts
@@ -1,4 +1,4 @@
-import { Config } from "@opencode-ai/schema/config"
+import { Config } from "@opencode/schema/config"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { LocationQuery, locationQueryOpenApi } from "./location.js"
diff --git a/packages/protocol/src/groups/credential.ts b/packages/protocol/src/groups/credential.ts
index 92961eb0488..1dfc76142e2 100644
--- a/packages/protocol/src/groups/credential.ts
+++ b/packages/protocol/src/groups/credential.ts
@@ -1,4 +1,4 @@
-import { Credential } from "@opencode-ai/schema/credential"
+import { Credential } from "@opencode/schema/credential"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
import { LocationQuery, locationQueryOpenApi } from "./location.js"
diff --git a/packages/protocol/src/groups/debug.ts b/packages/protocol/src/groups/debug.ts
index fd7cd9def51..32014a210dd 100644
--- a/packages/protocol/src/groups/debug.ts
+++ b/packages/protocol/src/groups/debug.ts
@@ -1,4 +1,4 @@
-import { Location } from "@opencode-ai/schema/location"
+import { Location } from "@opencode/schema/location"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
import { LocationQuery, locationQueryOpenApi } from "./location.js"
diff --git a/packages/protocol/src/groups/event.ts b/packages/protocol/src/groups/event.ts
index 6fbc12ba050..38133ecdd8f 100644
--- a/packages/protocol/src/groups/event.ts
+++ b/packages/protocol/src/groups/event.ts
@@ -1,7 +1,7 @@
-import { Event } from "@opencode-ai/schema/event"
-import { EventManifest } from "@opencode-ai/schema/event-manifest"
-import { Location } from "@opencode-ai/schema/location"
-import type { Definition } from "@opencode-ai/schema/event"
+import { Event } from "@opencode/schema/event"
+import { EventManifest } from "@opencode/schema/event-manifest"
+import { Location } from "@opencode/schema/location"
+import type { Definition } from "@opencode/schema/event"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
diff --git a/packages/protocol/src/groups/form.ts b/packages/protocol/src/groups/form.ts
index 198b5f06fc3..59e36656fbf 100644
--- a/packages/protocol/src/groups/form.ts
+++ b/packages/protocol/src/groups/form.ts
@@ -1,5 +1,5 @@
-import { Form } from "@opencode-ai/schema/form"
-import { Location } from "@opencode-ai/schema/location"
+import { Form } from "@opencode/schema/form"
+import { Location } from "@opencode/schema/location"
import { Context, Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
import {
diff --git a/packages/protocol/src/groups/fs.ts b/packages/protocol/src/groups/fs.ts
index 47812af8ed0..593406a0abd 100644
--- a/packages/protocol/src/groups/fs.ts
+++ b/packages/protocol/src/groups/fs.ts
@@ -1,6 +1,6 @@
-import { FileSystem } from "@opencode-ai/schema/filesystem"
-import { Location } from "@opencode-ai/schema/location"
-import { PositiveInt } from "@opencode-ai/schema/schema"
+import { FileSystem } from "@opencode/schema/filesystem"
+import { Location } from "@opencode/schema/location"
+import { PositiveInt } from "@opencode/schema/schema"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
import { LocationQuery, locationQueryOpenApi } from "./location.js"
diff --git a/packages/protocol/src/groups/generate.ts b/packages/protocol/src/groups/generate.ts
index e4280d81076..16187c9c4a9 100644
--- a/packages/protocol/src/groups/generate.ts
+++ b/packages/protocol/src/groups/generate.ts
@@ -1,4 +1,4 @@
-import { Model } from "@opencode-ai/schema/model"
+import { Model } from "@opencode/schema/model"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { InvalidRequestError, ServiceUnavailableError } from "../errors.js"
diff --git a/packages/protocol/src/groups/integration.ts b/packages/protocol/src/groups/integration.ts
index 2a40425dc88..f03e3ba5619 100644
--- a/packages/protocol/src/groups/integration.ts
+++ b/packages/protocol/src/groups/integration.ts
@@ -1,6 +1,6 @@
-import { Integration } from "@opencode-ai/schema/integration"
-import { Location } from "@opencode-ai/schema/location"
-import { Form } from "@opencode-ai/schema/form"
+import { Integration } from "@opencode/schema/integration"
+import { Location } from "@opencode/schema/location"
+import { Form } from "@opencode/schema/form"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
import { InvalidRequestError } from "../errors.js"
diff --git a/packages/protocol/src/groups/location.ts b/packages/protocol/src/groups/location.ts
index 4723b8a46a9..1de8fb671ef 100644
--- a/packages/protocol/src/groups/location.ts
+++ b/packages/protocol/src/groups/location.ts
@@ -1,4 +1,4 @@
-import { Location } from "@opencode-ai/schema/location"
+import { Location } from "@opencode/schema/location"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
diff --git a/packages/protocol/src/groups/mcp.ts b/packages/protocol/src/groups/mcp.ts
index e7ad15a04d9..fe3252f748c 100644
--- a/packages/protocol/src/groups/mcp.ts
+++ b/packages/protocol/src/groups/mcp.ts
@@ -1,5 +1,5 @@
-import { Mcp } from "@opencode-ai/schema/mcp"
-import { Location } from "@opencode-ai/schema/location"
+import { Mcp } from "@opencode/schema/mcp"
+import { Location } from "@opencode/schema/location"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
import { McpServerNotFoundError } from "../errors.js"
diff --git a/packages/protocol/src/groups/message.ts b/packages/protocol/src/groups/message.ts
index 5b47146316d..559961e710f 100644
--- a/packages/protocol/src/groups/message.ts
+++ b/packages/protocol/src/groups/message.ts
@@ -1,5 +1,5 @@
-import { Session } from "@opencode-ai/schema/session"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
+import { Session } from "@opencode/schema/session"
+import { SessionMessage } from "@opencode/schema/session-message"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { InvalidCursorError, SessionNotFoundError, UnknownError } from "../errors.js"
diff --git a/packages/protocol/src/groups/model.ts b/packages/protocol/src/groups/model.ts
index c3f6828770e..936b2895089 100644
--- a/packages/protocol/src/groups/model.ts
+++ b/packages/protocol/src/groups/model.ts
@@ -1,5 +1,5 @@
-import { Model } from "@opencode-ai/schema/model"
-import { Location } from "@opencode-ai/schema/location"
+import { Model } from "@opencode/schema/model"
+import { Location } from "@opencode/schema/location"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { ServiceUnavailableError } from "../errors.js"
diff --git a/packages/protocol/src/groups/permission.ts b/packages/protocol/src/groups/permission.ts
index 6fdef8405fd..64cf8a81898 100644
--- a/packages/protocol/src/groups/permission.ts
+++ b/packages/protocol/src/groups/permission.ts
@@ -1,9 +1,9 @@
-import { Agent } from "@opencode-ai/schema/agent"
-import { Location } from "@opencode-ai/schema/location"
-import { Permission } from "@opencode-ai/schema/permission"
-import { PermissionSaved } from "@opencode-ai/schema/permission-saved"
-import { Project } from "@opencode-ai/schema/project"
-import { Session } from "@opencode-ai/schema/session"
+import { Agent } from "@opencode/schema/agent"
+import { Location } from "@opencode/schema/location"
+import { Permission } from "@opencode/schema/permission"
+import { PermissionSaved } from "@opencode/schema/permission-saved"
+import { Project } from "@opencode/schema/project"
+import { Session } from "@opencode/schema/session"
import { Context, Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
import { PermissionNotFoundError, SessionNotFoundError } from "../errors.js"
diff --git a/packages/protocol/src/groups/persistent-pty.ts b/packages/protocol/src/groups/persistent-pty.ts
index f14111d4cb9..4ea83c7e7df 100644
--- a/packages/protocol/src/groups/persistent-pty.ts
+++ b/packages/protocol/src/groups/persistent-pty.ts
@@ -1,7 +1,7 @@
-import { PersistentPty } from "@opencode-ai/schema/persistent-pty"
-import { Pty } from "@opencode-ai/schema/pty"
-import { PtyTicket } from "@opencode-ai/schema/pty-ticket"
-import { Session } from "@opencode-ai/schema/session"
+import { PersistentPty } from "@opencode/schema/persistent-pty"
+import { Pty } from "@opencode/schema/pty"
+import { PtyTicket } from "@opencode/schema/pty-ticket"
+import { Session } from "@opencode/schema/session"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
import { ForbiddenError, InvalidRequestError, PtyNotFoundError, ServiceUnavailableError } from "../errors.js"
diff --git a/packages/protocol/src/groups/plugin.ts b/packages/protocol/src/groups/plugin.ts
index 0ff90d1cc5c..868b5b702da 100644
--- a/packages/protocol/src/groups/plugin.ts
+++ b/packages/protocol/src/groups/plugin.ts
@@ -1,5 +1,5 @@
-import { Location } from "@opencode-ai/schema/location"
-import { Plugin } from "@opencode-ai/schema/plugin"
+import { Location } from "@opencode/schema/location"
+import { Plugin } from "@opencode/schema/plugin"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
import { InvalidRequestError, ServiceUnavailableError } from "../errors.js"
diff --git a/packages/protocol/src/groups/project.ts b/packages/protocol/src/groups/project.ts
index 80dbffb8d17..52a83e7ed52 100644
--- a/packages/protocol/src/groups/project.ts
+++ b/packages/protocol/src/groups/project.ts
@@ -1,4 +1,4 @@
-import { Project } from "@opencode-ai/schema/project"
+import { Project } from "@opencode/schema/project"
import { Schema, Struct } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { LocationQuery, locationQueryOpenApi } from "./location.js"
diff --git a/packages/protocol/src/groups/provider.ts b/packages/protocol/src/groups/provider.ts
index 25854aab6b6..41de1d02615 100644
--- a/packages/protocol/src/groups/provider.ts
+++ b/packages/protocol/src/groups/provider.ts
@@ -1,5 +1,5 @@
-import { Provider } from "@opencode-ai/schema/provider"
-import { Location } from "@opencode-ai/schema/location"
+import { Provider } from "@opencode/schema/provider"
+import { Location } from "@opencode/schema/location"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { ProviderNotFoundError, ServiceUnavailableError } from "../errors.js"
diff --git a/packages/protocol/src/groups/pty.ts b/packages/protocol/src/groups/pty.ts
index 35db87dddfc..69bec804097 100644
--- a/packages/protocol/src/groups/pty.ts
+++ b/packages/protocol/src/groups/pty.ts
@@ -1,6 +1,6 @@
-import { Pty } from "@opencode-ai/schema/pty"
-import { PtyTicket } from "@opencode-ai/schema/pty-ticket"
-import { Location } from "@opencode-ai/schema/location"
+import { Pty } from "@opencode/schema/pty"
+import { PtyTicket } from "@opencode/schema/pty-ticket"
+import { Location } from "@opencode/schema/location"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
import { ForbiddenError, PtyNotFoundError } from "../errors.js"
diff --git a/packages/protocol/src/groups/reference.ts b/packages/protocol/src/groups/reference.ts
index 0302f434b90..19e3d07afc4 100644
--- a/packages/protocol/src/groups/reference.ts
+++ b/packages/protocol/src/groups/reference.ts
@@ -1,5 +1,5 @@
-import { Location } from "@opencode-ai/schema/location"
-import { Reference } from "@opencode-ai/schema/reference"
+import { Location } from "@opencode/schema/location"
+import { Reference } from "@opencode/schema/reference"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { LocationQuery, locationQueryOpenApi } from "./location.js"
diff --git a/packages/protocol/src/groups/rpc.ts b/packages/protocol/src/groups/rpc.ts
index e291dce94a5..a58d22ad207 100644
--- a/packages/protocol/src/groups/rpc.ts
+++ b/packages/protocol/src/groups/rpc.ts
@@ -1,4 +1,4 @@
-import { optional } from "@opencode-ai/schema/schema"
+import { optional } from "@opencode/schema/schema"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { RpcError, RpcInternalError } from "../errors.js"
diff --git a/packages/protocol/src/groups/session.ts b/packages/protocol/src/groups/session.ts
index b42d13b0e8f..ffac096dd32 100644
--- a/packages/protocol/src/groups/session.ts
+++ b/packages/protocol/src/groups/session.ts
@@ -1,14 +1,14 @@
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import { SessionTransfer } from "@opencode-ai/schema/session-transfer"
-import { SessionInbox } from "@opencode-ai/schema/session-inbox"
-import { PromptInput } from "@opencode-ai/schema/prompt-input"
-import { Session } from "@opencode-ai/schema/session"
-import { SessionStats } from "@opencode-ai/schema/session-stats"
-import { InstructionEntry } from "@opencode-ai/schema/instruction-entry"
-import { Project } from "@opencode-ai/schema/project"
-import { AbsolutePath, NonNegativeInt, PositiveInt, RelativePath, statics } from "@opencode-ai/schema/schema"
-import { Event } from "@opencode-ai/schema/event"
-import { Workspace } from "@opencode-ai/schema/workspace"
+import { SessionMessage } from "@opencode/schema/session-message"
+import { SessionTransfer } from "@opencode/schema/session-transfer"
+import { SessionInbox } from "@opencode/schema/session-inbox"
+import { PromptInput } from "@opencode/schema/prompt-input"
+import { Session } from "@opencode/schema/session"
+import { SessionStats } from "@opencode/schema/session-stats"
+import { InstructionEntry } from "@opencode/schema/instruction-entry"
+import { Project } from "@opencode/schema/project"
+import { AbsolutePath, NonNegativeInt, PositiveInt, RelativePath, statics } from "@opencode/schema/schema"
+import { Event } from "@opencode/schema/event"
+import { Workspace } from "@opencode/schema/workspace"
import { Context, Effect, Encoding, Result, Schema, SchemaGetter, Struct } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
import {
@@ -24,12 +24,12 @@ import {
SkillNotFoundError,
UnknownError,
} from "../errors.js"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Skill } from "@opencode-ai/schema/skill"
-import { Model } from "@opencode-ai/schema/model"
-import { Location } from "@opencode-ai/schema/location"
-import { SessionEvent } from "@opencode-ai/schema/session-event"
-import { EventLog } from "@opencode-ai/schema/event-log"
+import { Agent } from "@opencode/schema/agent"
+import { Skill } from "@opencode/schema/skill"
+import { Model } from "@opencode/schema/model"
+import { Location } from "@opencode/schema/location"
+import { SessionEvent } from "@opencode/schema/session-event"
+import { EventLog } from "@opencode/schema/event-log"
const ParentIDFilter = Schema.Union([
Session.ID,
diff --git a/packages/protocol/src/groups/shell.ts b/packages/protocol/src/groups/shell.ts
index 0b4cc081f69..3414fad4799 100644
--- a/packages/protocol/src/groups/shell.ts
+++ b/packages/protocol/src/groups/shell.ts
@@ -1,6 +1,6 @@
-import { Shell } from "@opencode-ai/schema/shell"
-import { Location } from "@opencode-ai/schema/location"
-import { NonNegativeInt } from "@opencode-ai/schema/schema"
+import { Shell } from "@opencode/schema/shell"
+import { Location } from "@opencode/schema/location"
+import { NonNegativeInt } from "@opencode/schema/schema"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
import { ShellNotFoundError } from "../errors.js"
diff --git a/packages/protocol/src/groups/skill.ts b/packages/protocol/src/groups/skill.ts
index 9d4e372633d..d9bc36fecfc 100644
--- a/packages/protocol/src/groups/skill.ts
+++ b/packages/protocol/src/groups/skill.ts
@@ -1,5 +1,5 @@
-import { Skill } from "@opencode-ai/schema/skill"
-import { Location } from "@opencode-ai/schema/location"
+import { Skill } from "@opencode/schema/skill"
+import { Location } from "@opencode/schema/location"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { LocationQuery, locationQueryOpenApi } from "./location.js"
diff --git a/packages/protocol/src/groups/vcs.ts b/packages/protocol/src/groups/vcs.ts
index 3d9221c178e..f6674970c74 100644
--- a/packages/protocol/src/groups/vcs.ts
+++ b/packages/protocol/src/groups/vcs.ts
@@ -1,7 +1,7 @@
-import { FileDiff } from "@opencode-ai/schema/file-diff"
-import { Location } from "@opencode-ai/schema/location"
-import { NonNegativeInt, PositiveInt, optional } from "@opencode-ai/schema/schema"
-import { Vcs } from "@opencode-ai/schema/vcs"
+import { FileDiff } from "@opencode/schema/file-diff"
+import { Location } from "@opencode/schema/location"
+import { NonNegativeInt, PositiveInt, optional } from "@opencode/schema/schema"
+import { Vcs } from "@opencode/schema/vcs"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { LocationQuery, locationQueryOpenApi } from "./location.js"
diff --git a/packages/protocol/src/groups/websearch.ts b/packages/protocol/src/groups/websearch.ts
index 0ebf5674df1..7861e03dbce 100644
--- a/packages/protocol/src/groups/websearch.ts
+++ b/packages/protocol/src/groups/websearch.ts
@@ -1,5 +1,5 @@
-import { Location } from "@opencode-ai/schema/location"
-import { WebSearch } from "@opencode-ai/schema/websearch"
+import { Location } from "@opencode/schema/location"
+import { WebSearch } from "@opencode/schema/websearch"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { InvalidRequestError, ServiceUnavailableError } from "../errors.js"
diff --git a/packages/protocol/src/groups/workspace.ts b/packages/protocol/src/groups/workspace.ts
index 2c1950553ca..1f962e1fa1f 100644
--- a/packages/protocol/src/groups/workspace.ts
+++ b/packages/protocol/src/groups/workspace.ts
@@ -1,4 +1,4 @@
-import { Workspace } from "@opencode-ai/schema/workspace"
+import { Workspace } from "@opencode/schema/workspace"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { ConflictError, ProviderNotFoundError, UnknownError } from "../errors.js"
diff --git a/packages/protocol/src/groups/worktree.ts b/packages/protocol/src/groups/worktree.ts
index 977b36fc69a..7cec0a867fb 100644
--- a/packages/protocol/src/groups/worktree.ts
+++ b/packages/protocol/src/groups/worktree.ts
@@ -1,4 +1,4 @@
-import { Worktree } from "@opencode-ai/schema/worktree"
+import { Worktree } from "@opencode/schema/worktree"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
import { LocationQuery, locationQueryOpenApi } from "./location.js"
diff --git a/packages/protocol/test/session-cursor.test.ts b/packages/protocol/test/session-cursor.test.ts
index 86c78d9503a..63e4acee30d 100644
--- a/packages/protocol/test/session-cursor.test.ts
+++ b/packages/protocol/test/session-cursor.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
import { SessionsCursor } from "../src/groups/session.js"
-import { Session } from "@opencode-ai/schema/session"
+import { Session } from "@opencode/schema/session"
describe("SessionsCursor", () => {
test("round trips without Node globals", async () => {
diff --git a/packages/schema/AGENTS.md b/packages/schema/AGENTS.md
index 8ef3387d4c3..3b4c6a818af 100644
--- a/packages/schema/AGENTS.md
+++ b/packages/schema/AGENTS.md
@@ -1,10 +1,10 @@
# Schema Package Guide
-`@opencode-ai/schema` owns browser-safe wire and storage contracts shared by protocol, server, core, and generated SDKs. Keep runtime behavior, service layers, side effects, and host-local implementation details in the domain package that owns them.
+`@opencode/schema` owns browser-safe wire and storage contracts shared by protocol, server, core, and generated SDKs. Keep runtime behavior, service layers, side effects, and host-local implementation details in the domain package that owns them.
## Package Boundary
-- Preserve the dependency direction: `@opencode-ai/schema <- @opencode-ai/protocol <- @opencode-ai/server`.
+- Preserve the dependency direction: `@opencode/schema <- @opencode/protocol <- @opencode/server`.
- Schema values should be serializable contract definitions, not service implementations or runtime registries.
- A domain may keep a minimal public wire contract here when SDK generation needs it, but do not move the broader runtime model into Schema just because an event is public. `plugin.updated` is the current example: Schema may own the minimum browser-safe event payload, while plugin runtime behavior stays outside Schema.
- The root barrel exports canonical current domain contracts. Specialized event modules, manifests, infrastructure modules, and V1 contracts use direct entrypoints instead of becoming first-class root exports.
@@ -16,7 +16,7 @@
- Do not preserve `V2` as the permanent name for the replacement architecture. Remove `V2` from current namespaces, brands, and identifiers as the contracts are normalized.
- Retained V1 contracts live under `src/v1/`. New/current code must not depend on that subtree.
- V1 coexistence is temporary. Keep compatibility entrypoints only where migration requires them, and delete the V1 subtree when the legacy runtime is retired.
-- `@opencode-ai/protocol` and `@opencode-ai/sdk` are current `/api/...` surfaces.
+- `@opencode/protocol` and `@opencode/sdk` are current `/api/...` surfaces.
## Events
@@ -37,7 +37,7 @@
## Public Re-exports
- Public leaf packages re-export the canonical domain namespaces used by their APIs so consumers install and version one package. Keep the list curated by public API reachability rather than mirroring the Schema root.
-- Re-export directly from `@opencode-ai/schema/` and preserve the exact canonical values and types. Do not wrap schemas, duplicate definitions, or route exports through another facade package.
+- Re-export directly from `@opencode/schema/` and preserve the exact canonical values and types. Do not wrap schemas, duplicate definitions, or route exports through another facade package.
- Internal packages import contracts directly from their canonical Schema owner. Import a Core domain facade only when runtime behavior from that facade is required.
- Resolve name collisions by retaining the domain namespace and qualifying its members, such as `Session.Info` and `Agent.Info`. Do not introduce aliases such as `SessionSchema`, `AgentSchema`, or `ModelSchema`.
diff --git a/packages/schema/package.json b/packages/schema/package.json
index 04551ef505f..1b062721e5d 100644
--- a/packages/schema/package.json
+++ b/packages/schema/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/schema",
+ "name": "@opencode/schema",
"version": "1.17.11",
"type": "module",
"license": "MIT",
diff --git a/packages/schema/script/publish.ts b/packages/schema/script/publish.ts
index 8e37674b644..30538cbc1cb 100644
--- a/packages/schema/script/publish.ts
+++ b/packages/schema/script/publish.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { rm } from "node:fs/promises"
import { fileURLToPath } from "node:url"
diff --git a/packages/script/package.json b/packages/script/package.json
index be46b963c0f..12abf3847ac 100644
--- a/packages/script/package.json
+++ b/packages/script/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package",
- "name": "@opencode-ai/script",
+ "name": "@opencode/script",
"type": "module",
"license": "MIT",
"dependencies": {
diff --git a/packages/script/src/index.ts b/packages/script/src/index.ts
index 55c89ddf7a0..5d6508758dc 100644
--- a/packages/script/src/index.ts
+++ b/packages/script/src/index.ts
@@ -34,7 +34,7 @@ const IS_PREVIEW = CHANNEL !== "latest"
const VERSION = await (async () => {
if (env.OPENCODE_VERSION) return env.OPENCODE_VERSION
if (IS_PREVIEW) return `0.0.0-${CHANNEL}-${previewBuildNumber()}`
- const version = await fetch("https://registry.npmjs.org/@opencode-ai%2fcli/latest")
+ const version = await fetch("https://registry.npmjs.org/@opencode%2fcli/latest")
.then((res) => {
if (!res.ok) throw new Error(res.statusText)
return res.json()
diff --git a/packages/sdk/README.md b/packages/sdk/README.md
index 511a61d0d2b..d4810556f27 100644
--- a/packages/sdk/README.md
+++ b/packages/sdk/README.md
@@ -1,9 +1,9 @@
-# @opencode-ai/sdk
+# @opencode/sdk
In-process OpenCode host for Promise and Effect applications. The SDK executes Server's assembled HTTP router in memory, opening no listener and adding no network hop.
```ts
-import { OpenCode } from "@opencode-ai/sdk"
+import { OpenCode } from "@opencode/sdk"
await using opencode = await OpenCode.create()
const session = await opencode.sessions.create({
@@ -13,7 +13,7 @@ const session = await opencode.sessions.create({
Pass imported Promise plugins in `plugins`, or register one later with `await opencode.plugin(plugin)`.
-The Promise API uses the same values, errors, request options, and `AsyncIterable` streams as `@opencode-ai/client`.
+The Promise API uses the same values, errors, request options, and `AsyncIterable` streams as `@opencode/client`.
Embedded hosts are silent by default. Set `log` to receive structured log entries:
@@ -33,7 +33,7 @@ await using opencode = await OpenCode.create({
Use `instances` when Sessions in the same directory need different application plugins. The application selects a stable key from Session metadata; the SDK constructs and caches an instance for that key and the Session's current Location.
```ts
-import { OpenCode } from "@opencode-ai/sdk"
+import { OpenCode } from "@opencode/sdk"
import { threads } from "./threads"
import { slackPlugin } from "./slack-plugin"
@@ -80,7 +80,7 @@ Promise plugin resources should be acquired in `setup` and released by its clean
Use the Workerd entrypoint inside a Cloudflare Durable Object. Hold one host for the lifetime of the object instance rather than creating one per request.
```ts
-import { OpenCodeWorkerd } from "@opencode-ai/sdk/workerd"
+import { OpenCodeWorkerd } from "@opencode/sdk/workerd"
import myPlugin from "./my-plugin"
export class OpenCodeDO {
@@ -107,21 +107,21 @@ export class OpenCodeDO {
## Effect
-The Effect-native API remains available from `@opencode-ai/sdk/effect`:
+The Effect-native API remains available from `@opencode/sdk/effect`:
```ts
-import { OpenCode } from "@opencode-ai/sdk/effect"
+import { OpenCode } from "@opencode/sdk/effect"
const opencode = yield * OpenCode.create()
const session = yield * opencode.sessions.get({ sessionID })
```
-The Effect Workerd entrypoint is `@opencode-ai/sdk/workerd/effect`.
+The Effect Workerd entrypoint is `@opencode/sdk/workerd/effect`.
Effect configuration uses the same keys and lifetime rules, with canonical `Session.Info` values and an Effect-returning factory. `configure` may require services; `OpenCode.create` and `OpenCode.layer` carry those requirements, so the application satisfies them where it builds the SDK, as with any other Effect callback:
```ts
-import { OpenCode } from "@opencode-ai/sdk/effect"
+import { OpenCode } from "@opencode/sdk/effect"
import { Effect, Layer, Schema } from "effect"
import { Threads } from "./threads-effect"
import { slackPlugin } from "./slack-plugin-effect"
diff --git a/packages/sdk/package.json b/packages/sdk/package.json
index a595fef58dd..b9d26191cd2 100644
--- a/packages/sdk/package.json
+++ b/packages/sdk/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"version": "1.18.4",
- "name": "@opencode-ai/sdk",
+ "name": "@opencode/sdk",
"type": "module",
"license": "MIT",
"repository": {
@@ -28,18 +28,18 @@
"verify:package": "bun run script/verify-package.ts"
},
"dependencies": {
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/core": "workspace:*",
- "@opencode-ai/plugin": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/server": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/core": "workspace:*",
+ "@opencode/plugin": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/server": "workspace:*",
+ "@opencode/util": "workspace:*",
"effect": "catalog:"
},
"devDependencies": {
- "@opencode-ai/ai": "workspace:*",
- "@opencode-ai/httpapi-codegen": "workspace:*",
- "@opencode-ai/protocol": "workspace:*",
+ "@opencode/ai": "workspace:*",
+ "@opencode/httpapi-codegen": "workspace:*",
+ "@opencode/protocol": "workspace:*",
"@tsconfig/bun": "catalog:",
"@types/bun": "catalog:",
"@typescript/native-preview": "catalog:"
diff --git a/packages/sdk/script/publish.ts b/packages/sdk/script/publish.ts
index 3a15bce35a9..ad892ce120e 100644
--- a/packages/sdk/script/publish.ts
+++ b/packages/sdk/script/publish.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { rm } from "node:fs/promises"
import { fileURLToPath } from "node:url"
diff --git a/packages/sdk/script/verify-package.ts b/packages/sdk/script/verify-package.ts
index a044941311f..bea585925ca 100644
--- a/packages/sdk/script/verify-package.ts
+++ b/packages/sdk/script/verify-package.ts
@@ -101,8 +101,8 @@ try {
),
Bun.write(
join(consumer, "worker.js"),
- `import { bodyDigest } from "@opencode-ai/core/models-dev"
-import { OpenCodeWorkerd } from "@opencode-ai/sdk/workerd"
+ `import { bodyDigest } from "@opencode/core/models-dev"
+import { OpenCodeWorkerd } from "@opencode/sdk/workerd"
export class OpenCodeDO {
constructor(state) {
@@ -191,10 +191,10 @@ try {
Bun.write(
join(consumer, "imports.mjs"),
`const modules = await Promise.all([
- import("@opencode-ai/sdk"),
- import("@opencode-ai/sdk/effect"),
- import("@opencode-ai/sdk/workerd"),
- import("@opencode-ai/sdk/workerd/effect"),
+ import("@opencode/sdk"),
+ import("@opencode/sdk/effect"),
+ import("@opencode/sdk/workerd"),
+ import("@opencode/sdk/workerd/effect"),
])
for (const module of modules) {
@@ -205,7 +205,7 @@ for (const module of modules) {
),
])
- const sdk = archives.get("@opencode-ai/sdk")
+ const sdk = archives.get("@opencode/sdk")
if (!sdk) throw new Error("Packed SDK archive was not created")
await $`npm install --ignore-scripts --no-audit --no-fund --package-lock=false ${sdk} wrangler@4.110.0`.cwd(consumer)
const runtimes = (await $`npm ls effect --all --parseable`.cwd(consumer).text()).trim().split("\n")
diff --git a/packages/sdk/src/contracts.ts b/packages/sdk/src/contracts.ts
index 7778b8fbb32..bb7e2a1a20a 100644
--- a/packages/sdk/src/contracts.ts
+++ b/packages/sdk/src/contracts.ts
@@ -1,26 +1,26 @@
-export { Agent } from "@opencode-ai/schema/agent"
-export { Command } from "@opencode-ai/schema/command"
-export { Config } from "@opencode-ai/schema/config"
-export { Credential } from "@opencode-ai/schema/credential"
-export { Event } from "@opencode-ai/schema/event"
-export { FileSystem } from "@opencode-ai/schema/filesystem"
-export { Integration } from "@opencode-ai/schema/integration"
-export { Location } from "@opencode-ai/schema/location"
-export { Model } from "@opencode-ai/schema/model"
-export { Permission } from "@opencode-ai/schema/permission"
-export { PermissionSaved } from "@opencode-ai/schema/permission-saved"
-export { Project } from "@opencode-ai/schema/project"
-export { Worktree } from "@opencode-ai/schema/worktree"
-export { Prompt } from "@opencode-ai/schema/prompt"
-export { PromptInput } from "@opencode-ai/schema/prompt-input"
-export { Provider } from "@opencode-ai/schema/provider"
-export { Pty } from "@opencode-ai/schema/pty"
-export { Question } from "@opencode-ai/schema/question"
-export { Reference } from "@opencode-ai/schema/reference"
-export { WebSearch } from "@opencode-ai/schema/websearch"
-export { AbsolutePath, RelativePath } from "@opencode-ai/schema/schema"
-export { Session } from "@opencode-ai/schema/session"
-export { SessionInbox } from "@opencode-ai/schema/session-inbox"
-export { SessionMessage } from "@opencode-ai/schema/session-message"
-export { Skill } from "@opencode-ai/schema/skill"
-export { Workspace } from "@opencode-ai/schema/workspace"
+export { Agent } from "@opencode/schema/agent"
+export { Command } from "@opencode/schema/command"
+export { Config } from "@opencode/schema/config"
+export { Credential } from "@opencode/schema/credential"
+export { Event } from "@opencode/schema/event"
+export { FileSystem } from "@opencode/schema/filesystem"
+export { Integration } from "@opencode/schema/integration"
+export { Location } from "@opencode/schema/location"
+export { Model } from "@opencode/schema/model"
+export { Permission } from "@opencode/schema/permission"
+export { PermissionSaved } from "@opencode/schema/permission-saved"
+export { Project } from "@opencode/schema/project"
+export { Worktree } from "@opencode/schema/worktree"
+export { Prompt } from "@opencode/schema/prompt"
+export { PromptInput } from "@opencode/schema/prompt-input"
+export { Provider } from "@opencode/schema/provider"
+export { Pty } from "@opencode/schema/pty"
+export { Question } from "@opencode/schema/question"
+export { Reference } from "@opencode/schema/reference"
+export { WebSearch } from "@opencode/schema/websearch"
+export { AbsolutePath, RelativePath } from "@opencode/schema/schema"
+export { Session } from "@opencode/schema/session"
+export { SessionInbox } from "@opencode/schema/session-inbox"
+export { SessionMessage } from "@opencode/schema/session-message"
+export { Skill } from "@opencode/schema/skill"
+export { Workspace } from "@opencode/schema/workspace"
diff --git a/packages/sdk/src/effect/index.ts b/packages/sdk/src/effect/index.ts
index 9597380c85e..6523aa5fbab 100644
--- a/packages/sdk/src/effect/index.ts
+++ b/packages/sdk/src/effect/index.ts
@@ -1,6 +1,6 @@
export * as OpenCode from "./opencode"
export * as Tool from "./tool"
-export { ClientError } from "@opencode-ai/client/effect"
-export type { OpenCodeEvent } from "@opencode-ai/client/effect"
+export { ClientError } from "@opencode/client/effect"
+export type { OpenCodeEvent } from "@opencode/client/effect"
export * from "../contracts"
diff --git a/packages/sdk/src/effect/opencode.ts b/packages/sdk/src/effect/opencode.ts
index b71050808fe..5898eefba87 100644
--- a/packages/sdk/src/effect/opencode.ts
+++ b/packages/sdk/src/effect/opencode.ts
@@ -1,7 +1,7 @@
export * as OpenCode from "./opencode"
-import { OpenCode, type OpenCodeClient } from "@opencode-ai/client/effect"
-import type { Workspace } from "@opencode-ai/core/workspace"
+import { OpenCode, type OpenCodeClient } from "@opencode/client/effect"
+import type { Workspace } from "@opencode/core/workspace"
import { Context, Effect, Layer } from "effect"
import type { Config, Scope } from "effect"
import { FetchHttpClient, HttpClient } from "effect/unstable/http"
@@ -57,7 +57,7 @@ export const create: (
}
})
-export class Service extends Context.Service()("@opencode-ai/sdk/OpenCode") {}
+export class Service extends Context.Service()("@opencode/sdk/OpenCode") {}
export const layer = (
options: CreateOptions = {},
diff --git a/packages/sdk/src/effect/tool.ts b/packages/sdk/src/effect/tool.ts
index af878df5fd5..6e6eb1d8885 100644
--- a/packages/sdk/src/effect/tool.ts
+++ b/packages/sdk/src/effect/tool.ts
@@ -1,3 +1,3 @@
-export { RegistrationError } from "@opencode-ai/core/tool"
-export { Error } from "@opencode-ai/schema/tool"
-export type { Context, Info } from "@opencode-ai/schema/tool"
+export { RegistrationError } from "@opencode/core/tool"
+export { Error } from "@opencode/schema/tool"
+export type { Context, Info } from "@opencode/schema/tool"
diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts
index 220720d96c1..937560cf479 100644
--- a/packages/sdk/src/index.ts
+++ b/packages/sdk/src/index.ts
@@ -1,6 +1,6 @@
export * as OpenCode from "./opencode"
export * as Tool from "./tool"
-export { ClientError } from "@opencode-ai/client"
-export type { OpenCodeEvent } from "@opencode-ai/client"
+export { ClientError } from "@opencode/client"
+export type { OpenCodeEvent } from "@opencode/client"
export * from "./contracts"
diff --git a/packages/sdk/src/internal/host.ts b/packages/sdk/src/internal/host.ts
index 26ade32e843..6682346b03c 100644
--- a/packages/sdk/src/internal/host.ts
+++ b/packages/sdk/src/internal/host.ts
@@ -1,12 +1,12 @@
export * as EmbeddedHost from "./host"
-import { SdkPlugins } from "@opencode-ai/core/plugin/sdk"
-import { SessionRestart } from "@opencode-ai/core/session/execution/restart"
-import { Workspace } from "@opencode-ai/core/workspace"
-import { WorkspaceDriver } from "@opencode-ai/core/workspace/driver"
-import { createEmbeddedRoutes } from "@opencode-ai/server/routes"
-import type { ServerOptions } from "@opencode-ai/server/options"
-import type { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { SdkPlugins } from "@opencode/core/plugin/sdk"
+import { SessionRestart } from "@opencode/core/session/execution/restart"
+import { Workspace } from "@opencode/core/workspace"
+import { WorkspaceDriver } from "@opencode/core/workspace/driver"
+import { createEmbeddedRoutes } from "@opencode/server/routes"
+import type { ServerOptions } from "@opencode/server/options"
+import type { LayerNode } from "@opencode/util/effect/layer-node"
import { Context, Effect, Layer, ManagedRuntime, Scope } from "effect"
import { HttpEffect, HttpRouter, HttpServer, HttpServerRequest } from "effect/unstable/http"
import { context, layer, type LogOptions } from "../logging"
diff --git a/packages/sdk/src/internal/instances.ts b/packages/sdk/src/internal/instances.ts
index d6e9cdf39b6..bf0f468003d 100644
--- a/packages/sdk/src/internal/instances.ts
+++ b/packages/sdk/src/internal/instances.ts
@@ -1,13 +1,13 @@
export * as SdkInstances from "./instances"
-import { Instance } from "@opencode-ai/core/instance"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import { Plugin } from "@opencode-ai/core/plugin"
-import type { InstancePlugins } from "@opencode-ai/core/plugin/instance"
-import { Location } from "@opencode-ai/schema/location"
-import type { Session } from "@opencode-ai/schema/session"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import type { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { Instance } from "@opencode/core/instance"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import { Plugin } from "@opencode/core/plugin"
+import type { InstancePlugins } from "@opencode/core/plugin/instance"
+import { Location } from "@opencode/schema/location"
+import type { Session } from "@opencode/schema/session"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import type { LayerNode } from "@opencode/util/effect/layer-node"
import { Context, Duration, Effect, Layer, LayerMap, Scope } from "effect"
export interface Configuration {
diff --git a/packages/sdk/src/internal/workerd.ts b/packages/sdk/src/internal/workerd.ts
index e9724f37c79..13db7a0cc62 100644
--- a/packages/sdk/src/internal/workerd.ts
+++ b/packages/sdk/src/internal/workerd.ts
@@ -1,7 +1,7 @@
export * as WorkerdProfile from "./workerd"
-import type { Config } from "@opencode-ai/schema/config"
-import { ServerWorkerd } from "@opencode-ai/server/workerd"
+import type { Config } from "@opencode/schema/config"
+import { ServerWorkerd } from "@opencode/server/workerd"
export type Configuration = Omit
diff --git a/packages/sdk/src/promise.ts b/packages/sdk/src/promise.ts
index 3d770bb2c56..61d3a31793b 100644
--- a/packages/sdk/src/promise.ts
+++ b/packages/sdk/src/promise.ts
@@ -1,8 +1,8 @@
export * as PromiseSdk from "./promise"
-import { OpenCode, type OpenCodeClient } from "@opencode-ai/client"
-import type { Plugin } from "@opencode-ai/plugin"
-import { Session } from "@opencode-ai/schema/session"
+import { OpenCode, type OpenCodeClient } from "@opencode/client"
+import type { Plugin } from "@opencode/plugin"
+import { Session } from "@opencode/schema/session"
import { Effect, Schema } from "effect"
import { EmbeddedHost } from "./internal/host"
@@ -41,7 +41,7 @@ export async function create(options: CreateOptions = {}, embed: EmbeddedHost.Em
key: (session) => instances.key(Schema.encodeSync(Session.Info)(session)),
configure: (key) =>
Effect.gen(function* () {
- const { PluginPromise } = yield* Effect.promise(() => import("@opencode-ai/core/plugin/promise"))
+ const { PluginPromise } = yield* Effect.promise(() => import("@opencode/core/plugin/promise"))
const configuration = yield* Effect.tryPromise(async () => instances.configure(key))
return { plugins: configuration.plugins.map(PluginPromise.fromPromise) }
}),
@@ -53,7 +53,7 @@ export async function create(options: CreateOptions = {}, embed: EmbeddedHost.Em
)
const client = OpenCode.make({ baseUrl: "http://opencode.local", fetch: host.fetch })
const register = async (plugin: Plugin.Plugin) => {
- const { PluginPromise } = await import("@opencode-ai/core/plugin/promise")
+ const { PluginPromise } = await import("@opencode/core/plugin/promise")
return host.runtime.runPromise(host.plugins.register(PluginPromise.fromPromise(plugin)))
}
for (const plugin of plugins ?? []) await register(plugin)
diff --git a/packages/sdk/src/tool.ts b/packages/sdk/src/tool.ts
index 7ab994a3c1b..572c29ce1e2 100644
--- a/packages/sdk/src/tool.ts
+++ b/packages/sdk/src/tool.ts
@@ -1,3 +1,3 @@
-export { RegistrationError } from "@opencode-ai/core/tool"
-export { Error } from "@opencode-ai/schema/tool"
-export type { ToolContext as Context, Info } from "@opencode-ai/plugin/promise/tool"
+export { RegistrationError } from "@opencode/core/tool"
+export { Error } from "@opencode/schema/tool"
+export type { ToolContext as Context, Info } from "@opencode/plugin/promise/tool"
diff --git a/packages/sdk/test/contract-identity.test.ts b/packages/sdk/test/contract-identity.test.ts
index 282fdc2a1b0..6e6920e5054 100644
--- a/packages/sdk/test/contract-identity.test.ts
+++ b/packages/sdk/test/contract-identity.test.ts
@@ -1,30 +1,30 @@
import { expect, test } from "bun:test"
-import { Location as CoreLocation } from "@opencode-ai/core/location"
-import { SessionInbox as CoreSessionInbox } from "@opencode-ai/core/session/inbox"
-import { SessionMessage as CoreSessionMessage } from "@opencode-ai/core/session/message"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Config } from "@opencode-ai/schema/config"
-import { Event } from "@opencode-ai/schema/event"
-import { Location } from "@opencode-ai/schema/location"
-import { Model } from "@opencode-ai/schema/model"
-import { Project } from "@opencode-ai/schema/project"
-import { Provider } from "@opencode-ai/schema/provider"
-import { WebSearch } from "@opencode-ai/schema/websearch"
-import { Session } from "@opencode-ai/schema/session"
-import { SessionInbox } from "@opencode-ai/schema/session-inbox"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import { Workspace } from "@opencode-ai/schema/workspace"
-import { Worktree } from "@opencode-ai/schema/worktree"
-import { Api } from "@opencode-ai/server/api"
-import { ClientApi, groupNames, promiseOmitEndpoints } from "@opencode-ai/protocol/client"
-import { compile, emitPromise } from "@opencode-ai/httpapi-codegen"
+import { Location as CoreLocation } from "@opencode/core/location"
+import { SessionInbox as CoreSessionInbox } from "@opencode/core/session/inbox"
+import { SessionMessage as CoreSessionMessage } from "@opencode/core/session/message"
+import { Agent } from "@opencode/schema/agent"
+import { Config } from "@opencode/schema/config"
+import { Event } from "@opencode/schema/event"
+import { Location } from "@opencode/schema/location"
+import { Model } from "@opencode/schema/model"
+import { Project } from "@opencode/schema/project"
+import { Provider } from "@opencode/schema/provider"
+import { WebSearch } from "@opencode/schema/websearch"
+import { Session } from "@opencode/schema/session"
+import { SessionInbox } from "@opencode/schema/session-inbox"
+import { SessionMessage } from "@opencode/schema/session-message"
+import { Workspace } from "@opencode/schema/workspace"
+import { Worktree } from "@opencode/schema/worktree"
+import { Api } from "@opencode/server/api"
+import { ClientApi, groupNames, promiseOmitEndpoints } from "@opencode/protocol/client"
+import { compile, emitPromise } from "@opencode/httpapi-codegen"
const SDK = await import("../src/index")
-const CoreAgent = await import("@opencode-ai/core/agent")
-const CoreModel = await import("@opencode-ai/core/model")
-const CoreProject = await import("@opencode-ai/core/project")
-const CoreSession = await import("@opencode-ai/core/session")
-const CoreWorktree = await import("@opencode-ai/core/worktree")
+const CoreAgent = await import("@opencode/core/agent")
+const CoreModel = await import("@opencode/core/model")
+const CoreProject = await import("@opencode/core/project")
+const CoreSession = await import("@opencode/core/session")
+const CoreWorktree = await import("@opencode/core/worktree")
test("re-exports canonical contracts directly from Schema", () => {
expect(SDK.Agent).toBe(Agent)
diff --git a/packages/sdk/test/embedded.test.ts b/packages/sdk/test/embedded.test.ts
index f3c0c854717..aa1dc538851 100644
--- a/packages/sdk/test/embedded.test.ts
+++ b/packages/sdk/test/embedded.test.ts
@@ -1,13 +1,13 @@
import fs from "fs/promises"
import path from "path"
import { expect } from "bun:test"
-import { LanguageModel, LLMClient } from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols"
-import { TestLLM } from "@opencode-ai/ai/testing"
-import { llmClient } from "@opencode-ai/core/effect/app-node-platform"
-import { makeMemoryDriver } from "@opencode-ai/core/environment/index"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { WorkspaceDriver } from "@opencode-ai/core/workspace/driver"
+import { LanguageModel, LLMClient } from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols"
+import { TestLLM } from "@opencode/ai/testing"
+import { llmClient } from "@opencode/core/effect/app-node-platform"
+import { makeMemoryDriver } from "@opencode/core/environment/index"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { WorkspaceDriver } from "@opencode/core/workspace/driver"
import { Deferred, Effect, Fiber, Latch, Layer, Option, Schedule, Stream } from "effect"
import { testEffect } from "../../core/test/lib/effect"
import { tmpdir } from "../../core/test/fixture/tmpdir"
diff --git a/packages/sdk/test/import-boundaries.test.ts b/packages/sdk/test/import-boundaries.test.ts
index 03a64b496a2..57779a47506 100644
--- a/packages/sdk/test/import-boundaries.test.ts
+++ b/packages/sdk/test/import-boundaries.test.ts
@@ -8,7 +8,7 @@ const core = resolve(import.meta.dir, "../../core")
const server = resolve(import.meta.dir, "../../server")
test("bundles the Promise and Effect clients with the in-memory host", async () => {
- const bundles = await Promise.all([bundleInputs("@opencode-ai/sdk"), bundleInputs("@opencode-ai/sdk/effect")])
+ const bundles = await Promise.all([bundleInputs("@opencode/sdk"), bundleInputs("@opencode/sdk/effect")])
for (const inputs of bundles) {
expect(within(inputs, client).length).toBeGreaterThan(0)
diff --git a/packages/sdk/test/instances-effect.test.ts b/packages/sdk/test/instances-effect.test.ts
index 9dc2628a048..ca4d7d2294b 100644
--- a/packages/sdk/test/instances-effect.test.ts
+++ b/packages/sdk/test/instances-effect.test.ts
@@ -1,13 +1,13 @@
import { expect } from "bun:test"
import path from "path"
-import { LanguageModel, LLMClient } from "@opencode-ai/ai"
-import { OpenAIChat } from "@opencode-ai/ai/protocols"
-import { TestLLM } from "@opencode-ai/ai/testing"
-import { llmClient } from "@opencode-ai/core/effect/app-node-platform"
-import { makeMemoryDriver } from "@opencode-ai/core/environment/index"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { WorkspaceDriver } from "@opencode-ai/core/workspace/driver"
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { LanguageModel, LLMClient } from "@opencode/ai"
+import { OpenAIChat } from "@opencode/ai/protocols"
+import { TestLLM } from "@opencode/ai/testing"
+import { llmClient } from "@opencode/core/effect/app-node-platform"
+import { makeMemoryDriver } from "@opencode/core/environment/index"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { WorkspaceDriver } from "@opencode/core/workspace/driver"
+import { Plugin } from "@opencode/plugin/effect"
import { Context, Deferred, Effect, Exit, Layer, Schema, Scope } from "effect"
import { tmpdirScoped } from "../../core/test/fixture/tmpdir"
import { testEffect } from "../../core/test/lib/effect"
diff --git a/packages/sdk/test/instances-lifecycle.test.ts b/packages/sdk/test/instances-lifecycle.test.ts
index b3e96fbacd9..7d78288a746 100644
--- a/packages/sdk/test/instances-lifecycle.test.ts
+++ b/packages/sdk/test/instances-lifecycle.test.ts
@@ -1,8 +1,8 @@
import { expect } from "bun:test"
-import { Instance } from "@opencode-ai/core/instance/service"
-import { Session } from "@opencode-ai/core/session"
-import { Location } from "@opencode-ai/schema/location"
-import { AbsolutePath } from "@opencode-ai/schema/schema"
+import { Instance } from "@opencode/core/instance/service"
+import { Session } from "@opencode/core/session"
+import { Location } from "@opencode/schema/location"
+import { AbsolutePath } from "@opencode/schema/schema"
import { Context, Deferred, Effect, Exit, Fiber, Layer } from "effect"
import { tmpdirScoped } from "../../core/test/fixture/tmpdir"
import { testEffect } from "../../core/test/lib/effect"
diff --git a/packages/server/package.json b/packages/server/package.json
index 637d75f1b4e..27c81908f9a 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/server",
+ "name": "@opencode/server",
"version": "1.18.4",
"type": "module",
"license": "MIT",
@@ -27,17 +27,17 @@
"dependencies": {
"@effect/platform-node": "catalog:",
"@effect/platform-node-shared": "catalog:",
- "@opencode-ai/core": "workspace:*",
- "@opencode-ai/protocol": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/simulation": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/core": "workspace:*",
+ "@opencode/protocol": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/simulation": "workspace:*",
+ "@opencode/util": "workspace:*",
"drizzle-orm": "catalog:",
"effect": "catalog:"
},
"devDependencies": {
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/plugin": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/plugin": "workspace:*",
"@tsconfig/bun": "catalog:",
"@types/bun": "catalog:",
"@typescript/native-preview": "catalog:"
diff --git a/packages/server/script/publish.ts b/packages/server/script/publish.ts
index e56ff22d286..421d83e3479 100644
--- a/packages/server/script/publish.ts
+++ b/packages/server/script/publish.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { rm } from "node:fs/promises"
import { fileURLToPath } from "node:url"
diff --git a/packages/server/src/api.ts b/packages/server/src/api.ts
index 60831abc206..2e137d08e02 100644
--- a/packages/server/src/api.ts
+++ b/packages/server/src/api.ts
@@ -1,4 +1,4 @@
-import { makeDefaultApi } from "@opencode-ai/protocol/api"
+import { makeDefaultApi } from "@opencode/protocol/api"
import { LocationMiddleware } from "./location"
import { FormLocationMiddleware } from "./middleware/form-location"
import { SessionLocationMiddleware } from "./middleware/session-location"
diff --git a/packages/server/src/event-feed.ts b/packages/server/src/event-feed.ts
index 870ae221f4b..f22c393fe29 100644
--- a/packages/server/src/event-feed.ts
+++ b/packages/server/src/event-feed.ts
@@ -1,8 +1,8 @@
export * as EventFeed from "./event-feed"
-import { Bus } from "@opencode-ai/core/bus"
-import { Event } from "@opencode-ai/schema/event"
-import { isOpenCodeEvent, type OpenCodeEvent } from "@opencode-ai/protocol/groups/event"
+import { Bus } from "@opencode/core/bus"
+import { Event } from "@opencode/schema/event"
+import { isOpenCodeEvent, type OpenCodeEvent } from "@opencode/protocol/groups/event"
import { Cause, Context, Effect, Layer, Queue, Schema, Scope, Stream } from "effect"
export const SubscriberCapacity = 4_096
diff --git a/packages/server/src/fetch.ts b/packages/server/src/fetch.ts
index 2dbf7f36c1b..88a52634897 100644
--- a/packages/server/src/fetch.ts
+++ b/packages/server/src/fetch.ts
@@ -2,8 +2,8 @@ export * as ServerFetch from "./fetch"
import { Context, Effect, Layer } from "effect"
import { HttpEffect, HttpMiddleware, HttpRouter, HttpServer } from "effect/unstable/http"
-import { SessionRestart } from "@opencode-ai/core/session/execution/restart"
-import type { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { SessionRestart } from "@opencode/core/session/execution/restart"
+import type { LayerNode } from "@opencode/util/effect/layer-node"
import { isAllowedCorsOrigin } from "./cors"
import { createRoutes } from "./routes"
import type { ServerOptions } from "./options"
diff --git a/packages/server/src/handlers/agent.ts b/packages/server/src/handlers/agent.ts
index d395b01bb39..713cf3f6262 100644
--- a/packages/server/src/handlers/agent.ts
+++ b/packages/server/src/handlers/agent.ts
@@ -1,9 +1,9 @@
-import { Agent } from "@opencode-ai/core/agent"
+import { Agent } from "@opencode/core/agent"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
import { response } from "../location"
-import { AgentNotFoundError } from "@opencode-ai/protocol/errors"
+import { AgentNotFoundError } from "@opencode/protocol/errors"
export const AgentHandler = HttpApiBuilder.group(Api, "server.agent", (handlers) =>
handlers
diff --git a/packages/server/src/handlers/command.ts b/packages/server/src/handlers/command.ts
index 8e3f01b3c70..bf289721bc8 100644
--- a/packages/server/src/handlers/command.ts
+++ b/packages/server/src/handlers/command.ts
@@ -1,4 +1,4 @@
-import { Command } from "@opencode-ai/core/command"
+import { Command } from "@opencode/core/command"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
import { response } from "../location"
diff --git a/packages/server/src/handlers/config.ts b/packages/server/src/handlers/config.ts
index 1509c4ecd5f..176a3b71075 100644
--- a/packages/server/src/handlers/config.ts
+++ b/packages/server/src/handlers/config.ts
@@ -1,4 +1,4 @@
-import { Config } from "@opencode-ai/core/config"
+import { Config } from "@opencode/core/config"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/credential.ts b/packages/server/src/handlers/credential.ts
index 7ee746fbe13..cc7580f2980 100644
--- a/packages/server/src/handlers/credential.ts
+++ b/packages/server/src/handlers/credential.ts
@@ -1,4 +1,4 @@
-import { Integration } from "@opencode-ai/core/integration"
+import { Integration } from "@opencode/core/integration"
import { Effect } from "effect"
import { HttpApiBuilder, HttpApiSchema } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/debug.ts b/packages/server/src/handlers/debug.ts
index ec797c00321..dd5b83762f6 100644
--- a/packages/server/src/handlers/debug.ts
+++ b/packages/server/src/handlers/debug.ts
@@ -1,4 +1,4 @@
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
import { Effect, Option, RcMap } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/event.ts b/packages/server/src/handlers/event.ts
index a0d1b81cd3b..af1d26b5e41 100644
--- a/packages/server/src/handlers/event.ts
+++ b/packages/server/src/handlers/event.ts
@@ -1,5 +1,5 @@
-import { Bus } from "@opencode-ai/core/bus"
-import { Event } from "@opencode-ai/schema/event"
+import { Bus } from "@opencode/core/bus"
+import { Event } from "@opencode/schema/event"
import { Effect, Stream } from "effect"
import { HttpServerResponse } from "effect/unstable/http"
import { HttpApiBuilder } from "effect/unstable/httpapi"
diff --git a/packages/server/src/handlers/form.ts b/packages/server/src/handlers/form.ts
index 117fb5fc76d..9be44d32f20 100644
--- a/packages/server/src/handlers/form.ts
+++ b/packages/server/src/handlers/form.ts
@@ -1,14 +1,14 @@
-import { Form } from "@opencode-ai/core/form"
-import { Instance } from "@opencode-ai/core/instance/service"
-import { LocationServiceMap } from "@opencode-ai/core/location-services"
-import { Session } from "@opencode-ai/core/session"
+import { Form } from "@opencode/core/form"
+import { Instance } from "@opencode/core/instance/service"
+import { LocationServiceMap } from "@opencode/core/location-services"
+import { Session } from "@opencode/core/session"
import {
ConflictError,
FormAlreadySettledError,
FormInvalidAnswerError,
FormNotFoundError,
InvalidRequestError,
-} from "@opencode-ai/protocol/errors"
+} from "@opencode/protocol/errors"
import { Effect } from "effect"
import { HttpApiBuilder, HttpApiSchema } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/fs.ts b/packages/server/src/handlers/fs.ts
index d623f2d7e64..2bc6a33e7c1 100644
--- a/packages/server/src/handlers/fs.ts
+++ b/packages/server/src/handlers/fs.ts
@@ -1,5 +1,5 @@
-import { FileSystem } from "@opencode-ai/core/filesystem"
-import { RelativePath } from "@opencode-ai/core/schema"
+import { FileSystem } from "@opencode/core/filesystem"
+import { RelativePath } from "@opencode/core/schema"
import { Effect } from "effect"
import { HttpServerResponse } from "effect/unstable/http"
import { HttpApiBuilder } from "effect/unstable/httpapi"
diff --git a/packages/server/src/handlers/generate.ts b/packages/server/src/handlers/generate.ts
index 5de473b03ac..57fefbe1249 100644
--- a/packages/server/src/handlers/generate.ts
+++ b/packages/server/src/handlers/generate.ts
@@ -1,9 +1,9 @@
-import { Generate } from "@opencode-ai/core/generate"
-import { Location } from "@opencode-ai/core/location"
-import { LocationServiceMap } from "@opencode-ai/core/location-services"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { InvalidRequestError, ServiceUnavailableError } from "@opencode-ai/protocol/errors"
-import { Global } from "@opencode-ai/util/global"
+import { Generate } from "@opencode/core/generate"
+import { Location } from "@opencode/core/location"
+import { LocationServiceMap } from "@opencode/core/location-services"
+import { AbsolutePath } from "@opencode/core/schema"
+import { InvalidRequestError, ServiceUnavailableError } from "@opencode/protocol/errors"
+import { Global } from "@opencode/util/global"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/integration.ts b/packages/server/src/handlers/integration.ts
index 9143fb91377..150e10dbf40 100644
--- a/packages/server/src/handlers/integration.ts
+++ b/packages/server/src/handlers/integration.ts
@@ -1,10 +1,10 @@
-import { Integration } from "@opencode-ai/core/integration"
+import { Integration } from "@opencode/core/integration"
import { Effect } from "effect"
import { HttpApiBuilder, HttpApiSchema } from "effect/unstable/httpapi"
import { Api } from "../api"
-import { InvalidRequestError } from "@opencode-ai/protocol/errors"
+import { InvalidRequestError } from "@opencode/protocol/errors"
import { response } from "../location"
-import { WellKnown } from "@opencode-ai/core/wellknown"
+import { WellKnown } from "@opencode/core/wellknown"
const authorize = (effect: Effect.Effect) =>
effect.pipe(
diff --git a/packages/server/src/handlers/location.ts b/packages/server/src/handlers/location.ts
index ded8c8c2e0a..24732444ac0 100644
--- a/packages/server/src/handlers/location.ts
+++ b/packages/server/src/handlers/location.ts
@@ -1,4 +1,4 @@
-import { Location } from "@opencode-ai/core/location"
+import { Location } from "@opencode/core/location"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/mcp.ts b/packages/server/src/handlers/mcp.ts
index b52ae637808..47933234585 100644
--- a/packages/server/src/handlers/mcp.ts
+++ b/packages/server/src/handlers/mcp.ts
@@ -1,5 +1,5 @@
-import { Mcp } from "@opencode-ai/core/mcp/index"
-import { McpServerNotFoundError } from "@opencode-ai/protocol/errors"
+import { Mcp } from "@opencode/core/mcp/index"
+import { McpServerNotFoundError } from "@opencode/protocol/errors"
import { Effect } from "effect"
import { HttpApiBuilder, HttpApiSchema } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/message.ts b/packages/server/src/handlers/message.ts
index 6339e6f9427..cfc6b6deee5 100644
--- a/packages/server/src/handlers/message.ts
+++ b/packages/server/src/handlers/message.ts
@@ -1,9 +1,9 @@
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { Session } from "@opencode-ai/core/session"
+import { SessionMessage } from "@opencode/core/session/message"
+import { Session } from "@opencode/core/session"
import { Effect, Schema } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
-import { InvalidCursorError } from "@opencode-ai/protocol/errors"
+import { InvalidCursorError } from "@opencode/protocol/errors"
import { failedMessageDecode, missingSession } from "./session-error"
const DefaultMessagesLimit = 50
diff --git a/packages/server/src/handlers/migration.ts b/packages/server/src/handlers/migration.ts
index 230f69d73e4..1c287560050 100644
--- a/packages/server/src/handlers/migration.ts
+++ b/packages/server/src/handlers/migration.ts
@@ -1,4 +1,4 @@
-import { V1Migration } from "@opencode-ai/core/database/v1-migration"
+import { V1Migration } from "@opencode/core/database/v1-migration"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Effect } from "effect"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/model.ts b/packages/server/src/handlers/model.ts
index 5059804354b..aebb3b42a54 100644
--- a/packages/server/src/handlers/model.ts
+++ b/packages/server/src/handlers/model.ts
@@ -1,4 +1,4 @@
-import { Catalog } from "@opencode-ai/core/catalog"
+import { Catalog } from "@opencode/core/catalog"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/permission.ts b/packages/server/src/handlers/permission.ts
index 84267664b44..823b5fcac97 100644
--- a/packages/server/src/handlers/permission.ts
+++ b/packages/server/src/handlers/permission.ts
@@ -1,12 +1,12 @@
-import { Instance } from "@opencode-ai/core/instance/service"
-import { Location } from "@opencode-ai/core/location"
-import { Permission } from "@opencode-ai/core/permission"
-import { PermissionSaved } from "@opencode-ai/core/permission/saved"
-import { Session } from "@opencode-ai/core/session"
+import { Instance } from "@opencode/core/instance/service"
+import { Location } from "@opencode/core/location"
+import { Permission } from "@opencode/core/permission"
+import { PermissionSaved } from "@opencode/core/permission/saved"
+import { Session } from "@opencode/core/session"
import { Effect } from "effect"
import { HttpApiBuilder, HttpApiSchema } from "effect/unstable/httpapi"
import { Api } from "../api"
-import { PermissionNotFoundError } from "@opencode-ai/protocol/errors"
+import { PermissionNotFoundError } from "@opencode/protocol/errors"
import { response, sessionInfo } from "../location"
import { missingSession } from "./session-error"
diff --git a/packages/server/src/handlers/persistent-pty.ts b/packages/server/src/handlers/persistent-pty.ts
index d12ada7bba0..76aa3a025bf 100644
--- a/packages/server/src/handlers/persistent-pty.ts
+++ b/packages/server/src/handlers/persistent-pty.ts
@@ -1,11 +1,11 @@
-import { PersistentPty } from "@opencode-ai/core/persistent-pty"
-import { PtyTicket } from "@opencode-ai/core/pty/ticket"
-import { ForbiddenError, PtyNotFoundError, ServiceUnavailableError } from "@opencode-ai/protocol/errors"
+import { PersistentPty } from "@opencode/core/persistent-pty"
+import { PtyTicket } from "@opencode/core/pty/ticket"
+import { ForbiddenError, PtyNotFoundError, ServiceUnavailableError } from "@opencode/protocol/errors"
import {
PTY_CONNECT_TICKET_QUERY,
PTY_CONNECT_TOKEN_HEADER,
PTY_CONNECT_TOKEN_HEADER_VALUE,
-} from "@opencode-ai/protocol/groups/persistent-pty"
+} from "@opencode/protocol/groups/persistent-pty"
import { Effect, Queue, Semaphore } from "effect"
import { HttpServerRequest, HttpServerResponse } from "effect/unstable/http"
import { HttpApiBuilder, HttpApiSchema } from "effect/unstable/httpapi"
diff --git a/packages/server/src/handlers/plugin.ts b/packages/server/src/handlers/plugin.ts
index 6615fd980d1..8e60a54c45b 100644
--- a/packages/server/src/handlers/plugin.ts
+++ b/packages/server/src/handlers/plugin.ts
@@ -1,6 +1,6 @@
-import { Plugin } from "@opencode-ai/core/plugin"
-import { PluginUpdate } from "@opencode-ai/core/plugin/update"
-import { InvalidRequestError, ServiceUnavailableError } from "@opencode-ai/protocol/errors"
+import { Plugin } from "@opencode/core/plugin"
+import { PluginUpdate } from "@opencode/core/plugin/update"
+import { InvalidRequestError, ServiceUnavailableError } from "@opencode/protocol/errors"
import { Cause, Effect, Exit } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/project.ts b/packages/server/src/handlers/project.ts
index e5e58a74914..467183eb235 100644
--- a/packages/server/src/handlers/project.ts
+++ b/packages/server/src/handlers/project.ts
@@ -1,9 +1,9 @@
-import { Location } from "@opencode-ai/core/location"
-import { Project } from "@opencode-ai/core/project"
+import { Location } from "@opencode/core/location"
+import { Project } from "@opencode/core/project"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
-import { ProjectNotFoundError } from "@opencode-ai/protocol/errors"
+import { ProjectNotFoundError } from "@opencode/protocol/errors"
export const ProjectHandler = HttpApiBuilder.group(Api, "server.project", (handlers) =>
handlers
diff --git a/packages/server/src/handlers/provider.ts b/packages/server/src/handlers/provider.ts
index 35945eede6e..3a9b70c2c7b 100644
--- a/packages/server/src/handlers/provider.ts
+++ b/packages/server/src/handlers/provider.ts
@@ -1,5 +1,5 @@
-import { Catalog } from "@opencode-ai/core/catalog"
-import { ProviderNotFoundError } from "@opencode-ai/protocol/errors"
+import { Catalog } from "@opencode/core/catalog"
+import { ProviderNotFoundError } from "@opencode/protocol/errors"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/pty.ts b/packages/server/src/handlers/pty.ts
index 48a90e497b5..4e8f922edbb 100644
--- a/packages/server/src/handlers/pty.ts
+++ b/packages/server/src/handlers/pty.ts
@@ -1,19 +1,19 @@
-import { Pty } from "@opencode-ai/core/pty"
-import { PtyProtocol } from "@opencode-ai/core/pty/protocol"
-import { PtyTicket } from "@opencode-ai/core/pty/ticket"
-import { Location } from "@opencode-ai/core/location"
+import { Pty } from "@opencode/core/pty"
+import { PtyProtocol } from "@opencode/core/pty/protocol"
+import { PtyTicket } from "@opencode/core/pty/ticket"
+import { Location } from "@opencode/core/location"
import { Effect, Queue } from "effect"
import { HttpServerRequest, HttpServerResponse } from "effect/unstable/http"
import { HttpApiBuilder, HttpApiSchema } from "effect/unstable/httpapi"
import { Socket } from "effect/unstable/socket"
import { Api } from "../api"
import { CorsConfig, isAllowedRequestOrigin } from "../cors"
-import { ForbiddenError, PtyNotFoundError } from "@opencode-ai/protocol/errors"
+import { ForbiddenError, PtyNotFoundError } from "@opencode/protocol/errors"
import {
PTY_CONNECT_TICKET_QUERY,
PTY_CONNECT_TOKEN_HEADER,
PTY_CONNECT_TOKEN_HEADER_VALUE,
-} from "@opencode-ai/protocol/groups/pty"
+} from "@opencode/protocol/groups/pty"
import { response } from "../location"
import { PtyEnvironment } from "../pty-environment"
import { runPtySocket } from "./pty-socket"
diff --git a/packages/server/src/handlers/reference.ts b/packages/server/src/handlers/reference.ts
index 543c9790dc8..3fb20bc328c 100644
--- a/packages/server/src/handlers/reference.ts
+++ b/packages/server/src/handlers/reference.ts
@@ -1,4 +1,4 @@
-import { Reference } from "@opencode-ai/core/reference"
+import { Reference } from "@opencode/core/reference"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
import { response } from "../location"
diff --git a/packages/server/src/handlers/rpc.ts b/packages/server/src/handlers/rpc.ts
index 27f1e04a17c..a0bd96a28e7 100644
--- a/packages/server/src/handlers/rpc.ts
+++ b/packages/server/src/handlers/rpc.ts
@@ -1,6 +1,6 @@
-import { Rpc } from "@opencode-ai/core/rpc"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { RpcError, RpcInternalError } from "@opencode-ai/protocol/errors"
+import { Rpc } from "@opencode/core/rpc"
+import { Plugin } from "@opencode/core/plugin"
+import { RpcError, RpcInternalError } from "@opencode/protocol/errors"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/session-error.ts b/packages/server/src/handlers/session-error.ts
index 65be0f03cee..8dd6c75d9f7 100644
--- a/packages/server/src/handlers/session-error.ts
+++ b/packages/server/src/handlers/session-error.ts
@@ -1,5 +1,5 @@
-import { Session } from "@opencode-ai/core/session"
-import { SessionNotFoundError, UnknownError } from "@opencode-ai/protocol/errors"
+import { Session } from "@opencode/core/session"
+import { SessionNotFoundError, UnknownError } from "@opencode/protocol/errors"
import { Effect } from "effect"
export function missingSession(error: Session.NotFoundError) {
diff --git a/packages/server/src/handlers/session.ts b/packages/server/src/handlers/session.ts
index a8e8db9ba31..34574967098 100644
--- a/packages/server/src/handlers/session.ts
+++ b/packages/server/src/handlers/session.ts
@@ -1,12 +1,12 @@
-import { Session } from "@opencode-ai/core/session"
-import { SessionStats } from "@opencode-ai/core/session/stats"
-import { SessionTitle } from "@opencode-ai/core/session/title"
-import { SessionTransfer } from "@opencode-ai/core/session/transfer"
-import { InstructionEntry } from "@opencode-ai/core/session/instruction-entry"
+import { Session } from "@opencode/core/session"
+import { SessionStats } from "@opencode/core/session/stats"
+import { SessionTitle } from "@opencode/core/session/title"
+import { SessionTransfer } from "@opencode/core/session/transfer"
+import { InstructionEntry } from "@opencode/core/session/instruction-entry"
import { DateTime, Effect, Stream } from "effect"
import { HttpApiBuilder, HttpApiSchema } from "effect/unstable/httpapi"
import { Api } from "../api"
-import { SessionsCursor } from "@opencode-ai/protocol/groups/session"
+import { SessionsCursor } from "@opencode/protocol/groups/session"
import {
ConflictError,
CommandExecutionError,
@@ -18,8 +18,8 @@ import {
SessionBusyError,
SkillNotFoundError,
UnknownError,
-} from "@opencode-ai/protocol/errors"
-import { AbsolutePath } from "@opencode-ai/core/schema"
+} from "@opencode/protocol/errors"
+import { AbsolutePath } from "@opencode/core/schema"
import { failedMessageDecode, missingSession } from "./session-error"
const DefaultSessionsLimit = 50
diff --git a/packages/server/src/handlers/shell.ts b/packages/server/src/handlers/shell.ts
index 96d7530cd81..c53480fbd89 100644
--- a/packages/server/src/handlers/shell.ts
+++ b/packages/server/src/handlers/shell.ts
@@ -1,8 +1,8 @@
-import { Shell } from "@opencode-ai/core/shell"
-import { Location } from "@opencode-ai/core/location"
+import { Shell } from "@opencode/core/shell"
+import { Location } from "@opencode/core/location"
import { Effect } from "effect"
import { HttpApiBuilder, HttpApiSchema } from "effect/unstable/httpapi"
-import { ShellNotFoundError } from "@opencode-ai/protocol/errors"
+import { ShellNotFoundError } from "@opencode/protocol/errors"
import { Api } from "../api"
import { response } from "../location"
diff --git a/packages/server/src/handlers/skill.ts b/packages/server/src/handlers/skill.ts
index 2b22851253d..a0cba465d33 100644
--- a/packages/server/src/handlers/skill.ts
+++ b/packages/server/src/handlers/skill.ts
@@ -1,4 +1,4 @@
-import { Skill } from "@opencode-ai/core/skill"
+import { Skill } from "@opencode/core/skill"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
import { response } from "../location"
diff --git a/packages/server/src/handlers/vcs.ts b/packages/server/src/handlers/vcs.ts
index 3d4ee269bac..2c0fbd8c07f 100644
--- a/packages/server/src/handlers/vcs.ts
+++ b/packages/server/src/handlers/vcs.ts
@@ -1,5 +1,5 @@
-import { Vcs } from "@opencode-ai/core/vcs"
-import { ServiceUnavailableError } from "@opencode-ai/protocol/errors"
+import { Vcs } from "@opencode/core/vcs"
+import { ServiceUnavailableError } from "@opencode/protocol/errors"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/websearch.ts b/packages/server/src/handlers/websearch.ts
index 71979d77d9d..bb838a6173c 100644
--- a/packages/server/src/handlers/websearch.ts
+++ b/packages/server/src/handlers/websearch.ts
@@ -1,5 +1,5 @@
-import { WebSearch } from "@opencode-ai/core/websearch"
-import { InvalidRequestError, ServiceUnavailableError } from "@opencode-ai/protocol/errors"
+import { WebSearch } from "@opencode/core/websearch"
+import { InvalidRequestError, ServiceUnavailableError } from "@opencode/protocol/errors"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/workspace.ts b/packages/server/src/handlers/workspace.ts
index 6ef6597fc6b..ff25059f6ce 100644
--- a/packages/server/src/handlers/workspace.ts
+++ b/packages/server/src/handlers/workspace.ts
@@ -1,5 +1,5 @@
-import { Workspace } from "@opencode-ai/core/workspace"
-import { ConflictError, ProviderNotFoundError, UnknownError } from "@opencode-ai/protocol/errors"
+import { Workspace } from "@opencode/core/workspace"
+import { ConflictError, ProviderNotFoundError, UnknownError } from "@opencode/protocol/errors"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/handlers/worktree.ts b/packages/server/src/handlers/worktree.ts
index 8eaebc80d3b..139c16871fa 100644
--- a/packages/server/src/handlers/worktree.ts
+++ b/packages/server/src/handlers/worktree.ts
@@ -1,7 +1,7 @@
-import { Git } from "@opencode-ai/core/git"
-import { Worktree } from "@opencode-ai/core/worktree"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { WorktreeError } from "@opencode-ai/protocol/groups/worktree"
+import { Git } from "@opencode/core/git"
+import { Worktree } from "@opencode/core/worktree"
+import { Plugin } from "@opencode/core/plugin"
+import { WorktreeError } from "@opencode/protocol/groups/worktree"
import { Effect } from "effect"
import { HttpApiBuilder, HttpApiSchema } from "effect/unstable/httpapi"
import { Api } from "../api"
diff --git a/packages/server/src/location.ts b/packages/server/src/location.ts
index 7dd5b867df8..2222e7a127e 100644
--- a/packages/server/src/location.ts
+++ b/packages/server/src/location.ts
@@ -1,9 +1,9 @@
-import { Location } from "@opencode-ai/core/location"
-import { LocationServiceMap } from "@opencode-ai/core/location-services"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { Workspace } from "@opencode-ai/core/workspace"
-import { InvalidRequestError } from "@opencode-ai/protocol/errors"
+import { Location } from "@opencode/core/location"
+import { LocationServiceMap } from "@opencode/core/location-services"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { Workspace } from "@opencode/core/workspace"
+import { InvalidRequestError } from "@opencode/protocol/errors"
import { Effect, Layer, Schema } from "effect"
import { HttpServerRequest } from "effect/unstable/http"
import { HttpApiMiddleware } from "effect/unstable/httpapi"
diff --git a/packages/server/src/middleware/authorization.ts b/packages/server/src/middleware/authorization.ts
index a4c60fb2152..b4255f02769 100644
--- a/packages/server/src/middleware/authorization.ts
+++ b/packages/server/src/middleware/authorization.ts
@@ -1,9 +1,9 @@
import { ServerAuth } from "../auth"
-import { UnauthorizedError } from "@opencode-ai/protocol/errors"
-import { Authorization } from "@opencode-ai/protocol/middleware/authorization"
-export { Authorization } from "@opencode-ai/protocol/middleware/authorization"
-import { hasPtyConnectTicketURL } from "@opencode-ai/protocol/groups/pty"
-import { hasPersistentPtyConnectTicketURL } from "@opencode-ai/protocol/groups/persistent-pty"
+import { UnauthorizedError } from "@opencode/protocol/errors"
+import { Authorization } from "@opencode/protocol/middleware/authorization"
+export { Authorization } from "@opencode/protocol/middleware/authorization"
+import { hasPtyConnectTicketURL } from "@opencode/protocol/groups/pty"
+import { hasPersistentPtyConnectTicketURL } from "@opencode/protocol/groups/persistent-pty"
import { Effect, Encoding, Layer, Redacted } from "effect"
import { HttpEffect, HttpServerRequest, HttpServerResponse } from "effect/unstable/http"
diff --git a/packages/server/src/middleware/form-location.ts b/packages/server/src/middleware/form-location.ts
index d089d20f407..dc18de75fbd 100644
--- a/packages/server/src/middleware/form-location.ts
+++ b/packages/server/src/middleware/form-location.ts
@@ -1,7 +1,7 @@
-import { Instance } from "@opencode-ai/core/instance/service"
-import { LocationServiceMap } from "@opencode-ai/core/location-services"
-import { Session } from "@opencode-ai/core/session"
-import { InvalidRequestError, SessionNotFoundError } from "@opencode-ai/protocol/errors"
+import { Instance } from "@opencode/core/instance/service"
+import { LocationServiceMap } from "@opencode/core/location-services"
+import { Session } from "@opencode/core/session"
+import { InvalidRequestError, SessionNotFoundError } from "@opencode/protocol/errors"
import { Effect, Layer } from "effect"
import { HttpRouter, HttpServerRequest } from "effect/unstable/http"
import { HttpApiMiddleware } from "effect/unstable/httpapi"
diff --git a/packages/server/src/middleware/schema-error.ts b/packages/server/src/middleware/schema-error.ts
index 37013285b9d..6762cd46161 100644
--- a/packages/server/src/middleware/schema-error.ts
+++ b/packages/server/src/middleware/schema-error.ts
@@ -1,8 +1,8 @@
import { Effect } from "effect"
import { HttpApiMiddleware } from "effect/unstable/httpapi"
-import { InvalidRequestError } from "@opencode-ai/protocol/errors"
-import { SchemaErrorMiddleware } from "@opencode-ai/protocol/middleware/schema-error"
-export { SchemaErrorMiddleware } from "@opencode-ai/protocol/middleware/schema-error"
+import { InvalidRequestError } from "@opencode/protocol/errors"
+import { SchemaErrorMiddleware } from "@opencode/protocol/middleware/schema-error"
+export { SchemaErrorMiddleware } from "@opencode/protocol/middleware/schema-error"
const REASON_LIMIT = 1024
diff --git a/packages/server/src/middleware/session-location.ts b/packages/server/src/middleware/session-location.ts
index b0f91ab4989..f3a9a223448 100644
--- a/packages/server/src/middleware/session-location.ts
+++ b/packages/server/src/middleware/session-location.ts
@@ -1,9 +1,9 @@
-import { Instance } from "@opencode-ai/core/instance/service"
-import { Session } from "@opencode-ai/core/session"
+import { Instance } from "@opencode/core/instance/service"
+import { Session } from "@opencode/core/session"
import { Effect, Layer } from "effect"
import { HttpRouter } from "effect/unstable/http"
import { HttpApiMiddleware } from "effect/unstable/httpapi"
-import { InvalidRequestError, SessionNotFoundError } from "@opencode-ai/protocol/errors"
+import { InvalidRequestError, SessionNotFoundError } from "@opencode/protocol/errors"
import { sessionInfo, type LocationServices } from "../location"
export class SessionLocationMiddleware extends HttpApiMiddleware.Service<
diff --git a/packages/server/src/options.ts b/packages/server/src/options.ts
index c7bd5ef0b88..489006a3623 100644
--- a/packages/server/src/options.ts
+++ b/packages/server/src/options.ts
@@ -1,6 +1,6 @@
-import { Database } from "@opencode-ai/core/database/database"
-import { ModelsDev } from "@opencode-ai/core/models-dev"
-import { PersistentPty } from "@opencode-ai/core/persistent-pty"
+import { Database } from "@opencode/core/database/database"
+import { ModelsDev } from "@opencode/core/models-dev"
+import { PersistentPty } from "@opencode/core/persistent-pty"
import { Schema } from "effect"
export const ServerOptions = Schema.Struct({
diff --git a/packages/server/src/process.ts b/packages/server/src/process.ts
index 87157304913..47c691136c4 100644
--- a/packages/server/src/process.ts
+++ b/packages/server/src/process.ts
@@ -1,11 +1,11 @@
export * as ServerProcess from "./process"
import { NodeHttpServer } from "@effect/platform-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { SessionRestart } from "@opencode-ai/core/session/execution/restart"
-import { InstallationEvent } from "@opencode-ai/schema/installation-event"
-import { hasPtyConnectTicketURL } from "@opencode-ai/protocol/groups/pty"
-import { hasPersistentPtyConnectTicketURL } from "@opencode-ai/protocol/groups/persistent-pty"
+import { Bus } from "@opencode/core/bus"
+import { SessionRestart } from "@opencode/core/session/execution/restart"
+import { InstallationEvent } from "@opencode/schema/installation-event"
+import { hasPtyConnectTicketURL } from "@opencode/protocol/groups/pty"
+import { hasPersistentPtyConnectTicketURL } from "@opencode/protocol/groups/persistent-pty"
import { Cause, Context, Effect, Exit, Latch, Layer, Option, Ref, Scope } from "effect"
import {
HttpMiddleware,
diff --git a/packages/server/src/pty-environment.ts b/packages/server/src/pty-environment.ts
index 0d8e3381a5a..c93854e89fe 100644
--- a/packages/server/src/pty-environment.ts
+++ b/packages/server/src/pty-environment.ts
@@ -1,7 +1,7 @@
export * as PtyEnvironment from "./pty-environment"
import { Context, Effect, Layer } from "effect"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
export interface Interface {
readonly get: (input: { directory: string; cwd: string }) => Effect.Effect>
diff --git a/packages/server/src/routes.ts b/packages/server/src/routes.ts
index 5598557d971..274e61a0edc 100644
--- a/packages/server/src/routes.ts
+++ b/packages/server/src/routes.ts
@@ -1,36 +1,36 @@
-import { Database } from "@opencode-ai/core/database/database"
-import { V1Migration } from "@opencode-ai/core/database/v1-migration"
-import { App } from "@opencode-ai/core/app"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Node } from "@opencode-ai/util/effect/app-node"
-import { httpClient } from "@opencode-ai/util/effect/app-node-platform"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Bus } from "@opencode-ai/core/bus"
-import { EventLogger } from "@opencode-ai/core/event-logger"
-import { FileSystemSearch } from "@opencode-ai/core/filesystem/search"
-import { Credential } from "@opencode-ai/core/credential"
-import { Config } from "@opencode-ai/core/config"
-import { PermissionSaved } from "@opencode-ai/core/permission/saved"
-import { PtyTicket } from "@opencode-ai/core/pty/ticket"
-import { PersistentPty } from "@opencode-ai/core/persistent-pty"
-import { Project } from "@opencode-ai/core/project"
-import { Session } from "@opencode-ai/core/session"
-import { Instance } from "@opencode-ai/core/instance/service"
-import { SessionTransfer } from "@opencode-ai/core/session/transfer"
-import { ShellSelect } from "@opencode-ai/core/shell/select"
-import { Job } from "@opencode-ai/core/job"
-import { Mcp } from "@opencode-ai/core/mcp/index"
-import { Global } from "@opencode-ai/util/global"
-import { InstructionDiscovery } from "@opencode-ai/core/instruction-discovery"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import { LocationActivity } from "@opencode-ai/core/location-activity"
-import { ModelsDev } from "@opencode-ai/core/models-dev"
-import { SessionRestart } from "@opencode-ai/core/session/execution/restart"
-import { PluginUpdate } from "@opencode-ai/core/plugin/update"
-import { SdkPlugins } from "@opencode-ai/core/plugin/sdk"
-import { WellKnown } from "@opencode-ai/core/wellknown"
-import { Workspace } from "@opencode-ai/core/workspace"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
+import { Database } from "@opencode/core/database/database"
+import { V1Migration } from "@opencode/core/database/v1-migration"
+import { App } from "@opencode/core/app"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Node } from "@opencode/util/effect/app-node"
+import { httpClient } from "@opencode/util/effect/app-node-platform"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Bus } from "@opencode/core/bus"
+import { EventLogger } from "@opencode/core/event-logger"
+import { FileSystemSearch } from "@opencode/core/filesystem/search"
+import { Credential } from "@opencode/core/credential"
+import { Config } from "@opencode/core/config"
+import { PermissionSaved } from "@opencode/core/permission/saved"
+import { PtyTicket } from "@opencode/core/pty/ticket"
+import { PersistentPty } from "@opencode/core/persistent-pty"
+import { Project } from "@opencode/core/project"
+import { Session } from "@opencode/core/session"
+import { Instance } from "@opencode/core/instance/service"
+import { SessionTransfer } from "@opencode/core/session/transfer"
+import { ShellSelect } from "@opencode/core/shell/select"
+import { Job } from "@opencode/core/job"
+import { Mcp } from "@opencode/core/mcp/index"
+import { Global } from "@opencode/util/global"
+import { InstructionDiscovery } from "@opencode/core/instruction-discovery"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import { LocationActivity } from "@opencode/core/location-activity"
+import { ModelsDev } from "@opencode/core/models-dev"
+import { SessionRestart } from "@opencode/core/session/execution/restart"
+import { PluginUpdate } from "@opencode/core/plugin/update"
+import { SdkPlugins } from "@opencode/core/plugin/sdk"
+import { WellKnown } from "@opencode/core/wellknown"
+import { Workspace } from "@opencode/core/workspace"
+import { Watcher } from "@opencode/core/filesystem/watcher"
import { HttpRouter } from "effect/unstable/http"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Context, Effect, Layer, Option } from "effect"
@@ -147,7 +147,7 @@ function makeRoutes(
const serviceLayer = options.simulation
? Layer.unwrap(
Effect.gen(function* () {
- const { simulationReplacements } = yield* Effect.promise(() => import("@opencode-ai/simulation/backend"))
+ const { simulationReplacements } = yield* Effect.promise(() => import("@opencode/simulation/backend"))
const simulation = yield* simulationReplacements({ version: App.make(options.app).version })
return build([...overrides, ...simulation])
}),
diff --git a/packages/server/src/server-info.ts b/packages/server/src/server-info.ts
index 1f4f8c5afa7..278de0d8b38 100644
--- a/packages/server/src/server-info.ts
+++ b/packages/server/src/server-info.ts
@@ -5,7 +5,7 @@ import type { ServerOptions } from "./options"
export class Service extends Context.Service<
Service,
{ readonly urls: () => ReadonlyArray; readonly app: NonNullable }
->()("@opencode-ai/server/ServerInfo") {}
+>()("@opencode/server/ServerInfo") {}
export function layer(urls: () => ReadonlyArray, app: ServerOptions["app"] = {}) {
return Layer.succeed(Service, Service.of({ urls, app }))
diff --git a/packages/server/src/workerd.ts b/packages/server/src/workerd.ts
index 2d2e23f865e..77fc1daef03 100644
--- a/packages/server/src/workerd.ts
+++ b/packages/server/src/workerd.ts
@@ -1,18 +1,18 @@
export * as ServerWorkerd from "./workerd"
import { Effect, Layer } from "effect"
-import { ConfigPluginSource } from "@opencode-ai/core/config/plugin/source"
-import { Database } from "@opencode-ai/core/database/database"
-import { sqliteLayer } from "@opencode-ai/core/database/sqlite.workerd"
-import type { DurableObjectStorage } from "@opencode-ai/core/database/sqlite.workerd"
-import { EnvironmentUnavailable } from "@opencode-ai/core/environment/unavailable"
-import { FileSystem } from "@opencode-ai/core/filesystem"
-import { FileSystemSearch } from "@opencode-ai/core/filesystem/search"
-import { Pty } from "@opencode-ai/core/pty"
-import { Snapshot } from "@opencode-ai/core/snapshot"
-import { Vcs } from "@opencode-ai/core/vcs"
-import { CrossSpawnSpawner } from "@opencode-ai/util/cross-spawn-spawner"
-import type { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { ConfigPluginSource } from "@opencode/core/config/plugin/source"
+import { Database } from "@opencode/core/database/database"
+import { sqliteLayer } from "@opencode/core/database/sqlite.workerd"
+import type { DurableObjectStorage } from "@opencode/core/database/sqlite.workerd"
+import { EnvironmentUnavailable } from "@opencode/core/environment/unavailable"
+import { FileSystem } from "@opencode/core/filesystem"
+import { FileSystemSearch } from "@opencode/core/filesystem/search"
+import { Pty } from "@opencode/core/pty"
+import { Snapshot } from "@opencode/core/snapshot"
+import { Vcs } from "@opencode/core/vcs"
+import { CrossSpawnSpawner } from "@opencode/util/cross-spawn-spawner"
+import type { LayerNode } from "@opencode/util/effect/layer-node"
import { ServerFetch } from "./fetch"
import type { ServerOptions } from "./options"
diff --git a/packages/server/test/auth.test.ts b/packages/server/test/auth.test.ts
index 1000103a42b..7a94f23e48d 100644
--- a/packages/server/test/auth.test.ts
+++ b/packages/server/test/auth.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import { ServerAuth } from "@opencode-ai/server/auth"
+import { ServerAuth } from "@opencode/server/auth"
import { Option, Redacted } from "effect"
test("accepts only the fixed opencode username", () => {
diff --git a/packages/server/test/config.test.ts b/packages/server/test/config.test.ts
index 01086b2394b..fc4301e0782 100644
--- a/packages/server/test/config.test.ts
+++ b/packages/server/test/config.test.ts
@@ -1,12 +1,12 @@
import fs from "node:fs/promises"
import path from "node:path"
import { expect } from "bun:test"
-import { Config } from "@opencode-ai/schema/config"
+import { Config } from "@opencode/schema/config"
import { Effect, Schema } from "effect"
import { tmpdir } from "../../core/test/fixture/tmpdir"
import { it } from "../../core/test/lib/effect"
import { startServer } from "./fixture/server"
-import { AbsolutePath } from "@opencode-ai/schema/schema"
+import { AbsolutePath } from "@opencode/schema/schema"
it.live("returns ordered config entries for the requested directory", () =>
Effect.gen(function* () {
diff --git a/packages/server/test/event-feed.test.ts b/packages/server/test/event-feed.test.ts
index e7443b01222..861546f2d76 100644
--- a/packages/server/test/event-feed.test.ts
+++ b/packages/server/test/event-feed.test.ts
@@ -1,9 +1,9 @@
import { describe, expect, test } from "bun:test"
-import { Agent } from "@opencode-ai/core/agent"
-import { Bus } from "@opencode-ai/core/bus"
-import { Credential } from "@opencode-ai/schema/credential"
-import { Event } from "@opencode-ai/schema/event"
-import { IntegrationID } from "@opencode-ai/schema/integration-id"
+import { Agent } from "@opencode/core/agent"
+import { Bus } from "@opencode/core/bus"
+import { Credential } from "@opencode/schema/credential"
+import { Event } from "@opencode/schema/event"
+import { IntegrationID } from "@opencode/schema/integration-id"
import { Deferred, Effect, Exit, Fiber, Option, Schema, Stream } from "effect"
import { it } from "../../core/test/lib/effect"
import { EventFeed } from "../src/event-feed"
diff --git a/packages/server/test/fetch.test.ts b/packages/server/test/fetch.test.ts
index 5f34a1ee9ff..e6df1b5dca8 100644
--- a/packages/server/test/fetch.test.ts
+++ b/packages/server/test/fetch.test.ts
@@ -1,10 +1,10 @@
import { expect } from "bun:test"
import { createServer } from "node:http"
-import { makeMemoryDriver } from "@opencode-ai/core/environment/index"
-import { Workspace } from "@opencode-ai/core/workspace"
-import { WorkspaceDriver } from "@opencode-ai/core/workspace/driver"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Integration } from "@opencode-ai/schema/integration"
+import { makeMemoryDriver } from "@opencode/core/environment/index"
+import { Workspace } from "@opencode/core/workspace"
+import { WorkspaceDriver } from "@opencode/core/workspace/driver"
+import { Agent } from "@opencode/schema/agent"
+import { Integration } from "@opencode/schema/integration"
import { Effect, Schedule, Schema } from "effect"
import { tmpdir } from "../../core/test/fixture/tmpdir"
import { it } from "../../core/test/lib/effect"
diff --git a/packages/server/test/fixture/worktree-delegate/index.ts b/packages/server/test/fixture/worktree-delegate/index.ts
index d56342b8ce9..32a75ca11e8 100644
--- a/packages/server/test/fixture/worktree-delegate/index.ts
+++ b/packages/server/test/fixture/worktree-delegate/index.ts
@@ -1,4 +1,4 @@
-import { Plugin } from "@opencode-ai/plugin"
+import { Plugin } from "@opencode/plugin"
export default Plugin.define({
id: "test.worktree-delegate",
diff --git a/packages/server/test/fixture/worktree-plugin/index.ts b/packages/server/test/fixture/worktree-plugin/index.ts
index b49b89a8c89..542a5e74429 100644
--- a/packages/server/test/fixture/worktree-plugin/index.ts
+++ b/packages/server/test/fixture/worktree-plugin/index.ts
@@ -1,4 +1,4 @@
-import { Plugin, Worktree } from "@opencode-ai/plugin"
+import { Plugin, Worktree } from "@opencode/plugin"
export default Plugin.define({
id: "test.worktree",
diff --git a/packages/server/test/generate.test.ts b/packages/server/test/generate.test.ts
index cb0a8f57bbf..c0983e8353b 100644
--- a/packages/server/test/generate.test.ts
+++ b/packages/server/test/generate.test.ts
@@ -1,9 +1,9 @@
import fs from "node:fs/promises"
import path from "node:path"
import { expect } from "bun:test"
-import { Config } from "@opencode-ai/core/config"
-import { Generate } from "@opencode-ai/core/generate"
-import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
+import { Config } from "@opencode/core/config"
+import { Generate } from "@opencode/core/generate"
+import { makeLocationNode } from "@opencode/util/effect/app-node"
import { Effect, Layer, Predicate } from "effect"
import { tmpdir } from "../../core/test/fixture/tmpdir"
import { it } from "../../core/test/lib/effect"
diff --git a/packages/server/test/handler-policy.test.ts b/packages/server/test/handler-policy.test.ts
index 89d87ccac68..d5beac089f2 100644
--- a/packages/server/test/handler-policy.test.ts
+++ b/packages/server/test/handler-policy.test.ts
@@ -1,6 +1,6 @@
-import { Session } from "@opencode-ai/core/session"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { SessionNotFoundError, UnknownError } from "@opencode-ai/protocol/errors"
+import { Session } from "@opencode/core/session"
+import { SessionMessage } from "@opencode/core/session/message"
+import { SessionNotFoundError, UnknownError } from "@opencode/protocol/errors"
import { expect, test } from "bun:test"
import { Effect, Logger, References } from "effect"
import { failedMessageDecode, missingSession } from "../src/handlers/session-error"
diff --git a/packages/server/test/options.test.ts b/packages/server/test/options.test.ts
index d41327b7121..1da08f031b9 100644
--- a/packages/server/test/options.test.ts
+++ b/packages/server/test/options.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import { ServerOptions } from "@opencode-ai/server/options"
+import { ServerOptions } from "@opencode/server/options"
import { Option, Schema } from "effect"
const decode = Schema.decodeUnknownOption(ServerOptions)
diff --git a/packages/server/test/persistent-pty.test.ts b/packages/server/test/persistent-pty.test.ts
index 6a1708a67ac..1d4b85fe9aa 100644
--- a/packages/server/test/persistent-pty.test.ts
+++ b/packages/server/test/persistent-pty.test.ts
@@ -3,8 +3,8 @@ import fs from "node:fs/promises"
import os from "node:os"
import path from "node:path"
import { expect } from "bun:test"
-import { PersistentPty } from "@opencode-ai/schema/persistent-pty"
-import { Session } from "@opencode-ai/schema/session"
+import { PersistentPty } from "@opencode/schema/persistent-pty"
+import { Session } from "@opencode/schema/session"
import { Effect, Exit, Schema, Scope } from "effect"
import { HttpServer } from "effect/unstable/http"
import { OpenCode } from "../../client/src/promise/index"
diff --git a/packages/server/test/plugin-activation.test.ts b/packages/server/test/plugin-activation.test.ts
index 382ea6b519f..c278d2a1a48 100644
--- a/packages/server/test/plugin-activation.test.ts
+++ b/packages/server/test/plugin-activation.test.ts
@@ -1,8 +1,8 @@
import { expect } from "bun:test"
import { mkdir } from "node:fs/promises"
import path from "node:path"
-import { SdkPlugins } from "@opencode-ai/core/plugin/sdk"
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { SdkPlugins } from "@opencode/core/plugin/sdk"
+import { Plugin } from "@opencode/plugin/effect"
import { Context, Deferred, Effect, Fiber, Layer } from "effect"
import { HttpEffect, HttpRouter, HttpServer } from "effect/unstable/http"
import { tmpdirScoped } from "../../core/test/fixture/tmpdir"
diff --git a/packages/server/test/provider.test.ts b/packages/server/test/provider.test.ts
index 3323078c186..b044fe57c8f 100644
--- a/packages/server/test/provider.test.ts
+++ b/packages/server/test/provider.test.ts
@@ -1,6 +1,6 @@
import { expect } from "bun:test"
-import { SdkPlugins } from "@opencode-ai/core/plugin/sdk"
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { SdkPlugins } from "@opencode/core/plugin/sdk"
+import { Plugin } from "@opencode/plugin/effect"
import { Context, Deferred, Effect, Fiber, Layer } from "effect"
import { HttpEffect, HttpRouter, HttpServer } from "effect/unstable/http"
import { tmpdirScoped } from "../../core/test/fixture/tmpdir"
@@ -27,7 +27,7 @@ it.live(
providers: {
custom: {
name: "Configured Custom Provider",
- package: "@opencode-ai/ai/providers/openai-compatible",
+ package: "@opencode/ai/providers/openai-compatible",
settings: { apiKey: "secret" },
models: { chat: {} },
},
@@ -86,7 +86,7 @@ it.live(
id: "custom",
name: "Configured Custom Provider",
activation: "enabled",
- package: "@opencode-ai/ai/providers/openai-compatible",
+ package: "@opencode/ai/providers/openai-compatible",
settings: { apiKey: "secret" },
}
const configuredList = yield* request("GET", "/api/provider").pipe(Effect.timeout("2 seconds"))
diff --git a/packages/server/test/rpc-handler-errors.test.ts b/packages/server/test/rpc-handler-errors.test.ts
index 51f6c5bd1b2..c99377ef67e 100644
--- a/packages/server/test/rpc-handler-errors.test.ts
+++ b/packages/server/test/rpc-handler-errors.test.ts
@@ -1,7 +1,7 @@
import { expect } from "bun:test"
-import { SdkPlugins } from "@opencode-ai/core/plugin/sdk"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Rpc } from "@opencode-ai/schema/rpc"
+import { SdkPlugins } from "@opencode/core/plugin/sdk"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Rpc } from "@opencode/schema/rpc"
import { Context, Effect, Layer, Schema } from "effect"
import { HttpEffect, HttpRouter, HttpServer } from "effect/unstable/http"
import { tmpdirScoped } from "../../core/test/fixture/tmpdir"
diff --git a/packages/server/test/session-import.test.ts b/packages/server/test/session-import.test.ts
index 67b12cf4896..23d14746c20 100644
--- a/packages/server/test/session-import.test.ts
+++ b/packages/server/test/session-import.test.ts
@@ -1,5 +1,5 @@
import { expect } from "bun:test"
-import { Session } from "@opencode-ai/schema/session"
+import { Session } from "@opencode/schema/session"
import { Effect, Schema } from "effect"
import { it } from "../../core/test/lib/effect"
import { ServerFetch } from "../src/fetch"
diff --git a/packages/server/test/session-instances.test.ts b/packages/server/test/session-instances.test.ts
index e23b973057e..5da4e646097 100644
--- a/packages/server/test/session-instances.test.ts
+++ b/packages/server/test/session-instances.test.ts
@@ -1,24 +1,24 @@
import { expect } from "bun:test"
-import { App } from "@opencode-ai/core/app"
-import { Bus } from "@opencode-ai/core/bus"
-import { Database } from "@opencode-ai/core/database/database"
-import { llmClient } from "@opencode-ai/core/effect/app-node-platform"
-import { Watcher } from "@opencode-ai/core/filesystem/watcher"
-import { Form } from "@opencode-ai/core/form"
-import { Instance } from "@opencode-ai/core/instance"
-import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
-import { ModelsDev } from "@opencode-ai/core/models-dev"
-import { Permission } from "@opencode-ai/core/permission"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { Session } from "@opencode-ai/core/session"
-import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model"
-import { define } from "@opencode-ai/plugin/effect/plugin"
-import { Agent } from "@opencode-ai/schema/agent"
-import { Location } from "@opencode-ai/schema/location"
-import { AbsolutePath } from "@opencode-ai/schema/schema"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { Global } from "@opencode-ai/util/global"
+import { App } from "@opencode/core/app"
+import { Bus } from "@opencode/core/bus"
+import { Database } from "@opencode/core/database/database"
+import { llmClient } from "@opencode/core/effect/app-node-platform"
+import { Watcher } from "@opencode/core/filesystem/watcher"
+import { Form } from "@opencode/core/form"
+import { Instance } from "@opencode/core/instance"
+import { LocationServiceMap } from "@opencode/core/location-service-map"
+import { ModelsDev } from "@opencode/core/models-dev"
+import { Permission } from "@opencode/core/permission"
+import { Plugin } from "@opencode/core/plugin"
+import { Session } from "@opencode/core/session"
+import { SessionRunnerModel } from "@opencode/core/session/runner/model"
+import { define } from "@opencode/plugin/effect/plugin"
+import { Agent } from "@opencode/schema/agent"
+import { Location } from "@opencode/schema/location"
+import { AbsolutePath } from "@opencode/schema/schema"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { Global } from "@opencode/util/global"
import { Context, Duration, Effect, Layer, LayerMap, RcMap, Schema } from "effect"
import { HttpEffect, HttpRouter, HttpServer } from "effect/unstable/http"
import { LanguageModel, LLMClient } from "../../ai/src"
diff --git a/packages/server/test/session-message-update.test.ts b/packages/server/test/session-message-update.test.ts
index 91f4c64c722..0e5d95f5744 100644
--- a/packages/server/test/session-message-update.test.ts
+++ b/packages/server/test/session-message-update.test.ts
@@ -1,14 +1,14 @@
import { expect, setDefaultTimeout } from "bun:test"
-import { Agent } from "@opencode-ai/core/agent"
-import { Bus } from "@opencode-ai/core/bus"
-import { Model } from "@opencode-ai/core/model"
-import { Provider } from "@opencode-ai/core/provider"
-import { Session } from "@opencode-ai/core/session"
-import { SessionEvent } from "@opencode-ai/core/session/event"
-import { SessionExecution } from "@opencode-ai/core/session/execution"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { Money } from "@opencode-ai/schema/money"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
+import { Agent } from "@opencode/core/agent"
+import { Bus } from "@opencode/core/bus"
+import { Model } from "@opencode/core/model"
+import { Provider } from "@opencode/core/provider"
+import { Session } from "@opencode/core/session"
+import { SessionEvent } from "@opencode/core/session/event"
+import { SessionExecution } from "@opencode/core/session/execution"
+import { SessionMessage } from "@opencode/core/session/message"
+import { Money } from "@opencode/schema/money"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { Effect, Layer } from "effect"
import { it } from "../../core/test/lib/effect"
import { ServerFetch } from "../src/fetch"
diff --git a/packages/server/test/vcs.test.ts b/packages/server/test/vcs.test.ts
index 11ad26d1b84..735b1460927 100644
--- a/packages/server/test/vcs.test.ts
+++ b/packages/server/test/vcs.test.ts
@@ -1,7 +1,7 @@
import path from "node:path"
import { $ } from "bun"
import { expect } from "bun:test"
-import { SdkPlugins } from "@opencode-ai/core/plugin/sdk"
+import { SdkPlugins } from "@opencode/core/plugin/sdk"
import { Effect, Layer, Schedule } from "effect"
import { tmpdir } from "../../core/test/fixture/tmpdir"
import { it } from "../../core/test/lib/effect"
diff --git a/packages/server/test/worktree.test.ts b/packages/server/test/worktree.test.ts
index 9244183a369..bc237cf5267 100644
--- a/packages/server/test/worktree.test.ts
+++ b/packages/server/test/worktree.test.ts
@@ -6,7 +6,7 @@ import { Effect } from "effect"
import { tmpdir } from "../../core/test/fixture/tmpdir"
import { it } from "../../core/test/lib/effect"
import { startServer } from "./fixture/server"
-import { OpenCode } from "@opencode-ai/client"
+import { OpenCode } from "@opencode/client"
import { initRepo } from "../../core/test/fixture/git"
it.live(
diff --git a/packages/session-ui/component-tests/markdown.fixture.tsx b/packages/session-ui/component-tests/markdown.fixture.tsx
index 0c1a4c46fd1..c47474aaa70 100644
--- a/packages/session-ui/component-tests/markdown.fixture.tsx
+++ b/packages/session-ui/component-tests/markdown.fixture.tsx
@@ -3,7 +3,7 @@ import { render } from "solid-js/web"
import { Markdown } from "../src/components/markdown"
import { preloadMarkdown } from "../src/components/markdown-cache"
import { MarkdownProvider } from "../src/context/markdown"
-import { OpenCode } from "@opencode-ai/client/promise"
+import { OpenCode } from "@opencode/client/promise"
import { readLocalImage } from "../../app/src/runtime/server/image"
export {
diff --git a/packages/session-ui/component-tests/read-image.fixture.tsx b/packages/session-ui/component-tests/read-image.fixture.tsx
index 293ee5f90ea..4b503a8d4a6 100644
--- a/packages/session-ui/component-tests/read-image.fixture.tsx
+++ b/packages/session-ui/component-tests/read-image.fixture.tsx
@@ -1,7 +1,7 @@
import { createMemo, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { render } from "solid-js/web"
-import { OpenCode } from "@opencode-ai/client/promise"
+import { OpenCode } from "@opencode/client/promise"
import { readLocalImage } from "../../app/src/runtime/server/image"
import { MarkdownProvider } from "../src/context/markdown"
import { CurrentSessionProviders } from "../src/storybook/current-session-story"
diff --git a/packages/session-ui/package.json b/packages/session-ui/package.json
index 7b7c8692112..d2970d81a62 100644
--- a/packages/session-ui/package.json
+++ b/packages/session-ui/package.json
@@ -1,5 +1,5 @@
{
- "name": "@opencode-ai/session-ui",
+ "name": "@opencode/session-ui",
"version": "1.18.15",
"private": true,
"type": "module",
@@ -63,9 +63,9 @@
},
"dependencies": {
"@kobalte/core": "catalog:",
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/ui": "workspace:*",
+ "@opencode/util": "workspace:*",
"@pierre/diffs": "catalog:",
"@shikijs/stream": "catalog:",
"@solid-primitives/event-listener": "catalog:",
diff --git a/packages/session-ui/performance/highlighting/build.ts b/packages/session-ui/performance/highlighting/build.ts
index 4565941cc5d..b87e1f4f1b3 100644
--- a/packages/session-ui/performance/highlighting/build.ts
+++ b/packages/session-ui/performance/highlighting/build.ts
@@ -6,9 +6,9 @@ import { createHash } from "node:crypto"
const outDir = process.env.HIGHLIGHT_BUNDLE
if (!outDir) throw new Error("Set HIGHLIGHT_BUNDLE to an external artifact directory")
-const ui = realpathSync(path.resolve(import.meta.dir, "../../node_modules/@opencode-ai/ui"))
+const ui = realpathSync(path.resolve(import.meta.dir, "../../node_modules/@opencode/ui"))
if (ui !== realpathSync(path.resolve(import.meta.dir, "../../../ui"))) throw new Error(`Wrong workspace source: ${ui}`)
-const util = realpathSync(path.resolve(import.meta.dir, "../../node_modules/@opencode-ai/util"))
+const util = realpathSync(path.resolve(import.meta.dir, "../../node_modules/@opencode/util"))
if (util !== realpathSync(path.resolve(import.meta.dir, "../../../util"))) throw new Error(`Wrong workspace source: ${util}`)
await build({
configFile: false,
diff --git a/packages/session-ui/performance/markdown-lifetime/fixture.tsx b/packages/session-ui/performance/markdown-lifetime/fixture.tsx
index 66e51338519..3f5d9a3c120 100644
--- a/packages/session-ui/performance/markdown-lifetime/fixture.tsx
+++ b/packages/session-ui/performance/markdown-lifetime/fixture.tsx
@@ -3,8 +3,8 @@ import { render } from "solid-js/web"
import { Markdown } from "../../src/components/markdown"
import { getCachedMarkdown } from "../../src/components/markdown-cache"
import type { MarkdownWorkerRequest, MarkdownWorkerResponse } from "../../src/components/markdown-worker-protocol"
-import "@opencode-ai/ui/styles"
-import "@opencode-ai/ui/styles/tokens"
+import "@opencode/ui/styles"
+import "@opencode/ui/styles/tokens"
import "../../src/components/markdown.css"
const scenario = new URLSearchParams(location.search).get("scenario") ?? "mounted"
diff --git a/packages/session-ui/src/actions.ts b/packages/session-ui/src/actions.ts
index b69ef5cb092..493f967c9c7 100644
--- a/packages/session-ui/src/actions.ts
+++ b/packages/session-ui/src/actions.ts
@@ -1,4 +1,4 @@
-import type { PromptFileAttachment } from "@opencode-ai/client/promise"
+import type { PromptFileAttachment } from "@opencode/client/promise"
export type SessionUserComment = {
path: string
diff --git a/packages/session-ui/src/components/apply-patch-file.ts b/packages/session-ui/src/components/apply-patch-file.ts
index dc3da09406e..317c410e6b8 100644
--- a/packages/session-ui/src/components/apply-patch-file.ts
+++ b/packages/session-ui/src/components/apply-patch-file.ts
@@ -1,4 +1,4 @@
-import type { FileDiffInfo } from "@opencode-ai/client/promise"
+import type { FileDiffInfo } from "@opencode/client/promise"
import { completePatchContents, normalize, type ViewDiff } from "./session-diff"
type Kind = "add" | "update" | "delete"
diff --git a/packages/session-ui/src/components/basic-tool.tsx b/packages/session-ui/src/components/basic-tool.tsx
index 0026ecdc535..db6e641465e 100644
--- a/packages/session-ui/src/components/basic-tool.tsx
+++ b/packages/session-ui/src/components/basic-tool.tsx
@@ -12,11 +12,11 @@ import {
type JSX,
} from "solid-js"
import { animate, type AnimationPlaybackControls } from "motion"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
+import { useI18n } from "@opencode/ui/context/i18n"
import { createStore } from "solid-js/store"
-import { Collapsible } from "@opencode-ai/ui/collapsible"
-import type { IconProps } from "@opencode-ai/ui/icon"
-import { TextShimmer } from "@opencode-ai/ui/text-shimmer"
+import { Collapsible } from "@opencode/ui/collapsible"
+import type { IconProps } from "@opencode/ui/icon"
+import { TextShimmer } from "@opencode/ui/text-shimmer"
export type TriggerTitle = {
title: string
diff --git a/packages/session-ui/src/components/dock-prompt.stories.tsx b/packages/session-ui/src/components/dock-prompt.stories.tsx
index 93400c9c6b7..0fdae7c1950 100644
--- a/packages/session-ui/src/components/dock-prompt.stories.tsx
+++ b/packages/session-ui/src/components/dock-prompt.stories.tsx
@@ -1,4 +1,4 @@
-import { Button } from "@opencode-ai/ui/button"
+import { Button } from "@opencode/ui/button"
import { DockPrompt } from "./dock-prompt"
export default {
diff --git a/packages/session-ui/src/components/dock-prompt.tsx b/packages/session-ui/src/components/dock-prompt.tsx
index 75563e47b86..3cf3d897e13 100644
--- a/packages/session-ui/src/components/dock-prompt.tsx
+++ b/packages/session-ui/src/components/dock-prompt.tsx
@@ -1,5 +1,5 @@
import type { JSX } from "solid-js"
-import { DockShell, DockTray } from "@opencode-ai/ui/dock-surface"
+import { DockShell, DockTray } from "@opencode/ui/dock-surface"
export function DockPrompt(props: {
kind: "question" | "permission"
diff --git a/packages/session-ui/src/components/file-media.tsx b/packages/session-ui/src/components/file-media.tsx
index 4ffe03ff963..216873f1747 100644
--- a/packages/session-ui/src/components/file-media.tsx
+++ b/packages/session-ui/src/components/file-media.tsx
@@ -1,7 +1,7 @@
import type { PresentationFileContent } from "../file-presentation"
import { createEffect, createMemo, Match, on, onCleanup, Show, Switch, untrack, type JSX } from "solid-js"
import { createStore } from "solid-js/store"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
+import { useI18n } from "@opencode/ui/context/i18n"
import {
dataUrlFromMediaValue,
hasMediaValue,
diff --git a/packages/session-ui/src/components/file-search.tsx b/packages/session-ui/src/components/file-search.tsx
index e00ea929839..384ae8e216b 100644
--- a/packages/session-ui/src/components/file-search.tsx
+++ b/packages/session-ui/src/components/file-search.tsx
@@ -1,6 +1,6 @@
import { Portal } from "solid-js/web"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
-import { Icon } from "@opencode-ai/ui/icon"
+import { useI18n } from "@opencode/ui/context/i18n"
+import { Icon } from "@opencode/ui/icon"
export function FileSearchBar(props: {
pos: { top: number; right: number }
diff --git a/packages/session-ui/src/components/file-ssr.tsx b/packages/session-ui/src/components/file-ssr.tsx
index 68b5568edc6..f192dbcfb42 100644
--- a/packages/session-ui/src/components/file-ssr.tsx
+++ b/packages/session-ui/src/components/file-ssr.tsx
@@ -2,7 +2,7 @@ import { DIFFS_TAG_NAME, FileDiff, VirtualizedFileDiff } from "@pierre/diffs"
import { type PreloadFileDiffResult, type PreloadMultiFileDiffResult } from "@pierre/diffs/ssr"
import { createEffect, onCleanup, onMount, Show, splitProps } from "solid-js"
import { Dynamic, isServer } from "solid-js/web"
-import { useWorkerPool } from "@opencode-ai/ui/context/worker-pool"
+import { useWorkerPool } from "@opencode/ui/context/worker-pool"
import { createDefaultOptions, styleVariables } from "../pierre"
import { markCommentedDiffLines } from "../pierre/commented-lines"
import { fixDiffSelection } from "../pierre/diff-selection"
diff --git a/packages/session-ui/src/components/file.tsx b/packages/session-ui/src/components/file.tsx
index 1c4fafc096d..64c9f567942 100644
--- a/packages/session-ui/src/components/file.tsx
+++ b/packages/session-ui/src/components/file.tsx
@@ -1,4 +1,4 @@
-import { sampledChecksum } from "@opencode-ai/util/encode"
+import { sampledChecksum } from "@opencode/util/encode"
import {
areFilesEqual,
areOptionsEqual,
diff --git a/packages/session-ui/src/components/line-comment-annotations.tsx b/packages/session-ui/src/components/line-comment-annotations.tsx
index c1040a6c381..5ba0ac36c6c 100644
--- a/packages/session-ui/src/components/line-comment-annotations.tsx
+++ b/packages/session-ui/src/components/line-comment-annotations.tsx
@@ -2,7 +2,7 @@ import { type DiffLineAnnotation, type SelectedLineRange } from "@pierre/diffs"
import { createEffect, createMemo, createSignal, onCleanup, Show, type Accessor, type JSX } from "solid-js"
import { createStore } from "solid-js/store"
import { render as renderSolid } from "solid-js/web"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
+import { useI18n } from "@opencode/ui/context/i18n"
import { createHoverCommentUtility } from "../pierre/comment-hover"
import { cloneSelectedLineRange, formatSelectedLineLabel, lineInSelectedRange } from "../pierre/selection-bridge"
import { LineComment, LineCommentEditor, type LineCommentEditorProps } from "./line-comment"
diff --git a/packages/session-ui/src/components/line-comment.tsx b/packages/session-ui/src/components/line-comment.tsx
index 3c47e56f443..6f4206770e0 100644
--- a/packages/session-ui/src/components/line-comment.tsx
+++ b/packages/session-ui/src/components/line-comment.tsx
@@ -1,11 +1,11 @@
-import { useFilteredList } from "@opencode-ai/ui/hooks"
-import { getDirectory, getFilename } from "@opencode-ai/util/path"
+import { useFilteredList } from "@opencode/ui/hooks"
+import { getDirectory, getFilename } from "@opencode/util/path"
import { createSignal, For, onMount, Show, splitProps, type JSX } from "solid-js"
-import { Button } from "@opencode-ai/ui/button"
-import { FileIcon } from "@opencode-ai/ui/file-icon"
-import { Icon } from "@opencode-ai/ui/icon"
+import { Button } from "@opencode/ui/button"
+import { FileIcon } from "@opencode/ui/file-icon"
+import { Icon } from "@opencode/ui/icon"
import { installLineCommentStyles } from "./line-comment-styles"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
+import { useI18n } from "@opencode/ui/context/i18n"
installLineCommentStyles()
diff --git a/packages/session-ui/src/components/markdown-cache.tsx b/packages/session-ui/src/components/markdown-cache.tsx
index 1a8d587484f..454adc2e347 100644
--- a/packages/session-ui/src/components/markdown-cache.tsx
+++ b/packages/session-ui/src/components/markdown-cache.tsx
@@ -1,5 +1,5 @@
-import { checksum } from "@opencode-ai/util/encode"
-import { parseSmallMarkdown } from "@opencode-ai/ui/context/marked-base"
+import { checksum } from "@opencode/util/encode"
+import { parseSmallMarkdown } from "@opencode/ui/context/marked-base"
import DOMPurify from "dompurify"
import { MarkdownWorkerDisposedError, parseMarkdown } from "./markdown-worker"
import { localImagePath } from "./markdown-image"
diff --git a/packages/session-ui/src/components/markdown-inline-code-kind.test.ts b/packages/session-ui/src/components/markdown-inline-code-kind.test.ts
index e5cfa22c0fd..a3d8f3cc8f4 100644
--- a/packages/session-ui/src/components/markdown-inline-code-kind.test.ts
+++ b/packages/session-ui/src/components/markdown-inline-code-kind.test.ts
@@ -8,7 +8,7 @@ describe("inlineCodeKind", () => {
).toBeUndefined()
expect(inlineCodeKind(``)).toBeUndefined()
expect(inlineCodeKind(`from sync.data.form + sync.data.session.`)).toBeUndefined()
- expect(inlineCodeKind(`@opencode-ai/app )`)).toBeUndefined()
+ expect(inlineCodeKind(`@opencode/app )`)).toBeUndefined()
expect(inlineCodeKind(`sync.data.session`)).toBeUndefined()
expect(inlineCodeKind(`window.api`)).toBeUndefined()
expect(inlineCodeKind(`1.2`)).toBeUndefined()
@@ -31,7 +31,7 @@ describe("inlineCodeKind", () => {
expect(inlineCodeKind(`pnpm-lock.yaml`)).toBe("path")
expect(inlineCodeKind(`packages/desktop-electron`)).toBe("path")
expect(inlineCodeKind(`~/.config/opencode`)).toBe("path")
- expect(inlineCodeKind(`@opencode-ai/app`)).toBe("path")
+ expect(inlineCodeKind(`@opencode/app`)).toBe("path")
expect(inlineCodeKind(`session/status`)).toBe("path")
})
diff --git a/packages/session-ui/src/components/markdown.stories.tsx b/packages/session-ui/src/components/markdown.stories.tsx
index 7cb70ad5462..b1a175022d9 100644
--- a/packages/session-ui/src/components/markdown.stories.tsx
+++ b/packages/session-ui/src/components/markdown.stories.tsx
@@ -1,4 +1,4 @@
-import { markdown } from "@opencode-ai/ui/storybook/fixtures"
+import { markdown } from "@opencode/ui/storybook/fixtures"
import { createSignal, onCleanup } from "solid-js"
import { Markdown } from "./markdown"
diff --git a/packages/session-ui/src/components/markdown.tsx b/packages/session-ui/src/components/markdown.tsx
index 3616215c21c..267a1e12017 100644
--- a/packages/session-ui/src/components/markdown.tsx
+++ b/packages/session-ui/src/components/markdown.tsx
@@ -1,5 +1,5 @@
-import { useI18n } from "@opencode-ai/ui/context/i18n"
-import { checksum } from "@opencode-ai/util/encode"
+import { useI18n } from "@opencode/ui/context/i18n"
+import { checksum } from "@opencode/util/encode"
import {
type ComponentProps,
createEffect,
@@ -11,9 +11,9 @@ import {
splitProps,
} from "solid-js"
import { isServer, render } from "solid-js/web"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Tooltip } from "@opencode/ui/tooltip"
import { canReusePendingBlock, completedProjection } from "./markdown-projection"
import type { Block, Projection } from "./markdown-stream"
import {
diff --git a/packages/session-ui/src/components/markdown.worker.ts b/packages/session-ui/src/components/markdown.worker.ts
index 7bdabd4f132..a12ec681f09 100644
--- a/packages/session-ui/src/components/markdown.worker.ts
+++ b/packages/session-ui/src/components/markdown.worker.ts
@@ -1,8 +1,8 @@
///
import { ShikiStreamTokenizer } from "@shikijs/stream"
-import { createMarkdownParser } from "@opencode-ai/ui/context/marked-parser"
-import { OpenCodeTheme } from "@opencode-ai/ui/context/marked-theme"
+import { createMarkdownParser } from "@opencode/ui/context/marked-parser"
+import { OpenCodeTheme } from "@opencode/ui/context/marked-theme"
import {
bundledLanguages,
createHighlighter,
diff --git a/packages/session-ui/src/components/message-file.ts b/packages/session-ui/src/components/message-file.ts
index 120d2151095..21e4977fa81 100644
--- a/packages/session-ui/src/components/message-file.ts
+++ b/packages/session-ui/src/components/message-file.ts
@@ -1,5 +1,5 @@
import { bundledLanguagesInfo } from "shiki"
-import { getFilename } from "@opencode-ai/util/path"
+import { getFilename } from "@opencode/util/path"
// language metadata only; grammars stay behind shiki's lazy imports
const LANGUAGE_NAMES = new Map(
diff --git a/packages/session-ui/src/components/message-nav.tsx b/packages/session-ui/src/components/message-nav.tsx
index 70cdb6c652f..547d9946e42 100644
--- a/packages/session-ui/src/components/message-nav.tsx
+++ b/packages/session-ui/src/components/message-nav.tsx
@@ -1,7 +1,7 @@
-import type { FileDiffInfo, SessionMessageUser } from "@opencode-ai/client/promise"
+import type { FileDiffInfo, SessionMessageUser } from "@opencode/client/promise"
import { HoverCard } from "@kobalte/core/hover-card"
import { ComponentProps, For, Match, Show, createMemo, createSignal, splitProps, Switch } from "solid-js"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
+import { useI18n } from "@opencode/ui/context/i18n"
export function MessageNav(
props: ComponentProps<"ul"> & {
diff --git a/packages/session-ui/src/components/session-diff.ts b/packages/session-ui/src/components/session-diff.ts
index 96cf1e062fc..d670671d66e 100644
--- a/packages/session-ui/src/components/session-diff.ts
+++ b/packages/session-ui/src/components/session-diff.ts
@@ -1,7 +1,7 @@
import { parseDiffFromFile, parsePatchFiles, type FileDiffMetadata } from "@pierre/diffs"
import { parsePatch } from "diff"
-import { checksum } from "@opencode-ai/util/encode"
-import type { FileDiffInfo } from "@opencode-ai/client/promise"
+import { checksum } from "@opencode/util/encode"
+import type { FileDiffInfo } from "@opencode/client/promise"
import type { PresentationFileDiff } from "../file-presentation"
type LegacyDiff = {
diff --git a/packages/session-ui/src/components/session-error.tsx b/packages/session-ui/src/components/session-error.tsx
index c4414a627c0..4ab3941e8db 100644
--- a/packages/session-ui/src/components/session-error.tsx
+++ b/packages/session-ui/src/components/session-error.tsx
@@ -1,6 +1,6 @@
import { createMemo, Show } from "solid-js"
-import { Card } from "@opencode-ai/ui/card"
-import { Icon } from "@opencode-ai/ui/icon"
+import { Card } from "@opencode/ui/card"
+import { Icon } from "@opencode/ui/icon"
export function SessionErrorMessage(props: { message: string }) {
const content = createMemo(() => {
diff --git a/packages/session-ui/src/components/session-retry.tsx b/packages/session-ui/src/components/session-retry.tsx
index 13605e2bfa6..f8f36910d80 100644
--- a/packages/session-ui/src/components/session-retry.tsx
+++ b/packages/session-ui/src/components/session-retry.tsx
@@ -1,10 +1,10 @@
import { createEffect, createMemo, createSignal, on, onCleanup, Show } from "solid-js"
-import type { SessionStatus } from "@opencode-ai/client/promise"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
-import { Card } from "@opencode-ai/ui/card"
-import { Icon } from "@opencode-ai/ui/icon"
-import { TextShimmer } from "@opencode-ai/ui/text-shimmer"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import type { SessionStatus } from "@opencode/client/promise"
+import { useI18n } from "@opencode/ui/context/i18n"
+import { Card } from "@opencode/ui/card"
+import { Icon } from "@opencode/ui/icon"
+import { TextShimmer } from "@opencode/ui/text-shimmer"
+import { Tooltip } from "@opencode/ui/tooltip"
import { SessionErrorMessage } from "./session-error"
export function SessionRetry(props: { status: SessionStatus; show?: boolean }) {
diff --git a/packages/session-ui/src/components/session-review.tsx b/packages/session-ui/src/components/session-review.tsx
index b40ffe7fde4..f3ce2cc067b 100644
--- a/packages/session-ui/src/components/session-review.tsx
+++ b/packages/session-ui/src/components/session-review.tsx
@@ -1,21 +1,21 @@
-import { Accordion } from "@opencode-ai/ui/accordion"
-import { Button } from "@opencode-ai/ui/button"
-import { Menu } from "@opencode-ai/ui/menu"
-import { SegmentedControl, SegmentedControlItem } from "@opencode-ai/ui/segmented-control"
-import { DiffChanges } from "@opencode-ai/ui/diff-changes"
-import { FileIcon } from "@opencode-ai/ui/file-icon"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { StickyAccordionHeader } from "@opencode-ai/ui/sticky-accordion-header"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { ScrollView } from "@opencode-ai/ui/scroll-view"
-import { useFileComponent } from "@opencode-ai/ui/context/file"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
-import { getDirectory, getFilename } from "@opencode-ai/util/path"
-import { checksum } from "@opencode-ai/util/encode"
+import { Accordion } from "@opencode/ui/accordion"
+import { Button } from "@opencode/ui/button"
+import { Menu } from "@opencode/ui/menu"
+import { SegmentedControl, SegmentedControlItem } from "@opencode/ui/segmented-control"
+import { DiffChanges } from "@opencode/ui/diff-changes"
+import { FileIcon } from "@opencode/ui/file-icon"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { StickyAccordionHeader } from "@opencode/ui/sticky-accordion-header"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { ScrollView } from "@opencode/ui/scroll-view"
+import { useFileComponent } from "@opencode/ui/context/file"
+import { useI18n } from "@opencode/ui/context/i18n"
+import { getDirectory, getFilename } from "@opencode/util/path"
+import { checksum } from "@opencode/util/encode"
import { createEffect, createMemo, For, Match, onCleanup, Show, Switch, untrack, type JSX } from "solid-js"
import { createStore } from "solid-js/store"
-import type { FileDiffInfo } from "@opencode-ai/client/promise"
+import type { FileDiffInfo } from "@opencode/client/promise"
import type { PresentationFileContent, PresentationFileDiff } from "../file-presentation"
import { PreloadMultiFileDiffResult } from "@pierre/diffs/ssr"
import { type SelectedLineRange } from "@pierre/diffs"
diff --git a/packages/session-ui/src/components/timeline-separator.tsx b/packages/session-ui/src/components/timeline-separator.tsx
index d6bdef894f2..dfe1d0a5825 100644
--- a/packages/session-ui/src/components/timeline-separator.tsx
+++ b/packages/session-ui/src/components/timeline-separator.tsx
@@ -1,4 +1,4 @@
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
import { Show } from "solid-js"
export function TimelineSeparator(props: { label: string; providerID?: string; variant?: string }) {
diff --git a/packages/session-ui/src/components/tool-count-label.tsx b/packages/session-ui/src/components/tool-count-label.tsx
index c1281e17a30..d6a7d05a778 100644
--- a/packages/session-ui/src/components/tool-count-label.tsx
+++ b/packages/session-ui/src/components/tool-count-label.tsx
@@ -1,6 +1,6 @@
import { createMemo } from "solid-js"
-import { AnimatedNumber } from "@opencode-ai/ui/animated-number"
-import { pluralCategory, pluralKey, useI18n, type UiI18nPluralKey } from "@opencode-ai/ui/context/i18n"
+import { AnimatedNumber } from "@opencode/ui/animated-number"
+import { pluralCategory, pluralKey, useI18n, type UiI18nPluralKey } from "@opencode/ui/context/i18n"
function split(text: string) {
const match = /{{\s*count\s*}}/.exec(text)
diff --git a/packages/session-ui/src/components/tool-count-summary.stories.tsx b/packages/session-ui/src/components/tool-count-summary.stories.tsx
index 3f4636a9166..0b10c8b8ecd 100644
--- a/packages/session-ui/src/components/tool-count-summary.stories.tsx
+++ b/packages/session-ui/src/components/tool-count-summary.stories.tsx
@@ -1,4 +1,4 @@
-import { Button } from "@opencode-ai/ui/button"
+import { Button } from "@opencode/ui/button"
import { createStore } from "solid-js/store"
import { AnimatedCountList, type CountItem } from "./tool-count-summary"
import { ToolStatusTitle } from "./tool-status-title"
diff --git a/packages/session-ui/src/components/tool-count-summary.tsx b/packages/session-ui/src/components/tool-count-summary.tsx
index 407dcbc1bdd..50897dfa265 100644
--- a/packages/session-ui/src/components/tool-count-summary.tsx
+++ b/packages/session-ui/src/components/tool-count-summary.tsx
@@ -1,5 +1,5 @@
import { Index, createMemo } from "solid-js"
-import type { UiI18nPluralKey } from "@opencode-ai/ui/context"
+import type { UiI18nPluralKey } from "@opencode/ui/context"
import { AnimatedCountLabel } from "./tool-count-label"
export type CountItem = {
diff --git a/packages/session-ui/src/components/tool-error-card.tsx b/packages/session-ui/src/components/tool-error-card.tsx
index 5f995bca263..80bf8ab16c5 100644
--- a/packages/session-ui/src/components/tool-error-card.tsx
+++ b/packages/session-ui/src/components/tool-error-card.tsx
@@ -1,11 +1,11 @@
import { type ComponentProps, createMemo, Show, splitProps } from "solid-js"
import { createStore } from "solid-js/store"
-import { Card, CardDescription } from "@opencode-ai/ui/card"
-import { Collapsible } from "@opencode-ai/ui/collapsible"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
+import { Card, CardDescription } from "@opencode/ui/card"
+import { Collapsible } from "@opencode/ui/collapsible"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { useI18n } from "@opencode/ui/context/i18n"
export interface ToolErrorCardProps extends Omit, "children" | "variant"> {
tool: string
diff --git a/packages/session-ui/src/components/tool-status-title.tsx b/packages/session-ui/src/components/tool-status-title.tsx
index ef9ef6da61f..694077f44ef 100644
--- a/packages/session-ui/src/components/tool-status-title.tsx
+++ b/packages/session-ui/src/components/tool-status-title.tsx
@@ -1,6 +1,6 @@
import { Show, createEffect, createMemo, on, onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
-import { TextShimmer } from "@opencode-ai/ui/text-shimmer"
+import { TextShimmer } from "@opencode/ui/text-shimmer"
function common(active: string, done: string) {
const a = Array.from(active)
diff --git a/packages/session-ui/src/context/data.tsx b/packages/session-ui/src/context/data.tsx
index 2d8378ef82d..d4343b3650a 100644
--- a/packages/session-ui/src/context/data.tsx
+++ b/packages/session-ui/src/context/data.tsx
@@ -4,8 +4,8 @@ import type {
SessionStatus,
ShellOutputInput,
ShellOutputOutput,
-} from "@opencode-ai/client/promise"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+} from "@opencode/client/promise"
+import { createSimpleContext } from "@opencode/ui/context"
import { PreloadMultiFileDiffResult } from "@pierre/diffs/ssr"
export type SessionSummary = Pick
diff --git a/packages/session-ui/src/document.ts b/packages/session-ui/src/document.ts
index 8f0d6bef0a9..94798fbf2d2 100644
--- a/packages/session-ui/src/document.ts
+++ b/packages/session-ui/src/document.ts
@@ -1,4 +1,4 @@
-import type { FileDiffInfo, SessionMessageInfo, SessionStatus } from "@opencode-ai/client/promise"
+import type { FileDiffInfo, SessionMessageInfo, SessionStatus } from "@opencode/client/promise"
export type SessionDocument = {
sessionID: string
diff --git a/packages/session-ui/src/import-boundaries.test.ts b/packages/session-ui/src/import-boundaries.test.ts
index 1b7274cda1c..1070e163b5e 100644
--- a/packages/session-ui/src/import-boundaries.test.ts
+++ b/packages/session-ui/src/import-boundaries.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test"
import { Effect } from "effect"
-const forbidden = /["']@opencode-ai\/(?:core|sdk|server)(?:\/[^"']*)?["']/
+const forbidden = /["']@opencode\/(?:core|sdk|server)(?:\/[^"']*)?["']/
const oldSession = /(?:SessionV1|session-v1|legacy-message|legacy-message-values)/
describe("Session UI package boundaries", () => {
@@ -13,9 +13,9 @@ describe("Session UI package boundaries", () => {
const pkg = await Bun.file(new URL("../package.json", import.meta.url)).json()
const dependencies = pkg.dependencies as Record
- expect(dependencies["@opencode-ai/core"]).toBeUndefined()
- expect(dependencies["@opencode-ai/sdk"]).toBeUndefined()
- expect(dependencies["@opencode-ai/server"]).toBeUndefined()
+ expect(dependencies["@opencode/core"]).toBeUndefined()
+ expect(dependencies["@opencode/sdk"]).toBeUndefined()
+ expect(dependencies["@opencode/server"]).toBeUndefined()
})
test("does not contain old Session message boundaries", async () => {
diff --git a/packages/session-ui/src/message/comment-card.tsx b/packages/session-ui/src/message/comment-card.tsx
index 232a691a088..5bae4c47ddc 100644
--- a/packages/session-ui/src/message/comment-card.tsx
+++ b/packages/session-ui/src/message/comment-card.tsx
@@ -1,7 +1,7 @@
import { createSignal, onCleanup, onMount, Show } from "solid-js"
-import { FileIcon } from "@opencode-ai/ui/file-icon"
-import { getFilenameTruncated } from "@opencode-ai/util/path"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { FileIcon } from "@opencode/ui/file-icon"
+import { getFilenameTruncated } from "@opencode/util/path"
+import { Tooltip } from "@opencode/ui/tooltip"
import { AttachmentCard } from "./attachment-card"
export function CommentCard(props: {
diff --git a/packages/session-ui/src/message/current-message.test.ts b/packages/session-ui/src/message/current-message.test.ts
index c94f7c724a1..2459fbdfd04 100644
--- a/packages/session-ui/src/message/current-message.test.ts
+++ b/packages/session-ui/src/message/current-message.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { JsonValue, SessionMessageAssistantTool } from "@opencode-ai/client/promise"
+import type { JsonValue, SessionMessageAssistantTool } from "@opencode/client/promise"
import { currentContentDefaultOpen } from "./current-tool-state"
function tool(name: string, files: JsonValue[] = []): SessionMessageAssistantTool {
diff --git a/packages/session-ui/src/message/current-message.tsx b/packages/session-ui/src/message/current-message.tsx
index cfe53b02ad9..b061968dd68 100644
--- a/packages/session-ui/src/message/current-message.tsx
+++ b/packages/session-ui/src/message/current-message.tsx
@@ -2,7 +2,7 @@ import type {
SessionMessageAssistant,
SessionMessageAssistantTool,
SessionMessageUser,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import { Match, Switch, type ComponentProps } from "solid-js"
import type { SessionUserActions, SessionUserComment } from "../actions"
import { AssistantReasoningContent, AssistantTextContent, CurrentUserMessageDisplay } from "./message-content"
diff --git a/packages/session-ui/src/message/current-tool-state.test.ts b/packages/session-ui/src/message/current-tool-state.test.ts
index b0633931326..4a0b9707b95 100644
--- a/packages/session-ui/src/message/current-tool-state.test.ts
+++ b/packages/session-ui/src/message/current-tool-state.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionMessageAssistantTool } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistantTool } from "@opencode/client/promise"
import { currentToolError, currentToolInput, currentToolMetadata, currentToolOutput } from "./current-tool-state"
const time = { created: 1 }
diff --git a/packages/session-ui/src/message/current-tool-state.ts b/packages/session-ui/src/message/current-tool-state.ts
index b4ba572fad9..0cf9028daa8 100644
--- a/packages/session-ui/src/message/current-tool-state.ts
+++ b/packages/session-ui/src/message/current-tool-state.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageAssistant, SessionMessageAssistantTool } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistant, SessionMessageAssistantTool } from "@opencode/client/promise"
import { Option, Schema } from "effect"
const decodeInput = Schema.decodeUnknownOption(Schema.fromJsonString(Schema.Record(Schema.String, Schema.Unknown)))
diff --git a/packages/session-ui/src/message/message-content.tsx b/packages/session-ui/src/message/message-content.tsx
index 397d8abf3e1..149e0a60869 100644
--- a/packages/session-ui/src/message/message-content.tsx
+++ b/packages/session-ui/src/message/message-content.tsx
@@ -1,23 +1,23 @@
import { createEffect, createMemo, createSignal, For, onCleanup, Show, type ComponentProps, type JSX } from "solid-js"
import { createStore } from "solid-js/store"
import { useData } from "../context"
-import { useDialog } from "@opencode-ai/ui/context/dialog"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
+import { useDialog } from "@opencode/ui/context/dialog"
+import { useI18n } from "@opencode/ui/context/i18n"
import { Markdown } from "../components/markdown"
-import { ImagePreview } from "@opencode-ai/ui/image-preview"
-import { getFilename } from "@opencode-ai/util/path"
+import { ImagePreview } from "@opencode/ui/image-preview"
+import { getFilename } from "@opencode/util/path"
import { AttachmentCard } from "./attachment-card"
import { CommentCard } from "./comment-card"
import { TimelineSeparator } from "../components/timeline-separator"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Icon } from "@opencode-ai/ui/icon"
-import { Button } from "@opencode-ai/ui/button"
-import { TextReveal } from "@opencode-ai/ui/text-reveal"
-import { TextShimmer } from "@opencode-ai/ui/text-shimmer"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Icon } from "@opencode/ui/icon"
+import { Button } from "@opencode/ui/button"
+import { TextReveal } from "@opencode/ui/text-reveal"
+import { TextShimmer } from "@opencode/ui/text-shimmer"
import { BasicTool } from "../components/basic-tool"
import { reasoningHeading } from "../timeline/projection"
-import { Card } from "@opencode-ai/ui/card"
+import { Card } from "@opencode/ui/card"
import type {
PromptAgentAttachment,
PromptFileAttachment,
@@ -25,7 +25,7 @@ import type {
SessionMessageAssistantReasoning,
SessionMessageCompaction,
SessionMessageUser,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import type { SessionUserActions, SessionUserComment } from "../actions"
import { typeLabel } from "../components/message-file"
diff --git a/packages/session-ui/src/pierre/worker.ts b/packages/session-ui/src/pierre/worker.ts
index ba5d30dccc1..4e2f14bf7c9 100644
--- a/packages/session-ui/src/pierre/worker.ts
+++ b/packages/session-ui/src/pierre/worker.ts
@@ -1,6 +1,6 @@
import { WorkerPoolManager } from "@pierre/diffs/worker"
import ShikiWorkerUrl from "@pierre/diffs/worker/worker.js?worker&url"
-import { registerOpenCodeTheme } from "@opencode-ai/ui/context/marked-theme-register"
+import { registerOpenCodeTheme } from "@opencode/ui/context/marked-theme-register"
registerOpenCodeTheme()
diff --git a/packages/session-ui/src/storybook/current-session-fixtures.ts b/packages/session-ui/src/storybook/current-session-fixtures.ts
index f1fe93a01cc..8b52c4e0b62 100644
--- a/packages/session-ui/src/storybook/current-session-fixtures.ts
+++ b/packages/session-ui/src/storybook/current-session-fixtures.ts
@@ -9,7 +9,7 @@ import type {
SessionMessageInfo,
SessionMessageUser,
SessionStatus,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import type { SessionDocument } from "../document"
import type { SessionUserPresentation } from "../timeline/session-timeline"
diff --git a/packages/session-ui/src/storybook/current-session-scenarios.ts b/packages/session-ui/src/storybook/current-session-scenarios.ts
index 71d6e615a52..30325542d8b 100644
--- a/packages/session-ui/src/storybook/current-session-scenarios.ts
+++ b/packages/session-ui/src/storybook/current-session-scenarios.ts
@@ -1,4 +1,4 @@
-import type { JsonValue, SessionMessageAssistant, SessionMessageAssistantTool } from "@opencode-ai/client/promise"
+import type { JsonValue, SessionMessageAssistant, SessionMessageAssistantTool } from "@opencode/client/promise"
import type { SessionDocument } from "../document"
import { CURRENT_SESSION_ID, STORY_MODEL, STORY_TIME, thinkingDocument } from "./current-session-fixtures"
diff --git a/packages/session-ui/src/storybook/current-session-story.tsx b/packages/session-ui/src/storybook/current-session-story.tsx
index 939bc93afad..40cba38022f 100644
--- a/packages/session-ui/src/storybook/current-session-story.tsx
+++ b/packages/session-ui/src/storybook/current-session-story.tsx
@@ -4,8 +4,8 @@ import { DataProvider } from "../context/data"
import type { SessionUserActions } from "../message/current-message"
import type { SessionUserPresentation } from "../timeline/session-timeline"
import { SessionTimeline } from "../timeline/session-timeline"
-import { FileComponentProvider } from "@opencode-ai/ui/context/file"
-import { Button } from "@opencode-ai/ui/button"
+import { FileComponentProvider } from "@opencode/ui/context/file"
+import { Button } from "@opencode/ui/button"
import { Show, createSignal, type JSX } from "solid-js"
import { CURRENT_SESSION_ID, STORY_TIME } from "./current-session-fixtures"
diff --git a/packages/session-ui/src/timeline/detail.ts b/packages/session-ui/src/timeline/detail.ts
index 7af3a788449..0c4b005329a 100644
--- a/packages/session-ui/src/timeline/detail.ts
+++ b/packages/session-ui/src/timeline/detail.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageAssistant, SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistant, SessionMessageInfo } from "@opencode/client/promise"
import { shellResultFailed } from "../message/current-tool-state"
export const timelineCategories = ["shell", "edit", "thinking", "subagents", "notices", "tools"] as const
diff --git a/packages/session-ui/src/timeline/projection.test.ts b/packages/session-ui/src/timeline/projection.test.ts
index 493d0eb6582..5dec9050ec8 100644
--- a/packages/session-ui/src/timeline/projection.test.ts
+++ b/packages/session-ui/src/timeline/projection.test.ts
@@ -4,7 +4,7 @@ import type {
SessionMessageAssistant,
SessionMessageAssistantTool,
SessionMessageInfo,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import { createStore } from "solid-js/store"
import { createTimelineProjection, reuseTimelineRows, Timeline, TimelineRow, type PartGroup } from "./projection"
diff --git a/packages/session-ui/src/timeline/projection.ts b/packages/session-ui/src/timeline/projection.ts
index 29ee7960158..0b99742a4e5 100644
--- a/packages/session-ui/src/timeline/projection.ts
+++ b/packages/session-ui/src/timeline/projection.ts
@@ -5,7 +5,7 @@ import type {
SessionMessageShell,
SessionMessageUser,
SessionStatus,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import { Option, Schema } from "effect"
import { createMemo, mapArray, type Accessor } from "solid-js"
import { currentContentDefaultOpen, currentToolFailed, currentToolHasLoadedFiles } from "../message/current-tool-state"
diff --git a/packages/session-ui/src/timeline/research-and-agents.stories.tsx b/packages/session-ui/src/timeline/research-and-agents.stories.tsx
index 603543d6b94..4692b1827df 100644
--- a/packages/session-ui/src/timeline/research-and-agents.stories.tsx
+++ b/packages/session-ui/src/timeline/research-and-agents.stories.tsx
@@ -1,4 +1,4 @@
-import type { JsonValue, SessionMessageAssistant, SessionMessageAssistantTool } from "@opencode-ai/client/promise"
+import type { JsonValue, SessionMessageAssistant, SessionMessageAssistantTool } from "@opencode/client/promise"
import { createMemo } from "solid-js"
import { createStore } from "solid-js/store"
import type { SessionDocument } from "../document"
diff --git a/packages/session-ui/src/timeline/rows-current.test.ts b/packages/session-ui/src/timeline/rows-current.test.ts
index 3a8fae326b1..95705a60a9a 100644
--- a/packages/session-ui/src/timeline/rows-current.test.ts
+++ b/packages/session-ui/src/timeline/rows-current.test.ts
@@ -3,7 +3,7 @@ import type {
SessionMessageAssistant,
SessionMessageAssistantTool,
SessionMessageInfo,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import { storyDocument, storyTool } from "../storybook/current-session-scenarios"
import { createTimelineProjection, Timeline, TimelineRow } from "./projection"
diff --git a/packages/session-ui/src/timeline/session-timeline-row.tsx b/packages/session-ui/src/timeline/session-timeline-row.tsx
index 8a3c266e795..7bd3cccd173 100644
--- a/packages/session-ui/src/timeline/session-timeline-row.tsx
+++ b/packages/session-ui/src/timeline/session-timeline-row.tsx
@@ -3,9 +3,9 @@ import type {
SessionMessageInfo,
SessionMessageUser,
SessionStatus,
-} from "@opencode-ai/client/promise"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+} from "@opencode/client/promise"
+import { useI18n } from "@opencode/ui/context/i18n"
+import { Tooltip } from "@opencode/ui/tooltip"
import { For, Show, createMemo, type Accessor, type JSX } from "solid-js"
import type { SessionUserActions, SessionUserComment } from "../actions"
import { useData } from "../context"
diff --git a/packages/session-ui/src/timeline/terminal-work.stories.tsx b/packages/session-ui/src/timeline/terminal-work.stories.tsx
index 6a22f7809f0..e080752b41a 100644
--- a/packages/session-ui/src/timeline/terminal-work.stories.tsx
+++ b/packages/session-ui/src/timeline/terminal-work.stories.tsx
@@ -1,4 +1,4 @@
-import type { SessionMessageAssistant, SessionMessageShell } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistant, SessionMessageShell } from "@opencode/client/promise"
import { createMemo, createSignal } from "solid-js"
import { createStore } from "solid-js/store"
import { DataProvider } from "../context/data"
diff --git a/packages/session-ui/src/timeline/timeline-row.stories.tsx b/packages/session-ui/src/timeline/timeline-row.stories.tsx
index 992e13c01a3..3f8149c6fd9 100644
--- a/packages/session-ui/src/timeline/timeline-row.stories.tsx
+++ b/packages/session-ui/src/timeline/timeline-row.stories.tsx
@@ -1,4 +1,4 @@
-import type { SessionMessageAssistant, SessionMessageInfo } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistant, SessionMessageInfo } from "@opencode/client/promise"
import { createMemo } from "solid-js"
import { createStore } from "solid-js/store"
import type { SessionDocument } from "../document"
diff --git a/packages/session-ui/src/tools/tool-renderer.tsx b/packages/session-ui/src/tools/tool-renderer.tsx
index ed888e630f7..0f0d2b7e050 100644
--- a/packages/session-ui/src/tools/tool-renderer.tsx
+++ b/packages/session-ui/src/tools/tool-renderer.tsx
@@ -16,24 +16,24 @@ import {
import stripAnsi from "strip-ansi"
import { Dynamic } from "solid-js/web"
import { type SessionSummary, useData } from "../context"
-import { useFileComponent } from "@opencode-ai/ui/context/file"
-import { type UiI18n, useI18n } from "@opencode-ai/ui/context/i18n"
+import { useFileComponent } from "@opencode/ui/context/file"
+import { type UiI18n, useI18n } from "@opencode/ui/context/i18n"
import { BasicTool, GenericTool } from "../components/basic-tool"
-import { Accordion } from "@opencode-ai/ui/accordion"
-import { StickyAccordionHeader } from "@opencode-ai/ui/sticky-accordion-header"
-import { Collapsible } from "@opencode-ai/ui/collapsible"
-import { FileIcon } from "@opencode-ai/ui/file-icon"
-import { Icon, type IconProps } from "@opencode-ai/ui/icon"
+import { Accordion } from "@opencode/ui/accordion"
+import { StickyAccordionHeader } from "@opencode/ui/sticky-accordion-header"
+import { Collapsible } from "@opencode/ui/collapsible"
+import { FileIcon } from "@opencode/ui/file-icon"
+import { Icon, type IconProps } from "@opencode/ui/icon"
import { ToolErrorCard } from "../components/tool-error-card"
-import { DiffChanges } from "@opencode-ai/ui/diff-changes"
+import { DiffChanges } from "@opencode/ui/diff-changes"
import { Markdown } from "../components/markdown"
import { createMarkdownImages } from "../components/markdown-image"
import { useMarkdown } from "../context/markdown"
-import { getDirectory, getFilename } from "@opencode-ai/util/path"
-import { checksum } from "@opencode-ai/util/encode"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { TextShimmer } from "@opencode-ai/ui/text-shimmer"
+import { getDirectory, getFilename } from "@opencode/util/path"
+import { checksum } from "@opencode/util/encode"
+import { Tooltip } from "@opencode/ui/tooltip"
+import { IconButton } from "@opencode/ui/icon-button"
+import { TextShimmer } from "@opencode/ui/text-shimmer"
import { changedFileDiff, patchFileGroups } from "../components/apply-patch-file"
import { animate } from "motion"
import { SessionProgressIndicatorV2 } from "../v2/components/session-progress-indicator-v2"
@@ -41,7 +41,7 @@ import type {
SessionMessageAssistantReasoning,
SessionMessageAssistantTool,
SessionMessageShell,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import {
currentToolError,
currentToolHasLoadedFiles,
diff --git a/packages/session-ui/src/v2/components/line-comment-annotations-v2.tsx b/packages/session-ui/src/v2/components/line-comment-annotations-v2.tsx
index 72a69886ba3..919f9ec1a5b 100644
--- a/packages/session-ui/src/v2/components/line-comment-annotations-v2.tsx
+++ b/packages/session-ui/src/v2/components/line-comment-annotations-v2.tsx
@@ -8,9 +8,9 @@ import {
type LineCommentShape,
type LineCommentStateProps,
} from "../../components/line-comment-annotations"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
+import { useI18n } from "@opencode/ui/context/i18n"
import { cloneSelectedLineRange, formatSelectedLineLabel } from "../../pierre/selection-bridge"
-import { LineCommentEditor, LineComment, type LineCommentEditorMention } from "@opencode-ai/ui/line-comment"
+import { LineCommentEditor, LineComment, type LineCommentEditorMention } from "@opencode/ui/line-comment"
type LineCommentControllerV2Props = {
comments: Accessor
diff --git a/packages/session-ui/src/v2/components/session-review-empty-changes-v2.tsx b/packages/session-ui/src/v2/components/session-review-empty-changes-v2.tsx
index 368ed3338f1..4d5dc9e8b96 100644
--- a/packages/session-ui/src/v2/components/session-review-empty-changes-v2.tsx
+++ b/packages/session-ui/src/v2/components/session-review-empty-changes-v2.tsx
@@ -1,5 +1,5 @@
-import { useI18n } from "@opencode-ai/ui/context/i18n"
-import { Icon } from "@opencode-ai/ui/icon"
+import { useI18n } from "@opencode/ui/context/i18n"
+import { Icon } from "@opencode/ui/icon"
import "./session-review-v2.css"
export function SessionReviewEmptyChangesV2() {
diff --git a/packages/session-ui/src/v2/components/session-review-empty-no-git-v2.tsx b/packages/session-ui/src/v2/components/session-review-empty-no-git-v2.tsx
index f96a9b6b120..502efad1fb5 100644
--- a/packages/session-ui/src/v2/components/session-review-empty-no-git-v2.tsx
+++ b/packages/session-ui/src/v2/components/session-review-empty-no-git-v2.tsx
@@ -1,6 +1,6 @@
-import { FileIcon } from "@opencode-ai/ui/file-icon"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
-import { Button } from "@opencode-ai/ui/button"
+import { FileIcon } from "@opencode/ui/file-icon"
+import { useI18n } from "@opencode/ui/context/i18n"
+import { Button } from "@opencode/ui/button"
import "./session-review-v2.css"
export type SessionReviewEmptyNoGitV2Props = {
diff --git a/packages/session-ui/src/v2/components/session-review-file-preview-v2.tsx b/packages/session-ui/src/v2/components/session-review-file-preview-v2.tsx
index 01ebe66b8fd..0798dfd610b 100644
--- a/packages/session-ui/src/v2/components/session-review-file-preview-v2.tsx
+++ b/packages/session-ui/src/v2/components/session-review-file-preview-v2.tsx
@@ -1,12 +1,12 @@
-import { getDirectory, getFilename } from "@opencode-ai/util/path"
+import { getDirectory, getFilename } from "@opencode/util/path"
import type { SelectedLineRange } from "@pierre/diffs"
-import { DiffChanges } from "@opencode-ai/ui/diff-changes"
-import { FileIcon } from "@opencode-ai/ui/file-icon"
-import { useFileComponent } from "@opencode-ai/ui/context/file"
-import { useI18n } from "@opencode-ai/ui/context/i18n"
+import { DiffChanges } from "@opencode/ui/diff-changes"
+import { FileIcon } from "@opencode/ui/file-icon"
+import { useFileComponent } from "@opencode/ui/context/file"
+import { useI18n } from "@opencode/ui/context/i18n"
import { mediaKindFromPath } from "../../pierre/media"
import { cloneSelectedLineRange, previewSelectedLines } from "../../pierre/selection-bridge"
-import type { FileDiffInfo } from "@opencode-ai/client/promise"
+import type { FileDiffInfo } from "@opencode/client/promise"
import type { PresentationFileContent, PresentationFileDiff } from "../../file-presentation"
import { createEffect, createMemo, onCleanup, Show, untrack } from "solid-js"
import { createStore } from "solid-js/store"
@@ -24,8 +24,8 @@ import type {
import type { SessionReviewExpandMode } from "./session-review-v2"
import { createLineCommentControllerV2 } from "./line-comment-annotations-v2"
import { shouldVirtualizeReviewDiff } from "./session-review-file-preview-v2-virtualize"
-import { LineCommentOverflowIcon } from "@opencode-ai/ui/line-comment"
-import { Menu } from "@opencode-ai/ui/menu"
+import { LineCommentOverflowIcon } from "@opencode/ui/line-comment"
+import { Menu } from "@opencode/ui/menu"
import "./session-review-v2.css"
type ReviewDiff = (PresentationFileDiff & { file: string }) | FileDiffInfo
diff --git a/packages/session-ui/src/v2/components/session-review-v2.tsx b/packages/session-ui/src/v2/components/session-review-v2.tsx
index 4781316d7d9..4f60a5c939e 100644
--- a/packages/session-ui/src/v2/components/session-review-v2.tsx
+++ b/packages/session-ui/src/v2/components/session-review-v2.tsx
@@ -1,13 +1,13 @@
-import { useI18n } from "@opencode-ai/ui/context/i18n"
-import { SegmentedControlItem, SegmentedControl } from "@opencode-ai/ui/segmented-control"
-import { TextInput } from "@opencode-ai/ui/text-input"
-import { Keybind } from "@opencode-ai/ui/keybind"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { useI18n } from "@opencode/ui/context/i18n"
+import { SegmentedControlItem, SegmentedControl } from "@opencode/ui/segmented-control"
+import { TextInput } from "@opencode/ui/text-input"
+import { Keybind } from "@opencode/ui/keybind"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Tooltip } from "@opencode/ui/tooltip"
import type { SessionReviewDiffStyle } from "../../components/session-review"
-import { ResizeHandle } from "@opencode-ai/ui/resize-handle"
-import { ScrollView } from "@opencode-ai/ui/scroll-view"
+import { ResizeHandle } from "@opencode/ui/resize-handle"
+import { ScrollView } from "@opencode/ui/scroll-view"
import { useLocale } from "@kobalte/core/i18n"
import { makeEventListener } from "@solid-primitives/event-listener"
import { Show, createEffect, createMemo, createSignal, type JSX } from "solid-js"
diff --git a/packages/simulation/package.json b/packages/simulation/package.json
index aa747a1cabf..dc842713760 100644
--- a/packages/simulation/package.json
+++ b/packages/simulation/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/simulation",
+ "name": "@opencode/simulation",
"version": "1.17.13",
"type": "module",
"license": "MIT",
@@ -29,11 +29,11 @@
"typecheck": "tsgo -b"
},
"dependencies": {
- "@opencode-ai/core": "workspace:*",
- "@opencode-ai/ai": "workspace:*",
- "@opencode-ai/plugin": "workspace:*",
- "@opencode-ai/protocol": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/core": "workspace:*",
+ "@opencode/ai": "workspace:*",
+ "@opencode/plugin": "workspace:*",
+ "@opencode/protocol": "workspace:*",
+ "@opencode/util": "workspace:*",
"@opentui/core": "catalog:",
"effect": "catalog:",
"ws": "8.21.0"
diff --git a/packages/simulation/script/publish.ts b/packages/simulation/script/publish.ts
index e56ff22d286..421d83e3479 100644
--- a/packages/simulation/script/publish.ts
+++ b/packages/simulation/script/publish.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { rm } from "node:fs/promises"
import { fileURLToPath } from "node:url"
diff --git a/packages/simulation/src/backend/index.ts b/packages/simulation/src/backend/index.ts
index 04c2d588d34..a3ec0f61dbe 100644
--- a/packages/simulation/src/backend/index.ts
+++ b/packages/simulation/src/backend/index.ts
@@ -1,7 +1,7 @@
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { httpClient } from "@opencode-ai/util/effect/app-node-platform"
-import { SdkPlugins } from "@opencode-ai/core/plugin/sdk"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { httpClient } from "@opencode/util/effect/app-node-platform"
+import { SdkPlugins } from "@opencode/core/plugin/sdk"
import { Config, Effect, FileSystem, Layer } from "effect"
import { HttpClient } from "effect/unstable/http"
import { DriveManifest } from "../manifest"
diff --git a/packages/simulation/src/backend/openai.ts b/packages/simulation/src/backend/openai.ts
index 3130f00febb..ccf67d71655 100644
--- a/packages/simulation/src/backend/openai.ts
+++ b/packages/simulation/src/backend/openai.ts
@@ -1,7 +1,7 @@
import { Effect, Schema, Stream } from "effect"
import { HttpClientResponse } from "effect/unstable/http"
import { HttpClientError, TransportError } from "effect/unstable/http/HttpClientError"
-import { OpenAIChatEvent, DEFAULT_BASE_URL, PATH } from "@opencode-ai/ai/protocols/openai-chat"
+import { OpenAIChatEvent, DEFAULT_BASE_URL, PATH } from "@opencode/ai/protocols/openai-chat"
import { SimulationNetwork } from "./network"
import { SimulatedProvider } from "./simulated-provider"
diff --git a/packages/simulation/src/backend/simulated-provider.ts b/packages/simulation/src/backend/simulated-provider.ts
index 2fa73355d07..2e29a2da8a1 100644
--- a/packages/simulation/src/backend/simulated-provider.ts
+++ b/packages/simulation/src/backend/simulated-provider.ts
@@ -1,6 +1,6 @@
-import { SdkPlugins } from "@opencode-ai/core/plugin/sdk"
-import { Tool } from "@opencode-ai/core/tool"
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { SdkPlugins } from "@opencode/core/plugin/sdk"
+import { Tool } from "@opencode/core/tool"
+import { Plugin } from "@opencode/plugin/effect"
import { createHash } from "node:crypto"
import {
Cause,
diff --git a/packages/simulation/src/manifest.ts b/packages/simulation/src/manifest.ts
index 271f12823a3..1b48590db91 100644
--- a/packages/simulation/src/manifest.ts
+++ b/packages/simulation/src/manifest.ts
@@ -1,7 +1,7 @@
import { homedir } from "node:os"
import { isAbsolute, join } from "node:path"
import { Config, Effect, FileSystem, Schema } from "effect"
-import { PositiveInt } from "@opencode-ai/core/schema"
+import { PositiveInt } from "@opencode/core/schema"
const InstanceName = Schema.String.check(
Schema.makeFilter((value) =>
diff --git a/packages/simulation/src/protocol/index.ts b/packages/simulation/src/protocol/index.ts
index 6d2025724de..b61f67a433f 100644
--- a/packages/simulation/src/protocol/index.ts
+++ b/packages/simulation/src/protocol/index.ts
@@ -6,5 +6,5 @@ export {
JsonRpc,
SimulationRequestError,
UiRpcs,
-} from "@opencode-ai/protocol/simulation"
-export * as SimulationProtocol from "@opencode-ai/protocol/simulation"
+} from "@opencode/protocol/simulation"
+export * as SimulationProtocol from "@opencode/protocol/simulation"
diff --git a/packages/simulation/test/openai.test.ts b/packages/simulation/test/openai.test.ts
index a4a5b16faba..6b5fd2f5b7d 100644
--- a/packages/simulation/test/openai.test.ts
+++ b/packages/simulation/test/openai.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import { DEFAULT_BASE_URL, PATH } from "@opencode-ai/ai/protocols/openai-chat"
+import { DEFAULT_BASE_URL, PATH } from "@opencode/ai/protocols/openai-chat"
import { Effect, Stream } from "effect"
import { HttpClientRequest } from "effect/unstable/http"
import { HttpClientError } from "effect/unstable/http/HttpClientError"
diff --git a/packages/simulation/test/simulated-provider.test.ts b/packages/simulation/test/simulated-provider.test.ts
index 968b59196ab..9cf436868a6 100644
--- a/packages/simulation/test/simulated-provider.test.ts
+++ b/packages/simulation/test/simulated-provider.test.ts
@@ -2,21 +2,21 @@ import { expect, test } from "bun:test"
import { mkdir, mkdtemp, rm } from "node:fs/promises"
import { tmpdir } from "node:os"
import { join } from "node:path"
-import { Agent } from "@opencode-ai/core/agent"
-import { Config } from "@opencode-ai/core/config"
-import { Database } from "@opencode-ai/core/database/database"
-import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
-import { Bus } from "@opencode-ai/core/bus"
-import { Location } from "@opencode-ai/core/location"
-import { LocationServiceMap } from "@opencode-ai/core/location-services"
-import { Plugin } from "@opencode-ai/core/plugin"
-import { SdkPlugins } from "@opencode-ai/core/plugin/sdk"
-import { AbsolutePath } from "@opencode-ai/core/schema"
-import { Session } from "@opencode-ai/core/session"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { Tool } from "@opencode-ai/core/tool"
+import { Agent } from "@opencode/core/agent"
+import { Config } from "@opencode/core/config"
+import { Database } from "@opencode/core/database/database"
+import { makeGlobalNode } from "@opencode/util/effect/app-node"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { LayerNode } from "@opencode/util/effect/layer-node"
+import { Bus } from "@opencode/core/bus"
+import { Location } from "@opencode/core/location"
+import { LocationServiceMap } from "@opencode/core/location-services"
+import { Plugin } from "@opencode/core/plugin"
+import { SdkPlugins } from "@opencode/core/plugin/sdk"
+import { AbsolutePath } from "@opencode/core/schema"
+import { Session } from "@opencode/core/session"
+import { SessionMessage } from "@opencode/core/session/message"
+import { Tool } from "@opencode/core/tool"
import { Deferred, Effect, Fiber, Layer, Queue, Stream } from "effect"
import type { Scope } from "effect/Scope"
import { SimulatedProvider } from "../src/backend/simulated-provider"
diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json
index 5d1d57bac41..b1b74af73c9 100644
--- a/packages/stats/app/package.json
+++ b/packages/stats/app/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/stats-app",
+ "name": "@opencode/stats-app",
"version": "1.18.15",
"private": true,
"type": "module",
@@ -14,8 +14,8 @@
"dependencies": {
"@ibm/plex": "6.4.1",
"@kobalte/core": "catalog:",
- "@opencode-ai/stats-core": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
+ "@opencode/stats-core": "workspace:*",
+ "@opencode/ui": "workspace:*",
"@solidjs/meta": "catalog:",
"@solidjs/router": "catalog:",
"@solidjs/start": "catalog:",
diff --git a/packages/stats/app/src/component/model-compare-detail.tsx b/packages/stats/app/src/component/model-compare-detail.tsx
index 3790789b58b..f324eeabcd0 100644
--- a/packages/stats/app/src/component/model-compare-detail.tsx
+++ b/packages/stats/app/src/component/model-compare-detail.tsx
@@ -1,12 +1,12 @@
import { Link, Meta, Title } from "@solidjs/meta"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
import {
getStatsModelsComparisonData,
type ModelUsagePoint,
type StatsModelComparisonInput,
type StatsModelComparisonEntry,
-} from "@opencode-ai/stats-core/domain/home"
-import { runtime } from "@opencode-ai/stats-core/runtime"
+} from "@opencode/stats-core/domain/home"
+import { runtime } from "@opencode/stats-core/runtime"
import { createAsync, query, useParams, useSearchParams } from "@solidjs/router"
import { createEffect, createMemo, createSignal, For, onMount, Show } from "solid-js"
import { getRequestEvent } from "solid-js/web"
diff --git a/packages/stats/app/src/context/i18n.tsx b/packages/stats/app/src/context/i18n.tsx
index e844bf987ad..b66805c424e 100644
--- a/packages/stats/app/src/context/i18n.tsx
+++ b/packages/stats/app/src/context/i18n.tsx
@@ -1,5 +1,5 @@
import { createMemo } from "solid-js"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import { dict, type Key } from "../i18n"
import { useLanguage } from "./language"
diff --git a/packages/stats/app/src/context/language.tsx b/packages/stats/app/src/context/language.tsx
index 43214a14d54..61c56bb6603 100644
--- a/packages/stats/app/src/context/language.tsx
+++ b/packages/stats/app/src/context/language.tsx
@@ -1,7 +1,7 @@
import { createEffect } from "solid-js"
import { getRequestEvent } from "solid-js/web"
import { createStore } from "solid-js/store"
-import { createSimpleContext } from "@opencode-ai/ui/context"
+import { createSimpleContext } from "@opencode/ui/context"
import {
LOCALES,
cookie,
diff --git a/packages/stats/app/src/routes/[lab]/[model].tsx b/packages/stats/app/src/routes/[lab]/[model].tsx
index fb6c19748a5..65900464c85 100644
--- a/packages/stats/app/src/routes/[lab]/[model].tsx
+++ b/packages/stats/app/src/routes/[lab]/[model].tsx
@@ -1,5 +1,5 @@
import { Meta, Title } from "@solidjs/meta"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
import { scaleSqrt } from "d3-scale"
import countryCodesSource from "i18n-iso-countries/codes.json?raw"
import {
@@ -8,7 +8,7 @@ import {
type ModelPeerEntry,
type ModelUsagePoint,
type StatsModelData,
-} from "@opencode-ai/stats-core/domain/home"
+} from "@opencode/stats-core/domain/home"
import { createAsync, query, useParams } from "@solidjs/router"
import { createMemo, createSignal, createUniqueId, For, onMount, Show, type JSX } from "solid-js"
import { getRequestEvent } from "solid-js/web"
diff --git a/packages/stats/app/src/routes/[lab]/index.tsx b/packages/stats/app/src/routes/[lab]/index.tsx
index ab202fc89f7..be73d322d4f 100644
--- a/packages/stats/app/src/routes/[lab]/index.tsx
+++ b/packages/stats/app/src/routes/[lab]/index.tsx
@@ -1,5 +1,5 @@
import { Meta, Title } from "@solidjs/meta"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
import {
getStatsLabData,
getStatsHomeData,
@@ -7,7 +7,7 @@ import {
type MarketDay,
type ModelUsagePoint,
type StatsLabData,
-} from "@opencode-ai/stats-core/domain/home"
+} from "@opencode/stats-core/domain/home"
import { createAsync, query, useParams } from "@solidjs/router"
import { createMemo, createSignal, createUniqueId, For, onMount, Show, type JSX } from "solid-js"
import { getRequestEvent } from "solid-js/web"
diff --git a/packages/stats/app/src/routes/compare-cards.tsx b/packages/stats/app/src/routes/compare-cards.tsx
index 24077bc3b9c..5fa81502929 100644
--- a/packages/stats/app/src/routes/compare-cards.tsx
+++ b/packages/stats/app/src/routes/compare-cards.tsx
@@ -1,4 +1,4 @@
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
import { For, Show } from "solid-js"
import { catalogSlug, formatCatalogLabName, type ModelCatalogEntry } from "./model-catalog"
diff --git a/packages/stats/app/src/routes/compare/index.tsx b/packages/stats/app/src/routes/compare/index.tsx
index 861f6949347..6545beed3c3 100644
--- a/packages/stats/app/src/routes/compare/index.tsx
+++ b/packages/stats/app/src/routes/compare/index.tsx
@@ -1,5 +1,5 @@
import { Meta, Title } from "@solidjs/meta"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
import { createAsync } from "@solidjs/router"
import { createEffect, createMemo, createSignal, For, onMount, Show } from "solid-js"
import { getRequestEvent } from "solid-js/web"
diff --git a/packages/stats/app/src/routes/index.tsx b/packages/stats/app/src/routes/index.tsx
index 398f53f7186..ffa7412debb 100644
--- a/packages/stats/app/src/routes/index.tsx
+++ b/packages/stats/app/src/routes/index.tsx
@@ -1,5 +1,5 @@
import { Meta, Title } from "@solidjs/meta"
-import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
+import { ProviderIcon } from "@opencode/ui/provider-icon"
import { scaleSqrt } from "d3-scale"
import countryCodesSource from "i18n-iso-countries/codes.json?raw"
import {
@@ -11,7 +11,7 @@ import {
type SessionCostEntry,
type TokenCostEntry,
type UsagePoint,
-} from "@opencode-ai/stats-core/domain/home"
+} from "@opencode/stats-core/domain/home"
import { createAsync, query } from "@solidjs/router"
import { createEffect, createMemo, createSignal, For, onCleanup, onMount, Show, type JSX } from "solid-js"
import { getRequestEvent } from "solid-js/web"
diff --git a/packages/stats/app/src/routes/sitemap.xml.ts b/packages/stats/app/src/routes/sitemap.xml.ts
index d3d8cf64c63..4fd806bb118 100644
--- a/packages/stats/app/src/routes/sitemap.xml.ts
+++ b/packages/stats/app/src/routes/sitemap.xml.ts
@@ -1,5 +1,5 @@
-import { getStatsHomeData } from "@opencode-ai/stats-core/domain/home"
-import { runtime } from "@opencode-ai/stats-core/runtime"
+import { getStatsHomeData } from "@opencode/stats-core/domain/home"
+import { runtime } from "@opencode/stats-core/runtime"
import {
canonicalFamilyComparisonPath,
canonicalModelComparisonPath,
diff --git a/packages/stats/core/package.json b/packages/stats/core/package.json
index e1caa58ae1b..0ba85b6b5dc 100644
--- a/packages/stats/core/package.json
+++ b/packages/stats/core/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/stats-core",
+ "name": "@opencode/stats-core",
"version": "1.18.15",
"private": true,
"type": "module",
diff --git a/packages/stats/server/Dockerfile b/packages/stats/server/Dockerfile
index 81faf2ec4a7..56909c7f02f 100644
--- a/packages/stats/server/Dockerfile
+++ b/packages/stats/server/Dockerfile
@@ -9,7 +9,7 @@ FROM base AS pruner
COPY . .
-RUN bunx turbo@2.8.13 prune @opencode-ai/stats-server --docker --no-update-notifier --no-color
+RUN bunx turbo@2.8.13 prune @opencode/stats-server --docker --no-update-notifier --no-color
FROM base AS installer
@@ -17,8 +17,8 @@ COPY --from=pruner /app/out/json/ ./
# Bun 1.3.x needs the pruned workspace globs and lockfile metadata refreshed before the frozen production install.
RUN bun -e 'const packageJson = await Bun.file("package.json").json(); packageJson.workspaces.packages = Array.from(new Bun.Glob("packages/**/package.json").scanSync(".")).map((file) => file.slice(0, -"/package.json".length)).sort(); await Bun.write("package.json", JSON.stringify(packageJson, null, 2) + "\n")'
-RUN rm -f bun.lock && bun install --filter @opencode-ai/stats-server --lockfile-only --ignore-scripts
-RUN bun install --filter @opencode-ai/stats-server --frozen-lockfile --production --ignore-scripts
+RUN rm -f bun.lock && bun install --filter @opencode/stats-server --lockfile-only --ignore-scripts
+RUN bun install --filter @opencode/stats-server --frozen-lockfile --production --ignore-scripts
FROM base AS runner
diff --git a/packages/stats/server/package.json b/packages/stats/server/package.json
index 86cfff56bb6..55c2c9d94da 100644
--- a/packages/stats/server/package.json
+++ b/packages/stats/server/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/stats-server",
+ "name": "@opencode/stats-server",
"version": "1.18.15",
"private": true,
"type": "module",
@@ -16,7 +16,7 @@
"dependencies": {
"@aws-sdk/client-firehose": "3.933.0",
"@effect/platform-node": "catalog:",
- "@opencode-ai/stats-core": "workspace:*",
+ "@opencode/stats-core": "workspace:*",
"effect": "catalog:",
"sst": "catalog:"
},
diff --git a/packages/stats/server/src/stat-sync.ts b/packages/stats/server/src/stat-sync.ts
index 613fbec5b7d..bf2c7395db9 100644
--- a/packages/stats/server/src/stat-sync.ts
+++ b/packages/stats/server/src/stat-sync.ts
@@ -1,8 +1,8 @@
import * as NodeRuntime from "@effect/platform-node/NodeRuntime"
-import { Athena } from "@opencode-ai/stats-core/athena"
-import { ModelStatRepo } from "@opencode-ai/stats-core/domain/model"
-import { layer as statsLayer } from "@opencode-ai/stats-core/runtime"
-import { syncStats } from "@opencode-ai/stats-core/stat-sync"
+import { Athena } from "@opencode/stats-core/athena"
+import { ModelStatRepo } from "@opencode/stats-core/domain/model"
+import { layer as statsLayer } from "@opencode/stats-core/runtime"
+import { syncStats } from "@opencode/stats-core/stat-sync"
import { Cause, Duration, Effect, Layer, Schedule } from "effect"
const SYNC_INTERVAL = "1 hour"
diff --git a/packages/storybook/.storybook/mocks/app/context/server-sync.ts b/packages/storybook/.storybook/mocks/app/context/server-sync.ts
index 4586139d1d2..9d07c566cd2 100644
--- a/packages/storybook/.storybook/mocks/app/context/server-sync.ts
+++ b/packages/storybook/.storybook/mocks/app/context/server-sync.ts
@@ -1,4 +1,4 @@
-import type { IntegrationMethod } from "@opencode-ai/client/promise"
+import type { IntegrationMethod } from "@opencode/client/promise"
type ProviderAuthMethod = Extract
diff --git a/packages/storybook/.storybook/preview.tsx b/packages/storybook/.storybook/preview.tsx
index 111ee6bce28..08d9315664c 100644
--- a/packages/storybook/.storybook/preview.tsx
+++ b/packages/storybook/.storybook/preview.tsx
@@ -7,10 +7,10 @@ import { MetaProvider } from "@solidjs/meta"
import { addons } from "storybook/preview-api"
import { GLOBALS_UPDATED } from "storybook/internal/core-events"
import { createJSXDecorator, definePreview } from "storybook-solidjs-vite"
-import { DialogProvider } from "@opencode-ai/ui/context/dialog"
-import { MarkedProvider } from "@opencode-ai/ui/context/marked"
-import { ThemeProvider, useTheme, type ColorScheme } from "@opencode-ai/ui/theme"
-import { Font } from "@opencode-ai/ui/font"
+import { DialogProvider } from "@opencode/ui/context/dialog"
+import { MarkedProvider } from "@opencode/ui/context/marked"
+import { ThemeProvider, useTheme, type ColorScheme } from "@opencode/ui/theme"
+import { Font } from "@opencode/ui/font"
import { LanguageProvider, UiI18nBridge, useLanguage } from "@/runtime/i18n/language"
function resolveScheme(value: unknown): ColorScheme {
diff --git a/packages/storybook/package.json b/packages/storybook/package.json
index 5ad6b57a047..99cd0988d20 100644
--- a/packages/storybook/package.json
+++ b/packages/storybook/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/storybook",
+ "name": "@opencode/storybook",
"private": true,
"type": "module",
"scripts": {
@@ -8,10 +8,10 @@
"build": "storybook build"
},
"devDependencies": {
- "@opencode-ai/client": "workspace:*",
+ "@opencode/client": "workspace:*",
"@tailwindcss/vite": "catalog:",
- "@opencode-ai/session-ui": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
+ "@opencode/session-ui": "workspace:*",
+ "@opencode/ui": "workspace:*",
"@playwright/test": "catalog:",
"@solidjs/meta": "catalog:",
"@storybook/addon-a11y": "10.4.4",
diff --git a/packages/storybook/playwright/README.md b/packages/storybook/playwright/README.md
index b9578e33641..8b8af463f5e 100644
--- a/packages/storybook/playwright/README.md
+++ b/packages/storybook/playwright/README.md
@@ -26,8 +26,8 @@ bun run test:components -- component-tests/composer.spec.ts
Both suites are separately filterable Turbo tasks:
```sh
-bun turbo test:components --filter=@opencode-ai/session-ui
-bun turbo test:components --filter=@opencode-ai/app
+bun turbo test:components --filter=@opencode/session-ui
+bun turbo test:components --filter=@opencode/app
```
Component browser coverage deliberately remains separate from each package's default `test` script and from `packages/app`'s `test:e2e`, so expensive Storybook checks can be scheduled independently from required unit and full-app journey CI. Set `PLAYWRIGHT_STORYBOOK_URL` to reuse an existing Storybook instance or `PLAYWRIGHT_STORYBOOK_PORT` to choose its port.
diff --git a/packages/theme/package.json b/packages/theme/package.json
index 2411ddf22c2..9b82c7f01b1 100644
--- a/packages/theme/package.json
+++ b/packages/theme/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/theme",
+ "name": "@opencode/theme",
"version": "0.0.0",
"type": "module",
"license": "MIT",
diff --git a/packages/theme/script/publish.ts b/packages/theme/script/publish.ts
index 8e37674b644..30538cbc1cb 100644
--- a/packages/theme/script/publish.ts
+++ b/packages/theme/script/publish.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { rm } from "node:fs/promises"
import { fileURLToPath } from "node:url"
diff --git a/packages/tui/package.json b/packages/tui/package.json
index c6fe116d07e..fa3161410a3 100644
--- a/packages/tui/package.json
+++ b/packages/tui/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/tui",
+ "name": "@opencode/tui",
"version": "1.18.4",
"private": true,
"type": "module",
@@ -76,16 +76,16 @@
}
},
"dependencies": {
- "@opencode-ai/client": "workspace:*",
- "@opencode-ai/core": "workspace:*",
- "@opencode-ai/latex": "workspace:*",
- "@opencode-ai/merman": "workspace:*",
- "@opencode-ai/plugin": "workspace:*",
- "@opencode-ai/schema": "workspace:*",
- "@opencode-ai/simulation": "workspace:*",
- "@opencode-ai/theme": "workspace:*",
- "@opencode-ai/ui": "workspace:*",
- "@opencode-ai/util": "workspace:*",
+ "@opencode/client": "workspace:*",
+ "@opencode/core": "workspace:*",
+ "@opencode/latex": "workspace:*",
+ "@opencode/merman": "workspace:*",
+ "@opencode/plugin": "workspace:*",
+ "@opencode/schema": "workspace:*",
+ "@opencode/simulation": "workspace:*",
+ "@opencode/theme": "workspace:*",
+ "@opencode/ui": "workspace:*",
+ "@opencode/util": "workspace:*",
"@opentui/core": "catalog:",
"@opentui/keymap": "catalog:",
"@opentui/solid": "catalog:",
diff --git a/packages/tui/src/app.tsx b/packages/tui/src/app.tsx
index 721418a7209..d307bfc2afb 100644
--- a/packages/tui/src/app.tsx
+++ b/packages/tui/src/app.tsx
@@ -1,9 +1,9 @@
import { render, useRenderer, useTerminalDimensions } from "@opentui/solid"
import { registerOpencodeSpinner } from "./component/register-spinner"
import { Effect, Latch } from "effect"
-import { Service, type Endpoint } from "@opencode-ai/client/effect/service"
-import { OpenCode, type SessionInfo } from "@opencode-ai/client"
-import { Global } from "@opencode-ai/util/global"
+import { Service, type Endpoint } from "@opencode/client/effect/service"
+import { OpenCode, type SessionInfo } from "@opencode/client"
+import { Global } from "@opencode/util/global"
import { ClipboardProvider, useClipboard } from "./context/clipboard"
import { LogProvider, useLog, type LogSink } from "./context/log"
import { ExitProvider, useExit } from "./context/exit"
@@ -80,7 +80,7 @@ import { PromptHistoryProvider } from "./prompt/history"
import { FrecencyProvider } from "./prompt/frecency"
import { PromptStashProvider } from "./prompt/stash"
import { Toast, ToastProvider, useToast } from "./ui/toast"
-import { isFallbackTitle } from "@opencode-ai/util/session-title-fallback"
+import { isFallbackTitle } from "@opencode/util/session-title-fallback"
import * as Model from "./util/model"
import { ArgsProvider, useArgs, type Args } from "./context/args"
import open from "open"
@@ -251,7 +251,7 @@ export const run = Effect.fn("Tui.run")(function* (input: TuiInput) {
)
}
if (process.env.OPENCODE_DRIVE) {
- const { Drive } = yield* Effect.promise(() => import("@opencode-ai/simulation/frontend"))
+ const { Drive } = yield* Effect.promise(() => import("@opencode/simulation/frontend"))
return yield* Drive.create(options, input.app.version)
}
return yield* Effect.acquireRelease(
diff --git a/packages/tui/src/attention-sounds.bun.ts b/packages/tui/src/attention-sounds.bun.ts
index 09aa5fe82a4..86a6d994fce 100644
--- a/packages/tui/src/attention-sounds.bun.ts
+++ b/packages/tui/src/attention-sounds.bun.ts
@@ -1,8 +1,8 @@
///
-import defaultSoundPath from "@opencode-ai/ui/audio/bip-bop-01.mp3" with { type: "file" }
-import questionSoundPath from "@opencode-ai/ui/audio/bip-bop-03.mp3" with { type: "file" }
-import permissionSoundPath from "@opencode-ai/ui/audio/staplebops-06.mp3" with { type: "file" }
-import errorSoundPath from "@opencode-ai/ui/audio/nope-03.mp3" with { type: "file" }
-import subagentDoneSoundPath from "@opencode-ai/ui/audio/yup-01.mp3" with { type: "file" }
+import defaultSoundPath from "@opencode/ui/audio/bip-bop-01.mp3" with { type: "file" }
+import questionSoundPath from "@opencode/ui/audio/bip-bop-03.mp3" with { type: "file" }
+import permissionSoundPath from "@opencode/ui/audio/staplebops-06.mp3" with { type: "file" }
+import errorSoundPath from "@opencode/ui/audio/nope-03.mp3" with { type: "file" }
+import subagentDoneSoundPath from "@opencode/ui/audio/yup-01.mp3" with { type: "file" }
export { defaultSoundPath, questionSoundPath, permissionSoundPath, errorSoundPath, subagentDoneSoundPath }
diff --git a/packages/tui/src/attention-sounds.node.ts b/packages/tui/src/attention-sounds.node.ts
index 5169eabfa55..78cedeede84 100644
--- a/packages/tui/src/attention-sounds.node.ts
+++ b/packages/tui/src/attention-sounds.node.ts
@@ -3,7 +3,7 @@ import path from "node:path"
const require = createRequire(import.meta.url)
const resolve = (name: string) => {
- const key = `@opencode-ai/ui/audio/${name}`
+ const key = `@opencode/ui/audio/${name}`
return process.env.OPENCODE_NODE_ASSETS_DIR
? path.join(process.env.OPENCODE_NODE_ASSETS_DIR, key)
: require.resolve(key)
diff --git a/packages/tui/src/attention.ts b/packages/tui/src/attention.ts
index 14963becc05..2547eb8daae 100644
--- a/packages/tui/src/attention.ts
+++ b/packages/tui/src/attention.ts
@@ -6,7 +6,7 @@ import type {
AttentionNotifySkipReason,
AttentionWhen,
AttentionSoundName,
-} from "@opencode-ai/plugin/tui/context"
+} from "@opencode/plugin/tui/context"
import { Config } from "./config"
import { Schema } from "effect"
import stripAnsi from "strip-ansi"
diff --git a/packages/tui/src/audio.d.ts b/packages/tui/src/audio.d.ts
index 092703e747a..e4be5c7b960 100644
--- a/packages/tui/src/audio.d.ts
+++ b/packages/tui/src/audio.d.ts
@@ -3,7 +3,7 @@ declare module "*.mp3" {
export default path
}
-declare module "@opencode-ai/ui/audio/*.mp3" {
+declare module "@opencode/ui/audio/*.mp3" {
const path: string
export default path
}
diff --git a/packages/tui/src/component/dialog-integration.tsx b/packages/tui/src/component/dialog-integration.tsx
index 1584a24d279..681111fe4bf 100644
--- a/packages/tui/src/component/dialog-integration.tsx
+++ b/packages/tui/src/component/dialog-integration.tsx
@@ -10,7 +10,7 @@ import type {
FormFields,
FormValue,
LocationRef,
-} from "@opencode-ai/client"
+} from "@opencode/client"
import open from "open"
import { createEffect, createMemo, createSignal, onCleanup, onMount, Show } from "solid-js"
import { useClipboard } from "../context/clipboard"
diff --git a/packages/tui/src/component/dialog-mcp.tsx b/packages/tui/src/component/dialog-mcp.tsx
index dfe07805d68..e2c32baceb9 100644
--- a/packages/tui/src/component/dialog-mcp.tsx
+++ b/packages/tui/src/component/dialog-mcp.tsx
@@ -7,7 +7,7 @@ import { DialogSelect } from "../ui/dialog-select"
import { useDialog } from "../ui/dialog"
import { useTheme } from "../context/theme"
import { TextAttributes } from "@opentui/core"
-import type { McpServer } from "@opencode-ai/client"
+import type { McpServer } from "@opencode/client"
import { useToast } from "../ui/toast"
import { DialogErrorDetails } from "./dialog-error-details"
import { DialogIntegration } from "./dialog-integration"
diff --git a/packages/tui/src/component/dialog-move-session.tsx b/packages/tui/src/component/dialog-move-session.tsx
index 2d1022a14b2..bd4438036e3 100644
--- a/packages/tui/src/component/dialog-move-session.tsx
+++ b/packages/tui/src/component/dialog-move-session.tsx
@@ -16,7 +16,7 @@ import { isRecord } from "../util/record"
import { useToast } from "../ui/toast"
import { Spinner } from "./spinner"
import { DialogWorkspaceFileChanges } from "./dialog-workspace-file-changes"
-import type { WorktreeListOutput } from "@opencode-ai/client"
+import type { WorktreeListOutput } from "@opencode/client"
import { useRoute } from "../context/route"
import { DialogWorktreeName } from "./dialog-worktree-name"
diff --git a/packages/tui/src/component/dialog-open.tsx b/packages/tui/src/component/dialog-open.tsx
index 4116b882573..941209724a9 100644
--- a/packages/tui/src/component/dialog-open.tsx
+++ b/packages/tui/src/component/dialog-open.tsx
@@ -1,5 +1,5 @@
import { createMemo, createResource, createSignal, onCleanup, Show } from "solid-js"
-import type { OpenCodeEvent, SessionInfo } from "@opencode-ai/client"
+import type { OpenCodeEvent, SessionInfo } from "@opencode/client"
import { useTerminalDimensions } from "@opentui/solid"
import type { RGBA } from "@opentui/core"
import { dialogWidth, useDialog } from "../ui/dialog"
@@ -16,7 +16,7 @@ import { abbreviateHome } from "../runtime"
import { useTuiPaths } from "../context/runtime"
import { truncateFilePath } from "../ui/file-path"
import { stringWidth } from "../util/string-width"
-import { withTimestampedFallback } from "@opencode-ai/util/session-title-fallback"
+import { withTimestampedFallback } from "@opencode/util/session-title-fallback"
import { Spinner } from "./spinner"
import { projectName } from "../util/project"
diff --git a/packages/tui/src/component/dialog-session-list.tsx b/packages/tui/src/component/dialog-session-list.tsx
index a045a46fb35..4c234f63837 100644
--- a/packages/tui/src/component/dialog-session-list.tsx
+++ b/packages/tui/src/component/dialog-session-list.tsx
@@ -1,7 +1,7 @@
import { createMemo, createResource, createSignal, onMount, Show } from "solid-js"
import path from "path"
-import type { SessionInfo } from "@opencode-ai/client"
-import { Project } from "@opencode-ai/schema/project"
+import type { SessionInfo } from "@opencode/client"
+import { Project } from "@opencode/schema/project"
import { TextAttributes } from "@opentui/core"
import type { RGBA } from "@opentui/core"
import { useDialog } from "../ui/dialog"
@@ -21,7 +21,7 @@ import { errorMessage } from "../util/error"
import { useSessionTabs } from "../context/session-tabs"
import { useStorage } from "../context/storage"
import { useConfig } from "../config"
-import { withTimestampedFallback } from "@opencode-ai/util/session-title-fallback"
+import { withTimestampedFallback } from "@opencode/util/session-title-fallback"
import { projectName } from "../util/project"
import { useLocation } from "../context/location"
diff --git a/packages/tui/src/component/dialog-shell-output.tsx b/packages/tui/src/component/dialog-shell-output.tsx
index 61c929255d3..6e65c64e7b9 100644
--- a/packages/tui/src/component/dialog-shell-output.tsx
+++ b/packages/tui/src/component/dialog-shell-output.tsx
@@ -1,6 +1,6 @@
import { TextAttributes, type ScrollBoxRenderable } from "@opentui/core"
import { useTerminalDimensions } from "@opentui/solid"
-import { isShellNotFoundError, type LocationRef, type ShellInfo } from "@opencode-ai/client"
+import { isShellNotFoundError, type LocationRef, type ShellInfo } from "@opencode/client"
import { createEffect, createMemo, createSignal, onCleanup, Show, untrack } from "solid-js"
import stripAnsi from "strip-ansi"
import { useClient } from "../context/client"
diff --git a/packages/tui/src/component/dialog-skill.tsx b/packages/tui/src/component/dialog-skill.tsx
index bbcd62cf41e..7347fc45f4e 100644
--- a/packages/tui/src/component/dialog-skill.tsx
+++ b/packages/tui/src/component/dialog-skill.tsx
@@ -5,7 +5,7 @@ import { useDialog } from "../ui/dialog"
import { useTheme } from "../context/theme"
import { errorMessage } from "../util/error"
import { useData } from "../context/data"
-import type { LocationRef } from "@opencode-ai/client"
+import type { LocationRef } from "@opencode/client"
export type DialogSkillProps = {
location?: LocationRef
diff --git a/packages/tui/src/component/dialog-workspace-file-changes.tsx b/packages/tui/src/component/dialog-workspace-file-changes.tsx
index 89eb3c75d04..334467dd7df 100644
--- a/packages/tui/src/component/dialog-workspace-file-changes.tsx
+++ b/packages/tui/src/component/dialog-workspace-file-changes.tsx
@@ -1,6 +1,6 @@
import { TextAttributes } from "@opentui/core"
import { useKeyboard, useTerminalDimensions } from "@opentui/solid"
-import type { VcsFileStatus } from "@opencode-ai/client"
+import type { VcsFileStatus } from "@opencode/client"
import { createMemo, For } from "solid-js"
import { createStore } from "solid-js/store"
import { FilePath } from "../ui/file-path"
diff --git a/packages/tui/src/component/dialog-worktree-name.tsx b/packages/tui/src/component/dialog-worktree-name.tsx
index 3acefef48e3..0bef10d54b1 100644
--- a/packages/tui/src/component/dialog-worktree-name.tsx
+++ b/packages/tui/src/component/dialog-worktree-name.tsx
@@ -1,5 +1,5 @@
import { InputRenderable, TextAttributes } from "@opentui/core"
-import { Slug } from "@opencode-ai/core/util/slug"
+import { Slug } from "@opencode/core/util/slug"
import { createSignal, onMount } from "solid-js"
import { Keymap } from "../context/keymap"
import { useTheme } from "../context/theme"
diff --git a/packages/tui/src/component/prompt/autocomplete.tsx b/packages/tui/src/component/prompt/autocomplete.tsx
index 50d71a5d5a8..bb35ea31d29 100644
--- a/packages/tui/src/component/prompt/autocomplete.tsx
+++ b/packages/tui/src/component/prompt/autocomplete.tsx
@@ -20,8 +20,8 @@ import type { PromptInfo, PromptPartRef } from "../../prompt/history"
import { useFrecency } from "../../prompt/frecency"
import { Keymap, type KeymapCommand } from "../../context/keymap"
import { displayCharAt, mentionTriggerIndex, slashTriggerIndex } from "../../prompt/display"
-import type { FileSystemEntry } from "@opencode-ai/client"
-import { Skill } from "@opencode-ai/schema/skill"
+import type { FileSystemEntry } from "@opencode/client"
+import { Skill } from "@opencode/schema/skill"
import { stringWidth } from "../../util/string-width"
import { parseFileLineRange, stripFileLineRange } from "../../prompt/parse"
import { moveSelection, reconcileSelectionWindow, revealSelectionOffset } from "../../ui/select-controller"
diff --git a/packages/tui/src/component/prompt/index.tsx b/packages/tui/src/component/prompt/index.tsx
index e5486ac2656..eb14f32539a 100644
--- a/packages/tui/src/component/prompt/index.tsx
+++ b/packages/tui/src/component/prompt/index.tsx
@@ -32,7 +32,7 @@ import { stringWidth } from "../../util/string-width"
import { createStore, produce, unwrap } from "solid-js/store"
import { emptyPrompt, usePromptHistory, type PromptInfo, type PromptPartRef } from "../../prompt/history"
import { saveDraft, takeDraft } from "./draft-stash"
-import { Skill } from "@opencode-ai/schema/skill"
+import { Skill } from "@opencode/schema/skill"
import { computePromptTraits } from "../../prompt/traits"
import { expandPastedTextPlaceholders, expandTrackedPastedText } from "../../prompt/part"
import { usePromptStash } from "../../prompt/stash"
@@ -57,7 +57,7 @@ import { Keymap, type KeymapCommand } from "../../context/keymap"
import { useInteractivity } from "../../context/interactivity"
import { abbreviateHome } from "../../runtime"
import { Slot } from "../../plugin/render"
-import type { SessionInbox } from "@opencode-ai/schema/session-inbox"
+import type { SessionInbox } from "@opencode/schema/session-inbox"
import {
deduplicatePromptImages,
preserveMentionlessPromptAttachments,
diff --git a/packages/tui/src/component/terminal-pane.tsx b/packages/tui/src/component/terminal-pane.tsx
index 51e4fe9fd11..05515c211a0 100644
--- a/packages/tui/src/component/terminal-pane.tsx
+++ b/packages/tui/src/component/terminal-pane.tsx
@@ -1,5 +1,5 @@
import { EmbeddedTerminalRenderable, type RGBA } from "@opentui/core"
-import type { ResolvedThemeTokens } from "@opencode-ai/theme/tui"
+import type { ResolvedThemeTokens } from "@opencode/theme/tui"
import { extend, useRenderer } from "@opentui/solid"
import { createEffect, createSignal, onCleanup, onMount, Show } from "solid-js"
import { useClient } from "../context/client"
diff --git a/packages/tui/src/config/index.tsx b/packages/tui/src/config/index.tsx
index 55ecd36d3ba..1dd0a464a8b 100644
--- a/packages/tui/src/config/index.tsx
+++ b/packages/tui/src/config/index.tsx
@@ -1,7 +1,7 @@
export * as Config from "."
import { createBindingLookup } from "@opentui/keymap/extras"
-import { Vcs } from "@opencode-ai/schema/vcs"
+import { Vcs } from "@opencode/schema/vcs"
import { Schema } from "effect"
import { createContext, onCleanup, type JSX, useContext } from "solid-js"
import { createStore, reconcile } from "solid-js/store"
diff --git a/packages/tui/src/config/new-session-location.ts b/packages/tui/src/config/new-session-location.ts
index 0651e8b7967..ad6313014d6 100644
--- a/packages/tui/src/config/new-session-location.ts
+++ b/packages/tui/src/config/new-session-location.ts
@@ -1,4 +1,4 @@
-import type { LocationRef } from "@opencode-ai/client/promise"
+import type { LocationRef } from "@opencode/client/promise"
export function newSessionLocation(
mode: "launch" | "inherit",
diff --git a/packages/tui/src/context/attention.tsx b/packages/tui/src/context/attention.tsx
index bf0f5821653..f6d78964afd 100644
--- a/packages/tui/src/context/attention.tsx
+++ b/packages/tui/src/context/attention.tsx
@@ -1,4 +1,4 @@
-import type { Attention } from "@opencode-ai/plugin/tui/context"
+import type { Attention } from "@opencode/plugin/tui/context"
import { useRenderer } from "@opentui/solid"
import { createContext, onCleanup, useContext, type ParentProps } from "solid-js"
import { createTuiAttention } from "../attention"
diff --git a/packages/tui/src/context/client.tsx b/packages/tui/src/context/client.tsx
index adf302fc13c..cedd8b92118 100644
--- a/packages/tui/src/context/client.tsx
+++ b/packages/tui/src/context/client.tsx
@@ -1,5 +1,5 @@
-import type { OpenCodeClient, OpenCodeEvent } from "@opencode-ai/client"
-import { createClientConnection, createPersistentPtyClient } from "@opencode-ai/client/solid"
+import type { OpenCodeClient, OpenCodeEvent } from "@opencode/client"
+import { createClientConnection, createPersistentPtyClient } from "@opencode/client/solid"
import { createGlobalEmitter } from "@solid-primitives/event-bus"
import { onCleanup } from "solid-js"
import { createSimpleContext } from "./helper"
diff --git a/packages/tui/src/context/data.tsx b/packages/tui/src/context/data.tsx
index fdab4581e8e..3fbff477513 100644
--- a/packages/tui/src/context/data.tsx
+++ b/packages/tui/src/context/data.tsx
@@ -1,12 +1,12 @@
-import { createData } from "@opencode-ai/client/solid"
-import type { LocationRef } from "@opencode-ai/client"
-import type { Plugin } from "@opencode-ai/plugin/tui"
+import { createData } from "@opencode/client/solid"
+import type { LocationRef } from "@opencode/client"
+import type { Plugin } from "@opencode/plugin/tui"
import { createStore } from "solid-js/store"
import { createSimpleContext } from "./helper"
import { useClient } from "./client"
-export { locationKey } from "@opencode-ai/client/solid"
-export type { FormWithLocation } from "@opencode-ai/client/solid"
+export { locationKey } from "@opencode/client/solid"
+export type { FormWithLocation } from "@opencode/client/solid"
export const { use: useData, provider: DataProvider } = createSimpleContext({
name: "Data",
diff --git a/packages/tui/src/context/event.ts b/packages/tui/src/context/event.ts
index 67d28dfd78b..40519ea7bf5 100644
--- a/packages/tui/src/context/event.ts
+++ b/packages/tui/src/context/event.ts
@@ -1,4 +1,4 @@
-import type { OpenCodeEvent } from "@opencode-ai/client"
+import type { OpenCodeEvent } from "@opencode/client"
import { useClient } from "./client"
type EventMetadata = {
diff --git a/packages/tui/src/context/keymap.tsx b/packages/tui/src/context/keymap.tsx
index b1878e7e9d9..bcc98dc5717 100644
--- a/packages/tui/src/context/keymap.tsx
+++ b/packages/tui/src/context/keymap.tsx
@@ -1,4 +1,4 @@
-import type { KeymapActive, KeymapCommand, KeymapLayer, KeymapPending } from "@opencode-ai/plugin/tui/context"
+import type { KeymapActive, KeymapCommand, KeymapLayer, KeymapPending } from "@opencode/plugin/tui/context"
import { InputRenderable, TextareaRenderable, type KeyEvent, type Renderable } from "@opentui/core"
import { stringifyKeyStroke, type Binding, type CommandContext } from "@opentui/keymap"
import {
@@ -165,7 +165,7 @@ function Provider(props: ParentProps<{ config?: KeymapConfig }>) {
)
}
-export type { KeymapCommand, KeymapLayer } from "@opencode-ai/plugin/tui/context"
+export type { KeymapCommand, KeymapLayer } from "@opencode/plugin/tui/context"
export interface Keymap {
/** Dispatches a reachable command by ID. */
diff --git a/packages/tui/src/context/location.tsx b/packages/tui/src/context/location.tsx
index 54ae4b34057..8c668757e75 100644
--- a/packages/tui/src/context/location.tsx
+++ b/packages/tui/src/context/location.tsx
@@ -1,4 +1,4 @@
-import type { LocationGetOutput, LocationRef } from "@opencode-ai/client"
+import type { LocationGetOutput, LocationRef } from "@opencode/client"
import { createContext, createMemo, createSignal, onCleanup, useContext, type ParentProps } from "solid-js"
import { useClient } from "./client"
import { useData } from "./data"
diff --git a/packages/tui/src/context/panel.tsx b/packages/tui/src/context/panel.tsx
index e947c34f89d..8c4abe4b032 100644
--- a/packages/tui/src/context/panel.tsx
+++ b/packages/tui/src/context/panel.tsx
@@ -1,4 +1,4 @@
-import type { PanelPresentation } from "@opencode-ai/plugin/tui/context"
+import type { PanelPresentation } from "@opencode/plugin/tui/context"
import { batch, createContext, createMemo, createSignal, useContext, type ParentProps } from "solid-js"
export type PanelTarget = {
diff --git a/packages/tui/src/context/route.tsx b/packages/tui/src/context/route.tsx
index e2ff405e377..ec22baa256c 100644
--- a/packages/tui/src/context/route.tsx
+++ b/packages/tui/src/context/route.tsx
@@ -1,5 +1,5 @@
import { createStore, reconcile } from "solid-js/store"
-import type { LocationRef } from "@opencode-ai/client"
+import type { LocationRef } from "@opencode/client"
import { createSimpleContext } from "./helper"
import type { PromptInfo } from "../prompt/history"
import { useTuiStartup } from "./runtime"
diff --git a/packages/tui/src/context/session-retention.ts b/packages/tui/src/context/session-retention.ts
index 7b2b3d286aa..a6950af95e6 100644
--- a/packages/tui/src/context/session-retention.ts
+++ b/packages/tui/src/context/session-retention.ts
@@ -1,5 +1,5 @@
import { createEffect, untrack, type Accessor } from "solid-js"
-import type { Data } from "@opencode-ai/client/solid"
+import type { Data } from "@opencode/client/solid"
export function createSessionRetention(input: {
session: Pick
diff --git a/packages/tui/src/context/session-tabs.tsx b/packages/tui/src/context/session-tabs.tsx
index 8bd8fba17fd..0f4f477a5a1 100644
--- a/packages/tui/src/context/session-tabs.tsx
+++ b/packages/tui/src/context/session-tabs.tsx
@@ -5,7 +5,7 @@ import { isDeepEqual } from "remeda"
import { createSimpleContext } from "./helper"
import { useClient } from "./client"
import { locationKey, useData } from "./data"
-import { withTimestampedFallback } from "@opencode-ai/util/session-title-fallback"
+import { withTimestampedFallback } from "@opencode/util/session-title-fallback"
import { useEvent } from "./event"
import { useRoute } from "./route"
import { useConfig } from "../config"
diff --git a/packages/tui/src/context/session-terminals.tsx b/packages/tui/src/context/session-terminals.tsx
index 3c2681e2c3b..bd81afa2005 100644
--- a/packages/tui/src/context/session-terminals.tsx
+++ b/packages/tui/src/context/session-terminals.tsx
@@ -1,4 +1,4 @@
-import type { PersistentPtyInfo } from "@opencode-ai/client"
+import type { PersistentPtyInfo } from "@opencode/client"
import { createSignal, onCleanup } from "solid-js"
import { createSimpleContext } from "./helper"
import { useClient } from "./client"
diff --git a/packages/tui/src/context/storage.tsx b/packages/tui/src/context/storage.tsx
index 0d1630463c8..e70ba13368f 100644
--- a/packages/tui/src/context/storage.tsx
+++ b/packages/tui/src/context/storage.tsx
@@ -2,7 +2,7 @@ import { batch, createContext, onCleanup, useContext, type ParentProps } from "s
import { createStore, produce, reconcile, type Store } from "solid-js/store"
import path from "path"
import { mkdirSync, readFileSync, watch } from "fs"
-import { Flock } from "@opencode-ai/util/flock"
+import { Flock } from "@opencode/util/flock"
import { writeJsonAtomic } from "../util/persistence"
import { useTuiApp, useTuiPaths } from "./runtime"
diff --git a/packages/tui/src/context/theme.tsx b/packages/tui/src/context/theme.tsx
index ffddfc75fbc..23cd3055f51 100644
--- a/packages/tui/src/context/theme.tsx
+++ b/packages/tui/src/context/theme.tsx
@@ -6,7 +6,7 @@ import {
themeModes,
type ResolvedTheme,
type ContextName,
-} from "@opencode-ai/theme/tui"
+} from "@opencode/theme/tui"
import {
DEFAULT_THEMES,
addTheme,
diff --git a/packages/tui/src/feature-plugins/home/footer.tsx b/packages/tui/src/feature-plugins/home/footer.tsx
index 06222c60ea6..b13dae51335 100644
--- a/packages/tui/src/feature-plugins/home/footer.tsx
+++ b/packages/tui/src/feature-plugins/home/footer.tsx
@@ -1,4 +1,4 @@
-import { Plugin } from "@opencode-ai/plugin/tui"
+import { Plugin } from "@opencode/plugin/tui"
import { createMemo, Match, Show, Switch } from "solid-js"
import { useTerminalDimensions } from "@opentui/solid"
import { usePlugin } from "../../plugin/context"
diff --git a/packages/tui/src/feature-plugins/prompt/footer.tsx b/packages/tui/src/feature-plugins/prompt/footer.tsx
index c25e861d6a1..712745089ed 100644
--- a/packages/tui/src/feature-plugins/prompt/footer.tsx
+++ b/packages/tui/src/feature-plugins/prompt/footer.tsx
@@ -1,4 +1,4 @@
-import { Plugin } from "@opencode-ai/plugin/tui"
+import { Plugin } from "@opencode/plugin/tui"
import { createMemo, createSignal, Match, Show, Switch } from "solid-js"
import { contextUsage, formatContextUsage } from "../../util/session"
import { useTerminalDimensions } from "@opentui/solid"
diff --git a/packages/tui/src/feature-plugins/sidebar/context.tsx b/packages/tui/src/feature-plugins/sidebar/context.tsx
index 733683e2743..646cad96cbb 100644
--- a/packages/tui/src/feature-plugins/sidebar/context.tsx
+++ b/packages/tui/src/feature-plugins/sidebar/context.tsx
@@ -1,4 +1,4 @@
-import { Plugin } from "@opencode-ai/plugin/tui"
+import { Plugin } from "@opencode/plugin/tui"
import { createMemo, Show } from "solid-js"
import { contextUsage } from "../../util/session"
diff --git a/packages/tui/src/feature-plugins/sidebar/footer.tsx b/packages/tui/src/feature-plugins/sidebar/footer.tsx
index f1d7d932508..4312fe81526 100644
--- a/packages/tui/src/feature-plugins/sidebar/footer.tsx
+++ b/packages/tui/src/feature-plugins/sidebar/footer.tsx
@@ -1,4 +1,4 @@
-import { Plugin } from "@opencode-ai/plugin/tui"
+import { Plugin } from "@opencode/plugin/tui"
import { createMemo, Show } from "solid-js"
import { FilePath } from "../../ui/file-path"
import { useWorkingDirectoryActions } from "../../ui/working-directory-actions"
diff --git a/packages/tui/src/feature-plugins/sidebar/mcp.tsx b/packages/tui/src/feature-plugins/sidebar/mcp.tsx
index 0ea70a11301..e2ecb4b21cd 100644
--- a/packages/tui/src/feature-plugins/sidebar/mcp.tsx
+++ b/packages/tui/src/feature-plugins/sidebar/mcp.tsx
@@ -1,4 +1,4 @@
-import { Plugin } from "@opencode-ai/plugin/tui"
+import { Plugin } from "@opencode/plugin/tui"
import { createMemo, For, Match, Show, Switch, createSignal } from "solid-js"
import { DialogMcp } from "../../component/dialog-mcp"
diff --git a/packages/tui/src/feature-plugins/system/diff-viewer-file-menu.tsx b/packages/tui/src/feature-plugins/system/diff-viewer-file-menu.tsx
index 710f7696bcd..06a8d3f5b80 100644
--- a/packages/tui/src/feature-plugins/system/diff-viewer-file-menu.tsx
+++ b/packages/tui/src/feature-plugins/system/diff-viewer-file-menu.tsx
@@ -1,5 +1,5 @@
/** @jsxImportSource @opentui/solid */
-import type { Plugin } from "@opencode-ai/plugin/tui"
+import type { Plugin } from "@opencode/plugin/tui"
import { BoxRenderable, MouseButton } from "@opentui/core"
import { Portal, useTerminalDimensions } from "@opentui/solid"
import { createSignal, onCleanup } from "solid-js"
diff --git a/packages/tui/src/feature-plugins/system/diff-viewer.tsx b/packages/tui/src/feature-plugins/system/diff-viewer.tsx
index a5e7d5fe9e7..ce0e568dd8d 100644
--- a/packages/tui/src/feature-plugins/system/diff-viewer.tsx
+++ b/packages/tui/src/feature-plugins/system/diff-viewer.tsx
@@ -1,8 +1,8 @@
/** @jsxImportSource @opentui/solid */
-import type { FileDiffInfo, LocationRef } from "@opencode-ai/client"
-import type { Vcs } from "@opencode-ai/schema/vcs"
-import { Plugin } from "@opencode-ai/plugin/tui"
-import type { KeymapCommand, Route } from "@opencode-ai/plugin/tui/context"
+import type { FileDiffInfo, LocationRef } from "@opencode/client"
+import type { Vcs } from "@opencode/schema/vcs"
+import { Plugin } from "@opencode/plugin/tui"
+import type { KeymapCommand, Route } from "@opencode/plugin/tui/context"
import {
MouseButton,
TextAttributes,
diff --git a/packages/tui/src/feature-plugins/system/notifications.ts b/packages/tui/src/feature-plugins/system/notifications.ts
index 5b399d50103..7dac4422182 100644
--- a/packages/tui/src/feature-plugins/system/notifications.ts
+++ b/packages/tui/src/feature-plugins/system/notifications.ts
@@ -1,5 +1,5 @@
-import { Plugin } from "@opencode-ai/plugin/tui"
-import type { AttentionSoundName } from "@opencode-ai/plugin/tui/context"
+import { Plugin } from "@opencode/plugin/tui"
+import type { AttentionSoundName } from "@opencode/plugin/tui/context"
function notify(
context: Plugin.Context,
diff --git a/packages/tui/src/feature-plugins/system/plugins.tsx b/packages/tui/src/feature-plugins/system/plugins.tsx
index f1814871714..b26582e7bb0 100644
--- a/packages/tui/src/feature-plugins/system/plugins.tsx
+++ b/packages/tui/src/feature-plugins/system/plugins.tsx
@@ -1,5 +1,5 @@
-import type { PluginInfo } from "@opencode-ai/client"
-import { Plugin } from "@opencode-ai/plugin/tui"
+import type { PluginInfo } from "@opencode/client"
+import { Plugin } from "@opencode/plugin/tui"
import path from "path"
import { createEffect, createMemo, createResource, createSignal, onCleanup, onMount, Show } from "solid-js"
import { DialogErrorDetails } from "../../component/dialog-error-details"
diff --git a/packages/tui/src/feature-plugins/system/stats-data.ts b/packages/tui/src/feature-plugins/system/stats-data.ts
index cafd2835320..0c739adee59 100644
--- a/packages/tui/src/feature-plugins/system/stats-data.ts
+++ b/packages/tui/src/feature-plugins/system/stats-data.ts
@@ -1,5 +1,5 @@
-import type { SessionStatsInfo } from "@opencode-ai/client"
-import { TokenUsage } from "@opencode-ai/schema/token-usage"
+import type { SessionStatsInfo } from "@opencode/client"
+import { TokenUsage } from "@opencode/schema/token-usage"
export function statsMetrics(stats: SessionStatsInfo) {
return [
diff --git a/packages/tui/src/feature-plugins/system/stats.tsx b/packages/tui/src/feature-plugins/system/stats.tsx
index 6dc09f107bd..124f057ec62 100644
--- a/packages/tui/src/feature-plugins/system/stats.tsx
+++ b/packages/tui/src/feature-plugins/system/stats.tsx
@@ -1,6 +1,6 @@
-import type { SessionStatsInfo } from "@opencode-ai/client"
-import { Plugin } from "@opencode-ai/plugin/tui"
-import { activityCalendar } from "@opencode-ai/util/activity-calendar"
+import type { SessionStatsInfo } from "@opencode/client"
+import { Plugin } from "@opencode/plugin/tui"
+import { activityCalendar } from "@opencode/util/activity-calendar"
import { TextAttributes } from "@opentui/core"
import { useTerminalDimensions } from "@opentui/solid"
import { createMemo, createResource, createSignal, For, Show } from "solid-js"
diff --git a/packages/tui/src/feature-plugins/system/storybook/footer.tsx b/packages/tui/src/feature-plugins/system/storybook/footer.tsx
index 722fc23c21a..e9a44099df0 100644
--- a/packages/tui/src/feature-plugins/system/storybook/footer.tsx
+++ b/packages/tui/src/feature-plugins/system/storybook/footer.tsx
@@ -1,4 +1,4 @@
-import type { Plugin } from "@opencode-ai/plugin/tui"
+import type { Plugin } from "@opencode/plugin/tui"
import { For, Show } from "solid-js"
export type StoryFooterControl = {
diff --git a/packages/tui/src/feature-plugins/system/storybook/index.tsx b/packages/tui/src/feature-plugins/system/storybook/index.tsx
index 20b959f814b..4830a3f1ae6 100644
--- a/packages/tui/src/feature-plugins/system/storybook/index.tsx
+++ b/packages/tui/src/feature-plugins/system/storybook/index.tsx
@@ -1,4 +1,4 @@
-import { Plugin } from "@opencode-ai/plugin/tui"
+import { Plugin } from "@opencode/plugin/tui"
import { useTerminalDimensions } from "@opentui/solid"
import { createSignal, For, type JSX } from "solid-js"
import { StoryFooter } from "./footer"
diff --git a/packages/tui/src/feature-plugins/system/storybook/merman-layouts.tsx b/packages/tui/src/feature-plugins/system/storybook/merman-layouts.tsx
index e2227f35685..1b6b9d4e4bc 100644
--- a/packages/tui/src/feature-plugins/system/storybook/merman-layouts.tsx
+++ b/packages/tui/src/feature-plugins/system/storybook/merman-layouts.tsx
@@ -1,4 +1,4 @@
-import type { Plugin } from "@opencode-ai/plugin/tui"
+import type { Plugin } from "@opencode/plugin/tui"
import { useTerminalDimensions } from "@opentui/solid"
import { createMemo, createSignal, Show } from "solid-js"
import { useTheme, useThemes } from "../../../context/theme"
diff --git a/packages/tui/src/feature-plugins/system/storybook/one-cell-spinner.tsx b/packages/tui/src/feature-plugins/system/storybook/one-cell-spinner.tsx
index 9cbfbf1daa7..98d1e45b4fb 100644
--- a/packages/tui/src/feature-plugins/system/storybook/one-cell-spinner.tsx
+++ b/packages/tui/src/feature-plugins/system/storybook/one-cell-spinner.tsx
@@ -1,4 +1,4 @@
-import type { Plugin } from "@opencode-ai/plugin/tui"
+import type { Plugin } from "@opencode/plugin/tui"
import { TextAttributes, type ScrollBoxRenderable } from "@opentui/core"
import { useTerminalDimensions } from "@opentui/solid"
import { batch, createEffect, createMemo, createSignal, For, Show } from "solid-js"
diff --git a/packages/tui/src/feature-plugins/system/storybook/session-location-missing.tsx b/packages/tui/src/feature-plugins/system/storybook/session-location-missing.tsx
index 6b6e9908c57..61c7861418f 100644
--- a/packages/tui/src/feature-plugins/system/storybook/session-location-missing.tsx
+++ b/packages/tui/src/feature-plugins/system/storybook/session-location-missing.tsx
@@ -1,4 +1,4 @@
-import type { Plugin } from "@opencode-ai/plugin/tui"
+import type { Plugin } from "@opencode/plugin/tui"
import { useTerminalDimensions } from "@opentui/solid"
import { TextAttributes } from "@opentui/core"
import { createSignal } from "solid-js"
diff --git a/packages/tui/src/feature-plugins/system/storybook/session-tabs.tsx b/packages/tui/src/feature-plugins/system/storybook/session-tabs.tsx
index 86ddf5c81b8..d02e9b5c460 100644
--- a/packages/tui/src/feature-plugins/system/storybook/session-tabs.tsx
+++ b/packages/tui/src/feature-plugins/system/storybook/session-tabs.tsx
@@ -1,4 +1,4 @@
-import { Plugin } from "@opencode-ai/plugin/tui"
+import { Plugin } from "@opencode/plugin/tui"
import { useTerminalDimensions } from "@opentui/solid"
import { batch, createSignal, For } from "solid-js"
import { createStore, reconcile } from "solid-js/store"
diff --git a/packages/tui/src/mini/catalog.shared.ts b/packages/tui/src/mini/catalog.shared.ts
index 2210cb3eca3..79edf22b370 100644
--- a/packages/tui/src/mini/catalog.shared.ts
+++ b/packages/tui/src/mini/catalog.shared.ts
@@ -6,7 +6,7 @@ import type {
OpenCodeClient,
ProviderListOutput,
SkillListOutput,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import type { RunAgent, RunCommand, RunProvider, RunReference } from "./types"
type CurrentAgent = AgentListOutput["data"][number]
diff --git a/packages/tui/src/mini/demo.ts b/packages/tui/src/mini/demo.ts
index 20a9c8c038e..757706aca37 100644
--- a/packages/tui/src/mini/demo.ts
+++ b/packages/tui/src/mini/demo.ts
@@ -15,7 +15,7 @@
// Demo mode handles permission and Form replies locally, completing or failing
// the synthetic tool parts through the same callbacks used by the live footer.
import path from "path"
-import type { JsonValue, SessionMessageAssistantTool } from "@opencode-ai/client/promise"
+import type { JsonValue, SessionMessageAssistantTool } from "@opencode/client/promise"
import { parseSlashHead } from "../prompt/parse"
import { writeSessionOutput } from "./stream"
import { toolCommit, toolFinalPhase } from "./stream-v2.subagent"
diff --git a/packages/tui/src/mini/form.shared.ts b/packages/tui/src/mini/form.shared.ts
index e571dabbdcf..da17b5a953f 100644
--- a/packages/tui/src/mini/form.shared.ts
+++ b/packages/tui/src/mini/form.shared.ts
@@ -1,4 +1,4 @@
-import type { FormAnswer, FormField, FormInfo, FormValue } from "@opencode-ai/client/promise"
+import type { FormAnswer, FormField, FormInfo, FormValue } from "@opencode/client/promise"
import {
formCustom,
formDisplayValue,
diff --git a/packages/tui/src/mini/runtime.boot.ts b/packages/tui/src/mini/runtime.boot.ts
index 46e44ecdc73..3534e8bf03b 100644
--- a/packages/tui/src/mini/runtime.boot.ts
+++ b/packages/tui/src/mini/runtime.boot.ts
@@ -4,7 +4,7 @@
// needs before the first frame: TUI keymap config, model catalog, and session history for the prompt
// history ring. All are async because they read config or hit the SDK, but
// none block each other.
-import type { LocationRef } from "@opencode-ai/client/promise"
+import type { LocationRef } from "@opencode/client/promise"
import { resolve } from "../config"
import { loadRunProviders } from "./catalog.shared"
import { resolveCurrentSession, sessionHistory } from "./session.shared"
diff --git a/packages/tui/src/mini/runtime.lifecycle.ts b/packages/tui/src/mini/runtime.lifecycle.ts
index 89bb9b150cf..6a103bc8ddf 100644
--- a/packages/tui/src/mini/runtime.lifecycle.ts
+++ b/packages/tui/src/mini/runtime.lifecycle.ts
@@ -16,7 +16,7 @@ import {
type CliRenderer,
type ScrollbackWriter,
} from "@opentui/core"
-import { isFallbackTitle } from "@opencode-ai/util/session-title-fallback"
+import { isFallbackTitle } from "@opencode/util/session-title-fallback"
import { monoSnapshot } from "./mono"
import { entrySplash, exitSplash } from "./splash"
import { resolveRunTheme } from "./theme"
diff --git a/packages/tui/src/mini/runtime.queue.ts b/packages/tui/src/mini/runtime.queue.ts
index cc5c469472b..9cc606bf05c 100644
--- a/packages/tui/src/mini/runtime.queue.ts
+++ b/packages/tui/src/mini/runtime.queue.ts
@@ -8,7 +8,7 @@
// and tracks per-turn wall-clock duration for the footer status line.
//
// Resolves when the footer closes and all in-flight work finishes.
-import { SessionMessage } from "@opencode-ai/schema/session-message"
+import { SessionMessage } from "@opencode/schema/session-message"
import { Locale } from "../util/locale"
import { isCompactCommand, isExitCommand, isNewCommand } from "./prompt.shared"
import type { FooterApi, FooterEvent, RunDelivery, RunPrompt } from "./types"
diff --git a/packages/tui/src/mini/runtime.ts b/packages/tui/src/mini/runtime.ts
index 5ea8c5500da..f30482e3f16 100644
--- a/packages/tui/src/mini/runtime.ts
+++ b/packages/tui/src/mini/runtime.ts
@@ -8,8 +8,8 @@
// 3. starts the stream transport (SDK event subscription), lazily for fresh
// local sessions,
// 4. runs the prompt queue until the footer closes.
-import { SessionMessage } from "@opencode-ai/schema/session-message"
-import type { LocationRef } from "@opencode-ai/client/promise"
+import { SessionMessage } from "@opencode/schema/session-message"
+import type { LocationRef } from "@opencode/client/promise"
import type { Config } from "../config"
import { newSessionLocation } from "../config/new-session-location"
import { loadRunAgents, loadRunCommands, loadRunReferences } from "./catalog.shared"
diff --git a/packages/tui/src/mini/session.shared.ts b/packages/tui/src/mini/session.shared.ts
index 4185937d895..37539674033 100644
--- a/packages/tui/src/mini/session.shared.ts
+++ b/packages/tui/src/mini/session.shared.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageInfo, SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageInfo, SessionMessageUser } from "@opencode/client/promise"
import { projectedPromptInput } from "../prompt/codec"
import { promptCopy, promptSame } from "./prompt.shared"
import type { RunInput, RunPrompt } from "./types"
diff --git a/packages/tui/src/mini/stream-v2.image.ts b/packages/tui/src/mini/stream-v2.image.ts
index 72ce7d19ade..94623d60276 100644
--- a/packages/tui/src/mini/stream-v2.image.ts
+++ b/packages/tui/src/mini/stream-v2.image.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageAssistantTool, SessionMessageUser } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistantTool, SessionMessageUser } from "@opencode/client/promise"
import { deduplicateVisibleImages } from "../prompt/attachment"
import { toolDisplayContent } from "../util/tool-display"
import type { StreamCommit } from "./types"
diff --git a/packages/tui/src/mini/stream-v2.subagent.ts b/packages/tui/src/mini/stream-v2.subagent.ts
index c6e1442fb8c..efe5ab72ba9 100644
--- a/packages/tui/src/mini/stream-v2.subagent.ts
+++ b/packages/tui/src/mini/stream-v2.subagent.ts
@@ -22,7 +22,7 @@ import type {
SessionMessageAssistantTool,
SessionMessageInfo,
SessionMessageUser,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import { Locale } from "../util/locale"
import { createFragmentReconciler, fragmentRef, type FragmentReconciler } from "./stream-v2.fragment"
import { toolImageCommits, userImageCommits } from "./stream-v2.image"
diff --git a/packages/tui/src/mini/stream-v2.transport.ts b/packages/tui/src/mini/stream-v2.transport.ts
index 03fe7136bf7..0c14e717655 100644
--- a/packages/tui/src/mini/stream-v2.transport.ts
+++ b/packages/tui/src/mini/stream-v2.transport.ts
@@ -8,9 +8,9 @@ import type {
SessionMessageInfo,
SessionMessageUser,
SessionInboxInfo,
-} from "@opencode-ai/client/promise"
-import { Event } from "@opencode-ai/schema/event"
-import { SessionMessage } from "@opencode-ai/schema/session-message"
+} from "@opencode/client/promise"
+import { Event } from "@opencode/schema/event"
+import { SessionMessage } from "@opencode/schema/session-message"
import { blockerStatus, pickBlockerView } from "./session-data"
import { writeSessionOutput } from "./stream"
import { createFragmentReconciler, fragmentRef, type FragmentReconciler } from "./stream-v2.fragment"
diff --git a/packages/tui/src/mini/theme.ts b/packages/tui/src/mini/theme.ts
index 0ebd88cf1fa..be3f5da556b 100644
--- a/packages/tui/src/mini/theme.ts
+++ b/packages/tui/src/mini/theme.ts
@@ -1,5 +1,5 @@
import { RGBA, SyntaxStyle, type CliRenderer, type ColorInput, type TerminalColors } from "@opentui/core"
-import { generateSyntax, resolveThemeDocument, themeModes, type ResolvedTheme } from "@opencode-ai/theme/tui"
+import { generateSyntax, resolveThemeDocument, themeModes, type ResolvedTheme } from "@opencode/theme/tui"
import { allThemes, DEFAULT_THEMES, isThemeSource, parseTheme, type ThemeDocumentSource } from "../theme"
import { ansiToRgba } from "../theme/color"
import { discoverThemes } from "../theme/discovery"
@@ -312,7 +312,7 @@ async function themeSource(
mode: "dark" | "light",
): Promise {
if (name === "system" && colors) return generateSystem(colors, mode)
- const { Global } = await import("@opencode-ai/util/global")
+ const { Global } = await import("@opencode/util/global")
const custom = await discoverThemes(
configDirectories(process.env.OPENCODE_CONFIG_DIR ?? Global.Path.config, process.cwd()),
)
diff --git a/packages/tui/src/mini/tool.ts b/packages/tui/src/mini/tool.ts
index eff72cefa83..c2afca93368 100644
--- a/packages/tui/src/mini/tool.ts
+++ b/packages/tui/src/mini/tool.ts
@@ -14,7 +14,7 @@
import os from "os"
import path from "path"
import stripAnsi from "strip-ansi"
-import type { SessionMessageAssistantTool } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistantTool } from "@opencode/client/promise"
import { LANGUAGE_EXTENSIONS } from "../util/filetype"
import { Locale } from "../util/locale"
import {
diff --git a/packages/tui/src/mini/types.ts b/packages/tui/src/mini/types.ts
index a2c806d83a1..64d4972bc49 100644
--- a/packages/tui/src/mini/types.ts
+++ b/packages/tui/src/mini/types.ts
@@ -20,10 +20,10 @@ import type {
PermissionRequest,
ReferenceListOutput,
SessionMessageAssistantTool,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import type { Config } from "../config"
import type { CliRenderer } from "@opentui/core"
-import type { SessionInbox } from "@opencode-ai/schema/session-inbox"
+import type { SessionInbox } from "@opencode/schema/session-inbox"
export type RunFilePart = {
type: "file"
diff --git a/packages/tui/src/plugin/api.tsx b/packages/tui/src/plugin/api.tsx
index 7708695214a..61211ab5340 100644
--- a/packages/tui/src/plugin/api.tsx
+++ b/packages/tui/src/plugin/api.tsx
@@ -1,6 +1,6 @@
-import { PluginContextProvider } from "@opencode-ai/plugin/tui"
+import { PluginContextProvider } from "@opencode/plugin/tui"
import type { JSX } from "solid-js"
-import type { Context, Dialog, Page, SlotClaim, SlotMap, SlotPath, Toast } from "@opencode-ai/plugin/tui/context"
+import type { Context, Dialog, Page, SlotClaim, SlotMap, SlotPath, Toast } from "@opencode/plugin/tui/context"
import type { Placement, PlacementKind } from "./structure"
import { infoStringToFiletype, type MarkdownCodeBlockRenderer } from "@opentui/core"
import { useRenderer } from "@opentui/solid"
diff --git a/packages/tui/src/plugin/builtins.ts b/packages/tui/src/plugin/builtins.ts
index a2cacb8513b..d6a18b9c08c 100644
--- a/packages/tui/src/plugin/builtins.ts
+++ b/packages/tui/src/plugin/builtins.ts
@@ -8,8 +8,8 @@ import Notifications from "../feature-plugins/system/notifications"
import Plugins from "../feature-plugins/system/plugins"
import Storybook from "../feature-plugins/system/storybook"
import Stats from "../feature-plugins/system/stats"
-import Latex from "@opencode-ai/latex/plugin"
-import Merman from "@opencode-ai/merman/plugin"
+import Latex from "@opencode/latex/plugin"
+import Merman from "@opencode/merman/plugin"
export const builtins = [
HomeFooter,
diff --git a/packages/tui/src/plugin/context.tsx b/packages/tui/src/plugin/context.tsx
index b0bd292d727..a3a578b6ecf 100644
--- a/packages/tui/src/plugin/context.tsx
+++ b/packages/tui/src/plugin/context.tsx
@@ -1,5 +1,5 @@
-import type { PluginInfo } from "@opencode-ai/client"
-import type { Plugin } from "@opencode-ai/plugin/tui"
+import type { PluginInfo } from "@opencode/client"
+import type { Plugin } from "@opencode/plugin/tui"
import type { MarkdownCodeBlockRenderer, MarkdownOptions } from "@opentui/core"
import {
batch,
@@ -16,8 +16,8 @@ import {
import path from "path"
import { stat } from "fs/promises"
import { fileURLToPath } from "url"
-import type { Page } from "@opencode-ai/plugin/tui/context"
-import { Host } from "@opencode-ai/plugin/host"
+import type { Page } from "@opencode/plugin/tui/context"
+import { Host } from "@opencode/plugin/host"
import { resolveSlots, type Claim } from "./structure"
import { createStore, produce, reconcile as reconcileStore, unwrap } from "solid-js/store"
import { isDeepEqual } from "remeda"
diff --git a/packages/tui/src/plugin/discovery.ts b/packages/tui/src/plugin/discovery.ts
index 6dd55ff12d1..6fd42bc208c 100644
--- a/packages/tui/src/plugin/discovery.ts
+++ b/packages/tui/src/plugin/discovery.ts
@@ -1,6 +1,6 @@
import { readdir, stat } from "node:fs/promises"
import path from "node:path"
-export { localSource } from "@opencode-ai/plugin/source"
+export { localSource } from "@opencode/plugin/source"
import { isMissingPath, localProjectDirectory, projectConfigDirectories } from "../util/config-directories"
export async function localPluginDirectories(cwd: string, configDirectory: string) {
diff --git a/packages/tui/src/plugin/render.tsx b/packages/tui/src/plugin/render.tsx
index 0a97a1d4949..080114661fc 100644
--- a/packages/tui/src/plugin/render.tsx
+++ b/packages/tui/src/plugin/render.tsx
@@ -13,7 +13,7 @@ import {
type ParentProps,
} from "solid-js"
import { isShallowEqual } from "remeda"
-import type { SlotMap, SlotPath } from "@opencode-ai/plugin/tui/context"
+import type { SlotMap, SlotPath } from "@opencode/plugin/tui/context"
import type { SlotRender } from "./api"
import { contains, emptySlotted, type Claim } from "./structure"
import { useRoute } from "../context/route"
diff --git a/packages/tui/src/plugin/runtime-plugin-support.bun.ts b/packages/tui/src/plugin/runtime-plugin-support.bun.ts
index 409be04a019..e1d7ae2cfa8 100644
--- a/packages/tui/src/plugin/runtime-plugin-support.bun.ts
+++ b/packages/tui/src/plugin/runtime-plugin-support.bun.ts
@@ -1,8 +1,8 @@
-import { Plugin, PluginContextProvider, usePlugin } from "@opencode-ai/plugin/tui"
+import { Plugin, PluginContextProvider, usePlugin } from "@opencode/plugin/tui"
import { ensureRuntimePluginSupport } from "@opentui/solid/runtime-plugin-support/configure"
ensureRuntimePluginSupport({
additional: {
- "@opencode-ai/plugin/tui": { Plugin, PluginContextProvider, usePlugin },
+ "@opencode/plugin/tui": { Plugin, PluginContextProvider, usePlugin },
},
})
diff --git a/packages/tui/src/plugin/source.ts b/packages/tui/src/plugin/source.ts
index fa6fb53cd42..b3089a24501 100644
--- a/packages/tui/src/plugin/source.ts
+++ b/packages/tui/src/plugin/source.ts
@@ -1 +1 @@
-export { createPluginSources } from "@opencode-ai/plugin/source"
+export { createPluginSources } from "@opencode/plugin/source"
diff --git a/packages/tui/src/prompt/attachment.ts b/packages/tui/src/prompt/attachment.ts
index edaaaf11252..d3fc469ace2 100644
--- a/packages/tui/src/prompt/attachment.ts
+++ b/packages/tui/src/prompt/attachment.ts
@@ -1,4 +1,4 @@
-import type { PromptInput } from "@opencode-ai/schema"
+import type { PromptInput } from "@opencode/schema"
type PromptFile = PromptInput.FileAttachment
type PromptFileIdentity = Pick
diff --git a/packages/tui/src/prompt/codec.ts b/packages/tui/src/prompt/codec.ts
index c4669b78e75..d93130672e8 100644
--- a/packages/tui/src/prompt/codec.ts
+++ b/packages/tui/src/prompt/codec.ts
@@ -1,5 +1,5 @@
-import type { Prompt, PromptInput } from "@opencode-ai/schema"
-import { Skill } from "@opencode-ai/schema/skill"
+import type { Prompt, PromptInput } from "@opencode/schema"
+import { Skill } from "@opencode/schema/skill"
import type { Types } from "effect"
export type EditablePromptInput = Types.DeepMutable
diff --git a/packages/tui/src/prompt/directory-completion.ts b/packages/tui/src/prompt/directory-completion.ts
index a7c8500bca8..33431a4e439 100644
--- a/packages/tui/src/prompt/directory-completion.ts
+++ b/packages/tui/src/prompt/directory-completion.ts
@@ -1,5 +1,5 @@
-import type { KeymapCommand } from "@opencode-ai/plugin/tui/context"
-import type { OpenCodeClient } from "@opencode-ai/client"
+import type { KeymapCommand } from "@opencode/plugin/tui/context"
+import type { OpenCodeClient } from "@opencode/client"
import path from "path"
import { displaySlice, promptOffsetWidth } from "./display"
import { parseSlashHead } from "./parse"
diff --git a/packages/tui/src/prompt/history.tsx b/packages/tui/src/prompt/history.tsx
index 4f6d3eda7d0..4efd34f6e5a 100644
--- a/packages/tui/src/prompt/history.tsx
+++ b/packages/tui/src/prompt/history.tsx
@@ -1,7 +1,7 @@
import path from "path"
import { onMount } from "solid-js"
import { createStore, produce, unwrap } from "solid-js/store"
-import type { PromptInput } from "@opencode-ai/schema"
+import type { PromptInput } from "@opencode/schema"
import type { Types } from "effect"
import { createSimpleContext } from "../context/helper"
import { useTuiPaths } from "../context/runtime"
diff --git a/packages/tui/src/prompt/mention.ts b/packages/tui/src/prompt/mention.ts
index 224e9439419..09ff093cb1d 100644
--- a/packages/tui/src/prompt/mention.ts
+++ b/packages/tui/src/prompt/mention.ts
@@ -1,4 +1,4 @@
-import type { PromptInput, PromptMention } from "@opencode-ai/schema"
+import type { PromptInput, PromptMention } from "@opencode/schema"
import type { EditablePromptInput } from "./codec"
import { promptOffsetWidth } from "./display"
import { expandTrackedPastedText } from "./part"
diff --git a/packages/tui/src/routes/session/composer/subagents-tab.tsx b/packages/tui/src/routes/session/composer/subagents-tab.tsx
index 4d8a15251e4..5c7473c0859 100644
--- a/packages/tui/src/routes/session/composer/subagents-tab.tsx
+++ b/packages/tui/src/routes/session/composer/subagents-tab.tsx
@@ -1,7 +1,7 @@
import { createMemo, For, Show, createEffect, onMount, onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
import { TextAttributes, ScrollBoxRenderable } from "@opentui/core"
-import type { SessionInfo } from "@opencode-ai/client"
+import type { SessionInfo } from "@opencode/client"
import { useRoute, useRouteData } from "../../../context/route"
import { useData } from "../../../context/data"
import { useClient } from "../../../context/client"
@@ -9,7 +9,7 @@ import { useTheme } from "../../../context/theme"
import { Locale } from "../../../util/locale"
import { Keymap } from "../../../context/keymap"
import { useComposerTab } from "./index"
-import { withTimestampedFallback } from "@opencode-ai/util/session-title-fallback"
+import { withTimestampedFallback } from "@opencode/util/session-title-fallback"
import { sessionFamily } from "../../../util/session"
interface SubagentEntry {
diff --git a/packages/tui/src/routes/session/form.tsx b/packages/tui/src/routes/session/form.tsx
index 68bbdfab4d2..c5a007baf04 100644
--- a/packages/tui/src/routes/session/form.tsx
+++ b/packages/tui/src/routes/session/form.tsx
@@ -11,7 +11,7 @@ import {
} from "@opentui/core"
import open from "open"
import { useTheme, useThemes } from "../../context/theme"
-import type { FormAnswer, FormField, FormValue } from "@opencode-ai/client"
+import type { FormAnswer, FormField, FormValue } from "@opencode/client"
import { useData, type FormWithLocation } from "../../context/data"
import { useClipboard } from "../../context/clipboard"
import { SplitBorder } from "../../ui/border"
diff --git a/packages/tui/src/routes/session/index.tsx b/packages/tui/src/routes/session/index.tsx
index 517c3bac71f..4fc7982831c 100644
--- a/packages/tui/src/routes/session/index.tsx
+++ b/packages/tui/src/routes/session/index.tsx
@@ -37,7 +37,7 @@ import type {
SessionMessageAssistantTool,
SessionMessageUser,
SessionInfo,
-} from "@opencode-ai/client"
+} from "@opencode/client"
import { useLocal } from "../../context/local"
import { Locale } from "../../util/locale"
import { FilePath } from "../../ui/file-path"
@@ -102,10 +102,10 @@ import { switchLabel } from "../../util/model"
import { findMessageBoundary, messageNavigationSlack } from "./message-navigation"
import { stringWidth } from "../../util/string-width"
import { useArgs } from "../../context/args"
-import { withTimestampedFallback } from "@opencode-ai/util/session-title-fallback"
+import { withTimestampedFallback } from "@opencode/util/session-title-fallback"
import { useSessionTabs } from "../../context/session-tabs"
import { createSingleFlight } from "../../util/single-flight"
-import type { SessionInbox } from "@opencode-ai/schema/session-inbox"
+import type { SessionInbox } from "@opencode/schema/session-inbox"
import { generateThinkingSyntax } from "./thinking-syntax"
import { createDelayedPresence } from "../../util/delayed-presence"
import { SessionLocationMissing } from "./location-missing"
diff --git a/packages/tui/src/routes/session/message-navigation.ts b/packages/tui/src/routes/session/message-navigation.ts
index 5e75fd5df10..6f234371a91 100644
--- a/packages/tui/src/routes/session/message-navigation.ts
+++ b/packages/tui/src/routes/session/message-navigation.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageInfo } from "@opencode-ai/client"
+import type { SessionMessageInfo } from "@opencode/client"
type MessageChild = {
readonly id?: string
diff --git a/packages/tui/src/routes/session/permission.tsx b/packages/tui/src/routes/session/permission.tsx
index a80b03ad5e0..fd71965112d 100644
--- a/packages/tui/src/routes/session/permission.tsx
+++ b/packages/tui/src/routes/session/permission.tsx
@@ -3,7 +3,7 @@ import { createMemo, For, Match, Show, Switch } from "solid-js"
import { Portal, useRenderer, useTerminalDimensions, type JSX } from "@opentui/solid"
import type { TextareaRenderable } from "@opentui/core"
import { useTheme, useThemes } from "../../context/theme"
-import type { PermissionReply, PermissionRequest } from "@opencode-ai/client"
+import type { PermissionReply, PermissionRequest } from "@opencode/client"
import { SplitBorder } from "../../ui/border"
import { useData } from "../../context/data"
import { filetype } from "../../util/filetype"
diff --git a/packages/tui/src/routes/session/rows.ts b/packages/tui/src/routes/session/rows.ts
index c1f61f849c1..517b05c6653 100644
--- a/packages/tui/src/routes/session/rows.ts
+++ b/packages/tui/src/routes/session/rows.ts
@@ -1,4 +1,4 @@
-import type { SessionInboxEnqueued, SessionMessageAssistant, SessionMessageInfo } from "@opencode-ai/client"
+import type { SessionInboxEnqueued, SessionMessageAssistant, SessionMessageInfo } from "@opencode/client"
import { createEffect, on, onCleanup, type Accessor } from "solid-js"
import { createStore, produce, reconcile } from "solid-js/store"
import { useConfig } from "../../config"
diff --git a/packages/tui/src/routes/session/sidebar.tsx b/packages/tui/src/routes/session/sidebar.tsx
index 533ef1dc5f1..b4b0f67c4ef 100644
--- a/packages/tui/src/routes/session/sidebar.tsx
+++ b/packages/tui/src/routes/session/sidebar.tsx
@@ -3,7 +3,7 @@ import { createMemo, Show } from "solid-js"
import { useTheme } from "../../context/theme"
import { useConfig } from "../../config"
import { Slot } from "../../plugin/render"
-import { withTimestampedFallback } from "@opencode-ai/util/session-title-fallback"
+import { withTimestampedFallback } from "@opencode/util/session-title-fallback"
import { TextAttributes } from "@opentui/core"
import "../../component/title-shimmer"
diff --git a/packages/tui/src/simulation/semantics.ts b/packages/tui/src/simulation/semantics.ts
index e3368012117..bb0e209528c 100644
--- a/packages/tui/src/simulation/semantics.ts
+++ b/packages/tui/src/simulation/semantics.ts
@@ -1,5 +1,5 @@
import type { Renderable } from "@opentui/core"
-import type { SimulationProtocol } from "@opencode-ai/simulation/protocol"
+import type { SimulationProtocol } from "@opencode/simulation/protocol"
type Definition = Omit
diff --git a/packages/tui/src/theme/component.ts b/packages/tui/src/theme/component.ts
index 9ecd37b5ff4..1416c404d10 100644
--- a/packages/tui/src/theme/component.ts
+++ b/packages/tui/src/theme/component.ts
@@ -1,6 +1,6 @@
import type { RGBA } from "@opentui/core"
import type { Accessor } from "solid-js"
-import type { Mode, ResolvedTheme, ResolvedThemeTokens } from "@opencode-ai/theme/tui"
+import type { Mode, ResolvedTheme, ResolvedThemeTokens } from "@opencode/theme/tui"
export function createComponentTheme(current: Accessor, mode: Accessor) {
return Object.assign(createComponentThemeView(current, mode), {
diff --git a/packages/tui/src/theme/index.ts b/packages/tui/src/theme/index.ts
index 205649a28b6..68d7833b3b0 100644
--- a/packages/tui/src/theme/index.ts
+++ b/packages/tui/src/theme/index.ts
@@ -1,5 +1,5 @@
import { Schema } from "effect"
-import { migrateV1, resolveThemeDocument, ThemeDocument, themeDecodeError } from "@opencode-ai/theme/tui"
+import { migrateV1, resolveThemeDocument, ThemeDocument, themeDecodeError } from "@opencode/theme/tui"
import { resolveThemeColors } from "./resolve"
import { DEFAULT_THEMES, type Theme, type ThemeV1Json } from "./v1"
diff --git a/packages/tui/src/theme/v1.ts b/packages/tui/src/theme/v1.ts
index 6946f9cf728..c1b3426fa80 100644
--- a/packages/tui/src/theme/v1.ts
+++ b/packages/tui/src/theme/v1.ts
@@ -1,5 +1,5 @@
import { RGBA, SyntaxStyle } from "@opentui/core"
-import type { Theme, ThemeV1Json } from "@opencode-ai/theme/tui/v1"
+import type { Theme, ThemeV1Json } from "@opencode/theme/tui/v1"
import aura from "./assets/aura.json" with { type: "json" }
import ayu from "./assets/ayu.json" with { type: "json" }
import carbonfox from "./assets/carbonfox.json" with { type: "json" }
@@ -34,7 +34,7 @@ import vercel from "./assets/vercel.json" with { type: "json" }
import vesper from "./assets/vesper.json" with { type: "json" }
import zenburn from "./assets/zenburn.json" with { type: "json" }
-export type { ColorValue, HexColor, RefName, Theme, ThemeColor, ThemeV1Json, Variant } from "@opencode-ai/theme/tui/v1"
+export type { ColorValue, HexColor, RefName, Theme, ThemeColor, ThemeV1Json, Variant } from "@opencode/theme/tui/v1"
export const DEFAULT_THEMES: Record = {
aura,
diff --git a/packages/tui/src/util/connected-provider.ts b/packages/tui/src/util/connected-provider.ts
index 2fbb9f718e0..f75ab97390f 100644
--- a/packages/tui/src/util/connected-provider.ts
+++ b/packages/tui/src/util/connected-provider.ts
@@ -1,4 +1,4 @@
-import type { IntegrationInfo } from "@opencode-ai/client"
+import type { IntegrationInfo } from "@opencode/client"
export function hasConnectedProvider(integrations: readonly Pick[]) {
return integrations.some((integration) => integration.connections.length > 0)
diff --git a/packages/tui/src/util/form.ts b/packages/tui/src/util/form.ts
index 67348059501..9a7de27b6ee 100644
--- a/packages/tui/src/util/form.ts
+++ b/packages/tui/src/util/form.ts
@@ -1,4 +1,4 @@
-import type { FormField, FormValue } from "@opencode-ai/client"
+import type { FormField, FormValue } from "@opencode/client"
export type FormAnswerField = Exclude
diff --git a/packages/tui/src/util/session.ts b/packages/tui/src/util/session.ts
index b516dca75f0..7c95b45f98d 100644
--- a/packages/tui/src/util/session.ts
+++ b/packages/tui/src/util/session.ts
@@ -1,4 +1,4 @@
-import type { ModelInfo, SessionMessageAssistant, SessionMessageInfo } from "@opencode-ai/client"
+import type { ModelInfo, SessionMessageAssistant, SessionMessageInfo } from "@opencode/client"
import { Locale } from "./locale"
type SessionNode = {
diff --git a/packages/tui/src/util/tool-display.ts b/packages/tui/src/util/tool-display.ts
index cc851aed1d5..4a626860196 100644
--- a/packages/tui/src/util/tool-display.ts
+++ b/packages/tui/src/util/tool-display.ts
@@ -47,4 +47,4 @@ export function nonEmptyToolContent(content: ReadonlyArray | undefined): [
const [first, ...rest] = content
return first === undefined ? undefined : [first, ...rest]
}
-import type { SessionMessageAssistantTool } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistantTool } from "@opencode/client/promise"
diff --git a/packages/tui/test/app-lifecycle.test.tsx b/packages/tui/test/app-lifecycle.test.tsx
index 4f0a067758a..d6ab9e337a9 100644
--- a/packages/tui/test/app-lifecycle.test.tsx
+++ b/packages/tui/test/app-lifecycle.test.tsx
@@ -2,13 +2,13 @@ import { expect, test } from "bun:test"
import { EmbeddedTerminalRenderable } from "@opentui/core"
import { createTestRenderer } from "@opentui/core/testing"
import { Effect, FileSystem } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Global } from "@opencode-ai/util/global"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Global } from "@opencode/util/global"
import path from "node:path"
import { createEventStream, createFetch, directory, json } from "./fixture/tui-client"
import { tmpdir } from "./fixture/fixture"
import { createAppFixture } from "./fixture/app"
-import type { PluginInfo } from "@opencode-ai/client"
+import type { PluginInfo } from "@opencode/client"
test.each([100, 44])("Ctrl-O is immediate, dismissible, and prunes cached deletions at width %s", async (width) => {
await using state = await tmpdir()
diff --git a/packages/tui/test/cli/cmd/tui/integration-options.test.ts b/packages/tui/test/cli/cmd/tui/integration-options.test.ts
index 7f6f1fc0167..79f482feb50 100644
--- a/packages/tui/test/cli/cmd/tui/integration-options.test.ts
+++ b/packages/tui/test/cli/cmd/tui/integration-options.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { IntegrationInfo } from "@opencode-ai/client"
+import type { IntegrationInfo } from "@opencode/client"
import {
connectionSummary,
connectMethods,
diff --git a/packages/tui/test/cli/cmd/tui/notifications.test.ts b/packages/tui/test/cli/cmd/tui/notifications.test.ts
index 9918d26238c..b5502eed575 100644
--- a/packages/tui/test/cli/cmd/tui/notifications.test.ts
+++ b/packages/tui/test/cli/cmd/tui/notifications.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test"
import Notifications from "../../../../src/feature-plugins/system/notifications"
-import type { OpenCodeEvent, PermissionAsked } from "@opencode-ai/client"
-import type { AttentionNotifyOptions, Context, Route, ToastOptions } from "@opencode-ai/plugin/tui/context"
+import type { OpenCodeEvent, PermissionAsked } from "@opencode/client"
+import type { AttentionNotifyOptions, Context, Route, ToastOptions } from "@opencode/plugin/tui/context"
type Session = { id: string; title: string; parentID?: string }
diff --git a/packages/tui/test/cli/tui/data.test.tsx b/packages/tui/test/cli/tui/data.test.tsx
index 2429392b479..c4d518b0664 100644
--- a/packages/tui/test/cli/tui/data.test.tsx
+++ b/packages/tui/test/cli/tui/data.test.tsx
@@ -1,10 +1,10 @@
/** @jsxImportSource @opentui/solid */
import { expect, test } from "bun:test"
import { testRender } from "@opentui/solid"
-import type { OpenCodeEvent } from "@opencode-ai/client"
-import { SessionMessage } from "@opencode-ai/core/session/message"
-import { Bus } from "@opencode-ai/core/bus"
-import { Event } from "@opencode-ai/schema/event"
+import type { OpenCodeEvent } from "@opencode/client"
+import { SessionMessage } from "@opencode/core/session/message"
+import { Bus } from "@opencode/core/bus"
+import { Event } from "@opencode/schema/event"
import { Expected } from "../../../../core/test/lib/session-message"
import { createEffect, onMount, type ParentProps } from "solid-js"
import { ConfigProvider } from "../../../src/config"
diff --git a/packages/tui/test/cli/tui/dialog-integration.test.tsx b/packages/tui/test/cli/tui/dialog-integration.test.tsx
index ba52519e872..c2f73d89d57 100644
--- a/packages/tui/test/cli/tui/dialog-integration.test.tsx
+++ b/packages/tui/test/cli/tui/dialog-integration.test.tsx
@@ -1,6 +1,6 @@
/** @jsxImportSource @opentui/solid */
import { InputRenderable, TextareaRenderable } from "@opentui/core"
-import type { LocationRef } from "@opencode-ai/client"
+import type { LocationRef } from "@opencode/client"
import { testRender } from "@opentui/solid"
import { expect, test } from "bun:test"
import { onMount } from "solid-js"
diff --git a/packages/tui/test/cli/tui/dialog-open.test.tsx b/packages/tui/test/cli/tui/dialog-open.test.tsx
index f66842d83c8..7db0c043bea 100644
--- a/packages/tui/test/cli/tui/dialog-open.test.tsx
+++ b/packages/tui/test/cli/tui/dialog-open.test.tsx
@@ -4,7 +4,7 @@ import { once } from "node:events"
import { CliRenderEvents, TextAttributes } from "@opentui/core"
import { testRender } from "@opentui/solid"
import { createSignal, onMount } from "solid-js"
-import type { SessionInfo } from "@opencode-ai/client"
+import type { SessionInfo } from "@opencode/client"
import { DialogOpen, DialogOpenKey } from "../../../src/component/dialog-open"
import { ConfigProvider } from "../../../src/config"
import { ClientProvider } from "../../../src/context/client"
diff --git a/packages/tui/test/cli/tui/diff-viewer.test.tsx b/packages/tui/test/cli/tui/diff-viewer.test.tsx
index 2698c4a934c..94ee08840d4 100644
--- a/packages/tui/test/cli/tui/diff-viewer.test.tsx
+++ b/packages/tui/test/cli/tui/diff-viewer.test.tsx
@@ -22,7 +22,7 @@ import type {
Page,
SlotClaim,
Route,
-} from "@opencode-ai/plugin/tui/context"
+} from "@opencode/plugin/tui/context"
import { ThemeProvider, useThemes } from "../../../src/context/theme"
import { emptyThemeSource, tmpdir } from "../../fixture/fixture"
import { StorageProvider, useStorage } from "../../../src/context/storage"
diff --git a/packages/tui/test/cli/tui/input-scope.test.tsx b/packages/tui/test/cli/tui/input-scope.test.tsx
index 5237eb0efc9..39d6b87524d 100644
--- a/packages/tui/test/cli/tui/input-scope.test.tsx
+++ b/packages/tui/test/cli/tui/input-scope.test.tsx
@@ -1,5 +1,5 @@
/** @jsxImportSource @opentui/solid */
-import type { PermissionRequest } from "@opencode-ai/client"
+import type { PermissionRequest } from "@opencode/client"
import type { TextareaRenderable } from "@opentui/core"
import { testRender, type JSX } from "@opentui/solid"
import { expect, test } from "bun:test"
diff --git a/packages/tui/test/cli/tui/message-navigation.test.ts b/packages/tui/test/cli/tui/message-navigation.test.ts
index 97a29458f3b..860382ae39d 100644
--- a/packages/tui/test/cli/tui/message-navigation.test.ts
+++ b/packages/tui/test/cli/tui/message-navigation.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import type { SessionMessageAssistant, SessionMessageInfo } from "@opencode-ai/client"
+import type { SessionMessageAssistant, SessionMessageInfo } from "@opencode/client"
import { findMessageBoundary, messageNavigationSlack } from "../../../src/routes/session/message-navigation"
const messages: SessionMessageInfo[] = [
diff --git a/packages/tui/test/cli/tui/plugins-dialog.test.tsx b/packages/tui/test/cli/tui/plugins-dialog.test.tsx
index 6ab74cafb1b..9d9b552f642 100644
--- a/packages/tui/test/cli/tui/plugins-dialog.test.tsx
+++ b/packages/tui/test/cli/tui/plugins-dialog.test.tsx
@@ -4,8 +4,8 @@ import { testRender } from "@opentui/solid"
import { mkdir } from "node:fs/promises"
import path from "node:path"
import { onCleanup } from "solid-js"
-import type { PluginInfo } from "@opencode-ai/client"
-import type { Context, ToastOptions } from "@opencode-ai/plugin/tui/context"
+import type { PluginInfo } from "@opencode/client"
+import type { Context, ToastOptions } from "@opencode/plugin/tui/context"
import { ConfigProvider } from "../../../src/config"
import { Keymap } from "../../../src/context/keymap"
import { ThemeProvider, useThemes } from "../../../src/context/theme"
diff --git a/packages/tui/test/cli/tui/session-rows.test.ts b/packages/tui/test/cli/tui/session-rows.test.ts
index 2a084443176..00d9e54eabc 100644
--- a/packages/tui/test/cli/tui/session-rows.test.ts
+++ b/packages/tui/test/cli/tui/session-rows.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import type { SessionMessageAssistant, SessionMessageInfo } from "@opencode-ai/client"
+import type { SessionMessageAssistant, SessionMessageInfo } from "@opencode/client"
import { createMemo, createRoot } from "solid-js"
import { createStore } from "solid-js/store"
import {
diff --git a/packages/tui/test/cli/tui/theme-mode.test.tsx b/packages/tui/test/cli/tui/theme-mode.test.tsx
index 4fc4e93be3d..eace181772d 100644
--- a/packages/tui/test/cli/tui/theme-mode.test.tsx
+++ b/packages/tui/test/cli/tui/theme-mode.test.tsx
@@ -3,7 +3,7 @@ import { testRender } from "@opentui/solid"
import { expect, test } from "bun:test"
import { RGBA } from "@opentui/core"
import { createSignal } from "solid-js"
-import { DEFAULT_THEME, selectTheme } from "@opencode-ai/theme/tui"
+import { DEFAULT_THEME, selectTheme } from "@opencode/theme/tui"
import { createTuiResolvedConfig } from "../../fixture/tui-runtime"
import { DEFAULT_THEMES } from "../../../src/theme"
import { ConfigProvider } from "../../../src/config"
diff --git a/packages/tui/test/cli/tui/use-event.test.tsx b/packages/tui/test/cli/tui/use-event.test.tsx
index 3b239b50e96..740f090b51b 100644
--- a/packages/tui/test/cli/tui/use-event.test.tsx
+++ b/packages/tui/test/cli/tui/use-event.test.tsx
@@ -1,6 +1,6 @@
/** @jsxImportSource @opentui/solid */
import { describe, expect, test } from "bun:test"
-import type { OpenCodeClient, OpenCodeEvent } from "@opencode-ai/client"
+import type { OpenCodeClient, OpenCodeEvent } from "@opencode/client"
import { testRender } from "@opentui/solid"
import { onMount } from "solid-js"
import { ClientProvider, useClient } from "../../../src/context/client"
diff --git a/packages/tui/test/compact-admission.test.tsx b/packages/tui/test/compact-admission.test.tsx
index 861684b9722..d11aa1d09a3 100644
--- a/packages/tui/test/compact-admission.test.tsx
+++ b/packages/tui/test/compact-admission.test.tsx
@@ -2,7 +2,7 @@ import { expect, test } from "bun:test"
import { createTestRenderer } from "@opentui/core/testing"
import { InputRenderable } from "@opentui/core"
import { Effect, FileSystem } from "effect"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { createEventStream, createFetch, directory, json } from "./fixture/tui-client"
import { tmpdir } from "./fixture/fixture"
diff --git a/packages/tui/test/completion-notices.test.tsx b/packages/tui/test/completion-notices.test.tsx
index dfce19b0cd2..840300fdabc 100644
--- a/packages/tui/test/completion-notices.test.tsx
+++ b/packages/tui/test/completion-notices.test.tsx
@@ -2,7 +2,7 @@ import { expect, test } from "bun:test"
import { type Renderable, ScrollBoxRenderable } from "@opentui/core"
import { createTestRenderer } from "@opentui/core/testing"
import { Effect, FileSystem } from "effect"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { createEventStream, createFetch, directory, json } from "./fixture/tui-client"
import { tmpdir } from "./fixture/fixture"
diff --git a/packages/tui/test/component/dialog-shell-output.test.tsx b/packages/tui/test/component/dialog-shell-output.test.tsx
index 2912df24951..14a133eae83 100644
--- a/packages/tui/test/component/dialog-shell-output.test.tsx
+++ b/packages/tui/test/component/dialog-shell-output.test.tsx
@@ -1,7 +1,7 @@
/** @jsxImportSource @opentui/solid */
import { ScrollBoxRenderable } from "@opentui/core"
import { testRender } from "@opentui/solid"
-import type { ShellInfo } from "@opencode-ai/client"
+import type { ShellInfo } from "@opencode/client"
import { expect, test } from "bun:test"
import { createSignal, onMount } from "solid-js"
import { ConfigProvider } from "../../src/config"
diff --git a/packages/tui/test/context/session-retention.test.ts b/packages/tui/test/context/session-retention.test.ts
index a7b7f8a4f6a..1e60802e49d 100644
--- a/packages/tui/test/context/session-retention.test.ts
+++ b/packages/tui/test/context/session-retention.test.ts
@@ -1,6 +1,6 @@
import { expect, test } from "bun:test"
-import type { OpenCodeEvent } from "@opencode-ai/client"
-import { createData } from "@opencode-ai/client/solid"
+import type { OpenCodeEvent } from "@opencode/client"
+import { createData } from "@opencode/client/solid"
import { createGlobalEmitter } from "@solid-primitives/event-bus"
import { createRoot, createSignal } from "solid-js"
import { createSessionRetention } from "../../src/context/session-retention"
diff --git a/packages/tui/test/context/session-tabs.test.tsx b/packages/tui/test/context/session-tabs.test.tsx
index 51263831d71..a259c5b782d 100644
--- a/packages/tui/test/context/session-tabs.test.tsx
+++ b/packages/tui/test/context/session-tabs.test.tsx
@@ -1,6 +1,6 @@
/** @jsxImportSource @opentui/solid */
import { expect, test } from "bun:test"
-import type { OpenCodeEvent } from "@opencode-ai/client"
+import type { OpenCodeEvent } from "@opencode/client"
import { testRender } from "@opentui/solid"
import { mkdirSync, watch } from "fs"
import path from "path"
diff --git a/packages/tui/test/copy-session-id.test.tsx b/packages/tui/test/copy-session-id.test.tsx
index 4e5f50153df..9ea71925bb7 100644
--- a/packages/tui/test/copy-session-id.test.tsx
+++ b/packages/tui/test/copy-session-id.test.tsx
@@ -2,7 +2,7 @@ import { expect, spyOn, test } from "bun:test"
import { InputRenderable, TextareaRenderable } from "@opentui/core"
import { createTestRenderer } from "@opentui/core/testing"
import { Effect, FileSystem } from "effect"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { createEventStream, createFetch, directory, json } from "./fixture/tui-client"
import { tmpdir } from "./fixture/fixture"
diff --git a/packages/tui/test/feature-plugins/prompt-footer.test.tsx b/packages/tui/test/feature-plugins/prompt-footer.test.tsx
index 869c8e808de..9cacc58e58c 100644
--- a/packages/tui/test/feature-plugins/prompt-footer.test.tsx
+++ b/packages/tui/test/feature-plugins/prompt-footer.test.tsx
@@ -2,7 +2,7 @@
import { expect, test } from "bun:test"
import { RGBA, TextRenderable } from "@opentui/core"
import { testRender } from "@opentui/solid"
-import type { Context } from "@opencode-ai/plugin/tui/context"
+import type { Context } from "@opencode/plugin/tui/context"
import { createSignal } from "solid-js"
import { PromptFooter } from "../../src/feature-plugins/prompt/footer"
diff --git a/packages/tui/test/feature-plugins/sidebar-context.test.tsx b/packages/tui/test/feature-plugins/sidebar-context.test.tsx
index e984caaf968..71826aefb69 100644
--- a/packages/tui/test/feature-plugins/sidebar-context.test.tsx
+++ b/packages/tui/test/feature-plugins/sidebar-context.test.tsx
@@ -2,7 +2,7 @@
import { expect, test } from "bun:test"
import { RGBA } from "@opentui/core"
import { testRender } from "@opentui/solid"
-import type { Context } from "@opencode-ai/plugin/tui/context"
+import type { Context } from "@opencode/plugin/tui/context"
import { SidebarContext } from "../../src/feature-plugins/sidebar/context"
function context(options?: { cost?: number; tokens?: number }) {
diff --git a/packages/tui/test/fixture/app.ts b/packages/tui/test/fixture/app.ts
index 25a37410c7c..22f4844c840 100644
--- a/packages/tui/test/fixture/app.ts
+++ b/packages/tui/test/fixture/app.ts
@@ -1,7 +1,7 @@
import { createTestRenderer } from "@opentui/core/testing"
import { Effect, FileSystem } from "effect"
-import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
-import { Global } from "@opencode-ai/util/global"
+import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder"
+import { Global } from "@opencode/util/global"
import type { TuiInput } from "../../src/app"
import type { Config } from "../../src/config"
import { createEventStream, createFetch, type FetchHandler } from "./tui-client"
diff --git a/packages/tui/test/fixture/local.tsx b/packages/tui/test/fixture/local.tsx
index a0033efe097..7dac10ac59e 100644
--- a/packages/tui/test/fixture/local.tsx
+++ b/packages/tui/test/fixture/local.tsx
@@ -1,5 +1,5 @@
import { testRender } from "@opentui/solid"
-import type { AgentInfo, ModelInfo, SessionInfo } from "@opencode-ai/client"
+import type { AgentInfo, ModelInfo, SessionInfo } from "@opencode/client"
import path from "node:path"
import { ConfigProvider } from "../../src/config"
import { ArgsProvider, type Args } from "../../src/context/args"
diff --git a/packages/tui/test/fixture/tui-client.ts b/packages/tui/test/fixture/tui-client.ts
index b0a116e5857..558ead5e083 100644
--- a/packages/tui/test/fixture/tui-client.ts
+++ b/packages/tui/test/fixture/tui-client.ts
@@ -1,4 +1,4 @@
-import { OpenCode, type OpenCodeEvent } from "@opencode-ai/client"
+import { OpenCode, type OpenCodeEvent } from "@opencode/client"
export const worktree = "/tmp/opencode"
export const directory = `${worktree}/packages/tui`
diff --git a/packages/tui/test/mini/catalog.shared.test.ts b/packages/tui/test/mini/catalog.shared.test.ts
index fbfdf40089f..3d255781c35 100644
--- a/packages/tui/test/mini/catalog.shared.test.ts
+++ b/packages/tui/test/mini/catalog.shared.test.ts
@@ -1,5 +1,5 @@
import { afterEach, describe, expect, mock, spyOn, test } from "bun:test"
-import { OpenCode } from "@opencode-ai/client/promise"
+import { OpenCode } from "@opencode/client/promise"
import { loadRunReferences, runProviders } from "../../src/mini/catalog.shared"
import { catalogModel, catalogProvider } from "./fixture/catalog"
diff --git a/packages/tui/test/mini/entry.body.test.ts b/packages/tui/test/mini/entry.body.test.ts
index 6151b719fb6..42b53ecc6c5 100644
--- a/packages/tui/test/mini/entry.body.test.ts
+++ b/packages/tui/test/mini/entry.body.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test"
import os from "os"
import path from "path"
-import type { SessionMessageAssistantTool } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistantTool } from "@opencode/client/promise"
import { entryBody, entryCanStream, entryDone } from "../../src/mini/entry.body"
import type { StreamCommit, ToolSnapshot } from "../../src/mini/types"
import { canonicalToolPart } from "./fixture/tool-part"
diff --git a/packages/tui/test/mini/fixture/catalog.ts b/packages/tui/test/mini/fixture/catalog.ts
index 39ac1383ee9..9dfb4b9077c 100644
--- a/packages/tui/test/mini/fixture/catalog.ts
+++ b/packages/tui/test/mini/fixture/catalog.ts
@@ -1,5 +1,5 @@
import { spyOn } from "bun:test"
-import type { LocationRef, ModelListOutput, OpenCodeClient, ProviderListOutput } from "@opencode-ai/client/promise"
+import type { LocationRef, ModelListOutput, OpenCodeClient, ProviderListOutput } from "@opencode/client/promise"
export function catalogProvider(id: string, name: string): ProviderListOutput["data"][number] {
return {
diff --git a/packages/tui/test/mini/fixture/tool-part.ts b/packages/tui/test/mini/fixture/tool-part.ts
index 4c74f9336e5..d745d3b11e6 100644
--- a/packages/tui/test/mini/fixture/tool-part.ts
+++ b/packages/tui/test/mini/fixture/tool-part.ts
@@ -1,4 +1,4 @@
-import type { SessionMessageAssistantTool } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistantTool } from "@opencode/client/promise"
export function canonicalToolPart(
name: string,
diff --git a/packages/tui/test/mini/footer.view.test.tsx b/packages/tui/test/mini/footer.view.test.tsx
index 0e9018c632b..3065abaa319 100644
--- a/packages/tui/test/mini/footer.view.test.tsx
+++ b/packages/tui/test/mini/footer.view.test.tsx
@@ -4,7 +4,7 @@ import { BoxRenderable, ImageRenderable, RGBA, type CliRenderer, type RootRender
import { createTestRenderer } from "@opentui/core/testing"
import { testRender } from "@opentui/solid"
import { createSignal } from "solid-js"
-import type { FormInfo } from "@opencode-ai/client/promise"
+import type { FormInfo } from "@opencode/client/promise"
import { Keymap } from "../../src/context/keymap"
import type { ClipboardContent, ClipboardService } from "../../src/context/clipboard"
import {
diff --git a/packages/tui/test/mini/form.shared.test.ts b/packages/tui/test/mini/form.shared.test.ts
index d9285da2ac9..086f486f36d 100644
--- a/packages/tui/test/mini/form.shared.test.ts
+++ b/packages/tui/test/mini/form.shared.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { FormField, FormInfo } from "@opencode-ai/client/promise"
+import type { FormField, FormInfo } from "@opencode/client/promise"
import {
createFormBodyState,
formAcknowledge,
diff --git a/packages/tui/test/mini/runtime.boot.test.ts b/packages/tui/test/mini/runtime.boot.test.ts
index 52fd9a0e5f1..ddb2d42e714 100644
--- a/packages/tui/test/mini/runtime.boot.test.ts
+++ b/packages/tui/test/mini/runtime.boot.test.ts
@@ -1,5 +1,5 @@
import { afterEach, describe, expect, mock, spyOn, test } from "bun:test"
-import { OpenCode } from "@opencode-ai/client/promise"
+import { OpenCode } from "@opencode/client/promise"
import { resolveMiniSettings, resolveModelInfo, resolveRunTuiConfig } from "../../src/mini/runtime.boot"
import { catalogModel, catalogProvider } from "./fixture/catalog"
import { createTuiResolvedConfig } from "../fixture/tui-runtime"
diff --git a/packages/tui/test/mini/runtime.test.ts b/packages/tui/test/mini/runtime.test.ts
index 62a8980401e..c26935e7fe6 100644
--- a/packages/tui/test/mini/runtime.test.ts
+++ b/packages/tui/test/mini/runtime.test.ts
@@ -1,5 +1,5 @@
import { afterEach, describe, expect, mock, spyOn, test } from "bun:test"
-import { OpenCode } from "@opencode-ai/client/promise"
+import { OpenCode } from "@opencode/client/promise"
import { runInteractiveDeferredMode } from "../../src/mini/runtime"
import type { LifecycleInput } from "../../src/mini/runtime.lifecycle"
import type { FooterEvent, MiniHost } from "../../src/mini/types"
diff --git a/packages/tui/test/mini/scrollback.surface.test.ts b/packages/tui/test/mini/scrollback.surface.test.ts
index cb8b87c1b34..52aab18367d 100644
--- a/packages/tui/test/mini/scrollback.surface.test.ts
+++ b/packages/tui/test/mini/scrollback.surface.test.ts
@@ -1,5 +1,5 @@
import { afterEach, expect, test } from "bun:test"
-import type { SessionMessageAssistantTool } from "@opencode-ai/client/promise"
+import type { SessionMessageAssistantTool } from "@opencode/client/promise"
import { CliRenderEvents, MarkdownRenderable, RGBA, SyntaxStyle, TextAttributes, TextRenderable } from "@opentui/core"
import { MockTreeSitterClient, createTestRenderer, type TestRenderer } from "@opentui/core/testing"
import { monoSnapshot } from "../../src/mini/mono"
diff --git a/packages/tui/test/mini/session.shared.test.ts b/packages/tui/test/mini/session.shared.test.ts
index 87061415aa5..2604459611a 100644
--- a/packages/tui/test/mini/session.shared.test.ts
+++ b/packages/tui/test/mini/session.shared.test.ts
@@ -1,5 +1,5 @@
import { afterEach, describe, expect, mock, spyOn, test } from "bun:test"
-import { OpenCode, type SessionMessageUser } from "@opencode-ai/client/promise"
+import { OpenCode, type SessionMessageUser } from "@opencode/client/promise"
import {
createSession,
resolveCurrentSession,
diff --git a/packages/tui/test/mini/stream-v2.transport.test.ts b/packages/tui/test/mini/stream-v2.transport.test.ts
index a77624f0324..40277dc1cb3 100644
--- a/packages/tui/test/mini/stream-v2.transport.test.ts
+++ b/packages/tui/test/mini/stream-v2.transport.test.ts
@@ -11,7 +11,7 @@ import {
type PermissionRequest,
type SessionInboxInfo,
type ToolContent,
-} from "@opencode-ai/client/promise"
+} from "@opencode/client/promise"
import { createSessionTransport } from "../../src/mini/stream-v2.transport"
import { runPromptQueue } from "../../src/mini/runtime.queue"
import { entryBody } from "../../src/mini/entry.body"
diff --git a/packages/tui/test/mini/theme.test.ts b/packages/tui/test/mini/theme.test.ts
index b2a0d70bad1..d15e277f6a9 100644
--- a/packages/tui/test/mini/theme.test.ts
+++ b/packages/tui/test/mini/theme.test.ts
@@ -1,7 +1,7 @@
import { afterAll, beforeAll, expect, test } from "bun:test"
import path from "node:path"
import { RGBA, type CliRenderer, type TerminalColors } from "@opentui/core"
-import { DEFAULT_THEME, resolveThemeDocument, type ResolvedTheme } from "@opencode-ai/theme/tui"
+import { DEFAULT_THEME, resolveThemeDocument, type ResolvedTheme } from "@opencode/theme/tui"
import {
RUN_THEME_MONO,
RUN_THEME_FALLBACK,
diff --git a/packages/tui/test/plugin-source.test.ts b/packages/tui/test/plugin-source.test.ts
index cc0c1faa898..8dd30e14065 100644
--- a/packages/tui/test/plugin-source.test.ts
+++ b/packages/tui/test/plugin-source.test.ts
@@ -2,12 +2,12 @@ import { expect, test } from "bun:test"
import path from "node:path"
import { mkdir, rename, symlink } from "node:fs/promises"
import { fileURLToPath, pathToFileURL } from "node:url"
-import { Host } from "@opencode-ai/plugin/host"
+import { Host } from "@opencode/plugin/host"
import "../src/plugin/runtime-plugin-support.bun"
import { createPluginSources } from "../src/plugin/source"
import { createSourceWatcher } from "../src/plugin/watch"
import { createSignal } from "solid-js"
-import { Plugin } from "@opencode-ai/plugin/tui"
+import { Plugin } from "@opencode/plugin/tui"
import { tmpdir } from "./fixture/fixture"
test("a fresh local plugin generation observes edited helper exports", async () => {
@@ -101,7 +101,7 @@ test("shared runtime and ordinary package identities survive plugin generations"
await Bun.write(
entry,
`import { createSignal } from "solid-js"
- import { Plugin } from "@opencode-ai/plugin/tui"
+ import { Plugin } from "@opencode/plugin/tui"
import value from "example"
export { createSignal, Plugin, value }; export const label = ${JSON.stringify(label)}`,
)
@@ -324,7 +324,7 @@ test("each helper resolves packages from its own directory", async () => {
const entry = new URL("tui.ts", sources.url)
await Bun.write(
entry,
- 'import { Plugin } from "@opencode-ai/plugin/tui"; import value from "./nested/helper"; export default { Plugin, value }',
+ 'import { Plugin } from "@opencode/plugin/tui"; import value from "./nested/helper"; export default { Plugin, value }',
)
await Bun.write(new URL("nested/helper.ts", sources.url), 'import value from "example"; export default value')
for (const directory of ["", "nested/"]) {
diff --git a/packages/tui/test/prompt/autocomplete.test.ts b/packages/tui/test/prompt/autocomplete.test.ts
index b7527f9f6dc..5e9bf6bd0b0 100644
--- a/packages/tui/test/prompt/autocomplete.test.ts
+++ b/packages/tui/test/prompt/autocomplete.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import path from "path"
-import type { KeymapCommand } from "@opencode-ai/plugin/tui/context"
+import type { KeymapCommand } from "@opencode/plugin/tui/context"
import {
directoryAutocomplete,
directoryAutocompleteExactValue,
diff --git a/packages/tui/test/prompt/codec.test.ts b/packages/tui/test/prompt/codec.test.ts
index 35e1f678f34..42db78d6892 100644
--- a/packages/tui/test/prompt/codec.test.ts
+++ b/packages/tui/test/prompt/codec.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { Prompt } from "@opencode-ai/schema"
+import type { Prompt } from "@opencode/schema"
import { projectedPromptInput } from "../../src/prompt/codec"
describe("prompt codec", () => {
diff --git a/packages/tui/test/prompt/mention.test.ts b/packages/tui/test/prompt/mention.test.ts
index e6982ff4a00..9b131b1ade3 100644
--- a/packages/tui/test/prompt/mention.test.ts
+++ b/packages/tui/test/prompt/mention.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import type { PromptInput } from "@opencode-ai/schema"
+import type { PromptInput } from "@opencode/schema"
import {
expandPromptInputPastedText,
realignPromptInputMentions,
diff --git a/packages/tui/test/session-home.test.tsx b/packages/tui/test/session-home.test.tsx
index 14dfcd1f16c..acf8ef0829c 100644
--- a/packages/tui/test/session-home.test.tsx
+++ b/packages/tui/test/session-home.test.tsx
@@ -2,7 +2,7 @@ import { expect, test } from "bun:test"
import { type Renderable, ScrollBoxRenderable } from "@opentui/core"
import { createTestRenderer } from "@opentui/core/testing"
import { Effect, FileSystem } from "effect"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { createEventStream, createFetch, directory, json } from "./fixture/tui-client"
import { tmpdir } from "./fixture/fixture"
diff --git a/packages/tui/test/session-wheel-focus.test.tsx b/packages/tui/test/session-wheel-focus.test.tsx
index 3a14094d6c5..2db240a42f2 100644
--- a/packages/tui/test/session-wheel-focus.test.tsx
+++ b/packages/tui/test/session-wheel-focus.test.tsx
@@ -2,7 +2,7 @@ import { expect, test } from "bun:test"
import { BoxRenderable, EmbeddedTerminalRenderable, type Renderable, ScrollBoxRenderable } from "@opentui/core"
import { createTestRenderer } from "@opentui/core/testing"
import { Effect, FileSystem } from "effect"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { createEventStream, createFetch, directory, json } from "./fixture/tui-client"
import { tmpdir } from "./fixture/fixture"
diff --git a/packages/tui/test/simulation/semantics.test.ts b/packages/tui/test/simulation/semantics.test.ts
index 3d372024dbd..5d5398b91c8 100644
--- a/packages/tui/test/simulation/semantics.test.ts
+++ b/packages/tui/test/simulation/semantics.test.ts
@@ -1,8 +1,8 @@
import { expect, test } from "bun:test"
import { BoxRenderable } from "@opentui/core"
import { Effect } from "effect"
-import { SimulationSemantics as Reader } from "@opencode-ai/simulation/frontend/semantics"
-import { SimulationRenderer } from "@opencode-ai/simulation/frontend/renderer"
+import { SimulationSemantics as Reader } from "@opencode/simulation/frontend/semantics"
+import { SimulationRenderer } from "@opencode/simulation/frontend/renderer"
import { SimulationSemantics } from "../../src/simulation/semantics"
test("shares lazy semantic annotations with the simulation renderer", async () => {
diff --git a/packages/tui/test/stats.test.ts b/packages/tui/test/stats.test.ts
index a694fec854f..0f4ed16000e 100644
--- a/packages/tui/test/stats.test.ts
+++ b/packages/tui/test/stats.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionStatsInfo } from "@opencode-ai/client"
+import type { SessionStatsInfo } from "@opencode/client"
import { statsMetrics, statsNumber } from "../src/feature-plugins/system/stats-data"
const stats: SessionStatsInfo = {
diff --git a/packages/tui/test/stats.view.test.tsx b/packages/tui/test/stats.view.test.tsx
index fc2a8b5a8ad..5c84cc10303 100644
--- a/packages/tui/test/stats.view.test.tsx
+++ b/packages/tui/test/stats.view.test.tsx
@@ -1,6 +1,6 @@
import { expect, test } from "bun:test"
import { createTestRenderer } from "@opentui/core/testing"
-import { Global } from "@opencode-ai/util/global"
+import { Global } from "@opencode/util/global"
import { Effect, FileSystem } from "effect"
import { createEventStream, createFetch, json } from "./fixture/tui-client"
import { tmpdir } from "./fixture/fixture"
diff --git a/packages/tui/test/theme/v2/component.test.ts b/packages/tui/test/theme/v2/component.test.ts
index d01201a5480..264455030ee 100644
--- a/packages/tui/test/theme/v2/component.test.ts
+++ b/packages/tui/test/theme/v2/component.test.ts
@@ -1,7 +1,7 @@
import { expect, test } from "bun:test"
import { createSignal } from "solid-js"
import { RGBA } from "@opentui/core"
-import { DEFAULT_THEME, resolveTheme, selectTheme, type ContextName } from "@opencode-ai/theme/tui"
+import { DEFAULT_THEME, resolveTheme, selectTheme, type ContextName } from "@opencode/theme/tui"
import { createComponentTheme, createComponentThemeView } from "../../../src/theme/component"
test("provides reactive properties, states, contexts, and color operations", () => {
diff --git a/packages/tui/test/theme/v2/resolve.test.ts b/packages/tui/test/theme/v2/resolve.test.ts
index b15e1a1a5c1..0bccdf05afd 100644
--- a/packages/tui/test/theme/v2/resolve.test.ts
+++ b/packages/tui/test/theme/v2/resolve.test.ts
@@ -8,7 +8,7 @@ import {
selectTheme,
type Mode,
type ThemeDefinition,
-} from "@opencode-ai/theme/tui"
+} from "@opencode/theme/tui"
import { parseTheme, type ThemeDocumentSource } from "../../../src/theme"
const light = selectTheme(DEFAULT_THEME, "light")
diff --git a/packages/tui/test/theme/v2/select.test.ts b/packages/tui/test/theme/v2/select.test.ts
index 9da37b2ac3c..92970b9adbb 100644
--- a/packages/tui/test/theme/v2/select.test.ts
+++ b/packages/tui/test/theme/v2/select.test.ts
@@ -7,7 +7,7 @@ import {
type HueDefinition,
type ThemeDefinition,
type ThemeDocument,
-} from "@opencode-ai/theme/tui"
+} from "@opencode/theme/tui"
const hue = {} as HueDefinition
const light = { hue, categorical: ["blue"], text: { default: "#111111", subdued: "#222222" } } satisfies ThemeDefinition
diff --git a/packages/tui/test/theme/v2/types.typecheck.ts b/packages/tui/test/theme/v2/types.typecheck.ts
index 50a5efcb47c..c0c3e73d5e1 100644
--- a/packages/tui/test/theme/v2/types.typecheck.ts
+++ b/packages/tui/test/theme/v2/types.typecheck.ts
@@ -1,4 +1,4 @@
-import type { BackgroundDefinition, TextDefinition, ThemeDefinition, ThemeDocument } from "@opencode-ai/theme/tui"
+import type { BackgroundDefinition, TextDefinition, ThemeDefinition, ThemeDocument } from "@opencode/theme/tui"
const text = {
default: "$hue.neutral.900",
diff --git a/packages/tui/test/theme/v2/v1-migrate.test.ts b/packages/tui/test/theme/v2/v1-migrate.test.ts
index da5e638f078..33c9feba4b6 100644
--- a/packages/tui/test/theme/v2/v1-migrate.test.ts
+++ b/packages/tui/test/theme/v2/v1-migrate.test.ts
@@ -6,7 +6,7 @@ import {
resolveThemeDocument,
selectThemeMode,
themeModes,
-} from "@opencode-ai/theme/tui"
+} from "@opencode/theme/tui"
import { DEFAULT_THEMES, resolveTheme as resolveV1 } from "../../../src/theme"
test("migrates resolved V1 modes into V2 tokens", () => {
diff --git a/packages/tui/test/util/form.test.ts b/packages/tui/test/util/form.test.ts
index 2766a9d586c..3c081d57957 100644
--- a/packages/tui/test/util/form.test.ts
+++ b/packages/tui/test/util/form.test.ts
@@ -1,5 +1,5 @@
import { expect, test } from "bun:test"
-import type { FormField, FormValue } from "@opencode-ai/client"
+import type { FormField, FormValue } from "@opencode/client"
import {
formCustom,
formDisplayValue,
diff --git a/packages/tui/test/util/session.test.ts b/packages/tui/test/util/session.test.ts
index b3e32aa6340..328d2f0341a 100644
--- a/packages/tui/test/util/session.test.ts
+++ b/packages/tui/test/util/session.test.ts
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
-import type { SessionMessageInfo } from "@opencode-ai/client"
+import type { SessionMessageInfo } from "@opencode/client"
import { lastAssistantWithUsage, sessionFamily } from "../../src/util/session"
const assistant = (id: string, input: number): SessionMessageInfo => ({
diff --git a/packages/ui/package.json b/packages/ui/package.json
index ee5b424ce2f..b1d08b9064d 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -1,5 +1,5 @@
{
- "name": "@opencode-ai/ui",
+ "name": "@opencode/ui",
"version": "1.18.15",
"type": "module",
"license": "MIT",
diff --git a/packages/ui/script/publish.ts b/packages/ui/script/publish.ts
index ba81ab7dfee..bf566d07b9a 100644
--- a/packages/ui/script/publish.ts
+++ b/packages/ui/script/publish.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { rm } from "node:fs/promises"
import { fileURLToPath } from "node:url"
diff --git a/packages/ui/src/actions/button/button.tsx b/packages/ui/src/actions/button/button.tsx
index 8e753f4477d..3d04fb1e01f 100644
--- a/packages/ui/src/actions/button/button.tsx
+++ b/packages/ui/src/actions/button/button.tsx
@@ -1,6 +1,6 @@
import { Root } from "@kobalte/core/button"
import { type ComponentProps, Show, splitProps } from "solid-js"
-import { Icon, type IconProps } from "@opencode-ai/ui/icon"
+import { Icon, type IconProps } from "@opencode/ui/icon"
import "./button.css"
export interface ButtonProps
diff --git a/packages/ui/src/actions/icon-button/icon-button.stories.tsx b/packages/ui/src/actions/icon-button/icon-button.stories.tsx
index 12ceb742a26..37bfee00161 100644
--- a/packages/ui/src/actions/icon-button/icon-button.stories.tsx
+++ b/packages/ui/src/actions/icon-button/icon-button.stories.tsx
@@ -1,6 +1,6 @@
import { For } from "solid-js"
import { IconButton } from "./icon-button"
-import { Icon } from "@opencode-ai/ui/icon"
+import { Icon } from "@opencode/ui/icon"
const docs = `### Overview
Square icon-only button with three visual variants and three sizes.
diff --git a/packages/ui/src/actions/split-button/split-button.stories.tsx b/packages/ui/src/actions/split-button/split-button.stories.tsx
index 8fc92704264..89946da34c0 100644
--- a/packages/ui/src/actions/split-button/split-button.stories.tsx
+++ b/packages/ui/src/actions/split-button/split-button.stories.tsx
@@ -1,5 +1,5 @@
-import { Icon } from "@opencode-ai/ui/icon"
-import { AppIcon } from "@opencode-ai/ui/app-icon"
+import { Icon } from "@opencode/ui/icon"
+import { AppIcon } from "@opencode/ui/app-icon"
import { SplitButton, SplitButtonAction, SplitButtonMenuTrigger } from "./split-button"
export default {
diff --git a/packages/ui/src/components/card.stories.tsx b/packages/ui/src/components/card.stories.tsx
index d057c44d3ff..73f17dbc18e 100644
--- a/packages/ui/src/components/card.stories.tsx
+++ b/packages/ui/src/components/card.stories.tsx
@@ -1,6 +1,6 @@
// @ts-nocheck
import { Card, CardActions, CardDescription, CardTitle } from "./card"
-import { Button } from "@opencode-ai/ui/button"
+import { Button } from "@opencode/ui/button"
const docs = `### Overview
Surface container for grouping related content and actions.
diff --git a/packages/ui/src/components/card.tsx b/packages/ui/src/components/card.tsx
index e9d0d555aef..f176b974d2f 100644
--- a/packages/ui/src/components/card.tsx
+++ b/packages/ui/src/components/card.tsx
@@ -1,5 +1,5 @@
import { type ComponentProps, Show, splitProps } from "solid-js"
-import { Icon, type IconProps } from "@opencode-ai/ui/icon"
+import { Icon, type IconProps } from "@opencode/ui/icon"
type Variant = "normal" | "error" | "warning" | "success" | "info"
diff --git a/packages/ui/src/components/collapsible.tsx b/packages/ui/src/components/collapsible.tsx
index d8db3f56d43..f79decebb47 100644
--- a/packages/ui/src/components/collapsible.tsx
+++ b/packages/ui/src/components/collapsible.tsx
@@ -1,6 +1,6 @@
import { Collapsible as Kobalte, CollapsibleRootProps } from "@kobalte/core/collapsible"
import { ComponentProps, ParentProps, splitProps } from "solid-js"
-import { Icon } from "@opencode-ai/ui/icon"
+import { Icon } from "@opencode/ui/icon"
export interface CollapsibleProps extends ParentProps {
class?: string
diff --git a/packages/ui/src/components/image-preview.stories.tsx b/packages/ui/src/components/image-preview.stories.tsx
index 82231b4a103..ea86c655cdd 100644
--- a/packages/ui/src/components/image-preview.stories.tsx
+++ b/packages/ui/src/components/image-preview.stories.tsx
@@ -1,7 +1,7 @@
// @ts-nocheck
import { onMount } from "solid-js"
import * as mod from "./image-preview"
-import { Button } from "@opencode-ai/ui/button"
+import { Button } from "@opencode/ui/button"
import { useDialog } from "../context/dialog"
const docs = `### Overview
diff --git a/packages/ui/src/components/image-preview.tsx b/packages/ui/src/components/image-preview.tsx
index aaf016185e6..3654e8a0dd4 100644
--- a/packages/ui/src/components/image-preview.tsx
+++ b/packages/ui/src/components/image-preview.tsx
@@ -1,7 +1,7 @@
import { Dialog as Kobalte } from "@kobalte/core/dialog"
import { useI18n } from "../context/i18n"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
export interface ImagePreviewProps {
src: string
diff --git a/packages/ui/src/components/list.tsx b/packages/ui/src/components/list.tsx
index 49951518210..fc67346bfa5 100644
--- a/packages/ui/src/components/list.tsx
+++ b/packages/ui/src/components/list.tsx
@@ -1,10 +1,10 @@
-import { type FilteredListProps, useFilteredList } from "@opencode-ai/ui/hooks"
+import { type FilteredListProps, useFilteredList } from "@opencode/ui/hooks"
import { createEffect, For, type JSX, on, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { makeEventListener } from "@solid-primitives/event-listener"
import { useI18n } from "../context/i18n"
-import { Icon, type IconProps } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
+import { Icon, type IconProps } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
import { TextField } from "./text-field"
function findByKey(container: HTMLElement, key: string) {
diff --git a/packages/ui/src/components/popover.tsx b/packages/ui/src/components/popover.tsx
index 7084f9d736b..42e52be51cc 100644
--- a/packages/ui/src/components/popover.tsx
+++ b/packages/ui/src/components/popover.tsx
@@ -3,8 +3,8 @@ import { ComponentProps, JSXElement, ParentProps, Show, createEffect, splitProps
import { createStore } from "solid-js/store"
import { makeEventListener } from "@solid-primitives/event-listener"
import { useI18n } from "../context/i18n"
-import { Icon } from "@opencode-ai/ui/icon"
-import { IconButton } from "@opencode-ai/ui/icon-button"
+import { Icon } from "@opencode/ui/icon"
+import { IconButton } from "@opencode/ui/icon-button"
export interface PopoverProps
extends ParentProps,
diff --git a/packages/ui/src/components/sticky-accordion-header.stories.tsx b/packages/ui/src/components/sticky-accordion-header.stories.tsx
index 9aff390ca17..cb3385cf9de 100644
--- a/packages/ui/src/components/sticky-accordion-header.stories.tsx
+++ b/packages/ui/src/components/sticky-accordion-header.stories.tsx
@@ -1,5 +1,5 @@
// @ts-nocheck
-import { Accordion } from "@opencode-ai/ui/accordion"
+import { Accordion } from "@opencode/ui/accordion"
import * as mod from "./sticky-accordion-header"
const docs = `### Overview
diff --git a/packages/ui/src/components/sticky-accordion-header.tsx b/packages/ui/src/components/sticky-accordion-header.tsx
index 974b3b690c8..51ee51697d7 100644
--- a/packages/ui/src/components/sticky-accordion-header.tsx
+++ b/packages/ui/src/components/sticky-accordion-header.tsx
@@ -1,4 +1,4 @@
-import { Accordion } from "@opencode-ai/ui/accordion"
+import { Accordion } from "@opencode/ui/accordion"
import { ParentProps } from "solid-js"
export function StickyAccordionHeader(
diff --git a/packages/ui/src/components/text-field.tsx b/packages/ui/src/components/text-field.tsx
index 778fbe761ae..c782efbd3d0 100644
--- a/packages/ui/src/components/text-field.tsx
+++ b/packages/ui/src/components/text-field.tsx
@@ -2,9 +2,9 @@ import { TextField as Kobalte } from "@kobalte/core/text-field"
import { createSignal, Show, splitProps } from "solid-js"
import type { ComponentProps } from "solid-js"
import { useI18n } from "../context/i18n"
-import { IconButton } from "@opencode-ai/ui/icon-button"
-import { Icon } from "@opencode-ai/ui/icon"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { IconButton } from "@opencode/ui/icon-button"
+import { Icon } from "@opencode/ui/icon"
+import { Tooltip } from "@opencode/ui/tooltip"
export interface TextFieldProps
extends ComponentProps,
diff --git a/packages/ui/src/components/thinking-heading.stories.tsx b/packages/ui/src/components/thinking-heading.stories.tsx
index 64eb61cea60..75c142b09d1 100644
--- a/packages/ui/src/components/thinking-heading.stories.tsx
+++ b/packages/ui/src/components/thinking-heading.stories.tsx
@@ -1,7 +1,7 @@
// @ts-nocheck
import { createEffect, For, on, onMount, onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
-import { TextShimmer } from "@opencode-ai/ui/text-shimmer"
+import { TextShimmer } from "@opencode/ui/text-shimmer"
import { TextReveal } from "./text-reveal"
export default {
diff --git a/packages/ui/src/data-display/line-comment/line-comment.tsx b/packages/ui/src/data-display/line-comment/line-comment.tsx
index 6d176ccd64a..afb66af27e9 100644
--- a/packages/ui/src/data-display/line-comment/line-comment.tsx
+++ b/packages/ui/src/data-display/line-comment/line-comment.tsx
@@ -1,8 +1,8 @@
import { For, Show, createSignal, onMount, splitProps, type ComponentProps, type JSX } from "solid-js"
-import { FileIcon } from "@opencode-ai/ui/file-icon"
+import { FileIcon } from "@opencode/ui/file-icon"
import { useI18n } from "../../context/i18n"
import { useFilteredList } from "../../hooks"
-import { Button } from "@opencode-ai/ui/button"
+import { Button } from "@opencode/ui/button"
import "./line-comment.css"
/** Horizontal “more” glyph for the display-card overflow control (Figma outline-dots). */
diff --git a/packages/ui/src/feedback/toast/toast.stories.tsx b/packages/ui/src/feedback/toast/toast.stories.tsx
index effd85a8214..2c521fd2f1b 100644
--- a/packages/ui/src/feedback/toast/toast.stories.tsx
+++ b/packages/ui/src/feedback/toast/toast.stories.tsx
@@ -1,5 +1,5 @@
import { Toast, showToast } from "./toast"
-import { Button } from "@opencode-ai/ui/button"
+import { Button } from "@opencode/ui/button"
const docs = `### Overview
Toast notifications with optional icons, actions, and progress.
diff --git a/packages/ui/src/forms/checkbox/checkbox.stories.tsx b/packages/ui/src/forms/checkbox/checkbox.stories.tsx
index 35a89339aad..cf940f0f201 100644
--- a/packages/ui/src/forms/checkbox/checkbox.stories.tsx
+++ b/packages/ui/src/forms/checkbox/checkbox.stories.tsx
@@ -1,5 +1,5 @@
// @ts-nocheck
-import { Icon } from "@opencode-ai/ui/icon"
+import { Icon } from "@opencode/ui/icon"
import { Checkbox } from "./checkbox"
const docs = `### Overview
diff --git a/packages/ui/src/forms/field/field.stories.tsx b/packages/ui/src/forms/field/field.stories.tsx
index 5b065dd830b..311e786d98f 100644
--- a/packages/ui/src/forms/field/field.stories.tsx
+++ b/packages/ui/src/forms/field/field.stories.tsx
@@ -1,9 +1,9 @@
// @ts-nocheck
import { createSignal } from "solid-js"
import { Field } from "./field"
-import { InlineInput } from "@opencode-ai/ui/inline-input"
-import { TextInput } from "@opencode-ai/ui/text-input"
-import { Textarea } from "@opencode-ai/ui/textarea"
+import { InlineInput } from "@opencode/ui/inline-input"
+import { TextInput } from "@opencode/ui/text-input"
+import { Textarea } from "@opencode/ui/textarea"
const docs = `### Overview
Composable field layout for TextInput, Textarea, and InlineInput.
diff --git a/packages/ui/src/forms/field/field.tsx b/packages/ui/src/forms/field/field.tsx
index 609bc304dbc..7db177fa665 100644
--- a/packages/ui/src/forms/field/field.tsx
+++ b/packages/ui/src/forms/field/field.tsx
@@ -11,7 +11,7 @@ import {
type ComponentProps,
type ParentProps,
} from "solid-js"
-import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { Tooltip } from "@opencode/ui/tooltip"
import "./field.css"
type FieldContextValue = {
diff --git a/packages/ui/src/forms/select/select.stories.tsx b/packages/ui/src/forms/select/select.stories.tsx
index 68018086048..38aea7db5c6 100644
--- a/packages/ui/src/forms/select/select.stories.tsx
+++ b/packages/ui/src/forms/select/select.stories.tsx
@@ -1,6 +1,6 @@
// @ts-nocheck
import { createSignal } from "solid-js"
-import { Field } from "@opencode-ai/ui/field"
+import { Field } from "@opencode/ui/field"
import { Select } from "./select"
const fruits = ["Apple", "Banana", "Cherry", "Date", "Elderberry"]
diff --git a/packages/ui/src/forms/text-input/text-input.stories.tsx b/packages/ui/src/forms/text-input/text-input.stories.tsx
index 809031721d4..1b203bfda2b 100644
--- a/packages/ui/src/forms/text-input/text-input.stories.tsx
+++ b/packages/ui/src/forms/text-input/text-input.stories.tsx
@@ -1,6 +1,6 @@
// @ts-nocheck
import { createSignal } from "solid-js"
-import { Field } from "@opencode-ai/ui/field"
+import { Field } from "@opencode/ui/field"
import { TextInput } from "./text-input"
const docs = `### Overview
diff --git a/packages/ui/src/forms/text-input/text-input.tsx b/packages/ui/src/forms/text-input/text-input.tsx
index df1015f301d..843f3bc6274 100644
--- a/packages/ui/src/forms/text-input/text-input.tsx
+++ b/packages/ui/src/forms/text-input/text-input.tsx
@@ -1,5 +1,5 @@
import { type ComponentProps, type JSX, Show, splitProps } from "solid-js"
-import { Icon } from "@opencode-ai/ui/icon"
+import { Icon } from "@opencode/ui/icon"
import { useI18n } from "../../context/i18n"
import "./text-input.css"
diff --git a/packages/ui/src/forms/textarea/textarea.stories.tsx b/packages/ui/src/forms/textarea/textarea.stories.tsx
index 7bbfa6e361d..4acfbf618f8 100644
--- a/packages/ui/src/forms/textarea/textarea.stories.tsx
+++ b/packages/ui/src/forms/textarea/textarea.stories.tsx
@@ -1,6 +1,6 @@
// @ts-nocheck
import { createSignal } from "solid-js"
-import { Field } from "@opencode-ai/ui/field"
+import { Field } from "@opencode/ui/field"
import { Textarea } from "./textarea"
const docs = `### Overview
diff --git a/packages/ui/src/navigation/menu/menu.stories.tsx b/packages/ui/src/navigation/menu/menu.stories.tsx
index 71343adc991..7813ca4e2bf 100644
--- a/packages/ui/src/navigation/menu/menu.stories.tsx
+++ b/packages/ui/src/navigation/menu/menu.stories.tsx
@@ -1,9 +1,9 @@
// @ts-nocheck
import { createSignal } from "solid-js"
import { Menu } from "./menu"
-import { Button } from "@opencode-ai/ui/button"
-import { Avatar } from "@opencode-ai/ui/avatar"
-import { Icon } from "@opencode-ai/ui/icon"
+import { Button } from "@opencode/ui/button"
+import { Avatar } from "@opencode/ui/avatar"
+import { Icon } from "@opencode/ui/icon"
const docs = `### Overview
Composable menu primitive built on Kobalte's \`DropdownMenu\` and \`ContextMenu\`. The same item components (\`Item\`, \`CheckboxItem\`, \`RadioItem\`, \`SubTrigger\`) work inside either container.
diff --git a/packages/ui/src/overlays/dialog/dialog.stories.tsx b/packages/ui/src/overlays/dialog/dialog.stories.tsx
index 4d39a88c094..207726f4659 100644
--- a/packages/ui/src/overlays/dialog/dialog.stories.tsx
+++ b/packages/ui/src/overlays/dialog/dialog.stories.tsx
@@ -1,6 +1,6 @@
import { Overlay, Portal, Root, Trigger } from "@kobalte/core/dialog"
import { Dialog, DialogBody, DialogFooter, DialogHeader, DialogTitle, DialogTitleGroup } from "./dialog"
-import { Button } from "@opencode-ai/ui/button"
+import { Button } from "@opencode/ui/button"
const docs = `### Overview
Dialog content wrapper built on Kobalte's dialog primitive with v2 styling.
diff --git a/packages/ui/src/overlays/tooltip/tooltip.stories.tsx b/packages/ui/src/overlays/tooltip/tooltip.stories.tsx
index 1536ab89ee0..e5c73681365 100644
--- a/packages/ui/src/overlays/tooltip/tooltip.stories.tsx
+++ b/packages/ui/src/overlays/tooltip/tooltip.stories.tsx
@@ -1,5 +1,5 @@
import { Tooltip } from "./tooltip"
-import { Keybind } from "@opencode-ai/ui/keybind"
+import { Keybind } from "@opencode/ui/keybind"
const docs = `### Overview
Floating tooltip built on Kobalte's tooltip primitive.
diff --git a/packages/updates/package.json b/packages/updates/package.json
index 26989707e4b..fda1674a0d2 100644
--- a/packages/updates/package.json
+++ b/packages/updates/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/updates",
+ "name": "@opencode/updates",
"version": "1.18.4",
"private": true,
"type": "module",
diff --git a/packages/util/docs/layer-node.md b/packages/util/docs/layer-node.md
index aa78972df20..9a94fcd364a 100644
--- a/packages/util/docs/layer-node.md
+++ b/packages/util/docs/layer-node.md
@@ -17,7 +17,7 @@ There are three values to compose:
```ts
import { Context, Effect, Layer } from "effect"
-import { LayerNode } from "@opencode-ai/util/effect/layer-node"
+import { LayerNode } from "@opencode/util/effect/layer-node"
class Database extends Context.Service()("example/Database") {}
class Users extends Context.Service()("example/Users") {}
diff --git a/packages/util/package.json b/packages/util/package.json
index bc3a5f21ce5..08b4da5d194 100644
--- a/packages/util/package.json
+++ b/packages/util/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/util",
+ "name": "@opencode/util",
"version": "1.18.3",
"type": "module",
"license": "MIT",
diff --git a/packages/util/script/publish.ts b/packages/util/script/publish.ts
index ec6cff16c4e..8e5fb0a9c8f 100644
--- a/packages/util/script/publish.ts
+++ b/packages/util/script/publish.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { rm } from "node:fs/promises"
import { fileURLToPath } from "node:url"
diff --git a/packages/util/tsconfig.dist.json b/packages/util/tsconfig.dist.json
index c24daa277b5..ffbfe503a59 100644
--- a/packages/util/tsconfig.dist.json
+++ b/packages/util/tsconfig.dist.json
@@ -2,8 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"paths": {
- "@opencode-ai/util/effect/layer-node": ["./dist/effect/layer-node.d.ts"],
- "@opencode-ai/util/effect/app-node": ["./dist/effect/app-node.d.ts"]
+ "@opencode/util/effect/layer-node": ["./dist/effect/layer-node.d.ts"],
+ "@opencode/util/effect/app-node": ["./dist/effect/app-node.d.ts"]
}
},
"include": ["../core/test/effect/layer-node/layer-node-types.test.ts"]
diff --git a/packages/web/package.json b/packages/web/package.json
index dba3d3f4286..b2c5a712c3b 100644
--- a/packages/web/package.json
+++ b/packages/web/package.json
@@ -1,5 +1,5 @@
{
- "name": "@opencode-ai/web",
+ "name": "@opencode/web",
"type": "module",
"license": "MIT",
"version": "1.18.15",
diff --git a/packages/www/package.json b/packages/www/package.json
index babf460ce99..e9f2aff09f1 100644
--- a/packages/www/package.json
+++ b/packages/www/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@opencode-ai/www",
+ "name": "@opencode/www",
"private": true,
"type": "module",
"scripts": {
diff --git a/packages/www/src/docs/content/build/client/effect.mdx b/packages/www/src/docs/content/build/client/effect.mdx
index 0bfa93b223a..7e4b55828bb 100644
--- a/packages/www/src/docs/content/build/client/effect.mdx
+++ b/packages/www/src/docs/content/build/client/effect.mdx
@@ -2,11 +2,11 @@
title: "Effect"
---
-`@opencode-ai/client/effect` is the Effect-native client for the OpenCode HTTP API. It returns typed Effects and Streams
+`@opencode/client/effect` is the Effect-native client for the OpenCode HTTP API. It returns typed Effects and Streams
and decodes responses into OpenCode schema values.
```sh
-bun add @opencode-ai/client@beta effect
+bun add @opencode/client@beta effect
```
## Create a client
@@ -14,7 +14,7 @@ bun add @opencode-ai/client@beta effect
Create a client with the server URL, then call methods grouped by API resource.
```ts
-import { AbsolutePath, Location, OpenCode } from "@opencode-ai/client/effect"
+import { AbsolutePath, Location, OpenCode } from "@opencode/client/effect"
import { Effect } from "effect"
import { FetchHttpClient } from "effect/unstable/http"
@@ -109,7 +109,7 @@ definitions, schemas, registration, and live subscription semantics.
## Local background service
-The Node-only `@opencode-ai/client/effect/service` entrypoint discovers, starts, authenticates, and stops the local
+The Node-only `@opencode/client/effect/service` entrypoint discovers, starts, authenticates, and stops the local
background service as Effects.
```sh
@@ -120,8 +120,8 @@ Create an authenticated client for the ensured service.
```ts
import { NodeFileSystem } from "@effect/platform-node"
-import { OpenCode } from "@opencode-ai/client/effect"
-import { Service } from "@opencode-ai/client/effect/service"
+import { OpenCode } from "@opencode/client/effect"
+import { Service } from "@opencode/client/effect/service"
import { Effect } from "effect"
import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/unstable/http"
diff --git a/packages/www/src/docs/content/build/client/index.mdx b/packages/www/src/docs/content/build/client/index.mdx
index 62ce883a34d..306dba56725 100644
--- a/packages/www/src/docs/content/build/client/index.mdx
+++ b/packages/www/src/docs/content/build/client/index.mdx
@@ -2,7 +2,7 @@
title: "JavaScript"
---
-`@opencode-ai/client` is the TypeScript client for the OpenCode HTTP
+`@opencode/client` is the TypeScript client for the OpenCode HTTP
API. Use it when your application connects to an OpenCode server over the
network. Its native types and methods are generated from the same contract as the
[API reference](/api). Plugin RPC types come from imported RPC definitions.
@@ -14,7 +14,7 @@ network. Its native types and methods are generated from the same contract as th
## Install
```sh
-bun add @opencode-ai/client@beta
+bun add @opencode/client@beta
```
## Create a client
@@ -22,7 +22,7 @@ bun add @opencode-ai/client@beta
Create a client with the server URL, then call methods grouped by API resource:
```ts
-import { OpenCode } from "@opencode-ai/client"
+import { OpenCode } from "@opencode/client"
const client = OpenCode.make({
baseUrl: "http://localhost:4096",
@@ -84,7 +84,7 @@ subscriber receives the current `server.connected` marker, not past business eve
Import a plugin's shared contract and pass it to `client.rpc`:
```ts
-import { OpenCode } from "@opencode-ai/client"
+import { OpenCode } from "@opencode/client"
import { Acme } from "opencode-acme-plugin/rpc"
const acme = client.rpc(Acme)
@@ -142,7 +142,7 @@ definition and registration API. Any HTTP client can also invoke the generic
The main client entrypoints are browser-compatible and do not include local
process management. In a Node application, import the native Promise service
-API from `@opencode-ai/client/service`.
+API from `@opencode/client/service`.
- `Service.discover()` returns a healthy registered endpoint without starting
a process.
@@ -151,8 +151,8 @@ API from `@opencode-ai/client/service`.
- `Service.headers(endpoint)` creates the authentication headers for a client.
```ts
-import { OpenCode } from "@opencode-ai/client"
-import { Service } from "@opencode-ai/client/service"
+import { OpenCode } from "@opencode/client"
+import { Service } from "@opencode/client/service"
const endpoint = await Service.ensure()
const client = OpenCode.make({
diff --git a/packages/www/src/docs/content/build/plugins/cli.mdx b/packages/www/src/docs/content/build/plugins/cli.mdx
index 50314537e06..4170aeace6b 100644
--- a/packages/www/src/docs/content/build/plugins/cli.mdx
+++ b/packages/www/src/docs/content/build/plugins/cli.mdx
@@ -5,7 +5,7 @@ title: "CLI"
CLI plugins extend the terminal with commands, routes, slots, Markdown renderers, notifications, and local state.
```ts title="src/tui.ts"
-import { Plugin } from "@opencode-ai/plugin/tui"
+import { Plugin } from "@opencode/plugin/tui"
export default Plugin.define({
id: "acme.cli",
@@ -15,7 +15,7 @@ export default Plugin.define({
})
```
-Import `@opencode-ai/plugin/tui` directly. OpenCode resolves this import at runtime, so local CLI plugins do not need an
+Import `@opencode/plugin/tui` directly. OpenCode resolves this import at runtime, so local CLI plugins do not need an
absolute path to an OpenCode checkout.
## Context
@@ -110,7 +110,7 @@ context.data.session.permission.invalidate(sessionID)
Forms can be listed, refreshed, replied to, or cancelled at a location.
```ts
-import type { FormCancelInput, FormReplyInput } from "@opencode-ai/client"
+import type { FormCancelInput, FormReplyInput } from "@opencode/client"
async function handleForm(reply: FormReplyInput, cancel: FormCancelInput) {
const location = context.location
@@ -223,7 +223,7 @@ const renderer = context.renderer
Use `usePlugin` to access the current context inside JSX rendered by a route, dialog, or slot.
```tsx
-import { usePlugin } from "@opencode-ai/plugin/tui"
+import { usePlugin } from "@opencode/plugin/tui"
function Status() {
const context = usePlugin()
@@ -460,8 +460,8 @@ The slot receives reactive `name`, `sessionID`, `width`, `presentation`, and `fo
until there is enough room for a side panel.
```tsx
-import type { PanelInput } from "@opencode-ai/plugin/tui/context"
-import { usePlugin } from "@opencode-ai/plugin/tui"
+import type { PanelInput } from "@opencode/plugin/tui/context"
+import { usePlugin } from "@opencode/plugin/tui"
function ReviewPanel(props: { panel: PanelInput }) {
const context = usePlugin()
@@ -508,7 +508,7 @@ Expose the CLI plugin through `./tui`; add OpenTUI peers when the plugin renders
"./tui": "./src/tui.tsx"
},
"dependencies": {
- "@opencode-ai/plugin": "beta"
+ "@opencode/plugin": "beta"
},
"peerDependencies": {
"@opentui/core": ">=0.5.8",
@@ -521,7 +521,7 @@ Expose the CLI plugin through `./tui`; add OpenTUI peers when the plugin renders
Export `./tui` beside the [main plugin](/build/plugins) for automatic loading.
```ts title="src/index.ts"
-import { Plugin } from "@opencode-ai/plugin"
+import { Plugin } from "@opencode/plugin"
export default Plugin.define({
id: "acme.server",
diff --git a/packages/www/src/docs/content/build/plugins/effect.mdx b/packages/www/src/docs/content/build/plugins/effect.mdx
index be4578cfb13..317fc15a784 100644
--- a/packages/www/src/docs/content/build/plugins/effect.mdx
+++ b/packages/www/src/docs/content/build/plugins/effect.mdx
@@ -2,18 +2,18 @@
title: "Effect"
---
-`@opencode-ai/plugin/effect` is the Effect-native version of the OpenCode plugin API. Its context operations return
+`@opencode/plugin/effect` is the Effect-native version of the OpenCode plugin API. Its context operations return
Effects or Streams, callbacks return Effects, and plugin lifetime is represented by `Scope`. Install `effect` with the
plugin package.
```sh
-bun add @opencode-ai/plugin@beta effect
+bun add @opencode/plugin@beta effect
```
Export an Effect plugin from `.opencode/plugins/` to load it automatically.
```ts title=".opencode/plugins/concise/index.ts"
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { Plugin } from "@opencode/plugin/effect"
import { Effect } from "effect"
export default Plugin.define({
@@ -48,7 +48,7 @@ plugins.
See [Configure plugins](/plugins) for enablement, package resolution, and configuration precedence.
```ts title="plugins/local-effect/index.ts"
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { Plugin } from "@opencode/plugin/effect"
import { Effect } from "effect"
export default Plugin.define({
@@ -66,7 +66,7 @@ The `effect` runs when the plugin loads. Its scope closes when the plugin reload
fibers, and finalizers are released together.
```ts
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { Plugin } from "@opencode/plugin/effect"
import { Effect } from "effect"
export default Plugin.define({
@@ -154,7 +154,7 @@ Pass options with the object form in `opencode.json(c)`.
Read options from `ctx.options`. Narrow unknown values before use.
```ts title="plugins/company-effect/index.ts"
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { Plugin } from "@opencode/plugin/effect"
import { Effect } from "effect"
export default Plugin.define({
@@ -173,7 +173,7 @@ Transforms synchronously edit state through an editor. OpenCode applies transfor
earlier changes. Yielding the registration keeps it in the plugin scope.
```ts title="plugins/models-effect/index.ts"
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { Plugin } from "@opencode/plugin/effect"
import { Effect } from "effect"
export default Plugin.define({
@@ -1316,7 +1316,7 @@ entrypoint and declare both runtime dependencies.
".": "./src/index.ts"
},
"dependencies": {
- "@opencode-ai/plugin": "beta",
+ "@opencode/plugin": "beta",
"effect": "4.0.0-rc.111"
}
}
@@ -1325,7 +1325,7 @@ entrypoint and declare both runtime dependencies.
The package entrypoint exports `Plugin.define` with an `effect` function.
```ts title="src/index.ts"
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { Plugin } from "@opencode/plugin/effect"
import { Effect } from "effect"
export default Plugin.define({
diff --git a/packages/www/src/docs/content/build/plugins/effect/rpc.mdx b/packages/www/src/docs/content/build/plugins/effect/rpc.mdx
index d0c0d4e9141..51073744aed 100644
--- a/packages/www/src/docs/content/build/plugins/effect/rpc.mdx
+++ b/packages/www/src/docs/content/build/plugins/effect/rpc.mdx
@@ -10,7 +10,7 @@ Streams.
Use `Rpc.define` with Effect Schema to define the RPC.
```ts title="src/rpc.ts"
-import { Rpc } from "@opencode-ai/plugin/rpc"
+import { Rpc } from "@opencode/plugin/rpc"
import { Schema } from "effect"
export const Acme = Rpc.define({
@@ -81,7 +81,7 @@ events: {
Register the implementation from the plugin Effect:
```ts title="src/index.ts"
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { Plugin } from "@opencode/plugin/effect"
import { Effect } from "effect"
import { Acme } from "./rpc.js"
@@ -120,7 +120,7 @@ Once the RPC is registered, it can be called over HTTP or from another plugin.
Create the Effect client, then create the RPC subclient:
```ts
-import { OpenCode } from "@opencode-ai/client/effect"
+import { OpenCode } from "@opencode/client/effect"
import { Effect } from "effect"
import { FetchHttpClient } from "effect/unstable/http"
import { Acme } from "opencode-acme-plugin/rpc"
diff --git a/packages/www/src/docs/content/build/plugins/index.mdx b/packages/www/src/docs/content/build/plugins/index.mdx
index e42ddb684fa..f7b0b7a4d93 100644
--- a/packages/www/src/docs/content/build/plugins/index.mdx
+++ b/packages/www/src/docs/content/build/plugins/index.mdx
@@ -6,7 +6,7 @@ Plugins can modify OpenCode's behavior and add new features. To change the termi
plugin](/build/plugins/cli).
```ts title=".opencode/plugins/example/index.ts"
-import { Plugin } from "@opencode-ai/plugin"
+import { Plugin } from "@opencode/plugin"
export default Plugin.define({
id: "example",
@@ -48,7 +48,7 @@ See [Configure plugins](/plugins) for more loading and configuration options.
`setup` runs when the plugin loads. It may return a cleanup function that runs when the plugin unloads.
```ts
-import { Plugin } from "@opencode-ai/plugin"
+import { Plugin } from "@opencode/plugin"
export default Plugin.define({
id: "example",
@@ -105,7 +105,7 @@ Pass plugin options with the object form in `opencode.json(c)`.
Read those values from `ctx.options` during `setup`.
```ts title="plugins/company/index.ts"
-import { Plugin } from "@opencode-ai/plugin"
+import { Plugin } from "@opencode/plugin"
export default Plugin.define({
id: "company",
@@ -126,7 +126,7 @@ completed.
Say we have a plugin that adds one model to the catalog.
```ts title="plugins/models/index.ts"
-import { Plugin } from "@opencode-ai/plugin"
+import { Plugin } from "@opencode/plugin"
export default Plugin.define({
id: "company.models",
@@ -150,7 +150,7 @@ already read is never modified by later rebuilds.
A later plugin can enforce a maximum output price across every model, including models added by earlier plugins.
```ts title="plugins/model-budget/index.ts"
-import { Plugin } from "@opencode-ai/plugin"
+import { Plugin } from "@opencode/plugin"
export default Plugin.define({
id: "company.model-budget",
@@ -172,7 +172,7 @@ Captured inputs are not watched automatically. Load external data before the syn
`reload()` after those inputs change.
```ts title="plugins/models/index.ts"
-import { Plugin } from "@opencode-ai/plugin"
+import { Plugin } from "@opencode/plugin"
export default Plugin.define({
id: "company.models",
@@ -956,7 +956,7 @@ Register a local worktree strategy using the normal plugin lifecycle. The implem
option validation and the backend's `create`, `remove`, and `list` operations.
```ts title="plugins/worktrees/index.ts"
-import { Plugin } from "@opencode-ai/plugin"
+import { Plugin } from "@opencode/plugin"
import { makeStrategy } from "./strategy"
export default Plugin.define({
@@ -1020,7 +1020,7 @@ await ctx.worktree.remove({
```
Missing owners fail removal rather than falling back to Git. A strategy can throw `new Worktree.OperationError({
-message: "Uncommitted changes", forceRequired: true })`, importing `Worktree` from `@opencode-ai/plugin`, to request
+message: "Uncommitted changes", forceRequired: true })`, importing `Worktree` from `@opencode/plugin`, to request
force confirmation without depending on Core or Git errors.
#### Reference
@@ -1315,7 +1315,7 @@ Retry decisions follow these rules:
#### Session reference
```ts
-import type { SessionPrompt } from "@opencode-ai/plugin/promise/session"
+import type { SessionPrompt } from "@opencode/plugin/promise/session"
interface SessionHooks {
prompt: SessionPrompt
@@ -1486,7 +1486,7 @@ manifest is:
"./rpc": "./src/rpc.ts"
},
"dependencies": {
- "@opencode-ai/plugin": "beta"
+ "@opencode/plugin": "beta"
}
}
```
@@ -1506,7 +1506,7 @@ A plugin can support V1 and V2 from the same package entrypoint. Default export
one object with a V1 `server()` function and a V2 `setup()` function:
```ts title="src/index.ts"
-import { Plugin } from "@opencode-ai/plugin"
+import { Plugin } from "@opencode/plugin"
export default {
...Plugin.define({
diff --git a/packages/www/src/docs/content/build/plugins/rpc.mdx b/packages/www/src/docs/content/build/plugins/rpc.mdx
index 0a7e01791fd..dba3e24f433 100644
--- a/packages/www/src/docs/content/build/plugins/rpc.mdx
+++ b/packages/www/src/docs/content/build/plugins/rpc.mdx
@@ -10,7 +10,7 @@ called by other plugins or clients.
Use `Rpc.define` to list the RPC's methods, errors, and events.
```ts title="src/rpc.ts"
-import { Rpc } from "@opencode-ai/plugin/rpc"
+import { Rpc } from "@opencode/plugin/rpc"
export const Acme = Rpc.define({
id: "acme",
@@ -129,7 +129,7 @@ Scalars, arrays, `null`, and `undefined` are not valid event data.
Register the implementation inside `setup`:
```ts title="src/index.ts"
-import { Plugin } from "@opencode-ai/plugin"
+import { Plugin } from "@opencode/plugin"
import { Acme } from "./rpc.js"
export default Plugin.define({
@@ -169,7 +169,7 @@ Create an OpenCode client, then use `client.rpc` to create a subclient for the
RPC:
```ts
-import { OpenCode } from "@opencode-ai/client"
+import { OpenCode } from "@opencode/client"
import { Acme } from "opencode-acme-plugin/rpc"
const client = OpenCode.make({
@@ -186,7 +186,7 @@ Plugins already have an OpenCode client. For example, a TUI plugin can create
the same RPC subclient from `context.client`:
```ts title="src/tui.ts"
-import { Plugin } from "@opencode-ai/plugin/tui"
+import { Plugin } from "@opencode/plugin/tui"
import { Acme } from "opencode-acme-plugin/rpc"
export default Plugin.define({
diff --git a/packages/www/src/docs/content/build/sdk/cloudflare.mdx b/packages/www/src/docs/content/build/sdk/cloudflare.mdx
index db8384cb83c..b92f0b9a8bc 100644
--- a/packages/www/src/docs/content/build/sdk/cloudflare.mdx
+++ b/packages/www/src/docs/content/build/sdk/cloudflare.mdx
@@ -2,17 +2,17 @@
title: "Cloudflare"
---
-Use `@opencode-ai/sdk/workerd` inside a Cloudflare Durable Object. This profile uses the object's SQLite storage,
+Use `@opencode/sdk/workerd` inside a Cloudflare Durable Object. This profile uses the object's SQLite storage,
persists durable events for eviction recovery, and replaces unavailable local filesystem and process services.
```sh
-bun add @opencode-ai/sdk@dev
+bun add @opencode/sdk@dev
```
Hold one host for the lifetime of the Durable Object instance instead of creating one for every request.
```ts
-import { OpenCodeWorkerd } from "@opencode-ai/sdk/workerd"
+import { OpenCodeWorkerd } from "@opencode/sdk/workerd"
import myPlugin from "./my-plugin"
export class OpenCodeDO {
@@ -62,8 +62,8 @@ Worker. Pass plugins to `OpenCodeWorkerd.create()` to customize agents, models,
tools, and other behavior:
```ts
-import { Plugin } from "@opencode-ai/plugin"
-import { OpenCodeWorkerd } from "@opencode-ai/sdk/workerd"
+import { Plugin } from "@opencode/plugin"
+import { OpenCodeWorkerd } from "@opencode/sdk/workerd"
const plugin = Plugin.define({
id: "customize-agent",
diff --git a/packages/www/src/docs/content/build/sdk/effect.mdx b/packages/www/src/docs/content/build/sdk/effect.mdx
index 9b0913c83ec..cc9f1c7f576 100644
--- a/packages/www/src/docs/content/build/sdk/effect.mdx
+++ b/packages/www/src/docs/content/build/sdk/effect.mdx
@@ -2,11 +2,11 @@
title: "Effect"
---
-`@opencode-ai/sdk/effect` is the Effect-native embedded SDK. Operations return typed Effects and Streams, and closing
+`@opencode/sdk/effect` is the Effect-native embedded SDK. Operations return typed Effects and Streams, and closing
the owning Scope releases the router, Location services, fibers, and plugin registrations.
```sh
-bun add @opencode-ai/sdk@dev effect
+bun add @opencode/sdk@dev effect
```
## Create a host
@@ -14,7 +14,7 @@ bun add @opencode-ai/sdk@dev effect
Create the host inside `Effect.scoped`, then use its generated API groups or the `sessions` alias.
```ts
-import { AbsolutePath, Location, OpenCode } from "@opencode-ai/sdk/effect"
+import { AbsolutePath, Location, OpenCode } from "@opencode/sdk/effect"
import { Effect } from "effect"
const program = Effect.scoped(
@@ -35,7 +35,7 @@ const session = await Effect.runPromise(program)
```
The embedded host uses the same schema values, declared errors, request options, and Streams as
-`@opencode-ai/client/effect`.
+`@opencode/client/effect`.
```ts
const health = yield* opencode.health.get()
@@ -62,7 +62,7 @@ Customize your OpenCode instance by registering Effect plugins. Use the embedded
host to customize agents, models, tools, and other behavior:
```ts
-import { Plugin } from "@opencode-ai/plugin/effect"
+import { Plugin } from "@opencode/plugin/effect"
import { Effect } from "effect"
const plugin = Plugin.define({
@@ -89,7 +89,7 @@ hooks, transforms, tools, and the complete plugin context.
Use `OpenCode.layer()` when the embedded host should be an application service.
```ts
-import { OpenCode } from "@opencode-ai/sdk/effect"
+import { OpenCode } from "@opencode/sdk/effect"
import { Effect } from "effect"
const program = Effect.gen(function* () {
diff --git a/packages/www/src/docs/content/build/sdk/index.mdx b/packages/www/src/docs/content/build/sdk/index.mdx
index 6b39ecebcc6..42b6abe7491 100644
--- a/packages/www/src/docs/content/build/sdk/index.mdx
+++ b/packages/www/src/docs/content/build/sdk/index.mdx
@@ -2,7 +2,7 @@
title: "Overview"
---
-`@opencode-ai/sdk` hosts OpenCode directly inside your application. Unlike the
+`@opencode/sdk` hosts OpenCode directly inside your application. Unlike the
[network client](/build/client), it assembles the OpenCode server and routes API
calls through its HTTP router in memory. It opens no HTTP listener and adds no
network hop between the client and server.
@@ -10,7 +10,7 @@ network hop between the client and server.
For Cloudflare Durable Objects, see the [Cloudflare guide](/build/sdk/cloudflare).
- The V2 SDK is beta. Install the current preview with `bun add @opencode-ai/sdk@dev`; its API may change before a
+ The V2 SDK is beta. Install the current preview with `bun add @opencode/sdk@dev`; its API may change before a
stable release.
@@ -20,7 +20,7 @@ For Cloudflare Durable Objects, see the [Cloudflare guide](/build/sdk/cloudflare
release its router, Location services, fibers, and scoped plugin registrations:
```ts
-import { OpenCode } from "@opencode-ai/sdk"
+import { OpenCode } from "@opencode/sdk"
await using opencode = await OpenCode.create()
const session = await opencode.sessions.create({
@@ -37,7 +37,7 @@ Call `await opencode.close()` explicitly when explicit resource management is
not available.
The embedded host uses the same Promise values, declared errors, request
-options, and `AsyncIterable` streams as `@opencode-ai/client`. It exposes the
+options, and `AsyncIterable` streams as `@opencode/client`. It exposes the
full generated client and adds the convenience aliases `sessions` and `events`
for the session and event groups.
@@ -59,8 +59,8 @@ Customize your OpenCode instance by registering plugins. Pass plugins to
the embedded host starts:
```ts
-import { Plugin } from "@opencode-ai/plugin"
-import { OpenCode } from "@opencode-ai/sdk"
+import { Plugin } from "@opencode/plugin"
+import { OpenCode } from "@opencode/sdk"
const plugin = Plugin.define({
id: "customize-agent",
diff --git a/packages/www/src/docs/content/cli/plugins.mdx b/packages/www/src/docs/content/cli/plugins.mdx
index 84d27b5e0f3..c1ecb0ff358 100644
--- a/packages/www/src/docs/content/cli/plugins.mdx
+++ b/packages/www/src/docs/content/cli/plugins.mdx
@@ -57,5 +57,5 @@ the same layout as a published package, with server and TUI entrypoints kept tog
/.opencode/plugins/status/tui.ts
```
-Discovered plugins can import `@opencode-ai/plugin/tui` directly; OpenCode resolves the package at runtime. See
+Discovered plugins can import `@opencode/plugin/tui` directly; OpenCode resolves the package at runtime. See
[Building CLI plugins](/build/plugins/cli) for examples.
diff --git a/packages/www/src/docs/content/index.mdx b/packages/www/src/docs/content/index.mdx
index 7b55de5a12d..1205306f0f6 100644
--- a/packages/www/src/docs/content/index.mdx
+++ b/packages/www/src/docs/content/index.mdx
@@ -12,10 +12,10 @@ versions installed and run them side by side.
diff --git a/packages/www/src/docs/content/migrate-v1.mdx b/packages/www/src/docs/content/migrate-v1.mdx
index 9d14cbd8490..0dc465c6a42 100644
--- a/packages/www/src/docs/content/migrate-v1.mdx
+++ b/packages/www/src/docs/content/migrate-v1.mdx
@@ -558,7 +558,7 @@ local modules and dependencies together. See the current beta [Plugins guide](/b
OpenCode 2 has a revised, more ergonomic server API and a new set of clients. Integrations that call the V1 server API
must migrate to the V2 API.
-Use the `@opencode-ai/client` package to access the new clients. The server API and clients are still being finalized
+Use the `@opencode/client` package to access the new clients. The server API and clients are still being finalized
during beta, so their contracts may continue to change. See the generated [API reference](/api) for the current endpoints,
request types, and responses.
diff --git a/packages/www/src/docs/content/models.mdx b/packages/www/src/docs/content/models.mdx
index 6b6d757a391..6e1c2426458 100644
--- a/packages/www/src/docs/content/models.mdx
+++ b/packages/www/src/docs/content/models.mdx
@@ -272,7 +272,7 @@ For an OpenAI-compatible server, define a provider package, endpoint, and at lea
"providers": {
"local": {
"name": "Local server",
- "package": "@opencode-ai/ai/providers/openai-compatible",
+ "package": "@opencode/ai/providers/openai-compatible",
"settings": {
"baseURL": "http://127.0.0.1:1234/v1",
},
diff --git a/packages/www/src/docs/content/providers.mdx b/packages/www/src/docs/content/providers.mdx
index b0e57e6c46c..d1ee33d390a 100644
--- a/packages/www/src/docs/content/providers.mdx
+++ b/packages/www/src/docs/content/providers.mdx
@@ -12,7 +12,7 @@ custom provider to your configuration.
"acme": {
"name": "Acme",
"env": ["ACME_API_KEY"],
- "package": "@opencode-ai/ai/providers/openai-compatible",
+ "package": "@opencode/ai/providers/openai-compatible",
"settings": {
"baseURL": "https://llm.acme.example/v1",
},
@@ -161,7 +161,7 @@ built-in compatible package:
"$schema": "https://opencode.ai/config.json",
"providers": {
"acme": {
- "package": "@opencode-ai/ai/providers/openai-compatible",
+ "package": "@opencode/ai/providers/openai-compatible",
"settings": {
"baseURL": "https://llm.acme.example/v1",
},
@@ -177,28 +177,28 @@ built-in compatible package:
Native package options:
-- `@opencode-ai/ai/providers/openai`
-- `@opencode-ai/ai/providers/openai/chat`
-- `@opencode-ai/ai/providers/openai/responses`
-- `@opencode-ai/ai/providers/openai-compatible`
-- `@opencode-ai/ai/providers/openai-compatible/responses`
-- `@opencode-ai/ai/providers/anthropic`
-- `@opencode-ai/ai/providers/anthropic-compatible`
-- `@opencode-ai/ai/providers/google`
-- `@opencode-ai/ai/providers/google-vertex`
-- `@opencode-ai/ai/providers/google-vertex/gemini`
-- `@opencode-ai/ai/providers/google-vertex/chat`
-- `@opencode-ai/ai/providers/google-vertex/responses`
-- `@opencode-ai/ai/providers/google-vertex/messages`
-- `@opencode-ai/ai/providers/azure`
-- `@opencode-ai/ai/providers/azure/chat`
-- `@opencode-ai/ai/providers/azure/responses`
-- `@opencode-ai/ai/providers/amazon-bedrock`
-- `@opencode-ai/ai/providers/amazon-bedrock/mantle`
-- `@opencode-ai/ai/providers/amazon-bedrock/mantle/chat`
-- `@opencode-ai/ai/providers/amazon-bedrock/mantle/responses`
-- `@opencode-ai/ai/providers/openrouter`
-- `@opencode-ai/ai/providers/xai`
+- `@opencode/ai/providers/openai`
+- `@opencode/ai/providers/openai/chat`
+- `@opencode/ai/providers/openai/responses`
+- `@opencode/ai/providers/openai-compatible`
+- `@opencode/ai/providers/openai-compatible/responses`
+- `@opencode/ai/providers/anthropic`
+- `@opencode/ai/providers/anthropic-compatible`
+- `@opencode/ai/providers/google`
+- `@opencode/ai/providers/google-vertex`
+- `@opencode/ai/providers/google-vertex/gemini`
+- `@opencode/ai/providers/google-vertex/chat`
+- `@opencode/ai/providers/google-vertex/responses`
+- `@opencode/ai/providers/google-vertex/messages`
+- `@opencode/ai/providers/azure`
+- `@opencode/ai/providers/azure/chat`
+- `@opencode/ai/providers/azure/responses`
+- `@opencode/ai/providers/amazon-bedrock`
+- `@opencode/ai/providers/amazon-bedrock/mantle`
+- `@opencode/ai/providers/amazon-bedrock/mantle/chat`
+- `@opencode/ai/providers/amazon-bedrock/mantle/responses`
+- `@opencode/ai/providers/openrouter`
+- `@opencode/ai/providers/xai`
You can also use an npm package such as `@acme/opencode-provider` or an absolute `file://` URL for a local package.
diff --git a/script/duplicate-pr.ts b/script/duplicate-pr.ts
index 971cfc1e17c..901756f8818 100755
--- a/script/duplicate-pr.ts
+++ b/script/duplicate-pr.ts
@@ -1,9 +1,9 @@
#!/usr/bin/env bun
-/* TODO: Migrate this script to the new in-process @opencode-ai/sdk.
+/* TODO: Migrate this script to the new in-process @opencode/sdk.
import path from "path"
import { pathToFileURL } from "bun"
-import { createOpencode } from "@opencode-ai/sdk"
+import { createOpencode } from "@opencode/sdk"
import { parseArgs } from "util"
async function main() {
diff --git a/script/package-scope.md b/script/package-scope.md
new file mode 100644
index 00000000000..90c2f564594
--- /dev/null
+++ b/script/package-scope.md
@@ -0,0 +1,86 @@
+# npm scope migration
+
+Repository-owned workspaces use `@opencode/*`. The executable names remain `opencode2` and
+`opencode2-node`; the Node umbrella changes from `opencode-node` to `@opencode/cli-node`.
+
+## Release inventory
+
+Read-only registry audit on 2026-09-07 found all 33 names used by `publish.yml` and
+`script/publish.ts`, with `thdxr` listed as maintainer. Each has `0.0.0-reserved`;
+`@opencode/plugin-browser` additionally has a working `dev` release.
+
+| Group | Packages under `@opencode/` |
+| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
+| Libraries | `ai`, `client`, `codemode`, `core`, `plugin`, `plugin-browser`, `protocol`, `schema`, `sdk`, `server`, `simulation`, `theme`, `ui`, `util` |
+| Umbrellas | `cli`, `cli-node` |
+| Bun / Linux | `cli-linux-arm64`, `cli-linux-arm64-musl`, `cli-linux-x64`, `cli-linux-x64-baseline`, `cli-linux-x64-musl`, `cli-linux-x64-baseline-musl` |
+| Bun / macOS | `cli-darwin-arm64`, `cli-darwin-x64`, `cli-darwin-x64-baseline` |
+| Bun / Windows | `cli-windows-arm64`, `cli-windows-x64`, `cli-windows-x64-baseline` |
+| Node | `cli-node-linux-arm64`, `cli-node-linux-x64`, `cli-node-darwin-arm64`, `cli-node-windows-arm64`, `cli-node-windows-x64` |
+
+The user confirmed trusted publishing is already configured for all release packages.
+The expected publisher is GitHub repository `anomalyco/opencode`, workflow `publish.yml`.
+The browser plugin's trusted publisher was also verified directly before this migration.
+
+The workspace names `app`, `console-app`, `console-resource`, `console-support`, `http-recorder`,
+`script`, and `web` have no `private: true` flag but are not published by this release workflow.
+Their new names returned HTTP 404. In particular, reserve/configure `@opencode/http-recorder`
+before separately publishing it. Private workspaces need no npm reservation.
+
+## Activation order
+
+1. Trusted publishing for the release inventory is confirmed by the user.
+2. Retain old-name, package-aware releases as minimum update artifacts.
+3. Publish the new names and their channel tags. The CLI publisher activates update metadata
+ only after its platform packages and umbrella have published.
+4. Deploy the updated installer and V2 documentation with the matching channel releases.
+5. Regenerate `nix/hashes.json` using `.github/workflows/nix-hashes.yml`; the renamed workspace
+ paths change the fixed-output dependency tree. Nix was unavailable in the development environment.
+
+The native and Node CLI minima were set and verified through the public update API:
+
+| Channel / artifact | Minimum package | Version |
+| ------------------- | ------------------ | ------------------ |
+| `beta/cli/npm` | `@opencode-ai/cli` | `0.0.0-beta-19242` |
+| `dev/cli/npm` | `@opencode-ai/cli` | `0.0.0-dev-18952` |
+| `beta/cli-node/npm` | `opencode-node` | `0.0.0-beta-19242` |
+| `dev/cli-node/npm` | `opencode-node` | `0.0.0-dev-19265` |
+
+All four minimum releases remain under their old package names and contain package-aware
+updating. The Node releases were also verified directly on npm before marking them minimum.
+
+The installer follows the beta update service's `metadata.package` for the default release.
+For explicit versions it tries the new scope and falls back to the old scope on HTTP 404,
+so old clients can still install the minimum release.
+
+## Compatibility boundaries
+
+- npm migration uses `--force` and retains the old package so removal cannot unlink the new
+ executable. Bun installs the new name with trusted lifecycle scripts and an isolated cache.
+ Both migrations were exercised with real package managers, the production postinstall, and
+ temporary Linux fixture packages for both executable names.
+- pnpm and Yarn cross-name updates still return an explicit reinstall instruction. This
+ migration does not provide an automatic transition for those package managers.
+- Consumers of V2 SDK/plugin packages must change dependencies and imports together. npm does
+ not redirect the old scope to the new one. No compatibility republish or deprecation was made.
+- `@opencode-ai/pty` and its six platform dependencies remain published by the separate
+ `anomalyco/opencode-pty` repository. `@opencode/pty` returned HTTP 404, so those dependencies
+ deliberately retain their existing names.
+- `github` and `packages/enterprise` still consume the published V1 SDK API. Their pinned
+ `@opencode-ai/sdk` dependencies, the legacy documentation in `packages/web/src/content/docs`,
+ and external dependency metadata in lockfiles retain their old names. Moving them requires
+ an API migration, not a package-name substitution.
+- Previously configured native provider entrypoints under `@opencode-ai/ai/*` resolve to
+ the bundled `@opencode/ai/*` modules without changing user configuration.
+
+## Local package verification
+
+Build from `packages/cli`, then prepare tarballs without publishing or activating artifacts:
+
+```sh
+OPENCODE_CHANNEL=dev OPENCODE_VERSION=0.0.0-dev-99999 bun script/build.ts --single --skip-install
+OPENCODE_CHANNEL=dev OPENCODE_VERSION=0.0.0-dev-99999 bun script/publish.ts --dry-run
+```
+
+From `packages/sdk`, `bun run verify:package` builds and packs the library dependency graph,
+installs it in a temporary npm consumer, and checks Node and Workerd entrypoints locally.
diff --git a/script/publish.ts b/script/publish.ts
index 90084581ba2..9729e26b0df 100755
--- a/script/publish.ts
+++ b/script/publish.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
import { fileURLToPath } from "url"
import { UpdateArtifact } from "./update-artifact"
diff --git a/script/version.ts b/script/version.ts
index 0582f49a3f9..1445a5c8596 100755
--- a/script/version.ts
+++ b/script/version.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import { Script } from "@opencode-ai/script"
+import { Script } from "@opencode/script"
import { $ } from "bun"
const output = [`version=${Script.version}`]
diff --git a/turbo.json b/turbo.json
index 95bbe3f6881..07d4810636e 100644
--- a/turbo.json
+++ b/turbo.json
@@ -15,76 +15,76 @@
"outputs": [],
"cache": false
},
- "@opencode-ai/enterprise#typecheck": {
- "dependsOn": ["@opencode-ai/core#typecheck"]
+ "@opencode/enterprise#typecheck": {
+ "dependsOn": ["@opencode/core#typecheck"]
},
- "@opencode-ai/sdk#typecheck": {
- "dependsOn": ["@opencode-ai/core#typecheck"]
+ "@opencode/sdk#typecheck": {
+ "dependsOn": ["@opencode/core#typecheck"]
},
- "@opencode-ai/server#typecheck": {
- "dependsOn": ["@opencode-ai/core#typecheck"]
+ "@opencode/server#typecheck": {
+ "dependsOn": ["@opencode/core#typecheck"]
},
- "@opencode-ai/simulation#typecheck": {
- "dependsOn": ["@opencode-ai/core#typecheck"]
+ "@opencode/simulation#typecheck": {
+ "dependsOn": ["@opencode/core#typecheck"]
},
- "@opencode-ai/tui#typecheck": {
- "dependsOn": ["@opencode-ai/core#typecheck"]
+ "@opencode/tui#typecheck": {
+ "dependsOn": ["@opencode/core#typecheck"]
},
"build": {
"dependsOn": [],
"outputs": ["dist/**"]
},
- "@opencode-ai/ai#test": {
+ "@opencode/ai#test": {
"dependsOn": ["^build"],
"outputs": []
},
- "@opencode-ai/codemode#test": {
+ "@opencode/codemode#test": {
"dependsOn": ["^build"],
"outputs": []
},
- "@opencode-ai/core#test": {
+ "@opencode/core#test": {
"dependsOn": ["^build"],
"outputs": []
},
- "@opencode-ai/function#test": {
+ "@opencode/function#test": {
"outputs": []
},
- "@opencode-ai/desktop#test": {
+ "@opencode/desktop#test": {
"outputs": [],
"cache": false
},
- "@opencode-ai/httpapi-codegen#test": {
+ "@opencode/httpapi-codegen#test": {
"outputs": []
},
- "@opencode-ai/server#test": {
+ "@opencode/server#test": {
"dependsOn": ["^build"],
"outputs": []
},
- "@opencode-ai/cli#test": {
+ "@opencode/cli#test": {
"dependsOn": ["^build"],
"outputs": []
},
- "@opencode-ai/tui#test": {
+ "@opencode/tui#test": {
"dependsOn": ["^build"],
"outputs": []
},
- "@opencode-ai/latex#test": {
+ "@opencode/latex#test": {
"dependsOn": ["^build"],
"outputs": []
},
- "@opencode-ai/app#test": {
+ "@opencode/app#test": {
"dependsOn": ["^build"],
"outputs": []
},
- "@opencode-ai/ui#test": {
+ "@opencode/ui#test": {
"dependsOn": ["^build"],
"outputs": []
},
- "@opencode-ai/session-ui#test": {
+ "@opencode/session-ui#test": {
"dependsOn": ["^build"],
"outputs": []
},
- "@opencode-ai/sdk#verify:package": {
+ "@opencode/sdk#verify:package": {
"outputs": []
}
}