helixevo 0.2.5 → 0.2.7

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
@@ -1,6 +1,6 @@
1
1
  'use client'
2
2
 
3
- import { useState } from 'react'
3
+ import { useState, useEffect, useRef } from 'react'
4
4
 
5
5
  // ─── Table of Contents ──────────────────────────────────────────
6
6
  const TOC = [
@@ -195,6 +195,30 @@ function HierarchyDiagram() {
195
195
  // ─── Main Guide Page ────────────────────────────────────────────
196
196
  export default function GuidePage() {
197
197
  const [activeSection, setActiveSection] = useState('overview')
198
+ const contentRef = useRef<HTMLDivElement>(null)
199
+
200
+ useEffect(() => {
201
+ const sectionIds = TOC.map(t => t.id)
202
+ const observer = new IntersectionObserver(
203
+ (entries) => {
204
+ // Find the most visible section
205
+ const visible = entries
206
+ .filter(e => e.isIntersecting)
207
+ .sort((a, b) => b.intersectionRatio - a.intersectionRatio)
208
+ if (visible.length > 0) {
209
+ setActiveSection(visible[0].target.id)
210
+ }
211
+ },
212
+ { rootMargin: '-80px 0px -60% 0px', threshold: [0, 0.25, 0.5] }
213
+ )
214
+
215
+ for (const id of sectionIds) {
216
+ const el = document.getElementById(id)
217
+ if (el) observer.observe(el)
218
+ }
219
+
220
+ return () => observer.disconnect()
221
+ }, [])
198
222
 
199
223
  return (
200
224
  <div className="guide-layout">
@@ -202,7 +226,7 @@ export default function GuidePage() {
202
226
  <nav className="guide-toc">
203
227
  <div className="guide-toc-header">
204
228
  <div className="guide-toc-title">Documentation</div>
205
- <div className="guide-toc-version">v0.2.0</div>
229
+ <div className="guide-toc-version">v0.2.6</div>
206
230
  </div>
207
231
  {TOC.map(item => (
208
232
  <a
@@ -222,7 +246,7 @@ export default function GuidePage() {
222
246
  {/* Hero */}
223
247
  <div className="guide-hero">
224
248
  <div className="guide-hero-badge">Documentation</div>
225
- <h1 className="guide-hero-title">Helix Guide</h1>
249
+ <h1 className="guide-hero-title">HelixEvo Guide</h1>
226
250
  <p className="guide-hero-desc">
227
251
  A comprehensive guide to the self-evolving skill ecosystem for AI agents.
228
252
  Capture failures, evolve skills through multi-judge evaluation, and maintain
@@ -237,15 +261,15 @@ export default function GuidePage() {
237
261
  </div>
238
262
 
239
263
  {/* ─── Overview ─── */}
240
- <Section id="overview" title="Overview" subtitle="What Helix does and why it exists.">
264
+ <Section id="overview" title="Overview" subtitle="What HelixEvo does and why it exists.">
241
265
  <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
266
+ HelixEvo is a self-improving system that manages SKILL.md files for AI agents. When an agent makes a mistake
267
+ and gets corrected, HelixEvo captures that failure, clusters similar failures together, and proposes skill
244
268
  improvements. Every proposed change goes through rigorous multi-judge evaluation and regression testing before
245
269
  being deployed with a 3-day canary period.
246
270
  </p>
247
271
  <p className="guide-text">
248
- Built on ideas from <strong>EvoSkill</strong> and <strong>AutoResearch</strong>, Helix implements a
272
+ Built on ideas from <strong>EvoSkill</strong> and <strong>AutoResearch</strong>, HelixEvo implements a
249
273
  three-directional evolution model:
250
274
  </p>
251
275
  <div className="guide-directions">
@@ -280,9 +304,9 @@ export default function GuidePage() {
280
304
  and <a href="https://docs.anthropic.com/en/docs/claude-code">Claude CLI</a> with a Claude Max plan.
281
305
  </Callout>
282
306
 
283
- <Step n={1} title="Install Helix">
307
+ <Step n={1} title="Install HelixEvo">
284
308
  <Code title="Terminal">{`# From npm (recommended)
285
- npm install -g helix
309
+ npm install -g helixevo
286
310
 
287
311
  # Or from source
288
312
  git clone https://github.com/danielchen26/helixevo.git
@@ -292,7 +316,7 @@ cd helixevo && npm install && npm run build && npm link`}</Code>
292
316
  <Step n={2} title="Initialize your skill ecosystem">
293
317
  <Code title="Terminal">{`helixevo init`}</Code>
294
318
  <p className="guide-text-sm">
295
- This scans your existing SKILL.md files (from <code>~/.agents/skills/</code>), imports them into Helix,
319
+ This scans your existing SKILL.md files (from <code>~/.agents/skills/</code>), imports them into HelixEvo,
296
320
  and generates golden test cases for each skill. It also creates the data directory at <code>~/.helix/</code>.
297
321
  </p>
298
322
  </Step>
@@ -326,7 +350,7 @@ helixevo status`}</Code>
326
350
  </Section>
327
351
 
328
352
  {/* ─── Commands ─── */}
329
- <Section id="commands" title="Commands" subtitle="Complete CLI reference for every Helix command.">
353
+ <Section id="commands" title="Commands" subtitle="Complete CLI reference for every HelixEvo command.">
330
354
  <div className="guide-command-grid">
331
355
  {[
332
356
  {
@@ -336,7 +360,7 @@ helixevo status`}</Code>
336
360
  },
337
361
  {
338
362
  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.',
363
+ desc: 'Show correction rates per skill, trends over time, and whether each evolution actually reduced corrections. The proof that HelixEvo works.',
340
364
  flags: ['--verbose'],
341
365
  },
342
366
  {
@@ -346,7 +370,7 @@ helixevo status`}</Code>
346
370
  },
347
371
  {
348
372
  cmd: 'helixevo init',
349
- desc: 'Import existing skills and generate golden test cases. Scans ~/.agents/skills/ and creates the Helix data directory.',
373
+ desc: 'Import existing skills and generate golden test cases. Scans ~/.agents/skills/ and creates the HelixEvo data directory.',
350
374
  flags: ['--verbose'],
351
375
  },
352
376
  {
@@ -431,7 +455,7 @@ helixevo status`}</Code>
431
455
  </Section>
432
456
 
433
457
  {/* ─── Always-On Learning ─── */}
434
- <Section id="watch" title="Always-On Learning" subtitle="Helix watches your work, captures corrections automatically, and evolves without manual intervention.">
458
+ <Section id="watch" title="Always-On Learning" subtitle="HelixEvo watches your work, captures corrections automatically, and evolves without manual intervention.">
435
459
  <p className="guide-text">
436
460
  Instead of manually running <code>helixevo capture</code> after each session, <code>helixevo watch</code> runs
437
461
  continuously in the background. It monitors your conversation events in real-time, detects when you
@@ -477,7 +501,7 @@ helixevo watch --events path/to/events.jsonl --verbose`}</Code>
477
501
  {/* ─── Network Health ─── */}
478
502
  <Section id="networkhealth" title="Network Health" subtitle="The skill network is a co-evolving organism — its health determines project success.">
479
503
  <p className="guide-text">
480
- Individual skill evolution is only part of the picture. Helix now treats the <strong>entire skill network</strong> as
504
+ Individual skill evolution is only part of the picture. HelixEvo now treats the <strong>entire skill network</strong> as
481
505
  a first-class entity that co-evolves with your projects. Network health is assessed across 4 dimensions after
482
506
  every evolution cycle.
483
507
  </p>
@@ -509,9 +533,9 @@ helixevo watch --events path/to/events.jsonl --verbose`}</Code>
509
533
  </Section>
510
534
 
511
535
  {/* ─── Auto-Generalization ─── */}
512
- <Section id="autogen" title="Auto-Generalization" subtitle="When patterns recur across projects, Helix automatically creates abstract domain-level skills.">
536
+ <Section id="autogen" title="Auto-Generalization" subtitle="When patterns recur across projects, HelixEvo automatically creates abstract domain-level skills.">
513
537
  <p className="guide-text">
514
- Instead of waiting for you to run <code>helixevo generalize</code>, Helix now detects cross-project patterns
538
+ Instead of waiting for you to run <code>helixevo generalize</code>, HelixEvo now detects cross-project patterns
515
539
  automatically during every evolution cycle. When the same type of correction appears in 2+ projects, it
516
540
  creates an abstract domain-level skill and sets up parent/child inheritance.
517
541
  </p>
@@ -530,9 +554,9 @@ Project B: "Use FlashList not FlatList" (React Native perf)
530
554
  </Section>
531
555
 
532
556
  {/* ─── 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.">
557
+ <Section id="metrics" title="Closed-Loop Metrics" subtitle="Proving that HelixEvo actually makes the agent better — with data, not just LLM scores.">
534
558
  <p className="guide-text">
535
- The <code>helixevo metrics</code> command answers the most important question: <strong>&ldquo;Is Helix actually
559
+ The <code>helixevo metrics</code> command answers the most important question: <strong>&ldquo;Is HelixEvo actually
536
560
  reducing corrections?&rdquo;</strong> It tracks correction rates per skill over time and measures the real
537
561
  impact of each evolution.
538
562
  </p>
@@ -685,7 +709,7 @@ Project B: "Use FlashList not FlatList" (React Native perf)
685
709
 
686
710
  <h3 className="guide-h3">Cross-Skill Regression</h3>
687
711
  <p className="guide-text">
688
- When skill A is modified, Helix also tests golden cases from co-evolved, dependent, and enhancing
712
+ When skill A is modified, HelixEvo also tests golden cases from co-evolved, dependent, and enhancing
689
713
  partner skills. This catches silent incompatibilities where changing one skill breaks a related skill&apos;s behavior.
690
714
  </p>
691
715
  <Code title="How it works">{`Skill A evolves
@@ -888,9 +912,9 @@ generation: 3
888
912
  </Section>
889
913
 
890
914
  {/* ─── Craft Agent Integration ─── */}
891
- <Section id="craft" title="Craft Agent Integration" subtitle="Use Helix from within Craft Agent.">
915
+ <Section id="craft" title="Craft Agent Integration" subtitle="Use HelixEvo from within Craft Agent.">
892
916
  <p className="guide-text">
893
- Helix ships with a Craft Agent skill at <code>integrations/craft-agent/</code>.
917
+ HelixEvo ships with a Craft Agent skill at <code>integrations/craft-agent/</code>.
894
918
  Install it to trigger evolution directly from your Craft Agent sessions.
895
919
  </p>
896
920
  <Step n={1} title="Copy the skill">
@@ -911,26 +935,26 @@ generation: 3
911
935
  By default, 5 unresolved failures are required (<code>minFailuresForEvolution</code>).
912
936
  This ensures enough signal for meaningful pattern detection.
913
937
  </FAQItem>
914
- <FAQItem q="What LLM model does Helix use?">
915
- Helix uses <code>claude --print</code> with configurable models (default: <code>sonnet</code>).
938
+ <FAQItem q="What LLM model does HelixEvo use?">
939
+ HelixEvo uses <code>claude --print</code> with configurable models (default: <code>sonnet</code>).
916
940
  No API key is needed — it requires a Claude Max plan subscription. Judges and proposals can use different models.
917
941
  </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.
942
+ <FAQItem q="Can I use HelixEvo with other AI agents?">
943
+ Yes. HelixEvo manages standard SKILL.md files with YAML frontmatter. Any agent that reads SKILL.md
944
+ files can benefit from HelixEvo&apos;s evolution pipeline.
921
945
  </FAQItem>
922
946
  <FAQItem q="What happens during canary rollback?">
923
947
  If the failure rate for a canary skill exceeds <code>autoRollbackThreshold</code> (default: 1.5x),
924
948
  the skill is automatically reverted from the backup. The failed evolution is recorded in history.
925
949
  </FAQItem>
926
950
  <FAQItem q="How does cross-skill regression work?">
927
- When Skill A evolves, Helix checks the skill graph for co-evolved, dependent, and enhancing
951
+ When Skill A evolves, HelixEvo checks the skill graph for co-evolved, dependent, and enhancing
928
952
  partners. It tests their golden cases against Skill A&apos;s changes. If partner pass rate drops below 95%,
929
953
  the proposal is rejected.
930
954
  </FAQItem>
931
955
  <FAQItem q="How does the knowledge buffer work?">
932
956
  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
957
+ a minimum score are saved as drafts. When the same hypothesis appears again, HelixEvo iterates on
934
958
  the draft rather than starting from scratch.
935
959
  </FAQItem>
936
960
  <FAQItem q="How does helixevo watch detect corrections?">
@@ -938,7 +962,7 @@ generation: 3
938
962
  (e.g., &quot;wrong&quot;, &quot;not like that&quot;, &quot;不对&quot;, &quot;改成&quot;). (2) If a signal is detected, an LLM analyzes
939
963
  the recent conversation window to extract structured failure records with confidence scores (&gt;0.7 required).
940
964
  </FAQItem>
941
- <FAQItem q="How do I prove Helix is working?">
965
+ <FAQItem q="How do I prove HelixEvo is working?">
942
966
  Run <code>helixevo metrics</code>. It tracks correction rates per skill over 7-day rolling windows
943
967
  and compares before/after rates for each evolution. The verdict shows how many evolutions actually
944
968
  reduced corrections. This is closed-loop measurement — not LLM scores judging LLM output.
@@ -958,7 +982,7 @@ generation: 3
958
982
  {/* Footer */}
959
983
  <div className="guide-footer">
960
984
  <div className="guide-footer-content">
961
- <div style={{ fontSize: 13, fontWeight: 600 }}>Helix v0.2.0</div>
985
+ <div style={{ fontSize: 13, fontWeight: 600 }}>HelixEvo v0.2.6</div>
962
986
  <div style={{ fontSize: 12, color: 'var(--text-dim)', marginTop: 4 }}>
963
987
  Self-evolving skill ecosystem for AI agents · MIT License
964
988
  </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,
@@ -12769,7 +12769,7 @@ async function watchCommand(options) {
12769
12769
  const autoEvolve = options.evolve !== false;
12770
12770
  const project = options.project ?? null;
12771
12771
  const eventsPath = options.events ?? join16(process.cwd(), "events.jsonl");
12772
- console.log(`\uD83E\uDDEC Helix Watch Mode — Always-On Learning
12772
+ console.log(`\uD83E\uDDEC HelixEvo Watch Mode — Always-On Learning
12773
12773
  `);
12774
12774
  console.log(` Events: ${eventsPath}`);
12775
12775
  console.log(` Project: ${project ?? "(auto-detect)"}`);
@@ -12870,7 +12870,7 @@ async function watchCommand(options) {
12870
12870
  async function metricsCommand(options) {
12871
12871
  const verbose = options.verbose ?? false;
12872
12872
  const summary = getMetricsSummary();
12873
- console.log(`\uD83D\uDCCA Helix Metrics
12873
+ console.log(`\uD83D\uDCCA HelixEvo Metrics
12874
12874
  `);
12875
12875
  console.log(" ── Correction Rate ──");
12876
12876
  console.log(` Total failures: ${summary.totalFailures}`);
@@ -12914,7 +12914,7 @@ async function metricsCommand(options) {
12914
12914
  console.log(` ${effective}/${total} evolutions reduced corrections`);
12915
12915
  console.log(` ${regressed}/${total} evolutions increased corrections`);
12916
12916
  if (effective > regressed) {
12917
- console.log(" ✓ Helix is making the agent better");
12917
+ console.log(" ✓ HelixEvo is making the agent better");
12918
12918
  } else if (effective === 0 && total > 0) {
12919
12919
  console.log(" ⚠ Not enough data yet — keep working");
12920
12920
  }
@@ -12924,7 +12924,7 @@ async function metricsCommand(options) {
12924
12924
 
12925
12925
  // src/cli.ts
12926
12926
  var program2 = new Command;
12927
- program2.name("helixevo").description("Self-evolving skill ecosystem for AI agents").version("0.2.5").addHelpText("after", `
12927
+ program2.name("helixevo").description("Self-evolving skill ecosystem for AI agents").version("0.2.7").addHelpText("after", `
12928
12928
  Examples:
12929
12929
  $ helixevo watch Always-on learning (auto-capture + auto-evolve)
12930
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.5",
3
+ "version": "0.2.7",
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": {
@@ -40,7 +40,7 @@
40
40
  "claude",
41
41
  "claude-code",
42
42
  "helixevo",
43
- "helix",
43
+ "helixevo",
44
44
  "co-evolution",
45
45
  "pareto-frontier",
46
46
  "llm"