135 lines
5.2 KiB
Markdown
135 lines
5.2 KiB
Markdown
# TypeScript Error Fix Plan - 100% Confidence Strategy
|
|
|
|
## Overview
|
|
Fix all 127 TypeScript compilation errors systematically, starting from core type definitions to implementation details.
|
|
|
|
## Phase 1: Core Type System Foundation (Critical - Block Everything)
|
|
|
|
### 1.1 Message Type System Fix
|
|
- [ ] Fix Message type union in `src/messages.ts` - Add missing 'message' property to ProgressMessage or remove from usage
|
|
- [ ] Add required properties (costUSD, durationMs, uuid) to message type factories in `src/utils/messageContextManager.ts`
|
|
- [ ] Fix query.ts message property access patterns (lines 203-210)
|
|
- [ ] Validate all Message type consumers after changes
|
|
|
|
### 1.2 Tool Interface Alignment
|
|
- [ ] Update Tool base interface in `src/Tool.ts` to match actual implementations
|
|
- [ ] Fix renderResultForAssistant return type to allow string | array
|
|
- [ ] Fix renderToolUseRejectedMessage signature to be consistent (0 args vs 2 args)
|
|
- [ ] Add optional setToolJSX to ToolUseContext interface
|
|
- [ ] Update ExtendedToolUseContext type definition
|
|
|
|
### 1.3 Key Type Extensions
|
|
- [ ] Add missing properties to Key type: `fn`, `home`, `end`, `space`
|
|
- [ ] Update ink types or create proper type augmentation file
|
|
- [ ] Verify all keyboard event handlers after Key type update
|
|
|
|
## Phase 2: Tool System Implementation (High Priority)
|
|
|
|
### 2.1 Fix Tool Implementations
|
|
- [ ] Fix ArchitectTool - Align call() and renderResultForAssistant signatures
|
|
- [ ] Fix FileReadTool - Handle string | array return type, add sharp dependency
|
|
- [ ] Fix FileWriteTool - Fix renderToolUseRejectedMessage signature
|
|
- [ ] Fix FileEditTool - Fix renderToolUseRejectedMessage signature
|
|
- [ ] Fix MultiEditTool - Fix applyEdit parameters and return properties
|
|
- [ ] Fix TaskTool - Align AsyncGenerator types with Tool interface
|
|
- [ ] Fix StickerRequestTool - Handle optional setToolJSX property
|
|
- [ ] Fix NotebookReadTool - Type assertion for unknown to string conversion
|
|
- [ ] Fix AskExpertModelTool - Fix debugLogger call signatures
|
|
|
|
### 2.2 Tool Prompt System
|
|
- [ ] Update all tool prompt.ts files to match new signatures
|
|
- [ ] Ensure async description functions are properly typed
|
|
|
|
## Phase 3: React 19 / Ink 6 Component Updates (Medium Priority)
|
|
|
|
### 3.1 Component Props Fix
|
|
- [ ] Fix agents.tsx - Remove 'key' from component props, pass as JSX attribute
|
|
- [ ] Fix AssistantToolUseMessage - Add required children prop
|
|
- [ ] Fix REPL.tsx - Add children to PermissionProvider and TodoProvider
|
|
- [ ] Fix all Text components missing children prop
|
|
|
|
### 3.2 Import Path Corrections
|
|
- [ ] Remove .tsx extensions from imports in Doctor.tsx
|
|
- [ ] Verify all import paths follow TypeScript conventions
|
|
|
|
## Phase 4: Service Layer Fixes (Medium Priority)
|
|
|
|
### 4.1 OpenAI Service Type Safety
|
|
- [ ] Add proper error type guards in openai.ts (lines 611, 743)
|
|
- [ ] Type API responses properly (lines 1291-1299)
|
|
- [ ] Create response type interfaces for OpenAI API
|
|
|
|
### 4.2 Config Service Overloads
|
|
- [ ] Fix getConfig overload in cli.tsx line 543
|
|
- [ ] Ensure boolean parameter properly narrows to true/false
|
|
|
|
## Phase 5: Hook System Updates (Low Priority)
|
|
|
|
### 5.1 Input Hook Fixes
|
|
- [ ] Remove unused @ts-expect-error in useDoublePress.ts
|
|
- [ ] Remove unused @ts-expect-error in useTextInput.ts
|
|
- [ ] Fix Key type usage in useTextInput.ts
|
|
- [ ] Fix Key type usage in useUnifiedCompletion.ts
|
|
|
|
### 5.2 Message Hook Updates
|
|
- [ ] Fix useUnifiedCompletion optional vs required properties
|
|
- [ ] Update messages.tsx type assertions
|
|
|
|
## Phase 6: Utility Functions (Low Priority)
|
|
|
|
### 6.1 Type Utilities
|
|
- [ ] Fix generators.ts void | Awaited<A> issue
|
|
- [ ] Fix thinking.ts enum value 'minimal'
|
|
- [ ] Clean up type assertions
|
|
|
|
### 6.2 Clean-up Tasks
|
|
- [ ] Remove all unused @ts-expect-error directives
|
|
- [ ] Fix entrypoints parameter counts
|
|
- [ ] Add isCustomCommand to proper type definition
|
|
|
|
## Phase 7: Dependency Management
|
|
|
|
### 7.1 Missing Dependencies
|
|
- [ ] Add sharp package for image processing
|
|
- [ ] Verify all package.json dependencies are installed
|
|
- [ ] Update @types packages if needed
|
|
|
|
## Phase 8: Validation & Testing
|
|
|
|
### 8.1 Compilation Verification
|
|
- [ ] Run `npx tsc --noEmit` after each phase
|
|
- [ ] Document remaining errors if any
|
|
- [ ] Ensure zero TypeScript errors
|
|
|
|
### 8.2 Runtime Testing
|
|
- [ ] Test basic CLI functionality
|
|
- [ ] Test each tool individually
|
|
- [ ] Test React components render correctly
|
|
- [ ] Verify no runtime regressions
|
|
|
|
## Execution Order & Time Estimates
|
|
|
|
1. **Phase 1**: 2 hours - Must complete first, blocks everything
|
|
2. **Phase 2**: 3 hours - Can parallelize tool fixes
|
|
3. **Phase 3**: 1 hour - Independent, can do in parallel with Phase 4
|
|
4. **Phase 4**: 1 hour - Independent service fixes
|
|
5. **Phase 5**: 30 minutes - Quick fixes
|
|
6. **Phase 6**: 30 minutes - Simple clean-up
|
|
7. **Phase 7**: 15 minutes - Package installation
|
|
8. **Phase 8**: 1 hour - Final validation
|
|
|
|
**Total Estimated Time**: 9 hours 15 minutes
|
|
|
|
## Success Criteria
|
|
- [ ] Zero TypeScript compilation errors
|
|
- [ ] All tools functioning correctly
|
|
- [ ] React components rendering without warnings
|
|
- [ ] No runtime regressions
|
|
- [ ] Clean git diff with minimal changes
|
|
|
|
## Risk Mitigation
|
|
- Create backup branch before starting
|
|
- Test each phase independently
|
|
- Use `git add -p` for selective staging
|
|
- Document any breaking changes
|
|
- Keep fixes minimal and focused |