@stigmer/server 3.15.2 → 3.15.3-dev.20260914100347

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 (201) hide show
  1. package/dist/boot/compose.d.ts.map +1 -1
  2. package/dist/boot/compose.js +103 -9
  3. package/dist/boot/compose.js.map +1 -1
  4. package/dist/domain/iampolicy/access-lists.d.ts +27 -0
  5. package/dist/domain/iampolicy/access-lists.d.ts.map +1 -0
  6. package/dist/domain/iampolicy/access-lists.js +124 -0
  7. package/dist/domain/iampolicy/access-lists.js.map +1 -0
  8. package/dist/domain/iampolicy/constants.d.ts +135 -0
  9. package/dist/domain/iampolicy/constants.d.ts.map +1 -0
  10. package/dist/domain/iampolicy/constants.js +203 -0
  11. package/dist/domain/iampolicy/constants.js.map +1 -0
  12. package/dist/domain/iampolicy/controller.d.ts +29 -0
  13. package/dist/domain/iampolicy/controller.d.ts.map +1 -0
  14. package/dist/domain/iampolicy/controller.js +451 -0
  15. package/dist/domain/iampolicy/controller.js.map +1 -0
  16. package/dist/domain/iampolicy/display-resolver.d.ts +6 -0
  17. package/dist/domain/iampolicy/display-resolver.d.ts.map +1 -0
  18. package/dist/domain/iampolicy/display-resolver.js +90 -0
  19. package/dist/domain/iampolicy/display-resolver.js.map +1 -0
  20. package/dist/domain/iampolicy/grant-path.d.ts +42 -0
  21. package/dist/domain/iampolicy/grant-path.d.ts.map +1 -0
  22. package/dist/domain/iampolicy/grant-path.js +183 -0
  23. package/dist/domain/iampolicy/grant-path.js.map +1 -0
  24. package/dist/domain/iampolicy/grant-scope.d.ts +4 -0
  25. package/dist/domain/iampolicy/grant-scope.d.ts.map +1 -0
  26. package/dist/domain/iampolicy/grant-scope.js +34 -0
  27. package/dist/domain/iampolicy/grant-scope.js.map +1 -0
  28. package/dist/domain/iampolicy/membership.d.ts +111 -0
  29. package/dist/domain/iampolicy/membership.d.ts.map +1 -0
  30. package/dist/domain/iampolicy/membership.js +152 -0
  31. package/dist/domain/iampolicy/membership.js.map +1 -0
  32. package/dist/domain/iampolicy/permissions.d.ts +19 -0
  33. package/dist/domain/iampolicy/permissions.d.ts.map +1 -0
  34. package/dist/domain/iampolicy/permissions.js +27 -0
  35. package/dist/domain/iampolicy/permissions.js.map +1 -0
  36. package/dist/domain/iampolicy/resource-store.d.ts +4 -0
  37. package/dist/domain/iampolicy/resource-store.d.ts.map +1 -0
  38. package/dist/domain/iampolicy/resource-store.js +135 -0
  39. package/dist/domain/iampolicy/resource-store.js.map +1 -0
  40. package/dist/domain/iampolicy/role-lifecycle.d.ts +9 -0
  41. package/dist/domain/iampolicy/role-lifecycle.d.ts.map +1 -0
  42. package/dist/domain/iampolicy/role-lifecycle.js +106 -0
  43. package/dist/domain/iampolicy/role-lifecycle.js.map +1 -0
  44. package/dist/domain/iampolicy/roles.d.ts +11 -0
  45. package/dist/domain/iampolicy/roles.d.ts.map +1 -0
  46. package/dist/domain/iampolicy/roles.js +78 -0
  47. package/dist/domain/iampolicy/roles.js.map +1 -0
  48. package/dist/domain/iampolicy/specs.d.ts +7 -0
  49. package/dist/domain/iampolicy/specs.d.ts.map +1 -0
  50. package/dist/domain/iampolicy/specs.js +45 -0
  51. package/dist/domain/iampolicy/specs.js.map +1 -0
  52. package/dist/domain/iampolicy/steps.d.ts +18 -0
  53. package/dist/domain/iampolicy/steps.d.ts.map +1 -0
  54. package/dist/domain/iampolicy/steps.js +117 -0
  55. package/dist/domain/iampolicy/steps.js.map +1 -0
  56. package/dist/domain/iampolicy/store-contract.d.ts +8 -0
  57. package/dist/domain/iampolicy/store-contract.d.ts.map +1 -0
  58. package/dist/domain/iampolicy/store-contract.js +258 -0
  59. package/dist/domain/iampolicy/store-contract.js.map +1 -0
  60. package/dist/domain/iampolicy/store.d.ts +78 -0
  61. package/dist/domain/iampolicy/store.d.ts.map +1 -0
  62. package/dist/domain/iampolicy/store.js +13 -0
  63. package/dist/domain/iampolicy/store.js.map +1 -0
  64. package/dist/domain/iampolicy/wire-refusals.d.ts +25 -0
  65. package/dist/domain/iampolicy/wire-refusals.d.ts.map +1 -0
  66. package/dist/domain/iampolicy/wire-refusals.js +76 -0
  67. package/dist/domain/iampolicy/wire-refusals.js.map +1 -0
  68. package/dist/domain/identityaccount/constants.d.ts +33 -0
  69. package/dist/domain/identityaccount/constants.d.ts.map +1 -1
  70. package/dist/domain/identityaccount/constants.js +2 -48
  71. package/dist/domain/identityaccount/constants.js.map +1 -1
  72. package/dist/domain/identityaccount/controller.d.ts +8 -1
  73. package/dist/domain/identityaccount/controller.d.ts.map +1 -1
  74. package/dist/domain/identityaccount/controller.js +54 -29
  75. package/dist/domain/identityaccount/controller.js.map +1 -1
  76. package/dist/domain/identityaccount/operator.d.ts.map +1 -1
  77. package/dist/domain/identityaccount/operator.js +2 -4
  78. package/dist/domain/identityaccount/operator.js.map +1 -1
  79. package/dist/domain/identityaccount/provisioning.d.ts +20 -1
  80. package/dist/domain/identityaccount/provisioning.d.ts.map +1 -1
  81. package/dist/domain/identityaccount/provisioning.js +17 -3
  82. package/dist/domain/identityaccount/provisioning.js.map +1 -1
  83. package/dist/domain/identityaccount/resolve.d.ts +23 -0
  84. package/dist/domain/identityaccount/resolve.d.ts.map +1 -1
  85. package/dist/domain/identityaccount/resolve.js +17 -0
  86. package/dist/domain/identityaccount/resolve.js.map +1 -1
  87. package/dist/domain/identityaccount/store-contract.d.ts +4 -18
  88. package/dist/domain/identityaccount/store-contract.d.ts.map +1 -1
  89. package/dist/domain/identityaccount/store-contract.js +12 -47
  90. package/dist/domain/identityaccount/store-contract.js.map +1 -1
  91. package/dist/extensions/authorization-queries.d.ts +81 -0
  92. package/dist/extensions/authorization-queries.d.ts.map +1 -0
  93. package/dist/extensions/authorization-queries.js +2 -0
  94. package/dist/extensions/authorization-queries.js.map +1 -0
  95. package/dist/extensions/drivers.d.ts +49 -2
  96. package/dist/extensions/drivers.d.ts.map +1 -1
  97. package/dist/extensions/identity.d.ts +14 -0
  98. package/dist/extensions/identity.d.ts.map +1 -1
  99. package/dist/extensions/identity.js +18 -1
  100. package/dist/extensions/identity.js.map +1 -1
  101. package/dist/extensions/policy-grant-scope.d.ts +50 -0
  102. package/dist/extensions/policy-grant-scope.d.ts.map +1 -0
  103. package/dist/extensions/policy-grant-scope.js +2 -0
  104. package/dist/extensions/policy-grant-scope.js.map +1 -0
  105. package/dist/extensions/registry.d.ts +23 -1
  106. package/dist/extensions/registry.d.ts.map +1 -1
  107. package/dist/extensions/registry.js +30 -0
  108. package/dist/extensions/registry.js.map +1 -1
  109. package/dist/extensions/resource-authorization.d.ts +63 -0
  110. package/dist/extensions/resource-authorization.d.ts.map +1 -1
  111. package/dist/index.d.ts +7 -1
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +2 -0
  114. package/dist/index.js.map +1 -1
  115. package/dist/pipeline/apiresource-meta.d.ts +56 -1
  116. package/dist/pipeline/apiresource-meta.d.ts.map +1 -1
  117. package/dist/pipeline/apiresource-meta.js +155 -1
  118. package/dist/pipeline/apiresource-meta.js.map +1 -1
  119. package/dist/pipeline/interceptors/auth.d.ts +12 -0
  120. package/dist/pipeline/interceptors/auth.d.ts.map +1 -1
  121. package/dist/pipeline/interceptors/auth.js +13 -1
  122. package/dist/pipeline/interceptors/auth.js.map +1 -1
  123. package/dist/pipeline/steps/authorize.d.ts +20 -5
  124. package/dist/pipeline/steps/authorize.d.ts.map +1 -1
  125. package/dist/pipeline/steps/authorize.js +37 -17
  126. package/dist/pipeline/steps/authorize.js.map +1 -1
  127. package/dist/pipeline/steps/defaults.d.ts +10 -0
  128. package/dist/pipeline/steps/defaults.d.ts.map +1 -1
  129. package/dist/pipeline/steps/defaults.js +39 -0
  130. package/dist/pipeline/steps/defaults.js.map +1 -1
  131. package/dist/store/port-contract.d.ts +61 -0
  132. package/dist/store/port-contract.d.ts.map +1 -0
  133. package/dist/store/port-contract.js +67 -0
  134. package/dist/store/port-contract.js.map +1 -0
  135. package/package.json +4 -4
  136. package/src/boot/compose.ts +107 -10
  137. package/src/domain/iampolicy/__tests__/access-lists.test.ts +238 -0
  138. package/src/domain/iampolicy/__tests__/constants.test.ts +388 -0
  139. package/src/domain/iampolicy/__tests__/controller.test.ts +960 -0
  140. package/src/domain/iampolicy/__tests__/display-resolver.test.ts +138 -0
  141. package/src/domain/iampolicy/__tests__/grant-path.test.ts +474 -0
  142. package/src/domain/iampolicy/__tests__/grant-scope.test.ts +61 -0
  143. package/src/domain/iampolicy/__tests__/iampolicy.test.ts +532 -0
  144. package/src/domain/iampolicy/__tests__/membership.test.ts +447 -0
  145. package/src/domain/iampolicy/__tests__/permissions.test.ts +41 -0
  146. package/src/domain/iampolicy/__tests__/resource-store.test.ts +165 -0
  147. package/src/domain/iampolicy/__tests__/role-lifecycle.test.ts +361 -0
  148. package/src/domain/iampolicy/__tests__/roles.test.ts +53 -0
  149. package/src/domain/iampolicy/__tests__/specs.test.ts +41 -0
  150. package/src/domain/iampolicy/__tests__/steps.test.ts +278 -0
  151. package/src/domain/iampolicy/__tests__/support.ts +195 -0
  152. package/src/domain/iampolicy/__tests__/wire-refusals.test.ts +117 -0
  153. package/src/domain/iampolicy/access-lists.ts +191 -0
  154. package/src/domain/iampolicy/constants.ts +243 -0
  155. package/src/domain/iampolicy/controller.ts +798 -0
  156. package/src/domain/iampolicy/display-resolver.ts +123 -0
  157. package/src/domain/iampolicy/grant-path.ts +270 -0
  158. package/src/domain/iampolicy/grant-scope.ts +36 -0
  159. package/src/domain/iampolicy/membership.ts +298 -0
  160. package/src/domain/iampolicy/permissions.ts +35 -0
  161. package/src/domain/iampolicy/resource-store.ts +186 -0
  162. package/src/domain/iampolicy/role-lifecycle.ts +132 -0
  163. package/src/domain/iampolicy/roles.ts +95 -0
  164. package/src/domain/iampolicy/specs.ts +53 -0
  165. package/src/domain/iampolicy/steps.ts +178 -0
  166. package/src/domain/iampolicy/store-contract.ts +450 -0
  167. package/src/domain/iampolicy/store.ts +103 -0
  168. package/src/domain/iampolicy/wire-refusals.ts +110 -0
  169. package/src/domain/identityaccount/__tests__/provisioning.test.ts +19 -7
  170. package/src/domain/identityaccount/__tests__/resolve.test.ts +113 -2
  171. package/src/domain/identityaccount/constants.ts +16 -31
  172. package/src/domain/identityaccount/controller.ts +65 -35
  173. package/src/domain/identityaccount/operator.ts +5 -5
  174. package/src/domain/identityaccount/provisioning.ts +43 -5
  175. package/src/domain/identityaccount/resolve.ts +43 -0
  176. package/src/domain/identityaccount/store-contract.ts +22 -70
  177. package/src/extensions/__tests__/composed-support.ts +87 -0
  178. package/src/extensions/__tests__/iam-policy-composed.test.ts +373 -0
  179. package/src/extensions/__tests__/iam-policy-points.test.ts +169 -0
  180. package/src/extensions/__tests__/identity-account-composed.test.ts +12 -78
  181. package/src/extensions/__tests__/identity.test.ts +62 -0
  182. package/src/extensions/__tests__/tier-truthfulness.test.ts +8 -0
  183. package/src/extensions/authorization-queries.ts +97 -0
  184. package/src/extensions/drivers.ts +49 -2
  185. package/src/extensions/identity.ts +21 -0
  186. package/src/extensions/policy-grant-scope.ts +50 -0
  187. package/src/extensions/registry.ts +62 -1
  188. package/src/extensions/resource-authorization.ts +65 -0
  189. package/src/index.ts +20 -0
  190. package/src/pipeline/__tests__/grantable-roles-for.test.ts +87 -0
  191. package/src/pipeline/__tests__/kind-by-enum-name.test.ts +107 -0
  192. package/src/pipeline/__tests__/kind-served-by-edition.test.ts +107 -0
  193. package/src/pipeline/apiresource-meta.ts +181 -1
  194. package/src/pipeline/interceptors/auth.ts +14 -1
  195. package/src/pipeline/steps/__tests__/authorize-annotation-completeness.test.ts +73 -3
  196. package/src/pipeline/steps/__tests__/authorize.test.ts +134 -9
  197. package/src/pipeline/steps/__tests__/derived-id.test.ts +49 -0
  198. package/src/pipeline/steps/authorize.ts +46 -21
  199. package/src/pipeline/steps/defaults.ts +42 -0
  200. package/src/store/__tests__/port-contract.test.ts +123 -0
  201. package/src/store/port-contract.ts +102 -0
@@ -5,7 +5,7 @@ import type { Authorizer } from "../../extensions/authorizer.js";
5
5
  import type { ResolvedGateSteps } from "../../extensions/gate-slots.js";
6
6
  import type { IdentityFederation } from "../../extensions/identity-federation.js";
7
7
  import type { ResourceAuthorizationLifecycle } from "../../extensions/resource-authorization.js";
8
- import type { CreateAccount, DirectAccountProvisioner } from "./provisioning.js";
8
+ import type { AccountCreatedHook, CreateAccount, DirectAccountProvisioner } from "./provisioning.js";
9
9
  import type { IdentityAccountStore } from "./store.js";
10
10
  /** What the create path needs — the subset every caller of it composes. */
11
11
  export interface CreateAccountPathDeps {
@@ -22,6 +22,13 @@ export interface IdentityAccountControllerDeps extends CreateAccountPathDeps {
22
22
  readonly federation: IdentityFederation | undefined;
23
23
  /** The composed slot registrations — this domain's provision slot (Q-IA-9, A10). */
24
24
  readonly gateSteps: ResolvedGateSteps;
25
+ /**
26
+ * The core first-provisioning rule — open source's membership rules
27
+ * under the built-in authorization posture; undefined when a
28
+ * composition brings its own Authorizer and so its own onboarding
29
+ * (20260913.01, Q-OR-6).
30
+ */
31
+ readonly membership: AccountCreatedHook | undefined;
25
32
  }
26
33
  /** Registers both identityaccount services on the router (routes stage). */
27
34
  export declare function registerIdentityAccountServices(router: ConnectRouter, deps: IdentityAccountControllerDeps): void;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/domain/identityaccount/controller.ts"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AAKzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AAc3H,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AA8BjG,OAAO,KAAK,EACV,aAAa,EAEb,wBAAwB,EACzB,MAAM,mBAAmB,CAAC;AAiB3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8GAA8G;IAC9G,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,gFAAgF;IAChF,QAAQ,CAAC,sBAAsB,EAAE,8BAA8B,GAAG,SAAS,CAAC;CAC7E;AAED,MAAM,WAAW,6BAA8B,SAAQ,qBAAqB;IAC1E,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,2FAA2F;IAC3F,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACpD,oFAAoF;IACpF,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;CACvC;AAED,4EAA4E;AAC5E,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,6BAA6B,GAClC,IAAI,CAkDN;AA0DD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,qBAAqB,EAC3B,IAAI,EAAE,eAAe,GACpB,aAAa,CAaf"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/domain/identityaccount/controller.ts"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AAKzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AAc3H,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AA8BjG,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EAEb,wBAAwB,EACzB,MAAM,mBAAmB,CAAC;AAkB3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8GAA8G;IAC9G,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,gFAAgF;IAChF,QAAQ,CAAC,sBAAsB,EAAE,8BAA8B,GAAG,SAAS,CAAC;CAC7E;AAED,MAAM,WAAW,6BAA8B,SAAQ,qBAAqB;IAC1E,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,2FAA2F;IAC3F,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACpD,oFAAoF;IACpF,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,CAAC;CACrD;AAED,4EAA4E;AAC5E,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,6BAA6B,GAClC,IAAI,CAkDN;AA0DD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,qBAAqB,EAC3B,IAAI,EAAE,eAAe,GACpB,aAAa,CAaf"}
@@ -27,13 +27,16 @@
27
27
  * ensure runs it as the trusted-local user.
28
28
  *
29
29
  * Direct handlers (no pipeline): whoAmI (the cloud's two primary-key
30
- * reads through idpIdOf; NOT_FOUND for the unprovisioned), getByEmail and
31
- * getByIdpId (lookup FIRST, then authorizeDirect on the FOUND id — the
32
- * cloud's order; the annotation's `field_path = "value"` would otherwise
33
- * hand the Authorizer an email as a resource id), getActorInfo, and
34
- * provisionMyAccount (the provisioner, then the composed post-persist
35
- * gates; UNAUTHENTICATED with the cloud's copy for a credential naming no
36
- * subject; UNAVAILABLE with the cloud's copy when userinfo fails).
30
+ * reads, stated once as resolve.ts accountForCaller; NOT_FOUND for the
31
+ * unprovisioned), getByEmail and getByIdpId (lookup FIRST, then
32
+ * authorizeDirect on the FOUND id — the cloud's order; the annotation's
33
+ * `field_path = "value"` would otherwise hand the Authorizer an email as a
34
+ * resource id), getActorInfo, and provisionMyAccount (the provisioner,
35
+ * then — on the call that CREATED the row — the core AccountCreatedHook
36
+ * (open source's membership rules, 20260913.01 slice 4), then the composed
37
+ * post-persist gates; UNAUTHENTICATED with the cloud's copy for a
38
+ * credential naming no subject; UNAVAILABLE with the cloud's copy when
39
+ * userinfo fails).
37
40
  *
38
41
  * The four federation RPCs refuse UNIMPLEMENTED with the edition reason
39
42
  * when no unit composes the capability (never INTERNAL; the organization
@@ -52,6 +55,7 @@ import { IdentityAccountSchema } from "@stigmer/protos/ai/stigmer/iam/identityac
52
55
  import { IdentityAccountCommandController } from "@stigmer/protos/ai/stigmer/iam/identityaccount/v1/command_pb";
53
56
  import { IdentityAccountQueryController } from "@stigmer/protos/ai/stigmer/iam/identityaccount/v1/query_pb";
54
57
  import { stepsForSlot } from "../../extensions/gate-slots.js";
58
+ import { isPlatformPipelineCaller } from "../../extensions/identity.js";
55
59
  import { internalError, invalidArgumentError } from "../../pipeline/errors.js";
56
60
  import { apiResourceKindKey } from "../../pipeline/interceptors/apiresource.js";
57
61
  import { callerIdentityOf } from "../../pipeline/interceptors/auth.js";
@@ -69,6 +73,7 @@ import { newResolveSlugStep } from "../../pipeline/steps/slug.js";
69
73
  import { newValidateProtoStep } from "../../pipeline/steps/validation.js";
70
74
  import { ACCOUNT_NOT_FOUND_FOR_CALLER_MESSAGE, CREATE_IS_INTERNAL_MESSAGE, NO_IDP_ID_MESSAGE, USERINFO_UNAVAILABLE_PREFIX, federationUnimplementedMessage, idpIdOf, } from "./constants.js";
71
75
  import { UserInfoFetchError } from "./provisioning.js";
76
+ import { accountForCaller } from "./resolve.js";
72
77
  import { accountNotFoundError, newAssignBackendFieldsStep, newCheckDuplicateStep, newDefaultAccountNameStep, newDeleteAccountStep, newDeriveAccountIdStep, newGuardImmutableSubjectStep, newLoadExistingAccountForDeleteStep, newLoadExistingAccountStep, newLoadTargetAccountStep, newPersistNewAccountStep, newPersistUpdatedAccountStep, newPreserveBackendFieldsStep, } from "./steps.js";
73
78
  /** Registers both identityaccount services on the router (routes stage). */
74
79
  export function registerIdentityAccountServices(router, deps) {
@@ -145,9 +150,9 @@ function createRpc(deps, account, ctx) {
145
150
  return runCreateChain(deps, account, caller, kindOf(ctx));
146
151
  }
147
152
  function guardInternalRpc(caller) {
148
- if (caller.callerClass === "machine" ||
149
- caller.callerClass === "internal" ||
150
- caller.origin === "in-process") {
153
+ // The one definition of "the platform's own pipelines"
154
+ // (extensions/identity.ts), shared with the IamPolicy system RPCs.
155
+ if (isPlatformPipelineCaller(caller)) {
151
156
  return;
152
157
  }
153
158
  throw new ConnectError(CREATE_IS_INTERNAL_MESSAGE, Code.PermissionDenied);
@@ -230,10 +235,9 @@ async function loadTarget(deps, method, id, ctx) {
230
235
  */
231
236
  async function whoAmI(deps, _empty, ctx) {
232
237
  const caller = callerIdentityOf(ctx);
233
- let account = await read(() => deps.accounts.findById(caller.identityId), "failed to load identity account");
234
- if (account === undefined) {
235
- account = await read(() => deps.accounts.findDirectByIdpId(idpIdOf(caller)), "failed to load identity account");
236
- }
238
+ // The domain's one statement of "the caller's account" (resolve.ts):
239
+ // by id, then by subject — shared with the built-in role lifecycle.
240
+ const account = await read(() => accountForCaller(deps.accounts, caller), "failed to load identity account");
237
241
  if (account === undefined) {
238
242
  throw new ConnectError(ACCOUNT_NOT_FOUND_FOR_CALLER_MESSAGE, Code.NotFound);
239
243
  }
@@ -262,16 +266,28 @@ async function lookupThenAuthorize(deps, method, input, ctx, lookup, handle) {
262
266
  // ---------------------------------------------------------------------------
263
267
  /**
264
268
  * provisionMyAccount — the subject from the caller's credential, the
265
- * provisioner's flow, then the composed post-persist gates (the cloud's
266
- * personal organization) with the caller RE-STAMPED as the account: the
267
- * position-1 identity was idp-shaped because no row existed when the
268
- * verifier ran, and a gate that attributes ownership must name the
269
- * account, never a principal no later request carries. The gates run on
270
- * EVERY call, the idempotent early return included — the cloud's step
271
- * backfills accounts that predate personal organizations there, which is
272
- * why Q-IA-9 chose a slot over onResourceCreated. Non-transactional in
273
- * the `org-create:post-persist` sense: a gate failure fails the request,
274
- * the row survives, the next call heals it.
269
+ * provisioner's flow, then two post-persist consumers with the caller
270
+ * RE-STAMPED as the account: the position-1 identity was idp-shaped
271
+ * because no row existed when the verifier ran, and anything that
272
+ * attributes ownership must name the account, never a principal no later
273
+ * request carries.
274
+ *
275
+ * 1. The core AccountCreatedHook (open source's membership rules), on
276
+ * the call that CREATED the row only (`created`): the slot below
277
+ * fires on the idempotent path by design, and a rule keyed on "holds
278
+ * no row" there would re-admit a member an administrator had just
279
+ * revoked (20260913.01 plan finding 2). A throw fails the request
280
+ * INTERNAL with the row in place and the rule does not run again for
281
+ * that account — the ratified store-fault mapping, and the one loud
282
+ * record of the window slice 4's Q-S4-4 accepted: the rule's writes
283
+ * are idempotent, so a partial run is harmless, and the recovery is
284
+ * an administrator's grant.
285
+ * 2. The composed post-persist gates (the cloud's personal
286
+ * organization), on EVERY call — the cloud's step backfills accounts
287
+ * that predate personal organizations there, which is why Q-IA-9
288
+ * chose a slot over onResourceCreated. Non-transactional in the
289
+ * `org-create:post-persist` sense: a gate failure fails the request,
290
+ * the row survives, the next call heals it.
275
291
  */
276
292
  async function provisionMyAccount(deps, _empty, ctx) {
277
293
  const caller = callerIdentityOf(ctx);
@@ -280,8 +296,9 @@ async function provisionMyAccount(deps, _empty, ctx) {
280
296
  throw new ConnectError(NO_IDP_ID_MESSAGE, Code.Unauthenticated);
281
297
  }
282
298
  let account;
299
+ let created;
283
300
  try {
284
- account = await deps.provisioner.provisionDirectAccount(idpId, caller);
301
+ ({ account, created } = await deps.provisioner.provisionDirectAccount(idpId, caller));
285
302
  }
286
303
  catch (error) {
287
304
  if (error instanceof UserInfoFetchError) {
@@ -289,14 +306,22 @@ async function provisionMyAccount(deps, _empty, ctx) {
289
306
  }
290
307
  throw error;
291
308
  }
309
+ const asAccount = {
310
+ ...caller,
311
+ identityId: account.metadata?.id ?? "",
312
+ };
313
+ if (created && deps.membership !== undefined) {
314
+ try {
315
+ await deps.membership.onAccountCreated(account, asAccount);
316
+ }
317
+ catch (error) {
318
+ throw internalError(error, "failed to record organization membership");
319
+ }
320
+ }
292
321
  // The ratified provision slot (Q-IA-9; the gate-slots.ts header carries
293
322
  // its semantics). Empty in OSS — no pipeline is built for zero steps.
294
323
  const gates = stepsForSlot(deps.gateSteps, "identity-account-provision:post-persist");
295
324
  if (gates.length > 0) {
296
- const asAccount = {
297
- ...caller,
298
- identityId: account.metadata?.id ?? "",
299
- };
300
325
  const reqCtx = new RequestContext(IdentityAccountSchema, account, asAccount, kindOf(ctx));
301
326
  const pipeline = newPipeline("identityaccount-provision-post-persist", deps.logger);
302
327
  for (const step of gates) {
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/domain/identityaccount/controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAK5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,0DAA0D,CAAC;AAGvG,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AACjG,OAAO,EAAE,gCAAgC,EAAE,MAAM,8DAA8D,CAAC;AAMhH,OAAO,EAAE,8BAA8B,EAAE,MAAM,4DAA4D,CAAC;AAI5G,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAK9D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EACL,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,eAAe,EACf,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EACL,oCAAoC,EACpC,0BAA0B,EAC1B,iBAAiB,EACjB,2BAA2B,EAC3B,8BAA8B,EAC9B,OAAO,GACR,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,4BAA4B,EAC5B,mCAAmC,EACnC,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAqBpB,4EAA4E;AAC5E,MAAM,UAAU,+BAA+B,CAC7C,MAAqB,EACrB,IAAmC;IAEnC,MAAM,CAAC,OAAO,CAAC,gCAAgC,EAAE;QAC/C,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC;QACvD,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC;QACpD,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC;QACjD,sBAAsB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CACrC,SAAS,CACP,IAAI,EACJ,GAAG,EACH,gCAAgC,CAAC,MAAM,CAAC,sBAAsB,EAC9D,KAAK,EACL,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAC1B,UAAU,CAAC,sBAAsB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CACxD;QACH,sBAAsB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CACrC,SAAS,CACP,IAAI,EACJ,GAAG,EACH,gCAAgC,CAAC,MAAM,CAAC,sBAAsB,EAC9D,KAAK,EACL,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAC1B,UAAU,CAAC,sBAAsB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CACxD;QACH,2BAA2B,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAC1C,SAAS,CACP,IAAI,EACJ,GAAG,EACH,gCAAgC,CAAC,MAAM,CAAC,2BAA2B,EACnE,KAAK,EACL,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAC1B,UAAU,CAAC,2BAA2B,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAC7D;QACH,kBAAkB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;KACzE,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,CAAC,8BAA8B,EAAE;QAC7C,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC;QACpC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;QAChD,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;QACxD,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;QACxD,gBAAgB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAChC,SAAS,CACP,IAAI,EACJ,GAAG,EACH,8BAA8B,CAAC,MAAM,CAAC,gBAAgB,EACtD,MAAM,EACN,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAC1B,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CACnD;QACH,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC;KACvD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAC,GAAmB;IACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC5C,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;;;;GAKG;AACH,KAAK,UAAU,cAAc,CAC3B,IAA2B,EAC3B,OAAwB,EACxB,MAAsB,EACtB,IAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,qBAAqB,EACrB,OAAO,EACP,MAAM,EACN,IAAI,CACL,CAAC;IACF,MAAM,WAAW,CACf,wBAAwB,EACxB,IAAI,CAAC,MAAM,CACZ;SACE,OAAO,CACN,gBAAgB,CACd,gCAAgC,CAAC,MAAM,CAAC,MAAM,EAC9C,IAAI,CAAC,UAAU,CAChB,CACF;SACA,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAC/B,OAAO,CAAC,yBAAyB,EAAE,CAAC;SACpC,OAAO,CAAC,kBAAkB,EAAE,CAAC;SAC7B,OAAO,CAAC,sBAAsB,EAAE,CAAC;SACjC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC7C,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAC/B,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpD,OAAO,CAAC,0BAA0B,EAAE,CAAC;SACrC,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChD,OAAO,CACN,gCAAgC,CAC9B,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,MAAM,CACZ,CACF;SACA,KAAK,EAAE;SACP,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAA2B,EAC3B,IAAqB;IAErB,OAAO,CAAC,KAAyB,EAAE,MAAsB,EAAE,EAAE,CAC3D,cAAc,CACZ,IAAI,EACJ,MAAM,CAAC,qBAAqB,EAAE;QAC5B,UAAU,EAAE,mBAAmB;QAC/B,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;QAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC,EACF,MAAM,EACN,IAAI,CACL,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAChB,IAAmC,EACnC,OAAwB,EACxB,GAAmB;IAEnB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACrC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAsB;IAC9C,IACE,MAAM,CAAC,WAAW,KAAK,SAAS;QAChC,MAAM,CAAC,WAAW,KAAK,UAAU;QACjC,MAAM,CAAC,MAAM,KAAK,YAAY,EAC9B,CAAC;QACD,OAAO;IACT,CAAC;IACD,MAAM,IAAI,YAAY,CAAC,0BAA0B,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC5E,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;GAKG;AACH,KAAK,UAAU,MAAM,CACnB,IAAmC,EACnC,OAAwB,EACxB,GAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,qBAAqB,EACrB,OAAO,EACP,gBAAgB,CAAC,GAAG,CAAC,EACrB,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;IACF,MAAM,WAAW,CACf,wBAAwB,EACxB,IAAI,CAAC,MAAM,CACZ;SACE,OAAO,CACN,gBAAgB,CACd,gCAAgC,CAAC,MAAM,CAAC,MAAM,EAC9C,IAAI,CAAC,UAAU,CAChB,CACF;SACA,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAC/B,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAClD,OAAO,CAAC,4BAA4B,EAAE,CAAC;SACvC,OAAO,CAAC,uBAAuB,EAAE,CAAC;SAClC,OAAO,CAAC,4BAA4B,EAAE,CAAC;SACvC,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACpD,KAAK,EAAE;SACP,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC;AAED,0FAA0F;AAC1F,KAAK,UAAU,aAAa,CAC1B,IAAmC,EACnC,EAAqB,EACrB,GAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,gCAAgC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EACpD,EAAE,EACF,gBAAgB,CAAC,GAAG,CAAC,EACrB,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;IACF,MAAM,WAAW,CAEf,wBAAwB,EAAE,IAAI,CAAC,MAAM,CAAC;SACrC,OAAO,CACN,gBAAgB,CACd,gCAAgC,CAAC,MAAM,CAAC,MAAM,EAC9C,IAAI,CAAC,UAAU,CAChB,CACF;SACA,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAC/B,OAAO,CAAC,wBAAwB,EAAE,CAAC;SACnC,OAAO,CAAC,mCAAmC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC3D,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC5C,OAAO,CACN,yBAAyB,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,CACpE;SACA,KAAK,EAAE;SACP,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,aAAa,CACjB,IAAI,KAAK,CAAC,qDAAqD,CAAC,EAChE,+CAA+C,CAChD,CAAC;IACJ,CAAC;IACD,OAAO,OAA0B,CAAC;AACpC,CAAC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,4EAA4E;AAC5E,KAAK,UAAU,GAAG,CAChB,IAAmC,EACnC,EAAqB,EACrB,GAAmB;IAEnB,OAAO,UAAU,CAAC,IAAI,EAAE,8BAA8B,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED,iFAAiF;AACjF,KAAK,UAAU,YAAY,CACzB,IAAmC,EACnC,EAAqB,EACrB,GAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,UAAU,CAC9B,IAAI,EACJ,8BAA8B,CAAC,MAAM,CAAC,YAAY,EAClD,EAAE,EACF,GAAG,CACJ,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;IAC9C,OAAO,MAAM,CAAC,2BAA2B,EAAE;QACzC,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE;QAC9B,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE;QACtC,WAAW,EAAE,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,IAAI,EAAE;QAC9C,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;KACjC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,IAAmC,EACnC,MAAkB,EAClB,EAAqB,EACrB,GAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,MAAM,CAAC,KAAK,EACZ,EAAE,EACF,gBAAgB,CAAC,GAAG,CAAC,EACrB,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;IACF,MAAM,WAAW,CACf,mBAAmB,MAAM,CAAC,SAAS,EAAE,EACrC,IAAI,CAAC,MAAM,CACZ;SACE,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SAClD,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAC/B,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChD,KAAK,EAAE;SACP,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAoB,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,MAAM,CACnB,IAAmC,EACnC,MAAa,EACb,GAAmB;IAEnB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,OAAO,GAAG,MAAM,IAAI,CACtB,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAC/C,iCAAiC,CAClC,CAAC;IACF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,GAAG,MAAM,IAAI,CAClB,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EACtD,iCAAiC,CAClC,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,YAAY,CAAC,oCAAoC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kFAAkF;AAClF,KAAK,UAAU,UAAU,CACvB,IAAmC,EACnC,KAA2B,EAC3B,GAAmB;IAEnB,OAAO,mBAAmB,CACxB,IAAI,EACJ,8BAA8B,CAAC,MAAM,CAAC,UAAU,EAChD,KAAK,EACL,GAAG,EACH,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,EAClD,KAAK,CAAC,KAAK,CACZ,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,KAAK,UAAU,UAAU,CACvB,IAAmC,EACnC,KAAY,EACZ,GAAmB;IAEnB,OAAO,mBAAmB,CACxB,IAAI,EACJ,8BAA8B,CAAC,MAAM,CAAC,UAAU,EAChD,KAAK,EACL,GAAG,EACH,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAC5C,KAAK,CAAC,KAAK,CACZ,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,IAAmC,EACnC,MAAkB,EAClB,KAAmC,EACnC,GAAmB,EACnB,MAAkD,EAClD,MAAc;IAEd,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,oCAAoC,CAAC,CAAC;IACzE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE;QAC3E,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE;KACvC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,kBAAkB,CAC/B,IAAmC,EACnC,MAAa,EACb,GAAmB;IAEnB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,OAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;YACxC,MAAM,IAAI,YAAY,CACpB,GAAG,2BAA2B,GAAG,KAAK,CAAC,OAAO,EAAE,EAChD,IAAI,CAAC,WAAW,CACjB,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,wEAAwE;IACxE,sEAAsE;IACtE,MAAM,KAAK,GAAG,YAAY,CACxB,IAAI,CAAC,SAAS,EACd,yCAAyC,CAC1C,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,SAAS,GAAmB;YAChC,GAAG,MAAM;YACT,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE;SACvC,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,qBAAqB,EACrB,OAAO,EACP,SAAS,EACT,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;QACF,MAAM,QAAQ,GAAG,WAAW,CAC1B,wCAAwC,EACxC,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAiBD,KAAK,UAAU,SAAS,CACtB,IAAmC,EACnC,GAAmB,EACnB,MAAkB,EAClB,KAAY,EACZ,GAI6B;IAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,YAAY,CACpB,8BAA8B,CAC5B,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAChD,EACD,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,MAAM,GAAG,GAAG,KAAK,CAAC,mBAAmB,CAAC;IACtC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;QACzC,MAAM,oBAAoB,CACxB,qDAAqD,CACtD,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QACtC,MAAM,oBAAoB,CACxB,8BAA8B,GAAG,CAAC,GAAG,+BAA+B,GAAG,GAAG,CAC3E,CAAC;IACJ,CAAC;IACD,sEAAsE;IACtE,qDAAqD;IACrD,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,YAAY,CACpB,qBAAqB,MAAM,IAAI,GAAG,CAAC,IAAI,aAAa,EACpD,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IACD,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC;IACjB,OAAO,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,mGAAmG;AACnG,KAAK,UAAU,IAAI,CACjB,SAA2B,EAC3B,OAAe;IAEf,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/domain/identityaccount/controller.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"operator.d.ts","sourceRoot":"","sources":["../../../src/domain/identityaccount/operator.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAKhG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC;AAKD,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAiC1B"}
1
+ {"version":3,"file":"operator.d.ts","sourceRoot":"","sources":["../../../src/domain/identityaccount/operator.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAQhG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAiC1B"}
@@ -31,12 +31,10 @@
31
31
  */
32
32
  import { create } from "@bufbuild/protobuf";
33
33
  import { IdentityAccountSpecSchema } from "@stigmer/protos/ai/stigmer/iam/identityaccount/v1/spec_pb";
34
- import { trustedLocalIdentityFor } from "../../pipeline/interceptors/auth.js";
34
+ import { SYSTEM_OPERATOR_IDENTITY_ID, trustedLocalIdentityFor, } from "../../pipeline/interceptors/auth.js";
35
35
  import { accountIdFor, localIdpIdFor } from "./constants.js";
36
36
  import { resolveCreateRace } from "./provisioning.js";
37
37
  import { assignDirectBackendFields } from "./steps.js";
38
- /** The unconfigured laptop's operator: what the interceptor stamps as identityId. */
39
- const SYSTEM_OPERATOR = "system";
40
38
  export async function ensureOperatorAccount(deps, operator) {
41
39
  // The caller the interceptor would stamp for this operator; its
42
40
  // identityId (the email, or "system") is the subject's local principal.
@@ -50,7 +48,7 @@ export async function ensureOperatorAccount(deps, operator) {
50
48
  ? operator.displayName
51
49
  : operator.email !== ""
52
50
  ? operator.email
53
- : SYSTEM_OPERATOR;
51
+ : SYSTEM_OPERATOR_IDENTITY_ID;
54
52
  try {
55
53
  return await deps.createAccount({
56
54
  name,
@@ -1 +1 @@
1
- {"version":3,"file":"operator.js","sourceRoot":"","sources":["../../../src/domain/identityaccount/operator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAC;AAEtG,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAcvD,qFAAqF;AACrF,MAAM,eAAe,GAAG,QAAQ,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAyB,EACzB,QAA0B;IAE1B,gEAAgE;IAChE,wEAAwE;IACxE,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,GACR,QAAQ,CAAC,WAAW,KAAK,EAAE;QACzB,CAAC,CAAC,QAAQ,CAAC,WAAW;QACtB,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE;YACrB,CAAC,CAAC,QAAQ,CAAC,KAAK;YAChB,CAAC,CAAC,eAAe,CAAC;IACxB,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,aAAa,CAC7B;YACE,IAAI;YACJ,IAAI,EAAE,yBAAyB,CAC7B,MAAM,CAAC,yBAAyB,EAAE;gBAChC,KAAK;gBACL,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAC,CACH;SACF,EACD,MAAM,CACP,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,CACnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAC5C,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"operator.js","sourceRoot":"","sources":["../../../src/domain/identityaccount/operator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAC;AAEtG,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAcvD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAyB,EACzB,QAA0B;IAE1B,gEAAgE;IAChE,wEAAwE;IACxE,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,GACR,QAAQ,CAAC,WAAW,KAAK,EAAE;QACzB,CAAC,CAAC,QAAQ,CAAC,WAAW;QACtB,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE;YACrB,CAAC,CAAC,QAAQ,CAAC,KAAK;YAChB,CAAC,CAAC,2BAA2B,CAAC;IACpC,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,aAAa,CAC7B;YACE,IAAI;YACJ,IAAI,EAAE,yBAAyB,CAC7B,MAAM,CAAC,yBAAyB,EAAE;gBAChC,KAAK;gBACL,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAC,CACH;SACF,EACD,MAAM,CACP,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,CACnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAC5C,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -36,9 +36,28 @@ export interface DirectAccountProvisionerDeps {
36
36
  readonly createAccount: CreateAccount;
37
37
  readonly userInfo: UserInfoClient;
38
38
  }
39
+ /** The provisioner's answer: the account, and whether this call created its row. */
40
+ export interface ProvisionedAccount {
41
+ readonly account: IdentityAccount;
42
+ /** False on the idempotent early return and for a first-login race's loser. */
43
+ readonly created: boolean;
44
+ }
45
+ /**
46
+ * What the identity-account domain offers a core rule keyed on a person's
47
+ * FIRST provisioning (the open-source membership rules,
48
+ * domain/iampolicy/membership.ts). Runs once per account, on the call
49
+ * whose `created` is true, with the caller RE-STAMPED as the account, so
50
+ * whatever the hook writes attributes to the account and never to the
51
+ * idp-shaped principal the verifier admitted before the row existed. Its
52
+ * failure semantics are the controller's: a throw fails the request with
53
+ * the account in place, and the hook does not run again for that account.
54
+ */
55
+ export interface AccountCreatedHook {
56
+ onAccountCreated(account: IdentityAccount, caller: CallerIdentity): Promise<void>;
57
+ }
39
58
  export interface DirectAccountProvisioner {
40
59
  /** provisionMyAccount's domain flow; `idpId` is the caller's verified subject. */
41
- provisionDirectAccount(idpId: string, caller: CallerIdentity): Promise<IdentityAccount>;
60
+ provisionDirectAccount(idpId: string, caller: CallerIdentity): Promise<ProvisionedAccount>;
42
61
  }
43
62
  export declare function newDirectAccountProvisioner(deps: DirectAccountProvisionerDeps): DirectAccountProvisioner;
44
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"provisioning.d.ts","sourceRoot":"","sources":["../../../src/domain/identityaccount/provisioning.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2DAA2D,CAAC;AAGrG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC7E;AAED,kFAAkF;AAClF,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,KAAK,EAAE,OAAO;CAI3B;AAED,0EAA0E;AAC1E,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;CACpC;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9B,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB;IACvC,kFAAkF;IAClF,sBAAsB,CACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7B;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,4BAA4B,GACjC,wBAAwB,CA+B1B;AAkCD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,GACrD,OAAO,CAAC,eAAe,CAAC,CAM1B"}
1
+ {"version":3,"file":"provisioning.d.ts","sourceRoot":"","sources":["../../../src/domain/identityaccount/provisioning.ts"],"names":[],"mappings":"AA8CA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2DAA2D,CAAC;AAGrG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC7E;AAED,kFAAkF;AAClF,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,KAAK,EAAE,OAAO;CAI3B;AAED,0EAA0E;AAC1E,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;CACpC;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9B,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACnC;AAED,oFAAoF;AACpF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CACd,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,kFAAkF;IAClF,sBAAsB,CACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChC;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,4BAA4B,GACjC,wBAAwB,CAmC1B;AAkCD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,GACrD,OAAO,CAAC,eAAe,CAAC,CAM1B"}
@@ -28,6 +28,16 @@
28
28
  * fires on the `identity-account-provision:post-persist` slot in the
29
29
  * composition (A10), wired by the controller.
30
30
  *
31
+ * The answer says whether THIS call created the row (`ProvisionedAccount.
32
+ * created`; 20260913.01 slice 4): the idempotent early return and the
33
+ * race loser answer false. The slot above fires on every call by design
34
+ * (the cloud's backfill needs that), so a CORE rule that must run exactly
35
+ * once per person — the open-source membership rules, which hand out
36
+ * organization roles at first sign-in — keys on `created` instead, through
37
+ * the AccountCreatedHook this domain offers and the controller runs. The
38
+ * hook is declared here, in the domain that fires it, so the domain that
39
+ * implements it (iampolicy) depends on this one and never the reverse.
40
+ *
31
41
  * This module holds the domain flow over two PORTS — the store and the
32
42
  * userinfo client — and no network code; identity/oidc-userinfo.ts is the
33
43
  * OIDC implementation the composition root wires in.
@@ -47,7 +57,7 @@ export function newDirectAccountProvisioner(deps) {
47
57
  async provisionDirectAccount(idpId, caller) {
48
58
  const existing = await deps.accounts.findDirectByIdpId(idpId);
49
59
  if (existing !== undefined) {
50
- return existing;
60
+ return { account: existing, created: false };
51
61
  }
52
62
  const profile = await profileOf(deps.userInfo, caller);
53
63
  const input = {
@@ -61,10 +71,14 @@ export function newDirectAccountProvisioner(deps) {
61
71
  })),
62
72
  };
63
73
  try {
64
- return await deps.createAccount(input, caller);
74
+ return {
75
+ account: await deps.createAccount(input, caller),
76
+ created: true,
77
+ };
65
78
  }
66
79
  catch (error) {
67
- return resolveCreateRace(error, () => deps.accounts.findDirectByIdpId(idpId));
80
+ const winner = await resolveCreateRace(error, () => deps.accounts.findDirectByIdpId(idpId));
81
+ return { account: winner, created: false };
68
82
  }
69
83
  },
70
84
  };
@@ -1 +1 @@
1
- {"version":3,"file":"provisioning.js","sourceRoot":"","sources":["../../../src/domain/identityaccount/provisioning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provisioning.js","sourceRoot":"","sources":["../../../src/domain/identityaccount/provisioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAC;AAGtG,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAiBvD,kFAAkF;AAClF,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,KAAc;QACxB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AA0DD,MAAM,UAAU,2BAA2B,CACzC,IAAkC;IAElC,OAAO;QACL,KAAK,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM;YACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC/C,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvD,MAAM,KAAK,GAAuB;gBAChC,IAAI,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;gBACpC,IAAI,EAAE,yBAAyB,CAC7B,MAAM,CAAC,yBAAyB,EAAE;oBAChC,KAAK;oBACL,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;iBAC/B,CAAC,CACH;aACF,CAAC;YAEF,IAAI,CAAC;gBACH,OAAO;oBACL,OAAO,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;oBAChD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,CACjD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CACvC,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC7C,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,KAAK,UAAU,SAAS,CACtB,QAAwB,EACxB,MAAsB;IAEtB,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACzB,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACzB,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;SACf,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,MAAsB,EAAE,OAAoB;IACjE,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;IAC7C,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC;AACvB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAc,EACd,UAAsD;IAEtD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -28,9 +28,32 @@
28
28
  * no id is the one deliberate divergence from the cloud's inline
29
29
  * `metadata?.id ?? ""`: a `""` principal is the silent-junk failure the
30
30
  * oss#405 doctrine forbids, so it is a loud fault naming the subject.
31
+ *
32
+ * The same knowledge read in the caller's direction is `accountForCaller`
33
+ * (20260913.01 slice 4, Q-S4-1): the account a stamped CallerIdentity
34
+ * stands for. Two primary-key reads, the cloud's whoAmI order — the
35
+ * identityId AS an account id (a verifier that resolved), then the
36
+ * caller's subject through the direct lookup (a verifier that did not:
37
+ * the trusted-local interceptor, which stamps the operator's email and
38
+ * never consults the store; a composition verifier that runs before any
39
+ * row exists). It lives here so whoAmI and the built-in role lifecycle,
40
+ * which asks "whose organization is this" from the creating caller,
41
+ * cannot answer the same question two ways. A credential naming no
42
+ * subject is `undefined` with no second read: the store is never asked
43
+ * about "".
31
44
  */
45
+ import type { IdentityAccount } from "@stigmer/protos/ai/stigmer/iam/identityaccount/v1/api_pb";
46
+ import type { CallerIdentity } from "../../extensions/identity.js";
32
47
  import type { IdentityAccountStore } from "./store.js";
33
48
  /** The one read a verifier needs from the domain: the direct account for a subject. */
34
49
  export type AccountsBySubject = Pick<IdentityAccountStore, "findDirectByIdpId">;
50
+ /** The two reads the caller-direction resolution needs: by id, then by subject. */
51
+ export type AccountsByCaller = Pick<IdentityAccountStore, "findById" | "findDirectByIdpId">;
35
52
  export declare function identityIdForSubject(accounts: AccountsBySubject, subject: string): Promise<string>;
53
+ /**
54
+ * The account `caller` stands for, or `undefined` when there is none (an
55
+ * idp-shaped caller before provisioning; a credential naming no subject).
56
+ * Faults propagate as they are — the caller decides the wire shape.
57
+ */
58
+ export declare function accountForCaller(accounts: AccountsByCaller, caller: CallerIdentity): Promise<IdentityAccount | undefined>;
36
59
  //# sourceMappingURL=resolve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/domain/identityaccount/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,uFAAuF;AACvF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAC;AAEhF,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAYjB"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/domain/identityaccount/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAEhG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,uFAAuF;AACvF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAC;AAEhF,mFAAmF;AACnF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,oBAAoB,EACpB,UAAU,GAAG,mBAAmB,CACjC,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAUtC"}
@@ -1,3 +1,4 @@
1
+ import { idpIdOf } from "./constants.js";
1
2
  export async function identityIdForSubject(accounts, subject) {
2
3
  const account = await accounts.findDirectByIdpId(subject);
3
4
  if (account === undefined) {
@@ -9,4 +10,20 @@ export async function identityIdForSubject(accounts, subject) {
9
10
  }
10
11
  return id;
11
12
  }
13
+ /**
14
+ * The account `caller` stands for, or `undefined` when there is none (an
15
+ * idp-shaped caller before provisioning; a credential naming no subject).
16
+ * Faults propagate as they are — the caller decides the wire shape.
17
+ */
18
+ export async function accountForCaller(accounts, caller) {
19
+ const byId = await accounts.findById(caller.identityId);
20
+ if (byId !== undefined) {
21
+ return byId;
22
+ }
23
+ const subject = idpIdOf(caller);
24
+ if (subject === "") {
25
+ return undefined;
26
+ }
27
+ return accounts.findDirectByIdpId(subject);
28
+ }
12
29
  //# sourceMappingURL=resolve.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/domain/identityaccount/resolve.ts"],"names":[],"mappings":"AAoCA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAA2B,EAC3B,OAAe;IAEf,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC;IACtC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,iCAAiC,OAAO,wDAAwD,CACjG,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/domain/identityaccount/resolve.ts"],"names":[],"mappings":"AA+CA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAYzC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAA2B,EAC3B,OAAe;IAEf,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC;IACtC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,iCAAiC,OAAO,wDAAwD,CACjG,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAA0B,EAC1B,MAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,22 +1,8 @@
1
+ import type { PortContractCase, PortContractFixture } from "../../store/port-contract.js";
1
2
  import type { IdentityAccountStore } from "./store.js";
2
- /** One fresh, isolated store per case, plus the one escape hatch the port cannot express. */
3
- export interface IdentityAccountStoreContractFixture {
4
- readonly store: IdentityAccountStore;
5
- /**
6
- * Cuts the store from its database so every later call is an
7
- * infrastructure fault. `cleanup` still runs afterwards and must tolerate
8
- * a disconnected store (both OSS drivers' `close` is idempotent; a pool
9
- * fixture ends a per-case pool here and skips it in cleanup).
10
- */
11
- disconnect(): Promise<void>;
12
- cleanup(): Promise<void>;
13
- }
14
- export interface IdentityAccountStoreContractCase {
15
- /** The contract line, in the port's words; the framework prints it as the test name. */
16
- readonly name: string;
17
- /** Makes a FRESH fixture, runs the case, cleans up. A failing assertion wins over a failing cleanup. */
18
- run(): Promise<void>;
19
- }
3
+ /** The runner's fixture over this port — the name a driver's test and the barrel know it by. */
4
+ export type IdentityAccountStoreContractFixture = PortContractFixture<IdentityAccountStore>;
5
+ export type IdentityAccountStoreContractCase = PortContractCase;
20
6
  /** The port's cases over `makeFixture`, one fresh fixture per case. */
21
7
  export declare function identityAccountStoreContract(makeFixture: () => Promise<IdentityAccountStoreContractFixture>): ReadonlyArray<IdentityAccountStoreContractCase>;
22
8
  //# sourceMappingURL=store-contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store-contract.d.ts","sourceRoot":"","sources":["../../../src/domain/identityaccount/store-contract.ts"],"names":[],"mappings":"AAwDA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,6FAA6F;AAC7F,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC;;;;;OAKG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,gCAAgC;IAC/C,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wGAAwG;IACxG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAkYD,uEAAuE;AACvE,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,MAAM,OAAO,CAAC,mCAAmC,CAAC,GAC9D,aAAa,CAAC,gCAAgC,CAAC,CAKjD"}
1
+ {"version":3,"file":"store-contract.d.ts","sourceRoot":"","sources":["../../../src/domain/identityaccount/store-contract.ts"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EACV,gBAAgB,EAEhB,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,gGAAgG;AAChG,MAAM,MAAM,mCAAmC,GAC7C,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;AAE5C,MAAM,MAAM,gCAAgC,GAAG,gBAAgB,CAAC;AAoWhE,uEAAuE;AACvE,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,MAAM,OAAO,CAAC,mCAAmC,CAAC,GAC9D,aAAa,CAAC,gCAAgC,CAAC,CAEjD"}
@@ -8,23 +8,16 @@
8
8
  * `cloud.iam_identity_account` store), so "the port holds" is one
9
9
  * statement proven per driver, never restated per repository.
10
10
  *
11
- * Shape. The package's precedent is store/__tests__/store-contract.ts —
12
- * `describeStoreContract(makeFixture)`: a fresh fixture per test, named
13
- * escape hatches for the arms the interface cannot express, driver-physical
14
- * behavior left to each driver's own tests. This kit follows it in
15
- * everything but the framework: it is consumed by ANOTHER package's tests,
16
- * so it ships in dist/ and must not import vitest — a devDependency that
17
- * would enter the root barrel's runtime import graph. It therefore returns
18
- * cases instead of calling `describe`, asserts through node:assert/strict,
19
- * and the consumer's framework does `for (const c of cases) it(c.name,
20
- * c.run)`. Do not "fix" it back to the precedent's vitest shape.
21
- *
22
- * Every case makes a FRESH fixture, runs, and cleans up; a failing
23
- * assertion wins over a failing cleanup. `disconnect` is the one escape
24
- * hatch: the port has no lifecycle by design (a composition owns its
25
- * store's), yet "an outage never reads as no account" is the line that
26
- * matters most, so the fixture cuts the store from its database and the
27
- * kit asserts that the fault propagates instead of reading as `undefined`.
11
+ * Shape. The kit is a list of declarations over the port-contract runner
12
+ * (store/port-contract.ts, lifted from this file in 20260913.01 slice 2
13
+ * when the IamPolicy kit became the second): the runner owns the fresh
14
+ * fixture per case, the cleanup, the rule that a failing assertion wins
15
+ * over a failing cleanup, and the reason the kit returns cases instead of
16
+ * calling vitest's `describe`. `disconnect` is the one escape hatch: the
17
+ * port has no lifecycle by design (a composition owns its store's), yet
18
+ * "an outage never reads as no account" is the line that matters most, so
19
+ * the fixture cuts the store from its database and the kit asserts that
20
+ * the fault propagates instead of reading as `undefined`.
28
21
  *
29
22
  * What the kit deliberately does not carry: open source's primary-key read
30
23
  * (the findByField spy) and its derived-id refusal, the cloud's column
@@ -48,6 +41,7 @@ import { create, equals } from "@bufbuild/protobuf";
48
41
  import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
49
42
  import { IdentityAccountSchema } from "@stigmer/protos/ai/stigmer/iam/identityaccount/v1/api_pb";
50
43
  import { IdentityAccountProvisioningMode } from "@stigmer/protos/ai/stigmer/iam/identityaccount/v1/enum_pb";
44
+ import { portContractCases } from "../../store/port-contract.js";
51
45
  import { accountIdFor } from "./constants.js";
52
46
  import { DuplicateAccountError } from "./store.js";
53
47
  /** A direct account as the domain writes it: id derived from the subject, mode direct. */
@@ -271,37 +265,8 @@ const CASES = [
271
265
  },
272
266
  ],
273
267
  ];
274
- /**
275
- * Runs `body` over a fresh fixture. The body's failure is the one reported:
276
- * a cleanup failure after a failed body would otherwise replace the
277
- * assertion that matters with a teardown detail.
278
- */
279
- async function withFixture(makeFixture, body) {
280
- const fixture = await makeFixture();
281
- let failed = false;
282
- try {
283
- await body(fixture);
284
- }
285
- catch (error) {
286
- failed = true;
287
- throw error;
288
- }
289
- finally {
290
- try {
291
- await fixture.cleanup();
292
- }
293
- catch (cleanupError) {
294
- if (!failed) {
295
- throw cleanupError;
296
- }
297
- }
298
- }
299
- }
300
268
  /** The port's cases over `makeFixture`, one fresh fixture per case. */
301
269
  export function identityAccountStoreContract(makeFixture) {
302
- return CASES.map(([name, body]) => ({
303
- name,
304
- run: () => withFixture(makeFixture, body),
305
- }));
270
+ return portContractCases(CASES, makeFixture);
306
271
  }
307
272
  //# sourceMappingURL=store-contract.js.map