Aller au contenu

2.0 - Une bibliothèque Node.JS

AI generated translation.

The image shows a network of geometric blocks connected by wires, symbolizing a modular 2D server in retro 8-bit style. One block is marked with a "runtime" symbol and another with a "CLI" symbol, each featuring plug-in style ports. Flexible wire connections link a Node.js logo to these blocks. Surrounding the central setup are minimalist icons that represent code, packages, and script files. The design uses five bold corporate colors, maintains flat and iconic visuals, and has a neutral, wordless background.
Generated by 🤖 AI

GenAIScript 2.0 représente une étape architecturale importante. Nous avons restructuré fondamentalement la base de code pour libérer l’exécution du runtime de sa dépendance au CLI, permettant à GenAIScript de fonctionner nativement dans n’importe quelle application Node.js.

Vos scripts existants restent en grande partie compatibles. La plupart des changements se font en coulisses, bien que nous ayons introduit quelques modifications de rupture au niveau du CLI et de certaines API pour améliorer la maintenabilité à long terme.

La version 2.0 est disponible sur npm et dans Visual Studio Code.

Lorsque Matthew Podwysocki (@mattpodwysocki) nous a approchés pour contribuer à GenAIScript, nous avons d’abord suggéré des fonctionnalités plus modestes pour l’aider à se familiariser avec la codebase. Au lieu de cela, Matthew a vu plus grand et a proposé une refonte architecturale complète afin de créer un système plus modulaire et maintenable.

Cette suggestion a permis de traiter une partie importante de la dette technique du projet. GenAIScript est né comme un projet de recherche qui a évolué de manière organique, accumulant des hypothèses sur son environnement d’exécution. La contrainte la plus significative : les scripts ne pouvaient s’exécuter qu’au sein d’un runtime Node.js augmenté, géré par notre CLI. Cette architecture créait une barrière artificielle — chaque exécution de GenAIScript nécessitait le CLI comme intermédiaire.

Matthew a transformé cette limitation en opportunité. Il a dirigé la tâche complexe de refonte de l’ensemble de notre système de build, décomposant la structure monolithique en paquets npm ESM et CommonJS consommables. Il ne s’agissait pas seulement d’une mise à niveau technique — cela a changé fondamentalement la façon dont les développeurs peuvent intégrer GenAIScript dans leurs projets.

Le nouveau paquet @genaiscript/runtime fournit un runtime autonome de GenAIScript qui fonctionne indépendamment dans tout environnement Node.js — aucune interface CLI requise.

Autrefois, accéder aux fonctionnalités du runtime signifiait importer une exportation personnalisée genaiscript/runtime depuis le paquet genaiscript. Désormais, @genaiscript/runtime existe en tant que paquet dédié, conçu pour cette tâche, avec une API claire.

Se lancer est simple :

Terminal window
npm i @genaiscript/runtime
import { initialize } from "@genaiscript/runtime";
// Initialize before using any global types
await initialize();

Le processus d’initialisation charge les analyseurs globaux et les aides pour prompts inline, préparant le runtime à l’exécution des scripts.

Note architecturale importante : Les fonctions de prompt de niveau supérieur comme $ et def restent exclusives au contexte CLI, car elles dépendent d’une initialisation spécifique au CLI. Lors de l’utilisation directe du runtime, vous travaillerez avec des prompts inline à la place :

import { prompt, runPrompt } from "@genaiscript/runtime";
const { text: recipe } = await prompt`write a recipe`;
const { text: poem } = await runPrompt(
(ctx) => ctx.$`write a poem for this recipe: ${recipe}`,
);

Cette évolution architecturale ouvre une nouvelle capacité puissante : vous pouvez désormais écrire du code de bibliothèque GenAIScript qui fonctionne sans couture à la fois dans les environnements CLI et Node.js. Cette approche unifiée élimine la friction de la gestion d’implémentations séparées pour différents contextes de déploiement.

Le paquet @genaiscript/api fournit un exécuteur Node.js léger, optimisé pour l’exécution programmatique avec un minimum de dépendances d’exécution. Ce paquet met l’accent sur la performance et la simplicité, fournissant juste ce dont vous avez besoin pour exécuter GenAIScript dans des environnements de production.

import { run } from "@genaiscript/api";

Certaines fonctionnalités majeures ont été déplacées dans des paquets séparés (plugins) afin de réduire l’empreinte d’installation par défaut. Nous avons supprimé 200 Mo de dépendances…

  • @genaiscript/plugin-mermaid - analyseur mermaid
  • @genaiscript/plugin-ast-grep - le parseur ast grep
  • @genaiscript/plugin-z3 - le solveur Z3

En savoir plus sur les plugins du runtime et leur utilisation.

  • les options courtes des outils en ligne de commande ont été modifiées afin de permettre la mise à niveau vers la dernière version de la bibliothèque Commander.

Grand merci à @matthew-podwysocki pour avoir investi son temps et ses efforts dans ce projet.