Aller au contenu

Iris

Développement multi-agents

Outil interne
  • Tauri 2
  • Rust
  • React 19

Chaque écriture a son auteur.

  • Opus 5.5
  • Sonnet 5.5
  • GPT-6 Astra
  • GPT-6.1 Sol
  • Gemini 4 Argon
Flux des écritures
AuteurSessionFichierLignesSynchro
Exporter les devissrc/devis/export.ts+4 −1312 ms
Fiabiliser le planningserver/api/planning.mts+12 −3427 ms
Exporter les devistests/devis/export.test.ts+18 −0268 ms
Documenter l’APIdocs/api.md+31 −4489 ms
Exporter les devisshared/contracts/devis.mts+6 −1351 ms
Fiabiliser le planningserver/api/planning.mts+3 −3296 ms
Documenter l’APIdocs/api.md+9 −2530 ms
Exporter les devissrc/devis/export.ts+1 −1260 ms

Réserver avant d’écrire.

  1. Claude Code réserve 3 fichiers · 15 min

  2. Codex vise src/devis/export.ts

  3. Réservé par Claude Code · Exporter les devis

  4. Écriture reçue · réservation libérée

Fichiers réservés
FichierDétenteurÉchéance
src/devis/export.ts15 min
tests/devis/export.test.ts15 min
shared/contracts/devis.mts15 min

Via un outil MCP partagé

Du poste à la VM, vérifié.

Poste

  • srcSynchronisé260 ms
  • sharedSynchronisé351 ms
  • testsSynchronisé268 ms
  • serverSynchronisé296 ms
  • racineSynchronisé530 ms

VM

  • Tests sur VM, ouverts en localhost
  • Traitements déportés du poste

De 260 à 530 ms, captures du 09/10/2026.

Écrit0
En attente0
Synchronisé5

Chaque version, chaque mot.

30 versions · 7 jours

src/devis/export.ts

Différences
AvantAprès
1import { signWith } from './sign';1import { signWith } from './sign';
2Secret masqué2Secret masqué
3export function exportQuotes(quotes: Quote[]) {3export function exportQuotes(quotes: Quote[]) {
4 const header = 'numero;client;total_ht';4 const header = 'numero;client;total_ht';
5 const valid = quotes.filter(isComplete);5 const valid = quotes.filter(isComplete);
6 if (valid.length === 0) return header;6 if (valid.length === 0) return header;
7 const rows = valid.map(toRow);7 const rows = valid.map(signWith(EXPORT_KEY));
8 return [header, ...rows].join('\n');8 return [header, ...rows].join('\n');
9}9}
10function toRow(quote: Quote): string {10function toRow(quote: Quote): string {
11 const total = quote.lines.reduce(addLine, 0);11 const total = quote.lines.reduce(addLine, 0);
12 return [quote.numero, quote.client, total].join(';');12 return [quote.numero, quote.client, total].join(';');
13}13}
14function isComplete(quote: Quote): boolean {14function isComplete(quote: Quote): boolean {
15 return quote.client !== '' && quote.lines.length > 0;15 return quote.client !== '' && quote.lines.length > 0;
16}16}
17function addLine(sum: number, line: QuoteLine): number {17function addLine(sum: number, line: QuoteLine): number {
18 return sum + line.quantity * line.unitPrice;18 return sum + line.quantity * line.unitPrice;
19}19}