@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,492 @@
1
+ /**
2
+ * Motor de comunicação compartilhado.
3
+ *
4
+ * INTENT → CONTEXT → POLICY → IDENTITY → CONSENT → RECIPIENT → TEMPLATE
5
+ * → CONTENT → CLAIM → [RECOVERY?] → FENCE → ADAPTER → SETTLE
6
+ *
7
+ * O consumidor declara a INTENÇÃO de negócio ("avisar este cliente sobre o
8
+ * recebível X, etapa D+3, preferindo WhatsApp"). O motor decide nada sobre o
9
+ * negócio e tudo sobre a entrega.
10
+ *
11
+ * Cada porta abaixo pode recusar, e **toda recusa tem motivo próprio**. Um motor
12
+ * que devolve "não enviado" sem dizer qual porta fechou obriga o escritório a
13
+ * adivinhar entre "o cliente pediu para não receber" e "ninguém cadastrou o
14
+ * telefone" — que exigem ações opostas de quem opera.
15
+ *
16
+ * **CLAIM é a penúltima porta, e é a mais importante.** Ela fica imediatamente
17
+ * antes do adapter porque é o único lugar onde uma reserva serve para alguma
18
+ * coisa: a proteção contra envio duplo tem de acontecer antes do efeito externo,
19
+ * nunca depois. Ver `claim.ts`.
20
+ *
21
+ * Entre CLAIM e ADAPTER existem duas etapas que a H2 acrescentou, e nenhuma das
22
+ * duas é opcional:
23
+ *
24
+ * RECOVERY quando a reserva foi retomada de um titular que já tinha falado com
25
+ * o provider, o desfecho anterior é DESCONHECIDO. O motor só reenvia
26
+ * se o adapter declarar idempotência de provider que ainda cubra a
27
+ * chave; sem isso, recusa e deixa a chave visível para quem opera.
28
+ * FENCE a marca durável de "vou chamar o provider agora", gravada antes da
29
+ * chamada — e, na MESMA operação, a prova de que quem vai chamar
30
+ * ainda é o titular da geração corrente. É ela que dá à próxima
31
+ * retomada como saber a diferença entre "morreu antes de enviar" e
32
+ * "morreu depois", e é ela que impede o titular vencido de alcançar
33
+ * o provider. Perdeu a autoridade, não chama: sem exceção.
34
+ *
35
+ * A trilha do CICLO DE VIDA do disparo (`dispatch_claimed`, `dispatch_sent`,
36
+ * `dispatch_failed`) é gravada pelo STORE, junto com a reserva, e não pelo
37
+ * `audit` daqui. A razão está em `claim.ts`: o `audit` do motor vive na transação
38
+ * de negócio de quem chamou, e um rollback dela apagava a narrativa de um envio
39
+ * que tinha acontecido de verdade.
40
+ */
41
+ import { channelAccepts, resolveChannel, } from './channel.js';
42
+ import { eventKindForSkip } from './audit.js';
43
+ import { providerIdempotencyCovers } from './capabilities.js';
44
+ import { validateContext } from './context.js';
45
+ import { evaluateConsent } from './consent.js';
46
+ import { buildIdempotencyKey } from './idempotency.js';
47
+ import { resolveIdentity } from './identity.js';
48
+ import { DEFAULT_POLICY, } from './policy.js';
49
+ import { orderVariables, resolveTemplate } from './template.js';
50
+ import { isMessagingCapable, parseBrazilPhone } from '../contacts/phone.js';
51
+ /** Pulo derivado de uma reserva negada. Cada um é um estado distinto do sistema. */
52
+ const SKIP_FOR_REFUSAL = {
53
+ already_sent: 'already_sent',
54
+ in_flight: 'claim_in_flight',
55
+ permanently_failed: 'permanently_failed',
56
+ unknown_outcome: 'unknown_outcome',
57
+ };
58
+ /**
59
+ * Como um veredicto de fencing perdido aparece na trilha.
60
+ *
61
+ * O rótulo não é decoração: é o que a tela da régua mostra a quem investiga, e
62
+ * cada um pede uma ação diferente. `claim_lost` é concorrência sendo absorvida
63
+ * (outro worker está com o disparo agora — nada a fazer). `already_sent` é o
64
+ * sistema tendo funcionado. `permanently_failed` e `unknown_outcome` são as duas
65
+ * que pedem humano, e por motivos opostos.
66
+ *
67
+ * Colapsar tudo em `claim_lost` mandaria o escritório procurar um worker
68
+ * concorrente que não existe quando o caso é uma chave já assentada.
69
+ */
70
+ function skipForLostAuthority(fence) {
71
+ if (fence.authority === 'lost')
72
+ return 'claim_lost';
73
+ if (fence.state === 'sent')
74
+ return 'already_sent';
75
+ if (fence.state === 'failed_permanent')
76
+ return 'permanently_failed';
77
+ if (fence.state === 'unknown_outcome')
78
+ return 'unknown_outcome';
79
+ // `none` / `failed_retryable` com a geração ainda casando não é estado
80
+ // alcançável pelo motor; se acontecer, é perda de autoridade e não um desfecho.
81
+ return 'claim_lost';
82
+ }
83
+ export async function dispatch(intent, deps, options = {}) {
84
+ const attempts = [];
85
+ let providerSendCalls = 0;
86
+ const contextError = validateContext(intent.ctx);
87
+ if (contextError) {
88
+ // Nenhum envio sem contexto válido. Não há default, não há "assume o tenant
89
+ // da sessão": é a fronteira de isolamento, e ela falha fechada.
90
+ //
91
+ // A trilha também não é escrita: `appendAudit` deriva o tenant da sessão, e
92
+ // gravar um evento sob um contexto que o motor acabou de recusar seria
93
+ // registrar a linha no tenant errado.
94
+ return {
95
+ delivered: null,
96
+ attempts,
97
+ idempotencyKey: '',
98
+ invalidContext: contextError,
99
+ providerSendCalls,
100
+ };
101
+ }
102
+ const policy = intent.policy ?? DEFAULT_POLICY;
103
+ const locale = intent.locale ?? 'pt-BR';
104
+ let lastKey = '';
105
+ const record = (event) => deps.audit.record({
106
+ ctx: intent.ctx,
107
+ channel: null,
108
+ eventType: intent.eventType,
109
+ subjectRef: intent.subjectRef,
110
+ recipientRef: intent.recipientRef,
111
+ idempotencyKey: null,
112
+ ...event,
113
+ });
114
+ await record({ kind: 'intent_created' });
115
+ for (const channel of policy.order) {
116
+ const skip = async (reason, detail, key) => {
117
+ attempts.push({ channel, skipped: reason, detail });
118
+ await record({
119
+ kind: eventKindForSkip(reason),
120
+ channel,
121
+ skipReason: reason,
122
+ detail: detail ?? null,
123
+ idempotencyKey: key ?? null,
124
+ });
125
+ };
126
+ const adapter = resolveChannel(deps.channels, channel);
127
+ if (!deps.channels[channel]) {
128
+ await skip('channel_not_registered', `canal ${channel} não registrado`);
129
+ continue;
130
+ }
131
+ const identity = await resolveIdentity(deps.accounts, intent.ctx, channel);
132
+ if (!identity.ok) {
133
+ await skip('no_identity', identity.detail);
134
+ continue;
135
+ }
136
+ if (!(await adapter.isConfigured(intent.ctx))) {
137
+ await skip('no_identity', `adapter de ${channel} sem configuração utilizável`);
138
+ continue;
139
+ }
140
+ // Consentimento ANTES de resolver o destinatário. A ordem é deliberada: quem
141
+ // pediu para não receber não deve ter o telefone lido, e um opt-out não pode
142
+ // depender de o cadastro estar completo.
143
+ const consentRecord = await deps.consent.find(intent.recipientRef, channel);
144
+ const decision = evaluateConsent(channel, consentRecord, deps.consentPolicy);
145
+ if (!decision.allowed) {
146
+ await skip(decision.reason, decision.detail);
147
+ continue;
148
+ }
149
+ const to = await deps.resolveRecipient(intent.recipientRef, channel);
150
+ if (!to) {
151
+ await skip('no_recipient', `sem contato de ${channel} cadastrado`);
152
+ continue;
153
+ }
154
+ // Liberação DEPOIS de resolver o endereço, e a ordem é escolhida.
155
+ //
156
+ // Assim cada pulo aponta uma ação única: sem endereço vira `no_recipient`
157
+ // ("cadastre o contato"), endereço sem liberação vira
158
+ // `recipient_not_confirmed` ("confira e libere"). Checar liberação primeiro
159
+ // faria o escritório liberar um cliente para descobrir em seguida que ele
160
+ // não tem e-mail — duas idas para um problema só.
161
+ const clearance = await deps.clearance.find(intent.recipientRef, channel);
162
+ if (!clearance.cleared) {
163
+ await skip('recipient_not_confirmed', `destinatário não liberado para ${channel} — falta conferência do escritório`);
164
+ continue;
165
+ }
166
+ // Validação de FORMA para canais de telefone, feita pelo motor.
167
+ //
168
+ // Fica aqui, e não em cada adapter, porque WhatsApp e SMS discordariam no
169
+ // primeiro caso de borda — e discordar significa uma mensagem chegar e a
170
+ // outra não, para o mesmo cliente, sem que nada explique por quê.
171
+ //
172
+ // "Sem telefone" e "telefone que não serve" são pulos DIFERENTES: o primeiro
173
+ // é campo em branco, o segundo é campo preenchido com um fixo (que o
174
+ // provider aceita, cobra e nunca entrega). Um só rótulo mandaria o
175
+ // escritório procurar o dado que já está lá.
176
+ if (channel === 'whatsapp' || channel === 'sms') {
177
+ const parsed = parseBrazilPhone(to);
178
+ if (!isMessagingCapable(parsed)) {
179
+ await skip('invalid_recipient', parsed.ok ? 'telefone não é celular' : `telefone inválido (${parsed.reason})`);
180
+ continue;
181
+ }
182
+ }
183
+ const tpl = await resolveTemplate(deps.templates, intent.ctx, channel, intent.eventType, locale);
184
+ if (!tpl.ok) {
185
+ await skip('no_template', tpl.detail);
186
+ continue;
187
+ }
188
+ const ordered = orderVariables(tpl.template, intent.variables);
189
+ if (!ordered.ok) {
190
+ await skip('no_template', `variáveis ausentes: ${ordered.missing.join(', ')}`);
191
+ continue;
192
+ }
193
+ const idempotencyKey = buildIdempotencyKey({
194
+ ctx: intent.ctx,
195
+ channel,
196
+ eventType: intent.eventType,
197
+ subjectRef: intent.subjectRef,
198
+ templateVersion: tpl.template.version,
199
+ });
200
+ lastKey = idempotencyKey;
201
+ const content = deps.buildContent(channel, {
202
+ providerTemplateName: tpl.template.providerTemplateName,
203
+ body: tpl.template.body,
204
+ subject: tpl.template.subject,
205
+ locale,
206
+ }, ordered.ordered, intent.variables);
207
+ // Conteúdo montado ANTES da reserva, de propósito. Conteúdo que o canal não
208
+ // aceita é defeito de integração, e recusá-lo aqui evita reservar uma chave
209
+ // para um envio que nunca poderia acontecer — reserva tomada e devolvida é
210
+ // ruído na trilha de quem investiga.
211
+ if (!content || !channelAccepts(channel, content)) {
212
+ await skip('no_template', `conteúdo incompatível com o canal ${channel}`, idempotencyKey);
213
+ continue;
214
+ }
215
+ if (options.dryRun) {
216
+ // Ensaio LÊ o estado da chave; nunca o toma. `peek` é a única consulta do
217
+ // motor que não reserva nada.
218
+ const state = await deps.claims.peek(idempotencyKey);
219
+ if (state === 'sent') {
220
+ await skip('already_sent', 'dry-run: já enviado', idempotencyKey);
221
+ return { delivered: null, attempts, idempotencyKey, providerSendCalls };
222
+ }
223
+ if (state === 'in_flight') {
224
+ await skip('claim_in_flight', 'dry-run: envio em andamento', idempotencyKey);
225
+ return { delivered: null, attempts, idempotencyKey, providerSendCalls };
226
+ }
227
+ if (state === 'unknown_outcome') {
228
+ // O ensaio relata o que a execução real faria, e a execução real recusa:
229
+ // ninguém sabe se a tentativa anterior saiu. Anunciar "enviaria" aqui
230
+ // faria o ensaio prometer o que a execução nega.
231
+ await skip('unknown_outcome', 'dry-run: desfecho anterior desconhecido', idempotencyKey);
232
+ return { delivered: null, attempts, idempotencyKey, providerSendCalls };
233
+ }
234
+ attempts.push({ channel, outcome: 'sent', detail: 'dry-run: não enviado' });
235
+ return { delivered: channel, attempts, idempotencyKey, providerSendCalls };
236
+ }
237
+ /* ── A porta que importa ──────────────────────────────────────────────
238
+ *
239
+ * Daqui até `settle` existe um e apenas um titular do direito de enviar.
240
+ * Nenhuma linha entre `claim` e `send` pode conter um `await` a algo que
241
+ * possa demorar indefinidamente — o prazo da reserva corre a partir daqui.
242
+ */
243
+ const claimResult = await deps.claims.claim({
244
+ ctx: intent.ctx,
245
+ channel,
246
+ eventType: intent.eventType,
247
+ subjectRef: intent.subjectRef,
248
+ idempotencyKey,
249
+ recipientRef: intent.recipientRef,
250
+ });
251
+ if (!claimResult.granted) {
252
+ const reason = SKIP_FOR_REFUSAL[claimResult.reason];
253
+ await skip(reason, claimResult.detail, idempotencyKey);
254
+ // Reserva negada é DESFECHO, não canal indisponível: seguir para o
255
+ // próximo canal entregaria por outra via o que já saiu (ou o que outro
256
+ // worker está entregando agora).
257
+ return { delivered: null, attempts, idempotencyKey, providerSendCalls };
258
+ }
259
+ const claim = claimResult.claim;
260
+ // `dispatch_claimed` é gravado pelo STORE, na mesma fronteira transacional
261
+ // da reserva. Gravá-lo aqui, pelo `audit` do motor, era o que permitia a um
262
+ // rollback da transação de negócio apagar a narrativa de um disparo que
263
+ // aconteceu de verdade. Ver a nota de durabilidade em `claim.ts`.
264
+ /* ── Desfecho DESCONHECIDO ────────────────────────────────────────────
265
+ *
266
+ * A reserva foi retomada de um titular que já tinha falado com o provider e
267
+ * morreu antes de assentar. A mensagem pode ter saído. Reenviar sem mais
268
+ * nada é a duplicata que a certificação apontou; declarar "não enviado" é
269
+ * inventar um fato.
270
+ *
271
+ * A única coisa que torna o reenvio seguro é uma garantia EXTERNA: a mesma
272
+ * chave, dentro da janela em que o provider ainda a reconhece, produz uma
273
+ * chamada que ele deduplica. Quem tem essa garantia é o adapter, e ele a
274
+ * declara — o motor lê a declaração e nunca pergunta qual é o provider.
275
+ */
276
+ if (claim.previousAttemptReachedProvider) {
277
+ const covered = providerIdempotencyCovers(adapter.capabilities, claim.providerFirstAttemptAgeMs);
278
+ if (!covered) {
279
+ await deps.claims.settle(claim, {
280
+ kind: 'unknown',
281
+ code: 'unknown_outcome',
282
+ detail: 'tentativa anterior alcançou o provider e não assentou',
283
+ }, {
284
+ kind: 'dispatch_failed',
285
+ code: 'unknown_outcome',
286
+ detail: 'sem garantia de idempotência do provider para reenviar',
287
+ });
288
+ attempts.push({
289
+ channel,
290
+ skipped: 'unknown_outcome',
291
+ detail: 'desfecho anterior desconhecido e sem cobertura do provider',
292
+ });
293
+ // NÃO segue para o próximo canal. A mensagem pode ter saído por este; um
294
+ // fallback aqui entregaria duas vezes pelo caminho que o motor não
295
+ // consegue verificar.
296
+ return { delivered: null, attempts, idempotencyKey, providerSendCalls };
297
+ }
298
+ // Coberto: reenvia REUTILIZANDO a mesma `idempotencyKey`. A chave é
299
+ // derivada da intenção (`idempotency.ts`), não da tentativa — gerar uma
300
+ // nova aqui destruiria exatamente a proteção que se está invocando.
301
+ }
302
+ /* ── FENCING PRÉ-PROVIDER — a última fronteira antes do efeito externo ──
303
+ *
304
+ * Uma operação, duas responsabilidades inseparáveis:
305
+ *
306
+ * 1. marca DURAVELMENTE que a chamada externa vai acontecer agora — o que
307
+ * permite à próxima retomada saber que o desfecho é desconhecido em vez
308
+ * de assumir que nada saiu;
309
+ * 2. PROVA que quem está prestes a chamar o provider ainda é o titular da
310
+ * geração corrente da reserva.
311
+ *
312
+ * A segunda é o que a terceira certificação exigiu. Até aqui o motor gravava
313
+ * a marca e seguia para `adapter.send()` sem olhar o resultado. A trava por
314
+ * geração existia no `WHERE` do store e funcionava — nenhuma linha do zumbi
315
+ * era atualizada —, mas o motor não sabia disso, e um `UPDATE` cujo efeito o
316
+ * chamador ignora não protege nada:
317
+ *
318
+ * A perde a reserva por prazo → B a retoma e envia
319
+ * A acorda, "marca" (zero linhas) → A envia também
320
+ *
321
+ * Duas cobranças pela mesma intenção. **CLAIM_LOST ⇒ PROVIDER_CALL=false**,
322
+ * sem exceção — não há caso em que "tentar mesmo assim" seja preferível.
323
+ *
324
+ * Verificar aqui, e não com um `peek` antes, é o que fecha o TOCTOU: entre
325
+ * ler o estado e chamar o provider a reserva pode trocar de mãos. Marcar e
326
+ * verificar na MESMA instrução não deixa esse intervalo existir.
327
+ *
328
+ * FORA do `try` do adapter, de propósito. Se a GRAVAÇÃO falhar (banco fora,
329
+ * timeout), a exceção sobe: nada foi enviado, porque a marca vem antes da
330
+ * chamada. Cair no tratamento de exceção do adapter classificaria como "pode
331
+ * ter saído" um envio que nem começou, travando a chave por uma falha de
332
+ * banco. Deixando subir, a reserva expira e a retomada seguinte é segura —
333
+ * porque não há marca nenhuma.
334
+ */
335
+ const fence = await deps.claims.markProviderAttempt(claim);
336
+ if (fence.authority !== 'held') {
337
+ /*
338
+ * Perdeu a autoridade. Sai SEM chamar o adapter e SEM assentar.
339
+ *
340
+ * Não assentar é deliberado: `settle` recusaria de qualquer forma (a trava
341
+ * por geração é a mesma), mas pedir o assentamento afirmaria um desfecho
342
+ * sobre um disparo que pertence a outra execução. Quem tem a reserva agora
343
+ * é quem a assenta. A trilha desta execução registra o pulo, e só.
344
+ *
345
+ * Também NÃO segue para o próximo canal: o titular atual pode estar
346
+ * entregando por este exato canal neste instante, e um fallback aqui
347
+ * mandaria a segunda mensagem pela via que o motor não consegue verificar.
348
+ */
349
+ await skip(skipForLostAuthority(fence), fence.detail, idempotencyKey);
350
+ return { delivered: null, attempts, idempotencyKey, providerSendCalls };
351
+ }
352
+ let outcome;
353
+ try {
354
+ providerSendCalls += 1;
355
+ outcome = await adapter.send({
356
+ ctx: intent.ctx,
357
+ channel,
358
+ to,
359
+ content,
360
+ idempotencyKey,
361
+ eventType: intent.eventType,
362
+ });
363
+ }
364
+ catch (err) {
365
+ /*
366
+ * Adapter que LANÇA é o mesmo problema do titular que morre, sem precisar de
367
+ * crash nenhum: a chamada externa começou e o desfecho é DESCONHECIDO.
368
+ *
369
+ * O desenho anterior assentava falha retentável nos dois casos e explicava,
370
+ * num comentário, que "o motor escolhe não decidir sozinho". Mas devolver a
371
+ * chave É uma decisão — é decidir que nada saiu —, e num canal sem garantia
372
+ * externa a próxima rodada duplica.
373
+ *
374
+ * Agora a decisão é a mesma da retomada, e pelo mesmo critério: com
375
+ * cobertura de idempotência do provider, retentar é seguro (a chave é a
376
+ * mesma e ele deduplica); sem cobertura, a chave para em desconhecido.
377
+ *
378
+ * A marca já foi gravada antes da chamada, então `providerFirstAttemptAgeMs`
379
+ * responde pela tentativa ATUAL quando esta é a primeira — que é o que se
380
+ * quer: a janela do provider conta a partir do momento em que ele foi
381
+ * chamado.
382
+ */
383
+ const coveredOnThrow = providerIdempotencyCovers(adapter.capabilities, claim.providerFirstAttemptAgeMs ?? 0);
384
+ if (coveredOnThrow) {
385
+ await deps.claims.settle(claim, {
386
+ kind: 'failed',
387
+ permanent: false,
388
+ code: 'adapter_threw',
389
+ detail: 'adapter lançou exceção',
390
+ }, {
391
+ kind: 'dispatch_failed',
392
+ code: 'adapter_threw',
393
+ detail: err instanceof Error ? err.name : null,
394
+ });
395
+ attempts.push({ channel, outcome: 'temporary', detail: 'adapter lançou exceção' });
396
+ }
397
+ else {
398
+ await deps.claims.settle(claim, {
399
+ kind: 'unknown',
400
+ code: 'adapter_threw',
401
+ detail: 'adapter lançou exceção depois de iniciar a chamada externa',
402
+ }, {
403
+ kind: 'dispatch_failed',
404
+ code: 'unknown_outcome',
405
+ detail: err instanceof Error ? err.name : null,
406
+ });
407
+ attempts.push({
408
+ channel,
409
+ skipped: 'unknown_outcome',
410
+ detail: 'adapter lançou exceção e o canal não tem garantia de idempotência',
411
+ });
412
+ }
413
+ return { delivered: null, attempts, idempotencyKey, providerSendCalls };
414
+ }
415
+ attempts.push({
416
+ channel,
417
+ outcome: outcome.kind,
418
+ providerRef: outcome.providerRef,
419
+ detail: outcome.detail,
420
+ });
421
+ if (outcome.kind === 'sent') {
422
+ await deps.claims.settle(claim, { kind: 'sent', providerRef: outcome.providerRef }, {
423
+ kind: 'dispatch_sent',
424
+ providerRef: outcome.providerRef ?? null,
425
+ status: 'sent',
426
+ code: outcome.code ?? null,
427
+ });
428
+ return {
429
+ delivered: channel,
430
+ providerRef: outcome.providerRef,
431
+ attempts,
432
+ idempotencyKey,
433
+ providerSendCalls,
434
+ recoveredFromExpiredClaim: claim.recoveredFromExpiredClaim,
435
+ providerIdempotentReplay: claim.previousAttemptReachedProvider,
436
+ };
437
+ }
438
+ if (outcome.kind === 'opted_out') {
439
+ // Opt-out descoberto no provider é terminal para esta chave E encerra
440
+ // tudo. Tentar outro canal depois de o destinatário ter recusado é
441
+ // contornar a recusa por outra porta.
442
+ await deps.claims.settle(claim, {
443
+ kind: 'failed',
444
+ permanent: true,
445
+ code: outcome.code,
446
+ detail: outcome.detail,
447
+ }, {
448
+ kind: 'opt_out',
449
+ code: outcome.code ?? null,
450
+ detail: outcome.detail ?? null,
451
+ status: 'opted_out',
452
+ });
453
+ return { delivered: null, attempts, idempotencyKey, providerSendCalls };
454
+ }
455
+ if (outcome.kind === 'unavailable') {
456
+ // Canal indisponível não é tentativa: a chave é DEVOLVIDA, e o próximo
457
+ // ciclo pode usá-la. Assentar falha aqui gastaria uma tentativa por um
458
+ // problema de ambiente que nada tem a ver com o destinatário.
459
+ await deps.claims.settle(claim, {
460
+ kind: 'released',
461
+ reason: outcome.code ?? 'channel_unavailable',
462
+ }, {
463
+ kind: 'dispatch_skipped',
464
+ skipReason: 'no_identity',
465
+ code: outcome.code ?? null,
466
+ detail: outcome.detail ?? null,
467
+ });
468
+ continue;
469
+ }
470
+ const permanent = outcome.kind === 'permanent';
471
+ await deps.claims.settle(claim, {
472
+ kind: 'failed',
473
+ permanent,
474
+ code: outcome.code,
475
+ detail: outcome.detail,
476
+ }, {
477
+ kind: 'dispatch_failed',
478
+ code: outcome.code ?? null,
479
+ detail: outcome.detail ?? null,
480
+ status: permanent ? 'failed' : null,
481
+ });
482
+ if (outcome.kind === 'temporary' && !policy.fallbackOnTemporary) {
483
+ return { delivered: null, attempts, idempotencyKey, providerSendCalls };
484
+ }
485
+ // Falha PERMANENTE segue para o próximo canal, e isso é deliberado: "este
486
+ // número não tem WhatsApp" é definitivo para o WhatsApp e não diz nada sobre
487
+ // o e-mail. A chave de reserva inclui o canal, então a etapa não corre risco
488
+ // de sair duas vezes pela mesma via — só de sair pela via que funciona.
489
+ }
490
+ return { delivered: null, attempts, idempotencyKey: lastKey, providerSendCalls };
491
+ }
492
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/communication/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Versão da Graph API usada por todo o código que fala com a Meta.
3
+ *
4
+ * **Uma constante, um lugar.** Antes disto o adapter de envio carregava a sua
5
+ * (`v21.0`, escrita em 2026-08) e qualquer caminho novo escreveria a dele. Duas
6
+ * versões no mesmo runtime não falham no dia em que divergem — falham no dia em
7
+ * que a mais velha é desativada, e aí o sintoma é meio sistema parado enquanto
8
+ * a outra metade funciona, que é o pior formato possível para diagnosticar.
9
+ *
10
+ * ── Por que a versão importa mais aqui do que em outras integrações ─────────
11
+ *
12
+ * A Meta desativa versões da Graph API por calendário, não por uso: cada uma
13
+ * vive cerca de dois anos e depois passa a responder erro. `v21.0` é de
14
+ * 2024-10 e está no fim dessa janela — mantê-la seria agendar uma parada de
15
+ * canal para uma data que ninguém anotou.
16
+ *
17
+ * O valor abaixo foi verificado contra a Graph API em 2026-08-30: `v26.0`
18
+ * responde, `v27.0` ainda não existe.
19
+ *
20
+ * ── Override por ambiente ───────────────────────────────────────────────────
21
+ *
22
+ * Existe para rollback sem release: se uma versão nova mudar um contrato que
23
+ * este código lê, voltar uma casa é uma variável de ambiente e um deploy, não
24
+ * uma correção de emergência no código.
25
+ *
26
+ * O formato é validado. Um valor livre entraria direto na URL — e uma env var
27
+ * mal digitada viraria um caminho arbitrário no host da Meta.
28
+ */
29
+ export declare const DEFAULT_GRAPH_API_VERSION = "v26.0";
30
+ /**
31
+ * Versão efetiva. Um valor inválido cai no default em vez de derrubar o
32
+ * processo: a alternativa é um erro de digitação numa env var parar o boot da
33
+ * API inteira, e a degradação correta aqui é ignorar a configuração ruim.
34
+ */
35
+ export declare function graphApiVersion(env?: NodeJS.ProcessEnv): string;
36
+ /** Base de URL da Graph API. Isolada para que nenhum chamador a monte na mão. */
37
+ export declare function graphUrl(path: string, env?: NodeJS.ProcessEnv): string;
38
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/communication/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,eAAO,MAAM,yBAAyB,UAAU,CAAC;AAIjD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAG5E;AAED,iFAAiF;AACjF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAGtE"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Versão da Graph API usada por todo o código que fala com a Meta.
3
+ *
4
+ * **Uma constante, um lugar.** Antes disto o adapter de envio carregava a sua
5
+ * (`v21.0`, escrita em 2026-08) e qualquer caminho novo escreveria a dele. Duas
6
+ * versões no mesmo runtime não falham no dia em que divergem — falham no dia em
7
+ * que a mais velha é desativada, e aí o sintoma é meio sistema parado enquanto
8
+ * a outra metade funciona, que é o pior formato possível para diagnosticar.
9
+ *
10
+ * ── Por que a versão importa mais aqui do que em outras integrações ─────────
11
+ *
12
+ * A Meta desativa versões da Graph API por calendário, não por uso: cada uma
13
+ * vive cerca de dois anos e depois passa a responder erro. `v21.0` é de
14
+ * 2024-10 e está no fim dessa janela — mantê-la seria agendar uma parada de
15
+ * canal para uma data que ninguém anotou.
16
+ *
17
+ * O valor abaixo foi verificado contra a Graph API em 2026-08-30: `v26.0`
18
+ * responde, `v27.0` ainda não existe.
19
+ *
20
+ * ── Override por ambiente ───────────────────────────────────────────────────
21
+ *
22
+ * Existe para rollback sem release: se uma versão nova mudar um contrato que
23
+ * este código lê, voltar uma casa é uma variável de ambiente e um deploy, não
24
+ * uma correção de emergência no código.
25
+ *
26
+ * O formato é validado. Um valor livre entraria direto na URL — e uma env var
27
+ * mal digitada viraria um caminho arbitrário no host da Meta.
28
+ */
29
+ export const DEFAULT_GRAPH_API_VERSION = 'v26.0';
30
+ const VERSION_PATTERN = /^v\d{1,3}\.\d{1,2}$/;
31
+ /**
32
+ * Versão efetiva. Um valor inválido cai no default em vez de derrubar o
33
+ * processo: a alternativa é um erro de digitação numa env var parar o boot da
34
+ * API inteira, e a degradação correta aqui é ignorar a configuração ruim.
35
+ */
36
+ export function graphApiVersion(env = process.env) {
37
+ const raw = env.WHATSAPP_GRAPH_API_VERSION?.trim();
38
+ return raw && VERSION_PATTERN.test(raw) ? raw : DEFAULT_GRAPH_API_VERSION;
39
+ }
40
+ /** Base de URL da Graph API. Isolada para que nenhum chamador a monte na mão. */
41
+ export function graphUrl(path, env) {
42
+ const clean = path.startsWith('/') ? path.slice(1) : path;
43
+ return `https://graph.facebook.com/${graphApiVersion(env)}/${clean}`;
44
+ }
45
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/communication/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAC;AAEjD,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,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,yBAAyB,CAAC;AAC5E,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,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,33 @@
1
+ import type { CommunicationContext } from './context.js';
2
+ import type { ChannelKey } from './channel.js';
3
+ /**
4
+ * Chave de idempotência de envio.
5
+ *
6
+ * **Composta pelo motor, nunca recebida pronta do consumidor.** A régua da SC
7
+ * hoje monta `receivableId:stepKey` e entrega ao canal. Dentro da SC isso não
8
+ * colide, porque o id é único e o índice `(tenant, receivable, step_key)`
9
+ * protege o agendamento. Mas num motor que atende vários produtos a chave deixa
10
+ * de ser autodescritiva: dois produtos com esquemas de id diferentes passam a
11
+ * disputar o mesmo espaço de chaves, e a colisão não falha — ela SUPRIME um
12
+ * envio legítimo, em silêncio, no produto que chegou depois.
13
+ *
14
+ * Por isso o consumidor informa apenas o que identifica o assunto no MUNDO DELE
15
+ * (`subjectRef`), e o motor prefixa o que identifica o mundo: tenant, produto,
16
+ * marca, canal, evento e versão de template.
17
+ */
18
+ export interface IdempotencyInput {
19
+ ctx: CommunicationContext;
20
+ channel: ChannelKey;
21
+ /** Evento de negócio: `billing.dunning.d3`, `subscription.payment_due`. */
22
+ eventType: string;
23
+ /** Referência do assunto no domínio do consumidor: recebível, fatura, pedido. */
24
+ subjectRef: string;
25
+ /**
26
+ * Versão do template. Entra na chave porque reenviar o MESMO aviso com um
27
+ * texto corrigido é um envio novo e legítimo — sem isso, corrigir um template
28
+ * silenciaria a etapa para todo mundo que já a recebeu na versão anterior.
29
+ */
30
+ templateVersion?: string;
31
+ }
32
+ export declare function buildIdempotencyKey(input: IdempotencyInput): string;
33
+ //# sourceMappingURL=idempotency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idempotency.d.ts","sourceRoot":"","sources":["../../src/communication/idempotency.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,oBAAoB,CAAC;IAC1B,OAAO,EAAE,UAAU,CAAC;IACpB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAYD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAWnE"}