@baruk/core 0.4.2 → 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 (465) hide show
  1. package/.baruk-provenance.json +4 -4
  2. package/CHANGELOG.md +42 -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/service.d.ts +21 -0
  8. package/dist/auth/service.d.ts.map +1 -1
  9. package/dist/auth/service.js +46 -1
  10. package/dist/auth/service.js.map +1 -1
  11. package/dist/billing/ar-repository.d.ts +41 -1
  12. package/dist/billing/ar-repository.d.ts.map +1 -1
  13. package/dist/billing/ar-repository.js +82 -6
  14. package/dist/billing/ar-repository.js.map +1 -1
  15. package/dist/billing/provider-account.d.ts +38 -0
  16. package/dist/billing/provider-account.d.ts.map +1 -1
  17. package/dist/billing/provider-account.js +58 -2
  18. package/dist/billing/provider-account.js.map +1 -1
  19. package/dist/billing/repository.d.ts +44 -0
  20. package/dist/billing/repository.d.ts.map +1 -1
  21. package/dist/billing/repository.js +49 -5
  22. package/dist/billing/repository.js.map +1 -1
  23. package/dist/cjs/audit/repository.js +41 -7
  24. package/dist/cjs/audit/repository.js.map +1 -1
  25. package/dist/cjs/auth/service.js +46 -1
  26. package/dist/cjs/auth/service.js.map +1 -1
  27. package/dist/cjs/billing/ar-repository.js +82 -6
  28. package/dist/cjs/billing/ar-repository.js.map +1 -1
  29. package/dist/cjs/billing/provider-account.js +60 -1
  30. package/dist/cjs/billing/provider-account.js.map +1 -1
  31. package/dist/cjs/billing/repository.js +51 -5
  32. package/dist/cjs/billing/repository.js.map +1 -1
  33. package/dist/cjs/clients/ibge.js +103 -0
  34. package/dist/cjs/clients/ibge.js.map +1 -0
  35. package/dist/cjs/clients/repository.js +186 -9
  36. package/dist/cjs/clients/repository.js.map +1 -1
  37. package/dist/cjs/collection/branding.js +190 -0
  38. package/dist/cjs/collection/branding.js.map +1 -1
  39. package/dist/cjs/collection/clearance-store.js +74 -0
  40. package/dist/cjs/collection/clearance-store.js.map +1 -0
  41. package/dist/cjs/collection/communication-runtime.js +65 -2
  42. package/dist/cjs/collection/communication-runtime.js.map +1 -1
  43. package/dist/cjs/collection/engine.js +20 -0
  44. package/dist/cjs/collection/engine.js.map +1 -1
  45. package/dist/cjs/collection/policy.js +29 -1
  46. package/dist/cjs/collection/policy.js.map +1 -1
  47. package/dist/cjs/communication/clearance.js +18 -0
  48. package/dist/cjs/communication/clearance.js.map +1 -0
  49. package/dist/cjs/communication/dry-run-scenario.js +5 -0
  50. package/dist/cjs/communication/dry-run-scenario.js.map +1 -1
  51. package/dist/cjs/communication/engine.js +12 -0
  52. package/dist/cjs/communication/engine.js.map +1 -1
  53. package/dist/cjs/communication/policy.js.map +1 -1
  54. package/dist/cjs/competence/business-days.js +155 -0
  55. package/dist/cjs/competence/business-days.js.map +1 -0
  56. package/dist/cjs/competence/catalog-validation.js +174 -0
  57. package/dist/cjs/competence/catalog-validation.js.map +1 -0
  58. package/dist/cjs/competence/obligation-preview.js +190 -0
  59. package/dist/cjs/competence/obligation-preview.js.map +1 -0
  60. package/dist/cjs/competence/repository.js +330 -17
  61. package/dist/cjs/competence/repository.js.map +1 -1
  62. package/dist/cjs/dashboard/pilot-panel.js +90 -0
  63. package/dist/cjs/dashboard/pilot-panel.js.map +1 -0
  64. package/dist/cjs/dashboard/repository.js +11 -1
  65. package/dist/cjs/dashboard/repository.js.map +1 -1
  66. package/dist/cjs/db/client.js +17 -11
  67. package/dist/cjs/db/client.js.map +1 -1
  68. package/dist/cjs/db/provision-e2e-identity.js +111 -0
  69. package/dist/cjs/db/provision-e2e-identity.js.map +1 -0
  70. package/dist/cjs/fiscal/applicability.js +164 -0
  71. package/dist/cjs/fiscal/applicability.js.map +1 -0
  72. package/dist/cjs/fiscal/conditions.js +198 -0
  73. package/dist/cjs/fiscal/conditions.js.map +1 -0
  74. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js +390 -0
  75. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  76. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js +108 -0
  77. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  78. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js +220 -0
  79. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  80. package/dist/cjs/fiscal/coverage/model.js +127 -0
  81. package/dist/cjs/fiscal/coverage/model.js.map +1 -0
  82. package/dist/cjs/fiscal/coverage/requests.js +99 -0
  83. package/dist/cjs/fiscal/coverage/requests.js.map +1 -0
  84. package/dist/cjs/fiscal/credentials/material.js +168 -0
  85. package/dist/cjs/fiscal/credentials/material.js.map +1 -0
  86. package/dist/cjs/fiscal/credentials/readiness.js +163 -0
  87. package/dist/cjs/fiscal/credentials/readiness.js.map +1 -0
  88. package/dist/cjs/fiscal/eligibility.js +199 -0
  89. package/dist/cjs/fiscal/eligibility.js.map +1 -0
  90. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js +128 -0
  91. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  92. package/dist/cjs/fiscal/ingestion/adn-transport.js +229 -0
  93. package/dist/cjs/fiscal/ingestion/adn-transport.js.map +1 -0
  94. package/dist/cjs/fiscal/ingestion/direction.js +36 -0
  95. package/dist/cjs/fiscal/ingestion/direction.js.map +1 -0
  96. package/dist/cjs/fiscal/ingestion/nfse-adn.js +228 -0
  97. package/dist/cjs/fiscal/ingestion/nfse-adn.js.map +1 -0
  98. package/dist/cjs/fiscal/ingestion/pipeline.js +704 -0
  99. package/dist/cjs/fiscal/ingestion/pipeline.js.map +1 -0
  100. package/dist/cjs/fiscal/ingestion/provider.js +51 -0
  101. package/dist/cjs/fiscal/ingestion/provider.js.map +1 -0
  102. package/dist/cjs/fiscal/ingestion/repository.js +132 -0
  103. package/dist/cjs/fiscal/ingestion/repository.js.map +1 -0
  104. package/dist/cjs/fiscal/ingestion/synthetic-provider.js +103 -0
  105. package/dist/cjs/fiscal/ingestion/synthetic-provider.js.map +1 -0
  106. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js +13 -0
  107. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  108. package/dist/cjs/fiscal/ingestion/synthetic-transport.js +61 -0
  109. package/dist/cjs/fiscal/ingestion/synthetic-transport.js.map +1 -0
  110. package/dist/cjs/fiscal/ingestion/xml-reader.js +121 -0
  111. package/dist/cjs/fiscal/ingestion/xml-reader.js.map +1 -0
  112. package/dist/cjs/fiscal/repository.js +470 -0
  113. package/dist/cjs/fiscal/repository.js.map +1 -0
  114. package/dist/cjs/fiscal/sync/circuit.js +124 -0
  115. package/dist/cjs/fiscal/sync/circuit.js.map +1 -0
  116. package/dist/cjs/fiscal/sync/intervention.js +140 -0
  117. package/dist/cjs/fiscal/sync/intervention.js.map +1 -0
  118. package/dist/cjs/fiscal/sync/lease.js +146 -0
  119. package/dist/cjs/fiscal/sync/lease.js.map +1 -0
  120. package/dist/cjs/fiscal/sync/observability.js +244 -0
  121. package/dist/cjs/fiscal/sync/observability.js.map +1 -0
  122. package/dist/cjs/fiscal/sync/orchestrator.js +490 -0
  123. package/dist/cjs/fiscal/sync/orchestrator.js.map +1 -0
  124. package/dist/cjs/fiscal/sync/policy.js +143 -0
  125. package/dist/cjs/fiscal/sync/policy.js.map +1 -0
  126. package/dist/cjs/fiscal/sync/reprocess.js +241 -0
  127. package/dist/cjs/fiscal/sync/reprocess.js.map +1 -0
  128. package/dist/cjs/fiscal/sync/retry.js +183 -0
  129. package/dist/cjs/fiscal/sync/retry.js.map +1 -0
  130. package/dist/cjs/fiscal/sync/secret-boundary.js +123 -0
  131. package/dist/cjs/fiscal/sync/secret-boundary.js.map +1 -0
  132. package/dist/cjs/fiscal/transport/https.js +309 -0
  133. package/dist/cjs/fiscal/transport/https.js.map +1 -0
  134. package/dist/cjs/fiscal/transport/synthetic-tls.js +328 -0
  135. package/dist/cjs/fiscal/transport/synthetic-tls.js.map +1 -0
  136. package/dist/cjs/fiscal/transport/types.js +93 -0
  137. package/dist/cjs/fiscal/transport/types.js.map +1 -0
  138. package/dist/cjs/import/br-documents.js +85 -0
  139. package/dist/cjs/import/br-documents.js.map +1 -0
  140. package/dist/cjs/import/clients-import.js +347 -40
  141. package/dist/cjs/import/clients-import.js.map +1 -1
  142. package/dist/cjs/index.js +316 -11
  143. package/dist/cjs/index.js.map +1 -1
  144. package/dist/cjs/legal/documents.js +100 -15
  145. package/dist/cjs/legal/documents.js.map +1 -1
  146. package/dist/cjs/legal/index.js +3 -1
  147. package/dist/cjs/legal/index.js.map +1 -1
  148. package/dist/cjs/legal/types.js.map +1 -1
  149. package/dist/cjs/onboarding/persistence.js +4 -4
  150. package/dist/cjs/onboarding/persistence.js.map +1 -1
  151. package/dist/cjs/pilot/go-live-checklist.js +212 -0
  152. package/dist/cjs/pilot/go-live-checklist.js.map +1 -0
  153. package/dist/cjs/pilot/milestone.js +79 -0
  154. package/dist/cjs/pilot/milestone.js.map +1 -0
  155. package/dist/cjs/platform/capabilities.js +144 -0
  156. package/dist/cjs/platform/capabilities.js.map +1 -0
  157. package/dist/cjs/platform/job-contract.js +411 -0
  158. package/dist/cjs/platform/job-contract.js.map +1 -0
  159. package/dist/cjs/rbac/catalog.js +34 -0
  160. package/dist/cjs/rbac/catalog.js.map +1 -1
  161. package/dist/cjs/subscription-billing/index.js +2 -1
  162. package/dist/cjs/subscription-billing/index.js.map +1 -1
  163. package/dist/cjs/subscription-billing/service.js +153 -77
  164. package/dist/cjs/subscription-billing/service.js.map +1 -1
  165. package/dist/cjs/tenancy/features.js +131 -0
  166. package/dist/cjs/tenancy/features.js.map +1 -0
  167. package/dist/cjs/tenancy/settings.js +224 -0
  168. package/dist/cjs/tenancy/settings.js.map +1 -0
  169. package/dist/cjs/users/repository.js +24 -1
  170. package/dist/cjs/users/repository.js.map +1 -1
  171. package/dist/clients/ibge.d.ts +17 -0
  172. package/dist/clients/ibge.d.ts.map +1 -0
  173. package/dist/clients/ibge.js +98 -0
  174. package/dist/clients/ibge.js.map +1 -0
  175. package/dist/clients/repository.d.ts +154 -0
  176. package/dist/clients/repository.d.ts.map +1 -1
  177. package/dist/clients/repository.js +182 -9
  178. package/dist/clients/repository.js.map +1 -1
  179. package/dist/collection/branding.d.ts +65 -0
  180. package/dist/collection/branding.d.ts.map +1 -1
  181. package/dist/collection/branding.js +186 -0
  182. package/dist/collection/branding.js.map +1 -1
  183. package/dist/collection/clearance-store.d.ts +39 -0
  184. package/dist/collection/clearance-store.d.ts.map +1 -0
  185. package/dist/collection/clearance-store.js +69 -0
  186. package/dist/collection/clearance-store.js.map +1 -0
  187. package/dist/collection/communication-runtime.d.ts +37 -0
  188. package/dist/collection/communication-runtime.d.ts.map +1 -1
  189. package/dist/collection/communication-runtime.js +63 -1
  190. package/dist/collection/communication-runtime.js.map +1 -1
  191. package/dist/collection/engine.d.ts +23 -0
  192. package/dist/collection/engine.d.ts.map +1 -1
  193. package/dist/collection/engine.js +20 -0
  194. package/dist/collection/engine.js.map +1 -1
  195. package/dist/collection/policy.d.ts +25 -0
  196. package/dist/collection/policy.d.ts.map +1 -1
  197. package/dist/collection/policy.js +27 -0
  198. package/dist/collection/policy.js.map +1 -1
  199. package/dist/communication/clearance.d.ts +53 -0
  200. package/dist/communication/clearance.d.ts.map +1 -0
  201. package/dist/communication/clearance.js +15 -0
  202. package/dist/communication/clearance.js.map +1 -0
  203. package/dist/communication/dry-run-scenario.d.ts.map +1 -1
  204. package/dist/communication/dry-run-scenario.js +5 -0
  205. package/dist/communication/dry-run-scenario.js.map +1 -1
  206. package/dist/communication/engine.d.ts +10 -0
  207. package/dist/communication/engine.d.ts.map +1 -1
  208. package/dist/communication/engine.js +12 -0
  209. package/dist/communication/engine.js.map +1 -1
  210. package/dist/communication/policy.d.ts +16 -0
  211. package/dist/communication/policy.d.ts.map +1 -1
  212. package/dist/communication/policy.js.map +1 -1
  213. package/dist/competence/business-days.d.ts +51 -0
  214. package/dist/competence/business-days.d.ts.map +1 -0
  215. package/dist/competence/business-days.js +145 -0
  216. package/dist/competence/business-days.js.map +1 -0
  217. package/dist/competence/catalog-validation.d.ts +86 -0
  218. package/dist/competence/catalog-validation.d.ts.map +1 -0
  219. package/dist/competence/catalog-validation.js +168 -0
  220. package/dist/competence/catalog-validation.js.map +1 -0
  221. package/dist/competence/obligation-preview.d.ts +103 -0
  222. package/dist/competence/obligation-preview.d.ts.map +1 -0
  223. package/dist/competence/obligation-preview.js +184 -0
  224. package/dist/competence/obligation-preview.js.map +1 -0
  225. package/dist/competence/repository.d.ts +139 -1
  226. package/dist/competence/repository.d.ts.map +1 -1
  227. package/dist/competence/repository.js +325 -17
  228. package/dist/competence/repository.js.map +1 -1
  229. package/dist/dashboard/pilot-panel.d.ts +100 -0
  230. package/dist/dashboard/pilot-panel.d.ts.map +1 -0
  231. package/dist/dashboard/pilot-panel.js +87 -0
  232. package/dist/dashboard/pilot-panel.js.map +1 -0
  233. package/dist/dashboard/repository.d.ts.map +1 -1
  234. package/dist/dashboard/repository.js +11 -1
  235. package/dist/dashboard/repository.js.map +1 -1
  236. package/dist/db/client.d.ts +45 -0
  237. package/dist/db/client.d.ts.map +1 -1
  238. package/dist/db/client.js +16 -11
  239. package/dist/db/client.js.map +1 -1
  240. package/dist/db/migrate.d.ts +36 -1
  241. package/dist/db/migrate.d.ts.map +1 -1
  242. package/dist/db/migrate.js +199 -32
  243. package/dist/db/migrate.js.map +1 -1
  244. package/dist/db/provision-e2e-identity.d.ts +2 -0
  245. package/dist/db/provision-e2e-identity.d.ts.map +1 -0
  246. package/dist/db/provision-e2e-identity.js +109 -0
  247. package/dist/db/provision-e2e-identity.js.map +1 -0
  248. package/dist/fiscal/applicability.d.ts +73 -0
  249. package/dist/fiscal/applicability.d.ts.map +1 -0
  250. package/dist/fiscal/applicability.js +160 -0
  251. package/dist/fiscal/applicability.js.map +1 -0
  252. package/dist/fiscal/conditions.d.ts +99 -0
  253. package/dist/fiscal/conditions.d.ts.map +1 -0
  254. package/dist/fiscal/conditions.js +190 -0
  255. package/dist/fiscal/conditions.js.map +1 -0
  256. package/dist/fiscal/contracts/nfse-adn-contract.d.ts +315 -0
  257. package/dist/fiscal/contracts/nfse-adn-contract.d.ts.map +1 -0
  258. package/dist/fiscal/contracts/nfse-adn-contract.js +386 -0
  259. package/dist/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  260. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts +13 -0
  261. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts.map +1 -0
  262. package/dist/fiscal/contracts/nfse-adn-endpoint.js +103 -0
  263. package/dist/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  264. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts +77 -0
  265. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts.map +1 -0
  266. package/dist/fiscal/contracts/nfse-adn-envelope.js +215 -0
  267. package/dist/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  268. package/dist/fiscal/coverage/model.d.ts +86 -0
  269. package/dist/fiscal/coverage/model.d.ts.map +1 -0
  270. package/dist/fiscal/coverage/model.js +120 -0
  271. package/dist/fiscal/coverage/model.js.map +1 -0
  272. package/dist/fiscal/coverage/requests.d.ts +70 -0
  273. package/dist/fiscal/coverage/requests.d.ts.map +1 -0
  274. package/dist/fiscal/coverage/requests.js +95 -0
  275. package/dist/fiscal/coverage/requests.js.map +1 -0
  276. package/dist/fiscal/credentials/material.d.ts +81 -0
  277. package/dist/fiscal/credentials/material.d.ts.map +1 -0
  278. package/dist/fiscal/credentials/material.js +164 -0
  279. package/dist/fiscal/credentials/material.js.map +1 -0
  280. package/dist/fiscal/credentials/readiness.d.ts +92 -0
  281. package/dist/fiscal/credentials/readiness.d.ts.map +1 -0
  282. package/dist/fiscal/credentials/readiness.js +159 -0
  283. package/dist/fiscal/credentials/readiness.js.map +1 -0
  284. package/dist/fiscal/eligibility.d.ts +106 -0
  285. package/dist/fiscal/eligibility.d.ts.map +1 -0
  286. package/dist/fiscal/eligibility.js +194 -0
  287. package/dist/fiscal/eligibility.js.map +1 -0
  288. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts +57 -0
  289. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts.map +1 -0
  290. package/dist/fiscal/ingestion/__fixtures__/nfse.js +121 -0
  291. package/dist/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  292. package/dist/fiscal/ingestion/adn-transport.d.ts +123 -0
  293. package/dist/fiscal/ingestion/adn-transport.d.ts.map +1 -0
  294. package/dist/fiscal/ingestion/adn-transport.js +220 -0
  295. package/dist/fiscal/ingestion/adn-transport.js.map +1 -0
  296. package/dist/fiscal/ingestion/direction.d.ts +60 -0
  297. package/dist/fiscal/ingestion/direction.d.ts.map +1 -0
  298. package/dist/fiscal/ingestion/direction.js +32 -0
  299. package/dist/fiscal/ingestion/direction.js.map +1 -0
  300. package/dist/fiscal/ingestion/nfse-adn.d.ts +91 -0
  301. package/dist/fiscal/ingestion/nfse-adn.d.ts.map +1 -0
  302. package/dist/fiscal/ingestion/nfse-adn.js +222 -0
  303. package/dist/fiscal/ingestion/nfse-adn.js.map +1 -0
  304. package/dist/fiscal/ingestion/pipeline.d.ts +168 -0
  305. package/dist/fiscal/ingestion/pipeline.d.ts.map +1 -0
  306. package/dist/fiscal/ingestion/pipeline.js +699 -0
  307. package/dist/fiscal/ingestion/pipeline.js.map +1 -0
  308. package/dist/fiscal/ingestion/provider.d.ts +206 -0
  309. package/dist/fiscal/ingestion/provider.d.ts.map +1 -0
  310. package/dist/fiscal/ingestion/provider.js +47 -0
  311. package/dist/fiscal/ingestion/provider.js.map +1 -0
  312. package/dist/fiscal/ingestion/repository.d.ts +82 -0
  313. package/dist/fiscal/ingestion/repository.d.ts.map +1 -0
  314. package/dist/fiscal/ingestion/repository.js +127 -0
  315. package/dist/fiscal/ingestion/repository.js.map +1 -0
  316. package/dist/fiscal/ingestion/synthetic-provider.d.ts +92 -0
  317. package/dist/fiscal/ingestion/synthetic-provider.d.ts.map +1 -0
  318. package/dist/fiscal/ingestion/synthetic-provider.js +99 -0
  319. package/dist/fiscal/ingestion/synthetic-provider.js.map +1 -0
  320. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts +19 -0
  321. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts.map +1 -0
  322. package/dist/fiscal/ingestion/synthetic-transport-types.js +9 -0
  323. package/dist/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  324. package/dist/fiscal/ingestion/synthetic-transport.d.ts +55 -0
  325. package/dist/fiscal/ingestion/synthetic-transport.d.ts.map +1 -0
  326. package/dist/fiscal/ingestion/synthetic-transport.js +57 -0
  327. package/dist/fiscal/ingestion/synthetic-transport.js.map +1 -0
  328. package/dist/fiscal/ingestion/xml-reader.d.ts +55 -0
  329. package/dist/fiscal/ingestion/xml-reader.d.ts.map +1 -0
  330. package/dist/fiscal/ingestion/xml-reader.js +112 -0
  331. package/dist/fiscal/ingestion/xml-reader.js.map +1 -0
  332. package/dist/fiscal/repository.d.ts +220 -0
  333. package/dist/fiscal/repository.d.ts.map +1 -0
  334. package/dist/fiscal/repository.js +449 -0
  335. package/dist/fiscal/repository.js.map +1 -0
  336. package/dist/fiscal/sync/circuit.d.ts +86 -0
  337. package/dist/fiscal/sync/circuit.d.ts.map +1 -0
  338. package/dist/fiscal/sync/circuit.js +118 -0
  339. package/dist/fiscal/sync/circuit.js.map +1 -0
  340. package/dist/fiscal/sync/intervention.d.ts +81 -0
  341. package/dist/fiscal/sync/intervention.d.ts.map +1 -0
  342. package/dist/fiscal/sync/intervention.js +135 -0
  343. package/dist/fiscal/sync/intervention.js.map +1 -0
  344. package/dist/fiscal/sync/lease.d.ts +118 -0
  345. package/dist/fiscal/sync/lease.d.ts.map +1 -0
  346. package/dist/fiscal/sync/lease.js +139 -0
  347. package/dist/fiscal/sync/lease.js.map +1 -0
  348. package/dist/fiscal/sync/observability.d.ts +148 -0
  349. package/dist/fiscal/sync/observability.d.ts.map +1 -0
  350. package/dist/fiscal/sync/observability.js +239 -0
  351. package/dist/fiscal/sync/observability.js.map +1 -0
  352. package/dist/fiscal/sync/orchestrator.d.ts +132 -0
  353. package/dist/fiscal/sync/orchestrator.d.ts.map +1 -0
  354. package/dist/fiscal/sync/orchestrator.js +487 -0
  355. package/dist/fiscal/sync/orchestrator.js.map +1 -0
  356. package/dist/fiscal/sync/policy.d.ts +87 -0
  357. package/dist/fiscal/sync/policy.d.ts.map +1 -0
  358. package/dist/fiscal/sync/policy.js +136 -0
  359. package/dist/fiscal/sync/policy.js.map +1 -0
  360. package/dist/fiscal/sync/reprocess.d.ts +76 -0
  361. package/dist/fiscal/sync/reprocess.d.ts.map +1 -0
  362. package/dist/fiscal/sync/reprocess.js +237 -0
  363. package/dist/fiscal/sync/reprocess.js.map +1 -0
  364. package/dist/fiscal/sync/retry.d.ts +82 -0
  365. package/dist/fiscal/sync/retry.d.ts.map +1 -0
  366. package/dist/fiscal/sync/retry.js +176 -0
  367. package/dist/fiscal/sync/retry.js.map +1 -0
  368. package/dist/fiscal/sync/secret-boundary.d.ts +169 -0
  369. package/dist/fiscal/sync/secret-boundary.d.ts.map +1 -0
  370. package/dist/fiscal/sync/secret-boundary.js +116 -0
  371. package/dist/fiscal/sync/secret-boundary.js.map +1 -0
  372. package/dist/fiscal/transport/https.d.ts +86 -0
  373. package/dist/fiscal/transport/https.d.ts.map +1 -0
  374. package/dist/fiscal/transport/https.js +303 -0
  375. package/dist/fiscal/transport/https.js.map +1 -0
  376. package/dist/fiscal/transport/synthetic-tls.d.ts +80 -0
  377. package/dist/fiscal/transport/synthetic-tls.d.ts.map +1 -0
  378. package/dist/fiscal/transport/synthetic-tls.js +323 -0
  379. package/dist/fiscal/transport/synthetic-tls.js.map +1 -0
  380. package/dist/fiscal/transport/types.d.ts +134 -0
  381. package/dist/fiscal/transport/types.d.ts.map +1 -0
  382. package/dist/fiscal/transport/types.js +88 -0
  383. package/dist/fiscal/transport/types.js.map +1 -0
  384. package/dist/import/br-documents.d.ts +26 -0
  385. package/dist/import/br-documents.d.ts.map +1 -0
  386. package/dist/import/br-documents.js +78 -0
  387. package/dist/import/br-documents.js.map +1 -0
  388. package/dist/import/clients-import.d.ts +122 -4
  389. package/dist/import/clients-import.d.ts.map +1 -1
  390. package/dist/import/clients-import.js +341 -41
  391. package/dist/import/clients-import.js.map +1 -1
  392. package/dist/index.d.ts +115 -11
  393. package/dist/index.d.ts.map +1 -1
  394. package/dist/index.js +100 -7
  395. package/dist/index.js.map +1 -1
  396. package/dist/legal/documents.d.ts +12 -1
  397. package/dist/legal/documents.d.ts.map +1 -1
  398. package/dist/legal/documents.js +98 -14
  399. package/dist/legal/documents.js.map +1 -1
  400. package/dist/legal/index.d.ts +1 -1
  401. package/dist/legal/index.d.ts.map +1 -1
  402. package/dist/legal/index.js +1 -1
  403. package/dist/legal/index.js.map +1 -1
  404. package/dist/legal/types.d.ts +37 -2
  405. package/dist/legal/types.d.ts.map +1 -1
  406. package/dist/legal/types.js.map +1 -1
  407. package/dist/onboarding/persistence.d.ts +10 -1
  408. package/dist/onboarding/persistence.d.ts.map +1 -1
  409. package/dist/onboarding/persistence.js +4 -4
  410. package/dist/onboarding/persistence.js.map +1 -1
  411. package/dist/pilot/go-live-checklist.d.ts +41 -0
  412. package/dist/pilot/go-live-checklist.d.ts.map +1 -0
  413. package/dist/pilot/go-live-checklist.js +209 -0
  414. package/dist/pilot/go-live-checklist.js.map +1 -0
  415. package/dist/pilot/milestone.d.ts +56 -0
  416. package/dist/pilot/milestone.d.ts.map +1 -0
  417. package/dist/pilot/milestone.js +74 -0
  418. package/dist/pilot/milestone.js.map +1 -0
  419. package/dist/platform/capabilities.d.ts +88 -0
  420. package/dist/platform/capabilities.d.ts.map +1 -0
  421. package/dist/platform/capabilities.js +140 -0
  422. package/dist/platform/capabilities.js.map +1 -0
  423. package/dist/platform/job-contract.d.ts +232 -0
  424. package/dist/platform/job-contract.d.ts.map +1 -0
  425. package/dist/platform/job-contract.js +403 -0
  426. package/dist/platform/job-contract.js.map +1 -0
  427. package/dist/rbac/catalog.d.ts.map +1 -1
  428. package/dist/rbac/catalog.js +34 -0
  429. package/dist/rbac/catalog.js.map +1 -1
  430. package/dist/subscription-billing/index.d.ts +6 -5
  431. package/dist/subscription-billing/index.d.ts.map +1 -1
  432. package/dist/subscription-billing/index.js +3 -3
  433. package/dist/subscription-billing/index.js.map +1 -1
  434. package/dist/subscription-billing/service.d.ts +21 -0
  435. package/dist/subscription-billing/service.d.ts.map +1 -1
  436. package/dist/subscription-billing/service.js +90 -15
  437. package/dist/subscription-billing/service.js.map +1 -1
  438. package/dist/tenancy/features.d.ts +69 -0
  439. package/dist/tenancy/features.d.ts.map +1 -0
  440. package/dist/tenancy/features.js +123 -0
  441. package/dist/tenancy/features.js.map +1 -0
  442. package/dist/tenancy/settings.d.ts +63 -0
  443. package/dist/tenancy/settings.d.ts.map +1 -0
  444. package/dist/tenancy/settings.js +218 -0
  445. package/dist/tenancy/settings.js.map +1 -0
  446. package/dist/users/repository.d.ts +16 -1
  447. package/dist/users/repository.d.ts.map +1 -1
  448. package/dist/users/repository.js +24 -1
  449. package/dist/users/repository.js.map +1 -1
  450. package/package.json +9 -2
  451. package/src/db/migrations/0045_role_write_scope.sql +122 -0
  452. package/src/db/migrations/0046_pilot_activation_model.sql +184 -0
  453. package/src/db/migrations/0047_recipient_clearance.sql +89 -0
  454. package/src/db/migrations/0048_item_type_note.sql +16 -0
  455. package/src/db/migrations/0049_national_fiscal_engine.sql +279 -0
  456. package/src/db/migrations/0050_fiscal_vocabulary_readonly.sql +29 -0
  457. package/src/db/migrations/0051_seed_rules_from_catalog.sql +72 -0
  458. package/src/db/migrations/0052_fiscal_rule_delete_scope.sql +57 -0
  459. package/src/db/migrations/0053_rule_validity_lower_bound.sql +44 -0
  460. package/src/db/migrations/0054_tenant_profile_and_rule_source.sql +89 -0
  461. package/src/db/migrations/0055_job_capability_contract.sql +300 -0
  462. package/src/db/migrations/0056_fiscal_document_ingestion.sql +337 -0
  463. package/src/db/migrations/0057_fiscal_pending_event_inbox.sql +228 -0
  464. package/src/db/migrations/0058_fiscal_operational_engine.sql +516 -0
  465. package/src/db/migrations/0059_fiscal_contract_version.sql +59 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/fiscal/ingestion/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * A porta entre o motor de ingestão e as fontes oficiais de documento fiscal.
3
+ *
4
+ * ## A forma foi medida, não inventada
5
+ *
6
+ * Os três documentos que importam ao Brasil compartilham a MESMA mecânica de
7
+ * distribuição, e isso é evidência de documentação oficial, não conveniência:
8
+ *
9
+ * NF-e NT 2014.002 v1.02c (ago/2020), WS `NFeDistribuicaoDFe`, método
10
+ * `nfeDistDFeInteresse`. Consultas `distNSU` (lote a partir do
11
+ * `ultNSU`), `consNSU` (um NSU faltante) e `consChNFe` (por chave).
12
+ * Lote de até **50** documentos, ordem crescente de NSU, resposta com
13
+ * `ultNSU` e `maxNSU`, conteúdo em `docZip` (gZip + base64).
14
+ * CT-e NT 2015.002, WS `CTeDistribuicaoDFe`. `distNSU`/`consNSU`,
15
+ * `ultNSU`/`maxNSU`, `docZip`. Mesma forma.
16
+ * NFS-e Manual dos Contribuintes do ADN v1.0 (12/02/2026),
17
+ * `GET /DFe/{NSU}` e `GET /NFSe/{ChaveAcesso}/Eventos`. REST em vez de
18
+ * SOAP — e o mesmo cursor NSU.
19
+ *
20
+ * Por isso a porta é modelada sobre **cursor NSU + lote + posição declarada
21
+ * pelo servidor**, e não sobre "página" ou "data inicial". Uma interface
22
+ * paginada por data obrigaria cada adapter a fingir uma semântica que nenhuma
23
+ * das três APIs tem.
24
+ *
25
+ * ## O que a porta deliberadamente NÃO abstrai
26
+ *
27
+ * Transporte, autenticação e parsing. SOAP com TLS mútuo e REST com TLS mútuo
28
+ * não se beneficiam de uma camada comum, e forçá-la produziria o pior tipo de
29
+ * abstração: uma que precisa de `if` por provedor lá dentro.
30
+ */
31
+ /** Ambientes. Sem fallback entre eles, em nenhuma direção (Gate B0). */
32
+ export type FiscalEnvironmentTag = 'synthetic' | 'homologation' | 'production';
33
+ export type FiscalDocumentType = 'nfse' | 'nfe' | 'cte' | 'nfce';
34
+ /**
35
+ * Direção do documento em relação ao ator consultado.
36
+ *
37
+ * `unknown` não é um estado de erro: é a resposta honesta quando o leiaute não
38
+ * traz o participante que decidiria. Ver `direction.ts` — e nunca substituí-lo
39
+ * por `issued`, que foi o defeito da primeira escrita desta onda.
40
+ */
41
+ export type FiscalDirection = 'issued' | 'received' | 'intermediary' | 'unknown';
42
+ export type FiscalContentKind = 'summary' | 'full';
43
+ /**
44
+ * Um documento como o provedor o entregou, antes de qualquer interpretação.
45
+ *
46
+ * `raw` são os BYTES originais — já descompactados do `docZip`, mas não
47
+ * reescritos. É este conteúdo que vai para o storage e cujo sha256 é gravado.
48
+ */
49
+ export interface RawFiscalDocument {
50
+ /** Posição no cursor do provedor que entregou este item. */
51
+ nsu: string;
52
+ /** Identificação do leiaute, quando o provedor a declara (`schema` do docZip). */
53
+ schema?: string | null;
54
+ raw: Uint8Array;
55
+ /** `application/xml` na prática; declarado porque o blob exige. */
56
+ mimeType: string;
57
+ }
58
+ /**
59
+ * O resultado de um lote.
60
+ *
61
+ * `maxNsu` é o que arma a espera obrigatória: quando `lastNsu === maxNsu` não há
62
+ * mais nada, e a NT 2014.002 §3.5 exige **uma hora** antes da próxima
63
+ * solicitação. Consultar antes é `cStat 656 — Consumo Indevido`, e o CNPJ que
64
+ * fica bloqueado é o do CLIENTE.
65
+ */
66
+ export interface FiscalFetchResult {
67
+ documents: readonly RawFiscalDocument[];
68
+ /** Último NSU pesquisado, como o servidor o declarou. */
69
+ lastNsu: string | null;
70
+ /** Maior NSU existente para o ator consultado, como o servidor o declarou. */
71
+ maxNsu: string | null;
72
+ /** `true` quando o provedor disse que não há mais nada agora (cStat 137). */
73
+ exhausted: boolean;
74
+ /** Código de status bruto do provedor, para a trilha. Nunca a mensagem. */
75
+ providerStatus?: string | null;
76
+ }
77
+ /**
78
+ * Classes de erro do provedor.
79
+ *
80
+ * A separação existe porque os tratamentos são opostos, e confundi-los é como
81
+ * um laço bem-intencionado bloqueia o CNPJ de um terceiro:
82
+ *
83
+ * `transient` rede, 5xx, serviço paralisado (cStat 108/109). Retenta.
84
+ * `throttled` consumo indevido (cStat 656) ou espera obrigatória ainda
85
+ * correndo. **Não retenta agora** — recuar é a correção.
86
+ * `auth` certificado inválido, vencido, revogado, fora da ICP-Brasil
87
+ * (cStat 280-286), ou CNPJ-base divergente (593). Pessoa
88
+ * resolve; retentar não.
89
+ * `not_allowed` o ator não tem direito àquele documento (640, 641, 653).
90
+ * `invalid` leiaute, schema, chave malformada (215, 236, 614-619).
91
+ * `unknown` não classificado. Trata como `transient` com teto.
92
+ */
93
+ export type FiscalProviderErrorClass = 'transient' | 'throttled' | 'auth' | 'not_allowed' | 'invalid' | 'unknown';
94
+ export declare class FiscalProviderError extends Error {
95
+ readonly errorClass: FiscalProviderErrorClass;
96
+ /** Código do provedor (`cStat`, HTTP). Código, jamais a resposta bruta. */
97
+ readonly providerCode?: string | null | undefined;
98
+ /** Quando o provedor ou a norma impõem espera, até quando. */
99
+ readonly retryAfter?: (Date | null) | undefined;
100
+ constructor(errorClass: FiscalProviderErrorClass, message: string,
101
+ /** Código do provedor (`cStat`, HTTP). Código, jamais a resposta bruta. */
102
+ providerCode?: string | null | undefined,
103
+ /** Quando o provedor ou a norma impõem espera, até quando. */
104
+ retryAfter?: (Date | null) | undefined);
105
+ }
106
+ /** O que o adapter precisa saber para buscar em nome de um cliente. */
107
+ export interface FiscalFetchRequest {
108
+ /** CNPJ/CPF do ator consultado. Sem máscara. */
109
+ actorDocument: string;
110
+ /** Posição de onde continuar. `null` = do começo disponível. */
111
+ fromNsu: string | null;
112
+ environment: FiscalEnvironmentTag;
113
+ /** Teto de documentos deste lote. A NT 2014.002 fixa 50 na NF-e. */
114
+ batchLimit: number;
115
+ }
116
+ /**
117
+ * Um documento já interpretado, mas ainda não gravado.
118
+ *
119
+ * `dedupeKey` é responsabilidade do ADAPTER, não do motor: só ele sabe o que
120
+ * identifica um documento naquele leiaute. E não pode ser o NSU — o mesmo
121
+ * documento reaparece sob outro NSU num replay, que é exatamente o caso que a
122
+ * deduplicação existe para absorver.
123
+ *
124
+ * ## Não há campo `direction` aqui, e é deliberado
125
+ *
126
+ * A primeira escrita desta onda tinha um, e todo parser o preenchia com
127
+ * `'issued'` fixo — inclusive para notas em que o cliente é o tomador. A
128
+ * remoção do campo não é estilo: é o que torna IMPOSSÍVEL a um adapter declarar
129
+ * direção sem confrontar participantes, porque ele não conhece o ator
130
+ * consultado. O adapter informa QUEM são emitente, tomador e intermediário; o
131
+ * motor confronta com o ator e decide (`classifyFiscalDirection`).
132
+ */
133
+ export interface NormalizedFiscalDocument {
134
+ dedupeKey: string;
135
+ documentType: FiscalDocumentType;
136
+ contentKind: FiscalContentKind;
137
+ accessKey?: string | null;
138
+ documentNumber?: string | null;
139
+ series?: string | null;
140
+ issuerDocument?: string | null;
141
+ issuerName?: string | null;
142
+ recipientDocument?: string | null;
143
+ recipientName?: string | null;
144
+ /** Intermediário do serviço, quando o leiaute o declara (`interm` da NFS-e). */
145
+ intermediaryDocument?: string | null;
146
+ intermediaryName?: string | null;
147
+ issuedAt?: Date | null;
148
+ /** `YYYY-MM`. Pode divergir de `issuedAt` — e frequentemente diverge. */
149
+ competenceLabel?: string | null;
150
+ grossAmount?: string | null;
151
+ /** Campos do leiaute que não viraram coluna. Sobrevive à reforma tributária. */
152
+ normalized: Record<string, unknown>;
153
+ /** Quando o item é um EVENTO de um documento, e não um documento. */
154
+ event?: {
155
+ type: 'cancellation' | 'replacement' | 'correction' | 'manifestation' | 'other';
156
+ code?: string | null;
157
+ occurredAt?: Date | null;
158
+ /**
159
+ * Sequência do evento no leiaute (`nSeqEvento`). Entra no desempate da
160
+ * ordem de aplicação quando dois eventos guardados na caixa de entrada têm
161
+ * o mesmo instante — ou quando o instante não veio.
162
+ */
163
+ sequence?: string | null;
164
+ /** Chave do documento que este evento altera. */
165
+ targetAccessKey: string;
166
+ } | null;
167
+ }
168
+ /**
169
+ * O adapter de uma fonte fiscal.
170
+ *
171
+ * `parse` é separado de `fetch` de propósito: é o que permite exercitar o
172
+ * leiaute inteiro com fixture, sem rede e sem credencial — e é sob essa
173
+ * separação que esta fase prova o motor sem tocar em documento real.
174
+ */
175
+ export interface FiscalDocumentAdapter {
176
+ /** Slug estável. Vai para `fiscal_document.source` e para o cursor. */
177
+ readonly source: string;
178
+ /**
179
+ * Versão do CONTRATO que este adapter implementa (`nfse-adn:v1`).
180
+ *
181
+ * Vai gravada em `fiscal_sync_run.contract_version`, e a razão é operacional:
182
+ * o leiaute da NFS-e nacional mudou duas vezes entre dez/2025 e fev/2026. No
183
+ * dia em que mudar de novo, "qual parser processou este lote?" precisa ter
184
+ * resposta no DADO — não na arqueologia do `git log` cruzada com a data da
185
+ * linha, que é o que sobra quando a versão não é gravada.
186
+ *
187
+ * Opcional porque adapters sintéticos e de teste não implementam contrato
188
+ * externo nenhum, e obrigá-los a inventar um rótulo poluiria a trilha com
189
+ * versões que não existem lá fora.
190
+ */
191
+ readonly contractVersion?: string | null;
192
+ readonly documentTypes: readonly FiscalDocumentType[];
193
+ /** Ambientes que ESTE adapter sabe operar. */
194
+ readonly environments: readonly FiscalEnvironmentTag[];
195
+ /** Teto de lote imposto pela norma ou pelo provedor. */
196
+ readonly batchLimit: number;
197
+ /**
198
+ * Espera obrigatória depois de o provedor dizer "não há mais nada".
199
+ * Na NF-e são 3600s por norma; um adapter sintético pode declarar 0.
200
+ */
201
+ readonly exhaustedBackoffSeconds: number;
202
+ fetchBatch(request: FiscalFetchRequest): Promise<FiscalFetchResult>;
203
+ /** Interpreta um item bruto. Lança `FiscalProviderError('invalid')` se não puder. */
204
+ parse(doc: RawFiscalDocument): NormalizedFiscalDocument;
205
+ }
206
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/fiscal/ingestion/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * A porta entre o motor de ingestão e as fontes oficiais de documento fiscal.
3
+ *
4
+ * ## A forma foi medida, não inventada
5
+ *
6
+ * Os três documentos que importam ao Brasil compartilham a MESMA mecânica de
7
+ * distribuição, e isso é evidência de documentação oficial, não conveniência:
8
+ *
9
+ * NF-e NT 2014.002 v1.02c (ago/2020), WS `NFeDistribuicaoDFe`, método
10
+ * `nfeDistDFeInteresse`. Consultas `distNSU` (lote a partir do
11
+ * `ultNSU`), `consNSU` (um NSU faltante) e `consChNFe` (por chave).
12
+ * Lote de até **50** documentos, ordem crescente de NSU, resposta com
13
+ * `ultNSU` e `maxNSU`, conteúdo em `docZip` (gZip + base64).
14
+ * CT-e NT 2015.002, WS `CTeDistribuicaoDFe`. `distNSU`/`consNSU`,
15
+ * `ultNSU`/`maxNSU`, `docZip`. Mesma forma.
16
+ * NFS-e Manual dos Contribuintes do ADN v1.0 (12/02/2026),
17
+ * `GET /DFe/{NSU}` e `GET /NFSe/{ChaveAcesso}/Eventos`. REST em vez de
18
+ * SOAP — e o mesmo cursor NSU.
19
+ *
20
+ * Por isso a porta é modelada sobre **cursor NSU + lote + posição declarada
21
+ * pelo servidor**, e não sobre "página" ou "data inicial". Uma interface
22
+ * paginada por data obrigaria cada adapter a fingir uma semântica que nenhuma
23
+ * das três APIs tem.
24
+ *
25
+ * ## O que a porta deliberadamente NÃO abstrai
26
+ *
27
+ * Transporte, autenticação e parsing. SOAP com TLS mútuo e REST com TLS mútuo
28
+ * não se beneficiam de uma camada comum, e forçá-la produziria o pior tipo de
29
+ * abstração: uma que precisa de `if` por provedor lá dentro.
30
+ */
31
+ export class FiscalProviderError extends Error {
32
+ errorClass;
33
+ providerCode;
34
+ retryAfter;
35
+ constructor(errorClass, message,
36
+ /** Código do provedor (`cStat`, HTTP). Código, jamais a resposta bruta. */
37
+ providerCode,
38
+ /** Quando o provedor ou a norma impõem espera, até quando. */
39
+ retryAfter) {
40
+ super(message);
41
+ this.errorClass = errorClass;
42
+ this.providerCode = providerCode;
43
+ this.retryAfter = retryAfter;
44
+ this.name = 'FiscalProviderError';
45
+ }
46
+ }
47
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/fiscal/ingestion/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAuEH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAEjC;IAGA;IAEA;IANX,YACW,UAAoC,EAC7C,OAAe;IACf,2EAA2E;IAClE,YAA4B;IACrC,8DAA8D;IACrD,UAAwB;QAEjC,KAAK,CAAC,OAAO,CAAC,CAAC;QAPN,eAAU,GAAV,UAAU,CAA0B;QAGpC,iBAAY,GAAZ,YAAY,CAAgB;QAE5B,eAAU,GAAV,UAAU,CAAc;QAGjC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
@@ -0,0 +1,82 @@
1
+ import type { Tx } from '../../db/client.js';
2
+ import { type FiscalEnvironment } from '../eligibility.js';
3
+ /**
4
+ * Leitura dos documentos fiscais capturados.
5
+ *
6
+ * Tudo aqui roda sob RLS FORCE com política de DUAS fronteiras: tenant sempre,
7
+ * e cliente quando `app.current_client` está definido (portal). O filtro por
8
+ * cliente nos parâmetros é conveniência de tela — a fronteira é do banco.
9
+ */
10
+ export interface FiscalDocumentRow {
11
+ id: string;
12
+ clientId: string;
13
+ clientName: string | null;
14
+ documentType: string;
15
+ direction: string;
16
+ accessKey: string | null;
17
+ documentNumber: string | null;
18
+ issuerName: string | null;
19
+ recipientName: string | null;
20
+ issuedAt: string | null;
21
+ competenceLabel: string | null;
22
+ grossAmount: string | null;
23
+ status: string;
24
+ contentKind: string;
25
+ source: string;
26
+ sourceEnvironment: string;
27
+ hasRaw: boolean;
28
+ ingestedAt: string;
29
+ }
30
+ export interface FiscalDocumentFilter {
31
+ clientId?: string | null;
32
+ documentType?: string | null;
33
+ competenceLabel?: string | null;
34
+ status?: string | null;
35
+ direction?: string | null;
36
+ limit?: number;
37
+ }
38
+ export declare function listFiscalDocuments(tx: Tx, filter?: FiscalDocumentFilter): Promise<FiscalDocumentRow[]>;
39
+ export declare function getFiscalDocument(tx: Tx, id: string): Promise<(FiscalDocumentRow & {
40
+ normalized: unknown;
41
+ events: unknown[];
42
+ }) | null>;
43
+ /**
44
+ * O estado factual da sincronização — para a tela dizer a verdade.
45
+ *
46
+ * Não existe "tudo certo". Cada estado é derivado de um fato: existe linha de
47
+ * automação? existe cursor? quando foi o último sucesso? qual foi o último erro?
48
+ * Uma tela que diz "pronto" sem ter o que a sustente é a mesma classe de defeito
49
+ * do painel que mostrava zero por RLS.
50
+ */
51
+ export type FiscalSyncStatus = 'not_configured' | 'ready' | 'synced' | 'waiting_provider_window' | 'blocked_credential' | 'blocked_eligibility' | 'error';
52
+ export interface FiscalSyncState {
53
+ status: FiscalSyncStatus;
54
+ environment: FiscalEnvironment | null;
55
+ lastSuccessAt: string | null;
56
+ nextAttemptAfter: string | null;
57
+ lastErrorClass: string | null;
58
+ consecutiveFailures: number;
59
+ documentsTotal: number;
60
+ /** Quantos vieram sozinhos — a métrica que mede o valor devolvido. */
61
+ documentsAutomaticallyCollected: number;
62
+ eligibleClients: number;
63
+ /**
64
+ * A caixa de entrada, exposta.
65
+ *
66
+ * Evento pendente não é erro: é informação fiscal preservada esperando o
67
+ * documento-alvo. Mas ele PRECISA ser visível — uma caixa que só cresce
68
+ * significa que os documentos correspondentes nunca chegaram, e essa é uma
69
+ * pergunta operacional real (o cliente mudou de emissor? a inscrição está
70
+ * apontando para o CNPJ errado?). Sem o contador, a espera vira acúmulo
71
+ * silencioso, que é o vizinho do descarte silencioso que esta onda corrigiu.
72
+ */
73
+ pendingEvents: number;
74
+ /** Há quanto tempo o mais antigo espera. `null` quando a caixa está vazia. */
75
+ oldestPendingEventAt: string | null;
76
+ /** Quantos já saíram da espera e viraram evento do documento. */
77
+ reconciledEvents: number;
78
+ /** Itens preservados que não puderam ser interpretados. Recuperáveis por NSU. */
79
+ invalidItems: number;
80
+ }
81
+ export declare function fiscalSyncState(tx: Tx): Promise<FiscalSyncState>;
82
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/fiscal/ingestion/repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAA6B,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtF;;;;;;GAMG;AAEH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,EAAE,EACN,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0D9B;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,CAAC,iBAAiB,GAAG;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,GAAG,IAAI,CAAC,CAuBlF;AAeD;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,OAAO,GACP,QAAQ,GACR,yBAAyB,GACzB,oBAAoB,GACpB,qBAAqB,GACrB,OAAO,CAAC;AAEZ,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,+BAA+B,EAAE,MAAM,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;;;OASG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,iEAAiE;IACjE,gBAAgB,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CA2DtE"}
@@ -0,0 +1,127 @@
1
+ import { getTenantFiscalAutomation } from '../eligibility.js';
2
+ export async function listFiscalDocuments(tx, filter = {}) {
3
+ const limit = Math.min(Math.max(filter.limit ?? 100, 1), 500);
4
+ const rows = await tx `
5
+ SELECT d.id, d.client_id, c.display_name AS client_name, d.document_type, d.direction,
6
+ d.access_key, d.document_number, d.issuer_name, d.recipient_name, d.issued_at,
7
+ d.competence_label, d.gross_amount, d.status, d.content_kind, d.source,
8
+ d.source_environment, (d.raw_blob_id IS NOT NULL) AS has_raw, d.ingested_at
9
+ FROM fiscal_document d
10
+ LEFT JOIN client c ON c.id = d.client_id
11
+ WHERE (${filter.clientId ?? null}::uuid IS NULL OR d.client_id = ${filter.clientId ?? null}::uuid)
12
+ AND (${filter.documentType ?? null}::text IS NULL OR d.document_type = ${filter.documentType ?? null})
13
+ AND (${filter.competenceLabel ?? null}::text IS NULL OR d.competence_label = ${filter.competenceLabel ?? null})
14
+ AND (${filter.status ?? null}::text IS NULL OR d.status = ${filter.status ?? null})
15
+ AND (${filter.direction ?? null}::text IS NULL OR d.direction = ${filter.direction ?? null})
16
+ ORDER BY d.issued_at DESC NULLS LAST, d.ingested_at DESC
17
+ LIMIT ${limit}
18
+ `;
19
+ return rows.map((r) => ({
20
+ id: r.id,
21
+ clientId: r.client_id,
22
+ clientName: r.client_name,
23
+ documentType: r.document_type,
24
+ direction: r.direction,
25
+ accessKey: r.access_key,
26
+ documentNumber: r.document_number,
27
+ issuerName: r.issuer_name,
28
+ recipientName: r.recipient_name,
29
+ issuedAt: r.issued_at?.toISOString() ?? null,
30
+ competenceLabel: r.competence_label,
31
+ grossAmount: r.gross_amount,
32
+ status: r.status,
33
+ contentKind: r.content_kind,
34
+ source: r.source,
35
+ sourceEnvironment: r.source_environment,
36
+ hasRaw: r.has_raw,
37
+ ingestedAt: r.ingested_at.toISOString(),
38
+ }));
39
+ }
40
+ export async function getFiscalDocument(tx, id) {
41
+ const [row] = await listFiscalDocumentsById(tx, id);
42
+ if (!row)
43
+ return null;
44
+ const events = await tx `
45
+ SELECT event_type, event_code, occurred_at
46
+ FROM fiscal_document_event WHERE fiscal_document_id = ${id}
47
+ ORDER BY occurred_at NULLS LAST, ingested_at
48
+ `;
49
+ return {
50
+ ...row.doc,
51
+ normalized: row.normalized,
52
+ events: events.map((e) => ({
53
+ type: e.event_type,
54
+ code: e.event_code,
55
+ occurredAt: e.occurred_at?.toISOString() ?? null,
56
+ // O evento HERDA a direção do documento que altera — ele não tem uma
57
+ // própria. Um cancelamento sobre uma nota recebida é evento de nota
58
+ // recebida; classificá-lo como emitida inverteria o sinal do fato.
59
+ direction: row.doc.direction,
60
+ })),
61
+ };
62
+ }
63
+ async function listFiscalDocumentsById(tx, id) {
64
+ const docs = await listFiscalDocuments(tx, {});
65
+ const found = docs.find((d) => d.id === id);
66
+ if (!found)
67
+ return [];
68
+ const [n] = await tx `
69
+ SELECT normalized FROM fiscal_document WHERE id = ${id}
70
+ `;
71
+ return [{ doc: found, normalized: n?.normalized ?? {} }];
72
+ }
73
+ export async function fiscalSyncState(tx) {
74
+ const automation = await getTenantFiscalAutomation(tx);
75
+ const [totals] = await tx `
76
+ SELECT count(*)::int AS total,
77
+ count(*) FILTER (WHERE source <> 'manual')::int AS automatic
78
+ FROM fiscal_document
79
+ `;
80
+ const [enroll] = await tx `
81
+ SELECT count(DISTINCT client_id)::int AS n
82
+ FROM client_fiscal_enrollment WHERE revoked_at IS NULL
83
+ `;
84
+ const [inbox] = await tx `
85
+ SELECT count(*) FILTER (WHERE state = 'pending_target')::int AS pending,
86
+ count(*) FILTER (WHERE state = 'applied')::int AS reconciled,
87
+ count(*) FILTER (WHERE state = 'invalid')::int AS invalid,
88
+ min(received_at) FILTER (WHERE state = 'pending_target') AS oldest
89
+ FROM fiscal_ingestion_inbox
90
+ `;
91
+ const [cursor] = await tx `
92
+ SELECT last_success_at, next_attempt_after, last_error_class, consecutive_failures
93
+ FROM fiscal_sync_cursor ORDER BY updated_at DESC LIMIT 1
94
+ `;
95
+ const base = {
96
+ environment: automation.mode === 'disabled' ? null : automation.mode,
97
+ lastSuccessAt: cursor?.last_success_at?.toISOString() ?? null,
98
+ nextAttemptAfter: cursor?.next_attempt_after?.toISOString() ?? null,
99
+ lastErrorClass: cursor?.last_error_class ?? null,
100
+ consecutiveFailures: cursor?.consecutive_failures ?? 0,
101
+ documentsTotal: totals?.total ?? 0,
102
+ documentsAutomaticallyCollected: totals?.automatic ?? 0,
103
+ eligibleClients: enroll?.n ?? 0,
104
+ pendingEvents: inbox?.pending ?? 0,
105
+ oldestPendingEventAt: inbox?.oldest?.toISOString() ?? null,
106
+ reconciledEvents: inbox?.reconciled ?? 0,
107
+ invalidItems: inbox?.invalid ?? 0,
108
+ };
109
+ // A ordem é do mais específico para o mais genérico: dizer "erro" quando na
110
+ // verdade ninguém configurou nada seria culpar o sistema pela ausência de
111
+ // decisão de uma pessoa.
112
+ if (automation.mode === 'disabled')
113
+ return { ...base, status: 'not_configured' };
114
+ if (base.eligibleClients === 0)
115
+ return { ...base, status: 'blocked_eligibility' };
116
+ if (cursor?.last_error_class === 'auth')
117
+ return { ...base, status: 'blocked_credential' };
118
+ if (cursor?.last_error_class)
119
+ return { ...base, status: 'error' };
120
+ if (base.nextAttemptAfter && new Date(base.nextAttemptAfter) > new Date()) {
121
+ return { ...base, status: 'waiting_provider_window' };
122
+ }
123
+ if (base.lastSuccessAt)
124
+ return { ...base, status: 'synced' };
125
+ return { ...base, status: 'ready' };
126
+ }
127
+ //# sourceMappingURL=repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/fiscal/ingestion/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { type FiscalEnvironmentTag, type FiscalFetchResult } from './provider.js';
2
+ /**
3
+ * O provedor sintético OPERACIONAL — um servidor com as regras do oficial,
4
+ * incluindo as maneiras pelas quais ele falha.
5
+ *
6
+ * ## Por que o transporte sintético da Fase 1 não bastava
7
+ *
8
+ * `SyntheticAdnTransport` reproduz a mecânica FELIZ: lote, NSU crescente,
9
+ * `ultNSU`/`maxNSU`, esgotamento. Ele provou a ingestão, e continua válido.
10
+ *
11
+ * A Fase 2 precisa provar outra coisa: que o motor sobrevive ao provedor real,
12
+ * que é um serviço público sob carga. Um serviço assim devolve 429 no meio da
13
+ * carteira, 503 durante uma janela de manutenção, 401 quando a procuração
14
+ * venceu e, de vez em quando, um XML que o parser não lê.
15
+ *
16
+ * Cada uma dessas exige um tratamento DIFERENTE — e testar só o caminho feliz
17
+ * deixa exatamente as diferenças sem prova. Este provedor é roteirizável: a
18
+ * falha da terceira chamada é declarada, e o teste mede a decisão que ela
19
+ * produz.
20
+ *
21
+ * ## Ele não fabrica resposta de servidor oficial
22
+ *
23
+ * Ele fabrica um servidor com as REGRAS do oficial, e isso é dito em voz alta.
24
+ * O XML é fixture conforme o XSD publicado; nenhum documento de empresa real
25
+ * passa por aqui.
26
+ */
27
+ export type SyntheticFault =
28
+ /** 429 com `Retry-After`. O motor deve OBEDECER, não estimar. */
29
+ {
30
+ kind: 'rate_limit';
31
+ retryAfterSeconds?: number;
32
+ }
33
+ /** 401: credencial recusada. Não retenta; abre tarefa humana. */
34
+ | {
35
+ kind: 'unauthorized';
36
+ }
37
+ /** 403: o contribuinte não tem direito àquele documento. */
38
+ | {
39
+ kind: 'forbidden';
40
+ }
41
+ /** 5xx: indisponível. Retenta com recuo e conta para o disjuntor. */
42
+ | {
43
+ kind: 'server_error';
44
+ status?: number;
45
+ }
46
+ /** O socket não respondeu dentro do prazo. Pode ter sido processado. */
47
+ | {
48
+ kind: 'timeout';
49
+ }
50
+ /** Resposta entregue, conteúdo ilegível. Vai para a quarentena, não some. */
51
+ | {
52
+ kind: 'malformed';
53
+ }
54
+ /** O MESMO lote da chamada anterior. A deduplicação tem de absorver. */
55
+ | {
56
+ kind: 'replay';
57
+ }
58
+ /** Nada de errado. Serve para posicionar falhas em chamadas específicas. */
59
+ | {
60
+ kind: 'ok';
61
+ };
62
+ export interface SyntheticProviderDocument {
63
+ nsu: string;
64
+ xml: string;
65
+ }
66
+ export interface SyntheticProviderOptions {
67
+ documents: readonly SyntheticProviderDocument[];
68
+ /** Falhas por CHAMADA, em ordem. Esgotado o roteiro, tudo dá certo. */
69
+ script?: readonly SyntheticFault[];
70
+ batchLimit?: number;
71
+ environments?: readonly FiscalEnvironmentTag[];
72
+ /** Relógio injetável, para que a espera medida não dependa da sorte. */
73
+ now?: () => Date;
74
+ }
75
+ export declare class SyntheticFiscalProvider {
76
+ private readonly options;
77
+ /** Chamadas atendidas. O teste de replay e o de retentativa a inspecionam. */
78
+ calls: number;
79
+ /** NSUs entregues em cada chamada, para conferir que não houve lacuna. */
80
+ readonly delivered: string[][];
81
+ private lastBatch;
82
+ private lastResult;
83
+ constructor(options: SyntheticProviderOptions);
84
+ private get docs();
85
+ fetchDfe(input: {
86
+ actorDocument: string;
87
+ fromNsu: string | null;
88
+ batchLimit: number;
89
+ environment: FiscalEnvironmentTag;
90
+ }): Promise<FiscalFetchResult>;
91
+ }
92
+ //# sourceMappingURL=synthetic-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-provider.d.ts","sourceRoot":"","sources":["../../../src/fiscal/ingestion/synthetic-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EAEvB,MAAM,eAAe,CAAC;AAGvB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,MAAM,cAAc;AACxB,iEAAiE;AAC/D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE;AACpD,iEAAiE;GAC/D;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE;AAC1B,4DAA4D;GAC1D;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE;AACvB,qEAAqE;GACnE;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;AAC3C,wEAAwE;GACtE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;AACrB,6EAA6E;GAC3E;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE;AACvB,wEAAwE;GACtE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE;AACpB,4EAA4E;GAC1E;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAEnB,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAChD,uEAAuE;IACvE,MAAM,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/C,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,qBAAa,uBAAuB;IAQtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPpC,8EAA8E;IAC9E,KAAK,SAAK;IACV,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAM;IACpC,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,UAAU,CAAkC;gBAEvB,OAAO,EAAE,wBAAwB;IAE9D,OAAO,KAAK,IAAI,GAKf;IAEK,QAAQ,CAAC,KAAK,EAAE;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,oBAAoB,CAAC;KACnC,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAgG/B"}