@netscript/workers
workers
Traitements en arrière-plan avec file d’attente, reprises et traçage.
Logiciel libre
NetScript est le framework que Devocracy utilise sur les mandats clients. Il est libre : n’importe qui peut lire comment votre système est assemblé — y compris celui qui le maintiendra après nous.
La raison d’être
Une application renomme un champ, le service voisin continue de demander l’ancien, et rien ne signale l’écart jusqu’à ce qu’un client s’en plaigne. NetScript écrit cet accord une seule fois et génère les deux côtés à partir de là : un tel écart bloque la compilation, pas la commande d’un client.
La chaîne d’exécution
Cinq étapes, cinq fichiers réels, issus de la documentation publiée.
La méthode, l’entrée et la sortie sont scellées avant qu’aucun gestionnaire n’existe : client et serveur compilent sur la même définition.
import { createCrudContract } from '@netscript/contracts/crud';
import { UserCreateInput, UserSchema, UserUpdateInput } from '@database/zod';
export const UsersCrudContractV1 = createCrudContract({
resource: 'users',
entitySchema: UserSchema,
createSchema: UserCreateInput,
updateSchema: UserUpdateInput,
});Une réponse qui s’écarte du contrat échoue à la compilation, pas en production.
import { v1 } from '@my-app/contracts';
export const UsersV1 = {
list: v1.users.list.handler(async ({ input }) => {
return { items: seededUsers, pagination: { total: seededUsers.length } };
}),
updateStatus: v1.users.updateStatus.handler(async ({ input }) => {
return { updated: true, id: input.id, status: input.status };
}),
};CORS, journalisation des requêtes, document OpenAPI, documentation Scalar, point d’entrée RPC, informations de service et contrôles de santé sont câblés par le préréglage.
import { defineService } from '@netscript/service';
import { router } from './router.ts';
const service = await defineService(router, {
name: 'users',
port: 3000,
});Le client est généré depuis le même contrat : un renommage côté serveur devient une erreur de compilation côté interface.
import { createServiceClient } from '@netscript/sdk/client';
import { createQueryFactories } from '@netscript/sdk/query';
import { ordersContract } from '@contracts';
export const ordersClient = createServiceClient<typeof ordersContract>({
contract: ordersContract,
serviceName: 'orders',
});
export const api = createQueryFactories({
orders: { contract: ordersContract, client: ordersClient },
});
const recent = await ordersClient.list({ limit: 10 });Un enregistreur en mémoire rend une trace vérifiable dans un test unitaire, sans point de collecte OTLP.
import { withSpan } from '@netscript/telemetry/tracer';
import { createInMemorySpanRecorder } from '@netscript/telemetry/testing';
const tracer = createInMemorySpanRecorder();
const total = await withSpan(tracer, 'job.import', async (span) => {
span.setAttribute('netscript.job.source', 'erp-sync');
return 42;
});
const [snapshot] = tracer.snapshots();Extensions officielles
Chacune est un paquet du même dépôt, sous la même licence. Il n’y a pas de version payante.
@netscript/workers
Traitements en arrière-plan avec file d’attente, reprises et traçage.
@netscript/sagas
Transactions de longue durée, compensées lorsqu’une étape échoue.
@netscript/triggers
Exécution planifiée et événementielle, tracée comme n’importe quel appel.
@netscript/streams
Diffusion d’événements serveur (SSE) intégrée comme protocole natif.
@netscript/auth
Identité et sessions, câblées dans le préréglage de service.
@netscript/ai
Appels aux modèles, régis par les mêmes contrats que le reste.
Déploiement
netscript deploy list --json
netscript deploy kubernetes plan --project-root . --output-dir .deploy/kubernetes
netscript deploy azure-aks up --project-root . --output-dir .deploy/azure-aks
netscript deploy azure-aks down --project-root . --output-dir .deploy/azure-aksCibles enregistrées
deno-deployCLI native deno deploy, avec contrôle préalablewindows-serviceService Windows via Servylinux-serviceUnité systemddockerAdaptateur Compose, six opérationscomposeAdaptateur Compose, six opérationskubernetesDélégué à l’Aspire AppHostcloud-runBuild, push, gcloud run deployazure-acaDélégué à l’Aspire AppHostazure-app-serviceDélégué à l’Aspire AppHostazure-aksDélégué à l’Aspire AppHostUn service Windows comme un déploiement Kubernetes s’appuient sur la même définition de projet.
Interface pour agents
Un agent reçoit une liste fixe de choses qu’il peut exécuter. Tout le reste est refusé.
Les résultats d’outils sont plafonnés, et non tronqués en silence.
Installation
C’est encore une bêta : l’API peut bouger d’une version à l’autre. Épinglez la version.
deno install --global --allow-all --name netscript jsr:@netscript/cli@0.0.1-beta.11Prochaine étape
Votre projet n’a pas besoin de tourner sur NetScript. La manière de travailler, elle, ne change pas.