mega-brain-ai 1.3.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.
Files changed (510) hide show
  1. package/.antigravity/README.md +46 -0
  2. package/.antigravity/rules/.gitkeep +0 -0
  3. package/.antigravity/rules/mega-brain.md +39 -0
  4. package/.claude/CLAUDE.md +172 -0
  5. package/.claude/agents.yaml +44 -0
  6. package/.claude/commands/agents.md +161 -0
  7. package/.claude/commands/ask.md +117 -0
  8. package/.claude/commands/benchmark.md +224 -0
  9. package/.claude/commands/chat.md +343 -0
  10. package/.claude/commands/compare.md +116 -0
  11. package/.claude/commands/conclave.md +196 -0
  12. package/.claude/commands/config.md +133 -0
  13. package/.claude/commands/create-agent.md +467 -0
  14. package/.claude/commands/debate.md +159 -0
  15. package/.claude/commands/documentation/create-architecture-documentation.md +175 -0
  16. package/.claude/commands/dossiers.md +180 -0
  17. package/.claude/commands/evolve.md +223 -0
  18. package/.claude/commands/extract-dna.md +172 -0
  19. package/.claude/commands/extract-knowledge.md +507 -0
  20. package/.claude/commands/gsd/add-phase.md +43 -0
  21. package/.claude/commands/gsd/add-tests.md +41 -0
  22. package/.claude/commands/gsd/add-todo.md +47 -0
  23. package/.claude/commands/gsd/audit-milestone.md +36 -0
  24. package/.claude/commands/gsd/check-todos.md +45 -0
  25. package/.claude/commands/gsd/cleanup.md +18 -0
  26. package/.claude/commands/gsd/complete-milestone.md +136 -0
  27. package/.claude/commands/gsd/debug.md +167 -0
  28. package/.claude/commands/gsd/discuss-phase.md +83 -0
  29. package/.claude/commands/gsd/execute-phase.md +41 -0
  30. package/.claude/commands/gsd/health.md +22 -0
  31. package/.claude/commands/gsd/help.md +22 -0
  32. package/.claude/commands/gsd/insert-phase.md +32 -0
  33. package/.claude/commands/gsd/join-discord.md +18 -0
  34. package/.claude/commands/gsd/list-phase-assumptions.md +46 -0
  35. package/.claude/commands/gsd/map-codebase.md +71 -0
  36. package/.claude/commands/gsd/new-milestone.md +44 -0
  37. package/.claude/commands/gsd/new-project.md +42 -0
  38. package/.claude/commands/gsd/pause-work.md +38 -0
  39. package/.claude/commands/gsd/plan-milestone-gaps.md +34 -0
  40. package/.claude/commands/gsd/plan-phase.md +45 -0
  41. package/.claude/commands/gsd/progress.md +24 -0
  42. package/.claude/commands/gsd/quick.md +41 -0
  43. package/.claude/commands/gsd/reapply-patches.md +110 -0
  44. package/.claude/commands/gsd/remove-phase.md +31 -0
  45. package/.claude/commands/gsd/research-phase.md +189 -0
  46. package/.claude/commands/gsd/resume-work.md +40 -0
  47. package/.claude/commands/gsd/set-profile.md +34 -0
  48. package/.claude/commands/gsd/settings.md +36 -0
  49. package/.claude/commands/gsd/update.md +37 -0
  50. package/.claude/commands/gsd/verify-work.md +38 -0
  51. package/.claude/commands/inbox.md +296 -0
  52. package/.claude/commands/ingest-empresa.md +191 -0
  53. package/.claude/commands/ingest.md +183 -0
  54. package/.claude/commands/jarvis-briefing.md +67 -0
  55. package/.claude/commands/jarvis-control.md +169 -0
  56. package/.claude/commands/jarvis-full.md +182 -0
  57. package/.claude/commands/jarvis.md +212 -0
  58. package/.claude/commands/ler-drive.md +212 -0
  59. package/.claude/commands/log.md +158 -0
  60. package/.claude/commands/loop.md +133 -0
  61. package/.claude/commands/loops.md +73 -0
  62. package/.claude/commands/mission-autopilot.md +538 -0
  63. package/.claude/commands/mission.md +353 -0
  64. package/.claude/commands/process-inbox.md +148 -0
  65. package/.claude/commands/process-jarvis.md +3036 -0
  66. package/.claude/commands/process-video.md +131 -0
  67. package/.claude/commands/rag-search.md +78 -0
  68. package/.claude/commands/resume.md +33 -0
  69. package/.claude/commands/save.md +38 -0
  70. package/.claude/commands/scan-inbox.md +125 -0
  71. package/.claude/commands/setup.md +99 -0
  72. package/.claude/commands/system-digest.md +243 -0
  73. package/.claude/commands/verify.md +182 -0
  74. package/.claude/commands/view-dna.md +169 -0
  75. package/.claude/get-shit-done/VERSION +1 -0
  76. package/.claude/get-shit-done/bin/gsd-tools.cjs +588 -0
  77. package/.claude/get-shit-done/bin/lib/commands.cjs +553 -0
  78. package/.claude/get-shit-done/bin/lib/config.cjs +162 -0
  79. package/.claude/get-shit-done/bin/lib/core.cjs +411 -0
  80. package/.claude/get-shit-done/bin/lib/frontmatter.cjs +299 -0
  81. package/.claude/get-shit-done/bin/lib/init.cjs +710 -0
  82. package/.claude/get-shit-done/bin/lib/milestone.cjs +216 -0
  83. package/.claude/get-shit-done/bin/lib/phase.cjs +871 -0
  84. package/.claude/get-shit-done/bin/lib/roadmap.cjs +298 -0
  85. package/.claude/get-shit-done/bin/lib/state.cjs +679 -0
  86. package/.claude/get-shit-done/bin/lib/template.cjs +222 -0
  87. package/.claude/get-shit-done/bin/lib/verify.cjs +773 -0
  88. package/.claude/get-shit-done/references/checkpoints.md +776 -0
  89. package/.claude/get-shit-done/references/continuation-format.md +249 -0
  90. package/.claude/get-shit-done/references/decimal-phase-calculation.md +65 -0
  91. package/.claude/get-shit-done/references/git-integration.md +248 -0
  92. package/.claude/get-shit-done/references/git-planning-commit.md +38 -0
  93. package/.claude/get-shit-done/references/model-profile-resolution.md +34 -0
  94. package/.claude/get-shit-done/references/model-profiles.md +92 -0
  95. package/.claude/get-shit-done/references/phase-argument-parsing.md +61 -0
  96. package/.claude/get-shit-done/references/planning-config.md +196 -0
  97. package/.claude/get-shit-done/references/questioning.md +145 -0
  98. package/.claude/get-shit-done/references/tdd.md +263 -0
  99. package/.claude/get-shit-done/references/ui-brand.md +160 -0
  100. package/.claude/get-shit-done/references/verification-patterns.md +612 -0
  101. package/.claude/get-shit-done/templates/DEBUG.md +164 -0
  102. package/.claude/get-shit-done/templates/UAT.md +247 -0
  103. package/.claude/get-shit-done/templates/VALIDATION.md +76 -0
  104. package/.claude/get-shit-done/templates/codebase/architecture.md +255 -0
  105. package/.claude/get-shit-done/templates/codebase/concerns.md +310 -0
  106. package/.claude/get-shit-done/templates/codebase/conventions.md +307 -0
  107. package/.claude/get-shit-done/templates/codebase/integrations.md +280 -0
  108. package/.claude/get-shit-done/templates/codebase/stack.md +186 -0
  109. package/.claude/get-shit-done/templates/codebase/structure.md +285 -0
  110. package/.claude/get-shit-done/templates/codebase/testing.md +480 -0
  111. package/.claude/get-shit-done/templates/config.json +37 -0
  112. package/.claude/get-shit-done/templates/context.md +283 -0
  113. package/.claude/get-shit-done/templates/continue-here.md +78 -0
  114. package/.claude/get-shit-done/templates/debug-subagent-prompt.md +91 -0
  115. package/.claude/get-shit-done/templates/discovery.md +146 -0
  116. package/.claude/get-shit-done/templates/milestone-archive.md +123 -0
  117. package/.claude/get-shit-done/templates/milestone.md +115 -0
  118. package/.claude/get-shit-done/templates/phase-prompt.md +569 -0
  119. package/.claude/get-shit-done/templates/planner-subagent-prompt.md +117 -0
  120. package/.claude/get-shit-done/templates/project.md +184 -0
  121. package/.claude/get-shit-done/templates/requirements.md +231 -0
  122. package/.claude/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
  123. package/.claude/get-shit-done/templates/research-project/FEATURES.md +147 -0
  124. package/.claude/get-shit-done/templates/research-project/PITFALLS.md +200 -0
  125. package/.claude/get-shit-done/templates/research-project/STACK.md +120 -0
  126. package/.claude/get-shit-done/templates/research-project/SUMMARY.md +170 -0
  127. package/.claude/get-shit-done/templates/research.md +552 -0
  128. package/.claude/get-shit-done/templates/retrospective.md +54 -0
  129. package/.claude/get-shit-done/templates/roadmap.md +202 -0
  130. package/.claude/get-shit-done/templates/state.md +176 -0
  131. package/.claude/get-shit-done/templates/summary-complex.md +59 -0
  132. package/.claude/get-shit-done/templates/summary-minimal.md +41 -0
  133. package/.claude/get-shit-done/templates/summary-standard.md +48 -0
  134. package/.claude/get-shit-done/templates/summary.md +248 -0
  135. package/.claude/get-shit-done/templates/user-setup.md +311 -0
  136. package/.claude/get-shit-done/templates/verification-report.md +322 -0
  137. package/.claude/get-shit-done/workflows/add-phase.md +111 -0
  138. package/.claude/get-shit-done/workflows/add-tests.md +350 -0
  139. package/.claude/get-shit-done/workflows/add-todo.md +157 -0
  140. package/.claude/get-shit-done/workflows/audit-milestone.md +297 -0
  141. package/.claude/get-shit-done/workflows/check-todos.md +176 -0
  142. package/.claude/get-shit-done/workflows/cleanup.md +152 -0
  143. package/.claude/get-shit-done/workflows/complete-milestone.md +763 -0
  144. package/.claude/get-shit-done/workflows/diagnose-issues.md +219 -0
  145. package/.claude/get-shit-done/workflows/discovery-phase.md +289 -0
  146. package/.claude/get-shit-done/workflows/discuss-phase.md +542 -0
  147. package/.claude/get-shit-done/workflows/execute-phase.md +449 -0
  148. package/.claude/get-shit-done/workflows/execute-plan.md +448 -0
  149. package/.claude/get-shit-done/workflows/health.md +156 -0
  150. package/.claude/get-shit-done/workflows/help.md +489 -0
  151. package/.claude/get-shit-done/workflows/insert-phase.md +129 -0
  152. package/.claude/get-shit-done/workflows/list-phase-assumptions.md +178 -0
  153. package/.claude/get-shit-done/workflows/map-codebase.md +315 -0
  154. package/.claude/get-shit-done/workflows/new-milestone.md +382 -0
  155. package/.claude/get-shit-done/workflows/new-project.md +1116 -0
  156. package/.claude/get-shit-done/workflows/pause-work.md +122 -0
  157. package/.claude/get-shit-done/workflows/plan-milestone-gaps.md +274 -0
  158. package/.claude/get-shit-done/workflows/plan-phase.md +569 -0
  159. package/.claude/get-shit-done/workflows/progress.md +381 -0
  160. package/.claude/get-shit-done/workflows/quick.md +453 -0
  161. package/.claude/get-shit-done/workflows/remove-phase.md +154 -0
  162. package/.claude/get-shit-done/workflows/research-phase.md +73 -0
  163. package/.claude/get-shit-done/workflows/resume-project.md +306 -0
  164. package/.claude/get-shit-done/workflows/set-profile.md +80 -0
  165. package/.claude/get-shit-done/workflows/settings.md +213 -0
  166. package/.claude/get-shit-done/workflows/transition.md +544 -0
  167. package/.claude/get-shit-done/workflows/update.md +219 -0
  168. package/.claude/get-shit-done/workflows/verify-phase.md +242 -0
  169. package/.claude/get-shit-done/workflows/verify-work.md +569 -0
  170. package/.claude/gsd-file-manifest.json +144 -0
  171. package/.claude/hooks/agent_creation_trigger.py +168 -0
  172. package/.claude/hooks/agent_index_updater.py +255 -0
  173. package/.claude/hooks/agent_memory_persister.py +203 -0
  174. package/.claude/hooks/claude_md_agent_sync.py +162 -0
  175. package/.claude/hooks/claude_md_guard.py +154 -0
  176. package/.claude/hooks/continuous_save.py +414 -0
  177. package/.claude/hooks/creation_validator.py +360 -0
  178. package/.claude/hooks/enforce_dual_location.py +501 -0
  179. package/.claude/hooks/enforce_plan_mode.py +220 -0
  180. package/.claude/hooks/gsd-check-update.js +62 -0
  181. package/.claude/hooks/gsd-context-monitor.js +122 -0
  182. package/.claude/hooks/gsd-statusline.js +108 -0
  183. package/.claude/hooks/inbox_age_alert.py +367 -0
  184. package/.claude/hooks/ledger_updater.py +303 -0
  185. package/.claude/hooks/memory_hints_injector.py +251 -0
  186. package/.claude/hooks/memory_updater.py +202 -0
  187. package/.claude/hooks/notification_system.py +115 -0
  188. package/.claude/hooks/pending_tracker.py +188 -0
  189. package/.claude/hooks/pipeline_checkpoint.py +583 -0
  190. package/.claude/hooks/post_batch_cascading.py +1740 -0
  191. package/.claude/hooks/post_tool_use.py +120 -0
  192. package/.claude/hooks/quality_watchdog.py +394 -0
  193. package/.claude/hooks/ralph_wiggum.py +286 -0
  194. package/.claude/hooks/session-source-sync.py +223 -0
  195. package/.claude/hooks/session_autosave_v2.py +1135 -0
  196. package/.claude/hooks/session_end.py +203 -0
  197. package/.claude/hooks/session_start.py +939 -0
  198. package/.claude/hooks/skill_indexer.py +48 -0
  199. package/.claude/hooks/skill_router.py +358 -0
  200. package/.claude/hooks/stop_hook_completeness.py +187 -0
  201. package/.claude/hooks/user_prompt_submit.py +125 -0
  202. package/.claude/package.json +1 -0
  203. package/.claude/rules/ANTHROPIC-STANDARDS.md +384 -0
  204. package/.claude/rules/CLAUDE-LITE.md +201 -0
  205. package/.claude/rules/RULE-GROUP-1.md +320 -0
  206. package/.claude/rules/RULE-GROUP-2.md +307 -0
  207. package/.claude/rules/RULE-GROUP-3.md +248 -0
  208. package/.claude/rules/RULE-GROUP-4.md +427 -0
  209. package/.claude/rules/RULE-GROUP-5.md +388 -0
  210. package/.claude/rules/RULE-GROUP-6.md +387 -0
  211. package/.claude/rules/RULE-GSD-MANDATORY.md +106 -0
  212. package/.claude/rules/agent-cognition.md +779 -0
  213. package/.claude/rules/agent-integrity.md +692 -0
  214. package/.claude/rules/epistemic-standards.md +333 -0
  215. package/.claude/rules/logging.md +53 -0
  216. package/.claude/rules/mcp-governance.md +128 -0
  217. package/.claude/rules/pipeline.md +60 -0
  218. package/.claude/rules/state-management.md +93 -0
  219. package/.claude/scripts/apply-tags.py +77 -0
  220. package/.claude/scripts/batch-extract-transcriptions.py +132 -0
  221. package/.claude/scripts/build-complete-index.py +250 -0
  222. package/.claude/scripts/build-planilha-index.py +170 -0
  223. package/.claude/scripts/complete-tag-matching.py +250 -0
  224. package/.claude/scripts/deduplicate-inbox.py +139 -0
  225. package/.claude/scripts/docx-xml-extractor.py +141 -0
  226. package/.claude/scripts/extract-docx-text.py +58 -0
  227. package/.claude/scripts/extract-single-transcription.py +74 -0
  228. package/.claude/scripts/extract_docx_from_gdrive.py +77 -0
  229. package/.claude/scripts/jarvis_orchestrator.py +5 -0
  230. package/.claude/scripts/organized-downloader.py +246 -0
  231. package/.claude/scripts/planilha-tagger.py +187 -0
  232. package/.claude/scripts/revert-tags.py +70 -0
  233. package/.claude/scripts/source-sync.py +265 -0
  234. package/.claude/scripts/tag-inbox-files.py +276 -0
  235. package/.claude/scripts/tag-inbox-v2.py +253 -0
  236. package/.claude/scripts/test-extraction.py +35 -0
  237. package/.claude/scripts/test-full-extraction.py +74 -0
  238. package/.claude/scripts/validate_cascading_integrity.py +409 -0
  239. package/.claude/settings.json +215 -0
  240. package/.claude/skills/DETECTION-PROTOCOL.md +217 -0
  241. package/.claude/skills/README.md +240 -0
  242. package/.claude/skills/SKILL-REGISTRY.md +283 -0
  243. package/.claude/skills/SKILL-SUGGESTIONS.md +114 -0
  244. package/.claude/skills/_TEMPLATES/SKILL-WRITER-GUIDE.md +385 -0
  245. package/.claude/skills/agent-creation/SKILL.md +374 -0
  246. package/.claude/skills/ask-company/SKILL.md +198 -0
  247. package/.claude/skills/brainstorming/SKILL.md +72 -0
  248. package/.claude/skills/chronicler/SKILL.md +146 -0
  249. package/.claude/skills/chronicler/chronicler_core.py +468 -0
  250. package/.claude/skills/code-review/SKILL.md +160 -0
  251. package/.claude/skills/convert-to-company-docs/SKILL.md +68 -0
  252. package/.claude/skills/convert-to-company-docs/convert.py +532 -0
  253. package/.claude/skills/dispatching-parallel-agents/SKILL.md +193 -0
  254. package/.claude/skills/docs-megabrain/SKILL.md +251 -0
  255. package/.claude/skills/executing-plans/SKILL.md +114 -0
  256. package/.claude/skills/executor/SKILL.md +161 -0
  257. package/.claude/skills/fase-2-5-tagging/SKILL.md +182 -0
  258. package/.claude/skills/feature-dev/SKILL.md +154 -0
  259. package/.claude/skills/frontend-design/SKILL.md +165 -0
  260. package/.claude/skills/gdrive-transcription-downloader/SKILL.md +249 -0
  261. package/.claude/skills/gemini-fallback/SKILL.md +67 -0
  262. package/.claude/skills/gemini-fallback/gemini_fetch.py +0 -0
  263. package/.claude/skills/gha/SKILL.md +96 -0
  264. package/.claude/skills/gha/gha_diagnostic.py +227 -0
  265. package/.claude/skills/github-workflow/SKILL.md +190 -0
  266. package/.claude/skills/hookify/SKILL.md +134 -0
  267. package/.claude/skills/hybrid-source-reading/SKILL.md +265 -0
  268. package/.claude/skills/jarvis/SKILL.md +546 -0
  269. package/.claude/skills/jarvis-briefing/SKILL.md +340 -0
  270. package/.claude/skills/knowledge-extraction/SKILL.md +318 -0
  271. package/.claude/skills/ler-planilha/SKILL.md +281 -0
  272. package/.claude/skills/pipeline-jarvis/SKILL.md +430 -0
  273. package/.claude/skills/plugin-dev/SKILL.md +176 -0
  274. package/.claude/skills/pr-review-toolkit/SKILL.md +178 -0
  275. package/.claude/skills/process-company-inbox/SKILL.md +183 -0
  276. package/.claude/skills/python-megabrain/SKILL.md +323 -0
  277. package/.claude/skills/resume/SKILL.md +61 -0
  278. package/.claude/skills/save/SKILL.md +87 -0
  279. package/.claude/skills/skill-creator-internal/SKILL.md +186 -0
  280. package/.claude/skills/skill-writer/SKILL.md +153 -0
  281. package/.claude/skills/skill-writer/examples.md +191 -0
  282. package/.claude/skills/skill-writer/troubleshooting.md +205 -0
  283. package/.claude/skills/smart-download-tagger/SKILL.md +148 -0
  284. package/.claude/skills/source-sync/SKILL.md +240 -0
  285. package/.claude/skills/sync-docs/SKILL.md +193 -0
  286. package/.claude/skills/sync-docs/config.json +37 -0
  287. package/.claude/skills/sync-docs/gdrive_sync.py +358 -0
  288. package/.claude/skills/sync-docs/reauth.py +71 -0
  289. package/.claude/skills/using-superpowers/SKILL.md +105 -0
  290. package/.claude/skills/verification-before-completion/SKILL.md +130 -0
  291. package/.claude/skills/verify/SKILL.md +154 -0
  292. package/.claude/skills/verify/verify_runner.py +0 -0
  293. package/.claude/skills/verify-6-levels/SKILL.md +234 -0
  294. package/.claude/skills/writing-plans/SKILL.md +184 -0
  295. package/.claude/templates/BATCH-LOG-TEMPLATE.md +221 -0
  296. package/.claudeignore +9 -0
  297. package/.cursor/agents.yaml +44 -0
  298. package/.cursor/rules/mega-brain.md +39 -0
  299. package/.gitattributes +19 -0
  300. package/.github/CODEOWNERS +8 -0
  301. package/.github/ISSUE_TEMPLATE/agent.md +96 -0
  302. package/.github/ISSUE_TEMPLATE/bug.md +67 -0
  303. package/.github/ISSUE_TEMPLATE/feature.md +56 -0
  304. package/.github/ISSUE_TEMPLATE/pipeline.md +70 -0
  305. package/.github/PULL_REQUEST_TEMPLATE.md +30 -0
  306. package/.github/assets/banner.svg +152 -0
  307. package/.github/assets/logo-dark.svg +79 -0
  308. package/.github/assets/social-preview.png +0 -0
  309. package/.github/layer1-allowlist.txt +196 -0
  310. package/.github/layer2-manifest.txt +42 -0
  311. package/.github/layer3-manifest.txt +94 -0
  312. package/.github/workflows/claude-code-pr.yml +198 -0
  313. package/.github/workflows/claude-code-review.yml +57 -0
  314. package/.github/workflows/claude.yml +76 -0
  315. package/.github/workflows/publish-pro.yml +72 -0
  316. package/.github/workflows/publish.yml +86 -0
  317. package/.github/workflows/verification.yml +251 -0
  318. package/.gitignore +244 -0
  319. package/.gitleaks.toml +118 -0
  320. package/.windsurf/agents.yaml +44 -0
  321. package/.windsurf/rules/mega-brain.md +39 -0
  322. package/CONTRIBUTING.md +62 -0
  323. package/QUICK-START.md +231 -0
  324. package/README.md +168 -0
  325. package/agents/AGENT-INDEX.yaml +107 -0
  326. package/agents/MASTER-AGENT.md +612 -0
  327. package/agents/README.md +48 -0
  328. package/agents/_templates/INDEX.md +741 -0
  329. package/agents/_templates/TEMPLATE-AGENT-MD-ULTRA-ROBUSTO-V3.md +2399 -0
  330. package/agents/boardroom/CHECKLIST-MASTER.md +281 -0
  331. package/agents/boardroom/INTEGRATION-GUIDE.md +406 -0
  332. package/agents/boardroom/README.md +238 -0
  333. package/agents/boardroom/config/BOARDROOM-CONFIG.md +186 -0
  334. package/agents/boardroom/config/TTS-INTEGRATION.md +258 -0
  335. package/agents/boardroom/config/VOICE-PROFILES.md +624 -0
  336. package/agents/boardroom/scripts/audio_generator.py +375 -0
  337. package/agents/boardroom/scripts/audio_generator_edge.py +353 -0
  338. package/agents/boardroom/scripts/jarvis_boardroom_hook.py +415 -0
  339. package/agents/boardroom/scripts/notebooklm_generator.py +578 -0
  340. package/agents/boardroom/templates/EPISODE-TEMPLATE.md +367 -0
  341. package/agents/boardroom/templates/scene-templates/SCENE-AGENT-DEBATE.md +252 -0
  342. package/agents/boardroom/templates/scene-templates/SCENE-COUNCIL.md +270 -0
  343. package/agents/boardroom/templates/scene-templates/SCENE-DNA-CONSULTATION.md +126 -0
  344. package/agents/boardroom/templates/scene-templates/SCENE-QUESTION.md +174 -0
  345. package/agents/boardroom/workflows/WORKFLOW-AUDIO-GENERATION.md +421 -0
  346. package/agents/conclave/CRITIC.md +197 -0
  347. package/agents/conclave/DEVILS-ADVOCATE.md +274 -0
  348. package/agents/conclave/README.md +35 -0
  349. package/agents/conclave/SYNTHESIZER.md +293 -0
  350. package/agents/conclave/advogado-do-diabo/AGENT.md +502 -0
  351. package/agents/conclave/advogado-do-diabo/SOUL.md +100 -0
  352. package/agents/conclave/critico-metodologico/AGENT.md +683 -0
  353. package/agents/conclave/critico-metodologico/SOUL.md +107 -0
  354. package/agents/conclave/sintetizador/AGENT.md +571 -0
  355. package/agents/conclave/sintetizador/SOUL.md +94 -0
  356. package/agents/constitution/BASE-CONSTITUTION.md +254 -0
  357. package/agents/persona-registry.yaml +300 -0
  358. package/agents/sua-empresa/.gitkeep +0 -0
  359. package/agents/sua-empresa/README.md +44 -0
  360. package/agents/sua-empresa/_example/jds/EXAMPLE-JD.md +42 -0
  361. package/agents/sua-empresa/_example/org/EXAMPLE-ORG.md +32 -0
  362. package/agents/sua-empresa/_example/roles/EXAMPLE-ROLE.md +38 -0
  363. package/artifacts/README.md +11 -0
  364. package/artifacts/canonical/.gitkeep +0 -0
  365. package/artifacts/chunks/.gitkeep +0 -0
  366. package/artifacts/insights/.gitkeep +0 -0
  367. package/artifacts/narratives/.gitkeep +0 -0
  368. package/bin/cli.js +2 -0
  369. package/bin/lib/ascii-art.js +202 -0
  370. package/bin/lib/feature-gate.js +46 -0
  371. package/bin/lib/installer.js +593 -0
  372. package/bin/lib/license.js +59 -0
  373. package/bin/lib/pro-commands.js +75 -0
  374. package/bin/lib/setup-wizard.js +547 -0
  375. package/bin/lib/validate-email.js +113 -0
  376. package/bin/mega-brain.js +136 -0
  377. package/bin/pre-publish-gate.js +229 -0
  378. package/bin/push.js +1056 -0
  379. package/bin/templates/env.example +27 -0
  380. package/bin/utils/pro-detector.js +50 -0
  381. package/bin/validate-package.js +190 -0
  382. package/core/__init__.py +2 -0
  383. package/core/glossary/INDEX.md +63 -0
  384. package/core/glossary/digital.md +243 -0
  385. package/core/glossary/finance.md +49 -0
  386. package/core/glossary/marketing.md +69 -0
  387. package/core/glossary/operations.md +50 -0
  388. package/core/glossary/sales.md +690 -0
  389. package/core/intelligence/__init__.py +41 -0
  390. package/core/intelligence/agent_trigger.py +468 -0
  391. package/core/intelligence/audit_layers.py +491 -0
  392. package/core/intelligence/autonomous_processor.py +796 -0
  393. package/core/intelligence/bootstrap_registry.py +550 -0
  394. package/core/intelligence/business_model_detector.py +476 -0
  395. package/core/intelligence/dossier_trigger.py +336 -0
  396. package/core/intelligence/entity_normalizer.py +565 -0
  397. package/core/intelligence/org_chain_detector.py +411 -0
  398. package/core/intelligence/review_dashboard.py +338 -0
  399. package/core/intelligence/role_detector.py +855 -0
  400. package/core/intelligence/session_autosave.py +46 -0
  401. package/core/intelligence/skill_generator.py +601 -0
  402. package/core/intelligence/sow_generator.py +711 -0
  403. package/core/intelligence/sync_package_files.py +504 -0
  404. package/core/intelligence/task_orchestrator.py +780 -0
  405. package/core/intelligence/theme_analyzer.py +562 -0
  406. package/core/intelligence/tool_discovery.py +432 -0
  407. package/core/intelligence/validate_json_integrity.py +106 -0
  408. package/core/intelligence/validate_layers.py +310 -0
  409. package/core/intelligence/verify_classifications.py +94 -0
  410. package/core/intelligence/viability_scorer.py +592 -0
  411. package/core/jarvis/02-JARVIS-SOUL.md +390 -0
  412. package/core/jarvis/03-JARVIS-DNA.yaml +312 -0
  413. package/core/jarvis/AGENT.md +191 -0
  414. package/core/jarvis/agent-creator/AGENT.md +199 -0
  415. package/core/jarvis/agent-creator/SOUL.md +82 -0
  416. package/core/jarvis/agent-creator/tasks/create-agent.md +133 -0
  417. package/core/jarvis/agent-creator/tasks/sync-agents.md +100 -0
  418. package/core/jarvis/agent-creator/workflows/wf-create-agent.yaml +110 -0
  419. package/core/jarvis/agent-creator/workflows/wf-pipeline-trigger.yaml +111 -0
  420. package/core/jarvis/autonomous/benchmark/AGENT.md +347 -0
  421. package/core/jarvis/autonomous/benchmark/SOUL.md +78 -0
  422. package/core/jarvis/autonomous/critic/AGENT.md +324 -0
  423. package/core/jarvis/autonomous/critic/SOUL.md +78 -0
  424. package/core/jarvis/autonomous/evolver/AGENT.md +294 -0
  425. package/core/jarvis/autonomous/evolver/SOUL.md +85 -0
  426. package/core/jarvis/autonomous/playbook-generator/AGENT.md +399 -0
  427. package/core/jarvis/autonomous/playbook-generator/SOUL.md +80 -0
  428. package/core/patterns/_ROLE_PATTERNS.yaml +547 -0
  429. package/core/patterns/quality_gates.yaml +259 -0
  430. package/core/patterns/trigger_config.yaml +193 -0
  431. package/core/schemas/SCHEMA-INDEX.md +94 -0
  432. package/core/schemas/canonical-map.schema.json +98 -0
  433. package/core/schemas/chunks-state.schema.json +131 -0
  434. package/core/schemas/decisions-registry.schema.json +120 -0
  435. package/core/schemas/file-registry.schema.json +69 -0
  436. package/core/schemas/insights-state.schema.json +111 -0
  437. package/core/schemas/narratives-state.schema.json +150 -0
  438. package/core/tasks/CHANGELOG.md +55 -0
  439. package/core/tasks/TASK-REGISTRY.md +113 -0
  440. package/core/tasks/_templates/task-tmpl.md +105 -0
  441. package/core/tasks/analyze-themes.md +84 -0
  442. package/core/tasks/detect-role.md +82 -0
  443. package/core/tasks/extract-dna.md +114 -0
  444. package/core/tasks/normalize-entities.md +82 -0
  445. package/core/tasks/process-batch.md +111 -0
  446. package/core/tasks/validate-cascade.md +105 -0
  447. package/core/templates/README.md +27 -0
  448. package/core/templates/agents/dna-config-template.yaml +181 -0
  449. package/core/templates/agents/enrichment-protocol.md +408 -0
  450. package/core/templates/agents/memory-template.md +567 -0
  451. package/core/templates/agents/reasoning-model.md +331 -0
  452. package/core/templates/agents/soul-template.md +416 -0
  453. package/core/templates/agents/template-evolution.md +544 -0
  454. package/core/templates/debates/CONCLAVE-LOG-TEMPLATE-v2.md +309 -0
  455. package/core/templates/debates/conclave-log-template.md +309 -0
  456. package/core/templates/debates/conclave-protocol.md +518 -0
  457. package/core/templates/debates/debate-dynamics-config.yaml +322 -0
  458. package/core/templates/debates/debate-dynamics.md +613 -0
  459. package/core/templates/debates/debate-protocol.md +323 -0
  460. package/core/templates/logs/LOG-TEMPLATES.md +1068 -0
  461. package/core/templates/logs/batch-visual-template.md +841 -0
  462. package/core/templates/logs/log-structure.md +65 -0
  463. package/core/templates/logs/visual-diff.md +159 -0
  464. package/core/templates/phases/dossier-compilation.md +790 -0
  465. package/core/templates/phases/narrative-metabolism.md +292 -0
  466. package/core/templates/phases/narrative-synthesis.md +278 -0
  467. package/core/templates/phases/phase4-checkpoint.md +146 -0
  468. package/core/templates/phases/prompt-1.1-chunking.md +154 -0
  469. package/core/templates/phases/prompt-1.2-entity-resolution.md +186 -0
  470. package/core/templates/phases/prompt-2.1-dna-tags.md +208 -0
  471. package/core/templates/phases/prompt-2.1-insight-extraction.md +191 -0
  472. package/core/templates/phases/prompt-3.1-narrative.md +331 -0
  473. package/core/templates/phases/sources-compilation.md +340 -0
  474. package/core/workflows/PIPELINE-JARVIS-DOCS.md +606 -0
  475. package/core/workflows/wf-conclave.yaml +139 -0
  476. package/core/workflows/wf-extract-dna.yaml +158 -0
  477. package/core/workflows/wf-ingest.yaml +88 -0
  478. package/core/workflows/wf-pipeline-full.yaml +138 -0
  479. package/docs/API-KEYS-GUIDE.md +372 -0
  480. package/docs/INTEGRATION-POINTS.md +501 -0
  481. package/docs/LAYERS.md +403 -0
  482. package/docs/PLAN-MODE-PROTOCOL.md +388 -0
  483. package/docs/RESTORE-AND-INDEX.md +203 -0
  484. package/docs/TAG-RESOLVER-IMPLEMENTATION.md +597 -0
  485. package/docs/conselho.md +337 -0
  486. package/docs/context7-readme.md +28 -0
  487. package/docs/jarvis-logging-protocol.md +380 -0
  488. package/docs/pipeline-completa-v4.md +1315 -0
  489. package/docs/prompts/meta_agente_mapeamento_processos.md +297 -0
  490. package/docs/quick-start.md +197 -0
  491. package/docs/readme-ralph-cascateamento.md +207 -0
  492. package/docs/template-master.md +727 -0
  493. package/docs/templates/phase5/IMPLEMENTATION-GUIDE.md +355 -0
  494. package/docs/templates/phase5/MOGA-BRAIN-PHASE5-TEMPLATES.md +1284 -0
  495. package/docs/templates/phase5/README.md +165 -0
  496. package/docs/workflow-continuous-claude.md +2232 -0
  497. package/inbox/.gitkeep +0 -0
  498. package/inbox/README.md +15 -0
  499. package/knowledge/NAVIGATION-MAP.json +292 -0
  500. package/knowledge/README.md +11 -0
  501. package/knowledge/dna/.gitkeep +0 -0
  502. package/knowledge/dossiers/persons/.gitkeep +0 -0
  503. package/knowledge/dossiers/system/.gitkeep +0 -0
  504. package/knowledge/dossiers/themes/.gitkeep +0 -0
  505. package/knowledge/playbooks/.gitkeep +0 -0
  506. package/knowledge/sources/.gitkeep +0 -0
  507. package/logs/.gitkeep +0 -0
  508. package/logs/README.md +11 -0
  509. package/package.json +180 -0
  510. package/requirements.txt +4 -0
@@ -0,0 +1,193 @@
1
+ # SYNC-DOCS - Sincronizacao de Documentos [SUA EMPRESA]
2
+
3
+ ## Trigger
4
+ `/sync-docs` ou `/sync-docs [caminho-do-arquivo]`
5
+
6
+ ## Objetivo
7
+ Sincronizar arquivos .md selecionados com:
8
+ 1. **Shared Drive [SUA EMPRESA]** (Google Drive via Service Account)
9
+ 2. **Repositorio Mega Brain** (GitHub)
10
+
11
+ ---
12
+
13
+ ## Pre-requisitos
14
+
15
+ 1. Service Account Google configurada com acesso ao Shared Drive
16
+ 2. Arquivo de credenciais JSON no caminho especificado em `config.json`
17
+ 3. Git configurado e autenticado no repositorio
18
+ 4. Python 3.x com dependencias instaladas
19
+
20
+ ---
21
+
22
+ ## Execucao
23
+
24
+ ### 1. Selecao de Arquivos
25
+
26
+ **Com caminho especificado:**
27
+ ```
28
+ /sync-docs [SUA EMPRESA]-CORE/templates/BILLION-TEMPLATES.md
29
+ ```
30
+
31
+ **Sem caminho (selecao interativa):**
32
+ ```
33
+ /sync-docs
34
+ ```
35
+ - Listar .md disponiveis em locais comuns:
36
+ - `[SUA EMPRESA]-CORE/templates/`
37
+ - `[SUA EMPRESA]-CORE/knowledge/playbooks/`
38
+ - `.aios-core/docs/standards/`
39
+ - Usuario seleciona arquivo(s) para sincronizar
40
+
41
+ ### 2. Validacao
42
+
43
+ Antes de sincronizar, validar:
44
+ ```
45
+ [ ] Arquivo existe e e .md valido
46
+ [ ] Arquivo tem conteudo (nao vazio)
47
+ [ ] Arquivo nao contem dados sensiveis (checar por patterns)
48
+ ```
49
+
50
+ ### 3. Sync Google Drive
51
+
52
+ **Processo:**
53
+ 1. Autenticar via Service Account
54
+ 2. Conectar ao Shared Drive [SUA EMPRESA]
55
+ 3. Navegar para pasta destino (conforme config.json)
56
+ 4. Upload ou update do arquivo
57
+ 5. Capturar URL do arquivo no Drive
58
+
59
+ **Script de suporte:** `gdrive_sync.py`
60
+
61
+ ### 4. Sync Repositorio
62
+
63
+ **Processo:**
64
+ 1. `git add [caminho-do-arquivo]`
65
+ 2. `git commit -m "docs: sync [nome-arquivo]"`
66
+ 3. `git push origin main`
67
+ 4. Capturar commit hash
68
+
69
+ ### 5. Confirmacao
70
+
71
+ **Output de sucesso:**
72
+ ```
73
+ SYNC COMPLETO
74
+
75
+ Google Drive: https://drive.google.com/file/d/[ID]
76
+ GitHub: commit [hash] em main
77
+ Timestamp: [YYYY-MM-DD HH:MM:SS]
78
+
79
+ Arquivo: [nome-do-arquivo]
80
+ Tamanho: [X] KB
81
+ ```
82
+
83
+ **Output de erro:**
84
+ ```
85
+ SYNC FALHOU
86
+
87
+ Etapa: [Google Drive | GitHub]
88
+ Erro: [mensagem de erro]
89
+ Acao: [sugestao de correcao]
90
+ ```
91
+
92
+ ---
93
+
94
+ ## Configuracao
95
+
96
+ ### config.json
97
+ Localizado em: `.claude/skills/sync-docs/config.json`
98
+
99
+ ```json
100
+ {
101
+ "google": {
102
+ "credentials_path": "CAMINHO_DO_SERVICE_ACCOUNT_JSON",
103
+ "shared_drive_id": "ID_DO_SHARED_DRIVE_[SUA EMPRESA]",
104
+ "default_folder": "DOCUMENTACAO",
105
+ "folder_mapping": {
106
+ "templates": "Templates",
107
+ "playbooks": "Playbooks",
108
+ "standards": "Standards"
109
+ }
110
+ },
111
+ "github": {
112
+ "repo": "Mega Brain",
113
+ "branch": "main",
114
+ "commit_prefix": "docs: sync",
115
+ "auto_push": true
116
+ },
117
+ "validation": {
118
+ "max_file_size_kb": 5000,
119
+ "sensitive_patterns": [
120
+ "API_KEY",
121
+ "SECRET",
122
+ "PASSWORD",
123
+ "CREDENTIALS"
124
+ ]
125
+ }
126
+ }
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Mapeamento de Pastas
132
+
133
+ | Origem Local | Destino Google Drive |
134
+ |--------------|---------------------|
135
+ | `[SUA EMPRESA]-CORE/templates/` | Shared Drive > Templates |
136
+ | `[SUA EMPRESA]-CORE/knowledge/playbooks/` | Shared Drive > Playbooks |
137
+ | `.aios-core/docs/standards/` | Shared Drive > Standards |
138
+
139
+ ---
140
+
141
+ ## Uso Avancado
142
+
143
+ ### Sync Multiplos Arquivos
144
+ ```
145
+ /sync-docs [SUA EMPRESA]-CORE/templates/*.md
146
+ ```
147
+
148
+ ### Sync Apenas Google Drive
149
+ ```
150
+ /sync-docs --drive-only [SUA EMPRESA]-CORE/templates/BILLION-TEMPLATES.md
151
+ ```
152
+
153
+ ### Sync Apenas GitHub
154
+ ```
155
+ /sync-docs --git-only [SUA EMPRESA]-CORE/templates/BILLION-TEMPLATES.md
156
+ ```
157
+
158
+ ### Dry Run (sem executar)
159
+ ```
160
+ /sync-docs --dry-run [SUA EMPRESA]-CORE/templates/BILLION-TEMPLATES.md
161
+ ```
162
+
163
+ ---
164
+
165
+ ## Troubleshooting
166
+
167
+ | Problema | Causa | Solucao |
168
+ |----------|-------|---------|
169
+ | "Credenciais invalidas" | Service Account expirada ou path errado | Verificar config.json credentials_path |
170
+ | "Shared Drive nao encontrado" | ID incorreto ou sem permissao | Verificar shared_drive_id e permissoes |
171
+ | "Git push falhou" | Branch protegido ou conflito | Verificar permissoes e fazer pull primeiro |
172
+ | "Arquivo muito grande" | Excede max_file_size_kb | Aumentar limite ou dividir arquivo |
173
+
174
+ ---
175
+
176
+ ## Dependencias
177
+
178
+ ```bash
179
+ pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
180
+ ```
181
+
182
+ ---
183
+
184
+ ## Checklist de Setup
185
+
186
+ ```
187
+ [ ] Service Account criada no Google Cloud Console
188
+ [ ] Shared Drive [SUA EMPRESA] com permissao para Service Account
189
+ [ ] Arquivo JSON de credenciais baixado
190
+ [ ] config.json configurado com paths corretos
191
+ [ ] Dependencias Python instaladas
192
+ [ ] Git autenticado no repositorio
193
+ ```
@@ -0,0 +1,37 @@
1
+ {
2
+ "google": {
3
+ "oauth_keys_path": "~/.config/mcp-gdrive/gcp-oauth.keys.json",
4
+ "token_path": "~/.config/mcp-gdrive/.gdrive-server-credentials.json",
5
+ "target_folder_id": "YOUR_GOOGLE_DRIVE_FOLDER_ID",
6
+ "default_folder": "DOCUMENTACAO",
7
+ "folder_mapping": {
8
+ "templates": "Templates",
9
+ "playbooks": "Playbooks",
10
+ "standards": "Standards",
11
+ "knowledge": "Knowledge-Base",
12
+ "strategy": "Strategy",
13
+ "reports": "Reports"
14
+ }
15
+ },
16
+ "github": {
17
+ "repo": "Mega Brain",
18
+ "branch": "main",
19
+ "commit_prefix": "docs: sync",
20
+ "auto_push": true
21
+ },
22
+ "validation": {
23
+ "max_file_size_kb": 5000,
24
+ "sensitive_patterns": [
25
+ "API_KEY",
26
+ "SECRET",
27
+ "PASSWORD",
28
+ "CREDENTIALS",
29
+ "PRIVATE_KEY"
30
+ ]
31
+ },
32
+ "paths": {
33
+ "company_core": "/path/to/your/COMPANY-CORE",
34
+ "mega_brain": "/path/to/your/Mega-Brain",
35
+ "aios_core": "/path/to/your/.aios-core"
36
+ }
37
+ }
@@ -0,0 +1,358 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ GDRIVE SYNC - Sincronizacao de arquivos com Google Drive
4
+ Skill: /sync-docs
5
+
6
+ Usa autenticacao OAuth (access_token + refresh_token)
7
+ """
8
+
9
+ import os
10
+ import json
11
+ import sys
12
+ from pathlib import Path
13
+ from datetime import datetime
14
+
15
+ try:
16
+ from google.oauth2.credentials import Credentials
17
+ from google.auth.transport.requests import Request
18
+ from googleapiclient.discovery import build
19
+ from googleapiclient.http import MediaFileUpload
20
+ except ImportError:
21
+ print("ERRO: Dependencias nao instaladas.")
22
+ print("Execute: pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib")
23
+ sys.exit(1)
24
+
25
+
26
+ class GDriveSync:
27
+ """Sincronizador de arquivos com Google Drive usando OAuth."""
28
+
29
+ SCOPES = [
30
+ 'https://www.googleapis.com/auth/drive',
31
+ 'https://www.googleapis.com/auth/drive.file'
32
+ ]
33
+
34
+ def __init__(self, config_path: str = None):
35
+ """Inicializa com configuracao."""
36
+ self.config_path = config_path or self._default_config_path()
37
+ self.config = self._load_config()
38
+ self.service = None
39
+ self.credentials = None
40
+
41
+ def _default_config_path(self) -> str:
42
+ """Retorna path padrao do config.json."""
43
+ skill_dir = Path(__file__).parent
44
+ return str(skill_dir / "config.json")
45
+
46
+ def _load_config(self) -> dict:
47
+ """Carrega configuracao do config.json."""
48
+ if not os.path.exists(self.config_path):
49
+ raise FileNotFoundError(f"Config nao encontrado: {self.config_path}")
50
+
51
+ with open(self.config_path, 'r', encoding='utf-8') as f:
52
+ return json.load(f)
53
+
54
+ def authenticate(self) -> bool:
55
+ """Autentica com OAuth tokens."""
56
+ try:
57
+ token_path = self.config['google']['token_path']
58
+ oauth_keys_path = self.config['google']['oauth_keys_path']
59
+
60
+ if not os.path.exists(token_path):
61
+ print(f"ERRO: Token nao encontrado: {token_path}")
62
+ return False
63
+
64
+ if not os.path.exists(oauth_keys_path):
65
+ print(f"ERRO: OAuth keys nao encontradas: {oauth_keys_path}")
66
+ return False
67
+
68
+ # Carrega tokens
69
+ with open(token_path, 'r') as f:
70
+ token_data = json.load(f)
71
+
72
+ # Carrega client info
73
+ with open(oauth_keys_path, 'r') as f:
74
+ oauth_data = json.load(f)
75
+ client_info = oauth_data.get('installed', oauth_data.get('web', {}))
76
+
77
+ # Cria credentials
78
+ self.credentials = Credentials(
79
+ token=token_data.get('access_token'),
80
+ refresh_token=token_data.get('refresh_token'),
81
+ token_uri=client_info.get('token_uri', 'https://oauth2.googleapis.com/token'),
82
+ client_id=client_info.get('client_id'),
83
+ client_secret=client_info.get('client_secret'),
84
+ scopes=self.SCOPES
85
+ )
86
+
87
+ # Refresh se expirado
88
+ if self.credentials.expired and self.credentials.refresh_token:
89
+ print("Token expirado, renovando...")
90
+ self.credentials.refresh(Request())
91
+ # Salva novo token
92
+ new_token_data = {
93
+ 'access_token': self.credentials.token,
94
+ 'refresh_token': self.credentials.refresh_token,
95
+ 'scope': ' '.join(self.SCOPES),
96
+ 'token_type': 'Bearer',
97
+ 'expiry_date': int(self.credentials.expiry.timestamp() * 1000) if self.credentials.expiry else None
98
+ }
99
+ with open(token_path, 'w') as f:
100
+ json.dump(new_token_data, f, indent=2)
101
+ print("Token renovado e salvo.")
102
+
103
+ self.service = build('drive', 'v3', credentials=self.credentials)
104
+ print("Autenticacao: OK")
105
+ return True
106
+
107
+ except Exception as e:
108
+ print(f"ERRO na autenticacao: {e}")
109
+ import traceback
110
+ traceback.print_exc()
111
+ return False
112
+
113
+ def find_folder(self, folder_name: str, parent_id: str = None) -> str:
114
+ """Encontra pasta pelo nome."""
115
+ query = f"name='{folder_name}' and mimeType='application/vnd.google-apps.folder' and trashed=false"
116
+
117
+ if parent_id:
118
+ query += f" and '{parent_id}' in parents"
119
+
120
+ results = self.service.files().list(
121
+ q=query,
122
+ spaces='drive',
123
+ fields='files(id, name)',
124
+ supportsAllDrives=True,
125
+ includeItemsFromAllDrives=True
126
+ ).execute()
127
+
128
+ files = results.get('files', [])
129
+
130
+ if files:
131
+ return files[0]['id']
132
+ return None
133
+
134
+ def list_folder_contents(self, folder_id: str) -> list:
135
+ """Lista conteudo de uma pasta."""
136
+ query = f"'{folder_id}' in parents and trashed=false"
137
+
138
+ results = self.service.files().list(
139
+ q=query,
140
+ spaces='drive',
141
+ fields='files(id, name, mimeType)',
142
+ supportsAllDrives=True,
143
+ includeItemsFromAllDrives=True
144
+ ).execute()
145
+
146
+ return results.get('files', [])
147
+
148
+ def create_folder(self, folder_name: str, parent_id: str = None) -> str:
149
+ """Cria pasta no Drive."""
150
+ file_metadata = {
151
+ 'name': folder_name,
152
+ 'mimeType': 'application/vnd.google-apps.folder'
153
+ }
154
+
155
+ if parent_id:
156
+ file_metadata['parents'] = [parent_id]
157
+
158
+ folder = self.service.files().create(
159
+ body=file_metadata,
160
+ supportsAllDrives=True,
161
+ fields='id'
162
+ ).execute()
163
+
164
+ return folder.get('id')
165
+
166
+ def get_or_create_folder(self, folder_name: str, parent_id: str = None) -> str:
167
+ """Obtem ou cria pasta."""
168
+ folder_id = self.find_folder(folder_name, parent_id)
169
+ if folder_id:
170
+ return folder_id
171
+ return self.create_folder(folder_name, parent_id)
172
+
173
+ def file_exists(self, filename: str, folder_id: str) -> dict:
174
+ """Verifica se arquivo existe na pasta."""
175
+ query = f"name='{filename}' and '{folder_id}' in parents and trashed=false"
176
+
177
+ results = self.service.files().list(
178
+ q=query,
179
+ spaces='drive',
180
+ fields='files(id, name, webViewLink)',
181
+ supportsAllDrives=True,
182
+ includeItemsFromAllDrives=True
183
+ ).execute()
184
+
185
+ files = results.get('files', [])
186
+
187
+ if files:
188
+ return files[0]
189
+ return None
190
+
191
+ def upload_file(self, local_path: str, folder_id: str = None, folder_name: str = None) -> dict:
192
+ """
193
+ Upload de arquivo para o Drive.
194
+
195
+ Args:
196
+ local_path: Caminho local do arquivo
197
+ folder_id: ID da pasta destino (tem prioridade)
198
+ folder_name: Nome da pasta destino (usa se folder_id for None)
199
+
200
+ Returns:
201
+ dict com id, name, webViewLink ou None se falhar
202
+ """
203
+ if not os.path.exists(local_path):
204
+ print(f"ERRO: Arquivo nao encontrado: {local_path}")
205
+ return None
206
+
207
+ # Determina pasta destino
208
+ target_folder_id = folder_id
209
+ if not target_folder_id:
210
+ target_folder_id = self.config['google'].get('target_folder_id')
211
+
212
+ # Se folder_name especificado, busca/cria dentro do target
213
+ if folder_name and target_folder_id:
214
+ target_folder_id = self.get_or_create_folder(folder_name, target_folder_id)
215
+
216
+ filename = os.path.basename(local_path)
217
+
218
+ # Verifica se arquivo ja existe
219
+ existing = None
220
+ if target_folder_id:
221
+ existing = self.file_exists(filename, target_folder_id)
222
+
223
+ # Determina mimetype
224
+ if local_path.endswith('.md'):
225
+ mimetype = 'text/markdown'
226
+ elif local_path.endswith('.png'):
227
+ mimetype = 'image/png'
228
+ elif local_path.endswith('.json'):
229
+ mimetype = 'application/json'
230
+ elif local_path.endswith('.pdf'):
231
+ mimetype = 'application/pdf'
232
+ else:
233
+ mimetype = 'application/octet-stream'
234
+
235
+ media = MediaFileUpload(local_path, mimetype=mimetype, resumable=True)
236
+
237
+ try:
238
+ if existing:
239
+ # Update arquivo existente
240
+ file = self.service.files().update(
241
+ fileId=existing['id'],
242
+ media_body=media,
243
+ supportsAllDrives=True,
244
+ fields='id, name, webViewLink'
245
+ ).execute()
246
+ print(f"Arquivo atualizado: {filename}")
247
+ else:
248
+ # Upload novo arquivo
249
+ file_metadata = {
250
+ 'name': filename
251
+ }
252
+
253
+ if target_folder_id:
254
+ file_metadata['parents'] = [target_folder_id]
255
+
256
+ file = self.service.files().create(
257
+ body=file_metadata,
258
+ media_body=media,
259
+ supportsAllDrives=True,
260
+ fields='id, name, webViewLink'
261
+ ).execute()
262
+ print(f"Arquivo criado: {filename}")
263
+
264
+ return file
265
+
266
+ except Exception as e:
267
+ print(f"ERRO no upload: {e}")
268
+ import traceback
269
+ traceback.print_exc()
270
+ return None
271
+
272
+ def sync(self, local_path: str, folder_name: str = None) -> dict:
273
+ """
274
+ Sincroniza arquivo com Google Drive.
275
+
276
+ Args:
277
+ local_path: Caminho local do arquivo
278
+ folder_name: Pasta destino no Drive (ex: "Strategy", "Reports")
279
+
280
+ Returns:
281
+ dict com resultado ou None
282
+ """
283
+ print(f"\n=== SYNC GOOGLE DRIVE ===")
284
+ print(f"Arquivo: {local_path}")
285
+
286
+ # Autenticar
287
+ if not self.service:
288
+ if not self.authenticate():
289
+ return None
290
+
291
+ # Upload
292
+ result = self.upload_file(local_path, folder_name=folder_name)
293
+
294
+ if result:
295
+ print(f"URL: {result.get('webViewLink', 'N/A')}")
296
+ return {
297
+ 'success': True,
298
+ 'file_id': result.get('id'),
299
+ 'file_name': result.get('name'),
300
+ 'url': result.get('webViewLink'),
301
+ 'timestamp': datetime.now().isoformat()
302
+ }
303
+
304
+ return {
305
+ 'success': False,
306
+ 'error': 'Upload falhou',
307
+ 'timestamp': datetime.now().isoformat()
308
+ }
309
+
310
+ def list_target_folder(self) -> list:
311
+ """Lista conteudo da pasta alvo configurada."""
312
+ if not self.service:
313
+ if not self.authenticate():
314
+ return []
315
+
316
+ folder_id = self.config['google'].get('target_folder_id')
317
+ if not folder_id:
318
+ print("ERRO: target_folder_id nao configurado")
319
+ return []
320
+
321
+ return self.list_folder_contents(folder_id)
322
+
323
+
324
+ def main():
325
+ """CLI para sync manual."""
326
+ if len(sys.argv) < 2:
327
+ print("Uso: python gdrive_sync.py <caminho-do-arquivo> [pasta-destino]")
328
+ print("Exemplo: python gdrive_sync.py ./REPORT.md Strategy")
329
+ print("\nPara listar pasta alvo: python gdrive_sync.py --list")
330
+ sys.exit(1)
331
+
332
+ if sys.argv[1] == '--list':
333
+ syncer = GDriveSync()
334
+ contents = syncer.list_target_folder()
335
+ print("\n=== CONTEUDO DA PASTA ===")
336
+ for item in contents:
337
+ tipo = "PASTA" if item['mimeType'] == 'application/vnd.google-apps.folder' else "ARQUIVO"
338
+ print(f" [{tipo}] {item['name']}")
339
+ sys.exit(0)
340
+
341
+ file_path = sys.argv[1]
342
+ folder_name = sys.argv[2] if len(sys.argv) > 2 else None
343
+
344
+ syncer = GDriveSync()
345
+ result = syncer.sync(file_path, folder_name)
346
+
347
+ if result and result.get('success'):
348
+ print("\n=== SYNC COMPLETO ===")
349
+ print(f"URL: {result.get('url')}")
350
+ print(f"Timestamp: {result.get('timestamp')}")
351
+ else:
352
+ print("\n=== SYNC FALHOU ===")
353
+ print(f"Erro: {result.get('error') if result else 'Desconhecido'}")
354
+ sys.exit(1)
355
+
356
+
357
+ if __name__ == "__main__":
358
+ main()
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ GDRIVE REAUTH - Reautenticacao com escopo de escrita
4
+ Execute este script para obter novos tokens com permissao de upload.
5
+ """
6
+
7
+ import os
8
+ import json
9
+ from pathlib import Path
10
+
11
+ try:
12
+ from google_auth_oauthlib.flow import InstalledAppFlow
13
+ except ImportError:
14
+ print("ERRO: Dependencias nao instaladas.")
15
+ print("Execute: pip install google-auth-oauthlib")
16
+ exit(1)
17
+
18
+ # Escopos necessarios para ESCRITA
19
+ SCOPES = [
20
+ 'https://www.googleapis.com/auth/drive',
21
+ 'https://www.googleapis.com/auth/drive.file'
22
+ ]
23
+
24
+ # Paths
25
+ OAUTH_KEYS = Path(r"~/.config/mcp-gdrive/gcp-oauth.keys.json")
26
+ TOKEN_FILE = Path(r"~/.config/mcp-gdrive/.gdrive-server-credentials.json")
27
+
28
+
29
+ def main():
30
+ print("=== GOOGLE DRIVE REAUTH ===")
31
+ print(f"OAuth Keys: {OAUTH_KEYS}")
32
+ print(f"Token File: {TOKEN_FILE}")
33
+ print(f"Scopes: {SCOPES}")
34
+ print()
35
+
36
+ if not OAUTH_KEYS.exists():
37
+ print(f"ERRO: OAuth keys nao encontradas: {OAUTH_KEYS}")
38
+ return
39
+
40
+ # Inicia flow de autenticacao
41
+ flow = InstalledAppFlow.from_client_secrets_file(str(OAUTH_KEYS), SCOPES)
42
+
43
+ print("Abrindo navegador para autenticacao...")
44
+ print("Autorize o acesso ao Google Drive com permissao de ESCRITA.")
45
+ print()
46
+
47
+ # Executa autenticacao local
48
+ credentials = flow.run_local_server(port=8080)
49
+
50
+ # Salva novos tokens
51
+ token_data = {
52
+ 'access_token': credentials.token,
53
+ 'refresh_token': credentials.refresh_token,
54
+ 'scope': ' '.join(SCOPES),
55
+ 'token_type': 'Bearer',
56
+ 'expiry_date': int(credentials.expiry.timestamp() * 1000) if credentials.expiry else None
57
+ }
58
+
59
+ with open(TOKEN_FILE, 'w') as f:
60
+ json.dump(token_data, f, indent=2)
61
+
62
+ print()
63
+ print("=== AUTENTICACAO CONCLUIDA ===")
64
+ print(f"Token salvo em: {TOKEN_FILE}")
65
+ print(f"Scopes: {SCOPES}")
66
+ print()
67
+ print("Agora voce pode usar /sync-docs para fazer upload!")
68
+
69
+
70
+ if __name__ == "__main__":
71
+ main()