@badgie/crm-cli 0.7.0 → 0.9.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/AGENTS.md CHANGED
@@ -4,7 +4,7 @@ Este archivo es la guía canónica para que un agente (openclaw, Claude, Cursor,
4
4
 
5
5
  ## Qué es
6
6
 
7
- CLI oficial del Badgie CRM. La versión publicada `0.6.0` incluye 86 comandos; la rama actual expone 110 comandos sobre Supabase y endpoints de la app Next. Instalación: ver `cli/README.md`.
7
+ CLI oficial del Badgie CRM. La versión publicada `0.9.0` expone ~145 comandos sobre Supabase y endpoints de la app Next, e incluye flujo completo para federaciones (nacionales + regionales) y para el **Marketing Planner** (campañas, posts, canales, assets, publicaciones, reviews, métricas). Instalación: ver `cli/README.md`.
8
8
 
9
9
  ## Fuente de verdad (machine-readable)
10
10
 
@@ -88,6 +88,148 @@ badgie-crm finance closings close --year 2026 --month 4 --notes "Revisado"
88
88
  badgie-crm top-clients answer set --review-id <review-id> --question risk_level --value high
89
89
  ```
90
90
 
91
+ ## Federations para agentes (investigación + outreach)
92
+
93
+ El módulo `federations` cubre **dos catálogos** que comparten una sola capa CRM:
94
+
95
+ - **Nacionales**: catálogo estático de 66 federaciones en
96
+ `data/federaciones-deportivas-esp.json` (JSON inmutable). `federacion_numero`
97
+ es el id del JSON, p. ej. `"1"`, `"12"`.
98
+ - **Regionales/territoriales**: catálogo dinámico en `regional_federations`
99
+ (UUID). El `federacion_numero` que comparten `federation_crm`,
100
+ `federation_contacts` y `federation_contact_activities` es siempre
101
+ `reg-<uuid>` para estas filas.
102
+
103
+ Cuando investigues con un agente:
104
+
105
+ ```bash
106
+ # 1. ¿Existe ya en el catálogo nacional? (consulta el JSON estático)
107
+ badgie-crm federations list --pretty
108
+
109
+ # 2. ¿Es regional? Lista las que ya tenemos.
110
+ badgie-crm federations regional list --ccaa galicia --pretty
111
+
112
+ # 3. Si no está, creamos la regional y obtenemos el `federacion_numero`.
113
+ badgie-crm federations regional create \
114
+ --nombre "Federación Gallega de Pádel" \
115
+ --siglas FGP --ccaa Galicia --pretty
116
+ # → { id: "<uuid>", federacion_numero: "reg-<uuid>", ... }
117
+
118
+ # 4. Pipeline CRM: usa el `federacion_numero` devuelto para set/contacts/activities.
119
+ badgie-crm federations set reg-<uuid> --status researching --priority 4 --owner Greg
120
+ badgie-crm federations contacts add --federation reg-<uuid> \
121
+ --full-name "Marta Ruiz" --role Presidenta --email marta@fgp.es --primary --qualification warm
122
+ badgie-crm federations activities log --contact-id <uuid> --type email \
123
+ --outcome follow_up --title "Primer contacto" --description "Le envié deck Badgie"
124
+
125
+ # 5. Si verificas datos de una NACIONAL (web nueva, teléfono, dirección),
126
+ # persiste el override sin tocar el JSON:
127
+ badgie-crm federations catalog set 12 \
128
+ --telefono "+34 93 200 67 69" --web https://www.fedas.es
129
+
130
+ # 6. Marca un contacto como primario único de la federación:
131
+ badgie-crm federations contacts set-primary <uuid> --exclusive
132
+ ```
133
+
134
+ Reglas para el agente:
135
+
136
+ - **Antes de crear** una regional, ejecuta `federations regional list --search …`
137
+ o `query select regional_federations --where "nombre:ilike:%<texto>%"` para
138
+ evitar duplicados.
139
+ - **Nunca dupliques** una federación nacional como regional. Si ya está en el
140
+ JSON, usa `federations catalog set <numero>` para corregir datos.
141
+ - **`federations regional delete --cascade`** es destructivo: borra la fila del
142
+ catálogo y todos los CRM/contactos/timeline asociados a `reg-<uuid>`. Pide
143
+ confirmación humana.
144
+ - Para investigar contactos: usa `federations contacts list --federation <numero>`
145
+ (donde `<numero>` puede ser `"12"` o `reg-<uuid>` indistintamente).
146
+
147
+ ## Marketing Planner para agentes (operación diaria + memoria histórica)
148
+
149
+ El módulo `marketing` cubre el flujo completo del **Marketing Planner** dentro de `crm.badgie.es/marketing-planner`: planificar la semana, generar/actualizar copy, asociar assets, mover estados, registrar publicaciones con su URL final + evidencia y guardar histórico. Tablas: `marketing_campaigns`, `marketing_channels` (LinkedIn/Instagram/TikTok/X/Blog/Email/WhatsApp/YouTube/Pinterest), `marketing_posts`, `marketing_assets`, `marketing_post_assets`, `marketing_publications`, `marketing_status_events`, `marketing_reviews`, `marketing_metrics`.
150
+
151
+ ### Workflow diario recomendado para Coach/OpenClaw
152
+
153
+ ```bash
154
+ # 1. ¿Qué toca hoy? Output cronológico con canal, owner, estado.
155
+ badgie-crm marketing planner today --pretty
156
+
157
+ # 2. ¿Qué está bloqueado? Detecta falta de copy, canal, fecha, manual_required, failed.
158
+ badgie-crm marketing planner blockers --pretty
159
+
160
+ # 3. Para cada blocker, decidir:
161
+
162
+ # 3a. Falta copy → genera y actualiza
163
+ badgie-crm marketing posts update vid-testimonio-fmg \
164
+ --copy "Texto generado con CTA y datos del estudio…" \
165
+ --hashtags "BadgieGolf,FederacionMadridGolf,GolfJunior"
166
+
167
+ # 3b. Falta asset → enlaza URL externa o sube uuid existente
168
+ badgie-crm marketing posts assets add vid-testimonio-fmg \
169
+ --asset-id-or-url https://res.cloudinary.com/dzsrcaaas/badgie/test.mp4 \
170
+ --role primary
171
+
172
+ # 3c. Lista para revisión humana
173
+ badgie-crm marketing posts status set vid-testimonio-fmg needs_review \
174
+ --reason "Asset y copy listos; falta validación de Greg"
175
+
176
+ # 4. Cuando el humano publica manualmente, registra evidencia:
177
+ badgie-crm marketing posts publications create vid-testimonio-fmg --channel linkedin
178
+ # (esto crea una marketing_publication con status=pending)
179
+
180
+ badgie-crm marketing publications mark-published <publication-uuid> \
181
+ --external-url "https://www.linkedin.com/posts/badgie_…" \
182
+ --evidence-url "https://res.cloudinary.com/dzsrcaaas/screenshot.png"
183
+
184
+ # 5. Reporte semanal
185
+ badgie-crm marketing planner reports weekly --pretty
186
+ ```
187
+
188
+ ### Workflow semanal de planning
189
+
190
+ ```bash
191
+ # 1. Listar campañas activas
192
+ badgie-crm marketing campaigns list --status active --pretty
193
+
194
+ # 2. Crear campaña nueva
195
+ badgie-crm marketing campaigns create \
196
+ --name "Profes Informes Deportivos" \
197
+ --slug profes-informes-q2 \
198
+ --objective "30 demos cualificadas en Q2" \
199
+ --start-date 2026-05-01 --end-date 2026-06-30 \
200
+ --landing-url "https://www.badgie.com/profes-informes-deportivos" \
201
+ --owner-email gregorio@badgie.com --pretty
202
+
203
+ # 3. Crear pieza editorial atada a la campaña
204
+ badgie-crm marketing posts create \
205
+ --title "Reel testimonio profesor tenis" \
206
+ --slug reel-testimonio-tenis-1 \
207
+ --campaign profes-informes-q2 \
208
+ --channel instagram \
209
+ --scheduled-at "2026-05-15T11:00:00+02:00" \
210
+ --copy "Antes lo escribía a mano. Hoy con Badgie…" \
211
+ --cta-label "Solicita demo" \
212
+ --cta-url "https://www.badgie.com/profes-informes-deportivos" \
213
+ --hashtags "BadgieTenis,InformesDeportivos,EscuelaTenis" \
214
+ --owner-email coach@badgie.com --pretty
215
+ # Devuelve la pieza y crea marketing_status_events automático (∅ → draft).
216
+
217
+ # 4. Una pieza, varios canales: cross-post LinkedIn + Instagram
218
+ badgie-crm marketing posts publications create reel-testimonio-tenis-1 --channel linkedin
219
+ badgie-crm marketing posts publications create reel-testimonio-tenis-1 --channel instagram
220
+ ```
221
+
222
+ ### Reglas para el agente
223
+
224
+ - **No publiques nunca automáticamente** sin `--confirm` humano. La V1 NO tiene publicación automática real — `mark-published` solo persiste evidencia de algo ya publicado fuera.
225
+ - **Estados válidos**: `idea | draft | needs_review | approved | scheduled | published | failed | manual_required | cancelled`. Cada cambio se registra solo en `marketing_status_events`.
226
+ - **Slug** se autogenera desde el título si no se pasa. Reusa el slug del post como `utm_content`; el slug de la campaña como `utm_campaign`.
227
+ - **`marketing posts assets add --asset-id-or-url`** acepta UUID (asset existente) o URL externa (auto-crea `marketing_assets` con `storage_provider='external'`). Para upload binario real usa la UI: el CLI no sube archivos.
228
+ - **`marketing publications mark-published`** es idempotente y registra `published_by` con tu user. Antes de marcar, verifica que `external_url` sea pública.
229
+ - **Métricas**: V1 entrada manual con `marketing metrics record --publication-id <uuid> --impressions ... --clicks ...`. No las inventes.
230
+ - **Borrados**: `marketing posts delete --confirm` hace cascade en assets, publications, events, reviews. **Pide confirmación humana**.
231
+ - **Filtros agregados**: `marketing planner reports weekly --week 2026-05-12` te da counts por estado/canal/campaña + publicaciones registradas en esa semana.
232
+
91
233
  ## Finance OS para agentes
92
234
 
93
235
  Usa estos comandos nuevos antes de hacer queries manuales:
package/CHANGELOG.md CHANGED
@@ -1,5 +1,119 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.0 — 2026-05-08
4
+
5
+ ### Added — Marketing Planner workflow completo
6
+
7
+ Reescritura del módulo `marketing` para soportar el nuevo Marketing Planner
8
+ (`crm.badgie.es/marketing-planner`). Pensado para que Coach/OpenClaw planifique
9
+ la semana, mantenga copy/assets, mueva estados y registre evidencia de cada
10
+ publicación. ~30 comandos nuevos sustituyen los 5 antiguos read-only.
11
+
12
+ - **Planner reads**:
13
+ - `marketing planner today` — piezas programadas para hoy con canal/owner/CTA.
14
+ - `marketing planner week [--week YYYY-MM-DD]` — agrupado por día.
15
+ - `marketing planner blockers` — detecta `falta_copy`, `falta_canal`,
16
+ `falta_fecha`, `manual_required`, `failed`, `needs_review`.
17
+ - `marketing planner reports weekly [--week YYYY-MM-DD]` — counts por estado,
18
+ canal, campaña + publicaciones registradas.
19
+ - **Campañas**: `campaigns list|get|create|update|delete`. UTM canónico
20
+ derivado de `slug` por defecto.
21
+ - **Canales**: `channels list|create|update`. Seed inicial con LinkedIn,
22
+ Instagram, TikTok, X, Blog, Email, WhatsApp, YouTube, Pinterest.
23
+ - **Posts**: `posts list|get|create|update|delete` + `posts status set` con
24
+ histórico append-only en `marketing_status_events`.
25
+ - **Post-assets**: `posts assets list|add|remove`. `add --asset-id-or-url`
26
+ acepta UUID o URL externa (auto-crea `marketing_assets` con
27
+ `storage_provider='external'`).
28
+ - **Publicaciones** (una pieza × N canales):
29
+ - `publications list`, `posts publications list|create`,
30
+ `publications update`, `publications mark-published` (atajo con
31
+ `--external-url` y `--evidence-url` que setea `published_at` y
32
+ `published_by` automáticamente).
33
+ - **Reviews**: `reviews request|resolve` con estados `requested|approved|
34
+ changes_requested|rejected`.
35
+ - **Histórico**: `posts events list <post-id>` ordenado descendente.
36
+ - **Métricas**: `metrics list`, `metrics record --publication-id …
37
+ --impressions … --clicks … --source manual|api|zapier`.
38
+
39
+ ### Migration required
40
+
41
+ Aplicar `supabase-marketing-planner-migration.sql` en Supabase. **Es destructiva**:
42
+ hace `DROP TABLE CASCADE` de las 5 tablas legacy del módulo marketing antiguo
43
+ (`marketing_campaigns`, `social_media_posts`, `marketing_assets`,
44
+ `marketing_metrics`, `marketing_leads`) y crea 9 nuevas. La página `/marketing`
45
+ y sus componentes/modales han sido eliminados — usar `/marketing-planner`.
46
+
47
+ ### Removed
48
+
49
+ - `marketing leads list` (la tabla `marketing_leads` ya no existe; la
50
+ atribución de leads se rehará en otra iteración).
51
+ - 4 comandos read-only originales sustituidos por la nueva familia completa.
52
+
53
+ ## 0.8.0 — 2026-05-06
54
+
55
+ ### Added — Federations workflow para agentes
56
+
57
+ Pensado para que un agente investigue federaciones (web pública, contactos
58
+ verificados, datos de contacto actualizados) y persista los hallazgos sin
59
+ tocar tablas ni archivos estáticos.
60
+
61
+ - **Catálogo nacional editable vía overrides JSONB**:
62
+ - `federations catalog set <numero>` — escribe en `federation_crm.catalog_datos`
63
+ los campos `--telefono`, `--email`, `--web`, `--direccion`, `--deportistas`,
64
+ `--notas-badgie`. Sustituyen al catálogo estático sin mutarlo. Acepta
65
+ `--clear-field <campo>` (repetible) para borrar overrides puntuales.
66
+ - `federations catalog clear <numero>` — resetea todos los overrides a `{}`.
67
+ - **Federaciones regionales** (tabla `regional_federations`, antes solo UI):
68
+ - `federations regional list [--ccaa <texto>] [--search <texto>]`.
69
+ - `federations regional get <id>` — fila + CRM + contactos + últimas 10
70
+ actividades, todo en un único response.
71
+ - `federations regional create --nombre … [--siglas] [--ccaa] [--notas]`
72
+ devuelve la fila más `federacion_numero = 'reg-<uuid>'` listo para
73
+ `federations set`, `federations contacts add`, etc.
74
+ - `federations regional update <id>` (nombre, siglas, CCAA, notas, con
75
+ `--clear-ccaa` / `--clear-notas`).
76
+ - `federations regional delete <id> [--cascade]`. Sin `--cascade` solo borra
77
+ la fila del catálogo regional; con `--cascade` limpia también el CRM,
78
+ contactos y timeline (`federacion_numero = 'reg-<uuid>'`).
79
+ - **Contactos**:
80
+ - `federations contacts update <id>` — full_name, role, email, phone,
81
+ linkedin, qualification, notes, `--primary` / `--no-primary`.
82
+ - `federations contacts remove <id>` (destructive; cascade en activities).
83
+ - `federations contacts set-primary <id> [--exclusive]` para garantizar un
84
+ único primario por federación.
85
+
86
+ ### Changed
87
+
88
+ - Las tablas `federation_crm`, `federation_contacts` y
89
+ `federation_contact_activities` se reutilizan ahora **tanto** para
90
+ nacionales como regionales. La convención compartida es
91
+ `federacion_numero = '<numero>'` para nacionales y `'reg-<uuid>'` para
92
+ regionales. No hay tablas CRM duplicadas.
93
+
94
+ ### Fixed
95
+
96
+ - `bin.ts`: import `ModuleSpec` faltante (provocaba `TS2304` en `tsc --noEmit`
97
+ desde el último refactor del registry).
98
+
99
+ ### Requires
100
+
101
+ - Migraciones aplicadas en Supabase: `supabase-federation-catalog-datos.sql` y
102
+ `supabase-regional-federations.sql` del repo del CRM.
103
+
104
+ ### Manual checks
105
+
106
+ ```bash
107
+ npm run typecheck
108
+ npm run clean && npm run build
109
+
110
+ node dist/bin.js docs --json | jq '[.commands[] | select(.module=="federations") | .command]'
111
+ node dist/bin.js federations regional create --nombre "Federación Gallega de Tenis" --siglas FGT --ccaa Galicia --pretty
112
+ node dist/bin.js federations regional list --pretty
113
+ node dist/bin.js federations catalog set 12 --web https://www.fedex.es --pretty
114
+ node dist/bin.js federations contacts update <uuid> --qualification warm
115
+ ```
116
+
3
117
  ## 0.7.0 — 2026-04-26
4
118
 
5
119
  ### Added
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @badgie/crm-cli (`badgie-crm`)
2
2
 
3
- **Versión publicada:** `0.7.0` — ver [`CHANGELOG.md`](./CHANGELOG.md).
3
+ **Versión publicada:** `0.8.0` — ver [`CHANGELOG.md`](./CHANGELOG.md).
4
4
 
5
5
  CLI para operar el Badgie CRM desde la terminal. Reemplaza los scripts sueltos de `/scripts/` y expone el CRM vía MCP a agentes IA (openclaw, Claude Desktop, Cursor...).
6
6
 
@@ -87,9 +87,9 @@ badgie-crm leads list
87
87
 
88
88
  ## Módulos
89
89
 
90
- La versión `0.7.0` expone 110 comandos. Módulos principales:
90
+ La versión `0.8.0` expone 120 comandos. Módulos principales:
91
91
 
92
- `leads`, `clients`, `contacts`, `tasks`, `development`, `finance`, `outbound`, `directory`, `marketing`, `intelligence`, `mission-control`, `top-clients`, `federations`, `web-design`, `team`, `sports`, `activities`, `demos`, `onboarding`, `webhooks`, `admin`, `search`, `query`, `docs`, `mcp`.
92
+ `leads`, `clients`, `contacts`, `tasks`, `development`, `finance`, `outbound`, `directory`, `marketing`, `intelligence`, `mission-control`, `top-clients`, `federations` (nacionales + regionales + overrides de catálogo), `web-design`, `team`, `sports`, `activities`, `demos`, `onboarding`, `webhooks`, `admin`, `search`, `query`, `docs`, `mcp`.
93
93
 
94
94
  Explora todo con:
95
95
 
@@ -153,6 +153,51 @@ badgie-crm docs finance --json
153
153
  badgie-crm docs finance
154
154
  ```
155
155
 
156
+ ## Marketing Planner
157
+
158
+ `marketing` cubre el flujo completo del Marketing Planner (`crm.badgie.es/marketing-planner`): planificar la semana, generar copy, asociar assets, mover estados, registrar publicaciones y medir.
159
+
160
+ ```bash
161
+ # Operación diaria
162
+ badgie-crm marketing planner today --pretty
163
+ badgie-crm marketing planner blockers --pretty
164
+ badgie-crm marketing planner reports weekly --pretty
165
+
166
+ # Planning semanal
167
+ badgie-crm marketing campaigns create \
168
+ --name "Profes Informes Q2" --slug profes-informes-q2 \
169
+ --objective "30 demos cualificadas" --start-date 2026-05-01 --end-date 2026-06-30 \
170
+ --landing-url "https://www.badgie.com/profes-informes-deportivos" --pretty
171
+
172
+ badgie-crm marketing posts create \
173
+ --title "Reel testimonio profesor tenis" \
174
+ --campaign profes-informes-q2 --channel instagram \
175
+ --scheduled-at "2026-05-15T11:00:00+02:00" \
176
+ --copy "Antes lo escribía a mano. Hoy con Badgie…" \
177
+ --cta-label "Solicita demo" --cta-url "https://www.badgie.com/profes-informes-deportivos" \
178
+ --hashtags "BadgieTenis,InformesDeportivos" --owner-email coach@badgie.com --pretty
179
+
180
+ # Cross-post: una pieza, dos canales
181
+ badgie-crm marketing posts publications create reel-testimonio-profesor-tenis --channel linkedin
182
+ badgie-crm marketing posts publications create reel-testimonio-profesor-tenis --channel instagram
183
+
184
+ # Estado y assets
185
+ badgie-crm marketing posts status set reel-testimonio-profesor-tenis needs_review --reason "Listo para Greg"
186
+ badgie-crm marketing posts assets add reel-testimonio-profesor-tenis \
187
+ --asset-id-or-url https://res.cloudinary.com/dzsrcaaas/test.mp4 --role primary
188
+
189
+ # Tras publicar manualmente: registrar evidencia
190
+ badgie-crm marketing publications mark-published <publication-uuid> \
191
+ --external-url "https://www.linkedin.com/posts/badgie_..." \
192
+ --evidence-url "https://res.cloudinary.com/dzsrcaaas/screenshot.png"
193
+
194
+ # Métricas (V1 manual)
195
+ badgie-crm marketing metrics record --publication-id <uuid> \
196
+ --impressions 5400 --clicks 120 --ctr 0.022 --likes 87 --source manual --pretty
197
+ ```
198
+
199
+ Workflow Coach completo en `cli/AGENTS.md` → sección "Marketing Planner para agentes".
200
+
156
201
  ## Top Clients
157
202
 
158
203
  Top Clients usa `client_monthly_reviews` para las revisiones mensuales. La pantalla actual no tiene una tabla separada de preguntas/configuración: las preguntas del modal son columnas de esa tabla (`notes`, `needs`, `testimonials`, `risk_level`, `next_actions`, `status`, `reviewed_at`) y el contacto semanal vive en `metadata.contact_log`.
package/dist/bin.js CHANGED
@@ -6,40 +6,9 @@ import { loginCommand } from './commands/login.js';
6
6
  import { logoutCommand } from './commands/logout.js';
7
7
  import { whoamiCommand } from './commands/whoami.js';
8
8
  import { welcomeCommand } from './commands/welcome.js';
9
- import { leadsModule } from './commands/leads.js';
10
- import { clientsModule } from './commands/clients.js';
11
- import { tasksModule } from './commands/tasks.js';
12
- import { financeModule } from './commands/finance.js';
13
- import { outboundModule } from './commands/outbound.js';
14
- import { marketingModule } from './commands/marketing.js';
15
- import { intelligenceModule } from './commands/intelligence.js';
16
- import { operationsModule } from './commands/operations.js';
17
- import { webhooksModule } from './commands/webhooks.js';
18
- import { adminModule } from './commands/admin.js';
19
- import { searchModule } from './commands/search.js';
20
- import { queryModule } from './commands/query.js';
21
- import { directoryModule } from './commands/directory.js';
22
- import { topClientsModule } from './commands/top-clients.js';
23
- import { federationsModule } from './commands/federations.js';
24
9
  import { createDocsModule } from './commands/docs.js';
25
10
  import { createMcpModule } from './commands/mcp.js';
26
- const MODULES = [
27
- leadsModule,
28
- clientsModule,
29
- tasksModule,
30
- financeModule,
31
- outboundModule,
32
- marketingModule,
33
- intelligenceModule,
34
- operationsModule,
35
- webhooksModule,
36
- adminModule,
37
- searchModule,
38
- queryModule,
39
- directoryModule,
40
- topClientsModule,
41
- federationsModule,
42
- ];
11
+ import { MODULES } from './modules.js';
43
12
  async function main() {
44
13
  const program = new Command();
45
14
  const docsModule = createDocsModule(() => [...MODULES, docsModule, mcpModule]);
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,MAAM,OAAO,GAAiB;IAC5B,WAAW;IACX,aAAa;IACb,WAAW;IACX,aAAa;IACb,cAAc;IACd,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,WAAW;IACX,YAAY;IACZ,WAAW;IACX,eAAe;IACf,gBAAgB;IAChB,iBAAiB;CAClB,CAAA;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAC7B,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAA;IAC9E,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAA;IAC5E,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;IAEtD,OAAO;SACJ,IAAI,CAAC,YAAY,CAAC;SAClB,WAAW,CAAC,+EAA+E,CAAC;SAC5F,OAAO,CAAC,cAAc,EAAE,CAAC;SACzB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;IAE/B,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;IAE/B,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;IAE7B,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;IAE9B,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,UAAU,EAAE,uBAAuB,CAAC;SAC3C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;IAE9B,KAAK,MAAM,CAAC,IAAI,UAAU;QAAE,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAEtD,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACxC,CAAC;AAED,SAAS,cAAc,CAAC,OAAgB,EAAE,MAAkB;IAC1D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAA;IACxC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAEtB,oEAAoE;IACpE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,MAAM,GAAY,OAAO,CAAA;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC/C,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACzB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,MAAM;qBACV,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBACrB,WAAW,CACV,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CACvE,CAAA;gBACH,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YACtB,CAAC;YACD,MAAM,GAAG,IAAI,CAAA;QACf,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,CAAA;QAC5C,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACxB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAa,EAAE,IAAiB;IAClD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAA;QACtD,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;IACnC,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CACT,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,WAAW,EACb,CAAC,KAAa,EAAE,QAAkB,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,EAC3D,EAAc,CACf,CAAA;QACH,CAAC;aAAM,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAA;QAC5D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5F,CAAC;IACD,IAAI,IAAI,CAAC,WAAW;QAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;IACxE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,UAAqB,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAE3C,CAAA;QACD,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,eAAe;YAC/B,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE;YACvB,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAA;QAC1C,MAAM,MAAM,GAAuC,EAAE,CACpD;QAAA,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAuB,CAAA;QACtD,CAAC,CAAC,CAAA;QACF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,UAAU,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,IAAI,CAAI,EAA8B;IAC7C,OAAO,KAAK,EAAE,IAAO,EAAE,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,UAAU,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}