mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-17 12:16:21 +02:00
Niveau supérieur (inspiré de Jean) : modes Plan/Build/Yolo + panneau Git & Diff
Modes d'exécution (composer) : - routes/chat : champ mode ; _apply_mode adapte la config — plan = outils lecture seule + plan forcé ; yolo = confirm_shell off ; build = comportement normal. - Frontend : ModeSelector dans le composer, mode dans le store + requête chat. Panneau Git & Diff (le workspace est un dépôt git, Aider commite) : - routes/git : /api/git/log (commits), /api/git/diff (commit ou working), /api/git/revert (git revert --no-edit, confiné au workspace). - Frontend : onglet Git dans le PreviewPanel — liste des commits, diff colorisé, bouton Annuler (revert) avec rafraîchissement de l'arbo. Bonus : le panneau Matériel explique que « GPU déclaré 12 Go » vient de GPU_VRAM_MB (valeur manuelle) — à corriger en 16000 pour une 16 Go. Tests : git log/diff/revert, modes plan/yolo/build via la route chat, builds. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
This commit is contained in:
9 files changed
+388
-15
No files matched your search
@@ -41,6 +41,42 @@ export async function getSystemStats(): Promise<SystemStats> {
|
||||
return res.json();
|
||||
}
|
||||
|
||||
// ── Git du workspace ─────────────────────────────────────────────────────
|
||||
export interface GitCommit {
|
||||
hash: string;
|
||||
full_hash: string;
|
||||
subject: string;
|
||||
author: string;
|
||||
when: string;
|
||||
files_changed: number;
|
||||
}
|
||||
|
||||
export async function getGitLog(): Promise<GitCommit[]> {
|
||||
try {
|
||||
const res = await fetch("/api/git/log");
|
||||
return (await res.json()).commits;
|
||||
} catch {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
export async function getGitDiff(hash?: string): Promise<string> {
|
||||
const url = hash ? `/api/git/diff?hash=${encodeURIComponent(hash)}` : "/api/git/diff";
|
||||
const res = await fetch(url);
|
||||
if (!res.ok) return "";
|
||||
return (await res.json()).diff;
|
||||
}
|
||||
|
||||
export async function revertCommit(hash: string): Promise<{ message: string }> {
|
||||
const res = await fetch("/api/git/revert", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ hash }),
|
||||
});
|
||||
if (!res.ok) throw await apiError(res, "revert impossible");
|
||||
return res.json();
|
||||
}
|
||||
|
||||
export interface HardwareInfo {
|
||||
loki_gpus: {
|
||||
index: number;
|
||||
@@ -405,7 +441,7 @@ export async function deleteSession(id: string): Promise<void> {
|
||||
|
||||
/** Envoie un message et streame la réponse de l'agent via SSE. */
|
||||
export async function streamChat(
|
||||
body: { session_id: string; content: string; model?: string },
|
||||
body: { session_id: string; content: string; model?: string; mode?: string },
|
||||
handlers: {
|
||||
onToken: (t: string) => void;
|
||||
onThinking: (t: string) => void;
|
||||
|
||||
Reference in new issue
Block a user