summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorKit Langton <[email protected]>2026-04-16 15:27:53 -0400
committerGitHub <[email protected]>2026-04-16 19:27:53 +0000
commit2fe9d9447070f6967d80b0a8f74239e1969d9e1c (patch)
treeaf5c8c4c2d4f6d87e8040bbb42273c468007ff91
parent219b473e660994ac69a0c5d753ac65da951f3bf8 (diff)
downloadopencode-2fe9d9447070f6967d80b0a8f74239e1969d9e1c.tar.gz
opencode-2fe9d9447070f6967d80b0a8f74239e1969d9e1c.zip
fix: remove 8 more unnecessary `as any` casts in opencode core (#22877)
-rw-r--r--packages/opencode/src/acp/agent.ts2
-rw-r--r--packages/opencode/src/cli/cmd/providers.ts4
-rw-r--r--packages/opencode/src/cli/cmd/tui/win32.ts5
-rw-r--r--packages/opencode/src/lsp/lsp.ts6
-rw-r--r--packages/opencode/src/mcp/mcp.ts2
-rw-r--r--packages/opencode/src/provider/sdk/copilot/responses/openai-responses-language-model.ts4
-rw-r--r--packages/opencode/src/provider/transform.ts2
-rw-r--r--packages/opencode/src/util/effect-zod.ts4
8 files changed, 16 insertions, 13 deletions
diff --git a/packages/opencode/src/acp/agent.ts b/packages/opencode/src/acp/agent.ts
index 9388c87f1..5d8c723ea 100644
--- a/packages/opencode/src/acp/agent.ts
+++ b/packages/opencode/src/acp/agent.ts
@@ -178,7 +178,7 @@ export namespace ACP {
})
for await (const event of events.stream) {
if (this.eventAbort.signal.aborted) return
- const payload = (event as any)?.payload
+ const payload = event?.payload
if (!payload) continue
await this.handleEvent(payload as Event).catch((error) => {
log.error("failed to handle event", { error, type: payload.type })
diff --git a/packages/opencode/src/cli/cmd/providers.ts b/packages/opencode/src/cli/cmd/providers.ts
index 4bc3f0ea6..e2eb0b65a 100644
--- a/packages/opencode/src/cli/cmd/providers.ts
+++ b/packages/opencode/src/cli/cmd/providers.ts
@@ -297,7 +297,9 @@ export const ProvidersLoginCommand = cmd({
prompts.intro("Add credential")
if (args.url) {
const url = args.url.replace(/\/+$/, "")
- const wellknown = await fetch(`${url}/.well-known/opencode`).then((x) => x.json() as any)
+ const wellknown = (await fetch(`${url}/.well-known/opencode`).then((x) => x.json())) as {
+ auth: { command: string[]; env: string }
+ }
prompts.log.info(`Running \`${wellknown.auth.command.join(" ")}\``)
const proc = Process.spawn(wellknown.auth.command, {
stdout: "pipe",
diff --git a/packages/opencode/src/cli/cmd/tui/win32.ts b/packages/opencode/src/cli/cmd/tui/win32.ts
index 23e9f4485..1aaa80aec 100644
--- a/packages/opencode/src/cli/cmd/tui/win32.ts
+++ b/packages/opencode/src/cli/cmd/tui/win32.ts
@@ -1,4 +1,5 @@
import { dlopen, ptr } from "bun:ffi"
+import type { ReadStream } from "node:tty"
const STD_INPUT_HANDLE = -10
const ENABLE_PROCESSED_INPUT = 0x0001
@@ -71,7 +72,7 @@ export function win32InstallCtrlCGuard() {
if (!load()) return
if (unhook) return unhook
- const stdin = process.stdin as any
+ const stdin = process.stdin as ReadStream
const original = stdin.setRawMode
const handle = k32!.symbols.GetStdHandle(STD_INPUT_HANDLE)
@@ -93,7 +94,7 @@ export function win32InstallCtrlCGuard() {
setImmediate(enforce)
}
- let wrapped: ((mode: boolean) => unknown) | undefined
+ let wrapped: ReadStream["setRawMode"] | undefined
if (typeof original === "function") {
wrapped = (mode: boolean) => {
diff --git a/packages/opencode/src/lsp/lsp.ts b/packages/opencode/src/lsp/lsp.ts
index 2c0982eca..d4d1e7563 100644
--- a/packages/opencode/src/lsp/lsp.ts
+++ b/packages/opencode/src/lsp/lsp.ts
@@ -465,12 +465,12 @@ export const layer = Layer.effect(
direction: "callHierarchy/incomingCalls" | "callHierarchy/outgoingCalls",
) {
const results = yield* run(input.file, async (client) => {
- const items = (await client.connection
- .sendRequest("textDocument/prepareCallHierarchy", {
+ const items = await client.connection
+ .sendRequest<unknown[] | null>("textDocument/prepareCallHierarchy", {
textDocument: { uri: pathToFileURL(input.file).href },
position: { line: input.line, character: input.character },
})
- .catch(() => [])) as any[]
+ .catch(() => [] as unknown[])
if (!items?.length) return []
return client.connection.sendRequest(direction, { item: items[0] }).catch(() => [])
})
diff --git a/packages/opencode/src/mcp/mcp.ts b/packages/opencode/src/mcp/mcp.ts
index 6666e0854..61201ce76 100644
--- a/packages/opencode/src/mcp/mcp.ts
+++ b/packages/opencode/src/mcp/mcp.ts
@@ -531,7 +531,7 @@ export const layer = Layer.effect(
Object.values(s.clients),
(client) =>
Effect.gen(function* () {
- const pid = (client.transport as any)?.pid
+ const pid = client.transport instanceof StdioClientTransport ? client.transport.pid : null
if (typeof pid === "number") {
const pids = yield* descendants(pid)
for (const dpid of pids) {
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 92c8fd857..250d1f6f3 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
@@ -354,7 +354,7 @@ export class OpenAIResponsesLanguageModel implements LanguageModelV3 {
details: "flex processing is only available for o3, o4-mini, and gpt-5 models",
})
// Remove from args if not supported
- delete (baseArgs as any).service_tier
+ baseArgs.service_tier = undefined
}
// Validate priority processing support
@@ -366,7 +366,7 @@ export class OpenAIResponsesLanguageModel implements LanguageModelV3 {
"priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported",
})
// Remove from args if not supported
- delete (baseArgs as any).service_tier
+ baseArgs.service_tier = undefined
}
const {
diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts
index 66e87fb3b..e527251b0 100644
--- a/packages/opencode/src/provider/transform.ts
+++ b/packages/opencode/src/provider/transform.ts
@@ -193,7 +193,7 @@ function normalizeMessages(
providerOptions: {
...msg.providerOptions,
openaiCompatible: {
- ...(msg.providerOptions as any)?.openaiCompatible,
+ ...msg.providerOptions?.openaiCompatible,
[field]: reasoningText,
},
},
diff --git a/packages/opencode/src/util/effect-zod.ts b/packages/opencode/src/util/effect-zod.ts
index 553d7a065..6e99fd468 100644
--- a/packages/opencode/src/util/effect-zod.ts
+++ b/packages/opencode/src/util/effect-zod.ts
@@ -77,8 +77,8 @@ function union(ast: SchemaAST.Union): z.ZodTypeAny {
if (items.length === 1) return items[0]
if (items.length < 2) return fail(ast)
- const discriminator = (ast as any).annotations?.discriminator
- if (discriminator) {
+ const discriminator = ast.annotations?.discriminator
+ if (typeof discriminator === "string") {
return z.discriminatedUnion(discriminator, items as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]])
}