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