orquestra-mcp 1.4.1 → 1.6.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.
- package/package.json +1 -1
- package/src/server.mjs +36 -4
package/package.json
CHANGED
package/src/server.mjs
CHANGED
|
@@ -58,7 +58,7 @@ Durante el trabajo normal de código, sin que el usuario te lo pida explícitame
|
|
|
58
58
|
- Al terminar, mueve la tarea de estatus con update_task y registra una entrada de changelog con create_changelog_entry -- así el usuario nunca tiene que documentar esto a mano.
|
|
59
59
|
- Antes de crear un módulo/estatus/categoría/servicio/entorno/distribución, revisa con el list_* correspondiente que no exista ya uno con ese nombre.
|
|
60
60
|
- Si tienes acceso al repo real de una distribución (ej. puedes correr "git remote get-url origin" en ese código), llena repoUrl en create_distribution/update_distribution sin preguntar -- es solo informativo, no requiere credenciales. Esto es distinto de conectar el repo con PAT para el changelog automático (Workspace → Conexiones en orquestra-web): eso sí es un paso deliberado del usuario, con una credencial real -- nunca lo hagas tú solo ni sugieras que ya está conectado por haber llenado repoUrl.
|
|
61
|
-
- No todas las tareas necesitan una corrida de QA -- clasifica antes de disparar una: cambios que afectan comportamiento real (features, bugs, UI, lógica de negocio, endpoints/API) sí la necesitan; cambios que no alteran comportamiento (docs, comentarios, refactors sin cambio funcional, config/tooling interno, notas/reuniones/ideas) no. Si decides que sí, llama a create_qa_run en la rama real de ese trabajo
|
|
61
|
+
- No todas las tareas necesitan una corrida de QA -- clasifica antes de disparar una: cambios que afectan comportamiento real (features, bugs, UI, lógica de negocio, endpoints/API) sí la necesitan; cambios que no alteran comportamiento (docs, comentarios, refactors sin cambio funcional, config/tooling interno, notas/reuniones/ideas) no. Si decides que sí, revisa primero con list_qa_agents que exista un agente para el stack que tocaste (si no hay ninguno, créalo con create_qa_agent -- necesita una máquina ya emparejada, ver Workspace → QA) y llama a create_qa_run en la rama real de ese trabajo, dejando la tarea en "En revisión" -- NUNCA la muevas a "Listo" ni digas que "QA lo revisó" sin haber confirmado con get_qa_run un estatus terminal "passed" de verdad (las corridas son asíncronas, tardan minutos en otra máquina). Si tarda, dile al usuario que quedó en cola (con el runId) y que confirmas cuando termine -- no lo des por hecho nunca.
|
|
62
62
|
|
|
63
63
|
No le preguntes al usuario por workspaceId ni projectId -- ya están configurados. Solo pregúntale por el proyecto si tiene más de uno y no queda claro a cuál te refieres.
|
|
64
64
|
|
|
@@ -521,12 +521,44 @@ export function createServer() {
|
|
|
521
521
|
// ═══ QA (módulo de runners -- ver orquestra-qa-agent) ═══════════════════════
|
|
522
522
|
// Asíncronas: una corrida puede tardar minutos en otra máquina. Ver
|
|
523
523
|
// SERVER_INSTRUCTIONS para la regla de no asumir "passed" sin confirmar.
|
|
524
|
+
//
|
|
525
|
+
// Un agente = un stack de este proyecto (web/ios/android/node/nestjs)
|
|
526
|
+
// atado a una máquina (runnerId) y una ruta de checkout en ella
|
|
527
|
+
// (localPath) -- "orquestra-qa-agent setup" crea/actualiza el suyo solo;
|
|
528
|
+
// estas tools existen para revisarlos/crearlos desde acá también.
|
|
529
|
+
const QA_AGENT_STACKS = ['web', 'ios', 'android', 'node', 'nestjs']
|
|
530
|
+
|
|
531
|
+
registerRead('list_qa_agents', '/v1/qaAgents',
|
|
532
|
+
'Lista los agentes de QA (stack+máquina+ruta local) configurados en un proyecto. Úsala antes de create_qa_agent o de create_qa_run con stack, para saber si ya existe uno.',
|
|
533
|
+
{}, (args, projectId) => ({ projectId }))
|
|
534
|
+
|
|
535
|
+
registerCreate('create_qa_agent', '/v1/qaAgents', 'Crea un agente de QA: asocia un stack de este proyecto a una máquina (runner, ver Workspace → QA) y una ruta de checkout en ESA máquina.', {
|
|
536
|
+
name: z.string().describe('Nombre a mostrar, ej. "Agente web"'),
|
|
537
|
+
stack: z.enum(QA_AGENT_STACKS),
|
|
538
|
+
runnerId: z.string().describe('ID de la máquina emparejada -- ver list_qa_agents o Workspace → QA'),
|
|
539
|
+
localPath: z.string().describe('Ruta absoluta del checkout en esa máquina'),
|
|
540
|
+
branch: z.string().optional().describe('Override de rama para este agente -- default: la del proyecto'),
|
|
541
|
+
distributionId: z.string().optional().describe('Distribución vinculada (repo/fuente de conocimiento)'),
|
|
542
|
+
enabled: z.boolean().optional(),
|
|
543
|
+
})
|
|
544
|
+
|
|
545
|
+
registerUpdate('update_qa_agent', '/v1/qaAgents', 'Edita un agente de QA existente.', {
|
|
546
|
+
name: z.string().optional(),
|
|
547
|
+
stack: z.enum(QA_AGENT_STACKS).optional(),
|
|
548
|
+
runnerId: z.string().optional(),
|
|
549
|
+
localPath: z.string().optional(),
|
|
550
|
+
branch: z.string().optional(),
|
|
551
|
+
distributionId: z.string().optional(),
|
|
552
|
+
enabled: z.boolean().optional(),
|
|
553
|
+
})
|
|
524
554
|
|
|
525
|
-
registerCreate('create_qa_run', '/v1/qa/runs', 'Dispara una corrida de QA (lint/tests/build/E2E según el stack) en la rama indicada. El proyecto necesita QA activado
|
|
526
|
-
|
|
555
|
+
registerCreate('create_qa_run', '/v1/qa/runs', 'Dispara una corrida de QA (lint/tests/build/E2E según el stack) en la rama indicada. El proyecto necesita QA activado y al menos un agente de QA para el stack (o falla explícito -- ver list_qa_agents/create_qa_agent). La corrida queda "queued" -- nunca asumas que pasó, confirma con get_qa_run.', {
|
|
556
|
+
agentId: z.string().optional().describe('Agente específico -- si se manda, gana sobre stack'),
|
|
557
|
+
branch: z.string().optional().describe('Rama a probar -- default: la del agente, o la del proyecto, o "main"'),
|
|
527
558
|
commit: z.string().optional(),
|
|
528
559
|
trigger: z.enum(['manual', 'push', 'schedule']).optional().describe('Default: manual'),
|
|
529
|
-
|
|
560
|
+
stack: z.string().optional().describe('Stack a probar (ej. "web", "ios", "android") -- resuelve contra los agentes activos de ese stack. Falla si hay 0 (créalo con create_qa_agent) o más de 1 (usa agentId).'),
|
|
561
|
+
runnerId: z.string().optional().describe('Máquina específica -- si se manda, gana sobre la del agente resuelto'),
|
|
530
562
|
})
|
|
531
563
|
|
|
532
564
|
server.registerTool(
|