@tacuchi/agent-workflow-cli 10.4.0 → 11.0.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/LICENSE +661 -0
- package/README.md +5 -1
- package/package.json +2 -2
- package/skills/agent-workflow/LICENSE +661 -21
- package/skills/agent-workflow/README.md +2 -2
- package/skills/agent-workflow/commands/export-scripts.md +35 -62
- package/skills/agent-workflow/exports/export-scripts/SKILL.md +114 -248
- package/skills/agent-workflow/exports/export-scripts/references/lexico-tecnico.md +17 -64
- package/skills/agent-workflow/exports/export-scripts/references/readme-template.md +24 -264
- package/skills/agent-workflow/exports/export-scripts/references/validations.md +29 -250
- package/skills/agent-workflow/standards/sql-rollback-generator/SKILL.md +72 -126
- package/skills/agent-workflow/standards/sql-script-organizer/SKILL.md +12 -13
- package/dist/cli/tui/components/command-palette.d.ts +0 -18
- package/dist/cli/tui/components/command-palette.d.ts.map +0 -1
- package/dist/cli/tui/components/command-palette.js +0 -23
- package/dist/cli/tui/components/command-palette.js.map +0 -1
- package/dist/cli/tui/components/sidebar.d.ts +0 -27
- package/dist/cli/tui/components/sidebar.d.ts.map +0 -1
- package/dist/cli/tui/components/sidebar.js +0 -37
- package/dist/cli/tui/components/sidebar.js.map +0 -1
- package/dist/cli/tui/components/toast-stack.d.ts +0 -41
- package/dist/cli/tui/components/toast-stack.d.ts.map +0 -1
- package/dist/cli/tui/components/toast-stack.js +0 -61
- package/dist/cli/tui/components/toast-stack.js.map +0 -1
- package/dist/cli/tui/components/toast.d.ts +0 -7
- package/dist/cli/tui/components/toast.d.ts.map +0 -1
- package/dist/cli/tui/components/toast.js +0 -17
- package/dist/cli/tui/components/toast.js.map +0 -1
- package/skills/agent-workflow/doctrine/doctor/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/hub-init/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/migrate/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/project-init/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/rules/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/exports/export-arq/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/exports/export-report/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/specialties/analyze-investigate/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/standards/coding-standards/SKILL.md.tmp +0 -0
|
@@ -1,85 +1,62 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sql-rollback-generator
|
|
3
|
-
description: "Genera
|
|
4
|
-
version:
|
|
3
|
+
description: "Genera `00-ROLLBACK.sql` único al root del bundle, leyendo los forwards ya escritos por `/agent-workflow:export-scripts` v5.0.0+. v3.0.0 BREAKING (session103): lee los archivos `NN-*.sql` consolidados (no `SCRIPTS.sql` por sesión); headers SQL mínimos (1-2 líneas); orden inverso del último forward al primero. Bloque `BEGIN; ... COMMIT;` único + bloque opcional `Fase 5 — Cleanup irreversible` después del COMMIT para operaciones no revertibles automáticamente (DROP COLUMN, TRUNCATE, ALTER COLUMN TYPE con pérdida). NO genera companions `.rollback.sql` ni sub-carpetas per-sesión."
|
|
4
|
+
version: 3.0.0
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# SQL Rollback Generator
|
|
7
|
+
# SQL Rollback Generator — `00-ROLLBACK.sql` único, derivado de forwards
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Genera el rollback **derivado de los forwards consolidados**. Invocado por `/agent-workflow:export-scripts` v5.0.0+ después de escribir los archivos `NN-*.sql` del bundle.
|
|
10
10
|
|
|
11
|
-
>
|
|
11
|
+
> v3.0.0 (session103) — lee los forwards ya escritos en vez de `SCRIPTS.sql` original. Headers minimal (1-2 líneas). Sin verbosidad de motivación/impacto.
|
|
12
12
|
|
|
13
13
|
## When to use
|
|
14
14
|
|
|
15
|
-
- **Disparado por `/agent-workflow:export-scripts`**
|
|
16
|
-
- NL del usuario: "generar rollback", "script de reversa"
|
|
17
|
-
-
|
|
15
|
+
- **Disparado por `/agent-workflow:export-scripts`** después del Paso 5 (forwards escritos).
|
|
16
|
+
- NL del usuario: "generar rollback", "script de reversa".
|
|
17
|
+
- En plan-mode: simular el rollback de un cambio específico sin escribir archivos.
|
|
18
18
|
|
|
19
19
|
## Sandbox read-only
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
`../session/references/sandbox-readonly-rules.md`. Plan describe estructura del rollback sin escribir archivos.
|
|
22
22
|
|
|
23
|
-
## Principios (
|
|
23
|
+
## Principios (v3.0.0)
|
|
24
24
|
|
|
25
|
-
- **Input**: `
|
|
26
|
-
- **Output único**: `<bundle-root>/00-ROLLBACK.sql
|
|
27
|
-
- **
|
|
28
|
-
- **
|
|
29
|
-
- **
|
|
30
|
-
- **
|
|
31
|
-
- **
|
|
32
|
-
- Header del archivo: corpus + fecha + sesiones cubiertas + versión del CLI.
|
|
33
|
-
- Bloque transaccional único `BEGIN; ... COMMIT;` con sub-bloques por sesión.
|
|
34
|
-
- Cada sub-bloque preserva header canónico del rollback de su sentencia (Script / Sesion / Objeto / Alcance) como comentario.
|
|
35
|
-
- Bloque final **fuera de la transacción**: "Fase 5 — Cleanup irreversible" con header `-- WARNING: IRREVERSIBLE` listando operaciones que no son revertibles automáticamente (decisión manual del operador).
|
|
36
|
-
- **Idempotencia obligatoria**: `DROP ... IF EXISTS`, `CREATE OR REPLACE`, `ON CONFLICT DO NOTHING`.
|
|
37
|
-
- **Datos**: si el forward es UPDATE/DELETE masivo sin backup, generar un `000-backup-*.sql` previo en `03-DML.sql` del bundle + el rollback que restaura desde `esq_audit.tb_bkp_<x>_sNNN` vive dentro de `00-ROLLBACK.sql`.
|
|
25
|
+
- **Input**: los archivos `NN-*.sql` forward ya escritos en el bundle (no `SCRIPTS.sql` original).
|
|
26
|
+
- **Output único**: `<bundle-root>/00-ROLLBACK.sql`.
|
|
27
|
+
- **Orden interno**: inverso del último forward al primero — si el bundle es `01-DDL-TABLES.sql, 02-DML.sql, 03-INSERTS.sql`, el rollback procesa `03 → 02 → 01`.
|
|
28
|
+
- **Headers mínimos**: 2 líneas para el archivo, 1 línea por sentencia.
|
|
29
|
+
- **Bloque transaccional único** `BEGIN; ... COMMIT;`.
|
|
30
|
+
- **Bloque Fase 5** después del COMMIT (solo si hay irreversibles): operaciones que no se pueden revertir automáticamente.
|
|
31
|
+
- **Idempotencia obligatoria**: `DROP ... IF EXISTS`, `CREATE OR REPLACE`.
|
|
38
32
|
|
|
39
33
|
## Estructura del `00-ROLLBACK.sql`
|
|
40
34
|
|
|
41
|
-
Header
|
|
35
|
+
Header del archivo (2 líneas):
|
|
42
36
|
|
|
43
37
|
```sql
|
|
44
|
-
--
|
|
45
|
-
--
|
|
46
|
-
-- Bundle: NNN-export-scripts-YYYY-MM-DD
|
|
47
|
-
-- Sesiones: sNNN, sNNN, ...
|
|
48
|
-
-- Objeto: Revierte el bundle completo en orden inverso (última sesión → primera, 04→01).
|
|
49
|
-
-- Alcance: <enumeración cross-session>
|
|
50
|
-
-- ============================================================================
|
|
38
|
+
-- 00-ROLLBACK.sql — bundle NNN-export-scripts-YYYY-MM-DD
|
|
39
|
+
-- Generado por agent-workflow sql-rollback-generator v3.0.0
|
|
51
40
|
```
|
|
52
41
|
|
|
53
|
-
Sub-bloque por sentencia (
|
|
42
|
+
Sub-bloque por sentencia (1 línea de comentario + SQL):
|
|
54
43
|
|
|
55
44
|
```sql
|
|
56
|
-
--
|
|
57
|
-
|
|
58
|
-
-- Objeto: <resumen de la reversa>
|
|
59
|
-
-- Alcance: <mismo alcance que el forward>
|
|
60
|
-
-- ----------------------------------------------------------------------------
|
|
61
|
-
DROP TABLE IF EXISTS esq_.tb_x;
|
|
62
|
-
-- ...
|
|
45
|
+
-- Revierte: sessionXXX / stmt-id (forward: 02-DML.sql)
|
|
46
|
+
ALTER TABLE esq_.tb_x ALTER COLUMN col_y TYPE varchar(80);
|
|
63
47
|
```
|
|
64
48
|
|
|
65
|
-
|
|
66
|
-
- `Alcance:` repite literal el del forward.
|
|
67
|
-
|
|
68
|
-
Bloque irreversibles al final del archivo (después del `COMMIT;`, **fuera de la transacción**):
|
|
49
|
+
Bloque Fase 5 (al final, fuera de la transacción — solo si hay irreversibles):
|
|
69
50
|
|
|
70
51
|
```sql
|
|
71
52
|
COMMIT;
|
|
72
53
|
|
|
73
|
-
-- ============================================================================
|
|
74
54
|
-- Fase 5 — Cleanup irreversible (manual)
|
|
75
|
-
--
|
|
76
|
-
--
|
|
77
|
-
-- sesion sNNN — DROP COLUMN esq_.tb_x.col_y (no hay backup automático)
|
|
78
|
-
-- sesion sMMM — TRUNCATE esq_.tb_z
|
|
79
|
-
-- ...
|
|
55
|
+
-- sessionXXX / UPDATE esq_.tb_y sin backup automático: completar valores previos manualmente.
|
|
56
|
+
-- sessionYYY / TRUNCATE esq_.tb_z: pérdida total, sin reversa.
|
|
80
57
|
```
|
|
81
58
|
|
|
82
|
-
|
|
59
|
+
Sin templates `BEGIN; UPDATE … COMMIT;` comentados ni explicaciones largas. Solo una línea por irreversible identificando origen y razón.
|
|
83
60
|
|
|
84
61
|
## Estrategias por tipo de operación
|
|
85
62
|
|
|
@@ -91,122 +68,91 @@ El bloque WARNING explica qué no se puede recuperar y referencia la decisión d
|
|
|
91
68
|
| `ALTER TABLE tb_x ADD COLUMN col_y ...` | `ALTER TABLE tb_x DROP COLUMN IF EXISTS col_y;` |
|
|
92
69
|
| `CREATE INDEX idx_... ON tb_x(col)` | `DROP INDEX IF EXISTS idx_...;` |
|
|
93
70
|
| `CREATE SEQUENCE esq_.seq_tb_x` | `DROP SEQUENCE IF EXISTS esq_.seq_tb_x;` |
|
|
94
|
-
| `
|
|
95
|
-
|
|
|
71
|
+
| `ALTER COLUMN col TYPE varchar(255)` (widen) | `ALTER COLUMN col TYPE varchar(80);` (con nota Fase 5 si datos exceden 80) |
|
|
72
|
+
| `DROP TABLE tb_x` | **Irreversible** → Fase 5 (requiere backup previo a `esq_audit`) |
|
|
96
73
|
|
|
97
|
-
### DDL de funciones
|
|
74
|
+
### DDL de funciones
|
|
98
75
|
|
|
99
76
|
| Forward | Rollback |
|
|
100
77
|
|---|---|
|
|
101
|
-
| `CREATE OR REPLACE FUNCTION fn_x(...)` | `DROP FUNCTION IF EXISTS fn_x(<firma>);`
|
|
102
|
-
| `
|
|
103
|
-
| `DROP FUNCTION fn_x` | `-- WARNING: IRREVERSIBLE` — incluir cuerpo en comentario |
|
|
78
|
+
| `CREATE OR REPLACE FUNCTION fn_x(...)` | `DROP FUNCTION IF EXISTS fn_x(<firma>);` |
|
|
79
|
+
| `DROP FUNCTION fn_x` | **Irreversible** → Fase 5 |
|
|
104
80
|
|
|
105
81
|
### Migración de datos (UPDATE / DELETE)
|
|
106
82
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
1. Generar `000-backup-<tabla>.sql` que copia filas afectadas a `esq_audit.tb_bkp_<tabla>_sessionXXX`.
|
|
110
|
-
2. Rollback usa el backup:
|
|
111
|
-
|
|
112
|
-
```sql
|
|
113
|
-
BEGIN;
|
|
114
|
-
UPDATE esq_.tb_x t
|
|
115
|
-
SET col_a = bkp.col_a, col_b = bkp.col_b
|
|
116
|
-
FROM esq_audit.tb_bkp_x_sessionXXX bkp
|
|
117
|
-
WHERE t.id_x = bkp.id_x;
|
|
118
|
-
COMMIT;
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
Si DELETE masivo, rollback es `INSERT INTO ... SELECT * FROM esq_audit.tb_bkp_...`.
|
|
83
|
+
- Si el forward incluye backup explícito en `esq_audit.tb_bkp_*_sNNN` (visible en el forward consolidado): rollback `UPDATE … FROM esq_audit.tb_bkp_…`.
|
|
84
|
+
- Si NO hay backup automático en el forward: **Fase 5**, con nota de una línea ("`sessionXXX` / UPDATE sin backup: completar valores previos manualmente").
|
|
122
85
|
|
|
123
|
-
### Inserts
|
|
86
|
+
### Inserts
|
|
124
87
|
|
|
125
88
|
```sql
|
|
126
|
-
BEGIN;
|
|
127
89
|
DELETE FROM esq_.tb_maestras WHERE campo_identificador IN (<lista>);
|
|
128
|
-
COMMIT;
|
|
129
90
|
```
|
|
130
91
|
|
|
131
92
|
Usar claves naturales o rango de IDs conocido — nunca DELETE sin WHERE.
|
|
132
93
|
|
|
133
|
-
###
|
|
134
|
-
|
|
135
|
-
Marcar con `-- WARNING: IRREVERSIBLE` en el header del forward:
|
|
94
|
+
### Irreversibles → Fase 5
|
|
136
95
|
|
|
137
96
|
- `TRUNCATE TABLE`
|
|
138
97
|
- `DROP COLUMN` sin respaldo previo
|
|
139
98
|
- `DROP TABLE` sin respaldo previo
|
|
140
|
-
- `ALTER COLUMN TYPE` con pérdida
|
|
99
|
+
- `ALTER COLUMN TYPE` con pérdida (varchar widen → narrow si datos exceden)
|
|
141
100
|
- Cascadas destructivas (`DROP ... CASCADE`)
|
|
142
|
-
- `DELETE` sin respaldo en `esq_audit`
|
|
101
|
+
- `DELETE`/`UPDATE` sin respaldo en `esq_audit`
|
|
102
|
+
|
|
103
|
+
Cada uno aparece como **una sola línea** en la Fase 5, identificando origen + razón. Sin templates comentados ni explicaciones extensas.
|
|
143
104
|
|
|
144
|
-
|
|
105
|
+
## Proceso (v3.0.0)
|
|
145
106
|
|
|
146
|
-
1.
|
|
147
|
-
2.
|
|
148
|
-
3.
|
|
149
|
-
4.
|
|
107
|
+
1. Leer los archivos `NN-*.sql` forward escritos en el bundle (no `SCRIPTS.sql` original).
|
|
108
|
+
2. Parsear cada bloque (un BEGIN/COMMIT por sentencia, identificada por `-- sessionXXX / stmt-id`).
|
|
109
|
+
3. Para cada sentencia forward, clasificar el tipo y seleccionar estrategia (DDL / migración / inserts / irreversible).
|
|
110
|
+
4. Generar el bloque rollback correspondiente (header de 1 línea + SQL inverso).
|
|
111
|
+
5. Identificar irreversibles → moverlos a la Fase 5 al final.
|
|
112
|
+
6. Componer el `00-ROLLBACK.sql` único con orden inverso (último forward → primero, dentro de cada uno última sentencia → primera).
|
|
113
|
+
7. Escribir el archivo al root del bundle.
|
|
150
114
|
|
|
151
|
-
|
|
115
|
+
## Notas de portabilidad
|
|
152
116
|
|
|
153
|
-
|
|
117
|
+
PostgreSQL como motor primario. Para otros motores, ajustar sintaxis idempotente:
|
|
154
118
|
|
|
155
|
-
|
|
119
|
+
| Concepto | PostgreSQL | Oracle | SQL Server |
|
|
120
|
+
|---|---|---|---|
|
|
121
|
+
| Drop idempotente | `DROP … IF EXISTS` | `DROP … (no IF EXISTS)` | `DROP … IF EXISTS` |
|
|
122
|
+
| Recrear función | `CREATE OR REPLACE FUNCTION` | `CREATE OR REPLACE FUNCTION` | `CREATE OR ALTER PROCEDURE` |
|
|
123
|
+
|
|
124
|
+
Si el destino no es Postgres, indicarlo en el header del archivo (línea adicional opcional).
|
|
125
|
+
|
|
126
|
+
## Layout (post-export-scripts v5.0.0)
|
|
156
127
|
|
|
157
128
|
```
|
|
158
129
|
<docs>/scripts/NNN-export-scripts-YYYY-MM-DD/
|
|
159
|
-
└── 00-ROLLBACK.sql #
|
|
130
|
+
└── 00-ROLLBACK.sql # este skill lo genera
|
|
160
131
|
```
|
|
161
132
|
|
|
162
|
-
Para context: el bundle plano del export incluye además `01
|
|
133
|
+
Para context: el bundle plano del export incluye además `01-…`, `02-…`, etc. (forwards en orden ascendente, numeración continua) + `README.md` — todos al root, generados por `export-scripts`.
|
|
134
|
+
|
|
135
|
+
**No se generan** desde v2.0.0:
|
|
163
136
|
|
|
164
|
-
**No se generan** (eliminados desde v2.0.0):
|
|
165
137
|
- Companions `.rollback.sql` por sentencia.
|
|
166
138
|
- Sub-carpeta `<session>/rollback/` per-sesión.
|
|
167
139
|
- Archivo `rollback-global.sql` separado.
|
|
168
|
-
- Archivos `04-inserts-rollback.sql`, `03-migracion-rollback.sql`, etc. (categorías por separado).
|
|
169
|
-
|
|
170
|
-
Layouts v1.0.0 quedan como histórico en bundles ya generados (`docs/scripts/00X-export-scripts-*` previos). No se migran retroactivamente. Layouts legacy v0.x se migran con `/agent-workflow:migrate --upgrade-topology`.
|
|
171
|
-
|
|
172
|
-
## Proceso (v2.0.0)
|
|
173
|
-
|
|
174
|
-
1. Parsear todos los `SCRIPTS.sql` del corpus de export (markers `@category`/`@stmt`).
|
|
175
|
-
2. Para cada sentencia forward, clasificar el tipo y seleccionar estrategia (DDL / migración / inserts / irreversible).
|
|
176
|
-
3. Generar el bloque rollback correspondiente — sin escribir todavía a disco.
|
|
177
|
-
4. Identificar irreversibles → moverlos al bloque "Fase 5" final.
|
|
178
|
-
5. Componer el `00-ROLLBACK.sql` único con orden inverso global (última sesión → primera, 04→01) + bloque "Fase 5" al final.
|
|
179
|
-
6. Escribir el archivo único al root del bundle.
|
|
180
|
-
|
|
181
|
-
## Notas de portabilidad (PostgreSQL como motor primario)
|
|
182
|
-
|
|
183
|
-
| Concepto | PostgreSQL | Oracle | SQL Server |
|
|
184
|
-
|---|---|---|---|
|
|
185
|
-
| Rollback de función | `DROP FUNCTION IF EXISTS fn(...sig)` | `DROP FUNCTION fn` | `DROP FUNCTION IF EXISTS fn` |
|
|
186
|
-
| Idempotencia create | `CREATE OR REPLACE FUNCTION` | `CREATE OR REPLACE FUNCTION` | `CREATE OR ALTER PROCEDURE` |
|
|
187
|
-
| Insertar sin duplicar | `ON CONFLICT DO NOTHING` | `INSERT ... WHERE NOT EXISTS` | `IF NOT EXISTS (SELECT 1 ...) INSERT` |
|
|
188
|
-
| Secuencia | `DROP SEQUENCE IF EXISTS seq_` | `DROP SEQUENCE seq_` | No aplica (IDENTITY) |
|
|
189
|
-
|
|
190
|
-
Si el destino no es Postgres, indicarlo en `Objeto:` o como nota libre debajo del header (no como campo nuevo).
|
|
191
|
-
|
|
192
|
-
## Graduación al cierre
|
|
193
|
-
|
|
194
|
-
Este skill **NO se invoca al cerrar una sesión**. La graduación de scripts de una sesión individual produce `docs/scripts/NNN-sessionXXX-nombre/` con el `SCRIPTS.sql` curado; el rollback consolidado vive **exclusivamente en el bundle de export** (`docs/scripts/NNN-export-scripts-YYYY-MM-DD/00-ROLLBACK.sql`).
|
|
195
|
-
|
|
196
|
-
## Modo release (LEGACY — deprecation Fase 1)
|
|
197
|
-
|
|
198
|
-
`release` y `release-scripts` (legacy en deprecation Fase 1) consumían el algoritmo v1.0.0 (companions `.rollback.sql` + per-sesión rollback + global). Ese código y output **no se actualizan a v2.0.0**: se conserva como histórico en `references/release-rollback.md` mientras los workspaces dejan de invocarlos. El reemplazo canónico es `/agent-workflow:export-scripts` v4.0.0+ que invoca este skill en v2.0.0.
|
|
199
140
|
|
|
200
141
|
## Integración con otros skills
|
|
201
142
|
|
|
202
|
-
- **`
|
|
203
|
-
- **`
|
|
204
|
-
- **`
|
|
205
|
-
- **`coding-standards`** — reglas de estilo SQL en `database-conventions.md#estilo-de-scripts-sql`.
|
|
143
|
+
- **`export-scripts`** v5.0.0+ — único invocador activo; pasa los forwards ya escritos.
|
|
144
|
+
- **`sql-script-organizer`** — companion que organiza el `SCRIPTS.sql` por sesión.
|
|
145
|
+
- **`coding-standards`** — reglas de estilo SQL.
|
|
206
146
|
- **`session`** — este skill NO se invoca al cerrar una sesión individual; sólo desde export-scripts.
|
|
207
147
|
|
|
148
|
+
## Histórico de versiones
|
|
149
|
+
|
|
150
|
+
- **v3.0.0** (session103, 2026-05-28) — lee forwards ya escritos en vez de `SCRIPTS.sql` original; headers SQL minimal; Fase 5 sin templates comentados.
|
|
151
|
+
- **v2.0.0** (session093) — `00-ROLLBACK.sql` único cross-session leyendo `SCRIPTS.sql`. Histórico.
|
|
152
|
+
- **v1.0.0** y anteriores — companions `.rollback.sql` + per-sesión rollback. Histórico.
|
|
153
|
+
|
|
208
154
|
## Recursos adicionales
|
|
209
155
|
|
|
210
156
|
- **`references/rollback-patterns.md`** — recetas completas con ejemplos SQL.
|
|
211
157
|
- **`references/irreversible-checklist.md`** — lista de irreversibles y protocolo.
|
|
212
|
-
- **`references/release-rollback.md`** — algoritmos
|
|
158
|
+
- **`references/release-rollback.md`** — algoritmos legacy (modo release, deprecation Fase 1).
|
|
@@ -143,25 +143,24 @@ Cada sección del cuerpo se introduce con una línea de comentario corta envuelt
|
|
|
143
143
|
|
|
144
144
|
El usuario revisa el SCRIPTS.sql periódicamente; la separación 01-04 final y la verificación de dependencias cruzadas la hace `/agent-workflow:export-scripts` post-hoc.
|
|
145
145
|
|
|
146
|
-
## Layout del bundle (post-export-scripts
|
|
146
|
+
## Layout del bundle (post-export-scripts v5.0.0)
|
|
147
147
|
|
|
148
|
-
`/agent-workflow:export-scripts`
|
|
148
|
+
`/agent-workflow:export-scripts` v5.0.0+ produce el bundle al ejecutarse, no este skill. Layout plano con **numeración continua** tras `00-ROLLBACK.sql`:
|
|
149
149
|
|
|
150
150
|
```
|
|
151
151
|
<docs>/scripts/NNN-export-scripts-YYYY-MM-DD/
|
|
152
|
-
├── 00-ROLLBACK.sql (único rollback cross-session — sql-rollback-generator
|
|
153
|
-
├── 01
|
|
154
|
-
├── 02
|
|
155
|
-
├──
|
|
156
|
-
|
|
157
|
-
├── README.md (único informe + índice + how-to-execute)
|
|
158
|
-
└── por-tema/ (opt-in — capa adicional encima del root)
|
|
159
|
-
└── tema-<slug>/01-04-*.sql
|
|
152
|
+
├── 00-ROLLBACK.sql (único rollback cross-session — sql-rollback-generator v3.0.0)
|
|
153
|
+
├── 01-<CATEGORIA>.sql (primera categoría con contenido)
|
|
154
|
+
├── 02-<CATEGORIA>.sql (segunda categoría con contenido, si aplica)
|
|
155
|
+
├── ... (numeración continua, sin gaps por categoría vacía)
|
|
156
|
+
└── README.md (índice + cómo aplicar + cómo revertir)
|
|
160
157
|
```
|
|
161
158
|
|
|
159
|
+
Orden canónico de las categorías (para asignar número): `DDL-TABLES` → `DDL-FUNCTIONS` → `DML` → `INSERTS`. Las vacías no ocupan número. Si sólo hay DML, el archivo se llama `01-DML.sql`.
|
|
160
|
+
|
|
162
161
|
Sentencias individuales del `SCRIPTS.sql` per-sesión se consolidan **cross-session** al archivo de su categoría — no se crea sub-carpeta por sesión.
|
|
163
162
|
|
|
164
|
-
Layout **v3.x** (`por-sesion/<sessionXXX>/01-04/*.sql + .rollback.sql` companions + per-sesión `rollback/`) ya **no se genera** desde v4.0.0. Bundles ya escritos con
|
|
163
|
+
Layout **v3.x** (`por-sesion/<sessionXXX>/01-04/*.sql + .rollback.sql` companions + per-sesión `rollback/`) ya **no se genera** desde v4.0.0. Layout **v4.0.0** (números fijos 01-04 con gaps) reemplazado por numeración continua en v5.0.0. Bundles ya escritos con layouts previos quedan como histórico.
|
|
165
164
|
|
|
166
165
|
Layout **legacy** pre-SCRIPTS.sql (`scripts/01-04/*.sql + .rollback.sql` directo en sesión) tampoco se genera; sesiones nuevas usan SCRIPTS.sql. Layouts legacy en sesiones cerradas se migran con `/agent-workflow:migrate --upgrade-topology`.
|
|
167
166
|
|
|
@@ -183,8 +182,8 @@ Procedimiento completo (entrada, proceso paso a paso, layout destino, formato de
|
|
|
183
182
|
|
|
184
183
|
## Integración con otros skills
|
|
185
184
|
|
|
186
|
-
- **`sql-rollback-generator`**
|
|
187
|
-
- **`export-scripts`**
|
|
185
|
+
- **`sql-rollback-generator`** v3.0.0+ — **on-export**: lee los forwards ya consolidados por `export-scripts` (no `SCRIPTS.sql` original) y genera `00-ROLLBACK.sql` único.
|
|
186
|
+
- **`export-scripts`** v5.0.0+ — consume `SCRIPTS.sql` per sesión + `docs/scripts/*.sql` standalone, clasifica por categoría y asigna numeración continua tras `00-ROLLBACK.sql`. Aborta si detecta layout legacy.
|
|
188
187
|
- **`migrate`** v1.3.0+ — capability 11: convierte layouts legacy `scripts/01-04/*.sql` → `SCRIPTS.sql` consolidado.
|
|
189
188
|
- **`coding-standards`** — fuente de las reglas de estilo (`database-conventions.md`).
|
|
190
189
|
- **`session`** — Fase execution invoca este skill al primer change SQL; Fase closure no necesita acción adicional.
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export interface PaletteCommand {
|
|
2
|
-
id: string;
|
|
3
|
-
label: string;
|
|
4
|
-
category: string;
|
|
5
|
-
hint?: string;
|
|
6
|
-
alert?: boolean;
|
|
7
|
-
}
|
|
8
|
-
export interface CommandPaletteProps {
|
|
9
|
-
filter: string;
|
|
10
|
-
commands: PaletteCommand[];
|
|
11
|
-
cursor: number;
|
|
12
|
-
groups?: Array<{
|
|
13
|
-
category: string;
|
|
14
|
-
commands: PaletteCommand[];
|
|
15
|
-
}>;
|
|
16
|
-
}
|
|
17
|
-
export declare function CommandPalette({ filter, commands, cursor }: CommandPaletteProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
-
//# sourceMappingURL=command-palette.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/command-palette.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC,CAAC;CAClE;AAID,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,mBAAmB,2CA6E/E"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
import { colors, icons } from "../theme.js";
|
|
4
|
-
const PLACEHOLDER = "type to filter…";
|
|
5
|
-
export function CommandPalette({ filter, commands, cursor }) {
|
|
6
|
-
const groups = [];
|
|
7
|
-
for (const c of commands) {
|
|
8
|
-
const last = groups[groups.length - 1];
|
|
9
|
-
if (last && last.category === c.category) {
|
|
10
|
-
last.rows.push(c);
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
groups.push({ category: c.category, rows: [c] });
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
let runningIdx = 0;
|
|
17
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", marginBottom: 1, children: [_jsx(Text, { color: colors.mute, children: "search " }), _jsxs(Text, { color: colors.accent, bold: true, children: ["\u203A", " "] }), filter ? (_jsx(Text, { color: colors.bright, children: filter })) : (_jsx(Text, { color: colors.faint, children: PLACEHOLDER })), _jsx(Text, { color: colors.accent, children: icons.caret }), _jsx(Box, { flexGrow: 1 }), _jsxs(Text, { color: colors.mute, children: [commands.length, " match", commands.length === 1 ? "" : "es"] })] }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: colors.borderFaint, children: "─".repeat(70) }) }), commands.length === 0 ? (_jsxs(Text, { color: colors.dim, children: ["No matches for \"", filter || "…", "\"."] })) : null, groups.map((g) => (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { color: colors.mute, children: g.category.toUpperCase() }), g.rows.map((c) => {
|
|
18
|
-
const idx = runningIdx++;
|
|
19
|
-
const active = idx === cursor;
|
|
20
|
-
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: 2, children: _jsx(Text, { color: active ? colors.accent : colors.faint, children: active ? icons.focusBar : " " }) }), _jsx(Box, { flexGrow: 1, children: _jsx(Text, { color: active ? colors.accent : colors.bright, bold: active, children: c.label }) }), c.hint ? (_jsx(Box, { marginLeft: 1, children: _jsx(Text, { color: colors.dim, children: c.hint }) })) : null, c.alert ? (_jsx(Box, { marginLeft: 1, children: _jsx(Text, { color: colors.err, children: "\u25CF" }) })) : null] }, c.id));
|
|
21
|
-
})] }, g.category)))] }));
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=command-palette.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-palette.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/command-palette.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export type SidebarTabId = "status" | "workflow" | "project" | "mcp" | "skills";
|
|
2
|
-
export interface SidebarTab {
|
|
3
|
-
id: SidebarTabId;
|
|
4
|
-
key: string;
|
|
5
|
-
label: string;
|
|
6
|
-
badge?: string;
|
|
7
|
-
alert?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export interface WorkspaceContext {
|
|
10
|
-
modeLabel: string;
|
|
11
|
-
branchLabel: string;
|
|
12
|
-
sessionsLabel: string;
|
|
13
|
-
}
|
|
14
|
-
export interface KeymapEntry {
|
|
15
|
-
key: string;
|
|
16
|
-
action: string;
|
|
17
|
-
}
|
|
18
|
-
export interface SidebarProps {
|
|
19
|
-
activeTab: SidebarTabId;
|
|
20
|
-
tabs: SidebarTab[];
|
|
21
|
-
workspaceContext: WorkspaceContext;
|
|
22
|
-
cliVersion: string;
|
|
23
|
-
globalKeys: KeymapEntry[];
|
|
24
|
-
width?: number;
|
|
25
|
-
}
|
|
26
|
-
export declare function Sidebar({ activeTab, tabs, workspaceContext, cliVersion, globalKeys, width, }: SidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
-
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/sidebar.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,YAAY,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,YAAY,CAAC;IACxB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,IAAI,EACJ,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,KAAqB,GACtB,EAAE,YAAY,2CAiEd"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
import { colors, icons } from "../theme.js";
|
|
4
|
-
const DEFAULT_WIDTH = 24;
|
|
5
|
-
// Reservado para alinear los `entry.action` en la columna de keymap. 3 cells es
|
|
6
|
-
// suficiente para los keys más anchos (`↑↓`, `^K`).
|
|
7
|
-
const KEY_COL_WIDTH = 4;
|
|
8
|
-
export function Sidebar({ activeTab, tabs, workspaceContext, cliVersion, globalKeys, width = DEFAULT_WIDTH, }) {
|
|
9
|
-
return (_jsxs(Box, { flexDirection: "column", width: width, flexShrink: 0, paddingX: 1, paddingY: 1, children: [_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: colors.accent, bold: true, children: icons.brand }), _jsxs(Text, { color: colors.bright, bold: true, children: [" ", "agent-workflow"] })] }), _jsxs(Text, { color: colors.faint, wrap: "truncate-end", children: ["v", cliVersion, " \u00B7 @tacuchi"] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Divider, {}) }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: tabs.map((tab) => (_jsx(SidebarTabRow, { tab: tab, active: tab.id === activeTab }, tab.id))) }), _jsx(Box, { marginTop: 1, children: _jsx(Divider, {}) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: colors.mute, children: "WORKSPACE" }), _jsx(Text, { color: colors.text, wrap: "truncate-end", children: workspaceContext.modeLabel }), _jsx(Text, { color: colors.dim, wrap: "truncate-end", children: workspaceContext.branchLabel }), _jsx(Text, { color: colors.dim, wrap: "truncate-end", children: workspaceContext.sessionsLabel })] }), _jsx(Box, { marginTop: 1, children: _jsx(Divider, {}) }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: globalKeys.map((entry) => (_jsxs(Box, { children: [_jsx(Box, { width: KEY_COL_WIDTH, children: _jsx(Text, { color: colors.accent, children: entry.key }) }), _jsx(Text, { color: colors.dim, children: entry.action })] }, `${entry.key}-${entry.action}`))) })] }));
|
|
10
|
-
}
|
|
11
|
-
// Width interior del sidebar: width - paddingX*2 = 22, menos 2 cells de safety
|
|
12
|
-
// margin para variabilidad de ancho visual de glyphs + inner padding.
|
|
13
|
-
const SIDEBAR_INNER_WIDTH = DEFAULT_WIDTH - 4;
|
|
14
|
-
const SIDEBAR_INNER_PAD = 1;
|
|
15
|
-
function SidebarTabRow({ tab, active }) {
|
|
16
|
-
const focusGlyph = active ? icons.focusBar : " ";
|
|
17
|
-
const bg = active ? colors.bgHighlight : undefined;
|
|
18
|
-
const bgProp = bg ? { backgroundColor: bg } : {};
|
|
19
|
-
const innerPad = " ".repeat(SIDEBAR_INNER_PAD);
|
|
20
|
-
// Layout: bar + gap + inner_pad + key + space + label + ... + inner_pad.
|
|
21
|
-
// Bar va AFUERA del bg; el bg empieza en inner_pad.
|
|
22
|
-
const FOCUS_OUTER = 2;
|
|
23
|
-
const used = FOCUS_OUTER +
|
|
24
|
-
SIDEBAR_INNER_PAD * 2 +
|
|
25
|
-
[...tab.key].length +
|
|
26
|
-
1 +
|
|
27
|
-
[...tab.label].length +
|
|
28
|
-
(tab.badge ? [...tab.badge].length + 1 : 0) +
|
|
29
|
-
(tab.alert ? 2 : 0);
|
|
30
|
-
const spacerLen = Math.max(1, SIDEBAR_INNER_WIDTH - used);
|
|
31
|
-
const spacer = " ".repeat(spacerLen);
|
|
32
|
-
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: colors.accent, bold: active, children: focusGlyph }), _jsx(Text, { children: " " }), _jsx(Text, { ...bgProp, children: innerPad }), _jsx(Text, { ...bgProp, color: active ? colors.accent : colors.dim, bold: active, children: tab.key }), _jsx(Text, { ...bgProp, children: " " }), _jsx(Text, { ...bgProp, color: active ? colors.bright : colors.text, bold: active, children: tab.label }), _jsx(Text, { ...bgProp, wrap: "truncate-end", children: spacer }), tab.badge ? (_jsx(Text, { ...bgProp, color: active ? colors.accentSoft : colors.mute, children: tab.badge })) : null, tab.alert ? (_jsxs(_Fragment, { children: [_jsx(Text, { ...bgProp, children: " " }), _jsx(Text, { ...bgProp, color: colors.err, children: "\u25CF" })] })) : null, _jsx(Text, { ...bgProp, children: innerPad })] }));
|
|
33
|
-
}
|
|
34
|
-
function Divider() {
|
|
35
|
-
return _jsx(Text, { color: colors.borderFaint, children: "─".repeat(DEFAULT_WIDTH - 2) });
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=sidebar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/sidebar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
export type ToastTone = "ok" | "info" | "err";
|
|
2
|
-
export interface ToastEntry {
|
|
3
|
-
id: number;
|
|
4
|
-
tone: ToastTone;
|
|
5
|
-
title: string;
|
|
6
|
-
body?: string;
|
|
7
|
-
/** Duración en ms; default 3200 */
|
|
8
|
-
duration?: number;
|
|
9
|
-
}
|
|
10
|
-
export interface ToastInput {
|
|
11
|
-
tone?: ToastTone;
|
|
12
|
-
title: string;
|
|
13
|
-
body?: string;
|
|
14
|
-
duration?: number;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* useToasts — hook que mantiene una pila de toasts y expone `push(toast)`.
|
|
18
|
-
*
|
|
19
|
-
* Auto-elimina cada toast después de `duration` (default 3.2s). El stack se
|
|
20
|
-
* renderiza inline encima del footer cuando `toasts.length > 0`.
|
|
21
|
-
*/
|
|
22
|
-
export declare function useToasts(): {
|
|
23
|
-
toasts: ToastEntry[];
|
|
24
|
-
push: (input: ToastInput) => void;
|
|
25
|
-
dismiss: (id: number) => void;
|
|
26
|
-
clear: () => void;
|
|
27
|
-
};
|
|
28
|
-
export interface ToastStackProps {
|
|
29
|
-
toasts: ToastEntry[];
|
|
30
|
-
/** Máximo de toasts visibles (los más nuevos arriba). Default 3. */
|
|
31
|
-
max?: number;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* ToastStack — render inline de los toasts activos.
|
|
35
|
-
*
|
|
36
|
-
* En TTY no podemos posicionar absoluto, así que renderizamos al pie de la
|
|
37
|
-
* pantalla (app.tsx coloca esto al final del root). Cada toast es una caja
|
|
38
|
-
* con borde left del color del tone + título bold + body dim.
|
|
39
|
-
*/
|
|
40
|
-
export declare function ToastStack({ toasts, max }: ToastStackProps): import("react/jsx-runtime").JSX.Element | null;
|
|
41
|
-
//# sourceMappingURL=toast-stack.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toast-stack.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/toast-stack.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS;;kBAIU,UAAU;kBAiBV,MAAM;;EASxC;AAcD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,GAAO,EAAE,EAAE,eAAe,kDAoB9D"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
import { useCallback, useRef, useState } from "react";
|
|
4
|
-
import { colors, icons } from "../theme.js";
|
|
5
|
-
/**
|
|
6
|
-
* useToasts — hook que mantiene una pila de toasts y expone `push(toast)`.
|
|
7
|
-
*
|
|
8
|
-
* Auto-elimina cada toast después de `duration` (default 3.2s). El stack se
|
|
9
|
-
* renderiza inline encima del footer cuando `toasts.length > 0`.
|
|
10
|
-
*/
|
|
11
|
-
export function useToasts() {
|
|
12
|
-
const [toasts, setToasts] = useState([]);
|
|
13
|
-
const seq = useRef(0);
|
|
14
|
-
const push = useCallback((input) => {
|
|
15
|
-
const id = ++seq.current;
|
|
16
|
-
const tone = input.tone ?? "info";
|
|
17
|
-
const duration = input.duration ?? 3200;
|
|
18
|
-
const entry = {
|
|
19
|
-
id,
|
|
20
|
-
tone,
|
|
21
|
-
title: input.title,
|
|
22
|
-
duration,
|
|
23
|
-
...(input.body !== undefined ? { body: input.body } : {}),
|
|
24
|
-
};
|
|
25
|
-
setToasts((prev) => [...prev, entry]);
|
|
26
|
-
setTimeout(() => {
|
|
27
|
-
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
28
|
-
}, duration);
|
|
29
|
-
}, []);
|
|
30
|
-
const dismiss = useCallback((id) => {
|
|
31
|
-
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
32
|
-
}, []);
|
|
33
|
-
const clear = useCallback(() => {
|
|
34
|
-
setToasts([]);
|
|
35
|
-
}, []);
|
|
36
|
-
return { toasts, push, dismiss, clear };
|
|
37
|
-
}
|
|
38
|
-
const TONE_COLOR = {
|
|
39
|
-
ok: colors.success,
|
|
40
|
-
info: colors.info,
|
|
41
|
-
err: colors.error,
|
|
42
|
-
};
|
|
43
|
-
const TONE_ICON = {
|
|
44
|
-
ok: icons.check,
|
|
45
|
-
info: icons.bullet,
|
|
46
|
-
err: icons.cross,
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* ToastStack — render inline de los toasts activos.
|
|
50
|
-
*
|
|
51
|
-
* En TTY no podemos posicionar absoluto, así que renderizamos al pie de la
|
|
52
|
-
* pantalla (app.tsx coloca esto al final del root). Cada toast es una caja
|
|
53
|
-
* con borde left del color del tone + título bold + body dim.
|
|
54
|
-
*/
|
|
55
|
-
export function ToastStack({ toasts, max = 3 }) {
|
|
56
|
-
if (toasts.length === 0)
|
|
57
|
-
return null;
|
|
58
|
-
const visible = toasts.slice(-max);
|
|
59
|
-
return (_jsx(Box, { flexDirection: "column", marginTop: 1, children: visible.map((t) => (_jsxs(Box, { marginTop: 0, children: [_jsxs(Text, { color: TONE_COLOR[t.tone], bold: true, children: [TONE_ICON[t.tone], " "] }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.fgBright, bold: true, children: t.title }), t.body ? _jsx(Text, { color: colors.fgSubtle, children: t.body }) : null] })] }, t.id))) }));
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=toast-stack.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toast-stack.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/toast-stack.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export type ToastTone = "success" | "error" | "info";
|
|
2
|
-
export interface ToastProps {
|
|
3
|
-
tone: ToastTone;
|
|
4
|
-
message: string;
|
|
5
|
-
}
|
|
6
|
-
export declare function Toast({ tone, message }: ToastProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
//# sourceMappingURL=toast.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/toast.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAcD,wBAAgB,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,UAAU,2CASlD"}
|