Skip to content

Commit dc5a72b

Browse files
author
evolver-publish
committed
Release v1.89.17
1 parent f0199b7 commit dc5a72b

71 files changed

Lines changed: 1519 additions & 157 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

package-lock.json

Lines changed: 21 additions & 36 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@evomap/evolver",
3-
"version": "1.89.15",
3+
"version": "1.89.17",
44
"description": "A GEP-powered self-evolution engine for AI agents. Features automated log analysis and Genome Evolution Protocol (GEP) for auditable, reusable evolution assets.",
55
"main": "index.js",
66
"bin": {

src/adapters/claudeCode.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const fs = require('fs');
22
const path = require('path');
3-
const { mergeJsonFile, copyHookScripts, appendSectionToFile, removeHookScripts, removeMarkedSection, assertSafeConfigDir } = require('./hookAdapter');
3+
const { mergeJsonFile, copyHookScripts, appendSectionToFile, removeHookScripts, removeMarkedSection, assertSafeConfigDir, isEvolverHookCommand } = require('./hookAdapter');
44

55
const HOOK_SCRIPTS_DIR_NAME = 'hooks';
66
const EVOLVER_MARKER = '<!-- evolver-evolution-memory -->';
@@ -146,7 +146,7 @@ function uninstall({ configRoot }) {
146146
const innerBefore = matcher.hooks.length;
147147
const filtered = matcher.hooks.filter(h => {
148148
const cmd = (h && h.command) || '';
149-
return !cmd.includes('evolver-session') && !cmd.includes('evolver-signal') && !cmd.includes('evolver-task-recall');
149+
return !isEvolverHookCommand(cmd);
150150
});
151151
// A matcher containing both evolver and user hooks shrinks
152152
// its inner array without changing the outer matcher count.

src/adapters/codex.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const fs = require('fs');
22
const path = require('path');
3-
const { mergeJsonFile, copyHookScripts, appendSectionToFile, removeHookScripts, removeMarkedSection, assertSafeConfigDir } = require('./hookAdapter');
3+
const { mergeJsonFile, copyHookScripts, appendSectionToFile, removeHookScripts, removeMarkedSection, assertSafeConfigDir, isEvolverHookCommand } = require('./hookAdapter');
44

55
const HOOK_SCRIPTS_DIR_NAME = 'hooks';
66
const EVOLVER_MARKER = '<!-- evolver-evolution-memory -->';
@@ -166,7 +166,7 @@ function uninstall({ configRoot }) {
166166
const before = data.hooks[event].length;
167167
data.hooks[event] = data.hooks[event].filter(h => {
168168
const cmd = (h && h.command) || '';
169-
return !cmd.includes('evolver-session') && !cmd.includes('evolver-signal');
169+
return !isEvolverHookCommand(cmd);
170170
});
171171
if (data.hooks[event].length !== before) touched = true;
172172
if (data.hooks[event].length === 0) delete data.hooks[event];

src/adapters/hookAdapter.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ function mergeWithHooksUnion(target, source) {
7676
if (tArr && sArr) {
7777
const isEvolverOwned = (entry) => {
7878
const cmds = collectCommands(entry);
79-
return cmds.some(c => c.includes('evolver-session') || c.includes('evolver-signal') || c.includes('evolver-task-recall'));
79+
return cmds.some(isEvolverHookCommand);
8080
};
8181
const userEntries = tArr.filter(e => !isEvolverOwned(e));
8282
result.hooks[event] = [...userEntries, ...sArr];
@@ -101,6 +101,17 @@ function collectCommands(entry) {
101101
return out;
102102
}
103103

104+
function isEvolverHookCommand(command) {
105+
if (typeof command !== 'string') return false;
106+
return command.includes('evolver-session') ||
107+
command.includes('evolver-signal') ||
108+
command.includes('evolver-task-recall') ||
109+
// Legacy installs briefly shipped this companion daemon hook. Treat it
110+
// as evolver-owned so reinstall/merge can remove it instead of preserving
111+
// a stale supervisor that may point clients at a dead proxy.
112+
command.includes('evolver-daemon-start');
113+
}
114+
104115
function deepMerge(target, source) {
105116
const result = { ...target };
106117
for (const key of Object.keys(source)) {
@@ -226,7 +237,7 @@ function removeEvolverHooks(filePath, { markerKey = '_evolver_managed' } = {}) {
226237
const before = data.hooks[event].length;
227238
data.hooks[event] = data.hooks[event].filter(h => {
228239
const cmd = h.command || '';
229-
return !cmd.includes('evolver-session') && !cmd.includes('evolver-signal') && !cmd.includes('evolver-task-recall');
240+
return !isEvolverHookCommand(cmd);
230241
});
231242
if (data.hooks[event].length !== before) changed = true;
232243
if (data.hooks[event].length === 0) delete data.hooks[event];
@@ -358,6 +369,7 @@ module.exports = {
358369
deepMerge,
359370
mergeWithHooksUnion,
360371
collectCommands,
372+
isEvolverHookCommand,
361373
copyHookScripts,
362374
appendSectionToFile,
363375
assertSafeConfigDir,

0 commit comments

Comments
 (0)