Files
kxkm_clown/TODO.md
T
L'électron rare d2fed6087a feat: Add MCP server and smoke test scripts
- Introduced `mcp-server.js` to expose KXKM personas as MCP tools, supporting chat, persona listing, web search, and status checks.
- Implemented `mcp-server-smoke.js` for testing the MCP server functionality, ensuring compatibility with both new and legacy message formats.
- Created `setup-voice-clone.sh` for managing voice cloning environment setup, including bootstrapping, sample generation, and smoke testing.
- Added `state.json` to track project status and task outputs for various batches.
- Generated summary files for deep cycle and overall project status, capturing performance and security findings.
2026-03-19 16:18:44 +01:00

12 KiB
Raw Blame History

TODO

P0 Critical (sécurité & stabilité)

  • Fix bash injection dans node-engine-runtimes.js — validation runtimeId/nodeType + timeout 30min
  • Ajouter timeout sur les appels Ollama — 15s metadata, 5min chat streaming
  • Validation des entrées sur les messages WebSocket — 64KB max frame, 8192 chars text, type checks
  • Rate limiting par user/IP sur chat — rate-limit.js + 30 msg/min par IP dans WebSocket
  • escapeHtml dédupliqué → utils.js
  • normalizeAuth consolidé dans admin-api.js
  • ensureSeedGraphs guard flag ajouté
  • finishRun comptage d'artifacts sans JSON parse
  • recoverRunnableRuns double-read corrigé

P1 V1 Quality

  • Migrer vers le SDK officiel ollama-js — fait en P7 (ollama.js réécrit)
  • Ajouter un audit logging pour les actions admin — audit-log.js + intégré dans http-api.js et server.js
  • Implémenter l'analyse image/audio dans attachment-pipeline.js — stubs factory avec adapter slot
  • Corriger la validation d'origine postMessage — déjà en place (personas.js:1476)
  • Ajouter la déduplication de requêtes dans admin-api.js — fait en P7 (deduplicatedFetch)
  • Node Engine : validation de tri topologique — déjà en place (cycle detection dans runner)
  • Node Engine : timeout d'exécution par nœud — 10min default via NODE_ENGINE_STEP_TIMEOUT_MS

P2 V2 Domaines

  • Schéma Postgres + migrations + repos typés (packages/storage) — session, persona, graph, run repos
  • Module auth réel (packages/auth) — crypto.scrypt, token gen, extractSessionId, validateLoginInput
  • Logique domaine chat (packages/chat-domain) — ChatMessage, ChatSession, compactHistory, channel validation
  • Logique domaine persona (packages/persona-domain) — validatePersonaUpdate, aggregateFeedback, computePersonaDiff
  • Brancher les repos Postgres dans apps/api — async createApp(), fallback in-memory si pas de DATABASE_URL

P3 Node Engine V2

  • Porter registry → packages/node-engine (15 node types, 7 familles)
  • Porter graph ops (topologicalSort, validateEdgeContracts, collectNodeInputs)
  • Porter run state machine (createRun, RunStep, resolveFinalStatus)
  • Porter queue logic (createQueueState, enqueue, dequeue, canDequeue)
  • Runtime definitions (5 runtimes)
  • Isoler les runtimes avec sandboxing approprié — fait en P8 (sandbox.ts)
  • Adaptateurs d'entraînement réels (LoRA, QLoRA, SFT) — fait en P8 (training.ts)
  • Brancher le runner V2 dans apps/worker — poll loop, stub executors, graceful shutdown

P4 Frontend V2

  • API client centralisé (api.ts)
  • 9 composants React (Header, Login, Nav, PersonaList, PersonaDetail, NodeEngineOverview, GraphDetail, RunStatus, ChannelList)
  • Routing hash-based + responsive CSS
  • Interface chat React (WebSocket live) — fait en P7 (Chat.tsx + useWebSocket.ts)
  • Éditeur visuel Node Engine (React Flow) — fait en P7 (NodeEditor.tsx + EngineNode.tsx)

P5 TUI & Ops

  • TUI health-check (V1+V2+Ollama+disk+memory)
  • TUI queue-viewer (runs, statuses)
  • TUI persona-manager (overview)
  • Log rotation (--dry-run, --max-age-days)
  • Packages/tui: ansi, statusDot, formatTable, drawBox

P6 Migration

  • Matrice de parité V1 → V2 — scripts/parity-check.js (persona, graph, channel, API shape checks)
  • Scripts de migration de données — scripts/migrate-v1-to-v2.js (personas, graphs, runs → Postgres, --dry-run support)
  • Smoke tests pour V2 — scripts/smoke-v2.js (22 tests, 5 catégories, npm run smoke:v2)
  • Procédure de rollback — scripts/rollback-v2.js (drop/truncate tables with confirmation, --yes, --tables filter)

P0+ Sécurité V1 (deep analyse 2026-03-16)

  • Path traversal dans storage.js — sanitisation session IDs + boundary check memory paths
  • Path traversal dans persona-registry.js / persona-store.jssafeFsId() helper
  • Path traversal dans attachment-store.js — sanitisation IDs + boundary check
  • SSRF dans web-tools.js — blocage localhost, IPs privées, .local/.internal
  • Response body limit dans web-tools.js — truncation 2 MB
  • Log injection dans storage.js — sanitisation paramètre role
  • Crash JSONL corrompu dans storage.js — try/catch par ligne
  • Map mutation during iteration dans sessions.js — collect then process
  • Session leak /msg dans commands.js — clé stable au lieu de Date.now()
  • Unbounded userRateLimits dans chat-routing.js — pruning > 200 entries
  • Session pruning O(n) dans admin-session.js — throttle 60s

P7 Intégration avancée

  • Migrer vers ollama-js SDK officiel — ollama.js réécrit avec Ollama class, même interface
  • Chat WebSocket React live — hook useWebSocket + composant Chat IRC, auto-reconnect
  • Éditeur visuel Node Engine avec React Flow — NodeEditor.tsx + EngineNode.tsx, 7 familles colorées
  • Déduplication requêtes GET dans admin-api.jsdeduplicatedFetch transparent
  • Repos Postgres pour persona sources/feedback/proposals — 3 tables + repos + fallback in-memory
  • CI/CD GitHub Actions — .github/workflows/ci.yml (check V1+V2)
  • Deep analyse finale V1+V2 — 14 modules V1 vérifiés, 3 fixes TS V2, intégrité confirmée

P8 Production Readiness

  • Adaptateurs training réels (TRL + Unsloth pour LoRA/DPO) — packages/node-engine/src/training.ts + worker intégré
  • Sandboxing runtimes Node Engine (containers/VM) — packages/node-engine/src/sandbox.ts (none/subprocess/container)
  • Turborepo pour build orchestration monorepo — turbo.json + scripts alignés + CI mis à jour
  • Tests unitaires V2 avec node:test + supertest — 102 tests, 46 suites, 6 packages + API integration
  • Tests React avec Vitest + RTL — 33 tests, 6 composants (Header, Login, Nav, PersonaList, RunStatus, ChannelList)
  • Créer le repo GitHub privé — https://github.com/electron-rare/kxkm_clown

P9 Code Quality (simplify review)

  • Triple filter → single-pass loop dans node-engine.js:deriveAsyncMeta
  • Duplicate sanitization extraite dans attachment-store.js:sanitizeId
  • Double loadModelIndex() éliminé dans node-engine-store.js:registerDeployment

P10 Lot 11 — Consolidation & Feature Parity

Phase A — Analyse & Recherche

  • Deep analyse code V1+V2 (agent en cours)
  • Veille OSS mise à jour (agent en cours)
  • Recherche HuggingFace (agent en cours)

Phase B — Correctifs sécurité (deep analyse)

  • P0 SEC-01 Path traversal node-engine-runner.js — reject absolute paths + rootDir boundary check
  • P0 SEC-04 V2 login role self-assignment — viewer par défaut, admin via ADMIN_TOKEN
  • P1 BUG-06 Health endpoint leaking DATABASE_URL — remplacé par storageMode string
  • P1 BUG-02 Timeout promise leak node-engine-runner.js — AbortSignal cancel
  • P1 SEC-03 Attachments sans auth — ajout requireAdminNetwork middleware
  • Compilation + 119 tests OK après correctifs

Phase C — Feature Parity V2

  • Recovery on crash worker — recoverStaleRuns() + worker startup recovery
  • Cancel support — requestCancel() repo + shouldCancel callback worker + API endpoint
  • Tab completion chat V2
  • Commandes slash V2 — parseSlashCommand, resolveCommand, generateHelpText + 11 commandes + 17 tests
  • Mémoire conversationnelle V2 — ConversationMemory, addToMemory, buildLlmContext, clearMemory
  • Status strip admin V2 — GET /api/v2/status (personas, graphs, runs, queue)
  • Subnet gate V2 — CIDR middleware /api/v2/admin/* avec ADMIN_SUBNET env
  • Retention sweep V2 — deleteOlderThan() repo + POST /api/v2/admin/retention-sweep
  • Export HTML V2 — GET /api/v2/export/html avec download attachment
  • Upload fichiers V2 — bouton upload base64 dans Chat.tsx, accept image/audio/text/pdf/json/csv
  • Tab completion chat V2 — nicks + commandes slash, cycling Tab, reset auto

Phase D — Déploiement & Docs

  • Docker — Dockerfile (multi-stage Node 22 alpine) + docker-compose.yml (5 services) + .dockerignore
  • Documentation utilisateur
  • Performance profiling

P11 Lot 17 — Deep Audit & Refactoring

Phase A — Analyse & documentation

  • Script TUI deep-audit.js (security, perf, complexity, deps) — ops/v2/deep-audit.js
  • Veille OSS enrichie 2026-03-17 (10 nouvelles catégories) — docs/OSS_WATCH_2026-03-16.md
  • Diagrammes Mermaid (Context Store, Docker, Inter-persona) — docs/ARCHITECTURE.md
  • AGENTS.md refondu (matrice 10 agents, Mermaid routing, pipeline) — docs/AGENTS.md
  • PLAN.md consolidé avec lots 17-19
  • TODO.md consolidé avec backlog Phase 6+
  • Deep analyse code agents (api, web, packages, mascarade, v1+worker) — en cours

Phase B — Refactoring code

  • P1 ws-chat.ts: extraction modules (1449 LOC → ~4×350 LOC)
    • Extraire ws-multimodal.ts (vision, STT, TTS, PDF handlers)
    • Extraire ws-persona-router.ts (pickResponders, inter-persona, memory)
    • Extraire ws-commands.ts (slash commands, /web, /imagine)
    • Garder ws-chat.ts core (WebSocket lifecycle, broadcast, rate limit)
  • P1 app.ts: extraction routes (1292 LOC → routes/ + middleware/)
    • Extraire routes/personas.ts
    • Extraire routes/node-engine.ts
    • Extraire routes/chat.ts
    • Extraire middleware/auth.ts
  • P2 writeFileSync → appendFile async dans ws-chat.ts (3 occurrences)
  • P2 console.log → logger structuré (apps/api, apps/worker)
  • P2 React.memo sur Chat, ChatHistory, VoiceChat, NodeEditor
  • P2 Lazy load: React.lazy + Suspense pour routes lourdes

Phase C — Infrastructure

  • SearXNG dans docker-compose (service searxng:8080, remplacer DuckDuckGo)
  • MinerU/Docling dans docker-compose (remplacer pdf-parse)
  • Spike BGE-M3 embeddings (upgrade nomic-embed-text)
  • Déployer deep-audit.js sur kxkm-ai (cron quotidien)
  • Créer utilisateur Discord Pharmacius (bot orchestrateur, bridge chat Discord ↔ KXKM)

Phase D — Nouveaux node types

  • music_generation node (ACE-Step 1.5, <4GB VRAM)
  • voice_clone node (XTTS-v2, zero-shot 6s reference)
  • document_extraction node (MinerU/Docling)

P12 Lot 18 — Voice & MCP (futur)

  • XTTS-v2 voice cloning par persona
  • LLMRTC WebRTC streaming (TypeScript, VAD, barge-in)
  • MCP SDK integration (personas = MCP servers)
  • PCL + OpenCharacter pipeline fine-tune
  • Chatterbox TTS evaluation

P13 Lot 19 — Music & Creative (futur)

  • ACE-Step 1.5 production
  • /compose command (prompt → musique)
  • Flux 2 dans ComfyUI
  • A2A Protocol evaluation

Lot 20 - Deep Analyse Continue & Execution Chainee [en cours]

A faire maintenant:

  • Poursuivre extraction modulaire de ws-chat.ts (router, commandes, core).
  • Decouper app.ts en routes + middleware sans regression.
  • Ajouter instrumentation perf API/WS (latence/debit/memoire).
  • Integrer SearXNG + Docling et valider le pipeline.

Fait sur ce lot:

  • Extraction modulaire du bloc upload/analyse de ws-chat.ts (ws-upload-handler.ts).
  • Refonte UI Minitel depuis la racine du site (public/index.html, public/styles.css, public/app.js).
  • Deep audit execute et relance apres correctifs.
  • Corrections context-store appliquees et validees.
  • check:v2 et test:v2 au vert.
  • Correctif anti-decrement TTS negatif (ttsActive).
  • Cleanup opportuniste des sessions expirees (mode memory).
  • Purge des logs vides/obsoletes ops/v2/logs.
  • Script ops/v2/run-deep-cycle.sh ajoute et execute.
  • Tests apps/api/src/context-store.test.ts ajoutes et valides.
  • Scoring de dette technique integre dans ops/v2/deep-audit.js.
  • Verification JSON dette: score 78/100 (niveau high).