@evomap/evolver 1.78.8 → 1.78.10
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 -2
- package/index.js +52 -6
- 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/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
|
@@ -1,2 +1 @@
|
|
|
1
|
-
{"type":"CapabilityCandidate","id":"cand_b9a66a5c","title":"Harden session log detection and fallback behavior","source":"signals","created_at":"2026-05-
|
|
2
|
-
{"type":"CapabilityCandidate","id":"cand_b9a66a5c","title":"Harden session log detection and fallback behavior","source":"signals","created_at":"2026-05-04T02:32:12.505Z","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-05-05T01:31:11.544Z","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"}}
|
package/index.js
CHANGED
|
@@ -1097,6 +1097,7 @@ async function main() {
|
|
|
1097
1097
|
})();
|
|
1098
1098
|
const dryRun = args.includes('--dry-run');
|
|
1099
1099
|
const listUnpublished = !args.includes('--no-unpublished-list');
|
|
1100
|
+
const force = args.includes('--force');
|
|
1100
1101
|
const limitPerPage = 100;
|
|
1101
1102
|
|
|
1102
1103
|
const validScopes = new Set(['all', 'purchased', 'published']);
|
|
@@ -1173,11 +1174,25 @@ async function main() {
|
|
|
1173
1174
|
|
|
1174
1175
|
const existingGenes = loadGenes();
|
|
1175
1176
|
const existingCapsules = loadCapsules();
|
|
1177
|
+
// Dedup by Hub asset_id is the only safe key. Local-facing `id` (e.g.
|
|
1178
|
+
// `gene_gep_repair_from_errors`) collides between bundled default seed
|
|
1179
|
+
// genes and identically-named assets that the user later published, so
|
|
1180
|
+
// dedup-by-id silently skips legitimate Hub copies on first sync. Track
|
|
1181
|
+
// hub_asset_id (set by previous syncs / publishes) and only skip when
|
|
1182
|
+
// we've already seen the same Hub-side identity.
|
|
1183
|
+
const localHubAssetIds = new Set();
|
|
1184
|
+
for (const g of existingGenes) {
|
|
1185
|
+
if (g && g.hub_asset_id) localHubAssetIds.add(String(g.hub_asset_id));
|
|
1186
|
+
}
|
|
1187
|
+
for (const c of existingCapsules) {
|
|
1188
|
+
if (c && c.hub_asset_id) localHubAssetIds.add(String(c.hub_asset_id));
|
|
1189
|
+
}
|
|
1176
1190
|
const localGeneIds = new Set(existingGenes.filter(function (g) { return g && g.id; }).map(function (g) { return g.id; }));
|
|
1177
1191
|
const localCapsuleIds = new Set(existingCapsules.filter(function (c) { return c && c.id; }).map(function (c) { return c.id; }));
|
|
1178
1192
|
|
|
1179
1193
|
let synced = 0;
|
|
1180
|
-
let
|
|
1194
|
+
let skippedAlreadySynced = 0;
|
|
1195
|
+
let skippedIdCollision = 0;
|
|
1181
1196
|
let fetchErrors = 0;
|
|
1182
1197
|
|
|
1183
1198
|
for (const asset of allAssets) {
|
|
@@ -1186,14 +1201,37 @@ async function main() {
|
|
|
1186
1201
|
const localId = asset.local_id || assetId;
|
|
1187
1202
|
|
|
1188
1203
|
if (assetType !== 'Gene' && assetType !== 'Capsule') {
|
|
1189
|
-
|
|
1204
|
+
skippedAlreadySynced++;
|
|
1205
|
+
continue;
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
// Already-synced check: same Hub asset_id is already in our local
|
|
1209
|
+
// store. Idempotent skip; safe to no-op even with --force because
|
|
1210
|
+
// re-fetching the same payload would only rewrite identical bytes.
|
|
1211
|
+
if (!force && localHubAssetIds.has(String(assetId))) {
|
|
1212
|
+
skippedAlreadySynced++;
|
|
1190
1213
|
continue;
|
|
1191
1214
|
}
|
|
1192
|
-
|
|
1193
|
-
|
|
1215
|
+
|
|
1216
|
+
// Local-id collision: a local entry with the same user-facing id
|
|
1217
|
+
// already exists but has no hub_asset_id (e.g. bundled default seed
|
|
1218
|
+
// gene, or a hand-edited entry). Without --force we keep the
|
|
1219
|
+
// user-owned entry and warn so the user can decide.
|
|
1220
|
+
if (!force) {
|
|
1221
|
+
if (assetType === 'Gene' && localGeneIds.has(localId)) {
|
|
1222
|
+
if (isVerbose) console.warn(' [sync] Skipping ' + localId + ' (local id collision; pass --force to overwrite with Hub copy)');
|
|
1223
|
+
skippedIdCollision++;
|
|
1224
|
+
continue;
|
|
1225
|
+
}
|
|
1226
|
+
if (assetType === 'Capsule' && localCapsuleIds.has(localId)) {
|
|
1227
|
+
if (isVerbose) console.warn(' [sync] Skipping ' + localId + ' (local id collision; pass --force to overwrite with Hub copy)');
|
|
1228
|
+
skippedIdCollision++;
|
|
1229
|
+
continue;
|
|
1230
|
+
}
|
|
1231
|
+
}
|
|
1194
1232
|
|
|
1195
1233
|
if (dryRun) {
|
|
1196
|
-
console.log(' [dry-run] Would sync: ' + assetType + ' ' + assetId);
|
|
1234
|
+
console.log(' [dry-run] Would sync: ' + assetType + ' ' + assetId + (force ? ' (force)' : ''));
|
|
1197
1235
|
synced++;
|
|
1198
1236
|
continue;
|
|
1199
1237
|
}
|
|
@@ -1230,6 +1268,7 @@ async function main() {
|
|
|
1230
1268
|
};
|
|
1231
1269
|
upsertGene(geneObj);
|
|
1232
1270
|
localGeneIds.add(geneObj.id);
|
|
1271
|
+
localHubAssetIds.add(String(assetId));
|
|
1233
1272
|
} else {
|
|
1234
1273
|
const capsuleObj = {
|
|
1235
1274
|
type: 'Capsule',
|
|
@@ -1244,6 +1283,7 @@ async function main() {
|
|
|
1244
1283
|
};
|
|
1245
1284
|
upsertCapsule(capsuleObj);
|
|
1246
1285
|
localCapsuleIds.add(capsuleObj.id);
|
|
1286
|
+
localHubAssetIds.add(String(assetId));
|
|
1247
1287
|
}
|
|
1248
1288
|
synced++;
|
|
1249
1289
|
} catch (fetchErr) {
|
|
@@ -1252,7 +1292,12 @@ async function main() {
|
|
|
1252
1292
|
}
|
|
1253
1293
|
}
|
|
1254
1294
|
|
|
1255
|
-
|
|
1295
|
+
const skippedTotal = skippedAlreadySynced + skippedIdCollision;
|
|
1296
|
+
console.log('[sync] Done. scope=' + scopeArg + ' synced=' + synced + ' skipped=' + skippedTotal + ' (already_synced=' + skippedAlreadySynced + ', id_collision=' + skippedIdCollision + ') errors=' + fetchErrors);
|
|
1297
|
+
if (skippedIdCollision > 0 && !force) {
|
|
1298
|
+
console.log('[sync] ' + skippedIdCollision + ' Hub asset(s) share a local id with an existing local entry that has no hub_asset_id.');
|
|
1299
|
+
console.log('[sync] Re-run with --force to overwrite those local entries with the Hub copies.');
|
|
1300
|
+
}
|
|
1256
1301
|
if (dryRun) console.log('[sync] (dry-run mode: no files were modified)');
|
|
1257
1302
|
|
|
1258
1303
|
if (listUnpublished && doPublished) {
|
|
@@ -1467,6 +1512,7 @@ async function main() {
|
|
|
1467
1512
|
- --status=draft,promoted,all (only for published scope; default promoted+draft)
|
|
1468
1513
|
- --export=<path.gepx> (also bundle local assets into a .gepx archive)
|
|
1469
1514
|
- --no-unpublished-list (suppress local-only asset list)
|
|
1515
|
+
- --force (overwrite local entries that share an id with a Hub asset; bypasses default-seed dedup)
|
|
1470
1516
|
- --dry-run (preview without writing to local store)
|
|
1471
1517
|
- solidify flags:
|
|
1472
1518
|
- --dry-run
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@evomap/evolver",
|
|
3
|
-
"version": "1.78.
|
|
3
|
+
"version": "1.78.10",
|
|
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": {
|