summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.oxlintrc.json8
-rw-r--r--github/index.ts6
-rw-r--r--infra/enterprise.ts2
-rw-r--r--packages/app/src/addons/serialize.ts4
-rw-r--r--packages/app/src/components/session/session-header.tsx2
-rw-r--r--packages/app/src/components/titlebar.tsx2
-rw-r--r--packages/app/src/context/global-sync/queue.ts1
-rw-r--r--packages/app/src/pages/layout.tsx2
-rw-r--r--packages/app/src/pages/session/review-tab.tsx2
-rw-r--r--packages/console/app/src/component/email-signup.tsx1
-rw-r--r--packages/console/app/src/component/header.tsx2
-rw-r--r--packages/console/app/src/context/auth.session.ts1
-rw-r--r--packages/console/app/src/routes/bench/[id].tsx2
-rw-r--r--packages/console/app/src/routes/go/index.tsx2
-rw-r--r--packages/console/app/src/routes/workspace-picker.tsx2
-rw-r--r--packages/console/app/src/routes/zen/index.tsx2
-rw-r--r--packages/console/app/src/routes/zen/util/handler.ts2
-rw-r--r--packages/console/app/src/routes/zen/util/provider/anthropic.ts2
-rw-r--r--packages/console/app/src/routes/zen/util/provider/google.ts2
-rw-r--r--packages/console/app/src/routes/zen/util/provider/openai-compatible.ts6
-rw-r--r--packages/console/app/src/routes/zen/util/provider/openai.ts2
-rw-r--r--packages/console/core/script/black-cancel-waitlist.ts6
-rw-r--r--packages/console/core/script/black-gift.ts6
-rw-r--r--packages/console/core/script/black-onboard-waitlist.ts6
-rw-r--r--packages/console/core/script/black-select-workspaces.ts2
-rw-r--r--packages/console/core/src/util/env.cloudflare.ts1
-rw-r--r--packages/console/core/src/util/log.ts2
-rw-r--r--packages/enterprise/test/core/share.test.ts2
-rwxr-xr-xpackages/opencode/script/publish.ts2
-rw-r--r--packages/opencode/src/cli/cmd/debug/lsp.ts1
-rw-r--r--packages/opencode/src/cli/cmd/export.ts2
-rw-r--r--packages/opencode/src/cli/cmd/github.ts4
-rw-r--r--packages/opencode/src/cli/cmd/serve.ts3
-rw-r--r--packages/opencode/src/cli/cmd/tui/app.tsx3
-rw-r--r--packages/opencode/src/cli/cmd/tui/component/dialog-theme-list.tsx2
-rw-r--r--packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx2
-rw-r--r--packages/opencode/src/cli/cmd/tui/event.ts1
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/session/index.tsx6
-rw-r--r--packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx2
-rw-r--r--packages/opencode/src/control-plane/workspace-context.ts2
-rw-r--r--packages/opencode/src/file/ignore.ts1
-rw-r--r--packages/opencode/src/file/watcher.ts2
-rw-r--r--packages/opencode/src/format/index.ts1
-rw-r--r--packages/opencode/src/global/index.ts2
-rw-r--r--packages/opencode/src/ide/index.ts1
-rw-r--r--packages/opencode/src/lsp/server.ts2
-rw-r--r--packages/opencode/src/patch/index.ts2
-rw-r--r--packages/opencode/src/permission/index.ts1
-rw-r--r--packages/opencode/src/plugin/codex.ts4
-rw-r--r--packages/opencode/src/provider/sdk/copilot/responses/openai-responses-language-model.ts1
-rw-r--r--packages/opencode/src/server/instance/config.ts1
-rw-r--r--packages/opencode/src/server/instance/event.ts1
-rw-r--r--packages/opencode/src/server/instance/pty.ts2
-rw-r--r--packages/opencode/src/session/compaction.ts1
-rw-r--r--packages/opencode/src/session/processor.ts2
-rw-r--r--packages/opencode/src/session/projectors.ts6
-rw-r--r--packages/opencode/src/session/revert.ts1
-rw-r--r--packages/opencode/src/storage/json-migration.ts4
-rw-r--r--packages/opencode/src/sync/index.ts1
-rw-r--r--packages/opencode/src/tool/edit.ts2
-rw-r--r--packages/opencode/src/tool/task.ts1
-rw-r--r--packages/opencode/src/tool/webfetch.ts2
-rw-r--r--packages/opencode/src/util/lazy.ts11
-rw-r--r--packages/opencode/src/v2/session.ts2
-rw-r--r--packages/opencode/test/cli/tui/plugin-lifecycle.test.ts1
-rw-r--r--packages/opencode/test/effect/cross-spawn-spawner.test.ts3
-rw-r--r--packages/opencode/test/effect/instance-state.test.ts2
-rw-r--r--packages/opencode/test/permission/next.test.ts2
-rw-r--r--packages/opencode/test/provider/gitlab-duo.test.ts1
-rw-r--r--packages/opencode/test/server/project-init-git.test.ts1
-rw-r--r--packages/opencode/test/session/compaction.test.ts1
-rw-r--r--packages/opencode/test/session/prompt-effect.test.ts1
-rw-r--r--packages/opencode/test/session/snapshot-tool-race.test.ts1
-rw-r--r--packages/opencode/test/share/share-next.test.ts1
-rw-r--r--packages/opencode/test/tool/question.test.ts1
-rw-r--r--packages/slack/src/index.ts2
-rw-r--r--packages/ui/src/components/message-part.tsx1
-rw-r--r--packages/ui/src/components/timeline-playground.stories.tsx2
-rw-r--r--packages/ui/src/pierre/commented-lines.ts2
-rw-r--r--sdks/vscode/src/extension.ts2
80 files changed, 82 insertions, 106 deletions
diff --git a/.oxlintrc.json b/.oxlintrc.json
index 0875f3832..c366084ee 100644
--- a/.oxlintrc.json
+++ b/.oxlintrc.json
@@ -4,7 +4,13 @@
// Effect uses `function*` with Effect.gen/Effect.fnUntraced that don't always yield
"require-yield": "off",
// SolidJS uses `let ref: T | undefined` for JSX ref bindings assigned at runtime
- "no-unassigned-vars": "off"
+ "no-unassigned-vars": "off",
+ // SolidJS tracks reactive deps by reading properties inside createEffect
+ "no-unused-expressions": "off",
+ // Intentional control char matching (ANSI escapes, null byte sanitization)
+ "no-control-regex": "off",
+ // SST and plugin tools require triple-slash references
+ "triple-slash-reference": "off"
},
"ignorePatterns": ["**/node_modules", "**/dist", "**/.build", "**/.sst", "**/*.d.ts"]
}
diff --git a/github/index.ts b/github/index.ts
index 6bfa96462..be8e5aafc 100644
--- a/github/index.ts
+++ b/github/index.ts
@@ -281,7 +281,7 @@ async function assertOpencodeConnected() {
})
connected = true
break
- } catch (e) {}
+ } catch {}
await sleep(300)
} while (retry++ < 30)
@@ -561,7 +561,7 @@ async function subscribeSessionEvents() {
if (evt.properties.info.id !== session.id) continue
session = evt.properties.info
}
- } catch (e) {
+ } catch {
// Ignore parse errors
}
}
@@ -576,7 +576,7 @@ async function subscribeSessionEvents() {
async function summarize(response: string) {
try {
return await chat(`Summarize the following in less than 40 characters:\n\n${response}`)
- } catch (e) {
+ } catch {
if (isScheduleEvent()) {
return "Scheduled task changes"
}
diff --git a/infra/enterprise.ts b/infra/enterprise.ts
index 22b4c6f44..38f0c3c8f 100644
--- a/infra/enterprise.ts
+++ b/infra/enterprise.ts
@@ -1,5 +1,5 @@
import { SECRET } from "./secret"
-import { domain, shortDomain } from "./stage"
+import { shortDomain } from "./stage"
const storage = new sst.cloudflare.Bucket("EnterpriseStorage")
diff --git a/packages/app/src/addons/serialize.ts b/packages/app/src/addons/serialize.ts
index 4cab55b3f..3823fb443 100644
--- a/packages/app/src/addons/serialize.ts
+++ b/packages/app/src/addons/serialize.ts
@@ -258,8 +258,8 @@ class StringSerializeHandler extends BaseSerializeHandler {
}
protected _beforeSerialize(rows: number, start: number, _end: number): void {
- this._allRows = new Array<string>(rows)
- this._allRowSeparators = new Array<string>(rows)
+ this._allRows = Array.from<string>({ length: rows })
+ this._allRowSeparators = Array.from<string>({ length: rows })
this._rowIndex = 0
this._currentRow = ""
diff --git a/packages/app/src/components/session/session-header.tsx b/packages/app/src/components/session/session-header.tsx
index e65b575ac..7acfdfc37 100644
--- a/packages/app/src/components/session/session-header.tsx
+++ b/packages/app/src/components/session/session-header.tsx
@@ -8,7 +8,7 @@ import { Spinner } from "@opencode-ai/ui/spinner"
import { showToast } from "@opencode-ai/ui/toast"
import { Tooltip, TooltipKeybind } from "@opencode-ai/ui/tooltip"
import { getFilename } from "@opencode-ai/shared/util/path"
-import { createEffect, createMemo, For, onCleanup, Show } from "solid-js"
+import { createEffect, createMemo, For, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { Portal } from "solid-js/web"
import { useCommand } from "@/context/command"
diff --git a/packages/app/src/components/titlebar.tsx b/packages/app/src/components/titlebar.tsx
index 0a41f3119..a90178abd 100644
--- a/packages/app/src/components/titlebar.tsx
+++ b/packages/app/src/components/titlebar.tsx
@@ -1,4 +1,4 @@
-import { createEffect, createMemo, onCleanup, Show, untrack } from "solid-js"
+import { createEffect, createMemo, Show, untrack } from "solid-js"
import { createStore } from "solid-js/store"
import { useLocation, useNavigate, useParams } from "@solidjs/router"
import { IconButton } from "@opencode-ai/ui/icon-button"
diff --git a/packages/app/src/context/global-sync/queue.ts b/packages/app/src/context/global-sync/queue.ts
index c3468583b..5c228dac0 100644
--- a/packages/app/src/context/global-sync/queue.ts
+++ b/packages/app/src/context/global-sync/queue.ts
@@ -63,6 +63,7 @@ export function createRefreshQueue(input: QueueInput) {
}
} finally {
running = false
+ // oxlint-disable-next-line no-unsafe-finally -- intentional: early return skips schedule() when paused
if (input.paused()) return
if (root || queued.size) schedule()
}
diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx
index 62d5cba61..3ba2659a3 100644
--- a/packages/app/src/pages/layout.tsx
+++ b/packages/app/src/pages/layout.tsx
@@ -704,7 +704,7 @@ export default function Layout(props: ParentProps) {
createEffect(() => {
const active = new Set(visibleSessionDirs())
- for (const directory of [...prefetchedByDir.keys()]) {
+ for (const directory of prefetchedByDir.keys()) {
if (active.has(directory)) continue
prefetchedByDir.delete(directory)
}
diff --git a/packages/app/src/pages/session/review-tab.tsx b/packages/app/src/pages/session/review-tab.tsx
index 71dfe375e..5719fce31 100644
--- a/packages/app/src/pages/session/review-tab.tsx
+++ b/packages/app/src/pages/session/review-tab.tsx
@@ -1,4 +1,4 @@
-import { createEffect, createSignal, onCleanup, type JSX } from "solid-js"
+import { createEffect, onCleanup, type JSX } from "solid-js"
import { makeEventListener } from "@solid-primitives/event-listener"
import type { SnapshotFileDiff, VcsFileDiff } from "@opencode-ai/sdk/v2"
import { SessionReview } from "@opencode-ai/ui/session-review"
diff --git a/packages/console/app/src/component/email-signup.tsx b/packages/console/app/src/component/email-signup.tsx
index bd33e9200..caedaf0f2 100644
--- a/packages/console/app/src/component/email-signup.tsx
+++ b/packages/console/app/src/component/email-signup.tsx
@@ -1,5 +1,4 @@
import { action, useSubmission } from "@solidjs/router"
-import dock from "../asset/lander/dock.png"
import { Resource } from "@opencode-ai/console-resource"
import { Show } from "solid-js"
import { useI18n } from "~/context/i18n"
diff --git a/packages/console/app/src/component/header.tsx b/packages/console/app/src/component/header.tsx
index 1e129d590..cc45ed534 100644
--- a/packages/console/app/src/component/header.tsx
+++ b/packages/console/app/src/component/header.tsx
@@ -47,7 +47,7 @@ export function Header(props: { zen?: boolean; go?: boolean; hideGetStarted?: bo
notation: "compact",
compactDisplay: "short",
maximumFractionDigits: 0,
- }).format(githubData()?.stars!)
+ }).format(githubData()?.stars)
: config.github.starsFormatted.compact,
)
diff --git a/packages/console/app/src/context/auth.session.ts b/packages/console/app/src/context/auth.session.ts
index e69de29bb..336ce12bb 100644
--- a/packages/console/app/src/context/auth.session.ts
+++ b/packages/console/app/src/context/auth.session.ts
@@ -0,0 +1 @@
+export {}
diff --git a/packages/console/app/src/routes/bench/[id].tsx b/packages/console/app/src/routes/bench/[id].tsx
index dd96bcbbc..c6d10826b 100644
--- a/packages/console/app/src/routes/bench/[id].tsx
+++ b/packages/console/app/src/routes/bench/[id].tsx
@@ -1,7 +1,7 @@
import { Title } from "@solidjs/meta"
import { createAsync, query, useParams } from "@solidjs/router"
import { createSignal, For, Show } from "solid-js"
-import { Database, desc, eq } from "@opencode-ai/console-core/drizzle/index.js"
+import { Database, eq } from "@opencode-ai/console-core/drizzle/index.js"
import { BenchmarkTable } from "@opencode-ai/console-core/schema/benchmark.sql.js"
import { useI18n } from "~/context/i18n"
diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx
index 0ac85a957..82b3caf66 100644
--- a/packages/console/app/src/routes/go/index.tsx
+++ b/packages/console/app/src/routes/go/index.tsx
@@ -1,5 +1,5 @@
import "./index.css"
-import { createAsync, query, redirect } from "@solidjs/router"
+import { createAsync, query } from "@solidjs/router"
import { Title, Meta } from "@solidjs/meta"
import { For, createMemo, createSignal, onCleanup, onMount } from "solid-js"
//import { HttpHeader } from "@solidjs/start"
diff --git a/packages/console/app/src/routes/workspace-picker.tsx b/packages/console/app/src/routes/workspace-picker.tsx
index ffec2f3be..8778abefd 100644
--- a/packages/console/app/src/routes/workspace-picker.tsx
+++ b/packages/console/app/src/routes/workspace-picker.tsx
@@ -1,5 +1,5 @@
import { query, useParams, action, createAsync, redirect, useSubmission } from "@solidjs/router"
-import { For, Show, createEffect } from "solid-js"
+import { For, createEffect } from "solid-js"
import { createStore } from "solid-js/store"
import { withActor } from "~/context/auth.withActor"
import { Actor } from "@opencode-ai/console-core/actor.js"
diff --git a/packages/console/app/src/routes/zen/index.tsx b/packages/console/app/src/routes/zen/index.tsx
index 62e8f5d37..6285a0bd8 100644
--- a/packages/console/app/src/routes/zen/index.tsx
+++ b/packages/console/app/src/routes/zen/index.tsx
@@ -1,5 +1,5 @@
import "./index.css"
-import { createAsync, query, redirect } from "@solidjs/router"
+import { createAsync, query } from "@solidjs/router"
import { Title, Meta } from "@solidjs/meta"
//import { HttpHeader } from "@solidjs/start"
import zenLogoLight from "../../asset/zen-ornate-light.svg"
diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts
index 358d8736c..d1c5985a8 100644
--- a/packages/console/app/src/routes/zen/util/handler.ts
+++ b/packages/console/app/src/routes/zen/util/handler.ts
@@ -345,7 +345,7 @@ export async function handler(
logger.metric({
"error.cause2": JSON.stringify(error.cause),
})
- } catch (e) {}
+ } catch {}
}
// Note: both top level "type" and "error.type" fields are used by the @ai-sdk/anthropic client to render the error message.
diff --git a/packages/console/app/src/routes/zen/util/provider/anthropic.ts b/packages/console/app/src/routes/zen/util/provider/anthropic.ts
index b63be8688..0f6f11da7 100644
--- a/packages/console/app/src/routes/zen/util/provider/anthropic.ts
+++ b/packages/console/app/src/routes/zen/util/provider/anthropic.ts
@@ -153,7 +153,7 @@ export const anthropicHelper: ProviderHelper = ({ reqModel, providerModel }) =>
let json
try {
json = JSON.parse(data.slice(6))
- } catch (e) {
+ } catch {
return
}
diff --git a/packages/console/app/src/routes/zen/util/provider/google.ts b/packages/console/app/src/routes/zen/util/provider/google.ts
index f6f7d6e19..ef7937c35 100644
--- a/packages/console/app/src/routes/zen/util/provider/google.ts
+++ b/packages/console/app/src/routes/zen/util/provider/google.ts
@@ -48,7 +48,7 @@ export const googleHelper: ProviderHelper = ({ providerModel }) => ({
let json
try {
json = JSON.parse(chunk.slice(6)) as { usageMetadata?: Usage }
- } catch (e) {
+ } catch {
return
}
diff --git a/packages/console/app/src/routes/zen/util/provider/openai-compatible.ts b/packages/console/app/src/routes/zen/util/provider/openai-compatible.ts
index cf9ee287c..e05f0d6c0 100644
--- a/packages/console/app/src/routes/zen/util/provider/openai-compatible.ts
+++ b/packages/console/app/src/routes/zen/util/provider/openai-compatible.ts
@@ -49,7 +49,7 @@ export const oaCompatHelper: ProviderHelper = ({ adjustCacheUsage, safetyIdentif
let json
try {
json = JSON.parse(chunk.slice(6)) as { usage?: Usage }
- } catch (e) {
+ } catch {
return
}
@@ -289,7 +289,7 @@ export function fromOaCompatibleResponse(resp: any): CommonResponse {
index: 0,
message: {
role: "assistant" as const,
- ...(content.length > 0 && content.some((c) => c.type === "text")
+ ...(content.some((c) => c.type === "text")
? {
content: content
.filter((c) => c.type === "text")
@@ -297,7 +297,7 @@ export function fromOaCompatibleResponse(resp: any): CommonResponse {
.join(""),
}
: {}),
- ...(content.length > 0 && content.some((c) => c.type === "tool_use")
+ ...(content.some((c) => c.type === "tool_use")
? {
tool_calls: content
.filter((c) => c.type === "tool_use")
diff --git a/packages/console/app/src/routes/zen/util/provider/openai.ts b/packages/console/app/src/routes/zen/util/provider/openai.ts
index 3c5831a9a..bee1e01ec 100644
--- a/packages/console/app/src/routes/zen/util/provider/openai.ts
+++ b/packages/console/app/src/routes/zen/util/provider/openai.ts
@@ -36,7 +36,7 @@ export const openaiHelper: ProviderHelper = ({ workspaceID }) => ({
let json
try {
json = JSON.parse(data.slice(6)) as { response?: { usage?: Usage } }
- } catch (e) {
+ } catch {
return
}
diff --git a/packages/console/core/script/black-cancel-waitlist.ts b/packages/console/core/script/black-cancel-waitlist.ts
index ab2aa16d5..7c3584e00 100644
--- a/packages/console/core/script/black-cancel-waitlist.ts
+++ b/packages/console/core/script/black-cancel-waitlist.ts
@@ -1,7 +1,5 @@
-import { subscribe } from "diagnostics_channel"
-import { Billing } from "../src/billing.js"
-import { and, Database, eq } from "../src/drizzle/index.js"
-import { BillingTable, PaymentTable, SubscriptionTable } from "../src/schema/billing.sql.js"
+import { Database, eq } from "../src/drizzle/index.js"
+import { BillingTable } from "../src/schema/billing.sql.js"
const workspaceID = process.argv[2]
diff --git a/packages/console/core/script/black-gift.ts b/packages/console/core/script/black-gift.ts
index c666a1ab6..e57ec9775 100644
--- a/packages/console/core/script/black-gift.ts
+++ b/packages/console/core/script/black-gift.ts
@@ -1,12 +1,10 @@
import { Billing } from "../src/billing.js"
-import { and, Database, eq, isNull, sql } from "../src/drizzle/index.js"
+import { and, Database, eq, isNull } from "../src/drizzle/index.js"
import { UserTable } from "../src/schema/user.sql.js"
-import { BillingTable, PaymentTable, SubscriptionTable } from "../src/schema/billing.sql.js"
+import { BillingTable, SubscriptionTable } from "../src/schema/billing.sql.js"
import { Identifier } from "../src/identifier.js"
-import { centsToMicroCents } from "../src/util/price.js"
import { AuthTable } from "../src/schema/auth.sql.js"
import { BlackData } from "../src/black.js"
-import { Actor } from "../src/actor.js"
const plan = "200"
const couponID = "JAIr0Pe1"
diff --git a/packages/console/core/script/black-onboard-waitlist.ts b/packages/console/core/script/black-onboard-waitlist.ts
index 96d0f8f91..9e7d9e935 100644
--- a/packages/console/core/script/black-onboard-waitlist.ts
+++ b/packages/console/core/script/black-onboard-waitlist.ts
@@ -1,7 +1,5 @@
-import { subscribe } from "diagnostics_channel"
-import { Billing } from "../src/billing.js"
-import { and, Database, eq } from "../src/drizzle/index.js"
-import { BillingTable, PaymentTable, SubscriptionTable } from "../src/schema/billing.sql.js"
+import { Database, eq } from "../src/drizzle/index.js"
+import { BillingTable } from "../src/schema/billing.sql.js"
const workspaceID = process.argv[2]
diff --git a/packages/console/core/script/black-select-workspaces.ts b/packages/console/core/script/black-select-workspaces.ts
index 63bfab887..0772bd212 100644
--- a/packages/console/core/script/black-select-workspaces.ts
+++ b/packages/console/core/script/black-select-workspaces.ts
@@ -1,4 +1,4 @@
-import { Database, eq, and, sql, inArray, isNull, count } from "../src/drizzle/index.js"
+import { Database, eq, and, sql, inArray, isNull } from "../src/drizzle/index.js"
import { BillingTable, BlackPlans } from "../src/schema/billing.sql.js"
import { UserTable } from "../src/schema/user.sql.js"
import { AuthTable } from "../src/schema/auth.sql.js"
diff --git a/packages/console/core/src/util/env.cloudflare.ts b/packages/console/core/src/util/env.cloudflare.ts
index e69de29bb..336ce12bb 100644
--- a/packages/console/core/src/util/env.cloudflare.ts
+++ b/packages/console/core/src/util/env.cloudflare.ts
@@ -0,0 +1 @@
+export {}
diff --git a/packages/console/core/src/util/log.ts b/packages/console/core/src/util/log.ts
index 4f2d25c13..ef3ad85c6 100644
--- a/packages/console/core/src/util/log.ts
+++ b/packages/console/core/src/util/log.ts
@@ -48,7 +48,7 @@ export namespace Log {
function use() {
try {
return ctx.use()
- } catch (e) {
+ } catch {
return { tags: {} }
}
}
diff --git a/packages/enterprise/test/core/share.test.ts b/packages/enterprise/test/core/share.test.ts
index 34f3b17a3..2877f8e0e 100644
--- a/packages/enterprise/test/core/share.test.ts
+++ b/packages/enterprise/test/core/share.test.ts
@@ -1,4 +1,4 @@
-import { describe, expect, test, afterAll } from "bun:test"
+import { describe, expect, test } from "bun:test"
import { Share } from "../../src/core/share"
import { Storage } from "../../src/core/storage"
import { Identifier } from "@opencode-ai/shared/util/identifier"
diff --git a/packages/opencode/script/publish.ts b/packages/opencode/script/publish.ts
index fbc1c83ba..9c4b8f187 100755
--- a/packages/opencode/script/publish.ts
+++ b/packages/opencode/script/publish.ts
@@ -107,7 +107,7 @@ if (!Script.preview) {
await $`cd ./dist/aur-${pkg} && git commit -m "Update to v${Script.version}"`
await $`cd ./dist/aur-${pkg} && git push`
break
- } catch (e) {
+ } catch {
continue
}
}
diff --git a/packages/opencode/src/cli/cmd/debug/lsp.ts b/packages/opencode/src/cli/cmd/debug/lsp.ts
index 5f0a1807d..18f67b391 100644
--- a/packages/opencode/src/cli/cmd/debug/lsp.ts
+++ b/packages/opencode/src/cli/cmd/debug/lsp.ts
@@ -5,7 +5,6 @@ import { bootstrap } from "../../bootstrap"
import { cmd } from "../cmd"
import { Log } from "../../../util/log"
import { EOL } from "os"
-import { setTimeout as sleep } from "node:timers/promises"
export const LSPCommand = cmd({
command: "lsp",
diff --git a/packages/opencode/src/cli/cmd/export.ts b/packages/opencode/src/cli/cmd/export.ts
index 9a1a51adc..06b361c6d 100644
--- a/packages/opencode/src/cli/cmd/export.ts
+++ b/packages/opencode/src/cli/cmd/export.ts
@@ -297,7 +297,7 @@ export const ExportCommand = cmd({
process.stdout.write(JSON.stringify(args.sanitize ? sanitize(exportData) : exportData, null, 2))
process.stdout.write(EOL)
- } catch (error) {
+ } catch {
UI.error(`Session not found: ${sessionID!}`)
process.exit(1)
}
diff --git a/packages/opencode/src/cli/cmd/github.ts b/packages/opencode/src/cli/cmd/github.ts
index 074d9e518..b6781d085 100644
--- a/packages/opencode/src/cli/cmd/github.ts
+++ b/packages/opencode/src/cli/cmd/github.ts
@@ -362,7 +362,7 @@ export const GithubInstallCommand = cmd({
retries++
await sleep(1000)
- } while (true)
+ } while (true) // oxlint-disable-line no-constant-condition
s.stop("Installed GitHub app")
@@ -931,7 +931,7 @@ export const GithubRunCommand = cmd({
async function summarize(response: string) {
try {
return await chat(`Summarize the following in less than 40 characters:\n\n${response}`)
- } catch (e) {
+ } catch {
const title = issueEvent
? issueEvent.issue.title
: (payload as PullRequestReviewCommentEvent).pull_request.title
diff --git a/packages/opencode/src/cli/cmd/serve.ts b/packages/opencode/src/cli/cmd/serve.ts
index 73e7a18a7..d5eee75dd 100644
--- a/packages/opencode/src/cli/cmd/serve.ts
+++ b/packages/opencode/src/cli/cmd/serve.ts
@@ -2,9 +2,6 @@ import { Server } from "../../server/server"
import { cmd } from "./cmd"
import { withNetworkOptions, resolveNetworkOptions } from "../network"
import { Flag } from "../../flag/flag"
-import { Workspace } from "../../control-plane/workspace"
-import { Project } from "../../project/project"
-import { Installation } from "../../installation"
export const ServeCommand = cmd({
command: "serve",
diff --git a/packages/opencode/src/cli/cmd/tui/app.tsx b/packages/opencode/src/cli/cmd/tui/app.tsx
index acf007197..4c6c74ff3 100644
--- a/packages/opencode/src/cli/cmd/tui/app.tsx
+++ b/packages/opencode/src/cli/cmd/tui/app.tsx
@@ -23,7 +23,7 @@ import { DialogProvider, useDialog } from "@tui/ui/dialog"
import { DialogProvider as DialogProviderList } from "@tui/component/dialog-provider"
import { ErrorComponent } from "@tui/component/error-component"
import { PluginRouteMissing } from "@tui/component/plugin-route-missing"
-import { ProjectProvider, useProject } from "@tui/context/project"
+import { ProjectProvider } from "@tui/context/project"
import { useEvent } from "@tui/context/event"
import { SDKProvider, useSDK } from "@tui/context/sdk"
import { StartupLoading } from "@tui/component/startup-loading"
@@ -115,6 +115,7 @@ export function tui(input: {
events?: EventSource
}) {
// promise to prevent immediate exit
+ // oxlint-disable-next-line no-async-promise-executor -- intentional: async executor used for sequential setup before resolve
return new Promise<void>(async (resolve) => {
const unguard = win32InstallCtrlCGuard()
win32DisableProcessedInput()
diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-theme-list.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-theme-list.tsx
index f4072c978..6cf3539ad 100644
--- a/packages/opencode/src/cli/cmd/tui/component/dialog-theme-list.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/dialog-theme-list.tsx
@@ -1,7 +1,7 @@
import { DialogSelect, type DialogSelectRef } from "../ui/dialog-select"
import { useTheme } from "../context/theme"
import { useDialog } from "../ui/dialog"
-import { onCleanup, onMount } from "solid-js"
+import { onCleanup } from "solid-js"
export function DialogThemeList() {
const theme = useTheme()
diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx
index d0f5b481c..87440d0e2 100644
--- a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx
@@ -1,4 +1,4 @@
-import { BoxRenderable, TextareaRenderable, MouseEvent, PasteEvent, decodePasteBytes, t, dim, fg } from "@opentui/core"
+import { BoxRenderable, TextareaRenderable, MouseEvent, PasteEvent, decodePasteBytes } from "@opentui/core"
import { createEffect, createMemo, onMount, createSignal, onCleanup, on, Show, Switch, Match } from "solid-js"
import "opentui-spinner/solid"
import path from "path"
diff --git a/packages/opencode/src/cli/cmd/tui/event.ts b/packages/opencode/src/cli/cmd/tui/event.ts
index b2e4b92c5..fa164d53e 100644
--- a/packages/opencode/src/cli/cmd/tui/event.ts
+++ b/packages/opencode/src/cli/cmd/tui/event.ts
@@ -1,5 +1,4 @@
import { BusEvent } from "@/bus/bus-event"
-import { Bus } from "@/bus"
import { SessionID } from "@/session/schema"
import z from "zod"
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
index 2b95cd5ae..f9fd5a9b9 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
@@ -863,7 +863,7 @@ export function Session() {
)
await Clipboard.copy(transcript)
toast.show({ message: "Session transcript copied to clipboard!", variant: "success" })
- } catch (error) {
+ } catch {
toast.show({ message: "Failed to copy session transcript", variant: "error" })
}
dialog.clear()
@@ -925,7 +925,7 @@ export function Session() {
toast.show({ message: `Session exported to ${filename}`, variant: "success" })
}
- } catch (error) {
+ } catch {
toast.show({ message: "Failed to export session", variant: "error" })
}
dialog.clear()
@@ -1010,7 +1010,7 @@ export function Session() {
),
}
})
- } catch (error) {
+ } catch {
return []
}
})
diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx
index 109b5f2f1..b6c937f41 100644
--- a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx
+++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx
@@ -1,6 +1,6 @@
import { InputRenderable, RGBA, ScrollBoxRenderable, TextAttributes } from "@opentui/core"
import { useTheme, selectedForeground } from "@tui/context/theme"
-import { entries, filter, flatMap, groupBy, pipe, take } from "remeda"
+import { entries, filter, flatMap, groupBy, pipe } from "remeda"
import { batch, createEffect, createMemo, For, Show, type JSX, on } from "solid-js"
import { createStore } from "solid-js/store"
import { useKeyboard, useTerminalDimensions } from "@opentui/solid"
diff --git a/packages/opencode/src/control-plane/workspace-context.ts b/packages/opencode/src/control-plane/workspace-context.ts
index 541657b88..273adbb24 100644
--- a/packages/opencode/src/control-plane/workspace-context.ts
+++ b/packages/opencode/src/control-plane/workspace-context.ts
@@ -19,7 +19,7 @@ export const WorkspaceContext = {
get workspaceID() {
try {
return context.use().workspaceID
- } catch (err) {
+ } catch {
return undefined
}
},
diff --git a/packages/opencode/src/file/ignore.ts b/packages/opencode/src/file/ignore.ts
index a102e7d17..63f2f594e 100644
--- a/packages/opencode/src/file/ignore.ts
+++ b/packages/opencode/src/file/ignore.ts
@@ -1,4 +1,3 @@
-import { sep } from "node:path"
import { Glob } from "@opencode-ai/shared/util/glob"
export namespace FileIgnore {
diff --git a/packages/opencode/src/file/watcher.ts b/packages/opencode/src/file/watcher.ts
index 74966fd47..4dcec5094 100644
--- a/packages/opencode/src/file/watcher.ts
+++ b/packages/opencode/src/file/watcher.ts
@@ -1,4 +1,4 @@
-import { Cause, Effect, Layer, Scope, Context } from "effect"
+import { Cause, Effect, Layer, Context } from "effect"
// @ts-ignore
import { createWrapper } from "@parcel/watcher/wrapper"
import type ParcelWatcher from "@parcel/watcher"
diff --git a/packages/opencode/src/format/index.ts b/packages/opencode/src/format/index.ts
index 595bb7a60..d65ed2944 100644
--- a/packages/opencode/src/format/index.ts
+++ b/packages/opencode/src/format/index.ts
@@ -6,7 +6,6 @@ import path from "path"
import { mergeDeep } from "remeda"
import z from "zod"
import { Config } from "../config"
-import { Instance } from "../project/instance"
import { Log } from "../util/log"
import * as Formatter from "./formatter"
diff --git a/packages/opencode/src/global/index.ts b/packages/opencode/src/global/index.ts
index 32d515321..df4639781 100644
--- a/packages/opencode/src/global/index.ts
+++ b/packages/opencode/src/global/index.ts
@@ -53,6 +53,6 @@ if (version !== CACHE_VERSION) {
}),
),
)
- } catch (e) {}
+ } catch {}
await Filesystem.write(path.join(Global.Path.cache, "version"), CACHE_VERSION)
}
diff --git a/packages/opencode/src/ide/index.ts b/packages/opencode/src/ide/index.ts
index 46efea2cc..24ba53f82 100644
--- a/packages/opencode/src/ide/index.ts
+++ b/packages/opencode/src/ide/index.ts
@@ -1,5 +1,4 @@
import { BusEvent } from "@/bus/bus-event"
-import { Bus } from "@/bus"
import z from "zod"
import { NamedError } from "@opencode-ai/shared/util/error"
import { Log } from "../util/log"
diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts
index 9ffef7a42..f4554ae3e 100644
--- a/packages/opencode/src/lsp/server.ts
+++ b/packages/opencode/src/lsp/server.ts
@@ -826,7 +826,7 @@ export namespace LSPServer {
if (cargoTomlContent.includes("[workspace]")) {
return currentDir
}
- } catch (err) {
+ } catch {
// File doesn't exist or can't be read, continue searching up
}
diff --git a/packages/opencode/src/patch/index.ts b/packages/opencode/src/patch/index.ts
index b87ad5552..f003606c4 100644
--- a/packages/opencode/src/patch/index.ts
+++ b/packages/opencode/src/patch/index.ts
@@ -630,7 +630,7 @@ export namespace Patch {
type: "delete",
content,
})
- } catch (error) {
+ } catch {
return {
type: MaybeApplyPatchVerified.CorrectnessError,
error: new Error(`Failed to read file for deletion: ${deletePath}`),
diff --git a/packages/opencode/src/permission/index.ts b/packages/opencode/src/permission/index.ts
index 71d321080..010048549 100644
--- a/packages/opencode/src/permission/index.ts
+++ b/packages/opencode/src/permission/index.ts
@@ -3,7 +3,6 @@ import { BusEvent } from "@/bus/bus-event"
import { Config } from "@/config"
import { InstanceState } from "@/effect/instance-state"
import { ProjectID } from "@/project/schema"
-import { Instance } from "@/project/instance"
import { MessageID, SessionID } from "@/session/schema"
import { PermissionTable } from "@/session/session.sql"
import { Database, eq } from "@/storage/db"
diff --git a/packages/opencode/src/plugin/codex.ts b/packages/opencode/src/plugin/codex.ts
index 1e127fae5..ea356d55d 100644
--- a/packages/opencode/src/plugin/codex.ts
+++ b/packages/opencode/src/plugin/codex.ts
@@ -1,10 +1,8 @@
import type { Hooks, PluginInput } from "@opencode-ai/plugin"
import { Log } from "../util/log"
import { Installation } from "../installation"
-import { Auth, OAUTH_DUMMY_KEY } from "../auth"
+import { OAUTH_DUMMY_KEY } from "../auth"
import os from "os"
-import { ProviderTransform } from "@/provider/transform"
-import { ModelID, ProviderID } from "@/provider/schema"
import { setTimeout as sleep } from "node:timers/promises"
import { createServer } from "http"
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-language-model.ts b/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-language-model.ts
index 4606af7a1..92c8fd857 100644
--- a/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-language-model.ts
+++ b/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-language-model.ts
@@ -793,6 +793,7 @@ export class OpenAIResponsesLanguageModel implements LanguageModelV3 {
fetch: this.config.fetch,
})
+ // oxlint-disable-next-line no-this-alias -- needed for closure scope inside generator
const self = this
let finishReason: {
diff --git a/packages/opencode/src/server/instance/config.ts b/packages/opencode/src/server/instance/config.ts
index 11845c69c..68a6b5076 100644
--- a/packages/opencode/src/server/instance/config.ts
+++ b/packages/opencode/src/server/instance/config.ts
@@ -7,7 +7,6 @@ import { mapValues } from "remeda"
import { errors } from "../error"
import { lazy } from "../../util/lazy"
import { AppRuntime } from "../../effect/app-runtime"
-import { Effect } from "effect"
import { jsonRequest } from "./trace"
export const ConfigRoutes = lazy(() =>
diff --git a/packages/opencode/src/server/instance/event.ts b/packages/opencode/src/server/instance/event.ts
index 5d631d954..f13ed035e 100644
--- a/packages/opencode/src/server/instance/event.ts
+++ b/packages/opencode/src/server/instance/event.ts
@@ -4,7 +4,6 @@ import { describeRoute, resolver } from "hono-openapi"
import { streamSSE } from "hono/streaming"
import { Log } from "@/util/log"
import { BusEvent } from "@/bus/bus-event"
-import { SyncEvent } from "@/sync"
import { Bus } from "@/bus"
import { AsyncQueue } from "../../util/queue"
diff --git a/packages/opencode/src/server/instance/pty.ts b/packages/opencode/src/server/instance/pty.ts
index 576cbe5de..3cb8dbfe2 100644
--- a/packages/opencode/src/server/instance/pty.ts
+++ b/packages/opencode/src/server/instance/pty.ts
@@ -1,4 +1,4 @@
-import { Hono, type MiddlewareHandler } from "hono"
+import { Hono } from "hono"
import { describeRoute, validator, resolver } from "hono-openapi"
import type { UpgradeWebSocket } from "hono/ws"
import { Effect } from "effect"
diff --git a/packages/opencode/src/session/compaction.ts b/packages/opencode/src/session/compaction.ts
index 810b94974..03f972311 100644
--- a/packages/opencode/src/session/compaction.ts
+++ b/packages/opencode/src/session/compaction.ts
@@ -2,7 +2,6 @@ import { BusEvent } from "@/bus/bus-event"
import { Bus } from "@/bus"
import { Session } from "."
import { SessionID, MessageID, PartID } from "./schema"
-import { Instance } from "../project/instance"
import { Provider } from "../provider/provider"
import { MessageV2 } from "./message-v2"
import z from "zod"
diff --git a/packages/opencode/src/session/processor.ts b/packages/opencode/src/session/processor.ts
index d91b1427b..0f8cd41b3 100644
--- a/packages/opencode/src/session/processor.ts
+++ b/packages/opencode/src/session/processor.ts
@@ -249,6 +249,7 @@ export namespace SessionProcessor {
case "reasoning-end":
if (!(value.id in ctx.reasoningMap)) return
+ // oxlint-disable-next-line no-self-assign -- reactivity trigger
ctx.reasoningMap[value.id].text = ctx.reasoningMap[value.id].text
ctx.reasoningMap[value.id].time = { ...ctx.reasoningMap[value.id].time, end: Date.now() }
if (value.providerMetadata) ctx.reasoningMap[value.id].metadata = value.providerMetadata
@@ -431,6 +432,7 @@ export namespace SessionProcessor {
case "text-end":
if (!ctx.currentText) return
+ // oxlint-disable-next-line no-self-assign -- reactivity trigger
ctx.currentText.text = ctx.currentText.text
ctx.currentText.text = (yield* plugin.trigger(
"experimental.text.complete",
diff --git a/packages/opencode/src/session/projectors.ts b/packages/opencode/src/session/projectors.ts
index 460f0a41c..a1b2e401d 100644
--- a/packages/opencode/src/session/projectors.ts
+++ b/packages/opencode/src/session/projectors.ts
@@ -1,11 +1,9 @@
-import { NotFoundError, eq, and, sql } from "../storage/db"
+import { NotFoundError, eq, and } from "../storage/db"
import { SyncEvent } from "@/sync"
import { Session } from "./index"
import { MessageV2 } from "./message-v2"
-import { SessionTable, MessageTable, PartTable, SessionEntryTable } from "./session.sql"
+import { SessionTable, MessageTable, PartTable } from "./session.sql"
import { Log } from "../util/log"
-import { DateTime } from "effect"
-import { SessionEntry } from "@/v2/session-entry"
const log = Log.create({ service: "session.projector" })
diff --git a/packages/opencode/src/session/revert.ts b/packages/opencode/src/session/revert.ts
index a4a7a27d6..7a7f847ad 100644
--- a/packages/opencode/src/session/revert.ts
+++ b/packages/opencode/src/session/revert.ts
@@ -10,7 +10,6 @@ import { MessageV2 } from "./message-v2"
import { SessionID, MessageID, PartID } from "./schema"
import { SessionRunState } from "./run-state"
import { SessionSummary } from "./summary"
-import { SessionStatus } from "./status"
export namespace SessionRevert {
const log = Log.create({ service: "session.revert" })
diff --git a/packages/opencode/src/storage/json-migration.ts b/packages/opencode/src/storage/json-migration.ts
index 89d27b9a7..c13a005ca 100644
--- a/packages/opencode/src/storage/json-migration.ts
+++ b/packages/opencode/src/storage/json-migration.ts
@@ -77,11 +77,13 @@ export namespace JsonMigration {
async function read(files: string[], start: number, end: number) {
const count = end - start
+ // oxlint-disable-next-line unicorn/no-new-array -- pre-allocated for index-based batch fill
const tasks = new Array(count)
for (let i = 0; i < count; i++) {
tasks[i] = Filesystem.readJson(files[start + i])
}
const results = await Promise.allSettled(tasks)
+ // oxlint-disable-next-line unicorn/no-new-array -- pre-allocated for index-based batch fill
const items = new Array(count)
for (let i = 0; i < results.length; i++) {
const result = results[i]
@@ -243,6 +245,7 @@ export namespace JsonMigration {
for (let i = 0; i < allMessageFiles.length; i += batchSize) {
const end = Math.min(i + batchSize, allMessageFiles.length)
const batch = await read(allMessageFiles, i, end)
+ // oxlint-disable-next-line unicorn/no-new-array -- pre-allocated for index-based batch fill
const values = new Array(batch.length)
let count = 0
for (let j = 0; j < batch.length; j++) {
@@ -273,6 +276,7 @@ export namespace JsonMigration {
for (let i = 0; i < partFiles.length; i += batchSize) {
const end = Math.min(i + batchSize, partFiles.length)
const batch = await read(partFiles, i, end)
+ // oxlint-disable-next-line unicorn/no-new-array -- pre-allocated for index-based batch fill
const values = new Array(batch.length)
let count = 0
for (let j = 0; j < batch.length; j++) {
diff --git a/packages/opencode/src/sync/index.ts b/packages/opencode/src/sync/index.ts
index ce598dae6..e89d57e18 100644
--- a/packages/opencode/src/sync/index.ts
+++ b/packages/opencode/src/sync/index.ts
@@ -1,6 +1,5 @@
import z from "zod"
import type { ZodObject } from "zod"
-import { EventEmitter } from "events"
import { Database, eq } from "@/storage/db"
import { GlobalBus } from "@/bus/global"
import { Bus as ProjectBus } from "@/bus"
diff --git a/packages/opencode/src/tool/edit.ts b/packages/opencode/src/tool/edit.ts
index 5c8246394..2303618a0 100644
--- a/packages/opencode/src/tool/edit.ts
+++ b/packages/opencode/src/tool/edit.ts
@@ -416,7 +416,7 @@ export const WhitespaceNormalizedReplacer: Replacer = function* (content, find)
if (match) {
yield match[0]
}
- } catch (e) {
+ } catch {
// Invalid regex pattern, skip
}
}
diff --git a/packages/opencode/src/tool/task.ts b/packages/opencode/src/tool/task.ts
index bbb07caa4..8f7104e80 100644
--- a/packages/opencode/src/tool/task.ts
+++ b/packages/opencode/src/tool/task.ts
@@ -8,7 +8,6 @@ import { Agent } from "../agent/agent"
import type { SessionPrompt } from "../session/prompt"
import { Config } from "../config"
import { Effect } from "effect"
-import { Log } from "@/util/log"
export interface TaskPromptOps {
cancel(sessionID: SessionID): void
diff --git a/packages/opencode/src/tool/webfetch.ts b/packages/opencode/src/tool/webfetch.ts
index 9339038b0..14d546584 100644
--- a/packages/opencode/src/tool/webfetch.ts
+++ b/packages/opencode/src/tool/webfetch.ts
@@ -1,6 +1,6 @@
import z from "zod"
import { Effect } from "effect"
-import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
+import { HttpClient, HttpClientRequest } from "effect/unstable/http"
import { Tool } from "./tool"
import TurndownService from "turndown"
import DESCRIPTION from "./webfetch.txt"
diff --git a/packages/opencode/src/util/lazy.ts b/packages/opencode/src/util/lazy.ts
index 55643dc6a..86967e11a 100644
--- a/packages/opencode/src/util/lazy.ts
+++ b/packages/opencode/src/util/lazy.ts
@@ -4,14 +4,9 @@ export function lazy<T>(fn: () => T) {
const result = (): T => {
if (loaded) return value as T
- try {
- value = fn()
- loaded = true
- return value as T
- } catch (e) {
- // Don't mark as loaded if initialization failed
- throw e
- }
+ value = fn()
+ loaded = true
+ return value as T
}
result.reset = () => {
diff --git a/packages/opencode/src/v2/session.ts b/packages/opencode/src/v2/session.ts
index b7191a4c9..97df0a220 100644
--- a/packages/opencode/src/v2/session.ts
+++ b/packages/opencode/src/v2/session.ts
@@ -1,8 +1,6 @@
import { Context, Layer, Schema, Effect } from "effect"
import { SessionEntry } from "./session-entry"
import { Struct } from "effect"
-import { Identifier } from "@/id/id"
-import { withStatics } from "@/util/schema"
import { Session } from "@/session"
import { SessionID } from "@/session/schema"
diff --git a/packages/opencode/test/cli/tui/plugin-lifecycle.test.ts b/packages/opencode/test/cli/tui/plugin-lifecycle.test.ts
index 9c868a4c9..b22180ef3 100644
--- a/packages/opencode/test/cli/tui/plugin-lifecycle.test.ts
+++ b/packages/opencode/test/cli/tui/plugin-lifecycle.test.ts
@@ -5,7 +5,6 @@ import { pathToFileURL } from "url"
import { tmpdir } from "../../fixture/fixture"
import { createTuiPluginApi } from "../../fixture/tui-plugin"
import { mockTuiRuntime } from "../../fixture/tui-runtime"
-import { TuiConfig } from "../../../src/config/tui"
const { TuiPluginRuntime } = await import("../../../src/cli/cmd/tui/plugin/runtime")
diff --git a/packages/opencode/test/effect/cross-spawn-spawner.test.ts b/packages/opencode/test/effect/cross-spawn-spawner.test.ts
index 2cc509202..5990635aa 100644
--- a/packages/opencode/test/effect/cross-spawn-spawner.test.ts
+++ b/packages/opencode/test/effect/cross-spawn-spawner.test.ts
@@ -1,8 +1,7 @@
-import { NodeFileSystem, NodePath } from "@effect/platform-node"
import { describe, expect } from "bun:test"
import fs from "node:fs/promises"
import path from "node:path"
-import { Effect, Exit, Layer, Stream } from "effect"
+import { Effect, Exit, Stream } from "effect"
import type * as PlatformError from "effect/PlatformError"
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
diff --git a/packages/opencode/test/effect/instance-state.test.ts b/packages/opencode/test/effect/instance-state.test.ts
index 813ca344a..ca74c915b 100644
--- a/packages/opencode/test/effect/instance-state.test.ts
+++ b/packages/opencode/test/effect/instance-state.test.ts
@@ -1,5 +1,5 @@
import { afterEach, expect, test } from "bun:test"
-import { Cause, Deferred, Duration, Effect, Exit, Fiber, Layer, ManagedRuntime, Context } from "effect"
+import { Deferred, Duration, Effect, Exit, Fiber, Layer, ManagedRuntime, Context } from "effect"
import { InstanceState } from "../../src/effect/instance-state"
import { InstanceRef } from "../../src/effect/instance-ref"
import { Instance } from "../../src/project/instance"
diff --git a/packages/opencode/test/permission/next.test.ts b/packages/opencode/test/permission/next.test.ts
index 9e3007f6d..805c230f3 100644
--- a/packages/opencode/test/permission/next.test.ts
+++ b/packages/opencode/test/permission/next.test.ts
@@ -6,7 +6,7 @@ import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
import { Permission } from "../../src/permission"
import { PermissionID } from "../../src/permission/schema"
import { Instance } from "../../src/project/instance"
-import { provideInstance, provideTmpdirInstance, tmpdir, tmpdirScoped } from "../fixture/fixture"
+import { provideInstance, provideTmpdirInstance, tmpdirScoped } from "../fixture/fixture"
import { testEffect } from "../lib/effect"
import { MessageID, SessionID } from "../../src/session/schema"
diff --git a/packages/opencode/test/provider/gitlab-duo.test.ts b/packages/opencode/test/provider/gitlab-duo.test.ts
index 9b5441fe2..a80ecf5ae 100644
--- a/packages/opencode/test/provider/gitlab-duo.test.ts
+++ b/packages/opencode/test/provider/gitlab-duo.test.ts
@@ -1,3 +1,4 @@
+export {}
// TODO: UNCOMMENT WHEN GITLAB SUPPORT IS COMPLETED
//
//
diff --git a/packages/opencode/test/server/project-init-git.test.ts b/packages/opencode/test/server/project-init-git.test.ts
index 25d706643..406b3d6d8 100644
--- a/packages/opencode/test/server/project-init-git.test.ts
+++ b/packages/opencode/test/server/project-init-git.test.ts
@@ -3,7 +3,6 @@ import { Effect } from "effect"
import path from "path"
import { GlobalBus } from "../../src/bus/global"
import { Snapshot } from "../../src/snapshot"
-import { InstanceBootstrap } from "../../src/project/bootstrap"
import { Instance } from "../../src/project/instance"
import { Server } from "../../src/server/server"
import { Filesystem } from "../../src/util/filesystem"
diff --git a/packages/opencode/test/session/compaction.test.ts b/packages/opencode/test/session/compaction.test.ts
index 1174cdf6a..aaf34348b 100644
--- a/packages/opencode/test/session/compaction.test.ts
+++ b/packages/opencode/test/session/compaction.test.ts
@@ -2,7 +2,6 @@ import { afterEach, describe, expect, mock, test } from "bun:test"
import { APICallError } from "ai"
import { Cause, Effect, Exit, Layer, ManagedRuntime } from "effect"
import * as Stream from "effect/Stream"
-import path from "path"
import z from "zod"
import { Bus } from "../../src/bus"
import { Config } from "../../src/config"
diff --git a/packages/opencode/test/session/prompt-effect.test.ts b/packages/opencode/test/session/prompt-effect.test.ts
index ec1a87e96..3963c815d 100644
--- a/packages/opencode/test/session/prompt-effect.test.ts
+++ b/packages/opencode/test/session/prompt-effect.test.ts
@@ -3,7 +3,6 @@ import { FetchHttpClient } from "effect/unstable/http"
import { expect } from "bun:test"
import { Cause, Effect, Exit, Fiber, Layer } from "effect"
import path from "path"
-import z from "zod"
import { Agent as AgentSvc } from "../../src/agent/agent"
import { Bus } from "../../src/bus"
import { Command } from "../../src/command"
diff --git a/packages/opencode/test/session/snapshot-tool-race.test.ts b/packages/opencode/test/session/snapshot-tool-race.test.ts
index a0ea47c89..e32919aed 100644
--- a/packages/opencode/test/session/snapshot-tool-race.test.ts
+++ b/packages/opencode/test/session/snapshot-tool-race.test.ts
@@ -49,7 +49,6 @@ import { Instruction } from "../../src/session/instruction"
import { SessionProcessor } from "../../src/session/processor"
import { SessionRunState } from "../../src/session/run-state"
import { SessionStatus } from "../../src/session/status"
-import { Shell } from "../../src/shell/shell"
import { Snapshot } from "../../src/snapshot"
import { ToolRegistry } from "../../src/tool/registry"
import { Truncate } from "../../src/tool/truncate"
diff --git a/packages/opencode/test/share/share-next.test.ts b/packages/opencode/test/share/share-next.test.ts
index 135d44db0..747541195 100644
--- a/packages/opencode/test/share/share-next.test.ts
+++ b/packages/opencode/test/share/share-next.test.ts
@@ -13,7 +13,6 @@ import { Provider } from "../../src/provider/provider"
import { Session } from "../../src/session"
import type { SessionID } from "../../src/session/schema"
import { ShareNext } from "../../src/share/share-next"
-import { Storage } from "../../src/storage/storage"
import { SessionShareTable } from "../../src/share/share.sql"
import { Database, eq } from "../../src/storage/db"
import { provideTmpdirInstance } from "../fixture/fixture"
diff --git a/packages/opencode/test/tool/question.test.ts b/packages/opencode/test/tool/question.test.ts
index eb69f1d96..629e5d2d2 100644
--- a/packages/opencode/test/tool/question.test.ts
+++ b/packages/opencode/test/tool/question.test.ts
@@ -1,6 +1,5 @@
import { describe, expect } from "bun:test"
import { Effect, Fiber, Layer } from "effect"
-import { Tool } from "../../src/tool/tool"
import { QuestionTool } from "../../src/tool/question"
import { Question } from "../../src/question"
import { SessionID, MessageID } from "../../src/session/schema"
diff --git a/packages/slack/src/index.ts b/packages/slack/src/index.ts
index d07e3dfb4..123710aa4 100644
--- a/packages/slack/src/index.ts
+++ b/packages/slack/src/index.ts
@@ -95,7 +95,7 @@ app.message(async ({ message, say }) => {
const shareResult = await client.session.share({ path: { id: createResult.data.id } })
if (!shareResult.error && shareResult.data) {
- const sessionUrl = shareResult.data.share?.url!
+ const sessionUrl = shareResult.data.share?.url
console.log("🔗 Session shared:", sessionUrl)
await app.client.chat.postMessage({ channel, thread_ts: thread, text: sessionUrl })
}
diff --git a/packages/ui/src/components/message-part.tsx b/packages/ui/src/components/message-part.tsx
index 48444cd01..81e6a52a2 100644
--- a/packages/ui/src/components/message-part.tsx
+++ b/packages/ui/src/components/message-part.tsx
@@ -37,7 +37,6 @@ import { type UiI18n, useI18n } from "../context/i18n"
import { BasicTool, GenericTool } from "./basic-tool"
import { Accordion } from "./accordion"
import { StickyAccordionHeader } from "./sticky-accordion-header"
-import { Card } from "./card"
import { Collapsible } from "./collapsible"
import { FileIcon } from "./file-icon"
import { Icon } from "./icon"
diff --git a/packages/ui/src/components/timeline-playground.stories.tsx b/packages/ui/src/components/timeline-playground.stories.tsx
index 98cdf8500..282592ff6 100644
--- a/packages/ui/src/components/timeline-playground.stories.tsx
+++ b/packages/ui/src/components/timeline-playground.stories.tsx
@@ -1,5 +1,5 @@
// @ts-nocheck
-import { createSignal, createMemo, createEffect, on, For, Show, Index, batch } from "solid-js"
+import { createSignal, createMemo, createEffect, on, For, Show, batch } from "solid-js"
import { createStore, produce } from "solid-js/store"
import type {
Message,
diff --git a/packages/ui/src/pierre/commented-lines.ts b/packages/ui/src/pierre/commented-lines.ts
index d2fa64866..e970b7841 100644
--- a/packages/ui/src/pierre/commented-lines.ts
+++ b/packages/ui/src/pierre/commented-lines.ts
@@ -1,5 +1,5 @@
import { type SelectedLineRange } from "@pierre/diffs"
-import { diffLineIndex, diffRowIndex, findDiffSide } from "./diff-selection"
+import { diffLineIndex, diffRowIndex } from "./diff-selection"
export type CommentSide = "additions" | "deletions"
diff --git a/sdks/vscode/src/extension.ts b/sdks/vscode/src/extension.ts
index 105ab0293..772da9cc2 100644
--- a/sdks/vscode/src/extension.ts
+++ b/sdks/vscode/src/extension.ts
@@ -78,7 +78,7 @@ export function activate(context: vscode.ExtensionContext) {
await fetch(`http://localhost:${port}/app`)
connected = true
break
- } catch (e) {}
+ } catch {}
tries--
} while (tries > 0)