@evomap/evolver 1.90.0 → 2.0.0-beta.1
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/README.md +27 -564
- package/bin/evolver-llm-proxy.js +3 -0
- package/bin/evolver-mcp.js +2 -0
- package/bin/evolver-proxy.js +3 -0
- package/bin/evolver.js +4 -0
- package/index.js +1 -3670
- package/package.json +32 -62
- package/CONTRIBUTING.md +0 -19
- package/LICENSE +0 -641
- package/README.ja-JP.md +0 -521
- package/README.ko-KR.md +0 -520
- package/README.zh-CN.md +0 -531
- package/SKILL.md +0 -365
- package/assets/cover.png +0 -0
- package/assets/gep/genes.seed.json +0 -496
- package/conformance/savings-core/constants.json +0 -30
- package/conformance/savings-core/golden-vectors.json +0 -333
- package/scripts/a2a_export.js +0 -63
- package/scripts/a2a_ingest.js +0 -79
- package/scripts/a2a_promote.js +0 -118
- package/scripts/analyze_by_skill.js +0 -121
- package/scripts/build_binaries.js +0 -479
- package/scripts/check-changelog.js +0 -166
- package/scripts/extract_log.js +0 -85
- package/scripts/generate_history.js +0 -75
- package/scripts/gep_append_event.js +0 -96
- package/scripts/gep_personality_report.js +0 -234
- package/scripts/human_report.js +0 -147
- package/scripts/recall-verify-report.js +0 -234
- package/scripts/recover_loop.js +0 -61
- package/scripts/refresh_stars_badge.js +0 -168
- package/scripts/seed-merchants.js +0 -91
- package/scripts/skill2recipes.js +0 -118
- package/scripts/suggest_version.js +0 -89
- package/scripts/validate-modules.js +0 -38
- package/scripts/validate-suite.js +0 -78
- package/src/adapters/claudeCode.js +0 -194
- package/src/adapters/codex.js +0 -216
- package/src/adapters/cursor.js +0 -91
- package/src/adapters/hookAdapter.js +0 -469
- package/src/adapters/kiro.js +0 -195
- package/src/adapters/opencode.js +0 -326
- package/src/adapters/scripts/_lockPaths.js +0 -74
- package/src/adapters/scripts/_memoryFiltering.js +0 -35
- package/src/adapters/scripts/_runtimePaths.js +0 -440
- package/src/adapters/scripts/evolver-session-end.js +0 -321
- package/src/adapters/scripts/evolver-session-start.js +0 -587
- package/src/adapters/scripts/evolver-signal-detect.js +0 -98
- package/src/adapters/scripts/evolver-task-recall.js +0 -173
- package/src/atp/atpExecute.js +0 -283
- package/src/atp/atpTaskPickup.js +0 -233
- package/src/atp/autoBuyer.js +0 -382
- package/src/atp/autoDeliver.js +0 -215
- package/src/atp/cli.js +0 -354
- package/src/atp/cliAutobuyPrompt.js +0 -154
- package/src/atp/consumerAgent.js +0 -157
- package/src/atp/defaultHandler.js +0 -69
- package/src/atp/heartbeatSignalsHandler.js +0 -254
- package/src/atp/hubClient.js +0 -317
- package/src/atp/index.js +0 -38
- package/src/atp/merchantAgent.js +0 -118
- package/src/atp/protocol.js +0 -41
- package/src/atp/questionComposer.js +0 -133
- package/src/atp/serviceHelper.js +0 -92
- package/src/canary.js +0 -13
- package/src/config.js +0 -351
- package/src/evolve/guards.js +0 -1
- package/src/evolve/pipeline/collect.js +0 -1
- package/src/evolve/pipeline/dispatch.js +0 -1
- package/src/evolve/pipeline/enrich.js +0 -1
- package/src/evolve/pipeline/hub.js +0 -1
- package/src/evolve/pipeline/select.js +0 -1
- package/src/evolve/pipeline/signals.js +0 -1
- package/src/evolve/utils.js +0 -1
- package/src/evolve.js +0 -1
- package/src/experiment/agentRunner.js +0 -229
- package/src/experiment/cli.js +0 -159
- package/src/experiment/comparison.js +0 -233
- package/src/experiment/metrics.js +0 -75
- package/src/forceUpdate.js +0 -991
- package/src/gep/a2a.js +0 -173
- package/src/gep/a2aProtocol.js +0 -1
- package/src/gep/analyzer.js +0 -35
- package/src/gep/antiAbuseTelemetry.js +0 -1
- package/src/gep/assetCallLog.js +0 -197
- package/src/gep/assetStore.js +0 -723
- package/src/gep/assets.js +0 -36
- package/src/gep/autoDistillConv.js +0 -1
- package/src/gep/autoDistillLlm.js +0 -1
- package/src/gep/bridge.js +0 -138
- package/src/gep/candidateEval.js +0 -1
- package/src/gep/candidates.js +0 -1
- package/src/gep/claimNudge.js +0 -121
- package/src/gep/cliContracts.js +0 -1190
- package/src/gep/contentHash.js +0 -1
- package/src/gep/conversationDistiller.js +0 -1
- package/src/gep/conversationSniffer.js +0 -1
- package/src/gep/crypto.js +0 -1
- package/src/gep/curriculum.js +0 -1
- package/src/gep/deviceId.js +0 -1
- package/src/gep/directoryClient.js +0 -115
- package/src/gep/envFingerprint.js +0 -1
- package/src/gep/epigenetics.js +0 -1
- package/src/gep/execBridge.js +0 -1
- package/src/gep/executionTrace.js +0 -291
- package/src/gep/explore.js +0 -1
- package/src/gep/featureFlags.js +0 -121
- package/src/gep/gitOps.js +0 -265
- package/src/gep/hash.js +0 -1
- package/src/gep/hostErrorClassifier.js +0 -34
- package/src/gep/hubFetch.js +0 -1
- package/src/gep/hubReview.js +0 -1
- package/src/gep/hubSearch.js +0 -1
- package/src/gep/hubVerify.js +0 -1
- package/src/gep/idleScheduler.js +0 -400
- package/src/gep/issueReporter.js +0 -416
- package/src/gep/learningSignals.js +0 -1
- package/src/gep/llmReview.js +0 -92
- package/src/gep/localStateAwareness.js +0 -243
- package/src/gep/mailboxTransport.js +0 -119
- package/src/gep/memoryGraph.js +0 -1
- package/src/gep/memoryGraphAdapter.js +0 -1
- package/src/gep/mutation.js +0 -1
- package/src/gep/narrativeMemory.js +0 -1
- package/src/gep/oauthLogin.js +0 -181
- package/src/gep/openPRRegistry.js +0 -1
- package/src/gep/paths.js +0 -522
- package/src/gep/personality.js +0 -1
- package/src/gep/policyCheck.js +0 -1
- package/src/gep/portable.js +0 -103
- package/src/gep/privacyClient.js +0 -235
- package/src/gep/prompt.js +0 -1
- package/src/gep/questionGenerator.js +0 -518
- package/src/gep/recallInject.js +0 -1
- package/src/gep/recallVerifier.js +0 -1
- package/src/gep/reflection.js +0 -1
- package/src/gep/sanitize.js +0 -264
- package/src/gep/savingsCore.js +0 -1
- package/src/gep/schemas/capsule.js +0 -170
- package/src/gep/schemas/gene.js +0 -154
- package/src/gep/schemas/index.js +0 -8
- package/src/gep/schemas/protocol.js +0 -51
- package/src/gep/schemas/task.js +0 -74
- package/src/gep/selector.js +0 -1
- package/src/gep/selfPR.js +0 -469
- package/src/gep/signals.js +0 -776
- package/src/gep/skill2gep.js +0 -1056
- package/src/gep/skill2gepAudit.js +0 -303
- package/src/gep/skill2recipes.js +0 -511
- package/src/gep/skillDistiller.js +0 -1
- package/src/gep/skillPublisher.js +0 -358
- package/src/gep/solidify.js +0 -1
- package/src/gep/strategy.js +0 -1
- package/src/gep/taskReceiver.js +0 -575
- package/src/gep/tokenSavings.js +0 -1
- package/src/gep/trajectoryExport.js +0 -1
- package/src/gep/validationReport.js +0 -55
- package/src/gep/validator/index.js +0 -411
- package/src/gep/validator/reporter.js +0 -210
- package/src/gep/validator/sandboxExecutor.js +0 -480
- package/src/gep/validator/stakeBootstrap.js +0 -357
- package/src/gep/workspaceKeychain.js +0 -1
- package/src/ops/cleanup.js +0 -80
- package/src/ops/commentary.js +0 -60
- package/src/ops/health_check.js +0 -104
- package/src/ops/index.js +0 -11
- package/src/ops/innovation.js +0 -67
- package/src/ops/lifecycle.js +0 -798
- package/src/ops/self_repair.js +0 -76
- package/src/ops/skills_monitor.js +0 -147
- package/src/ops/trigger.js +0 -33
- package/src/proxy/clientSettings.js +0 -405
- package/src/proxy/envelope.js +0 -59
- package/src/proxy/extensions/dmHandler.js +0 -45
- package/src/proxy/extensions/sessionHandler.js +0 -141
- package/src/proxy/extensions/skillUpdater.js +0 -64
- package/src/proxy/extensions/traceControl.js +0 -1
- package/src/proxy/index.js +0 -1395
- package/src/proxy/inject.js +0 -1
- package/src/proxy/lifecycle/manager.js +0 -1568
- package/src/proxy/mailbox/state.js +0 -207
- package/src/proxy/mailbox/store.js +0 -602
- package/src/proxy/router/cache_passthrough.js +0 -26
- package/src/proxy/router/features.js +0 -84
- package/src/proxy/router/gemini_route.js +0 -154
- package/src/proxy/router/messages_route.js +0 -535
- package/src/proxy/router/model_router.js +0 -113
- package/src/proxy/router/models_route.js +0 -52
- package/src/proxy/router/ollama_route.js +0 -103
- package/src/proxy/router/responses_route.js +0 -170
- package/src/proxy/router/vertex_route.js +0 -110
- package/src/proxy/server/http.js +0 -363
- package/src/proxy/server/routes.js +0 -558
- package/src/proxy/server/settings.js +0 -115
- package/src/proxy/sync/engine.js +0 -179
- package/src/proxy/sync/inbound.js +0 -211
- package/src/proxy/sync/outbound.js +0 -361
- package/src/proxy/task/monitor.js +0 -131
- package/src/proxy/trace/extractor.js +0 -1
- package/src/proxy/trace/usage.js +0 -1
- package/src/solo/breaker.js +0 -25
- package/src/solo/gitGuard.js +0 -65
- package/src/webui/client/clientJs/assets.js +0 -111
- package/src/webui/client/clientJs/bootstrap.js +0 -92
- package/src/webui/client/clientJs/common.js +0 -77
- package/src/webui/client/clientJs/i18n.js +0 -366
- package/src/webui/client/clientJs/index.js +0 -35
- package/src/webui/client/clientJs/interactions.js +0 -351
- package/src/webui/client/clientJs/overview.js +0 -152
- package/src/webui/client/clientJs/personality.js +0 -285
- package/src/webui/client/clientJs/pipelines.js +0 -330
- package/src/webui/client/indexHtml.js +0 -221
- package/src/webui/client/static.js +0 -23
- package/src/webui/client/stylesCss.js +0 -639
- package/src/webui/client/vendor/README.md +0 -15
- package/src/webui/client/vendor/echarts.min.js +0 -45
- package/src/webui/index.js +0 -14
- package/src/webui/observer/assets.js +0 -146
- package/src/webui/observer/index.js +0 -37
- package/src/webui/observer/interactions.js +0 -127
- package/src/webui/observer/jsonl.js +0 -75
- package/src/webui/observer/paths.js +0 -46
- package/src/webui/observer/personality.js +0 -43
- package/src/webui/observer/pipelineEvents.js +0 -58
- package/src/webui/observer/redact.js +0 -63
- package/src/webui/observer/runs.js +0 -356
- package/src/webui/observer/safety.js +0 -57
- package/src/webui/observer/skills.js +0 -70
- package/src/webui/observer/status.js +0 -71
- package/src/webui/server/http.js +0 -138
- package/src/webui/server/routes.js +0 -41
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const fs = require('fs');
|
|
4
|
-
const path = require('path');
|
|
5
|
-
|
|
6
|
-
const PRIVATE_DIR_MODE = 0o700;
|
|
7
|
-
const PRIVATE_FILE_MODE = 0o600;
|
|
8
|
-
const STATE_LOCK_STALE_MS = 10_000;
|
|
9
|
-
const STATE_LOCK_WAIT_MS = 10;
|
|
10
|
-
|
|
11
|
-
const MAILBOX_NODE_SECRET_STATE_KEYS = Object.freeze([
|
|
12
|
-
'node_secret',
|
|
13
|
-
'node_secret_version',
|
|
14
|
-
'node_secret_source',
|
|
15
|
-
'node_secret_env_suppressed',
|
|
16
|
-
]);
|
|
17
|
-
|
|
18
|
-
const MAILBOX_NODE_SECRET_STATE_KEY_SET = new Set(MAILBOX_NODE_SECRET_STATE_KEYS);
|
|
19
|
-
const MAILBOX_NODE_SECRET_TUPLE_KEYS = Object.freeze([
|
|
20
|
-
'node_secret',
|
|
21
|
-
'node_secret_version',
|
|
22
|
-
'node_secret_source',
|
|
23
|
-
]);
|
|
24
|
-
const MAILBOX_NODE_SECRET_TUPLE_KEY_SET = new Set(MAILBOX_NODE_SECRET_TUPLE_KEYS);
|
|
25
|
-
|
|
26
|
-
function bestEffortChmod(filePath, mode) {
|
|
27
|
-
try { fs.chmodSync(filePath, mode); } catch { /* best effort; no-op on Windows */ }
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function ensurePrivateDir(dir) {
|
|
31
|
-
if (!fs.existsSync(dir)) {
|
|
32
|
-
fs.mkdirSync(dir, { recursive: true, mode: PRIVATE_DIR_MODE });
|
|
33
|
-
}
|
|
34
|
-
bestEffortChmod(dir, PRIVATE_DIR_MODE);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function writePrivateFile(filePath, content) {
|
|
38
|
-
fs.writeFileSync(filePath, content, { encoding: 'utf8', mode: PRIVATE_FILE_MODE });
|
|
39
|
-
bestEffortChmod(filePath, PRIVATE_FILE_MODE);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function sleepSync(ms) {
|
|
43
|
-
try {
|
|
44
|
-
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
45
|
-
} catch {
|
|
46
|
-
const end = Date.now() + ms;
|
|
47
|
-
while (Date.now() < end) {}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function acquireStateFileLock(stateFile) {
|
|
52
|
-
ensurePrivateDir(path.dirname(stateFile));
|
|
53
|
-
const lockDir = `${stateFile}.lock`;
|
|
54
|
-
const startedAt = Date.now();
|
|
55
|
-
while (true) {
|
|
56
|
-
try {
|
|
57
|
-
fs.mkdirSync(lockDir, { mode: PRIVATE_DIR_MODE });
|
|
58
|
-
bestEffortChmod(lockDir, PRIVATE_DIR_MODE);
|
|
59
|
-
return function releaseStateFileLock() {
|
|
60
|
-
try { fs.rmdirSync(lockDir); } catch {}
|
|
61
|
-
};
|
|
62
|
-
} catch (e) {
|
|
63
|
-
if (!e || e.code !== 'EEXIST') throw e;
|
|
64
|
-
try {
|
|
65
|
-
const ageMs = Date.now() - fs.statSync(lockDir).mtimeMs;
|
|
66
|
-
if (ageMs > STATE_LOCK_STALE_MS) {
|
|
67
|
-
fs.rmSync(lockDir, { recursive: true, force: true });
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
} catch (statErr) {
|
|
71
|
-
if (statErr && statErr.code === 'ENOENT') continue;
|
|
72
|
-
throw statErr;
|
|
73
|
-
}
|
|
74
|
-
if (Date.now() - startedAt > STATE_LOCK_STALE_MS) {
|
|
75
|
-
const err = new Error('timed out waiting for mailbox state lock');
|
|
76
|
-
err.code = 'MAILBOX_STATE_LOCK_TIMEOUT';
|
|
77
|
-
throw err;
|
|
78
|
-
}
|
|
79
|
-
sleepSync(STATE_LOCK_WAIT_MS);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function isPlainState(value) {
|
|
85
|
-
return value && typeof value === 'object' && !Array.isArray(value);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
function isHubRotatedNodeSecretState(state) {
|
|
89
|
-
return isPlainState(state)
|
|
90
|
-
&& state.node_secret_source === 'hub_rotate'
|
|
91
|
-
&& typeof state.node_secret === 'string'
|
|
92
|
-
&& Boolean(state.node_secret.trim());
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
function parseNodeSecretVersion(value) {
|
|
96
|
-
const n = Number(value);
|
|
97
|
-
return Number.isInteger(n) && n > 0 ? n : null;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
function isFullNodeSecretTupleUpdate(updatedSet) {
|
|
101
|
-
return Boolean(updatedSet) && MAILBOX_NODE_SECRET_TUPLE_KEYS.every((key) => updatedSet.has(key));
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
function canApplyPartialNodeSecretTupleWrite(key, disk, next) {
|
|
105
|
-
if (key !== 'node_secret_version') return false;
|
|
106
|
-
if (!isHubRotatedNodeSecretState(disk)) return true;
|
|
107
|
-
if (!isHubRotatedNodeSecretState(next)) return false;
|
|
108
|
-
if (String(next.node_secret).trim() !== String(disk.node_secret).trim()) return false;
|
|
109
|
-
const nextVersion = parseNodeSecretVersion(next.node_secret_version);
|
|
110
|
-
const diskVersion = parseNodeSecretVersion(disk.node_secret_version);
|
|
111
|
-
return Boolean(nextVersion && (!diskVersion || nextVersion >= diskVersion));
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* @param {string} stateFile
|
|
116
|
-
* @returns {Record<string, unknown>|null}
|
|
117
|
-
*/
|
|
118
|
-
function readMailboxStateFile(stateFile) {
|
|
119
|
-
try {
|
|
120
|
-
if (!fs.existsSync(stateFile)) return null;
|
|
121
|
-
const parsed = JSON.parse(fs.readFileSync(stateFile, 'utf8'));
|
|
122
|
-
return isPlainState(parsed) ? parsed : null;
|
|
123
|
-
} catch {
|
|
124
|
-
return null;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
function replaceStateFile(stateFile, state) {
|
|
129
|
-
const dir = path.dirname(stateFile);
|
|
130
|
-
ensurePrivateDir(dir);
|
|
131
|
-
const tmp = `${stateFile}.${process.pid}.tmp`;
|
|
132
|
-
writePrivateFile(tmp, JSON.stringify(state || {}, null, 2) + '\n');
|
|
133
|
-
// Windows: renameSync throws EPERM when the destination file already
|
|
134
|
-
// exists, unlike POSIX where rename(2) atomically replaces the target.
|
|
135
|
-
if (process.platform === 'win32') {
|
|
136
|
-
try { fs.unlinkSync(stateFile); } catch (e) {
|
|
137
|
-
if (e.code !== 'ENOENT') throw e;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
fs.renameSync(tmp, stateFile);
|
|
141
|
-
bestEffortChmod(stateFile, PRIVATE_FILE_MODE);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Merge a partial state write with the latest on-disk state.
|
|
146
|
-
*
|
|
147
|
-
* Callers pass the keys they intentionally changed. Secret-bearing keys are
|
|
148
|
-
* only written when they are in `updatedKeys`, so an old long-running
|
|
149
|
-
* MailboxStore cannot overwrite a fresher Hub-rotated or divergence-cleared
|
|
150
|
-
* secret tuple that was written by another process between load and persist.
|
|
151
|
-
*
|
|
152
|
-
* @param {string} stateFile
|
|
153
|
-
* @param {Record<string, unknown>} nextState
|
|
154
|
-
* @param {Iterable<string>} updatedKeys
|
|
155
|
-
* @returns {Record<string, unknown>}
|
|
156
|
-
*/
|
|
157
|
-
function writeMergedMailboxStateFile(stateFile, nextState, updatedKeys) {
|
|
158
|
-
const releaseLock = acquireStateFileLock(stateFile);
|
|
159
|
-
try {
|
|
160
|
-
const next = isPlainState(nextState) ? nextState : {};
|
|
161
|
-
const disk = readMailboxStateFile(stateFile);
|
|
162
|
-
const hasDiskState = isPlainState(disk);
|
|
163
|
-
const merged = hasDiskState ? { ...disk } : {};
|
|
164
|
-
const updatedSet = updatedKeys ? new Set(Array.from(updatedKeys)) : null;
|
|
165
|
-
const keys = updatedSet ? Array.from(updatedSet) : Object.keys(next);
|
|
166
|
-
const touchesNodeSecretTuple = keys.some((key) => MAILBOX_NODE_SECRET_TUPLE_KEY_SET.has(key));
|
|
167
|
-
const preserveDiskNodeSecretTuple = touchesNodeSecretTuple
|
|
168
|
-
&& hasDiskState
|
|
169
|
-
&& isHubRotatedNodeSecretState(disk)
|
|
170
|
-
&& !isFullNodeSecretTupleUpdate(updatedSet);
|
|
171
|
-
|
|
172
|
-
for (const key of keys) {
|
|
173
|
-
if (MAILBOX_NODE_SECRET_STATE_KEY_SET.has(key) && hasDiskState && (!updatedSet || !updatedSet.has(key))) {
|
|
174
|
-
continue;
|
|
175
|
-
}
|
|
176
|
-
if (
|
|
177
|
-
MAILBOX_NODE_SECRET_TUPLE_KEY_SET.has(key) &&
|
|
178
|
-
preserveDiskNodeSecretTuple &&
|
|
179
|
-
!canApplyPartialNodeSecretTupleWrite(key, disk, next)
|
|
180
|
-
) {
|
|
181
|
-
continue;
|
|
182
|
-
}
|
|
183
|
-
if (!Object.prototype.hasOwnProperty.call(next, key)) {
|
|
184
|
-
delete merged[key];
|
|
185
|
-
continue;
|
|
186
|
-
}
|
|
187
|
-
merged[key] = next[key];
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
replaceStateFile(stateFile, merged);
|
|
191
|
-
return merged;
|
|
192
|
-
} finally {
|
|
193
|
-
releaseLock();
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
module.exports = {
|
|
198
|
-
PRIVATE_DIR_MODE,
|
|
199
|
-
PRIVATE_FILE_MODE,
|
|
200
|
-
MAILBOX_NODE_SECRET_STATE_KEYS,
|
|
201
|
-
bestEffortChmod,
|
|
202
|
-
ensurePrivateDir,
|
|
203
|
-
writePrivateFile,
|
|
204
|
-
readMailboxStateFile,
|
|
205
|
-
isHubRotatedNodeSecretState,
|
|
206
|
-
writeMergedMailboxStateFile,
|
|
207
|
-
};
|