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,120 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ JARVIS Post Tool Use Hook
4
+ Executado após Claude Code usar uma ferramenta de edição/escrita.
5
+
6
+ Responsabilidades:
7
+ 1. Registrar arquivos modificados
8
+ 2. Detectar padrões
9
+ 3. Sugerir melhorias quando apropriado
10
+ """
11
+
12
+ import json
13
+ import sys
14
+ import os
15
+ from datetime import datetime
16
+ from pathlib import Path
17
+
18
+ def get_project_dir():
19
+ """Obtém o diretório do projeto."""
20
+ return os.environ.get('CLAUDE_PROJECT_DIR', os.getcwd())
21
+
22
+ def load_actions_log():
23
+ """Carrega log de ações."""
24
+ project_dir = get_project_dir()
25
+ log_path = Path(project_dir) / 'logs' / 'actions.json'
26
+
27
+ if log_path.exists():
28
+ with open(log_path, 'r', encoding='utf-8') as f:
29
+ return json.load(f)
30
+ return {'actions': []}
31
+
32
+ def save_actions_log(log):
33
+ """Salva log de ações."""
34
+ project_dir = get_project_dir()
35
+ log_path = Path(project_dir) / 'logs' / 'actions.json'
36
+ log_path.parent.mkdir(parents=True, exist_ok=True)
37
+
38
+ # Manter apenas últimas 100 ações
39
+ log['actions'] = log['actions'][-100:]
40
+
41
+ with open(log_path, 'w', encoding='utf-8') as f:
42
+ json.dump(log, f, indent=2, ensure_ascii=False)
43
+
44
+ def detect_patterns(actions):
45
+ """Detecta padrões nas ações recentes."""
46
+ if len(actions) < 3:
47
+ return None
48
+
49
+ # Verificar se mesmo arquivo foi editado múltiplas vezes
50
+ recent = actions[-10:]
51
+ file_counts = {}
52
+ for action in recent:
53
+ file_path = action.get('file_path', '')
54
+ if file_path:
55
+ file_counts[file_path] = file_counts.get(file_path, 0) + 1
56
+
57
+ # Se algum arquivo foi editado 3+ vezes
58
+ repeated = [f for f, c in file_counts.items() if c >= 3]
59
+ if repeated:
60
+ return {
61
+ 'type': 'repeated_edits',
62
+ 'files': repeated,
63
+ 'suggestion': 'Arquivo editado múltiplas vezes. Considerar refatoração.'
64
+ }
65
+
66
+ return None
67
+
68
+ def main():
69
+ """Função principal do hook."""
70
+ try:
71
+ # Ler input do hook (stdin)
72
+ input_data = sys.stdin.read()
73
+ hook_input = json.loads(input_data) if input_data else {}
74
+
75
+ # Extrair informações da ferramenta
76
+ tool_name = hook_input.get('tool_name', 'unknown')
77
+ tool_input = hook_input.get('tool_input', {})
78
+
79
+ file_path = tool_input.get('file_path', '')
80
+
81
+ # Carregar log
82
+ log = load_actions_log()
83
+
84
+ # Registrar ação
85
+ action = {
86
+ 'timestamp': datetime.now().isoformat(),
87
+ 'tool': tool_name,
88
+ 'file_path': file_path,
89
+ 'session_id': hook_input.get('session_id', 'unknown')
90
+ }
91
+ log['actions'].append(action)
92
+
93
+ # Salvar log
94
+ save_actions_log(log)
95
+
96
+ # Detectar padrões
97
+ pattern = detect_patterns(log['actions'])
98
+
99
+ # Preparar feedback
100
+ feedback = None
101
+ if pattern:
102
+ feedback = f"[JARVIS] Padrão detectado: {pattern['suggestion']}"
103
+
104
+ output = {
105
+ 'continue': True,
106
+ 'feedback': feedback
107
+ }
108
+
109
+ print(json.dumps(output))
110
+
111
+ except Exception as e:
112
+ # Em caso de erro, não bloquear a operação
113
+ error_output = {
114
+ 'continue': True,
115
+ 'feedback': None
116
+ }
117
+ print(json.dumps(error_output))
118
+
119
+ if __name__ == '__main__':
120
+ main()
@@ -0,0 +1,394 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Quality Watchdog - Layer 1 do META-AGENT System v1.0
4
+
5
+ FUNÇÃO: Detecta agentes em prompts e injeta MANDATORY_SECTIONS no contexto.
6
+ Faz parte do sistema de enforcement de qualidade (warn, não block).
7
+
8
+ REGRA #28: META-AGENT QUALITY AWARENESS
9
+ """
10
+
11
+ import json
12
+ import os
13
+ import re
14
+ from pathlib import Path
15
+ from datetime import datetime
16
+ from typing import Dict, Optional
17
+
18
+ PROJECT_ROOT = Path(os.environ.get('CLAUDE_PROJECT_DIR', '.'))
19
+ AGENTS_PATH = PROJECT_ROOT / "agents"
20
+ JARVIS_SUBAGENTS = PROJECT_ROOT / ".claude" / "jarvis" / "sub-agents"
21
+ LOGS_PATH = PROJECT_ROOT / "logs"
22
+ QUALITY_GAPS_LOG = LOGS_PATH / "quality_gaps.jsonl"
23
+
24
+
25
+ # ═══════════════════════════════════════════════════════════════════════════
26
+ # AGENT DETECTION
27
+ # ═══════════════════════════════════════════════════════════════════════════
28
+
29
+ # Keywords para sub-agents JARVIS
30
+ SUBAGENT_KEYWORDS = {
31
+ "chronicler": ["log bonito", "log visual", "chronicler", "formatar log", "status formatado", "resumo visual"],
32
+ }
33
+
34
+ # Dynamic caches (populated on first use)
35
+ _PERSON_KEYWORDS_CACHE = None
36
+ _CARGO_KEYWORDS_CACHE = None
37
+
38
+
39
+ def _scan_agents_directory(subdir: str) -> Dict:
40
+ """
41
+ Dynamically scan agents/{subdir}/ to build keyword map.
42
+ Each subdirectory name becomes an agent key, and keywords are
43
+ generated from the directory name parts.
44
+ """
45
+ keywords = {}
46
+ scan_path = AGENTS_PATH / subdir
47
+ if not scan_path.exists():
48
+ return keywords
49
+
50
+ for entry in scan_path.iterdir():
51
+ if entry.is_dir():
52
+ agent_name = entry.name.lower()
53
+ # Generate keywords from directory name
54
+ parts = agent_name.replace('-', ' ').replace('_', ' ').split()
55
+ kws = [agent_name.replace('-', ' ')] # full name as keyword
56
+ # Add individual meaningful parts (skip very short ones)
57
+ for part in parts:
58
+ if len(part) >= 3:
59
+ kws.append(part)
60
+ # Also add the hyphenated form
61
+ if '-' in agent_name or '_' in agent_name:
62
+ kws.append(agent_name)
63
+ keywords[agent_name] = list(set(kws))
64
+
65
+ return keywords
66
+
67
+
68
+ def _get_person_keywords() -> Dict:
69
+ """Lazily load person keywords from agents/persons/ directory."""
70
+ global _PERSON_KEYWORDS_CACHE
71
+ if _PERSON_KEYWORDS_CACHE is None:
72
+ _PERSON_KEYWORDS_CACHE = _scan_agents_directory("persons")
73
+ return _PERSON_KEYWORDS_CACHE
74
+
75
+
76
+ def _get_cargo_keywords() -> Dict:
77
+ """Lazily load cargo keywords from agents/cargo/ directory (recursive)."""
78
+ global _CARGO_KEYWORDS_CACHE
79
+ if _CARGO_KEYWORDS_CACHE is None:
80
+ _CARGO_KEYWORDS_CACHE = {}
81
+ cargo_path = AGENTS_PATH / "cargo"
82
+ if cargo_path.exists():
83
+ # Scan all subdirectories recursively for agent folders containing AGENT.md
84
+ for agent_md in cargo_path.rglob("AGENT.md"):
85
+ agent_dir = agent_md.parent
86
+ agent_name = agent_dir.name.lower()
87
+ parts = agent_name.replace('-', ' ').replace('_', ' ').split()
88
+ kws = [agent_name.replace('-', ' ')]
89
+ for part in parts:
90
+ if len(part) >= 3:
91
+ kws.append(part)
92
+ _CARGO_KEYWORDS_CACHE[agent_name] = list(set(kws))
93
+ return _CARGO_KEYWORDS_CACHE
94
+
95
+
96
+ def detect_agent_in_prompt(prompt: str) -> Dict:
97
+ """
98
+ Detecta qual agente está sendo requisitado no prompt.
99
+
100
+ Returns:
101
+ dict: {type: "subagent"|"person"|"cargo"|None, name: str|None}
102
+ """
103
+ prompt_lower = prompt.lower()
104
+
105
+ # Detecta sub-agent JARVIS (prioridade mais alta)
106
+ for agent, keywords in SUBAGENT_KEYWORDS.items():
107
+ if any(kw in prompt_lower for kw in keywords):
108
+ return {"type": "subagent", "name": agent}
109
+
110
+ # Detecta PERSON agent (dynamically from agents/persons/ directory)
111
+ for agent, keywords in _get_person_keywords().items():
112
+ if any(kw in prompt_lower for kw in keywords):
113
+ return {"type": "person", "name": agent}
114
+
115
+ # Detecta CARGO agent (dynamically from agents/cargo/ directory)
116
+ for agent, keywords in _get_cargo_keywords().items():
117
+ if any(kw in prompt_lower for kw in keywords):
118
+ return {"type": "cargo", "name": agent}
119
+
120
+ return {"type": None, "name": None}
121
+
122
+
123
+ # ═══════════════════════════════════════════════════════════════════════════
124
+ # MANDATORY SECTIONS EXTRACTION
125
+ # ═══════════════════════════════════════════════════════════════════════════
126
+
127
+ def extract_mandatory_sections(agent_path: Path) -> Dict:
128
+ """
129
+ Extrai MANDATORY_SECTIONS do header do AGENT.md.
130
+
131
+ Prioridade:
132
+ 1. Bloco formal <!-- MANDATORY --> ... <!-- End MANDATORY -->
133
+ 2. Seção ## ⚠️ MANDATORY OUTPUT SECTIONS
134
+ 3. Fallback: primeiras 50 linhas
135
+ """
136
+ agent_md = agent_path / "AGENT.md"
137
+ if not agent_md.exists():
138
+ return {"found": False, "content": "", "lines": 0}
139
+
140
+ try:
141
+ content = agent_md.read_text(encoding='utf-8')
142
+ except Exception as e:
143
+ return {"found": False, "content": "", "lines": 0, "error": str(e)}
144
+
145
+ # Método 1: Bloco formal com comentários HTML
146
+ match = re.search(
147
+ r'<!-- MANDATORY -->(.+?)<!-- End MANDATORY -->',
148
+ content,
149
+ re.DOTALL | re.IGNORECASE
150
+ )
151
+ if match:
152
+ return {
153
+ "found": True,
154
+ "method": "html_comments",
155
+ "content": match.group(1).strip(),
156
+ "lines": len(match.group(1).split('\n'))
157
+ }
158
+
159
+ # Método 2: Seção com header markdown
160
+ match = re.search(
161
+ r'## ⚠️ MANDATORY OUTPUT SECTIONS.*?(?=## [^⚠️]|$)',
162
+ content,
163
+ re.DOTALL | re.IGNORECASE
164
+ )
165
+ if match:
166
+ return {
167
+ "found": True,
168
+ "method": "markdown_header",
169
+ "content": match.group(0).strip(),
170
+ "lines": len(match.group(0).split('\n'))
171
+ }
172
+
173
+ # Método 3: Fallback - primeiras 50 linhas (para agents sem MANDATORY formal)
174
+ lines = content.split('\n')[:50]
175
+ return {
176
+ "found": False,
177
+ "method": "fallback_header",
178
+ "content": '\n'.join(lines),
179
+ "lines": 50
180
+ }
181
+
182
+
183
+ def resolve_agent_path(agent_info: Dict) -> Optional[Path]:
184
+ """Resolve o caminho do agente baseado no tipo."""
185
+ if not agent_info.get("name"):
186
+ return None
187
+
188
+ agent_name = agent_info["name"].upper()
189
+
190
+ if agent_info["type"] == "subagent":
191
+ return JARVIS_SUBAGENTS / agent_name
192
+ elif agent_info["type"] == "person":
193
+ return AGENTS_PATH / "persons" / agent_name
194
+ elif agent_info["type"] == "cargo":
195
+ # Cargo agents têm estrutura diferente
196
+ cargo_paths = {
197
+ "CRO": AGENTS_PATH / "cargo" / "C-LEVEL" / "CRO",
198
+ "CFO": AGENTS_PATH / "cargo" / "C-LEVEL" / "CFO",
199
+ "SALES-MANAGER": AGENTS_PATH / "cargo" / "SALES" / "SALES-MANAGER",
200
+ "closer": AGENTS_PATH / "cargo" / "SALES" / "closer",
201
+ "SDR": AGENTS_PATH / "cargo" / "SALES" / "SDR",
202
+ }
203
+ return cargo_paths.get(agent_name)
204
+
205
+ return None
206
+
207
+
208
+ # ═══════════════════════════════════════════════════════════════════════════
209
+ # CONTEXT INJECTION
210
+ # ═══════════════════════════════════════════════════════════════════════════
211
+
212
+ def inject_quality_context(prompt: str) -> str:
213
+ """
214
+ Injeta contexto de qualidade se agente detectado.
215
+
216
+ Retorna string vazia se nenhum agente detectado.
217
+ """
218
+ agent_info = detect_agent_in_prompt(prompt)
219
+
220
+ if not agent_info.get("name"):
221
+ return ""
222
+
223
+ agent_path = resolve_agent_path(agent_info)
224
+ if not agent_path or not agent_path.exists():
225
+ return ""
226
+
227
+ mandatory = extract_mandatory_sections(agent_path)
228
+
229
+ # Sempre injeta contexto se agente detectado
230
+ context = f"""
231
+ [QUALITY WATCHDOG ACTIVATED]
232
+ Agent detected: {agent_info['name']}
233
+ Type: {agent_info['type']}
234
+ Path: {agent_path}
235
+
236
+ """
237
+
238
+ if mandatory.get("found"):
239
+ context += f"""--- MANDATORY SECTIONS (MUST INCLUDE IN OUTPUT) ---
240
+ {mandatory['content']}
241
+ --- END MANDATORY SECTIONS ---
242
+
243
+ ⚠️ OUTPUT WILL BE VALIDATED AGAINST THESE REQUIREMENTS
244
+ ⚠️ Quality scoring active - minimum recommended: 70/100
245
+ """
246
+ else:
247
+ context += f"""--- AGENT HEADER (First 50 lines) ---
248
+ {mandatory['content']}
249
+ --- END HEADER ---
250
+
251
+ ℹ️ No formal MANDATORY_SECTIONS found. Using header as reference.
252
+ """
253
+
254
+ return context
255
+
256
+
257
+ # ═══════════════════════════════════════════════════════════════════════════
258
+ # LOGGING
259
+ # ═══════════════════════════════════════════════════════════════════════════
260
+
261
+ def log_quality_gap(agent: str, score: int, missing: list, agent_type: str = "unknown"):
262
+ """
263
+ Loga gap de qualidade para análise do DOCTOR (Layer 2).
264
+
265
+ Não bloqueia - apenas registra para análise posterior.
266
+ """
267
+ # Garantir que diretório existe
268
+ QUALITY_GAPS_LOG.parent.mkdir(parents=True, exist_ok=True)
269
+
270
+ entry = {
271
+ "timestamp": datetime.now().isoformat(),
272
+ "agent": agent,
273
+ "agent_type": agent_type,
274
+ "score": score,
275
+ "missing_sections": missing,
276
+ "status": "gap_detected",
277
+ "action_taken": "logged_for_review"
278
+ }
279
+
280
+ try:
281
+ with open(QUALITY_GAPS_LOG, "a", encoding='utf-8') as f:
282
+ f.write(json.dumps(entry, ensure_ascii=False) + "\n")
283
+ except Exception as e:
284
+ # Falha silenciosa - não deve interromper fluxo
285
+ pass
286
+
287
+
288
+ def log_watchdog_activation(agent_info: Dict, mandatory_found: bool):
289
+ """Loga ativação do watchdog para auditoria."""
290
+ log_file = LOGS_PATH / "watchdog_activations.jsonl"
291
+ log_file.parent.mkdir(parents=True, exist_ok=True)
292
+
293
+ entry = {
294
+ "timestamp": datetime.now().isoformat(),
295
+ "agent": agent_info.get("name"),
296
+ "type": agent_info.get("type"),
297
+ "mandatory_found": mandatory_found
298
+ }
299
+
300
+ try:
301
+ with open(log_file, "a", encoding='utf-8') as f:
302
+ f.write(json.dumps(entry, ensure_ascii=False) + "\n")
303
+ except Exception:
304
+ pass
305
+
306
+
307
+ # ═══════════════════════════════════════════════════════════════════════════
308
+ # MAIN INTERFACE
309
+ # ═══════════════════════════════════════════════════════════════════════════
310
+
311
+ def process_prompt(prompt: str) -> Dict:
312
+ """
313
+ Processa prompt e retorna contexto de qualidade se aplicável.
314
+
315
+ Interface principal para integração com user_prompt_submit.py
316
+ """
317
+ agent_info = detect_agent_in_prompt(prompt)
318
+
319
+ result = {
320
+ "agent_detected": agent_info.get("name") is not None,
321
+ "agent_info": agent_info,
322
+ "context": "",
323
+ "mandatory_found": False
324
+ }
325
+
326
+ if agent_info.get("name"):
327
+ context = inject_quality_context(prompt)
328
+ result["context"] = context
329
+ result["mandatory_found"] = "MANDATORY SECTIONS" in context
330
+
331
+ # Log activation
332
+ log_watchdog_activation(agent_info, result["mandatory_found"])
333
+
334
+ return result
335
+
336
+
337
+ # ═══════════════════════════════════════════════════════════════════════════
338
+ # CLI INTERFACE
339
+ # ═══════════════════════════════════════════════════════════════════════════
340
+
341
+ def main():
342
+ """
343
+ Hook entry point for Claude Code UserPromptSubmit event.
344
+ Reads JSON from stdin, outputs JSON to stdout.
345
+ """
346
+ import sys
347
+
348
+ try:
349
+ input_data = sys.stdin.read()
350
+ hook_input = json.loads(input_data) if input_data else {}
351
+
352
+ prompt = hook_input.get('prompt', '')
353
+ if not prompt:
354
+ print(json.dumps({'continue': True}))
355
+ return
356
+
357
+ result = process_prompt(prompt)
358
+
359
+ feedback = result.get('context') if result.get('agent_detected') else None
360
+
361
+ print(json.dumps({
362
+ 'continue': True,
363
+ 'feedback': feedback if feedback else None
364
+ }))
365
+
366
+ except Exception:
367
+ print(json.dumps({'continue': True}))
368
+
369
+
370
+ def cli_test():
371
+ """CLI test mode - run directly for debugging."""
372
+ import sys
373
+
374
+ if len(sys.argv) > 1:
375
+ test_prompt = " ".join(sys.argv[1:])
376
+ else:
377
+ test_prompt = "me dá um log bonito do conteúdo do Alex Hormozi"
378
+
379
+ print(f"Testing prompt: {test_prompt}\n")
380
+
381
+ result = process_prompt(test_prompt)
382
+
383
+ print(f"Agent detected: {result['agent_detected']}")
384
+ print(f"Agent info: {result['agent_info']}")
385
+ print(f"Mandatory found: {result['mandatory_found']}")
386
+ print(f"\nContext to inject:\n{result['context'][:500]}...")
387
+
388
+
389
+ if __name__ == "__main__":
390
+ import sys
391
+ if len(sys.argv) > 1 and sys.argv[1] == '--test':
392
+ cli_test()
393
+ else:
394
+ main()