@baruk/core 0.4.2 → 0.6.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 (576) 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 +117 -0
  34. package/dist/cjs/clients/ibge.js.map +1 -0
  35. package/dist/cjs/clients/registry/http.js +157 -0
  36. package/dist/cjs/clients/registry/http.js.map +1 -0
  37. package/dist/cjs/clients/registry/ibge-municipios.js +28 -0
  38. package/dist/cjs/clients/registry/ibge-municipios.js.map +1 -0
  39. package/dist/cjs/clients/registry/ibge.js +63 -0
  40. package/dist/cjs/clients/registry/ibge.js.map +1 -0
  41. package/dist/cjs/clients/registry/lookup.js +191 -0
  42. package/dist/cjs/clients/registry/lookup.js.map +1 -0
  43. package/dist/cjs/clients/registry/provider.js +34 -0
  44. package/dist/cjs/clients/registry/provider.js.map +1 -0
  45. package/dist/cjs/clients/registry/resolve.js +47 -0
  46. package/dist/cjs/clients/registry/resolve.js.map +1 -0
  47. package/dist/cjs/clients/registry/serpro.js +149 -0
  48. package/dist/cjs/clients/registry/serpro.js.map +1 -0
  49. package/dist/cjs/clients/registry/service.js +230 -0
  50. package/dist/cjs/clients/registry/service.js.map +1 -0
  51. package/dist/cjs/clients/registry/synthetic.js +165 -0
  52. package/dist/cjs/clients/registry/synthetic.js.map +1 -0
  53. package/dist/cjs/clients/repository.js +190 -9
  54. package/dist/cjs/clients/repository.js.map +1 -1
  55. package/dist/cjs/collection/branding.js +190 -0
  56. package/dist/cjs/collection/branding.js.map +1 -1
  57. package/dist/cjs/collection/clearance-store.js +74 -0
  58. package/dist/cjs/collection/clearance-store.js.map +1 -0
  59. package/dist/cjs/collection/communication-runtime.js +65 -2
  60. package/dist/cjs/collection/communication-runtime.js.map +1 -1
  61. package/dist/cjs/collection/engine.js +20 -0
  62. package/dist/cjs/collection/engine.js.map +1 -1
  63. package/dist/cjs/collection/policy.js +29 -1
  64. package/dist/cjs/collection/policy.js.map +1 -1
  65. package/dist/cjs/communication/clearance.js +18 -0
  66. package/dist/cjs/communication/clearance.js.map +1 -0
  67. package/dist/cjs/communication/dry-run-scenario.js +5 -0
  68. package/dist/cjs/communication/dry-run-scenario.js.map +1 -1
  69. package/dist/cjs/communication/engine.js +12 -0
  70. package/dist/cjs/communication/engine.js.map +1 -1
  71. package/dist/cjs/communication/policy.js.map +1 -1
  72. package/dist/cjs/competence/business-days.js +155 -0
  73. package/dist/cjs/competence/business-days.js.map +1 -0
  74. package/dist/cjs/competence/catalog-validation.js +174 -0
  75. package/dist/cjs/competence/catalog-validation.js.map +1 -0
  76. package/dist/cjs/competence/obligation-preview.js +190 -0
  77. package/dist/cjs/competence/obligation-preview.js.map +1 -0
  78. package/dist/cjs/competence/repository.js +330 -17
  79. package/dist/cjs/competence/repository.js.map +1 -1
  80. package/dist/cjs/dashboard/pilot-panel.js +90 -0
  81. package/dist/cjs/dashboard/pilot-panel.js.map +1 -0
  82. package/dist/cjs/dashboard/repository.js +11 -1
  83. package/dist/cjs/dashboard/repository.js.map +1 -1
  84. package/dist/cjs/db/client.js +17 -11
  85. package/dist/cjs/db/client.js.map +1 -1
  86. package/dist/cjs/db/provision-e2e-identity.js +116 -0
  87. package/dist/cjs/db/provision-e2e-identity.js.map +1 -0
  88. package/dist/cjs/fiscal/applicability.js +164 -0
  89. package/dist/cjs/fiscal/applicability.js.map +1 -0
  90. package/dist/cjs/fiscal/collection/authorization.js +186 -0
  91. package/dist/cjs/fiscal/collection/authorization.js.map +1 -0
  92. package/dist/cjs/fiscal/collection/competence.js +97 -0
  93. package/dist/cjs/fiscal/collection/competence.js.map +1 -0
  94. package/dist/cjs/fiscal/collection/first-contact.js +204 -0
  95. package/dist/cjs/fiscal/collection/first-contact.js.map +1 -0
  96. package/dist/cjs/fiscal/collection/plan.js +122 -0
  97. package/dist/cjs/fiscal/collection/plan.js.map +1 -0
  98. package/dist/cjs/fiscal/conditions.js +198 -0
  99. package/dist/cjs/fiscal/conditions.js.map +1 -0
  100. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js +390 -0
  101. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  102. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js +108 -0
  103. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  104. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js +220 -0
  105. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  106. package/dist/cjs/fiscal/coverage/model.js +137 -0
  107. package/dist/cjs/fiscal/coverage/model.js.map +1 -0
  108. package/dist/cjs/fiscal/coverage/requests.js +99 -0
  109. package/dist/cjs/fiscal/coverage/requests.js.map +1 -0
  110. package/dist/cjs/fiscal/credentials/inspect.js +182 -0
  111. package/dist/cjs/fiscal/credentials/inspect.js.map +1 -0
  112. package/dist/cjs/fiscal/credentials/material.js +168 -0
  113. package/dist/cjs/fiscal/credentials/material.js.map +1 -0
  114. package/dist/cjs/fiscal/credentials/onboarding.js +266 -0
  115. package/dist/cjs/fiscal/credentials/onboarding.js.map +1 -0
  116. package/dist/cjs/fiscal/credentials/readiness.js +190 -0
  117. package/dist/cjs/fiscal/credentials/readiness.js.map +1 -0
  118. package/dist/cjs/fiscal/eligibility.js +199 -0
  119. package/dist/cjs/fiscal/eligibility.js.map +1 -0
  120. package/dist/cjs/fiscal/enrollment.js +134 -0
  121. package/dist/cjs/fiscal/enrollment.js.map +1 -0
  122. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js +128 -0
  123. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  124. package/dist/cjs/fiscal/ingestion/adn-transport.js +229 -0
  125. package/dist/cjs/fiscal/ingestion/adn-transport.js.map +1 -0
  126. package/dist/cjs/fiscal/ingestion/direction.js +36 -0
  127. package/dist/cjs/fiscal/ingestion/direction.js.map +1 -0
  128. package/dist/cjs/fiscal/ingestion/nfse-adn.js +228 -0
  129. package/dist/cjs/fiscal/ingestion/nfse-adn.js.map +1 -0
  130. package/dist/cjs/fiscal/ingestion/pipeline.js +704 -0
  131. package/dist/cjs/fiscal/ingestion/pipeline.js.map +1 -0
  132. package/dist/cjs/fiscal/ingestion/provider.js +51 -0
  133. package/dist/cjs/fiscal/ingestion/provider.js.map +1 -0
  134. package/dist/cjs/fiscal/ingestion/repository.js +132 -0
  135. package/dist/cjs/fiscal/ingestion/repository.js.map +1 -0
  136. package/dist/cjs/fiscal/ingestion/synthetic-provider.js +103 -0
  137. package/dist/cjs/fiscal/ingestion/synthetic-provider.js.map +1 -0
  138. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js +13 -0
  139. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  140. package/dist/cjs/fiscal/ingestion/synthetic-transport.js +61 -0
  141. package/dist/cjs/fiscal/ingestion/synthetic-transport.js.map +1 -0
  142. package/dist/cjs/fiscal/ingestion/xml-reader.js +121 -0
  143. package/dist/cjs/fiscal/ingestion/xml-reader.js.map +1 -0
  144. package/dist/cjs/fiscal/repository.js +470 -0
  145. package/dist/cjs/fiscal/repository.js.map +1 -0
  146. package/dist/cjs/fiscal/sync/circuit.js +124 -0
  147. package/dist/cjs/fiscal/sync/circuit.js.map +1 -0
  148. package/dist/cjs/fiscal/sync/intervention.js +140 -0
  149. package/dist/cjs/fiscal/sync/intervention.js.map +1 -0
  150. package/dist/cjs/fiscal/sync/lease.js +146 -0
  151. package/dist/cjs/fiscal/sync/lease.js.map +1 -0
  152. package/dist/cjs/fiscal/sync/observability.js +244 -0
  153. package/dist/cjs/fiscal/sync/observability.js.map +1 -0
  154. package/dist/cjs/fiscal/sync/orchestrator.js +490 -0
  155. package/dist/cjs/fiscal/sync/orchestrator.js.map +1 -0
  156. package/dist/cjs/fiscal/sync/policy.js +143 -0
  157. package/dist/cjs/fiscal/sync/policy.js.map +1 -0
  158. package/dist/cjs/fiscal/sync/reprocess.js +241 -0
  159. package/dist/cjs/fiscal/sync/reprocess.js.map +1 -0
  160. package/dist/cjs/fiscal/sync/retry.js +183 -0
  161. package/dist/cjs/fiscal/sync/retry.js.map +1 -0
  162. package/dist/cjs/fiscal/sync/secret-boundary.js +123 -0
  163. package/dist/cjs/fiscal/sync/secret-boundary.js.map +1 -0
  164. package/dist/cjs/fiscal/transport/https.js +309 -0
  165. package/dist/cjs/fiscal/transport/https.js.map +1 -0
  166. package/dist/cjs/fiscal/transport/synthetic-tls.js +380 -0
  167. package/dist/cjs/fiscal/transport/synthetic-tls.js.map +1 -0
  168. package/dist/cjs/fiscal/transport/types.js +93 -0
  169. package/dist/cjs/fiscal/transport/types.js.map +1 -0
  170. package/dist/cjs/import/br-documents.js +85 -0
  171. package/dist/cjs/import/br-documents.js.map +1 -0
  172. package/dist/cjs/import/clients-import.js +347 -40
  173. package/dist/cjs/import/clients-import.js.map +1 -1
  174. package/dist/cjs/index.js +461 -73
  175. package/dist/cjs/index.js.map +1 -1
  176. package/dist/cjs/legal/documents.js +164 -19
  177. package/dist/cjs/legal/documents.js.map +1 -1
  178. package/dist/cjs/legal/index.js +3 -1
  179. package/dist/cjs/legal/index.js.map +1 -1
  180. package/dist/cjs/legal/types.js.map +1 -1
  181. package/dist/cjs/onboarding/persistence.js +4 -4
  182. package/dist/cjs/onboarding/persistence.js.map +1 -1
  183. package/dist/cjs/pilot/go-live-checklist.js +212 -0
  184. package/dist/cjs/pilot/go-live-checklist.js.map +1 -0
  185. package/dist/cjs/pilot/milestone.js +79 -0
  186. package/dist/cjs/pilot/milestone.js.map +1 -0
  187. package/dist/cjs/platform/capabilities.js +173 -0
  188. package/dist/cjs/platform/capabilities.js.map +1 -0
  189. package/dist/cjs/platform/job-contract.js +411 -0
  190. package/dist/cjs/platform/job-contract.js.map +1 -0
  191. package/dist/cjs/rbac/catalog.js +110 -0
  192. package/dist/cjs/rbac/catalog.js.map +1 -1
  193. package/dist/cjs/subscription-billing/index.js +9 -1
  194. package/dist/cjs/subscription-billing/index.js.map +1 -1
  195. package/dist/cjs/subscription-billing/platform-exemption.js +121 -0
  196. package/dist/cjs/subscription-billing/platform-exemption.js.map +1 -0
  197. package/dist/cjs/subscription-billing/service.js +246 -78
  198. package/dist/cjs/subscription-billing/service.js.map +1 -1
  199. package/dist/cjs/tenancy/features.js +131 -0
  200. package/dist/cjs/tenancy/features.js.map +1 -0
  201. package/dist/cjs/tenancy/settings.js +224 -0
  202. package/dist/cjs/tenancy/settings.js.map +1 -0
  203. package/dist/cjs/users/repository.js +24 -1
  204. package/dist/cjs/users/repository.js.map +1 -1
  205. package/dist/cjs/vault/repository.js +92 -5
  206. package/dist/cjs/vault/repository.js.map +1 -1
  207. package/dist/clients/ibge.d.ts +17 -0
  208. package/dist/clients/ibge.d.ts.map +1 -0
  209. package/dist/clients/ibge.js +112 -0
  210. package/dist/clients/ibge.js.map +1 -0
  211. package/dist/clients/registry/http.d.ts +61 -0
  212. package/dist/clients/registry/http.d.ts.map +1 -0
  213. package/dist/clients/registry/http.js +151 -0
  214. package/dist/clients/registry/http.js.map +1 -0
  215. package/dist/clients/registry/ibge-municipios.d.ts +25 -0
  216. package/dist/clients/registry/ibge-municipios.d.ts.map +1 -0
  217. package/dist/clients/registry/ibge-municipios.js +25 -0
  218. package/dist/clients/registry/ibge-municipios.js.map +1 -0
  219. package/dist/clients/registry/ibge.d.ts +62 -0
  220. package/dist/clients/registry/ibge.d.ts.map +1 -0
  221. package/dist/clients/registry/ibge.js +57 -0
  222. package/dist/clients/registry/ibge.js.map +1 -0
  223. package/dist/clients/registry/lookup.d.ts +94 -0
  224. package/dist/clients/registry/lookup.d.ts.map +1 -0
  225. package/dist/clients/registry/lookup.js +184 -0
  226. package/dist/clients/registry/lookup.js.map +1 -0
  227. package/dist/clients/registry/provider.d.ts +124 -0
  228. package/dist/clients/registry/provider.d.ts.map +1 -0
  229. package/dist/clients/registry/provider.js +39 -0
  230. package/dist/clients/registry/provider.js.map +1 -0
  231. package/dist/clients/registry/resolve.d.ts +36 -0
  232. package/dist/clients/registry/resolve.d.ts.map +1 -0
  233. package/dist/clients/registry/resolve.js +44 -0
  234. package/dist/clients/registry/resolve.js.map +1 -0
  235. package/dist/clients/registry/serpro.d.ts +57 -0
  236. package/dist/clients/registry/serpro.d.ts.map +1 -0
  237. package/dist/clients/registry/serpro.js +143 -0
  238. package/dist/clients/registry/serpro.js.map +1 -0
  239. package/dist/clients/registry/service.d.ts +59 -0
  240. package/dist/clients/registry/service.d.ts.map +1 -0
  241. package/dist/clients/registry/service.js +225 -0
  242. package/dist/clients/registry/service.js.map +1 -0
  243. package/dist/clients/registry/synthetic.d.ts +30 -0
  244. package/dist/clients/registry/synthetic.d.ts.map +1 -0
  245. package/dist/clients/registry/synthetic.js +161 -0
  246. package/dist/clients/registry/synthetic.js.map +1 -0
  247. package/dist/clients/repository.d.ts +158 -0
  248. package/dist/clients/repository.d.ts.map +1 -1
  249. package/dist/clients/repository.js +186 -9
  250. package/dist/clients/repository.js.map +1 -1
  251. package/dist/collection/branding.d.ts +65 -0
  252. package/dist/collection/branding.d.ts.map +1 -1
  253. package/dist/collection/branding.js +186 -0
  254. package/dist/collection/branding.js.map +1 -1
  255. package/dist/collection/clearance-store.d.ts +39 -0
  256. package/dist/collection/clearance-store.d.ts.map +1 -0
  257. package/dist/collection/clearance-store.js +69 -0
  258. package/dist/collection/clearance-store.js.map +1 -0
  259. package/dist/collection/communication-runtime.d.ts +37 -0
  260. package/dist/collection/communication-runtime.d.ts.map +1 -1
  261. package/dist/collection/communication-runtime.js +63 -1
  262. package/dist/collection/communication-runtime.js.map +1 -1
  263. package/dist/collection/engine.d.ts +23 -0
  264. package/dist/collection/engine.d.ts.map +1 -1
  265. package/dist/collection/engine.js +20 -0
  266. package/dist/collection/engine.js.map +1 -1
  267. package/dist/collection/policy.d.ts +25 -0
  268. package/dist/collection/policy.d.ts.map +1 -1
  269. package/dist/collection/policy.js +27 -0
  270. package/dist/collection/policy.js.map +1 -1
  271. package/dist/communication/clearance.d.ts +53 -0
  272. package/dist/communication/clearance.d.ts.map +1 -0
  273. package/dist/communication/clearance.js +15 -0
  274. package/dist/communication/clearance.js.map +1 -0
  275. package/dist/communication/dry-run-scenario.d.ts.map +1 -1
  276. package/dist/communication/dry-run-scenario.js +5 -0
  277. package/dist/communication/dry-run-scenario.js.map +1 -1
  278. package/dist/communication/engine.d.ts +10 -0
  279. package/dist/communication/engine.d.ts.map +1 -1
  280. package/dist/communication/engine.js +12 -0
  281. package/dist/communication/engine.js.map +1 -1
  282. package/dist/communication/policy.d.ts +16 -0
  283. package/dist/communication/policy.d.ts.map +1 -1
  284. package/dist/communication/policy.js.map +1 -1
  285. package/dist/competence/business-days.d.ts +51 -0
  286. package/dist/competence/business-days.d.ts.map +1 -0
  287. package/dist/competence/business-days.js +145 -0
  288. package/dist/competence/business-days.js.map +1 -0
  289. package/dist/competence/catalog-validation.d.ts +86 -0
  290. package/dist/competence/catalog-validation.d.ts.map +1 -0
  291. package/dist/competence/catalog-validation.js +168 -0
  292. package/dist/competence/catalog-validation.js.map +1 -0
  293. package/dist/competence/obligation-preview.d.ts +103 -0
  294. package/dist/competence/obligation-preview.d.ts.map +1 -0
  295. package/dist/competence/obligation-preview.js +184 -0
  296. package/dist/competence/obligation-preview.js.map +1 -0
  297. package/dist/competence/repository.d.ts +139 -1
  298. package/dist/competence/repository.d.ts.map +1 -1
  299. package/dist/competence/repository.js +325 -17
  300. package/dist/competence/repository.js.map +1 -1
  301. package/dist/dashboard/pilot-panel.d.ts +100 -0
  302. package/dist/dashboard/pilot-panel.d.ts.map +1 -0
  303. package/dist/dashboard/pilot-panel.js +87 -0
  304. package/dist/dashboard/pilot-panel.js.map +1 -0
  305. package/dist/dashboard/repository.d.ts.map +1 -1
  306. package/dist/dashboard/repository.js +11 -1
  307. package/dist/dashboard/repository.js.map +1 -1
  308. package/dist/db/client.d.ts +45 -0
  309. package/dist/db/client.d.ts.map +1 -1
  310. package/dist/db/client.js +16 -11
  311. package/dist/db/client.js.map +1 -1
  312. package/dist/db/migrate.d.ts +36 -1
  313. package/dist/db/migrate.d.ts.map +1 -1
  314. package/dist/db/migrate.js +199 -32
  315. package/dist/db/migrate.js.map +1 -1
  316. package/dist/db/provision-e2e-identity.d.ts +2 -0
  317. package/dist/db/provision-e2e-identity.d.ts.map +1 -0
  318. package/dist/db/provision-e2e-identity.js +114 -0
  319. package/dist/db/provision-e2e-identity.js.map +1 -0
  320. package/dist/fiscal/applicability.d.ts +73 -0
  321. package/dist/fiscal/applicability.d.ts.map +1 -0
  322. package/dist/fiscal/applicability.js +160 -0
  323. package/dist/fiscal/applicability.js.map +1 -0
  324. package/dist/fiscal/collection/authorization.d.ts +152 -0
  325. package/dist/fiscal/collection/authorization.d.ts.map +1 -0
  326. package/dist/fiscal/collection/authorization.js +178 -0
  327. package/dist/fiscal/collection/authorization.js.map +1 -0
  328. package/dist/fiscal/collection/competence.d.ts +66 -0
  329. package/dist/fiscal/collection/competence.d.ts.map +1 -0
  330. package/dist/fiscal/collection/competence.js +90 -0
  331. package/dist/fiscal/collection/competence.js.map +1 -0
  332. package/dist/fiscal/collection/first-contact.d.ts +103 -0
  333. package/dist/fiscal/collection/first-contact.d.ts.map +1 -0
  334. package/dist/fiscal/collection/first-contact.js +201 -0
  335. package/dist/fiscal/collection/first-contact.js.map +1 -0
  336. package/dist/fiscal/collection/plan.d.ts +74 -0
  337. package/dist/fiscal/collection/plan.d.ts.map +1 -0
  338. package/dist/fiscal/collection/plan.js +119 -0
  339. package/dist/fiscal/collection/plan.js.map +1 -0
  340. package/dist/fiscal/conditions.d.ts +99 -0
  341. package/dist/fiscal/conditions.d.ts.map +1 -0
  342. package/dist/fiscal/conditions.js +190 -0
  343. package/dist/fiscal/conditions.js.map +1 -0
  344. package/dist/fiscal/contracts/nfse-adn-contract.d.ts +315 -0
  345. package/dist/fiscal/contracts/nfse-adn-contract.d.ts.map +1 -0
  346. package/dist/fiscal/contracts/nfse-adn-contract.js +386 -0
  347. package/dist/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  348. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts +13 -0
  349. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts.map +1 -0
  350. package/dist/fiscal/contracts/nfse-adn-endpoint.js +103 -0
  351. package/dist/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  352. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts +77 -0
  353. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts.map +1 -0
  354. package/dist/fiscal/contracts/nfse-adn-envelope.js +215 -0
  355. package/dist/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  356. package/dist/fiscal/coverage/model.d.ts +114 -0
  357. package/dist/fiscal/coverage/model.d.ts.map +1 -0
  358. package/dist/fiscal/coverage/model.js +130 -0
  359. package/dist/fiscal/coverage/model.js.map +1 -0
  360. package/dist/fiscal/coverage/requests.d.ts +70 -0
  361. package/dist/fiscal/coverage/requests.d.ts.map +1 -0
  362. package/dist/fiscal/coverage/requests.js +95 -0
  363. package/dist/fiscal/coverage/requests.js.map +1 -0
  364. package/dist/fiscal/credentials/inspect.d.ts +114 -0
  365. package/dist/fiscal/credentials/inspect.d.ts.map +1 -0
  366. package/dist/fiscal/credentials/inspect.js +178 -0
  367. package/dist/fiscal/credentials/inspect.js.map +1 -0
  368. package/dist/fiscal/credentials/material.d.ts +81 -0
  369. package/dist/fiscal/credentials/material.d.ts.map +1 -0
  370. package/dist/fiscal/credentials/material.js +164 -0
  371. package/dist/fiscal/credentials/material.js.map +1 -0
  372. package/dist/fiscal/credentials/onboarding.d.ts +119 -0
  373. package/dist/fiscal/credentials/onboarding.d.ts.map +1 -0
  374. package/dist/fiscal/credentials/onboarding.js +259 -0
  375. package/dist/fiscal/credentials/onboarding.js.map +1 -0
  376. package/dist/fiscal/credentials/readiness.d.ts +119 -0
  377. package/dist/fiscal/credentials/readiness.d.ts.map +1 -0
  378. package/dist/fiscal/credentials/readiness.js +186 -0
  379. package/dist/fiscal/credentials/readiness.js.map +1 -0
  380. package/dist/fiscal/eligibility.d.ts +106 -0
  381. package/dist/fiscal/eligibility.d.ts.map +1 -0
  382. package/dist/fiscal/eligibility.js +194 -0
  383. package/dist/fiscal/eligibility.js.map +1 -0
  384. package/dist/fiscal/enrollment.d.ts +91 -0
  385. package/dist/fiscal/enrollment.d.ts.map +1 -0
  386. package/dist/fiscal/enrollment.js +126 -0
  387. package/dist/fiscal/enrollment.js.map +1 -0
  388. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts +57 -0
  389. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts.map +1 -0
  390. package/dist/fiscal/ingestion/__fixtures__/nfse.js +121 -0
  391. package/dist/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  392. package/dist/fiscal/ingestion/adn-transport.d.ts +123 -0
  393. package/dist/fiscal/ingestion/adn-transport.d.ts.map +1 -0
  394. package/dist/fiscal/ingestion/adn-transport.js +220 -0
  395. package/dist/fiscal/ingestion/adn-transport.js.map +1 -0
  396. package/dist/fiscal/ingestion/direction.d.ts +60 -0
  397. package/dist/fiscal/ingestion/direction.d.ts.map +1 -0
  398. package/dist/fiscal/ingestion/direction.js +32 -0
  399. package/dist/fiscal/ingestion/direction.js.map +1 -0
  400. package/dist/fiscal/ingestion/nfse-adn.d.ts +91 -0
  401. package/dist/fiscal/ingestion/nfse-adn.d.ts.map +1 -0
  402. package/dist/fiscal/ingestion/nfse-adn.js +222 -0
  403. package/dist/fiscal/ingestion/nfse-adn.js.map +1 -0
  404. package/dist/fiscal/ingestion/pipeline.d.ts +168 -0
  405. package/dist/fiscal/ingestion/pipeline.d.ts.map +1 -0
  406. package/dist/fiscal/ingestion/pipeline.js +699 -0
  407. package/dist/fiscal/ingestion/pipeline.js.map +1 -0
  408. package/dist/fiscal/ingestion/provider.d.ts +206 -0
  409. package/dist/fiscal/ingestion/provider.d.ts.map +1 -0
  410. package/dist/fiscal/ingestion/provider.js +47 -0
  411. package/dist/fiscal/ingestion/provider.js.map +1 -0
  412. package/dist/fiscal/ingestion/repository.d.ts +82 -0
  413. package/dist/fiscal/ingestion/repository.d.ts.map +1 -0
  414. package/dist/fiscal/ingestion/repository.js +127 -0
  415. package/dist/fiscal/ingestion/repository.js.map +1 -0
  416. package/dist/fiscal/ingestion/synthetic-provider.d.ts +92 -0
  417. package/dist/fiscal/ingestion/synthetic-provider.d.ts.map +1 -0
  418. package/dist/fiscal/ingestion/synthetic-provider.js +99 -0
  419. package/dist/fiscal/ingestion/synthetic-provider.js.map +1 -0
  420. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts +19 -0
  421. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts.map +1 -0
  422. package/dist/fiscal/ingestion/synthetic-transport-types.js +9 -0
  423. package/dist/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  424. package/dist/fiscal/ingestion/synthetic-transport.d.ts +55 -0
  425. package/dist/fiscal/ingestion/synthetic-transport.d.ts.map +1 -0
  426. package/dist/fiscal/ingestion/synthetic-transport.js +57 -0
  427. package/dist/fiscal/ingestion/synthetic-transport.js.map +1 -0
  428. package/dist/fiscal/ingestion/xml-reader.d.ts +55 -0
  429. package/dist/fiscal/ingestion/xml-reader.d.ts.map +1 -0
  430. package/dist/fiscal/ingestion/xml-reader.js +112 -0
  431. package/dist/fiscal/ingestion/xml-reader.js.map +1 -0
  432. package/dist/fiscal/repository.d.ts +220 -0
  433. package/dist/fiscal/repository.d.ts.map +1 -0
  434. package/dist/fiscal/repository.js +449 -0
  435. package/dist/fiscal/repository.js.map +1 -0
  436. package/dist/fiscal/sync/circuit.d.ts +86 -0
  437. package/dist/fiscal/sync/circuit.d.ts.map +1 -0
  438. package/dist/fiscal/sync/circuit.js +118 -0
  439. package/dist/fiscal/sync/circuit.js.map +1 -0
  440. package/dist/fiscal/sync/intervention.d.ts +81 -0
  441. package/dist/fiscal/sync/intervention.d.ts.map +1 -0
  442. package/dist/fiscal/sync/intervention.js +135 -0
  443. package/dist/fiscal/sync/intervention.js.map +1 -0
  444. package/dist/fiscal/sync/lease.d.ts +118 -0
  445. package/dist/fiscal/sync/lease.d.ts.map +1 -0
  446. package/dist/fiscal/sync/lease.js +139 -0
  447. package/dist/fiscal/sync/lease.js.map +1 -0
  448. package/dist/fiscal/sync/observability.d.ts +148 -0
  449. package/dist/fiscal/sync/observability.d.ts.map +1 -0
  450. package/dist/fiscal/sync/observability.js +239 -0
  451. package/dist/fiscal/sync/observability.js.map +1 -0
  452. package/dist/fiscal/sync/orchestrator.d.ts +132 -0
  453. package/dist/fiscal/sync/orchestrator.d.ts.map +1 -0
  454. package/dist/fiscal/sync/orchestrator.js +487 -0
  455. package/dist/fiscal/sync/orchestrator.js.map +1 -0
  456. package/dist/fiscal/sync/policy.d.ts +87 -0
  457. package/dist/fiscal/sync/policy.d.ts.map +1 -0
  458. package/dist/fiscal/sync/policy.js +136 -0
  459. package/dist/fiscal/sync/policy.js.map +1 -0
  460. package/dist/fiscal/sync/reprocess.d.ts +76 -0
  461. package/dist/fiscal/sync/reprocess.d.ts.map +1 -0
  462. package/dist/fiscal/sync/reprocess.js +237 -0
  463. package/dist/fiscal/sync/reprocess.js.map +1 -0
  464. package/dist/fiscal/sync/retry.d.ts +82 -0
  465. package/dist/fiscal/sync/retry.d.ts.map +1 -0
  466. package/dist/fiscal/sync/retry.js +176 -0
  467. package/dist/fiscal/sync/retry.js.map +1 -0
  468. package/dist/fiscal/sync/secret-boundary.d.ts +169 -0
  469. package/dist/fiscal/sync/secret-boundary.d.ts.map +1 -0
  470. package/dist/fiscal/sync/secret-boundary.js +116 -0
  471. package/dist/fiscal/sync/secret-boundary.js.map +1 -0
  472. package/dist/fiscal/transport/https.d.ts +86 -0
  473. package/dist/fiscal/transport/https.d.ts.map +1 -0
  474. package/dist/fiscal/transport/https.js +303 -0
  475. package/dist/fiscal/transport/https.js.map +1 -0
  476. package/dist/fiscal/transport/synthetic-tls.d.ts +99 -0
  477. package/dist/fiscal/transport/synthetic-tls.d.ts.map +1 -0
  478. package/dist/fiscal/transport/synthetic-tls.js +374 -0
  479. package/dist/fiscal/transport/synthetic-tls.js.map +1 -0
  480. package/dist/fiscal/transport/types.d.ts +134 -0
  481. package/dist/fiscal/transport/types.d.ts.map +1 -0
  482. package/dist/fiscal/transport/types.js +88 -0
  483. package/dist/fiscal/transport/types.js.map +1 -0
  484. package/dist/import/br-documents.d.ts +26 -0
  485. package/dist/import/br-documents.d.ts.map +1 -0
  486. package/dist/import/br-documents.js +78 -0
  487. package/dist/import/br-documents.js.map +1 -0
  488. package/dist/import/clients-import.d.ts +122 -4
  489. package/dist/import/clients-import.d.ts.map +1 -1
  490. package/dist/import/clients-import.js +341 -41
  491. package/dist/import/clients-import.js.map +1 -1
  492. package/dist/index.d.ts +145 -13
  493. package/dist/index.d.ts.map +1 -1
  494. package/dist/index.js +120 -7
  495. package/dist/index.js.map +1 -1
  496. package/dist/legal/documents.d.ts +12 -1
  497. package/dist/legal/documents.d.ts.map +1 -1
  498. package/dist/legal/documents.js +162 -18
  499. package/dist/legal/documents.js.map +1 -1
  500. package/dist/legal/index.d.ts +2 -2
  501. package/dist/legal/index.d.ts.map +1 -1
  502. package/dist/legal/index.js +1 -1
  503. package/dist/legal/index.js.map +1 -1
  504. package/dist/legal/types.d.ts +114 -2
  505. package/dist/legal/types.d.ts.map +1 -1
  506. package/dist/legal/types.js.map +1 -1
  507. package/dist/onboarding/persistence.d.ts +10 -1
  508. package/dist/onboarding/persistence.d.ts.map +1 -1
  509. package/dist/onboarding/persistence.js +4 -4
  510. package/dist/onboarding/persistence.js.map +1 -1
  511. package/dist/pilot/go-live-checklist.d.ts +41 -0
  512. package/dist/pilot/go-live-checklist.d.ts.map +1 -0
  513. package/dist/pilot/go-live-checklist.js +209 -0
  514. package/dist/pilot/go-live-checklist.js.map +1 -0
  515. package/dist/pilot/milestone.d.ts +56 -0
  516. package/dist/pilot/milestone.d.ts.map +1 -0
  517. package/dist/pilot/milestone.js +74 -0
  518. package/dist/pilot/milestone.js.map +1 -0
  519. package/dist/platform/capabilities.d.ts +88 -0
  520. package/dist/platform/capabilities.d.ts.map +1 -0
  521. package/dist/platform/capabilities.js +169 -0
  522. package/dist/platform/capabilities.js.map +1 -0
  523. package/dist/platform/job-contract.d.ts +232 -0
  524. package/dist/platform/job-contract.d.ts.map +1 -0
  525. package/dist/platform/job-contract.js +403 -0
  526. package/dist/platform/job-contract.js.map +1 -0
  527. package/dist/rbac/catalog.d.ts.map +1 -1
  528. package/dist/rbac/catalog.js +110 -0
  529. package/dist/rbac/catalog.js.map +1 -1
  530. package/dist/subscription-billing/index.d.ts +8 -5
  531. package/dist/subscription-billing/index.d.ts.map +1 -1
  532. package/dist/subscription-billing/index.js +4 -3
  533. package/dist/subscription-billing/index.js.map +1 -1
  534. package/dist/subscription-billing/platform-exemption.d.ts +89 -0
  535. package/dist/subscription-billing/platform-exemption.d.ts.map +1 -0
  536. package/dist/subscription-billing/platform-exemption.js +113 -0
  537. package/dist/subscription-billing/platform-exemption.js.map +1 -0
  538. package/dist/subscription-billing/service.d.ts +74 -0
  539. package/dist/subscription-billing/service.d.ts.map +1 -1
  540. package/dist/subscription-billing/service.js +182 -16
  541. package/dist/subscription-billing/service.js.map +1 -1
  542. package/dist/tenancy/features.d.ts +69 -0
  543. package/dist/tenancy/features.d.ts.map +1 -0
  544. package/dist/tenancy/features.js +123 -0
  545. package/dist/tenancy/features.js.map +1 -0
  546. package/dist/tenancy/settings.d.ts +63 -0
  547. package/dist/tenancy/settings.d.ts.map +1 -0
  548. package/dist/tenancy/settings.js +218 -0
  549. package/dist/tenancy/settings.js.map +1 -0
  550. package/dist/users/repository.d.ts +16 -1
  551. package/dist/users/repository.d.ts.map +1 -1
  552. package/dist/users/repository.js +24 -1
  553. package/dist/users/repository.js.map +1 -1
  554. package/dist/vault/repository.d.ts +69 -1
  555. package/dist/vault/repository.d.ts.map +1 -1
  556. package/dist/vault/repository.js +88 -5
  557. package/dist/vault/repository.js.map +1 -1
  558. package/package.json +10 -2
  559. package/src/db/migrations/0045_role_write_scope.sql +122 -0
  560. package/src/db/migrations/0046_pilot_activation_model.sql +184 -0
  561. package/src/db/migrations/0047_recipient_clearance.sql +89 -0
  562. package/src/db/migrations/0048_item_type_note.sql +16 -0
  563. package/src/db/migrations/0049_national_fiscal_engine.sql +279 -0
  564. package/src/db/migrations/0050_fiscal_vocabulary_readonly.sql +29 -0
  565. package/src/db/migrations/0051_seed_rules_from_catalog.sql +72 -0
  566. package/src/db/migrations/0052_fiscal_rule_delete_scope.sql +57 -0
  567. package/src/db/migrations/0053_rule_validity_lower_bound.sql +44 -0
  568. package/src/db/migrations/0054_tenant_profile_and_rule_source.sql +89 -0
  569. package/src/db/migrations/0055_job_capability_contract.sql +300 -0
  570. package/src/db/migrations/0056_fiscal_document_ingestion.sql +337 -0
  571. package/src/db/migrations/0057_fiscal_pending_event_inbox.sql +228 -0
  572. package/src/db/migrations/0058_fiscal_operational_engine.sql +516 -0
  573. package/src/db/migrations/0059_fiscal_contract_version.sql +59 -0
  574. package/src/db/migrations/0060_fiscal_credential_vault_and_run_authorization.sql +321 -0
  575. package/src/db/migrations/0061_client_official_registry_provenance.sql +193 -0
  576. package/src/db/migrations/0062_first_contact_and_capability_truth.sql +119 -0
@@ -0,0 +1,88 @@
1
+ /**
2
+ * O contrato de CAPACIDADE entre a API e as telas que a consomem.
3
+ *
4
+ * ## O defeito que isto existe para fechar
5
+ *
6
+ * O console publica na Vercel no instante do merge. A API publica na Render
7
+ * depois — build da imagem, `db:predeploy`, health check. Entre um e outro
8
+ * existe uma janela de minutos em que o navegador carrega a tela NOVA e fala
9
+ * com a API VELHA. Na Onda A isso não foi hipótese: nove rotas
10
+ * (`/v1/tenant/profile`, `/v1/tenant/features`, `/v1/tenant/setup`,
11
+ * `/v1/fiscal/governance` e as irmãs) existiram na tela antes de existirem no
12
+ * servidor.
13
+ *
14
+ * O que a pessoa via nessa janela era a pior variante possível: um 404 da API
15
+ * que o Next transforma em tela genérica de erro, com `digest` e pedido de
16
+ * abrir chamado — o mesmo modo de falha que o `SemAcesso` corrigiu para RBAC.
17
+ * Não é erro do sistema: é uma versão que ainda não subiu.
18
+ *
19
+ * ## Por que capacidade, e não SHA
20
+ *
21
+ * Comparar o commit servido com o commit esperado acopla a tela ao processo de
22
+ * release: qualquer publicação — inclusive uma que não muda nada relevante —
23
+ * passa a poder derrubar a tela, e um hotfix na API com outro SHA reprovaria
24
+ * um frontend perfeitamente compatível. O que a tela precisa saber não é QUAL
25
+ * build está no ar, e sim se aquele build SABE responder o que ela vai pedir.
26
+ *
27
+ * Por isso o contrato é uma lista de nomes. A API declara o que serve; a tela
28
+ * declara o que exige. Compatibilidade é continência de conjunto, não
29
+ * igualdade de versão — e é isso que torna o backend-first possível: a API
30
+ * publica a capacidade ANTES da tela existir, e nada quebra porque ninguém
31
+ * ainda a exige.
32
+ *
33
+ * ## Regras de evolução
34
+ *
35
+ * - Uma chave é imutável. Mudança incompatível ganha `.v2`; a `.v1` só sai
36
+ * quando nenhum frontend em produção ainda a exigir.
37
+ * - A API nunca declara capacidade que não implementa — o guarda
38
+ * `capabilities.test.ts` confere cada rota declarada contra as rotas
39
+ * efetivamente montadas no Fastify. Declarar sem implementar seria o mesmo
40
+ * defeito de novo, com um passo a mais de indireção.
41
+ * - Ausência é resposta legítima. A tela degrada para "aguardando a API", não
42
+ * para erro.
43
+ */
44
+ /**
45
+ * Versão do FORMATO da resposta de `/v1/capabilities` — não das capacidades.
46
+ *
47
+ * Muda apenas se a forma do documento mudar. Um cliente que não reconhece a
48
+ * versão trata tudo como indisponível: fail-closed é a única leitura segura de
49
+ * um contrato que não se sabe ler.
50
+ */
51
+ export declare const CAPABILITY_CONTRACT_VERSION = 1;
52
+ export interface ApiCapabilityDef {
53
+ /** `<produto>.<recurso>.v<N>`. Imutável depois de publicada. */
54
+ key: string;
55
+ label: string;
56
+ /**
57
+ * Rotas que compõem a capacidade, no formato do Fastify (`/v1/x/:id`).
58
+ *
59
+ * Não é documentação: é o que o guarda executa. Uma capacidade cujas rotas
60
+ * não existem no app montado reprova o build.
61
+ */
62
+ routes: readonly string[];
63
+ }
64
+ /**
65
+ * O que ESTE build da API serve.
66
+ *
67
+ * A Onda A entra inteira porque foi ela quem sofreu o skew. Capacidades
68
+ * anteriores não estão aqui de propósito: uma tela que nunca conheceu janela
69
+ * de incompatibilidade não ganha um portão novo para atravessar.
70
+ */
71
+ export declare const API_CAPABILITIES: readonly ApiCapabilityDef[];
72
+ export declare const API_CAPABILITY_KEYS: readonly string[];
73
+ /** Formato exigido de uma chave. O guarda usa isto; a revisão humana não basta. */
74
+ export declare const CAPABILITY_KEY_PATTERN: RegExp;
75
+ export interface CapabilityDocument {
76
+ contract: number;
77
+ capabilities: readonly string[];
78
+ }
79
+ /**
80
+ * A API declarada satisfaz o que a tela exige?
81
+ *
82
+ * Fail-closed em três frentes, e todas já aconteceram em produção em algum
83
+ * produto: documento ausente (API velha, sem a rota), versão de contrato
84
+ * desconhecida (cliente novo demais ou velho demais) e capacidade faltando.
85
+ * Nenhuma delas devolve "sim por não saber".
86
+ */
87
+ export declare function satisfiesCapability(doc: CapabilityDocument | null | undefined, required: string): boolean;
88
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/platform/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,gBAAgB,EA8FvD,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAuC,CAAC;AAEzF,mFAAmF;AACnF,eAAO,MAAM,sBAAsB,QACgC,CAAC;AAEpE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAC1C,QAAQ,EAAE,MAAM,GACf,OAAO,CAIT"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * O contrato de CAPACIDADE entre a API e as telas que a consomem.
3
+ *
4
+ * ## O defeito que isto existe para fechar
5
+ *
6
+ * O console publica na Vercel no instante do merge. A API publica na Render
7
+ * depois — build da imagem, `db:predeploy`, health check. Entre um e outro
8
+ * existe uma janela de minutos em que o navegador carrega a tela NOVA e fala
9
+ * com a API VELHA. Na Onda A isso não foi hipótese: nove rotas
10
+ * (`/v1/tenant/profile`, `/v1/tenant/features`, `/v1/tenant/setup`,
11
+ * `/v1/fiscal/governance` e as irmãs) existiram na tela antes de existirem no
12
+ * servidor.
13
+ *
14
+ * O que a pessoa via nessa janela era a pior variante possível: um 404 da API
15
+ * que o Next transforma em tela genérica de erro, com `digest` e pedido de
16
+ * abrir chamado — o mesmo modo de falha que o `SemAcesso` corrigiu para RBAC.
17
+ * Não é erro do sistema: é uma versão que ainda não subiu.
18
+ *
19
+ * ## Por que capacidade, e não SHA
20
+ *
21
+ * Comparar o commit servido com o commit esperado acopla a tela ao processo de
22
+ * release: qualquer publicação — inclusive uma que não muda nada relevante —
23
+ * passa a poder derrubar a tela, e um hotfix na API com outro SHA reprovaria
24
+ * um frontend perfeitamente compatível. O que a tela precisa saber não é QUAL
25
+ * build está no ar, e sim se aquele build SABE responder o que ela vai pedir.
26
+ *
27
+ * Por isso o contrato é uma lista de nomes. A API declara o que serve; a tela
28
+ * declara o que exige. Compatibilidade é continência de conjunto, não
29
+ * igualdade de versão — e é isso que torna o backend-first possível: a API
30
+ * publica a capacidade ANTES da tela existir, e nada quebra porque ninguém
31
+ * ainda a exige.
32
+ *
33
+ * ## Regras de evolução
34
+ *
35
+ * - Uma chave é imutável. Mudança incompatível ganha `.v2`; a `.v1` só sai
36
+ * quando nenhum frontend em produção ainda a exigir.
37
+ * - A API nunca declara capacidade que não implementa — o guarda
38
+ * `capabilities.test.ts` confere cada rota declarada contra as rotas
39
+ * efetivamente montadas no Fastify. Declarar sem implementar seria o mesmo
40
+ * defeito de novo, com um passo a mais de indireção.
41
+ * - Ausência é resposta legítima. A tela degrada para "aguardando a API", não
42
+ * para erro.
43
+ */
44
+ /**
45
+ * Versão do FORMATO da resposta de `/v1/capabilities` — não das capacidades.
46
+ *
47
+ * Muda apenas se a forma do documento mudar. Um cliente que não reconhece a
48
+ * versão trata tudo como indisponível: fail-closed é a única leitura segura de
49
+ * um contrato que não se sabe ler.
50
+ */
51
+ export const CAPABILITY_CONTRACT_VERSION = 1;
52
+ /**
53
+ * O que ESTE build da API serve.
54
+ *
55
+ * A Onda A entra inteira porque foi ela quem sofreu o skew. Capacidades
56
+ * anteriores não estão aqui de propósito: uma tela que nunca conheceu janela
57
+ * de incompatibilidade não ganha um portão novo para atravessar.
58
+ */
59
+ export const API_CAPABILITIES = [
60
+ {
61
+ key: 'office.tenant-profile.v1',
62
+ label: 'Identificação do escritório (razão social, CNPJ, fuso)',
63
+ routes: ['GET /v1/tenant/profile', 'PUT /v1/tenant/profile'],
64
+ },
65
+ {
66
+ key: 'office.tenant-branding.v1',
67
+ label: 'Marca do escritório',
68
+ routes: ['GET /v1/tenant/branding', 'PUT /v1/tenant/branding'],
69
+ },
70
+ {
71
+ key: 'office.tenant-features.v1',
72
+ label: 'Módulos ligados e desligados pelo próprio escritório',
73
+ routes: ['GET /v1/tenant/features', 'PUT /v1/tenant/features'],
74
+ },
75
+ {
76
+ key: 'office.tenant-setup.v1',
77
+ label: 'Progresso de configuração do escritório',
78
+ routes: ['GET /v1/tenant/setup'],
79
+ },
80
+ {
81
+ key: 'office.fiscal-governance.v1',
82
+ label: 'Governança do catálogo fiscal (fonte oficial e conferência)',
83
+ routes: [
84
+ 'GET /v1/fiscal/governance',
85
+ 'PUT /v1/fiscal/rules/:id/source',
86
+ 'POST /v1/fiscal/rules/:id/validate',
87
+ ],
88
+ },
89
+ {
90
+ key: 'office.fiscal-documents.v1',
91
+ label: 'Documentos fiscais capturados e o estado da sincronização',
92
+ routes: [
93
+ 'GET /v1/fiscal/documents',
94
+ 'GET /v1/fiscal/documents/:id',
95
+ 'GET /v1/fiscal/sync-state',
96
+ ],
97
+ },
98
+ {
99
+ key: 'office.fiscal-operations.v1',
100
+ label: 'Motor operacional fiscal: estado por cliente, cobertura, fila humana e caixa de entrada',
101
+ routes: [
102
+ 'GET /v1/fiscal/sync-clients',
103
+ 'GET /v1/fiscal/coverage',
104
+ 'GET /v1/fiscal/interventions',
105
+ 'GET /v1/fiscal/metrics',
106
+ 'GET /v1/fiscal/inbox',
107
+ 'POST /v1/fiscal/inbox/:id/reprocess',
108
+ 'GET /v1/fiscal/request-coverage',
109
+ ],
110
+ },
111
+ {
112
+ // Separada de `fiscal-operations` de propósito: ela não descreve a carteira
113
+ // do escritório, e sim o CONTRATO com o provedor oficial. Um console que
114
+ // exiba "transporte real desativado" antes de a rota existir mostraria a
115
+ // tela genérica de erro em vez do estado — que é exatamente o modo de falha
116
+ // que o portão de capacidade existe para fechar.
117
+ key: 'office.fiscal-provider-contract.v1',
118
+ label: 'Contrato do provedor fiscal oficial: versão, fontes e por que o transporte real está fechado',
119
+ routes: ['GET /v1/fiscal/provider-contract'],
120
+ },
121
+ {
122
+ // Declarada pela migration 0061, e exigida pela tela de cadastro.
123
+ //
124
+ // Sem o portão, um console novo contra uma API velha chamaria
125
+ // `availability`, receberia 404 e mostraria erro de sistema no lugar de um
126
+ // formulário que funciona perfeitamente sem consulta nenhuma. O cadastro
127
+ // manual é o caminho completo; a consulta é o atalho.
128
+ key: 'office.client-registry-provenance.v1',
129
+ label: 'Cadastro de cliente por CNPJ a partir de fonte oficial, com proveniência por atributo',
130
+ routes: [
131
+ 'GET /v1/client-registry/availability',
132
+ 'POST /v1/client-registry/lookup',
133
+ 'POST /v1/clients/:id/registry-apply',
134
+ 'GET /v1/clients/:id/registry-diff',
135
+ ],
136
+ },
137
+ {
138
+ // Declarada pela 0062. A tela de credenciais fiscais depende dela para
139
+ // mostrar matrícula e habilitação ao lado do botão bloqueado — sem isso,
140
+ // um console novo contra uma API velha chamaria a rota, tomaria 404 e
141
+ // mostraria erro de sistema no lugar de "cliente não matriculado".
142
+ key: 'office.fiscal-first-contact.v1',
143
+ label: 'Primeiro contato fiscal: matrícula do cliente, habilitação do escritório e a autorização que aceita credencial válida só localmente',
144
+ routes: [
145
+ 'GET /v1/clients/:id/fiscal-enrollment',
146
+ 'PUT /v1/clients/:id/fiscal-enrollment',
147
+ 'PUT /v1/tenant/fiscal-automation',
148
+ ],
149
+ },
150
+ ];
151
+ export const API_CAPABILITY_KEYS = API_CAPABILITIES.map((c) => c.key);
152
+ /** Formato exigido de uma chave. O guarda usa isto; a revisão humana não basta. */
153
+ export const CAPABILITY_KEY_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*(?:\.[a-z0-9]+(?:-[a-z0-9]+)*)+\.v\d+$/;
154
+ /**
155
+ * A API declarada satisfaz o que a tela exige?
156
+ *
157
+ * Fail-closed em três frentes, e todas já aconteceram em produção em algum
158
+ * produto: documento ausente (API velha, sem a rota), versão de contrato
159
+ * desconhecida (cliente novo demais ou velho demais) e capacidade faltando.
160
+ * Nenhuma delas devolve "sim por não saber".
161
+ */
162
+ export function satisfiesCapability(doc, required) {
163
+ if (!doc)
164
+ return false;
165
+ if (doc.contract !== CAPABILITY_CONTRACT_VERSION)
166
+ return false;
167
+ return doc.capabilities.includes(required);
168
+ }
169
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/platform/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAe7C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAgC;IAC3D;QACE,GAAG,EAAE,0BAA0B;QAC/B,KAAK,EAAE,wDAAwD;QAC/D,MAAM,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;KAC7D;IACD;QACE,GAAG,EAAE,2BAA2B;QAChC,KAAK,EAAE,qBAAqB;QAC5B,MAAM,EAAE,CAAC,yBAAyB,EAAE,yBAAyB,CAAC;KAC/D;IACD;QACE,GAAG,EAAE,2BAA2B;QAChC,KAAK,EAAE,sDAAsD;QAC7D,MAAM,EAAE,CAAC,yBAAyB,EAAE,yBAAyB,CAAC;KAC/D;IACD;QACE,GAAG,EAAE,wBAAwB;QAC7B,KAAK,EAAE,yCAAyC;QAChD,MAAM,EAAE,CAAC,sBAAsB,CAAC;KACjC;IACD;QACE,GAAG,EAAE,6BAA6B;QAClC,KAAK,EAAE,6DAA6D;QACpE,MAAM,EAAE;YACN,2BAA2B;YAC3B,iCAAiC;YACjC,oCAAoC;SACrC;KACF;IACD;QACE,GAAG,EAAE,4BAA4B;QACjC,KAAK,EAAE,2DAA2D;QAClE,MAAM,EAAE;YACN,0BAA0B;YAC1B,8BAA8B;YAC9B,2BAA2B;SAC5B;KACF;IACD;QACE,GAAG,EAAE,6BAA6B;QAClC,KAAK,EACH,yFAAyF;QAC3F,MAAM,EAAE;YACN,6BAA6B;YAC7B,yBAAyB;YACzB,8BAA8B;YAC9B,wBAAwB;YACxB,sBAAsB;YACtB,qCAAqC;YACrC,iCAAiC;SAClC;KACF;IACD;QACE,4EAA4E;QAC5E,yEAAyE;QACzE,yEAAyE;QACzE,4EAA4E;QAC5E,iDAAiD;QACjD,GAAG,EAAE,oCAAoC;QACzC,KAAK,EACH,8FAA8F;QAChG,MAAM,EAAE,CAAC,kCAAkC,CAAC;KAC7C;IACD;QACE,kEAAkE;QAClE,EAAE;QACF,8DAA8D;QAC9D,2EAA2E;QAC3E,yEAAyE;QACzE,sDAAsD;QACtD,GAAG,EAAE,sCAAsC;QAC3C,KAAK,EAAE,uFAAuF;QAC9F,MAAM,EAAE;YACN,sCAAsC;YACtC,iCAAiC;YACjC,qCAAqC;YACrC,mCAAmC;SACpC;KACF;IACD;QACE,uEAAuE;QACvE,yEAAyE;QACzE,sEAAsE;QACtE,mEAAmE;QACnE,GAAG,EAAE,gCAAgC;QACrC,KAAK,EACH,qIAAqI;QACvI,MAAM,EAAE;YACN,uCAAuC;YACvC,uCAAuC;YACvC,kCAAkC;SACnC;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAsB,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEzF,mFAAmF;AACnF,MAAM,CAAC,MAAM,sBAAsB,GACjC,iEAAiE,CAAC;AAOpE;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAA0C,EAC1C,QAAgB;IAEhB,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,GAAG,CAAC,QAAQ,KAAK,2BAA2B;QAAE,OAAO,KAAK,CAAC;IAC/D,OAAO,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,232 @@
1
+ import type { Db, Tx } from '../db/client.js';
2
+ /**
3
+ * O contrato de capacidade entre um WORKER e o schema que ele opera.
4
+ *
5
+ * ## O que isto fecha, e por que não bastava o contrato HTTP
6
+ *
7
+ * `platform/capabilities.ts` protege a superfície HTTP: a tela pergunta à API
8
+ * se aquele build sabe responder o que ela vai pedir. Um cron não tem tela e
9
+ * não fala com a API — ele fala com o BANCO. A contraparte é outra, então o
10
+ * contrato é outro, e o registro vive no próprio banco (migration 0055).
11
+ *
12
+ * A janela é real e não é hipótese: os crons publicam na Render como serviços
13
+ * SEPARADOS do serviço web, e as migrations rodam no `preDeployCommand` do
14
+ * serviço web. A ordem entre "a imagem nova do cron subiu" e "o schema novo foi
15
+ * aplicado" não é garantida por nada.
16
+ *
17
+ * ## Cinco estados, não dois
18
+ *
19
+ * A primeira forma óbvia disto seria um booleano `podeRodar`. Ela colapsa dois
20
+ * problemas que exigem tratamentos opostos:
21
+ *
22
+ * `READY` compatível — executa.
23
+ * `INCOMPATIBLE` o schema é anterior ao que este worker exige.
24
+ * Fecha, e **não** merece retry: nenhuma
25
+ * quantidade de tentativas aplica uma migration.
26
+ * `TEMPORARILY_UNAVAILABLE` não deu para perguntar (banco fora, timeout).
27
+ * Fecha também — mas com backoff, porque volta
28
+ * sozinho.
29
+ * `DISABLED` desligado por configuração do processo.
30
+ * `BLOCKED_BY_TENANT_CONFIG` o escritório não habilitou.
31
+ *
32
+ * A distinção entre os dois primeiros bloqueios é a mesma que o contrato HTTP
33
+ * já paga: lá, tratar timeout como "não suportado" faria a tela mentir sobre um
34
+ * deploy antigo toda vez que a API hibernasse. Aqui, tratar banco fora como
35
+ * incompatível faria o cron desistir de um dia inteiro por uma queda de rede de
36
+ * trinta segundos — e tratar incompatível como indisponível faria ele martelar
37
+ * um schema que não vai mudar sozinho.
38
+ *
39
+ * ## Fail-closed é sobre VERSÃO
40
+ *
41
+ * Quando não é `READY`, nada é escrito: zero mutação, cursor intocado, nenhum
42
+ * item marcado como processado. E o bloqueio é REGISTRADO (`job_run`) — um job
43
+ * que para em silêncio é indistinguível de um job que rodou e não achou nada.
44
+ *
45
+ * A garantia não depende deste arquivo: `job_run` tem CHECK que torna
46
+ * ingravável um run bloqueado com mutação ou cursor avançado. O TypeScript
47
+ * ordena; o banco garante.
48
+ */
49
+ /** Versão do FORMATO do registro. Ver `platform_capability.contract_version`. */
50
+ export declare const JOB_CONTRACT_VERSION = 1;
51
+ export interface JobDefinition {
52
+ /** Slug estável do worker. É ele que aparece em `job_run` e `job_cursor`. */
53
+ readonly name: string;
54
+ /** Versão do WORKER. Sobe quando o que ele exige ou escreve muda. */
55
+ readonly version: number;
56
+ /**
57
+ * Capacidades que este worker exige do schema.
58
+ *
59
+ * Vazio é proibido por desenho — um worker sem exigência tem um portão que
60
+ * nunca fecha, e um portão que nunca fecha não é portão. Se um job realmente
61
+ * não depende de schema novo, ele deve exigir a capacidade que descreve o que
62
+ * ele JÁ usa; foi para isso que a 0055 declarou as dos dois crons existentes.
63
+ */
64
+ readonly requires: readonly string[];
65
+ /** Menor versão de contrato que este worker sabe ler. */
66
+ readonly minContractVersion: number;
67
+ }
68
+ export type JobReadiness = 'READY' | 'TEMPORARILY_UNAVAILABLE' | 'INCOMPATIBLE' | 'DISABLED' | 'BLOCKED_BY_TENANT_CONFIG';
69
+ export type PlatformCapabilityProbe = {
70
+ status: 'declared';
71
+ contract: number;
72
+ capabilities: readonly string[];
73
+ }
74
+ /** O schema respondeu e não conhece o contrato: é a versão anterior. */
75
+ | {
76
+ status: 'absent';
77
+ detail: string;
78
+ }
79
+ /** Não foi possível perguntar. Diz respeito à infraestrutura, não à versão. */
80
+ | {
81
+ status: 'unknown';
82
+ detail: string;
83
+ };
84
+ export interface JobDecision {
85
+ readiness: JobReadiness;
86
+ /** Somente `READY` autoriza mutação. */
87
+ canMutate: boolean;
88
+ /** `INCOMPATIBLE` não é retentável: só um deploy o resolve. */
89
+ retryable: boolean;
90
+ /** Sugestão de espera para o que volta sozinho. `null` quando não retenta. */
91
+ backoffMs: number | null;
92
+ contractVersion: number | null;
93
+ observed: readonly string[];
94
+ missing: readonly string[];
95
+ detail: string;
96
+ }
97
+ /**
98
+ * Backoff do que volta sozinho.
99
+ *
100
+ * Cinco minutos: longo o bastante para uma reinicialização de banco caber
101
+ * dentro, curto o bastante para o ciclo diário ainda sair no mesmo dia.
102
+ */
103
+ export declare const TEMPORARY_BACKOFF_MS: number;
104
+ /**
105
+ * Lê o registro de capacidades do schema. Nunca lança; classifica a falha.
106
+ *
107
+ * A classificação é o ponto inteiro da função. Um `catch` que devolvesse
108
+ * "incompatível" para qualquer erro transformaria toda queda de rede em uma
109
+ * afirmação falsa sobre a versão do schema — o mesmo defeito que quase entrou
110
+ * em produção no contrato HTTP.
111
+ */
112
+ export declare function probePlatformCapabilities(tx: Tx | Db): Promise<PlatformCapabilityProbe>;
113
+ /**
114
+ * A sondagem satisfaz o que este worker exige?
115
+ *
116
+ * Função pura: recebe a sondagem já feita e devolve a decisão. É essa separação
117
+ * que permite fixar o contrato para o lote inteiro (ver `runGuardedJob`) — a
118
+ * decisão de cada item usa a MESMA sondagem, não uma nova.
119
+ */
120
+ export declare function evaluateJobReadiness(def: JobDefinition, probe: PlatformCapabilityProbe, opts?: {
121
+ disabled?: boolean;
122
+ tenantBlocked?: string | null;
123
+ }): JobDecision;
124
+ export interface JobRunRecord {
125
+ id: string;
126
+ readiness: JobReadiness;
127
+ status: 'completed' | 'blocked' | 'failed';
128
+ mutations: number;
129
+ cursorAdvanced: boolean;
130
+ detail: string;
131
+ }
132
+ export interface GuardedJobContext {
133
+ /** A decisão FIXADA para este lote. Não muda no meio. */
134
+ readonly decision: JobDecision;
135
+ /** Cursor lido no início. `null` quando o job nunca rodou neste tenant. */
136
+ readonly cursor: string | null;
137
+ /** Conte aqui cada escrita. É o número que o CHECK do banco confere. */
138
+ recordMutation(n?: number): void;
139
+ /** Peça o avanço do cursor. Só é aplicado se o lote terminar. */
140
+ advanceCursorTo(position: string): void;
141
+ }
142
+ export interface GuardedJobOptions {
143
+ /** Desligado pelo processo (variável de ambiente, chave geral). */
144
+ disabled?: boolean;
145
+ /** Motivo de bloqueio por configuração do escritório, quando houver. */
146
+ tenantBlocked?: string | null;
147
+ /**
148
+ * Sondagem já feita, para FIXAR o contrato ao longo de um processo que
149
+ * percorre muitos tenants. Sem isto, o tenant 40 poderia decidir sob um
150
+ * registro diferente do tenant 1 — e metade do dia rodaria sob cada contrato.
151
+ */
152
+ probe?: PlatformCapabilityProbe;
153
+ }
154
+ /**
155
+ * Executa `handler` sob o portão, dentro do contexto de tenant.
156
+ *
157
+ * A ordem importa e é o mecanismo inteiro:
158
+ *
159
+ * 1. sonda (ou usa a sondagem fixada) e decide — ANTES de qualquer escrita;
160
+ * 2. se não for `READY`, grava o `job_run` bloqueado e RETORNA. O handler não
161
+ * é chamado, então não existe caminho pelo qual ele mute;
162
+ * 3. se for `READY`, lê o cursor, chama o handler, e só então grava o run e
163
+ * avança o cursor.
164
+ *
165
+ * Cursor e run são gravados na MESMA transação do handler: um lote que estourou
166
+ * no meio não deixa cursor avançado, porque o rollback leva os dois junto.
167
+ */
168
+ export declare function runGuardedJob<T>(db: Db, tenantId: string, def: JobDefinition, handler: (tx: Tx, ctx: GuardedJobContext) => Promise<T>, opts?: GuardedJobOptions): Promise<{
169
+ record: JobRunRecord;
170
+ result: T | null;
171
+ decision: JobDecision;
172
+ }>;
173
+ /**
174
+ * Grava o desfecho de um run.
175
+ *
176
+ * Público porque os dois crons existentes não são baseados em cursor — eles são
177
+ * idempotentes por índice único e rodam duas transações por tenant de
178
+ * propósito. Forçá-los para dentro de `runGuardedJob` colapsaria essas duas
179
+ * transações em uma, e um erro na régua passaria a desfazer recebíveis
180
+ * legitimamente gerados. Eles usam o mesmo portão e a mesma trilha; o que não
181
+ * usam é o cursor, que não têm.
182
+ */
183
+ export declare function recordJobRun(tx: Tx, tenantId: string, def: JobDefinition, decision: JobDecision, outcome: {
184
+ status: 'completed' | 'blocked' | 'failed';
185
+ mutations: number;
186
+ cursorAdvanced: boolean;
187
+ }): Promise<JobRunRecord>;
188
+ /**
189
+ * Grava a trilha tolerando a ausência da própria tabela.
190
+ *
191
+ * O caso é específico e derrubaria produção: quando o bloqueio é `INCOMPATIBLE`
192
+ * porque o schema é anterior à 0055, **`job_run` também não existe** — as duas
193
+ * tabelas nascem na mesma migration. Um `recordJobRun` direto estouraria para
194
+ * cada tenant e o cron sairia com código 1, transformando um bloqueio correto
195
+ * e silencioso num alarme de infraestrutura.
196
+ *
197
+ * A trilha é observabilidade, não a garantia. A garantia é o handler não ser
198
+ * chamado, e ela já valeu antes desta linha. Quando a trilha não cabe no
199
+ * schema, o log carrega o motivo — e ele é o mesmo.
200
+ *
201
+ * Devolve `true` se gravou. Só engole falha de SCHEMA (`42P01`/`42703`): erro
202
+ * de permissão ou de restrição é defeito nosso e tem de subir.
203
+ */
204
+ export declare function recordJobRunBestEffort(db: Db, tenantId: string, def: JobDefinition, decision: JobDecision, outcome: {
205
+ status: 'completed' | 'blocked' | 'failed';
206
+ mutations: number;
207
+ cursorAdvanced: boolean;
208
+ }): Promise<boolean>;
209
+ /**
210
+ * Os workers deste produto.
211
+ *
212
+ * Declarados aqui, e não junto de cada entrypoint, para que a lista seja
213
+ * enumerável — é ela que o inventário do gate confere contra o `render.yaml`.
214
+ */
215
+ export declare const COLLECTION_CYCLE_JOB: JobDefinition;
216
+ export declare const SAAS_BILLING_JOB: JobDefinition;
217
+ /**
218
+ * O worker fiscal (Onda B · Fase 2).
219
+ *
220
+ * Exige DUAS capacidades, e a segunda é o ponto: `office.fiscal-ingestion.v1`
221
+ * (0056) descreve onde o documento cabe; `office.fiscal-sync-worker.v1` (0058)
222
+ * descreve o que o worker precisa para OPERAR — lease, política, disjuntor,
223
+ * fila humana, cobertura.
224
+ *
225
+ * Separá-las importa numa janela concreta: um banco que já tem a 0056 e ainda
226
+ * não tem a 0058 sabe guardar documento e NÃO sabe travar a vez. Um worker que
227
+ * exigisse só a primeira rodaria ali, sem exclusão mútua, e duas execuções
228
+ * simultâneas consultariam o mesmo CNPJ contra a Receita.
229
+ */
230
+ export declare const FISCAL_SYNC_JOB: JobDefinition;
231
+ export declare const KNOWN_JOBS: readonly JobDefinition[];
232
+ //# sourceMappingURL=job-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-contract.d.ts","sourceRoot":"","sources":["../../src/platform/job-contract.ts"],"names":[],"mappings":"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"}