Como migrar squads legacy al formato AIOX 2.1.
AIOX 2.1 introdujo un nuevo formato de squad con:
- Arquitectura task-first
- Validacion con JSON Schema
- Distribucion de tres niveles
- Manifiesto estandarizado (
squad.yaml)
Los squads legacy que usan config.yaml o formatos antiguos necesitan migracion.
| Indicador | Legacy | Actual (2.1+) |
|---|---|---|
| Archivo de manifiesto | config.yaml |
squad.yaml |
| Campo de tipo AIOX | Faltante | aiox.type: squad |
| Version minima | Faltante | aiox.minVersion: "2.1.0" |
| Estructura | Agent-first | Task-first |
@squad-creator
*validate-squad ./squads/legacy-squadLa salida indicara si se necesita migracion:
⚠️ Formato legacy detectado (config.yaml)
Ejecutar: *migrate-squad ./squads/legacy-squad
@squad-creator
*migrate-squad ./squads/legacy-squad --dry-runMuestra lo que cambiara sin modificar archivos.
*migrate-squad ./squads/legacy-squad*migrate-squad ./squads/legacy-squad --verboseMuestra el progreso detallado paso a paso.
config.yaml → squad.yaml
# Estos campos se agregan si faltan
aiox:
minVersion: '2.1.0'
type: squadLos componentes se reorganizan en la estructura estandar:
Antes:
├── config.yaml
├── my-agent.yaml
└── my-task.yaml
Despues:
├── squad.yaml
├── agents/
│ └── my-agent.md
└── tasks/
└── my-task.md
Los archivos YAML de agentes se convierten a formato Markdown:
# Antes: my-agent.yaml
name: my-agent
role: Helper# Despues: agents/my-agent.md
# my-agent
ACTIVATION-NOTICE: ...
\`\`\`yaml
agent:
name: my-agent
...
\`\`\`Antes:
my-squad/
├── config.yaml
└── README.md
Comando:
*migrate-squad ./squads/my-squadDespues:
my-squad/
├── squad.yaml # Renombrado + actualizado
├── README.md
└── .backup/ # Respaldo creado
└── pre-migration-2025-12-26/
Antes:
my-squad/
├── config.yaml
├── agent.yaml
└── task.yaml
Comando:
*migrate-squad ./squads/my-squadDespues:
my-squad/
├── squad.yaml
├── agents/
│ └── agent.md # Convertido a MD
├── tasks/
│ └── task.md # Convertido a MD
└── .backup/
Antes:
my-squad/
├── squad.yaml # Ya renombrado
├── agent.yaml # Aun formato YAML
└── tasks/
└── task.md # Ya formato MD
Comando:
*migrate-squad ./squads/my-squadResultado:
- Agrega campos
aioxfaltantes al manifiesto - Convierte archivos YAML restantes
- Omite archivos ya migrados
Cada migracion crea un respaldo:
.backup/
└── pre-migration-{timestamp}/
├── config.yaml # Manifiesto original
├── agent.yaml # Archivos originales
└── ...
# Listar respaldos
ls ./squads/my-squad/.backup/
# Restaurar respaldo especifico
cp -r ./squads/my-squad/.backup/pre-migration-2025-12-26/. ./squads/my-squad/const { SquadMigrator } = require('./.aiox-core/development/scripts/squad');
const migrator = new SquadMigrator();
await migrator.rollback('./squads/my-squad');Error: No manifest found (config.yaml or squad.yaml)
Solucion: Crear un manifiesto basico:
# squad.yaml
name: my-squad
version: 1.0.0
description: Mi squad
aiox:
minVersion: '2.1.0'
type: squad
components:
agents: []
tasks: []Error: YAML parse error at line 15
Solucion:
- Verificar sintaxis YAML con un validador
- Problemas comunes: tabs (usar espacios), comillas faltantes
- Corregir errores, luego reintentar migracion
Error: Could not create backup directory
Solucion:
- Verificar permisos de escritura:
chmod 755 ./squads/my-squad - Verificar espacio en disco
- Intentar con sudo (si es apropiado)
Warning: Some files could not be migrated
Solucion:
- Ejecutar con
--verbosepara ver que archivos fallaron - Corregir manualmente los archivos problematicos
- Re-ejecutar migracion
Despues de la migracion, verificar:
-
squad.yamlexiste y es valido -
aiox.typees"squad" -
aiox.minVersiones"2.1.0"o superior - Todos los agentes estan en carpeta
agents/ - Todas las tareas estan en carpeta
tasks/ - Archivos de agentes estan en formato Markdown
- Archivos de tareas siguen TASK-FORMAT-SPEC-V1
- La validacion pasa:
*validate-squad --strict
const { SquadMigrator } = require('./.aiox-core/development/scripts/squad');
const migrator = new SquadMigrator({
verbose: true,
dryRun: false,
backupDir: '.backup',
});
// Verificar si se necesita migracion
const needsMigration = await migrator.needsMigration('./squads/my-squad');
// Ejecutar migracion
const result = await migrator.migrate('./squads/my-squad');
console.log(result);
// {
// success: true,
// changes: ['config.yaml → squad.yaml', ...],
// backupPath: '.backup/pre-migration-...'
// }Version: 1.0.0 | Actualizado: 2025-12-26 | Story: SQS-8