fix(cli): resolve repo-wide tsc --noEmit type errors (#512)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Trevin Chow
2026-04-05 11:30:36 -07:00
committed by GitHub
parent bdeb7935fc
commit 3fa0c815b2
6 changed files with 32 additions and 39 deletions

View File

@@ -3,7 +3,7 @@ import os from "os"
import path from "path"
import { loadClaudePlugin } from "../parsers/claude"
import { targets, validateScope } from "../targets"
import type { PermissionMode } from "../converters/claude-to-opencode"
import type { ClaudeToOpenCodeOptions, PermissionMode } from "../converters/claude-to-opencode"
import { ensureCodexAgentsFile } from "../utils/codex-agents"
import { expandHome, resolveTargetHome } from "../utils/resolve-home"
import { resolveTargetOutputRoot } from "../utils/resolve-output"
@@ -92,7 +92,7 @@ export default defineCommand({
const openclawHome = resolveTargetHome(args.openclawHome, path.join(os.homedir(), ".openclaw", "extensions"))
const qwenHome = resolveTargetHome(args.qwenHome, path.join(os.homedir(), ".qwen", "extensions"))
const options = {
const options: ClaudeToOpenCodeOptions = {
agentMode: String(args.agentMode) === "primary" ? "primary" : "subagent",
inferTemperature: Boolean(args.inferTemperature),
permissions: permissions as PermissionMode,

View File

@@ -6,7 +6,7 @@ import { fileURLToPath } from "url"
import { loadClaudePlugin } from "../parsers/claude"
import { targets, validateScope } from "../targets"
import { pathExists } from "../utils/files"
import type { PermissionMode } from "../converters/claude-to-opencode"
import type { ClaudeToOpenCodeOptions, PermissionMode } from "../converters/claude-to-opencode"
import { ensureCodexAgentsFile } from "../utils/codex-agents"
import { expandHome, resolveTargetHome } from "../utils/resolve-home"
import { resolveTargetOutputRoot } from "../utils/resolve-output"
@@ -103,7 +103,7 @@ export default defineCommand({
const openclawHome = resolveTargetHome(args.openclawHome, path.join(os.homedir(), ".openclaw", "extensions"))
const qwenHome = resolveTargetHome(args.qwenHome, path.join(os.homedir(), ".qwen", "extensions"))
const options = {
const options: ClaudeToOpenCodeOptions = {
agentMode: String(args.agentMode) === "primary" ? "primary" : "subagent",
inferTemperature: Boolean(args.inferTemperature),
permissions: permissions as PermissionMode,

View File

@@ -350,7 +350,7 @@ function applyPermissions(
}
}
const permission: Record<string, "allow" | "deny"> = {}
const permission: Record<string, "allow" | "deny" | Record<string, "allow" | "deny">> = {}
const tools: Record<string, boolean> = {}
for (const tool of sourceTools) {
@@ -369,7 +369,7 @@ function applyPermissions(
for (const pattern of toolPatterns) {
patternPermission[pattern] = "allow"
}
;(permission as Record<string, typeof patternPermission>)[tool] = patternPermission
;(permission)[tool] = patternPermission
} else {
permission[tool] = enabled.has(tool) ? "allow" : "deny"
}
@@ -383,7 +383,7 @@ function applyPermissions(
for (const pattern of toolPatterns) {
patternPermission[pattern] = "allow"
}
;(permission as Record<string, typeof patternPermission>)[tool] = patternPermission
;(permission)[tool] = patternPermission
}
}
@@ -399,8 +399,8 @@ function applyPermissions(
for (const pattern of combined) {
combinedPermission[pattern] = "allow"
}
;(permission as Record<string, typeof combinedPermission>).edit = combinedPermission
;(permission as Record<string, typeof combinedPermission>).write = combinedPermission
;(permission).edit = combinedPermission
;(permission).write = combinedPermission
}
config.permission = permission

View File

@@ -1,14 +1,4 @@
import type { ClaudePlugin } from "../types/claude"
import type { OpenCodeBundle } from "../types/opencode"
import type { CodexBundle } from "../types/codex"
import type { DroidBundle } from "../types/droid"
import type { PiBundle } from "../types/pi"
import type { CopilotBundle } from "../types/copilot"
import type { GeminiBundle } from "../types/gemini"
import type { KiroBundle } from "../types/kiro"
import type { WindsurfBundle } from "../types/windsurf"
import type { OpenClawBundle } from "../types/openclaw"
import type { QwenBundle } from "../types/qwen"
import { convertClaudeToOpenCode, type ClaudeToOpenCodeOptions } from "../converters/claude-to-opencode"
import { convertClaudeToCodex } from "../converters/claude-to-codex"
import { convertClaudeToDroid } from "../converters/claude-to-droid"
@@ -72,62 +62,62 @@ export const targets: Record<string, TargetHandler> = {
name: "opencode",
implemented: true,
convert: convertClaudeToOpenCode,
write: writeOpenCodeBundle,
write: writeOpenCodeBundle as TargetHandler["write"],
},
codex: {
name: "codex",
implemented: true,
convert: convertClaudeToCodex as TargetHandler<CodexBundle>["convert"],
write: writeCodexBundle as TargetHandler<CodexBundle>["write"],
convert: convertClaudeToCodex as TargetHandler["convert"],
write: writeCodexBundle as TargetHandler["write"],
},
droid: {
name: "droid",
implemented: true,
convert: convertClaudeToDroid as TargetHandler<DroidBundle>["convert"],
write: writeDroidBundle as TargetHandler<DroidBundle>["write"],
convert: convertClaudeToDroid as TargetHandler["convert"],
write: writeDroidBundle as TargetHandler["write"],
},
pi: {
name: "pi",
implemented: true,
convert: convertClaudeToPi as TargetHandler<PiBundle>["convert"],
write: writePiBundle as TargetHandler<PiBundle>["write"],
convert: convertClaudeToPi as TargetHandler["convert"],
write: writePiBundle as TargetHandler["write"],
},
copilot: {
name: "copilot",
implemented: true,
convert: convertClaudeToCopilot as TargetHandler<CopilotBundle>["convert"],
write: writeCopilotBundle as TargetHandler<CopilotBundle>["write"],
convert: convertClaudeToCopilot as TargetHandler["convert"],
write: writeCopilotBundle as TargetHandler["write"],
},
gemini: {
name: "gemini",
implemented: true,
convert: convertClaudeToGemini as TargetHandler<GeminiBundle>["convert"],
write: writeGeminiBundle as TargetHandler<GeminiBundle>["write"],
convert: convertClaudeToGemini as TargetHandler["convert"],
write: writeGeminiBundle as TargetHandler["write"],
},
kiro: {
name: "kiro",
implemented: true,
convert: convertClaudeToKiro as TargetHandler<KiroBundle>["convert"],
write: writeKiroBundle as TargetHandler<KiroBundle>["write"],
convert: convertClaudeToKiro as TargetHandler["convert"],
write: writeKiroBundle as TargetHandler["write"],
},
windsurf: {
name: "windsurf",
implemented: true,
defaultScope: "global",
supportedScopes: ["global", "workspace"],
convert: convertClaudeToWindsurf as TargetHandler<WindsurfBundle>["convert"],
write: writeWindsurfBundle as TargetHandler<WindsurfBundle>["write"],
convert: convertClaudeToWindsurf as TargetHandler["convert"],
write: writeWindsurfBundle as TargetHandler["write"],
},
openclaw: {
name: "openclaw",
implemented: true,
convert: convertClaudeToOpenClaw as TargetHandler<OpenClawBundle>["convert"],
write: writeOpenClawBundle as TargetHandler<OpenClawBundle>["write"],
convert: convertClaudeToOpenClaw as TargetHandler["convert"],
write: writeOpenClawBundle as TargetHandler["write"],
},
qwen: {
name: "qwen",
implemented: true,
convert: convertClaudeToQwen as TargetHandler<QwenBundle>["convert"],
write: writeQwenBundle as TargetHandler<QwenBundle>["write"],
convert: convertClaudeToQwen as TargetHandler["convert"],
write: writeQwenBundle as TargetHandler["write"],
},
}