Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
langages détectés par GitHub · % code
chaque PR mergée, classée par type, plus récentes en premier
Ajoute MAX_GENERATOR_IDLE_MS=5min dans reapStaleSessions() : détecte lastGeneratorActivity figé, SIGKILL le subprocess SDKAgent bloqué sur for-await, abort le controller puis deleteSession() — au lieu de skipper si generatorPromise≠null.
Ajoute une machine d'états CLOSED/OPEN/HALF_OPEN dans openclaw/src/index.ts gardant workerPost, workerPostFireAndForget et workerGetText : ouvre après 3 erreurs réseau, drop 30 s, sonde puis reset sur gateway_start.
Remplace `setup.sh` (supprimé) par `node smart-install.js` dans `hooks.json` et ajoute `checkBinaryPlatformCompatibility()` lisant les 4 octets Mach-O du binaire pour avertir hors macOS.
Détecte SIGTERM (exit 143) dans `ensureGeneratorRunning` pour abort le AbortController, ajoute garde wall-clock 4h par session, et tue les processus `--resume` dupliqués via `createPidCapturingSpawn`.
Remappe `BeforeAgent` vers `session-init` dans `GeminiCliHooksInstaller`, ajoute parsing du document JSON Gemini 0.37 (`type: "gemini"`) dans `transcript-parser.ts`, et inclut `platformSource` dans la requête `/api/sessions/summarize`.
Ajoute `lastSummaryStored` à `ActiveSession` dans `ResponseProcessor` après chaque `storeObservations`, expose `summaryStored` via `GET /api/sessions/status`, et fait logger un warn par `summarize.ts` quand la file se vide sans summary persisté.
Déclare explicitement les 9 paramètres de `search` et 5 de `timeline` dans `inputSchema.properties` de `src/servers/mcp-server.ts`, les clients MCP n'exposant au LLM que les champs déclarés (avant `properties: {}` → appels `{}` → 500).
Ajoute garde dans `parseObservations()` (`src/sdk/parser.ts`) qui skip observations où `title`, `narrative`, `facts`, `concepts` sont tous null/vides, supprimant entrées fantômes « Untitled » émises sous pression contextuelle.
Passe `cwd: os.homedir()` au `StdioClientTransport` dans `ChromaMcpManager.ts` pour empêcher `pydantic-settings` de lire le `.env.local` du projet et planter sur clés inconnues.
Sépare findBun() dans plugin/scripts/bun-runner.js : Windows utilise spawnSync('where bun', {shell:true}) en chaîne unique, Unix garde spawnSync('which', ['bun']) sans shell, supprimant l'avertissement DEP0190 sous Node 22+.
Ajoute `.gitattributes` avec `* text=auto eol=lf` et règles explicites pour `plugin/scripts/*.cjs` afin d'empêcher CRLF Windows de casser le shebang `env: node\r` sur macOS/Linux.
Dans le catch async de démarrage du daemon, détecte EADDRINUSE (et variante Bun via regex) puis effectue un health check : si le gagnant répond, log INFO et exit clean au lieu d'ERROR.
Retire `mock.module('../../src/utils/project-name.js')` top-level de `context-reinjection-guard.test.ts` qui figeait `getProjectName()` à `'test-project'` pour tout le worker Bun, et ajoute `bunfig.toml` avec `[test] smol = true`.
Réécrit les 7 commandes shell de hooks.json pour résoudre le plugin via `ls -dt ~/.claude/plugins/cache/thedotmack/claude-mem/[0-9]*/` avant le fallback marketplaces, quand `CLAUDE_PLUGIN_ROOT` n'est pas injecté sous Linux.
Ajoute garde all-null dans parseSummary (src/sdk/parser.ts) après extraction des 5 sous-tags request/investigated/learned/completed/next_steps : retourne null si aucun match au lieu de sauver chaînes vides.
Ajoute `parseFileList()` dans `observations/files.ts`, utilisé par `SessionStore` et `ChromaSync` : `JSON.parse` en try/catch, fallback `[value]` pour chemins bruts legacy non-JSON crashant le viewer.
Remplace l'interpolation `${{ steps.inference.outputs.response }}` dans le `run:` de `.github/workflows/summary.yml` par la variable d'env `$RESPONSE` déjà déclarée, neutralisant l'injection shell via apostrophe.
Remplace la constante `CLAUDE_MEM_MODEL` par défaut de `claude-sonnet-4-5` vers `claude-sonnet-4-6` dans `SettingsDefaultsManager.ts`, le viewer, l'installer `openclaw/install.sh` et les assertions de tests.
Ajoute optional chaining sur `getChromaSync()?.syncUserPrompt` dans SessionRoutes.ts:359 et early-return `{ids:[],distances:[],metadatas:[]}` dans SearchManager.queryChroma quand `chromaSync` null, évitant TypeError si CLAUDE_MEM_CHROMA_ENABLED=false.
Remplace `stdio: 'inherit'` par `['pipe', 'pipe', 'inherit']` dans les `execSync` de `plugin/scripts/smart-install.js` et émet `{continue:true,suppressOutput:true}` en stdout pour respecter le contrat JSON du hook SessionStart.