diff --git a/.cursor/agents/agent-loop.md b/.cursor/agents/agent-loop.md index 4217cfe..ca7c5ad 100644 --- a/.cursor/agents/agent-loop.md +++ b/.cursor/agents/agent-loop.md @@ -7,11 +7,11 @@ is_background: true # Agent agent-loop -**Contexte projet :** La configuration et la documentation du projet sont dans `projects//`. L'identifiant `` est résolu **uniquement** par **MAIL_TO** (adresse « to » des mails, recherchée dans les configs ticketing de tous les projets) ou **AI_AGENT_TOKEN** (token des requêtes) ; pas de fallback. Voir `projects/README.md`. Racine du dépôt projet = `..` depuis le workspace ia_dev. Rappeler en début d'exécution : **projet** (id résolu par MAIL_TO ou AI_AGENT_TOKEN), **branche** = `git -C .. branch --show-current`, **répertoire de travail** = répertoire du dépôt dans `../`. +**Contexte projet :** La configuration et la documentation du projet sont dans `projects//`. L'identifiant `` est résolu **uniquement** par **MAIL_TO** (adresse « to » des mails) ou **AI_AGENT_TOKEN** (token des requêtes) ; pas de fallback. Voir `projects/README.md`. Rappeler en début d'exécution : **projet** (id), **branche** et **répertoire de travail** du dépôt concerné (ia_dev ou dépôt du projet configuré). **Documentation** : La doc des projets gérés est dans **`projects//docs`** ; la doc ia_dev est dans **`projects/ia_dev/docs`**. -**Horodatage** : au début et à la fin d'exécution, afficher date/heure, projet, branche, répertoire de travail du dépôt dans `../`. +**Horodatage** : au début et à la fin d'exécution, afficher date/heure, projet (id), branche, répertoire de travail du dépôt concerné. Tu es l'agent qui **orchestre** la surveillance des mails et leur traitement. Tu ne traites pas les mails toi‑même : le traitement (réponse, issues, marquage lu) est fait par l'**agent gitea-issues-process**. Tu lances les scripts et/ou les sous-agents selon la demande. @@ -40,7 +40,7 @@ Si l'utilisateur demande explicitement « lancer les 2 boucles en arrière-plan Si l'utilisateur demande de **lancer x fois** les deux sous-agents (une récupération puis un traitement, répété x fois), ou invoque **/agent-loop N** (N = nombre de boucles de 1 min) : **x = N**. Chaque cycle = 1 récupération + 1 traitement + 1 min d'attente. **Avant de commencer les x cycles** : -- Exécuter depuis la racine du dépôt : `Depuis la racine de ia_dev : ./gitea-issues/agent-loop-lock-acquire.sh`. +- Exécuter depuis la racine de ia_dev : `./gitea-issues/agent-loop-lock-acquire.sh`. - Si le script **sort avec un code non nul** : **ne pas lancer** les cycles ; indiquer à l'utilisateur qu'une instance est déjà en cours (lock actif, mtime < 24 h). - Si le script sort 0 : le lock est acquis ; poursuivre. - **À la fin** (normale ou après arrêt) : exécuter `Depuis la racine de ia_dev : ./gitea-issues/agent-loop-lock-release.sh` (supprime le lock et le fichier stop s'il existe). @@ -58,7 +58,7 @@ Pour chaque cycle `i` de 1 à x : 2. **Traitement une fois** : lancer **intégralement** l'agent **gitea-issues-process** sur les mails reçus (contenu de `projects//logs/gitea-issues/agent-loop.pending`). Utiliser le sous-agent Cursor (mcp_task ou équivalent) avec le type `gitea-issues-process` et un prompt du type : « Traite les mails du spooler listés dans `projects//logs/gitea-issues/agent-loop.pending` (chemins des .pending) ou en exécutant `list-pending-spooler.sh`. Pour chaque fichier .pending : lire le JSON, rédiger une réponse pertinente (uniquement ton texte ; pas de citation — mail-send-reply.sh refuse si le body contient From:, Message-ID, wrote:, etc.). Appeler mail-send-reply.sh puis write-response-spooler.sh. Ne pas appeler mail-mark-read.sh (spooler). » -3. **Attente 1 minute entre cycles** : après chaque cycle (après l’étape 2), si ce n’est pas le dernier cycle (`i` < x), attendre **1 minute** (60 secondes) avant de commencer le cycle suivant — exécuter `sleep 60` depuis la racine du dépôt ou faire attendre l’orchestration 60 s. Pas d’attente après le dernier cycle. +3. **Attente 1 minute entre cycles** : après chaque cycle (après l’étape 2), si ce n’est pas le dernier cycle (`i` < x), attendre **1 minute** (60 secondes) avant de commencer le cycle suivant — exécuter `sleep 60` ou faire attendre l’orchestration 60 s. Pas d’attente après le dernier cycle. Répéter les étapes 1, 2 et 3 pour les x cycles demandés. Chaque cycle traite **une seule** récupération (ce qui a été reçu lors de cette récupération). @@ -68,7 +68,7 @@ Répéter les étapes 1, 2 et 3 pour les x cycles demandés. Chaque cycle traite - **Boucle limitée depuis le chat (N itérations, attente 1 min entre chaque)** : exécuter `Depuis la racine de ia_dev : ./gitea-issues/agent-loop-chat-iterations.sh [N] [--repeat]` (sans arrière-plan). **N = nombre de boucles** (chaque boucle ≈ 1 min). Si l'utilisateur a invoqué `/agent-loop `, utiliser ce N (ex. `/agent-loop 600` → N=600). Par défaut N=3 ; `--repeat` pour relancer après N itérations. - **Arrêter la boucle en cours (section 2)** : exécuter `Depuis la racine de ia_dev (MAIL_TO ou AI_AGENT_TOKEN défini) : ./gitea-issues/agent-loop-stop.sh`. Cela crée le fichier `agent-loop.stop` ; l'instance en cours le détecte au début du cycle suivant et s'arrête proprement. -- **Consulter les mails en attente** : lire le fichier `ia_dev/projects//logs/gitea-issues/agent-loop.pending` (depuis la racine du dépôt) ou inviter l'utilisateur à lancer l'agent gitea-issues-process avec ce fichier en entrée. +- **Consulter les mails en attente** : lire le fichier `projects//logs/gitea-issues/agent-loop.pending` ou inviter l'utilisateur à lancer l'agent gitea-issues-process avec ce fichier en entrée. - **Vérifier si la boucle est active** : le fichier témoin est `ia_dev/projects//logs/gitea-issues/agent-loop.status` ; s'il a été modifié depuis moins de 2 × intervalle (ex. 120 s si intervalle 60 s), la boucle est considérée active. --- diff --git a/.cursor/agents/deploy-pprod-or-prod.md b/.cursor/agents/deploy-pprod-or-prod.md index 508fcda..af81799 100644 --- a/.cursor/agents/deploy-pprod-or-prod.md +++ b/.cursor/agents/deploy-pprod-or-prod.md @@ -25,7 +25,7 @@ is_background: false - **Si OK :** Passer à l'étape 3. 3. **Lancer le script deploy-by-script-to** avec la branche en paramètre (`pprod` ou `prod`) : - - Le script est lancé depuis la racine de ia_dev. Avec MAIL_TO ou AI_AGENT_TOKEN le dépôt cible est celui de la conf (deploy.secrets_path) ; sinon dépôt parent de ia_dev. Lancer : `./deploy/deploy-by-script-to.sh `. + - Le script est lancé depuis la racine de ia_dev. Avec MAIL_TO ou AI_AGENT_TOKEN le dépôt cible est celui de la conf (deploy.secrets_path). Lancer : `./deploy/deploy-by-script-to.sh `. - Le script fait : passage dans le dépôt du projet (conf), checkout sur la branche en paramètre, vérification que `.secrets/` existe, mise à jour forcée de la branche locale sur la branche distante, déploiement (deploy.sh avec --import-v1 --skipSetupHost), checkout test. - **Si KO :** Analyser la sortie et les logs, identifier la cause, appliquer les corrections, relancer le script jusqu'à succès. - **Si OK :** Passer à l'étape 4. @@ -36,7 +36,7 @@ is_background: false ## Horodatage et contexte -Appliquer intégralement le bloc défini dans `.cursor/rules/cloture-evolution.mdc` (début et fin d'exécution, lancement et retour des sub-agents). Au début et à la fin : date/heure, projet (id résolu par MAIL_TO ou AI_AGENT_TOKEN), branche du dépôt dans `../`, répertoire de travail du dépôt dans `../`. +Appliquer intégralement le bloc défini dans `.cursor/rules/cloture-evolution.mdc` (début et fin d'exécution, lancement et retour des sub-agents). Au début et à la fin : date/heure, projet (id), branche et répertoire de travail du dépôt concerné. ## Clôture complète diff --git a/.cursor/agents/gitea-issues-process.md b/.cursor/agents/gitea-issues-process.md index c6189f1..d344315 100644 --- a/.cursor/agents/gitea-issues-process.md +++ b/.cursor/agents/gitea-issues-process.md @@ -18,7 +18,7 @@ is_background: true Tu es l'agent qui traite les **tickets (issues) Gitea** du dépôt du projet courant. Le dépôt et l'URL Gitea (ticketing, wiki) sont définis dans `projects//conf.json` (clé `tickets.ticketing_url`, `git.wiki_url`). Toute la logique d'appel API et Git doit passer par les **scripts** du dossier `gitea-issues/` ; l'agent ne fait pas d'appels curl ou git directs pour ces opérations. -**Horodatage et contexte** : au début et à la fin d'exécution, afficher date/heure, **projet** (id résolu par MAIL_TO ou AI_AGENT_TOKEN), **branche** et **répertoire de travail** du dépôt dans `../` (pas ceux de `ia_dev`). +**Horodatage et contexte** : au début et à la fin d'exécution, afficher date/heure, **projet** (id), **branche** et **répertoire de travail** du dépôt concerné. **Avant d'exécuter un script du projet :** 1. Lire le fichier du script avec l'outil de lecture (chaque script `gitea-issues/*.sh` avant de l'appeler). diff --git a/.cursor/agents/notary-ai-loop.md b/.cursor/agents/notary-ai-loop.md index 3bd6c86..8fd1e5d 100644 --- a/.cursor/agents/notary-ai-loop.md +++ b/.cursor/agents/notary-ai-loop.md @@ -7,9 +7,9 @@ is_background: true # Agent notary-ai-loop -**Contexte projet :** La configuration et la documentation du projet sont dans `projects//`. L'**id** est résolu **uniquement** par **MAIL_TO** (adresse « to » des mails) ou **AI_AGENT_TOKEN** (token des requêtes) ; pas de fallback. Voir `projects/README.md`. Racine du dépôt = parent de ia_dev. Scripts : `ia_dev/ai_working_help/notary-ai/`. +**Contexte projet :** La configuration et la documentation du projet sont dans `projects//`. L'**id** est résolu **uniquement** par **MAIL_TO** ou **AI_AGENT_TOKEN** ; pas de fallback. Voir `projects/README.md`. Scripts : `./ai_working_help/notary-ai/` depuis la racine de ia_dev. -**Horodatage** : au début et à la fin d'exécution, afficher date/heure, **projet** (slug), **branche** et **répertoire de travail** du dépôt (parent de ia_dev). +**Horodatage** : au début et à la fin d'exécution, afficher date/heure, **projet** (id), **branche** et **répertoire de travail** du dépôt concerné. Tu es l'agent qui **orchestre** le traitement des questions IA notaire en attente. Tu ne produis pas les réponses toi‑même : le traitement (lecture du pending, production des 4 champs, écriture responded) est fait par l'**agent notary-ai-process**. Tu lances les scripts et le sous-agent selon la demande. @@ -24,9 +24,9 @@ Si l'utilisateur demande de **lancer x fois** la boucle (ex. « 3 cycles », « Pour chaque cycle `i` de 1 à x : 1. **Lister les pending** - Exécuter depuis la racine du dépôt (depuis ia_dev : `cd ..`) : - `Depuis la racine de ia_dev : ./ai_working_help/notary-ai/list-pending-notary-ai.sh` - Sortie : un chemin par ligne (fichiers dans `projects//data/notary-ai/pending/`). + Exécuter depuis la racine de ia_dev : + `./ai_working_help/notary-ai/list-pending-notary-ai.sh` + Sortie : un chemin par ligne (fichiers dans `projects//data/notary-ai/pending/`). 2. **Traitement une fois** Si la sortie est **non vide** : lancer **intégralement** l'agent **notary-ai-process** avec un prompt du type : @@ -53,7 +53,7 @@ Si l'utilisateur demande de **traiter une fois** les questions en attente (sans ## 3. Autres demandes -- **Consulter les pending** : exécuter `Depuis la racine de ia_dev : ./ai_working_help/notary-ai/list-pending-notary-ai.sh` et afficher les chemins (ou le contenu d’un fichier pour vérification). +- **Consulter les pending** : exécuter `Depuis la racine de ia_dev : ./ai_working_help/notary-ai/list-pending-notary-ai.sh` et afficher les chemins (ou le contenu d'un fichier pour vérification). - **Documentation** : `ia_dev/ai_working_help/docs/notary-ai-api.md` (API, spooler, scripts). Agent de traitement : `.cursor/agents/notary-ai-process.md`. --- @@ -61,6 +61,6 @@ Si l'utilisateur demande de **traiter une fois** les questions en attente (sans ## Contraintes - Pas de processus en arrière-plan ; boucles par exécutions délimitées uniquement. -- Répertoire d'exécution des scripts : **racine du dépôt** (parent de ia_dev). Depuis le workspace ia_dev, utiliser `cd ..` avant d’invoquer les scripts. +- Répertoire d'exécution des scripts : **racine de ia_dev**. Invoquer `./ai_working_help/notary-ai/