@iaforged/context-code 1.0.84 → 1.0.86

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.
@@ -0,0 +1,639 @@
1
+ # Plan De Mejora: Orquestacion Jerarquica Multi-Proveedor
2
+
3
+ ## Objetivo
4
+
5
+ Llevar `Context Code` desde el estado actual de `multi-provider + multi-profile + SQLite` a una arquitectura de trabajo por escuadrones, donde:
6
+
7
+ - cada proveedor funciona como un `workspace` o `escuadron`
8
+ - cada escuadron puede tener multiples perfiles
9
+ - cada escuadron puede tener multiples subagentes internos
10
+ - cada escuadron tiene su propio orquestador local
11
+ - existe un orquestador principal que coordina a todos los escuadrones
12
+ - todo el estado operativo persiste en SQLite
13
+
14
+ La meta no es solo cambiar de proveedor. La meta es poder montar un `equipo de desarrollo agentico` con estructura real.
15
+
16
+ ## Vision
17
+
18
+ La arquitectura final debe verse asi:
19
+
20
+ - `Orquestador principal`
21
+ decide la estrategia general, reparte trabajo por dominios y consolida resultados
22
+ - `Orquestador de escuadron`
23
+ pertenece a un proveedor concreto y reparte tareas entre subagentes internos de ese proveedor
24
+ - `Subagentes de escuadron`
25
+ ejecutan tareas especializadas
26
+ - `Perfiles de proveedor`
27
+ representan cuentas, modelos, base URLs y credenciales
28
+ - `SQLite`
29
+ almacena configuracion, equipos, asignaciones, ejecuciones y trazabilidad
30
+
31
+ Ejemplo conceptual:
32
+
33
+ - `Claude squad`
34
+ - `claude-orchestrator`
35
+ - `frontend-lead`
36
+ - `ui-reviewer`
37
+ - `ux-polish`
38
+ - `OpenAI squad`
39
+ - `openai-orchestrator`
40
+ - `backend-lead`
41
+ - `api-architect`
42
+ - `refactorer`
43
+ - `MiniMax squad`
44
+ - `minimax-orchestrator`
45
+ - `rapid-implementer`
46
+ - `docs-helper`
47
+ - `test-writer`
48
+ - `Global orchestrator`
49
+ - asigna frontend a Claude
50
+ - asigna backend a OpenAI
51
+ - asigna docs o pruebas a otro escuadron
52
+
53
+ ## Principios De Diseño
54
+
55
+ 1. No mezclar proveedor, perfil, agente y rol.
56
+ 2. El orquestador principal no depende de un proveedor fijo.
57
+ 3. Cada escuadron puede evolucionar sin romper la organizacion global.
58
+ 4. Los secretos siguen fuera del estado visible y se manejan por la capa de credenciales ya migrada a SQLite cifrado local.
59
+ 5. La primera version debe priorizar control manual y trazabilidad antes que automatizacion completa.
60
+
61
+ ## Capas Del Sistema
62
+
63
+ ### 1. Provider Workspace
64
+
65
+ Representa al proveedor como unidad organizacional.
66
+
67
+ Ejemplos:
68
+
69
+ - `claude`
70
+ - `openai`
71
+ - `minimax`
72
+ - `zai`
73
+ - `openrouter`
74
+
75
+ Un workspace define:
76
+
77
+ - nombre visible
78
+ - foco principal del escuadron
79
+ - si esta habilitado
80
+ - reglas de seleccion de perfiles y agentes
81
+
82
+ ### 2. Provider Profile
83
+
84
+ Representa una cuenta o configuracion concreta dentro del workspace.
85
+
86
+ Ejemplos:
87
+
88
+ - `claude/main`
89
+ - `claude/team-a`
90
+ - `openai/work`
91
+ - `minimax/fast-lane`
92
+
93
+ Un profile define:
94
+
95
+ - credenciales
96
+ - modelo por defecto
97
+ - base URL
98
+ - estado operativo
99
+ - preferencias runtime
100
+
101
+ ### 3. Provider Agent
102
+
103
+ Representa un subagente interno de un escuadron.
104
+
105
+ Ejemplos:
106
+
107
+ - `claude/frontend-lead`
108
+ - `claude/ui-reviewer`
109
+ - `openai/backend-lead`
110
+ - `openai/api-architect`
111
+
112
+ Un agent define:
113
+
114
+ - rol
115
+ - prompt base
116
+ - herramientas permitidas
117
+ - modelo override opcional
118
+ - capacidades
119
+ - si es o no orquestador local
120
+
121
+ ### 4. Team
122
+
123
+ Representa un equipo de trabajo transversal.
124
+
125
+ Ejemplos:
126
+
127
+ - `core-dev`
128
+ - `release-team`
129
+ - `feature-squad`
130
+
131
+ ### 5. Orchestration Run
132
+
133
+ Representa una ejecucion real:
134
+
135
+ - objetivo
136
+ - equipo usado
137
+ - orquestador global
138
+ - subtareas
139
+ - asignaciones
140
+ - resultados
141
+
142
+ ## Modelo De Orquestacion
143
+
144
+ ### Orquestador Principal
145
+
146
+ Responsabilidades:
147
+
148
+ - entender la meta global
149
+ - descomponer trabajo por dominio
150
+ - asignar trabajo al escuadron correcto
151
+ - consolidar respuestas de los escuadrones
152
+ - decidir reintentos, escalaciones y cierres
153
+
154
+ ### Orquestador De Escuadron
155
+
156
+ Responsabilidades:
157
+
158
+ - recibir trabajo del orquestador principal
159
+ - descomponerlo internamente
160
+ - seleccionar subagentes del mismo proveedor
161
+ - validar el output del escuadron
162
+ - devolver un resultado consolidado al orquestador principal
163
+
164
+ ### Subagentes Del Escuadron
165
+
166
+ Responsabilidades:
167
+
168
+ - ejecutar tareas concretas
169
+ - reportar al orquestador del escuadron
170
+ - no coordinar fuera de su escuadron en v1
171
+
172
+ ## Modelo SQLite Propuesto
173
+
174
+ ### Tablas Base
175
+
176
+ #### `provider_workspaces`
177
+
178
+ - `id`
179
+ - `provider`
180
+ - `display_name`
181
+ - `domain_focus`
182
+ - `is_enabled`
183
+ - `created_at`
184
+ - `updated_at`
185
+
186
+ #### `provider_profiles`
187
+
188
+ - `id`
189
+ - `workspace_id`
190
+ - `provider`
191
+ - `name`
192
+ - `agent_name`
193
+ - `base_url`
194
+ - `default_model`
195
+ - `is_active`
196
+ - `created_at`
197
+ - `updated_at`
198
+
199
+ Nota:
200
+
201
+ - esta tabla puede extender o reemplazar gradualmente la estructura actual de perfiles ya existente en SQLite
202
+
203
+ #### `provider_agents`
204
+
205
+ - `id`
206
+ - `workspace_id`
207
+ - `profile_id`
208
+ - `name`
209
+ - `role_kind`
210
+ - `system_prompt`
211
+ - `model_override`
212
+ - `tool_policy`
213
+ - `autonomy_level`
214
+ - `is_orchestrator`
215
+ - `is_enabled`
216
+ - `created_at`
217
+ - `updated_at`
218
+
219
+ #### `provider_agent_capabilities`
220
+
221
+ - `id`
222
+ - `agent_id`
223
+ - `capability`
224
+ - `weight`
225
+
226
+ Ejemplos de `capability`:
227
+
228
+ - `frontend`
229
+ - `backend`
230
+ - `review`
231
+ - `docs`
232
+ - `testing`
233
+ - `speed`
234
+ - `quality`
235
+ - `tools`
236
+
237
+ #### `teams`
238
+
239
+ - `id`
240
+ - `name`
241
+ - `description`
242
+ - `global_orchestrator_agent_id`
243
+ - `is_enabled`
244
+ - `created_at`
245
+ - `updated_at`
246
+
247
+ #### `team_domains`
248
+
249
+ - `id`
250
+ - `team_id`
251
+ - `domain_name`
252
+ - `workspace_id`
253
+ - `local_orchestrator_agent_id`
254
+ - `lead_agent_id`
255
+ - `selection_mode`
256
+ - `required`
257
+
258
+ Ejemplos de `domain_name`:
259
+
260
+ - `frontend`
261
+ - `backend`
262
+ - `qa`
263
+ - `docs`
264
+ - `architecture`
265
+
266
+ #### `team_domain_members`
267
+
268
+ - `id`
269
+ - `team_domain_id`
270
+ - `agent_id`
271
+ - `duty`
272
+ - `priority`
273
+
274
+ #### `orchestration_runs`
275
+
276
+ - `id`
277
+ - `team_id`
278
+ - `goal`
279
+ - `global_orchestrator_agent_id`
280
+ - `status`
281
+ - `created_at`
282
+ - `started_at`
283
+ - `finished_at`
284
+
285
+ #### `orchestration_tasks`
286
+
287
+ - `id`
288
+ - `run_id`
289
+ - `parent_task_id`
290
+ - `scope_type`
291
+ - `team_domain_id`
292
+ - `assigned_agent_id`
293
+ - `title`
294
+ - `instructions`
295
+ - `status`
296
+ - `result_summary`
297
+ - `created_at`
298
+ - `finished_at`
299
+
300
+ #### `orchestration_messages`
301
+
302
+ - `id`
303
+ - `run_id`
304
+ - `task_id`
305
+ - `from_agent_id`
306
+ - `to_agent_id`
307
+ - `message_type`
308
+ - `content`
309
+ - `created_at`
310
+
311
+ ## Modulos De Aplicacion A Crear
312
+
313
+ ### 1. `ProviderWorkspaceStore`
314
+
315
+ Responsable de:
316
+
317
+ - workspaces de proveedor
318
+ - perfiles asociados
319
+ - metadatos del escuadron
320
+
321
+ ### 2. `ProviderAgentStore`
322
+
323
+ Responsable de:
324
+
325
+ - CRUD de subagentes
326
+ - capacidades
327
+ - politica de herramientas
328
+ - prompt base
329
+
330
+ ### 3. `TeamStore`
331
+
332
+ Responsable de:
333
+
334
+ - equipos
335
+ - dominios
336
+ - leads
337
+ - miembros
338
+ - orquestador global
339
+
340
+ ### 4. `OrchestrationPlanner`
341
+
342
+ Responsable de:
343
+
344
+ - partir una meta en dominios
345
+ - decidir a que escuadron va cada frente
346
+ - construir tareas para orquestadores locales
347
+
348
+ ### 5. `GlobalOrchestratorRuntime`
349
+
350
+ Responsable de:
351
+
352
+ - correr el flujo del orquestador principal
353
+ - crear `runs`
354
+ - crear tareas
355
+ - pedir consolidaciones
356
+
357
+ ### 6. `SquadOrchestratorRuntime`
358
+
359
+ Responsable de:
360
+
361
+ - repartir tareas internas del escuadron
362
+ - seleccionar subagentes internos
363
+ - consolidar trabajo del escuadron
364
+
365
+ ### 7. `AgentExecutionRuntime`
366
+
367
+ Responsable de:
368
+
369
+ - ejecutar agentes concretos con el provider/profile correcto
370
+ - resolver modelo, credenciales, tools y contexto
371
+
372
+ ## Comandos CLI Recomendados
373
+
374
+ ### Fase Inicial
375
+
376
+ - `/workspace`
377
+ - `/workspace list`
378
+ - `/workspace show <provider>`
379
+ - `/agent`
380
+ - `/agent list <provider>`
381
+ - `/agent create <provider> <name>`
382
+ - `/agent edit <provider> <name>`
383
+ - `/team`
384
+ - `/team create <name>`
385
+ - `/team show <name>`
386
+ - `/team orchestrator <team> <provider>/<agent>`
387
+ - `/team domain <team> <domain> <provider>/<agent>`
388
+
389
+ ### Fase De Orquestacion
390
+
391
+ - `/orchestrate <team> "<objetivo>"`
392
+ - `/run list`
393
+ - `/run show <id>`
394
+ - `/run cancel <id>`
395
+
396
+ ## Fases De Implementacion
397
+
398
+ ### Fase 1: Modelo Organizacional
399
+
400
+ Objetivo:
401
+
402
+ - modelar escuadrones, agentes y equipos sin ejecutar orquestacion real
403
+
404
+ Entregables:
405
+
406
+ - tablas SQLite nuevas
407
+ - stores nuevos
408
+ - comandos `/workspace`, `/agent`, `/team`
409
+ - UI/CLI para asignar:
410
+ - orquestador principal
411
+ - orquestador local de escuadron
412
+ - miembros por dominio
413
+
414
+ Criterio de cierre:
415
+
416
+ - se puede definir un equipo completo en SQLite
417
+ - se puede inspeccionar desde CLI
418
+
419
+ ### Fase 2: Orquestacion Global Basica
420
+
421
+ Objetivo:
422
+
423
+ - introducir el orquestador principal y la asignacion por dominio
424
+
425
+ Entregables:
426
+
427
+ - `orchestration_runs`
428
+ - `orchestration_tasks`
429
+ - `GlobalOrchestratorRuntime`
430
+ - `/orchestrate`
431
+
432
+ Regla de v1:
433
+
434
+ - el orquestador principal asigna trabajo al `lead agent` o al `local orchestrator`
435
+ - no hay subdelegacion profunda aun
436
+
437
+ Criterio de cierre:
438
+
439
+ - una meta puede dividirse por dominios y asignarse a distintos escuadrones
440
+
441
+ ### Fase 3: Orquestadores De Escuadron
442
+
443
+ Objetivo:
444
+
445
+ - habilitar que cada proveedor tenga su propia mini-orquestacion
446
+
447
+ Entregables:
448
+
449
+ - `SquadOrchestratorRuntime`
450
+ - seleccion de subagentes internos
451
+ - consolidacion interna por escuadron
452
+ - trazabilidad en `orchestration_messages`
453
+
454
+ Criterio de cierre:
455
+
456
+ - el orquestador global delega a un escuadron
457
+ - el escuadron decide internamente quien hace cada parte
458
+ - el escuadron responde consolidado
459
+
460
+ ### Fase 4: Politicas Inteligentes
461
+
462
+ Objetivo:
463
+
464
+ - agregar seleccion semiautomatica y fallback
465
+
466
+ Entregables:
467
+
468
+ - ranking por capacidad
469
+ - costo
470
+ - latencia
471
+ - calidad
472
+ - soporte de tools
473
+ - fallback entre profiles y agentes
474
+
475
+ Criterio de cierre:
476
+
477
+ - el sistema puede sugerir o elegir automaticamente quien ocupa cada cargo
478
+
479
+ ### Fase 5: UX Y Gobierno
480
+
481
+ Objetivo:
482
+
483
+ - hacer el sistema utilizable y operable en el dia a dia
484
+
485
+ Entregables:
486
+
487
+ - comandos de diagnostico
488
+ - vista de equipo actual
489
+ - vista de topologia
490
+ - historial de runs
491
+ - confirmaciones y validaciones
492
+
493
+ Criterio de cierre:
494
+
495
+ - la orquestacion se puede usar sin inspeccionar la base manualmente
496
+
497
+ ## Cantidad Recomendada De Agentes Para Desarrollarlo
498
+
499
+ ### Equipo minimo: 4 agentes
500
+
501
+ Recomendado si se quiere avanzar con cuidado y poco solapamiento.
502
+
503
+ - `Agente 1`: SQLite y stores
504
+ - `Agente 2`: CLI y comandos
505
+ - `Agente 3`: runtime de orquestacion
506
+ - `Agente 4`: validacion, tests y documentacion
507
+
508
+ ### Equipo recomendado: 6 agentes
509
+
510
+ Es la opcion mas equilibrada para construir esto bien y rapido.
511
+
512
+ - `Agente A`: esquema SQLite y migraciones
513
+ - `Agente B`: `ProviderWorkspaceStore` y `ProviderAgentStore`
514
+ - `Agente C`: `TeamStore` y comandos `/team`
515
+ - `Agente D`: comandos `/workspace` y `/agent`
516
+ - `Agente E`: `GlobalOrchestratorRuntime`
517
+ - `Agente F`: `SquadOrchestratorRuntime`, trazabilidad y pruebas
518
+
519
+ ### Equipo agresivo: 8 agentes
520
+
521
+ Solo vale la pena si se controla muy bien la coordinacion.
522
+
523
+ - separa runtime, stores, CLI, tests, docs, visualizacion y migraciones
524
+ - aumenta riesgo de conflictos si no se define ownership exacto de archivos
525
+
526
+ ## Recomendacion De Ejecucion
527
+
528
+ Para este repo, la recomendacion real es trabajar con `6 agentes`.
529
+
530
+ Motivo:
531
+
532
+ - el problema ya no es pequeno
533
+ - ya existe infraestructura SQLite previa
534
+ - hay que tocar almacenamiento, runtime y UX
535
+ - pero aun se puede dividir en write scopes claros
536
+
537
+ ## Reparto Recomendado De Ownership
538
+
539
+ ### Worker 1
540
+
541
+ Responsable de:
542
+
543
+ - `src/utils/model/providerProfilesDb.ts`
544
+ - nuevas tablas y migraciones SQLite
545
+ - stores base de workspaces/agentes/equipos
546
+
547
+ ### Worker 2
548
+
549
+ Responsable de:
550
+
551
+ - `src/commands/workspace/*`
552
+ - `src/commands/agent/*`
553
+ - registro de comandos y ayudas
554
+
555
+ ### Worker 3
556
+
557
+ Responsable de:
558
+
559
+ - `src/commands/team/*`
560
+ - resolucion de equipos y dominios
561
+
562
+ ### Worker 4
563
+
564
+ Responsable de:
565
+
566
+ - `src/services/orchestration/global/*`
567
+ - `GlobalOrchestratorRuntime`
568
+
569
+ ### Worker 5
570
+
571
+ Responsable de:
572
+
573
+ - `src/services/orchestration/squad/*`
574
+ - `SquadOrchestratorRuntime`
575
+ - seleccion de subagentes internos
576
+
577
+ ### Worker 6
578
+
579
+ Responsable de:
580
+
581
+ - pruebas
582
+ - fixtures SQLite
583
+ - diagnosticos
584
+ - README y documentacion tecnica
585
+
586
+ ## Riesgos Tecnicos
587
+
588
+ 1. Mezclar profile con agent
589
+ Rompe la separacion entre cuenta y rol.
590
+
591
+ 2. Hacer asignacion automatica demasiado pronto
592
+ Lleva a comportamiento dificil de depurar.
593
+
594
+ 3. No registrar trazabilidad de decisiones
595
+ Hace imposible entender por que un escuadron eligio cierto subagente.
596
+
597
+ 4. Delegacion recursiva sin limites
598
+ Puede producir loops o explosion de tareas.
599
+
600
+ 5. Acoplar demasiado el orquestador principal a un solo proveedor
601
+ Mata la flexibilidad del sistema.
602
+
603
+ ## Reglas De Seguridad Operativa
604
+
605
+ - toda tarea debe tener `owner agent`
606
+ - toda tarea debe tener `status`
607
+ - toda subdelegacion debe quedar registrada
608
+ - cada orquestador local solo puede delegar a miembros de su escuadron
609
+ - el orquestador principal no ejecuta trabajo de dominio si existe escuadron asignado
610
+
611
+ ## Definicion De Exito
612
+
613
+ El proyecto se considera bien implementado cuando:
614
+
615
+ - existe un orquestador principal configurable
616
+ - cada escuadron tiene su propio orquestador local
617
+ - cada proveedor puede tener varios subagentes internos
618
+ - los equipos se pueden definir desde CLI
619
+ - las ejecuciones se registran en SQLite
620
+ - los resultados se pueden inspeccionar sin leer logs crudos
621
+
622
+ ## Orden Recomendado Inmediato
623
+
624
+ 1. Fase 1 completa
625
+ 2. Fase 2 minima operativa
626
+ 3. Fase 3 sobre un solo flujo controlado
627
+ 4. luego automatizacion
628
+
629
+ ## Siguiente Paso Concreto
630
+
631
+ El siguiente paso correcto no es implementar todo de una vez.
632
+
633
+ El siguiente paso correcto es:
634
+
635
+ 1. crear tablas nuevas en SQLite
636
+ 2. crear `ProviderWorkspaceStore`, `ProviderAgentStore` y `TeamStore`
637
+ 3. exponer comandos manuales para definir la topologia
638
+
639
+ Cuando eso exista, la orquestacion se vuelve una capa encima de una estructura ya estable.