create-byan-agent 2.47.1 → 2.49.0

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/CHANGELOG.md CHANGED
@@ -9,6 +9,61 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [2.49.0] - 2026-07-16
13
+
14
+ ### Added
15
+ - Chaine d'entree BYAN v2 dans le skill `byan-byan` (section 0) : comprendre la
16
+ demande -> point de controle de plan uniquement sur doute -> dispatch Hermes
17
+ automatique (agent + modele + effort) -> execution party-mode avec visuel live
18
+ -> point de controle utilisateur en fin. L'humain reste requis seulement pour
19
+ creer un nouvel agent, confirmer un destructif, ou trancher un plan en cas de
20
+ doute.
21
+ - Visuel party-mode cable sur la liste de taches native (une entree par
22
+ agent/etape, `TaskCreate` / `TaskUpdate` en direct) plus la table de dispatch
23
+ affichee en tete de la phase BUILD.
24
+ - Garde "les deux moteurs" (`codexLinked()`) dans `codex-autodelegate.js` : la
25
+ voie Codex ne s'arme que si l'option yanstaller est activee ET Codex est linke
26
+ (`~/.codex/auth.json` ou `CODEX_API_KEY`) ; option seule = pas de delegation.
27
+
28
+ ### Changed
29
+ - La delegation Codex sur voie armee passe de "conseil advisory" a "directive" :
30
+ quand la voie est armee (option + les deux moteurs), le rendu injecte demande
31
+ de deleguer le delegable via `codex-bridge` (repli Claude si Codex
32
+ indisponible), au lieu de laisser BYAN executer sur Claude par defaut.
33
+ - Doctrine synchronisee (`.claude/rules/agent-entry-gate.md`, `.claude/CLAUDE.md`)
34
+ a la chaine d'entree v2 ; la double validation est calibree (doute / nouvel
35
+ agent / destructif) au lieu d'un reflexe a chaque tache.
36
+
37
+ ### Docs
38
+ - `docs/codex-auto-delegation.md` : garde "les deux moteurs", directive-quand-arme,
39
+ plafond honnete.
40
+ - `docs/per-platform-projection-opti.md` : chantier suivant planifie (coeur unique
41
+ + deux projections optimisees par plateforme Claude/Codex, sans source rivale).
42
+
43
+ ## [2.48.0] - 2026-07-16
44
+
45
+ ### Added - The whole dispatch chain now runs automatically at the entry
46
+
47
+ - On every non-conversational task, BYAN runs the full chain of its own accord —
48
+ the user no longer has to ask for it: (1) match the agent (agent-matcher),
49
+ (2) route the runtime with dispatch-router (Codex for execution/shell/deploy/
50
+ devops/browser ; Claude for architecture/refactor/quality/planning ; verification
51
+ stays Claude ; no Fable ; model+effort by complexity), (3) execute — Codex-lane
52
+ delegates to Codex via codex-bridge (`codex exec` -> diff -> Claude applies, with
53
+ a Claude fallback when Codex is unavailable) ; Claude-lane runs on Claude at the
54
+ chosen model.
55
+ - Reconciled with the double-validation rule: the human stays required only for
56
+ (a) creating a NEW agent when none fits and (b) confirming a destructive action.
57
+ Agent match, runtime routing and execution are automatic. Proportionate — a
58
+ trivial task with an existing agent routes directly, no ceremony.
59
+ - Wiring only: the code (agent-matcher 2.47, dispatch-router + codex-bridge 2.46)
60
+ already existed ; this connects it into the entry flow. Updated the byan-byan
61
+ skill (section 0), `.claude/rules/agent-entry-gate.md`, and `CLAUDE.md`. Honest
62
+ ceiling: the auto-chain is driven by the loaded skill (via `/byan-byan`) plus the
63
+ reactive nets — not a guarantee outside a loaded skill.
64
+ - Skill bundles rebuilt ; jest 2640 + MCP 846 green ; zero emoji ; mirrored to
65
+ install/templates.
66
+
12
67
  ## [2.47.1] - 2026-07-16
13
68
 
14
69
  ### Fixed - Doctrine told users to invoke with `@byan`, which does not load the skill
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-byan-agent",
3
- "version": "2.37.1",
3
+ "version": "2.49.0",
4
4
  "description": "BYAN - Intelligent AI agent installer with multi-platform native support (Claude Code, Codex/OpenCode)",
5
5
  "bin": {
6
6
  "create-byan-agent": "bin/create-byan-agent-v2.js"
@@ -17,13 +17,28 @@ Voir @.claude/rules/hermes-dispatcher.md pour les commandes Hermes.
17
17
 
18
18
  ## Porte d'entree — dispatch d'agent obligatoire (match-or-create)
19
19
 
20
- La base de BYAN : toute tache non-conversationnelle passe d'abord par le dispatch
21
- d'agent. BYAN + Hermes evaluent quel agent specialiste colle au besoin et le
22
- PROPOSENT ; l'utilisateur valide (double validation IA + humain), PUIS on lance le
23
- workflow. Aucun agent adapte -> interview pour cadrer le besoin -> recherche web
24
- (competences + bonnes pratiques du metier) -> creation de l'agent sur mesure ->
25
- workflow. Le declencheur de l'interview est l'absence d'un agent adapte, pas la
26
- taille de la tache. Detail + enforcement : voir @.claude/rules/agent-entry-gate.md
20
+ La base de BYAN : toute tache non-conversationnelle passe d'abord par la chaine
21
+ d'entree. A l'entree, BYAN enchaine AUTOMATIQUEMENT toute la chaine, sans que tu
22
+ la demandes quatre moments :
23
+
24
+ 1. **Comprendre.** Demande claire -> on avance directement, zero question. Doute
25
+ ou demande mal exprimee -> BYAN expose UN plan clair (quels agents, quels
26
+ modeles, quel effort) et tu tranches. Ce point de controle en amont ne se
27
+ declenche que sur un vrai doute.
28
+ 2. **Dispatch (Hermes, automatique).** Le bon agent, le bon modele, le bon effort,
29
+ le bon moteur — Codex pour execution/shell/deploy/devops/navigateur, Claude
30
+ sinon (via `dispatch-router`). Aucun agent adapte -> interview + recherche web
31
+ (competences + bonnes pratiques du metier) -> creation de l'agent sur mesure.
32
+ 3. **Execution en party-mode avec visuel live.** Tu vois ce qui se passe en
33
+ direct (liste de taches native + table de dispatch). Voie Codex armee (option
34
+ yanstaller + Codex linke) + tache delegable -> delegation reelle a Codex ;
35
+ sinon execution sur Claude.
36
+ 4. **Gate en fin.** La validation utilisateur arrive a la fin, sur le livrable —
37
+ pas en amont.
38
+
39
+ L'humain reste requis seulement pour : creer un nouvel agent, confirmer une action
40
+ destructive, trancher le plan quand il y a doute. Detail + enforcement : voir
41
+ @.claude/rules/agent-entry-gate.md et @docs/intelligent-dispatch.md
27
42
 
28
43
  ## Architecture BYAN
29
44
 
@@ -20,6 +20,7 @@
20
20
 
21
21
  const fs = require('fs');
22
22
  const path = require('path');
23
+ const os = require('os');
23
24
  const { readStdin, parseJson } = require('./lib/strict-runtime');
24
25
  const { decideAutodelegation, renderNudge } = require('./lib/autodelegate-decision');
25
26
  const { estimateClaudeUsage } = require('./lib/usage-estimator');
@@ -44,13 +45,29 @@ function toggledOff(projectRoot) {
44
45
  }
45
46
  }
46
47
 
48
+ // The "both engines present" gate. The lane arms only when the yanstaller option
49
+ // wrote enabled:true (checked via loadConfig) AND Codex is actually linked on this
50
+ // machine — a ChatGPT subscription via `codex login` (~/.codex/auth.json) or
51
+ // CODEX_API_KEY. Option on but no linked Codex = one engine only = no delegation
52
+ // (the user's rule: option AND both engines, else nothing). Mirrors codexAuthState
53
+ // in install/lib/codex-autodelegate-setup.js.
54
+ function codexLinked({ home = os.homedir() } = {}) {
55
+ if (process.env.CODEX_API_KEY) return true;
56
+ try {
57
+ return fs.existsSync(path.join(home, '.codex', 'auth.json'));
58
+ } catch {
59
+ return false;
60
+ }
61
+ }
62
+
47
63
  if (require.main === module) {
48
64
  (async () => {
49
65
  let additionalContext = '';
50
66
  try {
51
67
  const projectRoot = process.env.CLAUDE_PROJECT_DIR || process.cwd();
52
68
  const config = loadConfig(projectRoot);
53
- if (config.enabled === true && !toggledOff(projectRoot)) {
69
+ // Both engines must be present : option armed (enabled) AND Codex linked.
70
+ if (config.enabled === true && !toggledOff(projectRoot) && codexLinked()) {
54
71
  const payload = parseJson(await readStdin());
55
72
  const prompt = payload.prompt || payload.user_prompt || payload.userPrompt || '';
56
73
  // Estimate usage only when a budget is configured; else pct stays null and
@@ -71,4 +88,4 @@ if (require.main === module) {
71
88
  })();
72
89
  }
73
90
 
74
- module.exports = { loadConfig, toggledOff };
91
+ module.exports = { loadConfig, toggledOff, codexLinked };
@@ -123,22 +123,26 @@ function sanitizeForContext(value, max = 120) {
123
123
  }
124
124
 
125
125
  // Render a decision into the one-paragraph nudge injected into BYAN's context.
126
- // Empty string when there is nothing to propose (so the hook injects nothing).
127
- // The nudge is ADVISORY: it proposes, it never forces BYAN still owns the call
128
- // and the red line is spelled out every time.
126
+ // Empty string when there is nothing to render (so the hook injects nothing).
127
+ // The hook injects this ONLY when the lane is armed (option on AND Codex linked),
128
+ // so the text is a DIRECTIVE, not advice: delegate the delegable part, fall back
129
+ // to Claude only if Codex is unavailable. The red line (delegable work only —
130
+ // judgment/soul/verify stay on Claude) is spelled out every time.
129
131
  function renderNudge(decision) {
130
132
  if (!decision || !decision.delegate) return '';
131
133
  const gauge = decision.pct != null ? ` (estimated Claude 5h usage ~${decision.pct}%)` : '';
132
134
  const invocation = sanitizeForContext(decision.invocation) || DEFAULT_INVOCATION;
133
135
  const scope = decision.mode === 'all'
134
- ? 'Consider offloading ALL delegable work this session to Codex'
136
+ ? 'Delegate ALL delegable work this session to Codex'
135
137
  : decision.mode === 'perf-routed'
136
- ? 'Codex is heuristically favored for this kind of task (not a measured benchmark) — consider handing it over'
137
- : 'This looks like delegable coding work — consider handing it to Codex';
138
+ ? 'Codex is heuristically favored for this kind of task (not a measured benchmark) — delegate it'
139
+ : 'This is delegable coding work — delegate it to Codex';
138
140
  return [
139
141
  `[BYAN auto-delegate]${gauge}: ${scope} via \`${invocation}\` `
140
142
  + '(runs on the ChatGPT subscription, no API credit).',
141
- `Red line: ${decision.redLine}. This is advisory you decide, and you still verify Codex's output before commit.`,
143
+ `Red line: ${decision.redLine}. The lane is ARMED (option on AND Codex linked), so this is a `
144
+ + 'DIRECTIVE, not a mere suggestion: delegate the delegable part unless you have a specific reason '
145
+ + "not to, fall back to Claude only if Codex is unavailable, and verify Codex's output before commit.",
142
146
  ].join(' ');
143
147
  }
144
148
 
@@ -47,12 +47,55 @@ declencher une interview a chaque fois. Agent existant qui colle = on route
47
47
  direct. Besoin flou ou aucun agent adapte = la ou l'interview + creation se
48
48
  declenchent. La ceremonie est proportionnee au manque, pas systematique.
49
49
 
50
- ## La double validation
50
+ ## La chaine complete, automatique (comprendre -> dispatch -> execution party-mode -> gate en fin)
51
+
52
+ Le dispatch d'agent n'est que la premiere marche. A l'entree, sur toute tache,
53
+ BYAN enchaine la chaine ENTIERE de lui-meme, sans que l'utilisateur ait a la
54
+ demander. Quatre moments :
55
+
56
+ 1. **Comprendre la demande.** Demande claire -> on avance directement, sans
57
+ question. Doute ou demande mal exprimee -> BYAN expose UN plan clair (quels
58
+ agents, quels modeles, quel effort) et l'utilisateur tranche. Ce point de
59
+ controle en amont ne se declenche que sur un vrai doute — pas en reflexe a
60
+ chaque tache.
61
+ 2. **Dispatch (Hermes, automatique).** Le bon agent (matcher
62
+ `_byan/mcp/byan-mcp-server/lib/agent-matcher.js`), le bon modele + effort
63
+ (`dispatch-router.js` / native-tiers) et le bon moteur : Codex pour execution /
64
+ shell / deploiement / devops / navigateur ; Claude pour architecture / refactor
65
+ / qualite / planif ; la verification reste sur Claude ; Fable n'est pas emis.
66
+ Decision automatique, pas de validation utilisateur. Fit -> cet agent ;
67
+ no-fit -> interview + recherche web + creation (seul point ou l'humain reste
68
+ requis en amont).
69
+ 3. **Execution en party-mode avec un visuel live.** L'utilisateur VOIT ce qui se
70
+ passe, en direct : la liste de taches native (une entree par agent/etape,
71
+ mise a jour en temps reel) plus la table de dispatch en tete. Codex-lane : quand
72
+ la voie est ARMEE (option yanstaller + Codex linke) et la tache delegable,
73
+ deleguer REELLEMENT via le pont (`lib/codex-bridge.js` : `codex exec` -> diff
74
+ unifie -> Claude applique ; repli sur Claude si Codex indisponible) — le conseil
75
+ injecte est alors une directive, pas une simple suggestion. Non armee : pas de
76
+ delegation, on execute sur Claude. Claude-lane : executer sur Claude au modele
77
+ choisi.
78
+ 4. **Gate utilisateur en fin.** Le point de controle utilisateur arrive a la fin,
79
+ une fois la feature/tache faite et s'il y a un livrable a valider — pas en
80
+ amont. Dans un FD multi-feature complet, les gates par phase s'appliquent en
81
+ plus (c'est la gouvernance plus lourde du FD ; le chemin direct ci-dessus est
82
+ le cas courant).
83
+
84
+ Ce qui reste a l'humain : (a) creer un nouvel agent quand aucun ne colle, (b)
85
+ confirmer une action destructive, (c) trancher le plan en amont quand il y a
86
+ doute. Le reste — comprehension, match agent, routage moteur, execution — part
87
+ tout seul. Detail du routage moteur : `docs/intelligent-dispatch.md`.
88
+
89
+ ## La double validation (calibree : sur doute, nouvel agent, destructif)
51
90
 
52
91
  Le matcher (F1, `_byan/mcp/byan-mcp-server/lib/agent-matcher.js`) est un
53
92
  pre-tri deterministe : il classe les candidats du roster et rend un verdict
54
- {fit | no-fit}. Il PROPOSE, il ne tranche pas seul. BYAN presente la proposition
55
- en clair ; l'utilisateur valide. IA propose, humain confirme.
93
+ {fit | no-fit}. Il PROPOSE, il ne tranche pas seul. Mais la confirmation humaine
94
+ n'est PAS un reflexe a chaque tache : sur une demande claire avec un agent adapte,
95
+ BYAN route et execute, et le gate est en fin. La confirmation humaine se declenche
96
+ sur les trois cas qui la meritent : un vrai doute (le plan en amont), la creation
97
+ d'un nouvel agent, une action destructive. IA propose, humain confirme — la ou ca
98
+ compte, pas partout.
56
99
 
57
100
  ## La creation d'agent enrichie (chemin no-fit)
58
101
 
@@ -7,19 +7,54 @@ description: BYAN — Builder of YAN. Core meta-agent that owns the Feature Deve
7
7
 
8
8
  You are BYAN when this skill is active. You own the eight-phase Feature Development workflow and you enforce it mechanically. Every new feature the user asks for goes through all phases in order. No skipping. No implicit transitions. The cycle includes a REFACTOR loop back to BUILD when VALIDATE fails.
9
9
 
10
- ## 0. Entry gateagent dispatch first (match-or-create)
11
-
12
- Before doing any non-conversational task, run the mandatory agent entry gate:
13
- BYAN + Hermes evaluate which specialist agent fits the need (the matcher in
14
- `_byan/mcp/byan-mcp-server/lib/agent-matcher.js` pre-ranks the roster), and you
15
- PROPOSE it to the user, who validates (double validation IA + human). A suited
16
- agent -> launch its workflow (+ runtime dispatch). No suited agent -> propose an
17
- interview to frame the need, do web research on the trade's competencies + best
18
- practices, create the tailored agent, then launch the workflow. The interview is
19
- triggered by the ABSENCE of a suited agent, not by task size — a fit routes
20
- directly, no ceremony. Do NOT do a task inline without this proposal. Full
21
- doctrine + the reactive net (`agent-gate-check.js`): see
22
- @.claude/rules/agent-entry-gate.md
10
+ ## 0. Entry chaincomprehend, dispatch, execute in party-mode, gate at the end
11
+
12
+ On every non-conversational task, run this chain yourself, of your own accord —
13
+ the user should not have to ask for it. Four moments:
14
+
15
+ 1. **Comprehend the request.** Clear -> advance directly, no question. Doubt or a
16
+ badly-expressed request -> expose ONE clear plan (which agents, which models,
17
+ which effort) and let the user decide. This upstream plan-gate fires ONLY on
18
+ genuine doubt it is not a reflex on every task. When the request is clear,
19
+ skip it and route.
20
+ 2. **Dispatch (Hermes, automatic).** Pick the right agent
21
+ (`_byan/mcp/byan-mcp-server/lib/agent-matcher.js`), the right model + effort
22
+ (`dispatch-router.js` / native-tiers), and the right runtime — Codex for
23
+ execution / shell / deploy / devops / browser ; Claude for architecture /
24
+ refactor / quality / planning ; verification stays on Claude ; Fable is not
25
+ emitted. No user ask. A suited agent -> use it. NO suited agent -> interview to
26
+ frame the need, web-research the trade's competencies + best practices, create
27
+ the tailored agent (the one place the human is required upstream).
28
+ 3. **Execute in party-mode with a live visual.** The user SEES what happens, live:
29
+ the native task list (one entry per agent/step, updated in real time via
30
+ `TaskCreate` / `TaskUpdate`) plus the dispatch table shown at the top of BUILD.
31
+ - **Codex-lane** — when the lane is ARMED (yanstaller option on AND Codex
32
+ linked, i.e. `_byan/_config/autodelegate.json` present with `enabled:true`
33
+ AND `~/.codex/auth.json` or `CODEX_API_KEY`) and the task is delegable,
34
+ ACTUALLY delegate via `codex-bridge.js` (`codex exec` -> unified diff -> YOU
35
+ apply it). Fall back to Claude if Codex is unavailable. When armed, the
36
+ injected `[BYAN auto-delegate]` note is a DIRECTIVE, not a mere suggestion:
37
+ you delegate the delegable work rather than doing it on Claude by default.
38
+ When NOT armed (option off or Codex not linked), there is no delegation —
39
+ you run it on Claude.
40
+ - **Claude-lane** — run it on Claude at the chosen model.
41
+ 4. **User gate at the END.** The user-validation gate lands at the end, once the
42
+ feature/task is done and there is a deliverable to review — not upstream. (In a
43
+ full multi-feature FD, the per-phase gates below still apply — that is the
44
+ heavier governance the FD opts into; the direct path above is the common case.)
45
+
46
+ Proportionate: a trivial task with an existing agent routes directly, no ceremony;
47
+ a genuine multi-feature build escalates into the full eight-phase FD. The human
48
+ stays required only for (a) creating a NEW agent and (b) confirming a destructive
49
+ action. Everything else — comprehension routing, agent match, runtime routing,
50
+ execution — is automatic. Do not do a task yourself without running this chain.
51
+
52
+ **Honest ceiling.** Claude Code has no control point before a response is shown,
53
+ so this chain is model-driven doctrine, not a hard mechanism: the delegation and
54
+ the visual are things you DO because this section says so, backed by the reactive
55
+ net (`agent-gate-check.js`) at turn end — not a guarantee enforced before display.
56
+ Full doctrine + runtime routing table: see @.claude/rules/agent-entry-gate.md and
57
+ @docs/intelligent-dispatch.md
23
58
 
24
59
  ## 1. Activation triggers
25
60
 
@@ -110,7 +145,10 @@ Never call `byan_update_apply` without explicit user consent. That tool returns
110
145
  - TDD first : write/update tests before implementation.
111
146
  - Atomic commits : `type: description`, no emoji, one feature per commit.
112
147
  - Parallel BUILD via `party-mode-native` only if roles are independent and write to non-overlapping paths.
113
- - **Visibility** : the `tool-transparency` hook already writes per-tool entries to `_byan-output/tool-log.jsonl`. Every sub-task you spawn must be visible there.
148
+ - **Party-mode live visual** (the user must SEE what happens) :
149
+ 1. At BUILD entry, print the dispatch table (feature x specialist x model x strategy) so the plan is on screen before any work starts.
150
+ 2. Create ONE native task per feature/agent with `TaskCreate` (the checklist Claude Code renders live). Set it `in_progress` (`TaskUpdate`) with the acting agent as `owner` the moment that agent starts, and `completed` the moment it finishes. One entry per agent/step, updated in real time — that is the visual.
151
+ 3. This native list is the primary visual ; the `tool-transparency` hook is the audit trail underneath it, writing per-tool entries to `_byan-output/tool-log.jsonl`. Every sub-task you spawn must be visible in both.
114
152
  - **Exit gate** : user sees the diff and says "ok build".
115
153
 
116
154
  ### Phase 6 — REVIEW (qualitative pre-flight + tiered adversarial second pair of eyes)
@@ -94,7 +94,7 @@
94
94
  "name": "byan-byan",
95
95
  "module": "core",
96
96
  "tier": "connector-bound",
97
- "sourceHash": "523ca56a08c8b85edba423e1bfdd0d9c777442bcb266b5a74e65c14814da128d"
97
+ "sourceHash": "84fa718d638f1ddb37796c9b80c702fca48350decb40979bd1adea1452224abc"
98
98
  },
99
99
  "byan-byan-v2": {
100
100
  "name": "byan-byan-v2",
@@ -12,9 +12,24 @@ work crosses the line.
12
12
  Every turn, a `UserPromptSubmit` hook estimates how much of the Claude 5h window
13
13
  you have burned and looks at the task you just asked for. If the task is
14
14
  delegable (code / mechanical) — or if you are over the pressure threshold — BYAN
15
- injects a one-line advisory nudge proposing you hand it to Codex via
16
- `codex:codex-rescue --model gpt-5.4`. You still decide, and you still verify
17
- Codex's output before commit.
15
+ injects a one-line note directing you to hand it to Codex via
16
+ `codex:codex-rescue --model gpt-5.4`. You still verify Codex's output before commit.
17
+
18
+ **Both engines must be present.** The lane only arms — and the note only fires —
19
+ when TWO conditions hold together: the yanstaller option wrote
20
+ `_byan/_config/autodelegate.json` with `enabled:true`, AND Codex is actually
21
+ linked on this machine (`~/.codex/auth.json` from `codex login`, or
22
+ `CODEX_API_KEY`). Option on but no linked Codex = one engine only = no delegation.
23
+ This is the runtime `codexLinked()` gate in `codex-autodelegate.js`, the mirror of
24
+ the installer's arm-time `codexAuthState` check.
25
+
26
+ **Armed = directive, not advice.** Because the note only appears when the lane is
27
+ armed (both engines present), it reads as a directive: delegate the delegable
28
+ part, fall back to Claude only if Codex is unavailable. When the lane is not
29
+ armed, no note is injected and everything runs on Claude — there is nothing to
30
+ decide. Honest ceiling: Claude Code has no control point before a response is
31
+ shown, so this stays model-driven doctrine (BYAN delegates because the skill's
32
+ entry chain and this note say so), not a mechanism enforced before display.
18
33
 
19
34
  Three triggers, in priority order:
20
35
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-byan-agent",
3
- "version": "2.47.1",
3
+ "version": "2.49.0",
4
4
  "description": "BYAN v2.8 - Intelligent AI agent creator with ELO trust system + scientific fact-check + Hermes universal dispatcher + native Claude Code integration (hooks, skills, MCP server). Multi-platform (Claude Code, Codex). Merise Agile + TDD + 71 Mantras. ~54% LLM cost savings.",
5
5
  "main": "src/index.js",
6
6
  "bin": {