feat: brain-template v2.0 — BSI-v3 complet + tiers documentés
- README reécrit : tiers free/pro/full + modèle clé API + multi-instance - Sync agents/ (57 agents, kernel-isolation validated) - Sync scripts/ BSI-v3 (file-lock, preflight, human-gate, brain-status) - KERNEL.md v0.7.0 — zones + délégation + rendering + isolation - brain-compose.yml v0.7.0 — rendering mode + kerneluser - workflows/ — template + brain-engine exemple - locks/.gitkeep + claims/.gitkeep - helloWorld : RAG boot tier full only (bsi-rag retiré du template)
This commit is contained in:
@@ -1,39 +1,54 @@
|
||||
#!/bin/bash
|
||||
# brain-notify.sh — Canal Telegram du SUPERVISOR
|
||||
# Usage: brain-notify.sh "MESSAGE" [urgent|update|info]
|
||||
# urgent → 🔴 notification sonore — interruption humaine
|
||||
# update → ✅ notification silencieuse — info non bloquante
|
||||
# info → 💬 notification silencieuse — log passif
|
||||
# Usage: brain-notify.sh "MESSAGE" [urgent|update|info] [supervisor|monitoring]
|
||||
#
|
||||
# Niveaux :
|
||||
# urgent → 🔴 notification sonore — interruption humaine
|
||||
# update → ✅ notification silencieuse — info non bloquante
|
||||
# info → 💬 notification silencieuse — log passif
|
||||
#
|
||||
# Canaux :
|
||||
# supervisor → groupe SUPERVISOR (défaut pour urgent)
|
||||
# monitoring → channel Monitoring (défaut pour update/info)
|
||||
# (si omis) → supervisor pour urgent, monitoring pour update/info
|
||||
#
|
||||
# Token lu depuis MYSECRETS — jamais hardcodé.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
MYSECRETS="${BRAIN_ROOT:-$HOME/Dev/Docs}/MYSECRETS"
|
||||
MYSECRETS="${BRAIN_ROOT:-$HOME/Dev/Brain}/MYSECRETS"
|
||||
|
||||
if [[ ! -f "$MYSECRETS" ]]; then
|
||||
echo "[brain-notify] ERREUR : MYSECRETS introuvable à $MYSECRETS" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Lire token + chat_id depuis MYSECRETS (source .env style)
|
||||
TOKEN=$(grep '^BRAIN_TELEGRAM_TOKEN=' "$MYSECRETS" | cut -d= -f2-)
|
||||
CHAT_ID=$(grep '^BRAIN_TELEGRAM_CHAT_ID=' "$MYSECRETS" | cut -d= -f2-)
|
||||
CHAT_ID_SUPERVISOR=$(grep '^BRAIN_TELEGRAM_CHAT_ID_SUPERVISOR=' "$MYSECRETS" | cut -d= -f2- || true)
|
||||
CHAT_ID_MONITORING=$(grep '^BRAIN_TELEGRAM_CHAT_ID_MONITORING=' "$MYSECRETS" | cut -d= -f2- || true)
|
||||
|
||||
if [[ -z "$TOKEN" || -z "$CHAT_ID" ]]; then
|
||||
echo "[brain-notify] ERREUR : BRAIN_TELEGRAM_TOKEN ou BRAIN_TELEGRAM_CHAT_ID vide dans MYSECRETS" >&2
|
||||
# Fallback : ancienne clé unique si les nouvelles ne sont pas encore définies
|
||||
if [[ -z "$CHAT_ID_SUPERVISOR" && -z "$CHAT_ID_MONITORING" ]]; then
|
||||
FALLBACK=$(grep '^BRAIN_TELEGRAM_CHAT_ID=' "$MYSECRETS" | cut -d= -f2- || true)
|
||||
CHAT_ID_SUPERVISOR="$FALLBACK"
|
||||
CHAT_ID_MONITORING="$FALLBACK"
|
||||
fi
|
||||
|
||||
if [[ -z "$TOKEN" ]]; then
|
||||
echo "[brain-notify] ERREUR : BRAIN_TELEGRAM_TOKEN vide dans MYSECRETS" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
MESSAGE="${1:-}"
|
||||
MESSAGE=$(printf '%b' "${1:-}")
|
||||
LEVEL="${2:-info}"
|
||||
CHANNEL="${3:-}"
|
||||
|
||||
if [[ -z "$MESSAGE" ]]; then
|
||||
echo "[brain-notify] ERREUR : message vide" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Préfixe selon le niveau
|
||||
# Niveau → préfixe + silence
|
||||
case "$LEVEL" in
|
||||
urgent) PREFIX="🔴 *BRAIN ESCALADE*" ; SILENT=false ;;
|
||||
update) PREFIX="✅ *BRAIN UPDATE*" ; SILENT=true ;;
|
||||
@@ -41,18 +56,34 @@ case "$LEVEL" in
|
||||
*) PREFIX="💬 *BRAIN*" ; SILENT=true ;;
|
||||
esac
|
||||
|
||||
# Canal par défaut selon le niveau si non spécifié
|
||||
if [[ -z "$CHANNEL" ]]; then
|
||||
[[ "$LEVEL" == "urgent" ]] && CHANNEL="supervisor" || CHANNEL="monitoring"
|
||||
fi
|
||||
|
||||
# Sélection du chat_id
|
||||
case "$CHANNEL" in
|
||||
supervisor) CHAT_ID="$CHAT_ID_SUPERVISOR" ;;
|
||||
monitoring) CHAT_ID="$CHAT_ID_MONITORING" ;;
|
||||
*) CHAT_ID="$CHAT_ID_SUPERVISOR" ;;
|
||||
esac
|
||||
|
||||
if [[ -z "$CHAT_ID" ]]; then
|
||||
echo "[brain-notify] ERREUR : chat_id manquant pour canal '$CHANNEL' dans MYSECRETS" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
FULL_MESSAGE="${PREFIX}
|
||||
${MESSAGE}
|
||||
_$(date '+%Y-%m-%d %H:%M')_"
|
||||
|
||||
# Envoi Telegram
|
||||
DISABLE_NOTIFICATION=$( [[ "$SILENT" == "true" ]] && echo "true" || echo "false" )
|
||||
|
||||
curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
|
||||
-d chat_id="$CHAT_ID" \
|
||||
-d text="$FULL_MESSAGE" \
|
||||
--data-urlencode "text=$FULL_MESSAGE" \
|
||||
-d parse_mode="Markdown" \
|
||||
-d disable_notification="$DISABLE_NOTIFICATION" \
|
||||
> /dev/null
|
||||
|
||||
echo "[brain-notify] [$LEVEL] envoyé"
|
||||
echo "[brain-notify] [$LEVEL→$CHANNEL] envoyé"
|
||||
|
||||
Reference in New Issue
Block a user