mega-brain-ai 1.1.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.

Potentially problematic release.


This version of mega-brain-ai might be problematic. Click here for more details.

Files changed (308) hide show
  1. package/.claude/CLAUDE.md +155 -0
  2. package/.claude/commands/agents.md +161 -0
  3. package/.claude/commands/ask.md +117 -0
  4. package/.claude/commands/benchmark.md +224 -0
  5. package/.claude/commands/chat.md +343 -0
  6. package/.claude/commands/compare.md +116 -0
  7. package/.claude/commands/conclave.md +194 -0
  8. package/.claude/commands/config.md +133 -0
  9. package/.claude/commands/council.md +194 -0
  10. package/.claude/commands/create-agent.md +452 -0
  11. package/.claude/commands/debate.md +157 -0
  12. package/.claude/commands/documentation/create-architecture-documentation.md +175 -0
  13. package/.claude/commands/dossiers.md +180 -0
  14. package/.claude/commands/evolve.md +223 -0
  15. package/.claude/commands/extract-dna.md +170 -0
  16. package/.claude/commands/extract-knowledge.md +507 -0
  17. package/.claude/commands/inbox.md +296 -0
  18. package/.claude/commands/ingest-empresa.md +191 -0
  19. package/.claude/commands/ingest.md +182 -0
  20. package/.claude/commands/jarvis-briefing.md +67 -0
  21. package/.claude/commands/jarvis-control.md +169 -0
  22. package/.claude/commands/jarvis-full.md +181 -0
  23. package/.claude/commands/jarvis.md +212 -0
  24. package/.claude/commands/ler-drive.md +212 -0
  25. package/.claude/commands/log.md +158 -0
  26. package/.claude/commands/loop.md +133 -0
  27. package/.claude/commands/loops.md +73 -0
  28. package/.claude/commands/mission-autopilot.md +538 -0
  29. package/.claude/commands/mission.md +353 -0
  30. package/.claude/commands/process-inbox.md +148 -0
  31. package/.claude/commands/process-jarvis.md +3036 -0
  32. package/.claude/commands/process-video.md +131 -0
  33. package/.claude/commands/rag-search.md +78 -0
  34. package/.claude/commands/resume.md +33 -0
  35. package/.claude/commands/save.md +38 -0
  36. package/.claude/commands/scan-inbox.md +125 -0
  37. package/.claude/commands/setup.md +99 -0
  38. package/.claude/commands/system-digest.md +243 -0
  39. package/.claude/commands/verify.md +182 -0
  40. package/.claude/commands/view-dna.md +169 -0
  41. package/.claude/hooks/agent_doctor.py +433 -0
  42. package/.claude/hooks/agent_memory_persister.py +203 -0
  43. package/.claude/hooks/auto_formatter.py +158 -0
  44. package/.claude/hooks/checkpoint_writer.py +244 -0
  45. package/.claude/hooks/claude_md_guard.py +146 -0
  46. package/.claude/hooks/creation_validator.py +357 -0
  47. package/.claude/hooks/enforce_dual_location.py +501 -0
  48. package/.claude/hooks/enforce_plan_mode.py +220 -0
  49. package/.claude/hooks/inbox_age_alert.py +367 -0
  50. package/.claude/hooks/jarvis_briefing.py +506 -0
  51. package/.claude/hooks/ledger_updater.py +301 -0
  52. package/.claude/hooks/memory_hints_injector.py +251 -0
  53. package/.claude/hooks/memory_updater.py +202 -0
  54. package/.claude/hooks/multi_agent_hook.py +464 -0
  55. package/.claude/hooks/notification_system.py +120 -0
  56. package/.claude/hooks/pattern_analyzer.py +526 -0
  57. package/.claude/hooks/pending_tracker.py +188 -0
  58. package/.claude/hooks/post_batch_cascading.py +1740 -0
  59. package/.claude/hooks/post_output_validator.py +358 -0
  60. package/.claude/hooks/post_tool_use.py +120 -0
  61. package/.claude/hooks/post_write_validator.py +200 -0
  62. package/.claude/hooks/quality_watchdog.py +394 -0
  63. package/.claude/hooks/ralph_wiggum.py +277 -0
  64. package/.claude/hooks/session-source-sync.py +218 -0
  65. package/.claude/hooks/session_autosave_v2.py +1135 -0
  66. package/.claude/hooks/session_end.py +203 -0
  67. package/.claude/hooks/session_start.py +939 -0
  68. package/.claude/hooks/skill_indexer.py +48 -0
  69. package/.claude/hooks/skill_router.py +358 -0
  70. package/.claude/hooks/stop_hook_completeness.py +178 -0
  71. package/.claude/hooks/subagent_tracker.py +163 -0
  72. package/.claude/hooks/token_checkpoint.py +584 -0
  73. package/.claude/hooks/user_prompt_submit.py +125 -0
  74. package/.claude/rules/ANTHROPIC-STANDARDS.md +384 -0
  75. package/.claude/rules/CLAUDE-LITE.md +201 -0
  76. package/.claude/rules/RULE-GROUP-1.md +320 -0
  77. package/.claude/rules/RULE-GROUP-2.md +307 -0
  78. package/.claude/rules/RULE-GROUP-3.md +248 -0
  79. package/.claude/rules/RULE-GROUP-4.md +427 -0
  80. package/.claude/rules/RULE-GROUP-5.md +388 -0
  81. package/.claude/rules/RULE-GROUP-6.md +387 -0
  82. package/.claude/rules/logging.md +53 -0
  83. package/.claude/rules/mcp-governance.md +128 -0
  84. package/.claude/rules/pipeline.md +60 -0
  85. package/.claude/rules/state-management.md +93 -0
  86. package/.claude/scripts/apply-tags.py +77 -0
  87. package/.claude/scripts/batch-extract-transcriptions.py +132 -0
  88. package/.claude/scripts/build-complete-index.py +250 -0
  89. package/.claude/scripts/build-planilha-index.py +170 -0
  90. package/.claude/scripts/complete-tag-matching.py +250 -0
  91. package/.claude/scripts/deduplicate-inbox.py +139 -0
  92. package/.claude/scripts/docx-xml-extractor.py +141 -0
  93. package/.claude/scripts/extract-docx-text.py +58 -0
  94. package/.claude/scripts/extract-single-transcription.py +74 -0
  95. package/.claude/scripts/extract_docx_from_gdrive.py +77 -0
  96. package/.claude/scripts/organized-downloader.py +246 -0
  97. package/.claude/scripts/planilha-tagger.py +187 -0
  98. package/.claude/scripts/revert-tags.py +70 -0
  99. package/.claude/scripts/source-sync.py +265 -0
  100. package/.claude/scripts/tag-inbox-files.py +276 -0
  101. package/.claude/scripts/tag-inbox-v2.py +253 -0
  102. package/.claude/scripts/test-extraction.py +35 -0
  103. package/.claude/scripts/test-full-extraction.py +74 -0
  104. package/.claude/skills/00-SKILL-CREATOR/SKILL.md +186 -0
  105. package/.claude/skills/01-SKILL-DOCS-MEGABRAIN/SKILL.md +251 -0
  106. package/.claude/skills/02-SKILL-PYTHON-MEGABRAIN/SKILL.md +323 -0
  107. package/.claude/skills/03-SKILL-AGENT-CREATION/SKILL.md +374 -0
  108. package/.claude/skills/04-SKILL-KNOWLEDGE-EXTRACTION/SKILL.md +318 -0
  109. package/.claude/skills/05-SKILL-PIPELINE-JARVIS/SKILL.md +430 -0
  110. package/.claude/skills/06-SKILL-BRAINSTORMING/SKILL.md +72 -0
  111. package/.claude/skills/07-SKILL-DISPATCHING-PARALLEL-AGENTS/SKILL.md +193 -0
  112. package/.claude/skills/08-SKILL-EXECUTING-PLANS/SKILL.md +114 -0
  113. package/.claude/skills/09-SKILL-WRITING-PLANS/SKILL.md +184 -0
  114. package/.claude/skills/10-SKILL-VERIFICATION-BEFORE-COMPLETION/SKILL.md +130 -0
  115. package/.claude/skills/11-SKILL-USING-SUPERPOWERS/SKILL.md +105 -0
  116. package/.claude/skills/DETECTION-PROTOCOL.md +217 -0
  117. package/.claude/skills/README.md +240 -0
  118. package/.claude/skills/SKILL-REGISTRY.md +284 -0
  119. package/.claude/skills/SKILL-SUGGESTIONS.md +114 -0
  120. package/.claude/skills/_TEMPLATES/SKILL-WRITER-GUIDE.md +385 -0
  121. package/.claude/skills/chronicler/SKILL.md +146 -0
  122. package/.claude/skills/chronicler/chronicler_core.py +468 -0
  123. package/.claude/skills/code-review/SKILL.md +160 -0
  124. package/.claude/skills/council/SKILL.md +210 -0
  125. package/.claude/skills/executor/SKILL.md +161 -0
  126. package/.claude/skills/fase-2-5-tagging/SKILL.md +182 -0
  127. package/.claude/skills/feature-dev/SKILL.md +154 -0
  128. package/.claude/skills/finance-agent/SKILL.md +137 -0
  129. package/.claude/skills/frontend-design/SKILL.md +165 -0
  130. package/.claude/skills/gdrive-transcription-downloader/SKILL.md +249 -0
  131. package/.claude/skills/gemini-fallback/SKILL.md +67 -0
  132. package/.claude/skills/gemini-fallback/gemini_fetch.py +0 -0
  133. package/.claude/skills/gha/SKILL.md +96 -0
  134. package/.claude/skills/gha/gha_diagnostic.py +227 -0
  135. package/.claude/skills/github-workflow/SKILL.md +190 -0
  136. package/.claude/skills/hookify/SKILL.md +134 -0
  137. package/.claude/skills/hybrid-source-reading/SKILL.md +265 -0
  138. package/.claude/skills/jarvis/SKILL.md +546 -0
  139. package/.claude/skills/jarvis-briefing/SKILL.md +340 -0
  140. package/.claude/skills/ler-planilha/SKILL.md +281 -0
  141. package/.claude/skills/plugin-dev/SKILL.md +176 -0
  142. package/.claude/skills/pr-review-toolkit/SKILL.md +178 -0
  143. package/.claude/skills/resume/SKILL.md +61 -0
  144. package/.claude/skills/save/SKILL.md +87 -0
  145. package/.claude/skills/skill-writer/SKILL.md +153 -0
  146. package/.claude/skills/skill-writer/examples.md +191 -0
  147. package/.claude/skills/skill-writer/troubleshooting.md +205 -0
  148. package/.claude/skills/smart-download-tagger/SKILL.md +148 -0
  149. package/.claude/skills/source-sync/SKILL.md +240 -0
  150. package/.claude/skills/sync-docs/SKILL.md +193 -0
  151. package/.claude/skills/sync-docs/config.json +37 -0
  152. package/.claude/skills/sync-docs/gdrive_sync.py +358 -0
  153. package/.claude/skills/sync-docs/reauth.py +71 -0
  154. package/.claude/skills/talent-agent/SKILL.md +183 -0
  155. package/.claude/skills/verify/SKILL.md +154 -0
  156. package/.claude/skills/verify/verify_runner.py +0 -0
  157. package/.claude/skills/verify-6-levels/SKILL.md +234 -0
  158. package/.claude/templates/BATCH-LOG-TEMPLATE.md +221 -0
  159. package/.claudeignore +9 -0
  160. package/.gitattributes +4 -0
  161. package/.github/layer1-allowlist.txt +80 -0
  162. package/.github/layer2-manifest.txt +40 -0
  163. package/.gitignore +219 -0
  164. package/README.md +1210 -0
  165. package/agents/_templates/INDEX.md +741 -0
  166. package/agents/_templates/TEMPLATE-AGENT-MD-ULTRA-ROBUSTO-V3.md +2399 -0
  167. package/agents/boardroom/CHECKLIST-MASTER.md +281 -0
  168. package/agents/boardroom/INTEGRATION-GUIDE.md +406 -0
  169. package/agents/boardroom/README.md +238 -0
  170. package/agents/boardroom/config/BOARDROOM-CONFIG.md +186 -0
  171. package/agents/boardroom/config/TTS-INTEGRATION.md +258 -0
  172. package/agents/boardroom/config/VOICE-PROFILES.md +624 -0
  173. package/agents/boardroom/config/voice_mapping.json +128 -0
  174. package/agents/boardroom/scripts/audio_generator.py +375 -0
  175. package/agents/boardroom/scripts/audio_generator_edge.py +353 -0
  176. package/agents/boardroom/scripts/jarvis_boardroom_hook.py +415 -0
  177. package/agents/boardroom/scripts/notebooklm_generator.py +578 -0
  178. package/agents/boardroom/templates/EPISODE-TEMPLATE.md +367 -0
  179. package/agents/boardroom/templates/scene-templates/SCENE-AGENT-DEBATE.md +252 -0
  180. package/agents/boardroom/templates/scene-templates/SCENE-COUNCIL.md +270 -0
  181. package/agents/boardroom/templates/scene-templates/SCENE-DNA-CONSULTATION.md +126 -0
  182. package/agents/boardroom/templates/scene-templates/SCENE-QUESTION.md +174 -0
  183. package/agents/boardroom/workflows/WORKFLOW-AUDIO-GENERATION.md +421 -0
  184. package/agents/constitution/BASE-CONSTITUTION.md +254 -0
  185. package/agents/council/CRITIC.md +197 -0
  186. package/agents/council/DEVILS-ADVOCATE.md +274 -0
  187. package/agents/council/SYNTHESIZER.md +293 -0
  188. package/agents/council/advogado-do-diabo/AGENT.md +489 -0
  189. package/agents/council/advogado-do-diabo/SOUL.md +100 -0
  190. package/agents/council/critico-metodologico/AGENT.md +670 -0
  191. package/agents/council/critico-metodologico/SOUL.md +107 -0
  192. package/agents/council/sintetizador/AGENT.md +558 -0
  193. package/agents/council/sintetizador/SOUL.md +94 -0
  194. package/agents/persons/_example/AGENT-EXAMPLE.md +42 -0
  195. package/agents/persons/_example/DNA-EXAMPLE.yaml +61 -0
  196. package/agents/protocols/AGENT-COGNITION-PROTOCOL.md +779 -0
  197. package/agents/protocols/AGENT-INTEGRITY-PROTOCOL.md +692 -0
  198. package/agents/protocols/BATCH-VISUAL-PROTOCOL.md +841 -0
  199. package/agents/protocols/DNA-CONFIG-TEMPLATE.yaml +181 -0
  200. package/agents/protocols/DNA-EXTRACTION-PROTOCOL.md +370 -0
  201. package/agents/protocols/EPISTEMIC-PROTOCOL.md +333 -0
  202. package/agents/protocols/LOG-STRUCTURE-PROTOCOL.md +65 -0
  203. package/agents/protocols/MEMORY-PROTOCOL.md +567 -0
  204. package/agents/protocols/NARRATIVE-SYNTHESIS-PROTOCOL.md +278 -0
  205. package/agents/protocols/PHASE-4-VERIFICATION-CHECKPOINT.md +146 -0
  206. package/agents/protocols/SOUL-TEMPLATE.md +416 -0
  207. package/agents/protocols/TEMPLATE-EVOLUTION-PROTOCOL.md +544 -0
  208. package/agents/protocols/VISUAL-DIFF-PROTOCOL.md +159 -0
  209. package/agents/sua-empresa/README.md +44 -0
  210. package/agents/sua-empresa/_example/jds/EXAMPLE-JD.md +42 -0
  211. package/agents/sua-empresa/_example/org/EXAMPLE-ORG.md +32 -0
  212. package/agents/sua-empresa/_example/roles/EXAMPLE-ROLE.md +38 -0
  213. package/bin/cli.js +2 -0
  214. package/bin/lib/ascii-art.js +234 -0
  215. package/bin/lib/installer.js +402 -0
  216. package/bin/lib/setup-wizard.js +95 -0
  217. package/bin/lib/validate-email.js +109 -0
  218. package/bin/mega-brain.js +97 -0
  219. package/bin/push.js +342 -0
  220. package/bin/templates/env.example +38 -0
  221. package/inbox/.gitkeep +0 -0
  222. package/integrations/README.md +46 -0
  223. package/integrations/mcps/MCP-REGISTRY.md +56 -0
  224. package/integrations/mcps/excalidraw/CONFIG.md +56 -0
  225. package/integrations/mcps/gdrive/CONFIG.md +38 -0
  226. package/knowledge/dna/.gitkeep +0 -0
  227. package/knowledge/dossiers/persons/.gitkeep +0 -0
  228. package/knowledge/dossiers/persons/DOSSIER-EXAMPLE.md +49 -0
  229. package/knowledge/dossiers/system/.gitkeep +0 -0
  230. package/knowledge/dossiers/themes/.gitkeep +0 -0
  231. package/knowledge/playbooks/.gitkeep +0 -0
  232. package/knowledge/playbooks/PLAYBOOK-EXAMPLE.md +50 -0
  233. package/knowledge/sources/.gitkeep +0 -0
  234. package/logs/.gitkeep +0 -0
  235. package/package.json +128 -0
  236. package/processing/canonical/.gitkeep +0 -0
  237. package/processing/chunks/.gitkeep +0 -0
  238. package/processing/insights/.gitkeep +0 -0
  239. package/processing/narratives/.gitkeep +0 -0
  240. package/reference/CONSELHO.md +337 -0
  241. package/reference/CONTEXT7_README.md +28 -0
  242. package/reference/JARVIS-LOGGING-PROTOCOL.md +380 -0
  243. package/reference/QUICK-START.md +197 -0
  244. package/reference/README-RALPH-CASCATEAMENTO.md +207 -0
  245. package/reference/TEMPLATE-MASTER.md +727 -0
  246. package/reference/prds/prd-jarvis-mega-brain-v3.md +1305 -0
  247. package/reference/templates/phase5/IMPLEMENTATION-GUIDE.md +355 -0
  248. package/reference/templates/phase5/MOGA-BRAIN-PHASE5-TEMPLATES.md +1284 -0
  249. package/reference/templates/phase5/README.md +165 -0
  250. package/reference/workflow-claude-code-boris-cherny-continuous-claude.md +2232 -0
  251. package/system/database/001_moneyclub_buyers.sql +160 -0
  252. package/system/database/002_premium_token.sql +97 -0
  253. package/system/database/apply-migration.mjs +129 -0
  254. package/system/docs/MEGA-BRAIN-DEMO-COMPLETA.md +1226 -0
  255. package/system/docs/MEGA-BRAIN-MANIFESTO-COMPLETO.md +1054 -0
  256. package/system/docs/MOGA-BRAIN-EXPLICACAO-COMPLETA.md +791 -0
  257. package/system/docs/STRATEGIC-INTEGRATION-GUIDE.md +725 -0
  258. package/system/docs/architecture/01-system-context.md +136 -0
  259. package/system/docs/architecture/02-components.md +225 -0
  260. package/system/docs/architecture/03-data-flow.md +235 -0
  261. package/system/docs/architecture/04-integrations.md +283 -0
  262. package/system/docs/architecture/README.md +71 -0
  263. package/system/docs/architecture/diagrams/component-diagram.mmd +50 -0
  264. package/system/docs/architecture/diagrams/data-flow.mmd +39 -0
  265. package/system/docs/architecture/diagrams/system-overview.mmd +68 -0
  266. package/system/protocols/AGENT-AUTHORITY.md +217 -0
  267. package/system/protocols/CONSTITUICAO-BASE.md +115 -0
  268. package/system/protocols/CONSTITUTION.md +231 -0
  269. package/system/protocols/GOVERNANCE-MAP.md +123 -0
  270. package/system/protocols/HOOK-SECURITY-THREAT-MODEL.md +152 -0
  271. package/system/protocols/ORQUESTRACAO-PROTOCOL.md +215 -0
  272. package/system/protocols/_archive/CHUNKING-PROTOCOL.md +207 -0
  273. package/system/protocols/_archive/ENTITY-RESOLUTION-PROTOCOL.md +269 -0
  274. package/system/protocols/_archive/INSIGHT-EXTRACTION-PROTOCOL.md +257 -0
  275. package/system/protocols/_archive/NARRATIVE-SYNTHESIS-PROTOCOL.md +290 -0
  276. package/system/protocols/agents/AGENT-INTERACTION.md +315 -0
  277. package/system/protocols/agents/CORTEX-PROTOCOL.md +520 -0
  278. package/system/protocols/agents/EPISTEMIC-PROTOCOL.md +465 -0
  279. package/system/protocols/agents/MEMORY-PROTOCOL.md +366 -0
  280. package/system/protocols/agents/WAR-ROOM.md +355 -0
  281. package/system/protocols/company/COMPANY-DOCUMENT-PROTOCOL.md +793 -0
  282. package/system/protocols/company/COMPANY-ENRICHMENT-PROTOCOL.md +679 -0
  283. package/system/protocols/conclave/CONCLAVE-LOG-TEMPLATE-v2.md +309 -0
  284. package/system/protocols/conclave/CONCLAVE-PROTOCOL.md +518 -0
  285. package/system/protocols/conclave/DEBATE-DYNAMICS-CONFIG.yaml +322 -0
  286. package/system/protocols/conclave/DEBATE-DYNAMICS-PROTOCOL.md +613 -0
  287. package/system/protocols/conclave/DEBATE-PROTOCOL.md +323 -0
  288. package/system/protocols/council/COUNCIL-LOG-TEMPLATE-v2.md +309 -0
  289. package/system/protocols/council/COUNCIL-PROTOCOL.md +518 -0
  290. package/system/protocols/council/DEBATE-DYNAMICS-CONFIG.yaml +322 -0
  291. package/system/protocols/council/DEBATE-DYNAMICS-PROTOCOL.md +613 -0
  292. package/system/protocols/council/DEBATE-PROTOCOL.md +323 -0
  293. package/system/protocols/dna/DNA-EXTRACTION-PROTOCOL.md +1214 -0
  294. package/system/protocols/dna/ENRICHMENT-PROTOCOL.md +408 -0
  295. package/system/protocols/dna/REASONING-MODEL-PROTOCOL.md +331 -0
  296. package/system/protocols/pipeline/DOSSIER-COMPILATION-PROTOCOL.md +790 -0
  297. package/system/protocols/pipeline/NARRATIVE-METABOLISM-PROTOCOL.md +292 -0
  298. package/system/protocols/pipeline/PIPELINE-JARVIS-v2.1.md +606 -0
  299. package/system/protocols/pipeline/PROMPT-1.1-CHUNKING.md +154 -0
  300. package/system/protocols/pipeline/PROMPT-1.2-ENTITY-RESOLUTION.md +186 -0
  301. package/system/protocols/pipeline/PROMPT-2.1-DNA-TAGS-INCREMENT.md +208 -0
  302. package/system/protocols/pipeline/PROMPT-2.1-INSIGHT-EXTRACTION.md +191 -0
  303. package/system/protocols/pipeline/PROMPT-3.1-NARRATIVE-SYNTHESIS.md +331 -0
  304. package/system/protocols/pipeline/SOURCES-COMPILATION-PROTOCOL.md +340 -0
  305. package/system/protocols/system/AUTO-LOG-PROTOCOL.md +369 -0
  306. package/system/protocols/system/CHECKPOINT-ENFORCEMENT.md +176 -0
  307. package/system/protocols/system/ENFORCEMENT.md +435 -0
  308. package/system/protocols/system/LOG-TEMPLATES.md +1068 -0
@@ -0,0 +1,402 @@
1
+ /**
2
+ * Mega Brain - Installer Module
3
+ * Handles the full installation flow:
4
+ * 1. Edition selection (PREMIUM vs Community)
5
+ * 2. Email validation (PREMIUM only)
6
+ * 3. Directory setup
7
+ * 4. File copy (shell)
8
+ * 5. Premium content fetch (if validated)
9
+ * 6. Post-install summary
10
+ */
11
+
12
+ import { createInterface } from 'readline';
13
+ import { existsSync, mkdirSync, cpSync, writeFileSync, readFileSync } from 'fs';
14
+ import { resolve, dirname, join } from 'path';
15
+ import { fileURLToPath } from 'url';
16
+ import { execSync } from 'child_process';
17
+ import { validateEmail, getErrorMessage, resetAttempts } from './validate-email.js';
18
+ import { showStep, showSuccess, showError, showPostInstall } from './ascii-art.js';
19
+
20
+ const __filename = fileURLToPath(import.meta.url);
21
+ const __dirname = dirname(__filename);
22
+ const TEMPLATE_ROOT = resolve(__dirname, '..', '..');
23
+
24
+ function prompt(question) {
25
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
26
+ return new Promise((resolve) => {
27
+ rl.question(question, (answer) => {
28
+ rl.close();
29
+ resolve(answer.trim());
30
+ });
31
+ });
32
+ }
33
+
34
+ /**
35
+ * Main installer flow
36
+ */
37
+ export async function runInstaller(version) {
38
+ console.log('\n Bem-vindo ao instalador do Mega Brain!\n');
39
+
40
+ // ──────────────────────────────────────────────────────────
41
+ // STEP 1: Edition Selection
42
+ // ──────────────────────────────────────────────────────────
43
+ showStep(1, 5, 'Selecione sua Edição');
44
+
45
+ const isPremium = await selectEdition();
46
+
47
+ // ──────────────────────────────────────────────────────────
48
+ // STEP 2: Email Validation (PREMIUM only)
49
+ // ──────────────────────────────────────────────────────────
50
+ let buyerName = '';
51
+ let premiumToken = null;
52
+
53
+ if (isPremium) {
54
+ showStep(2, 5, 'Validação de Acesso Premium');
55
+
56
+ let validated = false;
57
+ resetAttempts();
58
+
59
+ while (!validated) {
60
+ const email = await prompt(' Digite o email cadastrado no MoneyClub: ');
61
+
62
+ if (!email) {
63
+ showError('Email não pode estar vazio.');
64
+ continue;
65
+ }
66
+
67
+ console.log(' Verificando...');
68
+ const result = await validateEmail(email);
69
+
70
+ if (result.valid) {
71
+ buyerName = result.name || 'Membro';
72
+ premiumToken = result.premium_token || null;
73
+ console.log(`\n Bem-vindo, ${buyerName}! Acesso PREMIUM confirmado.`);
74
+ if (result.installCount > 1) {
75
+ console.log(` (Esta é a sua instalação #${result.installCount})`);
76
+ }
77
+ validated = true;
78
+ } else {
79
+ showError(getErrorMessage(result.reason));
80
+ if (result.reason === 'max_attempts_exceeded') {
81
+ process.exit(1);
82
+ }
83
+ const retry = await prompt(' Tentar novamente? (s/n): ');
84
+ if (retry.toLowerCase() !== 's') {
85
+ console.log('\n Instalação cancelada.\n');
86
+ process.exit(0);
87
+ }
88
+ }
89
+ }
90
+ } else {
91
+ showStep(2, 5, 'Modo Community — Pulando validação');
92
+ console.log('\n Instalando versão Community (shell sem conteúdo premium).');
93
+ buyerName = 'Community User';
94
+ }
95
+
96
+ // ──────────────────────────────────────────────────────────
97
+ // STEP 3: Installation Directory
98
+ // ──────────────────────────────────────────────────────────
99
+ showStep(3, 5, 'Diretório de Instalação');
100
+
101
+ console.log('\n Onde deseja instalar o Mega Brain?');
102
+ console.log(' [1] Diretório atual (.)');
103
+ console.log(' [2] Novo diretório (./mega-brain)');
104
+ console.log(' [3] Caminho personalizado\n');
105
+
106
+ const choice = await prompt(' Escolha (1/2/3): ');
107
+
108
+ let targetDir;
109
+ switch (choice) {
110
+ case '1':
111
+ targetDir = process.cwd();
112
+ break;
113
+ case '3': {
114
+ const customPath = await prompt(' Digite o caminho completo: ');
115
+ targetDir = resolve(customPath);
116
+ break;
117
+ }
118
+ case '2':
119
+ default:
120
+ targetDir = resolve(process.cwd(), 'mega-brain');
121
+ break;
122
+ }
123
+
124
+ if (existsSync(join(targetDir, '.claude', 'CLAUDE.md'))) {
125
+ const overwrite = await prompt(`\n Mega Brain ja existe em ${targetDir}. Sobrescrever? (s/n): `);
126
+ if (overwrite.toLowerCase() !== 's') {
127
+ console.log('\n Instalação cancelada.\n');
128
+ process.exit(0);
129
+ }
130
+ }
131
+
132
+ // ──────────────────────────────────────────────────────────
133
+ // STEP 4: Install Shell (Layer 1 — always)
134
+ // ──────────────────────────────────────────────────────────
135
+ showStep(4, 5, 'Instalando estrutura base...');
136
+
137
+ try {
138
+ if (!existsSync(targetDir)) {
139
+ mkdirSync(targetDir, { recursive: true });
140
+ }
141
+
142
+ // Copy template files (excluding node_modules, .git, bin/)
143
+ const excludeDirs = ['.git', 'node_modules', 'bin'];
144
+ copyTemplateFiles(TEMPLATE_ROOT, targetDir, excludeDirs);
145
+
146
+ // Create .env from template
147
+ const envTemplate = resolve(__dirname, '..', 'templates', 'env.example');
148
+ if (existsSync(envTemplate)) {
149
+ const envContent = readFileSync(envTemplate, 'utf-8');
150
+ writeFileSync(join(targetDir, '.env.example'), envContent);
151
+ }
152
+
153
+ // Ensure all directories exist with .gitkeep
154
+ ensureDirectories(targetDir);
155
+
156
+ console.log('\n Estrutura base instalada com sucesso!');
157
+ } catch (err) {
158
+ showError(`Erro ao instalar: ${err.message}`);
159
+ process.exit(1);
160
+ }
161
+
162
+ // ──────────────────────────────────────────────────────────
163
+ // STEP 5: Fetch Premium Content (Layer 2 — PREMIUM only)
164
+ // ──────────────────────────────────────────────────────────
165
+ if (isPremium && premiumToken) {
166
+ showStep(5, 5, 'Baixando conteúdo PREMIUM...');
167
+
168
+ try {
169
+ await fetchPremiumContent(targetDir, premiumToken);
170
+ console.log('\n Conteúdo PREMIUM instalado com sucesso!');
171
+ } catch (err) {
172
+ console.log(`\n AVISO: Não foi possível baixar conteúdo premium: ${err.message}`);
173
+ console.log(' Você pode tentar novamente depois com: mega-brain upgrade');
174
+ }
175
+ } else {
176
+ showStep(5, 5, 'Instalação Completa');
177
+ }
178
+
179
+ // ──────────────────────────────────────────────────────────
180
+ // Summary
181
+ // ──────────────────────────────────────────────────────────
182
+ if (isPremium) {
183
+ showPostInstallPremium(buyerName);
184
+ } else {
185
+ showPostInstallCommunity();
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Edition selection with marketing copy
191
+ */
192
+ async function selectEdition() {
193
+ console.log(`
194
+ ┌──────────────────────────────────────────────────────────────────────┐
195
+ │ │
196
+ │ [1] PREMIUM — Membro MoneyClub │
197
+ │ │
198
+ │ O sistema COMPLETO com o cérebro ligado. │
199
+ │ Inclui Mentes Clonadas de experts reais, Agentes │
200
+ │ Operacionais que trabalham no seu negócio, +$500 mil │
201
+ │ dólares em conteúdo pago já processado e pronto. │
202
+ │ │
203
+ │ → Clones cognitivos que PENSAM como os experts │
204
+ │ → C-Levels (CRO, CFO, CMO, COO) operando 24/7 │
205
+ │ → Squad de Vendas (Closer, BDR, SDS, LNS) │
206
+ │ → Conclave de Deliberação Estratégica │
207
+ │ → Playbooks e Frameworks extraídos de +50 fontes pagas │
208
+ │ → Pipeline JARVIS de processamento inteligente │
209
+ │ │
210
+ │ Requer email cadastrado no MoneyClub. │
211
+ │ │
212
+ ├──────────────────────────────────────────────────────────────────────┤
213
+ │ │
214
+ │ [2] COMMUNITY — Máquina sem Cérebro │
215
+ │ │
216
+ │ A estrutura vazia. Comandos, skills e protocolos │
217
+ │ do JARVIS, mas SEM conteúdo processado. │
218
+ │ Você precisará alimentar tudo do zero. │
219
+ │ │
220
+ │ → Estrutura de pastas e comandos │
221
+ │ → Skills e hooks do Claude Code │
222
+ │ → Templates vazios para começar │
223
+ │ → Sem agentes, sem playbooks, sem DNAs │
224
+ │ │
225
+ └──────────────────────────────────────────────────────────────────────┘
226
+ `);
227
+
228
+ const choice = await prompt(' Sua escolha (1/2): ');
229
+ return choice === '1';
230
+ }
231
+
232
+ /**
233
+ * Fetch premium content from private repo using token
234
+ *
235
+ * SECURITY DESIGN:
236
+ * - Token is passed via git http.extraheader, NEVER embedded in the clone URL.
237
+ * This means .git/config inside the temp clone does NOT contain the token.
238
+ * - ZERO recursive delete operations (rm -rf / rmSync recursive).
239
+ * The .layer-sync/ directory is left in place and listed in .gitignore.
240
+ * This installer runs on other people's machines — we never risk data loss.
241
+ */
242
+ async function fetchPremiumContent(targetDir, token) {
243
+ const premiumRepo = 'https://github.com/thiagofinch/mega-brain-premium.git';
244
+ const tempDir = join(targetDir, '.layer-sync', 'premium-fetch');
245
+
246
+ // Safety: ensure tempDir is strictly INSIDE targetDir (prevent path traversal)
247
+ const resolvedTemp = resolve(tempDir);
248
+ const resolvedTarget = resolve(targetDir);
249
+ if (!resolvedTemp.startsWith(resolvedTarget + '/') && !resolvedTemp.startsWith(resolvedTarget + '\\')) {
250
+ throw new Error('Erro interno: caminho de download fora do diretório de instalação.');
251
+ }
252
+
253
+ if (!existsSync(dirname(tempDir))) {
254
+ mkdirSync(dirname(tempDir), { recursive: true });
255
+ }
256
+
257
+ // If a previous clone exists, reuse it (no delete + re-clone)
258
+ if (!existsSync(join(tempDir, '.git'))) {
259
+ // Use http.extraheader so the token is NEVER written to .git/config.
260
+ // The -c flag is a runtime-only override — not persisted to disk.
261
+ const base64Auth = Buffer.from(`x-access-token:${token}`).toString('base64');
262
+
263
+ execSync(
264
+ `git -c "http.https://github.com/.extraheader=AUTHORIZATION: basic ${base64Auth}" clone --depth 1 "${premiumRepo}" "${tempDir}"`,
265
+ {
266
+ stdio: 'pipe',
267
+ encoding: 'utf-8',
268
+ timeout: 120000,
269
+ }
270
+ );
271
+ } else {
272
+ console.log(' Download anterior encontrado, reutilizando...');
273
+ }
274
+
275
+ // Copy premium content over the shell (merge, not replace)
276
+ const excludeDirs = ['.git', 'node_modules', 'bin', '.layer-sync'];
277
+ cpSync(tempDir, targetDir, {
278
+ recursive: true,
279
+ force: true,
280
+ filter: (src) => {
281
+ for (const exclude of excludeDirs) {
282
+ if (src.includes(`${exclude}/`) || src.includes(`${exclude}\\`) || src.endsWith(exclude)) {
283
+ return false;
284
+ }
285
+ }
286
+ return true;
287
+ },
288
+ });
289
+
290
+ console.log(' Conteúdo premium integrado na estrutura.');
291
+
292
+ // NOTE: .layer-sync/ is intentionally NOT deleted.
293
+ // It is listed in .gitignore and contains no sensitive data
294
+ // (token was never written to disk thanks to http.extraheader).
295
+ // We NEVER use recursive delete operations on user machines.
296
+ }
297
+
298
+ /**
299
+ * Post-install message for PREMIUM users
300
+ */
301
+ function showPostInstallPremium(name) {
302
+ console.log(`
303
+ ┌──────────────────────────────────────────────────────────────┐
304
+ │ │
305
+ │ Mega Brain PREMIUM instalado com sucesso! │
306
+ │ │
307
+ │ Bem-vindo ao sistema completo, ${(name + '!').padEnd(25)} │
308
+ │ │
309
+ │ Próximo passo: │
310
+ │ Abra o projeto no Claude Code e o JARVIS │
311
+ │ irá se apresentar automaticamente. │
312
+ │ │
313
+ │ Comandos iniciais: │
314
+ │ /conclave "sua pergunta" — Deliberação estratégica │
315
+ │ /ingest [URL/arquivo] — Alimentar o sistema │
316
+ │ /ask [expert] — Consultar clone mental │
317
+ │ │
318
+ └──────────────────────────────────────────────────────────────┘
319
+ `);
320
+ }
321
+
322
+ /**
323
+ * Post-install message for Community users
324
+ */
325
+ function showPostInstallCommunity() {
326
+ console.log(`
327
+ ┌──────────────────────────────────────────────────────────────┐
328
+ │ │
329
+ │ Mega Brain COMMUNITY instalado com sucesso! │
330
+ │ │
331
+ │ Você tem a estrutura. Agora precisa do cérebro. │
332
+ │ │
333
+ │ Para ativar o PREMIUM a qualquer momento: │
334
+ │ mega-brain upgrade │
335
+ │ │
336
+ │ Ou comece do zero alimentando o sistema: │
337
+ │ /ingest [URL do YouTube] — Importar conteúdo │
338
+ │ /process-jarvis — Processar pipeline │
339
+ │ │
340
+ │ moneyclub.thiagofinch.com — Acesse o PREMIUM completo │
341
+ │ │
342
+ └──────────────────────────────────────────────────────────────┘
343
+ `);
344
+ }
345
+
346
+ function copyTemplateFiles(source, target, excludeDirs) {
347
+ try {
348
+ cpSync(source, target, {
349
+ recursive: true,
350
+ filter: (src) => {
351
+ for (const exclude of excludeDirs) {
352
+ if (src.includes(`${exclude}\\`) || src.includes(`${exclude}/`) || src.endsWith(exclude)) {
353
+ return false;
354
+ }
355
+ }
356
+ return true;
357
+ },
358
+ });
359
+ } catch (err) {
360
+ throw new Error(`Erro ao copiar arquivos: ${err.message}. Certifique-se de usar Node.js 18+.`);
361
+ }
362
+ }
363
+
364
+ function ensureDirectories(root) {
365
+ const dirs = [
366
+ 'inbox',
367
+ 'processing/chunks',
368
+ 'processing/canonical',
369
+ 'processing/insights',
370
+ 'processing/narratives',
371
+ 'knowledge/dossiers/persons',
372
+ 'knowledge/dossiers/themes',
373
+ 'knowledge/dossiers/system',
374
+ 'knowledge/sources',
375
+ 'knowledge/playbooks',
376
+ 'knowledge/dna',
377
+ 'logs',
378
+ 'logs/sessions',
379
+ 'logs/batches',
380
+ 'logs/decisions',
381
+ 'agents/persons',
382
+ 'agents/cargo',
383
+ 'agents/sua-empresa/org',
384
+ 'agents/sua-empresa/roles',
385
+ 'agents/sua-empresa/jds',
386
+ 'agents/sua-empresa/operations',
387
+ 'agents/sua-empresa/metrics',
388
+ 'agents/sua-empresa/memory',
389
+ 'agents/sua-empresa/sow',
390
+ ];
391
+
392
+ for (const dir of dirs) {
393
+ const fullPath = join(root, dir);
394
+ if (!existsSync(fullPath)) {
395
+ mkdirSync(fullPath, { recursive: true });
396
+ }
397
+ const gitkeep = join(fullPath, '.gitkeep');
398
+ if (!existsSync(gitkeep)) {
399
+ writeFileSync(gitkeep, '');
400
+ }
401
+ }
402
+ }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Mega Brain - Setup Wizard
3
+ * First-time configuration guide for Claude Code /setup command
4
+ * This module is referenced by the /setup slash command but executes within Claude Code context
5
+ */
6
+
7
+ export const SETUP_STEPS = {
8
+ 1: {
9
+ name: 'Verificar Python',
10
+ command: 'python --version || python3 --version',
11
+ required: true,
12
+ minVersion: '3.10',
13
+ instructions: 'Python 3.10+ necessário. Instale em https://python.org',
14
+ },
15
+ 2: {
16
+ name: 'Verificar Node.js',
17
+ command: 'node --version',
18
+ required: true,
19
+ minVersion: '18',
20
+ instructions: 'Node.js 18+ necessário. Instale em https://nodejs.org',
21
+ },
22
+ 3: {
23
+ name: 'Instalar Dependências Python',
24
+ command: 'pip install -r requirements.txt',
25
+ required: false,
26
+ fallback: 'pip install --user -r requirements.txt',
27
+ },
28
+ 4: {
29
+ name: 'Configurar API Keys',
30
+ keys: [
31
+ {
32
+ name: 'OPENAI_API_KEY',
33
+ required: true,
34
+ description: 'A API da OpenAI fornece o Whisper para transcrição de vídeos do YouTube e áudios. Essencial para o /ingest funcionar com vídeos.',
35
+ url: 'https://platform.openai.com/api-keys',
36
+ prefix: 'sk-',
37
+ },
38
+ {
39
+ name: 'VOYAGE_API_KEY',
40
+ required: false,
41
+ description: 'Voyage AI fornece busca semântica avançada no knowledge base. Permite que o Conclave e agentes encontrem evidências nos materiais inseridos.',
42
+ url: 'https://dash.voyageai.com/api-keys',
43
+ },
44
+ {
45
+ name: 'ANTHROPIC_API_KEY',
46
+ required: false,
47
+ description: 'Não necessária se você usa Claude Code via assinatura Max ou Pro (acesso ao Claude já incluído). Apenas para scripts autônomos fora do Claude Code.',
48
+ url: 'https://console.anthropic.com/settings/keys',
49
+ prefix: 'sk-ant-',
50
+ },
51
+ {
52
+ name: 'GOOGLE_CLIENT_ID',
53
+ required: false,
54
+ description: 'Para importar conteúdos diretamente do Google Drive (PDFs, documentos, planilhas).',
55
+ url: 'https://console.cloud.google.com/apis/credentials',
56
+ companion: 'GOOGLE_CLIENT_SECRET',
57
+ },
58
+ ],
59
+ },
60
+ 5: {
61
+ name: 'Validar Configuração',
62
+ description: 'Testa conexões com os serviços configurados.',
63
+ },
64
+ 6: {
65
+ name: 'Gerar .env',
66
+ description: 'Salva configuração final no arquivo .env',
67
+ },
68
+ };
69
+
70
+ export const ENV_TEMPLATE = `# Mega Brain - Configuration
71
+ # Generated by /setup wizard
72
+
73
+ # === REQUIRED ===
74
+ # OpenAI API (Whisper) - Transcrição de vídeos e áudios
75
+ # Essencial para /ingest com vídeos do YouTube
76
+ # Obtenha em: https://platform.openai.com/api-keys
77
+ OPENAI_API_KEY=
78
+
79
+ # === RECOMMENDED ===
80
+ # Voyage AI - Busca semântica avançada no knowledge base
81
+ # Permite que Conclave e agentes encontrem evidências nos materiais
82
+ # Obtenha em: https://dash.voyageai.com/api-keys
83
+ VOYAGE_API_KEY=
84
+
85
+ # === OPTIONAL ===
86
+ # Anthropic API (Claude) - Não necessária com Claude Code Max/Pro
87
+ # Apenas para scripts autônomos fora do Claude Code
88
+ # Obtenha em: https://console.anthropic.com/settings/keys
89
+ ANTHROPIC_API_KEY=
90
+
91
+ # Google Drive Import - Importar conteúdos do Google Drive
92
+ # Configure em: https://console.cloud.google.com/apis/credentials
93
+ GOOGLE_CLIENT_ID=
94
+ GOOGLE_CLIENT_SECRET=
95
+ `;
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Mega Brain - Email Validation Module
3
+ * Validates MoneyClub buyer emails via Supabase RPC
4
+ *
5
+ * Uses native fetch (Node.js 18+) instead of Supabase client
6
+ * to avoid assertion errors from dangling WebSocket handles.
7
+ *
8
+ * On successful validation, returns a premium_token for
9
+ * accessing the premium content repository.
10
+ */
11
+
12
+ // Supabase config - anon key is public by design (RLS + RPC protected)
13
+ const SUPABASE_URL = 'https://lgbzktgbhowxiwppycbi.supabase.co';
14
+ const SUPABASE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImxnYnprdGdiaG93eGl3cHB5Y2JpIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzE0NjgxMTUsImV4cCI6MjA4NzA0NDExNX0.fyidwl35q6rmj_AqaoW2rN_a1xCaDX2_LuKgwO2nTU4';
15
+
16
+ const TIMEOUT_MS = 10000;
17
+ const MAX_ATTEMPTS = 3;
18
+
19
+ let attemptCount = 0;
20
+
21
+ /**
22
+ * Validate a buyer email against MoneyClub database
23
+ * @param {string} email - Email to validate
24
+ * @returns {Promise<{valid: boolean, name?: string, reason?: string, installCount?: number, premium_token?: string}>}
25
+ */
26
+ export async function validateEmail(email) {
27
+ if (attemptCount >= MAX_ATTEMPTS) {
28
+ return {
29
+ valid: false,
30
+ reason: 'max_attempts_exceeded',
31
+ };
32
+ }
33
+
34
+ attemptCount++;
35
+
36
+ if (!email || !email.includes('@')) {
37
+ return {
38
+ valid: false,
39
+ reason: 'invalid_email_format',
40
+ };
41
+ }
42
+
43
+ try {
44
+ const response = await fetch(
45
+ `${SUPABASE_URL}/rest/v1/rpc/validate_buyer_email`,
46
+ {
47
+ method: 'POST',
48
+ headers: {
49
+ 'apikey': SUPABASE_ANON_KEY,
50
+ 'Authorization': `Bearer ${SUPABASE_ANON_KEY}`,
51
+ 'Content-Type': 'application/json',
52
+ },
53
+ body: JSON.stringify({ buyer_email: email.trim().toLowerCase() }),
54
+ signal: AbortSignal.timeout(TIMEOUT_MS),
55
+ }
56
+ );
57
+
58
+ if (!response.ok) {
59
+ return {
60
+ valid: false,
61
+ reason: 'validation_error',
62
+ };
63
+ }
64
+
65
+ const data = await response.json();
66
+
67
+ return {
68
+ valid: data.valid,
69
+ name: data.name || null,
70
+ reason: data.reason || null,
71
+ installCount: data.install_count || 0,
72
+ premium_token: data.premium_token || null,
73
+ };
74
+ } catch (err) {
75
+ if (err.name === 'TimeoutError' || err.name === 'AbortError') {
76
+ return {
77
+ valid: false,
78
+ reason: 'timeout',
79
+ };
80
+ }
81
+
82
+ return {
83
+ valid: false,
84
+ reason: 'network_error',
85
+ };
86
+ }
87
+ }
88
+
89
+ /**
90
+ * Get user-friendly error messages in Portuguese
91
+ * @param {string} reason - Error reason code
92
+ * @returns {string} Human-readable message
93
+ */
94
+ export function getErrorMessage(reason) {
95
+ const messages = {
96
+ email_not_found: 'Este email não está cadastrado no MoneyClub.\nAcesse moneyclub.thiagofinch.com para adquirir o produto.',
97
+ invalid_email_format: 'Formato de email inválido. Verifique e tente novamente.',
98
+ max_attempts_exceeded: 'Número máximo de tentativas excedido. Reinicie o instalador.',
99
+ timeout: 'Tempo de conexão esgotado. Verifique sua internet e tente novamente.',
100
+ network_error: 'Erro de conexão. Verifique sua internet e tente novamente.',
101
+ validation_error: 'Erro na validação. Tente novamente em alguns minutos.',
102
+ };
103
+
104
+ return messages[reason] || 'Erro desconhecido. Tente novamente.';
105
+ }
106
+
107
+ export function resetAttempts() {
108
+ attemptCount = 0;
109
+ }