@baruk/core 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1047) hide show
  1. package/.baruk-provenance.json +10 -0
  2. package/CHANGELOG.md +127 -0
  3. package/dist/audit/repository.d.ts +33 -1
  4. package/dist/audit/repository.d.ts.map +1 -1
  5. package/dist/audit/repository.js +41 -7
  6. package/dist/audit/repository.js.map +1 -1
  7. package/dist/auth/password-reset.d.ts +30 -1
  8. package/dist/auth/password-reset.d.ts.map +1 -1
  9. package/dist/auth/password-reset.js +139 -11
  10. package/dist/auth/password-reset.js.map +1 -1
  11. package/dist/auth/service.d.ts +60 -2
  12. package/dist/auth/service.d.ts.map +1 -1
  13. package/dist/auth/service.js +121 -11
  14. package/dist/auth/service.js.map +1 -1
  15. package/dist/billing/ar-repository.d.ts +374 -0
  16. package/dist/billing/ar-repository.d.ts.map +1 -0
  17. package/dist/billing/ar-repository.js +783 -0
  18. package/dist/billing/ar-repository.js.map +1 -0
  19. package/dist/billing/auto-generation.d.ts +87 -0
  20. package/dist/billing/auto-generation.d.ts.map +1 -0
  21. package/dist/billing/auto-generation.js +181 -0
  22. package/dist/billing/auto-generation.js.map +1 -0
  23. package/dist/billing/live-guard.d.ts +64 -0
  24. package/dist/billing/live-guard.d.ts.map +1 -0
  25. package/dist/billing/live-guard.js +68 -0
  26. package/dist/billing/live-guard.js.map +1 -0
  27. package/dist/billing/payment-means-catalog.d.ts +17 -0
  28. package/dist/billing/payment-means-catalog.d.ts.map +1 -0
  29. package/dist/billing/payment-means-catalog.js +21 -0
  30. package/dist/billing/payment-means-catalog.js.map +1 -0
  31. package/dist/billing/payment-means.d.ts +38 -0
  32. package/dist/billing/payment-means.d.ts.map +1 -0
  33. package/dist/billing/payment-means.js +29 -0
  34. package/dist/billing/payment-means.js.map +1 -0
  35. package/dist/billing/payment-rail.d.ts +118 -0
  36. package/dist/billing/payment-rail.d.ts.map +1 -0
  37. package/dist/billing/payment-rail.js +295 -0
  38. package/dist/billing/payment-rail.js.map +1 -0
  39. package/dist/billing/provider/asaas.d.ts +46 -1
  40. package/dist/billing/provider/asaas.d.ts.map +1 -1
  41. package/dist/billing/provider/asaas.js +194 -14
  42. package/dist/billing/provider/asaas.js.map +1 -1
  43. package/dist/billing/provider/manual.js +1 -1
  44. package/dist/billing/provider/manual.js.map +1 -1
  45. package/dist/billing/provider/types.d.ts +115 -8
  46. package/dist/billing/provider/types.d.ts.map +1 -1
  47. package/dist/billing/provider-account.d.ts +127 -0
  48. package/dist/billing/provider-account.d.ts.map +1 -0
  49. package/dist/billing/provider-account.js +217 -0
  50. package/dist/billing/provider-account.js.map +1 -0
  51. package/dist/billing/provider-onboarding.d.ts +67 -0
  52. package/dist/billing/provider-onboarding.d.ts.map +1 -0
  53. package/dist/billing/provider-onboarding.js +234 -0
  54. package/dist/billing/provider-onboarding.js.map +1 -0
  55. package/dist/billing/receivable.d.ts +5 -1
  56. package/dist/billing/receivable.d.ts.map +1 -1
  57. package/dist/billing/reconcile.d.ts +58 -0
  58. package/dist/billing/reconcile.d.ts.map +1 -0
  59. package/dist/billing/reconcile.js +138 -0
  60. package/dist/billing/reconcile.js.map +1 -0
  61. package/dist/billing/repository.d.ts +134 -1
  62. package/dist/billing/repository.d.ts.map +1 -1
  63. package/dist/billing/repository.js +193 -20
  64. package/dist/billing/repository.js.map +1 -1
  65. package/dist/cjs/audit/repository.js +41 -7
  66. package/dist/cjs/audit/repository.js.map +1 -1
  67. package/dist/cjs/auth/password-reset.js +141 -11
  68. package/dist/cjs/auth/password-reset.js.map +1 -1
  69. package/dist/cjs/auth/service.js +121 -10
  70. package/dist/cjs/auth/service.js.map +1 -1
  71. package/dist/cjs/billing/ar-repository.js +804 -0
  72. package/dist/cjs/billing/ar-repository.js.map +1 -0
  73. package/dist/cjs/billing/auto-generation.js +186 -0
  74. package/dist/cjs/billing/auto-generation.js.map +1 -0
  75. package/dist/cjs/billing/live-guard.js +72 -0
  76. package/dist/cjs/billing/live-guard.js.map +1 -0
  77. package/dist/cjs/billing/payment-means-catalog.js +25 -0
  78. package/dist/cjs/billing/payment-means-catalog.js.map +1 -0
  79. package/dist/cjs/billing/payment-means.js +33 -0
  80. package/dist/cjs/billing/payment-means.js.map +1 -0
  81. package/dist/cjs/billing/payment-rail.js +301 -0
  82. package/dist/cjs/billing/payment-rail.js.map +1 -0
  83. package/dist/cjs/billing/provider/asaas.js +194 -14
  84. package/dist/cjs/billing/provider/asaas.js.map +1 -1
  85. package/dist/cjs/billing/provider/manual.js +1 -1
  86. package/dist/cjs/billing/provider/manual.js.map +1 -1
  87. package/dist/cjs/billing/provider-account.js +229 -0
  88. package/dist/cjs/billing/provider-account.js.map +1 -0
  89. package/dist/cjs/billing/provider-onboarding.js +239 -0
  90. package/dist/cjs/billing/provider-onboarding.js.map +1 -0
  91. package/dist/cjs/billing/reconcile.js +143 -0
  92. package/dist/cjs/billing/reconcile.js.map +1 -0
  93. package/dist/cjs/billing/repository.js +197 -19
  94. package/dist/cjs/billing/repository.js.map +1 -1
  95. package/dist/cjs/clients/ibge.js +103 -0
  96. package/dist/cjs/clients/ibge.js.map +1 -0
  97. package/dist/cjs/clients/repository.js +276 -23
  98. package/dist/cjs/clients/repository.js.map +1 -1
  99. package/dist/cjs/collection/branding.js +330 -0
  100. package/dist/cjs/collection/branding.js.map +1 -0
  101. package/dist/cjs/collection/channel-accounts.js +137 -0
  102. package/dist/cjs/collection/channel-accounts.js.map +1 -0
  103. package/dist/cjs/collection/channel.js +17 -0
  104. package/dist/cjs/collection/channel.js.map +1 -0
  105. package/dist/cjs/collection/clearance-store.js +74 -0
  106. package/dist/cjs/collection/clearance-store.js.map +1 -0
  107. package/dist/cjs/collection/communication-bridge.js +140 -0
  108. package/dist/cjs/collection/communication-bridge.js.map +1 -0
  109. package/dist/cjs/collection/communication-runtime.js +256 -0
  110. package/dist/cjs/collection/communication-runtime.js.map +1 -0
  111. package/dist/cjs/collection/consent-repository.js +84 -0
  112. package/dist/cjs/collection/consent-repository.js.map +1 -0
  113. package/dist/cjs/collection/copy.js +125 -0
  114. package/dist/cjs/collection/copy.js.map +1 -0
  115. package/dist/cjs/collection/delivery-callback.js +151 -0
  116. package/dist/cjs/collection/delivery-callback.js.map +1 -0
  117. package/dist/cjs/collection/email-layout.js +252 -0
  118. package/dist/cjs/collection/email-layout.js.map +1 -0
  119. package/dist/cjs/collection/engine.js +434 -0
  120. package/dist/cjs/collection/engine.js.map +1 -0
  121. package/dist/cjs/collection/format.js +76 -0
  122. package/dist/cjs/collection/format.js.map +1 -0
  123. package/dist/cjs/collection/payment-block.js +3 -0
  124. package/dist/cjs/collection/payment-block.js.map +1 -0
  125. package/dist/cjs/collection/policy.js +175 -0
  126. package/dist/cjs/collection/policy.js.map +1 -0
  127. package/dist/cjs/collection/repository.js +260 -0
  128. package/dist/cjs/collection/repository.js.map +1 -0
  129. package/dist/cjs/collection/subject.js +104 -0
  130. package/dist/cjs/collection/subject.js.map +1 -0
  131. package/dist/cjs/collection/template-catalog.js +165 -0
  132. package/dist/cjs/collection/template-catalog.js.map +1 -0
  133. package/dist/cjs/collection/template.js +78 -0
  134. package/dist/cjs/collection/template.js.map +1 -0
  135. package/dist/cjs/communication/adapters/email.js +132 -0
  136. package/dist/cjs/communication/adapters/email.js.map +1 -0
  137. package/dist/cjs/communication/adapters/sms.js +127 -0
  138. package/dist/cjs/communication/adapters/sms.js.map +1 -0
  139. package/dist/cjs/communication/adapters/whatsapp-language.js +39 -0
  140. package/dist/cjs/communication/adapters/whatsapp-language.js.map +1 -0
  141. package/dist/cjs/communication/adapters/whatsapp-templates.js +100 -0
  142. package/dist/cjs/communication/adapters/whatsapp-templates.js.map +1 -0
  143. package/dist/cjs/communication/adapters/whatsapp.js +213 -0
  144. package/dist/cjs/communication/adapters/whatsapp.js.map +1 -0
  145. package/dist/cjs/communication/audit.js +61 -0
  146. package/dist/cjs/communication/audit.js.map +1 -0
  147. package/dist/cjs/communication/capabilities.js +76 -0
  148. package/dist/cjs/communication/capabilities.js.map +1 -0
  149. package/dist/cjs/communication/channel.js +53 -0
  150. package/dist/cjs/communication/channel.js.map +1 -0
  151. package/dist/cjs/communication/claim.js +228 -0
  152. package/dist/cjs/communication/claim.js.map +1 -0
  153. package/dist/cjs/communication/clearance.js +18 -0
  154. package/dist/cjs/communication/clearance.js.map +1 -0
  155. package/dist/cjs/communication/consent.js +43 -0
  156. package/dist/cjs/communication/consent.js.map +1 -0
  157. package/dist/cjs/communication/context.js +45 -0
  158. package/dist/cjs/communication/context.js.map +1 -0
  159. package/dist/cjs/communication/credentials.js +121 -0
  160. package/dist/cjs/communication/credentials.js.map +1 -0
  161. package/dist/cjs/communication/dry-run-scenario.js +166 -0
  162. package/dist/cjs/communication/dry-run-scenario.js.map +1 -0
  163. package/dist/cjs/communication/dry-run.js +97 -0
  164. package/dist/cjs/communication/dry-run.js.map +1 -0
  165. package/dist/cjs/communication/engine.js +495 -0
  166. package/dist/cjs/communication/engine.js.map +1 -0
  167. package/dist/cjs/communication/graph.js +50 -0
  168. package/dist/cjs/communication/graph.js.map +1 -0
  169. package/dist/cjs/communication/idempotency.js +26 -0
  170. package/dist/cjs/communication/idempotency.js.map +1 -0
  171. package/dist/cjs/communication/identity.js +110 -0
  172. package/dist/cjs/communication/identity.js.map +1 -0
  173. package/dist/cjs/communication/index.js +135 -0
  174. package/dist/cjs/communication/index.js.map +1 -0
  175. package/dist/cjs/communication/onboarding.js +297 -0
  176. package/dist/cjs/communication/onboarding.js.map +1 -0
  177. package/dist/cjs/communication/policy.js +16 -0
  178. package/dist/cjs/communication/policy.js.map +1 -0
  179. package/dist/cjs/communication/routing.js +77 -0
  180. package/dist/cjs/communication/routing.js.map +1 -0
  181. package/dist/cjs/communication/sender-profile.js +128 -0
  182. package/dist/cjs/communication/sender-profile.js.map +1 -0
  183. package/dist/cjs/communication/status.js +86 -0
  184. package/dist/cjs/communication/status.js.map +1 -0
  185. package/dist/cjs/communication/stores/onboarding.js +135 -0
  186. package/dist/cjs/communication/stores/onboarding.js.map +1 -0
  187. package/dist/cjs/communication/stores/postgres.js +458 -0
  188. package/dist/cjs/communication/stores/postgres.js.map +1 -0
  189. package/dist/cjs/communication/stores/routing.js +334 -0
  190. package/dist/cjs/communication/stores/routing.js.map +1 -0
  191. package/dist/cjs/communication/stores/secrets.js +126 -0
  192. package/dist/cjs/communication/stores/secrets.js.map +1 -0
  193. package/dist/cjs/communication/template-provider.js +22 -0
  194. package/dist/cjs/communication/template-provider.js.map +1 -0
  195. package/dist/cjs/communication/template.js +63 -0
  196. package/dist/cjs/communication/template.js.map +1 -0
  197. package/dist/cjs/communication/webhook-subscription.js +258 -0
  198. package/dist/cjs/communication/webhook-subscription.js.map +1 -0
  199. package/dist/cjs/communication/webhook.js +292 -0
  200. package/dist/cjs/communication/webhook.js.map +1 -0
  201. package/dist/cjs/competence/business-days.js +155 -0
  202. package/dist/cjs/competence/business-days.js.map +1 -0
  203. package/dist/cjs/competence/catalog-validation.js +174 -0
  204. package/dist/cjs/competence/catalog-validation.js.map +1 -0
  205. package/dist/cjs/competence/obligation-preview.js +190 -0
  206. package/dist/cjs/competence/obligation-preview.js.map +1 -0
  207. package/dist/cjs/competence/repository.js +622 -0
  208. package/dist/cjs/competence/repository.js.map +1 -0
  209. package/dist/cjs/contacts/phone.js +192 -0
  210. package/dist/cjs/contacts/phone.js.map +1 -0
  211. package/dist/cjs/dashboard/pilot-panel.js +90 -0
  212. package/dist/cjs/dashboard/pilot-panel.js.map +1 -0
  213. package/dist/cjs/dashboard/repository.js +11 -1
  214. package/dist/cjs/dashboard/repository.js.map +1 -1
  215. package/dist/cjs/db/client.js +17 -11
  216. package/dist/cjs/db/client.js.map +1 -1
  217. package/dist/cjs/db/provision-e2e-identity.js +111 -0
  218. package/dist/cjs/db/provision-e2e-identity.js.map +1 -0
  219. package/dist/cjs/db/seed-catalog.js +48 -0
  220. package/dist/cjs/db/seed-catalog.js.map +1 -0
  221. package/dist/cjs/db/seed.js +15 -7
  222. package/dist/cjs/db/seed.js.map +1 -1
  223. package/dist/cjs/documents/repository.js +244 -0
  224. package/dist/cjs/documents/repository.js.map +1 -0
  225. package/dist/cjs/documents/requests.js +136 -0
  226. package/dist/cjs/documents/requests.js.map +1 -0
  227. package/dist/cjs/fiscal/applicability.js +164 -0
  228. package/dist/cjs/fiscal/applicability.js.map +1 -0
  229. package/dist/cjs/fiscal/conditions.js +198 -0
  230. package/dist/cjs/fiscal/conditions.js.map +1 -0
  231. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js +390 -0
  232. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  233. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js +108 -0
  234. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  235. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js +220 -0
  236. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  237. package/dist/cjs/fiscal/coverage/model.js +127 -0
  238. package/dist/cjs/fiscal/coverage/model.js.map +1 -0
  239. package/dist/cjs/fiscal/coverage/requests.js +99 -0
  240. package/dist/cjs/fiscal/coverage/requests.js.map +1 -0
  241. package/dist/cjs/fiscal/credentials/material.js +168 -0
  242. package/dist/cjs/fiscal/credentials/material.js.map +1 -0
  243. package/dist/cjs/fiscal/credentials/readiness.js +163 -0
  244. package/dist/cjs/fiscal/credentials/readiness.js.map +1 -0
  245. package/dist/cjs/fiscal/eligibility.js +199 -0
  246. package/dist/cjs/fiscal/eligibility.js.map +1 -0
  247. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js +128 -0
  248. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  249. package/dist/cjs/fiscal/ingestion/adn-transport.js +229 -0
  250. package/dist/cjs/fiscal/ingestion/adn-transport.js.map +1 -0
  251. package/dist/cjs/fiscal/ingestion/direction.js +36 -0
  252. package/dist/cjs/fiscal/ingestion/direction.js.map +1 -0
  253. package/dist/cjs/fiscal/ingestion/nfse-adn.js +228 -0
  254. package/dist/cjs/fiscal/ingestion/nfse-adn.js.map +1 -0
  255. package/dist/cjs/fiscal/ingestion/pipeline.js +704 -0
  256. package/dist/cjs/fiscal/ingestion/pipeline.js.map +1 -0
  257. package/dist/cjs/fiscal/ingestion/provider.js +51 -0
  258. package/dist/cjs/fiscal/ingestion/provider.js.map +1 -0
  259. package/dist/cjs/fiscal/ingestion/repository.js +132 -0
  260. package/dist/cjs/fiscal/ingestion/repository.js.map +1 -0
  261. package/dist/cjs/fiscal/ingestion/synthetic-provider.js +103 -0
  262. package/dist/cjs/fiscal/ingestion/synthetic-provider.js.map +1 -0
  263. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js +13 -0
  264. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  265. package/dist/cjs/fiscal/ingestion/synthetic-transport.js +61 -0
  266. package/dist/cjs/fiscal/ingestion/synthetic-transport.js.map +1 -0
  267. package/dist/cjs/fiscal/ingestion/xml-reader.js +121 -0
  268. package/dist/cjs/fiscal/ingestion/xml-reader.js.map +1 -0
  269. package/dist/cjs/fiscal/repository.js +470 -0
  270. package/dist/cjs/fiscal/repository.js.map +1 -0
  271. package/dist/cjs/fiscal/sync/circuit.js +124 -0
  272. package/dist/cjs/fiscal/sync/circuit.js.map +1 -0
  273. package/dist/cjs/fiscal/sync/intervention.js +140 -0
  274. package/dist/cjs/fiscal/sync/intervention.js.map +1 -0
  275. package/dist/cjs/fiscal/sync/lease.js +146 -0
  276. package/dist/cjs/fiscal/sync/lease.js.map +1 -0
  277. package/dist/cjs/fiscal/sync/observability.js +244 -0
  278. package/dist/cjs/fiscal/sync/observability.js.map +1 -0
  279. package/dist/cjs/fiscal/sync/orchestrator.js +490 -0
  280. package/dist/cjs/fiscal/sync/orchestrator.js.map +1 -0
  281. package/dist/cjs/fiscal/sync/policy.js +143 -0
  282. package/dist/cjs/fiscal/sync/policy.js.map +1 -0
  283. package/dist/cjs/fiscal/sync/reprocess.js +241 -0
  284. package/dist/cjs/fiscal/sync/reprocess.js.map +1 -0
  285. package/dist/cjs/fiscal/sync/retry.js +183 -0
  286. package/dist/cjs/fiscal/sync/retry.js.map +1 -0
  287. package/dist/cjs/fiscal/sync/secret-boundary.js +123 -0
  288. package/dist/cjs/fiscal/sync/secret-boundary.js.map +1 -0
  289. package/dist/cjs/fiscal/transport/https.js +309 -0
  290. package/dist/cjs/fiscal/transport/https.js.map +1 -0
  291. package/dist/cjs/fiscal/transport/synthetic-tls.js +328 -0
  292. package/dist/cjs/fiscal/transport/synthetic-tls.js.map +1 -0
  293. package/dist/cjs/fiscal/transport/types.js +93 -0
  294. package/dist/cjs/fiscal/transport/types.js.map +1 -0
  295. package/dist/cjs/import/br-documents.js +85 -0
  296. package/dist/cjs/import/br-documents.js.map +1 -0
  297. package/dist/cjs/import/clients-import.js +347 -40
  298. package/dist/cjs/import/clients-import.js.map +1 -1
  299. package/dist/cjs/index.js +711 -39
  300. package/dist/cjs/index.js.map +1 -1
  301. package/dist/cjs/legal/documents.js +224 -17
  302. package/dist/cjs/legal/documents.js.map +1 -1
  303. package/dist/cjs/legal/index.js +3 -1
  304. package/dist/cjs/legal/index.js.map +1 -1
  305. package/dist/cjs/legal/types.js +1 -0
  306. package/dist/cjs/legal/types.js.map +1 -1
  307. package/dist/cjs/mail/auth-templates.js +29 -0
  308. package/dist/cjs/mail/auth-templates.js.map +1 -0
  309. package/dist/cjs/mail/dedup-store.js +12 -51
  310. package/dist/cjs/mail/dedup-store.js.map +1 -1
  311. package/dist/cjs/mail/index.js +16 -4
  312. package/dist/cjs/mail/index.js.map +1 -1
  313. package/dist/cjs/mail/provider.js +12 -247
  314. package/dist/cjs/mail/provider.js.map +1 -1
  315. package/dist/cjs/mail/resend.js +14 -18
  316. package/dist/cjs/mail/resend.js.map +1 -1
  317. package/dist/cjs/mail/sender-resolver.js +12 -11
  318. package/dist/cjs/mail/sender-resolver.js.map +1 -1
  319. package/dist/cjs/mail/template-renderer.js +11 -16
  320. package/dist/cjs/mail/template-renderer.js.map +1 -1
  321. package/dist/cjs/mail/transactional-outbound.js +117 -0
  322. package/dist/cjs/mail/transactional-outbound.js.map +1 -0
  323. package/dist/cjs/mail/types.js +8 -35
  324. package/dist/cjs/mail/types.js.map +1 -1
  325. package/dist/cjs/onboarding/persistence.js +4 -4
  326. package/dist/cjs/onboarding/persistence.js.map +1 -1
  327. package/dist/cjs/pilot/go-live-checklist.js +212 -0
  328. package/dist/cjs/pilot/go-live-checklist.js.map +1 -0
  329. package/dist/cjs/pilot/milestone.js +79 -0
  330. package/dist/cjs/pilot/milestone.js.map +1 -0
  331. package/dist/cjs/platform/capabilities.js +144 -0
  332. package/dist/cjs/platform/capabilities.js.map +1 -0
  333. package/dist/cjs/platform/job-contract.js +411 -0
  334. package/dist/cjs/platform/job-contract.js.map +1 -0
  335. package/dist/cjs/portal/provisioning.js +144 -0
  336. package/dist/cjs/portal/provisioning.js.map +1 -0
  337. package/dist/cjs/pricing-engine/canonical.js +42 -0
  338. package/dist/cjs/pricing-engine/canonical.js.map +1 -0
  339. package/dist/cjs/pricing-engine/errors.js +6 -1
  340. package/dist/cjs/pricing-engine/errors.js.map +1 -1
  341. package/dist/cjs/pricing-engine/index.js +12 -1
  342. package/dist/cjs/pricing-engine/index.js.map +1 -1
  343. package/dist/cjs/pricing-engine/pipeline.js +200 -26
  344. package/dist/cjs/pricing-engine/pipeline.js.map +1 -1
  345. package/dist/cjs/pricing-engine/shadow-adapter.js +79 -0
  346. package/dist/cjs/pricing-engine/shadow-adapter.js.map +1 -0
  347. package/dist/cjs/pricing-engine/shadow-diff.js +55 -0
  348. package/dist/cjs/pricing-engine/shadow-diff.js.map +1 -0
  349. package/dist/cjs/pricing-engine/shadow-facade.js +85 -0
  350. package/dist/cjs/pricing-engine/shadow-facade.js.map +1 -0
  351. package/dist/cjs/pricing-engine/shadow-legacy-types.js +19 -0
  352. package/dist/cjs/pricing-engine/shadow-legacy-types.js.map +1 -0
  353. package/dist/cjs/pricing-engine/shadow-metrics.js +34 -0
  354. package/dist/cjs/pricing-engine/shadow-metrics.js.map +1 -0
  355. package/dist/cjs/pricing-engine/shadow-normalizer.js +42 -0
  356. package/dist/cjs/pricing-engine/shadow-normalizer.js.map +1 -0
  357. package/dist/cjs/rbac/authorize.js +28 -0
  358. package/dist/cjs/rbac/authorize.js.map +1 -1
  359. package/dist/cjs/rbac/catalog.js +101 -1
  360. package/dist/cjs/rbac/catalog.js.map +1 -1
  361. package/dist/cjs/rbac/workload-provisioning.js +160 -0
  362. package/dist/cjs/rbac/workload-provisioning.js.map +1 -0
  363. package/dist/cjs/rbac/workload.js +191 -0
  364. package/dist/cjs/rbac/workload.js.map +1 -0
  365. package/dist/cjs/storage/checksum.js +15 -0
  366. package/dist/cjs/storage/checksum.js.map +1 -0
  367. package/dist/cjs/storage/key.js +72 -0
  368. package/dist/cjs/storage/key.js.map +1 -0
  369. package/dist/cjs/storage/local.js +100 -0
  370. package/dist/cjs/storage/local.js.map +1 -0
  371. package/dist/cjs/storage/r2.js +181 -0
  372. package/dist/cjs/storage/r2.js.map +1 -0
  373. package/dist/cjs/storage/registry.js +41 -0
  374. package/dist/cjs/storage/registry.js.map +1 -0
  375. package/dist/cjs/storage/types.js +50 -0
  376. package/dist/cjs/storage/types.js.map +1 -0
  377. package/dist/cjs/subscription-billing/index.js +2 -1
  378. package/dist/cjs/subscription-billing/index.js.map +1 -1
  379. package/dist/cjs/subscription-billing/provider/asaas.js +32 -7
  380. package/dist/cjs/subscription-billing/provider/asaas.js.map +1 -1
  381. package/dist/cjs/subscription-billing/provider/disabled.js +8 -0
  382. package/dist/cjs/subscription-billing/provider/disabled.js.map +1 -1
  383. package/dist/cjs/subscription-billing/provider/registry.js +17 -0
  384. package/dist/cjs/subscription-billing/provider/registry.js.map +1 -1
  385. package/dist/cjs/subscription-billing/service.js +208 -83
  386. package/dist/cjs/subscription-billing/service.js.map +1 -1
  387. package/dist/cjs/subscription-billing/types.js.map +1 -1
  388. package/dist/cjs/tenancy/features.js +131 -0
  389. package/dist/cjs/tenancy/features.js.map +1 -0
  390. package/dist/cjs/tenancy/provisioning.js +32 -8
  391. package/dist/cjs/tenancy/provisioning.js.map +1 -1
  392. package/dist/cjs/tenancy/settings.js +224 -0
  393. package/dist/cjs/tenancy/settings.js.map +1 -0
  394. package/dist/cjs/users/repository.js +143 -3
  395. package/dist/cjs/users/repository.js.map +1 -1
  396. package/dist/cjs/vault/repository.js +81 -0
  397. package/dist/cjs/vault/repository.js.map +1 -1
  398. package/dist/clients/ibge.d.ts +17 -0
  399. package/dist/clients/ibge.d.ts.map +1 -0
  400. package/dist/clients/ibge.js +98 -0
  401. package/dist/clients/ibge.js.map +1 -0
  402. package/dist/clients/repository.d.ts +196 -0
  403. package/dist/clients/repository.d.ts.map +1 -1
  404. package/dist/clients/repository.js +270 -24
  405. package/dist/clients/repository.js.map +1 -1
  406. package/dist/collection/branding.d.ts +137 -0
  407. package/dist/collection/branding.d.ts.map +1 -0
  408. package/dist/collection/branding.js +322 -0
  409. package/dist/collection/branding.js.map +1 -0
  410. package/dist/collection/channel-accounts.d.ts +57 -0
  411. package/dist/collection/channel-accounts.d.ts.map +1 -0
  412. package/dist/collection/channel-accounts.js +133 -0
  413. package/dist/collection/channel-accounts.js.map +1 -0
  414. package/dist/collection/channel.d.ts +24 -0
  415. package/dist/collection/channel.d.ts.map +1 -0
  416. package/dist/collection/channel.js +16 -0
  417. package/dist/collection/channel.js.map +1 -0
  418. package/dist/collection/clearance-store.d.ts +39 -0
  419. package/dist/collection/clearance-store.d.ts.map +1 -0
  420. package/dist/collection/clearance-store.js +69 -0
  421. package/dist/collection/clearance-store.js.map +1 -0
  422. package/dist/collection/communication-bridge.d.ts +66 -0
  423. package/dist/collection/communication-bridge.d.ts.map +1 -0
  424. package/dist/collection/communication-bridge.js +134 -0
  425. package/dist/collection/communication-bridge.js.map +1 -0
  426. package/dist/collection/communication-runtime.d.ts +132 -0
  427. package/dist/collection/communication-runtime.d.ts.map +1 -0
  428. package/dist/collection/communication-runtime.js +249 -0
  429. package/dist/collection/communication-runtime.js.map +1 -0
  430. package/dist/collection/consent-repository.d.ts +32 -0
  431. package/dist/collection/consent-repository.d.ts.map +1 -0
  432. package/dist/collection/consent-repository.js +79 -0
  433. package/dist/collection/consent-repository.js.map +1 -0
  434. package/dist/collection/copy.d.ts +50 -0
  435. package/dist/collection/copy.d.ts.map +1 -0
  436. package/dist/collection/copy.js +122 -0
  437. package/dist/collection/copy.js.map +1 -0
  438. package/dist/collection/delivery-callback.d.ts +49 -0
  439. package/dist/collection/delivery-callback.d.ts.map +1 -0
  440. package/dist/collection/delivery-callback.js +147 -0
  441. package/dist/collection/delivery-callback.js.map +1 -0
  442. package/dist/collection/email-layout.d.ts +45 -0
  443. package/dist/collection/email-layout.d.ts.map +1 -0
  444. package/dist/collection/email-layout.js +247 -0
  445. package/dist/collection/email-layout.js.map +1 -0
  446. package/dist/collection/engine.d.ts +200 -0
  447. package/dist/collection/engine.d.ts.map +1 -0
  448. package/dist/collection/engine.js +427 -0
  449. package/dist/collection/engine.js.map +1 -0
  450. package/dist/collection/format.d.ts +32 -0
  451. package/dist/collection/format.d.ts.map +1 -0
  452. package/dist/collection/format.js +70 -0
  453. package/dist/collection/format.js.map +1 -0
  454. package/dist/collection/payment-block.d.ts +24 -0
  455. package/dist/collection/payment-block.d.ts.map +1 -0
  456. package/dist/collection/payment-block.js +2 -0
  457. package/dist/collection/payment-block.js.map +1 -0
  458. package/dist/collection/policy.d.ts +78 -0
  459. package/dist/collection/policy.d.ts.map +1 -0
  460. package/dist/collection/policy.js +168 -0
  461. package/dist/collection/policy.js.map +1 -0
  462. package/dist/collection/repository.d.ts +129 -0
  463. package/dist/collection/repository.d.ts.map +1 -0
  464. package/dist/collection/repository.js +246 -0
  465. package/dist/collection/repository.js.map +1 -0
  466. package/dist/collection/subject.d.ts +66 -0
  467. package/dist/collection/subject.d.ts.map +1 -0
  468. package/dist/collection/subject.js +99 -0
  469. package/dist/collection/subject.js.map +1 -0
  470. package/dist/collection/template-catalog.d.ts +16 -0
  471. package/dist/collection/template-catalog.d.ts.map +1 -0
  472. package/dist/collection/template-catalog.js +162 -0
  473. package/dist/collection/template-catalog.js.map +1 -0
  474. package/dist/collection/template.d.ts +37 -0
  475. package/dist/collection/template.d.ts.map +1 -0
  476. package/dist/collection/template.js +73 -0
  477. package/dist/collection/template.js.map +1 -0
  478. package/dist/communication/adapters/email.d.ts +28 -0
  479. package/dist/communication/adapters/email.d.ts.map +1 -0
  480. package/dist/communication/adapters/email.js +129 -0
  481. package/dist/communication/adapters/email.js.map +1 -0
  482. package/dist/communication/adapters/sms.d.ts +95 -0
  483. package/dist/communication/adapters/sms.d.ts.map +1 -0
  484. package/dist/communication/adapters/sms.js +121 -0
  485. package/dist/communication/adapters/sms.js.map +1 -0
  486. package/dist/communication/adapters/whatsapp-language.d.ts +34 -0
  487. package/dist/communication/adapters/whatsapp-language.d.ts.map +1 -0
  488. package/dist/communication/adapters/whatsapp-language.js +36 -0
  489. package/dist/communication/adapters/whatsapp-language.js.map +1 -0
  490. package/dist/communication/adapters/whatsapp-templates.d.ts +18 -0
  491. package/dist/communication/adapters/whatsapp-templates.d.ts.map +1 -0
  492. package/dist/communication/adapters/whatsapp-templates.js +97 -0
  493. package/dist/communication/adapters/whatsapp-templates.js.map +1 -0
  494. package/dist/communication/adapters/whatsapp.d.ts +29 -0
  495. package/dist/communication/adapters/whatsapp.d.ts.map +1 -0
  496. package/dist/communication/adapters/whatsapp.js +210 -0
  497. package/dist/communication/adapters/whatsapp.js.map +1 -0
  498. package/dist/communication/audit.d.ts +105 -0
  499. package/dist/communication/audit.d.ts.map +1 -0
  500. package/dist/communication/audit.js +56 -0
  501. package/dist/communication/audit.js.map +1 -0
  502. package/dist/communication/capabilities.d.ts +88 -0
  503. package/dist/communication/capabilities.d.ts.map +1 -0
  504. package/dist/communication/capabilities.js +72 -0
  505. package/dist/communication/capabilities.js.map +1 -0
  506. package/dist/communication/channel.d.ts +125 -0
  507. package/dist/communication/channel.d.ts.map +1 -0
  508. package/dist/communication/channel.js +47 -0
  509. package/dist/communication/channel.js.map +1 -0
  510. package/dist/communication/claim.d.ts +368 -0
  511. package/dist/communication/claim.d.ts.map +1 -0
  512. package/dist/communication/claim.js +224 -0
  513. package/dist/communication/claim.js.map +1 -0
  514. package/dist/communication/clearance.d.ts +53 -0
  515. package/dist/communication/clearance.d.ts.map +1 -0
  516. package/dist/communication/clearance.js +15 -0
  517. package/dist/communication/clearance.js.map +1 -0
  518. package/dist/communication/consent.d.ts +65 -0
  519. package/dist/communication/consent.d.ts.map +1 -0
  520. package/dist/communication/consent.js +40 -0
  521. package/dist/communication/consent.js.map +1 -0
  522. package/dist/communication/context.d.ts +48 -0
  523. package/dist/communication/context.d.ts.map +1 -0
  524. package/dist/communication/context.js +41 -0
  525. package/dist/communication/context.js.map +1 -0
  526. package/dist/communication/credentials.d.ts +74 -0
  527. package/dist/communication/credentials.d.ts.map +1 -0
  528. package/dist/communication/credentials.js +115 -0
  529. package/dist/communication/credentials.js.map +1 -0
  530. package/dist/communication/dry-run-scenario.d.ts +37 -0
  531. package/dist/communication/dry-run-scenario.d.ts.map +1 -0
  532. package/dist/communication/dry-run-scenario.js +163 -0
  533. package/dist/communication/dry-run-scenario.js.map +1 -0
  534. package/dist/communication/dry-run.d.ts +40 -0
  535. package/dist/communication/dry-run.d.ts.map +1 -0
  536. package/dist/communication/dry-run.js +92 -0
  537. package/dist/communication/dry-run.js.map +1 -0
  538. package/dist/communication/engine.d.ts +163 -0
  539. package/dist/communication/engine.d.ts.map +1 -0
  540. package/dist/communication/engine.js +492 -0
  541. package/dist/communication/engine.js.map +1 -0
  542. package/dist/communication/graph.d.ts +38 -0
  543. package/dist/communication/graph.d.ts.map +1 -0
  544. package/dist/communication/graph.js +45 -0
  545. package/dist/communication/graph.js.map +1 -0
  546. package/dist/communication/idempotency.d.ts +33 -0
  547. package/dist/communication/idempotency.d.ts.map +1 -0
  548. package/dist/communication/idempotency.js +23 -0
  549. package/dist/communication/idempotency.js.map +1 -0
  550. package/dist/communication/identity.d.ts +127 -0
  551. package/dist/communication/identity.d.ts.map +1 -0
  552. package/dist/communication/identity.js +105 -0
  553. package/dist/communication/identity.js.map +1 -0
  554. package/dist/communication/index.d.ts +66 -0
  555. package/dist/communication/index.d.ts.map +1 -0
  556. package/dist/communication/index.js +42 -0
  557. package/dist/communication/index.js.map +1 -0
  558. package/dist/communication/onboarding.d.ts +223 -0
  559. package/dist/communication/onboarding.d.ts.map +1 -0
  560. package/dist/communication/onboarding.js +287 -0
  561. package/dist/communication/onboarding.js.map +1 -0
  562. package/dist/communication/policy.d.ts +115 -0
  563. package/dist/communication/policy.d.ts.map +1 -0
  564. package/dist/communication/policy.js +13 -0
  565. package/dist/communication/policy.js.map +1 -0
  566. package/dist/communication/routing.d.ts +99 -0
  567. package/dist/communication/routing.d.ts.map +1 -0
  568. package/dist/communication/routing.js +73 -0
  569. package/dist/communication/routing.js.map +1 -0
  570. package/dist/communication/sender-profile.d.ts +100 -0
  571. package/dist/communication/sender-profile.d.ts.map +1 -0
  572. package/dist/communication/sender-profile.js +123 -0
  573. package/dist/communication/sender-profile.js.map +1 -0
  574. package/dist/communication/status.d.ts +48 -0
  575. package/dist/communication/status.d.ts.map +1 -0
  576. package/dist/communication/status.js +79 -0
  577. package/dist/communication/status.js.map +1 -0
  578. package/dist/communication/stores/onboarding.d.ts +88 -0
  579. package/dist/communication/stores/onboarding.d.ts.map +1 -0
  580. package/dist/communication/stores/onboarding.js +127 -0
  581. package/dist/communication/stores/onboarding.js.map +1 -0
  582. package/dist/communication/stores/postgres.d.ts +81 -0
  583. package/dist/communication/stores/postgres.d.ts.map +1 -0
  584. package/dist/communication/stores/postgres.js +453 -0
  585. package/dist/communication/stores/postgres.js.map +1 -0
  586. package/dist/communication/stores/routing.d.ts +169 -0
  587. package/dist/communication/stores/routing.d.ts.map +1 -0
  588. package/dist/communication/stores/routing.js +324 -0
  589. package/dist/communication/stores/routing.js.map +1 -0
  590. package/dist/communication/stores/secrets.d.ts +89 -0
  591. package/dist/communication/stores/secrets.d.ts.map +1 -0
  592. package/dist/communication/stores/secrets.js +122 -0
  593. package/dist/communication/stores/secrets.js.map +1 -0
  594. package/dist/communication/template-provider.d.ts +85 -0
  595. package/dist/communication/template-provider.d.ts.map +1 -0
  596. package/dist/communication/template-provider.js +21 -0
  597. package/dist/communication/template-provider.js.map +1 -0
  598. package/dist/communication/template.d.ts +87 -0
  599. package/dist/communication/template.d.ts.map +1 -0
  600. package/dist/communication/template.js +59 -0
  601. package/dist/communication/template.js.map +1 -0
  602. package/dist/communication/webhook-subscription.d.ts +156 -0
  603. package/dist/communication/webhook-subscription.d.ts.map +1 -0
  604. package/dist/communication/webhook-subscription.js +252 -0
  605. package/dist/communication/webhook-subscription.js.map +1 -0
  606. package/dist/communication/webhook.d.ts +121 -0
  607. package/dist/communication/webhook.d.ts.map +1 -0
  608. package/dist/communication/webhook.js +283 -0
  609. package/dist/communication/webhook.js.map +1 -0
  610. package/dist/competence/business-days.d.ts +51 -0
  611. package/dist/competence/business-days.d.ts.map +1 -0
  612. package/dist/competence/business-days.js +145 -0
  613. package/dist/competence/business-days.js.map +1 -0
  614. package/dist/competence/catalog-validation.d.ts +86 -0
  615. package/dist/competence/catalog-validation.d.ts.map +1 -0
  616. package/dist/competence/catalog-validation.js +168 -0
  617. package/dist/competence/catalog-validation.js.map +1 -0
  618. package/dist/competence/obligation-preview.d.ts +103 -0
  619. package/dist/competence/obligation-preview.d.ts.map +1 -0
  620. package/dist/competence/obligation-preview.js +184 -0
  621. package/dist/competence/obligation-preview.js.map +1 -0
  622. package/dist/competence/repository.d.ts +285 -0
  623. package/dist/competence/repository.d.ts.map +1 -0
  624. package/dist/competence/repository.js +602 -0
  625. package/dist/competence/repository.js.map +1 -0
  626. package/dist/contacts/phone.d.ts +70 -0
  627. package/dist/contacts/phone.d.ts.map +1 -0
  628. package/dist/contacts/phone.js +186 -0
  629. package/dist/contacts/phone.js.map +1 -0
  630. package/dist/dashboard/pilot-panel.d.ts +100 -0
  631. package/dist/dashboard/pilot-panel.d.ts.map +1 -0
  632. package/dist/dashboard/pilot-panel.js +87 -0
  633. package/dist/dashboard/pilot-panel.js.map +1 -0
  634. package/dist/dashboard/repository.d.ts.map +1 -1
  635. package/dist/dashboard/repository.js +11 -1
  636. package/dist/dashboard/repository.js.map +1 -1
  637. package/dist/db/client.d.ts +45 -0
  638. package/dist/db/client.d.ts.map +1 -1
  639. package/dist/db/client.js +16 -11
  640. package/dist/db/client.js.map +1 -1
  641. package/dist/db/migrate.d.ts +36 -1
  642. package/dist/db/migrate.d.ts.map +1 -1
  643. package/dist/db/migrate.js +208 -35
  644. package/dist/db/migrate.js.map +1 -1
  645. package/dist/db/provision-e2e-identity.d.ts +2 -0
  646. package/dist/db/provision-e2e-identity.d.ts.map +1 -0
  647. package/dist/db/provision-e2e-identity.js +109 -0
  648. package/dist/db/provision-e2e-identity.js.map +1 -0
  649. package/dist/db/seed-catalog.d.ts +18 -0
  650. package/dist/db/seed-catalog.d.ts.map +1 -0
  651. package/dist/db/seed-catalog.js +45 -0
  652. package/dist/db/seed-catalog.js.map +1 -0
  653. package/dist/db/seed.js +16 -8
  654. package/dist/db/seed.js.map +1 -1
  655. package/dist/documents/repository.d.ts +97 -0
  656. package/dist/documents/repository.d.ts.map +1 -0
  657. package/dist/documents/repository.js +236 -0
  658. package/dist/documents/repository.js.map +1 -0
  659. package/dist/documents/requests.d.ts +73 -0
  660. package/dist/documents/requests.d.ts.map +1 -0
  661. package/dist/documents/requests.js +127 -0
  662. package/dist/documents/requests.js.map +1 -0
  663. package/dist/fiscal/applicability.d.ts +73 -0
  664. package/dist/fiscal/applicability.d.ts.map +1 -0
  665. package/dist/fiscal/applicability.js +160 -0
  666. package/dist/fiscal/applicability.js.map +1 -0
  667. package/dist/fiscal/conditions.d.ts +99 -0
  668. package/dist/fiscal/conditions.d.ts.map +1 -0
  669. package/dist/fiscal/conditions.js +190 -0
  670. package/dist/fiscal/conditions.js.map +1 -0
  671. package/dist/fiscal/contracts/nfse-adn-contract.d.ts +315 -0
  672. package/dist/fiscal/contracts/nfse-adn-contract.d.ts.map +1 -0
  673. package/dist/fiscal/contracts/nfse-adn-contract.js +386 -0
  674. package/dist/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  675. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts +13 -0
  676. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts.map +1 -0
  677. package/dist/fiscal/contracts/nfse-adn-endpoint.js +103 -0
  678. package/dist/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  679. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts +77 -0
  680. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts.map +1 -0
  681. package/dist/fiscal/contracts/nfse-adn-envelope.js +215 -0
  682. package/dist/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  683. package/dist/fiscal/coverage/model.d.ts +86 -0
  684. package/dist/fiscal/coverage/model.d.ts.map +1 -0
  685. package/dist/fiscal/coverage/model.js +120 -0
  686. package/dist/fiscal/coverage/model.js.map +1 -0
  687. package/dist/fiscal/coverage/requests.d.ts +70 -0
  688. package/dist/fiscal/coverage/requests.d.ts.map +1 -0
  689. package/dist/fiscal/coverage/requests.js +95 -0
  690. package/dist/fiscal/coverage/requests.js.map +1 -0
  691. package/dist/fiscal/credentials/material.d.ts +81 -0
  692. package/dist/fiscal/credentials/material.d.ts.map +1 -0
  693. package/dist/fiscal/credentials/material.js +164 -0
  694. package/dist/fiscal/credentials/material.js.map +1 -0
  695. package/dist/fiscal/credentials/readiness.d.ts +92 -0
  696. package/dist/fiscal/credentials/readiness.d.ts.map +1 -0
  697. package/dist/fiscal/credentials/readiness.js +159 -0
  698. package/dist/fiscal/credentials/readiness.js.map +1 -0
  699. package/dist/fiscal/eligibility.d.ts +106 -0
  700. package/dist/fiscal/eligibility.d.ts.map +1 -0
  701. package/dist/fiscal/eligibility.js +194 -0
  702. package/dist/fiscal/eligibility.js.map +1 -0
  703. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts +57 -0
  704. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts.map +1 -0
  705. package/dist/fiscal/ingestion/__fixtures__/nfse.js +121 -0
  706. package/dist/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  707. package/dist/fiscal/ingestion/adn-transport.d.ts +123 -0
  708. package/dist/fiscal/ingestion/adn-transport.d.ts.map +1 -0
  709. package/dist/fiscal/ingestion/adn-transport.js +220 -0
  710. package/dist/fiscal/ingestion/adn-transport.js.map +1 -0
  711. package/dist/fiscal/ingestion/direction.d.ts +60 -0
  712. package/dist/fiscal/ingestion/direction.d.ts.map +1 -0
  713. package/dist/fiscal/ingestion/direction.js +32 -0
  714. package/dist/fiscal/ingestion/direction.js.map +1 -0
  715. package/dist/fiscal/ingestion/nfse-adn.d.ts +91 -0
  716. package/dist/fiscal/ingestion/nfse-adn.d.ts.map +1 -0
  717. package/dist/fiscal/ingestion/nfse-adn.js +222 -0
  718. package/dist/fiscal/ingestion/nfse-adn.js.map +1 -0
  719. package/dist/fiscal/ingestion/pipeline.d.ts +168 -0
  720. package/dist/fiscal/ingestion/pipeline.d.ts.map +1 -0
  721. package/dist/fiscal/ingestion/pipeline.js +699 -0
  722. package/dist/fiscal/ingestion/pipeline.js.map +1 -0
  723. package/dist/fiscal/ingestion/provider.d.ts +206 -0
  724. package/dist/fiscal/ingestion/provider.d.ts.map +1 -0
  725. package/dist/fiscal/ingestion/provider.js +47 -0
  726. package/dist/fiscal/ingestion/provider.js.map +1 -0
  727. package/dist/fiscal/ingestion/repository.d.ts +82 -0
  728. package/dist/fiscal/ingestion/repository.d.ts.map +1 -0
  729. package/dist/fiscal/ingestion/repository.js +127 -0
  730. package/dist/fiscal/ingestion/repository.js.map +1 -0
  731. package/dist/fiscal/ingestion/synthetic-provider.d.ts +92 -0
  732. package/dist/fiscal/ingestion/synthetic-provider.d.ts.map +1 -0
  733. package/dist/fiscal/ingestion/synthetic-provider.js +99 -0
  734. package/dist/fiscal/ingestion/synthetic-provider.js.map +1 -0
  735. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts +19 -0
  736. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts.map +1 -0
  737. package/dist/fiscal/ingestion/synthetic-transport-types.js +9 -0
  738. package/dist/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  739. package/dist/fiscal/ingestion/synthetic-transport.d.ts +55 -0
  740. package/dist/fiscal/ingestion/synthetic-transport.d.ts.map +1 -0
  741. package/dist/fiscal/ingestion/synthetic-transport.js +57 -0
  742. package/dist/fiscal/ingestion/synthetic-transport.js.map +1 -0
  743. package/dist/fiscal/ingestion/xml-reader.d.ts +55 -0
  744. package/dist/fiscal/ingestion/xml-reader.d.ts.map +1 -0
  745. package/dist/fiscal/ingestion/xml-reader.js +112 -0
  746. package/dist/fiscal/ingestion/xml-reader.js.map +1 -0
  747. package/dist/fiscal/repository.d.ts +220 -0
  748. package/dist/fiscal/repository.d.ts.map +1 -0
  749. package/dist/fiscal/repository.js +449 -0
  750. package/dist/fiscal/repository.js.map +1 -0
  751. package/dist/fiscal/sync/circuit.d.ts +86 -0
  752. package/dist/fiscal/sync/circuit.d.ts.map +1 -0
  753. package/dist/fiscal/sync/circuit.js +118 -0
  754. package/dist/fiscal/sync/circuit.js.map +1 -0
  755. package/dist/fiscal/sync/intervention.d.ts +81 -0
  756. package/dist/fiscal/sync/intervention.d.ts.map +1 -0
  757. package/dist/fiscal/sync/intervention.js +135 -0
  758. package/dist/fiscal/sync/intervention.js.map +1 -0
  759. package/dist/fiscal/sync/lease.d.ts +118 -0
  760. package/dist/fiscal/sync/lease.d.ts.map +1 -0
  761. package/dist/fiscal/sync/lease.js +139 -0
  762. package/dist/fiscal/sync/lease.js.map +1 -0
  763. package/dist/fiscal/sync/observability.d.ts +148 -0
  764. package/dist/fiscal/sync/observability.d.ts.map +1 -0
  765. package/dist/fiscal/sync/observability.js +239 -0
  766. package/dist/fiscal/sync/observability.js.map +1 -0
  767. package/dist/fiscal/sync/orchestrator.d.ts +132 -0
  768. package/dist/fiscal/sync/orchestrator.d.ts.map +1 -0
  769. package/dist/fiscal/sync/orchestrator.js +487 -0
  770. package/dist/fiscal/sync/orchestrator.js.map +1 -0
  771. package/dist/fiscal/sync/policy.d.ts +87 -0
  772. package/dist/fiscal/sync/policy.d.ts.map +1 -0
  773. package/dist/fiscal/sync/policy.js +136 -0
  774. package/dist/fiscal/sync/policy.js.map +1 -0
  775. package/dist/fiscal/sync/reprocess.d.ts +76 -0
  776. package/dist/fiscal/sync/reprocess.d.ts.map +1 -0
  777. package/dist/fiscal/sync/reprocess.js +237 -0
  778. package/dist/fiscal/sync/reprocess.js.map +1 -0
  779. package/dist/fiscal/sync/retry.d.ts +82 -0
  780. package/dist/fiscal/sync/retry.d.ts.map +1 -0
  781. package/dist/fiscal/sync/retry.js +176 -0
  782. package/dist/fiscal/sync/retry.js.map +1 -0
  783. package/dist/fiscal/sync/secret-boundary.d.ts +169 -0
  784. package/dist/fiscal/sync/secret-boundary.d.ts.map +1 -0
  785. package/dist/fiscal/sync/secret-boundary.js +116 -0
  786. package/dist/fiscal/sync/secret-boundary.js.map +1 -0
  787. package/dist/fiscal/transport/https.d.ts +86 -0
  788. package/dist/fiscal/transport/https.d.ts.map +1 -0
  789. package/dist/fiscal/transport/https.js +303 -0
  790. package/dist/fiscal/transport/https.js.map +1 -0
  791. package/dist/fiscal/transport/synthetic-tls.d.ts +80 -0
  792. package/dist/fiscal/transport/synthetic-tls.d.ts.map +1 -0
  793. package/dist/fiscal/transport/synthetic-tls.js +323 -0
  794. package/dist/fiscal/transport/synthetic-tls.js.map +1 -0
  795. package/dist/fiscal/transport/types.d.ts +134 -0
  796. package/dist/fiscal/transport/types.d.ts.map +1 -0
  797. package/dist/fiscal/transport/types.js +88 -0
  798. package/dist/fiscal/transport/types.js.map +1 -0
  799. package/dist/import/br-documents.d.ts +26 -0
  800. package/dist/import/br-documents.d.ts.map +1 -0
  801. package/dist/import/br-documents.js +78 -0
  802. package/dist/import/br-documents.js.map +1 -0
  803. package/dist/import/clients-import.d.ts +122 -4
  804. package/dist/import/clients-import.d.ts.map +1 -1
  805. package/dist/import/clients-import.js +341 -41
  806. package/dist/import/clients-import.js.map +1 -1
  807. package/dist/index.d.ts +217 -17
  808. package/dist/index.d.ts.map +1 -1
  809. package/dist/index.js +196 -11
  810. package/dist/index.js.map +1 -1
  811. package/dist/legal/documents.d.ts +12 -1
  812. package/dist/legal/documents.d.ts.map +1 -1
  813. package/dist/legal/documents.js +222 -16
  814. package/dist/legal/documents.js.map +1 -1
  815. package/dist/legal/index.d.ts +2 -2
  816. package/dist/legal/index.d.ts.map +1 -1
  817. package/dist/legal/index.js +1 -1
  818. package/dist/legal/index.js.map +1 -1
  819. package/dist/legal/types.d.ts +69 -3
  820. package/dist/legal/types.d.ts.map +1 -1
  821. package/dist/legal/types.js +1 -0
  822. package/dist/legal/types.js.map +1 -1
  823. package/dist/mail/auth-templates.d.ts +15 -0
  824. package/dist/mail/auth-templates.d.ts.map +1 -0
  825. package/dist/mail/auth-templates.js +26 -0
  826. package/dist/mail/auth-templates.js.map +1 -0
  827. package/dist/mail/dedup-store.d.ts +1 -24
  828. package/dist/mail/dedup-store.d.ts.map +1 -1
  829. package/dist/mail/dedup-store.js +9 -48
  830. package/dist/mail/dedup-store.js.map +1 -1
  831. package/dist/mail/index.d.ts +2 -1
  832. package/dist/mail/index.d.ts.map +1 -1
  833. package/dist/mail/index.js +13 -2
  834. package/dist/mail/index.js.map +1 -1
  835. package/dist/mail/provider.d.ts +2 -30
  836. package/dist/mail/provider.d.ts.map +1 -1
  837. package/dist/mail/provider.js +10 -246
  838. package/dist/mail/provider.js.map +1 -1
  839. package/dist/mail/resend.d.ts +2 -12
  840. package/dist/mail/resend.d.ts.map +1 -1
  841. package/dist/mail/resend.js +11 -17
  842. package/dist/mail/resend.js.map +1 -1
  843. package/dist/mail/sender-resolver.d.ts +1 -7
  844. package/dist/mail/sender-resolver.d.ts.map +1 -1
  845. package/dist/mail/sender-resolver.js +11 -10
  846. package/dist/mail/sender-resolver.js.map +1 -1
  847. package/dist/mail/template-renderer.d.ts +1 -9
  848. package/dist/mail/template-renderer.d.ts.map +1 -1
  849. package/dist/mail/template-renderer.js +10 -15
  850. package/dist/mail/template-renderer.js.map +1 -1
  851. package/dist/mail/transactional-outbound.d.ts +115 -0
  852. package/dist/mail/transactional-outbound.d.ts.map +1 -0
  853. package/dist/mail/transactional-outbound.js +113 -0
  854. package/dist/mail/transactional-outbound.js.map +1 -0
  855. package/dist/mail/types.d.ts +2 -142
  856. package/dist/mail/types.d.ts.map +1 -1
  857. package/dist/mail/types.js +1 -33
  858. package/dist/mail/types.js.map +1 -1
  859. package/dist/onboarding/persistence.d.ts +10 -1
  860. package/dist/onboarding/persistence.d.ts.map +1 -1
  861. package/dist/onboarding/persistence.js +4 -4
  862. package/dist/onboarding/persistence.js.map +1 -1
  863. package/dist/pilot/go-live-checklist.d.ts +41 -0
  864. package/dist/pilot/go-live-checklist.d.ts.map +1 -0
  865. package/dist/pilot/go-live-checklist.js +209 -0
  866. package/dist/pilot/go-live-checklist.js.map +1 -0
  867. package/dist/pilot/milestone.d.ts +56 -0
  868. package/dist/pilot/milestone.d.ts.map +1 -0
  869. package/dist/pilot/milestone.js +74 -0
  870. package/dist/pilot/milestone.js.map +1 -0
  871. package/dist/platform/capabilities.d.ts +88 -0
  872. package/dist/platform/capabilities.d.ts.map +1 -0
  873. package/dist/platform/capabilities.js +140 -0
  874. package/dist/platform/capabilities.js.map +1 -0
  875. package/dist/platform/job-contract.d.ts +232 -0
  876. package/dist/platform/job-contract.d.ts.map +1 -0
  877. package/dist/platform/job-contract.js +403 -0
  878. package/dist/platform/job-contract.js.map +1 -0
  879. package/dist/portal/provisioning.d.ts +58 -0
  880. package/dist/portal/provisioning.d.ts.map +1 -0
  881. package/dist/portal/provisioning.js +139 -0
  882. package/dist/portal/provisioning.js.map +1 -0
  883. package/dist/pricing-engine/canonical.d.ts +14 -0
  884. package/dist/pricing-engine/canonical.d.ts.map +1 -0
  885. package/dist/pricing-engine/canonical.js +39 -0
  886. package/dist/pricing-engine/canonical.js.map +1 -0
  887. package/dist/pricing-engine/errors.d.ts.map +1 -1
  888. package/dist/pricing-engine/errors.js +6 -1
  889. package/dist/pricing-engine/errors.js.map +1 -1
  890. package/dist/pricing-engine/index.d.ts +12 -2
  891. package/dist/pricing-engine/index.d.ts.map +1 -1
  892. package/dist/pricing-engine/index.js +6 -1
  893. package/dist/pricing-engine/index.js.map +1 -1
  894. package/dist/pricing-engine/pipeline.d.ts.map +1 -1
  895. package/dist/pricing-engine/pipeline.js +202 -28
  896. package/dist/pricing-engine/pipeline.js.map +1 -1
  897. package/dist/pricing-engine/shadow-adapter.d.ts +37 -0
  898. package/dist/pricing-engine/shadow-adapter.d.ts.map +1 -0
  899. package/dist/pricing-engine/shadow-adapter.js +75 -0
  900. package/dist/pricing-engine/shadow-adapter.js.map +1 -0
  901. package/dist/pricing-engine/shadow-diff.d.ts +26 -0
  902. package/dist/pricing-engine/shadow-diff.d.ts.map +1 -0
  903. package/dist/pricing-engine/shadow-diff.js +52 -0
  904. package/dist/pricing-engine/shadow-diff.js.map +1 -0
  905. package/dist/pricing-engine/shadow-facade.d.ts +42 -0
  906. package/dist/pricing-engine/shadow-facade.d.ts.map +1 -0
  907. package/dist/pricing-engine/shadow-facade.js +82 -0
  908. package/dist/pricing-engine/shadow-facade.js.map +1 -0
  909. package/dist/pricing-engine/shadow-legacy-types.d.ts +64 -0
  910. package/dist/pricing-engine/shadow-legacy-types.d.ts.map +1 -0
  911. package/dist/pricing-engine/shadow-legacy-types.js +18 -0
  912. package/dist/pricing-engine/shadow-legacy-types.js.map +1 -0
  913. package/dist/pricing-engine/shadow-metrics.d.ts +33 -0
  914. package/dist/pricing-engine/shadow-metrics.d.ts.map +1 -0
  915. package/dist/pricing-engine/shadow-metrics.js +31 -0
  916. package/dist/pricing-engine/shadow-metrics.js.map +1 -0
  917. package/dist/pricing-engine/shadow-normalizer.d.ts +17 -0
  918. package/dist/pricing-engine/shadow-normalizer.d.ts.map +1 -0
  919. package/dist/pricing-engine/shadow-normalizer.js +39 -0
  920. package/dist/pricing-engine/shadow-normalizer.js.map +1 -0
  921. package/dist/pricing-engine/types.d.ts +2 -0
  922. package/dist/pricing-engine/types.d.ts.map +1 -1
  923. package/dist/rbac/authorize.d.ts +12 -0
  924. package/dist/rbac/authorize.d.ts.map +1 -1
  925. package/dist/rbac/authorize.js +27 -0
  926. package/dist/rbac/authorize.js.map +1 -1
  927. package/dist/rbac/catalog.d.ts.map +1 -1
  928. package/dist/rbac/catalog.js +101 -1
  929. package/dist/rbac/catalog.js.map +1 -1
  930. package/dist/rbac/workload-provisioning.d.ts +66 -0
  931. package/dist/rbac/workload-provisioning.d.ts.map +1 -0
  932. package/dist/rbac/workload-provisioning.js +153 -0
  933. package/dist/rbac/workload-provisioning.js.map +1 -0
  934. package/dist/rbac/workload.d.ts +124 -0
  935. package/dist/rbac/workload.d.ts.map +1 -0
  936. package/dist/rbac/workload.js +184 -0
  937. package/dist/rbac/workload.js.map +1 -0
  938. package/dist/storage/checksum.d.ts +9 -0
  939. package/dist/storage/checksum.d.ts.map +1 -0
  940. package/dist/storage/checksum.js +12 -0
  941. package/dist/storage/checksum.js.map +1 -0
  942. package/dist/storage/key.d.ts +37 -0
  943. package/dist/storage/key.d.ts.map +1 -0
  944. package/dist/storage/key.js +67 -0
  945. package/dist/storage/key.js.map +1 -0
  946. package/dist/storage/local.d.ts +40 -0
  947. package/dist/storage/local.d.ts.map +1 -0
  948. package/dist/storage/local.js +96 -0
  949. package/dist/storage/local.js.map +1 -0
  950. package/dist/storage/r2.d.ts +43 -0
  951. package/dist/storage/r2.d.ts.map +1 -0
  952. package/dist/storage/r2.js +177 -0
  953. package/dist/storage/r2.js.map +1 -0
  954. package/dist/storage/registry.d.ts +23 -0
  955. package/dist/storage/registry.d.ts.map +1 -0
  956. package/dist/storage/registry.js +37 -0
  957. package/dist/storage/registry.js.map +1 -0
  958. package/dist/storage/types.d.ts +67 -0
  959. package/dist/storage/types.d.ts.map +1 -0
  960. package/dist/storage/types.js +45 -0
  961. package/dist/storage/types.js.map +1 -0
  962. package/dist/subscription-billing/index.d.ts +6 -5
  963. package/dist/subscription-billing/index.d.ts.map +1 -1
  964. package/dist/subscription-billing/index.js +3 -3
  965. package/dist/subscription-billing/index.js.map +1 -1
  966. package/dist/subscription-billing/provider/asaas.d.ts +14 -0
  967. package/dist/subscription-billing/provider/asaas.d.ts.map +1 -1
  968. package/dist/subscription-billing/provider/asaas.js +32 -7
  969. package/dist/subscription-billing/provider/asaas.js.map +1 -1
  970. package/dist/subscription-billing/provider/disabled.d.ts +9 -0
  971. package/dist/subscription-billing/provider/disabled.d.ts.map +1 -1
  972. package/dist/subscription-billing/provider/disabled.js +8 -0
  973. package/dist/subscription-billing/provider/disabled.js.map +1 -1
  974. package/dist/subscription-billing/provider/registry.d.ts +10 -0
  975. package/dist/subscription-billing/provider/registry.d.ts.map +1 -1
  976. package/dist/subscription-billing/provider/registry.js +17 -0
  977. package/dist/subscription-billing/provider/registry.js.map +1 -1
  978. package/dist/subscription-billing/service.d.ts +38 -1
  979. package/dist/subscription-billing/service.d.ts.map +1 -1
  980. package/dist/subscription-billing/service.js +147 -23
  981. package/dist/subscription-billing/service.js.map +1 -1
  982. package/dist/subscription-billing/types.d.ts +13 -0
  983. package/dist/subscription-billing/types.d.ts.map +1 -1
  984. package/dist/subscription-billing/types.js.map +1 -1
  985. package/dist/tenancy/features.d.ts +69 -0
  986. package/dist/tenancy/features.d.ts.map +1 -0
  987. package/dist/tenancy/features.js +123 -0
  988. package/dist/tenancy/features.js.map +1 -0
  989. package/dist/tenancy/provisioning.d.ts.map +1 -1
  990. package/dist/tenancy/provisioning.js +32 -8
  991. package/dist/tenancy/provisioning.js.map +1 -1
  992. package/dist/tenancy/settings.d.ts +63 -0
  993. package/dist/tenancy/settings.d.ts.map +1 -0
  994. package/dist/tenancy/settings.js +218 -0
  995. package/dist/tenancy/settings.js.map +1 -0
  996. package/dist/users/repository.d.ts +54 -1
  997. package/dist/users/repository.d.ts.map +1 -1
  998. package/dist/users/repository.js +142 -4
  999. package/dist/users/repository.js.map +1 -1
  1000. package/dist/vault/repository.d.ts +67 -0
  1001. package/dist/vault/repository.d.ts.map +1 -1
  1002. package/dist/vault/repository.js +78 -0
  1003. package/dist/vault/repository.js.map +1 -1
  1004. package/package.json +20 -4
  1005. package/src/db/migrations/0023_user_invite_activation.sql +15 -0
  1006. package/src/db/migrations/0024_set_user_password_function.sql +32 -0
  1007. package/src/db/migrations/0025_revoke_user_session_function.sql +28 -0
  1008. package/src/db/migrations/0026_documents_and_competence.sql +353 -0
  1009. package/src/db/migrations/0027_receivable_client_isolation.sql +58 -0
  1010. package/src/db/migrations/0028_collection_engine.sql +94 -0
  1011. package/src/db/migrations/0029_payment_rail.sql +107 -0
  1012. package/src/db/migrations/0030_provider_account_uniqueness.sql +22 -0
  1013. package/src/db/migrations/0031_provider_account_environment_scope.sql +21 -0
  1014. package/src/db/migrations/0032_settlement_reversal.sql +76 -0
  1015. package/src/db/migrations/0033_receivable_idempotency.sql +28 -0
  1016. package/src/db/migrations/0034_payment_customer_reconcile.sql +30 -0
  1017. package/src/db/migrations/0035_payment_account_environments.sql +61 -0
  1018. package/src/db/migrations/0036_primary_backfill_under_force_rls.sql +41 -0
  1019. package/src/db/migrations/0037_receivable_generation_source.sql +29 -0
  1020. package/src/db/migrations/0038_notification_channels.sql +175 -0
  1021. package/src/db/migrations/0039_communication_dispatch_claim.sql +193 -0
  1022. package/src/db/migrations/0040_communication_unknown_outcome.sql +99 -0
  1023. package/src/db/migrations/0041_channel_binding_routing.sql +146 -0
  1024. package/src/db/migrations/0042_channel_route_read_isolation.sql +165 -0
  1025. package/src/db/migrations/0043_workload_identity.sql +105 -0
  1026. package/src/db/migrations/0044_channel_onboarding_session.sql +96 -0
  1027. package/src/db/migrations/0045_role_write_scope.sql +122 -0
  1028. package/src/db/migrations/0046_pilot_activation_model.sql +184 -0
  1029. package/src/db/migrations/0047_recipient_clearance.sql +89 -0
  1030. package/src/db/migrations/0048_item_type_note.sql +16 -0
  1031. package/src/db/migrations/0049_national_fiscal_engine.sql +279 -0
  1032. package/src/db/migrations/0050_fiscal_vocabulary_readonly.sql +29 -0
  1033. package/src/db/migrations/0051_seed_rules_from_catalog.sql +72 -0
  1034. package/src/db/migrations/0052_fiscal_rule_delete_scope.sql +57 -0
  1035. package/src/db/migrations/0053_rule_validity_lower_bound.sql +44 -0
  1036. package/src/db/migrations/0054_tenant_profile_and_rule_source.sql +89 -0
  1037. package/src/db/migrations/0055_job_capability_contract.sql +300 -0
  1038. package/src/db/migrations/0056_fiscal_document_ingestion.sql +337 -0
  1039. package/src/db/migrations/0057_fiscal_pending_event_inbox.sql +228 -0
  1040. package/src/db/migrations/0058_fiscal_operational_engine.sql +516 -0
  1041. package/src/db/migrations/0059_fiscal_contract_version.sql +59 -0
  1042. package/dist/cjs/mail/resend-client.js +0 -103
  1043. package/dist/cjs/mail/resend-client.js.map +0 -1
  1044. package/dist/mail/resend-client.d.ts +0 -16
  1045. package/dist/mail/resend-client.d.ts.map +0 -1
  1046. package/dist/mail/resend-client.js +0 -100
  1047. package/dist/mail/resend-client.js.map +0 -1
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /**
3
+ * Versão da Graph API usada por todo o código que fala com a Meta.
4
+ *
5
+ * **Uma constante, um lugar.** Antes disto o adapter de envio carregava a sua
6
+ * (`v21.0`, escrita em 2026-08) e qualquer caminho novo escreveria a dele. Duas
7
+ * versões no mesmo runtime não falham no dia em que divergem — falham no dia em
8
+ * que a mais velha é desativada, e aí o sintoma é meio sistema parado enquanto
9
+ * a outra metade funciona, que é o pior formato possível para diagnosticar.
10
+ *
11
+ * ── Por que a versão importa mais aqui do que em outras integrações ─────────
12
+ *
13
+ * A Meta desativa versões da Graph API por calendário, não por uso: cada uma
14
+ * vive cerca de dois anos e depois passa a responder erro. `v21.0` é de
15
+ * 2024-10 e está no fim dessa janela — mantê-la seria agendar uma parada de
16
+ * canal para uma data que ninguém anotou.
17
+ *
18
+ * O valor abaixo foi verificado contra a Graph API em 2026-08-30: `v26.0`
19
+ * responde, `v27.0` ainda não existe.
20
+ *
21
+ * ── Override por ambiente ───────────────────────────────────────────────────
22
+ *
23
+ * Existe para rollback sem release: se uma versão nova mudar um contrato que
24
+ * este código lê, voltar uma casa é uma variável de ambiente e um deploy, não
25
+ * uma correção de emergência no código.
26
+ *
27
+ * O formato é validado. Um valor livre entraria direto na URL — e uma env var
28
+ * mal digitada viraria um caminho arbitrário no host da Meta.
29
+ */
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.DEFAULT_GRAPH_API_VERSION = void 0;
32
+ exports.graphApiVersion = graphApiVersion;
33
+ exports.graphUrl = graphUrl;
34
+ exports.DEFAULT_GRAPH_API_VERSION = 'v26.0';
35
+ const VERSION_PATTERN = /^v\d{1,3}\.\d{1,2}$/;
36
+ /**
37
+ * Versão efetiva. Um valor inválido cai no default em vez de derrubar o
38
+ * processo: a alternativa é um erro de digitação numa env var parar o boot da
39
+ * API inteira, e a degradação correta aqui é ignorar a configuração ruim.
40
+ */
41
+ function graphApiVersion(env = process.env) {
42
+ const raw = env.WHATSAPP_GRAPH_API_VERSION?.trim();
43
+ return raw && VERSION_PATTERN.test(raw) ? raw : exports.DEFAULT_GRAPH_API_VERSION;
44
+ }
45
+ /** Base de URL da Graph API. Isolada para que nenhum chamador a monte na mão. */
46
+ function graphUrl(path, env) {
47
+ const clean = path.startsWith('/') ? path.slice(1) : path;
48
+ return `https://graph.facebook.com/${graphApiVersion(env)}/${clean}`;
49
+ }
50
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/communication/graph.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAWH,0CAGC;AAGD,4BAGC;AAlBY,QAAA,yBAAyB,GAAG,OAAO,CAAC;AAEjD,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAE9C;;;;GAIG;AACH,SAAgB,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;IAClE,MAAM,GAAG,GAAG,GAAG,CAAC,0BAA0B,EAAE,IAAI,EAAE,CAAC;IACnD,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,iCAAyB,CAAC;AAC5E,CAAC;AAED,iFAAiF;AACjF,SAAgB,QAAQ,CAAC,IAAY,EAAE,GAAuB;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,OAAO,8BAA8B,eAAe,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;AACvE,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildIdempotencyKey = buildIdempotencyKey;
4
+ const node_crypto_1 = require("node:crypto");
5
+ /**
6
+ * Separador de campos: `US` (unit separator, `0x1F`).
7
+ *
8
+ * Escolhido por não ser digitável — com `:` ou `|`, um `subjectRef` que contenha
9
+ * o separador consegue forjar a chave de outro evento, e isso é colisão por
10
+ * construção, não por azar. Um id vindo de outro sistema pode conter qualquer
11
+ * pontuação; nenhum contém um caractere de controle.
12
+ */
13
+ const SEP = '\u001f';
14
+ function buildIdempotencyKey(input) {
15
+ const parts = [
16
+ input.ctx.tenantId,
17
+ input.ctx.product,
18
+ input.ctx.brand,
19
+ input.channel,
20
+ input.eventType,
21
+ input.subjectRef,
22
+ input.templateVersion ?? 'v0',
23
+ ];
24
+ return (0, node_crypto_1.createHash)('sha256').update(parts.join(SEP)).digest('hex');
25
+ }
26
+ //# sourceMappingURL=idempotency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../../../src/communication/idempotency.ts"],"names":[],"mappings":";;AA4CA,kDAWC;AAvDD,6CAAyC;AAkCzC;;;;;;;GAOG;AACH,MAAM,GAAG,GAAG,QAAQ,CAAC;AAErB,SAAgB,mBAAmB,CAAC,KAAuB;IACzD,MAAM,KAAK,GAAG;QACZ,KAAK,CAAC,GAAG,CAAC,QAAQ;QAClB,KAAK,CAAC,GAAG,CAAC,OAAO;QACjB,KAAK,CAAC,GAAG,CAAC,KAAK;QACf,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,eAAe,IAAI,IAAI;KAC9B,CAAC;IACF,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ /**
3
+ * Identidade de envio — de quem é o número, a conta e o remetente.
4
+ *
5
+ * **O motor é compartilhado. A identidade de envio não é.**
6
+ *
7
+ * Este é o módulo que carrega a regra mais dura do adendo, e ele existe separado
8
+ * do adapter de propósito: se cada adapter resolvesse a própria credencial,
9
+ * "usar a chave central quando o tenant não tem a dele" seria uma linha
10
+ * conveniente dentro de um `??`, escrita por alguém com pressa, num arquivo que
11
+ * ninguém revisa duas vezes. Foi exatamente assim que aconteceu no Manga Verde
12
+ * (`email-channel.provider.ts`, "SaaS hotfix"): o tenant sem chave própria envia
13
+ * com a chave da plataforma.
14
+ *
15
+ * Em e-mail o custo disso é reputação de domínio compartilhada. Em WhatsApp o
16
+ * custo é a WABA de uma marca respondendo pelo comportamento de outra — com
17
+ * bloqueio que se propaga para todos os tenants do número.
18
+ *
19
+ * Aqui não há fallback. Conta ausente resolve para ausente.
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.routeAccountsByChannel = routeAccountsByChannel;
23
+ exports.assertOwnership = assertOwnership;
24
+ exports.resolveIdentity = resolveIdentity;
25
+ /**
26
+ * Roteia a busca de conta por CANAL, entre stores distintos.
27
+ *
28
+ * ## Por que isto existe
29
+ *
30
+ * Os canais não guardam a conta no mesmo lugar, e não é acidente: o telefone
31
+ * tem registro canônico próprio (`channel_binding`, migração 0041), criado pelo
32
+ * onboarding e com chave global de roteamento; o e-mail vive na configuração do
33
+ * tenant e admite remetente de plataforma.
34
+ *
35
+ * Antes disto, o consumidor passava UM store para todos os canais — e o canal
36
+ * criado pelo onboarding ficava invisível para quem despacha: a tela dizia
37
+ * "ativo" e o motor teria respondido `no_account`. Um `??` entre os dois stores
38
+ * resolveria o sintoma e esconderia a política; a precedência por canal é
39
+ * decisão de arquitetura e precisa ficar legível em quem compõe.
40
+ *
41
+ * ## Mecanismo, não política
42
+ *
43
+ * Este módulo não sabe QUAL store serve QUAL canal — quem sabe é o produto, e a
44
+ * decisão aparece no mapa que ele monta.
45
+ *
46
+ * **Canal sem rota resolve para ausente, e nunca cai em outro store.** Herdar a
47
+ * rota de um canal vizinho faria um canal novo nascer usando a conta de e-mail
48
+ * do escritório — configurado por acidente, com a identidade errada. Um canal
49
+ * que ninguém roteou entra fechado.
50
+ */
51
+ function routeAccountsByChannel(routes) {
52
+ return {
53
+ async find(ctx, channel) {
54
+ const store = routes[channel];
55
+ if (!store)
56
+ return null;
57
+ return store.find(ctx, channel);
58
+ },
59
+ };
60
+ }
61
+ /**
62
+ * A conta pertence mesmo a este contexto?
63
+ *
64
+ * Checagem redundante por desenho. O `store` do produto já deveria filtrar por
65
+ * tenant — mas "deveria" é a palavra que precede todo vazamento cross-tenant, e
66
+ * um store com um `WHERE` esquecido devolveria a conta do vizinho sem que nada
67
+ * reclamasse. Esta função é a segunda tranca, e é a que os testes de isolamento
68
+ * exercitam diretamente.
69
+ */
70
+ function assertOwnership(ctx, account) {
71
+ return (account.tenantId === ctx.tenantId &&
72
+ account.product === ctx.product &&
73
+ account.brand === ctx.brand);
74
+ }
75
+ /**
76
+ * Resolve a identidade de envio para um contexto e canal.
77
+ *
78
+ * Não há caminho neste código que devolva uma conta de outro contexto, nem uma
79
+ * conta "da plataforma". Ausência resolve para ausência, e quem chama trata
80
+ * ausência como canal indisponível — nunca como permissão para improvisar.
81
+ */
82
+ async function resolveIdentity(store, ctx, channel) {
83
+ const account = await store.find(ctx, channel);
84
+ if (!account) {
85
+ return {
86
+ ok: false,
87
+ reason: 'no_account',
88
+ detail: `sem conta de ${channel} para este tenant/produto`,
89
+ };
90
+ }
91
+ if (!assertOwnership(ctx, account)) {
92
+ // Não é só recusar: é recusar ALTO. Um store devolvendo conta alheia é
93
+ // defeito de isolamento, não configuração faltando, e os dois não podem
94
+ // aparecer com o mesmo rótulo na trilha.
95
+ return {
96
+ ok: false,
97
+ reason: 'foreign_account',
98
+ detail: `conta de ${channel} não pertence a este contexto`,
99
+ };
100
+ }
101
+ if (account.status !== 'active') {
102
+ return {
103
+ ok: false,
104
+ reason: 'not_active',
105
+ detail: `conta de ${channel} em estado ${account.status}`,
106
+ };
107
+ }
108
+ return { ok: true, account };
109
+ }
110
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/communication/identity.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AAyFH,wDAUC;AAWD,0CAMC;AASD,0CAmCC;AAjGD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,sBAAsB,CACpC,MAAwD;IAExD,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,GAAyB,EAAE,OAAmB;YACvD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YACxB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAAC,GAAyB,EAAE,OAAuB;IAChF,OAAO,CACL,OAAO,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ;QACjC,OAAO,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO;QAC/B,OAAO,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAC5B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,eAAe,CACnC,KAA0B,EAC1B,GAAyB,EACzB,OAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,gBAAgB,OAAO,2BAA2B;SAC3D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;QACnC,uEAAuE;QACvE,wEAAwE;QACxE,yCAAyC;QACzC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,YAAY,OAAO,+BAA+B;SAC3D,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,YAAY,OAAO,cAAc,OAAO,CAAC,MAAM,EAAE;SAC1D,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ /**
3
+ * Motor de comunicação compartilhado do ecossistema.
4
+ *
5
+ * Consumidores: SC Organização Contábil (primeiro, piloto), e por desenho
6
+ * Dental Plataforma, Manga Verde, Baruk Connect e o que vier. O motor é um; a
7
+ * identidade de envio de cada um nunca é compartilhada — ver `identity.ts`.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.createSmsChannel = exports.createRecordingSmsTransport = exports.countSegments = exports.createWhatsAppChannel = exports.createEmailChannel = exports.verifyMetaSignature = exports.verifyMetaChallenge = exports.parseMetaWebhookOrigins = exports.parseMetaInboundOptOut = exports.parseMetaDeliveryWebhook = exports.deliveryEventId = exports.applyDeliveryEvent = exports.summarizeDryRun = exports.formatDryRunReport = exports.emptyDryRunReport = exports.dispatch = exports.statusForOutcome = exports.isRetryable = exports.channelReports = exports.advanceStatus = exports.CHANNEL_REPORTS = exports.DEFAULT_CHANNEL_POLICY = exports.resolveTemplate = exports.orderVariables = exports.evaluateConsent = exports.withSenderFallback = exports.resolveSenderProfile = exports.credentialResolverFor = exports.routeAccountsByChannel = exports.resolveIdentity = exports.assertOwnership = exports.eventKindForSkip = exports.createRecordingAuditSink = exports.createNullAuditSink = exports.listCommunicationTrail = exports.createPostgresDispatchClaimStore = exports.createPostgresAuditSink = exports.DEFAULT_CLAIM_TTL_MS = exports.createInMemoryDispatchClaimStore = exports.buildIdempotencyKey = exports.RESEND_IDEMPOTENCY_WINDOW_MS = exports.providerIdempotencyCovers = exports.NO_PROVIDER_GUARANTEES = exports.validateContext = exports.contextRef = exports.unavailableChannel = exports.resolveChannel = exports.channelAccepts = exports.CHANNEL_KEYS = exports.CHANNEL_ACCEPTS = void 0;
11
+ exports.claimChannelAccount = exports.recordOnboardingAssets = exports.openOnboardingSession = exports.ONBOARDING_SESSION_TTL_MS = exports.latestOnboardingSession = exports.failOnboardingSession = exports.consumeOnboardingSession = exports.subscribeAppToWaba = exports.sameStateHash = exports.registerPhoneNumber = exports.readPhoneNumber = exports.listWabaTemplates = exports.hashSignupState = exports.exchangeSignupCode = exports.createSignupState = exports.graphUrl = exports.graphApiVersion = exports.DEFAULT_GRAPH_API_VERSION = exports.sendWebhookTestEvent = exports.readWabaSubscribedApps = exports.readAppSubscriptions = exports.readAppSettings = exports.metaLanguageCode = exports.createWhatsAppTemplateProvider = exports.registerChannelBinding = exports.createPostgresChannelRouteStore = exports.createPostgresChannelBindingStore = exports.completeRoute = exports.CredentialRefNotAcceptableError = exports.ChannelRouteConflictError = exports.VAULT_DECRYPT_PERMISSION = exports.createPostgresTenantSecretStore = exports.noCredentialResolver = exports.isVaultRef = exports.isAcceptableForNewBinding = exports.createChannelCredentialResolver = exports.sameOrigin = exports.resolveRoute = exports.isGsm7 = void 0;
12
+ var channel_js_1 = require("./channel.js");
13
+ Object.defineProperty(exports, "CHANNEL_ACCEPTS", { enumerable: true, get: function () { return channel_js_1.CHANNEL_ACCEPTS; } });
14
+ Object.defineProperty(exports, "CHANNEL_KEYS", { enumerable: true, get: function () { return channel_js_1.CHANNEL_KEYS; } });
15
+ Object.defineProperty(exports, "channelAccepts", { enumerable: true, get: function () { return channel_js_1.channelAccepts; } });
16
+ Object.defineProperty(exports, "resolveChannel", { enumerable: true, get: function () { return channel_js_1.resolveChannel; } });
17
+ Object.defineProperty(exports, "unavailableChannel", { enumerable: true, get: function () { return channel_js_1.unavailableChannel; } });
18
+ var context_js_1 = require("./context.js");
19
+ Object.defineProperty(exports, "contextRef", { enumerable: true, get: function () { return context_js_1.contextRef; } });
20
+ Object.defineProperty(exports, "validateContext", { enumerable: true, get: function () { return context_js_1.validateContext; } });
21
+ var capabilities_js_1 = require("./capabilities.js");
22
+ Object.defineProperty(exports, "NO_PROVIDER_GUARANTEES", { enumerable: true, get: function () { return capabilities_js_1.NO_PROVIDER_GUARANTEES; } });
23
+ Object.defineProperty(exports, "providerIdempotencyCovers", { enumerable: true, get: function () { return capabilities_js_1.providerIdempotencyCovers; } });
24
+ Object.defineProperty(exports, "RESEND_IDEMPOTENCY_WINDOW_MS", { enumerable: true, get: function () { return capabilities_js_1.RESEND_IDEMPOTENCY_WINDOW_MS; } });
25
+ var idempotency_js_1 = require("./idempotency.js");
26
+ Object.defineProperty(exports, "buildIdempotencyKey", { enumerable: true, get: function () { return idempotency_js_1.buildIdempotencyKey; } });
27
+ var claim_js_1 = require("./claim.js");
28
+ Object.defineProperty(exports, "createInMemoryDispatchClaimStore", { enumerable: true, get: function () { return claim_js_1.createInMemoryDispatchClaimStore; } });
29
+ Object.defineProperty(exports, "DEFAULT_CLAIM_TTL_MS", { enumerable: true, get: function () { return claim_js_1.DEFAULT_CLAIM_TTL_MS; } });
30
+ var postgres_js_1 = require("./stores/postgres.js");
31
+ Object.defineProperty(exports, "createPostgresAuditSink", { enumerable: true, get: function () { return postgres_js_1.createPostgresAuditSink; } });
32
+ Object.defineProperty(exports, "createPostgresDispatchClaimStore", { enumerable: true, get: function () { return postgres_js_1.createPostgresDispatchClaimStore; } });
33
+ Object.defineProperty(exports, "listCommunicationTrail", { enumerable: true, get: function () { return postgres_js_1.listCommunicationTrail; } });
34
+ var audit_js_1 = require("./audit.js");
35
+ Object.defineProperty(exports, "createNullAuditSink", { enumerable: true, get: function () { return audit_js_1.createNullAuditSink; } });
36
+ Object.defineProperty(exports, "createRecordingAuditSink", { enumerable: true, get: function () { return audit_js_1.createRecordingAuditSink; } });
37
+ Object.defineProperty(exports, "eventKindForSkip", { enumerable: true, get: function () { return audit_js_1.eventKindForSkip; } });
38
+ var identity_js_1 = require("./identity.js");
39
+ Object.defineProperty(exports, "assertOwnership", { enumerable: true, get: function () { return identity_js_1.assertOwnership; } });
40
+ Object.defineProperty(exports, "resolveIdentity", { enumerable: true, get: function () { return identity_js_1.resolveIdentity; } });
41
+ Object.defineProperty(exports, "routeAccountsByChannel", { enumerable: true, get: function () { return identity_js_1.routeAccountsByChannel; } });
42
+ var sender_profile_js_1 = require("./sender-profile.js");
43
+ Object.defineProperty(exports, "credentialResolverFor", { enumerable: true, get: function () { return sender_profile_js_1.credentialResolverFor; } });
44
+ Object.defineProperty(exports, "resolveSenderProfile", { enumerable: true, get: function () { return sender_profile_js_1.resolveSenderProfile; } });
45
+ Object.defineProperty(exports, "withSenderFallback", { enumerable: true, get: function () { return sender_profile_js_1.withSenderFallback; } });
46
+ var consent_js_1 = require("./consent.js");
47
+ Object.defineProperty(exports, "evaluateConsent", { enumerable: true, get: function () { return consent_js_1.evaluateConsent; } });
48
+ var template_js_1 = require("./template.js");
49
+ Object.defineProperty(exports, "orderVariables", { enumerable: true, get: function () { return template_js_1.orderVariables; } });
50
+ Object.defineProperty(exports, "resolveTemplate", { enumerable: true, get: function () { return template_js_1.resolveTemplate; } });
51
+ var policy_js_1 = require("./policy.js");
52
+ Object.defineProperty(exports, "DEFAULT_CHANNEL_POLICY", { enumerable: true, get: function () { return policy_js_1.DEFAULT_POLICY; } });
53
+ var status_js_1 = require("./status.js");
54
+ Object.defineProperty(exports, "CHANNEL_REPORTS", { enumerable: true, get: function () { return status_js_1.CHANNEL_REPORTS; } });
55
+ Object.defineProperty(exports, "advanceStatus", { enumerable: true, get: function () { return status_js_1.advanceStatus; } });
56
+ Object.defineProperty(exports, "channelReports", { enumerable: true, get: function () { return status_js_1.channelReports; } });
57
+ Object.defineProperty(exports, "isRetryable", { enumerable: true, get: function () { return status_js_1.isRetryable; } });
58
+ Object.defineProperty(exports, "statusForOutcome", { enumerable: true, get: function () { return status_js_1.statusForOutcome; } });
59
+ var engine_js_1 = require("./engine.js");
60
+ Object.defineProperty(exports, "dispatch", { enumerable: true, get: function () { return engine_js_1.dispatch; } });
61
+ var dry_run_js_1 = require("./dry-run.js");
62
+ Object.defineProperty(exports, "emptyDryRunReport", { enumerable: true, get: function () { return dry_run_js_1.emptyDryRunReport; } });
63
+ Object.defineProperty(exports, "formatDryRunReport", { enumerable: true, get: function () { return dry_run_js_1.formatDryRunReport; } });
64
+ Object.defineProperty(exports, "summarizeDryRun", { enumerable: true, get: function () { return dry_run_js_1.summarizeDryRun; } });
65
+ var webhook_js_1 = require("./webhook.js");
66
+ Object.defineProperty(exports, "applyDeliveryEvent", { enumerable: true, get: function () { return webhook_js_1.applyDeliveryEvent; } });
67
+ Object.defineProperty(exports, "deliveryEventId", { enumerable: true, get: function () { return webhook_js_1.deliveryEventId; } });
68
+ Object.defineProperty(exports, "parseMetaDeliveryWebhook", { enumerable: true, get: function () { return webhook_js_1.parseMetaDeliveryWebhook; } });
69
+ Object.defineProperty(exports, "parseMetaInboundOptOut", { enumerable: true, get: function () { return webhook_js_1.parseMetaInboundOptOut; } });
70
+ Object.defineProperty(exports, "parseMetaWebhookOrigins", { enumerable: true, get: function () { return webhook_js_1.parseMetaWebhookOrigins; } });
71
+ Object.defineProperty(exports, "verifyMetaChallenge", { enumerable: true, get: function () { return webhook_js_1.verifyMetaChallenge; } });
72
+ Object.defineProperty(exports, "verifyMetaSignature", { enumerable: true, get: function () { return webhook_js_1.verifyMetaSignature; } });
73
+ var email_js_1 = require("./adapters/email.js");
74
+ Object.defineProperty(exports, "createEmailChannel", { enumerable: true, get: function () { return email_js_1.createEmailChannel; } });
75
+ var whatsapp_js_1 = require("./adapters/whatsapp.js");
76
+ Object.defineProperty(exports, "createWhatsAppChannel", { enumerable: true, get: function () { return whatsapp_js_1.createWhatsAppChannel; } });
77
+ var sms_js_1 = require("./adapters/sms.js");
78
+ Object.defineProperty(exports, "countSegments", { enumerable: true, get: function () { return sms_js_1.countSegments; } });
79
+ Object.defineProperty(exports, "createRecordingSmsTransport", { enumerable: true, get: function () { return sms_js_1.createRecordingSmsTransport; } });
80
+ Object.defineProperty(exports, "createSmsChannel", { enumerable: true, get: function () { return sms_js_1.createSmsChannel; } });
81
+ Object.defineProperty(exports, "isGsm7", { enumerable: true, get: function () { return sms_js_1.isGsm7; } });
82
+ var routing_js_1 = require("./routing.js");
83
+ Object.defineProperty(exports, "resolveRoute", { enumerable: true, get: function () { return routing_js_1.resolveRoute; } });
84
+ Object.defineProperty(exports, "sameOrigin", { enumerable: true, get: function () { return routing_js_1.sameOrigin; } });
85
+ var credentials_js_1 = require("./credentials.js");
86
+ Object.defineProperty(exports, "createChannelCredentialResolver", { enumerable: true, get: function () { return credentials_js_1.createChannelCredentialResolver; } });
87
+ Object.defineProperty(exports, "isAcceptableForNewBinding", { enumerable: true, get: function () { return credentials_js_1.isAcceptableForNewBinding; } });
88
+ Object.defineProperty(exports, "isVaultRef", { enumerable: true, get: function () { return credentials_js_1.isVaultRef; } });
89
+ Object.defineProperty(exports, "noCredentialResolver", { enumerable: true, get: function () { return credentials_js_1.noCredentialResolver; } });
90
+ var secrets_js_1 = require("./stores/secrets.js");
91
+ Object.defineProperty(exports, "createPostgresTenantSecretStore", { enumerable: true, get: function () { return secrets_js_1.createPostgresTenantSecretStore; } });
92
+ Object.defineProperty(exports, "VAULT_DECRYPT_PERMISSION", { enumerable: true, get: function () { return secrets_js_1.VAULT_DECRYPT_PERMISSION; } });
93
+ var routing_js_2 = require("./stores/routing.js");
94
+ Object.defineProperty(exports, "ChannelRouteConflictError", { enumerable: true, get: function () { return routing_js_2.ChannelRouteConflictError; } });
95
+ Object.defineProperty(exports, "CredentialRefNotAcceptableError", { enumerable: true, get: function () { return routing_js_2.CredentialRefNotAcceptableError; } });
96
+ Object.defineProperty(exports, "completeRoute", { enumerable: true, get: function () { return routing_js_2.completeRoute; } });
97
+ Object.defineProperty(exports, "createPostgresChannelBindingStore", { enumerable: true, get: function () { return routing_js_2.createPostgresChannelBindingStore; } });
98
+ Object.defineProperty(exports, "createPostgresChannelRouteStore", { enumerable: true, get: function () { return routing_js_2.createPostgresChannelRouteStore; } });
99
+ Object.defineProperty(exports, "registerChannelBinding", { enumerable: true, get: function () { return routing_js_2.registerChannelBinding; } });
100
+ var whatsapp_templates_js_1 = require("./adapters/whatsapp-templates.js");
101
+ Object.defineProperty(exports, "createWhatsAppTemplateProvider", { enumerable: true, get: function () { return whatsapp_templates_js_1.createWhatsAppTemplateProvider; } });
102
+ // Tradução do código de idioma para a grafia da Meta. Ponto ÚNICO: submissão e
103
+ // despacho divergiram uma vez, e o primeiro envio real morreu nisso.
104
+ var whatsapp_language_js_1 = require("./adapters/whatsapp-language.js");
105
+ Object.defineProperty(exports, "metaLanguageCode", { enumerable: true, get: function () { return whatsapp_language_js_1.metaLanguageCode; } });
106
+ // Diagnóstico da assinatura de webhooks. LEITURA PURA — a correção da
107
+ // assinatura do app é mutação externa e não mora numa rota de diagnóstico.
108
+ var webhook_subscription_js_1 = require("./webhook-subscription.js");
109
+ Object.defineProperty(exports, "readAppSettings", { enumerable: true, get: function () { return webhook_subscription_js_1.readAppSettings; } });
110
+ Object.defineProperty(exports, "readAppSubscriptions", { enumerable: true, get: function () { return webhook_subscription_js_1.readAppSubscriptions; } });
111
+ Object.defineProperty(exports, "readWabaSubscribedApps", { enumerable: true, get: function () { return webhook_subscription_js_1.readWabaSubscribedApps; } });
112
+ Object.defineProperty(exports, "sendWebhookTestEvent", { enumerable: true, get: function () { return webhook_subscription_js_1.sendWebhookTestEvent; } });
113
+ var graph_js_1 = require("./graph.js");
114
+ Object.defineProperty(exports, "DEFAULT_GRAPH_API_VERSION", { enumerable: true, get: function () { return graph_js_1.DEFAULT_GRAPH_API_VERSION; } });
115
+ Object.defineProperty(exports, "graphApiVersion", { enumerable: true, get: function () { return graph_js_1.graphApiVersion; } });
116
+ Object.defineProperty(exports, "graphUrl", { enumerable: true, get: function () { return graph_js_1.graphUrl; } });
117
+ var onboarding_js_1 = require("./onboarding.js");
118
+ Object.defineProperty(exports, "createSignupState", { enumerable: true, get: function () { return onboarding_js_1.createSignupState; } });
119
+ Object.defineProperty(exports, "exchangeSignupCode", { enumerable: true, get: function () { return onboarding_js_1.exchangeSignupCode; } });
120
+ Object.defineProperty(exports, "hashSignupState", { enumerable: true, get: function () { return onboarding_js_1.hashSignupState; } });
121
+ Object.defineProperty(exports, "listWabaTemplates", { enumerable: true, get: function () { return onboarding_js_1.listWabaTemplates; } });
122
+ Object.defineProperty(exports, "readPhoneNumber", { enumerable: true, get: function () { return onboarding_js_1.readPhoneNumber; } });
123
+ Object.defineProperty(exports, "registerPhoneNumber", { enumerable: true, get: function () { return onboarding_js_1.registerPhoneNumber; } });
124
+ Object.defineProperty(exports, "sameStateHash", { enumerable: true, get: function () { return onboarding_js_1.sameStateHash; } });
125
+ Object.defineProperty(exports, "subscribeAppToWaba", { enumerable: true, get: function () { return onboarding_js_1.subscribeAppToWaba; } });
126
+ var onboarding_js_2 = require("./stores/onboarding.js");
127
+ Object.defineProperty(exports, "consumeOnboardingSession", { enumerable: true, get: function () { return onboarding_js_2.consumeOnboardingSession; } });
128
+ Object.defineProperty(exports, "failOnboardingSession", { enumerable: true, get: function () { return onboarding_js_2.failOnboardingSession; } });
129
+ Object.defineProperty(exports, "latestOnboardingSession", { enumerable: true, get: function () { return onboarding_js_2.latestOnboardingSession; } });
130
+ Object.defineProperty(exports, "ONBOARDING_SESSION_TTL_MS", { enumerable: true, get: function () { return onboarding_js_2.ONBOARDING_SESSION_TTL_MS; } });
131
+ Object.defineProperty(exports, "openOnboardingSession", { enumerable: true, get: function () { return onboarding_js_2.openOnboardingSession; } });
132
+ Object.defineProperty(exports, "recordOnboardingAssets", { enumerable: true, get: function () { return onboarding_js_2.recordOnboardingAssets; } });
133
+ var routing_js_3 = require("./stores/routing.js");
134
+ Object.defineProperty(exports, "claimChannelAccount", { enumerable: true, get: function () { return routing_js_3.claimChannelAccount; } });
135
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/communication/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;AAEH,2CAMsB;AALpB,6GAAA,eAAe,OAAA;AACf,0GAAA,YAAY,OAAA;AACZ,4GAAA,cAAc,OAAA;AACd,4GAAA,cAAc,OAAA;AACd,gHAAA,kBAAkB,OAAA;AAYpB,2CAA2D;AAAlD,wGAAA,UAAU,OAAA;AAAE,6GAAA,eAAe,OAAA;AAGpC,qDAI2B;AAHzB,yHAAA,sBAAsB,OAAA;AACtB,4HAAA,yBAAyB,OAAA;AACzB,+HAAA,4BAA4B,OAAA;AAI9B,mDAAuD;AAA9C,qHAAA,mBAAmB,OAAA;AAG5B,uCAAoF;AAA3E,4HAAA,gCAAgC,OAAA;AAAE,gHAAA,oBAAoB,OAAA;AAe/D,oDAI8B;AAH5B,sHAAA,uBAAuB,OAAA;AACvB,+HAAA,gCAAgC,OAAA;AAChC,qHAAA,sBAAsB,OAAA;AAQxB,uCAA6F;AAApF,+GAAA,mBAAmB,OAAA;AAAE,oHAAA,wBAAwB,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAOxE,6CAAyF;AAAhF,8GAAA,eAAe,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,qHAAA,sBAAsB,OAAA;AAEjE,yDAI6B;AAH3B,0HAAA,qBAAqB,OAAA;AACrB,yHAAA,oBAAoB,OAAA;AACpB,uHAAA,kBAAkB,OAAA;AAiBpB,2CAA+C;AAAtC,6GAAA,eAAe,OAAA;AAWxB,6CAAgE;AAAvD,6GAAA,cAAc,OAAA;AAAE,8GAAA,eAAe,OAAA;AAUxC,yCAAuE;AAA9D,mHAAA,cAAc,OAA0B;AAGjD,yCAMqB;AALnB,4GAAA,eAAe,OAAA;AACf,0GAAA,aAAa,OAAA;AACb,2GAAA,cAAc,OAAA;AACd,wGAAA,WAAW,OAAA;AACX,6GAAA,gBAAgB,OAAA;AAIlB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AAQjB,2CAAsF;AAA7E,+GAAA,iBAAiB,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AAAE,6GAAA,eAAe,OAAA;AAG/D,2CAQsB;AAPpB,gHAAA,kBAAkB,OAAA;AAClB,6GAAA,eAAe,OAAA;AACf,sHAAA,wBAAwB,OAAA;AACxB,oHAAA,sBAAsB,OAAA;AACtB,qHAAA,uBAAuB,OAAA;AACvB,iHAAA,mBAAmB,OAAA;AACnB,iHAAA,mBAAmB,OAAA;AAIrB,gDAAyD;AAAhD,8GAAA,kBAAkB,OAAA;AAG3B,sDAA+D;AAAtD,oHAAA,qBAAqB,OAAA;AAG9B,4CAK2B;AAJzB,uGAAA,aAAa,OAAA;AACb,qHAAA,2BAA2B,OAAA;AAC3B,0GAAA,gBAAgB,OAAA;AAChB,gGAAA,MAAM,OAAA;AASR,2CAAwD;AAA/C,0GAAA,YAAY,OAAA;AAAE,wGAAA,UAAU,OAAA;AAUjC,mDAK0B;AAJxB,iIAAA,+BAA+B,OAAA;AAC/B,2HAAA,yBAAyB,OAAA;AACzB,4GAAA,UAAU,OAAA;AACV,sHAAA,oBAAoB,OAAA;AAItB,kDAAgG;AAAvF,6HAAA,+BAA+B,OAAA;AAAE,sHAAA,wBAAwB,OAAA;AAOlE,kDAO6B;AAN3B,uHAAA,yBAAyB,OAAA;AACzB,6HAAA,+BAA+B,OAAA;AAC/B,2GAAA,aAAa,OAAA;AACb,+HAAA,iCAAiC,OAAA;AACjC,6HAAA,+BAA+B,OAAA;AAC/B,oHAAA,sBAAsB,OAAA;AAIxB,0EAAkF;AAAzE,uIAAA,8BAA8B,OAAA;AACvC,+EAA+E;AAC/E,qEAAqE;AACrE,wEAAmE;AAA1D,wHAAA,gBAAgB,OAAA;AAEzB,sEAAsE;AACtE,2EAA2E;AAC3E,qEAKmC;AAJjC,0HAAA,eAAe,OAAA;AACf,+HAAA,oBAAoB,OAAA;AACpB,iIAAA,sBAAsB,OAAA;AACtB,+HAAA,oBAAoB,OAAA;AAiBtB,uCAAkF;AAAzE,qHAAA,yBAAyB,OAAA;AAAE,2GAAA,eAAe,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAE7D,iDASyB;AARvB,kHAAA,iBAAiB,OAAA;AACjB,mHAAA,kBAAkB,OAAA;AAClB,gHAAA,eAAe,OAAA;AACf,kHAAA,iBAAiB,OAAA;AACjB,gHAAA,eAAe,OAAA;AACf,oHAAA,mBAAmB,OAAA;AACnB,8GAAA,aAAa,OAAA;AACb,mHAAA,kBAAkB,OAAA;AAcpB,wDAOgC;AAN9B,yHAAA,wBAAwB,OAAA;AACxB,sHAAA,qBAAqB,OAAA;AACrB,wHAAA,uBAAuB,OAAA;AACvB,0HAAA,yBAAyB,OAAA;AACzB,sHAAA,qBAAqB,OAAA;AACrB,uHAAA,sBAAsB,OAAA;AAIxB,kDAA0D;AAAjD,iHAAA,mBAAmB,OAAA"}
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ /**
3
+ * Onboarding de conta de canal — Embedded Signup da Meta.
4
+ *
5
+ * Este módulo é a fronteira entre "o operador clicou em Conectar" e "existe um
6
+ * vínculo de canal com credencial no cofre". Ele não escreve no banco e não lê
7
+ * configuração: recebe o que precisa e devolve o que descobriu, para que o
8
+ * produto decida o que persistir.
9
+ *
10
+ * ── A regra que este arquivo existe para cumprir ────────────────────────────
11
+ *
12
+ * **Nenhum token é digitado por humano.** O caminho anterior — e o que ainda
13
+ * está no cofre desta casa, sob `PROPOSAL_COMM_WA_ACCESS_TOKEN` — é um token de
14
+ * USUÁRIO gerado no painel da Meta e colado numa variável de ambiente. Ele
15
+ * expirou em 2026-07-21 e derrubou o canal sem que nada avisasse, porque um
16
+ * token colado não tem dono, não tem renovação e não tem trilha: ninguém sabe
17
+ * quem o gerou nem quando ele morre.
18
+ *
19
+ * **Aquela credencial é de OUTRO app** — "Baruk Communication Sandbox", do motor
20
+ * de propostas — e **não deve ser reutilizada aqui em hipótese nenhuma**. O app
21
+ * canônico deste caminho é o "Baruk Comunicação". A distinção está escrita
22
+ * porque os dois têm nome parecido e a mesma cara no cofre, e reaproveitar o
23
+ * errado é a regressão mais barata de cometer nesta frente.
24
+ *
25
+ * O Embedded Signup devolve, para o servidor, um `code` trocável por um
26
+ * **business integration system user access token** — escopado ao cliente que
27
+ * autorizou, de vida longa, revogável por ele, e que nunca passa pelo teclado
28
+ * de ninguém.
29
+ *
30
+ * ── O que NÃO está aqui ─────────────────────────────────────────────────────
31
+ *
32
+ * O `client_secret` do App. Ele entra por parâmetro, vindo do ambiente do
33
+ * processo, e nunca é logado, devolvido nem embutido em mensagem de erro. Pelo
34
+ * mesmo motivo, nenhuma função deste arquivo devolve a mensagem de erro da
35
+ * Meta: ela carrega, com frequência, o nome e o identificador do negócio do
36
+ * cliente — que é PII de terceiro dentro de um log nosso.
37
+ */
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.createSignupState = createSignupState;
40
+ exports.hashSignupState = hashSignupState;
41
+ exports.sameStateHash = sameStateHash;
42
+ exports.exchangeSignupCode = exchangeSignupCode;
43
+ exports.subscribeAppToWaba = subscribeAppToWaba;
44
+ exports.readPhoneNumber = readPhoneNumber;
45
+ exports.listWabaTemplates = listWabaTemplates;
46
+ exports.registerPhoneNumber = registerPhoneNumber;
47
+ const node_crypto_1 = require("node:crypto");
48
+ const graph_js_1 = require("./graph.js");
49
+ /**
50
+ * 32 bytes de aleatoriedade criptográfica.
51
+ *
52
+ * Não é um uuid de propósito: um uuidv7 carrega o instante de criação e é
53
+ * parcialmente previsível, e a única função deste valor é ser impossível de
54
+ * adivinhar.
55
+ */
56
+ function createSignupState() {
57
+ const state = (0, node_crypto_1.randomBytes)(32).toString('base64url');
58
+ return { state, stateHash: hashSignupState(state) };
59
+ }
60
+ function hashSignupState(state) {
61
+ return (0, node_crypto_1.createHash)('sha256').update(state, 'utf8').digest('hex');
62
+ }
63
+ /**
64
+ * Comparação de hashes em tempo constante.
65
+ *
66
+ * A busca no banco é por igualdade de índice e já vaza tempo por natureza; esta
67
+ * função existe para o segundo confronto, feito em memória depois da leitura,
68
+ * onde a comparação ingênua compara byte a byte e para no primeiro que difere.
69
+ */
70
+ function sameStateHash(a, b) {
71
+ if (typeof a !== 'string' || typeof b !== 'string')
72
+ return false;
73
+ const ba = Buffer.from(a, 'utf8');
74
+ const bb = Buffer.from(b, 'utf8');
75
+ if (ba.length !== bb.length)
76
+ return false;
77
+ return (0, node_crypto_1.timingSafeEqual)(ba, bb);
78
+ }
79
+ const DEFAULT_TIMEOUT_MS = 15_000;
80
+ /**
81
+ * Traduz o erro da Meta para uma classe nossa.
82
+ *
83
+ * `100`/`191` sobre um `code` significam código gasto ou redirect divergente —
84
+ * os dois são "refaça o fluxo", não "conserte a configuração". `190` e `200`
85
+ * são credencial/permissão do App: refazer o fluxo não resolve nada, e mostrar
86
+ * "tente de novo" ao operador o faria repetir para sempre um passo que nunca
87
+ * vai funcionar.
88
+ */
89
+ function classifySignupError(status, err) {
90
+ const code = err?.code;
91
+ if (code === 190 || code === 200 || code === 10 || code === 3)
92
+ return 'unauthorized_app';
93
+ if (code === 100 || code === 191)
94
+ return 'invalid_code';
95
+ if (code === 4 || code === 17 || code === 80007 || code === 613)
96
+ return 'rate_limited';
97
+ if (status === 429)
98
+ return 'rate_limited';
99
+ if (status >= 500)
100
+ return 'network';
101
+ return 'provider_error';
102
+ }
103
+ /**
104
+ * Uma chamada à Graph API, com a resposta já reduzida a `ok`/classe de erro.
105
+ *
106
+ * Centraliza três cuidados que, escritos em cada chamada, um dia divergiriam:
107
+ * o timeout (uma chamada sem teto pendura o request do operador), o descarte
108
+ * total da exceção de rede (ela pode carregar a URL, e a URL de troca carrega
109
+ * o `client_secret` na query), e a leitura do corpo de erro sem propagá-lo.
110
+ */
111
+ async function graphCall(call, opts) {
112
+ const doFetch = opts.fetchImpl ?? fetch;
113
+ let res;
114
+ try {
115
+ res = await doFetch(call.url, {
116
+ method: call.method,
117
+ headers: {
118
+ ...(call.bearer ? { authorization: `Bearer ${call.bearer}` } : {}),
119
+ ...(call.body ? { 'content-type': 'application/json' } : {}),
120
+ },
121
+ ...(call.body ? { body: JSON.stringify(call.body) } : {}),
122
+ signal: AbortSignal.timeout(opts.timeoutMs ?? DEFAULT_TIMEOUT_MS),
123
+ });
124
+ }
125
+ catch {
126
+ // Nada da exceção é propagado. Em algumas implementações de `fetch` a
127
+ // mensagem inclui a URL — e a URL da troca de código carrega o segredo do
128
+ // App na query string.
129
+ return { ok: false, reason: 'network' };
130
+ }
131
+ const payload = (await res.json().catch(() => null));
132
+ if (!res.ok) {
133
+ const err = (payload?.error ?? null);
134
+ return { ok: false, reason: classifySignupError(res.status, err) };
135
+ }
136
+ return { ok: true, value: (payload ?? {}) };
137
+ }
138
+ /**
139
+ * Troca o `code` do Embedded Signup pelo token de negócio do cliente.
140
+ *
141
+ * **Server-to-server, sempre.** O `client_secret` do App não pode existir no
142
+ * navegador: quem o tiver consegue trocar códigos de qualquer cliente e falar
143
+ * pela conta dele. É por isso que o front devolve `code` e não token, e é por
144
+ * isso que esta função vive no servidor.
145
+ */
146
+ async function exchangeSignupCode(input, opts = {}) {
147
+ const code = input.code?.trim() ?? '';
148
+ const appId = input.appId?.trim() ?? '';
149
+ const appSecret = typeof input.appSecret === 'string' ? input.appSecret : '';
150
+ if (!code || !appId || !appSecret)
151
+ return { ok: false, reason: 'unauthorized_app' };
152
+ const url = new URL((0, graph_js_1.graphUrl)('oauth/access_token', opts.env));
153
+ url.searchParams.set('client_id', appId);
154
+ url.searchParams.set('client_secret', appSecret);
155
+ url.searchParams.set('code', code);
156
+ const res = await graphCall({ url: url.toString(), method: 'GET' }, opts);
157
+ if (!res.ok)
158
+ return res;
159
+ const token = res.value.access_token;
160
+ // Resposta 200 sem token é resposta inválida, não sucesso vazio. Deixá-la
161
+ // passar gravaria uma credencial em branco no cofre e o canal falharia
162
+ // depois, longe daqui.
163
+ if (typeof token !== 'string' || token.length < 20) {
164
+ return { ok: false, reason: 'provider_error' };
165
+ }
166
+ return {
167
+ ok: true,
168
+ value: {
169
+ accessToken: token,
170
+ ...(typeof res.value.expires_in === 'number' && res.value.expires_in > 0
171
+ ? { expiresInSeconds: res.value.expires_in }
172
+ : {}),
173
+ },
174
+ };
175
+ }
176
+ /* ── 2. Assinatura do App na WABA do cliente ────────────────────────────── */
177
+ /**
178
+ * Assina o App do motor nos webhooks da WABA do cliente.
179
+ *
180
+ * Sem isto o vínculo existe, o envio funciona e **nenhum status volta**: a
181
+ * mensagem fica presa em `sent` para sempre e a tela do escritório não sabe
182
+ * dizer se o cliente recebeu. É a diferença entre um canal que funciona e um
183
+ * canal que parece funcionar.
184
+ *
185
+ * Idempotente do lado da Meta — assinar duas vezes não é erro.
186
+ */
187
+ async function subscribeAppToWaba(input, opts = {}) {
188
+ const wabaId = input.wabaId?.trim() ?? '';
189
+ if (!wabaId)
190
+ return { ok: false, reason: 'provider_error' };
191
+ const res = await graphCall({
192
+ url: (0, graph_js_1.graphUrl)(`${encodeURIComponent(wabaId)}/subscribed_apps`, opts.env),
193
+ method: 'POST',
194
+ bearer: input.accessToken,
195
+ }, opts);
196
+ if (!res.ok)
197
+ return res;
198
+ return { ok: true, value: { subscribed: res.value.success !== false } };
199
+ }
200
+ /**
201
+ * Estado do número, do ponto de vista da Meta.
202
+ *
203
+ * Leitura pura. É o que permite à tela dizer `attention_required` com um motivo
204
+ * — "número não verificado", "conta restrita" — em vez do genérico "erro", que
205
+ * obriga o escritório a abrir o painel da Meta para descobrir o quê.
206
+ */
207
+ async function readPhoneNumber(input, opts = {}) {
208
+ const id = input.phoneNumberId?.trim() ?? '';
209
+ if (!id)
210
+ return { ok: false, reason: 'provider_error' };
211
+ const url = new URL((0, graph_js_1.graphUrl)(encodeURIComponent(id), opts.env));
212
+ url.searchParams.set('fields', 'display_phone_number,verified_name,code_verification_status,status,quality_rating,platform_type');
213
+ const res = await graphCall({ url: url.toString(), method: 'GET', bearer: input.accessToken }, opts);
214
+ if (!res.ok)
215
+ return res;
216
+ const v = res.value;
217
+ return {
218
+ ok: true,
219
+ value: {
220
+ ...(str(v.display_phone_number) ? { displayPhoneNumber: str(v.display_phone_number) } : {}),
221
+ ...(str(v.verified_name) ? { verifiedName: str(v.verified_name) } : {}),
222
+ ...(str(v.code_verification_status)
223
+ ? { codeVerificationStatus: str(v.code_verification_status) }
224
+ : {}),
225
+ ...(str(v.status) ? { status: str(v.status) } : {}),
226
+ ...(str(v.quality_rating) ? { qualityRating: str(v.quality_rating) } : {}),
227
+ ...(str(v.platform_type) ? { platformType: str(v.platform_type) } : {}),
228
+ },
229
+ };
230
+ }
231
+ /**
232
+ * Lista os templates da WABA do cliente. **Somente leitura.**
233
+ *
234
+ * Existe porque `approvedEvents` é uma lista mantida à mão em
235
+ * `tenant.settings`, e uma lista declarada por humano diverge da realidade da
236
+ * Meta no dia em que alguém aprova, pausa ou reprova um template lá. Um template
237
+ * marcado "aprovado" aqui e reprovado lá gasta a tentativa de envio e volta erro
238
+ * permanente — que a régua interpreta como problema do destinatário.
239
+ *
240
+ * Devolver a lista permite que a decisão de configurar `approvedEvents` seja
241
+ * tomada contra o que a Meta diz, e não contra o que alguém lembrou.
242
+ */
243
+ async function listWabaTemplates(input, opts = {}) {
244
+ const wabaId = input.wabaId?.trim() ?? '';
245
+ if (!wabaId)
246
+ return { ok: false, reason: 'provider_error' };
247
+ const url = new URL((0, graph_js_1.graphUrl)(`${encodeURIComponent(wabaId)}/message_templates`, opts.env));
248
+ url.searchParams.set('fields', 'name,language,status,category');
249
+ url.searchParams.set('limit', '100');
250
+ const res = await graphCall({ url: url.toString(), method: 'GET', bearer: input.accessToken }, opts);
251
+ if (!res.ok)
252
+ return res;
253
+ const items = Array.isArray(res.value.data) ? res.value.data : [];
254
+ return {
255
+ ok: true,
256
+ // Só os quatro campos que interessam. O payload da Meta traz `components`
257
+ // com o TEXTO do template, e o texto de um template de cobrança carrega a
258
+ // forma como o escritório fala com o cliente — não precisa atravessar o
259
+ // domínio para responder "está aprovado?".
260
+ value: items.flatMap((t) => {
261
+ const name = str(t.name);
262
+ const language = str(t.language);
263
+ const status = str(t.status);
264
+ if (!name || !language || !status)
265
+ return [];
266
+ const category = str(t.category);
267
+ return [{ name, language, status, ...(category ? { category } : {}) }];
268
+ }),
269
+ };
270
+ }
271
+ /**
272
+ * Registra o número do cliente na Cloud API.
273
+ *
274
+ * Implementado e **não chamado** por nenhum caminho automático desta fase. O
275
+ * gate de autorização humana está no parâmetro, e não numa convenção de
276
+ * chamada: uma trava que depende de ninguém chamar a função errada não é trava.
277
+ */
278
+ async function registerPhoneNumber(input, opts = {}) {
279
+ if (input.authorized !== true)
280
+ return { ok: false, reason: 'not_authorized' };
281
+ const pin = input.pin?.trim() ?? '';
282
+ if (!/^\d{6}$/.test(pin))
283
+ return { ok: false, reason: 'invalid_pin' };
284
+ const res = await graphCall({
285
+ url: (0, graph_js_1.graphUrl)(`${encodeURIComponent(input.phoneNumberId)}/register`, opts.env),
286
+ method: 'POST',
287
+ bearer: input.accessToken,
288
+ body: { messaging_product: 'whatsapp', pin },
289
+ }, opts);
290
+ if (!res.ok)
291
+ return { ok: false, reason: res.reason };
292
+ return { ok: true };
293
+ }
294
+ function str(v) {
295
+ return typeof v === 'string' && v.trim().length > 0 ? v.trim().slice(0, 120) : undefined;
296
+ }
297
+ //# sourceMappingURL=onboarding.js.map