@happyvertical/smrt-cli 0.57.46 → 0.57.48

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 (34) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +10 -0
  3. package/dist/{AuditLogCollection-BBbvr8Qc-hZlDEnLV.js → AuditLogCollection-BBbvr8Qc-Bje1gpWQ.js} +1 -1
  4. package/dist/{OidcIdentity-COeMidoC-DeVfwbFW.js → OidcIdentity-COeMidoC-ByGEDP_8.js} +2 -2
  5. package/dist/{OidcIdentityCollection-D4DIZv0K-BherzVHN.js → OidcIdentityCollection-D4DIZv0K-B7ZXm1VU.js} +1 -1
  6. package/dist/{PasswordCredentialService-DHJNKEeJ-Dg7ZnSZr.js → PasswordCredentialService-DHJNKEeJ-BeFEkTUA.js} +18 -15
  7. package/dist/{ProfileAssetCollection-D5-tG9Mm-XvSUU-MV.js → ProfileAssetCollection-D5-tG9Mm-DOkiY4P5.js} +3 -3
  8. package/dist/{ProfileCollection-CmRaiE9U-6Kr56Adx.js → ProfileCollection-CmRaiE9U-BowxcFel.js} +17 -17
  9. package/dist/{ProfileLinkCollection-pvPTsysg-C_rm5rSf.js → ProfileLinkCollection-pvPTsysg-DV56gZC1.js} +2 -2
  10. package/dist/{ProfileMetadataCollection-CAgJyjze-BhfcJRSQ.js → ProfileMetadataCollection-CAgJyjze-Chbyb_NU.js} +1 -1
  11. package/dist/{ProfileMetafieldCollection-19ae6Lpf-CX_uL3y7.js → ProfileMetafieldCollection-19ae6Lpf-BxrbDI8Y.js} +1 -1
  12. package/dist/{ProfileRelationshipCollection-BFSlTQ7J-B3AfDRf7.js → ProfileRelationshipCollection-BFSlTQ7J-BLVeqEci.js} +1 -1
  13. package/dist/{ProfileTypeCollection-BRLK8cHS-Juakr0pP.js → ProfileTypeCollection-BRLK8cHS-Bqadll29.js} +2 -2
  14. package/dist/app/portability.d.ts.map +1 -1
  15. package/dist/app.js +2 -2
  16. package/dist/{cli-CBuBU_5T.js → cli-CtRx1_yP.js} +1 -1
  17. package/dist/commands/db-migrate-uuid.d.ts.map +1 -1
  18. package/dist/commands/db-parity.d.ts +2 -1
  19. package/dist/commands/db-parity.d.ts.map +1 -1
  20. package/dist/commands/utilities.d.ts.map +1 -1
  21. package/dist/{commands-DXUlyEmv.js → commands-Da7vFlrl.js} +76 -15
  22. package/dist/discovery/manifest-discovery.d.ts.map +1 -1
  23. package/dist/{dist-bsd3d3Lx.js → dist-CdGUFvug.js} +5 -5
  24. package/dist/{dist-Z7CSpCKi.js → dist-DNE4amTL.js} +2 -2
  25. package/dist/{dist-BQDn8me5.js → dist-MJilFPxN.js} +3 -3
  26. package/dist/dist-apCbdM9B.js +1854 -0
  27. package/dist/index.js +12 -12
  28. package/dist/{oidcProvisioningPrimitives-KpIiLmG4-CJMI-kBV.js → oidcProvisioningPrimitives-KpIiLmG4-CRSoqrZO.js} +3 -3
  29. package/dist/{operator-2Sy_-AE5.js → operator-D6v5IFPn.js} +2 -2
  30. package/dist/{portability-V05XvEu-.js → portability-CbMgEnD1.js} +2 -1
  31. package/dist/{resolveIdentity-j2WFuKDT-Ryo1wXyn.js → resolveIdentity-j2WFuKDT-DNR7PaOv.js} +14 -14
  32. package/dist/runtime-check.d.ts.map +1 -1
  33. package/package.json +15 -15
  34. package/dist/dist-Dv5VoO6m.js +0 -1854
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { i as tenantId, r as TenantScoped } from "./dist-Z7CSpCKi.js";
2
+ import { i as tenantId, r as TenantScoped } from "./dist-DNE4amTL.js";
3
3
  import { n as __exportAll$1 } from "./NostrIdentity-RJaATTCt-BbRHWyee.js";
4
- import { a as getOwnedAssetsFromCollection, o as removeOwnedAssetFromCollection, t as addOwnedAssetFromCollection } from "./dist-BQDn8me5.js";
4
+ import { a as getOwnedAssetsFromCollection, o as removeOwnedAssetFromCollection, t as addOwnedAssetFromCollection } from "./dist-MJilFPxN.js";
5
5
  import { SmrtJunction, SmrtObject, crossPackageRef, field, foreignKey, smrt } from "@happyvertical/smrt-core";
6
6
  //#region ../profiles/dist/chunks/ProfileAssetCollection-D5-tG9Mm.js
7
7
  var ProfileAssetCollection_D5_tG9Mm_exports = /* @__PURE__ */ __exportAll({
@@ -84,7 +84,7 @@ var ProfileAssetCollection = class extends SmrtJunction {
84
84
  profileCollectionPromise = null;
85
85
  async getProfileCollection() {
86
86
  if (!this.profileCollectionPromise) {
87
- const { ProfileCollection } = await import("./ProfileCollection-CmRaiE9U-6Kr56Adx.js").then((n) => n.i).then((n) => n.r);
87
+ const { ProfileCollection } = await import("./ProfileCollection-CmRaiE9U-BowxcFel.js").then((n) => n.i).then((n) => n.r);
88
88
  this.profileCollectionPromise = ProfileCollection.create({ db: this.db });
89
89
  }
90
90
  return this.profileCollectionPromise;
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { d as getTenantId, i as tenantId, m as withSystemContext, n as resolvePrompt, o as queryGlobal, r as TenantScoped, s as queryWithGlobals, t as definePrompt } from "./dist-Z7CSpCKi.js";
2
+ import { d as getTenantId, i as tenantId, m as withSystemContext, n as resolvePrompt, o as queryGlobal, r as TenantScoped, s as queryWithGlobals, t as definePrompt } from "./dist-DNE4amTL.js";
3
3
  import { n as __exportAll$1 } from "./NostrIdentity-RJaATTCt-BbRHWyee.js";
4
- import { a as getOwnedAssetsFromCollection, i as assertValidOwnedAssetSortOrder, n as assertAssetLinkable, o as removeOwnedAssetFromCollection, r as assertValidOwnedAssetRelationship, s as resolveOwnedAssetsById, t as addOwnedAssetFromCollection } from "./dist-BQDn8me5.js";
4
+ import { a as getOwnedAssetsFromCollection, i as assertValidOwnedAssetSortOrder, n as assertAssetLinkable, o as removeOwnedAssetFromCollection, r as assertValidOwnedAssetRelationship, s as resolveOwnedAssetsById, t as addOwnedAssetFromCollection } from "./dist-MJilFPxN.js";
5
5
  import { RuntimeError, SmrtCollection, SmrtObject, ValidationError, field, foreignKey, isAbortedTransactionError, oneToMany, smrt } from "@happyvertical/smrt-core";
6
6
  import { BackfillTableUnavailableError, BackfillTracker } from "@happyvertical/smrt-core/migrations";
7
7
  //#region ../profiles/dist/chunks/ProfileCollection-CmRaiE9U.js
@@ -435,7 +435,7 @@ var Profile = class extends SmrtObject {
435
435
  async getTypeSlug() {
436
436
  const tenantId2 = this.tenantId || getTenantId();
437
437
  if (this.typeId && tenantId2) {
438
- const { ProfileTypeCollection } = await import("./ProfileTypeCollection-BRLK8cHS-Juakr0pP.js").then((n) => n.n).then((n) => n.n);
438
+ const { ProfileTypeCollection } = await import("./ProfileTypeCollection-BRLK8cHS-Bqadll29.js").then((n) => n.n).then((n) => n.n);
439
439
  return (await (await ProfileTypeCollection.create(this.options)).getAvailableById(this.typeId, tenantId2))?.slug ?? "";
440
440
  }
441
441
  return (await this.loadRelated("typeId"))?.slug || "";
@@ -458,8 +458,8 @@ var Profile = class extends SmrtObject {
458
458
  * @param value - The value to set
459
459
  */
460
460
  async addMetadata(metafieldSlug, value) {
461
- const { ProfileMetafieldCollection } = await import("./ProfileMetafieldCollection-19ae6Lpf-CX_uL3y7.js").then((n) => n.t).then((n) => n.n);
462
- const { ProfileMetadataCollection } = await import("./ProfileMetadataCollection-CAgJyjze-BhfcJRSQ.js").then((n) => n.t).then((n) => n.n);
461
+ const { ProfileMetafieldCollection } = await import("./ProfileMetafieldCollection-19ae6Lpf-BxrbDI8Y.js").then((n) => n.t).then((n) => n.n);
462
+ const { ProfileMetadataCollection } = await import("./ProfileMetadataCollection-CAgJyjze-Chbyb_NU.js").then((n) => n.t).then((n) => n.n);
463
463
  const metafield = await this.resolveMetafield(await ProfileMetafieldCollection.create(this.options), metafieldSlug);
464
464
  if (!metafield) throw new Error(`Metafield '${metafieldSlug}' not found`);
465
465
  await metafield.validateValue(value);
@@ -492,7 +492,7 @@ var Profile = class extends SmrtObject {
492
492
  * @returns Object with metafield slugs as keys
493
493
  */
494
494
  async getMetadata() {
495
- const { ProfileMetadataCollection } = await import("./ProfileMetadataCollection-CAgJyjze-BhfcJRSQ.js").then((n) => n.t).then((n) => n.n);
495
+ const { ProfileMetadataCollection } = await import("./ProfileMetadataCollection-CAgJyjze-Chbyb_NU.js").then((n) => n.t).then((n) => n.n);
496
496
  return await (await ProfileMetadataCollection.create(this.options)).getMetadataObject(this.id);
497
497
  }
498
498
  /**
@@ -509,8 +509,8 @@ var Profile = class extends SmrtObject {
509
509
  * @param metafieldSlug - The slug of the metafield to remove
510
510
  */
511
511
  async removeMetadata(metafieldSlug) {
512
- const { ProfileMetafieldCollection } = await import("./ProfileMetafieldCollection-19ae6Lpf-CX_uL3y7.js").then((n) => n.t).then((n) => n.n);
513
- const { ProfileMetadataCollection } = await import("./ProfileMetadataCollection-CAgJyjze-BhfcJRSQ.js").then((n) => n.t).then((n) => n.n);
512
+ const { ProfileMetafieldCollection } = await import("./ProfileMetafieldCollection-19ae6Lpf-BxrbDI8Y.js").then((n) => n.t).then((n) => n.n);
513
+ const { ProfileMetadataCollection } = await import("./ProfileMetadataCollection-CAgJyjze-Chbyb_NU.js").then((n) => n.t).then((n) => n.n);
514
514
  const metafield = await this.resolveMetafield(await ProfileMetafieldCollection.create(this.options), metafieldSlug);
515
515
  if (!metafield) throw new Error(`Metafield '${metafieldSlug}' not found`);
516
516
  const existing = await (await ProfileMetadataCollection.create(this.options)).list({
@@ -535,7 +535,7 @@ var Profile = class extends SmrtObject {
535
535
  return candidates.find((candidate) => ownerTenantId && candidate.tenantId === ownerTenantId) ?? candidates.find((candidate) => !candidate.tenantId) ?? null;
536
536
  }
537
537
  async getProfileLinkCollection() {
538
- const { ProfileLinkCollection } = await import("./ProfileLinkCollection-pvPTsysg-C_rm5rSf.js").then((n) => n.t).then((n) => n.r);
538
+ const { ProfileLinkCollection } = await import("./ProfileLinkCollection-pvPTsysg-DV56gZC1.js").then((n) => n.t).then((n) => n.r);
539
539
  return ProfileLinkCollection.create({ db: this.db });
540
540
  }
541
541
  /** This profile's web links in display order. */
@@ -552,7 +552,7 @@ var Profile = class extends SmrtObject {
552
552
  return (await this.getProfileLinkCollection()).replaceForProfile(this.id, links);
553
553
  }
554
554
  async getProfileAssetCollection() {
555
- const { ProfileAssetCollection } = await import("./ProfileAssetCollection-D5-tG9Mm-XvSUU-MV.js").then((n) => n.t).then((n) => n.n);
555
+ const { ProfileAssetCollection } = await import("./ProfileAssetCollection-D5-tG9Mm-DOkiY4P5.js").then((n) => n.t).then((n) => n.n);
556
556
  return ProfileAssetCollection.create({ db: this.db });
557
557
  }
558
558
  async getAssets(relationship) {
@@ -584,7 +584,7 @@ var Profile = class extends SmrtObject {
584
584
  */
585
585
  async addRelationship(toProfile, relationshipSlug, contextProfile) {
586
586
  const { ProfileRelationshipTypeCollection } = await import("./ProfileRelationshipTypeCollection-BRBpX00F-D78l9V1y.js").then((n) => n.t).then((n) => n.n);
587
- const { ProfileRelationshipCollection } = await import("./ProfileRelationshipCollection-BFSlTQ7J-B3AfDRf7.js").then((n) => n.t).then((n) => n.n);
587
+ const { ProfileRelationshipCollection } = await import("./ProfileRelationshipCollection-BFSlTQ7J-BLVeqEci.js").then((n) => n.t).then((n) => n.n);
588
588
  const { ProfileRelationshipType } = await import("./ProfileRelationshipType-Cevy-vaF-G82Gg40q.js").then((n) => n.n).then((n) => n.n);
589
589
  const relationshipType = await (await ProfileRelationshipTypeCollection.create(this.options)).getBySlug(relationshipSlug);
590
590
  if (!relationshipType) throw new Error(`Relationship type '${relationshipSlug}' not found`);
@@ -609,7 +609,7 @@ var Profile = class extends SmrtObject {
609
609
  * @returns Array of ProfileRelationship instances
610
610
  */
611
611
  async getRelationships(options) {
612
- const { ProfileRelationshipCollection } = await import("./ProfileRelationshipCollection-BFSlTQ7J-B3AfDRf7.js").then((n) => n.t).then((n) => n.n);
612
+ const { ProfileRelationshipCollection } = await import("./ProfileRelationshipCollection-BFSlTQ7J-BLVeqEci.js").then((n) => n.t).then((n) => n.n);
613
613
  const { ProfileRelationshipTypeCollection } = await import("./ProfileRelationshipTypeCollection-BRBpX00F-D78l9V1y.js").then((n) => n.t).then((n) => n.n);
614
614
  const relationshipCollection = await ProfileRelationshipCollection.create(this.options);
615
615
  const direction = options?.direction || "all";
@@ -654,7 +654,7 @@ var Profile = class extends SmrtObject {
654
654
  */
655
655
  async removeRelationship(toProfile, relationshipSlug) {
656
656
  const { ProfileRelationshipTypeCollection } = await import("./ProfileRelationshipTypeCollection-BRBpX00F-D78l9V1y.js").then((n) => n.t).then((n) => n.n);
657
- const { ProfileRelationshipCollection } = await import("./ProfileRelationshipCollection-BFSlTQ7J-B3AfDRf7.js").then((n) => n.t).then((n) => n.n);
657
+ const { ProfileRelationshipCollection } = await import("./ProfileRelationshipCollection-BFSlTQ7J-BLVeqEci.js").then((n) => n.t).then((n) => n.n);
658
658
  const relationshipType = await (await ProfileRelationshipTypeCollection.create(this.options)).getBySlug(relationshipSlug);
659
659
  if (!relationshipType) throw new Error(`Relationship type '${relationshipSlug}' not found`);
660
660
  const relationshipCollection = await ProfileRelationshipCollection.create(this.options);
@@ -778,7 +778,7 @@ var Profile = class extends SmrtObject {
778
778
  * @returns Array of OIDC identity records
779
779
  */
780
780
  async getOidcIdentities() {
781
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-D4DIZv0K-BherzVHN.js").then((n) => n.r).then((n) => n.r);
781
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-D4DIZv0K-B7ZXm1VU.js").then((n) => n.r).then((n) => n.r);
782
782
  return await (await OidcIdentityCollection.create(this.options)).findByProfile(this.id);
783
783
  }
784
784
  /**
@@ -791,7 +791,7 @@ var Profile = class extends SmrtObject {
791
791
  * type, but refuses to create or rebind authority.
792
792
  */
793
793
  async linkOidcIdentity(oidcData) {
794
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-D4DIZv0K-BherzVHN.js").then((n) => n.r).then((n) => n.r);
794
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-D4DIZv0K-B7ZXm1VU.js").then((n) => n.r).then((n) => n.r);
795
795
  return await (await OidcIdentityCollection.create(this.options)).linkToProfile(this, oidcData);
796
796
  }
797
797
  /**
@@ -820,7 +820,7 @@ var Profile = class extends SmrtObject {
820
820
  * @returns Array of audit log entries
821
821
  */
822
822
  async getAuditLogs(limit = 50) {
823
- const { AuditLogCollection } = await import("./AuditLogCollection-BBbvr8Qc-hZlDEnLV.js").then((n) => n.t).then((n) => n.n);
823
+ const { AuditLogCollection } = await import("./AuditLogCollection-BBbvr8Qc-Bje1gpWQ.js").then((n) => n.t).then((n) => n.n);
824
824
  return await (await AuditLogCollection.create(this.options)).getRecentActivity(this.id, limit);
825
825
  }
826
826
  /**
@@ -830,7 +830,7 @@ var Profile = class extends SmrtObject {
830
830
  * @returns The created audit log entry
831
831
  */
832
832
  async recordAction(options) {
833
- const { AuditLogCollection } = await import("./AuditLogCollection-BBbvr8Qc-hZlDEnLV.js").then((n) => n.t).then((n) => n.n);
833
+ const { AuditLogCollection } = await import("./AuditLogCollection-BBbvr8Qc-Bje1gpWQ.js").then((n) => n.t).then((n) => n.n);
834
834
  return await (await AuditLogCollection.create(this.options)).record({
835
835
  profile: this,
836
836
  ...options
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { i as tenantId, r as TenantScoped } from "./dist-Z7CSpCKi.js";
2
+ import { i as tenantId, r as TenantScoped } from "./dist-DNE4amTL.js";
3
3
  import { n as __exportAll$1 } from "./NostrIdentity-RJaATTCt-BbRHWyee.js";
4
4
  import { SmrtCollection, SmrtObject, field, foreignKey, isEmbeddedDatabase, smrt, withEmbeddedWriteTransaction } from "@happyvertical/smrt-core";
5
5
  //#region ../profiles/dist/chunks/ProfileLinkCollection-pvPTsysg.js
@@ -203,7 +203,7 @@ var ProfileLinkCollection = class ProfileLinkCollection extends SmrtCollection {
203
203
  /** The profile's tenant; throws when the profile is not visible here. */
204
204
  async requireProfileTenant(profileId) {
205
205
  if (!profileId) throw new Error("A profile link needs a profile");
206
- const { ProfileCollection } = await import("./ProfileCollection-CmRaiE9U-6Kr56Adx.js").then((n) => n.i).then((n) => n.r);
206
+ const { ProfileCollection } = await import("./ProfileCollection-CmRaiE9U-BowxcFel.js").then((n) => n.i).then((n) => n.r);
207
207
  const profile = await (await ProfileCollection.create({ db: this.db })).get({ id: profileId });
208
208
  if (!profile) throw new Error(`Profile '${profileId}' not found`);
209
209
  return profile.tenantId ?? null;
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { i as tenantId, r as TenantScoped } from "./dist-Z7CSpCKi.js";
2
+ import { i as tenantId, r as TenantScoped } from "./dist-DNE4amTL.js";
3
3
  import { n as __exportAll$1 } from "./NostrIdentity-RJaATTCt-BbRHWyee.js";
4
4
  import { SmrtCollection, SmrtObject, field, foreignKey, smrt } from "@happyvertical/smrt-core";
5
5
  //#region ../profiles/dist/chunks/ProfileMetadataCollection-CAgJyjze.js
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { i as tenantId, r as TenantScoped } from "./dist-Z7CSpCKi.js";
2
+ import { i as tenantId, r as TenantScoped } from "./dist-DNE4amTL.js";
3
3
  import { n as __exportAll$1 } from "./NostrIdentity-RJaATTCt-BbRHWyee.js";
4
4
  import { SmrtCollection, SmrtObject, field, smrt } from "@happyvertical/smrt-core";
5
5
  //#region ../profiles/dist/chunks/ProfileMetafieldCollection-19ae6Lpf.js
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { i as tenantId, r as TenantScoped } from "./dist-Z7CSpCKi.js";
2
+ import { i as tenantId, r as TenantScoped } from "./dist-DNE4amTL.js";
3
3
  import { n as __exportAll$1 } from "./NostrIdentity-RJaATTCt-BbRHWyee.js";
4
4
  import { SmrtCollection, SmrtObject, foreignKey, oneToMany, smrt } from "@happyvertical/smrt-core";
5
5
  //#region ../profiles/dist/chunks/ProfileRelationshipCollection-BFSlTQ7J.js
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { l as withTenantGlobalRead, p as isSystemContext } from "./dist-Z7CSpCKi.js";
2
+ import { l as withTenantGlobalRead, p as isSystemContext } from "./dist-DNE4amTL.js";
3
3
  import { n as __exportAll$1 } from "./NostrIdentity-RJaATTCt-BbRHWyee.js";
4
- import { a as ProfileType } from "./ProfileCollection-CmRaiE9U-6Kr56Adx.js";
4
+ import { a as ProfileType } from "./ProfileCollection-CmRaiE9U-BowxcFel.js";
5
5
  import { SmrtCollection } from "@happyvertical/smrt-core";
6
6
  //#region ../profiles/dist/chunks/ProfileTypeCollection-BRLK8cHS.js
7
7
  var ProfileTypeCollection_BRLK8cHS_exports = /* @__PURE__ */ __exportAll({
@@ -1 +1 @@
1
- {"version":3,"file":"portability.d.ts","sourceRoot":"","sources":["../../src/app/portability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"portability.d.ts","sourceRoot":"","sources":["../../src/app/portability.ts"],"names":[],"mappings":"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"}
package/dist/app.js CHANGED
@@ -1,4 +1,4 @@
1
- import { A as assertExternalArtifactPath, C as prepareMigration, D as cliExecutablePath, E as validateMcpAppsIfPresent, F as AppCommandError, I as ApplicationStartError, M as resolveApplicationId, N as resolveApplicationStateRoot, O as runtimeEnvironment, P as runtimeConfigurationFingerprint, R as redactSecrets, S as launchVite, T as runWorker, _ as sendTerminationSignal, a as renderAppHelp, b as ViteLauncherError, c as parseTokenLifetime, d as START_OUTPUT_TAIL_BYTES, f as runApplicationOperation, g as readOwnedProcess, h as matchesApplicationProcess, i as errorEnvelope, j as prepareApplicationStateRoot, k as webLauncherPath, l as runTokenOperation, m as checkOwnedProcess, n as APP_RECOVERY, o as runAppCommand, p as WEB_LAUNCHER_NAME, s as TOKEN_USAGE, t as APP_COMMANDS, u as APP_OPERATIONS, v as verifyOwnedProcess, w as resolveViteEntry, x as devServerArguments, y as writeProcessRecord } from "./cli-CBuBU_5T.js";
2
- import { C as publishFilesystemAssets, D as stageFilesystemAssets, E as rollbackFilesystemAssets, O as verifyFilesystemAssets, S as markFilesystemAssetsCommitted, T as recoverFilesystemAssets, _ as bundleContentDigest, a as manifestTables, b as finishFilesystemAssets, c as serializeExportBundle, d as AssetPortabilityError, f as MAX_ASSET_BYTES, g as assertAssetRoot, h as MAX_TOTAL_ASSET_BYTES, i as importedRowsMatchBundle, k as verifyPublishedFilesystemAssets, l as validateImportBundle, m as MAX_BUNDLE_BYTES, n as exportApplication, o as planImportTables, p as MAX_ASSET_COUNT, r as importApplication, t as executeImportPlan, u as ASSET_MANIFEST_SCHEMA_VERSION, v as collectFilesystemAssets, w as readSensitiveBundle, x as hasCommittedImportJournal, y as digestBytes } from "./portability-V05XvEu-.js";
1
+ import { A as assertExternalArtifactPath, C as prepareMigration, D as cliExecutablePath, E as validateMcpAppsIfPresent, F as AppCommandError, I as ApplicationStartError, M as resolveApplicationId, N as resolveApplicationStateRoot, O as runtimeEnvironment, P as runtimeConfigurationFingerprint, R as redactSecrets, S as launchVite, T as runWorker, _ as sendTerminationSignal, a as renderAppHelp, b as ViteLauncherError, c as parseTokenLifetime, d as START_OUTPUT_TAIL_BYTES, f as runApplicationOperation, g as readOwnedProcess, h as matchesApplicationProcess, i as errorEnvelope, j as prepareApplicationStateRoot, k as webLauncherPath, l as runTokenOperation, m as checkOwnedProcess, n as APP_RECOVERY, o as runAppCommand, p as WEB_LAUNCHER_NAME, s as TOKEN_USAGE, t as APP_COMMANDS, u as APP_OPERATIONS, v as verifyOwnedProcess, w as resolveViteEntry, x as devServerArguments, y as writeProcessRecord } from "./cli-CtRx1_yP.js";
2
+ import { C as publishFilesystemAssets, D as stageFilesystemAssets, E as rollbackFilesystemAssets, O as verifyFilesystemAssets, S as markFilesystemAssetsCommitted, T as recoverFilesystemAssets, _ as bundleContentDigest, a as manifestTables, b as finishFilesystemAssets, c as serializeExportBundle, d as AssetPortabilityError, f as MAX_ASSET_BYTES, g as assertAssetRoot, h as MAX_TOTAL_ASSET_BYTES, i as importedRowsMatchBundle, k as verifyPublishedFilesystemAssets, l as validateImportBundle, m as MAX_BUNDLE_BYTES, n as exportApplication, o as planImportTables, p as MAX_ASSET_COUNT, r as importApplication, t as executeImportPlan, u as ASSET_MANIFEST_SCHEMA_VERSION, v as collectFilesystemAssets, w as readSensitiveBundle, x as hasCommittedImportJournal, y as digestBytes } from "./portability-CbMgEnD1.js";
3
3
  import { PROVIDER_READINESS_SETTINGS, RECLAIM_MUTEX_FILE, acquireWriterLease, createProviderReadinessProbe, findInstalledPackage, isStaleOperationLock, lockOwnerPid, processExists, readActiveWriterLease, reclaimStaleRecord, resolveReadinessModule, withOperationLock } from "@happyvertical/smrt-app-runtime";
4
4
  export { APP_COMMANDS, APP_OPERATIONS, APP_RECOVERY, ASSET_MANIFEST_SCHEMA_VERSION, AppCommandError, ApplicationStartError, AssetPortabilityError, MAX_ASSET_BYTES, MAX_ASSET_COUNT, MAX_BUNDLE_BYTES, MAX_TOTAL_ASSET_BYTES, PROVIDER_READINESS_SETTINGS, RECLAIM_MUTEX_FILE, START_OUTPUT_TAIL_BYTES, TOKEN_USAGE, ViteLauncherError, WEB_LAUNCHER_NAME, acquireWriterLease, assertAssetRoot, assertExternalArtifactPath, bundleContentDigest, checkOwnedProcess, cliExecutablePath, collectFilesystemAssets, createProviderReadinessProbe, devServerArguments, digestBytes, errorEnvelope, executeImportPlan, exportApplication, findInstalledPackage, finishFilesystemAssets, hasCommittedImportJournal, importApplication, importedRowsMatchBundle, isStaleOperationLock, launchVite, lockOwnerPid, manifestTables, markFilesystemAssetsCommitted, matchesApplicationProcess, parseTokenLifetime, planImportTables, prepareApplicationStateRoot, prepareMigration, processExists, publishFilesystemAssets, readActiveWriterLease, readOwnedProcess, readSensitiveBundle, reclaimStaleRecord, recoverFilesystemAssets, redactSecrets, renderAppHelp, resolveApplicationId, resolveApplicationStateRoot, resolveReadinessModule, resolveViteEntry, rollbackFilesystemAssets, runAppCommand, runApplicationOperation, runTokenOperation, runWorker, runtimeConfigurationFingerprint, runtimeEnvironment, sendTerminationSignal, serializeExportBundle, stageFilesystemAssets, validateImportBundle, validateMcpAppsIfPresent, verifyFilesystemAssets, verifyOwnedProcess, verifyPublishedFilesystemAssets, webLauncherPath, withOperationLock, writeProcessRecord };
@@ -1292,7 +1292,7 @@ async function backup(context, args) {
1292
1292
  async function loadPortabilityAdapter(context) {
1293
1293
  const override = join(context.sourceRoot, "scripts", "smrt-portability.mjs");
1294
1294
  if (existsSync(override)) return await import(pathToFileURL(override).href);
1295
- return import("./portability-V05XvEu-.js").then((n) => n.s);
1295
+ return import("./portability-CbMgEnD1.js").then((n) => n.s);
1296
1296
  }
1297
1297
  async function portability(context, operation, args, operationLock) {
1298
1298
  const adapter = await loadPortabilityAdapter(context);
@@ -1 +1 @@
1
- {"version":3,"file":"db-migrate-uuid.d.ts","sourceRoot":"","sources":["../../src/commands/db-migrate-uuid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAqCtD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,iBAAiB,EAAE,MAAM,CACvB,MAAM,EACN;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAChD,GACA,GAAG,CAAC,MAAM,CAAC,CAWb;AAYD,mEAAmE;AACnE,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B;;;;OAIG;IACH,aAAa,EAAE,KAAK,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC,CAAC;IACH,4EAA4E;IAC5E,eAAe,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/E;AAED,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AA+BD,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,cAAc,EAAE,GACtB,cAAc,CA6EhB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,cAAc,EAAE,EAC7B,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,cAAc,CAgChB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,UAAU,EAAE,CA2Bd;AAED,eAAO,MAAM,oBAAoB,EAAE,UA4JlC,CAAC"}
1
+ {"version":3,"file":"db-migrate-uuid.d.ts","sourceRoot":"","sources":["../../src/commands/db-migrate-uuid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAqCtD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,iBAAiB,EAAE,MAAM,CACvB,MAAM,EACN;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAChD,GACA,GAAG,CAAC,MAAM,CAAC,CAWb;AAYD,mEAAmE;AACnE,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B;;;;OAIG;IACH,aAAa,EAAE,KAAK,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC,CAAC;IACH,4EAA4E;IAC5E,eAAe,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/E;AAED,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AA+BD,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,cAAc,EAAE,GACtB,cAAc,CA6EhB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,cAAc,EAAE,EAC7B,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,cAAc,CAgChB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,UAAU,EAAE,CA2Bd;AAED,eAAO,MAAM,oBAAoB,EAAE,UA4JlC,CAAC"}
@@ -47,7 +47,8 @@ export interface LiveSchemaParityOutcome {
47
47
  export declare function collectRegistryConflictTargets(): Record<string, ConflictTargetInput[]>;
48
48
  /**
49
49
  * Matches core's collection classification, including a registered collection
50
- * subclass whose immediate parent is another collection class. Unknown
50
+ * subclass whose immediate parent is another collection class and the
51
+ * manifest's `collectionOf` classification (#3956). Unknown
51
52
  * registrations stay included so a malformed registry cannot hide a real
52
53
  * persistence target from a fail-closed parity check.
53
54
  */
@@ -1 +1 @@
1
- {"version":3,"file":"db-parity.d.ts","sourceRoot":"","sources":["../../src/commands/db-parity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,KAAK,mBAAmB,EAGxB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAE5B,MAAM,0BAA0B,CAAC;AASlC,uDAAuD;AACvD,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,0CAA0C;AAC1C,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtC,6EAA6E;IAC7E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAChD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CACtD,MAAM,EACN,mBAAmB,EAAE,CACtB,CAkBA;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAYnE;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,uBAAuB,CAAC,CAoDlC;AAQD,8DAA8D;AAC9D,wBAAgB,cAAc,CAC5B,MAAM,EAAE,sBAAsB,EAC9B,QAAQ,EAAE,kBAAkB,GAC3B,iBAAiB,EAAE,CAQrB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,MAAM,EAAE,CAuEV;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAE5E"}
1
+ {"version":3,"file":"db-parity.d.ts","sourceRoot":"","sources":["../../src/commands/db-parity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,KAAK,mBAAmB,EAGxB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAE5B,MAAM,0BAA0B,CAAC;AASlC,uDAAuD;AACvD,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,0CAA0C;AAC1C,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtC,6EAA6E;IAC7E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAChD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CACtD,MAAM,EACN,mBAAmB,EAAE,CACtB,CAkBA;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAgBnE;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,uBAAuB,CAAC,CAoDlC;AAQD,8DAA8D;AAC9D,wBAAgB,cAAc,CAC5B,MAAM,EAAE,sBAAsB,EAC9B,QAAQ,EAAE,kBAAkB,GAC3B,iBAAiB,EAAE,CAQrB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,MAAM,EAAE,CAuEV;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAE5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/commands/utilities.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwBH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAuJtD,wBAAgB,uBAAuB,CAAC,OAAO,SAAgB,GAAG,MAAM,CAIvE;AA4LD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;;;GAIG;AACH,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AAEtF;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,OAAO,GAAG,SAAS,EAC1B,KAAK,EAAE,OAAO,GACb,uBAAuB,CA2DzB;AAED,wBAAgB,gCAAgC,CAC9C,eAAe,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAC9C,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,GACtC,IAAI,CAcN;AAED;;;GAGG;AACH,UAAU,iBAAiB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,yDAAyD;AACzD,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAmBD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,iBAAiB,GAC7B,MAAM,GAAG,IAAI,CAUf;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,GAAG,0BAA0B,CA+C7B;AA2BD,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,UAAU,CAAC;IAChD,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,8DAA8D;IAC9D,SAAS,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D;;;;;;;;;;;;;;;;;OAiBG;IACH,kBAAkB,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpE;AA4CD;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAsDzC;AAgBD,mEAAmE;AACnE,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GACrC,MAAM,EAAE,CAoCV;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAijGtD,CAAC"}
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/commands/utilities.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { constants, createReadStream, existsSync, mkdirSync, mkdtempSync, readFi
9
9
  import * as path from "node:path";
10
10
  import { basename, dirname, extname, isAbsolute, join, normalize, relative, resolve, sep } from "node:path";
11
11
  import { fileURLToPath, pathToFileURL } from "node:url";
12
- import { ObjectRegistry, SchemaComparer, checkLiveSchemaParity, collectForeignKeyOrphanCounts, createQualifiedName, ensureDeferredSystemTableCompatibility, generateDDLForEngine, getClassName, isQualifiedName, isSmrtCollectionExtendsName, migratePostgresSystemTimestamps, parseQualifiedName, planForeignKeyCreation, planPostgresSystemTimestampMigrations } from "@happyvertical/smrt-core";
12
+ import { ObjectRegistry, SchemaComparer, checkLiveSchemaParity, collectForeignKeyOrphanCounts, createQualifiedName, ensureDeferredSystemTableCompatibility, ensureSystemTables, generateDDLForEngine, getClassName, isQualifiedName, isRefusedTestArtifact, isSmrtCollectionExtendsName, migratePostgresSystemTimestamps, parseQualifiedName, planForeignKeyCreation, planPostgresSystemTimestampMigrations } from "@happyvertical/smrt-core";
13
13
  import { loadExternalManifestSync } from "@happyvertical/smrt-core/manifest";
14
14
  import { execFile, execFileSync, execSync, spawn, spawnSync } from "node:child_process";
15
15
  import { homedir, tmpdir } from "node:os";
@@ -27,7 +27,7 @@ import https from "node:https";
27
27
  import { createServer } from "node:http";
28
28
  import { importWorkspaceModule } from "@happyvertical/smrt-core/utils/import-workspace-module";
29
29
  import { renderForeignKeyAddStatements } from "@happyvertical/smrt-core/schema";
30
- import { FRAMEWORK_BASE_TABLE_NAMES, backfillLegacyQualifiedNames, buildIntegerWidthTableStatements, collectIntegerWidthTargets, collectNullEqualIndexTargets, countLegacyQualifiedNameReferences, dropFrameworkBaseTables, migrateNullEqualIndexes, nullEqualIndexStatements, parsePostgresTimeoutMs, planFrameworkBaseTableDrop, preflightIntegerWidthWidening, preflightNullEqualIndexes, widenIntegerColumnsToBigInt } from "@happyvertical/smrt-core/migrations";
30
+ import { FRAMEWORK_BASE_TABLE_NAMES, SYSTEM_TABLE_TENANT_UUID_COLUMNS, backfillLegacyQualifiedNames, buildIntegerWidthTableStatements, collectIntegerWidthTargets, collectNullEqualIndexTargets, countLegacyQualifiedNameReferences, dropFrameworkBaseTables, ensurePostgresChangeFeedAppendFunction, migrateNullEqualIndexes, nullEqualIndexStatements, parsePostgresTimeoutMs, planFrameworkBaseTableDrop, preflightIntegerWidthWidening, preflightNullEqualIndexes, widenIntegerColumnsToBigInt } from "@happyvertical/smrt-core/migrations";
31
31
  import { buildArchitectureContext, buildKnowledgeIndex, buildReviewContext, checkKnowledgeFreshness, compactContextResult, diffKnowledgeIndex, renderFreshnessResult, renderKnowledgeIndexMarkdown } from "@happyvertical/smrt-dev-mcp/knowledge";
32
32
  import { RUNTIME_TOOLS } from "@happyvertical/smrt-dev-mcp/runtime";
33
33
  //#region src/commands/config-export.ts
@@ -383,7 +383,7 @@ async function findProjectManifests(projectRoot) {
383
383
  const manifestPath = resolve(projectRoot, candidate);
384
384
  try {
385
385
  const manifest = await loadManifestFile(manifestPath);
386
- if (manifest?.objects) {
386
+ if (manifest?.objects && !isRefusedTestArtifact(manifest, manifestPath)) {
387
387
  const objectNames = Object.keys(manifest.objects);
388
388
  discovered.push({
389
389
  path: manifestPath,
@@ -445,7 +445,7 @@ async function findPackageManifests(projectRoot) {
445
445
  ];
446
446
  for (const manifestPath of manifestCandidates) try {
447
447
  const manifest = await loadManifestFile(manifestPath);
448
- if (manifest?.objects) {
448
+ if (manifest?.objects && !isRefusedTestArtifact(manifest, manifestPath)) {
449
449
  const objectNames = Object.keys(manifest.objects);
450
450
  seenPackages.add(packageKey);
451
451
  discovered.push({
@@ -2691,14 +2691,15 @@ function collectRegistryConflictTargets() {
2691
2691
  }
2692
2692
  /**
2693
2693
  * Matches core's collection classification, including a registered collection
2694
- * subclass whose immediate parent is another collection class. Unknown
2694
+ * subclass whose immediate parent is another collection class and the
2695
+ * manifest's `collectionOf` classification (#3956). Unknown
2695
2696
  * registrations stay included so a malformed registry cannot hide a real
2696
2697
  * persistence target from a fail-closed parity check.
2697
2698
  */
2698
2699
  function isCollectionRegistration(className) {
2699
2700
  for (const name of [className, ...ObjectRegistry.getInheritanceChain(className)]) {
2700
2701
  const registered = ObjectRegistry.getClass(name);
2701
- if (registered && isSmrtCollectionExtendsName(registered.extends)) return true;
2702
+ if (registered && (registered.collectionOf || isSmrtCollectionExtendsName(registered.extends))) return true;
2702
2703
  }
2703
2704
  return false;
2704
2705
  }
@@ -8424,7 +8425,7 @@ var dbMaterializeTenantHierarchyCommand = {
8424
8425
  if (!config.database?.url || config.database.url === ":memory:") throw new Error("Database configuration required for db:materialize-tenant-hierarchy. Configure database.url in smrt.config.ts (or DATABASE_URL).");
8425
8426
  const dbType = config.database.type || "sqlite";
8426
8427
  const { getDatabase } = await import("@happyvertical/sql");
8427
- const { materializeTenantHierarchy, TenantHierarchyMaterializationError } = await import("./dist-Dv5VoO6m.js");
8428
+ const { materializeTenantHierarchy, TenantHierarchyMaterializationError } = await import("./dist-apCbdM9B.js");
8428
8429
  db = await getDatabase({
8429
8430
  type: dbType,
8430
8431
  url: config.database.url
@@ -8633,7 +8634,7 @@ var dbMigrateLedgerAccountsCommand = {
8633
8634
  if (dbType !== "postgres") throw new Error("db:migrate-ledger-accounts currently supports PostgreSQL only; no changes were made. See the smrt-ledgers README for SQLite.");
8634
8635
  await autoDiscoverAndLoad();
8635
8636
  const { getDatabase } = await import("@happyvertical/sql");
8636
- const { migrateLedgerAccountsTable, planLedgerAccountsTableMove } = await import("./dist-bsd3d3Lx.js");
8637
+ const { migrateLedgerAccountsTable, planLedgerAccountsTableMove } = await import("./dist-CdGUFvug.js");
8637
8638
  db = await getDatabase({
8638
8639
  type: dbType,
8639
8640
  url: config.database.url
@@ -9159,7 +9160,8 @@ async function convertPostgresUuidColumns(db, declaredUuid, dryRun, renderDryRun
9159
9160
  const initialPlan = planUuidConversions(liveColumns, declaredUuid);
9160
9161
  const { skipDirtyData, skipNotDeclared } = initialPlan;
9161
9162
  await assertNoCrossSchemaForeignKeyPartners(db, new Set([...initialPlan.convert, ...skipDirtyData].map((candidate) => declaredUuidKey(candidate.table, candidate.column))));
9162
- const { convert, skipBlockedPartner = [] } = propagateBlockedForeignKeyPartners(initialPlan, await fetchSingleColumnForeignKeyEdges(db));
9163
+ const propagated = propagateBlockedForeignKeyPartners(initialPlan, await fetchSingleColumnForeignKeyEdges(db));
9164
+ const { convert, skipBlockedPartner } = await holdSystemTenantColumnsTogether(db, propagated.convert, [...skipDirtyData, ...propagated.skipBlockedPartner ?? []], propagated.skipBlockedPartner ?? []);
9163
9165
  console.log(`Found ${candidateRows.length} TEXT id/FK column(s): ${convert.length} convertible, ${skipDirtyData.length + skipNotDeclared.length + skipBlockedPartner.length} skipped.`);
9164
9166
  for (const item of skipDirtyData) console.log(` SKIP ${item.table}.${item.column}: ${dirtyDataReason(item)}`);
9165
9167
  for (const item of skipNotDeclared) console.log(` SKIP ${item.table}.${item.column}: not schema-declared UUID`);
@@ -9192,6 +9194,7 @@ async function convertPostgresUuidColumns(db, declaredUuid, dryRun, renderDryRun
9192
9194
  console.log("\nDry run complete — no changes applied.\n");
9193
9195
  return;
9194
9196
  }
9197
+ if (columns.some((column) => column.table.startsWith("_smrt_changes"))) await ensurePostgresChangeFeedAppendFunction(db, { typeHint: "postgres" });
9195
9198
  for (const table of tables) await db.query(`LOCK TABLE ${pgTable(table)} IN ACCESS EXCLUSIVE MODE`);
9196
9199
  await assertSupportedSourceColumns(db, columns);
9197
9200
  for (const column of columns) {
@@ -9657,6 +9660,54 @@ async function applyRenameBackfills(db, isPostgres, renameSpecs, dryRun, { ownTr
9657
9660
  }
9658
9661
  console.log();
9659
9662
  }
9663
+ /** Keys of the system tenant columns; read lazily so module mocks need not export it. */
9664
+ function systemTenantColumnKeys() {
9665
+ return new Set(SYSTEM_TABLE_TENANT_UUID_COLUMNS.map(({ table, column }) => declaredUuidKey(table, column)));
9666
+ }
9667
+ /**
9668
+ * The system tenant columns convert together or not at all (#3297).
9669
+ *
9670
+ * They are linked by behaviour, not foreign keys: the drain moves
9671
+ * `_smrt_changes_pending` rows into `_smrt_changes`, and dispatch rows and
9672
+ * subscriptions carry the same context tenant. Converting one while a sibling
9673
+ * stays TEXT with a non-UUID value strands staged feed entries or starts
9674
+ * rejecting writes. So any blocked system column — or any blocked
9675
+ * application `tenant_id` (non-UUID tenants are still in use) — or a legacy
9676
+ * timezone-naive `_smrt_changes.created_at` (the helpers cannot be installed
9677
+ * until the audited timestamp migration runs) holds all of them back.
9678
+ */
9679
+ async function holdSystemTenantColumnsTogether(db, convert, blocked, skipBlockedPartner) {
9680
+ const systemKeys = systemTenantColumnKeys();
9681
+ const isSystem = (column) => systemKeys.has(declaredUuidKey(column.table, column.column));
9682
+ const system = convert.filter(isSystem);
9683
+ if (system.length === 0) return {
9684
+ convert,
9685
+ skipBlockedPartner
9686
+ };
9687
+ let reason;
9688
+ const blockedSystem = blocked.find(isSystem);
9689
+ const blockedTenant = blocked.find((column) => !isSystem(column) && column.column === "tenant_id");
9690
+ if (blockedSystem) reason = `${blockedSystem.table}.${blockedSystem.column} is not convertible`;
9691
+ else if (blockedTenant) reason = `application tenant column ${blockedTenant.table}.${blockedTenant.column} is not convertible (non-UUID tenants are still in use)`;
9692
+ else {
9693
+ const { rows } = await db.query(`SELECT data_type FROM information_schema.columns
9694
+ WHERE table_schema = 'public' AND table_name = '_smrt_changes'
9695
+ AND column_name = 'created_at'`);
9696
+ if (rows[0]?.data_type === "timestamp without time zone") reason = "_smrt_changes.created_at is still timezone-naive; run the audited system timestamp migration (smrt db:migrate --postgres-timestamp-legacy-timezone UTC) first";
9697
+ }
9698
+ if (!reason) return {
9699
+ convert,
9700
+ skipBlockedPartner
9701
+ };
9702
+ return {
9703
+ convert: convert.filter((column) => !isSystem(column)),
9704
+ skipBlockedPartner: [...skipBlockedPartner, ...system.map((column) => ({
9705
+ table: column.table,
9706
+ column: column.column,
9707
+ reason: `system tenant columns convert together; ${reason}`
9708
+ }))]
9709
+ };
9710
+ }
9660
9711
  /**
9661
9712
  * Discover + load the SMRT manifest (cwd-relative, exactly like `db:diff`) and
9662
9713
  * return the set of `${table}|${column}` keys the schema declares as native
@@ -9673,6 +9724,7 @@ async function loadDeclaredUuidColumns() {
9673
9724
  }
9674
9725
  try {
9675
9726
  const declared = buildDeclaredUuidColumnSet(ObjectRegistry.getAllSchemasAsDefinitions());
9727
+ if (declared.size > 0) for (const { table, column } of SYSTEM_TABLE_TENANT_UUID_COLUMNS) declared.add(declaredUuidKey(table, column));
9676
9728
  if (discoveryFailed && declared.size > 0) console.warn("Manifest discovery partially failed — the declared-UUID set may be INCOMPLETE; some packages may not have been scanned, so some uuid columns could be silently left as TEXT. Resolve the discovery error above and re-run from the project root before trusting the conversion.");
9677
9729
  return declared;
9678
9730
  } catch (error) {
@@ -10439,7 +10491,7 @@ async function loadDependencyManifest(packageName, issuerResolverPath) {
10439
10491
  for (const manifestPath of manifestCandidates) {
10440
10492
  if (!existsSync(manifestPath)) continue;
10441
10493
  const manifest = await tryLoadManifestFile(manifestPath);
10442
- if (manifest) return {
10494
+ if (manifest && !isRefusedTestArtifact(manifest, manifestPath)) return {
10443
10495
  manifest,
10444
10496
  resolverPath: packageJsonPath
10445
10497
  };
@@ -10808,7 +10860,7 @@ var usersProvisionOwnerCommand = {
10808
10860
  const config = getPackageConfig("cli", DEFAULT_CLI_CONFIG);
10809
10861
  if (config.database?.type !== "postgres" || !config.database.url) throw new Error(FAILURE);
10810
10862
  const { getDatabase } = await import("@happyvertical/sql");
10811
- const { provisionPasswordOwner } = await import("./operator-2Sy_-AE5.js");
10863
+ const { provisionPasswordOwner } = await import("./operator-D6v5IFPn.js");
10812
10864
  db = await getDatabase({
10813
10865
  type: "postgres",
10814
10866
  url: config.database.url
@@ -10925,6 +10977,12 @@ function describeWithheldMigrationAction(action) {
10925
10977
  * failure here must not fail an otherwise-successful migration.
10926
10978
  */
10927
10979
  async function settleDeferredCompatibilityAfterMigrate(db, dbType, { verbose }) {
10980
+ try {
10981
+ await ensureSystemTables(db, dbType);
10982
+ } catch (error) {
10983
+ console.warn(`⚠️ System-table bootstrap did not complete: ${redactDatabaseUrlsInText(error instanceof Error ? error.message : String(error))}`);
10984
+ console.warn(" It will be retried the next time the framework starts.\n");
10985
+ }
10928
10986
  try {
10929
10987
  const { settled } = await ensureDeferredSystemTableCompatibility(db, dbType);
10930
10988
  if (verbose) console.log(settled ? "Deferred system-table compatibility settled (_smrt_jobs, _smrt_job_events)\n" : "Deferred system-table compatibility pending (jobs tables not present)\n");
@@ -11165,7 +11223,7 @@ var utilityCommands = {
11165
11223
  description: "Application operations: install, setup, recover, start, stop, doctor, open, backup, export, import, migrate, worker, dev, build (`smrt app help`)",
11166
11224
  args: ["[operation]", "[args...]"],
11167
11225
  handler: async (args) => {
11168
- const { runAppCommand } = await import("./cli-CBuBU_5T.js").then((n) => n.r);
11226
+ const { runAppCommand } = await import("./cli-CtRx1_yP.js").then((n) => n.r);
11169
11227
  const code = await runAppCommand(args);
11170
11228
  if (code !== 0) process.exitCode = code;
11171
11229
  }
@@ -11275,6 +11333,7 @@ var utilityCommands = {
11275
11333
  includeExternalBaseClasses: true,
11276
11334
  includePrivateMethods: false,
11277
11335
  includeStaticMethods: true,
11336
+ outputMode: "explicit",
11278
11337
  outputDir: options.output || "src/manifest",
11279
11338
  outputName: "test-manifest.json",
11280
11339
  generateTypeStub: true,
@@ -11287,7 +11346,6 @@ var utilityCommands = {
11287
11346
  const outputDir = resolve(process.cwd(), options.output || "src/manifest");
11288
11347
  mkdirSync(outputDir, { recursive: true });
11289
11348
  const jsonPath = resolve(outputDir, "test-manifest.json");
11290
- writeFileSync(jsonPath, JSON.stringify(manifest, null, 2));
11291
11349
  const tsContent = `/**
11292
11350
  * Test manifest stub
11293
11351
  * This file is generated by \`smrt test\`
@@ -11305,8 +11363,7 @@ export default testManifest;
11305
11363
  writeFileSync(tsPath, tsContent);
11306
11364
  const objectCount = Object.keys(manifest.objects).length;
11307
11365
  console.log(`✅ Generated test manifest with ${objectCount} test object(s)`);
11308
- console.log(` Unified: .smrt/manifest.json`);
11309
- console.log(` Legacy: ${jsonPath}`);
11366
+ console.log(` JSON: ${jsonPath}`);
11310
11367
  console.log(` TS: ${tsPath}\n`);
11311
11368
  if (!(options["manifest-only"] ?? options.manifestOnly)) {
11312
11369
  console.log("🧪 Running tests...\n");
@@ -11317,6 +11374,8 @@ export default testManifest;
11317
11374
  "run",
11318
11375
  ...args
11319
11376
  ];
11377
+ const { registerActiveTestManifestPath } = await import("@happyvertical/smrt-core/manifest");
11378
+ registerActiveTestManifestPath(process.cwd(), jsonPath);
11320
11379
  const proc = spawn(process.execPath, vitestArgs, { stdio: "inherit" });
11321
11380
  await new Promise((resolve, reject) => {
11322
11381
  proc.on("close", (code) => {
@@ -11653,6 +11712,8 @@ export default testManifest;
11653
11712
  include: ["src/**/*.ts"],
11654
11713
  exclude: [
11655
11714
  "src/**/*.d.ts",
11715
+ "**/*.test.ts",
11716
+ "**/*.spec.ts",
11656
11717
  "node_modules/**",
11657
11718
  "dist/**"
11658
11719
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-discovery.d.ts","sourceRoot":"","sources":["../../src/discovery/manifest-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAQD;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CA0ChD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAY/B;AA2LD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAY7B;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBtE;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC;IACT,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAyBD"}
1
+ {"version":3,"file":"manifest-discovery.d.ts","sourceRoot":"","sources":["../../src/discovery/manifest-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAQD;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CA0ChD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAY/B;AAgMD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAY7B;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBtE;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC;IACT,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAyBD"}