cdp-edge 1.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/README.md +324 -0
- package/bin/cdp-edge.js +71 -0
- package/contracts/agent-versions.json +679 -0
- package/contracts/api-versions.json +372 -0
- package/contracts/types.ts +81 -0
- package/dist/commands/analyze.js +52 -0
- package/dist/commands/infra.js +54 -0
- package/dist/commands/install.js +191 -0
- package/dist/commands/server.js +174 -0
- package/dist/commands/setup.js +355 -0
- package/dist/commands/validate.js +248 -0
- package/dist/index.js +12 -0
- package/dist/sdk/cdpTrack.js +2095 -0
- package/dist/sdk/cdpTrack.min.js +64 -0
- package/dist/sdk/install-snippet.html +10 -0
- package/docs/CI-CD-SETUP.md +217 -0
- package/docs/events-reference.md +359 -0
- package/docs/installation.md +155 -0
- package/docs/quick-start.md +185 -0
- package/docs/sdk-reference.md +371 -0
- package/docs/whatsapp-ctwa.md +210 -0
- package/extracted-skill/tracking-events-generator/INDEX.md +94 -0
- package/extracted-skill/tracking-events-generator/INSTALACAO-CDPEDGE.md +58 -0
- package/extracted-skill/tracking-events-generator/INTEGRACAO-COMPLETA.md +683 -0
- package/extracted-skill/tracking-events-generator/MELHORIAS-IMPLEMENTADAS.md +513 -0
- package/extracted-skill/tracking-events-generator/Premium-Tracking-Intelligence-Resumo.md +333 -0
- package/extracted-skill/tracking-events-generator/SKILL.md +257 -0
- package/extracted-skill/tracking-events-generator/advanced-matching.js +364 -0
- package/extracted-skill/tracking-events-generator/agents/ab-ltv-agent.md +196 -0
- package/extracted-skill/tracking-events-generator/agents/ab-testing-agent.md +54 -0
- package/extracted-skill/tracking-events-generator/agents/attribution-agent.md +1304 -0
- package/extracted-skill/tracking-events-generator/agents/bidding-agent.md +347 -0
- package/extracted-skill/tracking-events-generator/agents/bing-agent.md +66 -0
- package/extracted-skill/tracking-events-generator/agents/browser-tracking.md +364 -0
- package/extracted-skill/tracking-events-generator/agents/code-guardian-agent.md +149 -0
- package/extracted-skill/tracking-events-generator/agents/compliance-agent.md +2097 -0
- package/extracted-skill/tracking-events-generator/agents/crm-integration-agent.md +1459 -0
- package/extracted-skill/tracking-events-generator/agents/dashboard-agent.md +456 -0
- package/extracted-skill/tracking-events-generator/agents/database-agent.md +668 -0
- package/extracted-skill/tracking-events-generator/agents/debug-agent.md +1455 -0
- package/extracted-skill/tracking-events-generator/agents/devops-agent.md +232 -0
- package/extracted-skill/tracking-events-generator/agents/domain-setup-agent.md +238 -0
- package/extracted-skill/tracking-events-generator/agents/email-agent.md +88 -0
- package/extracted-skill/tracking-events-generator/agents/fingerprint-agent.md +257 -0
- package/extracted-skill/tracking-events-generator/agents/fraud-detection-agent.md +143 -0
- package/extracted-skill/tracking-events-generator/agents/google-agent.md +235 -0
- package/extracted-skill/tracking-events-generator/agents/intelligence-agent.md +525 -0
- package/extracted-skill/tracking-events-generator/agents/lead-scoring-agent.md +282 -0
- package/extracted-skill/tracking-events-generator/agents/linkedin-agent.md +173 -0
- package/extracted-skill/tracking-events-generator/agents/localization-agent.md +55 -0
- package/extracted-skill/tracking-events-generator/agents/ltv-predictor-agent.md +59 -0
- package/extracted-skill/tracking-events-generator/agents/master-feedback-loop.md +960 -0
- package/extracted-skill/tracking-events-generator/agents/master-orchestrator.md +2154 -0
- package/extracted-skill/tracking-events-generator/agents/match-quality-agent.md +304 -0
- package/extracted-skill/tracking-events-generator/agents/memory-agent.json +25 -0
- package/extracted-skill/tracking-events-generator/agents/memory-agent.md +878 -0
- package/extracted-skill/tracking-events-generator/agents/meta-agent.md +118 -0
- package/extracted-skill/tracking-events-generator/agents/ml-clustering-agent.md +749 -0
- package/extracted-skill/tracking-events-generator/agents/page-analyzer.md +272 -0
- package/extracted-skill/tracking-events-generator/agents/performance-agent.md +1167 -0
- package/extracted-skill/tracking-events-generator/agents/performance-optimization-agent.md +1442 -0
- package/extracted-skill/tracking-events-generator/agents/pinterest-agent.md +318 -0
- package/extracted-skill/tracking-events-generator/agents/premium-tracking-intelligence-agent.md +849 -0
- package/extracted-skill/tracking-events-generator/agents/r2-setup-agent.md +258 -0
- package/extracted-skill/tracking-events-generator/agents/reddit-agent.md +321 -0
- package/extracted-skill/tracking-events-generator/agents/security-enterprise-agent.md +1861 -0
- package/extracted-skill/tracking-events-generator/agents/server-tracking.md +1188 -0
- package/extracted-skill/tracking-events-generator/agents/spotify-agent.md +391 -0
- package/extracted-skill/tracking-events-generator/agents/tiktok-agent.md +182 -0
- package/extracted-skill/tracking-events-generator/agents/tracking-plan-agent.md +459 -0
- package/extracted-skill/tracking-events-generator/agents/utm-agent.md +322 -0
- package/extracted-skill/tracking-events-generator/agents/validator-agent.md +271 -0
- package/extracted-skill/tracking-events-generator/agents/webhook-agent.md +177 -0
- package/extracted-skill/tracking-events-generator/agents/whatsapp-agent.md +129 -0
- package/extracted-skill/tracking-events-generator/agents/whatsapp-ctwa-setup-agent.md +707 -0
- package/extracted-skill/tracking-events-generator/agents/youtube-agent.md +537 -0
- package/extracted-skill/tracking-events-generator/anti-blocking.js +285 -0
- package/extracted-skill/tracking-events-generator/cdpTrack.js +640 -0
- package/extracted-skill/tracking-events-generator/contracts/api-versions.json +372 -0
- package/extracted-skill/tracking-events-generator/docs/guia-cloudflare-iniciante.md +107 -0
- package/extracted-skill/tracking-events-generator/engagement-scoring.js +226 -0
- package/extracted-skill/tracking-events-generator/evals/evals.json +235 -0
- package/extracted-skill/tracking-events-generator/integration-test.js +497 -0
- package/extracted-skill/tracking-events-generator/knowledge-base.md +3066 -0
- package/extracted-skill/tracking-events-generator/micro-events.js +992 -0
- package/extracted-skill/tracking-events-generator/models/captura-de-lead.md +78 -0
- package/extracted-skill/tracking-events-generator/models/captura-lead-evento-externo.md +99 -0
- package/extracted-skill/tracking-events-generator/models/checkout-proprio.md +111 -0
- package/extracted-skill/tracking-events-generator/models/lancamento-imobiliario.md +344 -0
- package/extracted-skill/tracking-events-generator/models/multi-step-checkout.md +672 -0
- package/extracted-skill/tracking-events-generator/models/pagina-obrigado.md +55 -0
- package/extracted-skill/tracking-events-generator/models/pinterest/conversions-api-template.js +144 -0
- package/extracted-skill/tracking-events-generator/models/pinterest/event-mappings.json +48 -0
- package/extracted-skill/tracking-events-generator/models/pinterest/tag-template.js +28 -0
- package/extracted-skill/tracking-events-generator/models/quiz-funnel.md +132 -0
- package/extracted-skill/tracking-events-generator/models/reddit/conversions-api-template.js +205 -0
- package/extracted-skill/tracking-events-generator/models/reddit/event-mappings.json +56 -0
- package/extracted-skill/tracking-events-generator/models/reddit/pixel-template.js +19 -0
- package/extracted-skill/tracking-events-generator/models/scenarios/behavior-engine.js +425 -0
- package/extracted-skill/tracking-events-generator/models/scenarios/real-estate-logic.md +50 -0
- package/extracted-skill/tracking-events-generator/models/scenarios/sales-page-logic.md +50 -0
- package/extracted-skill/tracking-events-generator/models/trafego-direto.md +582 -0
- package/extracted-skill/tracking-events-generator/models/webinar-registration.md +63 -0
- package/extracted-skill/tracking-events-generator/route-intent-capture.js +222 -0
- package/extracted-skill/tracking-events-generator/tracking.config.js +46 -0
- package/extracted-skill/tracking-events-generator/walkthrough.md +26 -0
- package/package.json +89 -0
- package/scripts/build-sdk.js +106 -0
- package/server-edge-tracker/.client.env.example +14 -0
- package/server-edge-tracker/INSTALAR.md +527 -0
- package/server-edge-tracker/SEGMENTATION-DOCS.md +513 -0
- package/server-edge-tracker/config/utm-mapping.json +64 -0
- package/server-edge-tracker/deploy-client.cjs +76 -0
- package/server-edge-tracker/index.ts +1164 -0
- package/server-edge-tracker/migrate-new-db.sql +137 -0
- package/server-edge-tracker/migrate-v2.sql +16 -0
- package/server-edge-tracker/migrate-v3.sql +6 -0
- package/server-edge-tracker/migrate-v4.sql +18 -0
- package/server-edge-tracker/migrate-v5.sql +17 -0
- package/server-edge-tracker/migrate-v6.sql +24 -0
- package/server-edge-tracker/migrate-v7.sql +64 -0
- package/server-edge-tracker/migrate.sql +111 -0
- package/server-edge-tracker/modules/db.ts +702 -0
- package/server-edge-tracker/modules/dispatch/ga4.ts +72 -0
- package/server-edge-tracker/modules/dispatch/meta.ts +143 -0
- package/server-edge-tracker/modules/dispatch/platforms.ts +255 -0
- package/server-edge-tracker/modules/dispatch/tiktok.ts +107 -0
- package/server-edge-tracker/modules/dispatch/whatsapp.ts +279 -0
- package/server-edge-tracker/modules/intelligence.ts +589 -0
- package/server-edge-tracker/modules/ml/bidding.ts +247 -0
- package/server-edge-tracker/modules/ml/fraud.ts +302 -0
- package/server-edge-tracker/modules/ml/logistic.ts +226 -0
- package/server-edge-tracker/modules/ml/ltv.ts +531 -0
- package/server-edge-tracker/modules/ml/matchquality.ts +232 -0
- package/server-edge-tracker/modules/ml/quiz.ts +343 -0
- package/server-edge-tracker/modules/ml/roas.ts +255 -0
- package/server-edge-tracker/modules/ml/segmentation.ts +407 -0
- package/server-edge-tracker/modules/nurture.ts +257 -0
- package/server-edge-tracker/modules/utils.ts +311 -0
- package/server-edge-tracker/modules/utm/utm-enricher.ts +231 -0
- package/server-edge-tracker/schema-ab-ltv.sql +97 -0
- package/server-edge-tracker/schema-bidding.sql +86 -0
- package/server-edge-tracker/schema-fraud.sql +90 -0
- package/server-edge-tracker/schema-indexes.sql +67 -0
- package/server-edge-tracker/schema-ltv-feedback.sql +11 -0
- package/server-edge-tracker/schema-quiz.sql +52 -0
- package/server-edge-tracker/schema-sales-engine.sql +113 -0
- package/server-edge-tracker/schema-segmentation.sql +219 -0
- package/server-edge-tracker/schema-utm.sql +82 -0
- package/server-edge-tracker/schema.sql +265 -0
- package/server-edge-tracker/types.ts +258 -0
- package/server-edge-tracker/wrangler.toml +136 -0
- package/templates/afiliado-sem-landing.md +312 -0
- package/templates/captura-de-lead.md +78 -0
- package/templates/captura-lead-evento-externo.md +99 -0
- package/templates/checkout-proprio.md +111 -0
- package/templates/install/.claude/commands/cdp.md +1 -0
- package/templates/install/CLAUDE.md +65 -0
- package/templates/lancamento-imobiliario.md +344 -0
- package/templates/linkedin/tag-template.js +46 -0
- package/templates/multi-step-checkout.md +672 -0
- package/templates/pagina-obrigado.md +55 -0
- package/templates/pinterest/conversions-api-template.js +144 -0
- package/templates/pinterest/event-mappings.json +48 -0
- package/templates/pinterest/tag-template.js +28 -0
- package/templates/quiz-funnel.md +132 -0
- package/templates/reddit/conversions-api-template.js +205 -0
- package/templates/reddit/event-mappings.json +56 -0
- package/templates/reddit/pixel-template.js +19 -0
- package/templates/scenarios/behavior-engine.js +425 -0
- package/templates/scenarios/real-estate-logic.md +50 -0
- package/templates/scenarios/sales-page-logic.md +50 -0
- package/templates/spotify/pixel-template.js +46 -0
- package/templates/trafego-direto.md +582 -0
- package/templates/vsl-page.md +292 -0
- package/templates/webinar-registration.md +63 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CDP Edge Install Command
|
|
3
|
+
* Instala o CDP Edge em qualquer projeto de cliente
|
|
4
|
+
*
|
|
5
|
+
* Uso: cdp-edge install [dir] [--name "Nome do Projeto"] [--cursor]
|
|
6
|
+
*
|
|
7
|
+
* O que faz:
|
|
8
|
+
* 1. Copia os arquivos do CDP Edge para <dir>/cdp-edge/
|
|
9
|
+
* 2. Cria <dir>/.claude/commands/cdp.md → habilita /cdp no Claude Code
|
|
10
|
+
* 3. Cria <dir>/CLAUDE.md → auto-ativação opcional
|
|
11
|
+
* 4. Cria <dir>/.cursorrules → Cursor IDE (flag --cursor)
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import fs from 'fs';
|
|
15
|
+
import path from 'path';
|
|
16
|
+
import { fileURLToPath } from 'url';
|
|
17
|
+
import chalk from 'chalk';
|
|
18
|
+
|
|
19
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
20
|
+
|
|
21
|
+
// Ler versão do package.json
|
|
22
|
+
const packageJsonPath = path.join(__dirname, '..', '..', 'package.json');
|
|
23
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
24
|
+
const CDP_VERSION = packageJson.version;
|
|
25
|
+
|
|
26
|
+
// Raiz do pacote CDP Edge (2 níveis acima de dist/commands/)
|
|
27
|
+
const CDP_EDGE_ROOT = path.resolve(__dirname, '..', '..');
|
|
28
|
+
|
|
29
|
+
function printBanner() {
|
|
30
|
+
console.log('');
|
|
31
|
+
console.log(chalk.white.bold(' CDP Edge Installation'));
|
|
32
|
+
console.log('');
|
|
33
|
+
console.log(chalk.cyan(' ██████╗██████╗ ██████╗ ███████╗██████╗ ██████╗ ███████╗'));
|
|
34
|
+
console.log(chalk.cyan('██╔════╝██╔══██╗██╔══██╗ ██╔════╝██╔══██╗██╔════╝ ██╔════╝'));
|
|
35
|
+
console.log(chalk.cyan('██║ ██║ ██║██████╔╝ █████╗ ██║ ██║██║ ███╗█████╗ '));
|
|
36
|
+
console.log(chalk.cyan('██║ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║ ██║██╔══╝ '));
|
|
37
|
+
console.log(chalk.cyan('╚██████╗██████╔╝██║ ███████╗██████╔╝╚██████╔╝███████╗'));
|
|
38
|
+
console.log(chalk.cyan(' ╚═════╝╚═════╝ ╚═╝ ╚══════╝╚═════╝ ╚═════╝╚══════╝'));
|
|
39
|
+
console.log('');
|
|
40
|
+
console.log(chalk.gray(` Customer Data Platform on the Edge · Global Edge Tracking · v${CDP_VERSION}`));
|
|
41
|
+
console.log('');
|
|
42
|
+
console.log(chalk.gray('═'.repeat(68)));
|
|
43
|
+
console.log('');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export async function runInstall(targetDir = '.', options = {}) {
|
|
47
|
+
const projectName = options.name || path.basename(path.resolve(targetDir));
|
|
48
|
+
const target = path.resolve(targetDir);
|
|
49
|
+
|
|
50
|
+
printBanner();
|
|
51
|
+
|
|
52
|
+
console.log(chalk.gray(` Projeto: ${chalk.white(projectName)}`));
|
|
53
|
+
console.log(chalk.gray(` Destino: ${chalk.white(target)}\n`));
|
|
54
|
+
|
|
55
|
+
// 1. Garantir que o diretório alvo existe
|
|
56
|
+
if (!fs.existsSync(target)) {
|
|
57
|
+
fs.mkdirSync(target, { recursive: true });
|
|
58
|
+
console.log(chalk.green(`✔ Diretório criado: ${target}`));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// 2. Copiar arquivos CDP Edge para <target>/cdp-edge/
|
|
62
|
+
const cdpEdgeDest = path.join(target, 'cdp-edge');
|
|
63
|
+
const foldersToInstall = [
|
|
64
|
+
'extracted-skill',
|
|
65
|
+
'server-edge-tracker',
|
|
66
|
+
'templates',
|
|
67
|
+
'docs',
|
|
68
|
+
];
|
|
69
|
+
|
|
70
|
+
let installedFromSource = false;
|
|
71
|
+
const missingFolders = [];
|
|
72
|
+
|
|
73
|
+
for (const folder of foldersToInstall) {
|
|
74
|
+
const src = path.join(CDP_EDGE_ROOT, folder);
|
|
75
|
+
const dest = path.join(cdpEdgeDest, folder);
|
|
76
|
+
|
|
77
|
+
if (fs.existsSync(src)) {
|
|
78
|
+
copyDir(src, dest);
|
|
79
|
+
console.log(chalk.green(`✔ Copiado: cdp-edge/${folder}/`));
|
|
80
|
+
installedFromSource = true;
|
|
81
|
+
} else {
|
|
82
|
+
missingFolders.push(folder);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (!installedFromSource) {
|
|
87
|
+
// Pacote instalado via npm sem os arquivos de código-fonte
|
|
88
|
+
console.log(chalk.yellow('\n⚠ Arquivos de skill não encontrados no pacote npm.'));
|
|
89
|
+
console.log(chalk.yellow(' Clone o repositório completo manualmente:'));
|
|
90
|
+
console.log(chalk.cyan('\n git clone https://github.com/ricardosoli777/CDP-Edge-Premium cdp-edge\n'));
|
|
91
|
+
} else if (missingFolders.length > 0) {
|
|
92
|
+
console.log(chalk.yellow(`\n⚠ Pastas não encontradas (ignoradas): ${missingFolders.join(', ')}`));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// 3. Criar .claude/commands/cdp.md → habilita /cdp no Claude Code
|
|
96
|
+
const commandSrc = path.join(CDP_EDGE_ROOT, 'templates', 'install', '.claude', 'commands', 'cdp.md');
|
|
97
|
+
const commandDest = path.join(target, '.claude', 'commands', 'cdp.md');
|
|
98
|
+
|
|
99
|
+
if (fs.existsSync(commandDest)) {
|
|
100
|
+
console.log(chalk.yellow('⚠ .claude/commands/cdp.md já existe — não sobrescrito.'));
|
|
101
|
+
} else {
|
|
102
|
+
fs.mkdirSync(path.dirname(commandDest), { recursive: true });
|
|
103
|
+
if (fs.existsSync(commandSrc)) {
|
|
104
|
+
fs.copyFileSync(commandSrc, commandDest);
|
|
105
|
+
} else {
|
|
106
|
+
// Fallback inline
|
|
107
|
+
fs.writeFileSync(commandDest,
|
|
108
|
+
'Leia o arquivo `cdp-edge/extracted-skill/tracking-events-generator/agents/master-orchestrator.md` e ative o Master Orchestrator exibindo a mensagem de boas-vindas completa.\n',
|
|
109
|
+
'utf8'
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
console.log(chalk.green('✔ Criado: .claude/commands/cdp.md → /cdp habilitado'));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// 4. Criar CLAUDE.md na raiz (auto-ativação ao abrir sessão)
|
|
116
|
+
const claudeMdSrc = path.join(CDP_EDGE_ROOT, 'templates', 'install', 'CLAUDE.md');
|
|
117
|
+
const claudeMdDest = path.join(target, 'CLAUDE.md');
|
|
118
|
+
|
|
119
|
+
if (fs.existsSync(claudeMdDest)) {
|
|
120
|
+
console.log(chalk.yellow('⚠ CLAUDE.md já existe — não sobrescrito.'));
|
|
121
|
+
} else {
|
|
122
|
+
let content;
|
|
123
|
+
if (fs.existsSync(claudeMdSrc)) {
|
|
124
|
+
content = fs.readFileSync(claudeMdSrc, 'utf8');
|
|
125
|
+
content = content.replace('[NOME DO PROJETO]', projectName);
|
|
126
|
+
} else {
|
|
127
|
+
content = generateClaudeMd(projectName);
|
|
128
|
+
}
|
|
129
|
+
fs.writeFileSync(claudeMdDest, content, 'utf8');
|
|
130
|
+
console.log(chalk.green('✔ Criado: CLAUDE.md'));
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// 5. Criar .cursorrules (flag --cursor)
|
|
134
|
+
if (options.cursor) {
|
|
135
|
+
const cursorDest = path.join(target, '.cursorrules');
|
|
136
|
+
if (fs.existsSync(cursorDest)) {
|
|
137
|
+
console.log(chalk.yellow('⚠ .cursorrules já existe — não sobrescrito.'));
|
|
138
|
+
} else {
|
|
139
|
+
const content = fs.readFileSync(claudeMdDest, 'utf8');
|
|
140
|
+
fs.writeFileSync(cursorDest, content, 'utf8');
|
|
141
|
+
console.log(chalk.green('✔ Criado: .cursorrules (Cursor IDE)'));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// 6. Resumo final
|
|
146
|
+
console.log(chalk.gray('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
147
|
+
console.log(chalk.green.bold(' CDP Edge instalado!'));
|
|
148
|
+
console.log(chalk.gray('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
|
|
149
|
+
console.log(chalk.cyan('Próximos passos:\n'));
|
|
150
|
+
console.log(` 1. Abra o projeto no Claude Code:`);
|
|
151
|
+
console.log(chalk.bold(` claude ${target}`));
|
|
152
|
+
console.log(` 2. Digite ${chalk.bold('/cdp')} para ativar o Master Orchestrator\n`);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
156
|
+
|
|
157
|
+
function copyDir(src, dest) {
|
|
158
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
159
|
+
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
160
|
+
const srcPath = path.join(src, entry.name);
|
|
161
|
+
const destPath = path.join(dest, entry.name);
|
|
162
|
+
if (entry.isDirectory()) {
|
|
163
|
+
copyDir(srcPath, destPath);
|
|
164
|
+
} else {
|
|
165
|
+
fs.copyFileSync(srcPath, destPath);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function generateClaudeMd(projectName) {
|
|
171
|
+
return `# ${projectName} — CDP Edge Quantum Tracking
|
|
172
|
+
|
|
173
|
+
## Ativação automática do CDP Edge
|
|
174
|
+
|
|
175
|
+
**Ao iniciar esta sessão, execute imediatamente:**
|
|
176
|
+
|
|
177
|
+
1. Leia o arquivo: \`cdp-edge/extracted-skill/tracking-events-generator/agents/master-orchestrator.md\`
|
|
178
|
+
2. Ative o **Master Orchestrator** exibindo a mensagem de boas-vindas
|
|
179
|
+
3. Aguarde as instruções do usuário para iniciar o setup
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Comandos rápidos
|
|
184
|
+
|
|
185
|
+
| Comando | O que faz |
|
|
186
|
+
|---|---|
|
|
187
|
+
| \`/cdp\` | Ativa o Master Orchestrator |
|
|
188
|
+
| \`/cdp setup\` | Inicia o wizard de configuração completo |
|
|
189
|
+
| \`/cdp status\` | Verifica saúde do projeto atual |
|
|
190
|
+
`;
|
|
191
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server Command - Infraestrutura Cloudflare Workers
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import { promises as fs } from 'fs';
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
|
|
10
|
+
export async function runServer(dir) {
|
|
11
|
+
console.log(chalk.cyan.bold('\n CDP Edge - Server-Side Tracking\n'));
|
|
12
|
+
|
|
13
|
+
const spinner = ora('Gerando infraestrutura...').start();
|
|
14
|
+
|
|
15
|
+
try {
|
|
16
|
+
// Gerar index.js
|
|
17
|
+
await generateWorker(dir);
|
|
18
|
+
|
|
19
|
+
// Gerar schema.sql
|
|
20
|
+
await generateSchema(dir);
|
|
21
|
+
|
|
22
|
+
// Gerar wrangler.toml
|
|
23
|
+
await generateWranglerConfig(dir);
|
|
24
|
+
|
|
25
|
+
spinner.succeed(chalk.green('Infraestrutura gerada!'));
|
|
26
|
+
|
|
27
|
+
console.log('\n' + chalk.yellow('Arquivos gerados:'));
|
|
28
|
+
console.log(` ${chalk.gray('├─')} index.js`);
|
|
29
|
+
console.log(` ${chalk.gray('├─')} schema.sql`);
|
|
30
|
+
console.log(` ${chalk.gray('└─')} wrangler.toml`);
|
|
31
|
+
|
|
32
|
+
console.log(chalk.cyan('\nPróximos passos:'));
|
|
33
|
+
console.log(' 1. Configure suas API tokens no Wrangler:');
|
|
34
|
+
console.log(' wrangler secret put META_ACCESS_TOKEN');
|
|
35
|
+
console.log(' 2. Faça o deploy:');
|
|
36
|
+
console.log(' wrangler deploy');
|
|
37
|
+
console.log(' 3. Configure o schema D1:');
|
|
38
|
+
console.log(' wrangler d1 execute db --file=schema.sql');
|
|
39
|
+
|
|
40
|
+
} catch (error) {
|
|
41
|
+
spinner.fail('Erro ao gerar infraestrutura');
|
|
42
|
+
console.error(error);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async function generateWorker(dir) {
|
|
47
|
+
const workerPath = join(dir, 'index.js');
|
|
48
|
+
await fs.writeFile(workerPath, generateWorkerCode());
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async function generateSchema(dir) {
|
|
52
|
+
const schemaPath = join(dir, 'schema.sql');
|
|
53
|
+
await fs.writeFile(schemaPath, generateSchemaCode());
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
async function generateWranglerConfig(dir) {
|
|
57
|
+
const configPath = join(dir, 'wrangler.toml');
|
|
58
|
+
await fs.writeFile(configPath, generateWranglerCode());
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function generateWorkerCode() {
|
|
62
|
+
return `// CDP Edge Quantum Tier - Cloudflare Worker
|
|
63
|
+
// Auto-generated by cdp-edge npx
|
|
64
|
+
|
|
65
|
+
export default {
|
|
66
|
+
async fetch(request, env) {
|
|
67
|
+
const url = new URL(request.url);
|
|
68
|
+
const path = url.pathname;
|
|
69
|
+
|
|
70
|
+
// Endpoint de tracking
|
|
71
|
+
if (path === '/api/tracking') {
|
|
72
|
+
return handleTracking(request, env);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Health check
|
|
76
|
+
if (path === '/health') {
|
|
77
|
+
return new Response(JSON.stringify({ status: 'ok' }), {
|
|
78
|
+
headers: { 'Content-Type': 'application/json' }
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return new Response('Not Found', { status: 404 });
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
async function handleTracking(request, env) {
|
|
87
|
+
try {
|
|
88
|
+
const body = await request.json();
|
|
89
|
+
const { event, data } = body;
|
|
90
|
+
|
|
91
|
+
// Persistir no D1
|
|
92
|
+
await env.DB.prepare(
|
|
93
|
+
'INSERT INTO events (event_id, event_type, user_id, data, created_at) VALUES (?, ?, ?, ?, ?)'
|
|
94
|
+
).bind(data.event_id, event, data.user_id, JSON.stringify(data), Date.now()).run();
|
|
95
|
+
|
|
96
|
+
// Enviar para APIs externas (background)
|
|
97
|
+
if (event === 'Purchase' || event === 'Lead') {
|
|
98
|
+
ctx.waitUntil(sendToPlatforms(event, data, env));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return new Response(JSON.stringify({ success: true }), {
|
|
102
|
+
headers: { 'Content-Type': 'application/json' }
|
|
103
|
+
});
|
|
104
|
+
} catch (error) {
|
|
105
|
+
return new Response(JSON.stringify({ error: error.message }), {
|
|
106
|
+
status: 500,
|
|
107
|
+
headers: { 'Content-Type': 'application/json' }
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
async function sendToPlatforms(event, data, env) {
|
|
113
|
+
// Implementar envio para Meta, TikTok, etc.
|
|
114
|
+
// Use Promise.allSettled para resiliência
|
|
115
|
+
}
|
|
116
|
+
`;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function generateSchemaCode() {
|
|
120
|
+
return `-- CDP Edge Quantum Tier - D1 Schema
|
|
121
|
+
-- Auto-generated by cdp-edge npx
|
|
122
|
+
|
|
123
|
+
-- Tabela de sessões/identidade
|
|
124
|
+
CREATE TABLE IF NOT EXISTS identities (
|
|
125
|
+
id TEXT PRIMARY KEY,
|
|
126
|
+
user_id TEXT NOT NULL,
|
|
127
|
+
email TEXT,
|
|
128
|
+
phone TEXT,
|
|
129
|
+
created_at INTEGER NOT NULL,
|
|
130
|
+
updated_at INTEGER NOT NULL,
|
|
131
|
+
INDEX idx_user_id (user_id)
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
-- Tabela de leads
|
|
135
|
+
CREATE TABLE IF NOT EXISTS leads (
|
|
136
|
+
id TEXT PRIMARY KEY,
|
|
137
|
+
identity_id TEXT NOT NULL,
|
|
138
|
+
email TEXT,
|
|
139
|
+
phone TEXT,
|
|
140
|
+
name TEXT,
|
|
141
|
+
source TEXT,
|
|
142
|
+
created_at INTEGER NOT NULL,
|
|
143
|
+
FOREIGN KEY (identity_id) REFERENCES identities(id)
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
-- Tabela de eventos
|
|
147
|
+
CREATE TABLE IF NOT EXISTS events (
|
|
148
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
149
|
+
event_id TEXT NOT NULL UNIQUE,
|
|
150
|
+
event_type TEXT NOT NULL,
|
|
151
|
+
user_id TEXT,
|
|
152
|
+
data TEXT,
|
|
153
|
+
created_at INTEGER NOT NULL,
|
|
154
|
+
INDEX idx_event_id (event_id),
|
|
155
|
+
INDEX idx_event_type (event_type),
|
|
156
|
+
INDEX idx_user_id (user_id)
|
|
157
|
+
);
|
|
158
|
+
`;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function generateWranglerCode() {
|
|
162
|
+
return `# CDP Edge Quantum Tier - Wrangler Config
|
|
163
|
+
# Auto-generated by cdp-edge npx
|
|
164
|
+
|
|
165
|
+
name = "cdp-edge-worker"
|
|
166
|
+
main = "index.js"
|
|
167
|
+
compatibility_date = "2024-01-01"
|
|
168
|
+
|
|
169
|
+
[[d1_databases]]
|
|
170
|
+
binding = "DB"
|
|
171
|
+
database_name = "cdp-edge-db"
|
|
172
|
+
database_id = "your-database-id"
|
|
173
|
+
`;
|
|
174
|
+
}
|