@evomap/evolver 1.68.0-beta.2 → 1.69.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.ja-JP.md +19 -0
- package/README.md +19 -0
- package/README.zh-CN.md +19 -0
- package/index.js +46 -4
- 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/featureFlags.js +114 -0
- 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/signals.js +13 -11
- package/src/gep/skillDistiller.js +1 -1
- package/src/gep/solidify.js +1 -1
- package/src/gep/strategy.js +1 -1
- package/src/gep/validator/index.js +87 -1
- package/src/proxy/mailbox/store.js +32 -3
- package/SECURITY.md +0 -66
- package/assets/gep/candidates.jsonl +0 -9
- package/assets/gep/failed_capsules.json +0 -4
- package/assets/gep/genes.jsonl +0 -0
package/README.ja-JP.md
CHANGED
|
@@ -355,6 +355,25 @@ EVOLVE_REPORT_TOOL=feishu-card
|
|
|
355
355
|
**方法 2: 動的検出**
|
|
356
356
|
スクリプトは、互換性のあるローカルスキル(`skills/feishu-card` など)がワークスペースに存在するかを自動的に検出し、それに応じて動作をアップグレードします。
|
|
357
357
|
|
|
358
|
+
### バリデータ役割(デフォルト ON)
|
|
359
|
+
|
|
360
|
+
[EvoMap Hub](https://evomap.ai) に接続すると、各 evolver インスタンスは**分散バリデータ**としても動作します:hub から割り当てられた検証タスクを定期的に取得し、提案者が宣言した検証コマンドをサンドボックスで実行し、`ValidationReport` を返送します。コンセンサスに参加したバリデータはクレジットと評判を獲得します。
|
|
361
|
+
|
|
362
|
+
| 変数 | デフォルト | 説明 |
|
|
363
|
+
|------|-----------|------|
|
|
364
|
+
| `EVOLVER_VALIDATOR_ENABLED` | _(未設定 = ON)_ | `0`/`false`/`off` でオプトアウト、`1`/`true`/`on` で強制 ON。env が hub プッシュフラグおよびコードのデフォルトより優先されます。 |
|
|
365
|
+
| `EVOLVER_VALIDATOR_DAEMON_INTERVAL_MS` | `60000` | `--loop`/`--mad-dog` モードでのバリデータ常駐ポーリング間隔。 |
|
|
366
|
+
| `EVOLVER_VALIDATOR_MAX_TASKS_PER_CYCLE` | `2` | ポーリングごとの最大取得タスク数。 |
|
|
367
|
+
| `EVOLVER_VALIDATOR_FETCH_TIMEOUT_MS` | `8000` | 1 回のフェッチのタイムアウト。 |
|
|
368
|
+
|
|
369
|
+
永続フラグの上書き:env が未設定の場合、ランタイムは `~/.evomap/feature_flags.json` を読み込みます。Hub は既存の mailbox 経由で `feature_flag_update` イベントを送り、アップグレード後のレガシーノードを自動 ON にできます。
|
|
370
|
+
|
|
371
|
+
永続的にオプトアウト:
|
|
372
|
+
|
|
373
|
+
```bash
|
|
374
|
+
EVOLVER_VALIDATOR_ENABLED=0 evolver run --loop
|
|
375
|
+
```
|
|
376
|
+
|
|
358
377
|
### GitHub Issue 自動報告
|
|
359
378
|
|
|
360
379
|
evolver が持続的な失敗(失敗ループまたは高い失敗率での繰り返しエラー)を検出すると、サニタイズされた環境情報とログで GitHub issue を上流リポジトリに自動的にファイルできます。すべての機密データ(トークン、ローカルパス、メールなど)は送信前に編集されます。
|
package/README.md
CHANGED
|
@@ -354,6 +354,25 @@ EVOLVE_REPORT_TOOL=feishu-card
|
|
|
354
354
|
**Method 2: Dynamic Detection**
|
|
355
355
|
The script automatically detects if compatible local skills (like `skills/feishu-card`) exist in your workspace and upgrades its behavior accordingly.
|
|
356
356
|
|
|
357
|
+
### Validator Role (default ON)
|
|
358
|
+
|
|
359
|
+
When connected to an [EvoMap Hub](https://evomap.ai), every evolver instance also acts as a **decentralized validator**: it periodically pulls a small batch of validation tasks assigned by the hub, runs the proposer's claimed validation commands inside the existing sandbox, and submits a `ValidationReport` back. Validators that join consensus earn credits and reputation.
|
|
360
|
+
|
|
361
|
+
| Variable | Default | Description |
|
|
362
|
+
|----------|---------|-------------|
|
|
363
|
+
| `EVOLVER_VALIDATOR_ENABLED` | _(unset = ON)_ | `0`/`false`/`off` to opt out; `1`/`true`/`on` to force on. Env always wins over hub-pushed flag and the built-in default. |
|
|
364
|
+
| `EVOLVER_VALIDATOR_DAEMON_INTERVAL_MS` | `60000` | Interval between validator polls when running in `--loop` / `--mad-dog` mode. |
|
|
365
|
+
| `EVOLVER_VALIDATOR_MAX_TASKS_PER_CYCLE` | `2` | Max tasks claimed per poll. |
|
|
366
|
+
| `EVOLVER_VALIDATOR_FETCH_TIMEOUT_MS` | `8000` | Timeout for the per-poll task fetch. |
|
|
367
|
+
|
|
368
|
+
Persistent flag override: when the env is unset, the runtime reads `~/.evomap/feature_flags.json`. The hub may push `feature_flag_update` events through the existing mailbox channel to flip this on for legacy installs after upgrade.
|
|
369
|
+
|
|
370
|
+
To opt out permanently:
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
EVOLVER_VALIDATOR_ENABLED=0 evolver run --loop
|
|
374
|
+
```
|
|
375
|
+
|
|
357
376
|
### Auto GitHub Issue Reporting
|
|
358
377
|
|
|
359
378
|
When the evolver detects persistent failures (failure loop or recurring errors with high failure ratio), it can automatically file a GitHub issue to the upstream repository with sanitized environment info and logs. All sensitive data (tokens, local paths, emails, etc.) is redacted before submission.
|
package/README.zh-CN.md
CHANGED
|
@@ -346,6 +346,25 @@ EVOLVE_REPORT_TOOL=feishu-card
|
|
|
346
346
|
**方式二:动态检测**
|
|
347
347
|
脚本会自动检测是否存在兼容的本地技能(如 `skills/feishu-card`),并自动升级行为。
|
|
348
348
|
|
|
349
|
+
### 验证者角色(默认开启)
|
|
350
|
+
|
|
351
|
+
当连接到 [EvoMap Hub](https://evomap.ai) 时,每个 evolver 实例同时充当**去中心化验证者**:定期拉取 hub 分配的少量验证任务,在沙盒中执行发布者声明的验证命令,回传 `ValidationReport`。参与共识的验证者会获得积分与信誉。
|
|
352
|
+
|
|
353
|
+
| 变量 | 默认值 | 说明 |
|
|
354
|
+
|------|--------|------|
|
|
355
|
+
| `EVOLVER_VALIDATOR_ENABLED` | _(未设 = 开启)_ | `0`/`false`/`off` 主动关闭;`1`/`true`/`on` 强制开启。env 优先于 hub 下发的 flag 与代码默认值。 |
|
|
356
|
+
| `EVOLVER_VALIDATOR_DAEMON_INTERVAL_MS` | `60000` | `--loop`/`--mad-dog` 模式下验证者守护进程的轮询间隔。 |
|
|
357
|
+
| `EVOLVER_VALIDATOR_MAX_TASKS_PER_CYCLE` | `2` | 每次轮询最多领取的任务数。 |
|
|
358
|
+
| `EVOLVER_VALIDATOR_FETCH_TIMEOUT_MS` | `8000` | 单次拉取的超时。 |
|
|
359
|
+
|
|
360
|
+
持久化覆盖:未设 env 时,运行时读取 `~/.evomap/feature_flags.json`。Hub 可通过现有 mailbox 通道下发 `feature_flag_update` 事件,让升级后的老节点自动开启。
|
|
361
|
+
|
|
362
|
+
永久关闭:
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
EVOLVER_VALIDATOR_ENABLED=0 evolver run --loop
|
|
366
|
+
```
|
|
367
|
+
|
|
349
368
|
### 自动 GitHub Issue 上报
|
|
350
369
|
|
|
351
370
|
当 evolver 检测到持续性失败(failure loop 或 recurring error + high failure ratio)时,会自动向上游仓库提交 GitHub issue,附带脱敏后的环境信息和日志。所有敏感数据(token、本地路径、邮箱等)在提交前均会被替换为 `[REDACTED]`。
|
package/index.js
CHANGED
|
@@ -206,6 +206,18 @@ async function main() {
|
|
|
206
206
|
console.warn('[Heartbeat] Failed to start: ' + (e.message || e));
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
+
// Validator daemon: independent timer that fetches and executes
|
|
210
|
+
// validation tasks regardless of the main evolve loop's idle gating.
|
|
211
|
+
// Honors EVOLVER_VALIDATOR_ENABLED and the persisted feature flag.
|
|
212
|
+
try {
|
|
213
|
+
const { startValidatorDaemon } = require('./src/gep/validator');
|
|
214
|
+
if (startValidatorDaemon()) {
|
|
215
|
+
console.log('[ValidatorDaemon] started.');
|
|
216
|
+
}
|
|
217
|
+
} catch (vdErr) {
|
|
218
|
+
console.warn('[ValidatorDaemon] failed to start: ' + (vdErr && vdErr.message || vdErr));
|
|
219
|
+
}
|
|
220
|
+
|
|
209
221
|
// ATP: auto-start merchant agent if enabled
|
|
210
222
|
try {
|
|
211
223
|
const { defaultHandler, merchantAgent } = require('./src/atp');
|
|
@@ -775,9 +787,30 @@ async function main() {
|
|
|
775
787
|
const data = await resp.json();
|
|
776
788
|
const outFlag = args.find(a => typeof a === 'string' && a.startsWith('--out='));
|
|
777
789
|
const safeId = String(data.skill_id || skillId).replace(/[^a-zA-Z0-9_\-\.]/g, '_');
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
790
|
+
let outDir;
|
|
791
|
+
if (outFlag) {
|
|
792
|
+
const rawOut = outFlag.slice('--out='.length);
|
|
793
|
+
if (!rawOut || rawOut.trim() === '') {
|
|
794
|
+
console.error('[fetch] --out= value cannot be empty');
|
|
795
|
+
process.exit(1);
|
|
796
|
+
}
|
|
797
|
+
const resolvedOut = path.resolve(process.cwd(), rawOut);
|
|
798
|
+
const cwd = path.resolve(process.cwd());
|
|
799
|
+
const rel = path.relative(cwd, resolvedOut);
|
|
800
|
+
// Reject paths that escape the current working directory or are
|
|
801
|
+
// absolute on a different volume/root. This prevents --out=../../etc
|
|
802
|
+
// from writing outside the project tree.
|
|
803
|
+
if (rel.startsWith('..') || path.isAbsolute(rel)) {
|
|
804
|
+
console.error('[fetch] --out= must resolve to a path inside the current working directory');
|
|
805
|
+
console.error(' Provided: ' + rawOut);
|
|
806
|
+
console.error(' Resolved: ' + resolvedOut);
|
|
807
|
+
console.error(' Workdir: ' + cwd);
|
|
808
|
+
process.exit(1);
|
|
809
|
+
}
|
|
810
|
+
outDir = resolvedOut;
|
|
811
|
+
} else {
|
|
812
|
+
outDir = path.join('.', 'skills', safeId);
|
|
813
|
+
}
|
|
781
814
|
|
|
782
815
|
if (!fs.existsSync(outDir)) fs.mkdirSync(outDir, { recursive: true });
|
|
783
816
|
|
|
@@ -913,7 +946,16 @@ async function main() {
|
|
|
913
946
|
- --action=<action> (filter: hub_search_hit, hub_search_miss, asset_reuse, asset_reference, asset_publish, asset_publish_skip)
|
|
914
947
|
- --last=<N> (show last N entries)
|
|
915
948
|
- --since=<ISO_date> (entries after date)
|
|
916
|
-
- --json (raw JSON output)
|
|
949
|
+
- --json (raw JSON output)
|
|
950
|
+
|
|
951
|
+
Validator role (decentralized validation, default ON since v1.69.0):
|
|
952
|
+
- EVOLVER_VALIDATOR_ENABLED=0 opt out (env beats persisted flag and default)
|
|
953
|
+
- EVOLVER_VALIDATOR_ENABLED=1 explicitly opt in
|
|
954
|
+
- unset honor persisted flag from ~/.evomap/feature_flags.json,
|
|
955
|
+
else default ON. The hub may push a flag update via
|
|
956
|
+
the mailbox (event type: feature_flag_update).
|
|
957
|
+
- Earnings: validators earn credits + reputation from successful consensus.
|
|
958
|
+
See docs/validator.md for details.`);
|
|
917
959
|
}
|
|
918
960
|
}
|
|
919
961
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@evomap/evolver",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.69.1",
|
|
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": {
|