cdp-edge 2.5.1 → 2.5.2

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.
Files changed (49) hide show
  1. package/README.md +21 -1
  2. package/contracts/agent-versions.json +383 -83
  3. package/extracted-skill/tracking-events-generator/agents/ab-ltv-agent.md +1 -1
  4. package/extracted-skill/tracking-events-generator/agents/ab-testing-agent.md +1 -1
  5. package/extracted-skill/tracking-events-generator/agents/attribution-agent.md +18 -18
  6. package/extracted-skill/tracking-events-generator/agents/bidding-agent.md +1 -1
  7. package/extracted-skill/tracking-events-generator/agents/bing-agent.md +1 -1
  8. package/extracted-skill/tracking-events-generator/agents/code-guardian-agent.md +1 -1
  9. package/extracted-skill/tracking-events-generator/agents/compliance-agent.md +5 -5
  10. package/extracted-skill/tracking-events-generator/agents/crm-integration-agent.md +10 -10
  11. package/extracted-skill/tracking-events-generator/agents/dashboard-agent.md +3 -3
  12. package/extracted-skill/tracking-events-generator/agents/database-agent.md +17 -25
  13. package/extracted-skill/tracking-events-generator/agents/debug-agent.md +9 -9
  14. package/extracted-skill/tracking-events-generator/agents/devops-agent.md +18 -1
  15. package/extracted-skill/tracking-events-generator/agents/domain-setup-agent.md +5 -5
  16. package/extracted-skill/tracking-events-generator/agents/email-agent.md +3 -3
  17. package/extracted-skill/tracking-events-generator/agents/fingerprint-agent.md +4 -4
  18. package/extracted-skill/tracking-events-generator/agents/fraud-detection-agent.md +2 -0
  19. package/extracted-skill/tracking-events-generator/agents/google-agent.md +2 -2
  20. package/extracted-skill/tracking-events-generator/agents/intelligence-agent.md +23 -29
  21. package/extracted-skill/tracking-events-generator/agents/linkedin-agent.md +3 -3
  22. package/extracted-skill/tracking-events-generator/agents/localization-agent.md +1 -1
  23. package/extracted-skill/tracking-events-generator/agents/ltv-predictor-agent.md +1 -1
  24. package/extracted-skill/tracking-events-generator/agents/master-feedback-loop.md +16 -16
  25. package/extracted-skill/tracking-events-generator/agents/master-orchestrator.md +13 -13
  26. package/extracted-skill/tracking-events-generator/agents/memory-agent.md +14 -14
  27. package/extracted-skill/tracking-events-generator/agents/meta-agent.md +2 -2
  28. package/extracted-skill/tracking-events-generator/agents/ml-clustering-agent.md +9 -9
  29. package/extracted-skill/tracking-events-generator/agents/page-analyzer.md +1 -0
  30. package/extracted-skill/tracking-events-generator/agents/performance-agent.md +12 -12
  31. package/extracted-skill/tracking-events-generator/agents/performance-optimization-agent.md +7 -7
  32. package/extracted-skill/tracking-events-generator/agents/pinterest-agent.md +6 -6
  33. package/extracted-skill/tracking-events-generator/agents/premium-tracking-intelligence-agent.md +3 -3
  34. package/extracted-skill/tracking-events-generator/agents/r2-setup-agent.md +8 -8
  35. package/extracted-skill/tracking-events-generator/agents/reddit-agent.md +7 -7
  36. package/extracted-skill/tracking-events-generator/agents/security-enterprise-agent.md +21 -21
  37. package/extracted-skill/tracking-events-generator/agents/server-tracking.md +15 -15
  38. package/extracted-skill/tracking-events-generator/agents/spotify-agent.md +6 -6
  39. package/extracted-skill/tracking-events-generator/agents/tiktok-agent.md +3 -3
  40. package/extracted-skill/tracking-events-generator/agents/tracking-plan-agent.md +5 -5
  41. package/extracted-skill/tracking-events-generator/agents/validator-agent.md +9 -9
  42. package/extracted-skill/tracking-events-generator/agents/webhook-agent.md +4 -4
  43. package/extracted-skill/tracking-events-generator/agents/whatsapp-agent.md +1 -1
  44. package/extracted-skill/tracking-events-generator/agents/whatsapp-ctwa-setup-agent.md +3 -3
  45. package/extracted-skill/tracking-events-generator/agents/youtube-agent.md +9 -9
  46. package/package.json +1 -1
  47. package/server-edge-tracker/schema-utm.sql +5 -3
  48. package/server-edge-tracker/wrangler.toml +1 -1
  49. package/extracted-skill/tracking-events-generator/agents/intelligence-scheduling.md +0 -10
@@ -23,7 +23,7 @@ Especialista exclusivo em TikTok Pixel (browser via cdpTrack) + TikTok Events AP
23
23
 
24
24
  ### PASSO 0 — Ler Versões Atuais
25
25
 
26
- ```javascript
26
+ ```typescript
27
27
  // Ler versões do arquivo centralizado
28
28
  const apiVersions = await readJSON('contracts/api-versions.json');
29
29
  const tiktokVersion = apiVersions.tiktok;
@@ -85,7 +85,7 @@ Conforme `contracts/api-versions.json`, a TikTok Events API tem limites estritos
85
85
 
86
86
  ### Implementação de Throttling no Worker
87
87
 
88
- ```javascript
88
+ ```typescript
89
89
  // Rate limit KV key: 'tiktok_rate_{pixel_id}_{minute}'
90
90
  async function dispatchTikTokWithRateLimit(env, events, pixelId, accessToken) {
91
91
  const now = new Date();
@@ -161,7 +161,7 @@ async function dispatchTikTokWithRateLimit(env, events, pixelId, accessToken) {
161
161
  {
162
162
  "arquivos_gerados": {
163
163
  "browser": "cdpTrack.js (eventos TikTok injetados)",
164
- "server": "cloudflare/tiktok-events.js"
164
+ "server": "modules/dispatch/tiktok.ts"
165
165
  },
166
166
  "versao_api": "v1.3",
167
167
  "endpoint": "/open_api/v1.3/event/track/",
@@ -28,7 +28,7 @@ Gerar um tracking plan **validado e verificável** que elimine:
28
28
 
29
29
  ### 1.1 Verificar Cobertura de Eventos
30
30
 
31
- ```javascript
31
+ ```typescript
32
32
  // Comparar eventos do Page Analyzer com outputs dos agentes
33
33
  function validateEventCoverage(pageAnalysis, agentOutputs) {
34
34
  const pageEvents = new Set();
@@ -89,7 +89,7 @@ function validateEventCoverage(pageAnalysis, agentOutputs) {
89
89
 
90
90
  ### 1.2 Verificar Consistência de Parâmetros
91
91
 
92
- ```javascript
92
+ ```typescript
93
93
  // Verificar se eventos de conversão têm todos os campos críticos
94
94
  function validateConversionParameters(events, apiVersions) {
95
95
  const criticalFields = ['value', 'currency', 'content_ids', 'transaction_id'];
@@ -118,7 +118,7 @@ function validateConversionParameters(events, apiVersions) {
118
118
 
119
119
  ### 1.3 Verificar Seletores Implementados
120
120
 
121
- ```javascript
121
+ ```typescript
122
122
  // Verificar se seletores no tracking plan existem no código
123
123
  function validateSelectorsExist(trackingPlan, pageAnalysis) {
124
124
  const missingSelectors = [];
@@ -158,7 +158,7 @@ function validateSelectorsExist(trackingPlan, pageAnalysis) {
158
158
 
159
159
  ### 1.4 Verificar Versões de API
160
160
 
161
- ```javascript
161
+ ```typescript
162
162
  // Ler api-versions.json e verificar consistência
163
163
  async function validateApiVersions(trackingPlan) {
164
164
  const apiVersions = await readJSON('contracts/api-versions.json');
@@ -200,7 +200,7 @@ async function validateApiVersions(trackingPlan) {
200
200
 
201
201
  ### 1.5 Validação Cruzada Completa (runFullValidation)
202
202
 
203
- ```javascript
203
+ ```typescript
204
204
  /**
205
205
  * Ponto de entrada principal — executa TODAS as validações em sequência
206
206
  * e retorna um relatório consolidado com status PASS | WARN | BLOCK
@@ -78,7 +78,7 @@ Quando detectar erro, emitir bloco `CORRECTION_ROUTE` com formato:
78
78
  "test_url": "https://graph.facebook.com/v22.0/{PIXEL_ID}/events",
79
79
  "response_expected": "200 OK com payload válido"
80
80
  },
81
- "files_affected": ["worker.js", "meta-capi-dispatcher.js"],
81
+ "files_affected": ["index.ts", "modules/dispatch/meta.ts"],
82
82
  "auto_fix_available": true,
83
83
  "user_action_required": false
84
84
  },
@@ -95,7 +95,7 @@ Quando detectar erro, emitir bloco `CORRECTION_ROUTE` com formato:
95
95
  "fallback": "gerar novo UUID se não existir",
96
96
  "required_for_events": ["purchase", "initiate_checkout"]
97
97
  },
98
- "files_affected": ["ga4-dispatcher.js", "worker.js"],
98
+ "files_affected": ["modules/dispatch/ga4.ts", "index.ts"],
99
99
  "auto_fix_available": false,
100
100
  "user_action_required": true,
101
101
  "user_instruction": "Verificar se o D1 está persistindo corretamente o ga_client_id nos cookies do visitante"
@@ -123,7 +123,7 @@ Para correções com `auto_fix_available: true`, o Validator Agent DEVE:
123
123
 
124
124
  #### PASSO 1 — Executar Fix Automático
125
125
 
126
- ```javascript
126
+ ```typescript
127
127
  // Exemplo: correção automática de versão de API
128
128
  async function applyAutoFix(correction) {
129
129
  const { files_affected, check_pattern, expected_pattern } = correction;
@@ -142,7 +142,7 @@ async function applyAutoFix(correction) {
142
142
 
143
143
  #### PASSO 2 — Re-validar após Fix
144
144
 
145
- ```javascript
145
+ ```typescript
146
146
  // Após aplicar fix, re-executar validação específica
147
147
  async function reValidateAfterFix(correction) {
148
148
  const { validation_criteria, files_affected } = correction;
@@ -171,14 +171,14 @@ Para correções com `user_action_required: true`, emitir instrução estruturad
171
171
 
172
172
  **Agente Responsável:** meta-agent
173
173
  **Prioridade:** 🔴 CRÍTICO
174
- **Arquivos Afetados:** worker.js, meta-capi-dispatcher.js
174
+ **Arquivos Afetados:** index.ts, modules/dispatch/meta.ts
175
175
 
176
176
  ### Problema Detectado:
177
177
  Meta CAPI está usando versão v21.0 (desatualizada) — isso causará rejeição de eventos pela Meta.
178
178
 
179
179
  ### O que precisa ser feito:
180
180
 
181
- 1. **Abrir o arquivo:** `worker.js`
181
+ 1. **Abrir o arquivo:** `modules/dispatch/meta.ts`
182
182
  2. **Localizar:** Todas as ocorrências de `/v21.0/`
183
183
  3. **Substituir por:** `/v22.0/`
184
184
  4. **Testar:** Fazer uma requisição de teste para https://graph.facebook.com/v22.0/{SEU_PIXEL_ID}/events
@@ -201,7 +201,7 @@ Após cada correção (auto ou manual), o Validator Agent DEVE executar validaç
201
201
 
202
202
  #### Para Correções de API Version:
203
203
 
204
- ```javascript
204
+ ```typescript
205
205
  {
206
206
  "revalidation_checklist": {
207
207
  "version_correct": true, // Check: endpoint usa versão correta
@@ -214,7 +214,7 @@ Após cada correção (auto ou manual), o Validator Agent DEVE executar validaç
214
214
 
215
215
  #### Para Correções de Missing Fields:
216
216
 
217
- ```javascript
217
+ ```typescript
218
218
  {
219
219
  "revalidation_checklist": {
220
220
  "field_present": true, // Check: campo existe no payload
@@ -227,7 +227,7 @@ Após cada correção (auto ou manual), o Validator Agent DEVE executar validaç
227
227
 
228
228
  #### Para Correções de Seletores:
229
229
 
230
- ```javascript
230
+ ```typescript
231
231
  {
232
232
  "revalidation_checklist": {
233
233
  "selector_exists": true, // Check: seletor encontrado no HTML/JS
@@ -16,7 +16,7 @@ Você é o especialista em Webhooks do CDP Edge. Sua missão é capturar vendas
16
16
 
17
17
  Antes de qualquer dispatch para CAPI, normalizar e hashear PII extraída do webhook:
18
18
 
19
- ```javascript
19
+ ```typescript
20
20
  // Hashing SHA-256 para PII — usar WebCrypto (disponível em Cloudflare Workers)
21
21
  async function hashPII(value) {
22
22
  if (!value) return null;
@@ -99,7 +99,7 @@ Webhook (Hotmart/Kiwify/Ticto/Stripe)
99
99
 
100
100
  ### Código de Integração (webhook handler)
101
101
 
102
- ```javascript
102
+ ```typescript
103
103
  // No handler de webhook, após validação e dedup:
104
104
  ctx.waitUntil(Promise.allSettled([
105
105
  // [5] CAPI dispatch
@@ -124,8 +124,8 @@ ctx.waitUntil(Promise.allSettled([
124
124
  ]));
125
125
  ```
126
126
 
127
- > **Nota:** `sendEmail()` é implementada pelo Email Agent em `cloudflare/email-service.js`.
128
- > `syncToCRM()` é implementada pelo CRM Integration Agent em `cloudflare/crm-service.js`.
127
+ > **Nota:** `sendEmail()` é implementada pelo Email Agent em `modules/email-service.ts`.
128
+ > `syncToCRM()` é implementada pelo CRM Integration Agent em `modules/crm-service.ts`.
129
129
 
130
130
  ---
131
131
 
@@ -66,7 +66,7 @@ WhatsApp Agent dispara notificação ao dono via Meta Cloud API v22.0
66
66
 
67
67
  ### O que este agente gera para o fluxo CTWA
68
68
 
69
- ```javascript
69
+ ```typescript
70
70
  // sendWhatsApp() — notificação ao dono quando chega lead CTWA
71
71
  async function notifyOwnerNewCtwaLead(env, contactData) {
72
72
  const message = `📲 Novo Lead CTWA!\n\nNome: ${contactData.name || 'Desconhecido'}\nTelefone: ${contactData.phone}\nAnúncio: ${contactData.headline || '-'}\nMensagem: "${contactData.messageBody?.slice(0, 80) || '-'}"`;
@@ -183,7 +183,7 @@ message_body | Olá, vi o anúncio e tenho interesse
183
183
  3. `META_APP_SECRET`
184
184
 
185
185
  **O agente gera/descobre o restante automaticamente:**
186
- ```javascript
186
+ ```typescript
187
187
  // WA_WEBHOOK_VERIFY_TOKEN — gerado pelo agente antes de registrar o webhook
188
188
  const WA_WEBHOOK_VERIFY_TOKEN = crypto.randomUUID().replace(/-/g, '') + crypto.randomUUID().replace(/-/g, '');
189
189
  // Exemplo: "a3f8c1d2e4b5a6f7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1"
@@ -504,7 +504,7 @@ echo "{META_APP_SECRET}" | wrangler secret put META_APP_SECRET
504
504
  echo "{META_ACCESS_TOKEN}" | wrangler secret put META_ACCESS_TOKEN
505
505
 
506
506
  # ── Secrets para Auto-Resposta WhatsApp (enviar mensagens de saída) ─────────
507
- # Necessários para: worker.js → auto-resposta após Lead/Purchase
507
+ # Necessários para: index.ts → auto-resposta após Lead/Purchase
508
508
  # WHATSAPP_ACCESS_TOKEN = mesmo token Meta (Cloud API) — pode reutilizar META_ACCESS_TOKEN
509
509
  # WHATSAPP_PHONE_NUMBER_ID = mesmo {PHONE_ID} descoberto acima
510
510
  echo "{META_ACCESS_TOKEN}" | wrangler secret put WHATSAPP_ACCESS_TOKEN
@@ -682,7 +682,7 @@ PRÓXIMO PASSO:
682
682
 
683
683
  | Arquivo | Função |
684
684
  |---------|--------|
685
- | `server-edge-tracker/worker.js` | `processWhatsAppWebhook()` (linha ~943) + rotas `GET/POST /webhook/whatsapp` (linha ~2182) |
685
+ | `server-edge-tracker/index.ts` | `processWhatsAppWebhook()` + rotas `GET/POST /webhook/whatsapp` |
686
686
  | `server-edge-tracker/migrate-v6.sql` | Criação da tabela `whatsapp_contacts` com índices |
687
687
  | `server-edge-tracker/wrangler.toml` | Configuração do worker + lista de secrets documentados |
688
688
  | `docs/whatsapp-ctwa.md` | Documentação técnica completa do módulo CTWA |
@@ -33,7 +33,7 @@ YouTube Ad (TrueView / Bumper / Non-skip)
33
33
 
34
34
  ### PASSO 0 — Ler Versões Atuais
35
35
 
36
- ```javascript
36
+ ```typescript
37
37
  const apiVersions = await readJSON('contracts/api-versions.json');
38
38
  const googleVersions = apiVersions.google;
39
39
 
@@ -253,7 +253,7 @@ cdpTrack.updateConsent({ analytics: true, ads: true });
253
253
 
254
254
  ---
255
255
 
256
- ## 🛠️ IMPLEMENTAÇÃO SERVER — worker.js
256
+ ## 🛠️ IMPLEMENTAÇÃO SERVER — index.ts
257
257
 
258
258
  ### 1. Extrair e persistir Click IDs do YouTube
259
259
 
@@ -262,7 +262,7 @@ O `upsertProfile()` já persiste `gclid`, `wbraid`, `gbraid` no D1.
262
262
 
263
263
  Para verificar persistência correta:
264
264
 
265
- ```javascript
265
+ ```typescript
266
266
  // D1: user_profiles — colunas já existentes
267
267
  // gclid TEXT — Google Ads standard click ID
268
268
  // wbraid TEXT — iOS privacy-preserving (YouTube)
@@ -271,7 +271,7 @@ Para verificar persistência correta:
271
271
 
272
272
  ### 2. GA4 Measurement Protocol — Eventos de Vídeo
273
273
 
274
- ```javascript
274
+ ```typescript
275
275
  // No sendGA4Mp() — adicionar mapeamento de eventos YouTube
276
276
  const VIDEO_GA4_MAP = {
277
277
  video_start: 'video_start',
@@ -293,7 +293,7 @@ const videoParams = {
293
293
 
294
294
  ### 3. Google Ads Enhanced Conversions — Lead de Vídeo
295
295
 
296
- ```javascript
296
+ ```typescript
297
297
  // Conversão de Lead gerada por campanha YouTube
298
298
  // Envia para GA4 MP com user_data para Enhanced Conversions
299
299
  const enhancedConversionPayload = {
@@ -326,7 +326,7 @@ const enhancedConversionPayload = {
326
326
  Para campanhas Bumper/Non-skip, o usuário converte DEPOIS sem clicar.
327
327
  O Worker detecta isso quando um Lead chega SEM gclid mas com histórico de impressão YouTube:
328
328
 
329
- ```javascript
329
+ ```typescript
330
330
  // No upsertProfile() — verificar se perfil tem impressão YouTube recente
331
331
  // (requer webhook do Google Ads — avançado, Fase 5)
332
332
  // Por ora: registrar ausência de gclid + utm_source=youtube como view-through candidate
@@ -418,7 +418,7 @@ const YOUTUBE_AUDIENCES_IMOVEIS = {
418
418
 
419
419
  ### Customer Match — Exportar leads do D1 para Google Ads
420
420
 
421
- ```javascript
421
+ ```typescript
422
422
  // Endpoint no Worker: GET /export/customer-match
423
423
  // Gera CSV criptografado para upload no Google Ads
424
424
 
@@ -449,7 +449,7 @@ async function exportCustomerMatchList(env) {
449
449
 
450
450
  O Intelligence Agent (cron semanal) deve incluir check de YouTube:
451
451
 
452
- ```javascript
452
+ ```typescript
453
453
  // Adicionar ao checkApiVersionsIntelligence():
454
454
  // Verificar se wbraid/gbraid estão chegando nos leads
455
455
  // (indica que campanhas YouTube iOS estão funcionando)
@@ -518,7 +518,7 @@ if (youtubeMobileLeads.count === 0) {
518
518
  {
519
519
  "arquivos_gerados": {
520
520
  "browser": "cdpTrack.js (eventos YouTube + IFrame API listener)",
521
- "server": "cloudflare/google-mp.js (já inclui YouTube via GA4)"
521
+ "server": "modules/dispatch/ga4.ts (já inclui YouTube via GA4)"
522
522
  },
523
523
  "eventos_implementados": [
524
524
  "video_start",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cdp-edge",
3
- "version": "2.5.1",
3
+ "version": "2.5.2",
4
4
  "description": "CDP Edge - Quantum Tracking - Sistema multi-agente para tracking digital Cloudflare Native (Workers + D1)",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -32,9 +32,11 @@ CREATE INDEX IF NOT EXISTS idx_utm_category ON utm_mappings(category);
32
32
  -- ============================================================================
33
33
  -- ALTER: leads (adicionar colunas de segmentação)
34
34
  -- ============================================================================
35
- ALTER TABLE leads ADD COLUMN IF NOT EXISTS faixa_obfuscada TEXT; -- Hash da faixa de valor (vem da URL)
36
- ALTER TABLE leads ADD COLUMN IF NOT EXISTS faixa_real TEXT; -- Valor real de-obfuscado (ex: "700k-1M")
37
- ALTER TABLE leads ADD COLUMN IF NOT EXISTS faixa_category TEXT; -- Categoria do produto (ex: "imovel")
35
+ -- Nota: D1/SQLite não suporta ADD COLUMN IF NOT EXISTS. Executar uma vez.
36
+ -- Se as colunas existirem, o erro "duplicate column name" é inofensivo banco continua OK.
37
+ ALTER TABLE leads ADD COLUMN faixa_obfuscada TEXT; -- Hash da faixa de valor (vem da URL)
38
+ ALTER TABLE leads ADD COLUMN faixa_real TEXT; -- Valor real de-obfuscado (ex: "700k-1M")
39
+ ALTER TABLE leads ADD COLUMN faixa_category TEXT; -- Categoria do produto (ex: "imovel")
38
40
 
39
41
  -- ============================================================================
40
42
  -- ÍNDICES: leads (novas colunas para segmentação)
@@ -37,7 +37,7 @@ SITE_DOMAIN = "SEU_DOMINIO"
37
37
  [[d1_databases]]
38
38
  binding = "DB"
39
39
  database_name = "cdp-edge-db"
40
- database_id = "SEU_DATABASE_ID"
40
+ database_id = "7867d38f-5fa8-4c17-b465-386211422c09"
41
41
 
42
42
  # ── Queues — Retry + Dead Letter Queue ───────────────────────────────────────
43
43
  # Produtor: worker envia eventos com falha para cdp-edge-retry
@@ -1,10 +0,0 @@
1
- # Intelligence Agent — Scheduling (REDIRECIONAMENTO)
2
-
3
- > ⚠️ **Este arquivo foi consolidado.**
4
- >
5
- > Todo o conteúdo de scheduling automático do Intelligence Agent foi unificado em:
6
- > **[intelligence-agent.md](./intelligence-agent.md)**
7
- >
8
- > Consulte a seção `## 📅 PROTOCOLO DE SCHEDULING` dentro de `intelligence-agent.md`.
9
-
10
- Motivo: duplicação eliminada para manter uma única fonte de verdade.