Files
Loki/internal/ajean/web_sysprompt.go
T
nathaninline 7ecd869da0 Etat residuel en base, carte du package et docs remises d'aplomb
- sysprompt, utilisateurs appairés, codes d'appairage et etat du job de build
  passent en base ; ne restent des fichiers que la cle E2E, les certificats et
  les journaux (le log de build reste un fichier : des milliers de lignes)
- doc.go remis a jour (run.go, store.go, les deux services, tools/assemble-ui)
- README et notes de release ne pretendent plus que la racine ne contient que
  six dossiers : c'etait faux
2026-08-07 17:51:59 +02:00

48 lines
1.6 KiB
Go

// web_sysprompt.go — prompt système personnalisé de l'utilisateur, persisté
// CÔTÉ SERVEUR (en base) et partagé entre appareils, comme la conversation
// elle-même. Historique : avant la conversation serveur (v0.4.x),
// l'UI envoyait son prompt système dans chaque requête /api/chat ; depuis,
// /api/chat/send ne porte que le message → le champ de l'UI n'avait plus aucun
// effet. Il est maintenant lu ici par la génération (chat_conversation.go), et
// InjectSkills (llm_client.go) le fusionne avec le préambule agent.
package ajean
import (
"encoding/json"
"net/http"
"strings"
)
// readSysPrompt renvoie le prompt système personnalisé ("" si absent).
func readSysPrompt() string { return getStr(bkState, "sysprompt") }
func saveSysPrompt(text string) error {
return putStr(bkState, "sysprompt", strings.TrimSpace(text))
}
// handleSysPrompt :
//
// GET → {ok, text}
// POST {text} → enregistre ("" = efface) puis renvoie {ok, text}
func handleSysPrompt(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case http.MethodGet:
sendJSON(w, 200, map[string]any{"ok": true, "text": readSysPrompt()})
case http.MethodPost:
var body struct {
Text string `json:"text"`
}
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
sendJSON(w, 400, map[string]any{"ok": false, "error": err.Error()})
return
}
if err := saveSysPrompt(body.Text); err != nil {
sendJSON(w, 500, map[string]any{"ok": false, "error": err.Error()})
return
}
sendJSON(w, 200, map[string]any{"ok": true, "text": readSysPrompt()})
default:
sendJSON(w, 405, map[string]any{"ok": false, "error": "méthode non autorisée"})
}
}