zugzbot-sdd 1.5.27 → 1.5.29
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.
|
@@ -185,18 +185,7 @@ export default tool({
|
|
|
185
185
|
report.push(`⚠️ No se pudo restablecer el lockfile: ${e.message}`);
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
|
-
// 6.
|
|
189
|
-
if (fs.existsSync(path.join(projectRoot, ".git"))) {
|
|
190
|
-
try {
|
|
191
|
-
execSync("git add .", { cwd: projectRoot, stdio: "ignore" });
|
|
192
|
-
execSync(`git commit -F "${tempCommitMsgPath}"`, { cwd: projectRoot, stdio: "ignore" });
|
|
193
|
-
report.push(`✓ Commit de Git ejecutado usando el mensaje semántico`);
|
|
194
|
-
}
|
|
195
|
-
catch (e) {
|
|
196
|
-
report.push(`⚠️ Git Commit falló o no había cambios pendientes de código: ${e.message}`);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
// 8. Archivar la carpeta físicamente (DESPUÉS del commit)
|
|
188
|
+
// 6. Archivar la carpeta físicamente (ANTES del commit para que quede registrado de forma atómica)
|
|
200
189
|
const archiveDir = path.join(projectRoot, ".openspec/changes/archive", `${dateStr}-${args.changeName}`);
|
|
201
190
|
try {
|
|
202
191
|
if (fs.existsSync(archiveDir)) {
|
|
@@ -209,7 +198,18 @@ export default tool({
|
|
|
209
198
|
catch (e) {
|
|
210
199
|
return `[SDD Archive Error] Error crítico archivando carpetas: ${e.message}`;
|
|
211
200
|
}
|
|
212
|
-
//
|
|
201
|
+
// 7. Confirmación Git Atómica (incluye la carpeta archivada y la eliminación de la activa)
|
|
202
|
+
if (fs.existsSync(path.join(projectRoot, ".git"))) {
|
|
203
|
+
try {
|
|
204
|
+
execSync("git add .", { cwd: projectRoot, stdio: "ignore" });
|
|
205
|
+
execSync(`git commit -F "${tempCommitMsgPath}"`, { cwd: projectRoot, stdio: "ignore" });
|
|
206
|
+
report.push(`✓ Commit de Git ejecutado usando el mensaje semántico (incluye archivos archivados)`);
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
report.push(`⚠️ Git Commit falló o no había cambios pendientes de código: ${e.message}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
// 8. Limpiar archivo temporal de commit message
|
|
213
213
|
try {
|
|
214
214
|
if (fs.existsSync(tempCommitMsgPath)) {
|
|
215
215
|
fs.unlinkSync(tempCommitMsgPath);
|
package/AGENTS.md
CHANGED
|
@@ -204,7 +204,13 @@ Feature: [Breve descripción de la funcionalidad]
|
|
|
204
204
|
2. **🛡️ Cooldown de Dependencias**:
|
|
205
205
|
- Cualquier dependencia agregada debe tener al menos **3 días de publicada** en el registro oficial. Carga la habilidad `sdd-dependency-cooldown` para verificar su antigüedad antes de cualquier importación.
|
|
206
206
|
|
|
207
|
-
3.
|
|
207
|
+
3. **⚡ Directivas de Activación y Uso de Skills Premium**:
|
|
208
|
+
El enjambre cuenta con habilidades premium cargadas dinámicamente en `.opencode/skills/`. Todos los agentes deben invocar y apegarse estrictamente a estas guías bajo las siguientes condiciones:
|
|
209
|
+
- **`sdd-auto-api-mocker` (Triggers: Fase 2 / Fase 3)**: Si el proyecto host contiene APIs inaccesibles localmente (como objetos globales de Google Apps Script `SpreadsheetApp`, clasp, APIs REST de terceros, bases de datos remotas), el `@sdd-builder` y `@sdd-tester` deben activar esta habilidad para simular mocks de red y sandbox locales no invasivos.
|
|
210
|
+
- **`sdd-semantic-context-pruner` (Triggers: Fase 0 / Fase 1 / Fase 2)**: Al indexar archivos o delegar tareas, los agentes deben usar poda semántica para eliminar cuerpos de métodos no afectados y enviar únicamente declaraciones de firmas/tipos para optimizar el consumo de tokens en un 70%.
|
|
211
|
+
- **`sdd-root-cause-diagnostician` (Trigger: Fallo de validación en F3 / F2)**: Ante cualquier error de linter o compilación, el `@sdd-tester` debe ejecutar esta habilidad para redactar un diagnóstico de causa raíz accionable en `.openspec/diagnostics/root_cause.md`, eliminando bucles infinitos de fallas.
|
|
212
|
+
|
|
213
|
+
4. **🔬 Estructura Estándar de Testing Agnóstico**:
|
|
208
214
|
- Todo proyecto gestionado por el arnés debe estructurar su carpeta de pruebas `tests/` en tres subdirectorios específicos:
|
|
209
215
|
* `tests/unit/`: Para pruebas unitarias de funciones aisladas.
|
|
210
216
|
* `tests/static/`: Para validadores estáticos universales y agnósticos (ej: balance de etiquetas HTML en `tag_balance.js`, detección de IDs duplicados en `dom_structure.js`).
|
package/package.json
CHANGED
|
@@ -184,18 +184,7 @@ export default tool({
|
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
-
// 6.
|
|
188
|
-
if (fs.existsSync(path.join(projectRoot, ".git"))) {
|
|
189
|
-
try {
|
|
190
|
-
execSync("git add .", { cwd: projectRoot, stdio: "ignore" })
|
|
191
|
-
execSync(`git commit -F "${tempCommitMsgPath}"`, { cwd: projectRoot, stdio: "ignore" })
|
|
192
|
-
report.push(`✓ Commit de Git ejecutado usando el mensaje semántico`)
|
|
193
|
-
} catch (e: any) {
|
|
194
|
-
report.push(`⚠️ Git Commit falló o no había cambios pendientes de código: ${e.message}`)
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// 8. Archivar la carpeta físicamente (DESPUÉS del commit)
|
|
187
|
+
// 6. Archivar la carpeta físicamente (ANTES del commit para que quede registrado de forma atómica)
|
|
199
188
|
const archiveDir = path.join(projectRoot, ".openspec/changes/archive", `${dateStr}-${args.changeName}`)
|
|
200
189
|
try {
|
|
201
190
|
if (fs.existsSync(archiveDir)) {
|
|
@@ -208,7 +197,18 @@ export default tool({
|
|
|
208
197
|
return `[SDD Archive Error] Error crítico archivando carpetas: ${e.message}`
|
|
209
198
|
}
|
|
210
199
|
|
|
211
|
-
//
|
|
200
|
+
// 7. Confirmación Git Atómica (incluye la carpeta archivada y la eliminación de la activa)
|
|
201
|
+
if (fs.existsSync(path.join(projectRoot, ".git"))) {
|
|
202
|
+
try {
|
|
203
|
+
execSync("git add .", { cwd: projectRoot, stdio: "ignore" })
|
|
204
|
+
execSync(`git commit -F "${tempCommitMsgPath}"`, { cwd: projectRoot, stdio: "ignore" })
|
|
205
|
+
report.push(`✓ Commit de Git ejecutado usando el mensaje semántico (incluye archivos archivados)`)
|
|
206
|
+
} catch (e: any) {
|
|
207
|
+
report.push(`⚠️ Git Commit falló o no había cambios pendientes de código: ${e.message}`)
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// 8. Limpiar archivo temporal de commit message
|
|
212
212
|
try {
|
|
213
213
|
if (fs.existsSync(tempCommitMsgPath)) {
|
|
214
214
|
fs.unlinkSync(tempCommitMsgPath)
|