Documentation
¶
Overview ¶
Package gitmark marque les commits qui contiennent du code écrit par l'agent : des trailers git (AI-Assisted-By, AI-Session) sont ajoutés au message par un hook commit-msg qui ne bloque jamais le commit.
Index ¶
Constants ¶
const HookScript = `` /* 180-byte string literal not displayed */
HookScript est le hook commit-msg installé par InstallHook. Il s'exécute après l'éditeur : un message laissé vide reste vide (Mark n'y touche pas) et le commit est abandonné. Sans tenon ou en cas d'erreur, il sort avec 0 sans toucher au message.
const Timeout = 5 * time.Second
Timeout borne une exécution complète de Mark.
Variables ¶
var ErrHookExists = errors.New("un hook commit-msg existe déjà")
ErrHookExists signale un hook commit-msg différent déjà installé.
Functions ¶
func InstallHook ¶
InstallHook installe HookScript (mode 0755) comme hook commit-msg dans le dossier de hooks effectif du dépôt contenant repoRoot (core.hooksPath respecté) et renvoie son chemin. Un hook identique est laissé tel quel ; un hook différent donne ErrHookExists, sauf avec force : il est alors renommé en commit-msg.bak (un .bak précédent est écrasé). Un ancien hook prepare-commit-msg de tenon (identique à legacyHookScript) est supprimé.
func Mark ¶
Mark ajoute au fichier msgFile les trailers des fichiers indexés du dépôt contenant dir écrits par l'agent (sessions de sessionsDir). Sans correspondance, ou si le message est vide (seulement des commentaires, des lignes vides et des trailers : le commit doit rester abandonné), le message n'est pas modifié. L'exécution est bornée par Timeout.
func MarkContext ¶
MarkContext est Mark borné par ctx : une fois ctx expiré, il rend la main sans attendre une lecture de session bloquée, et le message n'est plus modifié.
Types ¶
type Write ¶
Write est un fichier écrit avec succès par l'agent (write_file ou edit_file) au cours d'une session.
func AgentWrites ¶
AgentWrites renvoie les écritures réussies (ToolResult write_file ou edit_file, sans erreur, avec un chemin) de toutes les sessions du projet projectRoot : sessions ouvertes à sa racine ou dans un de ses sous-dossiers. Les sessions illisibles et les entrées qui ne sont pas des fichiers réguliers (FIFO, lien, dossier…) sont ignorées ; un dossier absent donne une liste vide.