@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,692 @@
1
+ # StickerModule Agent Guide
2
+
3
+ Este arquivo e destinado a agentes de IA para gerar respostas no contexto dos comandos deste modulo.
4
+
5
+ ## Fonte de Verdade
6
+
7
+ - arquivo_base: `app/modules/stickerModule/commandConfig.json`
8
+ - schema_version: `2.0.0`
9
+ - module_enabled: `true`
10
+ - generated_at: `2026-03-11T02:35:17.177Z`
11
+
12
+ ## Escopo do Modulo
13
+
14
+ - module: `stickerModule`
15
+ - source_files:
16
+ - stickerCommand.js
17
+ - stickerConvertCommand.js
18
+ - stickerTextCommand.js
19
+ - total_commands: `5`
20
+ - total_enabled_commands: `5`
21
+
22
+ ## Defaults Schema v2
23
+
24
+ - inheritance_mode: deep_merge_with_command_overrides
25
+ - compatibility_mode: legacy_and_v2_fields
26
+ - legacy_field_aliases:
27
+ - descricao: description
28
+ - metodos_de_uso: usage
29
+ - permissao_necessaria: permission
30
+ - local_de_uso: contexts
31
+ - informacoes_coletadas: collected_data
32
+ - pre_condicoes: requirements
33
+ - dependencias_externas: dependencies
34
+ - efeitos_colaterais: side_effects
35
+ - observabilidade: observability
36
+ - privacidade: privacy
37
+ - limite_uso_por_plano: plan_limits
38
+ - argumentos: arguments
39
+ - acesso: access
40
+ - defaults.command:
41
+ - enabled: true
42
+ - category: figurinhas
43
+ - version: 1.0.0
44
+ - stability: stable
45
+ - deprecated: false
46
+ - replaced_by: null
47
+ - risk_level: medium
48
+ - defaults.requirements (legacy view):
49
+ - requer_grupo: nao
50
+ - requer_admin: nao
51
+ - requer_admin_principal: nao
52
+ - requer_google_login: sim
53
+ - requer_nsfw: nao
54
+ - requer_midia: sim
55
+ - requer_mensagem_respondida: nao
56
+
57
+ ## Protocolo de Resposta para IA
58
+
59
+ - Passo 1: identificar comando pelo token apos o prefixo.
60
+ - Passo 2: resolver alias para nome canonico usando campo `aliases`.
61
+ - Passo 3: validar `enabled`, `pre_condicoes`, permissao e local de uso.
62
+ - Passo 4: se houver erro de uso, responder com `mensagens_uso` (quando existir) ou `metodos_de_uso`.
63
+ - Passo 5: seguir `respostas_padrao` como fallback de texto.
64
+ - Passo 6: considerar `informacoes_coletadas`, `privacidade` e `observabilidade` ao elaborar resposta.
65
+
66
+ ## Regras de Seguranca para IA
67
+
68
+ - A IA orienta, mas nao executa acao administrativa automaticamente.
69
+ - Nao inventar comandos, subcomandos ou permissao fora do JSON.
70
+ - Sempre informar onde pode usar (grupo/privado) e quem pode usar.
71
+ - Em duvida de permissao, responder com orientacao conservadora.
72
+
73
+ ## Catalogo de Comandos
74
+
75
+ ### figurinha
76
+
77
+ - id: sticker.figurinha
78
+ - aliases: s, sticker
79
+ - enabled: true
80
+ - categoria: figurinhas
81
+ - descricao: Converte imagem/video em figurinha.
82
+ - permissao_necessaria: usuario comum
83
+ - version: 1.0.0
84
+ - stability: stable
85
+ - deprecated: nao
86
+ - risk_level: low
87
+ - local_de_uso:
88
+ - privado
89
+ - grupo
90
+ - metodos_de_uso:
91
+ - <prefix>figurinha
92
+ - <prefix>s
93
+ - mensagens_uso (variantes):
94
+ - default:
95
+ - 📌 Use: <prefix>figurinha (ou <prefix>s) respondendo a uma imagem, vídeo ou figurinha.
96
+ - subcomandos:
97
+ - (nenhum)
98
+ - argumentos:
99
+ - texto_extra | tipo: string | opcional | validacao: texto livre opcional | default: null | posicao: 0
100
+ - pre_condicoes:
101
+ - requer_grupo: nao
102
+ - requer_admin: nao
103
+ - requer_admin_principal: nao
104
+ - requer_google_login: sim
105
+ - requer_nsfw: nao
106
+ - requer_midia: sim
107
+ - requer_mensagem_respondida: nao
108
+ - rate_limit:
109
+ - max: null
110
+ - janela_ms: null
111
+ - escopo: sem_rate_limit_explicito
112
+ - acesso:
113
+ - somente_premium: nao
114
+ - planos_permitidos: comum, premium
115
+ - limite_uso_por_plano:
116
+ - comum: max=12, janela_ms=300000, escopo=usuario
117
+ - premium: max=45, janela_ms=300000, escopo=usuario
118
+ - informacoes_coletadas:
119
+ - identificador do chat (remoteJid)
120
+ - identificador do remetente (senderJid)
121
+ - texto do comando e argumentos
122
+ - contexto da mensagem (citacao e mencoes, quando existir)
123
+ - metadados de midia (tipo, tamanho e origem da midia)
124
+ - arquivo de midia baixado temporariamente para conversao
125
+ - dependencias_externas:
126
+ - conversão de mídia local
127
+ - armazenamento temporário
128
+ - efeitos_colaterais:
129
+ - faz download/conversão temporária de mídia
130
+ - envia figurinha
131
+ - respostas_padrao:
132
+ - success: Comando executado com sucesso.
133
+ - usage_error: Formato de uso inválido. Consulte metodos_de_uso.
134
+ - permission_error: Permissão insuficiente para executar este comando.
135
+ - sucesso: Comando executado com sucesso.
136
+ - erro_uso: Formato de uso inválido. Consulte metodos_de_uso.
137
+ - erro_permissao: Permissão insuficiente para executar este comando.
138
+ - mensagens_sistema:
139
+ - (nao informado)
140
+ - limites_operacionais:
141
+ - (nao informado)
142
+ - opcoes:
143
+ - toggle_on_off_status.type: toggle
144
+ - toggle_on_off_status.allowed_actions: on, off, status
145
+ - toggle_on_off_status.action_argument: acao
146
+ - add_remove_list.type: list_management
147
+ - add_remove_list.allowed_actions: add, remove, list
148
+ - add_remove_list.action_argument: acao
149
+ - approve_reject.type: moderation_decision
150
+ - approve_reject.allowed_actions: approve, reject
151
+ - approve_reject.action_argument: acao
152
+ - approve_reject.requires_targets: true
153
+ - set_status_reset.type: configuration_window
154
+ - set_status_reset.allowed_actions: set, status, reset
155
+ - set_status_reset.action_argument: valor
156
+ - observabilidade:
157
+ - event_name: command.executed
158
+ - analytics_event: whatsapp_command_sticker
159
+ - tags_log: whatsapp, command, stickerModule, sticker
160
+ - nivel_log: info
161
+ - privacidade:
162
+ - dados_sensiveis:
163
+ - chat_identifier
164
+ - sender_identifier
165
+ - command_content
166
+ - retencao: standard_app_logs
167
+ - base_legal: service_execution_and_legitimate_interest
168
+ - docs:
169
+ - summary: Converte imagem/video em figurinha.
170
+ - usage_examples: <prefix>figurinha, <prefix>s
171
+ - usage_variants.default: 📌 Use: <prefix>figurinha (ou <prefix>s) respondendo a uma imagem, vídeo ou figurinha.
172
+ - behavior:
173
+ - type: argument_driven
174
+ - allowed_actions: (nenhum)
175
+ - limits:
176
+ - usage_description: midia ate 1 MB
177
+ - rate_limit.max: null
178
+ - rate_limit.janela_ms: null
179
+ - rate_limit.escopo: sem_rate_limit_explicito
180
+ - access.somente_premium: false
181
+ - access.planos_permitidos: comum, premium
182
+ - plan_limits.comum.max: 12
183
+ - plan_limits.comum.janela_ms: 300000
184
+ - plan_limits.comum.escopo: usuario
185
+ - plan_limits.premium.max: 45
186
+ - plan_limits.premium.janela_ms: 300000
187
+ - plan_limits.premium.escopo: usuario
188
+ - discovery:
189
+ - keywords: figurinha, s, figurinhas, privado, grupo
190
+ - faq_queries: como usar figurinha, o que faz figurinha, comando figurinha
191
+ - user_phrasings: quero usar figurinha, me ajuda com figurinha, converte imagem/video em figurinha.
192
+ - suggestion_priority: 100
193
+ - handler:
194
+ - file: stickerCommand.js
195
+ - method: processSticker
196
+ - command_case: figurinha
197
+
198
+ ### paraimagem
199
+
200
+ - id: sticker.paraimagem
201
+ - aliases: tovideo, tovid, toimg
202
+ - enabled: true
203
+ - categoria: figurinhas
204
+ - descricao: Converte figurinha para imagem ou video quando aplicavel.
205
+ - permissao_necessaria: usuario comum
206
+ - version: 1.0.0
207
+ - stability: stable
208
+ - deprecated: nao
209
+ - risk_level: low
210
+ - local_de_uso:
211
+ - privado
212
+ - grupo
213
+ - metodos_de_uso:
214
+ - <prefix>paraimagem
215
+ - <prefix>tovideo
216
+ - <prefix>tovid
217
+ - mensagens_uso (variantes):
218
+ - default:
219
+ - 📌 Use: <prefix>paraimagem (ou <prefix>tovideo / <prefix>tovid) respondendo a uma figurinha.
220
+ - subcomandos:
221
+ - (nenhum)
222
+ - argumentos:
223
+ - (nenhum)
224
+ - pre_condicoes:
225
+ - requer_grupo: nao
226
+ - requer_admin: nao
227
+ - requer_admin_principal: nao
228
+ - requer_google_login: sim
229
+ - requer_nsfw: nao
230
+ - requer_midia: sim
231
+ - requer_mensagem_respondida: nao
232
+ - rate_limit:
233
+ - max: null
234
+ - janela_ms: null
235
+ - escopo: sem_rate_limit_explicito
236
+ - acesso:
237
+ - somente_premium: nao
238
+ - planos_permitidos: comum, premium
239
+ - limite_uso_por_plano:
240
+ - comum: max=12, janela_ms=300000, escopo=usuario
241
+ - premium: max=45, janela_ms=300000, escopo=usuario
242
+ - informacoes_coletadas:
243
+ - identificador do chat (remoteJid)
244
+ - identificador do remetente (senderJid)
245
+ - texto do comando e argumentos
246
+ - contexto da mensagem (citacao e mencoes, quando existir)
247
+ - metadados da figurinha (incluindo se e animada)
248
+ - arquivo de figurinha baixado temporariamente para conversao
249
+ - dependencias_externas:
250
+ - conversão de mídia local
251
+ - armazenamento temporário
252
+ - efeitos_colaterais:
253
+ - faz download/conversão temporária de figurinha
254
+ - envia mídia convertida
255
+ - respostas_padrao:
256
+ - success: Comando executado com sucesso.
257
+ - usage_error: Formato de uso inválido. Consulte metodos_de_uso.
258
+ - permission_error: Permissão insuficiente para executar este comando.
259
+ - sucesso: Comando executado com sucesso.
260
+ - erro_uso: Formato de uso inválido. Consulte metodos_de_uso.
261
+ - erro_permissao: Permissão insuficiente para executar este comando.
262
+ - mensagens_sistema:
263
+ - (nao informado)
264
+ - limites_operacionais:
265
+ - (nao informado)
266
+ - opcoes:
267
+ - toggle_on_off_status.type: toggle
268
+ - toggle_on_off_status.allowed_actions: on, off, status
269
+ - toggle_on_off_status.action_argument: acao
270
+ - add_remove_list.type: list_management
271
+ - add_remove_list.allowed_actions: add, remove, list
272
+ - add_remove_list.action_argument: acao
273
+ - approve_reject.type: moderation_decision
274
+ - approve_reject.allowed_actions: approve, reject
275
+ - approve_reject.action_argument: acao
276
+ - approve_reject.requires_targets: true
277
+ - set_status_reset.type: configuration_window
278
+ - set_status_reset.allowed_actions: set, status, reset
279
+ - set_status_reset.action_argument: valor
280
+ - observabilidade:
281
+ - event_name: command.executed
282
+ - analytics_event: whatsapp_command_toimg
283
+ - tags_log: whatsapp, command, stickerModule, toimg
284
+ - nivel_log: info
285
+ - privacidade:
286
+ - dados_sensiveis:
287
+ - chat_identifier
288
+ - sender_identifier
289
+ - command_content
290
+ - retencao: standard_app_logs
291
+ - base_legal: service_execution_and_legitimate_interest
292
+ - docs:
293
+ - summary: Converte figurinha para imagem ou video quando aplicavel.
294
+ - usage_examples: <prefix>paraimagem, <prefix>tovideo, <prefix>tovid
295
+ - usage_variants.default: 📌 Use: <prefix>paraimagem (ou <prefix>tovideo / <prefix>tovid) respondendo a uma figurinha.
296
+ - behavior:
297
+ - type: simple_action
298
+ - allowed_actions: (nenhum)
299
+ - limits:
300
+ - usage_description: figurinha ate 2 MB
301
+ - rate_limit.max: null
302
+ - rate_limit.janela_ms: null
303
+ - rate_limit.escopo: sem_rate_limit_explicito
304
+ - access.somente_premium: false
305
+ - access.planos_permitidos: comum, premium
306
+ - plan_limits.comum.max: 12
307
+ - plan_limits.comum.janela_ms: 300000
308
+ - plan_limits.comum.escopo: usuario
309
+ - plan_limits.premium.max: 45
310
+ - plan_limits.premium.janela_ms: 300000
311
+ - plan_limits.premium.escopo: usuario
312
+ - discovery:
313
+ - keywords: paraimagem, tovideo, tovid, figurinhas, privado, grupo
314
+ - faq_queries: como usar paraimagem, o que faz paraimagem, comando paraimagem
315
+ - user_phrasings: quero usar paraimagem, me ajuda com paraimagem, converte figurinha para imagem
316
+ - suggestion_priority: 100
317
+ - handler:
318
+ - file: stickerConvertCommand.js
319
+ - method: handleStickerConvertCommand
320
+ - command_case: paraimagem
321
+
322
+ ### figurinhatexto
323
+
324
+ - id: sticker.figurinhatexto
325
+ - aliases: st, stickertext
326
+ - enabled: true
327
+ - categoria: figurinhas
328
+ - descricao: Gera figurinha com texto (tema escuro).
329
+ - permissao_necessaria: usuario comum
330
+ - version: 1.0.0
331
+ - stability: stable
332
+ - deprecated: nao
333
+ - risk_level: low
334
+ - local_de_uso:
335
+ - privado
336
+ - grupo
337
+ - metodos_de_uso:
338
+ - <prefix>figurinhatexto seu texto
339
+ - <prefix>st seu texto
340
+ - mensagens_uso (variantes):
341
+ - default:
342
+ - 📌 Use: <prefix>figurinhatexto seu texto
343
+ - 💡 Exemplo: <prefix>st bom dia seus lindos
344
+ - subcomandos:
345
+ - (nenhum)
346
+ - argumentos:
347
+ - texto | tipo: string | obrigatorio | validacao: até 80 caracteres, máximo 4 linhas | default: null | posicao: 0
348
+ - pre_condicoes:
349
+ - requer_grupo: nao
350
+ - requer_admin: nao
351
+ - requer_admin_principal: nao
352
+ - requer_google_login: sim
353
+ - requer_nsfw: nao
354
+ - requer_midia: nao
355
+ - requer_mensagem_respondida: nao
356
+ - rate_limit:
357
+ - max: null
358
+ - janela_ms: null
359
+ - escopo: sem_rate_limit_explicito
360
+ - acesso:
361
+ - somente_premium: nao
362
+ - planos_permitidos: comum, premium
363
+ - limite_uso_por_plano:
364
+ - comum: max=12, janela_ms=300000, escopo=usuario
365
+ - premium: max=45, janela_ms=300000, escopo=usuario
366
+ - informacoes_coletadas:
367
+ - identificador do chat (remoteJid)
368
+ - identificador do remetente (senderJid)
369
+ - texto do comando e argumentos
370
+ - contexto da mensagem (citacao e mencoes, quando existir)
371
+ - texto informado para compor a figurinha
372
+ - opcoes de estilo/cor do texto
373
+ - dependencias_externas:
374
+ - conversão de mídia local
375
+ - armazenamento temporário
376
+ - efeitos_colaterais:
377
+ - gera mídia temporária de figurinha com texto
378
+ - envia figurinha
379
+ - respostas_padrao:
380
+ - success: Comando executado com sucesso.
381
+ - usage_error: Formato de uso inválido. Consulte metodos_de_uso.
382
+ - permission_error: Permissão insuficiente para executar este comando.
383
+ - sucesso: Comando executado com sucesso.
384
+ - erro_uso: Formato de uso inválido. Consulte metodos_de_uso.
385
+ - erro_permissao: Permissão insuficiente para executar este comando.
386
+ - mensagens_sistema:
387
+ - (nao informado)
388
+ - limites_operacionais:
389
+ - (nao informado)
390
+ - opcoes:
391
+ - toggle_on_off_status.type: toggle
392
+ - toggle_on_off_status.allowed_actions: on, off, status
393
+ - toggle_on_off_status.action_argument: acao
394
+ - add_remove_list.type: list_management
395
+ - add_remove_list.allowed_actions: add, remove, list
396
+ - add_remove_list.action_argument: acao
397
+ - approve_reject.type: moderation_decision
398
+ - approve_reject.allowed_actions: approve, reject
399
+ - approve_reject.action_argument: acao
400
+ - approve_reject.requires_targets: true
401
+ - set_status_reset.type: configuration_window
402
+ - set_status_reset.allowed_actions: set, status, reset
403
+ - set_status_reset.action_argument: valor
404
+ - observabilidade:
405
+ - event_name: command.executed
406
+ - analytics_event: whatsapp_command_stickertext
407
+ - tags_log: whatsapp, command, stickerModule, stickertext
408
+ - nivel_log: info
409
+ - privacidade:
410
+ - dados_sensiveis:
411
+ - chat_identifier
412
+ - sender_identifier
413
+ - command_content
414
+ - retencao: standard_app_logs
415
+ - base_legal: service_execution_and_legitimate_interest
416
+ - docs:
417
+ - summary: Gera figurinha com texto (tema escuro).
418
+ - usage_examples: <prefix>figurinhatexto seu texto, <prefix>st seu texto
419
+ - usage_variants.default: 📌 Use: <prefix>figurinhatexto seu texto, 💡 Exemplo: <prefix>st bom dia seus lindos
420
+ - behavior:
421
+ - type: argument_driven
422
+ - allowed_actions: (nenhum)
423
+ - limits:
424
+ - usage_description: ate 80 caracteres e 4 linhas
425
+ - rate_limit.max: null
426
+ - rate_limit.janela_ms: null
427
+ - rate_limit.escopo: sem_rate_limit_explicito
428
+ - access.somente_premium: false
429
+ - access.planos_permitidos: comum, premium
430
+ - plan_limits.comum.max: 12
431
+ - plan_limits.comum.janela_ms: 300000
432
+ - plan_limits.comum.escopo: usuario
433
+ - plan_limits.premium.max: 45
434
+ - plan_limits.premium.janela_ms: 300000
435
+ - plan_limits.premium.escopo: usuario
436
+ - discovery:
437
+ - keywords: figurinhatexto, st, figurinhas, privado, grupo
438
+ - faq_queries: como usar figurinhatexto, o que faz figurinhatexto, comando figurinhatexto
439
+ - user_phrasings: quero usar figurinhatexto, me ajuda com figurinhatexto, gera figurinha com texto
440
+ - suggestion_priority: 100
441
+ - handler:
442
+ - file: stickerTextCommand.js
443
+ - method: processTextSticker
444
+ - command_case: figurinhatexto
445
+
446
+ ### figurinhatextobranco
447
+
448
+ - id: sticker.figurinhatextobranco
449
+ - aliases: stw, stickertextwhite
450
+ - enabled: true
451
+ - categoria: figurinhas
452
+ - descricao: Gera figurinha com texto (tema claro).
453
+ - permissao_necessaria: usuario comum
454
+ - version: 1.0.0
455
+ - stability: stable
456
+ - deprecated: nao
457
+ - risk_level: low
458
+ - local_de_uso:
459
+ - privado
460
+ - grupo
461
+ - metodos_de_uso:
462
+ - <prefix>figurinhatextobranco seu texto
463
+ - <prefix>stw seu texto
464
+ - mensagens_uso (variantes):
465
+ - default:
466
+ - 📌 Use: <prefix>figurinhatextobranco seu texto
467
+ - 💡 Exemplo: <prefix>stw bom dia seus lindos
468
+ - subcomandos:
469
+ - (nenhum)
470
+ - argumentos:
471
+ - texto | tipo: string | obrigatorio | validacao: até 80 caracteres, máximo 4 linhas | default: null | posicao: 0
472
+ - pre_condicoes:
473
+ - requer_grupo: nao
474
+ - requer_admin: nao
475
+ - requer_admin_principal: nao
476
+ - requer_google_login: sim
477
+ - requer_nsfw: nao
478
+ - requer_midia: nao
479
+ - requer_mensagem_respondida: nao
480
+ - rate_limit:
481
+ - max: null
482
+ - janela_ms: null
483
+ - escopo: sem_rate_limit_explicito
484
+ - acesso:
485
+ - somente_premium: nao
486
+ - planos_permitidos: comum, premium
487
+ - limite_uso_por_plano:
488
+ - comum: max=12, janela_ms=300000, escopo=usuario
489
+ - premium: max=45, janela_ms=300000, escopo=usuario
490
+ - informacoes_coletadas:
491
+ - identificador do chat (remoteJid)
492
+ - identificador do remetente (senderJid)
493
+ - texto do comando e argumentos
494
+ - contexto da mensagem (citacao e mencoes, quando existir)
495
+ - texto informado para compor a figurinha
496
+ - opcoes de estilo/cor do texto
497
+ - dependencias_externas:
498
+ - conversão de mídia local
499
+ - armazenamento temporário
500
+ - efeitos_colaterais:
501
+ - gera mídia temporária de figurinha com texto
502
+ - envia figurinha
503
+ - respostas_padrao:
504
+ - success: Comando executado com sucesso.
505
+ - usage_error: Formato de uso inválido. Consulte metodos_de_uso.
506
+ - permission_error: Permissão insuficiente para executar este comando.
507
+ - sucesso: Comando executado com sucesso.
508
+ - erro_uso: Formato de uso inválido. Consulte metodos_de_uso.
509
+ - erro_permissao: Permissão insuficiente para executar este comando.
510
+ - mensagens_sistema:
511
+ - (nao informado)
512
+ - limites_operacionais:
513
+ - (nao informado)
514
+ - opcoes:
515
+ - toggle_on_off_status.type: toggle
516
+ - toggle_on_off_status.allowed_actions: on, off, status
517
+ - toggle_on_off_status.action_argument: acao
518
+ - add_remove_list.type: list_management
519
+ - add_remove_list.allowed_actions: add, remove, list
520
+ - add_remove_list.action_argument: acao
521
+ - approve_reject.type: moderation_decision
522
+ - approve_reject.allowed_actions: approve, reject
523
+ - approve_reject.action_argument: acao
524
+ - approve_reject.requires_targets: true
525
+ - set_status_reset.type: configuration_window
526
+ - set_status_reset.allowed_actions: set, status, reset
527
+ - set_status_reset.action_argument: valor
528
+ - observabilidade:
529
+ - event_name: command.executed
530
+ - analytics_event: whatsapp_command_stickertextwhite
531
+ - tags_log: whatsapp, command, stickerModule, stickertextwhite
532
+ - nivel_log: info
533
+ - privacidade:
534
+ - dados_sensiveis:
535
+ - chat_identifier
536
+ - sender_identifier
537
+ - command_content
538
+ - retencao: standard_app_logs
539
+ - base_legal: service_execution_and_legitimate_interest
540
+ - docs:
541
+ - summary: Gera figurinha com texto (tema claro).
542
+ - usage_examples: <prefix>figurinhatextobranco seu texto, <prefix>stw seu texto
543
+ - usage_variants.default: 📌 Use: <prefix>figurinhatextobranco seu texto, 💡 Exemplo: <prefix>stw bom dia seus lindos
544
+ - behavior:
545
+ - type: argument_driven
546
+ - allowed_actions: (nenhum)
547
+ - limits:
548
+ - usage_description: ate 80 caracteres e 4 linhas
549
+ - rate_limit.max: null
550
+ - rate_limit.janela_ms: null
551
+ - rate_limit.escopo: sem_rate_limit_explicito
552
+ - access.somente_premium: false
553
+ - access.planos_permitidos: comum, premium
554
+ - plan_limits.comum.max: 12
555
+ - plan_limits.comum.janela_ms: 300000
556
+ - plan_limits.comum.escopo: usuario
557
+ - plan_limits.premium.max: 45
558
+ - plan_limits.premium.janela_ms: 300000
559
+ - plan_limits.premium.escopo: usuario
560
+ - discovery:
561
+ - keywords: figurinhatextobranco, stw, figurinhas, privado, grupo
562
+ - faq_queries: como usar figurinhatextobranco, o que faz figurinhatextobranco, comando figurinhatextobranco
563
+ - user_phrasings: quero usar figurinhatextobranco, me ajuda com figurinhatextobranco, gera figurinha com texto
564
+ - suggestion_priority: 100
565
+ - handler:
566
+ - file: stickerTextCommand.js
567
+ - method: processTextSticker
568
+ - command_case: figurinhatextobranco
569
+
570
+ ### figurinhatextopisca
571
+
572
+ - id: sticker.figurinhatextopisca
573
+ - aliases: stb, stickertextblink
574
+ - enabled: true
575
+ - categoria: figurinhas
576
+ - descricao: Gera figurinha animada de texto piscante.
577
+ - permissao_necessaria: usuario comum
578
+ - version: 1.0.0
579
+ - stability: stable
580
+ - deprecated: nao
581
+ - risk_level: low
582
+ - local_de_uso:
583
+ - privado
584
+ - grupo
585
+ - metodos_de_uso:
586
+ - <prefix>figurinhatextopisca seu texto
587
+ - <prefix>stb seu texto
588
+ - mensagens_uso (variantes):
589
+ - default:
590
+ - 📌 Use: <prefix>figurinhatextopisca seu texto
591
+ - 💡 Exemplo: <prefix>stb bom dia seus lindos -verde
592
+ - subcomandos:
593
+ - (nenhum)
594
+ - argumentos:
595
+ - texto | tipo: string | obrigatorio | validacao: até 80 caracteres, máximo 4 linhas | default: null | posicao: 0
596
+ - pre_condicoes:
597
+ - requer_grupo: nao
598
+ - requer_admin: nao
599
+ - requer_admin_principal: nao
600
+ - requer_google_login: sim
601
+ - requer_nsfw: nao
602
+ - requer_midia: nao
603
+ - requer_mensagem_respondida: nao
604
+ - rate_limit:
605
+ - max: null
606
+ - janela_ms: null
607
+ - escopo: sem_rate_limit_explicito
608
+ - acesso:
609
+ - somente_premium: nao
610
+ - planos_permitidos: comum, premium
611
+ - limite_uso_por_plano:
612
+ - comum: max=12, janela_ms=300000, escopo=usuario
613
+ - premium: max=45, janela_ms=300000, escopo=usuario
614
+ - informacoes_coletadas:
615
+ - identificador do chat (remoteJid)
616
+ - identificador do remetente (senderJid)
617
+ - texto do comando e argumentos
618
+ - contexto da mensagem (citacao e mencoes, quando existir)
619
+ - texto informado para compor a figurinha
620
+ - parametros de animacao piscante
621
+ - dependencias_externas:
622
+ - conversão de mídia local
623
+ - armazenamento temporário
624
+ - efeitos_colaterais:
625
+ - gera mídia temporária animada
626
+ - envia figurinha
627
+ - respostas_padrao:
628
+ - success: Comando executado com sucesso.
629
+ - usage_error: Formato de uso inválido. Consulte metodos_de_uso.
630
+ - permission_error: Permissão insuficiente para executar este comando.
631
+ - sucesso: Comando executado com sucesso.
632
+ - erro_uso: Formato de uso inválido. Consulte metodos_de_uso.
633
+ - erro_permissao: Permissão insuficiente para executar este comando.
634
+ - mensagens_sistema:
635
+ - (nao informado)
636
+ - limites_operacionais:
637
+ - (nao informado)
638
+ - opcoes:
639
+ - toggle_on_off_status.type: toggle
640
+ - toggle_on_off_status.allowed_actions: on, off, status
641
+ - toggle_on_off_status.action_argument: acao
642
+ - add_remove_list.type: list_management
643
+ - add_remove_list.allowed_actions: add, remove, list
644
+ - add_remove_list.action_argument: acao
645
+ - approve_reject.type: moderation_decision
646
+ - approve_reject.allowed_actions: approve, reject
647
+ - approve_reject.action_argument: acao
648
+ - approve_reject.requires_targets: true
649
+ - set_status_reset.type: configuration_window
650
+ - set_status_reset.allowed_actions: set, status, reset
651
+ - set_status_reset.action_argument: valor
652
+ - observabilidade:
653
+ - event_name: command.executed
654
+ - analytics_event: whatsapp_command_stickertextblink
655
+ - tags_log: whatsapp, command, stickerModule, stickertextblink
656
+ - nivel_log: info
657
+ - privacidade:
658
+ - dados_sensiveis:
659
+ - chat_identifier
660
+ - sender_identifier
661
+ - command_content
662
+ - retencao: standard_app_logs
663
+ - base_legal: service_execution_and_legitimate_interest
664
+ - docs:
665
+ - summary: Gera figurinha animada de texto piscante.
666
+ - usage_examples: <prefix>figurinhatextopisca seu texto, <prefix>stb seu texto
667
+ - usage_variants.default: 📌 Use: <prefix>figurinhatextopisca seu texto, 💡 Exemplo: <prefix>stb bom dia seus lindos -verde
668
+ - behavior:
669
+ - type: argument_driven
670
+ - allowed_actions: (nenhum)
671
+ - limits:
672
+ - usage_description: ate 80 caracteres e 4 linhas
673
+ - rate_limit.max: null
674
+ - rate_limit.janela_ms: null
675
+ - rate_limit.escopo: sem_rate_limit_explicito
676
+ - access.somente_premium: false
677
+ - access.planos_permitidos: comum, premium
678
+ - plan_limits.comum.max: 12
679
+ - plan_limits.comum.janela_ms: 300000
680
+ - plan_limits.comum.escopo: usuario
681
+ - plan_limits.premium.max: 45
682
+ - plan_limits.premium.janela_ms: 300000
683
+ - plan_limits.premium.escopo: usuario
684
+ - discovery:
685
+ - keywords: figurinhatextopisca, stb, figurinhas, privado, grupo
686
+ - faq_queries: como usar figurinhatextopisca, o que faz figurinhatextopisca, comando figurinhatextopisca
687
+ - user_phrasings: quero usar figurinhatextopisca, me ajuda com figurinhatextopisca, gera figurinha animada de
688
+ - suggestion_priority: 100
689
+ - handler:
690
+ - file: stickerTextCommand.js
691
+ - method: processBlinkingTextSticker
692
+ - command_case: figurinhatextopisca