create-byan-agent 2.23.0 → 2.26.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 +230 -0
- package/README.md +9 -12
- package/install/bin/create-byan-agent-v2.js +29 -169
- package/install/lib/agent-generator.js +5 -5
- package/install/lib/byan-web-integration.js +1 -1
- package/install/lib/claude-native-setup.js +1 -1
- package/install/lib/phase2-chat.js +3 -10
- package/install/lib/platforms/claude-code.js +2 -2
- package/install/lib/platforms/index.js +0 -2
- package/install/lib/project-agents-generator.js +3 -3
- package/install/lib/staging-consent.js +3 -3
- package/install/lib/subagent-generator.js +3 -3
- package/install/lib/yanstaller/agent-launcher.js +1 -27
- package/install/lib/yanstaller/detector.js +4 -4
- package/install/lib/yanstaller/installer.js +0 -2
- package/install/lib/yanstaller/interviewer.js +1 -1
- package/install/lib/yanstaller/platform-selector.js +1 -13
- package/install/package.json +1 -1
- package/install/src/byan-v2/context/session-state.js +2 -2
- package/install/src/byan-v2/index.js +2 -6
- package/install/src/byan-v2/orchestrator/generation-state.js +4 -4
- package/install/src/webui/api.js +0 -2
- package/install/src/webui/chat/bridge.js +1 -13
- package/install/src/webui/chat/cli-detector.js +0 -23
- package/install/src/webui/public/app.js +1 -3
- package/install/src/webui/public/chat.html +0 -2
- package/install/src/webui/public/chat.js +0 -1
- package/install/src/webui/public/index.html +2 -2
- package/install/templates/.claude/CLAUDE.md +13 -2
- package/install/templates/.claude/agents/bmad-byan.md +1 -1
- package/install/templates/.claude/hooks/autobench-stop-guard.js +286 -0
- package/install/templates/.claude/hooks/drain-advisory.js +85 -0
- package/install/templates/.claude/hooks/fact-check-absolutes.js +1 -61
- package/install/templates/.claude/hooks/fact-check-claims.js +69 -0
- package/install/templates/.claude/hooks/fd-response-check.js +37 -46
- package/install/templates/.claude/hooks/inject-soul.js +64 -25
- package/install/templates/.claude/hooks/leantime-fd-sync.js +216 -0
- package/install/templates/.claude/hooks/lib/autobench-config.json +81 -0
- package/install/templates/.claude/hooks/lib/autobench-fc-enrich.js +251 -0
- package/install/templates/.claude/hooks/lib/autobench-ledger-report.js +253 -0
- package/install/templates/.claude/hooks/lib/autobench-runtime.js +199 -0
- package/install/templates/.claude/hooks/lib/fact-check-core.js +69 -0
- package/install/templates/.claude/hooks/lib/failure-detector.js +18 -4
- package/install/templates/.claude/hooks/lib/transcript-read.js +137 -0
- package/install/templates/.claude/hooks/soul-memory-check.js +49 -25
- package/install/templates/.claude/hooks/soul-memory-triggers.js +27 -8
- package/install/templates/.claude/hooks/stage-to-byan.js +25 -7
- package/install/templates/.claude/hooks/strict-stop-guard.js +4 -16
- package/install/templates/.claude/rules/benchmark.md +251 -0
- package/install/templates/.claude/rules/byan-agents.md +0 -1
- package/install/templates/.claude/rules/byan-api.md +64 -0
- package/install/templates/.claude/rules/fact-check.md +1 -1
- package/install/templates/.claude/rules/strict-mode.md +10 -9
- package/install/templates/.claude/settings.json +16 -0
- package/install/templates/.claude/skills/byan-benchmark/SKILL.md +159 -0
- package/install/templates/.claude/skills/byan-byan/SKILL.md +73 -12
- package/install/templates/.claude/skills/byan-fact-check/SKILL.md +1 -1
- package/install/templates/.claude/skills/byan-hermes-dispatch/SKILL.md +5 -6
- package/install/templates/.claude/skills/byan-insight/SKILL.md +56 -0
- package/install/templates/.claude/skills/byan-orchestrate/SKILL.md +11 -3
- package/install/templates/.claude/skills/byan-strict/SKILL.md +4 -1
- package/install/templates/.claude/workflows/INDEX.md +2 -1
- package/install/templates/.claude/workflows/byan-benchmark.js +328 -0
- package/install/templates/.claude/workflows/check-implementation-readiness.js +1 -1
- package/install/templates/_byan/_config/agent-manifest.csv +1 -1
- package/install/templates/_byan/_config/autobench.yaml +510 -0
- package/install/templates/_byan/_config/strict-mode.yaml +9 -3
- package/install/templates/_byan/_config/workflow-manifest.csv +1 -0
- package/install/templates/_byan/agent/byan/byan.md +1 -3
- package/install/templates/_byan/agent/byan-flat/byan.md +1 -3
- package/install/templates/_byan/agent/byan-test/byan-test.md +2 -2
- package/install/templates/_byan/agent/byan-test-flat/byan-test.md +2 -2
- package/install/templates/_byan/agent/byan.optimized/byan.optimized.md +2 -2
- package/install/templates/_byan/agent/byan.optimized-v2/byan.optimized-v2.md +2 -2
- package/install/templates/_byan/agent/claude/claude.md +0 -2
- package/install/templates/_byan/agent/codex/codex.md +0 -2
- package/install/templates/_byan/agent/rachid/rachid.md +2 -10
- package/install/templates/_byan/agent/rachid-flat/rachid.md +2 -11
- package/install/templates/_byan/agent/turbo-whisper/turbo-whisper.md +2 -5
- package/install/templates/_byan/agent/turbo-whisper-integration/turbo-whisper-integration.md +5 -13
- package/install/templates/_byan/agent/yanstaller/yanstaller.md +2 -24
- package/install/templates/_byan/config.yaml +0 -1
- package/install/templates/_byan/core/activation/soul-activation.md +3 -3
- package/install/templates/_byan/mcp/byan-mcp-server/bin/byan-insight-digest.js +31 -0
- package/install/templates/_byan/mcp/byan-mcp-server/bin/byan-sync-rules.js +20 -4
- package/install/templates/_byan/mcp/byan-mcp-server/lib/advisory-autofeed.js +96 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/index-generator.js +1 -1
- package/install/templates/_byan/mcp/byan-mcp-server/lib/insight-harvest.js +220 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/kanban.js +6 -3
- package/install/templates/_byan/mcp/byan-mcp-server/lib/leantime-fd-core.js +205 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/leantime-sync.js +415 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/outcome-buffer.js +64 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/precommit-gate.js +1 -1
- package/install/templates/_byan/mcp/byan-mcp-server/lib/strict-activation.js +1 -1
- package/install/templates/_byan/mcp/byan-mcp-server/lib/strict-mode.js +8 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/sync-rules.js +172 -23
- package/install/templates/_byan/mcp/byan-mcp-server/lib/workflows-generator.js +1 -0
- package/install/templates/_byan/mcp/byan-mcp-server/server.js +262 -81
- package/install/templates/_byan/worker/launchers/README.md +4 -24
- package/install/templates/_byan/worker/workers.md +8 -9
- package/install/templates/_byan/workflow/simple/bmb/byan-benchmark/workflow.md +86 -0
- package/install/templates/_byan/workflow/simple/byan/feature-workflow.md +2 -2
- package/install/templates/docs/leantime-integration.md +160 -0
- package/package.json +3 -7
- package/src/byan-v2/context/session-state.js +2 -2
- package/src/byan-v2/generation/mantra-validator.js +3 -3
- package/src/byan-v2/index.js +1 -5
- package/src/byan-v2/integration/voice-integration.js +1 -1
- package/src/byan-v2/orchestrator/generation-state.js +4 -4
- package/src/loadbalancer/loadbalancer.js +1 -1
- package/src/staging/staging.js +20 -6
- package/install/bin/build-copilot-stubs.js +0 -138
- package/install/lib/platforms/copilot-cli.js +0 -123
- package/install/lib/platforms/vscode.js +0 -51
- package/install/src/byan-v2/context/copilot-context.js +0 -79
- package/install/src/webui/chat/copilot-adapter.js +0 -68
- package/install/templates/.claude/agents/bmad-marc.md +0 -25
- package/install/templates/.claude/skills/byan-marc/SKILL.md +0 -20
- package/install/templates/.github/agents/bmad-agent-bmad-master.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmb-agent-builder.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmb-module-builder.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmb-workflow-builder.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-analyst.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-architect.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-dev.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-pm.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-quick-flow-solo-dev.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-quinn.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-sm.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-tech-writer.md +0 -16
- package/install/templates/.github/agents/bmad-agent-bmm-ux-designer.md +0 -16
- package/install/templates/.github/agents/bmad-agent-byan-test.md +0 -33
- package/install/templates/.github/agents/bmad-agent-byan-v2.md +0 -44
- package/install/templates/.github/agents/bmad-agent-byan.md +0 -1062
- package/install/templates/.github/agents/bmad-agent-carmack.md +0 -14
- package/install/templates/.github/agents/bmad-agent-cis-brainstorming-coach.md +0 -16
- package/install/templates/.github/agents/bmad-agent-cis-creative-problem-solver.md +0 -16
- package/install/templates/.github/agents/bmad-agent-cis-design-thinking-coach.md +0 -16
- package/install/templates/.github/agents/bmad-agent-cis-innovation-strategist.md +0 -16
- package/install/templates/.github/agents/bmad-agent-cis-presentation-master.md +0 -16
- package/install/templates/.github/agents/bmad-agent-cis-storyteller.md +0 -16
- package/install/templates/.github/agents/bmad-agent-claude.md +0 -49
- package/install/templates/.github/agents/bmad-agent-codex.md +0 -49
- package/install/templates/.github/agents/bmad-agent-drawio.md +0 -45
- package/install/templates/.github/agents/bmad-agent-fact-checker.md +0 -16
- package/install/templates/.github/agents/bmad-agent-forgeron.md +0 -15
- package/install/templates/.github/agents/bmad-agent-jimmy.md +0 -15
- package/install/templates/.github/agents/bmad-agent-marc.md +0 -49
- package/install/templates/.github/agents/bmad-agent-mike.md +0 -15
- package/install/templates/.github/agents/bmad-agent-patnote.md +0 -49
- package/install/templates/.github/agents/bmad-agent-rachid.md +0 -48
- package/install/templates/.github/agents/bmad-agent-skeptic.md +0 -16
- package/install/templates/.github/agents/bmad-agent-tao.md +0 -14
- package/install/templates/.github/agents/bmad-agent-tea-tea.md +0 -16
- package/install/templates/.github/agents/bmad-agent-test-dynamic.md +0 -22
- package/install/templates/.github/agents/bmad-agent-yanstaller-interview.md +0 -50
- package/install/templates/.github/agents/bmad-agent-yanstaller-phase2.md +0 -189
- package/install/templates/.github/agents/bmad-agent-yanstaller.md +0 -350
- package/install/templates/.github/agents/expert-merise-agile.md +0 -178
- package/install/templates/.github/agents/franck.md +0 -379
- package/install/templates/.github/agents/hermes.md +0 -575
- package/install/templates/.github/extensions/byan-staging/extension.mjs +0 -169
- package/install/templates/.github/extensions/byan-staging/package.json +0 -8
- package/install/templates/_byan/agent/marc/marc-soul.md +0 -47
- package/install/templates/_byan/agent/marc/marc-tao.md +0 -77
- package/install/templates/_byan/agent/marc/marc.md +0 -324
- package/install/templates/_byan/agent/marc-flat/marc.md +0 -387
- package/install/templates/_byan/mcp/byan-mcp-server/lib/copilot.js +0 -148
- package/install/templates/_byan/worker/launchers/launch-yanstaller-copilot.md +0 -173
- package/install/templates/workers/cost-optimizer.js +0 -169
- package/src/byan-v2/context/copilot-context.js +0 -79
- package/src/core/dispatcher/execution-router.js +0 -66
|
@@ -508,7 +508,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
508
508
|
**Specialite** : Exposer les agents BYAN comme outils MCP dans Claude Desktop via claude_desktop_config.json — la couche d'integration native Anthropic que personne d'autre ne couvre.
|
|
509
509
|
|
|
510
510
|
**Mes complementaires directs** :
|
|
511
|
-
- `@marc` — en miroir : Claude couvre Claude Code/MCP, Marc couvre GitHub Copilot CLI
|
|
512
511
|
- `@codex` — en miroir : Claude couvre MCP/stdio, Codex couvre OpenCode/.codex/prompts/
|
|
513
512
|
- `@rachid` — en amont : Rachid deploie le package npm, Claude integre ensuite dans Claude Desktop
|
|
514
513
|
|
|
@@ -518,6 +517,5 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
518
517
|
- Diagnostiquer pourquoi les outils BYAN n'apparaissent pas dans Claude Code
|
|
519
518
|
|
|
520
519
|
**Quand NE PAS m'invoquer** :
|
|
521
|
-
- Pour l'integration GitHub Copilot CLI (.github/agents/) → preferer `@marc`
|
|
522
520
|
- Pour l'integration OpenCode/Codex (.codex/prompts/) → preferer `@codex`
|
|
523
521
|
|
|
@@ -414,7 +414,6 @@ codex skill bmad-${agentName}
|
|
|
414
414
|
|
|
415
415
|
**Mes complementaires directs** :
|
|
416
416
|
- `@claude` — en miroir : Codex couvre OpenCode, Claude couvre Claude Code/MCP
|
|
417
|
-
- `@marc` — en miroir : Codex couvre Codex/OpenCode, Marc couvre GitHub Copilot CLI
|
|
418
417
|
- `@rachid` — en amont : Rachid publie le package, Codex genere les stubs skills
|
|
419
418
|
|
|
420
419
|
**Quand m'invoquer** :
|
|
@@ -424,5 +423,4 @@ codex skill bmad-${agentName}
|
|
|
424
423
|
|
|
425
424
|
**Quand NE PAS m'invoquer** :
|
|
426
425
|
- Pour l'integration Claude Code/MCP → preferer `@claude`
|
|
427
|
-
- Pour l'integration GitHub Copilot CLI → preferer `@marc`
|
|
428
426
|
|
|
@@ -64,11 +64,10 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
64
64
|
BYAN Installation Requirements:
|
|
65
65
|
- Create _byan/ directory structure
|
|
66
66
|
- Install bmb module (BYAN Module)
|
|
67
|
-
- Copy all agents: byan.md, rachid.md
|
|
67
|
+
- Copy all agents: byan.md, rachid.md
|
|
68
68
|
- Copy all workflows to _byan/workflow/simple/byan/
|
|
69
69
|
- Copy templates and data files
|
|
70
70
|
- Create config.yaml with user preferences
|
|
71
|
-
- Install in .github/agents/ for Copilot CLI detection
|
|
72
71
|
- Validate all files are present
|
|
73
72
|
</byan_deployment>
|
|
74
73
|
|
|
@@ -122,7 +121,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
122
121
|
- Create _byan directory structure
|
|
123
122
|
- Copy all BYAN files
|
|
124
123
|
- Generate config.yaml
|
|
125
|
-
- Install .github/agents files
|
|
126
124
|
- Validate installation
|
|
127
125
|
</capability>
|
|
128
126
|
|
|
@@ -130,12 +128,8 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
130
128
|
Check required paths:
|
|
131
129
|
- {project-root}/_byan/agent/byan/byan.md
|
|
132
130
|
- {project-root}/_byan/agent/rachid/rachid.md
|
|
133
|
-
- {project-root}/_byan/agent/marc/marc.md
|
|
134
131
|
- {project-root}/_byan/bmb/config.yaml
|
|
135
132
|
- {project-root}/_byan/workflow/simple/byan/
|
|
136
|
-
- {project-root}/.github/agents/bmad-agent-byan.md
|
|
137
|
-
- {project-root}/.github/agents/bmad-agent-rachid.md
|
|
138
|
-
- {project-root}/.github/agents/bmad-agent-marc.md
|
|
139
133
|
</capability>
|
|
140
134
|
|
|
141
135
|
<capability name="fix_dependencies">
|
|
@@ -177,7 +171,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
177
171
|
- All workflows complete
|
|
178
172
|
- config.yaml valid YAML
|
|
179
173
|
- Templates and data exist
|
|
180
|
-
- .github/agents populated
|
|
181
174
|
</check>
|
|
182
175
|
</validation>
|
|
183
176
|
</agent>
|
|
@@ -191,7 +184,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
191
184
|
|
|
192
185
|
**Mes complementaires directs** :
|
|
193
186
|
- `@patnote` — en aval : Rachid publie, Patnote applique la mise a jour cote utilisateur
|
|
194
|
-
- `@marc` — en aval : Rachid deploie le package, Marc configure les stubs Copilot CLI
|
|
195
187
|
- `@claude` — en aval : Rachid deploie, Claude integre dans Claude Desktop via MCP
|
|
196
188
|
|
|
197
189
|
**Quand m'invoquer** :
|
|
@@ -201,5 +193,5 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
201
193
|
|
|
202
194
|
**Quand NE PAS m'invoquer** :
|
|
203
195
|
- Pour mettre a jour une installation existante avec gestion des conflits → preferer `@patnote`
|
|
204
|
-
- Pour l'integration plateforme post-installation → preferer `@
|
|
196
|
+
- Pour l'integration plateforme post-installation → preferer `@claude` ou `@codex`
|
|
205
197
|
|
|
@@ -77,11 +77,10 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
77
77
|
BYAN Installation Requirements:
|
|
78
78
|
- Create _byan/ directory structure
|
|
79
79
|
- Install bmb module (BYAN Module)
|
|
80
|
-
- Copy all agents: byan.md, rachid.md
|
|
80
|
+
- Copy all agents: byan.md, rachid.md
|
|
81
81
|
- Copy all workflows to _byan/workflow/simple/byan/
|
|
82
82
|
- Copy templates and data files
|
|
83
83
|
- Create config.yaml with user preferences
|
|
84
|
-
- Install in .github/agents/ for Copilot CLI detection
|
|
85
84
|
- Validate all files are present
|
|
86
85
|
</byan_deployment>
|
|
87
86
|
|
|
@@ -135,7 +134,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
135
134
|
- Create _byan directory structure
|
|
136
135
|
- Copy all BYAN files
|
|
137
136
|
- Generate config.yaml
|
|
138
|
-
- Install .github/agents files
|
|
139
137
|
- Validate installation
|
|
140
138
|
</capability>
|
|
141
139
|
|
|
@@ -143,12 +141,8 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
143
141
|
Check required paths:
|
|
144
142
|
- {project-root}/_byan/agent/byan/byan.md
|
|
145
143
|
- {project-root}/_byan/agent/rachid/rachid.md
|
|
146
|
-
- {project-root}/_byan/agent/marc/marc.md
|
|
147
144
|
- {project-root}/_byan/config.yaml
|
|
148
145
|
- {project-root}/_byan/workflow/simple/byan/
|
|
149
|
-
- {project-root}/.github/agents/bmad-agent-byan.md
|
|
150
|
-
- {project-root}/.github/agents/bmad-agent-rachid.md
|
|
151
|
-
- {project-root}/.github/agents/bmad-agent-marc.md
|
|
152
146
|
</capability>
|
|
153
147
|
|
|
154
148
|
<capability name="fix_dependencies">
|
|
@@ -190,7 +184,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
190
184
|
- All workflows complete
|
|
191
185
|
- config.yaml valid YAML
|
|
192
186
|
- Templates and data exist
|
|
193
|
-
- .github/agents populated
|
|
194
187
|
</check>
|
|
195
188
|
</validation>
|
|
196
189
|
</agent>
|
|
@@ -199,12 +192,11 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
199
192
|
## Mon role dans l'equipe BYAN
|
|
200
193
|
|
|
201
194
|
**Persona** : RACHID — NPM/NPX Deployment Specialist
|
|
202
|
-
**Frequence** : Specialiste du dernier kilometre — "Premier moment de verite.", "Sur les
|
|
195
|
+
**Frequence** : Specialiste du dernier kilometre — "Premier moment de verite.", "Sur les 2 plateformes ?", "Dependance justifiee ?", diagnostic cross-platform Linux/macOS/Windows
|
|
203
196
|
**Specialite** : Seul agent maitrisantle pipeline npm complet — de `npm init` a `npm publish` en passant par le pattern `create-*` qui rend `npx create-byan-agent` fonctionnel et magique
|
|
204
197
|
|
|
205
198
|
**Mes complementaires directs** :
|
|
206
199
|
- `@yanstaller` — en parallele : yanstaller orchestre l'installation multi-plateforme, rachid gere le package npm sous-jacent
|
|
207
|
-
- `@marc` — en parallele : marc installe dans Copilot CLI, rachid publie le package qui permet cet install
|
|
208
200
|
- `@byan` — avant moi : byan cree les agents, moi je les emballe et les distribue via npm
|
|
209
201
|
|
|
210
202
|
**Quand m'invoquer** :
|
|
@@ -215,5 +207,4 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
215
207
|
|
|
216
208
|
**Quand NE PAS m'invoquer** :
|
|
217
209
|
- Pour installer BYAN sur une machine specifique → preferer `@yanstaller`
|
|
218
|
-
- Pour configurer les stubs Copilot CLI → preferer `@marc`
|
|
219
210
|
- Pour creer ou modifier le contenu des agents → preferer `@byan`
|
|
@@ -46,7 +46,7 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
46
46
|
<identity>
|
|
47
47
|
Expert guide for Turbo Whisper integration with BYAN v2. Seamlessly enables voice-driven
|
|
48
48
|
agent interactions. Specialized in cross-platform setup (Linux/macOS/Windows), self-hosted
|
|
49
|
-
faster-whisper-server deployment, and platform integration (
|
|
49
|
+
faster-whisper-server deployment, and platform integration (Claude Code, Codex).
|
|
50
50
|
Integrated directly into BYAN v2 architecture via VoiceIntegration module.
|
|
51
51
|
</identity>
|
|
52
52
|
|
|
@@ -213,7 +213,7 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
213
213
|
This agent provides:
|
|
214
214
|
✓ Guided installation (yanstall wizard)
|
|
215
215
|
✓ Self-hosted server setup (Docker)
|
|
216
|
-
✓ Platform integration (
|
|
216
|
+
✓ Platform integration (Claude/Codex)
|
|
217
217
|
✓ Configuration management
|
|
218
218
|
✓ Troubleshooting tools
|
|
219
219
|
|
|
@@ -298,7 +298,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
298
298
|
✗ Code snippets
|
|
299
299
|
|
|
300
300
|
PLATFORMS:
|
|
301
|
-
• GitHub Copilot CLI: Works out-of-box
|
|
302
301
|
• Claude Code: Requires hook setup (see [SETUP])
|
|
303
302
|
• Codex: Works out-of-box
|
|
304
303
|
|
|
@@ -341,7 +340,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
341
340
|
**Mes complementaires directs** :
|
|
342
341
|
- `@yanstaller` — en parallele : yanstaller orchestre l'install globale, turbo-whisper gere la couche voix optionnelle
|
|
343
342
|
- `@byan` — en aval : les interviews BYAN beneficient de la saisie vocale une fois turbo-whisper actif
|
|
344
|
-
- `@marc` — en parallele pour la configuration des hooks CLI specifiques a Copilot
|
|
345
343
|
|
|
346
344
|
**Quand m'invoquer** :
|
|
347
345
|
- "Active la reconnaissance vocale dans BYAN"
|
|
@@ -351,5 +349,4 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
351
349
|
|
|
352
350
|
**Quand NE PAS m'invoquer** :
|
|
353
351
|
- Pour installer BYAN sans la couche voix → preferer `@yanstaller`
|
|
354
|
-
- Pour integrer Copilot CLI sans voix → preferer `@marc`
|
|
355
352
|
- Pour configurer d'autres intégrations externes → preferer `@yanstaller`
|
package/install/templates/_byan/agent/turbo-whisper-integration/turbo-whisper-integration.md
CHANGED
|
@@ -40,7 +40,7 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
40
40
|
|
|
41
41
|
<identity>
|
|
42
42
|
Expert in Turbo Whisper integration for BMAD platform. Seamlessly connects voice dictation
|
|
43
|
-
with
|
|
43
|
+
with Claude Code and Codex. Enables hands-free interaction with AI agents.
|
|
44
44
|
Cross-platform specialist (Linux/macOS/Windows). Prioritizes self-hosted solutions for privacy
|
|
45
45
|
and cost efficiency.
|
|
46
46
|
</identity>
|
|
@@ -71,7 +71,7 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
71
71
|
• Turbo Whisper architecture (OpenAI Whisper, faster-whisper-server, HTTP server on :7878)
|
|
72
72
|
• Cross-platform installation (apt/pacman/brew/pip, yanstall wizard integration)
|
|
73
73
|
• Docker containerization (GPU/CPU modes, model selection, persistent cache)
|
|
74
|
-
• Platform integration (
|
|
74
|
+
• Platform integration (Claude Code hooks, Codex)
|
|
75
75
|
• Hotkey management (global shortcuts, conflict detection, custom bindings)
|
|
76
76
|
• Audio pipeline debugging (PyAudio, PortAudio, permissions, latency)
|
|
77
77
|
• Node.js/npm ecosystem integration
|
|
@@ -149,11 +149,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
149
149
|
</self_hosted_whisper>
|
|
150
150
|
|
|
151
151
|
<platform_integration>
|
|
152
|
-
**GitHub Copilot CLI:**
|
|
153
|
-
- Works out-of-box with auto-type
|
|
154
|
-
- Press hotkey, speak, text typed into terminal
|
|
155
|
-
- No special configuration needed
|
|
156
|
-
|
|
157
152
|
**Claude Code (Experimental):**
|
|
158
153
|
- Requires post-response hook
|
|
159
154
|
- Hook location: ~/.claude/hooks/post-response.sh
|
|
@@ -236,7 +231,7 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
236
231
|
<item cmd="CH">[CH] Chat with Turbo Whisper Integration Specialist</item>
|
|
237
232
|
<item cmd="INST" exec="{project-root}/_byan/workflow/simple/turbo-whisper/install-workflow.md">[INST] Install Turbo Whisper (yanstall wizard)</item>
|
|
238
233
|
<item cmd="CONF" exec="{project-root}/_byan/workflow/simple/turbo-whisper/configure-workflow.md">[CONF] Configure API & Hotkeys</item>
|
|
239
|
-
<item cmd="INT" exec="{project-root}/_byan/workflow/simple/turbo-whisper/integrate-workflow.md">[INT] Integrate with Platforms (
|
|
234
|
+
<item cmd="INT" exec="{project-root}/_byan/workflow/simple/turbo-whisper/integrate-workflow.md">[INT] Integrate with Platforms (Claude/Codex)</item>
|
|
240
235
|
<item cmd="TEST" exec="{project-root}/_byan/workflow/simple/turbo-whisper/test-workflow.md">[TEST] Test Voice Integration</item>
|
|
241
236
|
<item cmd="TROUB" exec="{project-root}/_byan/workflow/simple/turbo-whisper/troubleshoot-workflow.md">[TROUB] Troubleshoot Issues</item>
|
|
242
237
|
<item cmd="STATUS">[STATUS] Show Installation Status</item>
|
|
@@ -259,7 +254,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
259
254
|
</cap>
|
|
260
255
|
|
|
261
256
|
<cap id="platform-integration">
|
|
262
|
-
Configure GitHub Copilot CLI voice input (auto-type mode).
|
|
263
257
|
Setup Claude Code post-response hooks for synchronization.
|
|
264
258
|
Integrate with Codex platform.
|
|
265
259
|
Test cross-platform compatibility.
|
|
@@ -315,19 +309,17 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
315
309
|
|
|
316
310
|
**Persona** : TurboWhisperIntegration — Voice Dictation Integration Specialist
|
|
317
311
|
**Frequence** : Specialiste voix cross-platform qui confirme l'OS avant de suggerer une commande — un setup audio rate est invisible jusqu'au moment critique.
|
|
318
|
-
**Specialite** : Integrer Turbo Whisper (faster-whisper-server) avec
|
|
312
|
+
**Specialite** : Integrer Turbo Whisper (faster-whisper-server) avec Claude Code et Codex pour une dictee vocale hands-free — le seul agent qui couvre la couche audio de la plateforme.
|
|
319
313
|
|
|
320
314
|
**Mes complementaires directs** :
|
|
321
315
|
- `@claude` — en aval : Turbo Whisper configure le hook post-response, Claude est la cible de l'integration
|
|
322
|
-
- `@marc` — en parallele : Marc gere l'integration Copilot CLI, Turbo Whisper branche la voix dessus
|
|
323
316
|
- `@rachid` — en amont : Rachid installe BYAN via npm, Turbo Whisper etend avec la couche vocale
|
|
324
317
|
|
|
325
318
|
**Quand m'invoquer** :
|
|
326
319
|
- Installer et configurer Turbo Whisper sur Linux, macOS ou Windows
|
|
327
|
-
- Integrer la dictee vocale avec
|
|
320
|
+
- Integrer la dictee vocale avec Claude Code ou Codex
|
|
328
321
|
- Diagnostiquer des problemes audio (PyAudio, hotkeys, Docker GPU)
|
|
329
322
|
|
|
330
323
|
**Quand NE PAS m'invoquer** :
|
|
331
324
|
- Pour l'integration Claude Code sans voix (MCP, config) → preferer `@claude`
|
|
332
|
-
- Pour l'integration Copilot CLI sans voix → preferer `@marc`
|
|
333
325
|
|
|
@@ -61,20 +61,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
61
61
|
|
|
62
62
|
<knowledge_base>
|
|
63
63
|
<platform_detection>
|
|
64
|
-
<platform id="copilot-cli">
|
|
65
|
-
<name>GitHub Copilot CLI</name>
|
|
66
|
-
<detect_command>which copilot</detect_command>
|
|
67
|
-
<detect_fallback>test -d ~/.config/copilot</detect_fallback>
|
|
68
|
-
<install_path>.github/agents/</install_path>
|
|
69
|
-
<agent_format>bmad-agent-{name}.md</agent_format>
|
|
70
|
-
<sdk_url>https://github.com/github/copilot-sdk</sdk_url>
|
|
71
|
-
<features>
|
|
72
|
-
• @workspace, @terminal commands
|
|
73
|
-
• Extensions support
|
|
74
|
-
• Native CLI integration
|
|
75
|
-
</features>
|
|
76
|
-
</platform>
|
|
77
|
-
|
|
78
64
|
<platform id="codex">
|
|
79
65
|
<name>OpenAI Codex</name>
|
|
80
66
|
<detect_command>test -d .codex</detect_command>
|
|
@@ -161,7 +147,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
161
147
|
<capabilities>
|
|
162
148
|
<capability name="detect_platforms">
|
|
163
149
|
Scan system for installed AI platforms:
|
|
164
|
-
• Copilot CLI: which copilot || test -d ~/.config/copilot
|
|
165
150
|
• Codex: test -d .codex || test -f .codex/config.json
|
|
166
151
|
• Claude Code: which claude || test -d ~/.config/claude
|
|
167
152
|
|
|
@@ -188,7 +173,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
188
173
|
|
|
189
174
|
<capability name="install_platform_agents">
|
|
190
175
|
Install agents for detected platforms:
|
|
191
|
-
• Copilot CLI → .github/agents/bmad-agent-*.md
|
|
192
176
|
• Codex → .codex/prompts/*.md
|
|
193
177
|
• Claude Code → .claude/agents/*.yaml
|
|
194
178
|
|
|
@@ -215,7 +199,7 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
215
199
|
• Skip prompts
|
|
216
200
|
• Log progress clearly
|
|
217
201
|
|
|
218
|
-
Example:
|
|
202
|
+
Example: claude agent yanstaller "install"
|
|
219
203
|
</capability>
|
|
220
204
|
|
|
221
205
|
<capability name="validate_installation">
|
|
@@ -338,10 +322,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
338
322
|
<after_installation>
|
|
339
323
|
Display platform-specific commands:
|
|
340
324
|
|
|
341
|
-
GitHub Copilot CLI:
|
|
342
|
-
• copilot --agent=bmad-agent-byan --prompt "help"
|
|
343
|
-
• copilot --agent=bmad-agent-yanstaller --prompt "validate"
|
|
344
|
-
|
|
345
325
|
Codex:
|
|
346
326
|
• codex prompt byan "help"
|
|
347
327
|
|
|
@@ -365,11 +345,10 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
365
345
|
|
|
366
346
|
**Persona** : YANSTALLER — Multi-Platform BYAN Installer
|
|
367
347
|
**Frequence** : Guide accueillant et resilient — "Bienvenue.", "Etape confirmee. Suivante.", "On a un chemin de secours.", jamais "C'est complique", jamais "Debrouille-toi"
|
|
368
|
-
**Specialite** : Seul agent capable de detecter et cibler simultanement
|
|
348
|
+
**Specialite** : Seul agent capable de detecter et cibler simultanement Codex et Claude Code en une passe — detection automatique, installation zero-config, validation post-install sur les plateformes cibles
|
|
369
349
|
|
|
370
350
|
**Mes complementaires directs** :
|
|
371
351
|
- `@rachid` — en parallele : rachid publie le package npm, yanstaller execute l'install locale
|
|
372
|
-
- `@marc` — en aval pour les ajustements Copilot CLI apres l'install initiale
|
|
373
352
|
- `@turbo-whisper` — en aval pour la couche voix optionnelle apres l'install BYAN
|
|
374
353
|
- `@byan` — apres moi : une fois installe, l'utilisateur cree son premier agent avec byan
|
|
375
354
|
|
|
@@ -381,5 +360,4 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
381
360
|
|
|
382
361
|
**Quand NE PAS m'invoquer** :
|
|
383
362
|
- Pour publier ou mettre a jour le package npm → preferer `@rachid`
|
|
384
|
-
- Pour reparer un stub Copilot CLI specifique → preferer `@marc`
|
|
385
363
|
- Pour creer un nouvel agent apres installation → preferer `@byan`
|
|
@@ -158,9 +158,9 @@ L'agent peut invoquer n'importe quel agent specialise :
|
|
|
158
158
|
|
|
159
159
|
Variables de session disponibles apres chargement config :
|
|
160
160
|
- `{project-root}` : Racine du repository
|
|
161
|
-
- `{output_folder}` : Dossier de sortie (`
|
|
162
|
-
- `{planning_artifacts}` : `
|
|
163
|
-
- `{implementation_artifacts}` : `
|
|
161
|
+
- `{output_folder}` : Dossier de sortie (`_byan-output/`)
|
|
162
|
+
- `{planning_artifacts}` : `_byan-output/planning-artifacts/`
|
|
163
|
+
- `{implementation_artifacts}` : `_byan-output/implementation-artifacts/`
|
|
164
164
|
- `{user_name}`, `{communication_language}` : Depuis config.yaml
|
|
165
165
|
|
|
166
166
|
### Orchestration Multi-Agent
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { harvest, renderDigest } from '../lib/insight-harvest.js';
|
|
3
|
+
|
|
4
|
+
// Aggregate native Claude Code outcome trails into a GATED improvement digest.
|
|
5
|
+
// Reads: _byan-output/tool-log.jsonl, .byan-strict/audit.log,
|
|
6
|
+
// _byan-output/suitability-ledger.json, _byan/memoire/elo-profile.json
|
|
7
|
+
// Missing trail -> empty; digest self-disables gracefully.
|
|
8
|
+
//
|
|
9
|
+
// Usage: node bin/byan-insight-digest.js [--root <dir>] [--json]
|
|
10
|
+
|
|
11
|
+
function parseArgs(argv) {
|
|
12
|
+
const args = { json: false };
|
|
13
|
+
for (let i = 2; i < argv.length; i++) {
|
|
14
|
+
if (argv[i] === '--json') args.json = true;
|
|
15
|
+
else if (argv[i] === '--root') args.root = argv[++i];
|
|
16
|
+
}
|
|
17
|
+
return args;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const args = parseArgs(process.argv);
|
|
21
|
+
const root = args.root || process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
22
|
+
|
|
23
|
+
const digest = harvest({ rootDir: root });
|
|
24
|
+
|
|
25
|
+
if (args.json) {
|
|
26
|
+
process.stdout.write(JSON.stringify(digest, null, 2) + '\n');
|
|
27
|
+
} else {
|
|
28
|
+
process.stdout.write(renderDigest(digest) + '\n');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
process.exit(0);
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { syncRules } from '../lib/sync-rules.js';
|
|
2
|
+
import { syncRules, syncAutobench } from '../lib/sync-rules.js';
|
|
3
3
|
|
|
4
4
|
// CLI wrapper for the byan-sync-rules generator.
|
|
5
5
|
// Usage: node bin/byan-sync-rules.js [--root <dir>] [--config <file>]
|
|
6
|
+
//
|
|
7
|
+
// One command regenerates BOTH generated rulesets: strict mode (syncRules) and
|
|
8
|
+
// auto-benchmark (syncAutobench). The --config override applies only to the
|
|
9
|
+
// strict source; the autobench source resolves from its own default path so the
|
|
10
|
+
// two generators stay independent.
|
|
6
11
|
|
|
7
12
|
function parseArgs(argv) {
|
|
8
13
|
const args = {};
|
|
@@ -13,10 +18,21 @@ function parseArgs(argv) {
|
|
|
13
18
|
return args;
|
|
14
19
|
}
|
|
15
20
|
|
|
21
|
+
function printReport(title, report) {
|
|
22
|
+
const lines = Object.entries(report).map(
|
|
23
|
+
([file, action]) => ` ${action.padEnd(9)} ${file}`
|
|
24
|
+
);
|
|
25
|
+
process.stdout.write(`${title}\n${lines.join('\n')}\n`);
|
|
26
|
+
}
|
|
27
|
+
|
|
16
28
|
try {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
29
|
+
const args = parseArgs(process.argv);
|
|
30
|
+
printReport('byan-sync-rules — strict mode artifacts', syncRules(args));
|
|
31
|
+
// Autobench resolves its own source; do not forward the strict --config.
|
|
32
|
+
printReport(
|
|
33
|
+
'byan-sync-rules — auto-benchmark artifacts',
|
|
34
|
+
syncAutobench({ projectRoot: args.projectRoot })
|
|
35
|
+
);
|
|
20
36
|
process.exit(0);
|
|
21
37
|
} catch (err) {
|
|
22
38
|
process.stderr.write(`byan-sync-rules failed: ${err.message}\n`);
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// Advisory auto-feed — the pure planning half of the closed learning loop.
|
|
2
|
+
//
|
|
3
|
+
// BYAN's advisory ledgers (ELO trust, the suitability ledger) only INFORM future
|
|
4
|
+
// decisions; they never override behavior. The open gap was that nothing fed them
|
|
5
|
+
// automatically: the agent had to remember to call a record tool. This loop closes
|
|
6
|
+
// that — outcomes are LOGGED to a buffer during a turn (cheaply, via byan_outcome_log),
|
|
7
|
+
// and a Stop hook DRAINS the buffer into the ledgers at end of turn, with no agent
|
|
8
|
+
// action. Behavior surfaces (routing / personas / mantras) are out of scope: this
|
|
9
|
+
// only writes advisory data.
|
|
10
|
+
//
|
|
11
|
+
// This module is the PURE half (no I/O), so it is exhaustively unit-testable; the
|
|
12
|
+
// Stop hook supplies the buffer text + a cursor and applies the records.
|
|
13
|
+
//
|
|
14
|
+
// Buffer line shapes (jsonl, one outcome per line):
|
|
15
|
+
// { kind: 'elo', domain, result } result: VALIDATED|PARTIAL|BLOCKED
|
|
16
|
+
// { kind: 'suitability', model, leafId, success } success: boolean
|
|
17
|
+
// A line missing required fields or with a bad type is dropped (classifyOutcome -> null),
|
|
18
|
+
// never throwing — a malformed log line must not break the drain.
|
|
19
|
+
|
|
20
|
+
// Parse a jsonl buffer into outcome objects, skipping malformed lines.
|
|
21
|
+
export function parseOutcomes(text) {
|
|
22
|
+
if (!text) return [];
|
|
23
|
+
return text
|
|
24
|
+
.split('\n')
|
|
25
|
+
.filter((l) => l.trim())
|
|
26
|
+
.map((l) => {
|
|
27
|
+
try {
|
|
28
|
+
return JSON.parse(l);
|
|
29
|
+
} catch {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
.filter(Boolean);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Idempotent drain plan keyed on a LINE cursor: everything from `cursor` onward is
|
|
37
|
+
// pending; the new cursor is the full length. A re-fired Stop with no new lines
|
|
38
|
+
// yields an empty `pending`, so an outcome is recorded at most once.
|
|
39
|
+
export function planDrain(outcomes, cursor = 0) {
|
|
40
|
+
const safeCursor = Number.isInteger(cursor) && cursor >= 0 ? cursor : 0;
|
|
41
|
+
const start = Math.min(safeCursor, outcomes.length);
|
|
42
|
+
return { pending: outcomes.slice(start), newCursor: outcomes.length };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// The ELO engine's result vocabulary. The MCP/skill vocabulary uses PARTIAL; the
|
|
46
|
+
// engine uses PARTIALLY_VALID. classifyOutcome normalizes to the engine form.
|
|
47
|
+
const ELO_RESULTS = new Set(['VALIDATED', 'PARTIALLY_VALID', 'BLOCKED']);
|
|
48
|
+
function normalizeEloResult(r) {
|
|
49
|
+
if (r === 'PARTIAL') return 'PARTIALLY_VALID';
|
|
50
|
+
return r;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Validate + normalize one buffer outcome into a record intent, or null if invalid.
|
|
54
|
+
// elo -> { kind: 'elo', domain, result } (result in ELO_RESULTS)
|
|
55
|
+
// suitability -> { kind: 'suitability', model, leafId, success } (success boolean)
|
|
56
|
+
export function classifyOutcome(o) {
|
|
57
|
+
if (!o || typeof o !== 'object') return null;
|
|
58
|
+
if (o.kind === 'elo') {
|
|
59
|
+
const domain = typeof o.domain === 'string' ? o.domain.trim() : '';
|
|
60
|
+
const result = normalizeEloResult(o.result);
|
|
61
|
+
if (!domain || !ELO_RESULTS.has(result)) return null;
|
|
62
|
+
return { kind: 'elo', domain, result };
|
|
63
|
+
}
|
|
64
|
+
if (o.kind === 'suitability') {
|
|
65
|
+
const model = typeof o.model === 'string' ? o.model.trim() : '';
|
|
66
|
+
const leafId = typeof o.leafId === 'string' ? o.leafId.trim() : '';
|
|
67
|
+
if (!model || !leafId || typeof o.success !== 'boolean') return null;
|
|
68
|
+
return { kind: 'suitability', model, leafId, success: o.success };
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Validate an outcome BEFORE it is appended to the buffer (used by byan_outcome_log).
|
|
74
|
+
// Returns the canonical line object to write, or null if the input is not a valid
|
|
75
|
+
// outcome. Keyed on the same rules as classifyOutcome so the buffer only ever holds
|
|
76
|
+
// drainable lines.
|
|
77
|
+
export function validateForLog(input) {
|
|
78
|
+
const rec = classifyOutcome(input);
|
|
79
|
+
if (!rec) return null;
|
|
80
|
+
return rec.kind === 'elo'
|
|
81
|
+
? { kind: 'elo', domain: rec.domain, result: rec.result }
|
|
82
|
+
: { kind: 'suitability', model: rec.model, leafId: rec.leafId, success: rec.success };
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// C3 — the ELO outcome line for a completed strict session. PURE (no I/O): a
|
|
86
|
+
// completed session that carried an EXPLICIT domain is a VALIDATED outcome.
|
|
87
|
+
// Returns the validated buffer line, or null when there is no domain (so abort
|
|
88
|
+
// and no-domain feed nothing). The caller (the byan_strict_complete handler)
|
|
89
|
+
// appends the returned line. The domain is the user's explicit lock_scope input,
|
|
90
|
+
// never inferred from text. Shared by the handler AND its test so the two cannot
|
|
91
|
+
// drift (no hand-copied replica).
|
|
92
|
+
export function eloOutcomeForStrictComplete(completeResult) {
|
|
93
|
+
const domain = completeResult && completeResult.domain;
|
|
94
|
+
if (!domain) return null;
|
|
95
|
+
return validateForLog({ kind: 'elo', domain, result: 'VALIDATED' });
|
|
96
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
//
|
|
3
3
|
// Produces _byan/INDEX.md — a human- and agent-readable map of the platform,
|
|
4
4
|
// derived from the machine-source manifests (_byan/_config/*-manifest.csv) plus
|
|
5
|
-
// a scan of the project zone (_byan/projet/*). Claude Code
|
|
5
|
+
// a scan of the project zone (_byan/projet/*). Claude Code and Codex
|
|
6
6
|
// read this instead of walking the whole file system.
|
|
7
7
|
//
|
|
8
8
|
// Manifest-driven by design: the index reflects whatever the manifests declare,
|