@noodleseed/one 0.83.0 → 0.84.1

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 (241) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +4 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/author-loop.d.ts.map +1 -1
  5. package/dist/commands/author-loop.js +7 -7
  6. package/dist/commands/author-loop.js.map +1 -1
  7. package/dist/commands/catalog-data-platform-auth.d.ts.map +1 -1
  8. package/dist/commands/catalog-data-platform-auth.js +70 -2
  9. package/dist/commands/catalog-data-platform-auth.js.map +1 -1
  10. package/dist/commands/platform-account-reset-args.d.ts +40 -0
  11. package/dist/commands/platform-account-reset-args.d.ts.map +1 -0
  12. package/dist/commands/platform-account-reset-args.js +181 -0
  13. package/dist/commands/platform-account-reset-args.js.map +1 -0
  14. package/dist/commands/platform-account-reset-files.d.ts +9 -0
  15. package/dist/commands/platform-account-reset-files.d.ts.map +1 -0
  16. package/dist/commands/platform-account-reset-files.js +45 -0
  17. package/dist/commands/platform-account-reset-files.js.map +1 -0
  18. package/dist/commands/platform-account-reset-ops.d.ts +3 -0
  19. package/dist/commands/platform-account-reset-ops.d.ts.map +1 -0
  20. package/dist/commands/platform-account-reset-ops.js +162 -0
  21. package/dist/commands/platform-account-reset-ops.js.map +1 -0
  22. package/dist/plugin-mode/build-readiness-recorder.d.ts.map +1 -1
  23. package/dist/plugin-mode/build-readiness-recorder.js +3 -1
  24. package/dist/plugin-mode/build-readiness-recorder.js.map +1 -1
  25. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +1 -1
  26. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  27. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.d.ts.map +1 -1
  28. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +3 -1
  29. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
  30. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +1 -1
  31. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
  32. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +2 -2
  33. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
  34. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  35. package/node_modules/@noodle-borg/service/dist/billing/enforcement-activation.d.ts +4 -4
  36. package/node_modules/@noodle-borg/service/dist/billing/read-contract.d.ts +6 -6
  37. package/node_modules/@noodle-borg/service/dist/index.d.ts +4 -1
  38. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  39. package/node_modules/@noodle-borg/service/dist/index.js +2 -0
  40. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  41. package/node_modules/@noodle-borg/service/dist/main.js +5 -0
  42. package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
  43. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.d.ts.map +1 -1
  44. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js +1 -0
  45. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js.map +1 -1
  46. package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts.map +1 -1
  47. package/node_modules/@noodle-borg/service/dist/oauth/provider.js +1 -0
  48. package/node_modules/@noodle-borg/service/dist/oauth/provider.js.map +1 -1
  49. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres-schema.d.ts.map +1 -1
  50. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres-schema.js +17 -0
  51. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres-schema.js.map +1 -1
  52. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts +2 -2
  53. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts.map +1 -1
  54. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js +25 -5
  55. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js.map +1 -1
  56. package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts +5 -3
  57. package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts.map +1 -1
  58. package/node_modules/@noodle-borg/service/dist/oauth/store.js +5 -5
  59. package/node_modules/@noodle-borg/service/dist/oauth/store.js.map +1 -1
  60. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.d.ts.map +1 -1
  61. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.js +7 -2
  62. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.js.map +1 -1
  63. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.d.ts +1 -1
  64. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.d.ts.map +1 -1
  65. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.js.map +1 -1
  66. package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.d.ts.map +1 -1
  67. package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.js +1 -1
  68. package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.js.map +1 -1
  69. package/node_modules/@noodle-borg/service/dist/oauth/upstream-federation.d.ts.map +1 -1
  70. package/node_modules/@noodle-borg/service/dist/oauth/upstream-federation.js +6 -1
  71. package/node_modules/@noodle-borg/service/dist/oauth/upstream-federation.js.map +1 -1
  72. package/node_modules/@noodle-borg/service/dist/options.d.ts +13 -0
  73. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  74. package/node_modules/@noodle-borg/service/dist/platform-account-reset-config.d.ts +9 -0
  75. package/node_modules/@noodle-borg/service/dist/platform-account-reset-config.d.ts.map +1 -0
  76. package/node_modules/@noodle-borg/service/dist/platform-account-reset-config.js +24 -0
  77. package/node_modules/@noodle-borg/service/dist/platform-account-reset-config.js.map +1 -0
  78. package/node_modules/@noodle-borg/service/dist/platform-account-reset-dispatch-lock-postgres.d.ts +12 -0
  79. package/node_modules/@noodle-borg/service/dist/platform-account-reset-dispatch-lock-postgres.d.ts.map +1 -0
  80. package/node_modules/@noodle-borg/service/dist/platform-account-reset-dispatch-lock-postgres.js +110 -0
  81. package/node_modules/@noodle-borg/service/dist/platform-account-reset-dispatch-lock-postgres.js.map +1 -0
  82. package/node_modules/@noodle-borg/service/dist/platform-account-reset-fingerprint.d.ts +9 -0
  83. package/node_modules/@noodle-borg/service/dist/platform-account-reset-fingerprint.d.ts.map +1 -0
  84. package/node_modules/@noodle-borg/service/dist/platform-account-reset-fingerprint.js +46 -0
  85. package/node_modules/@noodle-borg/service/dist/platform-account-reset-fingerprint.js.map +1 -0
  86. package/node_modules/@noodle-borg/service/dist/platform-account-reset-operation-postgres.d.ts +77 -0
  87. package/node_modules/@noodle-borg/service/dist/platform-account-reset-operation-postgres.d.ts.map +1 -0
  88. package/node_modules/@noodle-borg/service/dist/platform-account-reset-operation-postgres.js +144 -0
  89. package/node_modules/@noodle-borg/service/dist/platform-account-reset-operation-postgres.js.map +1 -0
  90. package/node_modules/@noodle-borg/service/dist/platform-account-reset-operator.d.ts +29 -0
  91. package/node_modules/@noodle-borg/service/dist/platform-account-reset-operator.d.ts.map +1 -0
  92. package/node_modules/@noodle-borg/service/dist/platform-account-reset-operator.js +59 -0
  93. package/node_modules/@noodle-borg/service/dist/platform-account-reset-operator.js.map +1 -0
  94. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-helpers.d.ts +11 -0
  95. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-helpers.d.ts.map +1 -0
  96. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-helpers.js +22 -0
  97. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-helpers.js.map +1 -0
  98. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-postgres.d.ts +41 -0
  99. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-postgres.d.ts.map +1 -0
  100. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-postgres.js +314 -0
  101. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-postgres.js.map +1 -0
  102. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-resources-postgres.d.ts +14 -0
  103. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-resources-postgres.d.ts.map +1 -0
  104. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-resources-postgres.js +210 -0
  105. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-resources-postgres.js.map +1 -0
  106. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-rollback-postgres.d.ts +11 -0
  107. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-rollback-postgres.d.ts.map +1 -0
  108. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-rollback-postgres.js +71 -0
  109. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ownership-rollback-postgres.js.map +1 -0
  110. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ports.d.ts +12 -0
  111. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ports.d.ts.map +1 -0
  112. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ports.js +2 -0
  113. package/node_modules/@noodle-borg/service/dist/platform-account-reset-ports.js.map +1 -0
  114. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-evidence-postgres.d.ts +22 -0
  115. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-evidence-postgres.d.ts.map +1 -0
  116. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-evidence-postgres.js +177 -0
  117. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-evidence-postgres.js.map +1 -0
  118. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-local-postgres.d.ts +35 -0
  119. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-local-postgres.d.ts.map +1 -0
  120. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-local-postgres.js +184 -0
  121. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-local-postgres.js.map +1 -0
  122. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-persistence-postgres.d.ts +11 -0
  123. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-persistence-postgres.d.ts.map +1 -0
  124. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-persistence-postgres.js +120 -0
  125. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-persistence-postgres.js.map +1 -0
  126. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-postgres.d.ts +79 -0
  127. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-postgres.d.ts.map +1 -0
  128. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-postgres.js +286 -0
  129. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-postgres.js.map +1 -0
  130. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-result.d.ts +21 -0
  131. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-result.d.ts.map +1 -0
  132. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-result.js +81 -0
  133. package/node_modules/@noodle-borg/service/dist/platform-account-reset-preview-result.js.map +1 -0
  134. package/node_modules/@noodle-borg/service/dist/platform-account-reset-quarantine-postgres.d.ts +46 -0
  135. package/node_modules/@noodle-borg/service/dist/platform-account-reset-quarantine-postgres.d.ts.map +1 -0
  136. package/node_modules/@noodle-borg/service/dist/platform-account-reset-quarantine-postgres.js +283 -0
  137. package/node_modules/@noodle-borg/service/dist/platform-account-reset-quarantine-postgres.js.map +1 -0
  138. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-eligibility-postgres.d.ts +13 -0
  139. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-eligibility-postgres.d.ts.map +1 -0
  140. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-eligibility-postgres.js +81 -0
  141. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-eligibility-postgres.js.map +1 -0
  142. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-local-postgres.d.ts +30 -0
  143. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-local-postgres.d.ts.map +1 -0
  144. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-local-postgres.js +248 -0
  145. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-local-postgres.js.map +1 -0
  146. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-postgres.d.ts +29 -0
  147. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-postgres.d.ts.map +1 -0
  148. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-postgres.js +281 -0
  149. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-postgres.js.map +1 -0
  150. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-preview-postgres.d.ts +55 -0
  151. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-preview-postgres.d.ts.map +1 -0
  152. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-preview-postgres.js +262 -0
  153. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-preview-postgres.js.map +1 -0
  154. package/node_modules/@noodle-borg/service/dist/platform-account-reset-schema-postgres.d.ts +7 -0
  155. package/node_modules/@noodle-borg/service/dist/platform-account-reset-schema-postgres.d.ts.map +1 -0
  156. package/node_modules/@noodle-borg/service/dist/platform-account-reset-schema-postgres.js +439 -0
  157. package/node_modules/@noodle-borg/service/dist/platform-account-reset-schema-postgres.js.map +1 -0
  158. package/node_modules/@noodle-borg/service/dist/platform-account-reset.d.ts +276 -0
  159. package/node_modules/@noodle-borg/service/dist/platform-account-reset.d.ts.map +1 -0
  160. package/node_modules/@noodle-borg/service/dist/platform-account-reset.js +141 -0
  161. package/node_modules/@noodle-borg/service/dist/platform-account-reset.js.map +1 -0
  162. package/node_modules/@noodle-borg/service/dist/platform-auth-configuration.d.ts +1 -1
  163. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-legacy-sources-postgres.d.ts.map +1 -1
  164. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-legacy-sources-postgres.js +5 -1
  165. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-legacy-sources-postgres.js.map +1 -1
  166. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-subjects-postgres.d.ts.map +1 -1
  167. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-subjects-postgres.js +10 -1
  168. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-subjects-postgres.js.map +1 -1
  169. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-postgres.d.ts +5 -10
  170. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-postgres.d.ts.map +1 -1
  171. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-postgres.js +86 -47
  172. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-postgres.js.map +1 -1
  173. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-transaction-postgres.d.ts +17 -0
  174. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-transaction-postgres.d.ts.map +1 -0
  175. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-transaction-postgres.js +240 -0
  176. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-transaction-postgres.js.map +1 -0
  177. package/node_modules/@noodle-borg/service/dist/platform-auth-operator.d.ts +63 -63
  178. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-support.d.ts +1 -1
  179. package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.d.ts +18 -1
  180. package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.d.ts.map +1 -1
  181. package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.js +97 -2
  182. package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.js.map +1 -1
  183. package/node_modules/@noodle-borg/service/dist/platform-auth-service-bootstrap.d.ts +4 -1
  184. package/node_modules/@noodle-borg/service/dist/platform-auth-service-bootstrap.d.ts.map +1 -1
  185. package/node_modules/@noodle-borg/service/dist/platform-auth-service-bootstrap.js +4 -0
  186. package/node_modules/@noodle-borg/service/dist/platform-auth-service-bootstrap.js.map +1 -1
  187. package/node_modules/@noodle-borg/service/dist/platform-identity-postgres.d.ts +7 -2
  188. package/node_modules/@noodle-borg/service/dist/platform-identity-postgres.d.ts.map +1 -1
  189. package/node_modules/@noodle-borg/service/dist/platform-identity-postgres.js +24 -2
  190. package/node_modules/@noodle-borg/service/dist/platform-identity-postgres.js.map +1 -1
  191. package/node_modules/@noodle-borg/service/dist/platform-identity-schema-postgres.d.ts.map +1 -1
  192. package/node_modules/@noodle-borg/service/dist/platform-identity-schema-postgres.js +4 -0
  193. package/node_modules/@noodle-borg/service/dist/platform-identity-schema-postgres.js.map +1 -1
  194. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-postgres.d.ts +7 -1
  195. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-postgres.d.ts.map +1 -1
  196. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-postgres.js +121 -8
  197. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-postgres.js.map +1 -1
  198. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-recovery-postgres.d.ts.map +1 -1
  199. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-recovery-postgres.js +11 -1
  200. package/node_modules/@noodle-borg/service/dist/platform-identity-sync-recovery-postgres.js.map +1 -1
  201. package/node_modules/@noodle-borg/service/dist/platform-identity-sync.d.ts +5 -3
  202. package/node_modules/@noodle-borg/service/dist/platform-identity-sync.d.ts.map +1 -1
  203. package/node_modules/@noodle-borg/service/dist/platform-identity-sync.js +15 -1
  204. package/node_modules/@noodle-borg/service/dist/platform-identity-sync.js.map +1 -1
  205. package/node_modules/@noodle-borg/service/dist/platform-identity.d.ts +23 -2
  206. package/node_modules/@noodle-borg/service/dist/platform-identity.d.ts.map +1 -1
  207. package/node_modules/@noodle-borg/service/dist/platform-identity.js +21 -0
  208. package/node_modules/@noodle-borg/service/dist/platform-identity.js.map +1 -1
  209. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts +8 -0
  210. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts.map +1 -1
  211. package/node_modules/@noodle-borg/service/dist/registry-state.js +15 -2
  212. package/node_modules/@noodle-borg/service/dist/registry-state.js.map +1 -1
  213. package/node_modules/@noodle-borg/service/dist/registry.d.ts +2 -0
  214. package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
  215. package/node_modules/@noodle-borg/service/dist/registry.js +4 -1
  216. package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
  217. package/node_modules/@noodle-borg/service/dist/routes/platform-account-reset-dispatch.d.ts +8 -0
  218. package/node_modules/@noodle-borg/service/dist/routes/platform-account-reset-dispatch.d.ts.map +1 -0
  219. package/node_modules/@noodle-borg/service/dist/routes/platform-account-reset-dispatch.js +36 -0
  220. package/node_modules/@noodle-borg/service/dist/routes/platform-account-reset-dispatch.js.map +1 -0
  221. package/node_modules/@noodle-borg/service/dist/routes/platform-account-reset.d.ts +22 -0
  222. package/node_modules/@noodle-borg/service/dist/routes/platform-account-reset.d.ts.map +1 -0
  223. package/node_modules/@noodle-borg/service/dist/routes/platform-account-reset.js +201 -0
  224. package/node_modules/@noodle-borg/service/dist/routes/platform-account-reset.js.map +1 -0
  225. package/node_modules/@noodle-borg/service/dist/routes/private-platform-auth-dispatch.d.ts +18 -0
  226. package/node_modules/@noodle-borg/service/dist/routes/private-platform-auth-dispatch.d.ts.map +1 -0
  227. package/node_modules/@noodle-borg/service/dist/routes/private-platform-auth-dispatch.js +36 -0
  228. package/node_modules/@noodle-borg/service/dist/routes/private-platform-auth-dispatch.js.map +1 -0
  229. package/node_modules/@noodle-borg/service/dist/serve-options.d.ts +2 -1
  230. package/node_modules/@noodle-borg/service/dist/serve-options.d.ts.map +1 -1
  231. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  232. package/node_modules/@noodle-borg/service/dist/serve.js +16 -1
  233. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  234. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  235. package/node_modules/@noodle-borg/service/dist/service.js +4 -5
  236. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  237. package/node_modules/@noodle-borg/service/dist/workos-directory.d.ts +22 -3
  238. package/node_modules/@noodle-borg/service/dist/workos-directory.d.ts.map +1 -1
  239. package/node_modules/@noodle-borg/service/dist/workos-directory.js +56 -5
  240. package/node_modules/@noodle-borg/service/dist/workos-directory.js.map +1 -1
  241. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-account-reset-ownership-helpers.js","sourceRoot":"","sources":["../src/platform-account-reset-ownership-helpers.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,0BAA0B,CAAC,GAI1C;IACC,OAAO,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,MAAoB,EACpB,GAAyB;IAEzB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAI,MAAsB,EAAE,GAAM;IAClF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,IAAY,EAAE,KAAa;IACzE,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,IAA+B,EAC/B,GAAW,EACX,MAA2B;IAE3B,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAI,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { PlatformAccountResetBlockerCode } from './platform-account-reset.js';
2
+ import type { PlatformIdentityQueryable } from './platform-identity-postgres.js';
3
+ export type ResetDisposition = 'personal_org' | 'sole_owned_org' | 'target_owner_only_app' | 'preserved_shared_org' | 'preserved_org_members_app' | 'blocker';
4
+ export interface PlatformAccountResetCleanupResource {
5
+ readonly provider: 'postgres' | 'object_storage' | 'github' | 'stripe' | 'workos';
6
+ readonly resourceKind: string;
7
+ readonly locator: Readonly<Record<string, unknown>>;
8
+ readonly locatorFingerprint: string;
9
+ }
10
+ export interface PlatformAccountResetOwnershipSnapshot {
11
+ readonly counts: {
12
+ readonly personalOrganizationCount: number;
13
+ readonly soleOwnedOrganizationCount: number;
14
+ readonly ownerOnlyAppCount: number;
15
+ readonly preservedSharedOrganizationCount: number;
16
+ readonly membershipCount: number;
17
+ readonly billingAccountCount: number;
18
+ readonly credentialCount: number;
19
+ readonly providerObjectCount: number;
20
+ };
21
+ readonly blockers: readonly {
22
+ readonly code: Extract<PlatformAccountResetBlockerCode, 'ownership_ambiguous' | 'shared_org_owner_required'>;
23
+ readonly count: number;
24
+ }[];
25
+ readonly cleanupResources: readonly PlatformAccountResetCleanupResource[];
26
+ readonly ownershipFingerprint: string;
27
+ readonly cleanupSetFingerprint: string;
28
+ readonly fingerprint: string;
29
+ }
30
+ /**
31
+ * Classifies only explicit relational ownership. Email fields are deliberately absent from every ownership
32
+ * predicate; the preview layer handles contact hints separately as restrictive evidence.
33
+ */
34
+ export declare function loadPlatformAccountResetOwnershipSnapshot(pool: PlatformIdentityQueryable, input: {
35
+ readonly targetPrincipalIds: readonly string[];
36
+ readonly quarantine?: {
37
+ readonly operationId: string;
38
+ readonly cleanupResources: readonly PlatformAccountResetCleanupResource[];
39
+ };
40
+ }): Promise<PlatformAccountResetOwnershipSnapshot>;
41
+ //# sourceMappingURL=platform-account-reset-ownership-postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-account-reset-ownership-postgres.d.ts","sourceRoot":"","sources":["../src/platform-account-reset-ownership-postgres.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAkBnF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,MAAM,MAAM,gBAAgB,GACxB,cAAc,GACd,gBAAgB,GAChB,uBAAuB,GACvB,sBAAsB,GACtB,2BAA2B,GAC3B,SAAS,CAAC;AAEd,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;QAC3C,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;QAC5C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,gCAAgC,EAAE,MAAM,CAAC;QAClD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;QACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;KACtC,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CACpB,+BAA+B,EAC/B,qBAAqB,GAAG,2BAA2B,CACpD,CAAC;QACF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;IACJ,QAAQ,CAAC,gBAAgB,EAAE,SAAS,mCAAmC,EAAE,CAAC;IAC1E,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAyDD;;;GAGG;AACH,wBAAsB,yCAAyC,CAC7D,IAAI,EAAE,yBAAyB,EAC/B,KAAK,EAAE;IACL,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,mCAAmC,EAAE,CAAC;KAC3E,CAAC;CACH,GACA,OAAO,CAAC,qCAAqC,CAAC,CAmYhD"}
@@ -0,0 +1,314 @@
1
+ import { canonicalJson, sha256Canonical } from './platform-account-reset-fingerprint.js';
2
+ import { platformAccountResetAppKey as appKey, comparePlatformAccountResetText as compareText, groupPlatformAccountResetRows as groupBy, incrementPlatformAccountResetCount as increment, queryPlatformAccountResetRows as rows, } from './platform-account-reset-ownership-helpers.js';
3
+ import { addPlatformAccountResetBillingProviders, addPlatformAccountResetCleanupResource, addPlatformAccountResetCredentialScopes, addPlatformAccountResetHostedAssets, addPlatformAccountResetRepositories, addPlatformAccountResetStateScopes, } from './platform-account-reset-ownership-resources-postgres.js';
4
+ import { loadPlatformAccountResetFrozenOwnerOnlyApps } from './platform-account-reset-ownership-rollback-postgres.js';
5
+ /**
6
+ * Classifies only explicit relational ownership. Email fields are deliberately absent from every ownership
7
+ * predicate; the preview layer handles contact hints separately as restrictive evidence.
8
+ */
9
+ export async function loadPlatformAccountResetOwnershipSnapshot(pool, input) {
10
+ const targets = [...new Set(input.targetPrincipalIds)].sort(compareText);
11
+ const targetSet = new Set(targets);
12
+ const blockers = new Map();
13
+ const relationships = [];
14
+ const resources = [];
15
+ const personal = await rows(pool, `SELECT principal_subject, org_slug, billing_account_id
16
+ FROM personal_workspace_bindings
17
+ WHERE principal_subject = ANY($1::text[])`, [targets]);
18
+ const personalOrgOwners = new Map(personal.map((row) => [row.org_slug, row.principal_subject]));
19
+ const targetOwnerOnlyDeployments = await rows(pool, `SELECT org_slug, app_slug
20
+ FROM deploy_records
21
+ WHERE active AND archived_at IS NULL
22
+ AND access_mode = 'owner-only'
23
+ AND created_by_subject = ANY($1::text[])`, [targets]);
24
+ const frozenOwnerOnlyApps = input.quarantine === undefined
25
+ ? []
26
+ : await loadPlatformAccountResetFrozenOwnerOnlyApps(pool, input.quarantine.operationId, targets, input.quarantine.cleanupResources);
27
+ const membershipRows = await rows(pool, `SELECT org_slug, subject, role
28
+ FROM org_members
29
+ WHERE subject = ANY($1::text[])`, [targets]);
30
+ const involvedOrgs = [
31
+ ...new Set([
32
+ ...membershipRows.map((row) => row.org_slug),
33
+ ...personal.map((row) => row.org_slug),
34
+ ...targetOwnerOnlyDeployments.map((row) => row.org_slug),
35
+ ...frozenOwnerOnlyApps.map((row) => row.org_slug),
36
+ ]),
37
+ ].sort(compareText);
38
+ const owners = involvedOrgs.length === 0
39
+ ? []
40
+ : await rows(pool, `SELECT member.org_slug, member.subject, principal.status
41
+ FROM org_members member
42
+ LEFT JOIN platform_principals principal ON principal.principal_id = member.subject
43
+ WHERE member.org_slug = ANY($1::text[]) AND member.role = 'owner'`, [involvedOrgs]);
44
+ const ownersByOrg = groupBy(owners, (row) => row.org_slug);
45
+ const membershipsByOrg = groupBy(membershipRows, (row) => row.org_slug);
46
+ const ownedOrgs = new Map();
47
+ const preservedOrgs = new Set();
48
+ let validPersonalOrganizations = 0;
49
+ for (const org of involvedOrgs) {
50
+ const orgOwners = ownersByOrg.get(org) ?? [];
51
+ if (orgOwners.some((owner) => owner.status === null)) {
52
+ increment(blockers, 'ownership_ambiguous');
53
+ relationships.push({ disposition: 'blocker', kind: 'owner_status', org });
54
+ continue;
55
+ }
56
+ const personalOwner = personalOrgOwners.get(org);
57
+ if (personalOwner !== undefined) {
58
+ const expectedMemberships = (membershipsByOrg.get(org) ?? []).filter((member) => member.subject === personalOwner && member.role === 'owner');
59
+ if (expectedMemberships.length !== 1 ||
60
+ orgOwners.some((owner) => owner.subject !== personalOwner)) {
61
+ increment(blockers, 'ownership_ambiguous');
62
+ relationships.push({ disposition: 'blocker', kind: 'personal_membership', org });
63
+ continue;
64
+ }
65
+ ownedOrgs.set(org, 'personal_org');
66
+ validPersonalOrganizations += 1;
67
+ relationships.push({
68
+ disposition: 'personal_org',
69
+ org,
70
+ principalId: personalOwner,
71
+ });
72
+ continue;
73
+ }
74
+ const targetOwners = orgOwners.filter((owner) => targetSet.has(owner.subject));
75
+ const foreignOwners = orgOwners.filter((owner) => !targetSet.has(owner.subject));
76
+ const activeForeignOwners = foreignOwners.filter((owner) => owner.status === 'active');
77
+ if (activeForeignOwners.length !== 0) {
78
+ preservedOrgs.add(org);
79
+ relationships.push({
80
+ disposition: 'preserved_shared_org',
81
+ org,
82
+ targetPrincipals: (membershipsByOrg.get(org) ?? []).map((member) => member.subject),
83
+ });
84
+ continue;
85
+ }
86
+ if (foreignOwners.length !== 0) {
87
+ increment(blockers, 'ownership_ambiguous');
88
+ relationships.push({ disposition: 'blocker', kind: 'inactive_foreign_owner', org });
89
+ continue;
90
+ }
91
+ if (targetOwners.length !== 0 && targetOwners.length === orgOwners.length) {
92
+ ownedOrgs.set(org, 'sole_owned_org');
93
+ relationships.push({
94
+ disposition: 'sole_owned_org',
95
+ org,
96
+ targetPrincipals: targetOwners.map((owner) => owner.subject),
97
+ });
98
+ continue;
99
+ }
100
+ increment(blockers, 'shared_org_owner_required');
101
+ relationships.push({ disposition: 'blocker', kind: 'remaining_owner', org });
102
+ }
103
+ const apps = involvedOrgs.length === 0
104
+ ? []
105
+ : await rows(pool, `SELECT org_slug, slug FROM apps WHERE org_slug = ANY($1::text[])`, [involvedOrgs]);
106
+ const storedDeployments = involvedOrgs.length === 0
107
+ ? []
108
+ : await rows(pool, `SELECT deployment_id, org_slug, app_slug, environment, active, archived_at,
109
+ access_mode, created_by_subject, hosted_assets,
110
+ CASE WHEN $2::text IS NULL THEN false
111
+ ELSE archived_at = (
112
+ SELECT quarantined_at FROM platform_account_reset_operations
113
+ WHERE operation_id = $2
114
+ )
115
+ END AS operation_archived
116
+ FROM deploy_records
117
+ WHERE org_slug = ANY($1::text[])`, [involvedOrgs, input.quarantine?.operationId ?? null]);
118
+ const operationArchivedDeployments = new Set((input.quarantine?.cleanupResources ?? [])
119
+ .filter((resource) => resource.provider === 'postgres' &&
120
+ resource.resourceKind === 'deployment' &&
121
+ resource.locator.archived === false)
122
+ .map((resource) => resource.locator.deploymentId)
123
+ .filter((deploymentId) => typeof deploymentId === 'string'));
124
+ const allDeployments = storedDeployments.map((deployment) => input.quarantine !== undefined &&
125
+ operationArchivedDeployments.has(deployment.deployment_id) &&
126
+ deployment.operation_archived
127
+ ? { ...deployment, archived_at: null }
128
+ : deployment);
129
+ const activeByApp = groupBy(allDeployments.filter((row) => row.active && row.archived_at === null), appKey);
130
+ const eligibleApps = new Set();
131
+ let targetOwnerOnlyApps = 0;
132
+ for (const app of apps) {
133
+ const key = appKey(app);
134
+ const ownedDisposition = ownedOrgs.get(app.org_slug);
135
+ if (ownedDisposition !== undefined) {
136
+ eligibleApps.add(key);
137
+ relationships.push({
138
+ disposition: ownedDisposition,
139
+ kind: 'app',
140
+ org: app.org_slug,
141
+ app: app.slug,
142
+ });
143
+ continue;
144
+ }
145
+ if (!preservedOrgs.has(app.org_slug))
146
+ continue;
147
+ const active = activeByApp.get(key) ?? [];
148
+ const targetOwnerOnly = active.filter((deployment) => deployment.access_mode === 'owner-only' &&
149
+ deployment.created_by_subject !== null &&
150
+ targetSet.has(deployment.created_by_subject));
151
+ const conflicting = active.some((deployment) => deployment.access_mode !== 'owner-only' ||
152
+ deployment.created_by_subject === null ||
153
+ !targetSet.has(deployment.created_by_subject));
154
+ if (targetOwnerOnly.length !== 0 && conflicting) {
155
+ increment(blockers, 'ownership_ambiguous');
156
+ relationships.push({
157
+ disposition: 'blocker',
158
+ kind: 'mixed_app_ownership',
159
+ org: app.org_slug,
160
+ app: app.slug,
161
+ });
162
+ }
163
+ else if (targetOwnerOnly.length !== 0) {
164
+ eligibleApps.add(key);
165
+ targetOwnerOnlyApps += 1;
166
+ relationships.push({
167
+ disposition: 'target_owner_only_app',
168
+ org: app.org_slug,
169
+ app: app.slug,
170
+ });
171
+ }
172
+ else if (active.some((deployment) => deployment.access_mode === 'org-members')) {
173
+ relationships.push({
174
+ disposition: 'preserved_org_members_app',
175
+ org: app.org_slug,
176
+ app: app.slug,
177
+ });
178
+ }
179
+ }
180
+ for (const [org, disposition] of ownedOrgs) {
181
+ addPlatformAccountResetCleanupResource(resources, 'postgres', 'organization', {
182
+ org,
183
+ disposition,
184
+ targetPrincipals: (membershipsByOrg.get(org) ?? []).map((row) => row.subject),
185
+ });
186
+ }
187
+ for (const org of preservedOrgs) {
188
+ for (const member of membershipsByOrg.get(org) ?? []) {
189
+ addPlatformAccountResetCleanupResource(resources, 'postgres', 'preserved_membership', {
190
+ org,
191
+ principalId: member.subject,
192
+ role: member.role,
193
+ });
194
+ }
195
+ }
196
+ for (const app of apps) {
197
+ if (!eligibleApps.has(appKey(app)))
198
+ continue;
199
+ addPlatformAccountResetCleanupResource(resources, 'postgres', 'application', {
200
+ org: app.org_slug,
201
+ app: app.slug,
202
+ });
203
+ }
204
+ const eligibleDeployments = allDeployments.filter((row) => eligibleApps.has(appKey(row)));
205
+ const eligibleDeploymentIds = new Set(eligibleDeployments.map((row) => row.deployment_id));
206
+ for (const deployment of eligibleDeployments) {
207
+ addPlatformAccountResetCleanupResource(resources, 'postgres', 'deployment', {
208
+ deploymentId: deployment.deployment_id,
209
+ org: deployment.org_slug,
210
+ app: deployment.app_slug,
211
+ environment: deployment.environment,
212
+ active: deployment.active,
213
+ archived: deployment.archived_at !== null,
214
+ });
215
+ }
216
+ await addPlatformAccountResetHostedAssets(pool, resources, () => increment(blockers, 'ownership_ambiguous'), eligibleDeployments, eligibleDeploymentIds);
217
+ await addPlatformAccountResetRepositories(pool, resources, eligibleApps);
218
+ await addPlatformAccountResetStateScopes(pool, resources, eligibleDeploymentIds);
219
+ const selectedBillingAccounts = [...new Set(personal.map((row) => row.billing_account_id))].sort(compareText);
220
+ if (selectedBillingAccounts.length !== 0) {
221
+ const billingHomes = await rows(pool, `SELECT org_slug, billing_account_id,
222
+ home_owner_identity_issuer, home_owner_subject
223
+ FROM org_billing_home_accounts
224
+ WHERE billing_account_id = ANY($1::text[])`, [selectedBillingAccounts]);
225
+ for (const home of billingHomes) {
226
+ if (!ownedOrgs.has(home.org_slug))
227
+ increment(blockers, 'ownership_ambiguous');
228
+ else
229
+ addPlatformAccountResetCleanupResource(resources, 'postgres', 'billing_home_account', {
230
+ org: home.org_slug,
231
+ billingAccountId: home.billing_account_id,
232
+ homeOwnerIdentityIssuer: home.home_owner_identity_issuer,
233
+ homeOwnerSubject: home.home_owner_subject,
234
+ });
235
+ }
236
+ const billingLinks = await rows(pool, `SELECT org_slug, billing_account_id, home_free_billing_account_id,
237
+ fallback_billing_account_id, version,
238
+ linked_by_identity_issuer, linked_by_subject
239
+ FROM org_billing_links
240
+ WHERE active
241
+ AND (
242
+ billing_account_id = ANY($1::text[])
243
+ OR home_free_billing_account_id = ANY($1::text[])
244
+ OR fallback_billing_account_id = ANY($1::text[])
245
+ )`, [selectedBillingAccounts]);
246
+ for (const link of billingLinks) {
247
+ if (!ownedOrgs.has(link.org_slug)) {
248
+ increment(blockers, 'ownership_ambiguous');
249
+ continue;
250
+ }
251
+ addPlatformAccountResetCleanupResource(resources, 'postgres', 'org_billing_link', {
252
+ org: link.org_slug,
253
+ billingAccountId: link.billing_account_id,
254
+ homeFreeBillingAccountId: link.home_free_billing_account_id,
255
+ fallbackBillingAccountId: link.fallback_billing_account_id,
256
+ version: link.version,
257
+ linkedByIdentityIssuer: link.linked_by_identity_issuer,
258
+ linkedBySubject: link.linked_by_subject,
259
+ });
260
+ }
261
+ }
262
+ for (const account of selectedBillingAccounts)
263
+ addPlatformAccountResetCleanupResource(resources, 'postgres', 'billing_account', {
264
+ billingAccountId: account,
265
+ });
266
+ await addPlatformAccountResetBillingProviders(pool, resources, selectedBillingAccounts);
267
+ await addPlatformAccountResetCredentialScopes(pool, resources, targets, input.quarantine?.cleanupResources);
268
+ const normalizedResources = resources.sort((left, right) => canonicalJson(left).localeCompare(canonicalJson(right)));
269
+ const cleanupSetFingerprint = sha256Canonical({
270
+ schemaVersion: 1,
271
+ label: 'platform_account_reset_cleanup_set',
272
+ resources: normalizedResources,
273
+ });
274
+ const ownershipFingerprint = sha256Canonical({
275
+ schemaVersion: 1,
276
+ label: 'platform_account_reset_ownership',
277
+ relationships,
278
+ });
279
+ const counts = {
280
+ personalOrganizationCount: validPersonalOrganizations,
281
+ soleOwnedOrganizationCount: [...ownedOrgs.values()].filter((disposition) => disposition === 'sole_owned_org').length,
282
+ ownerOnlyAppCount: targetOwnerOnlyApps,
283
+ preservedSharedOrganizationCount: preservedOrgs.size,
284
+ membershipCount: membershipRows.length,
285
+ billingAccountCount: selectedBillingAccounts.length,
286
+ credentialCount: normalizedResources.filter((resource) => [
287
+ 'developer_grant',
288
+ 'oauth_consent',
289
+ 'device_authorization',
290
+ 'refresh_subject',
291
+ 'authorization_code',
292
+ ].includes(resource.resourceKind)).length,
293
+ providerObjectCount: normalizedResources.filter((resource) => resource.provider !== 'postgres' || resource.resourceKind === 'state_scope').length,
294
+ };
295
+ const blockerList = [...blockers]
296
+ .map(([code, count]) => ({ code, count }))
297
+ .sort((left, right) => left.code.localeCompare(right.code));
298
+ return {
299
+ counts,
300
+ blockers: blockerList,
301
+ cleanupResources: normalizedResources,
302
+ ownershipFingerprint,
303
+ cleanupSetFingerprint,
304
+ fingerprint: sha256Canonical({
305
+ schemaVersion: 1,
306
+ label: 'platform_account_reset_ownership_snapshot',
307
+ counts,
308
+ blockers: blockerList,
309
+ ownershipFingerprint,
310
+ cleanupSetFingerprint,
311
+ }),
312
+ };
313
+ }
314
+ //# sourceMappingURL=platform-account-reset-ownership-postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-account-reset-ownership-postgres.js","sourceRoot":"","sources":["../src/platform-account-reset-ownership-postgres.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { PlatformAccountResetCleanupResource } from './platform-account-reset-ownership-postgres.js';
2
+ import type { PlatformIdentityQueryable } from './platform-identity-postgres.js';
3
+ interface DeploymentResourceRow {
4
+ readonly deployment_id: string;
5
+ readonly hosted_assets: unknown;
6
+ }
7
+ export declare function addPlatformAccountResetHostedAssets(pool: PlatformIdentityQueryable, resources: PlatformAccountResetCleanupResource[], onAmbiguous: () => void, eligibleDeployments: readonly DeploymentResourceRow[], eligibleDeploymentIds: ReadonlySet<string>): Promise<void>;
8
+ export declare function addPlatformAccountResetRepositories(pool: PlatformIdentityQueryable, resources: PlatformAccountResetCleanupResource[], eligibleApps: ReadonlySet<string>): Promise<void>;
9
+ export declare function addPlatformAccountResetStateScopes(pool: PlatformIdentityQueryable, resources: PlatformAccountResetCleanupResource[], deploymentIds: ReadonlySet<string>): Promise<void>;
10
+ export declare function addPlatformAccountResetBillingProviders(pool: PlatformIdentityQueryable, resources: PlatformAccountResetCleanupResource[], billingAccountIds: readonly string[]): Promise<void>;
11
+ export declare function addPlatformAccountResetCredentialScopes(pool: PlatformIdentityQueryable, resources: PlatformAccountResetCleanupResource[], targets: readonly string[], frozenResources?: readonly PlatformAccountResetCleanupResource[]): Promise<void>;
12
+ export declare function addPlatformAccountResetCleanupResource(resources: PlatformAccountResetCleanupResource[], provider: PlatformAccountResetCleanupResource['provider'], resourceKind: string, locator: Readonly<Record<string, unknown>>): void;
13
+ export {};
14
+ //# sourceMappingURL=platform-account-reset-ownership-resources-postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-account-reset-ownership-resources-postgres.d.ts","sourceRoot":"","sources":["../src/platform-account-reset-ownership-resources-postgres.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,gDAAgD,CAAC;AAC1G,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAuBD,wBAAsB,mCAAmC,CACvD,IAAI,EAAE,yBAAyB,EAC/B,SAAS,EAAE,mCAAmC,EAAE,EAChD,WAAW,EAAE,MAAM,IAAI,EACvB,mBAAmB,EAAE,SAAS,qBAAqB,EAAE,EACrD,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED,wBAAsB,mCAAmC,CACvD,IAAI,EAAE,yBAAyB,EAC/B,SAAS,EAAE,mCAAmC,EAAE,EAChD,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED,wBAAsB,kCAAkC,CACtD,IAAI,EAAE,yBAAyB,EAC/B,SAAS,EAAE,mCAAmC,EAAE,EAChD,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,uCAAuC,CAC3D,IAAI,EAAE,yBAAyB,EAC/B,SAAS,EAAE,mCAAmC,EAAE,EAChD,iBAAiB,EAAE,SAAS,MAAM,EAAE,GACnC,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED,wBAAsB,uCAAuC,CAC3D,IAAI,EAAE,yBAAyB,EAC/B,SAAS,EAAE,mCAAmC,EAAE,EAChD,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,eAAe,CAAC,EAAE,SAAS,mCAAmC,EAAE,GAC/D,OAAO,CAAC,IAAI,CAAC,CAoGf;AAUD,wBAAgB,sCAAsC,CACpD,SAAS,EAAE,mCAAmC,EAAE,EAChD,QAAQ,EAAE,mCAAmC,CAAC,UAAU,CAAC,EACzD,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACzC,IAAI,CAgBN"}
@@ -0,0 +1,210 @@
1
+ import { sha256Canonical } from './platform-account-reset-fingerprint.js';
2
+ import { platformAccountResetAppKey as appKey, comparePlatformAccountResetText as compareText, queryPlatformAccountResetRows as rows, } from './platform-account-reset-ownership-helpers.js';
3
+ export async function addPlatformAccountResetHostedAssets(pool, resources, onAmbiguous, eligibleDeployments, eligibleDeploymentIds) {
4
+ const allDeployments = await rows(pool, 'SELECT deployment_id, hosted_assets FROM deploy_records');
5
+ const references = new Map();
6
+ for (const deployment of allDeployments) {
7
+ for (const objectKey of parseAssetKeys(deployment.hosted_assets).keys) {
8
+ const deploymentIds = references.get(objectKey) ?? new Set();
9
+ deploymentIds.add(deployment.deployment_id);
10
+ references.set(objectKey, deploymentIds);
11
+ }
12
+ }
13
+ for (const deployment of eligibleDeployments) {
14
+ const parsed = parseAssetKeys(deployment.hosted_assets);
15
+ if (!parsed.valid) {
16
+ onAmbiguous();
17
+ continue;
18
+ }
19
+ for (const objectKey of parsed.keys) {
20
+ const deploymentIds = [...(references.get(objectKey) ?? [])].sort(compareText);
21
+ if (deploymentIds.some((id) => !eligibleDeploymentIds.has(id))) {
22
+ onAmbiguous();
23
+ continue;
24
+ }
25
+ addPlatformAccountResetCleanupResource(resources, 'object_storage', 'hosted_asset', {
26
+ objectKey,
27
+ deploymentIds,
28
+ });
29
+ }
30
+ }
31
+ }
32
+ export async function addPlatformAccountResetRepositories(pool, resources, eligibleApps) {
33
+ const all = await rows(pool, `SELECT github_repository_id, installation_id, org_slug, app_slug, enabled
34
+ FROM repo_connections`);
35
+ const normalized = all.map((row) => ({
36
+ ...row,
37
+ github_repository_id: canonicalGitHubId(row.github_repository_id),
38
+ installation_id: canonicalGitHubId(row.installation_id),
39
+ }));
40
+ const selected = normalized.filter((row) => eligibleApps.has(appKey(row)));
41
+ for (const repository of selected) {
42
+ addPlatformAccountResetCleanupResource(resources, 'github', 'repository_connection', {
43
+ githubRepositoryId: repository.github_repository_id,
44
+ installationId: repository.installation_id,
45
+ enabled: repository.enabled,
46
+ org: repository.org_slug,
47
+ app: repository.app_slug,
48
+ });
49
+ }
50
+ for (const installationId of [...new Set(selected.map((row) => row.installation_id))].sort(compareCanonicalDecimal)) {
51
+ addPlatformAccountResetCleanupResource(resources, 'github', 'installation_reachability', {
52
+ installationId,
53
+ selectedRepositoryIds: selected
54
+ .filter((row) => row.installation_id === installationId)
55
+ .map((row) => row.github_repository_id)
56
+ .sort(compareCanonicalDecimal),
57
+ survivingRepositoryIds: normalized
58
+ .filter((row) => row.installation_id === installationId && !eligibleApps.has(appKey(row)) && row.enabled)
59
+ .map((row) => row.github_repository_id)
60
+ .sort(compareCanonicalDecimal),
61
+ });
62
+ }
63
+ }
64
+ export async function addPlatformAccountResetStateScopes(pool, resources, deploymentIds) {
65
+ if (deploymentIds.size === 0)
66
+ return;
67
+ const state = await rows(pool, `SELECT deployment_id, handle_name, owner_key, state_key
68
+ FROM state_handle_records
69
+ WHERE deployment_id = ANY($1::text[])`, [[...deploymentIds]]);
70
+ for (const row of state)
71
+ addPlatformAccountResetCleanupResource(resources, 'postgres', 'state_scope', {
72
+ deploymentId: row.deployment_id,
73
+ handleName: row.handle_name,
74
+ ownerKey: row.owner_key,
75
+ stateKey: row.state_key,
76
+ });
77
+ }
78
+ export async function addPlatformAccountResetBillingProviders(pool, resources, billingAccountIds) {
79
+ if (billingAccountIds.length === 0)
80
+ return;
81
+ const customers = await rows(pool, `SELECT billing_account_id, mode, customer_id AS provider_id
82
+ FROM billing_stripe_customers
83
+ WHERE billing_account_id = ANY($1::text[])`, [billingAccountIds]);
84
+ const subscriptions = await rows(pool, `SELECT billing_account_id, mode, provider_subscription_id AS provider_id
85
+ FROM billing_stripe_subscription_bindings
86
+ WHERE billing_account_id = ANY($1::text[])`, [billingAccountIds]);
87
+ for (const row of customers)
88
+ addPlatformAccountResetCleanupResource(resources, 'stripe', 'billing_customer', {
89
+ billingAccountId: row.billing_account_id,
90
+ mode: row.mode,
91
+ customerId: row.provider_id,
92
+ });
93
+ for (const row of subscriptions)
94
+ addPlatformAccountResetCleanupResource(resources, 'stripe', 'billing_subscription', {
95
+ billingAccountId: row.billing_account_id,
96
+ mode: row.mode,
97
+ subscriptionId: row.provider_id,
98
+ });
99
+ }
100
+ export async function addPlatformAccountResetCredentialScopes(pool, resources, targets, frozenResources) {
101
+ if (frozenResources !== undefined) {
102
+ for (const resource of frozenResources) {
103
+ if (resource.provider === 'postgres' && CREDENTIAL_RESOURCE_KINDS.has(resource.resourceKind))
104
+ addPlatformAccountResetCleanupResource(resources, resource.provider, resource.resourceKind, resource.locator);
105
+ }
106
+ return;
107
+ }
108
+ const grants = await rows(pool, `SELECT id, subject FROM developer_access_grants
109
+ WHERE subject = ANY($1::text[]) AND revoked_at IS NULL
110
+ AND (expires_at IS NULL OR expires_at > now())`, [targets]);
111
+ for (const row of grants)
112
+ addPlatformAccountResetCleanupResource(resources, 'postgres', 'developer_grant', {
113
+ grantId: row.id,
114
+ principalId: row.subject,
115
+ });
116
+ const consent = await rows(pool, `SELECT DISTINCT client_id, owner_subject, resource
117
+ FROM (
118
+ SELECT client_id, owner_subject, resource
119
+ FROM oauth_consent_grant_provenance
120
+ WHERE owner_subject = ANY($1::text[]) AND identity_kind = 'platform'
121
+ UNION ALL
122
+ SELECT client_id, owner_subject, resource
123
+ FROM oauth_consent_grants
124
+ WHERE owner_subject = ANY($1::text[]) AND identity_kind = 'platform'
125
+ ) consent`, [targets]);
126
+ for (const row of consent)
127
+ addPlatformAccountResetCleanupResource(resources, 'postgres', 'oauth_consent', {
128
+ clientId: row.client_id,
129
+ principalId: row.owner_subject,
130
+ resource: row.resource,
131
+ });
132
+ const devices = await rows(pool, `SELECT device_code, owner_subject FROM oauth_device_authorizations
133
+ WHERE owner_subject = ANY($1::text[])
134
+ AND identity_kind IS DISTINCT FROM 'customer'
135
+ AND status IN ('pending', 'approved') AND expires_at > now()`, [targets]);
136
+ for (const row of devices)
137
+ addPlatformAccountResetCleanupResource(resources, 'postgres', 'device_authorization', {
138
+ deviceCode: row.device_code,
139
+ principalId: row.owner_subject,
140
+ });
141
+ const refresh = await rows(pool, `SELECT owner_subject,
142
+ array_agg(DISTINCT family_id) FILTER (WHERE family_id IS NOT NULL) AS family_ids
143
+ FROM oauth_refresh_tokens
144
+ WHERE owner_subject = ANY($1::text[])
145
+ AND identity_kind IS DISTINCT FROM 'customer'
146
+ AND expires_at > now() AND rotated_at IS NULL AND superseded_by IS NULL
147
+ GROUP BY owner_subject`, [targets]);
148
+ for (const row of refresh)
149
+ addPlatformAccountResetCleanupResource(resources, 'postgres', 'refresh_subject', {
150
+ principalId: row.owner_subject,
151
+ familyIds: row.family_ids ?? [],
152
+ });
153
+ const codes = await rows(pool, `SELECT code, owner_subject FROM oauth_authorization_codes
154
+ WHERE owner_subject = ANY($1::text[])
155
+ AND identity_kind IS DISTINCT FROM 'customer' AND expires_at > now()`, [targets]);
156
+ for (const row of codes)
157
+ addPlatformAccountResetCleanupResource(resources, 'postgres', 'authorization_code', {
158
+ codeFingerprint: sha256Canonical({
159
+ schemaVersion: 1,
160
+ label: 'oauth_authorization_code',
161
+ code: row.code,
162
+ }),
163
+ principalId: row.owner_subject,
164
+ });
165
+ }
166
+ const CREDENTIAL_RESOURCE_KINDS = new Set([
167
+ 'developer_grant',
168
+ 'oauth_consent',
169
+ 'device_authorization',
170
+ 'refresh_subject',
171
+ 'authorization_code',
172
+ ]);
173
+ export function addPlatformAccountResetCleanupResource(resources, provider, resourceKind, locator) {
174
+ const locatorFingerprint = sha256Canonical({
175
+ schemaVersion: 1,
176
+ label: `platform_account_reset_locator:${provider}:${resourceKind}`,
177
+ locator,
178
+ });
179
+ if (resources.some((resource) => resource.provider === provider &&
180
+ resource.resourceKind === resourceKind &&
181
+ resource.locatorFingerprint === locatorFingerprint))
182
+ return;
183
+ resources.push({ provider, resourceKind, locator, locatorFingerprint });
184
+ }
185
+ function parseAssetKeys(value) {
186
+ if (value === null)
187
+ return { valid: true, keys: [] };
188
+ if (!Array.isArray(value))
189
+ return { valid: false, keys: [] };
190
+ const keys = [];
191
+ for (const entry of value) {
192
+ if (typeof entry !== 'object' ||
193
+ entry === null ||
194
+ !('objectKey' in entry) ||
195
+ typeof entry.objectKey !== 'string' ||
196
+ entry.objectKey.length === 0)
197
+ return { valid: false, keys: [] };
198
+ keys.push(entry.objectKey);
199
+ }
200
+ return { valid: true, keys: [...new Set(keys)].sort(compareText) };
201
+ }
202
+ function canonicalGitHubId(value) {
203
+ if (!/^[1-9][0-9]*$/.test(value))
204
+ throw new Error('GitHub identifier is not canonical');
205
+ return value;
206
+ }
207
+ function compareCanonicalDecimal(left, right) {
208
+ return left.length - right.length || compareText(left, right);
209
+ }
210
+ //# sourceMappingURL=platform-account-reset-ownership-resources-postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-account-reset-ownership-resources-postgres.js","sourceRoot":"","sources":["../src/platform-account-reset-ownership-resources-postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EACL,0BAA0B,IAAI,MAAM,EACpC,+BAA+B,IAAI,WAAW,EAC9C,6BAA6B,IAAI,IAAI,GACtC,MAAM,+CAA+C,CAAC;AA8BvD,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,IAA+B,EAC/B,SAAgD,EAChD,WAAuB,EACvB,mBAAqD,EACrD,qBAA0C;IAE1C,MAAM,cAAc,GAAG,MAAM,IAAI,CAC/B,IAAI,EACJ,yDAAyD,CAC1D,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;IAClD,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE,CAAC;QACxC,KAAK,MAAM,SAAS,IAAI,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;YACtE,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;YACrE,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC5C,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,WAAW,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QACD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/E,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC/D,WAAW,EAAE,CAAC;gBACd,SAAS;YACX,CAAC;YACD,sCAAsC,CAAC,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE;gBAClF,SAAS;gBACT,aAAa;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,IAA+B,EAC/B,SAAgD,EAChD,YAAiC;IAEjC,MAAM,GAAG,GAAG,MAAM,IAAI,CACpB,IAAI,EACJ;6BACyB,CAC1B,CAAC;IACF,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnC,GAAG,GAAG;QACN,oBAAoB,EAAE,iBAAiB,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACjE,eAAe,EAAE,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC;KACxD,CAAC,CAAC,CAAC;IACJ,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3E,KAAK,MAAM,UAAU,IAAI,QAAQ,EAAE,CAAC;QAClC,sCAAsC,CAAC,SAAS,EAAE,QAAQ,EAAE,uBAAuB,EAAE;YACnF,kBAAkB,EAAE,UAAU,CAAC,oBAAoB;YACnD,cAAc,EAAE,UAAU,CAAC,eAAe;YAC1C,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,GAAG,EAAE,UAAU,CAAC,QAAQ;YACxB,GAAG,EAAE,UAAU,CAAC,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,cAAc,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CACxF,uBAAuB,CACxB,EAAE,CAAC;QACF,sCAAsC,CAAC,SAAS,EAAE,QAAQ,EAAE,2BAA2B,EAAE;YACvF,cAAc;YACd,qBAAqB,EAAE,QAAQ;iBAC5B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,KAAK,cAAc,CAAC;iBACvD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC;iBACtC,IAAI,CAAC,uBAAuB,CAAC;YAChC,sBAAsB,EAAE,UAAU;iBAC/B,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,eAAe,KAAK,cAAc,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAC1F;iBACA,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC;iBACtC,IAAI,CAAC,uBAAuB,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,IAA+B,EAC/B,SAAgD,EAChD,aAAkC;IAElC,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CACtB,IAAI,EACJ;;4CAEwC,EACxC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CACrB,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,KAAK;QACrB,sCAAsC,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE;YAC3E,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,QAAQ,EAAE,GAAG,CAAC,SAAS;SACxB,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uCAAuC,CAC3D,IAA+B,EAC/B,SAAgD,EAChD,iBAAoC;IAEpC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC3C,MAAM,SAAS,GAAG,MAAM,IAAI,CAC1B,IAAI,EACJ;;iDAE6C,EAC7C,CAAC,iBAAiB,CAAC,CACpB,CAAC;IACF,MAAM,aAAa,GAAG,MAAM,IAAI,CAC9B,IAAI,EACJ;;iDAE6C,EAC7C,CAAC,iBAAiB,CAAC,CACpB,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,SAAS;QACzB,sCAAsC,CAAC,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAAE;YAC9E,gBAAgB,EAAE,GAAG,CAAC,kBAAkB;YACxC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,UAAU,EAAE,GAAG,CAAC,WAAW;SAC5B,CAAC,CAAC;IACL,KAAK,MAAM,GAAG,IAAI,aAAa;QAC7B,sCAAsC,CAAC,SAAS,EAAE,QAAQ,EAAE,sBAAsB,EAAE;YAClF,gBAAgB,EAAE,GAAG,CAAC,kBAAkB;YACxC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,cAAc,EAAE,GAAG,CAAC,WAAW;SAChC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uCAAuC,CAC3D,IAA+B,EAC/B,SAAgD,EAChD,OAA0B,EAC1B,eAAgE;IAEhE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;YACvC,IAAI,QAAQ,CAAC,QAAQ,KAAK,UAAU,IAAI,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAC1F,sCAAsC,CACpC,SAAS,EACT,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,OAAO,CACjB,CAAC;QACN,CAAC;QACD,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,IAAI,EACJ;;uDAEmD,EACnD,CAAC,OAAO,CAAC,CACV,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,MAAM;QACtB,sCAAsC,CAAC,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE;YAC/E,OAAO,EAAE,GAAG,CAAC,EAAE;YACf,WAAW,EAAE,GAAG,CAAC,OAAO;SACzB,CAAC,CAAC;IACL,MAAM,OAAO,GAAG,MAAM,IAAI,CAKxB,IAAI,EACJ;;;;;;;;;iBASa,EACb,CAAC,OAAO,CAAC,CACV,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,OAAO;QACvB,sCAAsC,CAAC,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE;YAC7E,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,WAAW,EAAE,GAAG,CAAC,aAAa;YAC9B,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB,CAAC,CAAC;IACL,MAAM,OAAO,GAAG,MAAM,IAAI,CAIxB,IAAI,EACJ;;;qEAGiE,EACjE,CAAC,OAAO,CAAC,CACV,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,OAAO;QACvB,sCAAsC,CAAC,SAAS,EAAE,UAAU,EAAE,sBAAsB,EAAE;YACpF,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,WAAW,EAAE,GAAG,CAAC,aAAa;SAC/B,CAAC,CAAC;IACL,MAAM,OAAO,GAAG,MAAM,IAAI,CAIxB,IAAI,EACJ;;;;;;6BAMyB,EACzB,CAAC,OAAO,CAAC,CACV,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,OAAO;QACvB,sCAAsC,CAAC,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE;YAC/E,WAAW,EAAE,GAAG,CAAC,aAAa;YAC9B,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;SAChC,CAAC,CAAC;IACL,MAAM,KAAK,GAAG,MAAM,IAAI,CACtB,IAAI,EACJ;;6EAEyE,EACzE,CAAC,OAAO,CAAC,CACV,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,KAAK;QACrB,sCAAsC,CAAC,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE;YAClF,eAAe,EAAE,eAAe,CAAC;gBAC/B,aAAa,EAAE,CAAC;gBAChB,KAAK,EAAE,0BAA0B;gBACjC,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC;YACF,WAAW,EAAE,GAAG,CAAC,aAAa;SAC/B,CAAC,CAAC;AACP,CAAC;AAED,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,iBAAiB;IACjB,eAAe;IACf,sBAAsB;IACtB,iBAAiB;IACjB,oBAAoB;CACrB,CAAC,CAAC;AAEH,MAAM,UAAU,sCAAsC,CACpD,SAAgD,EAChD,QAAyD,EACzD,YAAoB,EACpB,OAA0C;IAE1C,MAAM,kBAAkB,GAAG,eAAe,CAAC;QACzC,aAAa,EAAE,CAAC;QAChB,KAAK,EAAE,kCAAkC,QAAQ,IAAI,YAAY,EAAE;QACnE,OAAO;KACR,CAAC,CAAC;IACH,IACE,SAAS,CAAC,IAAI,CACZ,CAAC,QAAQ,EAAE,EAAE,CACX,QAAQ,CAAC,QAAQ,KAAK,QAAQ;QAC9B,QAAQ,CAAC,YAAY,KAAK,YAAY;QACtC,QAAQ,CAAC,kBAAkB,KAAK,kBAAkB,CACrD;QAED,OAAO;IACT,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IAIpC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC7D,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC;YACvB,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;YACnC,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAE5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY,EAAE,KAAa;IAC1D,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC"}