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,504 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Sync package.json files field with L1 audit classifications.
4
+
5
+ Reads audit_layers.py classifications, computes optimal files array,
6
+ and can apply it to package.json.
7
+
8
+ Usage:
9
+ python3 core/intelligence/sync_package_files.py --print # JSON to stdout
10
+ python3 core/intelligence/sync_package_files.py --apply # Update package.json
11
+ python3 core/intelligence/sync_package_files.py --diff # Show changes
12
+ python3 core/intelligence/sync_package_files.py --npmignore # Print .npmignore
13
+ python3 core/intelligence/sync_package_files.py --npmignore --apply # Write .npmignore
14
+ python3 core/intelligence/sync_package_files.py --allowlist # Print allowlist
15
+ python3 core/intelligence/sync_package_files.py --allowlist --apply # Write allowlist
16
+ """
17
+ import sys
18
+ import json
19
+ import argparse
20
+ from pathlib import Path
21
+ from collections import defaultdict
22
+ from datetime import datetime, timezone
23
+
24
+ sys.path.insert(0, str(Path(__file__).parent))
25
+ from audit_layers import scan_repository, classify_path, L2_PATTERNS, L3_PATTERNS, NEVER_PATTERNS
26
+
27
+ # Files auto-included by npm (do NOT add to files array)
28
+ NPM_AUTO_INCLUDED = {
29
+ 'package.json',
30
+ 'README.md',
31
+ 'README',
32
+ 'CHANGELOG.md',
33
+ 'CHANGELOG',
34
+ 'LICENSE',
35
+ 'LICENSE.md',
36
+ 'LICENCE',
37
+ 'LICENCE.md',
38
+ }
39
+
40
+ # L1 paths to EXCLUDE from npm package
41
+ # (development-only content that shouldn't ship to consumers)
42
+ EXCLUDE_FROM_PACKAGE = {
43
+ '.planning', # GSD planning system (dev-only)
44
+ 'docs/audit', # Generated audit reports (dev-only)
45
+ '.npmignore', # npm uses it but doesn't pack it
46
+ 'package-lock.json', # npm excludes this from pack
47
+ }
48
+
49
+
50
+ def _is_excluded(rel_path: str) -> bool:
51
+ """Check if a path should be excluded from the package."""
52
+ # Check exact match for root files
53
+ if rel_path in EXCLUDE_FROM_PACKAGE:
54
+ return True
55
+ # Check directory prefix match
56
+ for excl in EXCLUDE_FROM_PACKAGE:
57
+ if rel_path.startswith(excl + '/'):
58
+ return True
59
+ return False
60
+
61
+
62
+ def compute_files_array(repo_root: Path) -> list:
63
+ """
64
+ Compute the optimal package.json files array from L1 audit.
65
+
66
+ Algorithm:
67
+ 1. Get all L1-classified files from audit
68
+ 2. Remove npm auto-included files and excluded paths
69
+ 3. Group files by directory
70
+ 4. For each directory, check if ALL files in that dir (across ALL layers) are L1
71
+ 5. If pure L1 dir: use directory glob
72
+ 6. If mixed: recurse into subdirectories or list individual files
73
+ 7. Deduplicate and sort
74
+ """
75
+ data = scan_repository(repo_root)
76
+
77
+ # Build map of ALL file classifications by directory
78
+ all_files_by_dir = defaultdict(list) # dir -> [(rel_path, layer)]
79
+ l1_files = set()
80
+
81
+ for item in data['classifications']:
82
+ if item['type'] != 'file':
83
+ continue
84
+ rel = item['path']
85
+ layer = item['layer']
86
+
87
+ # Skip npm auto-included root files
88
+ if rel in NPM_AUTO_INCLUDED:
89
+ continue
90
+ # Skip excluded paths
91
+ if _is_excluded(rel):
92
+ continue
93
+
94
+ parts = rel.split('/')
95
+ if len(parts) == 1:
96
+ dir_key = '.'
97
+ else:
98
+ dir_key = '/'.join(parts[:-1])
99
+
100
+ all_files_by_dir[dir_key].append((rel, layer))
101
+
102
+ if layer == 'L1':
103
+ l1_files.add(rel)
104
+
105
+ if not l1_files:
106
+ return []
107
+
108
+ # Build set of all directories and their purity status
109
+ # A directory is "pure L1" if ALL files within it (recursively) are L1
110
+ dir_purity = {} # dir_path -> bool (True = all files are L1)
111
+
112
+ # First, compute purity for leaf directories
113
+ for dir_key, items in all_files_by_dir.items():
114
+ is_pure = all(layer == 'L1' for _, layer in items)
115
+ dir_purity[dir_key] = is_pure
116
+
117
+ # Now compute purity for parent directories (a parent is pure only if all
118
+ # its children directories are also pure AND its own files are all L1)
119
+ all_dirs = sorted(dir_purity.keys(), key=lambda d: d.count('/'), reverse=True)
120
+
121
+ # Build parent -> children map
122
+ children_map = defaultdict(set)
123
+ for d in all_dirs:
124
+ parts = d.split('/')
125
+ if len(parts) > 1:
126
+ parent = '/'.join(parts[:-1])
127
+ children_map[parent].add(d)
128
+
129
+ # Propagate purity upward
130
+ for d in all_dirs:
131
+ if d in children_map:
132
+ # This dir has subdirectories - it's pure only if itself AND all children are pure
133
+ if dir_purity.get(d, True): # own files pure?
134
+ dir_purity[d] = all(dir_purity.get(child, False) for child in children_map[d])
135
+ # else already False
136
+
137
+ # Now find the optimal set of entries
138
+ entries = set()
139
+ covered_files = set()
140
+
141
+ def _find_deepest_pure_ancestor(file_path: str) -> str:
142
+ """Find the deepest directory that is pure L1 and covers this file."""
143
+ parts = file_path.split('/')
144
+ if len(parts) == 1:
145
+ return None # Root file, no directory to use
146
+
147
+ # Check from shallowest to deepest to find the SHALLOWEST pure ancestor
148
+ # (this gives maximum coverage with minimum entries)
149
+ best = None
150
+ for i in range(1, len(parts)):
151
+ dir_path = '/'.join(parts[:i])
152
+ if dir_purity.get(dir_path, False):
153
+ best = dir_path
154
+ break # Use shallowest pure ancestor for maximum rollup
155
+
156
+ return best
157
+
158
+ # Process all L1 files
159
+ for f in sorted(l1_files):
160
+ if f in covered_files:
161
+ continue
162
+
163
+ ancestor = _find_deepest_pure_ancestor(f)
164
+ if ancestor and ancestor != '.':
165
+ # Use directory glob
166
+ entry = ancestor + '/'
167
+ if entry not in entries:
168
+ entries.add(entry)
169
+ # Mark all L1 files under this directory as covered
170
+ for other_f in l1_files:
171
+ if other_f.startswith(ancestor + '/'):
172
+ covered_files.add(other_f)
173
+ else:
174
+ # Individual file (root-level or in mixed directory)
175
+ entries.add(f)
176
+ covered_files.add(f)
177
+
178
+ # Deduplicate: remove subdirectory entries if parent directory covers them
179
+ final_entries = set()
180
+ sorted_entries = sorted(entries)
181
+ for entry in sorted_entries:
182
+ # Check if any existing entry already covers this one
183
+ is_covered = False
184
+ for existing in final_entries:
185
+ if existing.endswith('/') and entry.startswith(existing):
186
+ is_covered = True
187
+ break
188
+ if not is_covered:
189
+ final_entries.add(entry)
190
+
191
+ return sorted(final_entries)
192
+
193
+
194
+ def generate_npmignore(repo_root: Path) -> str:
195
+ """Generate .npmignore content from audit layer classifications."""
196
+ lines = []
197
+ lines.append("# ===========================================")
198
+ lines.append("# .npmignore - Mega Brain npm package")
199
+ lines.append("# ===========================================")
200
+ lines.append("# AUTO-GENERATED from audit layer classifications.")
201
+ lines.append("# Source of truth: core/intelligence/audit_layers.py")
202
+ lines.append("# Regenerate: python3 core/intelligence/sync_package_files.py --npmignore --apply")
203
+ lines.append("#")
204
+ lines.append("# Defense-in-depth: package.json \"files\" is the")
205
+ lines.append("# primary whitelist. This file is the SECOND layer.")
206
+ lines.append("# ===========================================")
207
+ lines.append("")
208
+
209
+ # Python build artifacts
210
+ lines.append("# === PYTHON BUILD ARTIFACTS (NEVER ship) ===")
211
+ lines.append("__pycache__/")
212
+ lines.append("**/__pycache__/")
213
+ lines.append("**/*.pyc")
214
+ lines.append("**/*.pyo")
215
+ lines.append("**/*.pyd")
216
+ lines.append("*.egg-info/")
217
+ lines.append("")
218
+
219
+ # L2 content
220
+ lines.append("# === L2 CONTENT (Premium -- not in public package) ===")
221
+ lines.append("# Source: L2_PATTERNS in audit_layers.py")
222
+ for pattern in sorted(L2_PATTERNS):
223
+ lines.append(pattern.rstrip('/') + '/')
224
+ lines.append("")
225
+
226
+ # L3 content
227
+ lines.append("# === L3 CONTENT (Personal -- never distributed) ===")
228
+ lines.append("# Source: L3_PATTERNS in audit_layers.py")
229
+ for pattern in sorted(L3_PATTERNS):
230
+ lines.append(pattern.rstrip('/') + '/')
231
+ lines.append("")
232
+
233
+ # NEVER content
234
+ lines.append("# === NEVER CONTENT (Secrets/sensitive) ===")
235
+ lines.append("# Source: NEVER_PATTERNS in audit_layers.py")
236
+ for pattern in sorted(NEVER_PATTERNS):
237
+ if pattern.endswith('/'):
238
+ lines.append(pattern)
239
+ elif '.' in pattern and not pattern.startswith('.'):
240
+ # File pattern
241
+ lines.append(pattern)
242
+ else:
243
+ # Could be extension or exact match
244
+ lines.append(pattern)
245
+ lines.append(".env.*")
246
+ lines.append("")
247
+
248
+ # Development-only
249
+ lines.append("# === DEVELOPMENT-ONLY (not for consumers) ===")
250
+ lines.append(".planning/")
251
+ lines.append("docs/audit/")
252
+ lines.append("docs/plans/")
253
+ lines.append("docs/validation/")
254
+ lines.append("")
255
+
256
+ # Runtime state
257
+ lines.append("# === RUNTIME STATE (per-user, not template) ===")
258
+ lines.append(".claude/agent-memory/")
259
+ lines.append(".claude/monitoring/")
260
+ lines.append(".claude/learning-system/")
261
+ lines.append(".claude/aios/")
262
+ lines.append(".claude/jarvis/STATE.json")
263
+ lines.append(".claude/jarvis/DECISIONS-LOG.md")
264
+ lines.append(".claude/jarvis/CONTEXT-STACK.json")
265
+ lines.append(".claude/jarvis/PENDING.md")
266
+ lines.append(".claude/jarvis/CURRENT-TASK.md")
267
+ lines.append(".claude/settings.local.json")
268
+ lines.append(".claude/audit-*.json")
269
+ lines.append("")
270
+
271
+ # Company-specific
272
+ lines.append("# === COMPANY-SPECIFIC CONTENT ===")
273
+ lines.append(".claude/skills/ask-company/")
274
+ lines.append(".claude/skills/process-company-inbox/")
275
+ lines.append(".claude/skills/*-company-*")
276
+ lines.append("")
277
+
278
+ # L2-only skills
279
+ lines.append("# === L2-ONLY SKILLS (premium layer) ===")
280
+ l2_skills = [
281
+ "council", "executor", "fase-2-5-tagging", "finance-agent",
282
+ "gdrive-transcription-downloader", "hybrid-source-reading",
283
+ "ler-planilha", "smart-download-tagger", "source-sync",
284
+ "sync-docs", "talent-agent", "chronicler", "gemini-fallback",
285
+ "jarvis", "jarvis-briefing", "resume", "save", "verify",
286
+ ]
287
+ for skill in sorted(l2_skills):
288
+ lines.append(f".claude/skills/{skill}/")
289
+ lines.append("")
290
+
291
+ # Media files
292
+ lines.append("# === MEDIA FILES ===")
293
+ for ext in ["*.mp4", "*.mp3", "*.wav", "*.m4a", "*.mov", "*.avi", "*.mkv"]:
294
+ lines.append(ext)
295
+ lines.append("")
296
+
297
+ # Large/binary files
298
+ lines.append("# === LARGE/BINARY FILES ===")
299
+ for ext in ["*.b64", "*.db", "*.sqlite", "*.pdf", "*.zip", "*.tar", "*.gz", "*.bz2"]:
300
+ lines.append(ext)
301
+ lines.append("")
302
+
303
+ # OS & IDE
304
+ lines.append("# === OS & IDE ===")
305
+ lines.append(".DS_Store")
306
+ lines.append("Thumbs.db")
307
+ lines.append(".vscode/")
308
+ lines.append(".idea/")
309
+ lines.append(".obsidian/")
310
+ lines.append("")
311
+
312
+ # Build artifacts
313
+ lines.append("# === BUILD ARTIFACTS ===")
314
+ lines.append("dist/")
315
+ lines.append("build/")
316
+ lines.append(".venv*/")
317
+ lines.append("venv/")
318
+ lines.append("vendor/")
319
+ lines.append("chroma_db/")
320
+ lines.append(".chroma/")
321
+ lines.append("")
322
+
323
+ # Backups & temp
324
+ lines.append("# === BACKUPS & TEMP ===")
325
+ lines.append("*_BACKUP_*.py")
326
+ lines.append("*.bak")
327
+ lines.append("*.tmp")
328
+ lines.append("")
329
+
330
+ # Git
331
+ lines.append("# === GIT (npm handles this, but explicit) ===")
332
+ lines.append(".git/")
333
+
334
+ return '\n'.join(lines) + '\n'
335
+
336
+
337
+ def generate_allowlist(files_array: list, repo_root: Path) -> str:
338
+ """Generate layer1-allowlist.txt from package.json files array."""
339
+ now = datetime.now(timezone.utc).strftime('%Y-%m-%d')
340
+ lines = []
341
+ lines.append("# Layer 1 Allowlist - PUBLIC content (free/community)")
342
+ lines.append("# ==============================================================")
343
+ lines.append("# AUTO-GENERATED from package.json files field.")
344
+ lines.append("# Regenerate: python3 core/intelligence/sync_package_files.py --allowlist --apply")
345
+ lines.append("#")
346
+ lines.append("# ONLY paths listed here are included in Layer 1 (public repo).")
347
+ lines.append("# Everything else is PREMIUM by default (Layer 2+).")
348
+ lines.append("#")
349
+ lines.append("# SYNCED WITH: package.json \"files\" field")
350
+ lines.append(f"# AUDITED: {now}")
351
+ lines.append("# ==============================================================")
352
+ lines.append("")
353
+
354
+ # Group entries by top-level directory
355
+ groups = defaultdict(list)
356
+ for entry in files_array:
357
+ parts = entry.split('/')
358
+ top = parts[0]
359
+ groups[top].append(entry)
360
+
361
+ # Category labels
362
+ labels = {
363
+ '.': 'Root files',
364
+ '.antigravity': 'IDE integration (Antigravity)',
365
+ '.claude': 'Claude Code integration',
366
+ '.cursor': 'IDE integration (Cursor)',
367
+ '.github': 'GitHub integration',
368
+ '.windsurf': 'IDE integration (Windsurf)',
369
+ 'agents': 'Agent system',
370
+ 'artifacts': 'Artifact scaffolding',
371
+ 'bin': 'CLI tools',
372
+ 'core': 'Core engine',
373
+ 'docs': 'Documentation',
374
+ 'inbox': 'Inbox scaffolding',
375
+ 'knowledge': 'Knowledge scaffolding',
376
+ 'logs': 'Logs scaffolding',
377
+ 'reference': 'Reference materials',
378
+ }
379
+
380
+ for top in sorted(groups.keys()):
381
+ label = labels.get(top, top)
382
+ lines.append(f"# --- {label} ---")
383
+ for entry in sorted(groups[top]):
384
+ lines.append(entry)
385
+ lines.append("")
386
+
387
+ return '\n'.join(lines)
388
+
389
+
390
+ def main():
391
+ parser = argparse.ArgumentParser(
392
+ description='Sync package.json files field with L1 audit classifications.',
393
+ )
394
+ parser.add_argument(
395
+ '--print', dest='print_mode', action='store_true',
396
+ help='Print computed files array as JSON to stdout',
397
+ )
398
+ parser.add_argument(
399
+ '--apply', action='store_true',
400
+ help='Apply changes to the target file (package.json, .npmignore, or allowlist)',
401
+ )
402
+ parser.add_argument(
403
+ '--diff', action='store_true',
404
+ help='Show diff between current and computed files array',
405
+ )
406
+ parser.add_argument(
407
+ '--npmignore', action='store_true',
408
+ help='Generate .npmignore content',
409
+ )
410
+ parser.add_argument(
411
+ '--allowlist', action='store_true',
412
+ help='Generate layer1-allowlist.txt content',
413
+ )
414
+ args = parser.parse_args()
415
+
416
+ if not any([args.print_mode, args.apply, args.diff, args.npmignore, args.allowlist]):
417
+ parser.print_help()
418
+ sys.exit(1)
419
+
420
+ # Determine repo root
421
+ script_path = Path(__file__).resolve()
422
+ repo_root = script_path.parent.parent.parent # mega-brain/
423
+
424
+ if not (repo_root / 'core').exists():
425
+ print(f"ERROR: Could not find repo root. Expected core/ in {repo_root}", file=sys.stderr)
426
+ sys.exit(1)
427
+
428
+ # Handle --npmignore
429
+ if args.npmignore:
430
+ content = generate_npmignore(repo_root)
431
+ if args.apply:
432
+ npmignore_path = repo_root / '.npmignore'
433
+ npmignore_path.write_text(content)
434
+ line_count = len(content.strip().split('\n'))
435
+ print(f"Wrote .npmignore ({line_count} lines)", file=sys.stderr)
436
+ else:
437
+ print(content)
438
+ return 0
439
+
440
+ # Handle --allowlist
441
+ if args.allowlist:
442
+ files_array = compute_files_array(repo_root)
443
+ content = generate_allowlist(files_array, repo_root)
444
+ if args.apply:
445
+ allowlist_path = repo_root / '.github' / 'layer1-allowlist.txt'
446
+ allowlist_path.parent.mkdir(parents=True, exist_ok=True)
447
+ allowlist_path.write_text(content)
448
+ entry_count = len(files_array)
449
+ print(f"Wrote .github/layer1-allowlist.txt ({entry_count} entries)", file=sys.stderr)
450
+ else:
451
+ print(content)
452
+ return 0
453
+
454
+ # Compute files array
455
+ files_array = compute_files_array(repo_root)
456
+
457
+ if args.print_mode:
458
+ print(json.dumps(files_array, indent=2))
459
+ return 0
460
+
461
+ if args.diff:
462
+ pkg_path = repo_root / 'package.json'
463
+ with open(pkg_path) as f:
464
+ pkg = json.load(f)
465
+ current = set(pkg.get('files', []))
466
+ computed = set(files_array)
467
+
468
+ added = sorted(computed - current)
469
+ removed = sorted(current - computed)
470
+
471
+ if not added and not removed:
472
+ print("No changes - package.json files field is already in sync.")
473
+ else:
474
+ if added:
475
+ print(f"+ Added ({len(added)}):")
476
+ for e in added:
477
+ print(f" + {e}")
478
+ if removed:
479
+ print(f"- Removed ({len(removed)}):")
480
+ for e in removed:
481
+ print(f" - {e}")
482
+ print(f"\nCurrent: {len(current)} entries -> Computed: {len(computed)} entries")
483
+ return 0
484
+
485
+ if args.apply:
486
+ pkg_path = repo_root / 'package.json'
487
+ with open(pkg_path) as f:
488
+ pkg = json.load(f)
489
+
490
+ old_count = len(pkg.get('files', []))
491
+ pkg['files'] = files_array
492
+
493
+ with open(pkg_path, 'w') as f:
494
+ json.dump(pkg, f, indent=2)
495
+ f.write('\n')
496
+
497
+ print(f"Updated package.json: {old_count} entries -> {len(files_array)} entries", file=sys.stderr)
498
+ return 0
499
+
500
+ return 0
501
+
502
+
503
+ if __name__ == '__main__':
504
+ sys.exit(main())