@evomap/evolver 1.78.5 → 1.78.7
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.
- package/assets/gep/candidates.jsonl +1 -0
- package/assets/gep/capsules.json +4 -0
- package/assets/gep/events.jsonl +0 -0
- package/assets/gep/failed_capsules.json +4 -0
- package/assets/gep/genes.json +201 -0
- package/assets/gep/genes.jsonl +0 -0
- package/index.js +31 -1
- package/package.json +1 -1
- package/src/evolve.js +1 -1
- package/src/gep/.integrity +0 -0
- package/src/gep/a2aProtocol.js +1 -1
- package/src/gep/candidateEval.js +1 -1
- package/src/gep/candidates.js +1 -1
- package/src/gep/contentHash.js +1 -1
- package/src/gep/crypto.js +1 -1
- package/src/gep/curriculum.js +1 -1
- package/src/gep/deviceId.js +1 -1
- package/src/gep/envFingerprint.js +1 -1
- package/src/gep/explore.js +1 -1
- package/src/gep/hubReview.js +1 -1
- package/src/gep/hubSearch.js +1 -1
- package/src/gep/hubVerify.js +1 -1
- package/src/gep/integrityCheck.js +1 -1
- package/src/gep/learningSignals.js +1 -1
- package/src/gep/memoryGraph.js +1 -1
- package/src/gep/memoryGraphAdapter.js +1 -1
- package/src/gep/mutation.js +1 -1
- package/src/gep/narrativeMemory.js +1 -1
- package/src/gep/paths.js +7 -2
- package/src/gep/personality.js +1 -1
- package/src/gep/policyCheck.js +1 -1
- package/src/gep/prompt.js +1 -1
- package/src/gep/reflection.js +1 -1
- package/src/gep/selector.js +1 -1
- package/src/gep/shield.js +1 -1
- package/src/gep/skillDistiller.js +1 -1
- package/src/gep/solidify.js +1 -1
- package/src/gep/strategy.js +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"CapabilityCandidate","id":"cand_b9a66a5c","title":"Harden session log detection and fallback behavior","source":"signals","created_at":"2026-05-03T16:22:31.771Z","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"}}
|
|
File without changes
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 2,
|
|
3
|
+
"genes": [
|
|
4
|
+
{
|
|
5
|
+
"type": "Gene",
|
|
6
|
+
"id": "gene_gep_repair_from_errors",
|
|
7
|
+
"category": "repair",
|
|
8
|
+
"signals_match": [
|
|
9
|
+
"error",
|
|
10
|
+
"exception",
|
|
11
|
+
"failed",
|
|
12
|
+
"unstable"
|
|
13
|
+
],
|
|
14
|
+
"preconditions": [
|
|
15
|
+
"signals contains error-related indicators"
|
|
16
|
+
],
|
|
17
|
+
"strategy": [
|
|
18
|
+
"Extract structured signals from logs and user instructions",
|
|
19
|
+
"Select an existing Gene by signals match (no improvisation)",
|
|
20
|
+
"Estimate blast radius (files, lines) before editing",
|
|
21
|
+
"Apply smallest reversible patch",
|
|
22
|
+
"Validate using declared validation steps; rollback on failure",
|
|
23
|
+
"Solidify knowledge: append EvolutionEvent, update Gene/Capsule store"
|
|
24
|
+
],
|
|
25
|
+
"constraints": {
|
|
26
|
+
"max_files": 20,
|
|
27
|
+
"forbidden_paths": [
|
|
28
|
+
".git",
|
|
29
|
+
"node_modules"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"validation": [
|
|
33
|
+
"node scripts/validate-modules.js ./src/evolve ./src/gep/solidify ./src/gep/policyCheck ./src/gep/selector ./src/gep/memoryGraph ./src/gep/assetStore",
|
|
34
|
+
"node scripts/validate-suite.js"
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"type": "Gene",
|
|
39
|
+
"id": "gene_gep_optimize_prompt_and_assets",
|
|
40
|
+
"category": "optimize",
|
|
41
|
+
"signals_match": [
|
|
42
|
+
"protocol",
|
|
43
|
+
"gep",
|
|
44
|
+
"prompt",
|
|
45
|
+
"audit",
|
|
46
|
+
"reusable"
|
|
47
|
+
],
|
|
48
|
+
"preconditions": [
|
|
49
|
+
"need stricter, auditable evolution protocol outputs"
|
|
50
|
+
],
|
|
51
|
+
"strategy": [
|
|
52
|
+
"Extract signals and determine selection rationale via Selector JSON",
|
|
53
|
+
"Prefer reusing existing Gene/Capsule; only create if no match exists",
|
|
54
|
+
"Refactor prompt assembly to embed assets (genes, capsules, parent event)",
|
|
55
|
+
"Reduce noise and ambiguity; enforce strict output schema",
|
|
56
|
+
"Validate by running node index.js run and ensuring no runtime errors",
|
|
57
|
+
"Solidify: record EvolutionEvent, update Gene definitions, create Capsule on success"
|
|
58
|
+
],
|
|
59
|
+
"constraints": {
|
|
60
|
+
"max_files": 20,
|
|
61
|
+
"forbidden_paths": [
|
|
62
|
+
".git",
|
|
63
|
+
"node_modules"
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
"validation": [
|
|
67
|
+
"node scripts/validate-modules.js ./src/evolve ./src/gep/prompt ./src/gep/contentHash ./src/gep/skillDistiller",
|
|
68
|
+
"node scripts/validate-suite.js"
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"type": "Gene",
|
|
73
|
+
"id": "gene_gep_innovate_from_opportunity",
|
|
74
|
+
"category": "innovate",
|
|
75
|
+
"signals_match": [
|
|
76
|
+
"user_feature_request",
|
|
77
|
+
"user_improvement_suggestion",
|
|
78
|
+
"perf_bottleneck",
|
|
79
|
+
"capability_gap",
|
|
80
|
+
"stable_success_plateau",
|
|
81
|
+
"external_opportunity",
|
|
82
|
+
"bounty_task"
|
|
83
|
+
],
|
|
84
|
+
"preconditions": [
|
|
85
|
+
"at least one opportunity signal is present",
|
|
86
|
+
"no active log_error signals (stability first)"
|
|
87
|
+
],
|
|
88
|
+
"strategy": [
|
|
89
|
+
"Extract opportunity signals and identify the specific user need or system gap",
|
|
90
|
+
"Search existing Genes and Capsules for partial matches (avoid reinventing)",
|
|
91
|
+
"Design a minimal, testable implementation plan (prefer small increments)",
|
|
92
|
+
"Estimate blast radius; innovate changes may touch more files but must stay within constraints",
|
|
93
|
+
"Implement the change with clear validation criteria",
|
|
94
|
+
"Validate using declared validation steps; rollback on failure",
|
|
95
|
+
"Solidify: record EvolutionEvent with intent=innovate, create new Gene if pattern is novel, create Capsule on success"
|
|
96
|
+
],
|
|
97
|
+
"constraints": {
|
|
98
|
+
"max_files": 25,
|
|
99
|
+
"forbidden_paths": [
|
|
100
|
+
".git",
|
|
101
|
+
"node_modules"
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
"validation": [
|
|
105
|
+
"node scripts/validate-modules.js ./src/evolve ./src/gep/solidify ./src/gep/policyCheck ./src/gep/mutation ./src/gep/personality",
|
|
106
|
+
"node scripts/validate-suite.js"
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"type": "Gene",
|
|
111
|
+
"id": "gene_gep_optimize_tool_usage",
|
|
112
|
+
"summary": "Optimize tool execution patterns by reducing redundant exec calls, improving tool selection strategy, and enforcing tool-use constraints to prevent bypass.",
|
|
113
|
+
"category": "optimize",
|
|
114
|
+
"signals_match": [
|
|
115
|
+
"high_tool_usage:exec",
|
|
116
|
+
"repeated_tool_usage:exec",
|
|
117
|
+
"tool_bypass",
|
|
118
|
+
"tool_loop",
|
|
119
|
+
"high_tool_usage"
|
|
120
|
+
],
|
|
121
|
+
"preconditions": [
|
|
122
|
+
"agent repeatedly invokes the same tool (especially exec) without progress",
|
|
123
|
+
"tool execution bypass patterns detected",
|
|
124
|
+
"no active error signals (errors would take repair priority)"
|
|
125
|
+
],
|
|
126
|
+
"strategy": [
|
|
127
|
+
"Analyze tool usage patterns to identify the root cause of repetition (wrong tool, missing context, or lack of guardrails)",
|
|
128
|
+
"Introduce strategy-level guardrails: prefer single-shot commands, batch related operations, add explicit retry limits",
|
|
129
|
+
"If tool_bypass detected, strengthen constraint enforcement in prompt assembly or tool routing",
|
|
130
|
+
"Estimate blast radius; changes should target tool routing, prompt constraints, or signal deduplication logic",
|
|
131
|
+
"Validate by confirming no regressions in existing tool tests and signal extraction accuracy",
|
|
132
|
+
"Solidify: record EvolutionEvent with intent=optimize, update Capsule on success"
|
|
133
|
+
],
|
|
134
|
+
"constraints": {
|
|
135
|
+
"max_files": 15,
|
|
136
|
+
"forbidden_paths": [
|
|
137
|
+
".git",
|
|
138
|
+
"node_modules"
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
"validation": [
|
|
142
|
+
"node scripts/validate-modules.js ./src/gep/signals ./src/evolve",
|
|
143
|
+
"node scripts/validate-suite.js"
|
|
144
|
+
]
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"type": "Gene",
|
|
148
|
+
"id": "gene_distilled_s2g-env-vars",
|
|
149
|
+
"summary": "Vercel environment variable expert guidance. Use when working with .env files, vercel env commands, OIDC tokens, or managing environment-specific configuration.",
|
|
150
|
+
"category": "optimize",
|
|
151
|
+
"signals_match": [
|
|
152
|
+
"use_when_working_with",
|
|
153
|
+
"env_files",
|
|
154
|
+
"vercel_env_commands",
|
|
155
|
+
"oidc_tokens",
|
|
156
|
+
"vercel_env_pull",
|
|
157
|
+
"env_local_overwrite",
|
|
158
|
+
"oidc_token_expiry",
|
|
159
|
+
"dotenv_cli"
|
|
160
|
+
],
|
|
161
|
+
"preconditions": [
|
|
162
|
+
"Skill env-vars has just been executed locally"
|
|
163
|
+
],
|
|
164
|
+
"strategy": [
|
|
165
|
+
"Identify the dominant trigger signals from the Skill description.",
|
|
166
|
+
"Apply the smallest targeted change that satisfies the Skill workflow.",
|
|
167
|
+
"Run the Skill validation commands and abort if any fails."
|
|
168
|
+
],
|
|
169
|
+
"constraints": {
|
|
170
|
+
"max_files": 12,
|
|
171
|
+
"forbidden_paths": [
|
|
172
|
+
".git",
|
|
173
|
+
"node_modules"
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
"validation": [
|
|
177
|
+
"node --version"
|
|
178
|
+
],
|
|
179
|
+
"schema_version": "1.6.0",
|
|
180
|
+
"_source": {
|
|
181
|
+
"kind": "skill2gep",
|
|
182
|
+
"skill_name": "env-vars",
|
|
183
|
+
"skill_platform": "vercel",
|
|
184
|
+
"skill_hash": "ba0bdb4db2",
|
|
185
|
+
"rationale_paper": "Wang, Ren, Zhang. From Procedural Skills to Strategy Genes. arXiv:2604.15097",
|
|
186
|
+
"paper_scope": "code-science (arXiv:2604.15097, 45 tasks, Gemini 3.1 Pro/Flash Lite)",
|
|
187
|
+
"claims_outside_scope": "assumption",
|
|
188
|
+
"quality_heuristics": {
|
|
189
|
+
"strategy_steps": 0,
|
|
190
|
+
"avoid_count": 0,
|
|
191
|
+
"validation_declared_count": 0,
|
|
192
|
+
"validation_runnable_count": 0,
|
|
193
|
+
"validation_fallback_used": true,
|
|
194
|
+
"signals_extracted": 4,
|
|
195
|
+
"preconditions_extracted": 0
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
"asset_id": "sha256:4fa74fe34d19564416dfd8e63f3012a1672e86f39c4bff85d1c70524e06b5a2e"
|
|
199
|
+
}
|
|
200
|
+
]
|
|
201
|
+
}
|
|
File without changes
|
package/index.js
CHANGED
|
@@ -3,10 +3,40 @@
|
|
|
3
3
|
// modules see A2A_NODE_SECRET / A2A_NODE_ID / A2A_HUB_URL at first
|
|
4
4
|
// access and never fall back to a stale persisted/cached secret.
|
|
5
5
|
// Reported in #460.
|
|
6
|
+
//
|
|
7
|
+
// Load order matters (see #526): we must not call getRepoRoot() before
|
|
8
|
+
// .env is loaded, otherwise EVOLVER_REPO_ROOT set in .env is silently
|
|
9
|
+
// ignored because getRepoRoot() caches the .git-walk result on first
|
|
10
|
+
// call. Strategy:
|
|
11
|
+
// 1. Try .env at process.cwd() first. This is where a user running
|
|
12
|
+
// `evolver` from their project root expects the file, and it is
|
|
13
|
+
// independent of getRepoRoot() caching.
|
|
14
|
+
// 2. Read EVOLVER_REPO_ROOT from process.env (dotenv just populated it
|
|
15
|
+
// if set in cwd/.env).
|
|
16
|
+
// 3. Only now call getRepoRoot(), which will honor EVOLVER_REPO_ROOT
|
|
17
|
+
// if present; then try .env at that root as well (dotenv never
|
|
18
|
+
// overwrites already-set keys, so step 1 wins when both exist).
|
|
6
19
|
try {
|
|
7
20
|
const _path = require('path');
|
|
21
|
+
// Step 1: load .env from process.cwd() before any internal require.
|
|
22
|
+
// Matches the regression test for #460 which asserts
|
|
23
|
+
// `require('dotenv').config` appears before any ./src/* require other
|
|
24
|
+
// than ./src/gep/paths.
|
|
25
|
+
require('dotenv').config({ path: _path.join(process.cwd(), '.env') });
|
|
26
|
+
// Suppress the "Using host git repository at" banner during bootstrap.
|
|
27
|
+
// If .env at the discovered root overrides EVOLVER_REPO_ROOT, the
|
|
28
|
+
// initial banner would point at the wrong path and mislead users
|
|
29
|
+
// debugging the very chicken-and-egg problem #526 reported. The banner
|
|
30
|
+
// prints for real when getRepoRoot() is called later by application code.
|
|
31
|
+
const _prevQuiet = process.env.EVOLVER_QUIET_PARENT_GIT;
|
|
32
|
+
process.env.EVOLVER_QUIET_PARENT_GIT = '1';
|
|
8
33
|
const { getRepoRoot: _getRepoRoot } = require('./src/gep/paths');
|
|
9
|
-
|
|
34
|
+
const _root = _getRepoRoot();
|
|
35
|
+
if (_root && _root !== process.cwd()) {
|
|
36
|
+
require('dotenv').config({ path: _path.join(_root, '.env') });
|
|
37
|
+
}
|
|
38
|
+
if (_prevQuiet === undefined) delete process.env.EVOLVER_QUIET_PARENT_GIT;
|
|
39
|
+
else process.env.EVOLVER_QUIET_PARENT_GIT = _prevQuiet;
|
|
10
40
|
} catch (e) { /* dotenv is optional */ }
|
|
11
41
|
|
|
12
42
|
const evolve = require('./src/evolve');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@evomap/evolver",
|
|
3
|
-
"version": "1.78.
|
|
3
|
+
"version": "1.78.7",
|
|
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": {
|