@evomap/evolver 1.89.19 → 1.89.20

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.
Files changed (57) hide show
  1. package/package.json +1 -1
  2. package/scripts/skill2recipes.js +118 -0
  3. package/src/evolve/guards.js +1 -1
  4. package/src/evolve/pipeline/collect.js +1 -1
  5. package/src/evolve/pipeline/dispatch.js +1 -1
  6. package/src/evolve/pipeline/enrich.js +1 -1
  7. package/src/evolve/pipeline/hub.js +1 -1
  8. package/src/evolve/pipeline/select.js +1 -1
  9. package/src/evolve/pipeline/signals.js +1 -1
  10. package/src/evolve/utils.js +1 -1
  11. package/src/evolve.js +1 -1
  12. package/src/gep/a2aProtocol.js +1 -1
  13. package/src/gep/antiAbuseTelemetry.js +1 -1
  14. package/src/gep/autoDistillConv.js +1 -1
  15. package/src/gep/autoDistillLlm.js +1 -1
  16. package/src/gep/candidateEval.js +1 -1
  17. package/src/gep/candidates.js +1 -1
  18. package/src/gep/contentHash.js +1 -1
  19. package/src/gep/conversationDistiller.js +1 -1
  20. package/src/gep/conversationSniffer.js +1 -1
  21. package/src/gep/crypto.js +1 -1
  22. package/src/gep/curriculum.js +1 -1
  23. package/src/gep/deviceId.js +1 -1
  24. package/src/gep/envFingerprint.js +1 -1
  25. package/src/gep/epigenetics.js +1 -1
  26. package/src/gep/execBridge.js +1 -1
  27. package/src/gep/explore.js +1 -1
  28. package/src/gep/hash.js +1 -1
  29. package/src/gep/hubFetch.js +1 -1
  30. package/src/gep/hubReview.js +1 -1
  31. package/src/gep/hubSearch.js +1 -1
  32. package/src/gep/hubVerify.js +1 -1
  33. package/src/gep/learningSignals.js +1 -1
  34. package/src/gep/memoryGraph.js +1 -1
  35. package/src/gep/memoryGraphAdapter.js +1 -1
  36. package/src/gep/mutation.js +1 -1
  37. package/src/gep/narrativeMemory.js +1 -1
  38. package/src/gep/openPRRegistry.js +1 -1
  39. package/src/gep/personality.js +1 -1
  40. package/src/gep/policyCheck.js +1 -1
  41. package/src/gep/prompt.js +1 -1
  42. package/src/gep/recallInject.js +1 -1
  43. package/src/gep/recallVerifier.js +1 -1
  44. package/src/gep/reflection.js +1 -1
  45. package/src/gep/savingsCore.js +1 -1
  46. package/src/gep/selector.js +1 -1
  47. package/src/gep/skill2recipes.js +511 -0
  48. package/src/gep/skillDistiller.js +1 -1
  49. package/src/gep/solidify.js +1 -1
  50. package/src/gep/strategy.js +1 -1
  51. package/src/gep/tokenSavings.js +1 -1
  52. package/src/gep/trajectoryExport.js +1 -1
  53. package/src/gep/workspaceKeychain.js +1 -1
  54. package/src/proxy/extensions/traceControl.js +1 -1
  55. package/src/proxy/inject.js +1 -1
  56. package/src/proxy/trace/extractor.js +1 -1
  57. package/src/proxy/trace/usage.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evomap/evolver",
3
- "version": "1.89.19",
3
+ "version": "1.89.20",
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": {
@@ -0,0 +1,118 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ // skill2recipes -- CLI: hydrolyze + verify a set of Skills into GEP assets,
5
+ // then compose and publish them as a Recipe to the EvoMap market
6
+ // (https://evomap.ai/market?tab=recipes).
7
+ //
8
+ // Usage:
9
+ // # From a manifest (recommended -- supports optional/condition per step):
10
+ // node scripts/skill2recipes.js --manifest ./examples/recipe.manifest.json
11
+ //
12
+ // # Inline, ordered by argument position:
13
+ // node scripts/skill2recipes.js --title "Bug Fix Pipeline" \
14
+ // ./skills/triage ./skills/patch ./skills/verify
15
+ //
16
+ // Options:
17
+ // --manifest <path> JSON manifest { title, description, steps:[...] }
18
+ // --title <str> Recipe title (>=3 chars; overrides manifest)
19
+ // --description <str> Recipe description
20
+ // --price <n> price_per_execution (Credits, min 1)
21
+ // --repo-root <path> Where validation commands run (default: cwd)
22
+ // --no-publish Hydrolyze + verify + build asset_ids locally, but do
23
+ // not POST anything to the Hub (dry run).
24
+ // --no-strict Allow steps whose validation falls back to node --version.
25
+ //
26
+ // Env:
27
+ // A2A_NODE_ID (required) registered EvoMap node id -> recipe owner
28
+ // A2A_HUB_URL (default https://evomap.ai)
29
+
30
+ const fs = require('fs');
31
+ const path = require('path');
32
+
33
+ process.env.A2A_TRANSPORT = 'http';
34
+ if (!process.env.A2A_HUB_URL) process.env.A2A_HUB_URL = 'https://evomap.ai';
35
+ // Keep stdout pure JSON: silence the "[evolver] Using host git repository"
36
+ // banner that paths.js prints on first require. Human-readable status lines go
37
+ // to stderr (console.error) so `... | jq` on stdout always works.
38
+ if (!process.env.EVOLVER_QUIET_PARENT_GIT) process.env.EVOLVER_QUIET_PARENT_GIT = '1';
39
+
40
+ const skill2recipes = require('../src/gep/skill2recipes');
41
+
42
+ function parseArgs(argv) {
43
+ const out = { _: [], publish: true, strict: true };
44
+ for (let i = 0; i < argv.length; i++) {
45
+ const a = argv[i];
46
+ if (a === '--manifest') out.manifest = argv[++i];
47
+ else if (a === '--title') out.title = argv[++i];
48
+ else if (a === '--description') out.description = argv[++i];
49
+ else if (a === '--price') out.pricePerExecution = Number(argv[++i]);
50
+ else if (a === '--repo-root') out.repoRoot = argv[++i];
51
+ else if (a === '--no-publish') out.publish = false;
52
+ else if (a === '--no-strict') out.strict = false;
53
+ else if (a === '-h' || a === '--help') out.help = true;
54
+ else if (a.startsWith('--')) { console.error('unknown flag: ' + a); process.exit(2); }
55
+ else out._.push(a);
56
+ }
57
+ return out;
58
+ }
59
+
60
+ function usage() {
61
+ console.log([
62
+ 'skill2recipes -- compose published Skills into a GEP Recipe',
63
+ '',
64
+ 'From a manifest:',
65
+ ' node scripts/skill2recipes.js --manifest ./examples/recipe.manifest.json',
66
+ '',
67
+ 'Inline (ordered by position):',
68
+ ' node scripts/skill2recipes.js --title "Bug Fix Pipeline" ./skills/a ./skills/b',
69
+ '',
70
+ 'Flags: --title --description --price --repo-root --no-publish --no-strict',
71
+ ].join('\n'));
72
+ }
73
+
74
+ async function main() {
75
+ const args = parseArgs(process.argv.slice(2));
76
+ if (args.help) { usage(); return; }
77
+
78
+ if (!process.env.A2A_NODE_ID && args.publish) {
79
+ console.error('WARN: A2A_NODE_ID not set -- recipe owner will be derived from a device fingerprint and the Hub may reject it. Register at https://evomap.ai and export A2A_NODE_ID.');
80
+ }
81
+
82
+ let manifest;
83
+ if (args.manifest) {
84
+ const p = path.resolve(args.manifest);
85
+ if (!fs.existsSync(p)) { console.error('manifest not found: ' + p); process.exit(1); }
86
+ try { manifest = JSON.parse(fs.readFileSync(p, 'utf8')); }
87
+ catch (e) { console.error('manifest is not valid JSON: ' + e.message); process.exit(1); }
88
+ } else if (args._.length) {
89
+ manifest = { steps: args._ };
90
+ } else {
91
+ usage();
92
+ console.error('\nERROR: provide --manifest <path> or one or more skill paths.');
93
+ process.exit(2);
94
+ }
95
+
96
+ const res = await skill2recipes.composeRecipeFromSkills(manifest, {
97
+ title: args.title,
98
+ description: args.description,
99
+ pricePerExecution: args.pricePerExecution,
100
+ repoRoot: args.repoRoot,
101
+ publish: args.publish,
102
+ strict: args.strict,
103
+ });
104
+
105
+ console.log(JSON.stringify(res, null, 2));
106
+
107
+ if (!res.ok) {
108
+ console.error('\nFAILED: ' + (res.reason || 'unknown') + (res.skill_path ? ' at ' + res.skill_path : ''));
109
+ process.exit(1);
110
+ }
111
+ if (res.recipe_id) {
112
+ console.error('\nOK recipe ' + res.recipe_id + (args.publish ? ' published -> ' + res.market_url : ' built (dry run, not published)'));
113
+ } else if (!args.publish) {
114
+ console.error('\nOK dry run complete (no network calls; ' + (res.steps ? res.steps.length : 0) + ' step(s) built, not published)');
115
+ }
116
+ }
117
+
118
+ main().catch((e) => { console.error('ERROR:', e && e.message ? e.message : e); console.error(e); process.exit(1); });