Skip to content

Commit ef585f5

Browse files
echobtfactorydroid
andauthored
feat(gui): add orchestration docs for 110 agent-based GUI analysis (#302)
This adds orchestration documentation to coordinate 10 agents analyzing 110 files/domains in the cortex-gui codebase. Each agent is assigned 11 specific files to analyze for: - TypeScript errors (TS6133, TS2322, TS2561, etc.) - CSS-in-JS issues (camelCase vs kebab-case in SolidJS) - Null/undefined access patterns - Memory leaks and cleanup issues - Tauri/IPC integration problems - Hydration issues Agents cover: - AGENT1: Core & App Shell - AGENT2: Editor Components - AGENT3: Terminal Components - AGENT4: Git Components - AGENT5: Settings Components - AGENT6: Testing & Coverage - AGENT7: UI & Extensions - AGENT8: Contexts & Hooks - AGENT9: AI & Chat - AGENT10: Remote, Viewers & Misc Co-authored-by: Droid Agent <droid@factory.ai>
1 parent 335dec4 commit ef585f5

File tree

11 files changed

+1894
-0
lines changed

11 files changed

+1894
-0
lines changed

cortex-gui/orchestration/AGENT1.md

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# AGENT 1 - Analyse des Composants Core et App Shell
2+
3+
## Mission
4+
Analyser les fichiers principaux de l'application pour détecter les erreurs TypeScript, problèmes de null/undefined, et problèmes d'hydratation SSR/Tauri.
5+
6+
## Fichiers à Analyser (11 fichiers)
7+
8+
### 1. `src/App.tsx`
9+
- **Tâche**: Vérifier la gestion des états initiaux et le rendu conditionnel
10+
- **Focus**:
11+
- Accès à des propriétés sur des valeurs potentiellement undefined
12+
- Problèmes de `.length` sur des arrays non vérifiés
13+
- Compatibilité Tauri (window.__TAURI__)
14+
- Gestion des erreurs dans les effects
15+
16+
### 2. `src/AppCore.tsx`
17+
- **Tâche**: Analyser le cycle de vie et les subscriptions
18+
- **Focus**:
19+
- Memory leaks potentiels dans les cleanup functions
20+
- Race conditions dans les async operations
21+
- Vérification des états avant accès aux propriétés
22+
23+
### 3. `src/AppShell.tsx`
24+
- **Tâche**: Vérifier l'intégration shell avec Tauri
25+
- **Focus**:
26+
- IPC calls et leur gestion d'erreur
27+
- Window state management
28+
- Event listeners cleanup
29+
30+
### 4. `src/index.tsx`
31+
- **Tâche**: Analyser le point d'entrée
32+
- **Focus**:
33+
- Hydratation SSR si applicable
34+
- Initialisation du root element
35+
- Error boundaries
36+
37+
### 5. `src/components/ErrorBoundary.tsx`
38+
- **Tâche**: Vérifier la robustesse du error handling
39+
- **Focus**:
40+
- Catch de toutes les erreurs
41+
- Recovery mechanisms
42+
- State restoration
43+
44+
### 6. `src/components/Layout.tsx` (112KB - fichier majeur)
45+
- **Tâche**: Analyse approfondie du layout principal
46+
- **Focus**:
47+
- Accès à des refs potentiellement null
48+
- Resize handlers et cleanup
49+
- Conditional rendering sécurisé
50+
- Performance issues (re-renders excessifs)
51+
52+
### 7. `src/context/LayoutContext.tsx`
53+
- **Tâche**: Analyser le contexte de layout
54+
- **Focus**:
55+
- Default values pour éviter undefined
56+
- Provider mounting order
57+
- State synchronization
58+
59+
### 8. `src/layout/index.ts`
60+
- **Tâche**: Vérifier les exports
61+
- **Focus**:
62+
- Circular dependencies
63+
- Type exports
64+
65+
### 9. `src/layout/engine/LayoutStore.ts`
66+
- **Tâche**: Analyser le store de layout
67+
- **Focus**:
68+
- Immutabilité des updates
69+
- Action handlers
70+
- Selectors safety
71+
72+
### 10. `src/layout/containers/Panel.tsx`
73+
- **Tâche**: Analyser le composant Panel
74+
- **Focus**:
75+
- Refs management
76+
- Event handling
77+
- Children validation
78+
79+
### 11. `src/layout/containers/SplitView.tsx`
80+
- **Tâche**: Analyser le split view
81+
- **Focus**:
82+
- Resize calculations
83+
- Children array access
84+
- DOM measurements
85+
86+
## Patterns d'Erreurs à Rechercher
87+
88+
```typescript
89+
// 1. Accès non sécurisé à .length
90+
items.length // Si items peut être undefined
91+
92+
// 2. Optional chaining manquant
93+
props.data.items // Devrait être props.data?.items
94+
95+
// 3. Non-null assertion dangereuse
96+
element!.focus() // Si element peut être null
97+
98+
// 4. Array methods sur undefined
99+
data.map(...) // Si data n'est pas initialisé
100+
101+
// 5. Destructuring sans defaults
102+
const { items } = props // Si items peut être undefined
103+
```
104+
105+
## Checklist d'Analyse
106+
107+
- [ ] Vérifier tous les accès `.length` et `.map()` sur des arrays
108+
- [ ] Vérifier l'utilisation de optional chaining (`?.`)
109+
- [ ] Vérifier les valeurs par défaut dans les destructurations
110+
- [ ] Vérifier les refs (null checks avant utilisation)
111+
- [ ] Vérifier les cleanup functions dans les effects
112+
- [ ] Vérifier la compatibilité Tauri (window.__TAURI__ guards)
113+
- [ ] Vérifier les types des props (strictNullChecks)
114+
- [ ] Identifier les imports non utilisés (TS6133)
115+
- [ ] Vérifier les conversions de types incompatibles (TS2322)
116+
117+
## Rapport Attendu
118+
119+
Pour chaque fichier, documenter:
120+
1. **Erreurs trouvées** avec numéro de ligne
121+
2. **Sévérité** (Critique/Majeure/Mineure)
122+
3. **Correction proposée**
123+
4. **Impact potentiel en runtime**
Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
# AGENT 10 - Analyse des Composants Remote, Viewers et Misc
2+
3+
## Mission
4+
Analyser les composants restants: remote connections, viewers, et composants divers pour détecter les erreurs TypeScript et problèmes d'intégration.
5+
6+
## Fichiers à Analyser (11 fichiers)
7+
8+
### 1. `src/components/remote/ContainerConnect.tsx`
9+
- **Erreur identifiée**: TS6133 - `canStop` non utilisé
10+
- **Focus**:
11+
- Container lifecycle
12+
- Connection state
13+
- Start/stop actions
14+
15+
### 2. `src/components/remote/DevContainerConfig.tsx`
16+
- **Erreur identifiée**: TS6133 - `createEffect` non utilisé
17+
- **Focus**:
18+
- Config editing
19+
- JSON schema validation
20+
- Preview
21+
22+
### 3. `src/components/remote/PortForwarding.tsx`
23+
- **Erreur identifiée**: TS6133 - `ForwardedPort` type importé mais non utilisé
24+
- **Focus**:
25+
- Port mapping
26+
- Auto-forward detection
27+
- Access control
28+
29+
### 4. `src/components/remote/TunnelManager.tsx`
30+
- **Erreur identifiée**: TS6133 - `onMount` non utilisé
31+
- **Focus**:
32+
- Tunnel creation
33+
- Connection status
34+
- Reconnection
35+
36+
### 5. `src/components/remote/WSLConnect.tsx`
37+
- **Erreurs identifiées**:
38+
- TS6133: `createEffect`, `FiCheck` non utilisés
39+
- **Focus**:
40+
- WSL distro selection
41+
- Connection handling
42+
- Path mapping
43+
44+
### 6. `src/components/viewers/ImageViewer.tsx`
45+
- **Erreur identifiée**: TS6133 - `For` importé mais non utilisé
46+
- **Focus**:
47+
- Image display
48+
- Zoom/pan
49+
- Format support
50+
51+
### 7. `src/components/viewers/SVGPreview.tsx`
52+
- **Erreurs identifiées**:
53+
- TS6133: `FiRefreshCw`, `monacoInstance`, `isEditorReady` non utilisés
54+
- TS18047: `editorInstance` is possibly 'null'
55+
- **Focus**:
56+
- SVG rendering
57+
- Live preview
58+
- Editor integration
59+
60+
### 8. `src/components/VoiceInput.tsx`
61+
- **Erreurs identifiées**:
62+
- TS6133: `onCleanup`, `startListening`, `stopListening` non utilisés
63+
- **Focus**:
64+
- Speech recognition
65+
- Audio handling
66+
- Transcription
67+
68+
### 9. `src/components/ToolchainSelector.tsx`
69+
- **Erreurs identifiées**:
70+
- TS6133: Multiple icons non utilisés:
71+
- `FiFolder`, `FiPackage`, `FiCode`, `FiTerminal`, `FiExternalLink`
72+
- TS6133: `onCleanup` non utilisé
73+
- **Focus**:
74+
- Toolchain detection
75+
- Selection UI
76+
- Version display
77+
78+
### 10. `src/components/tools/DesignSystemCard.tsx`
79+
- **Erreurs identifiées**:
80+
- TS6133: `FiLoader`, `FiChevronDown` non utilisés
81+
- **Focus**:
82+
- Design system display
83+
- Component showcase
84+
- Props documentation
85+
86+
### 11. `src/components/tools/PlanCard.tsx`
87+
- **Erreurs identifiées**:
88+
- TS6133: `FiAlertTriangle`, `FiLayers` non utilisés
89+
- **Focus**:
90+
- Plan display
91+
- Step visualization
92+
- Status indicators
93+
94+
## Pattern: Possibly Null Access
95+
96+
```typescript
97+
// PROBLÈME
98+
editorInstance.getValue() // Error: editorInstance is possibly 'null'
99+
100+
// SOLUTION 1: Optional chaining
101+
editorInstance?.getValue()
102+
103+
// SOLUTION 2: Guard clause
104+
if (!editorInstance) return
105+
editorInstance.getValue()
106+
107+
// SOLUTION 3: Non-null assertion (si vraiment sûr)
108+
editorInstance!.getValue()
109+
110+
// SOLUTION 4: Default value
111+
(editorInstance ?? fallbackEditor).getValue()
112+
```
113+
114+
## Pattern: Type Imports Non Utilisés
115+
116+
```typescript
117+
// PROBLÈME
118+
import { ForwardedPort } from './types'
119+
// Type importé mais jamais utilisé
120+
121+
// SOLUTIONS:
122+
// 1. Supprimer si vraiment pas besoin
123+
// 2. Utiliser import type si c'est juste pour le typage
124+
import type { ForwardedPort } from './types'
125+
// 3. L'utiliser dans une signature de fonction
126+
function handlePort(port: ForwardedPort) { ... }
127+
```
128+
129+
## Pattern: Icons Non Utilisés (Commun dans ce projet)
130+
131+
```typescript
132+
// PROBLÈME: Beaucoup d'imports d'icons non utilisés
133+
import {
134+
FiFolder, // Non utilisé
135+
FiPackage, // Non utilisé
136+
FiCheck // Utilisé
137+
} from 'solid-icons/fi'
138+
139+
// SOLUTION: Nettoyer les imports
140+
import { FiCheck } from 'solid-icons/fi'
141+
142+
// OU commenter pour usage futur
143+
// import { FiFolder, FiPackage } from 'solid-icons/fi' // TODO: Use in v2
144+
```
145+
146+
## Pattern: Effect/Cleanup Non Utilisés
147+
148+
```typescript
149+
// PROBLÈME
150+
import { createEffect, onCleanup } from 'solid-js'
151+
// createEffect non utilisé
152+
153+
// CELA INDIQUE SOUVENT:
154+
// 1. Code incomplet - effect prévu mais pas implémenté
155+
// 2. Refactoring incomplet - effect supprimé mais import reste
156+
// 3. Feature désactivée temporairement
157+
158+
// VÉRIFIER: Y a-t-il un effect manquant?
159+
// Par exemple pour sync avec remote state
160+
createEffect(() => {
161+
// TODO: Sync container state
162+
})
163+
```
164+
165+
## Remote Connection Best Practices
166+
167+
```typescript
168+
// VÉRIFIER: Error handling pour connections
169+
async function connectToContainer() {
170+
try {
171+
const connection = await establishConnection()
172+
setConnected(true)
173+
} catch (error) {
174+
if (error.code === 'ECONNREFUSED') {
175+
// Container not running
176+
} else if (error.code === 'ETIMEDOUT') {
177+
// Network issue
178+
}
179+
setError(error)
180+
}
181+
}
182+
183+
// VÉRIFIER: Cleanup on disconnect
184+
onCleanup(() => {
185+
if (connection) {
186+
connection.close()
187+
}
188+
})
189+
```
190+
191+
## Checklist d'Analyse
192+
193+
- [ ] Vérifier les accès potentiellement null
194+
- [ ] Vérifier les imports de types non utilisés
195+
- [ ] Vérifier les imports d'icons non utilisés
196+
- [ ] Vérifier les effects/cleanup manquants
197+
- [ ] Vérifier les connections lifecycle
198+
- [ ] Vérifier les error handling
199+
- [ ] Vérifier les cleanup functions
200+
- [ ] Vérifier les path handling (cross-platform)
201+
202+
## Rapport Attendu
203+
204+
Pour chaque fichier, documenter:
205+
1. **Null safety issues** à corriger
206+
2. **Imports à nettoyer**
207+
3. **Code incomplet** identifié
208+
4. **Connection handling** à améliorer

0 commit comments

Comments
 (0)