@happyvertical/smrt-cli 0.57.13 → 0.57.15

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 (33) hide show
  1. package/AGENTS.md +2 -3
  2. package/dist/{ApiKey-CVmlf3V6-BAeHuH48.js → ApiKey-CVmlf3V6-CpkKlftW.js} +2 -2
  3. package/dist/{ApiKeyCollection-CiiDNFdD-CMGF3_ul.js → ApiKeyCollection-CiiDNFdD-DGZkMNy8.js} +3 -3
  4. package/dist/{AuditLogCollection-WDHL-_AF-C8L1gl7q.js → AuditLogCollection-WDHL-_AF-CQXj4gM2.js} +3 -3
  5. package/dist/{NostrIdentity-AC8fAdxe-DKxKyu_a.js → NostrIdentity-AC8fAdxe-Crl0np5c.js} +4 -4
  6. package/dist/{NostrIdentityCollection-CctlECpX-fkAPnK02.js → NostrIdentityCollection-CctlECpX-COd5JbK9.js} +2 -2
  7. package/dist/{OidcIdentity-BUblgQLs-C75_f06o.js → OidcIdentity-BUblgQLs-DGHZ4M7i.js} +2 -2
  8. package/dist/{OidcIdentityCollection-ClOyaHeF-CiymEMsR.js → OidcIdentityCollection-ClOyaHeF-B-hGW2Wl.js} +2 -2
  9. package/dist/PasswordCredentialService-CyB9FmYp-Bsni8t37.js +6263 -0
  10. package/dist/{ProfileAssetCollection-CRMcjLJ--_OAFKSvo.js → ProfileAssetCollection-CRMcjLJ--sqYwjhji.js} +5 -5
  11. package/dist/{ProfileCollection-C4INKh7Y-CU227vYB.js → ProfileCollection-C4INKh7Y-Df7XNoF9.js} +28 -28
  12. package/dist/{ProfileLinkCollection-DFfZRsgv-De18fH8M.js → ProfileLinkCollection-DFfZRsgv-B1kKCoxt.js} +4 -4
  13. package/dist/{ProfileMetadataCollection-BIYKy4Y3-B4hKF9kz.js → ProfileMetadataCollection-BIYKy4Y3-DCzYve4J.js} +3 -3
  14. package/dist/{ProfileMetafieldCollection-Buz7gzag-CXMtAfAB.js → ProfileMetafieldCollection-Buz7gzag-Dz6K_9_W.js} +3 -3
  15. package/dist/{ProfileRelationshipCollection-C4g_QLI4-CLezW4sK.js → ProfileRelationshipCollection-C4g_QLI4-C2a5btTC.js} +6 -6
  16. package/dist/{ProfileRelationshipTermCollection-C9J7mC7P-ChIFqjCg.js → ProfileRelationshipTermCollection-C9J7mC7P-B1qRgesq.js} +2 -2
  17. package/dist/{ProfileRelationshipType-U7IwF6Wf-DNavf24e.js → ProfileRelationshipType-U7IwF6Wf--nNtaEKl.js} +1 -1
  18. package/dist/{ProfileRelationshipTypeCollection-_n22WqTb-DiZUWvev.js → ProfileRelationshipTypeCollection-_n22WqTb-CvN_J6A_.js} +3 -3
  19. package/dist/{ProfileTypeCollection-B7kwi1mU-D0bZODrI.js → ProfileTypeCollection-B7kwi1mU-BqrZPPoy.js} +3 -3
  20. package/dist/commands/users-provision-owner.d.ts +10 -0
  21. package/dist/commands/users-provision-owner.d.ts.map +1 -0
  22. package/dist/commands/utilities.d.ts.map +1 -1
  23. package/dist/{commands-BgDKO9Gk.js → commands-H78hZM8r.js} +114 -4
  24. package/dist/{dist-BjVKGAtb.js → dist-3-6I48mI.js} +213 -3591
  25. package/dist/{dist-B0V2uy4g.js → dist-46vxVpSu.js} +3 -3
  26. package/dist/{dist-UirXccvN.js → dist-BnfYk7la.js} +5 -5
  27. package/dist/{dist-CJsW8uvQ.js → dist-D2z9PH4N.js} +2 -2
  28. package/dist/index.js +11 -11
  29. package/dist/{oidcProvisioningPrimitives-DNP9EZlU-PfUi61zh.js → oidcProvisioningPrimitives-DNP9EZlU-CCunrdnL.js} +5 -5
  30. package/dist/operator-A1enN804.js +111 -0
  31. package/dist/{resolveIdentity-CkyqvctR-CxRDO4Kf.js → resolveIdentity-CkyqvctR-y1y-hnjF.js} +17 -17
  32. package/package.json +10 -10
  33. package/dist/dist-DKSFNs8e.js +0 -21
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { n as __exportAll$1 } from "./NostrIdentity-AC8fAdxe-DKxKyu_a.js";
3
- import { t as OidcIdentity } from "./OidcIdentity-BUblgQLs-C75_f06o.js";
4
- import { a as ProfileCollection, f as saveOidcRaceArbiter, i as Profile } from "./ProfileCollection-C4INKh7Y-CU227vYB.js";
5
- import { t as ProfileTypeCollection } from "./ProfileTypeCollection-B7kwi1mU-D0bZODrI.js";
2
+ import { n as __exportAll$1 } from "./NostrIdentity-AC8fAdxe-Crl0np5c.js";
3
+ import { t as OidcIdentity } from "./OidcIdentity-BUblgQLs-DGHZ4M7i.js";
4
+ import { c as saveOidcRaceArbiter, n as ProfileCollection, t as Profile } from "./ProfileCollection-C4INKh7Y-Df7XNoF9.js";
5
+ import { t as ProfileTypeCollection } from "./ProfileTypeCollection-B7kwi1mU-BqrZPPoy.js";
6
6
  import { smrt } from "@happyvertical/smrt-core";
7
7
  //#region ../profiles/dist/chunks/oidcProvisioningPrimitives-DNP9EZlU.js
8
8
  var oidcProvisioningPrimitives_DNP9EZlU_exports = /* @__PURE__ */ __exportAll({
@@ -90,4 +90,4 @@ function requireProvisioningId(value, label) {
90
90
  return value;
91
91
  }
92
92
  //#endregion
93
- export { insertOidcProvisioningIdentity as a, createOidcProvisioningPerson as i, Organization as n, oidcProvisioningPrimitives_DNP9EZlU_exports as o, Person as r, Bot as t };
93
+ export { insertOidcProvisioningIdentity as n, oidcProvisioningPrimitives_DNP9EZlU_exports as r, createOidcProvisioningPerson as t };
@@ -0,0 +1,111 @@
1
+ import { m as withSystemContext } from "./dist-D2z9PH4N.js";
2
+ import { E as PasswordCredentialService, Et as UserStatus, K as UserCollection, N as RoleCollection, Q as UsersPasswordCredentialCollection, Tt as TenantStatus, V as TenantCollection, ct as isValidEmail, ft as normalizeUsername, g as MembershipCollection, gt as verifySecretHash, j as PermissionResolver, ut as normalizeEmail, xt as MembershipStatus } from "./PasswordCredentialService-CyB9FmYp-Bsni8t37.js";
3
+ import { isPostgresDatabase, withEmbeddedWriteTransaction } from "@happyvertical/smrt-core";
4
+ //#region ../users/dist/operator.js
5
+ var OperatorProvisioningError = class extends Error {
6
+ constructor() {
7
+ super("Owner provisioning refused. Verify the identities, password policy, and database state.");
8
+ this.name = "OperatorProvisioningError";
9
+ }
10
+ };
11
+ var UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
12
+ async function provisionPasswordOwner(db, input, passwordPolicy = {}) {
13
+ try {
14
+ if (!isPostgresDatabase(db) || !UUID.test(input.tenantId) || !UUID.test(input.userId) || typeof input.tenantName !== "string" || !input.tenantName.trim() || input.tenantName.length > 200 || input.email !== void 0 && !isValidEmail(input.email) || input.username !== void 0 && !normalizeUsername(input.username)) throw new OperatorProvisioningError();
15
+ const email = normalizeEmail(input.email ?? "");
16
+ const username = normalizeUsername(input.username);
17
+ if (!email && !username) throw new OperatorProvisioningError();
18
+ const tenantId = input.tenantId.toLowerCase();
19
+ const userId = input.userId.toLowerCase();
20
+ const tenantName = input.tenantName.trim();
21
+ const passwordHash = await PasswordCredentialService.preparePasswordHash(input.password, {
22
+ id: userId,
23
+ email,
24
+ emailKey: email || null,
25
+ username: username || null,
26
+ usernameKey: username || null
27
+ }, passwordPolicy);
28
+ return await withSystemContext(() => withEmbeddedWriteTransaction(db, false, async (tx) => {
29
+ await tx.query("SELECT pg_advisory_xact_lock(4158, 1)");
30
+ const options = { db: tx };
31
+ const users = await UserCollection.create(options);
32
+ const tenants = await TenantCollection.create(options);
33
+ const memberships = await MembershipCollection.create(options);
34
+ const roles = await RoleCollection.create(options);
35
+ const permissions = await PermissionResolver.create(options);
36
+ const requireEffectivePermissions = async () => {
37
+ if (!(await permissions.resolvePermissions(userId, tenantId)).permissions.size) throw new OperatorProvisioningError();
38
+ };
39
+ const credentials = await UsersPasswordCredentialCollection.create(options);
40
+ const tenant = await tenants.get({ id: tenantId });
41
+ const user = await users.get({ id: userId });
42
+ const emailMatches = email ? await users.list({
43
+ where: { emailKey: email },
44
+ limit: 2
45
+ }) : [];
46
+ const usernameMatches = username ? await users.list({
47
+ where: { usernameKey: username },
48
+ limit: 2
49
+ }) : [];
50
+ if (emailMatches.some((match) => match.id !== userId) || usernameMatches.some((match) => match.id !== userId)) throw new OperatorProvisioningError();
51
+ if (user) {
52
+ const role2 = await roles.findBySlug("owner");
53
+ const membership = await memberships.findByUserAndTenant(userId, tenantId);
54
+ const credential = await credentials.findByUserId(userId);
55
+ if (!tenant || tenant.name !== tenantName || tenant.status !== TenantStatus.ACTIVE || tenant.parentTenantId || user.status !== UserStatus.ACTIVE || (user.emailKey ?? "") !== email || (user.usernameKey ?? "") !== username || !role2?.isSystem || role2.tenantId || !membership || membership.status !== MembershipStatus.ACTIVE || membership.roleId !== role2.id || !credential || credential.mustChange || !await verifySecretHash(input.password.normalize("NFKC"), passwordPolicy.pepper ?? "", credential.passwordHash)) throw new OperatorProvisioningError();
56
+ await requireEffectivePermissions();
57
+ return {
58
+ status: "unchanged",
59
+ tenantId,
60
+ userId
61
+ };
62
+ }
63
+ if (tenant && (tenant.name !== tenantName || tenant.status !== TenantStatus.ACTIVE || tenant.parentTenantId || (await memberships.list({
64
+ where: { tenantId },
65
+ limit: 1
66
+ })).length > 0)) throw new OperatorProvisioningError();
67
+ let role = await roles.findBySlug("owner");
68
+ if (!role) {
69
+ if ((await roles.list({ limit: 1 })).length > 0) throw new OperatorProvisioningError();
70
+ await roles.seedSystemRoles({ seedPermissions: true });
71
+ role = await roles.findBySlug("owner");
72
+ }
73
+ if (!role?.id || !role.isSystem || role.tenantId) throw new OperatorProvisioningError();
74
+ if (!tenant) await tenants.create({
75
+ id: tenantId,
76
+ slug: `operator-${tenantId}`,
77
+ name: tenantName,
78
+ _insertOnly: true
79
+ });
80
+ await users.create({
81
+ id: userId,
82
+ slug: `operator-${userId}`,
83
+ email,
84
+ username: username || null,
85
+ _insertOnly: true
86
+ });
87
+ await memberships.create({
88
+ userId,
89
+ tenantId,
90
+ roleId: role.id,
91
+ _insertOnly: true
92
+ });
93
+ await requireEffectivePermissions();
94
+ if (!await credentials.insertIfAbsent(userId, {
95
+ passwordHash,
96
+ mustChange: false,
97
+ rotatedAt: /* @__PURE__ */ new Date(),
98
+ rotatedBy: "operator"
99
+ })) throw new OperatorProvisioningError();
100
+ return {
101
+ status: "created",
102
+ tenantId,
103
+ userId
104
+ };
105
+ }));
106
+ } catch {
107
+ throw new OperatorProvisioningError();
108
+ }
109
+ }
110
+ //#endregion
111
+ export { provisionPasswordOwner };
@@ -1,10 +1,10 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { m as withSystemContext } from "./dist-CJsW8uvQ.js";
3
- import { n as __exportAll$1, t as NostrIdentity, u as verifyAuthEvent } from "./NostrIdentity-AC8fAdxe-DKxKyu_a.js";
4
- import { t as ApiKey } from "./ApiKey-CVmlf3V6-BAeHuH48.js";
5
- import { t as OidcIdentity } from "./OidcIdentity-BUblgQLs-C75_f06o.js";
6
- import { c as coordinateOidcProvisioning, l as isOidcProvisioningRaceConflict, u as normalizeIdentityEmail } from "./ProfileCollection-C4INKh7Y-CU227vYB.js";
7
- import { a as insertOidcProvisioningIdentity, i as createOidcProvisioningPerson } from "./oidcProvisioningPrimitives-DNP9EZlU-PfUi61zh.js";
2
+ import { m as withSystemContext } from "./dist-D2z9PH4N.js";
3
+ import { a as verifyAuthEvent, n as __exportAll$1, t as NostrIdentity } from "./NostrIdentity-AC8fAdxe-Crl0np5c.js";
4
+ import { t as ApiKey } from "./ApiKey-CVmlf3V6-CpkKlftW.js";
5
+ import { t as OidcIdentity } from "./OidcIdentity-BUblgQLs-DGHZ4M7i.js";
6
+ import { a as coordinateOidcProvisioning, o as isOidcProvisioningRaceConflict, s as normalizeIdentityEmail } from "./ProfileCollection-C4INKh7Y-Df7XNoF9.js";
7
+ import { n as insertOidcProvisioningIdentity, t as createOidcProvisioningPerson } from "./oidcProvisioningPrimitives-DNP9EZlU-CCunrdnL.js";
8
8
  import { resolveDatabase } from "@happyvertical/smrt-core";
9
9
  //#region ../profiles/dist/chunks/resolveIdentity-CkyqvctR.js
10
10
  var resolveIdentity_CkyqvctR_exports = /* @__PURE__ */ __exportAll({
@@ -72,13 +72,13 @@ async function resolveIdentity(context) {
72
72
  };
73
73
  }
74
74
  async function findProfileByExternalId(provider, externalId, options) {
75
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-CiymEMsR.js").then((n) => n.r).then((n) => n.r);
75
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-B-hGW2Wl.js").then((n) => n.r).then((n) => n.r);
76
76
  const identities = await (await OidcIdentityCollection.create(options)).findByProvider(provider);
77
77
  for (const identity of identities) if (identity.subject === externalId || identity.email?.includes(externalId)) {
78
78
  const profile = await identity.getProfile();
79
79
  if (profile) return profile;
80
80
  }
81
- const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-CU227vYB.js").then((n) => n.o).then((n) => n.r);
81
+ const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-Df7XNoF9.js").then((n) => n.r).then((n) => n.r);
82
82
  const profiles = await (await ProfileCollection.create(options)).list({
83
83
  where: { email: `${externalId}@users.noreply.github.com` },
84
84
  limit: 1
@@ -99,7 +99,7 @@ async function reuseExistingOidcIdentityForProfile(profileId, claims, provider,
99
99
  createConcurrencyError: (cause) => new Error("Concurrent exact OIDC identity reuse did not converge.", cause === void 0 ? void 0 : { cause }),
100
100
  rebindRootResult: rebindOidcProfileResult,
101
101
  provision: (tx) => withSystemContext(async () => {
102
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-CiymEMsR.js").then((n) => n.r).then((n) => n.r);
102
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-B-hGW2Wl.js").then((n) => n.r).then((n) => n.r);
103
103
  const identity = await (await OidcIdentityCollection.create({ db: tx })).findBySubject(normalizedClaims.iss, normalizedClaims.sub);
104
104
  if (!identity) throw new Error("OidcIdentity.findOrCreate() no longer creates authentication links; use UserCollection.getOrCreateFromOidc() or createProfileFromOidc().");
105
105
  if (identity.profileId !== profileId) throw new Error(`OIDC identity ${normalizedClaims.iss} subject ${normalizedClaims.sub} belongs to a different Profile.`);
@@ -133,7 +133,7 @@ async function coordinateProfileOidcProvisioning(claims, provider, options) {
133
133
  });
134
134
  }
135
135
  async function provisionOidcProfile(claims, provider, options) {
136
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-CiymEMsR.js").then((n) => n.r).then((n) => n.r);
136
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-B-hGW2Wl.js").then((n) => n.r).then((n) => n.r);
137
137
  const existingIdentity = await (await OidcIdentityCollection.create(options)).findBySubject(claims.iss, claims.sub);
138
138
  if (existingIdentity) {
139
139
  const profile2 = await existingIdentity.getProfile();
@@ -148,7 +148,7 @@ async function provisionOidcProfile(claims, provider, options) {
148
148
  created: false
149
149
  };
150
150
  }
151
- const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-CU227vYB.js").then((n) => n.o).then((n) => n.r);
151
+ const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-Df7XNoF9.js").then((n) => n.r).then((n) => n.r);
152
152
  const profileCollection = await ProfileCollection.create(options);
153
153
  if (claims.email) {
154
154
  if (await profileCollection.findUniqueGlobalPersonByEmail(claims.email)) {
@@ -175,8 +175,8 @@ async function provisionOidcProfile(claims, provider, options) {
175
175
  };
176
176
  }
177
177
  async function rebindOidcProfileResult(result, rootDb) {
178
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-CiymEMsR.js").then((n) => n.r).then((n) => n.r);
179
- const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-CU227vYB.js").then((n) => n.o).then((n) => n.r);
178
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-B-hGW2Wl.js").then((n) => n.r).then((n) => n.r);
179
+ const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-Df7XNoF9.js").then((n) => n.r).then((n) => n.r);
180
180
  const profileId = requireOidcProfileId(result.profile.id);
181
181
  const identityId = requireOidcProfileId(result.oidcIdentity.id);
182
182
  const [profile, oidcIdentity] = await withSystemContext(async () => {
@@ -225,11 +225,11 @@ async function createProfileFromNostr(email, nostrData, options) {
225
225
  created: false
226
226
  };
227
227
  }
228
- const { Person } = await import("./oidcProvisioningPrimitives-DNP9EZlU-PfUi61zh.js").then((n) => n.o).then((n) => n.o);
229
- const { ProfileTypeCollection } = await import("./ProfileTypeCollection-B7kwi1mU-D0bZODrI.js").then((n) => n.n).then((n) => n.n);
228
+ const { Person } = await import("./oidcProvisioningPrimitives-DNP9EZlU-CCunrdnL.js").then((n) => n.r).then((n) => n.o);
229
+ const { ProfileTypeCollection } = await import("./ProfileTypeCollection-B7kwi1mU-BqrZPPoy.js").then((n) => n.n).then((n) => n.n);
230
230
  let personType = await (await ProfileTypeCollection.create(options)).getBySlug("person");
231
231
  if (!personType) {
232
- const { ProfileType } = await import("./ProfileCollection-C4INKh7Y-CU227vYB.js").then((n) => n.o).then((n) => n.h);
232
+ const { ProfileType } = await import("./ProfileCollection-C4INKh7Y-Df7XNoF9.js").then((n) => n.r).then((n) => n.h);
233
233
  personType = new ProfileType({
234
234
  ...options,
235
235
  slug: "person",
@@ -266,4 +266,4 @@ async function createProfileFromNostr(email, nostrData, options) {
266
266
  };
267
267
  }
268
268
  //#endregion
269
- export { resolveIdentity_CkyqvctR_exports as i, createProfileFromOidc as n, resolveIdentity as r, createProfileFromNostr as t };
269
+ export { resolveIdentity_CkyqvctR_exports as t };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-cli",
3
- "version": "0.57.13",
3
+ "version": "0.57.15",
4
4
  "description": "Developer CLI for SMRT framework - introspection, testing, and project management",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -33,15 +33,15 @@
33
33
  "@happyvertical/ai": "^0.105.5",
34
34
  "@happyvertical/files": "^0.105.5",
35
35
  "@happyvertical/logger": "^0.105.5",
36
- "@happyvertical/smrt-agents": "0.57.13",
37
- "@happyvertical/smrt-app-runtime": "0.57.13",
38
- "@happyvertical/smrt-config": "0.57.13",
39
- "@happyvertical/smrt-core": "0.57.13",
40
- "@happyvertical/smrt-dev-mcp": "0.57.13",
41
- "@happyvertical/smrt-ledgers": "0.57.13",
42
- "@happyvertical/smrt-playground": "0.57.13",
43
- "@happyvertical/smrt-types": "0.57.13",
44
- "@happyvertical/smrt-users": "0.57.13",
36
+ "@happyvertical/smrt-agents": "0.57.15",
37
+ "@happyvertical/smrt-app-runtime": "0.57.15",
38
+ "@happyvertical/smrt-config": "0.57.15",
39
+ "@happyvertical/smrt-core": "0.57.15",
40
+ "@happyvertical/smrt-dev-mcp": "0.57.15",
41
+ "@happyvertical/smrt-ledgers": "0.57.15",
42
+ "@happyvertical/smrt-playground": "0.57.15",
43
+ "@happyvertical/smrt-types": "0.57.15",
44
+ "@happyvertical/smrt-users": "0.57.15",
45
45
  "@happyvertical/sql": "^0.105.5",
46
46
  "@happyvertical/utils": "^0.105.5",
47
47
  "@modelcontextprotocol/server": "2.0.0",
@@ -1,21 +0,0 @@
1
- import "./NostrIdentity-AC8fAdxe-DKxKyu_a.js";
2
- import "./ApiKey-CVmlf3V6-BAeHuH48.js";
3
- import "./ApiKeyCollection-CiiDNFdD-CMGF3_ul.js";
4
- import "./AuditLogCollection-WDHL-_AF-C8L1gl7q.js";
5
- import "./NostrIdentityCollection-CctlECpX-fkAPnK02.js";
6
- import "./OidcIdentity-BUblgQLs-C75_f06o.js";
7
- import "./OidcIdentityCollection-ClOyaHeF-CiymEMsR.js";
8
- import "./ProfileAssetCollection-CRMcjLJ--_OAFKSvo.js";
9
- import { a as ProfileCollection } from "./ProfileCollection-C4INKh7Y-CU227vYB.js";
10
- import "./ProfileLinkCollection-DFfZRsgv-De18fH8M.js";
11
- import "./ProfileMetadataCollection-BIYKy4Y3-B4hKF9kz.js";
12
- import "./ProfileMetafieldCollection-Buz7gzag-CXMtAfAB.js";
13
- import "./ProfileRelationshipCollection-C4g_QLI4-CLezW4sK.js";
14
- import "./ProfileRelationshipTermCollection-C9J7mC7P-ChIFqjCg.js";
15
- import "./ProfileRelationshipType-U7IwF6Wf-DNavf24e.js";
16
- import "./ProfileRelationshipTypeCollection-_n22WqTb-DiZUWvev.js";
17
- import "./ProfileTypeCollection-B7kwi1mU-D0bZODrI.js";
18
- import "./oidcProvisioningPrimitives-DNP9EZlU-PfUi61zh.js";
19
- import "./resolveIdentity-CkyqvctR-CxRDO4Kf.js";
20
- import "./dist-BjVKGAtb.js";
21
- export { ProfileCollection };