helixevo 0.2.4 → 0.2.6

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 CHANGED
@@ -1,10 +1,10 @@
1
- # Helix
1
+ # HelixEvo
2
2
 
3
3
  Self-evolving skill ecosystem for AI agents. Captures failures, evolves skills through multi-judge evaluation, and maintains a Pareto frontier of optimal skill configurations.
4
4
 
5
5
  ## How it works
6
6
 
7
- Helix builds on ideas from [EvoSkill](https://arxiv.org/abs/2603.02766) and [AutoResearch](https://github.com/karpathy/autoResearch) to create a three-directional evolution system:
7
+ HelixEvo builds on ideas from [EvoSkill](https://arxiv.org/abs/2603.02766) and [AutoResearch](https://github.com/karpathy/autoResearch) to create a three-directional evolution system:
8
8
 
9
9
  - **Generalize ↑** — Detect cross-project patterns and promote them to abstract skills
10
10
  - **Specialize ↓** — Create project-specific skills from domain skills + project failures
@@ -21,7 +21,7 @@ Every proposed change goes through:
21
21
  - **[Bun](https://bun.sh)** — used for building (`curl -fsSL https://bun.sh/install | bash`)
22
22
  - **[Claude CLI](https://docs.anthropic.com/en/docs/claude-code)** — installed and authenticated
23
23
  - Requires a **Claude Max plan** subscription
24
- - Helix uses `claude --print` for all LLM operations (no API key needed)
24
+ - HelixEvo uses `claude --print` for all LLM operations (no API key needed)
25
25
 
26
26
  Verify prerequisites:
27
27
  ```bash
@@ -160,7 +160,7 @@ cd dashboard && npm install
160
160
 
161
161
  ## Craft Agent Integration
162
162
 
163
- Helix includes a Craft Agent skill at `integrations/craft-agent/`:
163
+ HelixEvo includes a Craft Agent skill at `integrations/craft-agent/`:
164
164
 
165
165
  ```bash
166
166
  # Copy to your skills directory
@@ -222,7 +222,7 @@ export default function GuidePage() {
222
222
  {/* Hero */}
223
223
  <div className="guide-hero">
224
224
  <div className="guide-hero-badge">Documentation</div>
225
- <h1 className="guide-hero-title">Helix Guide</h1>
225
+ <h1 className="guide-hero-title">HelixEvoEvo Guide</h1>
226
226
  <p className="guide-hero-desc">
227
227
  A comprehensive guide to the self-evolving skill ecosystem for AI agents.
228
228
  Capture failures, evolve skills through multi-judge evaluation, and maintain
@@ -237,15 +237,15 @@ export default function GuidePage() {
237
237
  </div>
238
238
 
239
239
  {/* ─── Overview ─── */}
240
- <Section id="overview" title="Overview" subtitle="What Helix does and why it exists.">
240
+ <Section id="overview" title="Overview" subtitle="What HelixEvo does and why it exists.">
241
241
  <p className="guide-text">
242
- Helix is a self-improving system that manages SKILL.md files for AI agents. When an agent makes a mistake
243
- and gets corrected, Helix captures that failure, clusters similar failures together, and proposes skill
242
+ HelixEvo is a self-improving system that manages SKILL.md files for AI agents. When an agent makes a mistake
243
+ and gets corrected, HelixEvo captures that failure, clusters similar failures together, and proposes skill
244
244
  improvements. Every proposed change goes through rigorous multi-judge evaluation and regression testing before
245
245
  being deployed with a 3-day canary period.
246
246
  </p>
247
247
  <p className="guide-text">
248
- Built on ideas from <strong>EvoSkill</strong> and <strong>AutoResearch</strong>, Helix implements a
248
+ Built on ideas from <strong>EvoSkill</strong> and <strong>AutoResearch</strong>, HelixEvo implements a
249
249
  three-directional evolution model:
250
250
  </p>
251
251
  <div className="guide-directions">
@@ -280,9 +280,9 @@ export default function GuidePage() {
280
280
  and <a href="https://docs.anthropic.com/en/docs/claude-code">Claude CLI</a> with a Claude Max plan.
281
281
  </Callout>
282
282
 
283
- <Step n={1} title="Install Helix">
283
+ <Step n={1} title="Install HelixEvo">
284
284
  <Code title="Terminal">{`# From npm (recommended)
285
- npm install -g helix
285
+ npm install -g helixevo
286
286
 
287
287
  # Or from source
288
288
  git clone https://github.com/danielchen26/helixevo.git
@@ -292,7 +292,7 @@ cd helixevo && npm install && npm run build && npm link`}</Code>
292
292
  <Step n={2} title="Initialize your skill ecosystem">
293
293
  <Code title="Terminal">{`helixevo init`}</Code>
294
294
  <p className="guide-text-sm">
295
- This scans your existing SKILL.md files (from <code>~/.agents/skills/</code>), imports them into Helix,
295
+ This scans your existing SKILL.md files (from <code>~/.agents/skills/</code>), imports them into HelixEvo,
296
296
  and generates golden test cases for each skill. It also creates the data directory at <code>~/.helix/</code>.
297
297
  </p>
298
298
  </Step>
@@ -326,7 +326,7 @@ helixevo status`}</Code>
326
326
  </Section>
327
327
 
328
328
  {/* ─── Commands ─── */}
329
- <Section id="commands" title="Commands" subtitle="Complete CLI reference for every Helix command.">
329
+ <Section id="commands" title="Commands" subtitle="Complete CLI reference for every HelixEvo command.">
330
330
  <div className="guide-command-grid">
331
331
  {[
332
332
  {
@@ -336,7 +336,7 @@ helixevo status`}</Code>
336
336
  },
337
337
  {
338
338
  cmd: 'helixevo metrics',
339
- desc: 'Show correction rates per skill, trends over time, and whether each evolution actually reduced corrections. The proof that Helix works.',
339
+ desc: 'Show correction rates per skill, trends over time, and whether each evolution actually reduced corrections. The proof that HelixEvo works.',
340
340
  flags: ['--verbose'],
341
341
  },
342
342
  {
@@ -346,7 +346,7 @@ helixevo status`}</Code>
346
346
  },
347
347
  {
348
348
  cmd: 'helixevo init',
349
- desc: 'Import existing skills and generate golden test cases. Scans ~/.agents/skills/ and creates the Helix data directory.',
349
+ desc: 'Import existing skills and generate golden test cases. Scans ~/.agents/skills/ and creates the HelixEvo data directory.',
350
350
  flags: ['--verbose'],
351
351
  },
352
352
  {
@@ -431,7 +431,7 @@ helixevo status`}</Code>
431
431
  </Section>
432
432
 
433
433
  {/* ─── Always-On Learning ─── */}
434
- <Section id="watch" title="Always-On Learning" subtitle="Helix watches your work, captures corrections automatically, and evolves without manual intervention.">
434
+ <Section id="watch" title="Always-On Learning" subtitle="HelixEvo watches your work, captures corrections automatically, and evolves without manual intervention.">
435
435
  <p className="guide-text">
436
436
  Instead of manually running <code>helixevo capture</code> after each session, <code>helixevo watch</code> runs
437
437
  continuously in the background. It monitors your conversation events in real-time, detects when you
@@ -477,7 +477,7 @@ helixevo watch --events path/to/events.jsonl --verbose`}</Code>
477
477
  {/* ─── Network Health ─── */}
478
478
  <Section id="networkhealth" title="Network Health" subtitle="The skill network is a co-evolving organism — its health determines project success.">
479
479
  <p className="guide-text">
480
- Individual skill evolution is only part of the picture. Helix now treats the <strong>entire skill network</strong> as
480
+ Individual skill evolution is only part of the picture. HelixEvo now treats the <strong>entire skill network</strong> as
481
481
  a first-class entity that co-evolves with your projects. Network health is assessed across 4 dimensions after
482
482
  every evolution cycle.
483
483
  </p>
@@ -509,9 +509,9 @@ helixevo watch --events path/to/events.jsonl --verbose`}</Code>
509
509
  </Section>
510
510
 
511
511
  {/* ─── Auto-Generalization ─── */}
512
- <Section id="autogen" title="Auto-Generalization" subtitle="When patterns recur across projects, Helix automatically creates abstract domain-level skills.">
512
+ <Section id="autogen" title="Auto-Generalization" subtitle="When patterns recur across projects, HelixEvo automatically creates abstract domain-level skills.">
513
513
  <p className="guide-text">
514
- Instead of waiting for you to run <code>helixevo generalize</code>, Helix now detects cross-project patterns
514
+ Instead of waiting for you to run <code>helixevo generalize</code>, HelixEvo now detects cross-project patterns
515
515
  automatically during every evolution cycle. When the same type of correction appears in 2+ projects, it
516
516
  creates an abstract domain-level skill and sets up parent/child inheritance.
517
517
  </p>
@@ -530,9 +530,9 @@ Project B: "Use FlashList not FlatList" (React Native perf)
530
530
  </Section>
531
531
 
532
532
  {/* ─── Closed-Loop Metrics ─── */}
533
- <Section id="metrics" title="Closed-Loop Metrics" subtitle="Proving that Helix actually makes the agent better — with data, not just LLM scores.">
533
+ <Section id="metrics" title="Closed-Loop Metrics" subtitle="Proving that HelixEvo actually makes the agent better — with data, not just LLM scores.">
534
534
  <p className="guide-text">
535
- The <code>helixevo metrics</code> command answers the most important question: <strong>&ldquo;Is Helix actually
535
+ The <code>helixevo metrics</code> command answers the most important question: <strong>&ldquo;Is HelixEvo actually
536
536
  reducing corrections?&rdquo;</strong> It tracks correction rates per skill over time and measures the real
537
537
  impact of each evolution.
538
538
  </p>
@@ -685,7 +685,7 @@ Project B: "Use FlashList not FlatList" (React Native perf)
685
685
 
686
686
  <h3 className="guide-h3">Cross-Skill Regression</h3>
687
687
  <p className="guide-text">
688
- When skill A is modified, Helix also tests golden cases from co-evolved, dependent, and enhancing
688
+ When skill A is modified, HelixEvo also tests golden cases from co-evolved, dependent, and enhancing
689
689
  partner skills. This catches silent incompatibilities where changing one skill breaks a related skill&apos;s behavior.
690
690
  </p>
691
691
  <Code title="How it works">{`Skill A evolves
@@ -888,9 +888,9 @@ generation: 3
888
888
  </Section>
889
889
 
890
890
  {/* ─── Craft Agent Integration ─── */}
891
- <Section id="craft" title="Craft Agent Integration" subtitle="Use Helix from within Craft Agent.">
891
+ <Section id="craft" title="Craft Agent Integration" subtitle="Use HelixEvo from within Craft Agent.">
892
892
  <p className="guide-text">
893
- Helix ships with a Craft Agent skill at <code>integrations/craft-agent/</code>.
893
+ HelixEvo ships with a Craft Agent skill at <code>integrations/craft-agent/</code>.
894
894
  Install it to trigger evolution directly from your Craft Agent sessions.
895
895
  </p>
896
896
  <Step n={1} title="Copy the skill">
@@ -911,26 +911,26 @@ generation: 3
911
911
  By default, 5 unresolved failures are required (<code>minFailuresForEvolution</code>).
912
912
  This ensures enough signal for meaningful pattern detection.
913
913
  </FAQItem>
914
- <FAQItem q="What LLM model does Helix use?">
915
- Helix uses <code>claude --print</code> with configurable models (default: <code>sonnet</code>).
914
+ <FAQItem q="What LLM model does HelixEvo use?">
915
+ HelixEvo uses <code>claude --print</code> with configurable models (default: <code>sonnet</code>).
916
916
  No API key is needed — it requires a Claude Max plan subscription. Judges and proposals can use different models.
917
917
  </FAQItem>
918
- <FAQItem q="Can I use Helix with other AI agents?">
919
- Yes. Helix manages standard SKILL.md files with YAML frontmatter. Any agent that reads SKILL.md
920
- files can benefit from Helix&apos;s evolution pipeline.
918
+ <FAQItem q="Can I use HelixEvo with other AI agents?">
919
+ Yes. HelixEvo manages standard SKILL.md files with YAML frontmatter. Any agent that reads SKILL.md
920
+ files can benefit from HelixEvo&apos;s evolution pipeline.
921
921
  </FAQItem>
922
922
  <FAQItem q="What happens during canary rollback?">
923
923
  If the failure rate for a canary skill exceeds <code>autoRollbackThreshold</code> (default: 1.5x),
924
924
  the skill is automatically reverted from the backup. The failed evolution is recorded in history.
925
925
  </FAQItem>
926
926
  <FAQItem q="How does cross-skill regression work?">
927
- When Skill A evolves, Helix checks the skill graph for co-evolved, dependent, and enhancing
927
+ When Skill A evolves, HelixEvo checks the skill graph for co-evolved, dependent, and enhancing
928
928
  partners. It tests their golden cases against Skill A&apos;s changes. If partner pass rate drops below 95%,
929
929
  the proposal is rejected.
930
930
  </FAQItem>
931
931
  <FAQItem q="How does the knowledge buffer work?">
932
932
  All research discoveries are saved, even if the resulting hypothesis fails. Failed experiments above
933
- a minimum score are saved as drafts. When the same hypothesis appears again, Helix iterates on
933
+ a minimum score are saved as drafts. When the same hypothesis appears again, HelixEvo iterates on
934
934
  the draft rather than starting from scratch.
935
935
  </FAQItem>
936
936
  <FAQItem q="How does helixevo watch detect corrections?">
@@ -938,7 +938,7 @@ generation: 3
938
938
  (e.g., &quot;wrong&quot;, &quot;not like that&quot;, &quot;不对&quot;, &quot;改成&quot;). (2) If a signal is detected, an LLM analyzes
939
939
  the recent conversation window to extract structured failure records with confidence scores (&gt;0.7 required).
940
940
  </FAQItem>
941
- <FAQItem q="How do I prove Helix is working?">
941
+ <FAQItem q="How do I prove HelixEvo is working?">
942
942
  Run <code>helixevo metrics</code>. It tracks correction rates per skill over 7-day rolling windows
943
943
  and compares before/after rates for each evolution. The verdict shows how many evolutions actually
944
944
  reduced corrections. This is closed-loop measurement — not LLM scores judging LLM output.
@@ -958,7 +958,7 @@ generation: 3
958
958
  {/* Footer */}
959
959
  <div className="guide-footer">
960
960
  <div className="guide-footer-content">
961
- <div style={{ fontSize: 13, fontWeight: 600 }}>Helix v0.2.0</div>
961
+ <div style={{ fontSize: 13, fontWeight: 600 }}>HelixEvo v0.2.0</div>
962
962
  <div style={{ fontSize: 12, color: 'var(--text-dim)', marginTop: 4 }}>
963
963
  Self-evolving skill ecosystem for AI agents · MIT License
964
964
  </div>
@@ -3,8 +3,8 @@ import type { Metadata } from 'next'
3
3
  import Link from 'next/link'
4
4
 
5
5
  export const metadata: Metadata = {
6
- title: 'Helix',
7
- description: 'Self-evolving skill ecosystem for AI agents',
6
+ title: 'HelixEvo',
7
+ description: 'HelixEvo — Self-evolving skill ecosystem for AI agents',
8
8
  }
9
9
 
10
10
  const NAV = [
@@ -40,7 +40,7 @@ export default function RootLayout({ children }: { children: React.ReactNode })
40
40
  </svg>
41
41
  </div>
42
42
  <div>
43
- <div style={{ fontSize: 14, fontWeight: 700, color: 'var(--text)', letterSpacing: -0.3 }}>Helix</div>
43
+ <div style={{ fontSize: 14, fontWeight: 700, color: 'var(--text)', letterSpacing: -0.3 }}>HelixEvo</div>
44
44
  <div style={{ fontSize: 10, color: 'var(--text-muted)', letterSpacing: 0.2 }}>Co-evolving AI Skills</div>
45
45
  </div>
46
46
  </div>
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "helix-dashboard",
2
+ "name": "helixevo-dashboard",
3
3
  "version": "0.1.0",
4
4
  "private": true,
5
5
  "scripts": {
package/dist/cli.js CHANGED
@@ -9604,7 +9604,7 @@ Return JSON:
9604
9604
 
9605
9605
  // src/commands/init.ts
9606
9606
  async function initCommand(options) {
9607
- console.log(`\uD83E\uDDEC Initializing Helix...
9607
+ console.log(`\uD83E\uDDEC Initializing HelixEvo...
9608
9608
  `);
9609
9609
  const sgDir = getHelixDir();
9610
9610
  const generalDir = getGeneralSkillsPath();
@@ -9680,7 +9680,7 @@ async function initCommand(options) {
9680
9680
  }
9681
9681
  }
9682
9682
  console.log(`
9683
- Helix initialized!`);
9683
+ HelixEvo initialized!`);
9684
9684
  console.log(` Data: ${sgDir}`);
9685
9685
  console.log(` Skills: ${generalDir}`);
9686
9686
  console.log(`
@@ -10350,7 +10350,7 @@ async function evolveCommand(options) {
10350
10350
  const dryRun = options.dryRun ?? false;
10351
10351
  const verbose = options.verbose ?? false;
10352
10352
  const maxProposals = parseInt(options.maxProposals ?? String(config.evolution.maxProposalsPerRun));
10353
- console.log(`\uD83E\uDDEC Helix Evolution Cycle
10353
+ console.log(`\uD83E\uDDEC HelixEvo Evolution Cycle
10354
10354
  `);
10355
10355
  const allFailures = loadFailures();
10356
10356
  const failures = allFailures.filter((f) => !f.resolved);
@@ -10706,7 +10706,7 @@ async function statusCommand() {
10706
10706
  const goldenCases = loadGoldenCases();
10707
10707
  const stagnation = getStagnationCount();
10708
10708
  const recentIter = getRecentIterations(7);
10709
- console.log(`\uD83E\uDDEC Helix Status
10709
+ console.log(`\uD83E\uDDEC HelixEvo Status
10710
10710
  `);
10711
10711
  console.log(` Skills: ${skills.length}`);
10712
10712
  for (const s of skills) {
@@ -10767,7 +10767,7 @@ async function reportCommand(options) {
10767
10767
  const accepted = allProposals.filter((p) => p.outcome === "accepted");
10768
10768
  const rejected = allProposals.filter((p) => p.outcome === "rejected");
10769
10769
  const date = new Date().toISOString().slice(0, 10);
10770
- let report = `# Helix Report — ${date}
10770
+ let report = `# HelixEvo Report — ${date}
10771
10771
 
10772
10772
  `;
10773
10773
  report += `## Overview
@@ -10851,7 +10851,7 @@ async function generalizeCommand(options) {
10851
10851
  const verbose = options.verbose ?? false;
10852
10852
  const dryRun = options.dryRun ?? false;
10853
10853
  const skills = loadAllGeneralSkills();
10854
- console.log(`\uD83D\uDD2C Helix Generalization Analysis
10854
+ console.log(`\uD83D\uDD2C HelixEvo Generalization Analysis
10855
10855
  `);
10856
10856
  if (skills.length < 2) {
10857
10857
  console.log(" Need at least 2 skills to detect generalization candidates.");
@@ -11026,7 +11026,7 @@ async function specializeCommand(options) {
11026
11026
  console.error(" Error: --project <name> is required");
11027
11027
  process.exit(1);
11028
11028
  }
11029
- console.log(`\uD83C\uDFAF Helix Specialization for project "${projectName}"
11029
+ console.log(`\uD83C\uDFAF HelixEvo Specialization for project "${projectName}"
11030
11030
  `);
11031
11031
  const failures = loadFailures().filter((f) => f.project === projectName && !f.resolved);
11032
11032
  const skills = loadAllGeneralSkills();
@@ -11556,7 +11556,7 @@ function syncToObsidian(vaultPath, verbose = false) {
11556
11556
  console.log(` ✓ ${node.id}.md`);
11557
11557
  }
11558
11558
  const indexNote = generateIndexNote(graph);
11559
- writeFileSync7(join11(vaultPath, "Helix Index.md"), indexNote);
11559
+ writeFileSync7(join11(vaultPath, "HelixEvo Index.md"), indexNote);
11560
11560
  const recent = getRecentIterations(7);
11561
11561
  if (recent.length > 0) {
11562
11562
  const report = generateEvolutionReport(recent);
@@ -11633,7 +11633,7 @@ ${skill.content.slice(0, 3000)}
11633
11633
  return note;
11634
11634
  }
11635
11635
  function generateIndexNote(graph) {
11636
- let note = `# Helix Index
11636
+ let note = `# HelixEvo Index
11637
11637
 
11638
11638
  `;
11639
11639
  note += `*Updated: ${graph.updated}*
@@ -11744,7 +11744,7 @@ function openMermaidInBrowser(graph) {
11744
11744
  const html = `<!DOCTYPE html>
11745
11745
  <html><head>
11746
11746
  <meta charset="utf-8">
11747
- <title>Helix Network</title>
11747
+ <title>HelixEvo Network</title>
11748
11748
  <style>
11749
11749
  * { box-sizing: border-box; margin: 0; padding: 0; }
11750
11750
  body {
@@ -11850,7 +11850,7 @@ function openMermaidInBrowser(graph) {
11850
11850
  </head><body>
11851
11851
 
11852
11852
  <div class="header">
11853
- <h1>Helix Network</h1>
11853
+ <h1>HelixEvo Network</h1>
11854
11854
  <div class="stats">${graph.nodes.length} skills &middot; ${graph.edges.length} relationships &middot; ${graph.clusters.length} clusters</div>
11855
11855
  </div>
11856
11856
 
@@ -11928,7 +11928,7 @@ ${mermaidCode}
11928
11928
  function renderTerminalGraph(graph) {
11929
11929
  const w = Math.min(process.stdout.columns || 80, 100);
11930
11930
  console.log();
11931
- console.log(`${C.bold} \uD83D\uDD78️ Helix Network${C.reset}`);
11931
+ console.log(`${C.bold} \uD83D\uDD78️ HelixEvo Network${C.reset}`);
11932
11932
  console.log(` ${C.dim}${graph.nodes.length} skills · ${graph.edges.length} relationships · ${graph.clusters.length} clusters${C.reset}`);
11933
11933
  console.log();
11934
11934
  const layers = [
@@ -11991,7 +11991,7 @@ async function researchCommand(options) {
11991
11991
  const verbose = options.verbose ?? false;
11992
11992
  const dryRun = options.dryRun ?? false;
11993
11993
  const maxHypotheses = parseInt(options.maxHypotheses ?? "3");
11994
- console.log(`\uD83D\uDD2C Helix Proactive Research
11994
+ console.log(`\uD83D\uDD2C HelixEvo Proactive Research
11995
11995
  `);
11996
11996
  const skills = loadAllGeneralSkills();
11997
11997
  console.log(" Step 1: Understanding project goals...");
@@ -12338,7 +12338,7 @@ async function dashboardCommand() {
12338
12338
  process.exit(1);
12339
12339
  }
12340
12340
  }
12341
- console.log(` \uD83C\uDF10 Starting Helix Dashboard at http://localhost:3847
12341
+ console.log(` \uD83C\uDF10 Starting HelixEvo Dashboard at http://localhost:3847
12342
12342
  `);
12343
12343
  const child = spawn2("npx", ["next", "dev", "--port", "3847"], {
12344
12344
  cwd: dir,
@@ -12416,16 +12416,18 @@ function copyToHelix(sourceDir) {
12416
12416
  mkdirSync4(HELIX_DASHBOARD_DIR, { recursive: true });
12417
12417
  const items = readdirSync2(sourceDir, { withFileTypes: true });
12418
12418
  for (const item of items) {
12419
- if (item.name === "node_modules" || item.name === ".next")
12419
+ if (item.name === "node_modules" || item.name === ".next" || item.name === "package-lock.json")
12420
12420
  continue;
12421
12421
  const src = join14(sourceDir, item.name);
12422
12422
  const dest = join14(HELIX_DASHBOARD_DIR, item.name);
12423
12423
  cpSync3(src, dest, { recursive: true });
12424
12424
  }
12425
12425
  const oldModules = join14(HELIX_DASHBOARD_DIR, "node_modules");
12426
- if (existsSync10(oldModules)) {
12426
+ if (existsSync10(oldModules))
12427
12427
  rmSync2(oldModules, { recursive: true });
12428
- }
12428
+ const oldLock = join14(HELIX_DASHBOARD_DIR, "package-lock.json");
12429
+ if (existsSync10(oldLock))
12430
+ rmSync2(oldLock);
12429
12431
  return HELIX_DASHBOARD_DIR;
12430
12432
  }
12431
12433
 
@@ -12767,7 +12769,7 @@ async function watchCommand(options) {
12767
12769
  const autoEvolve = options.evolve !== false;
12768
12770
  const project = options.project ?? null;
12769
12771
  const eventsPath = options.events ?? join16(process.cwd(), "events.jsonl");
12770
- console.log(`\uD83E\uDDEC Helix Watch Mode — Always-On Learning
12772
+ console.log(`\uD83E\uDDEC HelixEvo Watch Mode — Always-On Learning
12771
12773
  `);
12772
12774
  console.log(` Events: ${eventsPath}`);
12773
12775
  console.log(` Project: ${project ?? "(auto-detect)"}`);
@@ -12868,7 +12870,7 @@ async function watchCommand(options) {
12868
12870
  async function metricsCommand(options) {
12869
12871
  const verbose = options.verbose ?? false;
12870
12872
  const summary = getMetricsSummary();
12871
- console.log(`\uD83D\uDCCA Helix Metrics
12873
+ console.log(`\uD83D\uDCCA HelixEvo Metrics
12872
12874
  `);
12873
12875
  console.log(" ── Correction Rate ──");
12874
12876
  console.log(` Total failures: ${summary.totalFailures}`);
@@ -12912,7 +12914,7 @@ async function metricsCommand(options) {
12912
12914
  console.log(` ${effective}/${total} evolutions reduced corrections`);
12913
12915
  console.log(` ${regressed}/${total} evolutions increased corrections`);
12914
12916
  if (effective > regressed) {
12915
- console.log(" ✓ Helix is making the agent better");
12917
+ console.log(" ✓ HelixEvo is making the agent better");
12916
12918
  } else if (effective === 0 && total > 0) {
12917
12919
  console.log(" ⚠ Not enough data yet — keep working");
12918
12920
  }
@@ -12922,7 +12924,7 @@ async function metricsCommand(options) {
12922
12924
 
12923
12925
  // src/cli.ts
12924
12926
  var program2 = new Command;
12925
- program2.name("helixevo").description("Self-evolving skill ecosystem for AI agents").version("0.2.2").addHelpText("after", `
12927
+ program2.name("helixevo").description("Self-evolving skill ecosystem for AI agents").version("0.2.6").addHelpText("after", `
12926
12928
  Examples:
12927
12929
  $ helixevo watch Always-on learning (auto-capture + auto-evolve)
12928
12930
  $ helixevo watch --project myapp Watch with project context
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "helixevo",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "Self-evolving skill ecosystem for AI agents. Skills and projects co-evolve through multi-judge evaluation and a Pareto frontier.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -12,7 +12,6 @@
12
12
  "dashboard/components/",
13
13
  "dashboard/lib/",
14
14
  "dashboard/package.json",
15
- "dashboard/package-lock.json",
16
15
  "dashboard/tsconfig.json",
17
16
  "dashboard/next-env.d.ts",
18
17
  "README.md",
@@ -41,7 +40,7 @@
41
40
  "claude",
42
41
  "claude-code",
43
42
  "helixevo",
44
- "helix",
43
+ "helixevo",
45
44
  "co-evolution",
46
45
  "pareto-frontier",
47
46
  "llm"