elsabro 5.2.0 → 6.0.1
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/agents/elsabro-executor.md +25 -0
- package/agents/elsabro-planner.md +10 -0
- package/bin/install.js +8 -4
- package/commands/elsabro/execute.md +156 -3
- package/commands/elsabro/plan.md +32 -0
- package/commands/elsabro/quick.md +21 -0
- package/commands/elsabro/verify-work.md +29 -0
- package/flow-engine/package.json +13 -0
- package/flow-engine/src/checkpoint.js +112 -0
- package/flow-engine/src/executors.js +406 -0
- package/flow-engine/src/graph.js +129 -0
- package/flow-engine/src/index.js +137 -0
- package/flow-engine/src/runner.js +184 -0
- package/flow-engine/src/template.js +290 -0
- package/flow-engine/tests/executors-complex.test.js +300 -0
- package/flow-engine/tests/executors.test.js +326 -0
- package/flow-engine/tests/graph.test.js +161 -0
- package/flow-engine/tests/integration.test.js +251 -0
- package/flow-engine/tests/runner.test.js +289 -0
- package/flow-engine/tests/template.test.js +272 -0
- package/flows/development-flow.json +134 -1
- package/package.json +4 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "development_flow",
|
|
3
3
|
"name": "Standard Development Flow",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.3.0",
|
|
5
5
|
"description": "Workflow completo para desarrollar features con quality gates",
|
|
6
6
|
|
|
7
7
|
"config": {
|
|
@@ -12,6 +12,18 @@
|
|
|
12
12
|
"errorPolicy": "quorum"
|
|
13
13
|
},
|
|
14
14
|
|
|
15
|
+
"sync_metadata": {
|
|
16
|
+
"last_audit": "2026-02-07",
|
|
17
|
+
"audit_result": {
|
|
18
|
+
"total_nodes": 42,
|
|
19
|
+
"implemented": 19,
|
|
20
|
+
"partial": 3,
|
|
21
|
+
"not_implemented": 20,
|
|
22
|
+
"implementation_rate": "52%"
|
|
23
|
+
},
|
|
24
|
+
"note": "runtime_status fields added to every node. not_implemented nodes are aspirational features planned for M3 (v6.0.0). Do not delete them."
|
|
25
|
+
},
|
|
26
|
+
|
|
15
27
|
"inputs": {
|
|
16
28
|
"task": { "type": "string", "required": true, "description": "Descripción de la tarea" },
|
|
17
29
|
"complexity": { "type": "enum", "values": ["low", "medium", "high"], "default": "medium" },
|
|
@@ -31,6 +43,8 @@
|
|
|
31
43
|
{
|
|
32
44
|
"id": "start",
|
|
33
45
|
"type": "entry",
|
|
46
|
+
"runtime_status": "implemented",
|
|
47
|
+
"implemented_in": "commands/elsabro/execute.md#state_sync",
|
|
34
48
|
"next": "skill_discovery"
|
|
35
49
|
},
|
|
36
50
|
|
|
@@ -38,6 +52,8 @@
|
|
|
38
52
|
"id": "skill_discovery",
|
|
39
53
|
"type": "sequence",
|
|
40
54
|
"description": "Descubrir skills necesarios antes de cargar contexto",
|
|
55
|
+
"runtime_status": "implemented",
|
|
56
|
+
"implemented_in": "commands/elsabro/execute.md#skill_discovery + commands/elsabro/execute.md#skill_injection",
|
|
41
57
|
"errorPolicy": "continue",
|
|
42
58
|
"steps": [
|
|
43
59
|
{
|
|
@@ -60,6 +76,8 @@
|
|
|
60
76
|
"id": "load_context",
|
|
61
77
|
"type": "sequence",
|
|
62
78
|
"description": "Cargar contexto del proyecto",
|
|
79
|
+
"runtime_status": "implemented",
|
|
80
|
+
"implemented_in": "commands/elsabro/execute.md#state_sync",
|
|
63
81
|
"steps": [
|
|
64
82
|
{
|
|
65
83
|
"action": "read_files",
|
|
@@ -86,6 +104,9 @@
|
|
|
86
104
|
"id": "profile_router",
|
|
87
105
|
"type": "router",
|
|
88
106
|
"description": "Enrutar según perfil seleccionado",
|
|
107
|
+
"runtime_status": "partial",
|
|
108
|
+
"implemented_in": ".elsabro/state.json (profile field)",
|
|
109
|
+
"gaps": ["Routing is implicit — Claude reads profile from state.json, not via a router node. No formal routing logic exists."],
|
|
89
110
|
"condition": "{{inputs.profile}}",
|
|
90
111
|
"routes": {
|
|
91
112
|
"yolo": "interview_yolo",
|
|
@@ -101,6 +122,9 @@
|
|
|
101
122
|
"id": "interview_yolo",
|
|
102
123
|
"type": "agent",
|
|
103
124
|
"description": "Quick Interview: 3 preguntas rápidas antes de ejecutar en modo yolo",
|
|
125
|
+
"runtime_status": "not_implemented",
|
|
126
|
+
"implemented_in": null,
|
|
127
|
+
"gaps": ["No interview command exists. M3: wire to start.md or inline interview step."],
|
|
104
128
|
"agent": "elsabro-analyst",
|
|
105
129
|
"config": { "model": "haiku", "timeout": 300000 },
|
|
106
130
|
"inputs": {
|
|
@@ -119,6 +143,9 @@
|
|
|
119
143
|
"id": "yolo_execute",
|
|
120
144
|
"type": "agent",
|
|
121
145
|
"description": "Ejecución rápida sin ceremony",
|
|
146
|
+
"runtime_status": "not_implemented",
|
|
147
|
+
"implemented_in": null,
|
|
148
|
+
"gaps": ["quick.md covers this implicitly but no formal yolo path exists. M3: wire quick.md as yolo execution path."],
|
|
122
149
|
"agent": "elsabro-yolo-dev",
|
|
123
150
|
"config": { "model": "opus", "timeout": 600000 },
|
|
124
151
|
"inputs": {
|
|
@@ -132,6 +159,10 @@
|
|
|
132
159
|
{
|
|
133
160
|
"id": "quick_verify",
|
|
134
161
|
"type": "agent",
|
|
162
|
+
"description": "Verificación rápida post-yolo",
|
|
163
|
+
"runtime_status": "not_implemented",
|
|
164
|
+
"implemented_in": null,
|
|
165
|
+
"gaps": ["quick.md code_review_gate covers this implicitly. M3: wire to quick.md verification path."],
|
|
135
166
|
"agent": "elsabro-verifier",
|
|
136
167
|
"config": { "model": "haiku", "timeout": 120000 },
|
|
137
168
|
"next": "verify_check"
|
|
@@ -141,6 +172,9 @@
|
|
|
141
172
|
"id": "interview_careful",
|
|
142
173
|
"type": "agent",
|
|
143
174
|
"description": "Deep Interview: 3+ preguntas exhaustivas sobre requisitos, riesgos y constraints",
|
|
175
|
+
"runtime_status": "not_implemented",
|
|
176
|
+
"implemented_in": null,
|
|
177
|
+
"gaps": ["No interview command exists. M3: wire to start.md or inline interview step."],
|
|
144
178
|
"agent": "elsabro-analyst",
|
|
145
179
|
"config": { "model": "opus", "timeout": 600000 },
|
|
146
180
|
"inputs": {
|
|
@@ -159,6 +193,9 @@
|
|
|
159
193
|
"id": "careful_analyze",
|
|
160
194
|
"type": "sequence",
|
|
161
195
|
"description": "Análisis exhaustivo para modo careful",
|
|
196
|
+
"runtime_status": "not_implemented",
|
|
197
|
+
"implemented_in": null,
|
|
198
|
+
"gaps": ["No careful-specific analysis path exists in command files. M3: create careful profile execution path."],
|
|
162
199
|
"steps": [
|
|
163
200
|
{ "agent": "elsabro-analyst", "as": "requirements", "model": "opus", "inputs": { "interview_context": "{{nodes.interview_careful.outputs.interview_summary}}" } },
|
|
164
201
|
{ "agent": "elsabro-analyst", "as": "risks", "model": "opus" },
|
|
@@ -170,6 +207,10 @@
|
|
|
170
207
|
{
|
|
171
208
|
"id": "interrupt_plan_approval",
|
|
172
209
|
"type": "interrupt",
|
|
210
|
+
"description": "Plan requires approval in careful mode",
|
|
211
|
+
"runtime_status": "not_implemented",
|
|
212
|
+
"implemented_in": null,
|
|
213
|
+
"gaps": ["No manual approval step exists in command files. M3: could wire to AskUserQuestion."],
|
|
173
214
|
"reason": "Plan requires approval in careful mode",
|
|
174
215
|
"display": {
|
|
175
216
|
"title": "📋 Plan de Implementación",
|
|
@@ -192,6 +233,9 @@
|
|
|
192
233
|
"id": "interview_teams",
|
|
193
234
|
"type": "agent",
|
|
194
235
|
"description": "Team Interview: 3 preguntas sobre prioridades, coordinación y deadline",
|
|
236
|
+
"runtime_status": "not_implemented",
|
|
237
|
+
"implemented_in": null,
|
|
238
|
+
"gaps": ["No interview command exists. M3: wire to start.md or inline interview step."],
|
|
195
239
|
"agent": "elsabro-analyst",
|
|
196
240
|
"config": { "model": "opus", "timeout": 600000 },
|
|
197
241
|
"inputs": {
|
|
@@ -210,6 +254,9 @@
|
|
|
210
254
|
"id": "teams_spawn",
|
|
211
255
|
"type": "team",
|
|
212
256
|
"description": "Crear Agent Team para coordinación peer-to-peer",
|
|
257
|
+
"runtime_status": "not_implemented",
|
|
258
|
+
"implemented_in": null,
|
|
259
|
+
"gaps": ["Deprecated — Agent Teams now handled inline via IMPERATIVO_AGENT_TEAMS in execute.md. This node's architecture (separate teams profile) was superseded in M2.5."],
|
|
213
260
|
"config": {
|
|
214
261
|
"team_name": "elsabro-{{inputs.task | slugify}}",
|
|
215
262
|
"description": "Agent Teams para: {{inputs.task}}. Contexto de entrevista: {{nodes.interview_teams.outputs.interview_summary}}"
|
|
@@ -274,6 +321,10 @@
|
|
|
274
321
|
{
|
|
275
322
|
"id": "interrupt_teams_failed",
|
|
276
323
|
"type": "interrupt",
|
|
324
|
+
"description": "Agent Team creation or execution failed",
|
|
325
|
+
"runtime_status": "not_implemented",
|
|
326
|
+
"implemented_in": null,
|
|
327
|
+
"gaps": ["Deprecated — teams_spawn architecture superseded. Error handling for Agent Teams now in execute.md#error_handling."],
|
|
277
328
|
"reason": "Agent Team creation or execution failed",
|
|
278
329
|
"display": {
|
|
279
330
|
"title": "⚠️ Agent Team Falló",
|
|
@@ -296,6 +347,9 @@
|
|
|
296
347
|
"id": "bmad_interview_analysis",
|
|
297
348
|
"type": "agent",
|
|
298
349
|
"description": "BMAD Interview 1: Entrevistar al usuario antes de generar PRD - mínimo 3 preguntas sobre usuarios, problema y funcionalidades",
|
|
350
|
+
"runtime_status": "not_implemented",
|
|
351
|
+
"implemented_in": null,
|
|
352
|
+
"gaps": ["BMAD interviews not wired in any command file. M3: create BMAD command path with interview steps."],
|
|
299
353
|
"agent": "elsabro-analyst",
|
|
300
354
|
"config": { "model": "opus", "timeout": 600000 },
|
|
301
355
|
"inputs": {
|
|
@@ -314,6 +368,9 @@
|
|
|
314
368
|
"id": "bmad_analyze",
|
|
315
369
|
"type": "sequence",
|
|
316
370
|
"description": "BMAD Phase 1: Analysis - Generate PRD and Architecture overview",
|
|
371
|
+
"runtime_status": "not_implemented",
|
|
372
|
+
"implemented_in": null,
|
|
373
|
+
"gaps": ["No PRD generation command exists. M3: create BMAD analysis command."],
|
|
317
374
|
"steps": [
|
|
318
375
|
{
|
|
319
376
|
"agent": "elsabro-analyst",
|
|
@@ -346,6 +403,10 @@
|
|
|
346
403
|
{
|
|
347
404
|
"id": "interrupt_prd_approval",
|
|
348
405
|
"type": "interrupt",
|
|
406
|
+
"description": "PRD and Architecture require human approval before planning",
|
|
407
|
+
"runtime_status": "not_implemented",
|
|
408
|
+
"implemented_in": null,
|
|
409
|
+
"gaps": ["No PRD approval flow exists. M3: create BMAD approval interrupt with AskUserQuestion."],
|
|
349
410
|
"reason": "PRD and Architecture require human approval before planning",
|
|
350
411
|
"display": {
|
|
351
412
|
"title": "PRD Review (BMAD)",
|
|
@@ -368,6 +429,9 @@
|
|
|
368
429
|
"id": "bmad_interview_planning",
|
|
369
430
|
"type": "agent",
|
|
370
431
|
"description": "BMAD Interview 2: Entrevistar al usuario antes de planificar stories - mínimo 3 preguntas sobre arquitectura, prioridades e integraciones",
|
|
432
|
+
"runtime_status": "not_implemented",
|
|
433
|
+
"implemented_in": null,
|
|
434
|
+
"gaps": ["BMAD interviews not wired. M3: create BMAD planning interview step."],
|
|
371
435
|
"agent": "elsabro-analyst",
|
|
372
436
|
"config": { "model": "opus", "timeout": 600000 },
|
|
373
437
|
"inputs": {
|
|
@@ -387,6 +451,9 @@
|
|
|
387
451
|
"id": "bmad_plan",
|
|
388
452
|
"type": "sequence",
|
|
389
453
|
"description": "BMAD Phase 2: Planning - Break PRD into stories + human Control Manifest",
|
|
454
|
+
"runtime_status": "not_implemented",
|
|
455
|
+
"implemented_in": null,
|
|
456
|
+
"gaps": ["No story breakdown command exists. M3: create BMAD planning command."],
|
|
390
457
|
"steps": [
|
|
391
458
|
{
|
|
392
459
|
"agent": "elsabro-analyst",
|
|
@@ -408,6 +475,10 @@
|
|
|
408
475
|
{
|
|
409
476
|
"id": "interrupt_manifest",
|
|
410
477
|
"type": "interrupt",
|
|
478
|
+
"description": "Control Manifest needed - human defines constraints before code generation",
|
|
479
|
+
"runtime_status": "not_implemented",
|
|
480
|
+
"implemented_in": null,
|
|
481
|
+
"gaps": ["No manifest flow exists. M3: create BMAD manifest generation with AskUserQuestion."],
|
|
411
482
|
"reason": "Control Manifest needed - human defines constraints before code generation",
|
|
412
483
|
"display": {
|
|
413
484
|
"title": "Control Manifest (BMAD)",
|
|
@@ -428,6 +499,9 @@
|
|
|
428
499
|
"id": "bmad_interview_solution",
|
|
429
500
|
"type": "agent",
|
|
430
501
|
"description": "BMAD Interview 3: Entrevistar al usuario antes de diseñar solución - mínimo 3 preguntas sobre implementación, testing y performance",
|
|
502
|
+
"runtime_status": "not_implemented",
|
|
503
|
+
"implemented_in": null,
|
|
504
|
+
"gaps": ["BMAD interviews not wired. M3: create BMAD solution interview step."],
|
|
431
505
|
"agent": "elsabro-planner",
|
|
432
506
|
"config": { "model": "opus", "timeout": 600000 },
|
|
433
507
|
"inputs": {
|
|
@@ -447,6 +521,9 @@
|
|
|
447
521
|
"id": "bmad_solution",
|
|
448
522
|
"type": "agent",
|
|
449
523
|
"description": "BMAD Phase 3: Solutioning - Technical design per story with ADRs",
|
|
524
|
+
"runtime_status": "not_implemented",
|
|
525
|
+
"implemented_in": null,
|
|
526
|
+
"gaps": ["No solution design command exists. M3: create BMAD solutioning command."],
|
|
450
527
|
"agent": "elsabro-planner",
|
|
451
528
|
"config": { "model": "opus", "timeout": 600000 },
|
|
452
529
|
"inputs": {
|
|
@@ -466,6 +543,10 @@
|
|
|
466
543
|
{
|
|
467
544
|
"id": "interrupt_solution_approval",
|
|
468
545
|
"type": "interrupt",
|
|
546
|
+
"description": "Solution design requires approval before implementation starts",
|
|
547
|
+
"runtime_status": "not_implemented",
|
|
548
|
+
"implemented_in": null,
|
|
549
|
+
"gaps": ["No solution approval flow exists. M3: create BMAD approval interrupt."],
|
|
469
550
|
"reason": "Solution design requires approval before implementation starts",
|
|
470
551
|
"display": {
|
|
471
552
|
"title": "Solution Review (BMAD)",
|
|
@@ -488,6 +569,9 @@
|
|
|
488
569
|
"id": "interview_default",
|
|
489
570
|
"type": "agent",
|
|
490
571
|
"description": "Standard Interview: 3 preguntas balanceadas sobre scope, stack y expectativas",
|
|
572
|
+
"runtime_status": "not_implemented",
|
|
573
|
+
"implemented_in": null,
|
|
574
|
+
"gaps": ["No interview command exists. M3: wire to start.md or inline interview step."],
|
|
491
575
|
"agent": "elsabro-analyst",
|
|
492
576
|
"config": { "model": "opus", "timeout": 600000 },
|
|
493
577
|
"inputs": {
|
|
@@ -506,6 +590,8 @@
|
|
|
506
590
|
"id": "standard_analyze",
|
|
507
591
|
"type": "parallel",
|
|
508
592
|
"description": "Análisis paralelo estándar (4 agentes)",
|
|
593
|
+
"runtime_status": "implemented",
|
|
594
|
+
"implemented_in": "commands/elsabro/execute.md#process (Paso 0)",
|
|
509
595
|
"branches": [
|
|
510
596
|
{
|
|
511
597
|
"id": "explore",
|
|
@@ -541,6 +627,8 @@
|
|
|
541
627
|
"id": "merge_analysis",
|
|
542
628
|
"type": "agent",
|
|
543
629
|
"description": "Consolidar análisis de los 4 agentes",
|
|
630
|
+
"runtime_status": "implemented",
|
|
631
|
+
"implemented_in": "commands/elsabro/execute.md#process (implicit consolidation after Paso 0)",
|
|
544
632
|
"agent": "elsabro-analyst",
|
|
545
633
|
"config": { "model": "opus" },
|
|
546
634
|
"inputs": {
|
|
@@ -558,6 +646,8 @@
|
|
|
558
646
|
"id": "parallel_implementation",
|
|
559
647
|
"type": "parallel",
|
|
560
648
|
"description": "Implementación paralela (2 agentes opus)",
|
|
649
|
+
"runtime_status": "implemented",
|
|
650
|
+
"implemented_in": "commands/elsabro/execute.md#process (Paso 3) + commands/elsabro/execute.md#IMPERATIVO_AGENT_TEAMS",
|
|
561
651
|
"branches": [
|
|
562
652
|
{
|
|
563
653
|
"id": "implementation",
|
|
@@ -589,6 +679,8 @@
|
|
|
589
679
|
"id": "quality_gate",
|
|
590
680
|
"type": "sequence",
|
|
591
681
|
"description": "Quality gate: tests, types, lint",
|
|
682
|
+
"runtime_status": "implemented",
|
|
683
|
+
"implemented_in": "commands/elsabro/execute.md#process (Paso 4)",
|
|
592
684
|
"captureExitCode": true,
|
|
593
685
|
"steps": [
|
|
594
686
|
{
|
|
@@ -620,6 +712,8 @@
|
|
|
620
712
|
"id": "quality_check",
|
|
621
713
|
"type": "condition",
|
|
622
714
|
"description": "Verificar si pasó quality gate (tests + typescript + lint)",
|
|
715
|
+
"runtime_status": "implemented",
|
|
716
|
+
"implemented_in": "commands/elsabro/execute.md#process (condition after quality gate)",
|
|
623
717
|
"condition": "{{nodes.quality_gate.outputs.tests.exitCode === 0 && nodes.quality_gate.outputs.typescript.exitCode === 0 && nodes.quality_gate.outputs.lint.exitCode === 0}}",
|
|
624
718
|
"true": "parallel_review",
|
|
625
719
|
"false": "fix_issues"
|
|
@@ -629,6 +723,8 @@
|
|
|
629
723
|
"id": "fix_issues",
|
|
630
724
|
"type": "parallel",
|
|
631
725
|
"description": "Corregir problemas detectados (3 agentes)",
|
|
726
|
+
"runtime_status": "implemented",
|
|
727
|
+
"implemented_in": "commands/elsabro/execute.md#error_handling",
|
|
632
728
|
"branches": [
|
|
633
729
|
{
|
|
634
730
|
"id": "debugger",
|
|
@@ -658,6 +754,10 @@
|
|
|
658
754
|
{
|
|
659
755
|
"id": "interrupt_manual_fix",
|
|
660
756
|
"type": "interrupt",
|
|
757
|
+
"description": "Auto-fix failed after 3 attempts",
|
|
758
|
+
"runtime_status": "partial",
|
|
759
|
+
"implemented_in": "commands/elsabro/execute.md#error_handling",
|
|
760
|
+
"gaps": ["Escalation logic exists but simplified — no formal interrupt display or option routing, just a text-based fallback."],
|
|
661
761
|
"reason": "Auto-fix failed after 3 attempts",
|
|
662
762
|
"display": {
|
|
663
763
|
"title": "⚠️ Corrección Manual Requerida",
|
|
@@ -677,6 +777,10 @@
|
|
|
677
777
|
{
|
|
678
778
|
"id": "wait_manual_fix",
|
|
679
779
|
"type": "interrupt",
|
|
780
|
+
"description": "Waiting for manual fix",
|
|
781
|
+
"runtime_status": "partial",
|
|
782
|
+
"implemented_in": "commands/elsabro/execute.md#error_handling",
|
|
783
|
+
"gaps": ["Wait state exists but as text instruction, not as a formal interrupt with structured options."],
|
|
680
784
|
"reason": "Waiting for manual fix",
|
|
681
785
|
"display": {
|
|
682
786
|
"title": "Esperando corrección manual",
|
|
@@ -694,6 +798,8 @@
|
|
|
694
798
|
"id": "parallel_review",
|
|
695
799
|
"type": "parallel",
|
|
696
800
|
"description": "Code review paralelo (3 agentes opus)",
|
|
801
|
+
"runtime_status": "implemented",
|
|
802
|
+
"implemented_in": "commands/elsabro/execute.md#process (Paso 4) + commands/elsabro/execute.md#IMPERATIVO_AGENT_TEAMS",
|
|
697
803
|
"branches": [
|
|
698
804
|
{
|
|
699
805
|
"id": "code_reviewer",
|
|
@@ -732,6 +838,8 @@
|
|
|
732
838
|
"id": "review_check",
|
|
733
839
|
"type": "condition",
|
|
734
840
|
"description": "Verificar si hay issues críticos en review",
|
|
841
|
+
"runtime_status": "implemented",
|
|
842
|
+
"implemented_in": "commands/elsabro/execute.md#blocking_review_protocol",
|
|
735
843
|
"condition": "{{!hasCriticalIssues(nodes.parallel_review.outputs)}}",
|
|
736
844
|
"true": "verify_final",
|
|
737
845
|
"false": "fix_review_issues"
|
|
@@ -741,6 +849,8 @@
|
|
|
741
849
|
"id": "fix_review_issues",
|
|
742
850
|
"type": "agent",
|
|
743
851
|
"description": "Corregir issues del code review - BLOCKING: no avanza hasta 0 errores",
|
|
852
|
+
"runtime_status": "implemented",
|
|
853
|
+
"implemented_in": "commands/elsabro/execute.md#blocking_review_protocol",
|
|
744
854
|
"agent": "elsabro-executor",
|
|
745
855
|
"config": { "model": "opus" },
|
|
746
856
|
"inputs": {
|
|
@@ -757,6 +867,9 @@
|
|
|
757
867
|
{
|
|
758
868
|
"id": "interrupt_blocked",
|
|
759
869
|
"type": "interrupt",
|
|
870
|
+
"description": "Code review still has issues after 5 fix iterations - BLOCKED",
|
|
871
|
+
"runtime_status": "implemented",
|
|
872
|
+
"implemented_in": "commands/elsabro/execute.md#blocking_review_protocol",
|
|
760
873
|
"reason": "Code review still has issues after 5 fix iterations - BLOCKED",
|
|
761
874
|
"display": {
|
|
762
875
|
"title": "🚫 BLOQUEADO: Code Review con Errores Pendientes",
|
|
@@ -779,6 +892,9 @@
|
|
|
779
892
|
{
|
|
780
893
|
"id": "wait_manual_review_fix",
|
|
781
894
|
"type": "interrupt",
|
|
895
|
+
"description": "Waiting for manual fix of review issues",
|
|
896
|
+
"runtime_status": "implemented",
|
|
897
|
+
"implemented_in": "commands/elsabro/execute.md#blocking_review_protocol",
|
|
782
898
|
"reason": "Waiting for manual fix of review issues",
|
|
783
899
|
"display": {
|
|
784
900
|
"title": "👤 Esperando Corrección Manual de Review Issues",
|
|
@@ -797,6 +913,8 @@
|
|
|
797
913
|
"id": "verify_final",
|
|
798
914
|
"type": "agent",
|
|
799
915
|
"description": "Verificación final",
|
|
916
|
+
"runtime_status": "implemented",
|
|
917
|
+
"implemented_in": "commands/elsabro/verify-work.md",
|
|
800
918
|
"agent": "elsabro-verifier",
|
|
801
919
|
"config": { "model": "opus" },
|
|
802
920
|
"next": "verify_check"
|
|
@@ -805,6 +923,9 @@
|
|
|
805
923
|
{
|
|
806
924
|
"id": "verify_check",
|
|
807
925
|
"type": "condition",
|
|
926
|
+
"description": "Gate check on verification result",
|
|
927
|
+
"runtime_status": "implemented",
|
|
928
|
+
"implemented_in": "commands/elsabro/execute.md#siguiente_paso",
|
|
808
929
|
"condition": "{{nodes.verify_final.outputs.passed || nodes.quick_verify.outputs.passed}}",
|
|
809
930
|
"true": "post_mortem",
|
|
810
931
|
"false": "interrupt_verification_failed"
|
|
@@ -813,6 +934,9 @@
|
|
|
813
934
|
{
|
|
814
935
|
"id": "interrupt_verification_failed",
|
|
815
936
|
"type": "interrupt",
|
|
937
|
+
"description": "Final verification failed",
|
|
938
|
+
"runtime_status": "implemented",
|
|
939
|
+
"implemented_in": "commands/elsabro/execute.md#blocking_review_protocol",
|
|
816
940
|
"reason": "Final verification failed",
|
|
817
941
|
"display": {
|
|
818
942
|
"title": "❌ Verificación Final Fallida",
|
|
@@ -834,6 +958,9 @@
|
|
|
834
958
|
"id": "post_mortem",
|
|
835
959
|
"type": "sequence",
|
|
836
960
|
"description": "Post-mortem: guardar aprendizajes",
|
|
961
|
+
"runtime_status": "not_implemented",
|
|
962
|
+
"implemented_in": null,
|
|
963
|
+
"gaps": ["No pattern learning or saving happens after execution. M3: valuable feature — wire to auto-memory or patterns.md updates."],
|
|
837
964
|
"steps": [
|
|
838
965
|
{
|
|
839
966
|
"action": "learn_patterns",
|
|
@@ -854,6 +981,9 @@
|
|
|
854
981
|
{
|
|
855
982
|
"id": "end_success",
|
|
856
983
|
"type": "exit",
|
|
984
|
+
"description": "Success exit",
|
|
985
|
+
"runtime_status": "implemented",
|
|
986
|
+
"implemented_in": "commands/elsabro/execute.md#siguiente_paso",
|
|
857
987
|
"status": "success",
|
|
858
988
|
"outputs": {
|
|
859
989
|
"filesCreated": "{{collectOutputs('filesCreated')}}",
|
|
@@ -869,6 +999,9 @@
|
|
|
869
999
|
{
|
|
870
1000
|
"id": "end_cancelled",
|
|
871
1001
|
"type": "exit",
|
|
1002
|
+
"description": "Cancellation exit",
|
|
1003
|
+
"runtime_status": "implemented",
|
|
1004
|
+
"implemented_in": "commands/elsabro/execute.md#error_handling",
|
|
872
1005
|
"status": "cancelled",
|
|
873
1006
|
"outputs": {
|
|
874
1007
|
"success": false,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "elsabro",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.1",
|
|
4
4
|
"description": "Sistema de desarrollo AI-powered para Claude Code - BMAD Method Integration, Spec-Driven Development, Party Mode, Next Step Suggestions, Stitch UI Design, Agent Teams, blocking code review, orquestación avanzada con flows declarativos",
|
|
5
5
|
"bin": {
|
|
6
6
|
"elsabro": "bin/install.js"
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"flows",
|
|
16
16
|
"references",
|
|
17
17
|
"hooks",
|
|
18
|
-
"scripts"
|
|
18
|
+
"scripts",
|
|
19
|
+
"flow-engine"
|
|
19
20
|
],
|
|
20
21
|
"keywords": [
|
|
21
22
|
"claude",
|
|
@@ -42,6 +43,6 @@
|
|
|
42
43
|
"node": ">=18.0.0"
|
|
43
44
|
},
|
|
44
45
|
"scripts": {
|
|
45
|
-
"test": "
|
|
46
|
+
"test": "node --test flow-engine/tests/*.test.js"
|
|
46
47
|
}
|
|
47
48
|
}
|