Documentation
Assistant IA
Conversations à l'échelle du projet, actions CAO/FAO saisies, autorisations explicites et informations d'identification du fournisseur gérées par l'application.
Traduit automatiquement de l'anglais. Voir l'original en anglais
Services d'assistance
@cadcamfun/ai fournit un accès au modèle, aux événements de conversation, au catalogue d'actions, aux invites, aux compétences, à l'assemblage de contexte et à l'intégration de l'hôte. Le moteur de conversation par défaut est nikcli intégré ; AI SDK v7 fournit des appels directs en texte, en streaming et à sortie structurée. Le sidecar injecte des gestionnaires pour les mutations de projet, les bibliothèques, l'historique et le stockage des applications.
Le chat peut inspecter et modifier un projet via des actions enregistrées. La génération de titres sans état, l'analyse de la conception, les recommandations de paramètres, l'optimisation du code G et les résumés de suggestions de conception renvoient des conseils ou une sortie structurée ; ces méthodes de service n'enregistrent pas les modifications du projet. Examinez les conseils d'usinage générés grâce à la FAO déterministe et à la vérification avant de vous y fier.
Conversations et contrôles de session
POST /api/ai/chat/stream émet des événements typés pour le texte, le raisonnement, l'état du tour/étape, les appels et résultats d'outils, les diagnostics, les questions, les demandes d'autorisation, les tentatives, les changements de contexte, les objectifs, l'achèvement et les erreurs. Les identifiants de session client sont liés aux sessions hébergeant et vérifiés par rapport à leur projet. Conservez l'ID de session pour continuer la même conversation.
POST /api/ai/sessions/state récupère l'état occupé, le texte accumulé et les informations sur les tâches après un flux déconnecté. /api/ai/chat/queue admet un suivi d'une conversation active ; /api/ai/chat/abort arrête le tour et ses ouvriers associés. La suppression d'une session annule et rejoint ses enfants avant de supprimer la session hôte.
/api/ai/sessions/control prend en charge l'état, l'inspection détaillée du contexte, le compactage, la consolidation de la mémoire, l'annulation de tâches, les décisions d'autorisation et la réponse ou le rejet des questions en attente. Les demandes sont vérifiées par rapport à la conversation parent et à ses sessions enfants admises. Une question qui n'est plus en suspens ne peut trouver de réponse en réutilisant son ancien identifiant.
Les appels de modèle direct réessayent les échecs transitoires du fournisseur avec la même courbe que nikcli : le premier délai est de 2 secondes et double à chaque tentative, propre au fournisseur. retry-after l'en-tête est honoré, et sans un tel en-tête, le délai ne dépasse jamais 30 secondes. Par défaut, une requête effectue au maximum cinq appels, premier compris ; le retryAttempts le paramètre peut remplacer cela (packages/ai/src/retry.ts, direct-model.ts). Lorsque la connexion du modèle s'interrompt à mi-tour, la boucle de discussion reprend jusqu'à cinq fois avec le même intervalle de 2 à 30 secondes et demande au modèle de continuer sans répéter les étapes terminées.
Fournisseurs et informations d'identification
GET /api/ai/providers répertorie les métadonnées du fournisseur et l'état configuré ; GET /api/ai/models expose le catalogue du sélecteur de modèles avec en option configuredOnly=true. Les lectures du catalogue de l'hôte intégré sont mises en cache pendant une minute. La configuration et la politique affectent les fournisseurs répertoriés et utilisables.
Définir les informations d'identification avec PUT /api/ai/credentials et retirez-les avec DELETE /api/ai/credentials/:provider. Les clés doivent être non vides et une URL de base fournie doit être HTTP ou HTTPS. L'usine de modèles directs prend en charge Anthropic, OpenAI, MiniMax et la passerelle AI. D'autres ID de fournisseur nécessitent une URL de base compatible OpenAI pour les appels directs. L'hôte intégré utilise son propre catalogue de fournisseurs et son propre routage.
Le sidecar conserve les informations d'identification à <dataDir>/ai/credentials.json en utilisant un fichier temporaire, en mode propriétaire uniquement 0600, et renommez-le. Un fichier manquant ou endommagé apparaît comme vide. Un échec d’écriture de persistance laisse la clé disponible pour le processus en cours mais ne garantit pas qu’il survivra au redémarrage. Les réponses d'état exposent l'état de la configuration plutôt que les clés brutes.
Les informations d'identification sont représentées par Redacted à l’intérieur des services et propagé à l’hôte via un récepteur d’informations d’identification étendu. La fermeture de la portée efface la copie de l'hôte. Les modifications des informations d’identification mettent à jour une révision utilisée pour distinguer les résultats sans état mis en cache.
Le niveau de modèle par défaut est balanced, et les requêtes MiniMax vont à https://api.minimax.io/v1 sauf si CADCAMFUN_AI_MINIMAX_BASE_URL le remplace (packages/ai/src/models.ts). Le catalogue de modèles est ensemencé auprès du public https://models.dev/api.json point de terminaison uniquement lorsque le fichier mis en cache est manquant et que l'accès au réseau est autorisé ; aucune information d'identification n'est envoyée, les réponses sont limitées à 8 Mio et un corps répertoriant moins de 20 fournisseurs est rejeté comme tronqué.
Actions et autorisations
Le catalogue d'actions déclare chaque identifiant d'action, schéma de paramètres, effet et chemin d'exécution. Les outils regroupent les actions liées derrière un élément requis action champ. L'hôte valide la saisie de l'outil et les gestionnaires sidecar effectuent des vérifications de validation de domaine et d'accès aux ressources avant de persister les modifications.
Les modes d'autorisation sont approve, ask, et auto. Ils affectent la manière dont les appels d'outils ordinaires sont admis ; les outils contenant des actions destructrices conservent une règle d’approbation humaine dans chaque mode. Un indicateur d'entrée tel que confirm: true ne remplace pas cette demande d'autorisation. L'hôte n'expose pas d'outils shell ou d'édition de fichiers sans restriction en remplacement des actions de l'application.
Politiques en <dataDir>/ai/policy.json restreindre l’utilisation du fournisseur, l’utilisation des outils et l’accès au pont. Ils sont chargés par la configuration du service ; ne présumez pas que la modification du fichier met à jour un service déjà en cours d’exécution. Les répertoires de travail à l'échelle du projet et la configuration nikcli isolée maintiennent l'hôte intégré séparé de l'état d'agent autonome d'un utilisateur.
Les compétences fournissent des playbooks CAO/FAO et des instructions créées par l'utilisateur. Ils guident l'utilisation des outils existants ; l'ajout d'une compétence n'ajoute pas une nouvelle API de mutation. Les points de terminaison HTTP des compétences répertorient, enregistrent et suppriment le contenu des compétences utilisateur pris en charge.
Groupes d'outils enregistrés
Les groupes intégrés sont cad, cad_edit, cam, cam_edit, library, parts, library_edit, memory, memory_edit, research, vcs, vcs_edit, et agent. cam_verify expose le sous-ensemble de génération et de vérification nécessaire au rôle de vérificateur sans accorder l'outil d'édition CAM complet.
Le regroupement d’outils préserve les limites des effets. L'inspection géométrique en lecture seule, la recherche dans la bibliothèque et le rappel de mémoire sont distincts des modifications apportées à ces ressources. Le registre injecté peut également admettre des outils d'extension ; les identifiants en double sont rejetés.
Découvrez le catalogue actuel
GET /api/ai/actions renvoie les descriptions des outils, les noms et types d'actions, ainsi que les schémas de paramètres JSON pour les appelants externes. Utilisez-le pour découvrir les actions de l'application en cours d'exécution au lieu de copier une liste statique dans un client. POST /api/ai/actions/invoke prend un ID de projet, un ID d'outil et une entrée contenant le discriminateur d'action.
Les entrées de catalogue intégrées sont conservées sous packages/ai/src/actions. Les exemples incluent l'inspection CAO et les contrôles paramétriques, les modifications CAO, la planification et la fabrication CAM, la recherche et les mises à jour de bibliothèques, la mémoire de projet, la recherche et les propositions VCS. Une contribution nécessitant un service applicatif renvoie un résultat indisponible lorsque cet hôte n'a pas fourni son gestionnaire.
API d'intégration publiques
ACTION_CATALOGUE, ACTION_TOOL_IDS, EXPOSED_TOOL_IDS, actionById, toolKind, et runAction prendre en charge les consommateurs de catalogues. ToolHandlers est le contrat d’intégration sidecar ; ToolRegistry compose des outils intégrés et d’extension. AiService fournit des conversations, des métadonnées de modèle, des appels ponctuels et des opérations de session.
assembleContext compose le contexte du tour avec un budget global par défaut de 24,000 caractères. Il classe les exigences permanentes, les observations actuelles, les instantanés de l'interface utilisateur, la mémoire et les références de support, les doublons par identité et contenu, et les enregistrements des sources omises ou tronquées. Ce budget de contexte est distinct de la fenêtre de jeton complète du modèle et du seuil de compactage de l'hôte.
Travaux de base et preuves
Le planificateur d'exécution autorise quatre tâches en arrière-plan actives et seize tâches en file d'attente. Les tâches appartiennent à un projet et à une session parent. L'annulation conserve la propriété active jusqu'à ce qu'un travailleur s'arrête ; l'arrêt ou la suppression du parent arrête également son travail associé. La récupération du lecteur est limitée à deux tentatives, tandis que le travail d'édition interrompu est marqué comme incertain au lieu d'être relu aveuglément.
Le succès de l’outil Assistant est un résultat à inspecter. Les opérations de CAO peuvent renvoyer des diagnostics de géométrie partiels ; Les artefacts CAM comportent leurs propres revendications et niveaux de libération ; les services d'historique appliquent les branches protégées. Le texte d'une conversation, une tâche marquée comme terminée et un résultat de vérification géométrique décrivent différentes preuves.
Le contexte du projet envoyé au modèle est budgétisé : un document de contexte de projet stocké peut contenir jusqu'à 8,000 caractères, dont 2,000 atteignent l'invite, avec 1,500 caractères chacun pour la mémoire du projet et les habitudes de l'utilisateur. Les notes de projet datant de plus de 90 jours auxquelles le contexte du projet ne fait pas référence sont supprimées lorsqu'une session se règle (packages/ai/src/project-context.ts).
Sélection de l'exécution
CADCAMFUN_AI_HOST sélectionne nikcli par défaut ou direct. Le chemin direct utilise les appels AI SDK sans la boucle d’outils d’agent persistant et le planificateur spécialisé de l’hôte intégré. Les opérations sans état utilisent le service de modèle direct même lorsque l'hôte intégré est activé.
Les répertoires XDG de l'hôte et le remplacement facultatif de l'accueil sont enracinés sous <dataDir>/ai/nikcli. Le chargement de la configuration du projet et les paramètres d'agent hérités non liés sont désactivés ou effacés avant l'importation du SDK. Son espace de travail est un répertoire de travail d'application par projet, plutôt que le répertoire source de l'utilisateur.
Accès nikcli autonome
@cadcamfunv2/cadcamfun-nikcli-plugin connecte un nikcli autonome à une application en cours d'exécution. Configurez son url, token, et par défaut projectId, ou utiliser CADCAMFUN_URL, CADCAMFUN_TOKEN, et CADCAMFUN_PROJECT. Fournissez un jeton de pont étendu émis par l’application pour un accès extérieur.
Les jetons de pont sont limités à un seul projet et à des actions en lecture seule ou en lecture/écriture. Ils sont par défaut de 30 jours, autorisent 1 à 365 jours, peuvent être répertoriés et révoqués et ne révèlent leur secret qu'une fois émis. Ils n'admettent que les deux itinéraires de pont d'action. La politique peut restreindre davantage les outils et actions visibles.
Le plugin récupère le catalogue de l'application et convertit ses schémas en arguments de l'outil nikcli. Les actions destructrices sont refusées même avec un indicateur de confirmation, et les actions en cours agent l’outil de délégation est exclu. Les outils d'extension de plugin compatibles en écriture ne sont pas exposés via ce pont extérieur. HTTP 401 signale un jeton rejeté ; les refus d’action renvoient des résultats d’échec lisibles.
Carte de mise en œuvre
service.ts possède des opérations d'IA orientées applications ; direct-model.ts possède les appels AI SDK ; credentials.ts possède l'état clé ; nikcli/ possède l'isolement, les sessions, les politiques, le contexte et les travailleurs ; actions/ et tools/ propres définitions de capacités et adaptateurs. Sidecar services/ai.ts câbles gestionnaires de projet et stockage. packages/nikcli-plugin possède le client HTTP externe.
Démarrer et récupérer une conversation
Avec un sidecar en cours d'exécution et un modèle configuré, cette requête ouvre une conversation sans injecter de contexte d'espace de travail stocké. Ensemble CADCAMFUN_URL à l'URL de base de bouclage découverte et CADCAMFUN_TOKEN à son jeton d’application actuel. L'identifiant de session ci-dessous est sélectionné par le client ; gardez-le pour les suivis.
curl --no-buffer --fail-with-body \
-H "Authorization: Bearer $CADCAMFUN_TOKEN" \
-H "Content-Type: application/json" \
--data '{"message":"Explain the difference between G0 and G1.","sessionId":"inspection-demo","includeContext":false,"mode":"gcode"}' \
"$CADCAMFUN_URL/api/ai/chat/stream" Pour un projet tournant, fournissez également son réel projectId, et éventuellement un drawingId appartenant à ce projet. Le dessin lie les outils du tour à ce dessin. La réutilisation d'une session sous un autre projet ou compte est refusée.
curl --fail-with-body \
-H "Authorization: Bearer $CADCAMFUN_TOKEN" \
-H "Content-Type: application/json" \
--data '{"sessionId":"inspection-demo"}' \
"$CADCAMFUN_URL/api/ai/sessions/state" Le revenu busy, text, facultatif events, et tasks reconstruire la vue ; la relecture de ces événements stockés n'exécute pas à nouveau les outils. Pour arrêter le travail, envoyez un abandon explicite. La fermeture du flux à elle seule ne rejoint pas les travailleurs de la conversation.
Source: packages/api/src/groups/ai.ts, apps/sidecar/src/http/ai.ts, et packages/ai/src/service.ts.
Gérer les événements sans perdre l'état
| Événement | Comportement du consommateur |
|---|---|
delta / reasoning | Ajouter text au canal de texte ou de raisonnement de la session correspondante. |
tool_call / tool_result | Corréler par callId; inspecter ok et conservez les diagnostics indépendamment du texte de l'assistant. |
permission_request | Afficher la demande et répondre avec ses ID de demande/session et once, always, ou reject. |
question_request | Conserver son identifiant de demande et ses questions ; envoyez un tableau de réponses par question via les contrôles de session. |
done | Utiliser la finale text et utilisation facultative comme réponse complétée ; n'ajoutez pas l'intégralité du texte final aux deltas déjà accumulés. |
error | Afficher message avec config, provider, aborted, ou internal classification. |
heartbeat | Maintenez la connexion active sans ajouter de contenu ni déclarer le tour terminé. |
Les contrôles de session acceptent uniquement les ID d’autorisation/question en attente dans cette conversation ou ses sessions enfants. Une question nécessite des réponses non vides ; une question à choix unique rejette plusieurs valeurs sélectionnées et une question qui interdit les réponses personnalisées n'accepte que les étiquettes d'options répertoriées.
Source: packages/api/src/ai-events.ts, packages/ai/src/nikcli/session-controls.ts, et packages/ai/src/heartbeat.ts.
Pièces jointes et compétences des utilisateurs
Chaque demande de chat accepte jusqu'à cinq pièces jointes. Les images prises en charge sont PNG, JPEG, WebP et GIF, avec une limite de 5 Mo chacune ; Les PDF ont une limite de 10 Mio. Les pièces jointes texte acceptent jusqu'à 2,000,000 caractères, les textes jusqu'à 6,000 caractères étant également inclus en ligne. Les fichiers non pris en charge génèrent un motif de rejet plutôt que de disparaître silencieusement.
Les pièces jointes sont conservées dans un magasin en mémoire à l'échelle du projet pour les outils d'importation : au plus 32 noms et 8,000,000 caractères par projet, et 32,000,000 caractères dans au plus 64 projets stockés. La réutilisation d'un nom remplace son texte précédent. Le redémarrage du service ne conserve pas ce magasin de pièces jointes. Une inadéquation de capacité PDF est signalée au modèle par la transformation du fournisseur.
Les noms de compétences utilisateur sont des mots en lettres minuscules/chiffres reliés par des traits d'union, d'au plus 64 caractères. La description et les limites du corps sont respectivement de 300 et 20,000 caractères ; au maximum 50 compétences utilisateur peuvent être chargées. Les compétences intégrées ne peuvent pas être supprimées via l'API des compétences utilisateur. Une compétence sauvegardée live le résultat indique si le rechargement de l'hôte a pris effet.
Source: packages/ai/src/attachments.ts, packages/ai/src/skills/user.ts, et apps/sidecar/src/http/ai.ts.
Diagnostiquer les pannes de l'assistant
- Aucun modèle configuré : inspecter
/api/ai/statuset/api/ai/providers, puis définissez une clé pour un fournisseur répertorié. Un indicateur configuré prouve qu'une clé stockée existe, et non que le fournisseur l'a acceptée. - Fournisseur inconnu ou URL invalide : utilisez un ID de fournisseur annoncé et une URL de base HTTP(S). Un fournisseur direct non intégré a besoin d'un point de terminaison compatible en plus de sa clé.
- Séance inaccessible : récupérer en utilisant l'identité d'origine du projet/compte/session. N'inventez pas d'ID de projet de remplacement pour une session hôte existante.
- Un tour attend indéfiniment : inspectez l’état du contrôle de session pour les autorisations ou les questions en attente avant de réessayer une invite en double. Utilisez l'abandon explicite pour annuler le tour et rejoindre ses ouvriers.
- Un outil a en partie modifié le modèle : inspecter son
tool_diagnostic, y comprismutationApplied, puis lisez le dessin actuel. Réessayer une action de modification sans inspecter son résultat peut dupliquer la géométrie.
Les résultats de l’outil et les échecs typés préservent l’étape qui a échoué. Une erreur du fournisseur après la réussite des outils n’annule pas ces mutations de projet. Les vérifications déterministes de CAM et d'historique restent disponibles séparément de la réponse du modèle.
Référence du point de terminaison de l'Assistant
Tous les itinéraires assistants se trouvent sous /api/ai et nécessitent le jeton du porteur d'application. Un jeton de pont pour un nikcli autonome ouvre uniquement la liste des actions et les routes d'invocation, et uniquement pour son projet.
| Itinéraire | But |
|---|---|
POST /api/ai/chat/stream | Démarrez un tour de streaming ; la réponse est un flux SSE d'événements d'assistant. |
POST /api/ai/chat/queue | Mettez en file d’attente un message de suivi pour une session occupée. |
POST /api/ai/chat/abort | Abandonner le tour en cours d’une session. |
POST /api/ai/permission/reply | Répondez à une demande d'autorisation : once, always, ou reject. |
POST /api/ai/sessions/state, /sessions/control, /sessions/remove | Lire l'état de la session, contrôler une session, en supprimer une. |
GET /api/ai/status, /models, /providers, /agents, /prompts | Découverte : état de préparation, catalogue de modèles, fournisseurs avec leur état de configuration, agents spécialisés, suggestions rapides. |
PUT /api/ai/credentials, DELETE /api/ai/credentials/:provider | Stockez ou effacez les informations d’identification du fournisseur. |
GET/PUT /api/ai/skills, DELETE /api/ai/skills/:name | Répertoriez, enregistrez et supprimez les compétences des utilisateurs. |
GET /api/ai/actions, POST /api/ai/actions/invoke | Catalogue d'actions et invocation directe (également utilisé par le pont nikcli). |
GET/POST /api/ai/bridge/tokens, DELETE /api/ai/bridge/tokens/:id | Émettez, répertoriez et révoquez les jetons de pont étendus. |
POST /api/ai/completion | Achèvement unique : prompt, systemPrompt, model, temperature; retours text et model. |
POST /api/ai/title | Titre d'un extrait de conversation. |
POST /api/ai/design-analysis | Suggestions avec confidence, priority (faible/moyen/élevé), et kind (optimisation/avertissement/critique). |
POST /api/ai/machining-parameters | Cutting speed (m/min), feed (mm/min), depth of cut (mm), stepover (%), coolant (flood/mist/none), engagement (conventional/climb), and warnings. |
POST /api/ai/gcode-optimization | G-code optimisé avec modifications et raisons par ligne, estimations des économies de temps et de durée de vie de l'outil, ainsi que des notes. |
POST /api/ai/design-suggestions | Suggestions pour la prochaine étape avec titre, justification et étape suivante. |
POST /api/ai/analyze-gcode | Problèmes (erreur/avertissement/info avec code, ligne et message) et statistiques : lignes, mouvements rapides et coupés, changements d'outils et limites. |
POST /api/ai/gcode, /toolpath-analysis, /feedback, /proxy | Actions G-code, informations sur le parcours d'outil, commentaires et proxy du fournisseur. |
Les réponses d'analyse basées sur un modèle sont des résultats du modèle sous une forme typée. Les valeurs telles que les paramètres d'usinage sont des suggestions à examiner par rapport aux données d'outillage et aux limites de la machine, et non à des données de coupe vérifiées.
Champs de demande de streaming
| Champ | Valeurs | Effect |
|---|---|---|
message | chaîne | Le message de l'utilisateur pour ce tour. |
sessionId | chaîne | Continuer une session existante ; omettez d’en démarrer un nouveau. |
projectId | chaîne | Projet dont le contexte et les outils sont utilisés par le tour. |
drawingId | chaîne | Le tirage de ce tour peut agir. Il est vérifié par rapport au projet avant que le tour ne soit admis, et les outils du tour agissent sur ce dessin et rien d'autre. |
mode | general, cad, cam, gcode, toolpath | Focus du virage. |
permissionMode | auto, ask, approve | Comment les autorisations des outils sont demandées. |
agent | chaîne | Nom de l'agent spécialisé de /api/ai/agents. |
attachments | [{ name, mime?, data, encoding?: "base64" | "text" }] | Jusqu'à 5 pièces jointes : images jusqu'à 5 Mo, fichiers PDF jusqu'à 10 Mo et texte jusqu'à 2,000,000 caractères (les fichiers texte jusqu'à 6,000 caractères sont également écrits dans le message). |
context, includeContext | chaîne, booléen | Texte de contexte supplémentaire et s'il faut inclure le contexte du projet assemblé. |
model | sélecteur de modèle | Remplacez le modèle configuré pour ce tour. |
Limites et valeurs par défaut
| Limite | Valeur |
|---|---|
| Budget contextuel assemblé | 24,000 caractères ; un bloc qui ne rentre pas est tronqué avec un marqueur, et un bloc qui serait coupé en dessous de 400 caractères est laissé de côté. |
| Document de contexte du projet | Jusqu'à 8,000 caractères stockés, 2,000 envoyés au modèle |
| Mémoire du projet / habitudes des utilisateurs | 1,500 caractères chacun |
| Notes de projet | Élagué après 90 jours lorsqu'il n'est pas référencé par le contexte du projet |
| Sortie de l'outil envoyée au modèle | 24,000 caractères |
| Éléments créés par appel | 40 |
| Jetons de sortie | 32,000 maximum |
| Pulsation | Toutes les 5 secondes pendant que le flux est actif |
| Actions de géométrie exacte | 60-deuxième budget ; rapports exacts 1.5 secondes |
| Emplois Kernel | Délai de 120 secondes, démarrage du travailleur inclus |
| Tâches en arrière-plan | 4 actifs, 16 en file d'attente, 2 tentatives de tâches de lecture, tâches réglées conservées 7 jours |
| Suite automatique | 50 par requête ; La connexion de 5 reprend avec une interruption de 2–30 |
| Nouvelles tentatives d'appel direct | 5 appels, dont le premier ; 2 s double à 30 s, honorant retry-after |
| Compétences des utilisateurs | 50 compétences ; nom jusqu'à 64 caractères (mots minuscules joints par des traits d'union), description jusqu'à 300, corps jusqu'à 20,000 |
| Récupération de recherche sur le Web | 256 Ko par réponse |
| Jetons de pont | 30 jours par défaut, 365 jours maximum |
Lisez le résultat, pas la prose
Le résultat d'un outil est dans tool_result et tool_diagnostic événements. Vérifiez si une mutation a été appliquée avant de vous fier au résumé de l'assistant sur ce qu'elle a fait.
Le catalogue complet des actions
L'assistant agit à travers 83 actions déclarées dans 13 familles. Chaque action déclare son schéma de résultat et son effets: ce qu'il change ou va au-delà de la lecture du document ouvert. Lire les familles (cad, cam, library, memory, research, vcs) n’ont pour la plupart aucun effet ; leur _edit les homologues changent d’état persistant. Les effets sont répertoriés entre parenthèses.
| Famille | Compter | Actions (effets) |
|---|---|---|
cad | 20 | describe, check, relations, grep, vision (interface), inspect_elements, inspect_layers, inspect_search, inspect_property, drawing, parametric_validate, parametric_inspect, parametric_test, parametric_dfm, parametric_exact, exact, assembly, parametric_fastener, parametric_recipe, parametric_from_element |
cad_edit | 12 | add (dessin), add_entities (dessin), modify (dessin), transform (dessin), group (dessin), delete (dessin), editor (interface+dessin), import (dessin), parametric_create (dessin), parametric_update (dessin), parametric_recipe_create (dessin), parametric_convert (dessin) |
cam | 14 | plan_check, review, machine, operations, suggest, compare_setups, analyze, stock, vision (interface), chain_suggest, materials, cutting_data, manufacture, chain_status |
cam_edit | 6 | manufacture (opération+programme), create (opération), update (opération), generate (programme), verify (rapport), stock_set (action) |
library | 5 | component_list, lookup_component, lookup_material, lookup_tool, lookup_machine_config |
parts | 3 | save (composant), insert (dessin), delete (composant) |
library_edit | 5 | upsert_material (bibliothèque), upsert_tool (bibliothèque), upsert_machine_config (bibliothèque), set_default (bibliothèque), delete (bibliothèque) |
memory | 2 | recall, context_read |
memory_edit | 2 | remember (mémoire), context_update (contexte) |
research | 2 | search (externe), read_attachment |
vcs | 3 | status, diff, list_pull_requests |
vcs_edit | 5 | start_change (histoire), commit (histoire), restore (histoire+dessin), open_pull_request (histoire), run_workflows (flux de travail) |
agent | 4 | start (tâche), list, read, cancel (tâche) |
| Effect | Signification |
|---|---|
drawing, component, operation, program, stock, report | Données de conception ou de fabrication persistantes |
library, memory, context | Enregistrements de bibliothèque, mémoire de projet, contexte d'espace de travail |
history, workflow | Contrôle de version et exécutions de flux de travail |
task | Le planificateur de délégation (agents d'arrière-plan) |
interface | L'éditeur ou la fenêtre à l'écran ; pas persistant |
external | Le réseau (recherche web) |
Une action de lecture ne peut avoir interface ou external; chaque écriture nomme au moins un effet persistant. Les effets sont déclarés par action et jamais déduits de l'outil qui l'implémente.
Comment se termine un appel à l'action
| Résultat | Quand |
|---|---|
succeeded | L'action a fait ce qui était demandé. Inclut les lectures avec un résultat négatif, tel qu'une vérification échouée. |
partial | Une partie de la réponse ou un lot : complete: false, omitted > 0, non vide skipped, ou un nextOffset page sur |
refused | Rien de fait : ok: false avec une erreur ou un tag (saisie invalide, refusée, indisponible, rien à faire) |
conflict | Le document continue : ActionConflict ou statut stale/conflict. Inspectez à nouveau avant de réessayer. |
cancelled | ActionInterrupted |
uncertain | ActionUncertain: une écriture peut avoir été validée mais sa réponse n'a pas pu être lue. Réconcilier en inspectant ; ne réessayez jamais aveuglément. |
Les écritures sont liées à une révision de dessin. Une écriture validée renvoie un ActionCommitted reçu avec previousRevision et revision; une écriture contre un rassis expectedRevision retours ActionConflict avec les deux expectedRevision et actualRevision. Le même classement (actionOutcome) est partagé par l'hôte, le mode Code, le bureau et le pont.
{
"ok": false,
"_tag": "ActionConflict",
"actionId": "cad_edit.modify",
"projectId": "…", "drawingId": "…",
"expectedRevision": 41, "actualRevision": 42,
"message": "…"
}