fix(agents): LF + heredocs, charge .env conteneur, nettoyage rapports
This commit is contained in:
parent
a5c9c6c742
commit
8316746724
16
docker-compose.dev.yml
Normal file
16
docker-compose.dev.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
version: "3.8"
|
||||||
|
services:
|
||||||
|
dev:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: docker/Dockerfile.debian
|
||||||
|
image: 4nk-template-dev:debian
|
||||||
|
container_name: 4nk-template-dev
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
||||||
|
working_dir: /work
|
||||||
|
volumes:
|
||||||
|
- ./:/work
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
entrypoint: ["/bin/bash","-lc"]
|
||||||
|
command: ["sleep infinity"]
|
@ -3,9 +3,8 @@ FROM debian:12-slim
|
|||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends \
|
&& apt-get install -y --no-install-recommends \
|
||||||
bash curl jq ca-certificates git \
|
bash curl jq ca-certificates git docker.io docker-compose-plugin \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
WORKDIR /work
|
WORKDIR /work
|
||||||
ENTRYPOINT ["/bin/bash","-lc"]
|
ENTRYPOINT ["/bin/bash","-lc"]
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ services:
|
|||||||
container_name: gitea-act-runner
|
container_name: gitea-act-runner
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
env_file:
|
env_file:
|
||||||
- ${HOME}/4nk_template/.env
|
- ${USERPROFILE}/.4nk_template/.env
|
||||||
environment:
|
environment:
|
||||||
- GITEA_RUNNER_LABELS=${RUNNER_LABELS:-self-hosted,linux}
|
- GITEA_RUNNER_LABELS=${RUNNER_LABELS:-self-hosted,linux}
|
||||||
- GITEA_RUNNER_NAME=${RUNNER_NAME:-local-runner}
|
- GITEA_RUNNER_NAME=${RUNNER_NAME:-local-runner}
|
||||||
|
@ -4,6 +4,14 @@ set -euo pipefail
|
|||||||
# Utilitaire générique pour appeler l'API OpenAI Chat Completions.
|
# Utilitaire générique pour appeler l'API OpenAI Chat Completions.
|
||||||
# Prérequis: variable d'environnement OPENAI_API_KEY et curl.
|
# Prérequis: variable d'environnement OPENAI_API_KEY et curl.
|
||||||
|
|
||||||
|
# Chargement env utilisateur (~/.4nk_template/.env) pour exécutions locales/CI docke
|
||||||
|
"$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/env/ensure_env.sh" || true
|
||||||
|
if [[ -f "${HOME}/.4nk_template/.env" ]]; then
|
||||||
|
set -a
|
||||||
|
. "${HOME}/.4nk_template/.env"
|
||||||
|
set +a
|
||||||
|
fi
|
||||||
|
|
||||||
for bin in curl jq; do
|
for bin in curl jq; do
|
||||||
if ! command -v "$bin" >/dev/null 2>&1; then
|
if ! command -v "$bin" >/dev/null 2>&1; then
|
||||||
echo "$bin manquant. Installez $bin." >&2
|
echo "$bin manquant. Installez $bin." >&2
|
||||||
|
@ -16,11 +16,11 @@ else
|
|||||||
echo "- Étapes de compilation non détectées dans la CI (à ajouter si nécessaire)." >> "$SUMMARY_FILE"
|
echo "- Étapes de compilation non détectées dans la CI (à ajouter si nécessaire)." >> "$SUMMARY_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Précise une cadence de compilation (avant refactor/push, après update deps) et les conditions de blocage si erreurs.
|
Précise une cadence de compilation (avant refactor/push, après update deps) et les conditions de blocage si erreurs.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -15,11 +15,11 @@ if grep -q "security-audit" .gitea/workflows/ci.yml 2>/dev/null; then
|
|||||||
echo "- Job CI security-audit détecté." >> "$SUMMARY_FILE"
|
echo "- Job CI security-audit détecté." >> "$SUMMARY_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Établis une politique de dépendances: ajout automatique si justifié, vérification des dernières versions stables, documentation des impacts (ARCHITECTURE, CONFIGURATION, CHANGELOG), et rollback.
|
Établis une politique de dépendances: ajout automatique si justifié, vérification des dernières versions stables, documentation des impacts (ARCHITECTURE, CONFIGURATION, CHANGELOG), et rollback.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -17,11 +17,11 @@ for f in docs/DEPLOYMENT.md docs/RELEASE_PLAN.md .gitea/workflows/ci.yml; do
|
|||||||
done
|
done
|
||||||
if [[ $ok -eq 1 ]]; then echo "- Pré‑requis documentaires présents." >> "$SUMMARY_FILE"; fi
|
if [[ $ok -eq 1 ]]; then echo "- Pré‑requis documentaires présents." >> "$SUMMARY_FILE"; fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Établis une checklist de déploiement minimale (pré‑checks, variables, smoke tests, rollback, post‑deploy) adaptée à un template CI Gitea.
|
Établis une checklist de déploiement minimale (pré‑checks, variables, smoke tests, rollback, post‑deploy) adaptée à un template CI Gitea.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -16,11 +16,11 @@ else
|
|||||||
echo "- Aucun fichier de dérogations locales détecté." >> "$SUMMARY_FILE"
|
echo "- Aucun fichier de dérogations locales détecté." >> "$SUMMARY_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Définis un format pour enregistrer les dérogations (path, raison, propriétaire, échéance), tolérance CI, et revue périodique.
|
Définis un format pour enregistrer les dérogations (path, raison, propriétaire, échéance), tolérance CI, et revue périodique.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -22,11 +22,11 @@ else
|
|||||||
for m in "${missing[@]}"; do echo " - $m" >> "$SUMMARY_FILE"; done
|
for m in "${missing[@]}"; do echo " - $m" >> "$SUMMARY_FILE"; done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Élabore une liste courte d’améliorations documentation (INDEX à jour, traçabilité changes ↔ CHANGELOG, sections sécurité/tests/déploiement).
|
Élabore une liste courte d’améliorations documentation (INDEX à jour, traçabilité changes ↔ CHANGELOG, sections sécurité/tests/déploiement).
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -19,11 +19,11 @@ else
|
|||||||
echo "- Utiliser docx2txt pour extraction et documenter dans docs/INDEX.md" >> "$SUMMARY_FILE"
|
echo "- Utiliser docx2txt pour extraction et documenter dans docs/INDEX.md" >> "$SUMMARY_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Décris une procédure standard de traitement des .docx (docx2txt, import, traçabilité dans docs/INDEX.md) et les risques à éviter.
|
Décris une procédure standard de traitement des .docx (docx2txt, import, traçabilité dans docs/INDEX.md) et les risques à éviter.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -18,11 +18,11 @@ else
|
|||||||
echo "$csvs" | sed 's/^/ - /' >> "$SUMMARY_FILE"
|
echo "$csvs" | sed 's/^/ - /' >> "$SUMMARY_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
À partir des CSV présents (en‑têtes multi‑lignes possibles), propose une méthode pour définir toutes les colonnes, types et validations, et pointer vers les docs à mettre à jour (API, ARCHITECTURE, USAGE).
|
À partir des CSV présents (en‑têtes multi‑lignes possibles), propose une méthode pour définir toutes les colonnes, types et validations, et pointer vers les docs à mettre à jour (API, ARCHITECTURE, USAGE).
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -18,11 +18,11 @@ done
|
|||||||
|
|
||||||
if [[ $issues -eq 0 ]]; then echo "- Conformité éditoriale de base: OK (présence des fichiers clés)." >> "$SUMMARY_FILE"; fi
|
if [[ $issues -eq 0 ]]; then echo "- Conformité éditoriale de base: OK (présence des fichiers clés)." >> "$SUMMARY_FILE"; fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Évalue la conformité éditoriale (français, pas d’exemples applicatifs, intro/conclusion) et liste 5 actions d’amélioration priorisées.
|
Évalue la conformité éditoriale (français, pas d’exemples applicatifs, intro/conclusion) et liste 5 actions d’amélioration priorisées.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -9,12 +9,12 @@ SUMMARY_FILE="$OUTPUT_DIR/frontend_agent.md"
|
|||||||
echo "# Agent Frontend" > "$SUMMARY_FILE"
|
echo "# Agent Frontend" > "$SUMMARY_FILE"
|
||||||
echo >> "$SUMMARY_FILE"
|
echo >> "$SUMMARY_FILE"
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Définis des principes front: code splitting (React.lazy/Suspense), centralisation d’état (Redux/Context), abstraction des services, et tests associés.
|
Définis des principes front: code splitting (React.lazy/Suspense), centralisation d’état (Redux/Context), abstraction des services, et tests associés.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
pushd "$TARGET_DIR" >/dev/null
|
pushd "$TARGET_DIR" >/dev/null
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -20,11 +20,11 @@ else
|
|||||||
echo "- Manquants:" >> "$SUMMARY_FILE"; for m in "${missing[@]}"; do echo " - $m" >> "$SUMMARY_FILE"; done
|
echo "- Manquants:" >> "$SUMMARY_FILE"; for m in "${missing[@]}"; do echo " - $m" >> "$SUMMARY_FILE"; done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Propose des vérifications CI additionnelles Gitea (lint, tests, sécurité, scripts exécutables) et notifications en cas d’échecs.
|
Propose des vérifications CI additionnelles Gitea (lint, tests, sécurité, scripts exécutables) et notifications en cas d’échecs.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -20,11 +20,11 @@ else
|
|||||||
echo "- Manquants:" >> "$SUMMARY_FILE"; for m in "${missing[@]}"; do echo " - $m" >> "$SUMMARY_FILE"; done
|
echo "- Manquants:" >> "$SUMMARY_FILE"; for m in "${missing[@]}"; do echo " - $m" >> "$SUMMARY_FILE"; done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Propose une checklist pour préparer l’ouverture open source (gouvernance, CI, sécurité, documentation) compatible avec Gitea.
|
Propose une checklist pour préparer l’ouverture open source (gouvernance, CI, sécurité, documentation) compatible avec Gitea.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -16,11 +16,11 @@ else
|
|||||||
echo "- Dossier tests/performance manquant." >> "$SUMMARY_FILE"
|
echo "- Dossier tests/performance manquant." >> "$SUMMARY_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Propose un plan minimal de tests de performance reproductibles (outillage, métriques, critères de succès) et archivage des rapports.
|
Propose un plan minimal de tests de performance reproductibles (outillage, métriques, critères de succès) et archivage des rapports.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -1,6 +1,14 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Chargement env utilisateur (~/.4nk_template/.env)
|
||||||
|
"$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/env/ensure_env.sh" || true
|
||||||
|
if [[ -f "${HOME}/.4nk_template/.env" ]]; then
|
||||||
|
set -a
|
||||||
|
. "${HOME}/.4nk_template/.env"
|
||||||
|
set +a
|
||||||
|
fi
|
||||||
|
|
||||||
TARGET_DIR="${1:-.}"
|
TARGET_DIR="${1:-.}"
|
||||||
OUTPUT_DIR="${2:-tests/reports/agents}"
|
OUTPUT_DIR="${2:-tests/reports/agents}"
|
||||||
mkdir -p "$OUTPUT_DIR"
|
mkdir -p "$OUTPUT_DIR"
|
||||||
@ -21,11 +29,11 @@ if [[ $issues -eq 0 ]]; then
|
|||||||
echo "- Aucun problème formel bloquant détecté." >> "$SUMMARY_FILE"
|
echo "- Aucun problème formel bloquant détecté." >> "$SUMMARY_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Évalue la qualité formelle (français uniquement, typographie, absence d’exemples applicatifs, intro/conclusion) et propose 5 recommandations priorisées.
|
Évalue la qualité formelle (français uniquement, typographie, absence d’exemples applicatifs, intro/conclusion) et propose 5 recommandations priorisées.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -1,6 +1,14 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Chargement env utilisateur (~/.4nk_template/.env)
|
||||||
|
"$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/env/ensure_env.sh" || true
|
||||||
|
if [[ -f "${HOME}/.4nk_template/.env" ]]; then
|
||||||
|
set -a
|
||||||
|
. "${HOME}/.4nk_template/.env"
|
||||||
|
set +a
|
||||||
|
fi
|
||||||
|
|
||||||
TARGET_DIR="${1:-.}"
|
TARGET_DIR="${1:-.}"
|
||||||
OUTPUT_DIR="${2:-tests/reports/agents}"
|
OUTPUT_DIR="${2:-tests/reports/agents}"
|
||||||
mkdir -p "$OUTPUT_DIR"
|
mkdir -p "$OUTPUT_DIR"
|
||||||
@ -74,11 +82,11 @@ if [[ "$HAS_SHELL_PWSH" -eq 1 && "$HAS_PWSH" -eq 1 ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# IA (optionnelle)
|
# IA (optionnelle)
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Analyse la conformité qualité technique du dépôt selon AGENTS.md et la CI. Priorise: lint/format/type-check, structure de tests, cohérence docs/CI, sécurité basique. Propose 5 actions concrètes.
|
Analyse la conformité qualité technique du dépôt selon AGENTS.md et la CI. Priorise: lint/format/type-check, structure de tests, cohérence docs/CI, sécurité basique. Propose 5 actions concrètes.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -16,11 +16,11 @@ else
|
|||||||
echo "- Dossier archive/ manquant (recommandé pour REX)." >> "$SUMMARY_FILE"
|
echo "- Dossier archive/ manquant (recommandé pour REX)." >> "$SUMMARY_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Décris la boucle de triage complète (repro minimale, logs, bissection, hypothèses, tests ciblés, correctif, non‑régression) et quand produire un REX.
|
Décris la boucle de triage complète (repro minimale, logs, bissection, hypothèses, tests ciblés, correctif, non‑régression) et quand produire un REX.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -62,7 +62,7 @@ switch ($Agent) {
|
|||||||
$required = @('LICENSE','CONTRIBUTING.md','CODE_OF_CONDUCT.md','docs/OPEN_SOURCE_CHECKLIST.md')
|
$required = @('LICENSE','CONTRIBUTING.md','CODE_OF_CONDUCT.md','docs/OPEN_SOURCE_CHECKLIST.md')
|
||||||
foreach ($f in $required) { if (-not (Test-Path $f)) { $missing += $f } }
|
foreach ($f in $required) { if (-not (Test-Path $f)) { $missing += $f } }
|
||||||
$content = @('# Agent Open Source', '', '## Résultats (fallback PowerShell)')
|
$content = @('# Agent Open Source', '', '## Résultats (fallback PowerShell)')
|
||||||
if ($missing.Count -eq 0) { $content += '- Pré‑requis open source présents.' }
|
if ($missing.Count -eq 0) { $content += '- Pre-requis open source présents.' }
|
||||||
else { $content += '- Manquants:'; $missing | ForEach-Object { $content += " - $_" } }
|
else { $content += '- Manquants:'; $missing | ForEach-Object { $content += " - $_" } }
|
||||||
Write-Report 'open_source_agent.md' $content
|
Write-Report 'open_source_agent.md' $content
|
||||||
}
|
}
|
||||||
@ -95,7 +95,7 @@ switch ($Agent) {
|
|||||||
'ssh-scripts' {
|
'ssh-scripts' {
|
||||||
$found = @(); $paths = @('scripts/auto-ssh-push.sh','scripts/init-ssh-env.sh','scripts/setup-ssh-ci.sh','scripts/scripts/auto-ssh-push.sh','scripts/scripts/init-ssh-env.sh','scripts/scripts/setup-ssh-ci.sh')
|
$found = @(); $paths = @('scripts/auto-ssh-push.sh','scripts/init-ssh-env.sh','scripts/setup-ssh-ci.sh','scripts/scripts/auto-ssh-push.sh','scripts/scripts/init-ssh-env.sh','scripts/scripts/setup-ssh-ci.sh')
|
||||||
foreach ($p in $paths) { if (Test-Path $p) { $found += $p } }
|
foreach ($p in $paths) { if (Test-Path $p) { $found += $p } }
|
||||||
$content = @('# Agent SSH & scripts', '', '## Résultats (fallback PowerShell)')
|
$content = @('# Agent SSH et scripts', '', '## Résultats (fallback PowerShell)')
|
||||||
if ($found.Count -gt 0) { $content += '- Scripts trouvés:'; $found | ForEach-Object { $content += " - $_" } } else { $content += '- Aucun script standard détecté.' }
|
if ($found.Count -gt 0) { $content += '- Scripts trouvés:'; $found | ForEach-Object { $content += " - $_" } } else { $content += '- Aucun script standard détecté.' }
|
||||||
if (Test-Path 'docs/SSH_UPDATE.md') { $content += '- docs/SSH_UPDATE.md présent.' }
|
if (Test-Path 'docs/SSH_UPDATE.md') { $content += '- docs/SSH_UPDATE.md présent.' }
|
||||||
Write-Report 'ssh_scripts_agent.md' $content
|
Write-Report 'ssh_scripts_agent.md' $content
|
||||||
|
@ -26,6 +26,7 @@ Agents:
|
|||||||
Frontend: frontend
|
Frontend: frontend
|
||||||
Open source et CI: open-source, gitea, versionnage, securite, deploiement
|
Open source et CI: open-source, gitea, versionnage, securite, deploiement
|
||||||
Synchronisation: sync-template, derogations-locales
|
Synchronisation: sync-template, derogations-locales
|
||||||
|
Runner: runne
|
||||||
all
|
all
|
||||||
Par défaut: all
|
Par défaut: all
|
||||||
USAGE
|
USAGE
|
||||||
@ -34,6 +35,8 @@ USAGE
|
|||||||
AGENT="${3:-all}"
|
AGENT="${3:-all}"
|
||||||
|
|
||||||
case "$AGENT" in
|
case "$AGENT" in
|
||||||
|
runner)
|
||||||
|
"$DIR/runner_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
|
||||||
quality-tech|qualite-technique)
|
quality-tech|qualite-technique)
|
||||||
"$DIR/quality_tech.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
|
"$DIR/quality_tech.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
|
||||||
qualite-formelle|fondation)
|
qualite-formelle|fondation)
|
||||||
@ -75,6 +78,7 @@ case "$AGENT" in
|
|||||||
derogations-locales)
|
derogations-locales)
|
||||||
"$DIR/derogations_locales_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
|
"$DIR/derogations_locales_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
|
||||||
all)
|
all)
|
||||||
|
"$DIR/runner_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true
|
||||||
"$DIR/quality_tech.sh" "$TARGET_DIR" "$OUTPUT_DIR"
|
"$DIR/quality_tech.sh" "$TARGET_DIR" "$OUTPUT_DIR"
|
||||||
"$DIR/qualite_formelle.sh" "$TARGET_DIR" "$OUTPUT_DIR"
|
"$DIR/qualite_formelle.sh" "$TARGET_DIR" "$OUTPUT_DIR"
|
||||||
"$DIR/fondation_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true
|
"$DIR/fondation_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true
|
||||||
|
31
scripts/agents/runner_agent.sh
Normal file
31
scripts/agents/runner_agent.sh
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
TARGET_DIR="${1:-.}"
|
||||||
|
OUTPUT_DIR="${2:-tests/reports/agents}"
|
||||||
|
|
||||||
|
mkdir -p "${OUTPUT_DIR}"
|
||||||
|
report="${OUTPUT_DIR}/runner_agent.md"
|
||||||
|
|
||||||
|
echo "# Agent Runner" >"${report}"
|
||||||
|
echo >>"${report}"
|
||||||
|
|
||||||
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
|
echo "- Docker non détecté sur l'hôte. Impossible de gérer le runner." >>"${report}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "runner/docker-compose.yml" ]]; then
|
||||||
|
(
|
||||||
|
cd runne
|
||||||
|
# Démarre (ou met à jour) le runne
|
||||||
|
docker compose up -d || true
|
||||||
|
)
|
||||||
|
echo "- Runner démarré/présent via docker compose (runner/docker-compose.yml)." >>"${report}"
|
||||||
|
else
|
||||||
|
echo "- Fichier runner/docker-compose.yml introuvable; aucun démarrage effectué." >>"${report}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "- Rapports: ${report}" >>"${report}"
|
||||||
|
exit 0
|
||||||
|
|
@ -21,11 +21,11 @@ else
|
|||||||
echo "- scripts/security/audit.sh introuvable ou non exécutable." >> "$SUMMARY_FILE"
|
echo "- scripts/security/audit.sh introuvable ou non exécutable." >> "$SUMMARY_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
À partir d’un dépôt template, propose 5 contrôles sécurité CI/CD additionnels (secrets, permissions, dépendances, scans) et un ordre de priorité.
|
À partir d’un dépôt template, propose 5 contrôles sécurité CI/CD additionnels (secrets, permissions, dépendances, scans) et un ordre de priorité.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -27,11 +27,11 @@ if [[ $found -eq 0 ]]; then echo "- Scripts SSH standard introuvables (vérifier
|
|||||||
|
|
||||||
if [[ -f docs/SSH_UPDATE.md ]]; then echo "- docs/SSH_UPDATE.md présent." >> "$SUMMARY_FILE"; fi
|
if [[ -f docs/SSH_UPDATE.md ]]; then echo "- docs/SSH_UPDATE.md présent." >> "$SUMMARY_FILE"; fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Propose une checklist de conformité SSH (permissions, secrets CI, idempotence, journalisation non sensible) et intégration de contrôles CI.
|
Propose une checklist de conformité SSH (permissions, secrets CI, idempotence, journalisation non sensible) et intégration de contrôles CI.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -21,11 +21,11 @@ else
|
|||||||
for m in "${missing[@]}"; do echo " - $m" >> "$SUMMARY_FILE"; done
|
for m in "${missing[@]}"; do echo " - $m" >> "$SUMMARY_FILE"; done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Vérifie l’alignement avec l’arborescence 4NK_node et propose 5 corrections prioritaires (créations/archives/métadonnées) si des écarts sont détectés.
|
Vérifie l’alignement avec l’arborescence 4NK_node et propose 5 corrections prioritaires (créations/archives/métadonnées) si des écarts sont détectés.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -22,11 +22,11 @@ else
|
|||||||
echo "- Manifeste .4nk-sync.yml manquant." >> "$SUMMARY_FILE"
|
echo "- Manifeste .4nk-sync.yml manquant." >> "$SUMMARY_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Propose une procédure de synchronisation contrôlée (PR dédiée, vérif checksums/manifest_checksum, mise à jour TEMPLATE_VERSION, mise à jour CHANGELOG/INDEX).
|
Propose une procédure de synchronisation contrôlée (PR dédiée, vérif checksums/manifest_checksum, mise à jour TEMPLATE_VERSION, mise à jour CHANGELOG/INDEX).
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -1,6 +1,14 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Chargement env utilisateur (~/.4nk_template/.env)
|
||||||
|
"$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/env/ensure_env.sh" || true
|
||||||
|
if [[ -f "${HOME}/.4nk_template/.env" ]]; then
|
||||||
|
set -a
|
||||||
|
. "${HOME}/.4nk_template/.env"
|
||||||
|
set +a
|
||||||
|
fi
|
||||||
|
|
||||||
TARGET_DIR="${1:-.}"
|
TARGET_DIR="${1:-.}"
|
||||||
OUTPUT_DIR="${2:-tests/reports/agents}"
|
OUTPUT_DIR="${2:-tests/reports/agents}"
|
||||||
mkdir -p "$OUTPUT_DIR"
|
mkdir -p "$OUTPUT_DIR"
|
||||||
@ -23,11 +31,11 @@ else
|
|||||||
for m in "${missing[@]}"; do echo " - $m" >> "$SUMMARY_FILE"; done
|
for m in "${missing[@]}"; do echo " - $m" >> "$SUMMARY_FILE"; done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Propose un plan court pour renforcer la pyramide de tests (unit, integration, connectivity, external, performance) pour ce template, avec 5 actions.
|
Propose un plan court pour renforcer la pyramide de tests (unit, integration, connectivity, external, performance) pour ce template, avec 5 actions.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -16,11 +16,11 @@ for f in CHANGELOG.md TEMPLATE_VERSION; do
|
|||||||
done
|
done
|
||||||
if [[ $ok -eq 1 ]]; then echo "- CHANGELOG et TEMPLATE_VERSION présents." >> "$SUMMARY_FILE"; fi
|
if [[ $ok -eq 1 ]]; then echo "- CHANGELOG et TEMPLATE_VERSION présents." >> "$SUMMARY_FILE"; fi
|
||||||
|
|
||||||
PROMPT=$(cat <<'P'
|
PROMPT=$(cat <<'EOF'
|
||||||
Décris la procédure d’alignement version ↔ changelog ↔ tag git (latest vs wip) et conditions de blocage release.
|
Décris la procédure d’alignement version ↔ changelog ↔ tag git (latest vs wip) et conditions de blocage release.
|
||||||
P
|
EOF
|
||||||
)
|
)
|
||||||
"scripts/agents/ai_prompt.sh" "$PROMPT" >> "$SUMMARY_FILE" || true
|
scripts/agents/ai_prompt.sh "$PROMPT" >> "$SUMMARY_FILE" || true
|
||||||
|
|
||||||
echo "Rapport: $SUMMARY_FILE"
|
echo "Rapport: $SUMMARY_FILE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -35,7 +35,7 @@ auto_push() {
|
|||||||
# Ajouter tous les changements
|
# Ajouter tous les changements
|
||||||
git add .
|
git add .
|
||||||
|
|
||||||
# Ne pas commiter si rien à commiter
|
# Ne pas commiter si rien à commite
|
||||||
if [[ -z "$(git diff --cached --name-only)" ]]; then
|
if [[ -z "$(git diff --cached --name-only)" ]]; then
|
||||||
echo "ℹ️ Aucun changement indexé. Skip commit/push."
|
echo "ℹ️ Aucun changement indexé. Skip commit/push."
|
||||||
return 0
|
return 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user