claude-code-best/.hermes/plans/as-any-cleanup-brief.md

63 lines
3.0 KiB
Markdown

# `as any` Cleanup — Anthropic Decompilation Artifacts
## Scope
94 `as any` in Anthropic-original code (excluding API adapters, community code, generated types, test files, and .d.ts).
## Categories (for prioritization)
### A. Zod schema `.safeParse()` / `.parse()` — schema types lost in decompilation
Files: useIdeSelection.ts, useIdeLogging.ts, usePromptsFromClaudeInChrome.tsx, mcp.ts, cli.tsx, execAgentHook.ts
Pattern: `SomeSchema() as any` — the Zod schema type isn't inferred properly
Fix: Declare typed wrapper or use `z.input<>` / `z.infer<>`
### B. Message/attachment content access
Files: forkedAgent.ts, ccrSession.ts, companionReact.ts, messages.ts, sessionRestore.ts, searchExtraTools.ts, transcriptSearch.ts
Pattern: `(m as any).message.content`, `(m as any).event.type` — SDKMessage indexer doesn't cover these paths
Fix: Extend SDKMessage type to include known sub-properties
### C. `globalThis / global as any`
Files: main.tsx, performanceShim.ts, promptEngineeringAudit.runner.ts, cli.tsx
Pattern: `(globalThis as any).MACRO = ...`, `(global as any).require('inspector')`
Fix: Declare global types
### D. ComputerUse runtime feature detection
Files: escHotkey.ts, hostAdapter.ts, executorCrossPlatform.ts, drainRunLoop.ts, common.ts
Pattern: `(cu as any).hotkey`, `(requireComputerUseSwift() as any)` — optional native modules
Fix: Declare proper interfaces for optional modules
### E. ConsoleOAuthFlow config objects
File: ConsoleOAuthFlow.tsx (7)
Pattern: `{ modelType: 'anthropic' } as any`, `updateSettingsForSource(...) as any`
Fix: Type the settings update functions properly
### F. Theme/permission/config objects
Files: PermissionRequest.tsx, permissions.ts, auth.ts, outputStyles.ts
Pattern: `theme.permission as any`, `suggestions as any`, `style as any`
Fix: Extend existing type interfaces
### G. CLI/TUI key handlers
File: ultraplan/UltraplanChoiceDialog.tsx (4)
Pattern: `(key as any).wheelDown` — non-standard key properties
Fix: Extend Key type or use type guard
### H. Performance polyfill/shim
File: performanceShim.ts (4)
Pattern: Mocking browser performance API for server runtime
Fix: Probably unfixable — Bun doesn't have these APIs
### I. Dynamic imports / require() / execaSync
Files: main.tsx, execFileNoThrowPortable.ts, sideQuery.ts, notifier.ts
Pattern: `(execaSync as any)(...)`, `client.chat.completions.create(requestParams as any, ...)`
Fix: May need proper type imports or declarations
### J. Miscellaneous
Files: worktree.ts, drainRunLoop.ts, messageQueueManager.ts, deepLink, sliceAnsi, plans, textHighlighting, stats, etc.
Various patterns — each needs individual assessment
## Instructions for Codex
1. Read each file and determine if `as any` is: (a) fixable with proper types, (b) justified (runtime feature detection, performance polyfill, etc.), or (c) needs more upstream context
2. Propose priority order (fixable first)
3. For each fixable case, write the specific type declaration or code change
4. Output a markdown plan to docs/plans/as-any-cleanup.md
5. Do NOT execute — plan only