openprompt-lang 1.3.0 → 1.4.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.
Files changed (52) hide show
  1. package/bin/cli.js +2 -0
  2. package/docs/00-ARCHITECTURE/OPL-BOOST-MULTI-AGENT.md +406 -0
  3. package/docs/02-STANDARDS/AGENTS.template.md +89 -0
  4. package/docs/02-STANDARDS/ticket-driven-development.md +99 -0
  5. package/docs/04-TICKETS/BOOST-001-profile-registry.md +66 -0
  6. package/docs/04-TICKETS/BOOST-002-context-compression.md +58 -0
  7. package/docs/04-TICKETS/BOOST-003-template-hydration.md +69 -0
  8. package/docs/04-TICKETS/BOOST-004-fewshot-engine.md +58 -0
  9. package/docs/04-TICKETS/BOOST-005-agent-pool.md +69 -0
  10. package/docs/04-TICKETS/BOOST-006-specialized-agents.md +53 -0
  11. package/docs/04-TICKETS/BOOST-007-validation-loop.md +56 -0
  12. package/docs/04-TICKETS/BOOST-008-orchestrator.md +71 -0
  13. package/docs/04-TICKETS/BOOST-009-cache-system.md +56 -0
  14. package/docs/04-TICKETS/BOOST-010-cli-mcp.md +67 -0
  15. package/docs/04-TICKETS/BOOST-011-self-learning.md +50 -0
  16. package/docs/04-TICKETS/BOOST-012-prompt-preamble.md +109 -0
  17. package/docs/04-TICKETS/BOOST-013-hydrator-duplicate-code.md +132 -0
  18. package/docs/04-TICKETS/BOOST-014-multiagent-missing-parts.md +87 -0
  19. package/docs/04-TICKETS/BOOST-015-skeleton-type-missing.md +76 -0
  20. package/docs/04-TICKETS/BOOST-016-output-path-duplicate.md +68 -0
  21. package/docs/04-TICKETS/INDEX.md +89 -0
  22. package/docs/04-TICKETS/_archive/BOOST-005-micro-tasking.md +67 -0
  23. package/docs/04-TICKETS/_archive/BOOST-006-validation-loop.md +66 -0
  24. package/docs/04-TICKETS/_archive/BOOST-007-progressive-pipeline.md +69 -0
  25. package/docs/04-TICKETS/_archive/BOOST-008-cli-mcp-integration.md +74 -0
  26. package/docs/AI_CONTEXT.md +16 -0
  27. package/package.json +3 -2
  28. package/src/boost/agent-pool.js +442 -0
  29. package/src/boost/agents/index.js +79 -0
  30. package/src/boost/cache.js +241 -0
  31. package/src/boost/context-compressor.js +354 -0
  32. package/src/boost/fewshot-retriever.js +332 -0
  33. package/src/boost/hardware-detector.js +486 -0
  34. package/src/boost/hydrator.js +398 -0
  35. package/src/boost/index.js +60 -0
  36. package/src/boost/orchestrator.js +615 -0
  37. package/src/boost/preamble.js +217 -0
  38. package/src/boost/profile-registry.js +264 -0
  39. package/src/boost/self-learn.js +247 -0
  40. package/src/boost/skeletons/component.skeleton.js +24 -0
  41. package/src/boost/skeletons/hook.skeleton.js +27 -0
  42. package/src/boost/skeletons/index.js +67 -0
  43. package/src/boost/skeletons/page.skeleton.js +22 -0
  44. package/src/boost/skeletons/service.skeleton.js +20 -0
  45. package/src/boost/skeletons/store.skeleton.js +18 -0
  46. package/src/boost/skeletons/type.skeleton.js +11 -0
  47. package/src/boost/task-dispatcher.js +142 -0
  48. package/src/boost/validation-loop.js +495 -0
  49. package/src/cli/commands-boost.js +394 -0
  50. package/src/mcp-refactor/handlers/boost.js +295 -0
  51. package/src/mcp-refactor/router.js +19 -0
  52. package/src/mcp-refactor/tools.js +113 -0
package/bin/cli.js CHANGED
@@ -21,6 +21,7 @@ import { register as registerOpl } from "../src/cli/commands-opl.js"
21
21
  import { register as registerMisc } from "../src/cli/commands-misc.js"
22
22
  import { register as registerWorkflow } from "../src/cli/commands-workflow.js"
23
23
  import { register as registerTeach } from "../src/cli/commands-teach.js"
24
+ import { register as registerBoost } from "../src/cli/commands-boost.js"
24
25
 
25
26
  import { handleUncaughtErrors, EXIT_CODES } from "../src/utils/errors.js"
26
27
 
@@ -67,6 +68,7 @@ registerLearning(program)
67
68
  registerMisc(program)
68
69
  registerWorkflow(program)
69
70
  registerTeach(program)
71
+ registerBoost(program)
70
72
 
71
73
  try {
72
74
  await program.parseAsync(process.argv)
@@ -0,0 +1,406 @@
1
+ # OPL Boost — Arquitectura Multi-Agente (MoA)
2
+
3
+ > **Documento de diseño** — Versión borrador para discusión
4
+ > Última actualización: 2026-05-26
5
+
6
+ ---
7
+
8
+ ## 1. Concepto Central
9
+
10
+ **Modelos pequeños colaborando pueden superar a uno grande.** Es el principio de **Mixture of Agents (MoA)** validado por Together AI (2024): tres modelos de 7B especializados y coordinados pueden igualar o superar a GPT-4 en tareas específicas de generación de código.
11
+
12
+ La clave está en que **cada modelo solo necesita resolver la parte del problema que cabe en su ventana de contexto**.
13
+
14
+ ### Analogía: Fábrica de código
15
+
16
+ ```
17
+ [ Modelo Grande ] → Un artesano que lo hace todo, pero caro y escaso
18
+ [ Boost Multi-Agente ] → Una línea de ensamblaje con 5 operarios baratos, cada uno especializado
19
+ ```
20
+
21
+ | Aspecto | Modelo grande único | Boost Multi-Agente |
22
+ |---------|-------------------|-------------------|
23
+ | RAM requerida | ~20-40 GB | ~4-12 GB |
24
+ | Velocidad | Secuencial, un paso a la vez | Paralelo, varios pasos simultáneos |
25
+ | Costo operativo | Alto (GPU grande) | Bajo (varias GPUs chicas o una sola con cola) |
26
+ | Especialización | Generalista | Agentes especializados por rol |
27
+ | Respaldo científico | — | MoA (Together AI, 2024) |
28
+ | Degradación | Si falla, todo falla | Si un agente falla, se reasigna |
29
+
30
+ ---
31
+
32
+ ## 2. Arquitectura
33
+
34
+ ```
35
+ ┌─────────────────────────────────────────────────────────────────────┐
36
+ │ Boost Orchestrator │
37
+ │ (src/boost/index.js + orchestrator.js) │
38
+ │ │
39
+ │ 1. Recibe tarea → "crea hook useAuth" │
40
+ │ 2. Descompone en DAG de pasos │
41
+ │ 3. Asigna agentes según dependencias │
42
+ │ 4. Ejecuta en paralelo o secuencial según DAG │
43
+ │ 5. Recolecta resultados parciales │
44
+ │ 6. Ensambla resultado final │
45
+ │ 7. Pasa por validation loop │
46
+ └──────┬────────────────────────────────────┬──────────────────────────┘
47
+ │ │
48
+ │ Fase 1: Paralela │ Fase 2: Secuencial
49
+ │ (tareas independientes) │ (tareas con dependencias)
50
+ ▼ ▼
51
+ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
52
+ │ Agent A │ │ Agent B │ │ Agent D │
53
+ │ Tipos │ │ Estado │ │ Lógica │
54
+ │ "Define │ │ "Diseña el │ │ "Implementa │
55
+ │ interfaces"│ │ estado y │ │ la función"│
56
+ └──────┬──────┘ │ efectos" │ └──────┬──────┘
57
+ │ └──────┬──────┘ │
58
+ │ │ │
59
+ └────────┬───────┘ │
60
+ │ │
61
+ ▼ ▼
62
+ ┌──────────────┐ ┌──────────────┐
63
+ │ Agent C │ │ Agent E │
64
+ │ Props/Contract│ │ Validación │
65
+ │ (paralelo a │ │ (último paso)│
66
+ │ A y B) │ │ │
67
+ └──────────────┘ └──────────────┘
68
+ ```
69
+
70
+ ### 2.1 Componentes del Sistema
71
+
72
+ ```
73
+ src/boost/
74
+ ├── index.js → Punto de entrada (orquestador general)
75
+ ├── orchestrator.js → Motor de planificación + scheduling de agentes
76
+ ├── agent-pool.js → Pool de agentes: gestión, cola, paralelismo
77
+ ├── task-dispatcher.js → Descompone tarea en DAG + asigna
78
+ ├── agents/ → Agentes especializados
79
+ │ ├── agent-types.js → Prompt + validator por rol
80
+ │ ├── agent-types.js → Define interfaces de tipos/tipado
81
+ │ ├── agent-state.js → Diseña estado y efectos
82
+ │ ├── agent-logic.js → Implementa lógica de negocio
83
+ │ ├── agent-validate.js → Corre validación + retroalimentación
84
+ │ └── agent-cleaner.js → Comprime/pule contexto (AI Cleaner)
85
+ ├── context-cache/ → Contexto limpio cacheado por tipo de tarea
86
+ ├── profile-registry.js → ✅ Ya existe (Ticket 1)
87
+ ├── context-compressor.js → Capa 1: determinística (Ticket 2)
88
+ ├── hydrator.js → Hidratación de skeletons (Ticket 3)
89
+ ├── fewshot-retriever.js → Búsqueda de ejemplos (Ticket 4)
90
+ └── validation-loop.js → Feedback loop post-generación (Ticket 6)
91
+ ```
92
+
93
+ ### 2.2 Pool de Agentes vs Instancias de Modelo
94
+
95
+ El pool de agentes es **lógico**, no necesariamente físico:
96
+
97
+ ```
98
+ ┌──────────────────────────────────┐
99
+ │ Agent Pool │
100
+ │ (gestiona tareas vs instancias) │
101
+ │ │
102
+ │ ┌──────────┐ ┌──────────┐ │
103
+ │ │ Agent A │ │ Agent B │ │ ← Agentes lógicos (roles)
104
+ │ │ (Tipos) │ │ (Estado) │ │
105
+ │ └────┬─────┘ └────┬─────┘ │
106
+ │ │ │ │
107
+ │ ▼ ▼ │
108
+ │ ┌──────────────────────────┐ │
109
+ │ │ Instancia de modelo │ │ ← Física (Ollama, API)
110
+ │ │ deepseek-coder-7b │ │ Se reusa entre agentes
111
+ │ └──────────────────────────┘ │
112
+ └──────────────────────────────────┘
113
+ ```
114
+
115
+ Un solo modelo físico puede servir múltiples agentes lógicos en serie (no en paralelo real si no hay GPU suficiente):
116
+
117
+ - **Modo paralelo real**: varias instancias del modelo en GPUs diferentes (o misma con batching)
118
+ - **Modo cola**: una sola instancia atiende agentes en secuencia, como si fuera un solo núcleo compartido
119
+
120
+ ---
121
+
122
+ ## 3. Agentes Especializados
123
+
124
+ Cada agente tiene:
125
+
126
+ | Rol | Nombre | Input | Output | Prompt característico |
127
+ |-----|--------|-------|--------|----------------------|
128
+ | **Tipos** | `agent-types` | Descripción de la tarea | Interfaces, types, DTOs | _"Define solo los tipos. Sin implementación."_ |
129
+ | **Estado** | `agent-state` | Descripción de la tarea + tipos | Estado, hooks, efectos | _"Diseña el estado y efectos. Sin JSX."_ |
130
+ | **Contrato** | `agent-contract` | Descripción de la tarea + tipos | Props, anotaciones @contract | _"Define el contrato del componente."_ |
131
+ | **Lógica** | `agent-logic` | tipos + estado + contrato | Lógica de negocio completa | _"Implementa la función usando tipos y estado ya definidos."_ |
132
+ | **Validación** | `agent-validate` | Código completo | Versión corregida o reporte | _"Este código falló en X línea. Corrígelo."_ |
133
+ | **Cleaner** | `agent-cleaner` | Contexto completo | Contexto comprimido minimal | _"Comprime este contexto a solo lo esencial para generar un hook."_ |
134
+
135
+ **Cada prompt es 3-5 líneas máximo.** Un modelo de 8K procesa esto sin saturarse.
136
+
137
+ ### 3.1 Prompt de ejemplo para Agent-Cleaner
138
+
139
+ ```
140
+ Eres un compresor de contexto para un asistente de código.
141
+ Recibe estas reglas y devuélvelas en su forma más compacta.
142
+
143
+ Reglas críticas a preservar:
144
+ - @kind limits (hook:80, component:120, page:200)
145
+ - @limit NO es sugerencia, bloquea commit
146
+ - @use() obligatorio al inicio
147
+ - Named exports sobre default exports
148
+ - NUNCA: any types, modificar *.template.*, eliminar @use
149
+
150
+ Tarea actual: generar un hook useDebounce
151
+ Contexto a comprimir:
152
+ [CONTEXTO AQUÍ]
153
+
154
+ Output: solo las reglas relevantes para hooks, en formato minimal.
155
+ ```
156
+
157
+ ---
158
+
159
+ ## 4. Modos de Ejecución
160
+
161
+ ### 4.1 Modo Paralelo (múltiples GPUs/instancias)
162
+
163
+ ```
164
+ Tiempo: 0s ─────────────────────────────────────►
165
+
166
+ Agent A (Tipos): ████████░░░░░░░░░░░░░░░░░░░░ 2s
167
+ Agent B (Estado): ██████████░░░░░░░░░░░░░░░░░░ 2.5s
168
+ Agent C (Contrato): ██████░░░░░░░░░░░░░░░░░░░░░░ 1.5s
169
+ │ paralelo
170
+
171
+ Agent D (Lógica): ░░░░░░░░░░░████████░░░░░░░░░░ 2s
172
+ │ secuencial
173
+
174
+ Agent E (Validar): ░░░░░░░░░░░░░░░░░░████████░░ 2s
175
+
176
+ Total: ~6.5s (vs ~10s secuencial, vs ~8s un modelo grande)
177
+ ```
178
+
179
+ ### 4.2 Modo Cola (una sola instancia de modelo)
180
+
181
+ ```
182
+ Agent A → B → C → (paralelo lógico) → D → E
183
+
184
+ Tiempo: ~10s pero con ~4GB RAM en lugar de ~24GB
185
+ Vs un modelo grande: 8s pero necesita 24GB de RAM
186
+ ```
187
+
188
+ ### 4.3 Comparación de costos
189
+
190
+ | Config | RAM | VRAM | Tiempo | Tokens/s | Puede correr en |
191
+ |--------|-----|------|--------|----------|-----------------|
192
+ | 1× Qwen 32B | 24 GB | 20 GB | 8s | ~15 tok/s | RTX 4090, Mac M2 Ultra |
193
+ | 3× DeepSeek 7B (cola) | 12 GB | 8 GB | 10s | ~25 tok/s (compartido) | RTX 3060, Mac M1 Pro |
194
+ | 3× DeepSeek 7B (paralelo) | 12 GB | 24 GB | 6s | ~75 tok/s (3 instancias) | RTX 4090, 2× RTX 3060 |
195
+ | 5× DeepSeek 7B (cola, con cache) | 8 GB | 4 GB | 12s | ~35 tok/s (cuantizado) | Laptop con GPU modesta |
196
+
197
+ La conclusión: **3 modelos chicos en cola en una RTX 3060 dan resultados competitivos vs un modelo grande en RTX 4090**, con un costo de hardware 3-4× menor.
198
+
199
+ ---
200
+
201
+ ## 5. DAG de Tareas (Task Dispatcher)
202
+
203
+ El dispatcher convierte una descripción tipo _"crea hook useAuth"_ en un grafo dirigido:
204
+
205
+ ```json
206
+ {
207
+ "task": "crea hook useAuth con Supabase y Zustand",
208
+ "kind": "hook",
209
+ "dag": {
210
+ "nodes": [
211
+ { "id": "types", "agent": "agent-types", "deps": [] },
212
+ { "id": "state", "agent": "agent-state", "deps": [] },
213
+ { "id": "effects", "agent": "agent-logic", "deps": ["types", "state"] },
214
+ { "id": "final", "agent": "agent-validate", "deps": ["effects"] }
215
+ ]
216
+ }
217
+ }
218
+ ```
219
+
220
+ Reglas del DAG:
221
+ - **Nodos sin dependencias** → se ejecutan en paralelo
222
+ - **Nodos con dependencias** → esperan a que sus predecesores terminen
223
+ - **Si un nodo falla** → se reintenta (según perfil) o se reasigna a otro agente
224
+ - **El DAG es serializable** → se puede cachear y re-ejecutar
225
+
226
+ El DAG se puede representar como Mermaid para visualización:
227
+
228
+ ```mermaid
229
+ graph TD
230
+ Task["hook useAuth"] --> Types[Agent: Tipos]
231
+ Task --> State[Agent: Estado]
232
+ Types --> Logic[Agent: Lógica]
233
+ State --> Logic
234
+ Logic --> Validate[Agent: Validación]
235
+ ```
236
+
237
+ ---
238
+
239
+ ## 6. Integración con el Pipeline Existente
240
+
241
+ Boost no reemplaza el flujo actual de OPL — lo envuelve:
242
+
243
+ ```
244
+ Flujo normal OPL:
245
+ workflow select → ticket → plan → implement → validate → close
246
+
247
+ Con Boost Multi-Agente:
248
+ boost generate "hook useAuth"
249
+
250
+ ├── 1. Profile Registry → detecta small (activa Boost)
251
+ ├── 2. Context Compressor → reduce AGENTS.md
252
+ ├── 3. FewShot Retriever → busca ejemplos
253
+ ├── 4. Task Dispatcher → DAG de agentes
254
+ ├── 5. Agent Pool → ejecuta DAG (paralelo/cola)
255
+ ├── 6. Hydrator → ensambla código final con anotaciones
256
+ ├── 7. Validation Loop → corrige errores
257
+ └── 8. Output → archivo listo para validar
258
+ ```
259
+
260
+ El `opl boost generate` se convierte en el **punto de entrada único** que dispara todo el pipeline multi-agente. Funciona igual para MCP vía `OPL_Boost_microtask`.
261
+
262
+ ---
263
+
264
+ ## 7. Modelo de Datos
265
+
266
+ ### Profile → define capacidades
267
+ ```json
268
+ {
269
+ "name": "small",
270
+ "agentPool": {
271
+ "mode": "queue", // "parallel" | "queue"
272
+ "maxConcurrency": 3, // paralelo máximo
273
+ "modelName": "deepseek-coder-7b",
274
+ "modelProvider": "ollama",
275
+ "modelEndpoint": "http://localhost:11434",
276
+ "contextWindow": 8000,
277
+ "temperature": 0.2,
278
+ "cacheEnabled": true
279
+ },
280
+ "features": {
281
+ "compress": true,
282
+ "fewShot": true,
283
+ "agents": true,
284
+ "hydration": true,
285
+ "validation": true
286
+ }
287
+ }
288
+ ```
289
+
290
+ ### Agent → define un worker
291
+ ```json
292
+ {
293
+ "id": "agent-types",
294
+ "role": "types",
295
+ "modelName": "deepseek-coder-7b",
296
+ "systemPrompt": "Define solo tipos e interfaces. Sin implementación.",
297
+ "inputSchema": { "description": "string" },
298
+ "outputSchema": { "types": "string", "interfaces": "string" },
299
+ "timeoutMs": 30000,
300
+ "retries": 2,
301
+ "cacheTtl": 3600
302
+ }
303
+ ```
304
+
305
+ ### Task → instancia de trabajo
306
+ ```json
307
+ {
308
+ "id": "task_001",
309
+ "description": "crea hook useAuth con Supabase",
310
+ "kind": "hook",
311
+ "dag": { "nodes": [...] },
312
+ "profile": "small",
313
+ "status": "running",
314
+ "startedAt": "2026-05-26T14:00:00Z",
315
+ "agents": {
316
+ "agent-types": { "status": "completed", "output": "..." },
317
+ "agent-state": { "status": "running", "output": null },
318
+ "agent-logic": { "status": "pending", "output": null },
319
+ "agent-validate":{ "status": "pending", "output": null }
320
+ },
321
+ "metadata": {
322
+ "totalTime": 0,
323
+ "tokenCount": 0,
324
+ "retries": 0
325
+ }
326
+ }
327
+ ```
328
+
329
+ ---
330
+
331
+ ## 8. Cache Inteligente
332
+
333
+ Resultados de agentes se cachean para reúso:
334
+
335
+ | Clave de caché | Se cachea | TTL | Beneficio |
336
+ |---------------|-----------|-----|-----------|
337
+ | `compress:{task.kind}` | Contexto comprimido | 1 hora | No re-comprimir por cada generate |
338
+ | `fewshot:{kind}:{domain}` | Ejemplos encontrados | 1 día | No re-buscar en knowledge-repo |
339
+ | `agent:{role}:{input_hash}` | Output del agente | 5 min | No re-ejecutar idéntico input |
340
+ | `dag:{task_hash}` | Plan de tareas | 5 min | No re-planificar tarea idéntica |
341
+
342
+ La caché vive en `.opencode/boost/cache/` y se limpia automáticamente.
343
+
344
+ ---
345
+
346
+ ## 9. Comparación: Plan Original vs Multi-Agente
347
+
348
+ | Aspecto | Plan original (micro-tasking) | Multi-agente |
349
+ |---------|------------------------------|--------------|
350
+ | Modelo subyacente | 1 modelo principal | Múltiples modelos pequeños |
351
+ | Paralelismo | Solo secuencial | Paralelo + secuencial |
352
+ | Especialización | El mismo modelo hace todo | Agentes especializados |
353
+ | Tolerancia a fallos | Si falla, reinicia | Reasigna agente |
354
+ | Cache | No | Sí, por agente |
355
+ | Costo hardware | GPU grande (24GB+) | GPU modesta (8-12GB) |
356
+ | DAG | Lineal | Grafo dirigido con dependencias |
357
+ | AI Cleaner | No | Sí (agente dedicado) |
358
+
359
+ ---
360
+
361
+ ## 10. Tickets Actualizados (versión Multi-Agente)
362
+
363
+ | ID | Título | Depende de |
364
+ |----|--------|------------|
365
+ | BOOST-001 | ✅ Profile Registry + Config Base | — |
366
+ | BOOST-002 | Context Compressor (Capa 1 + AI Cleaner) | BOOST-001 |
367
+ | BOOST-003 | Template Hydration System | BOOST-001 |
368
+ | BOOST-004 | Few-Shot Engine | BOOST-001 |
369
+ | BOOST-005 | Agent Pool + Task Dispatcher | BOOST-001 |
370
+ | BOOST-006 | Agentes Especializados (types, state, logic) | BOOST-005 |
371
+ | BOOST-007 | Validation Loop + Agent Validate | BOOST-006 |
372
+ | BOOST-008 | Orchestrator (index.js + progressive pipeline) | BOOST-007 |
373
+ | BOOST-009 | Cache System | BOOST-008 |
374
+ | BOOST-010 | CLI + MCP Integration | BOOST-009 |
375
+ | BOOST-011 | Auto-aprendizaje: feedback entre sesiones | BOOST-010 |
376
+
377
+ ---
378
+
379
+ ## 11. Preguntas Abiertas para Discutir
380
+
381
+ 1. **¿Paralelismo real o cola?** — ¿Vale la pena tener múltiples instancias del modelo, o basta una en cola (más lento pero menos RAM)?
382
+
383
+ 2. **¿Cuántos agentes simultáneos?** — 3 en paralelo? 5? ¿El usuario configura?
384
+
385
+ 3. **¿Soporte para diferentes providers?** — Solo Ollama? ¿O también OpenAI API, Anthropic? Podríamos mezclar: un agente barato (local) + otro caro (API) solo para validación.
386
+
387
+ 4. **¿Cache por sesión o persistente?** — TTL de 1 hora parece razonable, pero ¿el usuario puede limpiar manualmente?
388
+
389
+ 5. **¿Cuándo activar Boost automáticamente?** — ¿Solo cuando el perfil es "small"? ¿O también como opción voluntaria en "medium"?
390
+
391
+ 6. **¿El AI Cleaner debe ser obligatorio?** — ¿O el usuario decide si quiere usar un modelo para comprimir contexto (más preciso) o la capa determinística (más rápido)?
392
+
393
+ 7. **¿Cómo exponer el DAG al usuario?** — Un `opl boost microtask --dag` que muestre el grafo antes de ejecutar, para que el usuario entienda qué va a pasar.
394
+
395
+ ---
396
+
397
+ ## 12. Recursos Relacionados
398
+
399
+ - **Paper**: Mixture-of-Agents Enhances Large Language Model Capabilities (Together AI, 2024)
400
+ - **Tecnología base**: Ollama (`ollama run deepseek-coder-7b`)
401
+ - **Proyecto OPL existente**: `src/boost/` (en construcción), `src/cli/commands-boost.js`
402
+ - **Tickets activos**: `docs/04-TICKETS/INDEX.md`
403
+
404
+ ---
405
+
406
+ *Este documento es un diseño vivo. Se actualiza a medida que evoluciona el módulo Boost.*
@@ -0,0 +1,89 @@
1
+ # AGENTS.template.md — Plantilla Universal para Proyectos
2
+
3
+ > **Versión:** 1.0
4
+ > **Uso:** La IA debe ejecutar el Protocolo de Inicialización al detectar un proyecto sin AGENTS.md o con AGENTS.md incompleto.
5
+
6
+ ---
7
+
8
+ ## Protocolo de Inicialización — EJECUTAR AUTOMÁTICAMENTE
9
+
10
+ Cuando la IA detecte un proyecto NUEVO o un proyecto EXISTENTE sin AGENTS.md completo, DEBE ejecutar los siguientes pasos EN ORDEN:
11
+
12
+ ### Paso 1: Detectar el stack del proyecto
13
+ ```
14
+ Leer package.json:
15
+ - Buscar en dependencies/devDependencies: react, vue, angular, next, svelte, etc.
16
+ - Buscar runtime: node, deno, bun
17
+ - Buscar DB: supabase, firebase, prisma, mongoose, etc.
18
+ - Buscar CSS: tailwind, styled-components, emotion, etc.
19
+ - Buscar lenguaje: typescript (tsconfig.json), javascript
20
+ - Buscar plataforma: ionic, capacitor, tauri, electron, etc.
21
+ ```
22
+
23
+ ### Paso 2: Inicializar openPrompt-Lang
24
+ ```
25
+ ejecutar: opl init → Crea prompt-lang.json y estructura base docs/
26
+ ```
27
+
28
+ ### Paso 3: Generar AGENTS.md con el stack detectado
29
+ ```
30
+ Copiar ESTE archivo como AGENTS.md en la raíz del proyecto.
31
+ Reemplazar "## Stack" con las tecnologías detectadas.
32
+ Reemplazar "## Perfil" según nivel (senior por defecto).
33
+ ```
34
+
35
+ ### Paso 4: Detectar archivos fuente sin anotaciones
36
+ ```
37
+ ejecutar: npx openprompt-lang validate
38
+ Archivos que DEBEN tener @use: service, hook, page, context, component
39
+ ```
40
+
41
+ ### Paso 5: Verificar cobertura
42
+ ```
43
+ Calcular: (archivos con @use / archivos que deben tener @use) * 100
44
+ Si cobertura < 80% → seguir agregando anotaciones
45
+ ```
46
+
47
+ ### Paso 6: Verificar estado del proyecto
48
+ ```
49
+ ejecutar: npx tsc --noEmit → 0 errores
50
+ ejecutar: npx openprompt-lang validate → 0 errores
51
+ ```
52
+
53
+ ---
54
+
55
+ ## Stack
56
+ <!-- COMPLETAR con tecnologías del proyecto -->
57
+ - react
58
+ - tailwind
59
+ - typescript
60
+
61
+ ## Convenciones
62
+ - Anotaciones OPL con @kind, @contract, @limit
63
+ - NO usar any
64
+ - NO superar límites de líneas sin refactorizar
65
+ - TODO list para tareas >3 pasos
66
+
67
+ ## Enforcement — REGLAS QUE SE CUMPLEN O SE BLOQUEA
68
+
69
+ ```
70
+ PRE-COMMIT HOOK ACTIVO:
71
+ npx openprompt-lang validate --strict + tsc --noEmit
72
+ Bloquea commits si hay violaciones @limit
73
+
74
+ REGLA FUNDAMENTAL:
75
+ @limit(lines: N) NO es una sugerencia — es un LÍMITE que bloquea el commit.
76
+ Si un archivo supera su @limit, refactorizar ANTES de committear.
77
+
78
+ LECCIÓN APRENDIDA (RULES-001):
79
+ Las reglas sin enforcement son aspiraciones.
80
+ Las reglas CON enforcement son restricciones. Este proyecto usa enforcement.
81
+ ```
82
+
83
+ ## Perfil
84
+ <!-- COMPLETAR: senior, mid, junior -->
85
+ senior
86
+
87
+ ## Referencias
88
+ - Framework: openPrompt-Lang
89
+ - Tickets OPL: `opl ticket list`
@@ -0,0 +1,99 @@
1
+ # Ticket-Driven Development con openPrompt-Lang
2
+
3
+ > **Propósito:** Documentar el proceso de trabajo que combina tickets ágiles, sprints y anotaciones `@learn-error` de OPL. Este documento sirve como referencia obligatoria y como input para mejorar el workflow de OPL en siguientes versiones.
4
+
5
+ ---
6
+
7
+ ## El Workflow: Bug → Ticket → Fix → Learn-Error
8
+
9
+ ### Regla de Oro
10
+ > **No se fixea nada sin un ticket primero.**
11
+ > Todo bug, por mínimo que sea, debe generar un TICKET-NNN antes de escribir código.
12
+
13
+ ### Ciclo Completo
14
+ ```
15
+ 1. DETECTAR → 2. TICKET → 3. FIX → 4. QA → 5. LEARN → 6. ARCHIVAR
16
+ ```
17
+
18
+ #### Paso 1: Detectar
19
+ - Puede venir de: `npx tsc --noEmit`, `npx openprompt-lang validate`, auditoría manual, QA tests
20
+
21
+ #### Paso 2: Crear Ticket
22
+ - Ubicación: `docs/04-TICKETS/TICKET-NNN-descripcion.md`
23
+ - Numeración correlativa global
24
+
25
+ #### Paso 3: Fix
26
+ - Hacer cambios en el código
27
+ - Si se descubre otro bug durante el fix, crear **nuevo ticket**
28
+
29
+ #### Paso 4: QA
30
+ - `npx tsc --noEmit` — debe pasar sin errores
31
+ - `npx openprompt-lang validate` — debe pasar sin errores
32
+
33
+ #### Paso 5: Learn-Error
34
+ ```typescript
35
+ // @learn-error id=MODULO-NNN
36
+ // input='qué se hizo mal'
37
+ // expected='qué debería pasar'
38
+ // actual='qué pasó realmente'
39
+ // fix='cómo se corrigió'
40
+ // category=dominio
41
+ ```
42
+
43
+ #### Paso 6: Archivar (Opcional)
44
+ - Sprint cerrado = tickets referenciados y archivados
45
+
46
+ ---
47
+
48
+ ## Estructura de Tickets
49
+
50
+ ```markdown
51
+ # TICKET-NNN: Título Descriptivo
52
+
53
+ > **Sprint:** Sprint-N
54
+ > **Prioridad:** 🔴 Crítica | 🟠 Alta | 🟡 Media | 🟢 Baja
55
+ > **Esfuerzo:** Xh
56
+
57
+ ## Contexto
58
+ [2-3 párrafos explicando el problema]
59
+
60
+ ## Acceptance Criteria
61
+ - [ ] CRITERIO-1: Descripción verificable
62
+ - [ ] CRITERIO-2: Incluye edge cases
63
+
64
+ ## QA Tests
65
+ ```bash
66
+ # Test: comando para verificar
67
+ ```
68
+ ```
69
+
70
+ ---
71
+
72
+ ## Mejoras Propuestas para OPL v2
73
+
74
+ ### 1. Nuevo Workflow "bug → ticket"
75
+ Paso obligatorio `create_ticket` antes de fix en el default workflow.
76
+
77
+ ### 2. Integración de TODO List
78
+ Auto-creación de TODO list al comenzar tarea >3 pasos.
79
+
80
+ ### 3. Anchored Summary Automático
81
+ Al cerrar sesión, generar resumen desde TODOs completados.
82
+
83
+ ### 4. QA Tests Como Comandos
84
+ ```yaml
85
+ acceptance:
86
+ - cmd: "npx tsc --noEmit"
87
+ expect: "exit code 0"
88
+ ```
89
+
90
+ ### 5. Categorías Controladas para @learn-error
91
+ Enum validado por el validador (no strings libres).
92
+
93
+ ### 6. Archivo de Tickets como Formato Reconocido
94
+ OPL debería reconocer `docs/04-TICKETS/TICKET-NNN-*.md` y validar su estructura.
95
+
96
+ ### 7. Cross-Reference entre Tickets y Código
97
+ ```typescript
98
+ // @ref-ticket(TICKET-023)
99
+ ```
@@ -0,0 +1,66 @@
1
+ # BOOST-001 — Profile Registry + Config Base
2
+
3
+ ## Metadatos
4
+
5
+ | Campo | Valor |
6
+ |-------|-------|
7
+ | **ID** | BOOST-001 |
8
+ | **Título** | Profile Registry + Config Base |
9
+ | **Épica** | Módulo OPL Boost |
10
+ | **Prioridad** | Alta |
11
+ | **Estado** | ✅ Completado |
12
+ | **Depende de** | — |
13
+ | **Archivos** | `src/boost/profile-registry.js`, `prompt-lang.json` |
14
+
15
+ ## Descripción
16
+
17
+ Crear el sistema de perfiles de modelo que permite a OPL detectar automáticamente la capacidad del modelo activo (small/medium/large) y configurar las estrategias de boost según el perfil.
18
+
19
+ Este es el cimiento del módulo Boost — sin esto, ningún otro componente sabe cómo comportarse.
20
+
21
+ ## Criterios de Aceptación
22
+
23
+ ### CA-1: Perfiles definidos
24
+ - [x] Existen 3 perfiles: `small` (8K contexto), `medium` (32K), `large` (128K+)
25
+ - [x] Cada perfil define: `compressionLevel`, `validationLoops`, `microTasks`, `templateHydration`, `fewShot`, `contextWindow`
26
+ - [x] Los valores por defecto son razonables (small: alta compresión, 3 loops; large: sin compresión, 1 loop)
27
+
28
+ ### CA-2: Detección automática
29
+ - [x] Detecta perfil desde `process.env.OPL_BOOST_PROFILE`
30
+ - [x] Detecta perfil desde `process.env.OPL_MODEL` (mapeo por nombre conocido: deepseek-coder → small, qwen2.5-coder → medium, gpt-4 → large)
31
+ - [x] Detecta perfil desde configuración en `prompt-lang.json`
32
+ - [x] Si no hay indicación, default: `medium` (seguro)
33
+
34
+ ### CA-3: API exportable
35
+ - [x] `getProfile()` → devuelve el perfil activo con todos sus valores
36
+ - [x] `setProfile(name)` → fuerza un perfil
37
+ - [x] `listProfiles()` → lista los perfiles disponibles
38
+ - [x] `detectProfile()` → lógica de detección automática
39
+
40
+ ### CA-4: Config en prompt-lang.json
41
+ - [x] Sección `boost` agregada a `prompt-lang.json`
42
+ - [x] `boost.enabled: true/false`
43
+ - [x] `boost.defaultProfile: "auto" | "small" | "medium" | "large"`
44
+ - [x] `boost.profiles` con la configuración de cada perfil
45
+
46
+ ### CA-5: CLI check
47
+ - [x] `opl boost check` muestra diagnóstico: perfil detectado, valores activos, modo
48
+
49
+ ### CA-6: Tests
50
+ - [ ] Tests unitarios para detección de perfil (con variables de entorno mock)
51
+ - [ ] Tests para valores por defecto
52
+ - [ ] Tests para forzar perfil
53
+
54
+ ## Archivos a crear/modificar
55
+
56
+ | Archivo | Acción |
57
+ |---------|--------|
58
+ | `src/boost/profile-registry.js` | ➕ Crear |
59
+ | `prompt-lang.json` | ✏️ Modificar (sección boost) |
60
+ | `src/cli/commands-boost.js` | ➕ Crear (registro inicial con `opl boost check`) |
61
+
62
+ ## Notas técnicas
63
+
64
+ - No debe tener dependencias externas más allá de `fs` y `path`
65
+ - El perfil se cachea en memoria para no re-detectar en cada llamada
66
+ - El CLI `opl boost check` debe funcionar incluso si el resto del módulo Boost no está implementado