feat: 全面清理类型错误 — tsc 零错误,any 标注全部消除

- 修复所有 33 个原始 tsc 编译错误(ink JSX 声明、类型不匹配、null check 等)
- 清理 176 处 `: any` 类型标注,全部替换为具体推断类型
- 修复清理过程中引入的 41 个回归错误
- 最终结果:0 tsc 错误,0 个非注释 any 标注
- Build 验证通过(25.75MB bundle)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
claude-code-best
2026-04-01 01:00:10 +08:00
parent 58f1bd49cb
commit fac9341e73
129 changed files with 555 additions and 252 deletions

View File

@@ -1,3 +1,3 @@
// Auto-generated stub — replace with real implementation
export {};
export const getCachedMCConfig: any = (() => {}) as any;
export const getCachedMCConfig: () => { enabled?: boolean; systemPromptSuggestSummaries?: boolean; supportedModels?: string[]; [key: string]: unknown } = () => ({});

View File

@@ -1,8 +1,22 @@
// Auto-generated stub — replace with real implementation
export {};
export const isReactiveOnlyMode: any = (() => {}) as any;
export const reactiveCompactOnPromptTooLong: any = (() => {}) as any;
export const isReactiveCompactEnabled: any = (() => {}) as any;
export const isWithheldPromptTooLong: any = (() => {}) as any;
export const isWithheldMediaSizeError: any = (() => {}) as any;
export const tryReactiveCompact: any = (() => {}) as any;
import type { Message } from 'src/types/message';
import type { CompactionResult } from './compact.js';
export const isReactiveOnlyMode: () => boolean = () => false;
export const reactiveCompactOnPromptTooLong: (
messages: Message[],
cacheSafeParams: Record<string, unknown>,
options: { customInstructions?: string; trigger?: string },
) => Promise<{ ok: boolean; reason?: string; result?: CompactionResult }> = async () => ({ ok: false });
export const isReactiveCompactEnabled: () => boolean = () => false;
export const isWithheldPromptTooLong: (message: Message) => boolean = () => false;
export const isWithheldMediaSizeError: (message: Message) => boolean = () => false;
export const tryReactiveCompact: (params: {
hasAttempted: boolean;
querySource: string;
aborted: boolean;
messages: Message[];
cacheSafeParams: Record<string, unknown>;
}) => Promise<CompactionResult | null> = async () => null;

View File

@@ -1,7 +1,17 @@
// Auto-generated stub — replace with real implementation
export {};
export const isSnipMarkerMessage: any = (() => {}) as any;
export const snipCompactIfNeeded: any = (() => {}) as any;
export const isSnipRuntimeEnabled: any = (() => {}) as any;
export const shouldNudgeForSnips: any = (() => {}) as any;
export const SNIP_NUDGE_TEXT: any = (() => {}) as any;
import type { Message } from 'src/types/message';
export const isSnipMarkerMessage: (message: Message) => boolean = () => false;
export const snipCompactIfNeeded: (
messages: Message[],
options?: { force?: boolean },
) => { messages: Message[]; executed: boolean; tokensFreed: number; boundaryMessage?: Message } = (messages) => ({
messages,
executed: false,
tokensFreed: 0,
});
export const isSnipRuntimeEnabled: () => boolean = () => false;
export const shouldNudgeForSnips: (messages: Message[]) => boolean = () => false;
export const SNIP_NUDGE_TEXT: string = '';

View File

@@ -1,4 +1,7 @@
// Auto-generated stub — replace with real implementation
export {};
export const isSnipBoundaryMessage: any = (() => {}) as any;
export const projectSnippedView: any = (() => {}) as any;
import type { Message } from 'src/types/message';
export const isSnipBoundaryMessage: (message: Message) => boolean = () => false;
export const projectSnippedView: (messages: Message[]) => Message[] = (messages) => messages;