@evomap/evolver 1.70.0-beta.4 → 1.70.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,6 @@
1
- {"type":"CapabilityCandidate","id":"cand_b9a66a5c","title":"Harden session log detection and fallback behavior","source":"signals","created_at":"2026-04-26T04:39:07.561Z","signals":["memory_missing","user_missing","session_logs_missing"],"tags":["memory_missing","user_missing","session_logs_missing","area:memory"],"shape":{"title":"Harden session log detection and fallback behavior","input":"Recent session transcript + memory snippets + user instructions","output":"A safe, auditable evolution patch guided by GEP assets","invariants":"Protocol order, small reversible patches, validation, append-only events","params":"Signals: memory_missing, user_missing, session_logs_missing","failure_points":"Missing signals, over-broad changes, skipped validation, missing knowledge solidification","evidence":"Signal present: session_logs_missing"}}
2
- {"type":"CapabilityCandidate","id":"cand_b9a66a5c","title":"Harden session log detection and fallback behavior","source":"signals","created_at":"2026-04-26T04:39:09.458Z","signals":["memory_missing","user_missing","session_logs_missing"],"tags":["memory_missing","user_missing","session_logs_missing","area:memory"],"shape":{"title":"Harden session log detection and fallback behavior","input":"Recent session transcript + memory snippets + user instructions","output":"A safe, auditable evolution patch guided by GEP assets","invariants":"Protocol order, small reversible patches, validation, append-only events","params":"Signals: memory_missing, user_missing, session_logs_missing","failure_points":"Missing signals, over-broad changes, skipped validation, missing knowledge solidification","evidence":"Signal present: session_logs_missing"}}
3
- {"type":"CapabilityCandidate","id":"cand_b9a66a5c","title":"Harden session log detection and fallback behavior","source":"signals","created_at":"2026-04-26T04:39:11.278Z","signals":["memory_missing","user_missing","session_logs_missing"],"tags":["memory_missing","user_missing","session_logs_missing","area:memory"],"shape":{"title":"Harden session log detection and fallback behavior","input":"Recent session transcript + memory snippets + user instructions","output":"A safe, auditable evolution patch guided by GEP assets","invariants":"Protocol order, small reversible patches, validation, append-only events","params":"Signals: memory_missing, user_missing, session_logs_missing","failure_points":"Missing signals, over-broad changes, skipped validation, missing knowledge solidification","evidence":"Signal present: session_logs_missing"}}
1
+ {"type":"CapabilityCandidate","id":"cand_b9a66a5c","title":"Harden session log detection and fallback behavior","source":"signals","created_at":"2026-04-27T05:47:45.106Z","signals":["memory_missing","user_missing","session_logs_missing"],"tags":["memory_missing","user_missing","session_logs_missing","area:memory"],"shape":{"title":"Harden session log detection and fallback behavior","input":"Recent session transcript + memory snippets + user instructions","output":"A safe, auditable evolution patch guided by GEP assets","invariants":"Protocol order, small reversible patches, validation, append-only events","params":"Signals: memory_missing, user_missing, session_logs_missing","failure_points":"Missing signals, over-broad changes, skipped validation, missing knowledge solidification","evidence":"Signal present: session_logs_missing"}}
2
+ {"type":"CapabilityCandidate","id":"cand_b9a66a5c","title":"Harden session log detection and fallback behavior","source":"signals","created_at":"2026-04-27T05:47:47.051Z","signals":["bounty_task","external_task","seo","approaches","different","compare","comparison","note","within","optimization","keyword","red","xiaohongshu","xiaohongshu-ops","memory_missing","user_missing","session_logs_missing"],"tags":["bounty_task","external_task","seo","approaches","different","compare","comparison","note","within","optimization","keyword","red","xiaohongshu","xiaohongshu-ops","memory_missing","user_missing","session_logs_missing","area:orchestration","area:memory"],"shape":{"title":"Harden session log detection and fallback behavior","input":"Recent session transcript + memory snippets + user instructions","output":"A safe, auditable evolution patch guided by GEP assets","invariants":"Protocol order, small reversible patches, validation, append-only events","params":"Signals: bounty_task, external_task, seo, approaches, different, compare, comparison, note, within, optimization, keyword, red, xiaohongshu, xiaohongshu-ops, memory_missing, user_missing, session_logs_missing","failure_points":"Missing signals, over-broad changes, skipped validation, missing knowledge solidification","evidence":"Signal present: session_logs_missing"}}
3
+ {"type":"CapabilityCandidate","id":"cand_b9a66a5c","title":"Harden session log detection and fallback behavior","source":"signals","created_at":"2026-04-27T05:47:48.939Z","signals":["bounty_task","external_task","seo","approaches","different","compare","comparison","note","within","optimization","keyword","red","xiaohongshu","xiaohongshu-ops","memory_missing","user_missing","session_logs_missing"],"tags":["bounty_task","external_task","seo","approaches","different","compare","comparison","note","within","optimization","keyword","red","xiaohongshu","xiaohongshu-ops","memory_missing","user_missing","session_logs_missing","area:orchestration","area:memory"],"shape":{"title":"Harden session log detection and fallback behavior","input":"Recent session transcript + memory snippets + user instructions","output":"A safe, auditable evolution patch guided by GEP assets","invariants":"Protocol order, small reversible patches, validation, append-only events","params":"Signals: bounty_task, external_task, seo, approaches, different, compare, comparison, note, within, optimization, keyword, red, xiaohongshu, xiaohongshu-ops, memory_missing, user_missing, session_logs_missing","failure_points":"Missing signals, over-broad changes, skipped validation, missing knowledge solidification","evidence":"Signal present: session_logs_missing"}}
4
+ {"type":"CapabilityCandidate","id":"cand_b9a66a5c","title":"Harden session log detection and fallback behavior","source":"signals","created_at":"2026-04-27T05:49:00.343Z","signals":["bounty_task","external_task","seo","approaches","different","compare","comparison","note","within","optimization","keyword","red","xiaohongshu","xiaohongshu-ops","memory_missing","user_missing","session_logs_missing"],"tags":["bounty_task","external_task","seo","approaches","different","compare","comparison","note","within","optimization","keyword","red","xiaohongshu","xiaohongshu-ops","memory_missing","user_missing","session_logs_missing","area:orchestration","area:memory"],"shape":{"title":"Harden session log detection and fallback behavior","input":"Recent session transcript + memory snippets + user instructions","output":"A safe, auditable evolution patch guided by GEP assets","invariants":"Protocol order, small reversible patches, validation, append-only events","params":"Signals: bounty_task, external_task, seo, approaches, different, compare, comparison, note, within, optimization, keyword, red, xiaohongshu, xiaohongshu-ops, memory_missing, user_missing, session_logs_missing","failure_points":"Missing signals, over-broad changes, skipped validation, missing knowledge solidification","evidence":"Signal present: session_logs_missing"}}
5
+ {"type":"CapabilityCandidate","id":"cand_b9a66a5c","title":"Harden session log detection and fallback behavior","source":"signals","created_at":"2026-04-27T05:49:02.561Z","signals":["bounty_task","external_task","skills","monetize","how","monetization","reduce","optimization","prompt","negative","image-generation","ai-art","ai-image-generation","memory_missing","user_missing","session_logs_missing"],"tags":["bounty_task","external_task","skills","monetize","how","monetization","reduce","optimization","prompt","negative","image-generation","ai-art","ai-image-generation","memory_missing","user_missing","session_logs_missing","problem:protocol","action:optimize","area:prompt","area:orchestration","area:memory","area:skills"],"shape":{"title":"Harden session log detection and fallback behavior","input":"Recent session transcript + memory snippets + user instructions","output":"A safe, auditable evolution patch guided by GEP assets","invariants":"Protocol order, small reversible patches, validation, append-only events","params":"Signals: bounty_task, external_task, skills, monetize, how, monetization, reduce, optimization, prompt, negative, image-generation, ai-art, ai-image-generation, memory_missing, user_missing, session_logs_missing","failure_points":"Missing signals, over-broad changes, skipped validation, missing knowledge solidification","evidence":"Signal present: session_logs_missing"}}
6
+ {"type":"CapabilityCandidate","id":"cand_b9a66a5c","title":"Harden session log detection and fallback behavior","source":"signals","created_at":"2026-04-27T05:49:04.551Z","signals":["bounty_task","external_task","seo","approaches","different","compare","comparison","note","within","optimization","keyword","red","xiaohongshu","xiaohongshu-ops","memory_missing","user_missing","session_logs_missing"],"tags":["bounty_task","external_task","seo","approaches","different","compare","comparison","note","within","optimization","keyword","red","xiaohongshu","xiaohongshu-ops","memory_missing","user_missing","session_logs_missing","area:orchestration","area:memory"],"shape":{"title":"Harden session log detection and fallback behavior","input":"Recent session transcript + memory snippets + user instructions","output":"A safe, auditable evolution patch guided by GEP assets","invariants":"Protocol order, small reversible patches, validation, append-only events","params":"Signals: bounty_task, external_task, seo, approaches, different, compare, comparison, note, within, optimization, keyword, red, xiaohongshu, xiaohongshu-ops, memory_missing, user_missing, session_logs_missing","failure_points":"Missing signals, over-broad changes, skipped validation, missing knowledge solidification","evidence":"Signal present: session_logs_missing"}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evomap/evolver",
3
- "version": "1.70.0-beta.4",
3
+ "version": "1.70.0",
4
4
  "description": "A GEP-powered self-evolution engine for AI agents. Features automated log analysis and Genome Evolution Protocol (GEP) for auditable, reusable evolution assets.",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -6,7 +6,6 @@ const PLATFORMS = {
6
6
  cursor: { name: 'Cursor', configDir: '.cursor', detector: '.cursor' },
7
7
  'claude-code': { name: 'Claude Code', configDir: '.claude', detector: '.claude' },
8
8
  codex: { name: 'Codex', configDir: '.codex', detector: '.codex' },
9
- kiro: { name: 'Kiro', configDir: '.kiro', detector: '.kiro' },
10
9
  };
11
10
 
12
11
  function detectPlatform(cwd) {
@@ -36,7 +35,6 @@ function loadAdapter(platformId) {
36
35
  case 'cursor': return require('./cursor');
37
36
  case 'claude-code': return require('./claudeCode');
38
37
  case 'codex': return require('./codex');
39
- case 'kiro': return require('./kiro');
40
38
  default: return null;
41
39
  }
42
40
  }
@@ -165,7 +163,7 @@ async function setupHooks({ platform, cwd, force, uninstall, evolverRoot } = {})
165
163
  const platformId = platform || detectPlatform(effectiveCwd);
166
164
 
167
165
  if (!platformId) {
168
- console.error('[setup-hooks] Could not detect platform. Use --platform=cursor|claude-code|codex|kiro');
166
+ console.error('[setup-hooks] Could not detect platform. Use --platform=cursor|claude-code|codex');
169
167
  return { ok: false, error: 'platform_not_detected' };
170
168
  }
171
169
 
@@ -5,7 +5,6 @@
5
5
 
6
6
  const fs = require('fs');
7
7
  const path = require('path');
8
- const os = require('os');
9
8
 
10
9
  function findEvolverRoot() {
11
10
  const candidates = [
@@ -59,68 +58,7 @@ function formatOutcome(entry) {
59
58
  return `[${icon}] ${ts} score=${score} signals=[${signals}] ${note}`.slice(0, 200);
60
59
  }
61
60
 
62
- // Dedup guard: on platforms like Kiro, the sessionStart-equivalent event
63
- // (`promptSubmit`) fires on every user message in a session. Without this
64
- // guard, recent memory would be re-injected on every prompt. We key the
65
- // dedup on (platform, cwd) with a short TTL so a fresh agent session within
66
- // the same workspace still gets the injection, but mid-session prompts do
67
- // not. Cursor/Claude Code/Codex have true sessionStart events and should
68
- // bypass this check (controlled by EVOLVER_SESSION_START_DEDUP env var,
69
- // which the Kiro adapter sets on the hook command line implicitly via the
70
- // runtime environment, and other adapters leave unset).
71
- function getDedupStatePath() {
72
- const dir = process.env.EVOLVER_SESSION_STATE_DIR
73
- || path.join(os.homedir(), '.evolver');
74
- try { fs.mkdirSync(dir, { recursive: true }); } catch { /* ignore */ }
75
- return path.join(dir, 'session-start-state.json');
76
- }
77
-
78
- function shouldSkipInjection() {
79
- // Only apply dedup when explicitly enabled (set by Kiro adapter) OR when
80
- // we detect a per-prompt-firing platform via PROMPT_SUBMIT heuristic in
81
- // stdin. The stdin is drained in main(), so we rely on env flag here.
82
- const dedupEnabled = String(process.env.EVOLVER_SESSION_START_DEDUP || '').toLowerCase() === '1'
83
- || String(process.env.EVOLVER_SESSION_START_DEDUP || '').toLowerCase() === 'true';
84
- if (!dedupEnabled) return false;
85
-
86
- const ttlMs = Number(process.env.EVOLVER_SESSION_START_DEDUP_TTL_MS) || (30 * 60 * 1000);
87
- const key = process.cwd();
88
- const statePath = getDedupStatePath();
89
-
90
- let state = {};
91
- try {
92
- if (fs.existsSync(statePath)) {
93
- state = JSON.parse(fs.readFileSync(statePath, 'utf8')) || {};
94
- }
95
- } catch { state = {}; }
96
-
97
- const now = Date.now();
98
- const last = state[key];
99
- if (typeof last === 'number' && now - last < ttlMs) {
100
- return true;
101
- }
102
-
103
- state[key] = now;
104
- try {
105
- for (const k of Object.keys(state)) {
106
- if (typeof state[k] !== 'number' || now - state[k] > 24 * 60 * 60 * 1000) {
107
- delete state[k];
108
- }
109
- }
110
- const tmp = statePath + '.tmp';
111
- fs.writeFileSync(tmp, JSON.stringify(state), 'utf8');
112
- fs.renameSync(tmp, statePath);
113
- } catch { /* best-effort */ }
114
-
115
- return false;
116
- }
117
-
118
61
  function main() {
119
- if (shouldSkipInjection()) {
120
- process.stdout.write(JSON.stringify({}));
121
- return;
122
- }
123
-
124
62
  const evolverRoot = findEvolverRoot();
125
63
  const graphPath = findMemoryGraph(evolverRoot);
126
64