@happyvertical/smrt-assets 0.57.25 → 0.57.26

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.
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ var __exportAll = (all, no_symbols) => {
15
15
  };
16
16
  //#endregion
17
17
  //#region src/__smrt-register__.ts
18
- ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-assets","packageVersion":"0.57.25","objects":{"@happyvertical/smrt-assets:AssetAssociation":{"name":"assetassociation","className":"AssetAssociation","qualifiedName":"@happyvertical/smrt-assets:AssetAssociation","collection":"assetassociations","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-association.ts","packageName":"@happyvertical/smrt-assets","fields":{"metaType":{"type":"text","required":true,"_meta":{"required":true}},"metaId":{"type":"text","required":true,"_meta":{"required":true}},"role":{"type":"text","required":true,"_meta":{"required":true}},"sortOrder":{"type":"integer","required":false,"default":0},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"assetId":{"type":"foreignKey","required":true,"related":"Asset","description":"The file attached to the related record.","_meta":{"description":"The file attached to the related record.","required":true}}},"methods":{"hydrate":{"name":"hydrate","async":true,"parameters":[],"returnType":"Promise<T | null>","isStatic":false,"isPublic":true}},"decoratorConfig":{"conflictColumns":["asset_id","meta_type","meta_id","role"],"api":{"include":["list","get","create","delete"]},"mcp":{"include":["list","get","create"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"}},"extends":"SmrtPolymorphicAssociation","exportName":"AssetAssociation","collectionExportName":"AssetAssociationCollection","validationRules":[{"field":"metaType","rule":"required","fieldType":"text"},{"field":"metaId","rule":"required","fieldType":"text"},{"field":"role","rule":"required","fieldType":"text"},{"field":"assetId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"asset_associations","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_associations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"meta_type\\" TEXT NOT NULL,\\n \\"meta_id\\" TEXT NOT NULL,\\n \\"role\\" TEXT NOT NULL,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"tenant_id\\" UUID,\\n \\"asset_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"meta_type":{"type":"TEXT","notNull":true,"unique":false},"meta_id":{"type":"TEXT","notNull":true,"unique":false},"role":{"type":"TEXT","notNull":true,"unique":false},"sort_order":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"asset_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"assets","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}}},"indexes":[{"name":"asset_associations_asset_id_meta_type_idx","columns":["asset_id","meta_type","meta_id","role"],"unique":true},{"name":"asset_associations_slug_context_idx","columns":["slug","context"]},{"name":"asset_associations_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"asset_associations_meta_type_meta_id_idx","columns":["meta_type","meta_id"]}],"version":"faa13cea"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetAssociationCollection":{"name":"assetassociationcollection","className":"AssetAssociationCollection","qualifiedName":"@happyvertical/smrt-assets:AssetAssociationCollection","collection":"assetassociations","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-associations.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"byRight":{"name":"byRight","async":true,"parameters":[{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"byLeft":{"name":"byLeft","async":true,"parameters":[{"name":"metaType","type":"string","optional":false},{"name":"metaId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<AssetAssociation[]>","isStatic":false,"isPublic":true},"attach":{"name":"attach","async":true,"parameters":[{"name":"metaType","type":"string","optional":false},{"name":"metaId","type":"string","optional":false},{"name":"assetId","type":"string","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<AssetAssociation>","isStatic":false,"isPublic":true},"detach":{"name":"detach","async":true,"parameters":[{"name":"metaType","type":"string","optional":false},{"name":"metaId","type":"string","optional":false},{"name":"assetId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"metaType","type":"string","optional":false},{"name":"metaId","type":"string","optional":false},{"name":"assetIds","type":"string[]","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","delete"]},"mcp":{"include":["list","get","create"]}},"extends":"SmrtJunctionBase","extendsTypeArg":"AssetAssociation","exportName":"AssetAssociationCollection","collectionExportName":"AssetAssociationCollectionCollection","schema":{"tableName":"asset_associations","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_associations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"meta_type\\" TEXT NOT NULL,\\n \\"meta_id\\" TEXT NOT NULL,\\n \\"role\\" TEXT NOT NULL,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"tenant_id\\" UUID,\\n \\"asset_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"meta_type":{"type":"TEXT","notNull":true,"unique":false},"meta_id":{"type":"TEXT","notNull":true,"unique":false},"role":{"type":"TEXT","notNull":true,"unique":false},"sort_order":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"asset_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"assets","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}}},"indexes":[{"name":"asset_associations_asset_id_meta_type_idx","columns":["asset_id","meta_type","meta_id","role"],"unique":true},{"name":"asset_associations_slug_context_idx","columns":["slug","context"]},{"name":"asset_associations_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"asset_associations_meta_type_meta_id_idx","columns":["meta_type","meta_id"]}],"version":"faa13cea"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetMetafield":{"name":"assetmetafield","className":"AssetMetafield","qualifiedName":"@happyvertical/smrt-assets:AssetMetafield","collection":"assetmetafields","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-metafield.ts","packageName":"@happyvertical/smrt-assets","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"name":{"type":"text","required":false,"description":"The name of an additional asset detail, such as Width or Height.","_meta":{"description":"The name of an additional asset detail, such as Width or Height."}},"validation":{"type":"text","required":false,"description":"Rules that determine which values this asset detail accepts.","_meta":{"description":"Rules that determine which values this asset detail accepts."}}},"methods":{"getValidation":{"name":"getValidation","async":false,"parameters":[],"returnType":"Record<string, unknown>","isStatic":false,"isPublic":true},"setValidation":{"name":"setValidation","async":false,"parameters":[{"name":"rules","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"_slug","type":"string","optional":false}],"returnType":"Promise<AssetMetafield | null>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create"]},"cli":{"skipApiCheck":true}},"extends":"SmrtObject","exportName":"AssetMetafield","collectionExportName":"AssetMetafieldCollection","displayLabelField":"name","schema":{"tableName":"asset_metafields","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_metafields\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT,\\n \\"validation\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false},"validation":{"type":"TEXT","notNull":false}},"indexes":[{"name":"asset_metafields_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"asset_metafields_meta_type_idx","columns":["_meta_type"]},{"name":"asset_metafields_created_at_idx","columns":["created_at"]}],"version":"7393718c"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetMetafieldCollection":{"name":"assetmetafieldcollection","className":"AssetMetafieldCollection","qualifiedName":"@happyvertical/smrt-assets:AssetMetafieldCollection","collection":"assetmetafields","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-metafields.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"getOrCreate":{"name":"getOrCreate","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"name","type":"string","optional":true},{"name":"validation","type":"string | Record<string, unknown>","optional":true,"unionBranches":[{"type":"string"},{"type":"Record<string, unknown>"}]}],"returnType":"Promise<AssetMetafield>","isStatic":false,"isPublic":true},"initializeCommonMetafields":{"name":"initializeCommonMetafields","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create"]}},"extends":"SmrtCollection","extendsTypeArg":"AssetMetafield","exportName":"AssetMetafieldCollection","collectionExportName":"AssetMetafieldCollectionCollection","schema":{"tableName":"asset_metafields","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_metafields\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT,\\n \\"validation\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false},"validation":{"type":"TEXT","notNull":false}},"indexes":[{"name":"asset_metafields_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"asset_metafields_meta_type_idx","columns":["_meta_type"]},{"name":"asset_metafields_created_at_idx","columns":["created_at"]}],"version":"7393718c"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetStatus":{"name":"assetstatus","className":"AssetStatus","qualifiedName":"@happyvertical/smrt-assets:AssetStatus","collection":"assetstatuses","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-status.ts","packageName":"@happyvertical/smrt-assets","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"name":{"type":"text","required":false,"description":"The name of this lifecycle stage, such as Draft or Published.","_meta":{"description":"The name of this lifecycle stage, such as Draft or Published."}},"description":{"type":"text","required":false,"description":"Explain when an asset should use this lifecycle stage.","_meta":{"description":"Explain when an asset should use this lifecycle stage."}}},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"_slug","type":"string","optional":false}],"returnType":"Promise<AssetStatus | null>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create"]},"cli":{"skipApiCheck":true}},"extends":"SmrtObject","exportName":"AssetStatus","collectionExportName":"AssetStatusCollection","displayLabelField":"name","schema":{"tableName":"asset_statuses","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_statuses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false}},"indexes":[{"name":"asset_statuses_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"asset_statuses_meta_type_idx","columns":["_meta_type"]},{"name":"asset_statuses_created_at_idx","columns":["created_at"]}],"version":"8251a52f"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetStatusCollection":{"name":"assetstatuscollection","className":"AssetStatusCollection","qualifiedName":"@happyvertical/smrt-assets:AssetStatusCollection","collection":"assetstatuses","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-statuses.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"getOrCreate":{"name":"getOrCreate","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"name","type":"string","optional":true},{"name":"description","type":"string","optional":true}],"returnType":"Promise<AssetStatus>","isStatic":false,"isPublic":true},"initializeCommonStatuses":{"name":"initializeCommonStatuses","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create"]}},"extends":"SmrtCollection","extendsTypeArg":"AssetStatus","exportName":"AssetStatusCollection","collectionExportName":"AssetStatusCollectionCollection","schema":{"tableName":"asset_statuses","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_statuses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false}},"indexes":[{"name":"asset_statuses_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"asset_statuses_meta_type_idx","columns":["_meta_type"]},{"name":"asset_statuses_created_at_idx","columns":["created_at"]}],"version":"8251a52f"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetTag":{"name":"assettag","className":"AssetTag","qualifiedName":"@happyvertical/smrt-assets:AssetTag","collection":"assettags","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-tag.ts","packageName":"@happyvertical/smrt-assets","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"assetId":{"type":"foreignKey","required":true,"related":"Asset","_meta":{"required":true,"onDelete":"CASCADE"}},"tagId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-tags:Tag","_meta":{"onDelete":"CASCADE"}}},"methods":{},"decoratorConfig":{"tableName":"asset_tags","conflictColumns":["asset_id","tag_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional"}},"extends":"SmrtObject","exportName":"AssetTag","collectionExportName":"AssetTagCollection","validationRules":[{"field":"assetId","rule":"required","fieldType":"foreignKey"},{"field":"tagId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"asset_tags","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_tags\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"tag_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"asset_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"assets","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"tag_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false}},"indexes":[{"name":"asset_tags_asset_id_tag_id_idx","columns":["asset_id","tag_id"],"unique":true},{"name":"asset_tags_slug_context_idx","columns":["slug","context"]},{"name":"asset_tags_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"asset_tags_tag_id_idx","columns":["tag_id"]}],"version":"e60d24f5"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetTagCollection":{"name":"assettagcollection","className":"AssetTagCollection","qualifiedName":"@happyvertical/smrt-assets:AssetTagCollection","collection":"assettags","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-tags.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"byRight":{"name":"byRight","async":true,"parameters":[{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"byLeft":{"name":"byLeft","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"attach":{"name":"attach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<TItem>","isStatic":false,"isPublic":true},"detach":{"name":"detach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightIds","type":"string[]","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"asset_tags","api":false,"mcp":false,"cli":false},"extends":"SmrtJunction","extendsTypeArg":"AssetTag","exportName":"AssetTagCollection","collectionExportName":"AssetTagCollectionCollection","schema":{"tableName":"asset_tags","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_tags\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"tag_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"asset_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"assets","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"tag_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false}},"indexes":[{"name":"asset_tags_asset_id_tag_id_idx","columns":["asset_id","tag_id"],"unique":true},{"name":"asset_tags_slug_context_idx","columns":["slug","context"]},{"name":"asset_tags_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"asset_tags_tag_id_idx","columns":["tag_id"]}],"version":"e60d24f5"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetType":{"name":"assettype","className":"AssetType","qualifiedName":"@happyvertical/smrt-assets:AssetType","collection":"assettypes","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-type.ts","packageName":"@happyvertical/smrt-assets","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"name":{"type":"text","required":false,"description":"The name of this file category, such as Image or Document.","_meta":{"description":"The name of this file category, such as Image or Document."}},"description":{"type":"text","required":false,"description":"Explain which kinds of files belong in this category.","_meta":{"description":"Explain which kinds of files belong in this category."}}},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"_slug","type":"string","optional":false}],"returnType":"Promise<AssetType | null>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create"]},"cli":{"skipApiCheck":true}},"extends":"SmrtObject","exportName":"AssetType","collectionExportName":"AssetTypeCollection","displayLabelField":"name","schema":{"tableName":"asset_types","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_types\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false}},"indexes":[{"name":"asset_types_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"asset_types_meta_type_idx","columns":["_meta_type"]},{"name":"asset_types_created_at_idx","columns":["created_at"]}],"version":"a9c93be2"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetTypeCollection":{"name":"assettypecollection","className":"AssetTypeCollection","qualifiedName":"@happyvertical/smrt-assets:AssetTypeCollection","collection":"assettypes","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-types.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"getOrCreate":{"name":"getOrCreate","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"name","type":"string","optional":true},{"name":"description","type":"string","optional":true}],"returnType":"Promise<AssetType>","isStatic":false,"isPublic":true},"initializeCommonTypes":{"name":"initializeCommonTypes","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create"]}},"extends":"SmrtCollection","extendsTypeArg":"AssetType","exportName":"AssetTypeCollection","collectionExportName":"AssetTypeCollectionCollection","schema":{"tableName":"asset_types","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_types\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false}},"indexes":[{"name":"asset_types_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"asset_types_meta_type_idx","columns":["_meta_type"]},{"name":"asset_types_created_at_idx","columns":["created_at"]}],"version":"a9c93be2"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:Asset":{"name":"asset","className":"Asset","qualifiedName":"@happyvertical/smrt-assets:Asset","collection":"assets","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset.ts","packageName":"@happyvertical/smrt-assets","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"accessMode":{"type":"text","required":false,"default":"public","description":"Whether this record is public to ordinary asset APIs or private.","_meta":{"description":"Whether this record is public to ordinary asset APIs or private."},"enum":["public","private"]},"name":{"type":"text","required":false,"description":"A recognizable name for this file or media item.","_meta":{"description":"A recognizable name for this file or media item."}},"sourceUri":{"type":"text","required":false,"description":"Where the original file is stored or can be retrieved.","_meta":{"description":"Where the original file is stored or can be retrieved."}},"mimeType":{"type":"text","required":false,"description":"The file format, such as image/jpeg or application/pdf.","_meta":{"description":"The file format, such as image/jpeg or application/pdf."}},"description":{"type":"text","required":false,"description":"Explain what the file contains and when it should be used.","_meta":{"description":"Explain what the file contains and when it should be used."}},"metadata":{"type":"text","required":false,"description":"Additional details recorded while processing this file.","_meta":{"description":"Additional details recorded while processing this file."}},"version":{"type":"integer","required":true,"default":1,"description":"The revision number of this file in its version history.","_meta":{"description":"The revision number of this file in its version history."}},"primaryVersionId":{"type":"foreignKey","required":false,"related":"Asset","description":"The first version of this file, linking its revision history.","_meta":{"description":"The first version of this file, linking its revision history."}},"typeSlug":{"type":"text","required":false,"description":"The category of asset, such as an image, video, or document.","_meta":{"description":"The category of asset, such as an image, video, or document."}},"statusSlug":{"type":"text","required":false,"description":"The stage of this asset, such as draft, published, or archived.","_meta":{"description":"The stage of this asset, such as draft, published, or archived."}},"ownerProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","description":"The person or organization responsible for this asset.","_meta":{"description":"The person or organization responsible for this asset."}},"sourceAssetId":{"type":"foreignKey","required":false,"related":"Asset","description":"The original asset used to produce this file or variation.","_meta":{"description":"The original asset used to produce this file or variation."}},"folderId":{"type":"foreignKey","required":false,"related":"Folder","description":"The folder that organizes this file in the asset library.","_meta":{"description":"The folder that organizes this file in the asset library."}},"sourceType":{"type":"text","required":false,"description":"The service or source from which this file was obtained.","_meta":{"description":"The service or source from which this file was obtained."}},"externalId":{"type":"text","required":false,"description":"The reference used to identify this file at its original source.","_meta":{"description":"The reference used to identify this file at its original source."}},"externalRefs":{"type":"text","required":false,"description":"References that connect this file to copies held by other services.","_meta":{"description":"References that connect this file to copies held by other services."}},"createdAt":{"type":"text","required":false},"updatedAt":{"type":"text","required":false}},"methods":{"getSlug":{"name":"getSlug","async":true,"parameters":[],"returnType":"Promise<string | null | undefined>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":false,"parameters":[],"returnType":"Record<string, unknown>","isStatic":false,"isPublic":true},"setMetadata":{"name":"setMetadata","async":false,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"mergeMetadata":{"name":"mergeMetadata","async":false,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"getExternalRefs":{"name":"getExternalRefs","async":false,"parameters":[],"returnType":"Record<string, AssetExternalReference>","isStatic":false,"isPublic":true},"getExternalRef":{"name":"getExternalRef","async":false,"parameters":[{"name":"provider","type":"string","optional":false}],"returnType":"AssetExternalReference | null","isStatic":false,"isPublic":true},"setExternalRef":{"name":"setExternalRef","async":false,"parameters":[{"name":"provider","type":"string","optional":false},{"name":"reference","type":"any","optional":false,"typeUnresolved":true}],"returnType":"void","isStatic":false,"isPublic":true},"getTags":{"name":"getTags","async":true,"parameters":[],"returnType":"Promise<Tag[]>","isStatic":false,"isPublic":true},"hasTag":{"name":"hasTag","async":true,"parameters":[{"name":"tagSlug","type":"string","optional":false},{"name":"context","type":"string","optional":true}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"getSource":{"name":"getSource","async":true,"parameters":[],"returnType":"Promise<Asset | null>","isStatic":false,"isPublic":true},"getDerivatives":{"name":"getDerivatives","async":true,"parameters":[],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"getType":{"name":"getType","async":true,"parameters":[],"returnType":"Promise<AssetType | null>","isStatic":false,"isPublic":true},"getStatus":{"name":"getStatus","async":true,"parameters":[],"returnType":"Promise<AssetStatus | null>","isStatic":false,"isPublic":true},"getAssociations":{"name":"getAssociations","async":true,"parameters":[],"returnType":"Promise<AssetAssociation[]>","isStatic":false,"isPublic":true},"associateWith":{"name":"associateWith","async":true,"parameters":[{"name":"metaType","type":"string","optional":false},{"name":"metaId","type":"string","optional":false},{"name":"role","type":"any","optional":true,"default":"default"}],"returnType":"Promise<AssetAssociation>","isStatic":false,"isPublic":true},"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"_slug","type":"string","optional":false}],"returnType":"Promise<Asset | null>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"Asset","collectionExportName":"AssetCollection","displayLabelField":"name","validationRules":[{"field":"version","rule":"required","fieldType":"integer"}],"schema":{"tableName":"assets","ddl":"CREATE TABLE IF NOT EXISTS \\"assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"access_mode\\" TEXT DEFAULT 'public',\\n \\"name\\" TEXT,\\n \\"source_uri\\" TEXT,\\n \\"mime_type\\" TEXT,\\n \\"description\\" TEXT,\\n \\"metadata\\" TEXT,\\n \\"version\\" INTEGER DEFAULT 1,\\n \\"primary_version_id\\" UUID,\\n \\"type_slug\\" TEXT,\\n \\"status_slug\\" TEXT,\\n \\"owner_profile_id\\" UUID,\\n \\"source_asset_id\\" UUID,\\n \\"folder_id\\" UUID,\\n \\"source_type\\" TEXT,\\n \\"external_id\\" TEXT,\\n \\"external_refs\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"access_mode":{"type":"TEXT","notNull":false,"default":"public"},"name":{"type":"TEXT","notNull":false},"source_uri":{"type":"TEXT","notNull":false},"mime_type":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"metadata":{"type":"TEXT","notNull":false},"version":{"type":"INTEGER","notNull":false,"default":1},"primary_version_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"assets","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"type_slug":{"type":"TEXT","notNull":false},"status_slug":{"type":"TEXT","notNull":false},"owner_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false},"source_asset_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"assets","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"folder_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"folders","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"source_type":{"type":"TEXT","notNull":false},"external_id":{"type":"TEXT","notNull":false},"external_refs":{"type":"TEXT","notNull":false}},"indexes":[{"name":"assets_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"assets_meta_type_idx","columns":["_meta_type"]},{"name":"assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"assets_primary_version_id_idx","columns":["primary_version_id"]},{"name":"assets_owner_profile_id_idx","columns":["owner_profile_id"]},{"name":"assets_source_asset_id_idx","columns":["source_asset_id"]},{"name":"assets_folder_id_idx","columns":["folder_id"]}],"version":"0e75029e"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetCollection":{"name":"assetcollection","className":"AssetCollection","qualifiedName":"@happyvertical/smrt-assets:AssetCollection","collection":"assets","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/assets.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addTag":{"name":"addTag","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"tag","type":"string","optional":false},{"name":"options","type":"AssetTagInput","optional":true}],"returnType":"Promise<Tag>","isStatic":false,"isPublic":true},"removeTag":{"name":"removeTag","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"tag","type":"string","optional":false},{"name":"options","type":"Pick<AssetTagInput, 'context'>","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"setTags":{"name":"setTags","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"tags","type":"string[]","optional":false},{"name":"options","type":"Pick<AssetTagInput, 'context'>","optional":true}],"returnType":"Promise<Tag[]>","isStatic":false,"isPublic":true},"getTagsForAssets":{"name":"getTagsForAssets","async":true,"parameters":[{"name":"assetIds","type":"string[]","optional":false}],"returnType":"Promise<Map<string, Tag[]>>","isStatic":false,"isPublic":true},"getByTag":{"name":"getByTag","async":true,"parameters":[{"name":"tag","type":"string","optional":false},{"name":"options","type":"Pick<AssetTagInput, 'context'>","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"getByType":{"name":"getByType","async":true,"parameters":[{"name":"typeSlug","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"getByStatus":{"name":"getByStatus","async":true,"parameters":[{"name":"statusSlug","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"getByOwner":{"name":"getByOwner","async":true,"parameters":[{"name":"ownerProfileId","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"createNewVersion":{"name":"createNewVersion","async":true,"parameters":[{"name":"primaryVersionId","type":"string","optional":false},{"name":"newSourceUri","type":"string","optional":false},{"name":"updates","type":"Partial<Asset>","optional":true}],"returnType":"Promise<Asset>","isStatic":false,"isPublic":true},"getLatestVersion":{"name":"getLatestVersion","async":true,"parameters":[{"name":"primaryVersionId","type":"string","optional":false}],"returnType":"Promise<Asset | null>","isStatic":false,"isPublic":true},"listVersions":{"name":"listVersions","async":true,"parameters":[{"name":"primaryVersionId","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"getDerivatives":{"name":"getDerivatives","async":true,"parameters":[{"name":"sourceAssetId","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"getByMimeType":{"name":"getByMimeType","async":true,"parameters":[{"name":"mimePattern","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"rollbackToVersion":{"name":"rollbackToVersion","async":true,"parameters":[{"name":"primaryVersionId","type":"string","optional":false},{"name":"targetVersion","type":"number","optional":false}],"returnType":"Promise<Asset>","isStatic":false,"isPublic":true},"getByFolder":{"name":"getByFolder","async":true,"parameters":[{"name":"folderId","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]}},"extends":"SmrtCollection","extendsTypeArg":"Asset","exportName":"AssetCollection","collectionExportName":"AssetCollectionCollection","schema":{"tableName":"assets","ddl":"CREATE TABLE IF NOT EXISTS \\"assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"access_mode\\" TEXT DEFAULT 'public',\\n \\"name\\" TEXT,\\n \\"source_uri\\" TEXT,\\n \\"mime_type\\" TEXT,\\n \\"description\\" TEXT,\\n \\"metadata\\" TEXT,\\n \\"version\\" INTEGER DEFAULT 1,\\n \\"primary_version_id\\" UUID,\\n \\"type_slug\\" TEXT,\\n \\"status_slug\\" TEXT,\\n \\"owner_profile_id\\" UUID,\\n \\"source_asset_id\\" UUID,\\n \\"folder_id\\" UUID,\\n \\"source_type\\" TEXT,\\n \\"external_id\\" TEXT,\\n \\"external_refs\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"access_mode":{"type":"TEXT","notNull":false,"default":"public"},"name":{"type":"TEXT","notNull":false},"source_uri":{"type":"TEXT","notNull":false},"mime_type":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"metadata":{"type":"TEXT","notNull":false},"version":{"type":"INTEGER","notNull":false,"default":1},"primary_version_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"assets","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"type_slug":{"type":"TEXT","notNull":false},"status_slug":{"type":"TEXT","notNull":false},"owner_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false},"source_asset_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"assets","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"folder_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"folders","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"source_type":{"type":"TEXT","notNull":false},"external_id":{"type":"TEXT","notNull":false},"external_refs":{"type":"TEXT","notNull":false}},"indexes":[{"name":"assets_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"assets_meta_type_idx","columns":["_meta_type"]},{"name":"assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"assets_primary_version_id_idx","columns":["primary_version_id"]},{"name":"assets_owner_profile_id_idx","columns":["owner_profile_id"]},{"name":"assets_source_asset_id_idx","columns":["source_asset_id"]},{"name":"assets_folder_id_idx","columns":["folder_id"]}],"version":"0e75029e"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:Folder":{"name":"folder","className":"Folder","qualifiedName":"@happyvertical/smrt-assets:Folder","collection":"folders","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/folder.ts","packageName":"@happyvertical/smrt-assets","fields":{"parentId":{"type":"foreignKey","required":false,"related":"Folder","_meta":{"nullable":true}},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"name":{"type":"text","required":false,"description":"A recognizable name for this group of files.","_meta":{"description":"A recognizable name for this group of files."}},"description":{"type":"text","required":false,"description":"Explain the purpose of this folder and which files belong here.","_meta":{"description":"Explain the purpose of this folder and which files belong here."}},"ownerProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","description":"The person or organization responsible for this folder.","_meta":{"description":"The person or organization responsible for this folder."}},"createdAt":{"type":"text","required":false},"updatedAt":{"type":"text","required":false}},"methods":{"getParent":{"name":"getParent","async":true,"parameters":[],"returnType":"Promise<this | null>","isStatic":false,"isPublic":true},"getChildren":{"name":"getChildren","async":true,"parameters":[],"returnType":"Promise<this[]>","isStatic":false,"isPublic":true},"getAncestors":{"name":"getAncestors","async":true,"parameters":[],"returnType":"Promise<this[]>","isStatic":false,"isPublic":true},"getDescendants":{"name":"getDescendants","async":true,"parameters":[],"returnType":"Promise<this[]>","isStatic":false,"isPublic":true},"getHierarchy":{"name":"getHierarchy","async":true,"parameters":[],"returnType":"Promise<HierarchyView<this>>","isStatic":false,"isPublic":true},"moveTo":{"name":"moveTo","async":true,"parameters":[{"name":"newParent","type":"this | string | null","optional":false,"unionBranches":[{"type":"this"},{"type":"string"},{"type":"null"}]}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"_slug","type":"string","optional":false}],"returnType":"Promise<Folder | null>","isStatic":true,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtHierarchical","exportName":"Folder","collectionExportName":"FolderCollection","displayLabelField":"name","schema":{"tableName":"folders","ddl":"CREATE TABLE IF NOT EXISTS \\"folders\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"parent_id\\" UUID,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT,\\n \\"owner_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"parent_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"folders","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"description":{"type":"TEXT","notNull":false,"unique":false},"owner_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false}},"indexes":[{"name":"folders_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"folders_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"folders_parent_id_idx","columns":["parent_id"]},{"name":"folders_owner_profile_id_idx","columns":["owner_profile_id"]}],"version":"1d0b1fcb"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:FolderCollection":{"name":"foldercollection","className":"FolderCollection","qualifiedName":"@happyvertical/smrt-assets:FolderCollection","collection":"folders","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/folders.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"getTree":{"name":"getTree","async":true,"parameters":[{"name":"rootId","type":"string","optional":true}],"returnType":"Promise<Folder[]>","isStatic":false,"isPublic":true},"getPath":{"name":"getPath","async":true,"parameters":[{"name":"folderId","type":"string","optional":false}],"returnType":"Promise<Folder[]>","isStatic":false,"isPublic":true},"getContents":{"name":"getContents","async":true,"parameters":[{"name":"folderId","type":"string","optional":false},{"name":"assetCollection","type":"AssetCollection","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"moveAsset":{"name":"moveAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"folderId","type":"string | null","optional":false,"unionBranches":[{"type":"string"},{"type":"null"}]}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]}},"extends":"SmrtCollection","extendsTypeArg":"Folder","exportName":"FolderCollection","collectionExportName":"FolderCollectionCollection","schema":{"tableName":"folders","ddl":"CREATE TABLE IF NOT EXISTS \\"folders\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"parent_id\\" UUID,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT,\\n \\"owner_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"parent_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"folders","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"description":{"type":"TEXT","notNull":false,"unique":false},"owner_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false}},"indexes":[{"name":"folders_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"folders_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"folders_parent_id_idx","columns":["parent_id"]},{"name":"folders_owner_profile_id_idx","columns":["owner_profile_id"]}],"version":"1d0b1fcb"},"importPath":"@happyvertical/smrt-assets"}},"moduleType":"smrt","recipes":[{"id":"assets.attachments","className":"AssetAttachmentsRecipe","label":"Attachments","summary":"Attach authorized files to records and retain their history.","synonyms":["file attachments","record files","supporting documents"],"models":["@happyvertical/smrt-assets:Asset","@happyvertical/smrt-assets:AssetAssociation"],"nav":[{"label":"Attachments","model":"@happyvertical/smrt-assets:Asset","icon":"fileText","description":"Supporting files connected to the record you are viewing.","key":"attachments","noun":"attachment"}],"requires":["assets.library"],"group":{"id":"assets","label":"Files and media","summary":"Organize files and media, then attach them to the records that need them."},"section":{"id":"assets","label":"Assets","icon":"folder","description":"Files, media and attachments for your work."},"options":{"@happyvertical/smrt-assets:Asset":{"fields":{"name":{"label":"File name","order":1},"description":{"label":"Description","order":2},"mimeType":{"label":"File type","order":3}}},"@happyvertical/smrt-assets:AssetAssociation":{"fields":{"assetId":{"label":"Attachment","order":1},"metaType":{"help":"The kind of record this file is connected to, such as an article or event."},"metaId":{"help":"The specific record that this file is connected to."},"role":{"label":"Role","order":2,"help":"How this file is used by the related record, such as a cover image or attachment."},"sortOrder":{"label":"Display order","order":3,"help":"The position of this attachment among files with the same role; lower numbers appear first."}}}},"help":{"markdown":"## Overview\\n\\nAttachments keep authorized supporting files connected to a record without making a public storage link. The application supplies the authorization and upload endpoint; this recipe records the asset and its relationship.\\n\\n## Tasks\\n\\n### Describe an attachment\\n\\n1. Use a clear {field:Asset.name} so people can identify the file.\\n2. Add a {field:Asset.description} when the attachment needs context.\\n3. Check the {field:Asset.mimeType} before offering the file to a viewer.\\n\\n### Link an attachment to a record\\n\\n1. Select the {field:AssetAssociation.assetId} to link.\\n2. Set a {field:AssetAssociation.role} when the record uses more than one file.\\n3. Adjust {field:AssetAssociation.sortOrder} to control display order.\\n","fieldRefs":["Asset.description","Asset.mimeType","Asset.name","AssetAssociation.assetId","AssetAssociation.role","AssetAssociation.sortOrder"]},"runtime":"both","demoSeed":{"export":"@happyvertical/smrt-assets/playground#assetAttachmentMockAttachments"},"demo":{"mode":"server","reasons":["Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624)."]}},{"id":"assets.library","className":"AssetLibraryRecipe","label":"Asset Library","summary":"Organize files and media with folders, types, and statuses.","synonyms":["media library","file library","digital assets"],"models":["@happyvertical/smrt-assets:Asset","@happyvertical/smrt-assets:Folder","@happyvertical/smrt-assets:AssetType","@happyvertical/smrt-assets:AssetStatus","@happyvertical/smrt-assets:AssetMetafield"],"nav":[{"label":"Files & media","model":"@happyvertical/smrt-assets:Asset","icon":"archive","description":"Files and media you can organize, reuse and share.","noun":"asset"},{"label":"Folders","model":"@happyvertical/smrt-assets:Folder","icon":"folder","description":"Organize assets into clear, reusable groups.","noun":"folder"}],"requires":[],"group":{"id":"assets","label":"Files and media","summary":"Organize files and media, then attach them to the records that need them."},"section":{"id":"assets","label":"Assets","icon":"folder","description":"Files, media and attachments for your work."},"options":{"@happyvertical/smrt-assets:Asset":{"fields":{"name":{"label":"Name","order":1},"description":{"order":2},"folderId":{"label":"Folder","order":3},"typeSlug":{"label":"Type","order":4},"statusSlug":{"label":"Status","order":5},"mimeType":{"label":"File type","order":6}}},"@happyvertical/smrt-assets:Folder":{"fields":{"parentId":{"help":"The containing folder; leave empty to place this folder at the top level."},"name":{"label":"Name","order":1},"description":{"order":2}}}},"help":{"markdown":"## Overview\\n\\nThe Asset Library keeps files and media in one place. Organize assets into folders, classify them by type and status, and keep a clear description for people who need to find them later.\\n\\n## Tasks\\n\\n### Add an asset\\n\\n1. Give the asset a recognizable {field:Asset.name}.\\n2. Add a {field:Asset.description} that explains how the file can be used.\\n3. Select its {field:Asset.folderId}, {field:Asset.typeSlug}, and {field:Asset.statusSlug}.\\n4. Confirm the {field:Asset.mimeType} matches the file you intend to manage.\\n\\n### Organize folders\\n\\n1. Create a folder with a descriptive {field:Folder.name}.\\n2. Use the {field:Folder.description} to explain the folder's purpose.\\n","fieldRefs":["Asset.description","Asset.folderId","Asset.mimeType","Asset.name","Asset.statusSlug","Asset.typeSlug","Folder.description","Folder.name"]},"runtime":"both","demoSeed":{"export":"@happyvertical/smrt-assets/playground#assetGridMockAssets"},"demo":{"mode":"server","reasons":["Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624)."]}}],"smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-tags","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3624"],"via":["@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
18
+ ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-assets","packageVersion":"0.57.26","objects":{"@happyvertical/smrt-assets:AssetAssociation":{"name":"assetassociation","className":"AssetAssociation","qualifiedName":"@happyvertical/smrt-assets:AssetAssociation","collection":"assetassociations","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-association.ts","packageName":"@happyvertical/smrt-assets","fields":{"metaType":{"type":"text","required":true,"_meta":{"required":true}},"metaId":{"type":"text","required":true,"_meta":{"required":true}},"role":{"type":"text","required":true,"_meta":{"required":true}},"sortOrder":{"type":"integer","required":false,"default":0},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"assetId":{"type":"foreignKey","required":true,"related":"Asset","description":"The file attached to the related record.","_meta":{"description":"The file attached to the related record.","required":true}}},"methods":{"hydrate":{"name":"hydrate","async":true,"parameters":[],"returnType":"Promise<T | null>","isStatic":false,"isPublic":true}},"decoratorConfig":{"conflictColumns":["asset_id","meta_type","meta_id","role"],"api":{"include":["list","get","create","delete"]},"mcp":{"include":["list","get","create"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"}},"extends":"SmrtPolymorphicAssociation","exportName":"AssetAssociation","collectionExportName":"AssetAssociationCollection","validationRules":[{"field":"metaType","rule":"required","fieldType":"text"},{"field":"metaId","rule":"required","fieldType":"text"},{"field":"role","rule":"required","fieldType":"text"},{"field":"assetId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"asset_associations","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_associations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"meta_type\\" TEXT NOT NULL,\\n \\"meta_id\\" TEXT NOT NULL,\\n \\"role\\" TEXT NOT NULL,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"tenant_id\\" UUID,\\n \\"asset_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"meta_type":{"type":"TEXT","notNull":true,"unique":false},"meta_id":{"type":"TEXT","notNull":true,"unique":false},"role":{"type":"TEXT","notNull":true,"unique":false},"sort_order":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"asset_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"assets","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}}},"indexes":[{"name":"asset_associations_asset_id_meta_type_idx","columns":["asset_id","meta_type","meta_id","role"],"unique":true},{"name":"asset_associations_slug_context_idx","columns":["slug","context"]},{"name":"asset_associations_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"asset_associations_meta_type_meta_id_idx","columns":["meta_type","meta_id"]}],"version":"faa13cea"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetAssociationCollection":{"name":"assetassociationcollection","className":"AssetAssociationCollection","qualifiedName":"@happyvertical/smrt-assets:AssetAssociationCollection","collection":"assetassociations","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-associations.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"byRight":{"name":"byRight","async":true,"parameters":[{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"byLeft":{"name":"byLeft","async":true,"parameters":[{"name":"metaType","type":"string","optional":false},{"name":"metaId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<AssetAssociation[]>","isStatic":false,"isPublic":true},"attach":{"name":"attach","async":true,"parameters":[{"name":"metaType","type":"string","optional":false},{"name":"metaId","type":"string","optional":false},{"name":"assetId","type":"string","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<AssetAssociation>","isStatic":false,"isPublic":true},"detach":{"name":"detach","async":true,"parameters":[{"name":"metaType","type":"string","optional":false},{"name":"metaId","type":"string","optional":false},{"name":"assetId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"metaType","type":"string","optional":false},{"name":"metaId","type":"string","optional":false},{"name":"assetIds","type":"string[]","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","delete"]},"mcp":{"include":["list","get","create"]}},"extends":"SmrtJunctionBase","extendsTypeArg":"AssetAssociation","exportName":"AssetAssociationCollection","collectionExportName":"AssetAssociationCollectionCollection","schema":{"tableName":"asset_associations","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_associations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"meta_type\\" TEXT NOT NULL,\\n \\"meta_id\\" TEXT NOT NULL,\\n \\"role\\" TEXT NOT NULL,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"tenant_id\\" UUID,\\n \\"asset_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"meta_type":{"type":"TEXT","notNull":true,"unique":false},"meta_id":{"type":"TEXT","notNull":true,"unique":false},"role":{"type":"TEXT","notNull":true,"unique":false},"sort_order":{"type":"INTEGER","notNull":false,"unique":false,"default":0},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"asset_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"assets","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}}},"indexes":[{"name":"asset_associations_asset_id_meta_type_idx","columns":["asset_id","meta_type","meta_id","role"],"unique":true},{"name":"asset_associations_slug_context_idx","columns":["slug","context"]},{"name":"asset_associations_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"asset_associations_meta_type_meta_id_idx","columns":["meta_type","meta_id"]}],"version":"faa13cea"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetMetafield":{"name":"assetmetafield","className":"AssetMetafield","qualifiedName":"@happyvertical/smrt-assets:AssetMetafield","collection":"assetmetafields","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-metafield.ts","packageName":"@happyvertical/smrt-assets","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"name":{"type":"text","required":false,"description":"The name of an additional asset detail, such as Width or Height.","_meta":{"description":"The name of an additional asset detail, such as Width or Height."}},"validation":{"type":"text","required":false,"description":"Rules that determine which values this asset detail accepts.","_meta":{"description":"Rules that determine which values this asset detail accepts."}}},"methods":{"getValidation":{"name":"getValidation","async":false,"parameters":[],"returnType":"Record<string, unknown>","isStatic":false,"isPublic":true},"setValidation":{"name":"setValidation","async":false,"parameters":[{"name":"rules","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"_slug","type":"string","optional":false}],"returnType":"Promise<AssetMetafield | null>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create"]},"cli":{"skipApiCheck":true}},"extends":"SmrtObject","exportName":"AssetMetafield","collectionExportName":"AssetMetafieldCollection","displayLabelField":"name","schema":{"tableName":"asset_metafields","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_metafields\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT,\\n \\"validation\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false},"validation":{"type":"TEXT","notNull":false}},"indexes":[{"name":"asset_metafields_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"asset_metafields_meta_type_idx","columns":["_meta_type"]},{"name":"asset_metafields_created_at_idx","columns":["created_at"]}],"version":"7393718c"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetMetafieldCollection":{"name":"assetmetafieldcollection","className":"AssetMetafieldCollection","qualifiedName":"@happyvertical/smrt-assets:AssetMetafieldCollection","collection":"assetmetafields","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-metafields.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"getOrCreate":{"name":"getOrCreate","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"name","type":"string","optional":true},{"name":"validation","type":"string | Record<string, unknown>","optional":true,"unionBranches":[{"type":"string"},{"type":"Record<string, unknown>"}]}],"returnType":"Promise<AssetMetafield>","isStatic":false,"isPublic":true},"initializeCommonMetafields":{"name":"initializeCommonMetafields","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create"]}},"extends":"SmrtCollection","extendsTypeArg":"AssetMetafield","exportName":"AssetMetafieldCollection","collectionExportName":"AssetMetafieldCollectionCollection","schema":{"tableName":"asset_metafields","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_metafields\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT,\\n \\"validation\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false},"validation":{"type":"TEXT","notNull":false}},"indexes":[{"name":"asset_metafields_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"asset_metafields_meta_type_idx","columns":["_meta_type"]},{"name":"asset_metafields_created_at_idx","columns":["created_at"]}],"version":"7393718c"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetStatus":{"name":"assetstatus","className":"AssetStatus","qualifiedName":"@happyvertical/smrt-assets:AssetStatus","collection":"assetstatuses","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-status.ts","packageName":"@happyvertical/smrt-assets","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"name":{"type":"text","required":false,"description":"The name of this lifecycle stage, such as Draft or Published.","_meta":{"description":"The name of this lifecycle stage, such as Draft or Published."}},"description":{"type":"text","required":false,"description":"Explain when an asset should use this lifecycle stage.","_meta":{"description":"Explain when an asset should use this lifecycle stage."}}},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"_slug","type":"string","optional":false}],"returnType":"Promise<AssetStatus | null>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create"]},"cli":{"skipApiCheck":true}},"extends":"SmrtObject","exportName":"AssetStatus","collectionExportName":"AssetStatusCollection","displayLabelField":"name","schema":{"tableName":"asset_statuses","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_statuses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false}},"indexes":[{"name":"asset_statuses_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"asset_statuses_meta_type_idx","columns":["_meta_type"]},{"name":"asset_statuses_created_at_idx","columns":["created_at"]}],"version":"8251a52f"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetStatusCollection":{"name":"assetstatuscollection","className":"AssetStatusCollection","qualifiedName":"@happyvertical/smrt-assets:AssetStatusCollection","collection":"assetstatuses","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-statuses.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"getOrCreate":{"name":"getOrCreate","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"name","type":"string","optional":true},{"name":"description","type":"string","optional":true}],"returnType":"Promise<AssetStatus>","isStatic":false,"isPublic":true},"initializeCommonStatuses":{"name":"initializeCommonStatuses","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create"]}},"extends":"SmrtCollection","extendsTypeArg":"AssetStatus","exportName":"AssetStatusCollection","collectionExportName":"AssetStatusCollectionCollection","schema":{"tableName":"asset_statuses","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_statuses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false}},"indexes":[{"name":"asset_statuses_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"asset_statuses_meta_type_idx","columns":["_meta_type"]},{"name":"asset_statuses_created_at_idx","columns":["created_at"]}],"version":"8251a52f"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetTag":{"name":"assettag","className":"AssetTag","qualifiedName":"@happyvertical/smrt-assets:AssetTag","collection":"assettags","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-tag.ts","packageName":"@happyvertical/smrt-assets","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"assetId":{"type":"foreignKey","required":true,"related":"Asset","_meta":{"required":true,"onDelete":"CASCADE"}},"tagId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-tags:Tag","_meta":{"onDelete":"CASCADE"}}},"methods":{},"decoratorConfig":{"tableName":"asset_tags","conflictColumns":["asset_id","tag_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional"}},"extends":"SmrtObject","exportName":"AssetTag","collectionExportName":"AssetTagCollection","validationRules":[{"field":"assetId","rule":"required","fieldType":"foreignKey"},{"field":"tagId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"asset_tags","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_tags\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"tag_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"asset_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"assets","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"tag_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false}},"indexes":[{"name":"asset_tags_asset_id_tag_id_idx","columns":["asset_id","tag_id"],"unique":true},{"name":"asset_tags_slug_context_idx","columns":["slug","context"]},{"name":"asset_tags_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"asset_tags_tag_id_idx","columns":["tag_id"]}],"version":"e60d24f5"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetTagCollection":{"name":"assettagcollection","className":"AssetTagCollection","qualifiedName":"@happyvertical/smrt-assets:AssetTagCollection","collection":"assettags","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-tags.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"byRight":{"name":"byRight","async":true,"parameters":[{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"byLeft":{"name":"byLeft","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"attach":{"name":"attach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<TItem>","isStatic":false,"isPublic":true},"detach":{"name":"detach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightIds","type":"string[]","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"asset_tags","api":false,"mcp":false,"cli":false},"extends":"SmrtJunction","extendsTypeArg":"AssetTag","exportName":"AssetTagCollection","collectionExportName":"AssetTagCollectionCollection","schema":{"tableName":"asset_tags","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_tags\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"tag_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"asset_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"assets","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"tag_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false}},"indexes":[{"name":"asset_tags_asset_id_tag_id_idx","columns":["asset_id","tag_id"],"unique":true},{"name":"asset_tags_slug_context_idx","columns":["slug","context"]},{"name":"asset_tags_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"asset_tags_tag_id_idx","columns":["tag_id"]}],"version":"e60d24f5"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetType":{"name":"assettype","className":"AssetType","qualifiedName":"@happyvertical/smrt-assets:AssetType","collection":"assettypes","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-type.ts","packageName":"@happyvertical/smrt-assets","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"name":{"type":"text","required":false,"description":"The name of this file category, such as Image or Document.","_meta":{"description":"The name of this file category, such as Image or Document."}},"description":{"type":"text","required":false,"description":"Explain which kinds of files belong in this category.","_meta":{"description":"Explain which kinds of files belong in this category."}}},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"_slug","type":"string","optional":false}],"returnType":"Promise<AssetType | null>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create"]},"cli":{"skipApiCheck":true}},"extends":"SmrtObject","exportName":"AssetType","collectionExportName":"AssetTypeCollection","displayLabelField":"name","schema":{"tableName":"asset_types","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_types\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false}},"indexes":[{"name":"asset_types_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"asset_types_meta_type_idx","columns":["_meta_type"]},{"name":"asset_types_created_at_idx","columns":["created_at"]}],"version":"a9c93be2"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetTypeCollection":{"name":"assettypecollection","className":"AssetTypeCollection","qualifiedName":"@happyvertical/smrt-assets:AssetTypeCollection","collection":"assettypes","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset-types.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"getOrCreate":{"name":"getOrCreate","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"name","type":"string","optional":true},{"name":"description","type":"string","optional":true}],"returnType":"Promise<AssetType>","isStatic":false,"isPublic":true},"initializeCommonTypes":{"name":"initializeCommonTypes","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create"]}},"extends":"SmrtCollection","extendsTypeArg":"AssetType","exportName":"AssetTypeCollection","collectionExportName":"AssetTypeCollectionCollection","schema":{"tableName":"asset_types","ddl":"CREATE TABLE IF NOT EXISTS \\"asset_types\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false}},"indexes":[{"name":"asset_types_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"asset_types_meta_type_idx","columns":["_meta_type"]},{"name":"asset_types_created_at_idx","columns":["created_at"]}],"version":"a9c93be2"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:Asset":{"name":"asset","className":"Asset","qualifiedName":"@happyvertical/smrt-assets:Asset","collection":"assets","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/asset.ts","packageName":"@happyvertical/smrt-assets","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"accessMode":{"type":"text","required":false,"default":"public","description":"Whether this record is public to ordinary asset APIs or private.","_meta":{"description":"Whether this record is public to ordinary asset APIs or private."},"enum":["public","private"]},"name":{"type":"text","required":false,"description":"A recognizable name for this file or media item.","_meta":{"description":"A recognizable name for this file or media item."}},"sourceUri":{"type":"text","required":false,"description":"Where the original file is stored or can be retrieved.","_meta":{"description":"Where the original file is stored or can be retrieved."}},"mimeType":{"type":"text","required":false,"description":"The file format, such as image/jpeg or application/pdf.","_meta":{"description":"The file format, such as image/jpeg or application/pdf."}},"description":{"type":"text","required":false,"description":"Explain what the file contains and when it should be used.","_meta":{"description":"Explain what the file contains and when it should be used."}},"metadata":{"type":"text","required":false,"description":"Additional details recorded while processing this file.","_meta":{"description":"Additional details recorded while processing this file."}},"version":{"type":"integer","required":true,"default":1,"description":"The revision number of this file in its version history.","_meta":{"description":"The revision number of this file in its version history."}},"primaryVersionId":{"type":"foreignKey","required":false,"related":"Asset","description":"The first version of this file, linking its revision history.","_meta":{"description":"The first version of this file, linking its revision history."}},"typeSlug":{"type":"text","required":false,"description":"The category of asset, such as an image, video, or document.","_meta":{"description":"The category of asset, such as an image, video, or document."}},"statusSlug":{"type":"text","required":false,"description":"The stage of this asset, such as draft, published, or archived.","_meta":{"description":"The stage of this asset, such as draft, published, or archived."}},"ownerProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","description":"The person or organization responsible for this asset.","_meta":{"description":"The person or organization responsible for this asset."}},"sourceAssetId":{"type":"foreignKey","required":false,"related":"Asset","description":"The original asset used to produce this file or variation.","_meta":{"description":"The original asset used to produce this file or variation."}},"folderId":{"type":"foreignKey","required":false,"related":"Folder","description":"The folder that organizes this file in the asset library.","_meta":{"description":"The folder that organizes this file in the asset library."}},"sourceType":{"type":"text","required":false,"description":"The service or source from which this file was obtained.","_meta":{"description":"The service or source from which this file was obtained."}},"externalId":{"type":"text","required":false,"description":"The reference used to identify this file at its original source.","_meta":{"description":"The reference used to identify this file at its original source."}},"externalRefs":{"type":"text","required":false,"description":"References that connect this file to copies held by other services.","_meta":{"description":"References that connect this file to copies held by other services."}},"createdAt":{"type":"text","required":false},"updatedAt":{"type":"text","required":false}},"methods":{"getSlug":{"name":"getSlug","async":true,"parameters":[],"returnType":"Promise<string | null | undefined>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":false,"parameters":[],"returnType":"Record<string, unknown>","isStatic":false,"isPublic":true},"setMetadata":{"name":"setMetadata","async":false,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"mergeMetadata":{"name":"mergeMetadata","async":false,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"getExternalRefs":{"name":"getExternalRefs","async":false,"parameters":[],"returnType":"Record<string, AssetExternalReference>","isStatic":false,"isPublic":true},"getExternalRef":{"name":"getExternalRef","async":false,"parameters":[{"name":"provider","type":"string","optional":false}],"returnType":"AssetExternalReference | null","isStatic":false,"isPublic":true},"setExternalRef":{"name":"setExternalRef","async":false,"parameters":[{"name":"provider","type":"string","optional":false},{"name":"reference","type":"any","optional":false,"typeUnresolved":true}],"returnType":"void","isStatic":false,"isPublic":true},"getTags":{"name":"getTags","async":true,"parameters":[],"returnType":"Promise<Tag[]>","isStatic":false,"isPublic":true},"hasTag":{"name":"hasTag","async":true,"parameters":[{"name":"tagSlug","type":"string","optional":false},{"name":"context","type":"string","optional":true}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"getSource":{"name":"getSource","async":true,"parameters":[],"returnType":"Promise<Asset | null>","isStatic":false,"isPublic":true},"getDerivatives":{"name":"getDerivatives","async":true,"parameters":[],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"getType":{"name":"getType","async":true,"parameters":[],"returnType":"Promise<AssetType | null>","isStatic":false,"isPublic":true},"getStatus":{"name":"getStatus","async":true,"parameters":[],"returnType":"Promise<AssetStatus | null>","isStatic":false,"isPublic":true},"getAssociations":{"name":"getAssociations","async":true,"parameters":[],"returnType":"Promise<AssetAssociation[]>","isStatic":false,"isPublic":true},"associateWith":{"name":"associateWith","async":true,"parameters":[{"name":"metaType","type":"string","optional":false},{"name":"metaId","type":"string","optional":false},{"name":"role","type":"any","optional":true,"default":"default"}],"returnType":"Promise<AssetAssociation>","isStatic":false,"isPublic":true},"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"_slug","type":"string","optional":false}],"returnType":"Promise<Asset | null>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"Asset","collectionExportName":"AssetCollection","displayLabelField":"name","validationRules":[{"field":"version","rule":"required","fieldType":"integer"}],"schema":{"tableName":"assets","ddl":"CREATE TABLE IF NOT EXISTS \\"assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"access_mode\\" TEXT DEFAULT 'public',\\n \\"name\\" TEXT,\\n \\"source_uri\\" TEXT,\\n \\"mime_type\\" TEXT,\\n \\"description\\" TEXT,\\n \\"metadata\\" TEXT,\\n \\"version\\" INTEGER DEFAULT 1,\\n \\"primary_version_id\\" UUID,\\n \\"type_slug\\" TEXT,\\n \\"status_slug\\" TEXT,\\n \\"owner_profile_id\\" UUID,\\n \\"source_asset_id\\" UUID,\\n \\"folder_id\\" UUID,\\n \\"source_type\\" TEXT,\\n \\"external_id\\" TEXT,\\n \\"external_refs\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"access_mode":{"type":"TEXT","notNull":false,"default":"public"},"name":{"type":"TEXT","notNull":false},"source_uri":{"type":"TEXT","notNull":false},"mime_type":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"metadata":{"type":"TEXT","notNull":false},"version":{"type":"INTEGER","notNull":false,"default":1},"primary_version_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"assets","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"type_slug":{"type":"TEXT","notNull":false},"status_slug":{"type":"TEXT","notNull":false},"owner_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false},"source_asset_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"assets","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"folder_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"folders","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"source_type":{"type":"TEXT","notNull":false},"external_id":{"type":"TEXT","notNull":false},"external_refs":{"type":"TEXT","notNull":false}},"indexes":[{"name":"assets_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"assets_meta_type_idx","columns":["_meta_type"]},{"name":"assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"assets_primary_version_id_idx","columns":["primary_version_id"]},{"name":"assets_owner_profile_id_idx","columns":["owner_profile_id"]},{"name":"assets_source_asset_id_idx","columns":["source_asset_id"]},{"name":"assets_folder_id_idx","columns":["folder_id"]}],"version":"0e75029e"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:AssetCollection":{"name":"assetcollection","className":"AssetCollection","qualifiedName":"@happyvertical/smrt-assets:AssetCollection","collection":"assets","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/assets.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addTag":{"name":"addTag","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"tag","type":"string","optional":false},{"name":"options","type":"AssetTagInput","optional":true}],"returnType":"Promise<Tag>","isStatic":false,"isPublic":true},"removeTag":{"name":"removeTag","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"tag","type":"string","optional":false},{"name":"options","type":"Pick<AssetTagInput, 'context'>","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"setTags":{"name":"setTags","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"tags","type":"string[]","optional":false},{"name":"options","type":"Pick<AssetTagInput, 'context'>","optional":true}],"returnType":"Promise<Tag[]>","isStatic":false,"isPublic":true},"getTagsForAssets":{"name":"getTagsForAssets","async":true,"parameters":[{"name":"assetIds","type":"string[]","optional":false}],"returnType":"Promise<Map<string, Tag[]>>","isStatic":false,"isPublic":true},"getByTag":{"name":"getByTag","async":true,"parameters":[{"name":"tag","type":"string","optional":false},{"name":"options","type":"Pick<AssetTagInput, 'context'>","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"getByType":{"name":"getByType","async":true,"parameters":[{"name":"typeSlug","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"getByStatus":{"name":"getByStatus","async":true,"parameters":[{"name":"statusSlug","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"getByOwner":{"name":"getByOwner","async":true,"parameters":[{"name":"ownerProfileId","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"createNewVersion":{"name":"createNewVersion","async":true,"parameters":[{"name":"primaryVersionId","type":"string","optional":false},{"name":"newSourceUri","type":"string","optional":false},{"name":"updates","type":"Partial<Asset>","optional":true}],"returnType":"Promise<Asset>","isStatic":false,"isPublic":true},"getLatestVersion":{"name":"getLatestVersion","async":true,"parameters":[{"name":"primaryVersionId","type":"string","optional":false}],"returnType":"Promise<Asset | null>","isStatic":false,"isPublic":true},"listVersions":{"name":"listVersions","async":true,"parameters":[{"name":"primaryVersionId","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"getDerivatives":{"name":"getDerivatives","async":true,"parameters":[{"name":"sourceAssetId","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"getByMimeType":{"name":"getByMimeType","async":true,"parameters":[{"name":"mimePattern","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"rollbackToVersion":{"name":"rollbackToVersion","async":true,"parameters":[{"name":"primaryVersionId","type":"string","optional":false},{"name":"targetVersion","type":"number","optional":false}],"returnType":"Promise<Asset>","isStatic":false,"isPublic":true},"getByFolder":{"name":"getByFolder","async":true,"parameters":[{"name":"folderId","type":"string","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]}},"extends":"SmrtCollection","extendsTypeArg":"Asset","exportName":"AssetCollection","collectionExportName":"AssetCollectionCollection","schema":{"tableName":"assets","ddl":"CREATE TABLE IF NOT EXISTS \\"assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"access_mode\\" TEXT DEFAULT 'public',\\n \\"name\\" TEXT,\\n \\"source_uri\\" TEXT,\\n \\"mime_type\\" TEXT,\\n \\"description\\" TEXT,\\n \\"metadata\\" TEXT,\\n \\"version\\" INTEGER DEFAULT 1,\\n \\"primary_version_id\\" UUID,\\n \\"type_slug\\" TEXT,\\n \\"status_slug\\" TEXT,\\n \\"owner_profile_id\\" UUID,\\n \\"source_asset_id\\" UUID,\\n \\"folder_id\\" UUID,\\n \\"source_type\\" TEXT,\\n \\"external_id\\" TEXT,\\n \\"external_refs\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"access_mode":{"type":"TEXT","notNull":false,"default":"public"},"name":{"type":"TEXT","notNull":false},"source_uri":{"type":"TEXT","notNull":false},"mime_type":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"metadata":{"type":"TEXT","notNull":false},"version":{"type":"INTEGER","notNull":false,"default":1},"primary_version_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"assets","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"type_slug":{"type":"TEXT","notNull":false},"status_slug":{"type":"TEXT","notNull":false},"owner_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false},"source_asset_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"assets","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"folder_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"folders","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"source_type":{"type":"TEXT","notNull":false},"external_id":{"type":"TEXT","notNull":false},"external_refs":{"type":"TEXT","notNull":false}},"indexes":[{"name":"assets_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"assets_meta_type_idx","columns":["_meta_type"]},{"name":"assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"assets_primary_version_id_idx","columns":["primary_version_id"]},{"name":"assets_owner_profile_id_idx","columns":["owner_profile_id"]},{"name":"assets_source_asset_id_idx","columns":["source_asset_id"]},{"name":"assets_folder_id_idx","columns":["folder_id"]}],"version":"0e75029e"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:Folder":{"name":"folder","className":"Folder","qualifiedName":"@happyvertical/smrt-assets:Folder","collection":"folders","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/folder.ts","packageName":"@happyvertical/smrt-assets","fields":{"parentId":{"type":"foreignKey","required":false,"related":"Folder","_meta":{"nullable":true}},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"name":{"type":"text","required":false,"description":"A recognizable name for this group of files.","_meta":{"description":"A recognizable name for this group of files."}},"description":{"type":"text","required":false,"description":"Explain the purpose of this folder and which files belong here.","_meta":{"description":"Explain the purpose of this folder and which files belong here."}},"ownerProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","description":"The person or organization responsible for this folder.","_meta":{"description":"The person or organization responsible for this folder."}},"createdAt":{"type":"text","required":false},"updatedAt":{"type":"text","required":false}},"methods":{"getParent":{"name":"getParent","async":true,"parameters":[],"returnType":"Promise<this | null>","isStatic":false,"isPublic":true},"getChildren":{"name":"getChildren","async":true,"parameters":[],"returnType":"Promise<this[]>","isStatic":false,"isPublic":true},"getAncestors":{"name":"getAncestors","async":true,"parameters":[],"returnType":"Promise<this[]>","isStatic":false,"isPublic":true},"getDescendants":{"name":"getDescendants","async":true,"parameters":[],"returnType":"Promise<this[]>","isStatic":false,"isPublic":true},"getHierarchy":{"name":"getHierarchy","async":true,"parameters":[],"returnType":"Promise<HierarchyView<this>>","isStatic":false,"isPublic":true},"moveTo":{"name":"moveTo","async":true,"parameters":[{"name":"newParent","type":"this | string | null","optional":false,"unionBranches":[{"type":"this"},{"type":"string"},{"type":"null"}]}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"_slug","type":"string","optional":false}],"returnType":"Promise<Folder | null>","isStatic":true,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtHierarchical","exportName":"Folder","collectionExportName":"FolderCollection","displayLabelField":"name","schema":{"tableName":"folders","ddl":"CREATE TABLE IF NOT EXISTS \\"folders\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"parent_id\\" UUID,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT,\\n \\"owner_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"parent_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"folders","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"description":{"type":"TEXT","notNull":false,"unique":false},"owner_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false}},"indexes":[{"name":"folders_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"folders_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"folders_parent_id_idx","columns":["parent_id"]},{"name":"folders_owner_profile_id_idx","columns":["owner_profile_id"]}],"version":"1d0b1fcb"},"importPath":"@happyvertical/smrt-assets"},"@happyvertical/smrt-assets:FolderCollection":{"name":"foldercollection","className":"FolderCollection","qualifiedName":"@happyvertical/smrt-assets:FolderCollection","collection":"folders","filePath":"/home/runner/work/smrt/smrt/packages/assets/src/folders.ts","packageName":"@happyvertical/smrt-assets","fields":{},"methods":{"getTree":{"name":"getTree","async":true,"parameters":[{"name":"rootId","type":"string","optional":true}],"returnType":"Promise<Folder[]>","isStatic":false,"isPublic":true},"getPath":{"name":"getPath","async":true,"parameters":[{"name":"folderId","type":"string","optional":false}],"returnType":"Promise<Folder[]>","isStatic":false,"isPublic":true},"getContents":{"name":"getContents","async":true,"parameters":[{"name":"folderId","type":"string","optional":false},{"name":"assetCollection","type":"AssetCollection","optional":false}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"moveAsset":{"name":"moveAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"folderId","type":"string | null","optional":false,"unionBranches":[{"type":"string"},{"type":"null"}]}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]}},"extends":"SmrtCollection","extendsTypeArg":"Folder","exportName":"FolderCollection","collectionExportName":"FolderCollectionCollection","schema":{"tableName":"folders","ddl":"CREATE TABLE IF NOT EXISTS \\"folders\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"parent_id\\" UUID,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT,\\n \\"owner_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"parent_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"folders","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"description":{"type":"TEXT","notNull":false,"unique":false},"owner_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false}},"indexes":[{"name":"folders_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"folders_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"folders_parent_id_idx","columns":["parent_id"]},{"name":"folders_owner_profile_id_idx","columns":["owner_profile_id"]}],"version":"1d0b1fcb"},"importPath":"@happyvertical/smrt-assets"}},"moduleType":"smrt","recipes":[{"id":"assets.attachments","className":"AssetAttachmentsRecipe","label":"Attachments","summary":"Attach authorized files to records and retain their history.","synonyms":["file attachments","record files","supporting documents"],"models":["@happyvertical/smrt-assets:Asset","@happyvertical/smrt-assets:AssetAssociation"],"nav":[{"label":"Attachments","model":"@happyvertical/smrt-assets:Asset","icon":"fileText","description":"Supporting files connected to the record you are viewing.","key":"attachments","noun":"attachment"}],"requires":["assets.library"],"group":{"id":"assets","label":"Files and media","summary":"Organize files and media, then attach them to the records that need them."},"section":{"id":"assets","label":"Assets","icon":"folder","description":"Files, media and attachments for your work."},"options":{"@happyvertical/smrt-assets:Asset":{"fields":{"name":{"label":"File name","order":1},"description":{"label":"Description","order":2},"mimeType":{"label":"File type","order":3}}},"@happyvertical/smrt-assets:AssetAssociation":{"fields":{"assetId":{"label":"Attachment","order":1},"metaType":{"help":"The kind of record this file is connected to, such as an article or event."},"metaId":{"help":"The specific record that this file is connected to."},"role":{"label":"Role","order":2,"help":"How this file is used by the related record, such as a cover image or attachment."},"sortOrder":{"label":"Display order","order":3,"help":"The position of this attachment among files with the same role; lower numbers appear first."}}}},"help":{"markdown":"## Overview\\n\\nAttachments keep authorized supporting files connected to a record without making a public storage link. The application supplies the authorization and upload endpoint; this recipe records the asset and its relationship.\\n\\n## Tasks\\n\\n### Describe an attachment\\n\\n1. Use a clear {field:Asset.name} so people can identify the file.\\n2. Add a {field:Asset.description} when the attachment needs context.\\n3. Check the {field:Asset.mimeType} before offering the file to a viewer.\\n\\n### Link an attachment to a record\\n\\n1. Select the {field:AssetAssociation.assetId} to link.\\n2. Set a {field:AssetAssociation.role} when the record uses more than one file.\\n3. Adjust {field:AssetAssociation.sortOrder} to control display order.\\n","fieldRefs":["Asset.description","Asset.mimeType","Asset.name","AssetAssociation.assetId","AssetAssociation.role","AssetAssociation.sortOrder"]},"runtime":"both","demoSeed":{"export":"@happyvertical/smrt-assets/playground#assetAttachmentMockAttachments"},"demo":{"mode":"server","reasons":["Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624)."]}},{"id":"assets.library","className":"AssetLibraryRecipe","label":"Asset Library","summary":"Organize files and media with folders, types, and statuses.","synonyms":["media library","file library","digital assets"],"models":["@happyvertical/smrt-assets:Asset","@happyvertical/smrt-assets:Folder","@happyvertical/smrt-assets:AssetType","@happyvertical/smrt-assets:AssetStatus","@happyvertical/smrt-assets:AssetMetafield"],"nav":[{"label":"Files & media","model":"@happyvertical/smrt-assets:Asset","icon":"archive","description":"Files and media you can organize, reuse and share.","noun":"asset"},{"label":"Folders","model":"@happyvertical/smrt-assets:Folder","icon":"folder","description":"Organize assets into clear, reusable groups.","noun":"folder"}],"requires":[],"group":{"id":"assets","label":"Files and media","summary":"Organize files and media, then attach them to the records that need them."},"section":{"id":"assets","label":"Assets","icon":"folder","description":"Files, media and attachments for your work."},"options":{"@happyvertical/smrt-assets:Asset":{"fields":{"name":{"label":"Name","order":1},"description":{"order":2},"folderId":{"label":"Folder","order":3},"typeSlug":{"label":"Type","order":4},"statusSlug":{"label":"Status","order":5},"mimeType":{"label":"File type","order":6}}},"@happyvertical/smrt-assets:Folder":{"fields":{"parentId":{"help":"The containing folder; leave empty to place this folder at the top level."},"name":{"label":"Name","order":1},"description":{"order":2}}}},"help":{"markdown":"## Overview\\n\\nThe Asset Library keeps files and media in one place. Organize assets into folders, classify them by type and status, and keep a clear description for people who need to find them later.\\n\\n## Tasks\\n\\n### Add an asset\\n\\n1. Give the asset a recognizable {field:Asset.name}.\\n2. Add a {field:Asset.description} that explains how the file can be used.\\n3. Select its {field:Asset.folderId}, {field:Asset.typeSlug}, and {field:Asset.statusSlug}.\\n4. Confirm the {field:Asset.mimeType} matches the file you intend to manage.\\n\\n### Organize folders\\n\\n1. Create a folder with a descriptive {field:Folder.name}.\\n2. Use the {field:Folder.description} to explain the folder's purpose.\\n","fieldRefs":["Asset.description","Asset.folderId","Asset.mimeType","Asset.name","Asset.statusSlug","Asset.typeSlug","Folder.description","Folder.name"]},"runtime":"both","demoSeed":{"export":"@happyvertical/smrt-assets/playground#assetGridMockAssets"},"demo":{"mode":"server","reasons":["Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624)."]}}],"smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-tags","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3624"],"via":["@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
19
19
  //#endregion
20
20
  //#region src/asset-association.ts
21
21
  var __defProp$8 = Object.defineProperty;