@noodleseed/one 0.63.0 → 0.64.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 (440) hide show
  1. package/dist/auth-discovery.d.ts +17 -0
  2. package/dist/auth-discovery.d.ts.map +1 -0
  3. package/dist/auth-discovery.js +54 -0
  4. package/dist/auth-discovery.js.map +1 -0
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +3 -0
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/catalog-data-platform-auth.d.ts +7 -0
  9. package/dist/commands/catalog-data-platform-auth.d.ts.map +1 -0
  10. package/dist/commands/catalog-data-platform-auth.js +47 -0
  11. package/dist/commands/catalog-data-platform-auth.js.map +1 -0
  12. package/dist/commands/catalog.d.ts.map +1 -1
  13. package/dist/commands/catalog.js +6 -3
  14. package/dist/commands/catalog.js.map +1 -1
  15. package/dist/commands/docs-mcp.d.ts +3 -3
  16. package/dist/commands/docs-mcp.js +3 -3
  17. package/dist/commands/platform-auth-finalization-args.d.ts +13 -0
  18. package/dist/commands/platform-auth-finalization-args.d.ts.map +1 -0
  19. package/dist/commands/platform-auth-finalization-args.js +29 -0
  20. package/dist/commands/platform-auth-finalization-args.js.map +1 -0
  21. package/dist/commands/platform-auth-migration-args.d.ts +71 -0
  22. package/dist/commands/platform-auth-migration-args.d.ts.map +1 -0
  23. package/dist/commands/platform-auth-migration-args.js +320 -0
  24. package/dist/commands/platform-auth-migration-args.js.map +1 -0
  25. package/dist/commands/platform-auth-migration-ops.d.ts +3 -0
  26. package/dist/commands/platform-auth-migration-ops.d.ts.map +1 -0
  27. package/dist/commands/platform-auth-migration-ops.js +369 -0
  28. package/dist/commands/platform-auth-migration-ops.js.map +1 -0
  29. package/dist/commands/project-setup.js +1 -1
  30. package/dist/commands/project-setup.js.map +1 -1
  31. package/dist/config.d.ts +4 -4
  32. package/dist/config.d.ts.map +1 -1
  33. package/dist/control-plane.d.ts +0 -11
  34. package/dist/control-plane.d.ts.map +1 -1
  35. package/dist/control-plane.js +1 -8
  36. package/dist/control-plane.js.map +1 -1
  37. package/dist/doctor.d.ts.map +1 -1
  38. package/dist/doctor.js +3 -5
  39. package/dist/doctor.js.map +1 -1
  40. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  41. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +4 -0
  42. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  43. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  44. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -0
  45. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  46. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts +2 -2
  47. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts.map +1 -1
  48. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js +1 -1
  49. package/node_modules/@noodle-borg/auth/dist/verify.d.ts +1 -1
  50. package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -1
  51. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts +26 -0
  52. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts.map +1 -1
  53. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js +105 -1
  54. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js.map +1 -1
  55. package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.d.ts +25 -0
  56. package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.d.ts.map +1 -0
  57. package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.js +99 -0
  58. package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.js.map +1 -0
  59. package/node_modules/@noodle-borg/service/dist/index.d.ts +15 -0
  60. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  61. package/node_modules/@noodle-borg/service/dist/index.js +15 -0
  62. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  63. package/node_modules/@noodle-borg/service/dist/main.js +112 -19
  64. package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
  65. package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts +1 -1
  66. package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts.map +1 -1
  67. package/node_modules/@noodle-borg/service/dist/oauth/app.js +9 -1
  68. package/node_modules/@noodle-borg/service/dist/oauth/app.js.map +1 -1
  69. package/node_modules/@noodle-borg/service/dist/oauth/authorization-initiation.d.ts +24 -0
  70. package/node_modules/@noodle-borg/service/dist/oauth/authorization-initiation.d.ts.map +1 -0
  71. package/node_modules/@noodle-borg/service/dist/oauth/authorization-initiation.js +88 -0
  72. package/node_modules/@noodle-borg/service/dist/oauth/authorization-initiation.js.map +1 -0
  73. package/node_modules/@noodle-borg/service/dist/oauth/branding.d.ts +2 -0
  74. package/node_modules/@noodle-borg/service/dist/oauth/branding.d.ts.map +1 -1
  75. package/node_modules/@noodle-borg/service/dist/oauth/branding.js +3 -2
  76. package/node_modules/@noodle-borg/service/dist/oauth/branding.js.map +1 -1
  77. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts +1 -1
  78. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts.map +1 -1
  79. package/node_modules/@noodle-borg/service/dist/oauth/consent-token.d.ts +5 -0
  80. package/node_modules/@noodle-borg/service/dist/oauth/consent-token.d.ts.map +1 -0
  81. package/node_modules/@noodle-borg/service/dist/oauth/consent-token.js +19 -0
  82. package/node_modules/@noodle-borg/service/dist/oauth/consent-token.js.map +1 -0
  83. package/node_modules/@noodle-borg/service/dist/oauth/consent.js +1 -1
  84. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.d.ts.map +1 -1
  85. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js +216 -28
  86. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js.map +1 -1
  87. package/node_modules/@noodle-borg/service/dist/oauth/first-party-client.d.ts +13 -0
  88. package/node_modules/@noodle-borg/service/dist/oauth/first-party-client.d.ts.map +1 -0
  89. package/node_modules/@noodle-borg/service/dist/oauth/first-party-client.js +62 -0
  90. package/node_modules/@noodle-borg/service/dist/oauth/first-party-client.js.map +1 -0
  91. package/node_modules/@noodle-borg/service/dist/oauth/metadata.d.ts +4 -0
  92. package/node_modules/@noodle-borg/service/dist/oauth/metadata.d.ts.map +1 -0
  93. package/node_modules/@noodle-borg/service/dist/oauth/metadata.js +20 -0
  94. package/node_modules/@noodle-borg/service/dist/oauth/metadata.js.map +1 -0
  95. package/node_modules/@noodle-borg/service/dist/oauth/paths.d.ts.map +1 -1
  96. package/node_modules/@noodle-borg/service/dist/oauth/paths.js +2 -0
  97. package/node_modules/@noodle-borg/service/dist/oauth/paths.js.map +1 -1
  98. package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.d.ts +15 -0
  99. package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.d.ts.map +1 -0
  100. package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.js +58 -0
  101. package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.js.map +1 -0
  102. package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-postgres.d.ts +8 -0
  103. package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-postgres.d.ts.map +1 -0
  104. package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-postgres.js +49 -0
  105. package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-postgres.js.map +1 -0
  106. package/node_modules/@noodle-borg/service/dist/oauth/postgres-time.d.ts +3 -0
  107. package/node_modules/@noodle-borg/service/dist/oauth/postgres-time.d.ts.map +1 -0
  108. package/node_modules/@noodle-borg/service/dist/oauth/postgres-time.js +7 -0
  109. package/node_modules/@noodle-borg/service/dist/oauth/postgres-time.js.map +1 -0
  110. package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts +20 -25
  111. package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts.map +1 -1
  112. package/node_modules/@noodle-borg/service/dist/oauth/provider.js +105 -196
  113. package/node_modules/@noodle-borg/service/dist/oauth/provider.js.map +1 -1
  114. package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.d.ts +36 -0
  115. package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.d.ts.map +1 -0
  116. package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.js +157 -0
  117. package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.js.map +1 -0
  118. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres-schema.d.ts +4 -0
  119. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres-schema.d.ts.map +1 -0
  120. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres-schema.js +110 -0
  121. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres-schema.js.map +1 -0
  122. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts +7 -4
  123. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts.map +1 -1
  124. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js +63 -120
  125. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js.map +1 -1
  126. package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts +19 -6
  127. package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts.map +1 -1
  128. package/node_modules/@noodle-borg/service/dist/oauth/store.js +24 -2
  129. package/node_modules/@noodle-borg/service/dist/oauth/store.js.map +1 -1
  130. package/node_modules/@noodle-borg/service/dist/oauth/tokens.d.ts +1 -1
  131. package/node_modules/@noodle-borg/service/dist/oauth/tokens.d.ts.map +1 -1
  132. package/node_modules/@noodle-borg/service/dist/oauth/tokens.js +1 -1
  133. package/node_modules/@noodle-borg/service/dist/oauth/tokens.js.map +1 -1
  134. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-availability.d.ts +4 -0
  135. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-availability.d.ts.map +1 -0
  136. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-availability.js +8 -0
  137. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-availability.js.map +1 -0
  138. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.d.ts +34 -0
  139. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.d.ts.map +1 -0
  140. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.js +109 -0
  141. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.js.map +1 -0
  142. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.d.ts +22 -0
  143. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.d.ts.map +1 -0
  144. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.js +30 -0
  145. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.js.map +1 -0
  146. package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.d.ts +21 -0
  147. package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.d.ts.map +1 -0
  148. package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.js +56 -0
  149. package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.js.map +1 -0
  150. package/node_modules/@noodle-borg/service/dist/oauth/upstream-federation.d.ts +30 -0
  151. package/node_modules/@noodle-borg/service/dist/oauth/upstream-federation.d.ts.map +1 -0
  152. package/node_modules/@noodle-borg/service/dist/oauth/upstream-federation.js +94 -0
  153. package/node_modules/@noodle-borg/service/dist/oauth/upstream-federation.js.map +1 -0
  154. package/node_modules/@noodle-borg/service/dist/oauth/upstream-human.d.ts +33 -0
  155. package/node_modules/@noodle-borg/service/dist/oauth/upstream-human.d.ts.map +1 -0
  156. package/node_modules/@noodle-borg/service/dist/oauth/upstream-human.js +27 -0
  157. package/node_modules/@noodle-borg/service/dist/oauth/upstream-human.js.map +1 -0
  158. package/node_modules/@noodle-borg/service/dist/oauth/upstream-provider-choice.d.ts +13 -0
  159. package/node_modules/@noodle-borg/service/dist/oauth/upstream-provider-choice.d.ts.map +1 -0
  160. package/node_modules/@noodle-borg/service/dist/oauth/upstream-provider-choice.js +63 -0
  161. package/node_modules/@noodle-borg/service/dist/oauth/upstream-provider-choice.js.map +1 -0
  162. package/node_modules/@noodle-borg/service/dist/oauth/upstream-rollout-store.d.ts +20 -0
  163. package/node_modules/@noodle-borg/service/dist/oauth/upstream-rollout-store.d.ts.map +1 -0
  164. package/node_modules/@noodle-borg/service/dist/oauth/upstream-rollout-store.js +40 -0
  165. package/node_modules/@noodle-borg/service/dist/oauth/upstream-rollout-store.js.map +1 -0
  166. package/node_modules/@noodle-borg/service/dist/oauth/workos-events.d.ts +115 -0
  167. package/node_modules/@noodle-borg/service/dist/oauth/workos-events.d.ts.map +1 -0
  168. package/node_modules/@noodle-borg/service/dist/oauth/workos-events.js +310 -0
  169. package/node_modules/@noodle-borg/service/dist/oauth/workos-events.js.map +1 -0
  170. package/node_modules/@noodle-borg/service/dist/oauth/workos.d.ts +65 -0
  171. package/node_modules/@noodle-borg/service/dist/oauth/workos.d.ts.map +1 -0
  172. package/node_modules/@noodle-borg/service/dist/oauth/workos.js +85 -0
  173. package/node_modules/@noodle-borg/service/dist/oauth/workos.js.map +1 -0
  174. package/node_modules/@noodle-borg/service/dist/options.d.ts +11 -2
  175. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  176. package/node_modules/@noodle-borg/service/dist/personal-workspace.d.ts +2 -0
  177. package/node_modules/@noodle-borg/service/dist/personal-workspace.d.ts.map +1 -1
  178. package/node_modules/@noodle-borg/service/dist/personal-workspace.js +8 -2
  179. package/node_modules/@noodle-borg/service/dist/personal-workspace.js.map +1 -1
  180. package/node_modules/@noodle-borg/service/dist/platform-auth-configuration.d.ts +67 -0
  181. package/node_modules/@noodle-borg/service/dist/platform-auth-configuration.d.ts.map +1 -0
  182. package/node_modules/@noodle-borg/service/dist/platform-auth-configuration.js +54 -0
  183. package/node_modules/@noodle-borg/service/dist/platform-auth-configuration.js.map +1 -0
  184. package/node_modules/@noodle-borg/service/dist/platform-auth-frozen-candidate-postgres.d.ts +25 -0
  185. package/node_modules/@noodle-borg/service/dist/platform-auth-frozen-candidate-postgres.d.ts.map +1 -0
  186. package/node_modules/@noodle-borg/service/dist/platform-auth-frozen-candidate-postgres.js +61 -0
  187. package/node_modules/@noodle-borg/service/dist/platform-auth-frozen-candidate-postgres.js.map +1 -0
  188. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-legacy-sources-postgres.d.ts +32 -0
  189. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-legacy-sources-postgres.d.ts.map +1 -0
  190. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-legacy-sources-postgres.js +231 -0
  191. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-legacy-sources-postgres.js.map +1 -0
  192. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-postgres.d.ts +29 -0
  193. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-postgres.d.ts.map +1 -0
  194. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-postgres.js +350 -0
  195. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-postgres.js.map +1 -0
  196. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-subjects-postgres.d.ts +50 -0
  197. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-subjects-postgres.d.ts.map +1 -0
  198. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-subjects-postgres.js +239 -0
  199. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-subjects-postgres.js.map +1 -0
  200. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-paging.d.ts +66 -0
  201. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-paging.d.ts.map +1 -0
  202. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-paging.js +77 -0
  203. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-paging.js.map +1 -0
  204. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-postgres.d.ts +40 -0
  205. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-postgres.d.ts.map +1 -0
  206. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-postgres.js +355 -0
  207. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-postgres.js.map +1 -0
  208. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-progress-postgres.d.ts +41 -0
  209. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-progress-postgres.d.ts.map +1 -0
  210. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-progress-postgres.js +230 -0
  211. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-progress-postgres.js.map +1 -0
  212. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-postgres.d.ts +20 -0
  213. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-postgres.d.ts.map +1 -0
  214. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-postgres.js +126 -0
  215. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-postgres.js.map +1 -0
  216. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-sources.d.ts +8 -0
  217. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-sources.d.ts.map +1 -0
  218. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-sources.js +86 -0
  219. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-sources.js.map +1 -0
  220. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-postgres.d.ts +42 -0
  221. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-postgres.d.ts.map +1 -0
  222. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-postgres.js +368 -0
  223. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-postgres.js.map +1 -0
  224. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-runs-postgres.d.ts +86 -0
  225. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-runs-postgres.d.ts.map +1 -0
  226. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-runs-postgres.js +474 -0
  227. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-runs-postgres.js.map +1 -0
  228. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-schema.d.ts +17 -0
  229. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-schema.d.ts.map +1 -0
  230. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-schema.js +435 -0
  231. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-schema.js.map +1 -0
  232. package/node_modules/@noodle-borg/service/dist/platform-auth-migration.d.ts +202 -0
  233. package/node_modules/@noodle-borg/service/dist/platform-auth-migration.d.ts.map +1 -0
  234. package/node_modules/@noodle-borg/service/dist/platform-auth-migration.js +313 -0
  235. package/node_modules/@noodle-borg/service/dist/platform-auth-migration.js.map +1 -0
  236. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-batches.d.ts +48 -0
  237. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-batches.d.ts.map +1 -0
  238. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-batches.js +158 -0
  239. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-batches.js.map +1 -0
  240. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-effects.d.ts +43 -0
  241. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-effects.d.ts.map +1 -0
  242. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-effects.js +92 -0
  243. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-effects.js.map +1 -0
  244. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-operation-postgres.d.ts +31 -0
  245. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-operation-postgres.d.ts.map +1 -0
  246. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-operation-postgres.js +94 -0
  247. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-operation-postgres.js.map +1 -0
  248. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-ports.d.ts +102 -0
  249. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-ports.d.ts.map +1 -0
  250. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-ports.js +2 -0
  251. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-ports.js.map +1 -0
  252. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-postgres.d.ts +17 -0
  253. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-postgres.d.ts.map +1 -0
  254. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-postgres.js +367 -0
  255. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-postgres.js.map +1 -0
  256. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-remote-status.d.ts +10 -0
  257. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-remote-status.d.ts.map +1 -0
  258. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-remote-status.js +37 -0
  259. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-remote-status.js.map +1 -0
  260. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-rollout.d.ts +36 -0
  261. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-rollout.d.ts.map +1 -0
  262. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-rollout.js +156 -0
  263. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-rollout.js.map +1 -0
  264. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-schema.d.ts +4 -0
  265. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-schema.d.ts.map +1 -0
  266. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-schema.js +162 -0
  267. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-schema.js.map +1 -0
  268. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-postgres.d.ts +92 -0
  269. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-postgres.d.ts.map +1 -0
  270. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-postgres.js +271 -0
  271. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-postgres.js.map +1 -0
  272. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-support.d.ts +13 -0
  273. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-support.d.ts.map +1 -0
  274. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-support.js +67 -0
  275. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-support.js.map +1 -0
  276. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-support.d.ts +15 -0
  277. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-support.d.ts.map +1 -0
  278. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-support.js +47 -0
  279. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-support.js.map +1 -0
  280. package/node_modules/@noodle-borg/service/dist/platform-auth-operator.d.ts +1569 -0
  281. package/node_modules/@noodle-borg/service/dist/platform-auth-operator.d.ts.map +1 -0
  282. package/node_modules/@noodle-borg/service/dist/platform-auth-operator.js +274 -0
  283. package/node_modules/@noodle-borg/service/dist/platform-auth-operator.js.map +1 -0
  284. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres-support.d.ts +41 -0
  285. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres-support.d.ts.map +1 -0
  286. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres-support.js +163 -0
  287. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres-support.js.map +1 -0
  288. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres.d.ts +34 -0
  289. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres.d.ts.map +1 -0
  290. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres.js +274 -0
  291. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres.js.map +1 -0
  292. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-schema.d.ts +3 -0
  293. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-schema.d.ts.map +1 -0
  294. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-schema.js +120 -0
  295. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-schema.js.map +1 -0
  296. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification.d.ts +79 -0
  297. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification.d.ts.map +1 -0
  298. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification.js +88 -0
  299. package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification.js.map +1 -0
  300. package/node_modules/@noodle-borg/service/dist/platform-auth-rollback-guard.d.ts +6 -0
  301. package/node_modules/@noodle-borg/service/dist/platform-auth-rollback-guard.d.ts.map +1 -0
  302. package/node_modules/@noodle-borg/service/dist/platform-auth-rollback-guard.js +38 -0
  303. package/node_modules/@noodle-borg/service/dist/platform-auth-rollback-guard.js.map +1 -0
  304. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-postgres.d.ts +61 -0
  305. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-postgres.d.ts.map +1 -0
  306. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-postgres.js +292 -0
  307. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-postgres.js.map +1 -0
  308. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-readiness-postgres.d.ts +19 -0
  309. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-readiness-postgres.d.ts.map +1 -0
  310. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-readiness-postgres.js +121 -0
  311. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-readiness-postgres.js.map +1 -0
  312. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-support.d.ts +119 -0
  313. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-support.d.ts.map +1 -0
  314. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-support.js +194 -0
  315. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-support.js.map +1 -0
  316. package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.d.ts +36 -0
  317. package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.d.ts.map +1 -0
  318. package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.js +93 -0
  319. package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.js.map +1 -0
  320. package/node_modules/@noodle-borg/service/dist/platform-auth-service-bootstrap.d.ts +32 -0
  321. package/node_modules/@noodle-borg/service/dist/platform-auth-service-bootstrap.d.ts.map +1 -0
  322. package/node_modules/@noodle-borg/service/dist/platform-auth-service-bootstrap.js +68 -0
  323. package/node_modules/@noodle-borg/service/dist/platform-auth-service-bootstrap.js.map +1 -0
  324. package/node_modules/@noodle-borg/service/dist/platform-identity-maintenance.d.ts +36 -0
  325. package/node_modules/@noodle-borg/service/dist/platform-identity-maintenance.d.ts.map +1 -0
  326. package/node_modules/@noodle-borg/service/dist/platform-identity-maintenance.js +92 -0
  327. package/node_modules/@noodle-borg/service/dist/platform-identity-maintenance.js.map +1 -0
  328. package/node_modules/@noodle-borg/service/dist/platform-identity-postgres.d.ts +23 -0
  329. package/node_modules/@noodle-borg/service/dist/platform-identity-postgres.d.ts.map +1 -0
  330. package/node_modules/@noodle-borg/service/dist/platform-identity-postgres.js +231 -0
  331. package/node_modules/@noodle-borg/service/dist/platform-identity-postgres.js.map +1 -0
  332. package/node_modules/@noodle-borg/service/dist/platform-identity-schema-postgres.d.ts +13 -0
  333. package/node_modules/@noodle-borg/service/dist/platform-identity-schema-postgres.d.ts.map +1 -0
  334. package/node_modules/@noodle-borg/service/dist/platform-identity-schema-postgres.js +399 -0
  335. package/node_modules/@noodle-borg/service/dist/platform-identity-schema-postgres.js.map +1 -0
  336. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-enqueue.d.ts +18 -0
  337. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-enqueue.d.ts.map +1 -0
  338. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-enqueue.js +25 -0
  339. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-enqueue.js.map +1 -0
  340. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-evidence-postgres.d.ts +15 -0
  341. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-evidence-postgres.d.ts.map +1 -0
  342. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-evidence-postgres.js +74 -0
  343. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-evidence-postgres.js.map +1 -0
  344. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-postgres.d.ts +19 -0
  345. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-postgres.d.ts.map +1 -0
  346. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-postgres.js +249 -0
  347. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-postgres.js.map +1 -0
  348. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-recovery-postgres.d.ts +34 -0
  349. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-recovery-postgres.d.ts.map +1 -0
  350. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-recovery-postgres.js +275 -0
  351. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-recovery-postgres.js.map +1 -0
  352. package/node_modules/@noodle-borg/service/dist/platform-identity-sync.d.ts +98 -0
  353. package/node_modules/@noodle-borg/service/dist/platform-identity-sync.d.ts.map +1 -0
  354. package/node_modules/@noodle-borg/service/dist/platform-identity-sync.js +179 -0
  355. package/node_modules/@noodle-borg/service/dist/platform-identity-sync.js.map +1 -0
  356. package/node_modules/@noodle-borg/service/dist/platform-identity.d.ts +110 -0
  357. package/node_modules/@noodle-borg/service/dist/platform-identity.d.ts.map +1 -0
  358. package/node_modules/@noodle-borg/service/dist/platform-identity.js +312 -0
  359. package/node_modules/@noodle-borg/service/dist/platform-identity.js.map +1 -0
  360. package/node_modules/@noodle-borg/service/dist/routes/auth-discovery.d.ts +6 -0
  361. package/node_modules/@noodle-borg/service/dist/routes/auth-discovery.d.ts.map +1 -0
  362. package/node_modules/@noodle-borg/service/dist/routes/auth-discovery.js +36 -0
  363. package/node_modules/@noodle-borg/service/dist/routes/auth-discovery.js.map +1 -0
  364. package/node_modules/@noodle-borg/service/dist/routes/billing-read.d.ts.map +1 -1
  365. package/node_modules/@noodle-borg/service/dist/routes/billing-read.js +3 -9
  366. package/node_modules/@noodle-borg/service/dist/routes/billing-read.js.map +1 -1
  367. package/node_modules/@noodle-borg/service/dist/routes/billing-stripe.d.ts.map +1 -1
  368. package/node_modules/@noodle-borg/service/dist/routes/billing-stripe.js +3 -3
  369. package/node_modules/@noodle-borg/service/dist/routes/billing-stripe.js.map +1 -1
  370. package/node_modules/@noodle-borg/service/dist/routes/github-run-claim.d.ts.map +1 -1
  371. package/node_modules/@noodle-borg/service/dist/routes/github-run-claim.js +3 -1
  372. package/node_modules/@noodle-borg/service/dist/routes/github-run-claim.js.map +1 -1
  373. package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration-dispatch.d.ts +8 -0
  374. package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration-dispatch.d.ts.map +1 -0
  375. package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration-dispatch.js +40 -0
  376. package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration-dispatch.js.map +1 -0
  377. package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration.d.ts +13 -0
  378. package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration.d.ts.map +1 -0
  379. package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration.js +158 -0
  380. package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration.js.map +1 -0
  381. package/node_modules/@noodle-borg/service/dist/serve-options.d.ts +21 -3
  382. package/node_modules/@noodle-borg/service/dist/serve-options.d.ts.map +1 -1
  383. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  384. package/node_modules/@noodle-borg/service/dist/serve.js +61 -146
  385. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  386. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts +1 -0
  387. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts.map +1 -1
  388. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js +3 -0
  389. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js.map +1 -1
  390. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  391. package/node_modules/@noodle-borg/service/dist/service.js +17 -29
  392. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  393. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts.map +1 -1
  394. package/node_modules/@noodle-borg/service/dist/store/control-plane.js +60 -19
  395. package/node_modules/@noodle-borg/service/dist/store/control-plane.js.map +1 -1
  396. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts +1 -2
  397. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts.map +1 -1
  398. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js +0 -40
  399. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js.map +1 -1
  400. package/node_modules/@noodle-borg/service/dist/store/postgres-personal-workspace.d.ts +5 -0
  401. package/node_modules/@noodle-borg/service/dist/store/postgres-personal-workspace.d.ts.map +1 -0
  402. package/node_modules/@noodle-borg/service/dist/store/postgres-personal-workspace.js +176 -0
  403. package/node_modules/@noodle-borg/service/dist/store/postgres-personal-workspace.js.map +1 -0
  404. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts +2 -0
  405. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  406. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +43 -1
  407. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  408. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js +2 -1
  409. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js.map +1 -1
  410. package/node_modules/@noodle-borg/service/dist/workos-directory.d.ts +71 -0
  411. package/node_modules/@noodle-borg/service/dist/workos-directory.d.ts.map +1 -0
  412. package/node_modules/@noodle-borg/service/dist/workos-directory.js +175 -0
  413. package/node_modules/@noodle-borg/service/dist/workos-directory.js.map +1 -0
  414. package/node_modules/@noodle-borg/service/package.json +1 -0
  415. package/node_modules/@workos-inc/node/LICENSE +21 -0
  416. package/node_modules/@workos-inc/node/README.md +140 -0
  417. package/node_modules/@workos-inc/node/lib/factory-B8vTFojy.d.cts +9727 -0
  418. package/node_modules/@workos-inc/node/lib/factory-B8vTFojy.d.mts +9727 -0
  419. package/node_modules/@workos-inc/node/lib/factory-CoKXdPX2.cjs +8426 -0
  420. package/node_modules/@workos-inc/node/lib/factory-CoKXdPX2.cjs.map +1 -0
  421. package/node_modules/@workos-inc/node/lib/factory-MKPb5Egh.mjs +8241 -0
  422. package/node_modules/@workos-inc/node/lib/factory-MKPb5Egh.mjs.map +1 -0
  423. package/node_modules/@workos-inc/node/lib/index.cjs +449 -0
  424. package/node_modules/@workos-inc/node/lib/index.cjs.map +1 -0
  425. package/node_modules/@workos-inc/node/lib/index.d.cts +478 -0
  426. package/node_modules/@workos-inc/node/lib/index.d.mts +478 -0
  427. package/node_modules/@workos-inc/node/lib/index.mjs +394 -0
  428. package/node_modules/@workos-inc/node/lib/index.mjs.map +1 -0
  429. package/node_modules/@workos-inc/node/lib/index.worker.cjs +60 -0
  430. package/node_modules/@workos-inc/node/lib/index.worker.cjs.map +1 -0
  431. package/node_modules/@workos-inc/node/lib/index.worker.d.cts +16 -0
  432. package/node_modules/@workos-inc/node/lib/index.worker.d.mts +16 -0
  433. package/node_modules/@workos-inc/node/lib/index.worker.mjs +35 -0
  434. package/node_modules/@workos-inc/node/lib/index.worker.mjs.map +1 -0
  435. package/node_modules/@workos-inc/node/lib/webapi-BgpV54gi.mjs +3224 -0
  436. package/node_modules/@workos-inc/node/lib/webapi-BgpV54gi.mjs.map +1 -0
  437. package/node_modules/@workos-inc/node/lib/webapi-BzGFatFp.cjs +3271 -0
  438. package/node_modules/@workos-inc/node/lib/webapi-BzGFatFp.cjs.map +1 -0
  439. package/node_modules/@workos-inc/node/package.json +96 -0
  440. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-auth-operator-rollout.js","sourceRoot":"","sources":["../src/platform-auth-operator-rollout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PlatformIdentityQueryable } from './platform-identity-postgres.js';
2
+ /** Additive persistence for the aggregate-only migration operator surface. */
3
+ export declare function ensurePlatformAuthOperatorSchema(pool: PlatformIdentityQueryable): Promise<void>;
4
+ //# sourceMappingURL=platform-auth-operator-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-auth-operator-schema.d.ts","sourceRoot":"","sources":["../src/platform-auth-operator-schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,8EAA8E;AAC9E,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA8Jf"}
@@ -0,0 +1,162 @@
1
+ import { ensurePlatformAuthRemoteVerificationSchema } from './platform-auth-remote-verification-schema.js';
2
+ /** Additive persistence for the aggregate-only migration operator surface. */
3
+ export async function ensurePlatformAuthOperatorSchema(pool) {
4
+ await ensurePlatformAuthRemoteVerificationSchema(pool);
5
+ await pool.query(`
6
+ CREATE TABLE IF NOT EXISTS platform_auth_operator_campaigns (
7
+ import_run_id text PRIMARY KEY REFERENCES identity_migration_runs(id) ON DELETE RESTRICT,
8
+ backfill_run_id text NOT NULL UNIQUE REFERENCES identity_migration_runs(id) ON DELETE RESTRICT,
9
+ inventory_run_id text NOT NULL REFERENCES identity_migration_runs(id) ON DELETE RESTRICT,
10
+ inventory_checksum text NOT NULL CHECK (inventory_checksum ~ '^[0-9a-f]{64}$'),
11
+ import_lineage_checksum text NOT NULL CHECK (import_lineage_checksum ~ '^[0-9a-f]{64}$'),
12
+ workos_realm_fingerprint text NOT NULL CHECK (workos_realm_fingerprint ~ '^[0-9a-f]{64}$'),
13
+ release_sha text NOT NULL CHECK (release_sha ~ '^[0-9a-f]{40}$'),
14
+ state text NOT NULL DEFAULT 'running' CHECK (state IN ('running', 'completed', 'failed')),
15
+ created_at timestamptz NOT NULL DEFAULT now(),
16
+ completed_at timestamptz,
17
+ CONSTRAINT platform_auth_operator_campaign_lineage_unique
18
+ UNIQUE (inventory_run_id, workos_realm_fingerprint)
19
+ )
20
+ `);
21
+ await pool.query(`
22
+ CREATE INDEX IF NOT EXISTS platform_auth_operator_campaigns_latest_idx
23
+ ON platform_auth_operator_campaigns (created_at DESC)
24
+ `);
25
+ await pool.query(`
26
+ CREATE TABLE IF NOT EXISTS platform_auth_operator_previews (
27
+ checksum text PRIMARY KEY CHECK (checksum ~ '^[0-9a-f]{64}$'),
28
+ operation text NOT NULL CHECK (operation IN ('start_import', 'reconcile', 'recover_outbox')),
29
+ expected_generation bigint NOT NULL CHECK (expected_generation >= 0),
30
+ release_sha text NOT NULL CHECK (release_sha ~ '^[0-9a-f]{40}$'),
31
+ target_fingerprint text NOT NULL CHECK (target_fingerprint ~ '^[0-9a-f]{64}$'),
32
+ snapshot_fingerprint text NOT NULL CHECK (snapshot_fingerprint ~ '^[0-9a-f]{64}$'),
33
+ expires_at timestamptz NOT NULL,
34
+ created_at timestamptz NOT NULL DEFAULT now()
35
+ )
36
+ `);
37
+ await pool.query(`
38
+ ALTER TABLE platform_auth_operator_previews
39
+ DROP CONSTRAINT IF EXISTS platform_auth_operator_previews_operation_check;
40
+ ALTER TABLE platform_auth_operator_previews
41
+ ADD CONSTRAINT platform_auth_operator_previews_operation_check
42
+ CHECK (operation IN ('start_import', 'reconcile', 'recover_outbox'))
43
+ `);
44
+ await pool.query(`
45
+ CREATE TABLE IF NOT EXISTS platform_auth_operator_operations (
46
+ idempotency_key_hash text PRIMARY KEY CHECK (idempotency_key_hash ~ '^[0-9a-f]{64}$'),
47
+ request_fingerprint text NOT NULL CHECK (request_fingerprint ~ '^[0-9a-f]{64}$'),
48
+ actor_fingerprint text NOT NULL CHECK (actor_fingerprint ~ '^[0-9a-f]{64}$'),
49
+ reason_fingerprint text CHECK (reason_fingerprint IS NULL OR reason_fingerprint ~ '^[0-9a-f]{64}$'),
50
+ operation text NOT NULL CHECK (operation IN ('start_import', 'reconcile', 'recover_outbox', 'activate', 'rollback', 'finalize')),
51
+ preview_checksum text NOT NULL CHECK (preview_checksum ~ '^[0-9a-f]{64}$'),
52
+ state text NOT NULL,
53
+ lease_token_hash text CHECK (lease_token_hash IS NULL OR lease_token_hash ~ '^[0-9a-f]{64}$'),
54
+ lease_expires_at timestamptz,
55
+ safe_result jsonb,
56
+ created_at timestamptz NOT NULL DEFAULT now(),
57
+ updated_at timestamptz NOT NULL DEFAULT now(),
58
+ CONSTRAINT platform_auth_operator_operations_state_check
59
+ CHECK (state IN ('running', 'applied', 'completed')),
60
+ CONSTRAINT platform_auth_operator_operations_lifecycle_check
61
+ CHECK ((state = 'running' AND lease_token_hash IS NOT NULL AND lease_expires_at IS NOT NULL AND safe_result IS NULL)
62
+ OR (state = 'applied' AND lease_token_hash IS NOT NULL AND lease_expires_at IS NOT NULL AND safe_result IS NOT NULL)
63
+ OR (state = 'completed' AND lease_token_hash IS NULL AND lease_expires_at IS NULL AND safe_result IS NOT NULL))
64
+ )
65
+ `);
66
+ await pool.query(`
67
+ ALTER TABLE platform_auth_operator_operations
68
+ ADD COLUMN IF NOT EXISTS reason_fingerprint text
69
+ CHECK (reason_fingerprint IS NULL OR reason_fingerprint ~ '^[0-9a-f]{64}$')
70
+ `);
71
+ await pool.query(`
72
+ ALTER TABLE platform_auth_operator_operations
73
+ DROP CONSTRAINT IF EXISTS platform_auth_operator_operations_operation_check,
74
+ DROP CONSTRAINT IF EXISTS platform_auth_operator_operations_state_check,
75
+ DROP CONSTRAINT IF EXISTS platform_auth_operator_operations_lifecycle_check,
76
+ DROP CONSTRAINT IF EXISTS platform_auth_operator_operations_check;
77
+ ALTER TABLE platform_auth_operator_operations
78
+ ADD CONSTRAINT platform_auth_operator_operations_operation_check
79
+ CHECK (operation IN ('start_import', 'reconcile', 'recover_outbox', 'activate', 'rollback', 'finalize')),
80
+ ADD CONSTRAINT platform_auth_operator_operations_state_check
81
+ CHECK (state IN ('running', 'applied', 'completed')),
82
+ ADD CONSTRAINT platform_auth_operator_operations_lifecycle_check
83
+ CHECK ((state = 'running' AND lease_token_hash IS NOT NULL AND lease_expires_at IS NOT NULL AND safe_result IS NULL)
84
+ OR (state = 'applied' AND lease_token_hash IS NOT NULL AND lease_expires_at IS NOT NULL AND safe_result IS NOT NULL)
85
+ OR (state = 'completed' AND lease_token_hash IS NULL AND lease_expires_at IS NULL AND safe_result IS NOT NULL))
86
+ `);
87
+ await pool.query(`
88
+ CREATE TABLE IF NOT EXISTS platform_auth_operator_sync_health (
89
+ component text PRIMARY KEY CHECK (component IN ('outbox', 'events')),
90
+ last_success_at timestamptz NOT NULL,
91
+ updated_at timestamptz NOT NULL DEFAULT now()
92
+ )
93
+ `);
94
+ await pool.query(`
95
+ CREATE OR REPLACE FUNCTION platform_auth_operator_operation_guard() RETURNS trigger AS $$
96
+ BEGIN
97
+ IF TG_OP = 'DELETE' OR OLD.state = 'completed' THEN
98
+ RAISE EXCEPTION 'platform auth operator operations are append-only';
99
+ END IF;
100
+ IF OLD.idempotency_key_hash IS DISTINCT FROM NEW.idempotency_key_hash
101
+ OR OLD.request_fingerprint IS DISTINCT FROM NEW.request_fingerprint
102
+ OR OLD.actor_fingerprint IS DISTINCT FROM NEW.actor_fingerprint
103
+ OR OLD.reason_fingerprint IS DISTINCT FROM NEW.reason_fingerprint
104
+ OR OLD.operation IS DISTINCT FROM NEW.operation
105
+ OR OLD.preview_checksum IS DISTINCT FROM NEW.preview_checksum THEN
106
+ RAISE EXCEPTION 'platform auth operator operation evidence is immutable';
107
+ END IF;
108
+ IF OLD.state = 'applied' AND (
109
+ NEW.state <> 'completed'
110
+ OR OLD.safe_result IS DISTINCT FROM NEW.safe_result
111
+ ) THEN
112
+ RAISE EXCEPTION 'platform auth operator applied result is immutable';
113
+ END IF;
114
+ RETURN NEW;
115
+ END;
116
+ $$ LANGUAGE plpgsql
117
+ `);
118
+ await pool.query(`
119
+ CREATE OR REPLACE FUNCTION platform_auth_operator_campaign_guard() RETURNS trigger AS $$
120
+ BEGIN
121
+ IF TG_OP = 'DELETE' OR OLD.state <> 'running' THEN
122
+ RAISE EXCEPTION 'platform auth operator campaigns are append-only';
123
+ END IF;
124
+ IF OLD.import_run_id IS DISTINCT FROM NEW.import_run_id
125
+ OR OLD.backfill_run_id IS DISTINCT FROM NEW.backfill_run_id
126
+ OR OLD.inventory_run_id IS DISTINCT FROM NEW.inventory_run_id
127
+ OR OLD.inventory_checksum IS DISTINCT FROM NEW.inventory_checksum
128
+ OR OLD.import_lineage_checksum IS DISTINCT FROM NEW.import_lineage_checksum
129
+ OR OLD.workos_realm_fingerprint IS DISTINCT FROM NEW.workos_realm_fingerprint
130
+ OR OLD.release_sha IS DISTINCT FROM NEW.release_sha THEN
131
+ RAISE EXCEPTION 'platform auth operator campaign lineage is immutable';
132
+ END IF;
133
+ RETURN NEW;
134
+ END;
135
+ $$ LANGUAGE plpgsql
136
+ `);
137
+ await pool.query(`
138
+ CREATE OR REPLACE FUNCTION platform_auth_operator_preview_guard() RETURNS trigger AS $$
139
+ BEGIN
140
+ RAISE EXCEPTION 'platform auth operator previews are append-only';
141
+ END;
142
+ $$ LANGUAGE plpgsql
143
+ `);
144
+ await pool.query(`
145
+ DROP TRIGGER IF EXISTS platform_auth_operator_operation_guard_trigger
146
+ ON platform_auth_operator_operations;
147
+ CREATE TRIGGER platform_auth_operator_operation_guard_trigger
148
+ BEFORE UPDATE OR DELETE ON platform_auth_operator_operations
149
+ FOR EACH ROW EXECUTE FUNCTION platform_auth_operator_operation_guard();
150
+ DROP TRIGGER IF EXISTS platform_auth_operator_campaign_guard_trigger
151
+ ON platform_auth_operator_campaigns;
152
+ CREATE TRIGGER platform_auth_operator_campaign_guard_trigger
153
+ BEFORE UPDATE OR DELETE ON platform_auth_operator_campaigns
154
+ FOR EACH ROW EXECUTE FUNCTION platform_auth_operator_campaign_guard();
155
+ DROP TRIGGER IF EXISTS platform_auth_operator_preview_guard_trigger
156
+ ON platform_auth_operator_previews;
157
+ CREATE TRIGGER platform_auth_operator_preview_guard_trigger
158
+ BEFORE UPDATE OR DELETE ON platform_auth_operator_previews
159
+ FOR EACH ROW EXECUTE FUNCTION platform_auth_operator_preview_guard()
160
+ `);
161
+ }
162
+ //# sourceMappingURL=platform-auth-operator-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-auth-operator-schema.js","sourceRoot":"","sources":["../src/platform-auth-operator-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0CAA0C,EAAE,MAAM,+CAA+C,CAAC;AAG3G,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,IAA+B;IAE/B,MAAM,0CAA0C,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;GAehB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;GAGhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;GAWhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;GAMhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;GAqBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;GAehB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;GAMhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;GAuBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;GAkBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;GAMhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;GAgBhB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,92 @@
1
+ import { type PlatformAuthOperatorSnapshot } from './platform-auth-operator.js';
2
+ import type { PlatformIdentityQueryable } from './platform-identity-postgres.js';
3
+ export { PLATFORM_AUTH_SYNCHRONIZATION_FRESHNESS_SECONDS } from './platform-auth-operator-state-support.js';
4
+ export type PlatformAuthOperatorPool = PlatformIdentityQueryable & {
5
+ connect?: () => Promise<PlatformIdentityQueryable & {
6
+ release?: () => void;
7
+ }>;
8
+ };
9
+ export interface OperatorInventoryLineage {
10
+ readonly runId: string;
11
+ readonly checksum: string;
12
+ readonly candidateCount: number;
13
+ readonly excludedCount: number;
14
+ readonly blockers: PlatformAuthOperatorSnapshot['inventory']['blockers'];
15
+ }
16
+ export interface OperatorCampaignLineage {
17
+ readonly importRunId: string;
18
+ readonly backfillRunId: string;
19
+ readonly inventoryRunId: string;
20
+ readonly inventoryChecksum: string;
21
+ readonly importLineageChecksum: string;
22
+ readonly state: 'running' | 'completed' | 'failed';
23
+ }
24
+ export declare class PostgresPlatformAuthOperatorState {
25
+ #private;
26
+ constructor(pool: PlatformAuthOperatorPool);
27
+ currentInventoryRun(input: {
28
+ readonly releaseSha: string;
29
+ readonly workosRealmFingerprint: string;
30
+ }): Promise<{
31
+ readonly runId: string;
32
+ readonly state: 'running' | 'completed';
33
+ readonly terminal: boolean;
34
+ } | undefined>;
35
+ withInventoryLock<T>(input: {
36
+ readonly releaseSha: string;
37
+ readonly workosRealmFingerprint: string;
38
+ }, task: () => Promise<T>): Promise<T>;
39
+ withStartImportLock<T>(input: {
40
+ readonly releaseSha: string;
41
+ readonly workosRealmFingerprint: string;
42
+ readonly inventoryRunId: string;
43
+ readonly backfillRunId: string;
44
+ readonly importRunId: string;
45
+ }, task: () => Promise<T>): Promise<T>;
46
+ latestInventory(input: {
47
+ readonly releaseSha: string;
48
+ readonly workosRealmFingerprint: string;
49
+ }): Promise<OperatorInventoryLineage | undefined>;
50
+ inventoryStatus(input: {
51
+ readonly releaseSha: string;
52
+ readonly workosRealmFingerprint: string;
53
+ }): Promise<PlatformAuthOperatorSnapshot['inventory'] | undefined>;
54
+ latestCampaign(input: {
55
+ readonly releaseSha: string;
56
+ readonly workosRealmFingerprint: string;
57
+ }): Promise<OperatorCampaignLineage | undefined>;
58
+ insertCampaign(input: {
59
+ readonly importRunId: string;
60
+ readonly backfillRunId: string;
61
+ readonly inventoryRunId: string;
62
+ readonly inventoryChecksum: string;
63
+ readonly importLineageChecksum: string;
64
+ readonly workosRealmFingerprint: string;
65
+ readonly releaseSha: string;
66
+ }): Promise<void>;
67
+ importAggregate(inventory: OperatorInventoryLineage | undefined, campaign: OperatorCampaignLineage | undefined): Promise<PlatformAuthOperatorSnapshot['import']>;
68
+ synchronization(input: {
69
+ readonly outboxConfigured: boolean;
70
+ readonly eventsConfigured: boolean;
71
+ }): Promise<PlatformAuthOperatorSnapshot['synchronization']>;
72
+ markSynchronizationSuccess(components: readonly ('outbox' | 'events')[]): Promise<void>;
73
+ savePreview(input: {
74
+ readonly checksum: string;
75
+ readonly operation: 'start_import' | 'reconcile' | 'recover_outbox';
76
+ readonly expectedGeneration: number;
77
+ readonly releaseSha: string;
78
+ readonly targetFingerprint: string;
79
+ readonly snapshotFingerprint: string;
80
+ }): Promise<void>;
81
+ assertPreview(input: {
82
+ readonly checksum: string;
83
+ readonly operation: 'start_import' | 'reconcile' | 'recover_outbox';
84
+ readonly expectedGeneration: number;
85
+ readonly releaseSha: string;
86
+ readonly targetFingerprint: string;
87
+ readonly snapshotFingerprint: string;
88
+ }): Promise<void>;
89
+ markCampaignComplete(campaign: OperatorCampaignLineage): Promise<void>;
90
+ }
91
+ export declare function platformAuthOperatorHash(value: unknown): string;
92
+ //# sourceMappingURL=platform-auth-operator-state-postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-auth-operator-state-postgres.d.ts","sourceRoot":"","sources":["../src/platform-auth-operator-state-postgres.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,271 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { PlatformAuthOperatorError, } from './platform-auth-operator.js';
3
+ import { emptyPlatformAuthImport, parsePlatformAuthInventoryBlockers, parsePlatformAuthInventoryResult, platformAuthSynchronizationAgeFresh, platformAuthTimestamp, } from './platform-auth-operator-state-support.js';
4
+ export { PLATFORM_AUTH_SYNCHRONIZATION_FRESHNESS_SECONDS } from './platform-auth-operator-state-support.js';
5
+ export class PostgresPlatformAuthOperatorState {
6
+ #pool;
7
+ constructor(pool) {
8
+ this.#pool = pool;
9
+ }
10
+ async currentInventoryRun(input) {
11
+ const result = await this.#pool.query(`SELECT run.id, run.state, progress.terminal_error
12
+ FROM identity_migration_runs run
13
+ LEFT JOIN platform_auth_inventory_progress progress
14
+ ON progress.migration_run_id = run.id
15
+ WHERE run.kind = 'inventory' AND run.state IN ('running', 'completed')
16
+ AND run.release_sha = $1 AND run.workos_realm_fingerprint = $2
17
+ ORDER BY ${INVENTORY_GENERATION_ORDER} LIMIT 1`, [input.releaseSha, input.workosRealmFingerprint]);
18
+ const row = result.rows[0];
19
+ return row === undefined
20
+ ? undefined
21
+ : { runId: row.id, state: row.state, terminal: row.terminal_error !== null };
22
+ }
23
+ async withInventoryLock(input, task) {
24
+ return this.#withLock(`platform-auth-inventory-generation:${input.releaseSha}:${input.workosRealmFingerprint}`, task);
25
+ }
26
+ async withStartImportLock(input, task) {
27
+ return this.#withLock(`platform-auth-start-import:${input.releaseSha}:${input.workosRealmFingerprint}:${input.inventoryRunId}`, async (connection) => {
28
+ const existing = await connection.query(`SELECT backfill_run_id, import_run_id FROM platform_auth_operator_campaigns
29
+ WHERE release_sha = $1 AND workos_realm_fingerprint = $2
30
+ AND inventory_run_id = $3 LIMIT 1`, [input.releaseSha, input.workosRealmFingerprint, input.inventoryRunId]);
31
+ const campaign = existing.rows[0];
32
+ if (campaign !== undefined &&
33
+ (campaign.backfill_run_id !== input.backfillRunId ||
34
+ campaign.import_run_id !== input.importRunId))
35
+ throw new PlatformAuthOperatorError('import_already_started');
36
+ return task();
37
+ });
38
+ }
39
+ async latestInventory(input) {
40
+ const result = await this.#pool.query(`SELECT run.id, run.state, run.frozen_checksum, run.safe_result
41
+ FROM identity_migration_runs run
42
+ WHERE run.kind = 'inventory' AND run.state IN ('running', 'completed')
43
+ AND run.release_sha = $1 AND run.workos_realm_fingerprint = $2
44
+ ORDER BY ${INVENTORY_GENERATION_ORDER} LIMIT 1`, [input.releaseSha, input.workosRealmFingerprint]);
45
+ const row = result.rows[0];
46
+ if (row === undefined || row.state !== 'completed' || row.frozen_checksum === null)
47
+ return undefined;
48
+ const safe = parsePlatformAuthInventoryResult(row.safe_result);
49
+ return { runId: row.id, checksum: row.frozen_checksum, ...safe };
50
+ }
51
+ async inventoryStatus(input) {
52
+ const result = await this.#pool.query(`SELECT run.state, run.frozen_checksum, run.safe_result, progress.phase,
53
+ progress.remote_page_count, progress.remote_user_count,
54
+ progress.local_subject_count, progress.candidate_count,
55
+ progress.excluded_count, progress.blocker_counts, progress.terminal_error
56
+ FROM identity_migration_runs run
57
+ LEFT JOIN platform_auth_inventory_progress progress
58
+ ON progress.migration_run_id = run.id
59
+ WHERE run.kind = 'inventory' AND run.state IN ('running', 'completed')
60
+ AND run.release_sha = $1 AND run.workos_realm_fingerprint = $2
61
+ ORDER BY ${INVENTORY_GENERATION_ORDER} LIMIT 1`, [input.releaseSha, input.workosRealmFingerprint]);
62
+ const row = result.rows[0];
63
+ if (row === undefined)
64
+ return undefined;
65
+ if (row.state === 'completed') {
66
+ if (row.frozen_checksum === null)
67
+ throw new PlatformAuthOperatorError('inventory_unavailable');
68
+ const safe = parsePlatformAuthInventoryResult(row.safe_result);
69
+ return {
70
+ state: safe.blockers.length === 0 ? 'ready' : 'blocked',
71
+ phase: 'completed',
72
+ remotePages: row.remote_page_count ?? 0,
73
+ remoteUsers: row.remote_user_count ?? 0,
74
+ localSubjects: row.local_subject_count ?? safe.candidateCount + safe.excludedCount,
75
+ candidateCount: safe.candidateCount,
76
+ excludedCount: safe.excludedCount,
77
+ checksum: row.frozen_checksum,
78
+ blockers: safe.blockers,
79
+ };
80
+ }
81
+ return {
82
+ state: row.terminal_error === null ? 'running' : 'unavailable',
83
+ phase: row.phase,
84
+ remotePages: row.remote_page_count ?? 0,
85
+ remoteUsers: row.remote_user_count ?? 0,
86
+ localSubjects: row.local_subject_count ?? 0,
87
+ candidateCount: row.candidate_count ?? 0,
88
+ excludedCount: row.excluded_count ?? 0,
89
+ checksum: null,
90
+ blockers: parsePlatformAuthInventoryBlockers(row.blocker_counts ?? {}),
91
+ };
92
+ }
93
+ async latestCampaign(input) {
94
+ const result = await this.#pool.query(`SELECT import_run_id, backfill_run_id, inventory_run_id, inventory_checksum,
95
+ import_lineage_checksum, state
96
+ FROM platform_auth_operator_campaigns
97
+ WHERE release_sha = $1 AND workos_realm_fingerprint = $2
98
+ ORDER BY created_at DESC LIMIT 1`, [input.releaseSha, input.workosRealmFingerprint]);
99
+ const row = result.rows[0];
100
+ if (row === undefined)
101
+ return undefined;
102
+ return {
103
+ importRunId: row.import_run_id,
104
+ backfillRunId: row.backfill_run_id,
105
+ inventoryRunId: row.inventory_run_id,
106
+ inventoryChecksum: row.inventory_checksum,
107
+ importLineageChecksum: row.import_lineage_checksum,
108
+ state: row.state,
109
+ };
110
+ }
111
+ async insertCampaign(input) {
112
+ const inserted = await this.#pool.query(`INSERT INTO platform_auth_operator_campaigns
113
+ (import_run_id, backfill_run_id, inventory_run_id, inventory_checksum,
114
+ import_lineage_checksum, workos_realm_fingerprint, release_sha)
115
+ VALUES ($1, $2, $3, $4, $5, $6, $7)
116
+ ON CONFLICT DO NOTHING RETURNING import_run_id`, [
117
+ input.importRunId,
118
+ input.backfillRunId,
119
+ input.inventoryRunId,
120
+ input.inventoryChecksum,
121
+ input.importLineageChecksum,
122
+ input.workosRealmFingerprint,
123
+ input.releaseSha,
124
+ ]);
125
+ if (inserted.rows[0] !== undefined)
126
+ return;
127
+ const existing = await this.latestCampaign({
128
+ releaseSha: input.releaseSha,
129
+ workosRealmFingerprint: input.workosRealmFingerprint,
130
+ });
131
+ if (existing?.importRunId !== input.importRunId ||
132
+ existing.backfillRunId !== input.backfillRunId ||
133
+ existing.inventoryRunId !== input.inventoryRunId ||
134
+ existing.inventoryChecksum !== input.inventoryChecksum ||
135
+ existing.importLineageChecksum !== input.importLineageChecksum)
136
+ throw new PlatformAuthOperatorError('import_already_started');
137
+ }
138
+ async importAggregate(inventory, campaign) {
139
+ if (inventory === undefined || campaign === undefined)
140
+ return emptyPlatformAuthImport();
141
+ const result = await this.#pool.query(`SELECT
142
+ (SELECT count(*)::text FROM platform_auth_inventory_candidates
143
+ WHERE migration_run_id = $1) AS total,
144
+ count(*)::text AS ledger_total,
145
+ count(*) FILTER (WHERE state = 'pending')::text AS pending,
146
+ count(*) FILTER (WHERE state = 'reconcile_required')::text AS reconcile_required,
147
+ count(*) FILTER (WHERE state = 'linked')::text AS linked,
148
+ count(*) FILTER (WHERE state = 'blocked')::text AS blocked,
149
+ count(*) FILTER (WHERE state = 'failed')::text AS failed,
150
+ count(*) FILTER (WHERE lease_expires_at > now())::text AS active_leases,
151
+ min(retry_at) FILTER (WHERE state = 'reconcile_required') AS next_retry_at
152
+ FROM workos_import_ledger WHERE migration_run_id = $2`, [inventory.runId, campaign.importRunId]);
153
+ const row = result.rows[0];
154
+ if (row === undefined)
155
+ return emptyPlatformAuthImport();
156
+ const total = Number(row.total);
157
+ const pending = total - Number(row.ledger_total) + Number(row.pending);
158
+ const linked = Number(row.linked);
159
+ const failed = Number(row.failed);
160
+ const state = campaign.state === 'failed' || failed > 0
161
+ ? 'failed'
162
+ : total > 0 && linked === total
163
+ ? 'completed'
164
+ : 'running';
165
+ return {
166
+ state,
167
+ total,
168
+ pending,
169
+ reconcileRequired: Number(row.reconcile_required),
170
+ linked,
171
+ blocked: Number(row.blocked),
172
+ failed,
173
+ activeLeases: Number(row.active_leases),
174
+ nextRetryAt: platformAuthTimestamp(row.next_retry_at),
175
+ };
176
+ }
177
+ async synchronization(input) {
178
+ const [outbox, health] = await Promise.all([
179
+ this.#pool.query('SELECT count(*)::text AS pending FROM platform_identity_sync_outbox WHERE delivered_at IS NULL'),
180
+ this.#pool.query(`SELECT component,
181
+ greatest(0, extract(epoch FROM now() - last_success_at)::bigint)::text AS age_seconds
182
+ FROM platform_auth_operator_sync_health`),
183
+ ]);
184
+ const ages = new Map(health.rows.map((row) => [row.component, Number(row.age_seconds)]));
185
+ const outboxAge = ages.get('outbox');
186
+ const eventsAge = ages.get('events');
187
+ return {
188
+ outbox: {
189
+ status: !input.outboxConfigured
190
+ ? 'not_configured'
191
+ : !platformAuthSynchronizationAgeFresh(outboxAge)
192
+ ? 'pending'
193
+ : 'ready',
194
+ pending: Number(outbox.rows[0]?.pending ?? 0),
195
+ lastSuccessAgeSeconds: outboxAge ?? null,
196
+ },
197
+ events: {
198
+ status: !input.eventsConfigured
199
+ ? 'not_configured'
200
+ : !platformAuthSynchronizationAgeFresh(eventsAge)
201
+ ? 'pending'
202
+ : 'ready',
203
+ lastSuccessAgeSeconds: eventsAge ?? null,
204
+ },
205
+ };
206
+ }
207
+ async markSynchronizationSuccess(components) {
208
+ for (const component of components) {
209
+ await this.#pool.query(`INSERT INTO platform_auth_operator_sync_health (component, last_success_at, updated_at)
210
+ VALUES ($1, now(), now())
211
+ ON CONFLICT (component) DO UPDATE
212
+ SET last_success_at = excluded.last_success_at, updated_at = excluded.updated_at`, [component]);
213
+ }
214
+ }
215
+ async savePreview(input) {
216
+ await this.#pool.query(`INSERT INTO platform_auth_operator_previews
217
+ (checksum, operation, expected_generation, release_sha, target_fingerprint,
218
+ snapshot_fingerprint, expires_at)
219
+ VALUES ($1, $2, $3, $4, $5, $6, now() + interval '15 minutes')
220
+ ON CONFLICT (checksum) DO NOTHING`, [
221
+ input.checksum,
222
+ input.operation,
223
+ input.expectedGeneration,
224
+ input.releaseSha,
225
+ input.targetFingerprint,
226
+ input.snapshotFingerprint,
227
+ ]);
228
+ }
229
+ async assertPreview(input) {
230
+ const result = await this.#pool.query(`SELECT true AS ok FROM platform_auth_operator_previews
231
+ WHERE checksum = $1 AND operation = $2 AND expected_generation = $3
232
+ AND release_sha = $4 AND target_fingerprint = $5 AND snapshot_fingerprint = $6
233
+ AND expires_at > now()`, [
234
+ input.checksum,
235
+ input.operation,
236
+ input.expectedGeneration,
237
+ input.releaseSha,
238
+ input.targetFingerprint,
239
+ input.snapshotFingerprint,
240
+ ]);
241
+ if (result.rows[0] === undefined)
242
+ throw new PlatformAuthOperatorError('preview_mismatch');
243
+ }
244
+ async markCampaignComplete(campaign) {
245
+ await this.#pool.query(`UPDATE platform_auth_operator_campaigns
246
+ SET state = 'completed', completed_at = now()
247
+ WHERE import_run_id = $1 AND state = 'running'`, [campaign.importRunId]);
248
+ }
249
+ async #withLock(key, task) {
250
+ const connection = this.#pool.connect === undefined ? this.#pool : await this.#pool.connect();
251
+ try {
252
+ await connection.query('BEGIN');
253
+ await connection.query('SELECT pg_advisory_xact_lock(hashtextextended($1, 0))', [key]);
254
+ const result = await task(connection);
255
+ await connection.query('COMMIT');
256
+ return result;
257
+ }
258
+ catch (error) {
259
+ await connection.query('ROLLBACK').catch(() => undefined);
260
+ throw error;
261
+ }
262
+ finally {
263
+ connection.release?.();
264
+ }
265
+ }
266
+ }
267
+ export function platformAuthOperatorHash(value) {
268
+ return createHash('sha256').update(JSON.stringify(value)).digest('hex');
269
+ }
270
+ const INVENTORY_GENERATION_ORDER = "COALESCE((substring(run.id FROM '-generation-([0-9]+)$'))::numeric, 0) DESC, run.created_at DESC";
271
+ //# sourceMappingURL=platform-auth-operator-state-postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-auth-operator-state-postgres.js","sourceRoot":"","sources":["../src/platform-auth-operator-state-postgres.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type PlatformAuthOperatorSnapshot } from './platform-auth-operator.js';
2
+ /** Reconciliation runs on a 30-second maintenance cadence; four missed runs fail readiness closed. */
3
+ export declare const PLATFORM_AUTH_SYNCHRONIZATION_FRESHNESS_SECONDS = 120;
4
+ export declare function parsePlatformAuthInventoryResult(value: unknown): {
5
+ readonly candidateCount: number;
6
+ readonly excludedCount: number;
7
+ readonly blockers: PlatformAuthOperatorSnapshot['inventory']['blockers'];
8
+ };
9
+ export declare function parsePlatformAuthInventoryBlockers(value: unknown): PlatformAuthOperatorSnapshot['inventory']['blockers'];
10
+ export declare function emptyPlatformAuthImport(): PlatformAuthOperatorSnapshot['import'];
11
+ export declare function platformAuthTimestamp(value: string | Date | null): string | null;
12
+ export declare function platformAuthSynchronizationAgeFresh(value: number | undefined): value is number;
13
+ //# sourceMappingURL=platform-auth-operator-state-support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-auth-operator-state-support.d.ts","sourceRoot":"","sources":["../src/platform-auth-operator-state-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,6BAA6B,CAAC;AAErC,sGAAsG;AACtG,eAAO,MAAM,+CAA+C,MAAM,CAAC;AAEnE,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG;IAChE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,4BAA4B,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC;CAC1E,CAoBA;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,OAAO,GACb,4BAA4B,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAWvD;AAED,wBAAgB,uBAAuB,IAAI,4BAA4B,CAAC,QAAQ,CAAC,CAYhF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAGhF;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,CAO9F"}