@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,200 @@
1
+ import type { Tx } from '../db/client.js';
2
+ import type { RecipientClearanceStore } from '../communication/clearance.js';
3
+ import { type CollectionPolicy, type CollectionStep } from './policy.js';
4
+ import type { TenantBranding } from './branding.js';
5
+ import type { PaymentBlock } from './payment-block.js';
6
+ import { type ChannelAccountStore, type ChannelPolicy, type ChannelRegistry as CommChannelRegistry, type CommunicationAuditSink, type ConsentPolicy, type ConsentStore, type DispatchClaimStore, type SenderOrigin, type TemplateStore } from '../communication/index.js';
7
+ import { type CollectionActionRecord } from './repository.js';
8
+ export interface PlanReport {
9
+ examined: number;
10
+ scheduled: number;
11
+ skippedAlreadyHandled: number;
12
+ canceledByPayment: number;
13
+ canceledByCancellation: number;
14
+ }
15
+ /**
16
+ * Planeja: cancela o que não deve mais sair e agenda o que a régua manda.
17
+ *
18
+ * A ordem importa. Cancelar ANTES de agendar evita a janela em que um recebível
19
+ * pago recebe uma etapa nova no mesmo ciclo.
20
+ */
21
+ export declare function planCollections(tx: Tx, today: string, policyOverride?: CollectionPolicy): Promise<PlanReport>;
22
+ export interface ExecuteReport {
23
+ attempted: number;
24
+ sent: number;
25
+ failedTemporary: number;
26
+ failedPermanent: number;
27
+ skippedNoLongerDue: number;
28
+ skippedNoChannel: number;
29
+ escalated: number;
30
+ }
31
+ export interface ExecuteContext {
32
+ /** Identidade visual e dados de contato do escritório. */
33
+ branding: TenantBranding;
34
+ /** Resolve o destinatário lógico do cliente para o canal. */
35
+ resolveRecipient: (clientId: string, channel: string) => Promise<string | null>;
36
+ /** Descrição do recebível, para identificar a dívida sem inventar dado. */
37
+ describeReceivable?: (receivableId: string) => Promise<string | null>;
38
+ /**
39
+ * Como pagar este recebível, se já houver cobrança emitida.
40
+ *
41
+ * Opcional, e resolvido no momento do envio — não no agendamento. Entre um e
42
+ * outro passam dias: a cobrança pode ter sido criada depois, cancelada, ou o
43
+ * escritório pode ter conectado a conta de pagamento no meio. Congelar o link
44
+ * no agendamento mandaria o cliente para uma cobrança que não existe mais.
45
+ */
46
+ resolvePayment?: (receivableId: string) => Promise<PaymentBlock | null>;
47
+ /**
48
+ * Entrega pelo motor compartilhado do ecossistema. **Obrigatória.**
49
+ *
50
+ * Era opcional, e o opcional era o defeito. Enquanto este campo pôde faltar,
51
+ * havia um segundo caminho de envio — `channels` legado, HTML pronto, e-mail
52
+ * direto pelo Resend — com uma idempotência PRÓPRIA (`receivableId:stepKey`,
53
+ * que não era gravada em lugar nenhum). O cron usava um caminho, a rota
54
+ * manual usava o outro, e a proteção de cada um era invisível para o outro: os
55
+ * dois podiam enviar a mesma etapa no mesmo minuto.
56
+ *
57
+ * Sem `?`, o compilador recusa qualquer chamador que tente enviar por fora.
58
+ * A montagem canônica está em `communication-runtime.ts`, e ela é a única.
59
+ */
60
+ communication: CollectionCommunication;
61
+ }
62
+ /**
63
+ * O que a régua precisa fornecer para falar com o motor compartilhado.
64
+ *
65
+ * A SC não monta o `CommunicationIntent` à mão em cada etapa: ela declara uma
66
+ * vez de onde vêm contas, templates e consentimento, e o adaptador abaixo faz a
67
+ * tradução — que é o que impede o vocabulário de cobrança de vazar para o motor
68
+ * e o vocabulário do motor de vazar para a régua.
69
+ */
70
+ export interface CollectionCommunication {
71
+ tenantId: string;
72
+ /** Marca do escritório. Distinta do tenant: um tenant pode operar sob mais de uma. */
73
+ brand: string;
74
+ channels: CommChannelRegistry;
75
+ accounts: ChannelAccountStore;
76
+ templates: TemplateStore;
77
+ consent: ConsentStore;
78
+ consentPolicy?: ConsentPolicy;
79
+ /**
80
+ * Liberação do destinatário pelo escritório. **Obrigatória.**
81
+ *
82
+ * Distinta de `consent`: aquilo é a vontade do cliente, isto é a conferência
83
+ * de quem envia. Sem `?` porque a régua é justamente o caminho automático
84
+ * que dispara sobre a carteira inteira — o consumidor que a esquecesse
85
+ * ganharia de volta o comportamento que esta barreira existe para impedir.
86
+ */
87
+ clearance: RecipientClearanceStore;
88
+ /**
89
+ * Canais a tentar, por etapa. Política do ESCRITÓRIO — o motor só executa.
90
+ *
91
+ * Recebe a etapa inteira, e não só a chave, para que a régua possa decidir por
92
+ * tom (uma etapa `reminder` pode preferir WhatsApp; uma `overdue_collection`,
93
+ * e-mail com trilha). Sem isto, o canal declarado no passo é o único usado.
94
+ */
95
+ policyFor?: (step: CollectionStep) => ChannelPolicy;
96
+ /**
97
+ * Reserva atômica do direito de enviar. Substitui `alreadySent`.
98
+ *
99
+ * A consulta antiga respondia "já enviei?" e devolvia um booleano — e entre a
100
+ * resposta e o envio havia uma janela em que a resposta continuava valendo
101
+ * para todo mundo que perguntasse. A reserva não responde: ela DECIDE, uma vez
102
+ * só, e só um chamador ganha. Ver `communication/claim.ts`.
103
+ */
104
+ claims: DispatchClaimStore;
105
+ /** Trilha estruturada do motor. Ver `communication/audit.ts`. */
106
+ audit: CommunicationAuditSink;
107
+ /**
108
+ * De onde veio o remetente de e-mail resolvido para este tenant.
109
+ *
110
+ * Vai para a trilha do ciclo. "Saiu pelo remetente da plataforma" tem de ser
111
+ * uma coisa que o escritório consegue ver, e não uma linha de código.
112
+ */
113
+ emailSenderOrigin?: SenderOrigin | null;
114
+ /**
115
+ * De onde veio a CREDENCIAL de e-mail — distinto do remetente.
116
+ *
117
+ * `tenant-vault`: o escritório tem conta própria do provedor no cofre.
118
+ * `platform-fallback`: está mandando pela conta compartilhada da plataforma —
119
+ * um bloqueio ou uma queda de reputação ali atinge todos os escritórios que
120
+ * dependem dela ao mesmo tempo.
121
+ *
122
+ * A distinção existe para que essa dependência seja MEDÍVEL. Enquanto era só
123
+ * um `credentialRef` fixo no fallback, "quantos escritórios ainda dividem a
124
+ * mesma conta?" não tinha resposta sem ler código.
125
+ */
126
+ emailCredentialOrigin?: 'tenant-vault' | 'platform-fallback' | null;
127
+ /** Percorre tudo e relata, sem chamar adapter nenhum e sem reservar chave. */
128
+ dryRun?: boolean;
129
+ }
130
+ /**
131
+ * Executa as ações vencidas.
132
+ *
133
+ * **Revalida o estado no momento do envio.** O agendamento pode ter dias; entre
134
+ * ele e agora o cliente pode ter pago, o recebível pode ter sido cancelado, ou
135
+ * uma baixa parcial pode ter mudado o valor. Confiar no que foi agendado é como
136
+ * o motor manda cobrança de dívida quitada.
137
+ */
138
+ export declare function executeCollections(tx: Tx, ctx: ExecuteContext, today: string, policyOverride?: CollectionPolicy): Promise<ExecuteReport>;
139
+ export interface CollectionCycleReport extends PlanReport, ExecuteReport {
140
+ }
141
+ /** Ciclo completo — o que o job roda. */
142
+ export declare function runCollectionCycle(tx: Tx, ctx: ExecuteContext, today: string): Promise<CollectionCycleReport>;
143
+ export type { CollectionActionRecord };
144
+ /**
145
+ * Desliga a régua de um recebível que acabou de ser quitado.
146
+ *
147
+ * Existe porque a baixa passou a ter dois caminhos: o job diário, que varre
148
+ * todos os recebíveis, e o webhook, que sabe exatamente qual foi pago. Sem esta
149
+ * função o webhook baixaria o valor e deixaria a comunicação agendada — o
150
+ * cliente pagaria e receberia a cobrança de atraso mesmo assim, que é a pior
151
+ * falha possível numa régua automática.
152
+ *
153
+ * Só o que ainda não saiu é cancelado. Mensagem enviada é histórico.
154
+ */
155
+ export declare function cancelDunningForSettled(tx: Tx, receivableId: string): Promise<number>;
156
+ /**
157
+ * Religa a régua de um recebível cuja liquidação foi anulada.
158
+ *
159
+ * Sem isto, corrigir o saldo não bastaria: `planCollections` não reagenda um
160
+ * passo cujo `step_key` já existe na tabela — a idempotência olha a EXISTÊNCIA
161
+ * da linha, não o status dela. Os passos desligados pela baixa ficariam
162
+ * `canceled` para sempre, e o cliente voltaria a dever sem que ninguém jamais o
163
+ * lembrasse. O saldo estaria certo e a cobrança nunca aconteceria.
164
+ *
165
+ * Reabre **somente** o que foi fechado POR PAGAMENTO. Um passo cancelado porque
166
+ * o recebível foi cancelado, ou já enviado, é história e permanece intocado —
167
+ * reabrir tudo faria a régua reenviar mensagem que o cliente já recebeu.
168
+ */
169
+ /**
170
+ * Religa etapas fechadas por FALHA DE INFRAESTRUTURA, nunca por decisão humana.
171
+ *
172
+ * Existe para o resíduo do incidente C1-PROV-R1B-C2: etapas que o motor fechou
173
+ * como `escalated` porque o canal ficou indisponível (cofre de credenciais fora
174
+ * do ar). A correção em `sendViaSharedEngine` impede que isso volte a
175
+ * acontecer, mas não desfaz o que já foi fechado — e nada mais no domínio
176
+ * consegue, porque `planCollections` não reagenda um `step_key` existente e
177
+ * `listActions` só enxerga `scheduled`.
178
+ *
179
+ * As guardas são deliberadamente estreitas, e cada uma exclui uma classe:
180
+ *
181
+ * - `closed_reason = 'escalated'` — deixa de fora `no_contact_data`,
182
+ * `opted_out`, `consent_unknown`, `paid`, `canceled`, `rule_disabled` e
183
+ * `permanent_failure`. Todas são decisão de negócio e permanecem terminais.
184
+ * - `attempts = 0` — `markEscalated` NUNCA incrementa `attempts`, enquanto
185
+ * `markSent` e `markFailed` sempre incrementam. Zero prova que nenhum adapter
186
+ * chegou a tentar.
187
+ * - `provider_ref IS NULL` e `sent_at IS NULL` — prova que nada saiu. Uma
188
+ * mensagem entregue jamais é reaberta, e o cliente nunca recebe duplicata.
189
+ *
190
+ * O `step_key` é obrigatório: recuperação é pontual e auditável, nunca
191
+ * "reabra tudo deste recebível".
192
+ *
193
+ * O histórico da falha NÃO é apagado. `communication_event`
194
+ * (`dispatch_skipped` / `no_credential`) e `communication_dispatch`
195
+ * (`failed_retryable`) continuam intactos — esta função move apenas o estado da
196
+ * régua, e `last_error` registra a origem da reabertura.
197
+ */
198
+ export declare function rearmDunningAfterInfraFailure(tx: Tx, receivableId: string, stepKey: string, incidentRef: string): Promise<number>;
199
+ export declare function rearmDunningAfterReversal(tx: Tx, receivableId: string): Promise<number>;
200
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/collection/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,427 @@
1
+ import { getReceivable, listReceivables, } from '../billing/ar-repository.js';
2
+ import { dueSteps } from './policy.js';
3
+ import { renderCopy } from './copy.js';
4
+ import {} from './email-layout.js';
5
+ import { dispatch, } from '../communication/index.js';
6
+ import { buildCollectionContent, collectionContext, collectionEventType, collectionVariables, } from './communication-bridge.js';
7
+ import { cancelPendingActions, getCollectionPolicy, handledStepKeys, listActions, markEscalated, markFailed, markSent, scheduleAction, } from './repository.js';
8
+ /**
9
+ * Motor de cobrança: RECEIVABLE → EVENT → RULE → ACTION → DELIVERY → STOP.
10
+ *
11
+ * Dois passos separados de propósito:
12
+ *
13
+ * `planCollections` decide o que DEVE acontecer (puro em relação a I/O de
14
+ * provider — só toca o banco)
15
+ * `executeCollections` faz acontecer
16
+ *
17
+ * Separar permite rodar o planejamento em dry-run e mostrar ao escritório o que
18
+ * sairia, antes de qualquer mensagem existir. Numa régua de cobrança isso não é
19
+ * luxo: a primeira execução contra uma carteira real precisa ser inspecionável.
20
+ */
21
+ const MAX_ATTEMPTS = 3;
22
+ /** Um recebível ainda merece cobrança? */
23
+ function isCollectible(r) {
24
+ if (r.status === 'paid' || r.status === 'canceled')
25
+ return false;
26
+ if (r.status === 'renegotiated' || r.status === 'written_off')
27
+ return false;
28
+ // Saldo zero sem status `paid` acontece quando a soma dos pagamentos fecha o
29
+ // valor mas o status ainda não foi reavaliado. Cobrar aqui seria pedir dinheiro
30
+ // de quem já pagou — o pior erro operacional deste motor.
31
+ if (r.outstandingAmount <= 0)
32
+ return false;
33
+ if (!r.dueDate)
34
+ return false;
35
+ return true;
36
+ }
37
+ /**
38
+ * Planeja: cancela o que não deve mais sair e agenda o que a régua manda.
39
+ *
40
+ * A ordem importa. Cancelar ANTES de agendar evita a janela em que um recebível
41
+ * pago recebe uma etapa nova no mesmo ciclo.
42
+ */
43
+ export async function planCollections(tx, today, policyOverride) {
44
+ const policy = policyOverride ?? (await getCollectionPolicy(tx));
45
+ const report = {
46
+ examined: 0,
47
+ scheduled: 0,
48
+ skippedAlreadyHandled: 0,
49
+ canceledByPayment: 0,
50
+ canceledByCancellation: 0,
51
+ };
52
+ // Tudo que não está cancelado — inclusive pago, porque é justamente o pago que
53
+ // precisa ter a régua interrompida.
54
+ const { items } = await listReceivables(tx, { limit: 200 });
55
+ for (const r of items) {
56
+ report.examined += 1;
57
+ if (r.status === 'paid' || r.outstandingAmount <= 0) {
58
+ report.canceledByPayment += await cancelPendingActions(tx, r.id, 'paid');
59
+ continue;
60
+ }
61
+ if (r.status === 'canceled') {
62
+ report.canceledByCancellation += await cancelPendingActions(tx, r.id, 'canceled');
63
+ continue;
64
+ }
65
+ if (!isCollectible(r))
66
+ continue;
67
+ const handled = await handledStepKeys(tx, r.id);
68
+ const due = dueSteps(policy, r.dueDate, today, handled);
69
+ // Quantas etapas a régua já cobriu para este recebível — é o que explica
70
+ // "por que não agendei nada" num ciclo que não criou ação nenhuma.
71
+ report.skippedAlreadyHandled += handled.size;
72
+ for (const { step, scheduledFor } of due) {
73
+ const action = await scheduleAction(tx, {
74
+ receivableId: r.id,
75
+ stepKey: step.key,
76
+ channel: step.channel,
77
+ template: step.templateKey,
78
+ scheduledFor,
79
+ });
80
+ if (action)
81
+ report.scheduled += 1;
82
+ }
83
+ }
84
+ return report;
85
+ }
86
+ /**
87
+ * Monta a cópia da etapa.
88
+ *
89
+ * Extraída para que os dois caminhos de entrega — legado e compartilhado — usem
90
+ * exatamente o mesmo texto. Duas montagens em paralelo divergiriam na primeira
91
+ * correção feita só de um lado, e o defeito apareceria como "o WhatsApp diz uma
92
+ * coisa e o e-mail diz outra" para o mesmo cliente, no mesmo dia.
93
+ */
94
+ async function buildStepCopy(ctx, receivableId, current, step) {
95
+ const description = ctx.describeReceivable ? await ctx.describeReceivable(receivableId) : null;
96
+ const payment = (await ctx.resolvePayment?.(receivableId)) ?? undefined;
97
+ const { subject, block } = renderCopy(step.tone, {
98
+ clientName: current.clientName ?? 'cliente',
99
+ branding: ctx.branding,
100
+ // Saldo de AGORA, não o valor original: depois de uma baixa parcial,
101
+ // anunciar o valor cheio é cobrar duas vezes o que já entrou.
102
+ outstandingAmount: current.outstandingAmount,
103
+ originalAmount: current.amount,
104
+ hasPartialPayment: current.amountPaid > 0,
105
+ dueDate: current.dueDate,
106
+ competence: current.competence,
107
+ description,
108
+ daysOverdue: current.daysOverdue,
109
+ payment,
110
+ });
111
+ return { subject, block, payment };
112
+ }
113
+ const NO_ATTEMPT = {
114
+ sent: 0,
115
+ escalated: 0,
116
+ skippedNoChannel: 0,
117
+ failedPermanent: 0,
118
+ failedTemporary: 0,
119
+ };
120
+ /**
121
+ * Traduz uma etapa da régua em intenção de comunicação e assenta o desfecho.
122
+ *
123
+ * Tudo que é específico da SC (evento, variáveis, cópia) é montado aqui e
124
+ * entregue pronto ao motor; tudo que é específico de canal (identidade,
125
+ * consentimento, template, provider) fica lá. Nenhum dos dois lados precisa
126
+ * conhecer o vocabulário do outro.
127
+ */
128
+ async function sendViaSharedEngine(tx, ctx, comm, action, current, step) {
129
+ const receivableId = action.receivableId;
130
+ const copy = await buildStepCopy(ctx, receivableId, current, step);
131
+ const result = await dispatch({
132
+ ctx: collectionContext(comm.tenantId, comm.brand),
133
+ eventType: collectionEventType(step.key),
134
+ subjectRef: receivableId,
135
+ // A permissão pertence à PESSOA, não ao número: a referência é o cliente.
136
+ recipientRef: current.clientId,
137
+ variables: collectionVariables({
138
+ clientName: current.clientName ?? 'cliente',
139
+ officeName: ctx.branding.officeName,
140
+ outstandingAmount: current.outstandingAmount,
141
+ dueDate: current.dueDate,
142
+ reference: current.competence ?? null,
143
+ paymentUrl: copy.payment?.url,
144
+ }),
145
+ // Sem política declarada, o canal do passo é o único tentado — que é
146
+ // exatamente o comportamento da régua hoje. Ligar fallback é decisão do
147
+ // escritório, nunca default do motor.
148
+ policy: comm.policyFor?.(step) ?? { order: [step.channel] },
149
+ }, {
150
+ channels: comm.channels,
151
+ accounts: comm.accounts,
152
+ templates: comm.templates,
153
+ consent: comm.consent,
154
+ consentPolicy: comm.consentPolicy,
155
+ clearance: comm.clearance,
156
+ resolveRecipient: (ref, channel) => ctx.resolveRecipient(ref, channel),
157
+ buildContent: buildCollectionContent({
158
+ branding: ctx.branding,
159
+ subject: copy.subject,
160
+ block: copy.block,
161
+ }),
162
+ claims: comm.claims,
163
+ audit: comm.audit,
164
+ }, { dryRun: comm.dryRun });
165
+ // Ensaio não escreve. Um dry-run que marca a ação como enviada não é ensaio —
166
+ // é a execução real com o envio removido, e cala a etapa para sempre.
167
+ if (comm.dryRun) {
168
+ return { ...NO_ATTEMPT, sent: result.delivered ? 1 : 0, notAttempted: true };
169
+ }
170
+ if (result.invalidContext) {
171
+ // Defeito de integração, não estado do cliente. Escala para humano em vez de
172
+ // fechar a etapa: ninguém deve descobrir isso só quando a dívida prescrever.
173
+ await markEscalated(tx, action.id);
174
+ return { ...NO_ATTEMPT, escalated: 1, skippedNoChannel: 1, notAttempted: true };
175
+ }
176
+ if (result.delivered) {
177
+ const recipient = await ctx.resolveRecipient(current.clientId, result.delivered);
178
+ await markSent(tx, action.id, {
179
+ recipientRef: recipient ?? '',
180
+ amount: current.outstandingAmount,
181
+ providerRef: result.providerRef,
182
+ // A reserva já é a proteção contra reenvio; esta coluna é a JUNÇÃO entre
183
+ // a etapa da régua e a linha de `communication_dispatch`. Sem ela, ver "o
184
+ // que aconteceu com esta cobrança" exigiria adivinhar a chave a partir de
185
+ // sete campos.
186
+ idempotencyKey: result.idempotencyKey,
187
+ });
188
+ return { ...NO_ATTEMPT, sent: 1 };
189
+ }
190
+ const permanentAttempt = result.attempts.find((a) => a.outcome === 'permanent');
191
+ /*
192
+ * `unavailable` entra aqui junto com `temporary`, e a distinção importa.
193
+ *
194
+ * Canal indisponível é falha de INFRAESTRUTURA — cofre fora do ar, credencial
195
+ * ainda não propagada, canal não registrado. Não é uma decisão sobre o
196
+ * cliente, e por isso não pode virar `escalated`, que no domínio significa
197
+ * "sai da automação e vai para a fila humana": a etapa fecharia para sempre,
198
+ * porque `planCollections` não reagenda um `step_key` que já existe e
199
+ * `listActions` só enxerga `scheduled`. Foi o que aconteceu no incidente
200
+ * C1-PROV-R1B-C2 — a infra voltou e as quatro cobranças continuaram mortas.
201
+ *
202
+ * Tratado como temporário, `markFailed` devolve a etapa a `scheduled` e o
203
+ * ciclo seguinte tenta de novo. O teto é o mesmo `MAX_ATTEMPTS` das demais
204
+ * falhas: uma credencial ausente de forma PERMANENTE consome as três
205
+ * tentativas e assenta como `permanent_failure`, em vez de reagendar em
206
+ * silêncio para sempre.
207
+ */
208
+ const temporaryAttempt = result.attempts.find((a) => a.outcome === 'temporary' || a.outcome === 'unavailable');
209
+ if (permanentAttempt || temporaryAttempt) {
210
+ const permanent = Boolean(permanentAttempt) || action.attempts + 1 >= MAX_ATTEMPTS;
211
+ await markFailed(tx, action.id, {
212
+ error: (permanentAttempt ?? temporaryAttempt).detail ?? 'falha de entrega',
213
+ permanent,
214
+ });
215
+ return permanent
216
+ ? { ...NO_ATTEMPT, failedPermanent: 1 }
217
+ : { ...NO_ATTEMPT, failedTemporary: 1 };
218
+ }
219
+ // Reserva negada: a etapa fica exatamente como está. Não é falha, não é
220
+ // escalonamento, e não gasta tentativa — outra execução já entregou, ou está
221
+ // entregando agora, e é ela quem vai assentar o desfecho.
222
+ if (claimRefusedIn(result.attempts)) {
223
+ return { ...NO_ATTEMPT, notAttempted: true };
224
+ }
225
+ // Aguardando conferência do escritório: a etapa fica INTACTA e volta no
226
+ // próximo ciclo.
227
+ //
228
+ // Escalar aqui seria o defeito, e o teste que o encontrou é
229
+ // `collection-clearance-gate`: `markEscalated` fecha a etapa, e
230
+ // `planCollections` não reagenda um `step_key` que já existe. A cobrança
231
+ // daquele dia morreria, e liberar o cliente depois não a recuperaria — a
232
+ // barreira teria virado perda silenciosa em vez de espera.
233
+ //
234
+ // Tratado como a reserva negada, e pela mesma lógica: nada aconteceu de
235
+ // errado, só ainda não é hora. Também não gasta tentativa — três dias sem
236
+ // alguém clicar "conferir" matariam a etapa por decurso de prazo.
237
+ //
238
+ // O escritório não fica sem saber: o pulo tem nome na trilha
239
+ // (`recipient_not_confirmed`), o painel conta os clientes com e-mail
240
+ // aguardando liberação, e o checklist de go-live tem o gate.
241
+ if (result.attempts.some((a) => a.skipped === 'recipient_not_confirmed')) {
242
+ return { ...NO_ATTEMPT, notAttempted: true };
243
+ }
244
+ // Nada foi enviado e nenhum adapter falhou: todas as portas recusaram antes.
245
+ // O motivo é o que diz ao escritório o que fazer — e cada um exige uma ação
246
+ // diferente, então nenhum deles pode virar um "não enviado" genérico.
247
+ const reason = closeReasonFor(result.attempts);
248
+ await markEscalated(tx, action.id, reason);
249
+ return { ...NO_ATTEMPT, escalated: 1, skippedNoChannel: 1, notAttempted: true };
250
+ }
251
+ function closeReasonFor(attempts) {
252
+ const skips = attempts.map((a) => a.skipped);
253
+ // Opt-out é o mais forte: se QUALQUER canal foi recusado por vontade do
254
+ // cliente, é isso que o escritório precisa ver — não "faltou cadastro".
255
+ if (skips.includes('opted_out'))
256
+ return 'opted_out';
257
+ if (skips.includes('consent_unknown'))
258
+ return 'consent_unknown';
259
+ if (skips.includes('no_recipient') || skips.includes('invalid_recipient')) {
260
+ return 'no_contact_data';
261
+ }
262
+ return 'escalated';
263
+ }
264
+ /**
265
+ * A etapa não saiu porque a RESERVA foi negada — ou seja, o sistema funcionou.
266
+ *
267
+ * Precisa de tratamento próprio: `already_sent` e `claim_in_flight` não são
268
+ * falha, não são cadastro e não são escalonamento. Marcar a ação como escalada
269
+ * mandaria um humano investigar um envio que ou já aconteceu, ou está
270
+ * acontecendo — e encheria a fila operacional de ruído justamente quando a
271
+ * proteção está trabalhando.
272
+ */
273
+ function claimRefusedIn(attempts) {
274
+ return attempts.some((a) => a.skipped === 'already_sent' || a.skipped === 'claim_in_flight');
275
+ }
276
+ /**
277
+ * Executa as ações vencidas.
278
+ *
279
+ * **Revalida o estado no momento do envio.** O agendamento pode ter dias; entre
280
+ * ele e agora o cliente pode ter pago, o recebível pode ter sido cancelado, ou
281
+ * uma baixa parcial pode ter mudado o valor. Confiar no que foi agendado é como
282
+ * o motor manda cobrança de dívida quitada.
283
+ */
284
+ export async function executeCollections(tx, ctx, today, policyOverride) {
285
+ const policy = policyOverride ?? (await getCollectionPolicy(tx));
286
+ const report = {
287
+ attempted: 0,
288
+ sent: 0,
289
+ failedTemporary: 0,
290
+ failedPermanent: 0,
291
+ skippedNoLongerDue: 0,
292
+ skippedNoChannel: 0,
293
+ escalated: 0,
294
+ };
295
+ const pending = await listActions(tx, { dueOnly: true, dueUntil: today, limit: 200 });
296
+ for (const action of pending) {
297
+ if (!action.receivableId)
298
+ continue;
299
+ // Estado atual, não o do agendamento. Busca pelo id — filtrar por cliente e
300
+ // procurar na página seria correto só enquanto a página coubesse.
301
+ const current = await getReceivable(tx, action.receivableId).catch(() => null);
302
+ if (!current || !isCollectible(current)) {
303
+ const reason = current?.status === 'canceled' ? 'canceled' : 'paid';
304
+ await cancelPendingActions(tx, action.receivableId, reason);
305
+ report.skippedNoLongerDue += 1;
306
+ continue;
307
+ }
308
+ const step = policy.steps.find((s) => s.key === action.stepKey);
309
+ if (!step || step.active === false) {
310
+ await cancelPendingActions(tx, action.receivableId, 'rule_disabled');
311
+ report.skippedNoLongerDue += 1;
312
+ continue;
313
+ }
314
+ // Escalonamento é evento interno: fecha a ação e entra na fila humana, sem
315
+ // mensagem ao cliente.
316
+ if (step.tone === 'human_escalation') {
317
+ await markEscalated(tx, action.id);
318
+ report.escalated += 1;
319
+ continue;
320
+ }
321
+ // Caminho ÚNICO. Não há alternativa: `ctx.communication` é obrigatório, e o
322
+ // registry legado de canais saiu do contexto. Enquanto existiam dois, o
323
+ // cron e a rota manual enviavam por vias com idempotências diferentes que
324
+ // não se enxergavam — `LEGACY_SHARED_COEXISTENCE=BLOCKING` na certificação.
325
+ report.attempted += 1;
326
+ const applied = await sendViaSharedEngine(tx, ctx, ctx.communication, action, current, step);
327
+ report.sent += applied.sent;
328
+ report.escalated += applied.escalated;
329
+ report.skippedNoChannel += applied.skippedNoChannel;
330
+ report.failedPermanent += applied.failedPermanent;
331
+ report.failedTemporary += applied.failedTemporary;
332
+ if (applied.notAttempted)
333
+ report.attempted -= 1;
334
+ }
335
+ return report;
336
+ }
337
+ /** Ciclo completo — o que o job roda. */
338
+ export async function runCollectionCycle(tx, ctx, today) {
339
+ const policy = await getCollectionPolicy(tx);
340
+ const plan = await planCollections(tx, today, policy);
341
+ const exec = await executeCollections(tx, ctx, today, policy);
342
+ return { ...plan, ...exec };
343
+ }
344
+ /**
345
+ * Desliga a régua de um recebível que acabou de ser quitado.
346
+ *
347
+ * Existe porque a baixa passou a ter dois caminhos: o job diário, que varre
348
+ * todos os recebíveis, e o webhook, que sabe exatamente qual foi pago. Sem esta
349
+ * função o webhook baixaria o valor e deixaria a comunicação agendada — o
350
+ * cliente pagaria e receberia a cobrança de atraso mesmo assim, que é a pior
351
+ * falha possível numa régua automática.
352
+ *
353
+ * Só o que ainda não saiu é cancelado. Mensagem enviada é histórico.
354
+ */
355
+ export async function cancelDunningForSettled(tx, receivableId) {
356
+ return cancelPendingActions(tx, receivableId, 'paid');
357
+ }
358
+ /**
359
+ * Religa a régua de um recebível cuja liquidação foi anulada.
360
+ *
361
+ * Sem isto, corrigir o saldo não bastaria: `planCollections` não reagenda um
362
+ * passo cujo `step_key` já existe na tabela — a idempotência olha a EXISTÊNCIA
363
+ * da linha, não o status dela. Os passos desligados pela baixa ficariam
364
+ * `canceled` para sempre, e o cliente voltaria a dever sem que ninguém jamais o
365
+ * lembrasse. O saldo estaria certo e a cobrança nunca aconteceria.
366
+ *
367
+ * Reabre **somente** o que foi fechado POR PAGAMENTO. Um passo cancelado porque
368
+ * o recebível foi cancelado, ou já enviado, é história e permanece intocado —
369
+ * reabrir tudo faria a régua reenviar mensagem que o cliente já recebeu.
370
+ */
371
+ /**
372
+ * Religa etapas fechadas por FALHA DE INFRAESTRUTURA, nunca por decisão humana.
373
+ *
374
+ * Existe para o resíduo do incidente C1-PROV-R1B-C2: etapas que o motor fechou
375
+ * como `escalated` porque o canal ficou indisponível (cofre de credenciais fora
376
+ * do ar). A correção em `sendViaSharedEngine` impede que isso volte a
377
+ * acontecer, mas não desfaz o que já foi fechado — e nada mais no domínio
378
+ * consegue, porque `planCollections` não reagenda um `step_key` existente e
379
+ * `listActions` só enxerga `scheduled`.
380
+ *
381
+ * As guardas são deliberadamente estreitas, e cada uma exclui uma classe:
382
+ *
383
+ * - `closed_reason = 'escalated'` — deixa de fora `no_contact_data`,
384
+ * `opted_out`, `consent_unknown`, `paid`, `canceled`, `rule_disabled` e
385
+ * `permanent_failure`. Todas são decisão de negócio e permanecem terminais.
386
+ * - `attempts = 0` — `markEscalated` NUNCA incrementa `attempts`, enquanto
387
+ * `markSent` e `markFailed` sempre incrementam. Zero prova que nenhum adapter
388
+ * chegou a tentar.
389
+ * - `provider_ref IS NULL` e `sent_at IS NULL` — prova que nada saiu. Uma
390
+ * mensagem entregue jamais é reaberta, e o cliente nunca recebe duplicata.
391
+ *
392
+ * O `step_key` é obrigatório: recuperação é pontual e auditável, nunca
393
+ * "reabra tudo deste recebível".
394
+ *
395
+ * O histórico da falha NÃO é apagado. `communication_event`
396
+ * (`dispatch_skipped` / `no_credential`) e `communication_dispatch`
397
+ * (`failed_retryable`) continuam intactos — esta função move apenas o estado da
398
+ * régua, e `last_error` registra a origem da reabertura.
399
+ */
400
+ export async function rearmDunningAfterInfraFailure(tx, receivableId, stepKey, incidentRef) {
401
+ const rows = await tx `
402
+ UPDATE dunning_event
403
+ SET status = 'scheduled', closed_at = NULL, closed_reason = NULL,
404
+ last_error = ${`infra_failure_recovery:${incidentRef}`.slice(0, 300)}
405
+ WHERE receivable_id = ${receivableId}
406
+ AND step_key = ${stepKey}
407
+ AND status = 'escalated'
408
+ AND closed_reason = 'escalated'
409
+ AND attempts = 0
410
+ AND provider_ref IS NULL
411
+ AND sent_at IS NULL
412
+ RETURNING id
413
+ `;
414
+ return rows.length;
415
+ }
416
+ export async function rearmDunningAfterReversal(tx, receivableId) {
417
+ const rows = await tx `
418
+ UPDATE dunning_event
419
+ SET status = 'scheduled', closed_at = NULL, closed_reason = NULL
420
+ WHERE receivable_id = ${receivableId}
421
+ AND status = 'canceled'
422
+ AND closed_reason = 'paid'
423
+ RETURNING id
424
+ `;
425
+ return rows.length;
426
+ }
427
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/collection/engine.ts"],"names":[],"mappings":"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"}