openprompt-lang 1.2.7 → 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 (79) hide show
  1. package/README.md +62 -8
  2. package/bin/cli.js +2 -0
  3. package/docs/00-ARCHITECTURE/OPL-BOOST-MULTI-AGENT.md +406 -0
  4. package/docs/02-STANDARDS/AGENTS.template.md +89 -0
  5. package/docs/02-STANDARDS/ticket-driven-development.md +99 -0
  6. package/docs/04-TICKETS/BOOST-001-profile-registry.md +66 -0
  7. package/docs/04-TICKETS/BOOST-002-context-compression.md +58 -0
  8. package/docs/04-TICKETS/BOOST-003-template-hydration.md +69 -0
  9. package/docs/04-TICKETS/BOOST-004-fewshot-engine.md +58 -0
  10. package/docs/04-TICKETS/BOOST-005-agent-pool.md +69 -0
  11. package/docs/04-TICKETS/BOOST-006-specialized-agents.md +53 -0
  12. package/docs/04-TICKETS/BOOST-007-validation-loop.md +56 -0
  13. package/docs/04-TICKETS/BOOST-008-orchestrator.md +71 -0
  14. package/docs/04-TICKETS/BOOST-009-cache-system.md +56 -0
  15. package/docs/04-TICKETS/BOOST-010-cli-mcp.md +67 -0
  16. package/docs/04-TICKETS/BOOST-011-self-learning.md +50 -0
  17. package/docs/04-TICKETS/BOOST-012-prompt-preamble.md +109 -0
  18. package/docs/04-TICKETS/BOOST-013-hydrator-duplicate-code.md +132 -0
  19. package/docs/04-TICKETS/BOOST-014-multiagent-missing-parts.md +87 -0
  20. package/docs/04-TICKETS/BOOST-015-skeleton-type-missing.md +76 -0
  21. package/docs/04-TICKETS/BOOST-016-output-path-duplicate.md +68 -0
  22. package/docs/04-TICKETS/INDEX.md +89 -0
  23. package/docs/04-TICKETS/_archive/BOOST-005-micro-tasking.md +67 -0
  24. package/docs/04-TICKETS/_archive/BOOST-006-validation-loop.md +66 -0
  25. package/docs/04-TICKETS/_archive/BOOST-007-progressive-pipeline.md +69 -0
  26. package/docs/04-TICKETS/_archive/BOOST-008-cli-mcp-integration.md +74 -0
  27. package/docs/AI_CONTEXT.md +16 -0
  28. package/docs/EMBEDDINGS.md +214 -0
  29. package/docs/ONBOARDING_WORKFLOW.md +151 -0
  30. package/docs/OPL_ACADEMIC_ISSUES.md +158 -0
  31. package/docs/WEB_SCRAPER_PLAN.md +454 -0
  32. package/package.json +9 -2
  33. package/scripts/postinstall.js +37 -0
  34. package/src/boost/agent-pool.js +442 -0
  35. package/src/boost/agents/index.js +79 -0
  36. package/src/boost/cache.js +241 -0
  37. package/src/boost/context-compressor.js +354 -0
  38. package/src/boost/fewshot-retriever.js +332 -0
  39. package/src/boost/hardware-detector.js +486 -0
  40. package/src/boost/hydrator.js +398 -0
  41. package/src/boost/index.js +60 -0
  42. package/src/boost/orchestrator.js +615 -0
  43. package/src/boost/preamble.js +217 -0
  44. package/src/boost/profile-registry.js +264 -0
  45. package/src/boost/self-learn.js +247 -0
  46. package/src/boost/skeletons/component.skeleton.js +24 -0
  47. package/src/boost/skeletons/hook.skeleton.js +27 -0
  48. package/src/boost/skeletons/index.js +67 -0
  49. package/src/boost/skeletons/page.skeleton.js +22 -0
  50. package/src/boost/skeletons/service.skeleton.js +20 -0
  51. package/src/boost/skeletons/store.skeleton.js +18 -0
  52. package/src/boost/skeletons/type.skeleton.js +11 -0
  53. package/src/boost/task-dispatcher.js +142 -0
  54. package/src/boost/validation-loop.js +495 -0
  55. package/src/cli/commands-boost.js +394 -0
  56. package/src/cli/commands-knowledge.js +1 -0
  57. package/src/cli/commands-opl.js +79 -1
  58. package/src/cli/commands-workflow.js +125 -6
  59. package/src/commands/init-core.js +169 -5
  60. package/src/commands/knowledge-ops.js +52 -0
  61. package/src/commands/opl-embeddings.js +556 -0
  62. package/src/commands/opl-help.js +26 -2
  63. package/src/commands/opl-search.js +106 -2
  64. package/src/commands/opl-webscrape.js +390 -0
  65. package/src/commands/workflow/epic-cli.js +192 -0
  66. package/src/commands/workflow/select.js +146 -0
  67. package/src/commands/workflow/sprint-cli.js +174 -0
  68. package/src/core/webscrape/analyzer.js +481 -0
  69. package/src/core/webscrape/deep-scraper.js +1027 -0
  70. package/src/core/workflow/epic-manager.js +845 -0
  71. package/src/core/workflow/gates.js +180 -1
  72. package/src/core/workflow/selector.js +707 -0
  73. package/src/embeddings/chunker.js +450 -0
  74. package/src/embeddings/embedder.js +431 -0
  75. package/src/embeddings/index-pipeline.js +320 -0
  76. package/src/embeddings/vector-store.js +505 -0
  77. package/src/mcp-refactor/handlers/boost.js +295 -0
  78. package/src/mcp-refactor/router.js +19 -0
  79. package/src/mcp-refactor/tools.js +113 -0
@@ -0,0 +1,67 @@
1
+ # BOOST-005 — Micro-Tasking Engine
2
+
3
+ ## Metadatos
4
+
5
+ | Campo | Valor |
6
+ |-------|-------|
7
+ | **ID** | BOOST-005 |
8
+ | **Título** | Micro-Tasking Engine |
9
+ | **Épica** | Módulo OPL Boost |
10
+ | **Prioridad** | Alta |
11
+ | **Estado** | 🔴 Pendiente |
12
+ | **Depende de** | BOOST-003, BOOST-004 |
13
+ | **Archivos** | `src/boost/micro-tasker.js` |
14
+
15
+ ## Descripción
16
+
17
+ Motor que descompone tareas complejas de generación de código en micro-tareas secuenciales. Cada micro-tarea es una instrucción simple que un modelo pequeño puede seguir sin saturarse. El orquestador ejecuta las micro-tareas en cadena y el ensamblador une los resultados parciales en el archivo final.
18
+
19
+ ## Criterios de Aceptación
20
+
21
+ ### CA-1: Planificador de micro-tareas
22
+ - [ ] `plan(task, kind)` → devuelve array de micro-tareas con: id, instrucción, formato esperado, validator
23
+ - [ ] Para un hook: ["Define tipos/interface", "Define estado y efectos", "Implementa lógica", "Exporta"]
24
+ - [ ] Para un componente: ["Define props", "Define variantes cva", "Implementa JSX", "Exporta"]
25
+ - [ ] Para un page: ["Define imports y tipos", "Implementa layout", "Conecta datos", "Exporta"]
26
+
27
+ ### CA-2: Orquestador secuencial
28
+ - [ ] `execute(task, kind, profile)` → ejecuta micro-tareas una por una
29
+ - [ ] Cada micro-tarea se ejecuta con contexto mínimo (solo instrucción actual + resultado anterior)
30
+ - [ ] Hay un shared state entre micro-tareas para mantener coherencia
31
+ - [ ] Si una micro-tarea falla, el orquestador puede reintentarla (según perfil)
32
+
33
+ ### CA-3: Ensamblador
34
+ - [ ] `assemble(partialResults, kind)` → combina resultados parciales en archivo final
35
+ - [ ] Usa el hydrator (BOOST-003) para generar el código final con anotaciones
36
+ - [ ] Si hay conflictos entre resultados parciales, resuelve con heurísticas (último valor gana)
37
+
38
+ ### CA-4: CLI microtask
39
+ - [ ] `opl boost microtask "crea hook useAuth"` → muestra el plan de micro-tareas sin ejecutar
40
+ - [ ] `opl boost microtask "crea hook useAuth" --execute` → ejecuta el plan
41
+ - [ ] Opción `--verbose` muestra cada paso y su resultado
42
+ - [ ] Opción `--plan-only` solo muestra el plan (alias de sin flag)
43
+
44
+ ### CA-5: Integración con generate
45
+ - [ ] Cuando `opl boost generate` se ejecuta con perfil small, usa micro-tasking automáticamente
46
+ - [ ] Cuando el perfil es medium, decide según complejidad de la tarea
47
+ - [ ] Cuando el perfil es large, no usa micro-tasking
48
+
49
+ ### CA-6: Tests
50
+ - [ ] Test de planificación para cada @kind que soporta
51
+ - [ ] Test de orquestación con respuestas mock
52
+ - [ ] Test de ensamblado con resultados parciales
53
+ - [ ] Test de fallo de micro-tarea y reintento
54
+
55
+ ## Archivos a crear/modificar
56
+
57
+ | Archivo | Acción |
58
+ |---------|--------|
59
+ | `src/boost/micro-tasker.js` | ➕ Crear |
60
+
61
+ ## Notas técnicas
62
+
63
+ - El orquestador es el componente más complejo del módulo Boost
64
+ - El shared state es un simple objeto JSON que se pasa entre micro-tareas
65
+ - Cada micro-tarea tiene un `validator` opcional que verifica el output antes de pasar a la siguiente
66
+ - Los validators pueden ser: validate OPL, typecheck básico, o función custom
67
+ - El orquestador debe ser extensible para soportar nuevos tipos de micro-tareas
@@ -0,0 +1,66 @@
1
+ # BOOST-006 — Validation Feedback Loop
2
+
3
+ ## Metadatos
4
+
5
+ | Campo | Valor |
6
+ |-------|-------|
7
+ | **ID** | BOOST-006 |
8
+ | **Título** | Validation Feedback Loop |
9
+ | **Épica** | Módulo OPL Boost |
10
+ | **Prioridad** | Alta |
11
+ | **Estado** | 🔴 Pendiente |
12
+ | **Depende de** | BOOST-005 |
13
+ | **Archivos** | `src/boost/validation-loop.js` |
14
+
15
+ ## Descripción
16
+
17
+ Sistema post-generación que corre validación OPL y TypeScript sobre el código generado, y retroalimenta los errores específicos al modelo para que los corrija. Los modelos pequeños son significativamente mejores corrigiendo errores específicos que generando código correcto la primera vez.
18
+
19
+ Si tras N reintentos el código sigue fallando, escala hacia abajo la complejidad de la tarea.
20
+
21
+ ## Criterios de Aceptación
22
+
23
+ ### CA-1: Validación post-generación
24
+ - [ ] `validate(code, kind)` → ejecuta validación OPL sobre el código generado
25
+ - [ ] Detecta: errores de anotaciones, errores de tipo, errores de sintaxis, violaciones de @limit
26
+ - [ ] Retorna array de errores con: tipo, mensaje, línea, sugerencia de fix
27
+
28
+ ### CA-2: Feedback loop
29
+ - [ ] `feedbackLoop(code, errors, profile)` → intenta corregir errores iterativamente
30
+ - [ ] Por cada error, genera un mensaje de feedback claro para el modelo
31
+ - [ ] El feedback dice exactamente qué está mal y da una sugerencia de cómo arreglarlo
32
+ - [ ] El modelo corrige y se re-valida
33
+ - [ ] Número de reintentos según perfil: small=3, medium=2, large=1
34
+
35
+ ### CA-3: Escalado de complejidad
36
+ - [ ] Si tras 3 reintentos (small) el código sigue fallando, reduce complejidad
37
+ - [ ] Estrategias de escalado: simplificar lógica, usar skeleton más básico, dividir en más micro-tareas
38
+ - [ ] `escalateDown(task, attempt)` → devuelve versión simplificada de la tarea
39
+ - [ ] El escalado se registra como @learn-error para futuras sesiones
40
+
41
+ ### CA-4: Integración con micro-tasker
42
+ - [ ] Cuando una micro-tarea individual falla la validación, se reintenta antes de pasar a la siguiente
43
+ - [ ] Si la micro-tarea falla consistentemente, el orquestador (BOOST-005) decide escalar
44
+
45
+ ### CA-5: Reporte de calidad
46
+ - [ ] `generateReport(codeHistory, errors)` → genera reporte de cuántos intentos tomó, qué errores se corrigieron
47
+ - [ ] El reporte se puede incluir en la documentación de la sesión
48
+
49
+ ### CA-6: Tests
50
+ - [ ] Test de detección de errores de anotaciones
51
+ - [ ] Test de feedback loop con mock de correcciones
52
+ - [ ] Test de escalado tras N reintentos fallidos
53
+ - [ ] Test de reporte de calidad
54
+
55
+ ## Archivos a crear/modificar
56
+
57
+ | Archivo | Acción |
58
+ |---------|--------|
59
+ | `src/boost/validation-loop.js` | ➕ Crear |
60
+
61
+ ## Notas técnicas
62
+
63
+ - La validación OPL se hace invocando `npx openprompt-lang validate` o usando el módulo de validación directamente
64
+ - El feedback loop necesita acceso al modelo para re-generar — pero en esta fase inicial, solo prepara los mensajes de feedback (la re-generación la hace quien llame al boost)
65
+ - El escalado de complejidad es determinista (no necesita IA): simplifica basado en reglas
66
+ - Los errores más comunes en modelos pequeños: @kind faltante, @limit excedido, tipos incorrectos
@@ -0,0 +1,69 @@
1
+ # BOOST-007 — Progressive Disclosure Pipeline
2
+
3
+ ## Metadatos
4
+
5
+ | Campo | Valor |
6
+ |-------|-------|
7
+ | **ID** | BOOST-007 |
8
+ | **Título** | Progressive Disclosure Pipeline |
9
+ | **Épica** | Módulo OPL Boost |
10
+ | **Prioridad** | Alta |
11
+ | **Estado** | 🔴 Pendiente |
12
+ | **Depende de** | BOOST-002, BOOST-006 |
13
+ | **Archivos** | `src/boost/progressive-pipeline.js`, `src/boost/index.js` |
14
+
15
+ ## Descripción
16
+
17
+ Pipeline multi-etapa que orquesta todos los componentes Boost en un flujo coherente. Cada etapa expone gradualmente más complejidad al modelo, de modo que nunca ve el problema completo de golpe.
18
+
19
+ El `index.js` es el punto de entrada unificado del módulo Boost.
20
+
21
+ ## Criterios de Aceptación
22
+
23
+ ### CA-1: Pipeline multi-etapa
24
+ - [ ] **Stage 1 — Diseño**: el modelo define props, tipos, interface, contract sin implementar lógica
25
+ - [ ] **Stage 2 — Implementación**: el modelo rellena el skeleton con lógica de negocio
26
+ - [ ] **Stage 3 — Polish**: el modelo recibe feedback de validación y corrige errores
27
+ - [ ] Cada etapa es más específica que la anterior
28
+
29
+ ### CA-2: Orchestrador unificado (index.js)
30
+ - [ ] `boost(task, options)` → orquesta todo el pipeline
31
+ - [ ] `options.profile` → perfil a usar
32
+ - [ ] `options.kind` → tipo de archivo a generar
33
+ - [ ] `options.dryRun` → mostrar plan sin ejecutar
34
+ - [ ] `options.output` → archivo de salida (opcional)
35
+ - [ ] Retorna: `{ code, metadata, report }`
36
+
37
+ ### CA-3: Metadata de ejecución
38
+ - [ ] `{ profile, stages: [{name, duration, result}], totalTime, compressionRatio, validationAttempts }`
39
+ - [ ] Permite comparar rendimiento entre perfiles
40
+ - [ ] Se puede exportar como JSON
41
+
42
+ ### CA-4: Modo dry-run
43
+ - [ ] `boost(task, { dryRun: true })` → muestra qué haría en cada etapa sin ejecutar
44
+ - [ ] Muestra: plan de micro-tareas, skeletons a usar, ejemplos a inyectar
45
+
46
+ ### CA-5: Integración con compress
47
+ - [ ] Antes del Stage 1, comprime el contexto según perfil (usa BOOST-002)
48
+ - [ ] El Stage 1 recibe contexto mínimo
49
+ - [ ] Los Stages 2 y 3 pueden recibir contexto adicional si es necesario
50
+
51
+ ### CA-6: Tests
52
+ - [ ] Test de pipeline completo con mock de modelo
53
+ - [ ] Test de metadata de ejecución
54
+ - [ ] Test de dry-run
55
+ - [ ] Test de integración: pipeline completo produce código válido
56
+
57
+ ## Archivos a crear/modificar
58
+
59
+ | Archivo | Acción |
60
+ |---------|--------|
61
+ | `src/boost/index.js` | ➕ Crear (orquestador unificado) |
62
+ | `src/boost/progressive-pipeline.js` | ➕ Crear (pipeline multi-etapa) |
63
+
64
+ ## Notas técnicas
65
+
66
+ - El index.js es el API público del módulo Boost
67
+ - Cada etapa del pipeline es un plugin: `pipeline.use(stage)` para futura extensibilidad
68
+ - El pipeline registra tiempo de cada etapa para diagnóstico
69
+ - Si una etapa falla, el pipeline detiene la ejecución y devuelve error con estado parcial
@@ -0,0 +1,74 @@
1
+ # BOOST-008 — CLI + MCP Integration
2
+
3
+ ## Metadatos
4
+
5
+ | Campo | Valor |
6
+ |-------|-------|
7
+ | **ID** | BOOST-008 |
8
+ | **Título** | CLI + MCP Integration |
9
+ | **Épica** | Módulo OPL Boost |
10
+ | **Prioridad** | Media |
11
+ | **Estado** | 🔴 Pendiente |
12
+ | **Depende de** | BOOST-007 |
13
+ | **Archivos** | `src/cli/commands-boost.js`, `src/mcp-server.js`, `src/mcp-refactor/router.js`, `AGENTS.md` |
14
+
15
+ ## Descripción
16
+
17
+ Integrar el módulo Boost con la CLI de OPL (comandos `opl boost *`) y con el servidor MCP (tools `OPL_Boost_*`). También actualizar AGENTS.md con la sección Boost Workflow para que las IAs futuras sepan cómo usar el módulo.
18
+
19
+ ## Criterios de Aceptación
20
+
21
+ ### CA-1: CLI completa
22
+ - [ ] `opl boost check` → diagnóstico del perfil activo
23
+ - [ ] `opl boost profile <name>` → forzar perfil (small/medium/large/auto)
24
+ - [ ] `opl boost generate <desc>` → generar código con pipeline completo
25
+ - [ ] `opl boost microtask <task>` → descomponer tarea en micro-tareas
26
+ - [ ] Todos los comandos tienen `--help` descriptivo
27
+ - [ ] Todos los comandos tienen `--dry-run`
28
+
29
+ ### CA-2: MCP tools
30
+ - [ ] `OPL_Boost_profile` → mostrar perfil actual del modelo
31
+ - [ ] `OPL_Boost_compress` → comprimir contexto según perfil
32
+ - [ ] `OPL_Boost_microtask` → ejecutar pipeline de micro-tasking
33
+ - [ ] `OPL_Boost_hydrate` → hidratar un skeleton con lógica
34
+ - [ ] `OPL_Boost_validate` → loop de validación con retroalimentación
35
+ - [ ] Las tools aparecen en el servidor MCP y son invocables
36
+
37
+ ### CA-3: AGENTS.md actualizado
38
+ - [ ] Nueva sección "## 🚀 OPL Boost — Potenciar modelos pequeños" en AGENTS.md
39
+ - [ ] Describe: qué es, cuándo usarlo, cómo configurarlo
40
+ - [ ] Tabla de perfiles (small/medium/large)
41
+ - [ ] Workflow Boost para IAs que usan el módulo
42
+ - [ ] Referencia rápida de comandos `opl boost *`
43
+
44
+ ### CA-4: Registrar en bin/cli.js
45
+ - [ ] `registerBoost(program)` llamado desde `bin/cli.js`
46
+ - [ ] Import y registro consistente con los otros comandos
47
+
48
+ ### CA-5: Registrar en MCP server
49
+ - [ ] Tools de boost agregadas a TOOLS en `src/mcp-refactor/tools.js`
50
+ - [ ] Router en `src/mcp-refactor/router.js` maneja boost tools
51
+ - [ ] Workflow generator en `src/mcp-workflow.js` incluye boost
52
+
53
+ ### CA-6: Tests de integración
54
+ - [ ] Test de CLI: `opl boost check` funciona sin errores
55
+ - [ ] Test de MCP: tools registradas correctamente
56
+ - [ ] Test que todos los comandos tienen `--help`
57
+
58
+ ## Archivos a crear/modificar
59
+
60
+ | Archivo | Acción |
61
+ |---------|--------|
62
+ | `src/cli/commands-boost.js` | ➕ Crear (registro completo de comandos) |
63
+ | `bin/cli.js` | ✏️ Modificar (import + register) |
64
+ | `src/mcp-server.js` | ✏️ Modificar (boost tools en TOOLS) |
65
+ | `src/mcp-refactor/router.js` | ✏️ Modificar (boost routes) |
66
+ | `src/mcp-workflow.js` | ✏️ Modificar (boost instructions) |
67
+ | `AGENTS.md` | ✏️ Modificar (sección Boost) |
68
+
69
+ ## Notas técnicas
70
+
71
+ - Los MCP tools deben seguir el patrón existente en `src/mcp-refactor/tools.js`
72
+ - Los comandos CLI deben seguir el patrón de commander (`.command().description().action()`)
73
+ - La sección de AGENTS.md debe seguir el tono y formato del documento existente
74
+ - No debe romper comandos existentes ni tools MCP existentes
@@ -60,8 +60,24 @@ npx openPrompt-Lang validate # Validar anotaciones
60
60
  npx openPrompt-Lang lang list # Listar módulos
61
61
  npx openPrompt-Lang teach <id> # Aprender de un template
62
62
  npx openPrompt-Lang qa-gen # Generar tests de regresión
63
+
64
+ # OPL Boost (multi-agente para modelos pequeños)
65
+ opl boost check # Diagnóstico perfil + estado del sistema
66
+ opl boost profile [name] # Ver/forzar perfil (small/medium/large/auto)
67
+ opl boost setup # Detectar hardware + configurar
68
+ opl boost generate <desc> # Generar código con pipeline Boost
69
+ opl boost microtask <task> # Descomponer tarea en DAG
70
+ opl boost cache [action] # Gestionar caché (stats, clear, clean)
63
71
  ```
64
72
 
73
+ ## 5.5. Módulo OPL Boost
74
+ - **12 tickets implementados** (BOOST-001 a BOOST-012, todos completados)
75
+ - **Pipeline**: profile detection → context compression → few-shot → agent pool → skeleton hydration → validation loop
76
+ - **Dos modos**: single-pass (default) y multi-agent (`--multi-agent`)
77
+ - **Código**: `src/boost/` (17 archivos, ~3,700 líneas)
78
+ - **MCP tools**: `boost_generate`, `boost_compress`, `boost_profile`, `boost_plan`, `boost_validate`
79
+ - **Filosofía**: cada componente funciona independientemente; el multi-agente es opt-in
80
+
65
81
  ## 6. Referencia canónica
66
82
  - `.openprompt/FRAMEWORK.md` — Manual completo: anotaciones, comandos CLI, MCP, dominios, módulos, reglas estrictas.
67
83
  - `AGENTS.md` — Stack, convenciones, UI, calidad.
@@ -0,0 +1,214 @@
1
+ # Sistema de Embeddings Vectoriales
2
+
3
+ ## 📋 Overview
4
+
5
+ openPrompt-Lang ahora soporta búsqueda semántica vectorial. En lugar de depender solo de coincidencia de palabras clave (tags, fulltext) o un mapa semántico manual, los documentos se dividen en **chunks semánticos**, cada chunk se convierte en un **vector embedding**, y las consultas se resuelven por **similitud de coseno**.
6
+
7
+ ## 🏗️ Arquitectura
8
+
9
+ ```
10
+ Documento (opl format)
11
+
12
+
13
+ ┌─────────────────┐
14
+ │ chunker.js │ Divide: paragraph | section | fixed
15
+ └────────┬────────┘
16
+ │ chunks[]
17
+
18
+ ┌─────────────────┐
19
+ │ embedder.js │ Vectoriza: Ollama | Transformers.js | auto-fallback
20
+ └────────┬────────┘
21
+ │ vectors[]
22
+
23
+ ┌─────────────────────┐
24
+ │ vector-store.js │ Almacena + busca en SQLite
25
+ │ (embeddings table) │
26
+ └────────┬────────────┘
27
+ │ search(queryVector)
28
+
29
+ ┌─────────────────┐
30
+ │ index-pipeline │ Orquestador: chunk → embed → store
31
+ └─────────────────┘
32
+ ```
33
+
34
+ ## 📦 Módulos
35
+
36
+ | Módulo | Archivo | Responsabilidad |
37
+ |--------|---------|----------------|
38
+ | Chunker | `src/embeddings/chunker.js` | Divide documentos en chunks semánticos |
39
+ | Embedder | `src/embeddings/embedder.js` | Genera vectores numéricos (embeddings) |
40
+ | Vector Store | `src/embeddings/vector-store.js` | Almacena/consulta vectores en SQLite |
41
+ | Index Pipeline | `src/embeddings/index-pipeline.js` | Orquesta chunk → embed → store |
42
+
43
+ ## 🔧 Comandos CLI
44
+
45
+ ### `opl embeddings index <docId>`
46
+
47
+ Indexa un documento en el vector store.
48
+
49
+ ```bash
50
+ opl embeddings index react-fullstack-app
51
+ opl embeddings index react-fullstack-app --strategy paragraph
52
+ opl embeddings index react-fullstack-app --provider transformers
53
+ opl embeddings index react-fullstack-app --dry-run # simular sin persistir
54
+ opl embeddings index react-fullstack-app --resume # saltar chunks existentes
55
+ ```
56
+
57
+ ### `opl embeddings status`
58
+
59
+ Muestra el estado actual del índice vectorial.
60
+
61
+ ```bash
62
+ opl embeddings status
63
+ # 📊 Estado del índice de embeddings
64
+ # Chunks indexados: 245
65
+ # Documentos: 12
66
+ # Dimensión: 768
67
+ # Modelo: nomic-embed-text
68
+ # Último indexado: 2026-05-24 20:00:00
69
+ # Almacenamiento: 1.2 MB
70
+ ```
71
+
72
+ ### `opl embeddings remove <docId>`
73
+
74
+ Elimina todos los embeddings de un documento.
75
+
76
+ ```bash
77
+ opl embeddings remove react-fullstack-app
78
+ ```
79
+
80
+ ### `opl embeddings config`
81
+
82
+ Ver o cambiar el proveedor de embeddings.
83
+
84
+ ```bash
85
+ opl embeddings config # ver estado
86
+ opl embeddings config --provider transformers # cambiar a transformers
87
+ opl embeddings config --provider ollama # cambiar a ollama
88
+ ```
89
+
90
+ ### `opl search --mode vector <query>`
91
+
92
+ Búsqueda semántica con embeddings.
93
+
94
+ ```bash
95
+ opl search "autenticacion react" --mode vector # solo vectorial
96
+ opl search "pagos chile" --mode hybrid # híbrido incluye vector
97
+ ```
98
+
99
+ ## 🧠 Proveedores de Embeddings
100
+
101
+ ### Ollama (primario, default)
102
+
103
+ - **Modelo**: `nomic-embed-text` (768 dimensiones)
104
+ - **URL**: `http://localhost:11434`
105
+ - **Requisito**: `ollama pull nomic-embed-text`
106
+ - **Ventaja**: Local, rápido, gratuito
107
+
108
+ ### Transformers.js (fallback)
109
+
110
+ - **Modelo**: `Xenova/all-MiniLM-L6-v2` (384 dimensiones)
111
+ - **Requisito**: `npm install @xenova/transformers`
112
+ - **Ventaja**: No requiere servidor externo
113
+
114
+ ### Auto-fallback
115
+
116
+ El embedder intenta Ollama primero. Si no está disponible, cae automáticamente a Transformers.js. Si ningún proveedor funciona, lanza un error instructivo.
117
+
118
+ ## 📐 Estrategias de Chunking
119
+
120
+ | Estrategia | Descripción | Cuándo usarla |
121
+ |------------|-------------|---------------|
122
+ | `section` (default) | Divide por `##` respetando títulos | Documentos con estructura clara |
123
+ | `paragraph` | Divide por doble salto de línea | Documentos sin estructura jerárquica |
124
+ | `fixed` | Divide por tamaño fijo con solapamiento | Documentos sin estructura detectada |
125
+
126
+ ## 🔍 Búsqueda Híbrida
127
+
128
+ `hybridSearch` combina FTS5 (texto completo) con reordenamiento semántico:
129
+
130
+ 1. **FTS5**: Busca palabras clave en el índice de texto completo
131
+ 2. **Coseno**: Reordena los candidatos por similitud semántica
132
+
133
+ Esto da lo mejor de ambos mundos: precisión de FTS + semántica de embeddings.
134
+
135
+ ## 💾 Esquema SQLite
136
+
137
+ ```sql
138
+ CREATE TABLE IF NOT EXISTS embeddings (
139
+ id TEXT PRIMARY KEY,
140
+ doc_id TEXT NOT NULL,
141
+ doc_title TEXT NOT NULL DEFAULT '',
142
+ chapter_idx INTEGER NOT NULL DEFAULT 0,
143
+ chapter_title TEXT NOT NULL DEFAULT '',
144
+ chunk_idx INTEGER NOT NULL DEFAULT 0,
145
+ content TEXT NOT NULL,
146
+ vector BLOB NOT NULL,
147
+ dimension INTEGER NOT NULL DEFAULT 768,
148
+ tokens INTEGER NOT NULL DEFAULT 0,
149
+ model TEXT NOT NULL DEFAULT '',
150
+ strategy TEXT NOT NULL DEFAULT 'section',
151
+ metadata TEXT NOT NULL DEFAULT '{}',
152
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
153
+ );
154
+
155
+ CREATE VIRTUAL TABLE IF NOT EXISTS embeddings_fts USING fts5(
156
+ content,
157
+ content=embeddings,
158
+ content_rowid=rowid
159
+ );
160
+ ```
161
+
162
+ Los vectores se serializan como BLOB de Float32Array (4 bytes por float).
163
+
164
+ ## 📊 Límites de Escalabilidad
165
+
166
+ | Métrica | Límite actual | Estrategia futura |
167
+ |---------|--------------|-------------------|
168
+ | Chunks totales | ~5000 | Búsqueda lineal OK |
169
+ | Chunks > 100k | Podría ser lento | Índice HNSW |
170
+ | Dimensión vectores | 768 (Ollama) / 384 (Transformers) | Cualquier dimensión |
171
+ | Latencia búsqueda | < 50ms en 5000 chunks | Indexación en lote |
172
+
173
+ ## ✅ Tests
174
+
175
+ ```bash
176
+ npx vitest run tests/embeddings/ # 87 tests, 4 suites
177
+ ```
178
+
179
+ | Suite | Tests | Cubre |
180
+ |-------|-------|-------|
181
+ | `chunker.test.js` | 20 | Estrategias, límites, edge cases |
182
+ | `embedder.test.js` | 23 | Proveedores, fallback, errores |
183
+ | `vector-store.test.js` | 30 | CRUD, búsqueda, FTS5, híbrida |
184
+ | `index-pipeline.test.js` | 14 | Pipeline completo, reindex, batch |
185
+
186
+ ## 🔗 Integración con OPL Search
187
+
188
+ El modo `--mode vector` en `opl search`:
189
+ 1. Toma la consulta del usuario
190
+ 2. La convierte a vector con `embed()`
191
+ 3. Busca en el vector store con `hybridSearch()`
192
+ 4. Mapea chunks a documentos y muestra resultados
193
+
194
+ El modo `--mode hybrid` incluye los resultados vectoriales junto con tags, fulltext y semántico.
195
+
196
+ ## ⚡ Auto-embedding
197
+
198
+ Cuando se ingesta un PDF con `knowledge ingest`, se genera automáticamente el embedding del documento. Para saltar este paso:
199
+
200
+ ```bash
201
+ knowledge ingest mi-documento.pdf --no-embed
202
+ ```
203
+
204
+ ## 🚀 Roadmap
205
+
206
+ - [x] Chunker (3 estrategias)
207
+ - [x] Embedder (Ollama + Transformers.js)
208
+ - [x] Vector Store (SQLite + FTS5)
209
+ - [x] Index Pipeline
210
+ - [x] CLI: `opl embeddings index/status/remove/config`
211
+ - [x] Modo vector en `opl search`
212
+ - [x] Auto-embedding en `knowledge ingest`
213
+ - [ ] Web scraper (`opl webscrape`)
214
+ - [ ] Onboarding workflow en `opl init`
@@ -0,0 +1,151 @@
1
+ # 🚀 Onboarding Workflow para IA en openPrompt-Lang
2
+
3
+ > **Propósito**: Este documento es el punto de entrada OBLIGATORIO para cualquier sesión de IA
4
+ > en un proyecto que ya tiene elementos de openPrompt-Lang.
5
+ >
6
+ > **Generado por**: `opl init` al finalizar la configuración
7
+ > **Versión del documento**: 1.0.0
8
+ > **Última actualización**: {{fecha}}
9
+
10
+ ---
11
+
12
+ ## 📋 Instrucciones para la IA
13
+
14
+ Al iniciar una sesión en este proyecto, SIGUE ESTE FLUJO ESTRICTAMENTE:
15
+
16
+ ```
17
+ 1. LEER este documento (ONBOARDING_WORKFLOW.md) → entender el estado del proyecto
18
+ 2. LEER AGENTS.md → stack, convenciones, reglas
19
+ 3. LEER docs/AI_CONTEXT.md → memoria del proyecto
20
+ 4. EJECUTAR workflow_check → ver qué pasos del workflow OPL faltan
21
+ 5. EJECUTAR context_unified → panorama completo del proyecto
22
+ 6. CONTINUAR desde el último paso registrado (ver sección "Estado Actual")
23
+ ```
24
+
25
+ ---
26
+
27
+ ## 🔍 Detección Automática de Contexto
28
+
29
+ ### ¿Este proyecto ya tiene OPL?
30
+
31
+ Sí / No (según corresponda)
32
+
33
+ | Elemento | Estado | Ruta |
34
+ |----------|--------|------|
35
+ | `prompt-lang.json` | ✅ / ❌ | `/ruta` |
36
+ | `AGENTS.md` | ✅ / ❌ | `/ruta` |
37
+ | `docs/AI_CONTEXT.md` | ✅ / ❌ | `/ruta` |
38
+ | `docs/FRAMEWORK.md` | ✅ / ❌ | `/ruta` |
39
+ | `src/` con anotaciones | ✅ / ❌ | `/ruta` |
40
+ | `.opencode/` config | ✅ / ❌ | `/ruta` |
41
+ | `.openprompt/` | ✅ / ❌ | `/ruta` |
42
+ | `knowledge-repo/` | ✅ / ❌ | `/ruta` |
43
+ | Base de conocimiento | ✅ / ❌ | `/ruta` |
44
+ | Sistema de enseñanza | ✅ / ❌ | `/ruta` |
45
+
46
+ ---
47
+
48
+ ## 🧩 Stack del Proyecto
49
+
50
+ | Componente | Valor |
51
+ |------------|-------|
52
+ | **Framework** | React / Vue / Node.js / Spring Boot |
53
+ | **Lenguaje** | TypeScript / JavaScript / Java |
54
+ | **UI** | Tailwind / shadcn / Mantine / Ninguno |
55
+ | **Base de datos** | Supabase / SQLite / PostgreSQL |
56
+ | **Extensiones** | Supabase, Stripe, Prisma, Ionic, ... |
57
+ | **Módulos OPL activos** | React(23t), Vue(12t), Node(12t), Java(8t) |
58
+
59
+ ---
60
+
61
+ ## 📊 Estado Actual del Proyecto
62
+
63
+ _Completar durante la última sesión. Esto permite a la próxima IA continuar sin pérdida de contexto._
64
+
65
+ | Aspecto | Detalle |
66
+ |---------|---------|
67
+ | **Última sesión** | {{fecha}} |
68
+ | **Último comando ejecutado** | `opl ...` |
69
+ | **Fase del proyecto** | Inicial / En desarrollo / Refinamiento / Producción |
70
+ | **Sprint activo** | embeddings-sprint-001 / ninguno |
71
+ | **Ticket en progreso** | TICKET-XXX / ninguno |
72
+ | **Próximo paso** | _Descripción de lo que sigue_ |
73
+ | **Bloqueadores** | _Problemas pendientes_ |
74
+ | **Branch activa** | `main` / `feature/...` |
75
+
76
+ ---
77
+
78
+ ## 🎯 Próximos Pasos Recomendados
79
+
80
+ 1. _Paso 1 — descripción_
81
+ 2. _Paso 2 — descripción_
82
+ 3. _Paso 3 — descripción_
83
+
84
+ ---
85
+
86
+ ## 🐛 Problemas Conocidos (Academic Issues)
87
+
88
+ Ver `docs/OPL_ACADEMIC_ISSUES.md` para problemas reportados del sistema de enseñanza.
89
+
90
+ | # | Título | Severidad | Estado |
91
+ |---|--------|-----------|--------|
92
+ | 1 | Onboarding IA en proyecto existente | 🔴 Alta | Abierto |
93
+ | 2 | `opl rebuild` no detecta OPL | 🟡 Media | Abierto |
94
+ | 3 | Falta documento post-init para IA | 🔴 Alta | Abierto |
95
+
96
+ ---
97
+
98
+ ## 📚 Documentos de Referencia
99
+
100
+ | Documento | Propósito | Cuándo leerlo |
101
+ |-----------|-----------|---------------|
102
+ | `AGENTS.md` | Stack, convenciones, UI, calidad, reglas | ✅ Siempre — primera lectura |
103
+ | `docs/AI_CONTEXT.md` | Memoria extendida del proyecto | ✅ Siempre — segunda lectura |
104
+ | `docs/FRAMEWORK.md` | Manual completo: anotaciones, CLI, MCP | 🔍 Bajo demanda |
105
+ | `docs/OPL_ACADEMIC_ISSUES.md` | Problemas del sistema de enseñanza | 🔍 Si tocas el módulo académico |
106
+ | `docs/EMBEDDINGS.md` | Sistema de embeddings vectoriales | 🔍 Si tocas búsqueda semántica |
107
+ | `.opencode/work-context/SESSION.json` | Estado actual de la sesión | 🔍 Para restaurar contexto |
108
+ | `.opencode/work-context/LOG.json` | Bitácora de acciones | 🔍 Para auditoría |
109
+ | `prompt-lang.json` | Configuración del proyecto | 🔍 Si necesitas ver config |
110
+
111
+ ---
112
+
113
+ ## ⚡ Comandos Rápidos para la IA
114
+
115
+ ```bash
116
+ # Conocer el proyecto
117
+ npx openprompt-lang context # Vista general
118
+ npx openprompt-lang validate # Validar anotaciones
119
+ npx openprompt-lang analyze . # Auditoría completa
120
+
121
+ # Búsqueda de conocimiento
122
+ opl index # Navegar conocimiento
123
+ opl search "término" --mode hybrid # Búsqueda híbrida
124
+ opl read <dominio>/<id> --chapter <n> # Leer contenido
125
+
126
+ # Evaluación del proyecto
127
+ opl assess # Production Readiness Assessment
128
+ opl assess --verbose # Con detalle de 7 dimensiones
129
+
130
+ # Sistema de enseñanza
131
+ opl teach progress # Progreso de aprendizaje
132
+ opl teach study <concepto> # Estudiar un concepto
133
+ opl teach assess <concepto> # Evaluar nivel
134
+
135
+ # Embeddings (si aplica)
136
+ opl embeddings status # Estado del índice vectorial
137
+ opl search "término" --mode vector # Búsqueda semántica
138
+ ```
139
+
140
+ ---
141
+
142
+ ## 📝 Notas de la Sesión Actual
143
+
144
+ ```
145
+ Espacio para que la IA o el usuario dejen notas sobre la sesión actual.
146
+ ```
147
+
148
+ ---
149
+
150
+ *Documento generado automáticamente por `opl init`.*
151
+ *Versión: 1.0.0*