Versions

Manivox conserve un instantané de version immuable à chaque fois que l'agent change, aussi bien lorsque vous enregistrez manuellement que lorsque le système enregistre automatiquement. L'historique des versions vous permet de parcourir les états passés, d'en charger n'importe lequel dans l'éditeur, et de choisir exactement quelle version est live, ce qu'entendent les appelants. Le modèle mental est deux verbes : Save (créer un point de restauration nommé) et Make live (promouvoir une version vers les appelants).

Journal des versions Save v1 v2 v3 LIVE

Fonctionnement du versionnage

Les versions sont des instantanés immuables stockés dans la table agent_versions. Chaque version capture l'état complet de l'agent au moment de sa création :

  • Le graphe de flux complet (tous les nœuds, arêtes et leur configuration)
  • La configuration de l'agent, prompt système, fournisseurs STT/LLM/TTS et paramètres, comportement de silence, variables d'initialisation, bases de connaissances globales, paramètres sortants, et plus

Manivox stocke deux types de versions, et les deux atterrissent dans le même historique :

  • Versions manuelles, celles que vous créez avec le bouton Save de l'en-tête. En cliquant dessus, une fenêtre modale s'ouvre avec un nom prérempli (v{N+1}, modifiable, 100 caractères max) et des notes optionnelles ; la validation crée une version nommée. Le bouton Save est désactivé lorsqu'il n'y a aucune modification non enregistrée, de sorte qu'il ne peut pas exister de versions vides.
  • Versions automatiques, créées pour vous par le système, sans fenêtre modale ni nom (elles s'affichent comme un simple v{N}). Une version automatique est écrite chaque fois que vous (a) modifiez un champ de l'onglet Initialization, (b) appliquez une modification du Copilot, ou (c) restaurez une version (un instantané pré-restauration est alors pris).

Comme les deux types partagent un seul compteur de version, les numéros de version avancent lors des applications du Copilot et des modifications de l'onglet Initialization, pas seulement lors de vos sauvegardes manuelles. Ni une sauvegarde ni une version automatique ne change ce qu'entendent les appelants, c'est toujours l'action séparée Make live qui le fait.

Le graphe de flux du canevas Agent Workflow n'est écrit que lorsque vous cliquez sur Save : si vous fermez l'onglet ou actualisez la page avec des modifications du canevas non enregistrées, ces modifications sont perdues, et le navigateur vous avertit lors de la navigation. Les champs de l'onglet Initialization fonctionnent à l'inverse, chacun est persisté au moment même où vous le modifiez (et capturé comme version automatique), il n'y a donc rien à perdre de ce côté.

Rail d'historique des versions

L'historique vit dans un rail permanent ancré à droite de l'éditeur. Il est toujours présent, vous ne l'ouvrez pas depuis l'en-tête. Repliez-le ou dépliez-le avec son propre chevron ; le rail mémorise ce choix dans votre navigateur (localStorage) à travers les onglets et les rechargements. La première fois que vous ouvrez un agent, le rail démarre replié sur le canevas de flux (où chaque pixel compte) et déplié sur les onglets de formulaire.

Lorsqu'il est déplié, le rail affiche, de haut en bas : la version live épinglée en haut, un indicateur d'édition lorsque l'éditeur n'est pas sur la version live (modifications non enregistrées, ou une autre version chargée), puis la liste Toutes les versions.

La liste affiche les 8 versions les plus récentes par défaut. Lorsque l'agent en compte plus de 8, un contrôle Show older déplie la liste vers l'historique complet (plafonné à 100) ; un contrôle Show less la replie à 8.

Au pied du rail, Compare versions ouvre un sélecteur en ligne avec deux listes déroulantes (A et B) pour comparer côte à côte deux versions quelconques.

Ce que chaque ligne affiche

Chaque ligne est repliée par défaut et affiche un résumé d'une ligne ; cliquez dessus pour déplier le détail complet et son jeu d'actions. La ligne repliée affiche :

  • Numéro de version, entier séquentiel par agent, commençant à 1
  • Nom, pour une version manuelle le nom que vous avez choisi dans la fenêtre modale d'enregistrement (prérempli avec v{N+1}) ; une version automatique n'a pas de nom et s'affiche comme un simple v{N}
  • Badge LIVE ou marqueur d'édition, indicateur vert sur la version actuellement entendue par les appelants, ou un crayon sur la version chargée dans l'éditeur
  • Heure relative, quand la version a été créée (survolez pour l'horodatage complet)

Déplier une ligne révèle le créateur et la date/heure complète, le résumé des modifications généré automatiquement (ex : « 2 nœuds ajoutés, prompt système mis à jour »), les éventuelles notes, et les actions par ligne : Make live, Load in editor, Compare to live et Delete (voir ci-dessous). Le sous-en-tête Toutes les versions dispose d'un bouton Tout déplier / Tout replier pour les lignes visibles.

Enregistrer une version

Cliquez sur le bouton Save dans l'en-tête (actif lorsque l'éditeur contient des modifications non enregistrées). La fenêtre modale d'enregistrement demande :

  • Nom (requis, 100 caractères max), prérempli avec v{N+1} ; renommez-le pour des checkpoints significatifs, ex : "v2, Ajout branche facturation"
  • Notes (optionnel), description plus longue de ce qui a changé et pourquoi

La validation écrit la ligne agent, crée la version nommée, et laisse l'éditeur sur cette nouvelle version enregistrée, à ce stade, Make live devient disponible. L'enregistrement ne touche pas à la version live.

Passer en live avec Make live

La version live (published_version_id) est celle qu'entendent les appelants. Une seule version est live à la fois, et un tout nouvel agent n'en a aucune, il ne peut donc pas être appelé tant que vous n'avez pas fait Make live une première fois.

Vous ne pouvez rendre live qu'une version enregistrée, jamais des modifications non sauvegardées brutes, le flux est donc toujours éditer → Save → Make live. Il existe deux façons de le faire, chacune en un clic, sans créer de nouvelle version :

Make live depuis l'en-tête

Le bouton Make live de l'en-tête (icône fusée) promeut la version actuellement affichée dans l'éditeur. Il est actif uniquement lorsque l'éditeur est propre (aucune modification non enregistrée) et que la version affichée n'est pas déjà live. Si vous avez des modifications non enregistrées, sauvegardez d'abord, Make live reste désactivé jusqu'à ce que vous le fassiez.

Deux gardes bloquent Make live, chacun affiche une notification d'erreur au lieu de passer en live :

  • Le flux nécessite un LLM mais aucun llm_model n'est défini, cela ferait planter l'appel au démarrage.
  • Le flux n'a aucun nœud de départ (pas de nœud de bienvenue ni de chatbot de départ), ce n'est donc pas un agent exécutable. La sauvegarde vous avertit déjà d'un nœud de départ manquant, et vous ne pouvez pas promouvoir une version sans nœud de départ.

Make live depuis l'historique des versions

Dépliez n'importe quelle ligne non live dans le rail et elle dispose d'une action Make live. Cela promeut cette version enregistrée spécifique directement en live sans créer de nouvelle version, utile pour les retours arrière instantanés ou pour promouvoir un checkpoint validé. Les deux mêmes gardes s'appliquent, une version sans modèle LLM ou sans nœud de départ ne peut pas être rendue live.

Les appels en cours ne sont jamais interrompus quand vous changez la version live. Un appel utilise la version qui était live à son démarrage et continue avec cette version jusqu'à la fin de l'appel.

Charger une version dans l'éditeur

Cliquez sur Load in editor sur n'importe quelle ligne de version pour l'inspecter ou la prendre comme base.

Ce que le chargement fait :

  1. Aucune écriture en base de données, il hydrate uniquement l'état en mémoire de l'éditeur à partir du flux et de la configuration de la version sélectionnée.
  2. Laisse l'éditeur propre, rien n'a encore changé, donc Make live est immédiatement disponible pour promouvoir la version chargée telle quelle.
  3. Ne change pas la version live, jusqu'à ce que vous cliquiez sur Make live (pour la promouvoir telle quelle) ou que vous éditiez puis sauvegardiez (pour créer une nouvelle version).

Ce qui est chargé

Chaque champ capturé dans l'instantané de version est chargé dans l'éditeur, notamment : nom, description, prompt système, tous les paramètres STT/LLM/TTS, comportement de silence, variables d'initialisation, bases de connaissances globales, paramètres sortants, et le graphe de flux complet.

Ce qui n'est pas affecté :

  • Statut de l'agent (Active/Archived), jamais modifié par le chargement d'une version.
  • Numéros de téléphone assignés, les assignations de numéros sont préservées.
  • Le pointeur de version live, le chargement ne change pas quelle version entendent les appelants.

La puce d'état de l'éditeur

À côté des boutons Save et Make live, une puce vous indique en un coup d'œil ce que l'éditeur affiche par rapport à la version live. C'est un indicateur d'état en lecture seule, pas un bouton, cliquer dessus ne fait rien. Elle existe pour que vous sachiez toujours quelle version vous éditez même lorsque le rail d'historique est replié ; utilisez le chevron du rail pour ouvrir l'historique.

PuceSignification
Editing live (v7)Propre, affichant la version live
Unsaved changesVous avez des modifications à sauvegarder
On saved v8 (not live)Propre, affichant une version enregistrée qui n'est pas live, Make live la promeut
Not saved yetTout nouvel agent, jamais sauvegardé

Supprimer une version

N'importe quelle version peut être supprimée depuis sa ligne, sauf la version live. Tenter de supprimer la version live retourne une erreur, rendez d'abord une autre version live. Les versions manuelles sont conservées jusqu'à ce que vous les supprimiez. Les versions automatiques sont élaguées automatiquement : le système conserve au maximum les 50 versions automatiques les plus récentes et supprime silencieusement les plus anciennes (jamais la version live).

Procédure de retour arrière en production

Si une version que vous avez rendue live cause des problèmes :

  1. Ouvrez le rail d'historique des versions (son chevron, sur le bord droit de l'éditeur)
  2. Trouvez la dernière version connue comme bonne (cherchez vos checkpoints nommés ou l'ancienne version live)
  3. Dépliez cette ligne et cliquez sur Make live, cela retourne immédiatement le trafic vers la bonne version
  4. Optionnellement, cliquez sur Load in editor sur la version défaillante pour investiguer ce qui a mal tourné

Make live depuis l'historique des versions est le retour arrière en une seule action : cela promeut l'ancienne version en un clic sans créer de nouvel enregistrement de version.

Affiner un agent live sans perturber les appelants

Parce que Save et Make live sont séparés, vous pouvez itérer sur un agent live en toute sécurité :

  1. Éditez l'agent, les appelants ne sont pas affectés, ils restent sur la version live
  2. Save, crée une nouvelle version ; l'ancienne reste live
  3. Testez la nouvelle version avec le simulateur navigateur (économique, pas de téléphonie)
  4. Make live quand vous êtes confiant, les appelants passent à la nouvelle version dès leur prochain appel

Il n'y a pas de « mode brouillon » nécessaire : les appels de test dans le navigateur sont toujours facturés au tarif économique (pas de PSTN), et un agent sans version live ne peut tout simplement pas être appelé. Développez et testez librement, puis faites Make live une fois.