vgxness 1.5.1 → 1.5.2

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 (42) hide show
  1. package/README.md +23 -2
  2. package/dist/agents/agent-seed-service.js +10 -0
  3. package/dist/agents/canonical-agent-manifest.js +177 -0
  4. package/dist/agents/canonical-agent-projection.js +146 -0
  5. package/dist/agents/renderers/claude-renderer.js +30 -52
  6. package/dist/cli/bun-bin.js +6 -0
  7. package/dist/cli/cli-help.js +3 -0
  8. package/dist/cli/commands/agent-skill-dispatcher.js +6 -5
  9. package/dist/cli/commands/mcp-dispatcher.js +65 -3
  10. package/dist/cli/index.js +1 -1
  11. package/dist/governance/governance-report-builder.js +45 -26
  12. package/dist/mcp/claude-code-agent-config.js +79 -0
  13. package/dist/mcp/claude-code-config.js +84 -0
  14. package/dist/mcp/client-install-claude-code-contract.js +86 -0
  15. package/dist/mcp/client-install-claude-code.js +85 -0
  16. package/dist/mcp/index.js +5 -0
  17. package/dist/mcp/opencode-default-agent-config.js +7 -113
  18. package/dist/mcp/provider-canonical-agent-manifest.js +39 -0
  19. package/dist/mcp/provider-change-plan.js +57 -1
  20. package/dist/mcp/provider-doctor.js +54 -0
  21. package/dist/mcp/provider-status.js +82 -2
  22. package/dist/mcp/schema.js +2 -2
  23. package/dist/mcp/validation.js +1 -1
  24. package/dist/memory/memory-service.js +4 -0
  25. package/dist/sdd/sdd-workflow-service.js +129 -59
  26. package/dist/setup/providers/claude-setup-adapter.js +7 -4
  27. package/docs/architecture.md +54 -112
  28. package/docs/cli.md +53 -0
  29. package/docs/code-runtime.md +218 -0
  30. package/docs/contributing.md +120 -0
  31. package/docs/glossary.md +211 -0
  32. package/docs/mcp.md +144 -0
  33. package/docs/prd.md +23 -26
  34. package/docs/providers.md +123 -0
  35. package/docs/roadmap.md +88 -0
  36. package/docs/safety.md +147 -0
  37. package/docs/storage.md +93 -0
  38. package/package.json +1 -1
  39. package/docs/funcionamiento-del-sistema.md +0 -865
  40. package/docs/harness-gap-analysis.md +0 -243
  41. package/docs/vgxcode.md +0 -87
  42. package/docs/vgxness-code.md +0 -48
@@ -1,865 +0,0 @@
1
- # Funcionamiento del sistema vgxness
2
-
3
- `vgxness` es un harness local-first para desarrollo agentico. Su objetivo es darle estructura, memoria, seguridad y trazabilidad al trabajo hecho con herramientas de IA como OpenCode, Claude Code u otros proveedores futuros.
4
-
5
- La idea central del sistema es simple: los agentes pueden ejecutar trabajo, pero `vgxness` mantiene el estado verificable de lo que pasa. Ese estado incluye memoria persistente, fases SDD, artefactos, agentes registrados, skills, permisos, ejecuciones, checkpoints y evidencia.
6
-
7
- ## Resumen rapido
8
-
9
- `vgxness` ataca tres problemas principales:
10
-
11
- 1. La perdida de contexto entre sesiones de trabajo con IA.
12
- 2. La falta de un flujo disciplinado para cambios grandes.
13
- 3. La dependencia excesiva en prompts sin estado verificable.
14
-
15
- Para resolverlos, el sistema se construye sobre estos bloques:
16
-
17
- | Bloque | Funcion |
18
- |---|---|
19
- | Memoria local/global | Guarda observaciones, artefactos, sesiones y trazas en SQLite. Por defecto usa una base global de usuario; para dogfood o tests se puede forzar una base por proyecto con `--db`. |
20
- | SDD workflow | Ordena cambios en fases verificables: explore, proposal, spec, design, tasks, apply-progress, verify y archive. |
21
- | Orquestador de lenguaje natural | Clasifica pedidos del usuario en direct, plan, sdd o diagnose sin ejecutar acciones. |
22
- | Registro de agentes | Define agentes y subagentes con capacidades, permisos, workflows y compatibilidad por proveedor. |
23
- | Registro de skills | Administra skills reutilizables, versiones, adjuntos, uso y propuestas de mejora. |
24
- | Runtime de runs | Registra ejecuciones agenticas con estado, eventos, checkpoints, aprobaciones y resultado final. |
25
- | Politica de permisos | Decide si una operacion se permite, se bloquea o requiere aprobacion humana. |
26
- | MCP server | Expone herramientas para que agentes consulten y actualicen el control plane. |
27
- | CLI | Permite operar el sistema desde comandos reproducibles. |
28
- | TUI | Muestra setup y guias operativas locales para humanos. |
29
-
30
- ## Que problema resuelve
31
-
32
- Cuando se trabaja con IA en proyectos reales aparecen problemas repetidos:
33
-
34
- 1. El agente no recuerda decisiones anteriores.
35
- 2. Cada herramienta de IA tiene su propia configuracion y sus propios limites.
36
- 3. Los cambios grandes se vuelven improvisados: se empieza a implementar antes de entender, especificar o verificar.
37
- 4. La seguridad queda distribuida en prompts, permisos del proveedor o disciplina manual.
38
- 5. Despues de una interrupcion no siempre queda claro que se hizo, que falta y que evidencia existe.
39
-
40
- `vgxness` busca resolver eso agregando una capa local entre el humano, los agentes y las herramientas proveedoras.
41
-
42
- Esa capa no reemplaza a OpenCode, Claude Code o futuros adapters. Los coordina. El sistema guarda estado, valida prerrequisitos, registra actividad y ofrece APIs para que los agentes no tengan que adivinar donde estan parados.
43
-
44
- ## Como esta construido
45
-
46
- El proyecto esta escrito en TypeScript. Node.js 22 o superior sigue siendo tooling de desarrollo/build/tests; la persistencia local real en SQLite corre por el runtime Bun soportado.
47
-
48
- Dependencias principales:
49
-
50
- | Dependencia | Uso |
51
- |---|---|
52
- | `@modelcontextprotocol/sdk` | Servidor MCP por stdio. |
53
- | `zod` | Validacion de schemas de entrada. |
54
- | `tsx` | Ejecucion TypeScript en desarrollo. |
55
- | `typescript` | Build y typecheck. |
56
-
57
- Scripts principales:
58
-
59
- | Script | Funcion |
60
- |---|---|
61
- | `bun run cli:bun -- ...` | Ejecuta la CLI local desde el repo usando el mismo runtime Bun que los bins instalados. |
62
- | `npm run build` | Compila TypeScript y copia migraciones. |
63
- | `npm run test` | Ejecuta tests con el runner nativo de Node. |
64
- | `npm run typecheck` | Valida tipos sin emitir archivos. |
65
- | `bun run package:bun:evidence` | Valida el paquete con Bun: artefacto, contenido, instalacion aislada y ambos bins. |
66
-
67
- ## Vista de alto nivel
68
-
69
- ```text
70
- Humano / operador
71
- |
72
- | usa
73
- v
74
- CLI / TUI
75
- |
76
- | llama servicios locales
77
- v
78
- Core de vgxness
79
- |
80
- | persiste y consulta
81
- v
82
- SQLite local/global
83
-
84
- Agente IA / herramienta MCP
85
- |
86
- | invoca tools MCP
87
- v
88
- MCP control plane
89
- |
90
- | llama los mismos servicios
91
- v
92
- Core de vgxness
93
- ```
94
-
95
- La regla importante es que CLI, MCP y TUI no deberian tener reglas de negocio duplicadas. Todos deben pasar por los mismos servicios de dominio.
96
-
97
- ## Capas del sistema
98
-
99
- ### 1. Interfaces de entrada
100
-
101
- El sistema tiene varias superficies de uso.
102
-
103
- | Superficie | Usuario principal | Archivo clave | Funcion |
104
- |---|---|---|---|
105
- | CLI | Humano, scripts, smoke tests | `src/cli/dispatcher.ts` | Parsear comandos y llamar servicios. |
106
- | MCP stdio | Agentes y herramientas IA | `src/mcp/stdio-server.ts` | Exponer herramientas MCP locales. |
107
- | MCP control plane | Capa interna MCP | `src/mcp/control-plane.ts` | Validar tool calls y despacharlas a servicios. |
108
- | TUI | Humano local | `src/cli/tui/` | Mostrar setup y guias operativas locales. |
109
-
110
- La CLI es intencionalmente fina. Abre la base local, instancia servicios y devuelve JSON o texto. No deberia contener la logica profunda del producto.
111
-
112
- ### 2. Servicios de dominio
113
-
114
- Los servicios encapsulan la logica del sistema.
115
-
116
- | Servicio | Archivo | Responsabilidad |
117
- |---|---|---|
118
- | `MemoryService` | `src/memory/memory-service.ts` | Guardar, buscar, actualizar memoria, sesiones, artefactos y trazas. |
119
- | `SddWorkflowService` | `src/sdd/sdd-workflow-service.ts` | Calcular estado, readiness, siguiente fase y guardar artefactos SDD. |
120
- | `NaturalLanguagePlanner` | `src/orchestrator/natural-language-planner.ts` | Clasificar intenciones del usuario y producir un plan preview-only. |
121
- | `AgentRegistryService` | `src/agents/agent-registry-service.ts` | Registrar, listar, obtener y resolver agentes/subagentes. |
122
- | `SkillRegistryService` | `src/skills/skill-registry-service.ts` | Registrar skills, versiones, adjuntos, propuestas y payloads. |
123
- | `RunService` | `src/runs/run-service.ts` | Crear runs, eventos, checkpoints, aprobaciones, preflight y finalizacion. |
124
- | `SetupLifecycleService` | `src/setup/setup-lifecycle-service.ts` | Reportar si el proyecto esta listo para operar. |
125
- | `OpenCodeManagerPayloadService` | `src/providers/opencode/manager-payload.ts` | Construir payloads para integracion con OpenCode. |
126
-
127
- ### 3. Repositorios y almacenamiento
128
-
129
- La persistencia esta basada en SQLite local.
130
-
131
- Archivo clave:
132
-
133
- ```text
134
- src/memory/sqlite/database.ts
135
- ```
136
-
137
- Al abrir la base con el runtime Bun, el sistema:
138
-
139
- 1. Crea una conexion SQLite usando `bun:sqlite`.
140
- 2. Activa `foreign_keys`.
141
- 3. Configura `busy_timeout`.
142
- 4. Aplica migraciones SQL si la base no esta en modo readonly.
143
- 5. Devuelve una instancia `MemoryDatabase` usada por los repositorios.
144
-
145
- Ruta por defecto de usuario:
146
-
147
- ```text
148
- macOS: ~/Library/Application Support/vgxness/memory.sqlite
149
- Linux: ${XDG_DATA_HOME:-~/.local/share}/vgxness/memory.sqlite
150
- Windows: %LOCALAPPDATA%\vgxness\memory.sqlite; fallback a %APPDATA%\vgxness\memory.sqlite
151
- ```
152
-
153
- La ruta `.vgx/memory.sqlite` se sigue usando para dogfood local o pruebas cuando se pasa explicitamente con `--db`.
154
-
155
- Los repositorios viven debajo de carpetas como:
156
-
157
- ```text
158
- src/memory/repositories/
159
- src/agents/repositories/
160
- src/skills/repositories/
161
- src/runs/repositories/
162
- ```
163
-
164
- ## Flujo principal del sistema
165
-
166
- ### Paso 1: El usuario o agente inicia una accion
167
-
168
- Una accion puede entrar por CLI o por MCP.
169
-
170
- Ejemplos CLI:
171
-
172
- ```bash
173
- vgxness sdd status --project vgxness --change my-change
174
- vgxness orchestrator preview --project vgxness --intent "Build a new checkout workflow" --change checkout-flow
175
- vgxness agents resolve --project vgxness --workflow sdd --phase apply-progress
176
- vgxness runs list --project vgxness
177
- ```
178
-
179
- Ejemplo MCP:
180
-
181
- ```text
182
- vgxness_sdd_status
183
- vgxness_agent_resolve
184
- vgxness_run_start
185
- vgxness_run_checkpoint
186
- ```
187
-
188
- ### Paso 2: La interfaz valida y normaliza la entrada
189
-
190
- En CLI, `dispatchCli` y `dispatchCliAsync` parsean argumentos, validan area/comando y abren la base local.
191
-
192
- En MCP, `callVgxTool` valida la tool call contra schemas antes de ejecutar la operacion.
193
-
194
- Esto evita que cada comando implemente su propio contrato de entrada de manera inconsistente.
195
-
196
- ### Paso 3: Se instancia el servicio correspondiente
197
-
198
- Por ejemplo:
199
-
200
- | Accion | Servicio usado |
201
- |---|---|
202
- | Consultar estado SDD | `SddWorkflowService` |
203
- | Clasificar un pedido natural | `createNaturalLanguagePlan` |
204
- | Guardar memoria | `MemoryService` |
205
- | Resolver agente | `AgentRegistryService` |
206
- | Resolver skill payload | `SkillRegistryService` |
207
- | Crear run | `RunService` |
208
- | Evaluar permisos | `evaluatePermission` |
209
-
210
- ### Paso 4: El servicio aplica reglas de negocio
211
-
212
- Ejemplos:
213
-
214
- 1. SDD valida que la fase exista.
215
- 2. El orquestador clasifica si el pedido es directo, planificable, diagnostico o requiere SDD.
216
- 3. SDD calcula si faltan artefactos prerrequisito.
217
- 4. Runs evalua permisos antes de operaciones riesgosas.
218
- 5. Memory registra trazas cuando una operacion de memoria ocurre.
219
- 6. Skills solo construye payloads con versiones activas/resueltas.
220
-
221
- ### Paso 5: Se persiste o consulta estado local
222
-
223
- Si la accion cambia estado, se guarda en SQLite.
224
-
225
- Ejemplos de estado persistido:
226
-
227
- | Estado | Ejemplo |
228
- |---|---|
229
- | Observaciones | Decisiones, aprendizajes, preferencias. |
230
- | Artefactos SDD | `sdd/my-change/proposal`, `sdd/my-change/spec`. |
231
- | Sesiones | Actividad agrupada por sesion. |
232
- | Trazas | Registro de operaciones de memoria. |
233
- | Agentes | Definiciones y metadata. |
234
- | Skills | Versiones, adjuntos, uso y propuestas. |
235
- | Runs | Estado, eventos, checkpoints, aprobaciones y resultado. |
236
-
237
- ### Paso 6: La respuesta vuelve como JSON o texto estructurado
238
-
239
- La CLI devuelve resultados para humanos o scripts. MCP devuelve un envelope JSON con `ok`, nombre de tool y resultado o error.
240
-
241
- ## Funcionamiento del orquestador de lenguaje natural
242
-
243
- El orquestador de lenguaje natural es el nuevo punto de entrada para transformar texto humano en una decision operativa segura.
244
-
245
- Archivo principal:
246
-
247
- ```text
248
- src/orchestrator/natural-language-planner.ts
249
- ```
250
-
251
- Schema principal:
252
-
253
- ```text
254
- src/orchestrator/schema.ts
255
- ```
256
-
257
- La funcion central es `createNaturalLanguagePlan`. Recibe `project`, `intent`, un `change` opcional y contexto SDD opcional. Devuelve un plan deterministico de version 1.
258
-
259
- El plan puede elegir uno de cuatro flujos:
260
-
261
- | Flow | Cuando aparece | Que significa |
262
- |---|---|---|
263
- | `direct` | Pedido de explicacion o cambio chico de bajo riesgo. | Se puede responder o tratar sin entrar a SDD. |
264
- | `plan` | Pedido de plan, preview, review o dry-run sin riesgo fuerte. | Se puede preparar un plan manual sin ejecutar nada. |
265
- | `sdd` | Nueva capacidad, arquitectura, workflow, persistencia, seguridad, cambio amplio o pedido de ejecucion. | Conviene pasar por el flujo SDD antes de implementar. |
266
- | `diagnose` | Pedido de diagnostico, estado, health, logs, setup o doctor. | Se mantiene en modo lectura/diagnostico. |
267
-
268
- La decision se basa en signals extraidas del texto. Algunos ejemplos:
269
-
270
- | Signal | Detecta |
271
- |---|---|
272
- | `answer-only` | Preguntas como explain, what, how o why. |
273
- | `planning-request` | plan, preview, review o dry-run. |
274
- | `diagnostic-request` | diagnose, failure, status, health, logs, setup o doctor. |
275
- | `new-capability` | build, add, create, new, feature o capability. |
276
- | `architecture-change` | architecture, refactor o boundaries. |
277
- | `workflow-change` | workflow, orchestration, orchestrator, SDD o phase. |
278
- | `persistence-change` | persistent, storage, SQLite, database, memory o migration. |
279
- | `security-sensitive` | security, auth, token, secret o permission. |
280
- | `execution-request` | run, execute, apply, start, install o push. |
281
- | `destructive` | delete, remove, destroy, drop o reset. |
282
-
283
- Si el pedido es ambiguo, por ejemplo `Fix it`, el planner baja la confianza, marca `needsClarification` y devuelve una pregunta aclaratoria antes de sugerir acciones de escritura.
284
-
285
- ### Contrato de seguridad
286
-
287
- El orquestador actual es preview-only. Esto es CLAVE.
288
-
289
- El plan siempre devuelve safety con estas garantias:
290
-
291
- | Campo | Valor actual |
292
- |---|---|
293
- | `executed` | `false` |
294
- | `callsProvider` | `false` |
295
- | `editsFiles` | `false` |
296
- | `writesProviderConfig` | `false` |
297
- | `recordsRuns` | `false` |
298
-
299
- Eso significa que `orchestrator preview` no llama providers, no edita archivos, no escribe configuracion, no crea runs, no instala memoria global y no crea `openspec/`.
300
-
301
- Este seam es importante porque separa la decision de ruteo de la ejecucion real. Primero se clasifica y se revisa. Despues, si corresponde, otro flujo aprobado puede ejecutar.
302
-
303
- ### CLI del orquestador
304
-
305
- La CLI expone el planner con:
306
-
307
- ```bash
308
- vgxness orchestrator preview --project vgxness --intent "Build a new persistent checkout workflow" --change checkout-flow --db .vgx/memory.sqlite
309
- ```
310
-
311
- Parametros:
312
-
313
- | Parametro | Requerido | Funcion |
314
- |---|---|---|
315
- | `--project` | Si | Proyecto donde se interpreta la intencion. |
316
- | `--intent` | Si | Texto natural del usuario. |
317
- | `--change` | No | Change SDD a consultar o reutilizar. |
318
- | `--db` | No | Base SQLite local a usar. |
319
-
320
- Cuando se pasa `--change`, la CLI consulta `SddWorkflowService.getStatus` y `SddWorkflowService.getNext` contra la base local seleccionada. Ese contexto se incluye en la respuesta para que el preview pueda sugerir el siguiente paso SDD sin mutar estado.
321
-
322
- Ejemplo de decision esperada:
323
-
324
- ```text
325
- Intent: Build a new persistent checkout workflow capability
326
- Flow: sdd
327
- Suggested change id: checkout-flow
328
- Preview action: vgxness sdd next --project vgxness --change checkout-flow
329
- Safety: no ejecuto nada
330
- ```
331
-
332
- ### Como encaja en el flujo general
333
-
334
- Antes, un humano o agente podia ir directo a `sdd status`, `agents resolve` o `runs start`. Ahora existe una puerta previa:
335
-
336
- ```text
337
- Texto del usuario
338
- |
339
- v
340
- orchestrator preview
341
- |
342
- v
343
- Clasificacion: direct | plan | sdd | diagnose
344
- |
345
- v
346
- Accion sugerida, no ejecutada
347
- ```
348
-
349
- Esto apunta a la vision del producto: que el usuario pueda interactuar en lenguaje natural, pero que el sistema no confunda entender una intencion con tener permiso para ejecutar.
350
-
351
- ## Funcionamiento del flujo SDD
352
-
353
- SDD significa Spec-Driven Development. En `vgxness`, SDD no es solo una recomendacion en un prompt: es un workflow con fases, topic keys y prerrequisitos.
354
-
355
- Fases canonicas:
356
-
357
- ```text
358
- explore -> proposal -> spec -> design -> tasks -> apply-progress -> verify -> archive
359
- ```
360
-
361
- Cada fase se guarda como artefacto bajo una topic key canonica:
362
-
363
- ```text
364
- sdd/{change}/{phase}
365
- ```
366
-
367
- Ejemplo:
368
-
369
- ```text
370
- sdd/add-auth/proposal
371
- sdd/add-auth/spec
372
- sdd/add-auth/design
373
- ```
374
-
375
- Prerrequisitos actuales:
376
-
377
- | Fase | Requiere |
378
- |---|---|
379
- | `explore` | Nada. |
380
- | `proposal` | `explore`. |
381
- | `spec` | `proposal`. |
382
- | `design` | `proposal`, `spec`. |
383
- | `tasks` | `proposal`, `spec`, `design`. |
384
- | `apply-progress` | `tasks`. |
385
- | `verify` | `apply-progress`. |
386
- | `archive` | `verify`. |
387
-
388
- El servicio SDD puede responder tres preguntas centrales:
389
-
390
- | Pregunta | Metodo | Resultado |
391
- |---|---|---|
392
- | Que fases existen y cuales estan presentes | `getStatus` | Estado por fase y proxima fase lista. |
393
- | Una fase esta lista para correr | `getReady` | `ready`, prerrequisitos satisfechos y faltantes. |
394
- | Cual es el siguiente paso | `getNext` | `runnable`, `blocked` o `complete`. |
395
-
396
- Este flujo obliga a que los cambios grandes avancen con estructura. No impide que alguien escriba codigo manualmente, pero le da al agente y al humano una fuente de verdad para saber si el cambio esta preparado.
397
-
398
- ## Funcionamiento de la memoria
399
-
400
- La memoria es local y persistente. No depende de una cuenta cloud.
401
-
402
- Por defecto, la CLI instalada usa una base global de usuario. Esto permite instalar `vgxness` y empezar a guardar memoria sin pasar `--db` en cada comando.
403
-
404
- | Plataforma | Ruta global por defecto |
405
- |---|---|
406
- | macOS | `~/Library/Application Support/vgxness/memory.sqlite` |
407
- | Linux | `${XDG_DATA_HOME:-~/.local/share}/vgxness/memory.sqlite` |
408
- | Windows | `%LOCALAPPDATA%\vgxness\memory.sqlite` si existe; si no, `%APPDATA%\vgxness\memory.sqlite` |
409
-
410
- La precedencia de seleccion de base es:
411
-
412
- ```text
413
- --db <path> > VGXNESS_DB_PATH > base global de usuario
414
- ```
415
-
416
- La ruta historica `.vgx/memory.sqlite` sigue siendo compatible, pero ahora es explicita:
417
-
418
- ```bash
419
- vgxness memory search --project vgxness --db .vgx/memory.sqlite
420
- ```
421
-
422
- Este detalle es importante: `vgxness` puede funcionar como herramienta instalada globalmente sin acoplar la memoria al workdir actual, pero tambien permite aislar estado cuando se necesita reproducibilidad en tests o dogfood local.
423
-
424
- `MemoryService` trabaja con cuatro conceptos principales:
425
-
426
- | Concepto | Funcion |
427
- |---|---|
428
- | Observations | Guardan conocimiento durable: decisiones, descubrimientos, preferencias o contenido general. |
429
- | Sessions | Agrupan actividad por sesion de trabajo. |
430
- | Artifacts | Guardan documentos estructurados, especialmente artefactos SDD. |
431
- | Traces | Registran operaciones realizadas sobre memoria. |
432
-
433
- Cuando se guarda un artefacto SDD, internamente tambien se guarda una observation con tipo `sdd-artifact`. Eso permite que el contenido sea recuperable por topic key y tambien trazable como memoria.
434
-
435
- El flujo simplificado es:
436
-
437
- ```text
438
- Servicio solicita guardar memoria
439
- |
440
- v
441
- ObservationRepository / ArtifactRepository
442
- |
443
- v
444
- SQLite
445
- |
446
- v
447
- TraceRepository registra la operacion
448
- ```
449
-
450
- ## Funcionamiento de agentes y subagentes
451
-
452
- El registro de agentes permite definir quien puede ejecutar trabajo y bajo que contexto.
453
-
454
- Un agente puede incluir:
455
-
456
- 1. Nombre y descripcion.
457
- 2. Instrucciones.
458
- 3. Capacidades.
459
- 4. Workflows y fases compatibles.
460
- 5. Skills asociadas.
461
- 6. Permisos.
462
- 7. Compatibilidad con adapters como OpenCode o Claude.
463
-
464
- El sistema puede resolver candidatos para una tarea con `agents resolve`. Esa resolucion es metadata-driven: usa capacidades, workflow, fase, provider, modo y texto de tarea. No llama a un modelo para rankear en la version actual.
465
-
466
- Esto es importante porque mantiene la seleccion de agente explicable y reproducible.
467
-
468
- ## Funcionamiento de skills
469
-
470
- Las skills son conocimiento operativo reutilizable.
471
-
472
- El sistema no las trata como archivos sueltos, sino como entidades versionadas con ciclo de vida.
473
-
474
- Puede manejar:
475
-
476
- 1. Registro de skills.
477
- 2. Versiones activas o historicas.
478
- 3. Adjuntos a agentes, fases, workflows o adapters.
479
- 4. Registro de uso.
480
- 5. Escenarios de evaluacion.
481
- 6. Propuestas de mejora.
482
- 7. Aprobacion antes de activar una mejora.
483
-
484
- El flujo ideal es:
485
-
486
- ```text
487
- Se registra una skill
488
- |
489
- v
490
- Se agrega una version
491
- |
492
- v
493
- Se adjunta a un agente o fase
494
- |
495
- v
496
- Durante un run se resuelve e inyecta el payload
497
- |
498
- v
499
- Se registra si ayudo o fallo
500
- |
501
- v
502
- Si hace falta mejorarla, se crea una propuesta revisable
503
- ```
504
-
505
- ## Funcionamiento de runs
506
-
507
- Un run representa una operacion agentica significativa.
508
-
509
- Sirve para responder preguntas como:
510
-
511
- 1. Quien ejecuto esto.
512
- 2. Para que proyecto y fase fue.
513
- 3. Que modelo o provider se uso.
514
- 4. Que eventos ocurrieron.
515
- 5. Que aprobaciones hicieron falta.
516
- 6. Que checkpoints existen para retomar.
517
- 7. Como termino la operacion.
518
-
519
- `RunService` permite:
520
-
521
- | Accion | Funcion |
522
- |---|---|
523
- | `createRun` | Crear un registro auditable. |
524
- | `appendEvent` | Agregar eventos al historial. |
525
- | `appendCheckpoint` | Guardar estado resumible. |
526
- | `preflightOperation` | Evaluar seguridad antes de ejecutar. |
527
- | `updateFinalStatus` | Cerrar el run con estado y outcome. |
528
- | `getRunInsights` | Construir resumen operativo del run. |
529
-
530
- Este runtime separa memoria de ejecucion. Una decision durable puede vivir en memoria, pero una ejecucion concreta vive como run con eventos, approvals y checkpoints.
531
-
532
- ## Politica de permisos
533
-
534
- La politica de permisos define si una operacion se permite, pide aprobacion o se deniega.
535
-
536
- Categorias actuales:
537
-
538
- ```text
539
- read, edit, shell, network, git, memory, external-directory, provider-tool, secrets
540
- ```
541
-
542
- Politica base:
543
-
544
- | Categoria | Decision default |
545
- |---|---|
546
- | `read` | `allow` |
547
- | `edit` | `ask` |
548
- | `shell` | `ask` |
549
- | `network` | `ask` |
550
- | `git` | `ask` |
551
- | `memory` | `ask` |
552
- | `external-directory` | `deny` |
553
- | `provider-tool` | `ask` |
554
- | `secrets` | `deny` |
555
-
556
- Reglas importantes:
557
-
558
- 1. Acceso a secretos se deniega por defecto.
559
- 2. Acceso a directorios externos se deniega por defecto.
560
- 3. Operaciones destructivas, externas, privilegiadas o ambiguas requieren aprobacion humana.
561
- 4. Operaciones de filesystem deben estar dentro del workspace.
562
-
563
- Esto evita que la seguridad dependa solamente de que el agente “se acuerde” de portarse bien.
564
-
565
- ## Funcionamiento del MCP
566
-
567
- El MCP server es la puerta para que herramientas de IA interactuen con `vgxness`.
568
-
569
- Archivo principal:
570
-
571
- ```text
572
- src/mcp/stdio-server.ts
573
- ```
574
-
575
- El servidor:
576
-
577
- 1. Crea un `McpServer` llamado `vgxness`.
578
- 2. Crea el control plane local.
579
- 3. Registra todas las tools soportadas.
580
- 4. Conecta por `StdioServerTransport`.
581
- 5. Devuelve respuestas JSON como texto MCP.
582
-
583
- El control plane crea servicios sobre la misma base SQLite:
584
-
585
- ```text
586
- MemoryService
587
- SddWorkflowService
588
- AgentRegistryService
589
- SkillRegistryService
590
- RunService
591
- AgentActivationService
592
- OpenCodeManagerPayloadService
593
- ```
594
-
595
- Tools representativas (no exhaustivas; la fuente actual de nombres soportados es `SUPPORTED_VGX_MCP_TOOL_NAMES`):
596
-
597
- | Tool | Funcion |
598
- |---|---|
599
- | `vgxness_sdd_status` | Consultar estado de un change SDD. |
600
- | `vgxness_sdd_ready` | Saber si una fase esta lista. |
601
- | `vgxness_sdd_next` | Decidir siguiente fase runnable, blocked o complete. |
602
- | `vgxness_sdd_save_artifact` | Guardar un artefacto SDD. |
603
- | `vgxness_sdd_get_artifact` / `vgxness_sdd_list_artifacts` | Recuperar artefactos SDD previos como fuente de verdad. |
604
- | `vgxness_memory_save` | Guardar memoria. |
605
- | `vgxness_memory_search` | Buscar memoria. |
606
- | `vgxness_agent_resolve` | Resolver agente para una tarea. |
607
- | `vgxness_skill_payload` | Construir payload de skills para un contexto. |
608
- | `vgxness_opencode_manager_payload` | Construir preview read-only para integracion del manager OpenCode. |
609
- | `vgxness_run_start` | Crear un run. |
610
- | `vgxness_run_preflight` | Evaluar permisos y plan de seguridad antes de operaciones riesgosas. |
611
- | `vgxness_run_checkpoint` | Guardar checkpoint. |
612
- | `vgxness_run_finalize` | Finalizar run. |
613
-
614
- ## Funcionamiento de la CLI
615
-
616
- La CLI se ejecuta localmente con:
617
-
618
- ```bash
619
- vgxness <area> <command> [flags]
620
- ```
621
-
622
- Areas principales vistas en el dispatcher:
623
-
624
- | Area | Funcion |
625
- |---|---|
626
- | `setup` / `init` | Estado de setup local. |
627
- | `agents` | Registro, listado, resolucion y render de agentes. |
628
- | `subagents` | Operaciones sobre subagentes. |
629
- | `memory` | Operaciones de memoria. |
630
- | `runs` | Runs, checkpoints, approvals y estado. |
631
- | `permissions` | Evaluacion de permisos. |
632
- | `skills` | Registro, resolucion, propuestas y evaluacion de skills. |
633
- | `sdd` | Estado, readiness y guardado de artefactos SDD. |
634
- | `orchestrator` | Preview de ruteo desde lenguaje natural hacia direct, plan, sdd o diagnose. |
635
- | `opencode` | Previews/integracion OpenCode. |
636
- | `mcp` | Setup, doctor e instalacion MCP. |
637
-
638
- La base se selecciona con la misma regla que el resto del sistema:
639
-
640
- ```text
641
- --db <path> > VGXNESS_DB_PATH > base global de usuario
642
- ```
643
-
644
- Sin `--db`, la CLI usa la base global de usuario. Si se quiere la base del repo para pruebas locales, se debe pedir explicitamente:
645
-
646
- ```bash
647
- vgxness sdd status --project vgxness --change my-change --db .vgx/memory.sqlite
648
- ```
649
-
650
- ## Setup local
651
-
652
- El setup busca contestar si el proyecto esta listo para usar `vgxness`.
653
-
654
- `SetupLifecycleService` revisa:
655
-
656
- | Check | Que verifica |
657
- |---|---|
658
- | Store | Que la base local este disponible. |
659
- | MCP | Que OpenCode MCP este visible o tenga acciones sugeridas. |
660
- | Default context | Que exista el agente default `vgxness-manager`. |
661
-
662
- La respuesta incluye `nextAction`, por ejemplo sembrar agentes, revisar MCP o listar runs.
663
-
664
- ## Integracion con OpenCode
665
-
666
- OpenCode aparece como primer adapter concreto.
667
-
668
- El sistema puede:
669
-
670
- 1. Generar previews de configuracion.
671
- 2. Diagnosticar visibilidad MCP desde el worktree.
672
- 3. Planificar instalacion sin escribir archivos.
673
- 4. Aplicar instalacion solo con confirmacion explicita.
674
- 5. Preservar configuracion existente y crear backups cuando corresponde.
675
-
676
- Un limite importante: las operaciones de preview no escriben `.opencode/`, `.claude/` ni configuracion global. Esa separacion es intencional para mantener seguridad y revisabilidad.
677
-
678
- El manager OpenCode versionado (`vgxness-manager`) es MCP-first: al iniciar, reanudar o recuperar contexto llama `vgxness_session_restore` con proyecto y directorio del workspace antes de inferir desde el chat; consulta estado SDD con `sdd_status`/`sdd_next`/`sdd_ready`, recupera prerequisitos con `sdd_get_artifact` o `sdd_list_artifacts`, resuelve el subagente exacto con `agent_resolve`, delega la fase, guarda el artefacto aceptado con `sdd_save_artifact` y usa `run_preflight`/`run_checkpoint`/`run_finalize` cuando el trabajo es significativo. Antes de terminar, pausar, handoff o compactar llama `vgxness_session_close` con el session id actual, actor `manager` y un resumen accionable; si no hay session id, no lo inventa y preserva el resumen en la respuesta final. Preguntas simples o respuestas read-only no necesitan crear runs por defecto.
679
-
680
- La integracion mantiene `permission.task` deny-by-default: el manager solo puede delegar a subagentes SDD canonicos por nombre exacto. Las instrucciones del seed incluido son autosuficientes y no requieren archivos externos `~/.config/opencode/skills/sdd-*`; esas skills pueden registrarse como mejora opcional, pero no son requisito. `vgxness_opencode_manager_payload` es solo preview/read-only: no instala, no ejecuta OpenCode, no carga seeds y no escribe configuracion global.
681
-
682
- ## Que esta implementado hoy y que es objetivo
683
-
684
- El proyecto ya contiene implementaciones concretas de:
685
-
686
- 1. Memoria SQLite con migraciones.
687
- 2. SDD workflow con estado, readiness, next y guardado de artefactos.
688
- 3. Orquestador de lenguaje natural preview-only con clasificacion `direct`, `plan`, `sdd` y `diagnose`.
689
- 4. Registro y resolucion de agentes.
690
- 5. Registro, versionado, resolucion y propuestas de skills.
691
- 6. Runs con eventos, checkpoints, approvals, preflight y finalizacion.
692
- 7. Politica de permisos base.
693
- 8. MCP stdio server y control plane.
694
- 9. CLI para operar los servicios.
695
- 10. Setup status y TUI local.
696
- 11. Integracion inicial con OpenCode.
697
- 12. CLI instalable con memoria global por defecto y compatibilidad explicita con `--db`.
698
-
699
- La arquitectura objetivo documentada en `docs/architecture.md` amplia esa base hacia:
700
-
701
- 1. TUI mas completa.
702
- 2. Configurador de assets mas amplio.
703
- 3. Multiples providers como Claude Code y futuros adapters.
704
- 4. Perfiles/model routing mas avanzados.
705
- 5. Auditoria y trazabilidad mas profundas.
706
- 6. Flujos de instalacion guiados mas completos.
707
-
708
- Esta distincion importa. `vgxness` ya tiene un nucleo funcional, pero tambien es una plataforma en evolucion.
709
-
710
- ## Recorrido completo de ejemplo
711
-
712
- Supongamos que se quiere trabajar en un cambio llamado `add-agent-profiles`.
713
-
714
- ### 1. Revisar setup
715
-
716
- ```bash
717
- vgxness setup status --project vgxness
718
- ```
719
-
720
- El sistema revisa store, MCP y agente default.
721
-
722
- ### 2. Clasificar el pedido natural
723
-
724
- ```bash
725
- vgxness orchestrator preview --project vgxness --intent "Build a new agent profile workflow" --change add-agent-profiles
726
- ```
727
-
728
- El sistema devuelve un preview no ejecutable. Si detecta nueva capacidad, arquitectura, workflow, persistencia, seguridad o riesgo de ejecucion, recomienda `sdd` y puede incluir el proximo comando manual de SDD.
729
-
730
- ### 3. Consultar estado SDD
731
-
732
- ```bash
733
- vgxness sdd status --project vgxness --change add-agent-profiles
734
- ```
735
-
736
- Si no hay artefactos, la primera fase lista deberia ser `explore`.
737
-
738
- ### 4. Guardar el artefacto de exploracion
739
-
740
- ```bash
741
- vgxness sdd save-artifact --project vgxness --change add-agent-profiles --phase explore --content "# Explore"
742
- ```
743
-
744
- El sistema guarda el contenido en memoria como artefacto con topic key:
745
-
746
- ```text
747
- sdd/add-agent-profiles/explore
748
- ```
749
-
750
- ### 5. Preguntar la siguiente fase
751
-
752
- ```bash
753
- vgxness sdd next --project vgxness --change add-agent-profiles
754
- ```
755
-
756
- Si `explore` esta presente, la siguiente fase runnable sera `proposal`.
757
-
758
- ### 6. Resolver un agente para implementar
759
-
760
- ```bash
761
- vgxness agents resolve --project vgxness --workflow sdd --phase apply-progress --provider opencode --task "Implement agent profile routing"
762
- ```
763
-
764
- El sistema devuelve candidatos con score y razones.
765
-
766
- ### 7. Crear un run
767
-
768
- El agente o la CLI crean un run para registrar la operacion.
769
-
770
- Desde MCP seria una llamada a:
771
-
772
- ```text
773
- vgxness_run_start
774
- ```
775
-
776
- ### 8. Evaluar permisos antes de operar
777
-
778
- Antes de acciones riesgosas, el run puede hacer preflight.
779
-
780
- ```text
781
- vgxness_run_preflight
782
- ```
783
-
784
- Si la operacion es destructiva, externa, privilegiada o ambigua, el sistema pide aprobacion o bloquea.
785
-
786
- ### 9. Guardar checkpoints
787
-
788
- Durante el trabajo, el agente puede persistir progreso.
789
-
790
- ```text
791
- vgxness_run_checkpoint
792
- ```
793
-
794
- Eso permite retomar si la sesion se corta.
795
-
796
- ### 10. Verificar y archivar
797
-
798
- Cuando el cambio avanza, SDD exige pasar por `verify` y luego `archive`, cada uno con su artefacto correspondiente.
799
-
800
- ## Principio de diseno mas importante
801
-
802
- El principio clave es separar comportamiento de agente y estado de producto.
803
-
804
- | Capa | Que hace |
805
- |---|---|
806
- | Comportamiento de agente | Prompts, skills, instrucciones, modelos y adapters ayudan a ejecutar bien. |
807
- | Estado de producto | SQLite, SDD, runs, permisos y trazas dicen que paso y que se puede hacer ahora. |
808
-
809
- Si todo vive solo en prompts, el sistema depende de disciplina del LLM. Si todo vive solo en estado pero los agentes no reciben buen contexto, el sistema es burocratico. `vgxness` necesita ambas partes.
810
-
811
- ## Estructura de carpetas relevante
812
-
813
- ```text
814
- src/
815
- agents/ Registro, resolucion, activacion y renderers de agentes.
816
- cli/ Dispatcher, TUI y renderers de salida CLI.
817
- export/ Redaccion/export de snapshots.
818
- harness/ Handlers reutilizables para tools internas.
819
- mcp/ Servidor stdio, schemas, validacion, doctor e instalacion MCP.
820
- memory/ Servicio de memoria, repositorios, busqueda y SQLite.
821
- orchestrator/ Planner preview-only para clasificar lenguaje natural.
822
- permissions/ Politica y schema de permisos.
823
- providers/ Integraciones por proveedor, hoy principalmente OpenCode.
824
- runs/ Runtime de ejecuciones, eventos, checkpoints y approvals.
825
- sdd/ Workflow SDD, schemas y portabilidad de artefactos.
826
- setup/ Estado de setup local.
827
- skills/ Registro, resolucion, payloads y propuestas de skills.
828
-
829
- docs/
830
- architecture.md Arquitectura objetivo y decisiones principales.
831
- prd.md Vision de producto y alcance MVP.
832
- cli.md Uso de CLI y flujos operativos.
833
- funcionamiento-del-sistema.md Este documento.
834
- ```
835
-
836
- ## Como pensar el sistema
837
-
838
- Una buena forma de entender `vgxness` es verlo como una torre de control local.
839
-
840
- Los agentes son los aviones: ejecutan, se mueven rapido y hacen trabajo complejo. Pero la torre de control mantiene rutas, permisos, estado, historial y reglas de seguridad. Sin torre, cada avion decide por su cuenta. Sin aviones, la torre no produce valor. El sistema funciona cuando ambas partes colaboran.
841
-
842
- En terminos practicos:
843
-
844
- 1. El humano define intencion y revisa decisiones importantes.
845
- 2. Los agentes ejecutan trabajo especializado.
846
- 3. `vgxness` guarda estado, valida readiness y registra evidencia.
847
- 4. Las herramientas proveedoras son adaptadores, no la fuente unica de verdad.
848
-
849
- ## Checklist para entender si el sistema esta funcionando
850
-
851
- Un proyecto `vgxness` sano deberia poder responder estas preguntas:
852
-
853
- 1. Donde esta mi base local y esta disponible?
854
- 2. Que flow recomienda el orquestador para este pedido natural?
855
- 3. Que agentes tengo registrados?
856
- 4. Que skills estan activas y para que contexto aplican?
857
- 5. En que fase SDD esta mi cambio?
858
- 6. Que artefactos faltan para avanzar?
859
- 7. Que runs se ejecutaron y como terminaron?
860
- 8. Que operaciones pidieron aprobacion?
861
- 9. Que checkpoints permiten retomar trabajo?
862
- 10. Que evidencia existe de verificacion?
863
- 11. Que configuracion de proveedor fue preview, planificada o aplicada?
864
-
865
- Si esas respuestas existen en estado local y no solo en memoria conversacional del agente, el sistema esta cumpliendo su objetivo.