create-byan-agent 2.48.0 → 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,37 @@ 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
+
12
43
  ## [2.48.0] - 2026-07-16
13
44
 
14
45
  ### Added - The whole dispatch chain now runs automatically at the entry
@@ -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,19 +17,27 @@ 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.
27
-
28
- A l'entree, BYAN enchaine AUTOMATIQUEMENT toute la chaine, sans que tu la
29
- demandes : (1) quel agent, (2) quel moteur — Codex pour execution/shell/deploy/
30
- devops/navigateur, Claude sinon (via `dispatch-router`), (3) execution, avec
31
- delegation reelle a Codex sur sa voie. L'humain reste requis seulement pour creer
32
- un nouvel agent et confirmer une action destructive. Detail + enforcement : voir
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
33
41
  @.claude/rules/agent-entry-gate.md et @docs/intelligent-dispatch.md
34
42
 
35
43
  ## Architecture BYAN
@@ -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,35 +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 chaine complete, automatique (agent -> moteur -> execution)
50
+ ## La chaine complete, automatique (comprendre -> dispatch -> execution party-mode -> gate en fin)
51
51
 
52
52
  Le dispatch d'agent n'est que la premiere marche. A l'entree, sur toute tache,
53
53
  BYAN enchaine la chaine ENTIERE de lui-meme, sans que l'utilisateur ait a la
54
- demander :
55
-
56
- 1. **Agent** matcher (ci-dessus). Fit -> cet agent ; no-fit -> interview +
57
- recherche web + creation. Seul point ou l'humain reste requis : creer un
58
- nouvel agent.
59
- 2. **Moteur**router via `_byan/mcp/byan-mcp-server/lib/dispatch-router.js` :
60
- Codex pour execution / shell / deploiement / devops / navigateur ; Claude pour
61
- architecture / refactor / qualite / planif ; la verification reste sur Claude ;
62
- Fable n'est pas emis ; modele + effort selon la complexite. Decision
63
- automatique, pas de validation utilisateur.
64
- 3. **Execution** Codex-lane : deleguer a Codex via le pont
65
- (`lib/codex-bridge.js` : `codex exec` -> diff unifie -> Claude applique le
66
- diff ; repli sur Claude si Codex est indisponible). Claude-lane : executer sur
67
- Claude au modele choisi. Automatique.
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).
68
83
 
69
84
  Ce qui reste a l'humain : (a) creer un nouvel agent quand aucun ne colle, (b)
70
- confirmer une action destructive. Le reste match agent, routage moteur,
71
- execution part tout seul. Detail du routage moteur : `docs/intelligent-dispatch.md`.
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`.
72
88
 
73
- ## La double validation
89
+ ## La double validation (calibree : sur doute, nouvel agent, destructif)
74
90
 
75
91
  Le matcher (F1, `_byan/mcp/byan-mcp-server/lib/agent-matcher.js`) est un
76
92
  pre-tri deterministe : il classe les candidats du roster et rend un verdict
77
- {fit | no-fit}. Il PROPOSE, il ne tranche pas seul. BYAN presente la proposition
78
- 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.
79
99
 
80
100
  ## La creation d'agent enrichie (chemin no-fit)
81
101
 
@@ -7,31 +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 gaterun the WHOLE dispatch chain automatically
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. Three steps, then execute:
14
-
15
- 1. **Which agent** match the need against the roster with the matcher
16
- (`_byan/mcp/byan-mcp-server/lib/agent-matcher.js`). A suited agent -> use it.
17
- NO suited agent -> propose an interview to frame the need, web-research the
18
- trade's competencies + best practices, create the tailored agent. This is the
19
- ONE step where the human stays in the loop (creating a new agent).
20
- 2. **Which runtime** route with `dispatch-router.js`: Codex for execution /
21
- shell / deploy / devops / browser ; Claude for architecture / refactor /
22
- quality / planning ; verification stays on Claude ; Fable is not emitted ;
23
- model + effort scale to complexity. This decision is automatic no user ask.
24
- 3. **Execute** Codex-lane: delegate to Codex via the bridge
25
- (`codex-bridge.js`: `codex exec` -> unified diff -> YOU apply it ; fall back to
26
- Claude if Codex is unavailable). Claude-lane: do it on Claude at the chosen
27
- model. Automatic no user ask.
28
-
29
- Proportionate: a trivial task with an existing agent routes directly, no
30
- ceremony. The human stays required only for (a) creating a NEW agent and (b)
31
- confirming a destructive action. Everything else agent match, runtime routing,
32
- execution is automatic. Do NOT do a task inline without running this chain.
33
- Full doctrine + the reactive net (`agent-gate-check.js`) + the runtime routing
34
- table: see @.claude/rules/agent-entry-gate.md and @docs/intelligent-dispatch.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
35
58
 
36
59
  ## 1. Activation triggers
37
60
 
@@ -122,7 +145,10 @@ Never call `byan_update_apply` without explicit user consent. That tool returns
122
145
  - TDD first : write/update tests before implementation.
123
146
  - Atomic commits : `type: description`, no emoji, one feature per commit.
124
147
  - Parallel BUILD via `party-mode-native` only if roles are independent and write to non-overlapping paths.
125
- - **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.
126
152
  - **Exit gate** : user sees the diff and says "ok build".
127
153
 
128
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": "91fa54c35848f2e2ddd6210fde0f15fab53d58ce5b36627f90ebcfbf760e09a1"
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.48.0",
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": {