@omnizap-system/omnizap 2.5.12

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 (425) hide show
  1. package/.clusterfuzzlite/Dockerfile +10 -0
  2. package/.env.example +907 -0
  3. package/.github/codeql/codeql-config.yml +10 -0
  4. package/.github/dependabot.yml +35 -0
  5. package/.github/workflows/ci.yml +73 -0
  6. package/.github/workflows/codeql.yml +106 -0
  7. package/.github/workflows/db-migration-check.yml +98 -0
  8. package/.github/workflows/dependency-review.yml +22 -0
  9. package/.github/workflows/deploy.yml +95 -0
  10. package/.github/workflows/release.yml +106 -0
  11. package/.github/workflows/security-attest-provenance.yml +51 -0
  12. package/.github/workflows/security-gitleaks.yml +34 -0
  13. package/.github/workflows/security-runner-hardening.yml +31 -0
  14. package/.github/workflows/security-scorecard.yml +44 -0
  15. package/.github/workflows/security-zap-baseline.yml +44 -0
  16. package/.github/workflows/security-zap-full-scan.yml +43 -0
  17. package/.github/workflows/security-zizmor.yml +36 -0
  18. package/.github/workflows/wiki-sync.yml +44 -0
  19. package/.gitleaks.toml +15 -0
  20. package/.prettierrc +34 -0
  21. package/CODE_OF_CONDUCT.md +114 -0
  22. package/LICENSE +56 -0
  23. package/README.md +110 -0
  24. package/SECURITY.md +110 -0
  25. package/app/config/index.js +4 -0
  26. package/app/configParts/adminIdentity.js +92 -0
  27. package/app/configParts/baileysConfig.js +1818 -0
  28. package/app/configParts/groupUtils.js +692 -0
  29. package/app/configParts/loggerConfig.js +394 -0
  30. package/app/configParts/messagePersistenceService.js +305 -0
  31. package/app/connection/baileysCompatibility.test.js +40 -0
  32. package/app/connection/baileysDbAuthState.js +344 -0
  33. package/app/connection/socketController.js +2243 -0
  34. package/app/controllers/messageController.js +7 -0
  35. package/app/controllers/messagePipeline/commandMiddleware.js +146 -0
  36. package/app/controllers/messagePipeline/conversationMiddleware.js +183 -0
  37. package/app/controllers/messagePipeline/messagePipelineMiddlewares.test.js +522 -0
  38. package/app/controllers/messagePipeline/postProcessingMiddleware.js +41 -0
  39. package/app/controllers/messagePipeline/preProcessingMiddlewares.js +166 -0
  40. package/app/controllers/messageProcessingPipeline.js +699 -0
  41. package/app/modules/adminModule/AGENT.md +4056 -0
  42. package/app/modules/adminModule/adminAiHelpService.js +56 -0
  43. package/app/modules/adminModule/adminConfigRuntime.js +177 -0
  44. package/app/modules/adminModule/commandConfig.json +7122 -0
  45. package/app/modules/adminModule/groupCommandHandlers.js +1823 -0
  46. package/app/modules/adminModule/groupCommandHandlers.test.js +350 -0
  47. package/app/modules/adminModule/groupEventHandlers.js +399 -0
  48. package/app/modules/aiModule/AGENT.md +547 -0
  49. package/app/modules/aiModule/aiAiHelpService.js +14 -0
  50. package/app/modules/aiModule/aiConfigRuntime.js +135 -0
  51. package/app/modules/aiModule/catCommand.js +967 -0
  52. package/app/modules/aiModule/commandConfig.json +981 -0
  53. package/app/modules/analyticsModule/messageAnalysisEventRepository.js +83 -0
  54. package/app/modules/gameModule/AGENT.md +196 -0
  55. package/app/modules/gameModule/commandConfig.json +366 -0
  56. package/app/modules/gameModule/diceCommand.js +42 -0
  57. package/app/modules/gameModule/gameAiHelpService.js +14 -0
  58. package/app/modules/gameModule/gameConfigRuntime.js +68 -0
  59. package/app/modules/menuModule/AGENT.md +205 -0
  60. package/app/modules/menuModule/commandConfig.json +366 -0
  61. package/app/modules/menuModule/common.js +316 -0
  62. package/app/modules/menuModule/menuAiHelpService.js +14 -0
  63. package/app/modules/menuModule/menuConfigRuntime.js +68 -0
  64. package/app/modules/menuModule/menus.js +66 -0
  65. package/app/modules/playModule/AGENT.md +321 -0
  66. package/app/modules/playModule/commandConfig.json +584 -0
  67. package/app/modules/playModule/playAiHelpService.js +14 -0
  68. package/app/modules/playModule/playCommand.js +1417 -0
  69. package/app/modules/playModule/playConfigRuntime.js +68 -0
  70. package/app/modules/quoteModule/AGENT.md +199 -0
  71. package/app/modules/quoteModule/commandConfig.json +366 -0
  72. package/app/modules/quoteModule/quoteAiHelpService.js +14 -0
  73. package/app/modules/quoteModule/quoteCommand.js +842 -0
  74. package/app/modules/quoteModule/quoteConfigRuntime.js +68 -0
  75. package/app/modules/rpgPokemonModule/AGENT.md +229 -0
  76. package/app/modules/rpgPokemonModule/commandConfig.json +386 -0
  77. package/app/modules/rpgPokemonModule/rpgBattleCanvasRenderer.js +795 -0
  78. package/app/modules/rpgPokemonModule/rpgBattleService.js +2110 -0
  79. package/app/modules/rpgPokemonModule/rpgBattleService.test.js +770 -0
  80. package/app/modules/rpgPokemonModule/rpgEvolutionUtils.js +22 -0
  81. package/app/modules/rpgPokemonModule/rpgPokemonAiHelpService.js +14 -0
  82. package/app/modules/rpgPokemonModule/rpgPokemonCommand.js +174 -0
  83. package/app/modules/rpgPokemonModule/rpgPokemonConfigRuntime.js +68 -0
  84. package/app/modules/rpgPokemonModule/rpgPokemonDomain.js +192 -0
  85. package/app/modules/rpgPokemonModule/rpgPokemonDomain.test.js +93 -0
  86. package/app/modules/rpgPokemonModule/rpgPokemonEvolution.test.js +46 -0
  87. package/app/modules/rpgPokemonModule/rpgPokemonMessages.js +746 -0
  88. package/app/modules/rpgPokemonModule/rpgPokemonRepository.js +1847 -0
  89. package/app/modules/rpgPokemonModule/rpgPokemonService.js +6839 -0
  90. package/app/modules/rpgPokemonModule/rpgProfileCanvasRenderer.js +354 -0
  91. package/app/modules/statsModule/AGENT.md +320 -0
  92. package/app/modules/statsModule/commandConfig.json +540 -0
  93. package/app/modules/statsModule/globalRankingCommand.js +64 -0
  94. package/app/modules/statsModule/rankingCommand.js +41 -0
  95. package/app/modules/statsModule/rankingCommon.js +1305 -0
  96. package/app/modules/statsModule/statsAiHelpService.js +14 -0
  97. package/app/modules/statsModule/statsConfigRuntime.js +68 -0
  98. package/app/modules/stickerModule/AGENT.md +692 -0
  99. package/app/modules/stickerModule/addStickerMetadata.js +239 -0
  100. package/app/modules/stickerModule/commandConfig.json +1216 -0
  101. package/app/modules/stickerModule/convertToWebp.js +367 -0
  102. package/app/modules/stickerModule/stickerAiHelpService.js +14 -0
  103. package/app/modules/stickerModule/stickerCommand.js +446 -0
  104. package/app/modules/stickerModule/stickerConfigRuntime.js +68 -0
  105. package/app/modules/stickerModule/stickerConvertCommand.js +159 -0
  106. package/app/modules/stickerModule/stickerTextCommand.js +653 -0
  107. package/app/modules/stickerPackModule/AGENT.md +215 -0
  108. package/app/modules/stickerPackModule/autoPackCollectorRuntime.js +20 -0
  109. package/app/modules/stickerPackModule/autoPackCollectorService.js +357 -0
  110. package/app/modules/stickerPackModule/commandConfig.json +387 -0
  111. package/app/modules/stickerPackModule/domainEventOutboxRepository.js +227 -0
  112. package/app/modules/stickerPackModule/domainEvents.js +52 -0
  113. package/app/modules/stickerPackModule/semanticReclassificationEngine.js +429 -0
  114. package/app/modules/stickerPackModule/semanticReclassificationEngine.test.js +75 -0
  115. package/app/modules/stickerPackModule/semanticThemeClusterService.js +544 -0
  116. package/app/modules/stickerPackModule/stickerAssetClassificationRepository.js +400 -0
  117. package/app/modules/stickerPackModule/stickerAssetRepository.js +400 -0
  118. package/app/modules/stickerPackModule/stickerAssetReprocessQueueRepository.js +175 -0
  119. package/app/modules/stickerPackModule/stickerAutoPackByTagsRuntime.js +3702 -0
  120. package/app/modules/stickerPackModule/stickerClassificationBackgroundRuntime.js +559 -0
  121. package/app/modules/stickerPackModule/stickerClassificationService.js +557 -0
  122. package/app/modules/stickerPackModule/stickerDedicatedTaskWorkerRuntime.js +249 -0
  123. package/app/modules/stickerPackModule/stickerDomainEventBus.js +65 -0
  124. package/app/modules/stickerPackModule/stickerDomainEventConsumerRuntime.js +208 -0
  125. package/app/modules/stickerPackModule/stickerMarketplaceDriftService.js +99 -0
  126. package/app/modules/stickerPackModule/stickerObjectStorageService.js +285 -0
  127. package/app/modules/stickerPackModule/stickerPackAiHelpService.js +14 -0
  128. package/app/modules/stickerPackModule/stickerPackCommandHandlers.js +1148 -0
  129. package/app/modules/stickerPackModule/stickerPackConfigRuntime.js +68 -0
  130. package/app/modules/stickerPackModule/stickerPackEngagementRepository.js +152 -0
  131. package/app/modules/stickerPackModule/stickerPackErrors.js +30 -0
  132. package/app/modules/stickerPackModule/stickerPackInteractionEventRepository.js +101 -0
  133. package/app/modules/stickerPackModule/stickerPackItemRepository.js +432 -0
  134. package/app/modules/stickerPackModule/stickerPackMarketplaceService.js +313 -0
  135. package/app/modules/stickerPackModule/stickerPackMessageService.js +268 -0
  136. package/app/modules/stickerPackModule/stickerPackRepository.js +450 -0
  137. package/app/modules/stickerPackModule/stickerPackScoreSnapshotRepository.js +179 -0
  138. package/app/modules/stickerPackModule/stickerPackScoreSnapshotRuntime.js +271 -0
  139. package/app/modules/stickerPackModule/stickerPackService.js +733 -0
  140. package/app/modules/stickerPackModule/stickerPackServiceRuntime.js +32 -0
  141. package/app/modules/stickerPackModule/stickerPackUtils.js +107 -0
  142. package/app/modules/stickerPackModule/stickerStorageService.js +559 -0
  143. package/app/modules/stickerPackModule/stickerWorkerPipelineRuntime.js +242 -0
  144. package/app/modules/stickerPackModule/stickerWorkerTaskQueueRepository.js +242 -0
  145. package/app/modules/systemMetricsModule/AGENT.md +193 -0
  146. package/app/modules/systemMetricsModule/commandConfig.json +344 -0
  147. package/app/modules/systemMetricsModule/pingCommand.js +399 -0
  148. package/app/modules/systemMetricsModule/systemMetricsAiHelpService.js +14 -0
  149. package/app/modules/systemMetricsModule/systemMetricsConfigRuntime.js +68 -0
  150. package/app/modules/tiktokModule/AGENT.md +196 -0
  151. package/app/modules/tiktokModule/commandConfig.json +366 -0
  152. package/app/modules/tiktokModule/tiktokAiHelpService.js +14 -0
  153. package/app/modules/tiktokModule/tiktokCommand.js +716 -0
  154. package/app/modules/tiktokModule/tiktokConfigRuntime.js +68 -0
  155. package/app/modules/userModule/AGENT.md +200 -0
  156. package/app/modules/userModule/commandConfig.json +386 -0
  157. package/app/modules/userModule/userAiHelpService.js +14 -0
  158. package/app/modules/userModule/userCommand.js +1155 -0
  159. package/app/modules/userModule/userConfigRuntime.js +68 -0
  160. package/app/modules/waifuPicsModule/AGENT.md +431 -0
  161. package/app/modules/waifuPicsModule/commandConfig.json +780 -0
  162. package/app/modules/waifuPicsModule/waifuPicsAiHelpService.js +14 -0
  163. package/app/modules/waifuPicsModule/waifuPicsCommand.js +586 -0
  164. package/app/modules/waifuPicsModule/waifuPicsConfigRuntime.js +68 -0
  165. package/app/observability/metrics.js +766 -0
  166. package/app/services/ai/aiHelpResponseCacheRepository.js +280 -0
  167. package/app/services/ai/aiLearningRepository.js +400 -0
  168. package/app/services/ai/commandConfigEnrichmentRepository.js +769 -0
  169. package/app/services/ai/commandConfigEnrichmentService.js +452 -0
  170. package/app/services/ai/commandConfigValidationService.js +443 -0
  171. package/app/services/ai/commandToolBuilderService.js +192 -0
  172. package/app/services/ai/conversationRouterService.js +516 -0
  173. package/app/services/ai/geminiService.js +115 -0
  174. package/app/services/ai/geminiService.test.js +87 -0
  175. package/app/services/ai/globalModuleAiHelpService.js +1412 -0
  176. package/app/services/ai/globalToolCallingService.js +203 -0
  177. package/app/services/ai/messageCommandExecutionService.js +391 -0
  178. package/app/services/ai/moduleAiHelpCoreService.js +1099 -0
  179. package/app/services/ai/moduleAiHelpWrapperFactory.js +65 -0
  180. package/app/services/ai/moduleCommandConfigRuntimeService.js +113 -0
  181. package/app/services/ai/moduleToolExecutorService.js +464 -0
  182. package/app/services/ai/moduleToolRegistryService.js +178 -0
  183. package/app/services/ai/toolCandidateSelectorService.js +781 -0
  184. package/app/services/auth/googleWebLinkService.js +80 -0
  185. package/app/services/auth/whatsappLoginLinkService.js +230 -0
  186. package/app/services/external/pokeApiService.js +398 -0
  187. package/app/services/group/groupMetadataService.js +311 -0
  188. package/app/services/infra/dbWriteQueue.js +874 -0
  189. package/app/services/infra/featureFlagService.js +131 -0
  190. package/app/services/infra/queueUtils.js +55 -0
  191. package/app/services/messaging/captchaService.js +491 -0
  192. package/app/services/messaging/messagePersistenceService.js +1 -0
  193. package/app/services/messaging/newsBroadcastService.js +347 -0
  194. package/app/services/sticker/stickerFocusService.js +347 -0
  195. package/app/services/sticker/stickerFocusService.test.js +43 -0
  196. package/app/store/aiPromptStore.js +38 -0
  197. package/app/store/conversationSessionStore.js +131 -0
  198. package/app/store/groupConfigStore.js +58 -0
  199. package/app/store/premiumUserStore.js +54 -0
  200. package/app/utils/antiLink/antiLinkModule.js +700 -0
  201. package/app/utils/http/getImageBufferModule.js +18 -0
  202. package/app/utils/json/jsonSanitizer.js +113 -0
  203. package/app/utils/json/jsonSanitizer.test.js +40 -0
  204. package/app/utils/systemMetrics/systemMetricsModule.js +88 -0
  205. package/app/workers/aiLearningWorker.js +605 -0
  206. package/app/workers/commandConfigEnrichmentWorker.js +242 -0
  207. package/database/index.js +2075 -0
  208. package/database/init.js +151 -0
  209. package/database/migrations/.gitkeep +0 -0
  210. package/database/migrations/20260307_d0_hardening_down.sql +64 -0
  211. package/database/migrations/20260307_d0_hardening_up.sql +79 -0
  212. package/database/migrations/20260307_d1_terms_acceptance_down.sql +11 -0
  213. package/database/migrations/20260307_d1_terms_acceptance_up.sql +37 -0
  214. package/database/migrations/20260307_d2_auth_hardening_down.sql +75 -0
  215. package/database/migrations/20260307_d2_auth_hardening_up.sql +100 -0
  216. package/database/migrations/20260314_d7_canonical_sender_down.sql +53 -0
  217. package/database/migrations/20260314_d7_canonical_sender_up.sql +114 -0
  218. package/database/migrations/20260406_d30_security_analytics_down.sql +95 -0
  219. package/database/migrations/20260406_d30_security_analytics_up.sql +292 -0
  220. package/database/migrations/20260407_d31_web_google_session_token_hardening_down.sql +2 -0
  221. package/database/migrations/20260407_d31_web_google_session_token_hardening_up.sql +17 -0
  222. package/database/migrations/20260408_d32_ai_help_response_cache_down.sql +1 -0
  223. package/database/migrations/20260408_d32_ai_help_response_cache_up.sql +22 -0
  224. package/database/migrations/20260409_d33_ai_learning_tables_down.sql +4 -0
  225. package/database/migrations/20260409_d33_ai_learning_tables_up.sql +52 -0
  226. package/database/migrations/20260410_d34_command_config_enrichment_down.sql +3 -0
  227. package/database/migrations/20260410_d34_command_config_enrichment_up.sql +48 -0
  228. package/database/schema.sql +1186 -0
  229. package/docker-compose.yml +104 -0
  230. package/docs/audits/stickerCatalogController-out-of-scope.md +103 -0
  231. package/docs/audits/stickerCatalogController-symbols.md +58 -0
  232. package/docs/compliance/acceptable-use-policy-2026-03-07.md +35 -0
  233. package/docs/compliance/dpa-b2b-standard-2026-03-07.md +80 -0
  234. package/docs/compliance/monthly-compliance-checklist-2026-03-07.md +88 -0
  235. package/docs/compliance/notice-and-takedown-policy-2026-03-07.md +34 -0
  236. package/docs/compliance/privacy-policy-2026-03-07.md +75 -0
  237. package/docs/compliance/subprocessors-inventory-2026-03-07.md +16 -0
  238. package/docs/database/production-db-evolution-runbook-2026q1.md +365 -0
  239. package/docs/security/dsar-lgpd-runbook-2026-03-07.md +86 -0
  240. package/docs/security/incident-response-lgpd-anpd-runbook-2026-03-07.md +77 -0
  241. package/docs/security/network-hardening-runbook-2026-03-07.md +137 -0
  242. package/docs/seo/omnizap-seo-playbook-br-2026-02-28.md +238 -0
  243. package/docs/seo/satellite-page-template.md +116 -0
  244. package/docs/seo/satellite-pages-phase1.json +364 -0
  245. package/docs/wiki/Home.md +120 -0
  246. package/docs/wiki/pair-extraordinaire-2026-03-08.md +3 -0
  247. package/docs/wiki/recent-changes-2026-03-08.md +47 -0
  248. package/ecosystem.prod.config.cjs +135 -0
  249. package/eslint.config.js +89 -0
  250. package/index.js +488 -0
  251. package/ml/clip_classifier/Dockerfile +18 -0
  252. package/ml/clip_classifier/README.md +118 -0
  253. package/ml/clip_classifier/adaptive_scoring.py +40 -0
  254. package/ml/clip_classifier/classifier.py +654 -0
  255. package/ml/clip_classifier/embedding_store.py +481 -0
  256. package/ml/clip_classifier/env_loader.py +15 -0
  257. package/ml/clip_classifier/llm_label_expander.py +144 -0
  258. package/ml/clip_classifier/main.py +213 -0
  259. package/ml/clip_classifier/requirements.txt +10 -0
  260. package/ml/clip_classifier/similarity_engine.py +74 -0
  261. package/new-logo.png +0 -0
  262. package/observability/alert-rules.yml +60 -0
  263. package/observability/grafana/dashboards/omnizap-mysql.json +136 -0
  264. package/observability/grafana/dashboards/omnizap-overview.json +170 -0
  265. package/observability/grafana/provisioning/dashboards/dashboards.yml +11 -0
  266. package/observability/grafana/provisioning/datasources/datasources.yml +15 -0
  267. package/observability/loki-config.yml +38 -0
  268. package/observability/mysql-setup.sql +46 -0
  269. package/observability/prometheus.yml +35 -0
  270. package/observability/promtail-config.yml +84 -0
  271. package/observability/sticker-catalog-slo.md +83 -0
  272. package/observability/sticker-scale-hardening-rollout.md +128 -0
  273. package/package.json +144 -0
  274. package/public/apple-touch-icon.png +0 -0
  275. package/public/assets/css/commands-react.input.css +71 -0
  276. package/public/assets/css/create-pack-react.input.css +31 -0
  277. package/public/assets/css/home-react.input.css +106 -0
  278. package/public/assets/css/login-react.input.css +58 -0
  279. package/public/assets/css/stickers-react.input.css +18 -0
  280. package/public/assets/css/terms-react.input.css +115 -0
  281. package/public/assets/css/user-react.input.css +57 -0
  282. package/public/assets/images/brand-icon-192.png +0 -0
  283. package/public/assets/images/brand-logo-128.webp +0 -0
  284. package/public/assets/images/hero-banner-1280.jpg +0 -0
  285. package/public/comandos/commands-catalog.json +4517 -0
  286. package/public/css/api-docs.css +161 -0
  287. package/public/css/stickers-admin.css +1288 -0
  288. package/public/css/styles.css +679 -0
  289. package/public/css/systemadm/admin.css +474 -0
  290. package/public/css/systemadm/base.css +73 -0
  291. package/public/css/systemadm/components.css +662 -0
  292. package/public/css/systemadm/layout.css +229 -0
  293. package/public/css/systemadm/tokens.css +56 -0
  294. package/public/favicon-16x16.png +0 -0
  295. package/public/favicon-32x32.png +0 -0
  296. package/public/favicon.ico +0 -0
  297. package/public/js/apps/apiDocsApp.js +235 -0
  298. package/public/js/apps/commandsReactApp.js +528 -0
  299. package/public/js/apps/createPackApp.js +1646 -0
  300. package/public/js/apps/homeReactApp.js +942 -0
  301. package/public/js/apps/loginReactApp.js +496 -0
  302. package/public/js/apps/stickersAdminApp.js +1753 -0
  303. package/public/js/apps/stickersApp.js +3797 -0
  304. package/public/js/apps/termsReactApp.js +528 -0
  305. package/public/js/apps/userApp.js +2540 -0
  306. package/public/js/apps/userProfile/actions.js +66 -0
  307. package/public/js/apps/userReactApp.js +547 -0
  308. package/public/js/catalog.js +950 -0
  309. package/public/pages/api-docs.html +40 -0
  310. package/public/pages/aup.html +158 -0
  311. package/public/pages/comandos.html +41 -0
  312. package/public/pages/dpa.html +227 -0
  313. package/public/pages/home.html +45 -0
  314. package/public/pages/licenca.html +182 -0
  315. package/public/pages/login.html +40 -0
  316. package/public/pages/notice-and-takedown.html +234 -0
  317. package/public/pages/politica-de-privacidade.html +251 -0
  318. package/public/pages/seo-bot-whatsapp-para-grupo.html +350 -0
  319. package/public/pages/seo-bot-whatsapp-sem-programar.html +350 -0
  320. package/public/pages/seo-como-automatizar-avisos-no-whatsapp.html +350 -0
  321. package/public/pages/seo-como-criar-comandos-whatsapp.html +350 -0
  322. package/public/pages/seo-como-evitar-spam-no-whatsapp.html +350 -0
  323. package/public/pages/seo-como-moderar-grupo-whatsapp.html +350 -0
  324. package/public/pages/seo-como-organizar-comunidade-whatsapp.html +350 -0
  325. package/public/pages/seo-melhor-bot-whatsapp-para-grupos.html +350 -0
  326. package/public/pages/stickers-admin.html +31 -0
  327. package/public/pages/stickers-create.html +41 -0
  328. package/public/pages/stickers.html +45 -0
  329. package/public/pages/suboperadores.html +237 -0
  330. package/public/pages/termos-de-uso-texto-integral.html +241 -0
  331. package/public/pages/termos-de-uso.html +41 -0
  332. package/public/pages/user-password-reset.html +32 -0
  333. package/public/pages/user-systemadm.html +508 -0
  334. package/public/pages/user.html +39 -0
  335. package/public/robots.txt +9 -0
  336. package/public/site.webmanifest +24 -0
  337. package/public/sitemap.xml +98 -0
  338. package/schemas/command-config.schema.json +582 -0
  339. package/scripts/baileys-compat-smoke.mjs +12 -0
  340. package/scripts/cache-bust.mjs +142 -0
  341. package/scripts/deploy.sh +916 -0
  342. package/scripts/email-broadcast-terms-update.mjs +170 -0
  343. package/scripts/enrich-command-discovery-fields.mjs +286 -0
  344. package/scripts/generate-command-config-schema.mjs +273 -0
  345. package/scripts/generate-commands-catalog.mjs +308 -0
  346. package/scripts/generate-module-agents.mjs +631 -0
  347. package/scripts/generate-seo-satellite-pages.mjs +400 -0
  348. package/scripts/github-deploy-notify.mjs +174 -0
  349. package/scripts/github-release-notify.mjs +219 -0
  350. package/scripts/release.sh +599 -0
  351. package/scripts/run-codeql-local.sh +116 -0
  352. package/scripts/run-prettier-all.mjs +25 -0
  353. package/scripts/security-smoketest.mjs +581 -0
  354. package/scripts/sticker-catalog-loadtest.mjs +210 -0
  355. package/scripts/sticker-worker-task.mjs +119 -0
  356. package/scripts/sync-readme-snapshot.mjs +133 -0
  357. package/scripts/validate-command-config-schema.mjs +130 -0
  358. package/scripts/validate-command-configs.mjs +15 -0
  359. package/scripts/wiki-sync.sh +191 -0
  360. package/server/auth/googleWebAuth/googleWebAuthRuntime.js +62 -0
  361. package/server/auth/googleWebAuth/googleWebAuthService.js +807 -0
  362. package/server/auth/jwt/webJwtService.js +147 -0
  363. package/server/auth/stickerCatalogAuthContext.js +165 -0
  364. package/server/auth/termsAcceptance/termsAcceptanceHandler.js +189 -0
  365. package/server/auth/userPassword/index.js +14 -0
  366. package/server/auth/userPassword/userPasswordAuthService.js +422 -0
  367. package/server/auth/userPassword/userPasswordCrypto.js +199 -0
  368. package/server/auth/userPassword/userPasswordCrypto.test.js +76 -0
  369. package/server/auth/userPassword/userPasswordRecoveryService.js +728 -0
  370. package/server/auth/validation/authSchemas.js +236 -0
  371. package/server/auth/webAccount/webAccountHandlers.js +1434 -0
  372. package/server/controllers/admin/adminBanService.js +138 -0
  373. package/server/controllers/admin/adminPanelHandlers.js +2083 -0
  374. package/server/controllers/admin/stickerCatalogAdminContext.js +17 -0
  375. package/server/controllers/admin/systemAdminController.js +201 -0
  376. package/server/controllers/email/emailAutomationController.js +239 -0
  377. package/server/controllers/metricsController.js +21 -0
  378. package/server/controllers/seo/stickerCatalogSeoContext.js +514 -0
  379. package/server/controllers/sticker/nonCatalogHandlers.js +303 -0
  380. package/server/controllers/sticker/stickerCatalogController.js +4700 -0
  381. package/server/controllers/system/contactController.js +115 -0
  382. package/server/controllers/system/githubController.js +137 -0
  383. package/server/controllers/system/stickerCatalogSystemContext.js +758 -0
  384. package/server/controllers/system/storageController.js +154 -0
  385. package/server/controllers/system/systemController.js +135 -0
  386. package/server/controllers/system/systemMetricsController.js +156 -0
  387. package/server/controllers/system/visitController.js +90 -0
  388. package/server/controllers/userController.js +145 -0
  389. package/server/email/emailAutomationRuntime.js +225 -0
  390. package/server/email/emailAutomationService.js +125 -0
  391. package/server/email/emailOutboxRepository.js +282 -0
  392. package/server/email/emailTemplateService.js +480 -0
  393. package/server/email/emailTransportService.js +156 -0
  394. package/server/http/clientIp.js +95 -0
  395. package/server/http/httpRequestUtils.js +262 -0
  396. package/server/http/httpRequestUtils.test.js +80 -0
  397. package/server/http/httpServer.js +180 -0
  398. package/server/http/requestContext.js +20 -0
  399. package/server/http/siteRoutingUtils.js +87 -0
  400. package/server/index.js +1 -0
  401. package/server/middleware/cachePolicy.js +26 -0
  402. package/server/middleware/cachePolicyHelpers.js +1 -0
  403. package/server/middleware/endpointRateLimit.js +181 -0
  404. package/server/middleware/rateLimit.js +70 -0
  405. package/server/middleware/requireAdminAuth.js +48 -0
  406. package/server/middleware/securityHeaders.js +97 -0
  407. package/server/routes/admin/systemAdminRouter.js +64 -0
  408. package/server/routes/email/emailAutomationRouter.js +46 -0
  409. package/server/routes/health/healthRouter.js +41 -0
  410. package/server/routes/indexRouter.js +234 -0
  411. package/server/routes/metrics/metricsRouter.js +58 -0
  412. package/server/routes/static/staticPageRouter.js +134 -0
  413. package/server/routes/sticker/catalogHandlers/catalogAdminHttp.js +105 -0
  414. package/server/routes/sticker/catalogHandlers/catalogAuthHttp.js +77 -0
  415. package/server/routes/sticker/catalogHandlers/catalogPublicHttp.js +120 -0
  416. package/server/routes/sticker/catalogHandlers/catalogUploadHttp.js +83 -0
  417. package/server/routes/sticker/catalogRouter.js +77 -0
  418. package/server/routes/sticker/stickerApiRouter.js +84 -0
  419. package/server/routes/sticker/stickerDataRouter.js +145 -0
  420. package/server/routes/sticker/stickerSiteRouter.js +43 -0
  421. package/server/routes/user/userApiPaths.js +66 -0
  422. package/server/routes/user/userRouter.js +65 -0
  423. package/server/utils/safePath.js +26 -0
  424. package/utils/logger/loggerModule.js +35 -0
  425. package/vite.config.mjs +38 -0
@@ -0,0 +1,44 @@
1
+ name: Security - OSSF Scorecard
2
+
3
+ on:
4
+ branch_protection_rule:
5
+ schedule:
6
+ - cron: "0 6 * * 1"
7
+ push:
8
+ branches:
9
+ - main
10
+ workflow_dispatch:
11
+
12
+ permissions: read-all
13
+
14
+ concurrency:
15
+ group: security-scorecard-${{ github.workflow }}-${{ github.ref }}
16
+ cancel-in-progress: true
17
+
18
+ jobs:
19
+ analysis:
20
+ name: Scorecard Analysis
21
+ runs-on: ubuntu-latest
22
+ timeout-minutes: 30
23
+ permissions:
24
+ security-events: write
25
+ id-token: write
26
+ contents: read
27
+ actions: read
28
+ steps:
29
+ - name: Checkout
30
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
31
+ with:
32
+ persist-credentials: false
33
+
34
+ - name: Run OSSF Scorecard
35
+ uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a
36
+ with:
37
+ results_file: results.sarif
38
+ results_format: sarif
39
+ publish_results: true
40
+
41
+ - name: Upload SARIF
42
+ uses: github/codeql-action/upload-sarif@0d579ffd059c29b07949a3cce3983f0780820c98
43
+ with:
44
+ sarif_file: results.sarif
@@ -0,0 +1,44 @@
1
+ name: Security - ZAP Baseline
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "30 4 * * 1"
6
+ workflow_dispatch:
7
+ inputs:
8
+ target_url:
9
+ description: "Target URL for baseline scan"
10
+ required: false
11
+ default: ""
12
+ type: string
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ concurrency:
18
+ group: security-zap-baseline-${{ github.workflow }}-${{ github.ref }}
19
+ cancel-in-progress: true
20
+
21
+ jobs:
22
+ baseline-scan:
23
+ name: DAST Baseline
24
+ runs-on: ubuntu-latest
25
+ timeout-minutes: 30
26
+ permissions:
27
+ contents: read
28
+ issues: write
29
+ env:
30
+ TARGET_URL: ${{ inputs.target_url || vars.SECURITY_SCAN_TARGET_URL || 'https://omnizap.shop/' }}
31
+ steps:
32
+ - name: Checkout
33
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
34
+ with:
35
+ persist-credentials: false
36
+
37
+ - name: Run ZAP baseline scan
38
+ uses: zaproxy/action-baseline@41aee98ebc7cf2802c3beae4e7d4336413a21e43
39
+ with:
40
+ target: ${{ env.TARGET_URL }}
41
+ fail_action: false
42
+ cmd_options: "-a"
43
+ env:
44
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,43 @@
1
+ name: Security - ZAP Full Scan
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "0 5 * * 0"
6
+ workflow_dispatch:
7
+ inputs:
8
+ target_url:
9
+ description: "Target URL for full scan"
10
+ required: false
11
+ default: ""
12
+ type: string
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ concurrency:
18
+ group: security-zap-full-${{ github.workflow }}-${{ github.ref }}
19
+ cancel-in-progress: true
20
+
21
+ jobs:
22
+ full-scan:
23
+ name: DAST Full Scan
24
+ runs-on: ubuntu-latest
25
+ timeout-minutes: 90
26
+ permissions:
27
+ contents: read
28
+ issues: write
29
+ env:
30
+ TARGET_URL: ${{ inputs.target_url || vars.SECURITY_SCAN_TARGET_URL || 'https://omnizap.shop/' }}
31
+ steps:
32
+ - name: Checkout
33
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
34
+ with:
35
+ persist-credentials: false
36
+
37
+ - name: Run ZAP full scan
38
+ uses: zaproxy/action-full-scan@bdd21ad4090d552d299261226c553efbc216f5ee
39
+ with:
40
+ target: ${{ env.TARGET_URL }}
41
+ fail_action: false
42
+ env:
43
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,36 @@
1
+ name: Security - Zizmor
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - ".github/workflows/**"
7
+ push:
8
+ branches:
9
+ - main
10
+ paths:
11
+ - ".github/workflows/**"
12
+ workflow_dispatch:
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ concurrency:
18
+ group: security-zizmor-${{ github.workflow }}-${{ github.ref }}
19
+ cancel-in-progress: true
20
+
21
+ jobs:
22
+ zizmor:
23
+ name: Workflow Security Lint
24
+ runs-on: ubuntu-latest
25
+ timeout-minutes: 15
26
+ permissions:
27
+ contents: read
28
+ security-events: write
29
+ steps:
30
+ - name: Checkout
31
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
32
+ with:
33
+ persist-credentials: false
34
+
35
+ - name: Run Zizmor
36
+ uses: zizmorcore/zizmor-action@0dce2577a4760a2749d8cfb7a84b7d5585ebcb7d
@@ -0,0 +1,44 @@
1
+ name: Wiki Sync
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths:
8
+ - "docs/wiki/**"
9
+ workflow_dispatch:
10
+
11
+ concurrency:
12
+ group: wiki-sync-${{ github.ref }}
13
+ cancel-in-progress: true
14
+
15
+ permissions:
16
+ contents: read
17
+
18
+ jobs:
19
+ sync:
20
+ name: Sync docs/wiki to GitHub Wiki
21
+ runs-on: ubuntu-latest
22
+ timeout-minutes: 15
23
+ permissions:
24
+ contents: write
25
+ steps:
26
+ - name: Checkout
27
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
28
+ with:
29
+ fetch-depth: 0
30
+ persist-credentials: false
31
+
32
+ - name: Configure git identity
33
+ run: |
34
+ git config user.name "github-actions[bot]"
35
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
36
+
37
+ - name: Sync wiki
38
+ env:
39
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
40
+ WIKI_SYNC_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
41
+ WIKI_SYNC_GIT_USER_NAME: github-actions[bot]
42
+ WIKI_SYNC_GIT_USER_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com
43
+ WIKI_SYNC_DELETE: "1"
44
+ run: bash ./scripts/wiki-sync.sh
package/.gitleaks.toml ADDED
@@ -0,0 +1,15 @@
1
+ title = "OmniZap Gitleaks Config"
2
+
3
+ [extend]
4
+ useDefault = true
5
+
6
+ [allowlist]
7
+ description = "Ignore runtime/generated artifacts that are not source secrets."
8
+ paths = [
9
+ '''^logs/''',
10
+ '''^backups/''',
11
+ ]
12
+ regexes = [
13
+ '''(?i)SET\s+@migration_key\s*:=\s*'[0-9]{8}_[a-z0-9_]+';''',
14
+ '''(?i)WHERE\s+migration_key\s*=\s*'[0-9]{8}_[a-z0-9_]+';''',
15
+ ]
package/.prettierrc ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/prettierrc",
3
+ "printWidth": 10000,
4
+ "tabWidth": 2,
5
+ "useTabs": false,
6
+ "semi": true,
7
+ "singleQuote": true,
8
+ "jsxSingleQuote": false,
9
+ "trailingComma": "all",
10
+ "bracketSpacing": true,
11
+ "arrowParens": "always",
12
+ "endOfLine": "lf",
13
+ "bracketSameLine": false,
14
+ "singleAttributePerLine": false,
15
+ "proseWrap": "preserve",
16
+ "htmlWhitespaceSensitivity": "css",
17
+ "quoteProps": "as-needed",
18
+ "embeddedLanguageFormatting": "auto",
19
+ "overrides": [
20
+ {
21
+ "files": ["*.md", "*.mdx"],
22
+ "options": {
23
+ "printWidth": 90,
24
+ "proseWrap": "preserve"
25
+ }
26
+ },
27
+ {
28
+ "files": ["*.yml", "*.yaml"],
29
+ "options": {
30
+ "singleQuote": false
31
+ }
32
+ }
33
+ ]
34
+ }
@@ -0,0 +1,114 @@
1
+ # Código de Conduta
2
+
3
+ ## Nosso compromisso
4
+
5
+ Nós, contribuidores e mantenedores do OmniZap System, assumimos o compromisso de manter a participação na comunidade livre de assédio para todas as pessoas, independentemente de idade, tipo corporal, deficiência (visível ou não), etnia, características sexuais, identidade e expressão de gênero, nível de experiência, escolaridade, condição socioeconômica, nacionalidade, aparência pessoal, religião ou identidade/orientação sexual.
6
+
7
+ Nós nos comprometemos a agir e interagir de forma a promover uma comunidade aberta, acolhedora, diversa, inclusiva e saudável.
8
+
9
+ ## Valores da comunidade
10
+
11
+ Esperamos que toda interação no projeto siga estes valores:
12
+
13
+ - Respeito entre participantes, mesmo em situações de discordância.
14
+ - Colaboração orientada a resultados técnicos e coletivos.
15
+ - Transparência na comunicação e nas decisões de manutenção.
16
+ - Responsabilidade sobre impactos técnicos e comportamentais.
17
+ - Aprendizado contínuo, com abertura para correção e melhoria.
18
+
19
+ ## Nossos padrões
20
+
21
+ Exemplos de comportamentos esperados:
22
+
23
+ - Demonstrar empatia, respeito e cordialidade.
24
+ - Aceitar e oferecer feedback construtivo de forma objetiva.
25
+ - Priorizar o que é melhor para o projeto e para a comunidade.
26
+ - Assumir responsabilidade por erros e corrigi-los com transparência.
27
+ - Manter comunicação clara, respeitosa e profissional.
28
+
29
+ Exemplos de comportamentos inaceitáveis:
30
+
31
+ - Linguagem ou imagens sexualizadas e atenção sexual indesejada.
32
+ - Trolling, insultos, ataques pessoais ou comentários depreciativos.
33
+ - Assédio, intimidação ou perseguição, em público ou em privado.
34
+ - Divulgação de informações privadas de terceiros sem permissão explícita.
35
+ - Qualquer conduta inadequada para um ambiente colaborativo e profissional.
36
+
37
+ ## Inclusão e acessibilidade
38
+
39
+ Para promover um ambiente mais inclusivo, recomendamos:
40
+
41
+ - usar linguagem clara e objetiva;
42
+ - contextualizar termos técnicos quando necessário;
43
+ - evitar comunicação agressiva, ironias hostis e provocações pessoais;
44
+ - respeitar diferentes níveis de experiência.
45
+
46
+ ## Escopo
47
+
48
+ Este Código de Conduta se aplica a todos os espaços oficiais do projeto, incluindo:
49
+
50
+ - Issues, Pull Requests, Discussions e comentários no GitHub.
51
+ - Canais de comunicação relacionados ao projeto.
52
+ - Interações em nome do projeto em espaços públicos.
53
+
54
+ Também se aplica quando uma pessoa representa oficialmente o projeto, por exemplo, ao usar conta oficial, atuar como mantenedor(a) ou participar de eventos em nome do OmniZap System.
55
+
56
+ ## Responsabilidade de aplicação
57
+
58
+ Mantenedores(as) são responsáveis por interpretar e aplicar este Código de Conduta de forma justa, consistente e proporcional ao contexto.
59
+
60
+ Mantenedores(as) podem remover, editar ou rejeitar comentários, commits, código, edições de wiki, issues e outras contribuições que violem este Código de Conduta, bem como aplicar medidas temporárias ou permanentes quando necessário.
61
+
62
+ ## Reporte de incidentes
63
+
64
+ Se você sofrer ou presenciar comportamento inadequado:
65
+
66
+ 1. Para casos não sensíveis, abra uma issue com o título iniciando por `CoC:`.
67
+ 2. Para casos sensíveis, contate os mantenedores de forma privada pelo GitHub (por exemplo, mensagem direta para `@kaikybrofc`) ou por e-mail em `bot@omnizap.shop`.
68
+
69
+ Todos os relatos serão avaliados com seriedade, dentro de prazo razoável, com confidencialidade e respeito ao contexto.
70
+
71
+ ## Processo de apuração e resposta
72
+
73
+ O fluxo padrão de tratamento de incidentes segue estas etapas:
74
+
75
+ 1. Confirmação de recebimento do relato (meta: até 72 horas).
76
+ 2. Triagem inicial e classificação da ocorrência (meta: até 7 dias corridos).
77
+ 3. Coleta de contexto e evidências adicionais, quando necessário.
78
+ 4. Deliberação dos mantenedores e definição de medida aplicável.
79
+ 5. Comunicação de encerramento para as partes envolvidas, dentro do limite de confidencialidade.
80
+
81
+ ## Confidencialidade e não retaliação
82
+
83
+ - Relatos sensíveis serão tratados com confidencialidade, na medida do possível.
84
+ - Não toleramos retaliação contra quem reportar incidentes de boa-fé.
85
+ - Tentativas de intimidação, exposição indevida ou represália podem gerar medidas disciplinares imediatas.
86
+
87
+ ## Diretrizes de aplicação
88
+
89
+ As medidas de aplicação podem incluir, conforme gravidade e recorrência:
90
+
91
+ 1. **Correção**: orientação privada e pedido de ajuste de comportamento.
92
+ 2. **Advertência**: aviso formal com descrição da violação e consequências em caso de reincidência.
93
+ 3. **Suspensão temporária**: restrição de interação por período definido em espaços oficiais do projeto.
94
+ 4. **Banimento permanente**: proibição de participação na comunidade e bloqueio dos canais oficiais.
95
+
96
+ ## Direito de resposta e recurso
97
+
98
+ - Sempre que viável, a pessoa reportada poderá apresentar contexto antes da decisão final.
99
+ - Caso discorde da medida aplicada, poderá solicitar revisão por canal privado em até 14 dias corridos.
100
+ - Quando possível, o recurso será revisado por mantenedor(a) diferente de quem conduziu a decisão inicial.
101
+
102
+ ## Conflito de interesse
103
+
104
+ Quando houver conflito de interesse na apuração (por exemplo, envolvimento direto do mantenedor no incidente), a pessoa em conflito deve se declarar impedida de decidir sobre o caso.
105
+
106
+ ## Atribuição
107
+
108
+ Este Código de Conduta foi adaptado do [Contributor Covenant](https://www.contributor-covenant.org), versão 2.1:
109
+
110
+ - https://www.contributor-covenant.org/version/2/1/code_of_conduct/
111
+
112
+ Perguntas frequentes:
113
+
114
+ - https://www.contributor-covenant.org/faq
package/LICENSE ADDED
@@ -0,0 +1,56 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Kaiky Brito
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ ---
24
+
25
+ Versão em Português (tradução de referência)
26
+
27
+ Aviso importante: esta tradução é fornecida para facilitar entendimento.
28
+ Em caso de divergência de interpretação, prevalece o texto legal em inglês
29
+ apresentado acima.
30
+
31
+ É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia
32
+ deste software e dos arquivos de documentação associados (o "Software"), para
33
+ utilizar o Software sem restrições, incluindo, sem limitação, os direitos de
34
+ usar, copiar, modificar, mesclar, publicar, distribuir, sublicenciar e/ou
35
+ vender cópias do Software, e permitir que as pessoas a quem o Software for
36
+ fornecido façam o mesmo, sujeitas às seguintes condições:
37
+
38
+ O aviso de copyright acima e este aviso de permissão devem ser incluídos em
39
+ todas as cópias ou porções substanciais do Software.
40
+
41
+ O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIA DE
42
+ QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, SEM LIMITAÇÃO, AS GARANTIAS DE
43
+ COMERCIALIZAÇÃO, ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA E NÃO INFRAÇÃO. EM
44
+ NENHUMA HIPÓTESE OS AUTORES OU DETENTORES DOS DIREITOS AUTORAIS SERÃO
45
+ RESPONSÁVEIS POR QUALQUER REIVINDICAÇÃO, DANO OU OUTRA RESPONSABILIDADE, SEJA
46
+ EM AÇÃO CONTRATUAL, ILÍCITO CIVIL OU OUTRA FORMA, DECORRENTE DE, FORA DE OU EM
47
+ CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.
48
+
49
+ Informações adicionais (não alteram os termos da licença):
50
+
51
+ - Uso comercial é permitido.
52
+ - Modificação e redistribuição são permitidas.
53
+ - Sub-licenciamento e venda são permitidos.
54
+ - É obrigatório manter os avisos de copyright e licença.
55
+ - Não há garantia de funcionamento ou adequação para um fim específico.
56
+ - Os autores não assumem responsabilidade por danos decorrentes do uso.
package/README.md ADDED
@@ -0,0 +1,110 @@
1
+ <img width="1318" height="352" alt="OmniZap banner" src="https://github.com/user-attachments/assets/d44835e7-021a-4c67-a0e7-5b858d51eb91" />
2
+
3
+ # OmniZap System
4
+
5
+ [![CI](https://github.com/Omnizap-System/omnizap/actions/workflows/ci.yml/badge.svg)](https://github.com/Omnizap-System/omnizap/actions/workflows/ci.yml)
6
+ [![CodeQL](https://github.com/Omnizap-System/omnizap/actions/workflows/codeql.yml/badge.svg)](https://github.com/Omnizap-System/omnizap/actions/workflows/codeql.yml)
7
+ [![Gitleaks](https://github.com/Omnizap-System/omnizap/actions/workflows/security-gitleaks.yml/badge.svg)](https://github.com/Omnizap-System/omnizap/actions/workflows/security-gitleaks.yml)
8
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
9
+ [![Node](https://img.shields.io/badge/node-%3E%3D18-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
10
+
11
+ Plataforma open source de automação para WhatsApp com foco em figurinhas, catálogo web, painel de usuário e operação profissional em produção.
12
+
13
+ ---
14
+
15
+ ## 🚀 Links Rápidos
16
+
17
+ - **Site Oficial:** [omnizap.shop](https://omnizap.shop/)
18
+ - **Documentação da API:** [/api-docs/](https://omnizap.shop/api-docs/)
19
+ - **Painel do Usuário:** [/user/](https://omnizap.shop/user/)
20
+ - **Catálogo de Figurinha:** [/stickers/](https://omnizap.shop/stickers/)
21
+ - **Wiki do Projeto:** [GitHub Wiki](https://github.com/Omnizap-System/omnizap/wiki)
22
+
23
+ ---
24
+
25
+ ## 🛠️ Quick Start (Local)
26
+
27
+ 1. **Instalar dependências:**
28
+
29
+ ```bash
30
+ npm install
31
+ ```
32
+
33
+ 2. **Configurar Ambiente:**
34
+
35
+ ```bash
36
+ cp .env.example .env
37
+ # Edite o .env com suas credenciais MySQL e segredos JWT
38
+ ```
39
+
40
+ 3. **Inicializar Banco e Frontend:**
41
+
42
+ ```bash
43
+ npm run db:init
44
+ npm run build:frontend
45
+ ```
46
+
47
+ 4. **Rodar:**
48
+ ```bash
49
+ npm run dev
50
+ ```
51
+
52
+ ---
53
+
54
+ ## 🏗️ Arquitetura & Stack
55
+
56
+ O sistema é dividido em 3 camadas integradas:
57
+
58
+ - **Bot Engine:** Baseado em `@whiskeysockets/baileys` (WhatsApp multi-device).
59
+ - **Web Server:** Node.js puro (`node:http`) com roteamento customizado e alta performance.
60
+ - **Frontend:** React com TailwindCSS e DaisyUI (Vite bundle).
61
+ - **Dados:** MySQL para persistência de mensagens, usuários e metadados de grupos.
62
+
63
+ ---
64
+
65
+ ## ✨ Funcionalidades Principais
66
+
67
+ - **Automação de Stickers:** Criação instantânea via comandos (`/s`, `/st`, etc.).
68
+ - **Gestão de Packs:** Criação, edição e publicação de pacotes de figurinhas via bot ou web.
69
+ - **Painel Web:** Autenticação segura, recuperação de senha e gestão de perfil.
70
+ - **Marketplace:** Catálogo público com SEO otimizado e busca dinâmica.
71
+ - **Observabilidade:** Métricas nativas para Prometheus e logs estruturados com Pino.
72
+
73
+ ---
74
+
75
+ ## 📊 Snapshot do Sistema
76
+
77
+ <!-- README_SNAPSHOT:START -->
78
+
79
+ > Os dados abaixo são atualizados automaticamente via script.
80
+
81
+ <!-- README_SNAPSHOT:END -->
82
+
83
+ ---
84
+
85
+ ## 📁 Estrutura do Projeto
86
+
87
+ - `app/`: Core do bot, módulos de comandos e serviços de domínio.
88
+ - `server/`: Rotas HTTP, middlewares de segurança e controladores web.
89
+ - `database/`: Schemas, migrações e inicialização do MySQL.
90
+ - `public/`: Código-fonte do frontend (React) e assets estáticos.
91
+ - `scripts/`: Utilitários de deploy, release e workers de background.
92
+ - `docs/`: Runbooks de segurança, conformidade (LGPD) e playbooks de SEO.
93
+
94
+ ---
95
+
96
+ ## 🛡️ Segurança e Compliance
97
+
98
+ Projeto desenvolvido com foco em conformidade e boas práticas:
99
+
100
+ - **LGPD:** Runbooks prontos para DSAR e Incidentes ANPD em `docs/`.
101
+ - **Hardening:** Esteira de segurança com SAST, Gitleaks e ZAP Scan.
102
+ - **AUP:** Política de Uso Aceitável rigorosa para evitar spam e abusos.
103
+
104
+ Para reportar vulnerabilidades, consulte [SECURITY.md](./SECURITY.md).
105
+
106
+ ---
107
+
108
+ ## 📄 Licença
109
+
110
+ Distribuído sob a licença **MIT**. Veja `LICENSE` para mais detalhes.
package/SECURITY.md ADDED
@@ -0,0 +1,110 @@
1
+ # Política de Segurança e Procedimento Operacional
2
+
3
+ Este documento estabelece:
4
+
5
+ - as diretrizes formais para tratamento de vulnerabilidades no OmniZap System;
6
+ - o fluxo operacional (runbook) utilizado para triagem, correção e divulgação responsável.
7
+
8
+ ## Objetivo e Aplicabilidade
9
+
10
+ Esta política se aplica ao código e aos ativos técnicos mantidos neste repositório, incluindo:
11
+
12
+ - código-fonte da aplicação;
13
+ - workflows e automações de CI/CD;
14
+ - dependências e configuração de build/publicação;
15
+ - componentes de execução e integração diretamente mantidos pelo projeto.
16
+
17
+ Não fazem parte do escopo obrigatório desta política:
18
+
19
+ - serviços de terceiros fora de controle do projeto;
20
+ - ambientes não oficiais, forks e deploys sem vínculo direto com o mantenedor.
21
+
22
+ ## Versões Suportadas
23
+
24
+ Correções de segurança são priorizadas para o branch `main` e para a release estável mais recente.
25
+
26
+ | Canal | Suporte de segurança |
27
+ | -------------------------------- | ------------------------------------------ |
28
+ | `main` | Suportado |
29
+ | Última release estável publicada | Suportado |
30
+ | Releases anteriores | Suporte limitado, sem garantia de correção |
31
+
32
+ ## Canal Oficial de Reporte
33
+
34
+ Não abra issue pública para reportes de segurança.
35
+
36
+ Envie o reporte por e-mail para:
37
+
38
+ - `bot@omnizap.shop`
39
+
40
+ No assunto, utilize preferencialmente: `"[SECURITY] <resumo da vulnerabilidade>"`.
41
+
42
+ ## Conteúdo Mínimo do Reporte
43
+
44
+ Para acelerar a análise, inclua:
45
+
46
+ - componente e versão afetados;
47
+ - pré-condições e passos de reprodução;
48
+ - impacto técnico e impacto de negócio;
49
+ - prova de conceito (PoC), quando aplicável;
50
+ - sugestões de mitigação;
51
+ - evidências técnicas (logs, payloads e respostas), sem dados sensíveis de terceiros.
52
+
53
+ ## Classificação de Severidade e Meta de Resposta
54
+
55
+ | Severidade | Exemplo | Meta de triagem inicial |
56
+ | ---------- | --------------------------------------------------------------- | --------------------------- |
57
+ | Crítica | execução remota, vazamento sensível em produção | até 24 horas |
58
+ | Alta | bypass de autenticação/autorização, escalonamento de privilégio | até 72 horas |
59
+ | Média | falha explorável com restrições relevantes | até 7 dias corridos |
60
+ | Baixa | baixo impacto ou cenário de exploração limitado | conforme fila de manutenção |
61
+
62
+ Os prazos acima são metas operacionais e podem variar conforme complexidade, dependências externas e disponibilidade de correção segura.
63
+
64
+ ## Runbook de Tratamento (Fluxo Operacional)
65
+
66
+ 1. Recebimento e protocolo: confirmação de recebimento em até 72 horas.
67
+ 2. Triagem técnica: validação de escopo, reprodução e classificação de severidade.
68
+ 3. Contenção inicial: mitigação temporária, quando necessária.
69
+ 4. Correção: implementação, revisão e validação em pipeline.
70
+ 5. Publicação: disponibilização da correção no canal suportado.
71
+ 6. Fechamento: comunicação ao pesquisador e registro das lições aprendidas.
72
+
73
+ ## Divulgação Responsável
74
+
75
+ Solicitamos confidencialidade até que a correção ou mitigação oficial esteja disponível.
76
+
77
+ Quando aplicável, a comunicação pública ocorrerá por meio de:
78
+
79
+ - release notes/changelog;
80
+ - advisory de segurança;
81
+ - documentação técnica pertinente.
82
+
83
+ ## Pesquisa em Boa-fé e Conduta Esperada
84
+
85
+ Ao realizar testes de segurança, não é permitido:
86
+
87
+ - indisponibilizar serviços intencionalmente (DoS/DDoS);
88
+ - acessar, alterar ou exfiltrar dados de terceiros;
89
+ - executar engenharia social, phishing ou ataques físicos;
90
+ - realizar testes destrutivos em ambientes de produção.
91
+
92
+ Reportes realizados de boa-fé, com respeito a esta política, serão tratados com prioridade técnica e comunicação responsável.
93
+
94
+ ## Baseline de Hardening de Produção
95
+
96
+ Para hardening de rede e redução de superfície exposta (portas públicas, SSH e Nginx), consulte:
97
+
98
+ - [`docs/security/network-hardening-runbook-2026-03-07.md`](./docs/security/network-hardening-runbook-2026-03-07.md)
99
+
100
+ ## Resposta a Incidentes com Critério LGPD/ANPD
101
+
102
+ Para resposta formal a incidentes com avaliação de gatilho de notificação regulatória, consulte:
103
+
104
+ - [`docs/security/incident-response-lgpd-anpd-runbook-2026-03-07.md`](./docs/security/incident-response-lgpd-anpd-runbook-2026-03-07.md)
105
+
106
+ ## Compliance Operacional Mensal
107
+
108
+ Para acompanhamento mensal de conteúdo regulado, branding, contratos (DPA), governança de dados, notice-and-takedown e separação patrimonial, consulte:
109
+
110
+ - [`docs/compliance/monthly-compliance-checklist-2026-03-07.md`](./docs/compliance/monthly-compliance-checklist-2026-03-07.md)
@@ -0,0 +1,4 @@
1
+ export * from '../configParts/baileysConfig.js';
2
+ export * from '../configParts/groupUtils.js';
3
+ export * from '../configParts/adminIdentity.js';
4
+ export * from '../configParts/loggerConfig.js';