@happyvertical/smrt-products 0.55.22 → 0.55.24
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/lib/chunks/{__smrt-register__-CdwszHtZ.js → __smrt-register__-B7ze66--.js} +2 -2
- package/dist/lib/chunks/{__smrt-register__-CdwszHtZ.js.map → __smrt-register__-B7ze66--.js.map} +1 -1
- package/dist/lib/chunks/{collections-CUwL7Dq6.js → collections-aY9egZrC.js} +2 -2
- package/dist/lib/chunks/{collections-CUwL7Dq6.js.map → collections-aY9egZrC.js.map} +1 -1
- package/dist/lib/chunks/{generated-Cwx8YMiS.js → generated-WvFXlRWO.js} +2 -2
- package/dist/lib/chunks/{generated-Cwx8YMiS.js.map → generated-WvFXlRWO.js.map} +1 -1
- package/dist/lib/chunks/models-DHIlPiZy.js +2 -0
- package/dist/lib/collections.js +1 -1
- package/dist/lib/generated.js +1 -1
- package/dist/lib/index.js +4 -4
- package/dist/lib/manifest.json +1 -1
- package/dist/lib/models.js +1 -1
- package/dist/lib/smrt-knowledge.json +3 -3
- package/package.json +14 -14
- package/dist/lib/chunks/models-CVqA-k81.js +0 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ObjectRegistry } from "@happyvertical/smrt-core";
|
|
2
2
|
//#region src/__smrt-register__.ts
|
|
3
|
-
ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-products\",\"packageVersion\":\"0.55.22\",\"objects\":{\"@happyvertical/smrt-products:CategoryCollection\":{\"name\":\"categorycollection\",\"className\":\"CategoryCollection\",\"qualifiedName\":\"@happyvertical/smrt-products:CategoryCollection\",\"collection\":\"categories\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/collections/CategoryCollection.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"fields\":{},\"methods\":{\"getRootCategories\":{\"name\":\"getRootCategories\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Category[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Category\",\"exportName\":\"CategoryCollection\",\"collectionExportName\":\"CategoryCollectionCollection\",\"schema\":{\"tableName\":\"categories\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"categories\\\" (\\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 \\\"name\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"parent_id\\\" UUID,\\n \\\"level\\\" INTEGER DEFAULT 0,\\n \\\"product_count\\\" INTEGER DEFAULT 0,\\n \\\"active\\\" BOOLEAN DEFAULT TRUE\\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},\"name\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"parent_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"categories\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"level\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"product_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"active\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true}},\"indexes\":[{\"name\":\"categories_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"categories_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"categories_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"categories_parent_id_idx\",\"columns\":[\"parent_id\"]}],\"version\":\"78838be9\"},\"importPath\":\"@happyvertical/smrt-products/collections\"},\"@happyvertical/smrt-products:MaterialCollection\":{\"name\":\"materialcollection\",\"className\":\"MaterialCollection\",\"qualifiedName\":\"@happyvertical/smrt-products:MaterialCollection\",\"collection\":\"products\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/collections/MaterialCollection.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"fields\":{},\"methods\":{\"findByManufacturer\":{\"name\":\"findByManufacturer\",\"async\":true,\"parameters\":[{\"name\":\"manufacturer\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Product[]>\",\"isStatic\":false,\"isPublic\":true},\"findInStock\":{\"name\":\"findInStock\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Product[]>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"findByKind\":{\"name\":\"findByKind\",\"async\":true,\"parameters\":[{\"name\":\"materialKind\",\"type\":\"MaterialKind\",\"optional\":false}],\"returnType\":\"Promise<Material[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"products\"},\"extends\":\"ProductCollection\",\"exportName\":\"MaterialCollection\",\"collectionExportName\":\"MaterialCollectionCollection\",\"schema\":{\"tableName\":\"products\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"products\\\" (\\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 \\\"product_type\\\" TEXT,\\n \\\"name\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"category\\\" TEXT,\\n \\\"manufacturer\\\" TEXT,\\n \\\"model\\\" TEXT,\\n \\\"price\\\" INTEGER DEFAULT 0,\\n \\\"in_stock\\\" BOOLEAN DEFAULT TRUE,\\n \\\"specifications\\\" JSON DEFAULT '{}',\\n \\\"tags\\\" JSON DEFAULT '[]'\\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},\"product_type\":{\"type\":\"TEXT\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"category\":{\"type\":\"TEXT\",\"notNull\":false},\"manufacturer\":{\"type\":\"TEXT\",\"notNull\":false},\"model\":{\"type\":\"TEXT\",\"notNull\":false},\"price\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"in_stock\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"specifications\":{\"type\":\"JSON\",\"notNull\":false,\"default\":{}},\"tags\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]}},\"indexes\":[{\"name\":\"products_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"products_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"products_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"a7b4d592\"},\"importPath\":\"@happyvertical/smrt-products/collections\"},\"@happyvertical/smrt-products:ProductAssetCollection\":{\"name\":\"productassetcollection\",\"className\":\"ProductAssetCollection\",\"qualifiedName\":\"@happyvertical/smrt-products:ProductAssetCollection\",\"collection\":\"productassets\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/collections/ProductAssetCollection.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":false,\"mcp\":false,\"cli\":false,\"tableName\":\"product_assets\"},\"extends\":\"SmrtJunction\",\"extendsTypeArg\":\"ProductAsset\",\"exportName\":\"ProductAssetCollection\",\"collectionExportName\":\"ProductAssetCollectionCollection\",\"schema\":{\"tableName\":\"product_assets\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"product_assets\\\" (\\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 \\\"product_id\\\" UUID NOT NULL,\\n \\\"asset_id\\\" UUID NOT NULL,\\n \\\"relationship\\\" TEXT NOT NULL,\\n \\\"sort_order\\\" INTEGER NOT NULL DEFAULT 0\\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},\"product_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"products\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"asset_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":true,\"unique\":false},\"relationship\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"sort_order\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"product_assets_product_id_asset_id_idx\",\"columns\":[\"product_id\",\"asset_id\",\"relationship\",\"tenant_id\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"product_assets_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"product_assets_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"product_assets_asset_id_idx\",\"columns\":[\"asset_id\"]}],\"version\":\"9d67ec65\"},\"importPath\":\"@happyvertical/smrt-products/collections\"},\"@happyvertical/smrt-products:ProductCollection\":{\"name\":\"productcollection\",\"className\":\"ProductCollection\",\"qualifiedName\":\"@happyvertical/smrt-products:ProductCollection\",\"collection\":\"products\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/collections/ProductCollection.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"fields\":{},\"methods\":{\"findByManufacturer\":{\"name\":\"findByManufacturer\",\"async\":true,\"parameters\":[{\"name\":\"manufacturer\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Product[]>\",\"isStatic\":false,\"isPublic\":true},\"findInStock\":{\"name\":\"findInStock\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Product[]>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Product\",\"exportName\":\"ProductCollection\",\"collectionExportName\":\"ProductCollectionCollection\",\"schema\":{\"tableName\":\"products\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"products\\\" (\\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 \\\"product_type\\\" TEXT,\\n \\\"name\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"category\\\" TEXT,\\n \\\"manufacturer\\\" TEXT,\\n \\\"model\\\" TEXT,\\n \\\"price\\\" INTEGER DEFAULT 0,\\n \\\"in_stock\\\" BOOLEAN DEFAULT TRUE,\\n \\\"specifications\\\" JSON DEFAULT '{}',\\n \\\"tags\\\" JSON DEFAULT '[]'\\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},\"product_type\":{\"type\":\"TEXT\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"category\":{\"type\":\"TEXT\",\"notNull\":false},\"manufacturer\":{\"type\":\"TEXT\",\"notNull\":false},\"model\":{\"type\":\"TEXT\",\"notNull\":false},\"price\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"in_stock\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"specifications\":{\"type\":\"JSON\",\"notNull\":false,\"default\":{}},\"tags\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]}},\"indexes\":[{\"name\":\"products_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"products_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"products_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"a7b4d592\"},\"importPath\":\"@happyvertical/smrt-products/collections\"},\"@happyvertical/smrt-products:ProductVariantCollection\":{\"name\":\"productvariantcollection\",\"className\":\"ProductVariantCollection\",\"qualifiedName\":\"@happyvertical/smrt-products:ProductVariantCollection\",\"collection\":\"productvariants\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/collections/ProductVariantCollection.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"fields\":{},\"methods\":{\"findForProduct\":{\"name\":\"findForProduct\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProductVariant[]>\",\"isStatic\":false,\"isPublic\":true},\"findAxis\":{\"name\":\"findAxis\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"axisName\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProductVariant | null>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"product_variants\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProductVariant\",\"exportName\":\"ProductVariantCollection\",\"collectionExportName\":\"ProductVariantCollectionCollection\",\"schema\":{\"tableName\":\"product_variants\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"product_variants\\\" (\\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 \\\"product_id\\\" TEXT NOT NULL DEFAULT '',\\n \\\"axis_name\\\" TEXT NOT NULL DEFAULT '',\\n \\\"label\\\" TEXT DEFAULT '',\\n \\\"allowed_values\\\" TEXT DEFAULT '[]',\\n \\\"sort_order\\\" INTEGER DEFAULT 0\\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},\"product_id\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"axis_name\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"label\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"allowed_values\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"[]\"},\"sort_order\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"product_variants_product_id_axis_name_idx\",\"columns\":[\"product_id\",\"axis_name\",\"tenant_id\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"product_variants_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"product_variants_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"2891ff02\"},\"importPath\":\"@happyvertical/smrt-products/collections\"},\"@happyvertical/smrt-products:SkuCollection\":{\"name\":\"skucollection\",\"className\":\"SkuCollection\",\"qualifiedName\":\"@happyvertical/smrt-products:SkuCollection\",\"collection\":\"skus\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/collections/SkuCollection.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"fields\":{},\"methods\":{\"findByCode\":{\"name\":\"findByCode\",\"async\":true,\"parameters\":[{\"name\":\"code\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Sku | null>\",\"isStatic\":false,\"isPublic\":true},\"findByBarcode\":{\"name\":\"findByBarcode\",\"async\":true,\"parameters\":[{\"name\":\"barcode\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Sku | null>\",\"isStatic\":false,\"isPublic\":true},\"findByProduct\":{\"name\":\"findByProduct\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Sku[]>\",\"isStatic\":false,\"isPublic\":true},\"findByParent\":{\"name\":\"findByParent\",\"async\":true,\"parameters\":[{\"name\":\"parentSkuId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Sku[]>\",\"isStatic\":false,\"isPublic\":true},\"findActive\":{\"name\":\"findActive\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Sku[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"product_skus\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Sku\",\"exportName\":\"SkuCollection\",\"collectionExportName\":\"SkuCollectionCollection\",\"schema\":{\"tableName\":\"product_skus\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"product_skus\\\" (\\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 \\\"product_id\\\" TEXT NOT NULL DEFAULT '',\\n \\\"code\\\" TEXT NOT NULL DEFAULT '',\\n \\\"barcode\\\" TEXT DEFAULT '',\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"attributes\\\" TEXT DEFAULT '{}',\\n \\\"weight_grams\\\" REAL,\\n \\\"parent_sku_id\\\" TEXT DEFAULT '',\\n \\\"active\\\" BOOLEAN DEFAULT TRUE\\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},\"product_id\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"code\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"barcode\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"attributes\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"{}\"},\"weight_grams\":{\"type\":\"REAL\",\"notNull\":false,\"unique\":false},\"parent_sku_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"active\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":true}},\"indexes\":[{\"name\":\"product_skus_code_tenant_id_idx\",\"columns\":[\"code\",\"tenant_id\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"product_skus_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"product_skus_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"89d5a311\"},\"importPath\":\"@happyvertical/smrt-products/collections\"},\"@happyvertical/smrt-products:Category\":{\"name\":\"category\",\"className\":\"Category\",\"qualifiedName\":\"@happyvertical/smrt-products:Category\",\"collection\":\"categories\",\"description\":\"Product knowledge base category for organizing product information.\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/models/Category.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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}}},\"name\":{\"type\":\"text\",\"required\":false},\"description\":{\"type\":\"text\",\"required\":false},\"parentId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Category\"},\"level\":{\"type\":\"integer\",\"required\":true,\"default\":0},\"productCount\":{\"type\":\"integer\",\"required\":true,\"default\":0},\"active\":{\"type\":\"boolean\",\"required\":true,\"default\":true}},\"methods\":{},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":true,\"tenantScoped\":{\"mode\":\"optional\"},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"]},\"extends\":\"SmrtObject\",\"exportName\":\"Category\",\"collectionExportName\":\"CategoryCollection\",\"displayLabelField\":\"name\",\"validationRules\":[{\"field\":\"level\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"productCount\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"active\",\"rule\":\"required\",\"fieldType\":\"boolean\"}],\"schema\":{\"tableName\":\"categories\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"categories\\\" (\\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 \\\"name\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"parent_id\\\" UUID,\\n \\\"level\\\" INTEGER DEFAULT 0,\\n \\\"product_count\\\" INTEGER DEFAULT 0,\\n \\\"active\\\" BOOLEAN DEFAULT TRUE\\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},\"name\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"parent_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"categories\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"level\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"product_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"active\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true}},\"indexes\":[{\"name\":\"categories_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"categories_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"categories_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"categories_parent_id_idx\",\"columns\":[\"parent_id\"]}],\"version\":\"78838be9\"},\"importPath\":\"@happyvertical/smrt-products/models\"},\"@happyvertical/smrt-products:Material\":{\"name\":\"material\",\"className\":\"Material\",\"qualifiedName\":\"@happyvertical/smrt-products:Material\",\"collection\":\"products\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/models/Material.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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}}},\"productType\":{\"type\":\"text\",\"required\":false,\"enum\":[\"product\",\"material\",\"assembly\"]},\"name\":{\"type\":\"text\",\"required\":false,\"description\":\"The product name, as customers see it.\",\"_meta\":{\"description\":\"The product name, as customers see it.\"}},\"description\":{\"type\":\"text\",\"required\":false,\"description\":\"A few words on what the product is and who it is for.\",\"_meta\":{\"description\":\"A few words on what the product is and who it is for.\"}},\"category\":{\"type\":\"text\",\"required\":false},\"manufacturer\":{\"type\":\"text\",\"required\":false},\"model\":{\"type\":\"text\",\"required\":false},\"price\":{\"type\":\"integer\",\"required\":true,\"default\":0,\"description\":\"The price in minor units (cents), for example 1999 for 19.99.\",\"_meta\":{\"description\":\"The price in minor units (cents), for example 1999 for 19.99.\"}},\"inStock\":{\"type\":\"boolean\",\"required\":true,\"default\":true},\"specifications\":{\"type\":\"json\",\"required\":false,\"default\":{}},\"tags\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"materialKind\":{\"type\":\"meta\",\"required\":false,\"default\":\"component\",\"_meta\":{\"underlyingType\":\"text\"}},\"uom\":{\"type\":\"meta\",\"required\":false,\"default\":\"each\",\"_meta\":{\"underlyingType\":\"text\"}},\"costPerUnit\":{\"type\":\"meta\",\"required\":false,\"default\":0,\"_meta\":{\"underlyingType\":\"decimal\"}}},\"methods\":{\"getSpecification\":{\"name\":\"getSpecification\",\"async\":true,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<unknown>\",\"isStatic\":false,\"isPublic\":true},\"updateSpecification\":{\"name\":\"updateSpecification\",\"async\":true,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"},\"tableName\":\"products\",\"tableStrategy\":\"sti\"},\"extends\":\"Product\",\"exportName\":\"Material\",\"collectionExportName\":\"MaterialCollection\",\"displayLabelField\":\"name\",\"validationRules\":[{\"field\":\"price\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"inStock\",\"rule\":\"required\",\"fieldType\":\"boolean\"}],\"schema\":{\"tableName\":\"products\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"products\\\" (\\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 \\\"product_type\\\" TEXT,\\n \\\"name\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"category\\\" TEXT,\\n \\\"manufacturer\\\" TEXT,\\n \\\"model\\\" TEXT,\\n \\\"price\\\" INTEGER DEFAULT 0,\\n \\\"in_stock\\\" BOOLEAN DEFAULT TRUE,\\n \\\"specifications\\\" JSON DEFAULT '{}',\\n \\\"tags\\\" JSON DEFAULT '[]'\\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},\"product_type\":{\"type\":\"TEXT\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"category\":{\"type\":\"TEXT\",\"notNull\":false},\"manufacturer\":{\"type\":\"TEXT\",\"notNull\":false},\"model\":{\"type\":\"TEXT\",\"notNull\":false},\"price\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"in_stock\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"specifications\":{\"type\":\"JSON\",\"notNull\":false,\"default\":{}},\"tags\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]}},\"indexes\":[{\"name\":\"products_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"products_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"products_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"a7b4d592\"},\"importPath\":\"@happyvertical/smrt-products/models\"},\"@happyvertical/smrt-products:Product\":{\"name\":\"product\",\"className\":\"Product\",\"qualifiedName\":\"@happyvertical/smrt-products:Product\",\"collection\":\"products\",\"description\":\"Product information for knowledge base queries.\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/models/Product.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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}}},\"productType\":{\"type\":\"text\",\"required\":false,\"enum\":[\"product\",\"material\",\"assembly\"]},\"name\":{\"type\":\"text\",\"required\":false,\"description\":\"The product name, as customers see it.\",\"_meta\":{\"description\":\"The product name, as customers see it.\"}},\"description\":{\"type\":\"text\",\"required\":false,\"description\":\"A few words on what the product is and who it is for.\",\"_meta\":{\"description\":\"A few words on what the product is and who it is for.\"}},\"category\":{\"type\":\"text\",\"required\":false},\"manufacturer\":{\"type\":\"text\",\"required\":false},\"model\":{\"type\":\"text\",\"required\":false},\"price\":{\"type\":\"integer\",\"required\":true,\"default\":0,\"description\":\"The price in minor units (cents), for example 1999 for 19.99.\",\"_meta\":{\"description\":\"The price in minor units (cents), for example 1999 for 19.99.\"}},\"inStock\":{\"type\":\"boolean\",\"required\":true,\"default\":true},\"specifications\":{\"type\":\"json\",\"required\":false,\"default\":{}},\"tags\":{\"type\":\"json\",\"required\":false,\"default\":[]}},\"methods\":{\"getSpecification\":{\"name\":\"getSpecification\",\"async\":true,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<unknown>\",\"isStatic\":false,\"isPublic\":true},\"updateSpecification\":{\"name\":\"updateSpecification\",\"async\":true,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"]},\"extends\":\"SmrtObject\",\"exportName\":\"Product\",\"collectionExportName\":\"ProductCollection\",\"displayLabelField\":\"name\",\"validationRules\":[{\"field\":\"price\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"inStock\",\"rule\":\"required\",\"fieldType\":\"boolean\"}],\"schema\":{\"tableName\":\"products\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"products\\\" (\\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 \\\"product_type\\\" TEXT,\\n \\\"name\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"category\\\" TEXT,\\n \\\"manufacturer\\\" TEXT,\\n \\\"model\\\" TEXT,\\n \\\"price\\\" INTEGER DEFAULT 0,\\n \\\"in_stock\\\" BOOLEAN DEFAULT TRUE,\\n \\\"specifications\\\" JSON DEFAULT '{}',\\n \\\"tags\\\" JSON DEFAULT '[]'\\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},\"product_type\":{\"type\":\"TEXT\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"category\":{\"type\":\"TEXT\",\"notNull\":false},\"manufacturer\":{\"type\":\"TEXT\",\"notNull\":false},\"model\":{\"type\":\"TEXT\",\"notNull\":false},\"price\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"in_stock\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"specifications\":{\"type\":\"JSON\",\"notNull\":false,\"default\":{}},\"tags\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]}},\"indexes\":[{\"name\":\"products_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"products_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"products_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"a7b4d592\"},\"importPath\":\"@happyvertical/smrt-products/models\"},\"@happyvertical/smrt-products:ProductAsset\":{\"name\":\"productasset\",\"className\":\"ProductAsset\",\"qualifiedName\":\"@happyvertical/smrt-products:ProductAsset\",\"collection\":\"productassets\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/models/ProductAsset.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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}}},\"productId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Product\",\"_meta\":{\"required\":true}},\"assetId\":{\"type\":\"crossPackageRef\",\"required\":true,\"related\":\"@happyvertical/smrt-assets:Asset\"},\"relationship\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true}},\"sortOrder\":{\"type\":\"integer\",\"required\":true,\"default\":0}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"product_assets\",\"conflictColumns\":[\"product_id\",\"asset_id\",\"relationship\",\"tenant_id\"],\"api\":false,\"mcp\":false,\"cli\":false,\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ProductAsset\",\"collectionExportName\":\"ProductAssetCollection\",\"validationRules\":[{\"field\":\"productId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"assetId\",\"rule\":\"required\",\"fieldType\":\"crossPackageRef\"},{\"field\":\"relationship\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"sortOrder\",\"rule\":\"required\",\"fieldType\":\"integer\"}],\"schema\":{\"tableName\":\"product_assets\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"product_assets\\\" (\\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 \\\"product_id\\\" UUID NOT NULL,\\n \\\"asset_id\\\" UUID NOT NULL,\\n \\\"relationship\\\" TEXT NOT NULL,\\n \\\"sort_order\\\" INTEGER NOT NULL DEFAULT 0\\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},\"product_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"products\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"asset_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":true,\"unique\":false},\"relationship\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"sort_order\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"product_assets_product_id_asset_id_idx\",\"columns\":[\"product_id\",\"asset_id\",\"relationship\",\"tenant_id\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"product_assets_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"product_assets_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"product_assets_asset_id_idx\",\"columns\":[\"asset_id\"]}],\"version\":\"9d67ec65\"},\"importPath\":\"@happyvertical/smrt-products/models\"},\"@happyvertical/smrt-products:ProductVariant\":{\"name\":\"productvariant\",\"className\":\"ProductVariant\",\"qualifiedName\":\"@happyvertical/smrt-products:ProductVariant\",\"collection\":\"productvariants\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/models/ProductVariant.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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}}},\"productId\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"description\":\"The product this choice belongs to.\",\"_meta\":{\"required\":true,\"description\":\"The product this choice belongs to.\"}},\"axisName\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"description\":\"What the product varies by, for example size or color.\",\"_meta\":{\"required\":true,\"description\":\"What the product varies by, for example size or color.\"}},\"label\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"allowedValues\":{\"type\":\"text\",\"required\":false,\"default\":\"[]\",\"description\":\"The values on offer, for example S, M and L, stored as a JSON list.\",\"_meta\":{\"description\":\"The values on offer, for example S, M and L, stored as a JSON list.\"}},\"sortOrder\":{\"type\":\"integer\",\"required\":false,\"default\":0}},\"methods\":{\"getValues\":{\"name\":\"getValues\",\"async\":false,\"parameters\":[],\"returnType\":\"string[]\",\"isStatic\":false,\"isPublic\":true},\"setValues\":{\"name\":\"setValues\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"string[] | string\",\"optional\":false,\"unionBranches\":[{\"type\":\"string[]\"},{\"type\":\"string\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"product_variants\",\"conflictColumns\":[\"product_id\",\"axis_name\",\"tenant_id\"],\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ProductVariant\",\"collectionExportName\":\"ProductVariantCollection\",\"displayLabelField\":\"label\",\"validationRules\":[{\"field\":\"productId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"axisName\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"product_variants\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"product_variants\\\" (\\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 \\\"product_id\\\" TEXT NOT NULL DEFAULT '',\\n \\\"axis_name\\\" TEXT NOT NULL DEFAULT '',\\n \\\"label\\\" TEXT DEFAULT '',\\n \\\"allowed_values\\\" TEXT DEFAULT '[]',\\n \\\"sort_order\\\" INTEGER DEFAULT 0\\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},\"product_id\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"axis_name\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"label\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"allowed_values\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"[]\"},\"sort_order\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"product_variants_product_id_axis_name_idx\",\"columns\":[\"product_id\",\"axis_name\",\"tenant_id\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"product_variants_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"product_variants_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"2891ff02\"},\"importPath\":\"@happyvertical/smrt-products/models\"},\"@happyvertical/smrt-products:Sku\":{\"name\":\"sku\",\"className\":\"Sku\",\"qualifiedName\":\"@happyvertical/smrt-products:Sku\",\"collection\":\"skus\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/models/Sku.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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}}},\"productId\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"description\":\"The product this item is a version of.\",\"_meta\":{\"required\":true,\"description\":\"The product this item is a version of.\"}},\"code\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"description\":\"The short code that identifies this exact item, such as a UPC or part number.\",\"_meta\":{\"required\":true,\"description\":\"The short code that identifies this exact item, such as a UPC or part number.\"}},\"barcode\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"attributes\":{\"type\":\"text\",\"required\":false,\"default\":\"{}\",\"description\":\"Which attribute values, such as size and color, this item has, stored as JSON.\",\"_meta\":{\"description\":\"Which attribute values, such as size and color, this item has, stored as JSON.\"}},\"weightGrams\":{\"type\":\"decimal\",\"required\":false,\"_meta\":{}},\"parentSkuId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"active\":{\"type\":\"boolean\",\"required\":false,\"default\":true}},\"methods\":{\"getAttributes\":{\"name\":\"getAttributes\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setAttributes\":{\"name\":\"setAttributes\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"Record<string, unknown> | string\",\"optional\":false,\"unionBranches\":[{\"type\":\"Record<string, unknown>\"},{\"type\":\"string\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"product_skus\",\"conflictColumns\":[\"code\",\"tenant_id\"],\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"Sku\",\"collectionExportName\":\"SkuCollection\",\"displayLabelField\":\"name\",\"validationRules\":[{\"field\":\"productId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"code\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"product_skus\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"product_skus\\\" (\\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 \\\"product_id\\\" TEXT NOT NULL DEFAULT '',\\n \\\"code\\\" TEXT NOT NULL DEFAULT '',\\n \\\"barcode\\\" TEXT DEFAULT '',\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"attributes\\\" TEXT DEFAULT '{}',\\n \\\"weight_grams\\\" REAL,\\n \\\"parent_sku_id\\\" TEXT DEFAULT '',\\n \\\"active\\\" BOOLEAN DEFAULT TRUE\\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},\"product_id\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"code\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"barcode\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"attributes\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"{}\"},\"weight_grams\":{\"type\":\"REAL\",\"notNull\":false,\"unique\":false},\"parent_sku_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"active\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":true}},\"indexes\":[{\"name\":\"product_skus_code_tenant_id_idx\",\"columns\":[\"code\",\"tenant_id\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"product_skus_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"product_skus_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"89d5a311\"},\"importPath\":\"@happyvertical/smrt-products/models\"}},\"moduleType\":\"smrt\",\"recipes\":[{\"id\":\"products.clothing\",\"className\":\"ClothingProductsRecipe\",\"label\":\"Clothing\",\"summary\":\"Products that come in sizes and colors, with a stock-keeping unit for each combination.\",\"synonyms\":[\"apparel\",\"garments\",\"sizes\",\"variants\"],\"models\":[\"@happyvertical/smrt-products:Product\",\"@happyvertical/smrt-products:ProductVariant\",\"@happyvertical/smrt-products:Sku\"],\"nav\":[{\"label\":\"Products\",\"model\":\"@happyvertical/smrt-products:Product\",\"icon\":\"package\",\"description\":\"What you sell, with prices and details.\"}],\"requires\":[],\"group\":{\"id\":\"products\",\"label\":\"Products\",\"summary\":\"Sell goods: simple items, or clothing that comes in sizes and colors.\"},\"section\":{\"id\":\"catalog\",\"label\":\"Catalog\",\"icon\":\"package\",\"description\":\"Products, ingredients and the stock you hold.\"},\"options\":{\"@happyvertical/smrt-products:Product\":{\"fields\":{\"productType\":{\"visibility\":\"hidden\"},\"category\":{\"visibility\":\"hidden\"},\"manufacturer\":{\"visibility\":\"hidden\"},\"model\":{\"visibility\":\"hidden\"},\"inStock\":{\"visibility\":\"hidden\"},\"specifications\":{\"visibility\":\"hidden\"},\"tags\":{\"visibility\":\"hidden\"},\"description\":{\"visibility\":\"hidden\"}}},\"@happyvertical/smrt-products:ProductVariant\":{\"fields\":{\"label\":{\"visibility\":\"hidden\"},\"sortOrder\":{\"visibility\":\"hidden\"}}},\"@happyvertical/smrt-products:Sku\":{\"fields\":{\"barcode\":{\"visibility\":\"hidden\"},\"name\":{\"visibility\":\"hidden\"},\"weightGrams\":{\"visibility\":\"hidden\"},\"parentSkuId\":{\"visibility\":\"hidden\"},\"active\":{\"visibility\":\"hidden\"}}}},\"help\":{\"markdown\":\"## Overview\\n\\nClothing is for products that come in sizes and colors. You describe the product\\nonce, say which sizes and colors you offer, and each combination becomes its own\\nitem you can sell and count separately: a shirt in three sizes and two colors is\\nsix items.\\n\\n## Tasks\\n\\n### Add a clothing item\\n\\n1. Create a product with a **{field:name}** and a **{field:price}**.\\n2. Add a variant axis for sizes and list the values you offer, for example XS to\\n XL. Leave out the ones you do not make.\\n3. Add a variant axis for colors the same way.\\n4. Create an item (SKU) for each size and color combination, with its own code\\n and its size and color attributes.\\n\\n### Add a size or a color later\\n\\n1. Add the new value to the size or color axis of the product.\\n2. Create items for the new combinations. Items you already had keep their\\n codes.\\n\\n### Stop selling a size\\n\\n1. Remove the size from the product's size axis.\\n2. Remove the items for that size.\\n\",\"fieldRefs\":[\"name\",\"price\"]},\"demo\":{\"mode\":\"server\",\"reasons\":[\"Needs a server because its package does not build for a browser: server bootstrap (startRestServer, express/cors), core generators/mcp; and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626).\"]}},{\"id\":\"products.ingredients\",\"className\":\"IngredientsRecipe\",\"label\":\"Ingredients\",\"summary\":\"Things you buy in to make what you sell, kept as products of the material kind with their own list.\",\"synonyms\":[\"materials\",\"raw materials\",\"supplies\",\"stock items\"],\"models\":[\"@happyvertical/smrt-products:Product\"],\"nav\":[{\"label\":\"Ingredients\",\"model\":\"@happyvertical/smrt-products:Product\",\"icon\":\"package\",\"description\":\"What you buy to make what you sell, with what each costs.\",\"key\":\"ingredients\",\"noun\":\"ingredient\",\"filter\":{\"field\":\"productType\",\"value\":\"material\"}}],\"requires\":[\"products.simple\"],\"group\":{\"id\":\"products\",\"label\":\"Products\",\"summary\":\"Sell goods: simple items, or clothing that comes in sizes and colors.\"},\"section\":{\"id\":\"catalog\",\"label\":\"Catalog\",\"icon\":\"package\",\"description\":\"Products, ingredients and the stock you hold.\"},\"options\":{\"@happyvertical/smrt-products:Product\":{\"fields\":{\"productType\":{\"visibility\":\"hidden\"},\"category\":{\"visibility\":\"hidden\"},\"manufacturer\":{\"visibility\":\"hidden\"},\"model\":{\"visibility\":\"hidden\"},\"inStock\":{\"visibility\":\"hidden\"},\"specifications\":{\"visibility\":\"hidden\"},\"tags\":{\"visibility\":\"hidden\"}}}},\"help\":{\"markdown\":\"## Overview\\n\\nIngredients are the things you buy in to make what you sell: flour, butter,\\nsteel, fabric. They are products of the material kind, so they have the same\\nname, price and description as anything you sell, and they are listed apart from\\nthe products you sell. Count them with inventory like any other item.\\n\\n## Tasks\\n\\n### Add an ingredient\\n\\n1. Create a new ingredient.\\n2. Give it a **{field:name}** that includes the pack size, for example \\\"Bread flour, 25 kg\\\".\\n3. Enter what you pay in the **{field:price}**, in minor units (cents).\\n4. Add a **{field:description}** such as the brand or grade.\\n5. Save. It appears in the ingredients list, not in the products you sell.\\n\\n### Update what you pay\\n\\n1. Find the ingredient.\\n2. Change the **{field:price}** and save.\\n\",\"fieldRefs\":[\"description\",\"name\",\"price\"]},\"demo\":{\"mode\":\"server\",\"reasons\":[\"Needs a server because its package does not build for a browser: server bootstrap (startRestServer, express/cors), core generators/mcp; and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626).\"]}},{\"id\":\"products.simple\",\"className\":\"SimpleProductsRecipe\",\"label\":\"Simple products\",\"summary\":\"Items with a name, a price and a description.\",\"synonyms\":[\"items\",\"goods\",\"catalog\"],\"models\":[\"@happyvertical/smrt-products:Product\"],\"nav\":[{\"label\":\"Products\",\"model\":\"@happyvertical/smrt-products:Product\",\"icon\":\"package\",\"description\":\"What you sell, with prices and details.\"}],\"requires\":[],\"group\":{\"id\":\"products\",\"label\":\"Products\",\"summary\":\"Sell goods: simple items, or clothing that comes in sizes and colors.\"},\"section\":{\"id\":\"catalog\",\"label\":\"Catalog\",\"icon\":\"package\",\"description\":\"Products, ingredients and the stock you hold.\"},\"options\":{\"@happyvertical/smrt-products:Product\":{\"fields\":{\"productType\":{\"visibility\":\"hidden\"},\"category\":{\"visibility\":\"hidden\"},\"manufacturer\":{\"visibility\":\"hidden\"},\"model\":{\"visibility\":\"hidden\"},\"inStock\":{\"visibility\":\"hidden\"},\"specifications\":{\"visibility\":\"hidden\"},\"tags\":{\"visibility\":\"hidden\"}}}},\"help\":{\"markdown\":\"## Overview\\n\\nSimple products are things you sell that come in one form: one name, one price,\\none description. Keep a record for each so you can see everything you offer in\\none list, with the price next to it, and change it whenever it moves.\\n\\n## Tasks\\n\\n### Add a simple product\\n\\n1. Create a new product.\\n2. Give it a **{field:name}**, for example \\\"Ceramic mug\\\".\\n3. Enter the **{field:price}** in minor units (cents).\\n4. Add a **{field:description}** so anyone reading the list knows what it is.\\n5. Save. The product is now on your list.\\n\\n### Change a price\\n\\n1. Find the product.\\n2. Change the **{field:price}** and save.\\n\",\"fieldRefs\":[\"description\",\"name\",\"price\"]},\"demo\":{\"mode\":\"server\",\"reasons\":[\"Needs a server because its package does not build for a browser: server bootstrap (startRestServer, express/cors), core generators/mcp; and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626).\"]}}],\"smrtDependencies\":[\"@happyvertical/smrt-assets\",\"@happyvertical/smrt-core\",\"@happyvertical/smrt-tenancy\"],\"browser\":{\"status\":\"server-only\",\"issues\":[\"#3616\",\"#3624\",\"#3626\"],\"reason\":\"server bootstrap (startRestServer, express/cors), core generators/mcp\",\"via\":[\"@happyvertical/smrt-tenancy\"]},\"stampsConstructors\":true}"));
|
|
3
|
+
ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-products\",\"packageVersion\":\"0.55.24\",\"objects\":{\"@happyvertical/smrt-products:CategoryCollection\":{\"name\":\"categorycollection\",\"className\":\"CategoryCollection\",\"qualifiedName\":\"@happyvertical/smrt-products:CategoryCollection\",\"collection\":\"categories\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/collections/CategoryCollection.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"fields\":{},\"methods\":{\"getRootCategories\":{\"name\":\"getRootCategories\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Category[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Category\",\"exportName\":\"CategoryCollection\",\"collectionExportName\":\"CategoryCollectionCollection\",\"schema\":{\"tableName\":\"categories\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"categories\\\" (\\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 \\\"name\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"parent_id\\\" UUID,\\n \\\"level\\\" INTEGER DEFAULT 0,\\n \\\"product_count\\\" INTEGER DEFAULT 0,\\n \\\"active\\\" BOOLEAN DEFAULT TRUE\\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},\"name\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"parent_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"categories\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"level\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"product_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"active\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true}},\"indexes\":[{\"name\":\"categories_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"categories_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"categories_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"categories_parent_id_idx\",\"columns\":[\"parent_id\"]}],\"version\":\"78838be9\"},\"importPath\":\"@happyvertical/smrt-products/collections\"},\"@happyvertical/smrt-products:MaterialCollection\":{\"name\":\"materialcollection\",\"className\":\"MaterialCollection\",\"qualifiedName\":\"@happyvertical/smrt-products:MaterialCollection\",\"collection\":\"products\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/collections/MaterialCollection.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"fields\":{},\"methods\":{\"findByManufacturer\":{\"name\":\"findByManufacturer\",\"async\":true,\"parameters\":[{\"name\":\"manufacturer\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Product[]>\",\"isStatic\":false,\"isPublic\":true},\"findInStock\":{\"name\":\"findInStock\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Product[]>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"findByKind\":{\"name\":\"findByKind\",\"async\":true,\"parameters\":[{\"name\":\"materialKind\",\"type\":\"MaterialKind\",\"optional\":false}],\"returnType\":\"Promise<Material[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"products\"},\"extends\":\"ProductCollection\",\"exportName\":\"MaterialCollection\",\"collectionExportName\":\"MaterialCollectionCollection\",\"schema\":{\"tableName\":\"products\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"products\\\" (\\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 \\\"product_type\\\" TEXT,\\n \\\"name\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"category\\\" TEXT,\\n \\\"manufacturer\\\" TEXT,\\n \\\"model\\\" TEXT,\\n \\\"price\\\" INTEGER DEFAULT 0,\\n \\\"in_stock\\\" BOOLEAN DEFAULT TRUE,\\n \\\"specifications\\\" JSON DEFAULT '{}',\\n \\\"tags\\\" JSON DEFAULT '[]'\\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},\"product_type\":{\"type\":\"TEXT\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"category\":{\"type\":\"TEXT\",\"notNull\":false},\"manufacturer\":{\"type\":\"TEXT\",\"notNull\":false},\"model\":{\"type\":\"TEXT\",\"notNull\":false},\"price\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"in_stock\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"specifications\":{\"type\":\"JSON\",\"notNull\":false,\"default\":{}},\"tags\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]}},\"indexes\":[{\"name\":\"products_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"products_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"products_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"a7b4d592\"},\"importPath\":\"@happyvertical/smrt-products/collections\"},\"@happyvertical/smrt-products:ProductAssetCollection\":{\"name\":\"productassetcollection\",\"className\":\"ProductAssetCollection\",\"qualifiedName\":\"@happyvertical/smrt-products:ProductAssetCollection\",\"collection\":\"productassets\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/collections/ProductAssetCollection.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":false,\"mcp\":false,\"cli\":false,\"tableName\":\"product_assets\"},\"extends\":\"SmrtJunction\",\"extendsTypeArg\":\"ProductAsset\",\"exportName\":\"ProductAssetCollection\",\"collectionExportName\":\"ProductAssetCollectionCollection\",\"schema\":{\"tableName\":\"product_assets\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"product_assets\\\" (\\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 \\\"product_id\\\" UUID NOT NULL,\\n \\\"asset_id\\\" UUID NOT NULL,\\n \\\"relationship\\\" TEXT NOT NULL,\\n \\\"sort_order\\\" INTEGER NOT NULL DEFAULT 0\\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},\"product_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"products\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"asset_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":true,\"unique\":false},\"relationship\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"sort_order\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"product_assets_product_id_asset_id_idx\",\"columns\":[\"product_id\",\"asset_id\",\"relationship\",\"tenant_id\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"product_assets_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"product_assets_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"product_assets_asset_id_idx\",\"columns\":[\"asset_id\"]}],\"version\":\"9d67ec65\"},\"importPath\":\"@happyvertical/smrt-products/collections\"},\"@happyvertical/smrt-products:ProductCollection\":{\"name\":\"productcollection\",\"className\":\"ProductCollection\",\"qualifiedName\":\"@happyvertical/smrt-products:ProductCollection\",\"collection\":\"products\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/collections/ProductCollection.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"fields\":{},\"methods\":{\"findByManufacturer\":{\"name\":\"findByManufacturer\",\"async\":true,\"parameters\":[{\"name\":\"manufacturer\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Product[]>\",\"isStatic\":false,\"isPublic\":true},\"findInStock\":{\"name\":\"findInStock\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Product[]>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Product\",\"exportName\":\"ProductCollection\",\"collectionExportName\":\"ProductCollectionCollection\",\"schema\":{\"tableName\":\"products\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"products\\\" (\\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 \\\"product_type\\\" TEXT,\\n \\\"name\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"category\\\" TEXT,\\n \\\"manufacturer\\\" TEXT,\\n \\\"model\\\" TEXT,\\n \\\"price\\\" INTEGER DEFAULT 0,\\n \\\"in_stock\\\" BOOLEAN DEFAULT TRUE,\\n \\\"specifications\\\" JSON DEFAULT '{}',\\n \\\"tags\\\" JSON DEFAULT '[]'\\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},\"product_type\":{\"type\":\"TEXT\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"category\":{\"type\":\"TEXT\",\"notNull\":false},\"manufacturer\":{\"type\":\"TEXT\",\"notNull\":false},\"model\":{\"type\":\"TEXT\",\"notNull\":false},\"price\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"in_stock\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"specifications\":{\"type\":\"JSON\",\"notNull\":false,\"default\":{}},\"tags\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]}},\"indexes\":[{\"name\":\"products_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"products_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"products_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"a7b4d592\"},\"importPath\":\"@happyvertical/smrt-products/collections\"},\"@happyvertical/smrt-products:ProductVariantCollection\":{\"name\":\"productvariantcollection\",\"className\":\"ProductVariantCollection\",\"qualifiedName\":\"@happyvertical/smrt-products:ProductVariantCollection\",\"collection\":\"productvariants\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/collections/ProductVariantCollection.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"fields\":{},\"methods\":{\"findForProduct\":{\"name\":\"findForProduct\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProductVariant[]>\",\"isStatic\":false,\"isPublic\":true},\"findAxis\":{\"name\":\"findAxis\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false},{\"name\":\"axisName\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProductVariant | null>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"product_variants\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProductVariant\",\"exportName\":\"ProductVariantCollection\",\"collectionExportName\":\"ProductVariantCollectionCollection\",\"schema\":{\"tableName\":\"product_variants\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"product_variants\\\" (\\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 \\\"product_id\\\" TEXT NOT NULL DEFAULT '',\\n \\\"axis_name\\\" TEXT NOT NULL DEFAULT '',\\n \\\"label\\\" TEXT DEFAULT '',\\n \\\"allowed_values\\\" TEXT DEFAULT '[]',\\n \\\"sort_order\\\" INTEGER DEFAULT 0\\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},\"product_id\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"axis_name\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"label\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"allowed_values\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"[]\"},\"sort_order\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"product_variants_product_id_axis_name_idx\",\"columns\":[\"product_id\",\"axis_name\",\"tenant_id\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"product_variants_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"product_variants_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"2891ff02\"},\"importPath\":\"@happyvertical/smrt-products/collections\"},\"@happyvertical/smrt-products:SkuCollection\":{\"name\":\"skucollection\",\"className\":\"SkuCollection\",\"qualifiedName\":\"@happyvertical/smrt-products:SkuCollection\",\"collection\":\"skus\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/collections/SkuCollection.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"fields\":{},\"methods\":{\"findByCode\":{\"name\":\"findByCode\",\"async\":true,\"parameters\":[{\"name\":\"code\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Sku | null>\",\"isStatic\":false,\"isPublic\":true},\"findByBarcode\":{\"name\":\"findByBarcode\",\"async\":true,\"parameters\":[{\"name\":\"barcode\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Sku | null>\",\"isStatic\":false,\"isPublic\":true},\"findByProduct\":{\"name\":\"findByProduct\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Sku[]>\",\"isStatic\":false,\"isPublic\":true},\"findByParent\":{\"name\":\"findByParent\",\"async\":true,\"parameters\":[{\"name\":\"parentSkuId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Sku[]>\",\"isStatic\":false,\"isPublic\":true},\"findActive\":{\"name\":\"findActive\",\"async\":true,\"parameters\":[{\"name\":\"productId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Sku[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"product_skus\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Sku\",\"exportName\":\"SkuCollection\",\"collectionExportName\":\"SkuCollectionCollection\",\"schema\":{\"tableName\":\"product_skus\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"product_skus\\\" (\\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 \\\"product_id\\\" TEXT NOT NULL DEFAULT '',\\n \\\"code\\\" TEXT NOT NULL DEFAULT '',\\n \\\"barcode\\\" TEXT DEFAULT '',\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"attributes\\\" TEXT DEFAULT '{}',\\n \\\"weight_grams\\\" REAL,\\n \\\"parent_sku_id\\\" TEXT DEFAULT '',\\n \\\"active\\\" BOOLEAN DEFAULT TRUE\\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},\"product_id\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"code\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"barcode\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"attributes\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"{}\"},\"weight_grams\":{\"type\":\"REAL\",\"notNull\":false,\"unique\":false},\"parent_sku_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"active\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":true}},\"indexes\":[{\"name\":\"product_skus_code_tenant_id_idx\",\"columns\":[\"code\",\"tenant_id\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"product_skus_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"product_skus_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"89d5a311\"},\"importPath\":\"@happyvertical/smrt-products/collections\"},\"@happyvertical/smrt-products:Category\":{\"name\":\"category\",\"className\":\"Category\",\"qualifiedName\":\"@happyvertical/smrt-products:Category\",\"collection\":\"categories\",\"description\":\"Product knowledge base category for organizing product information.\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/models/Category.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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}}},\"name\":{\"type\":\"text\",\"required\":false},\"description\":{\"type\":\"text\",\"required\":false},\"parentId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Category\"},\"level\":{\"type\":\"integer\",\"required\":true,\"default\":0},\"productCount\":{\"type\":\"integer\",\"required\":true,\"default\":0},\"active\":{\"type\":\"boolean\",\"required\":true,\"default\":true}},\"methods\":{},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":true,\"tenantScoped\":{\"mode\":\"optional\"},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"]},\"extends\":\"SmrtObject\",\"exportName\":\"Category\",\"collectionExportName\":\"CategoryCollection\",\"displayLabelField\":\"name\",\"validationRules\":[{\"field\":\"level\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"productCount\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"active\",\"rule\":\"required\",\"fieldType\":\"boolean\"}],\"schema\":{\"tableName\":\"categories\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"categories\\\" (\\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 \\\"name\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"parent_id\\\" UUID,\\n \\\"level\\\" INTEGER DEFAULT 0,\\n \\\"product_count\\\" INTEGER DEFAULT 0,\\n \\\"active\\\" BOOLEAN DEFAULT TRUE\\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},\"name\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"parent_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"categories\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"level\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"product_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"active\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true}},\"indexes\":[{\"name\":\"categories_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"categories_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"categories_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"categories_parent_id_idx\",\"columns\":[\"parent_id\"]}],\"version\":\"78838be9\"},\"importPath\":\"@happyvertical/smrt-products/models\"},\"@happyvertical/smrt-products:Material\":{\"name\":\"material\",\"className\":\"Material\",\"qualifiedName\":\"@happyvertical/smrt-products:Material\",\"collection\":\"products\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/models/Material.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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}}},\"productType\":{\"type\":\"text\",\"required\":false,\"enum\":[\"product\",\"material\",\"assembly\"]},\"name\":{\"type\":\"text\",\"required\":false,\"description\":\"The product name, as customers see it.\",\"_meta\":{\"description\":\"The product name, as customers see it.\"}},\"description\":{\"type\":\"text\",\"required\":false,\"description\":\"A few words on what the product is and who it is for.\",\"_meta\":{\"description\":\"A few words on what the product is and who it is for.\"}},\"category\":{\"type\":\"text\",\"required\":false},\"manufacturer\":{\"type\":\"text\",\"required\":false},\"model\":{\"type\":\"text\",\"required\":false},\"price\":{\"type\":\"integer\",\"required\":true,\"default\":0,\"description\":\"The price in minor units (cents), for example 1999 for 19.99.\",\"_meta\":{\"description\":\"The price in minor units (cents), for example 1999 for 19.99.\"}},\"inStock\":{\"type\":\"boolean\",\"required\":true,\"default\":true},\"specifications\":{\"type\":\"json\",\"required\":false,\"default\":{}},\"tags\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"materialKind\":{\"type\":\"meta\",\"required\":false,\"default\":\"component\",\"_meta\":{\"underlyingType\":\"text\"}},\"uom\":{\"type\":\"meta\",\"required\":false,\"default\":\"each\",\"_meta\":{\"underlyingType\":\"text\"}},\"costPerUnit\":{\"type\":\"meta\",\"required\":false,\"default\":0,\"_meta\":{\"underlyingType\":\"decimal\"}}},\"methods\":{\"getSpecification\":{\"name\":\"getSpecification\",\"async\":true,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<unknown>\",\"isStatic\":false,\"isPublic\":true},\"updateSpecification\":{\"name\":\"updateSpecification\",\"async\":true,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"},\"tableName\":\"products\",\"tableStrategy\":\"sti\"},\"extends\":\"Product\",\"exportName\":\"Material\",\"collectionExportName\":\"MaterialCollection\",\"displayLabelField\":\"name\",\"validationRules\":[{\"field\":\"price\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"inStock\",\"rule\":\"required\",\"fieldType\":\"boolean\"}],\"schema\":{\"tableName\":\"products\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"products\\\" (\\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 \\\"product_type\\\" TEXT,\\n \\\"name\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"category\\\" TEXT,\\n \\\"manufacturer\\\" TEXT,\\n \\\"model\\\" TEXT,\\n \\\"price\\\" INTEGER DEFAULT 0,\\n \\\"in_stock\\\" BOOLEAN DEFAULT TRUE,\\n \\\"specifications\\\" JSON DEFAULT '{}',\\n \\\"tags\\\" JSON DEFAULT '[]'\\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},\"product_type\":{\"type\":\"TEXT\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"category\":{\"type\":\"TEXT\",\"notNull\":false},\"manufacturer\":{\"type\":\"TEXT\",\"notNull\":false},\"model\":{\"type\":\"TEXT\",\"notNull\":false},\"price\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"in_stock\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"specifications\":{\"type\":\"JSON\",\"notNull\":false,\"default\":{}},\"tags\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]}},\"indexes\":[{\"name\":\"products_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"products_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"products_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"a7b4d592\"},\"importPath\":\"@happyvertical/smrt-products/models\"},\"@happyvertical/smrt-products:Product\":{\"name\":\"product\",\"className\":\"Product\",\"qualifiedName\":\"@happyvertical/smrt-products:Product\",\"collection\":\"products\",\"description\":\"Product information for knowledge base queries.\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/models/Product.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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}}},\"productType\":{\"type\":\"text\",\"required\":false,\"enum\":[\"product\",\"material\",\"assembly\"]},\"name\":{\"type\":\"text\",\"required\":false,\"description\":\"The product name, as customers see it.\",\"_meta\":{\"description\":\"The product name, as customers see it.\"}},\"description\":{\"type\":\"text\",\"required\":false,\"description\":\"A few words on what the product is and who it is for.\",\"_meta\":{\"description\":\"A few words on what the product is and who it is for.\"}},\"category\":{\"type\":\"text\",\"required\":false},\"manufacturer\":{\"type\":\"text\",\"required\":false},\"model\":{\"type\":\"text\",\"required\":false},\"price\":{\"type\":\"integer\",\"required\":true,\"default\":0,\"description\":\"The price in minor units (cents), for example 1999 for 19.99.\",\"_meta\":{\"description\":\"The price in minor units (cents), for example 1999 for 19.99.\"}},\"inStock\":{\"type\":\"boolean\",\"required\":true,\"default\":true},\"specifications\":{\"type\":\"json\",\"required\":false,\"default\":{}},\"tags\":{\"type\":\"json\",\"required\":false,\"default\":[]}},\"methods\":{\"getSpecification\":{\"name\":\"getSpecification\",\"async\":true,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<unknown>\",\"isStatic\":false,\"isPublic\":true},\"updateSpecification\":{\"name\":\"updateSpecification\",\"async\":true,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"]},\"extends\":\"SmrtObject\",\"exportName\":\"Product\",\"collectionExportName\":\"ProductCollection\",\"displayLabelField\":\"name\",\"validationRules\":[{\"field\":\"price\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"inStock\",\"rule\":\"required\",\"fieldType\":\"boolean\"}],\"schema\":{\"tableName\":\"products\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"products\\\" (\\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 \\\"product_type\\\" TEXT,\\n \\\"name\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"category\\\" TEXT,\\n \\\"manufacturer\\\" TEXT,\\n \\\"model\\\" TEXT,\\n \\\"price\\\" INTEGER DEFAULT 0,\\n \\\"in_stock\\\" BOOLEAN DEFAULT TRUE,\\n \\\"specifications\\\" JSON DEFAULT '{}',\\n \\\"tags\\\" JSON DEFAULT '[]'\\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},\"product_type\":{\"type\":\"TEXT\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"category\":{\"type\":\"TEXT\",\"notNull\":false},\"manufacturer\":{\"type\":\"TEXT\",\"notNull\":false},\"model\":{\"type\":\"TEXT\",\"notNull\":false},\"price\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"in_stock\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"specifications\":{\"type\":\"JSON\",\"notNull\":false,\"default\":{}},\"tags\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]}},\"indexes\":[{\"name\":\"products_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"products_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"products_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"a7b4d592\"},\"importPath\":\"@happyvertical/smrt-products/models\"},\"@happyvertical/smrt-products:ProductAsset\":{\"name\":\"productasset\",\"className\":\"ProductAsset\",\"qualifiedName\":\"@happyvertical/smrt-products:ProductAsset\",\"collection\":\"productassets\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/models/ProductAsset.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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}}},\"productId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Product\",\"_meta\":{\"required\":true}},\"assetId\":{\"type\":\"crossPackageRef\",\"required\":true,\"related\":\"@happyvertical/smrt-assets:Asset\"},\"relationship\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true}},\"sortOrder\":{\"type\":\"integer\",\"required\":true,\"default\":0}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"product_assets\",\"conflictColumns\":[\"product_id\",\"asset_id\",\"relationship\",\"tenant_id\"],\"api\":false,\"mcp\":false,\"cli\":false,\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ProductAsset\",\"collectionExportName\":\"ProductAssetCollection\",\"validationRules\":[{\"field\":\"productId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"assetId\",\"rule\":\"required\",\"fieldType\":\"crossPackageRef\"},{\"field\":\"relationship\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"sortOrder\",\"rule\":\"required\",\"fieldType\":\"integer\"}],\"schema\":{\"tableName\":\"product_assets\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"product_assets\\\" (\\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 \\\"product_id\\\" UUID NOT NULL,\\n \\\"asset_id\\\" UUID NOT NULL,\\n \\\"relationship\\\" TEXT NOT NULL,\\n \\\"sort_order\\\" INTEGER NOT NULL DEFAULT 0\\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},\"product_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"products\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"asset_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":true,\"unique\":false},\"relationship\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"sort_order\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"product_assets_product_id_asset_id_idx\",\"columns\":[\"product_id\",\"asset_id\",\"relationship\",\"tenant_id\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"product_assets_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"product_assets_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"product_assets_asset_id_idx\",\"columns\":[\"asset_id\"]}],\"version\":\"9d67ec65\"},\"importPath\":\"@happyvertical/smrt-products/models\"},\"@happyvertical/smrt-products:ProductVariant\":{\"name\":\"productvariant\",\"className\":\"ProductVariant\",\"qualifiedName\":\"@happyvertical/smrt-products:ProductVariant\",\"collection\":\"productvariants\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/models/ProductVariant.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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}}},\"productId\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"description\":\"The product this choice belongs to.\",\"_meta\":{\"required\":true,\"description\":\"The product this choice belongs to.\"}},\"axisName\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"description\":\"What the product varies by, for example size or color.\",\"_meta\":{\"required\":true,\"description\":\"What the product varies by, for example size or color.\"}},\"label\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"allowedValues\":{\"type\":\"text\",\"required\":false,\"default\":\"[]\",\"description\":\"The values on offer, for example S, M and L, stored as a JSON list.\",\"_meta\":{\"description\":\"The values on offer, for example S, M and L, stored as a JSON list.\"}},\"sortOrder\":{\"type\":\"integer\",\"required\":false,\"default\":0}},\"methods\":{\"getValues\":{\"name\":\"getValues\",\"async\":false,\"parameters\":[],\"returnType\":\"string[]\",\"isStatic\":false,\"isPublic\":true},\"setValues\":{\"name\":\"setValues\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"string[] | string\",\"optional\":false,\"unionBranches\":[{\"type\":\"string[]\"},{\"type\":\"string\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"product_variants\",\"conflictColumns\":[\"product_id\",\"axis_name\",\"tenant_id\"],\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ProductVariant\",\"collectionExportName\":\"ProductVariantCollection\",\"displayLabelField\":\"label\",\"validationRules\":[{\"field\":\"productId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"axisName\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"product_variants\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"product_variants\\\" (\\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 \\\"product_id\\\" TEXT NOT NULL DEFAULT '',\\n \\\"axis_name\\\" TEXT NOT NULL DEFAULT '',\\n \\\"label\\\" TEXT DEFAULT '',\\n \\\"allowed_values\\\" TEXT DEFAULT '[]',\\n \\\"sort_order\\\" INTEGER DEFAULT 0\\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},\"product_id\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"axis_name\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"label\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"allowed_values\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"[]\"},\"sort_order\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"product_variants_product_id_axis_name_idx\",\"columns\":[\"product_id\",\"axis_name\",\"tenant_id\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"product_variants_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"product_variants_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"2891ff02\"},\"importPath\":\"@happyvertical/smrt-products/models\"},\"@happyvertical/smrt-products:Sku\":{\"name\":\"sku\",\"className\":\"Sku\",\"qualifiedName\":\"@happyvertical/smrt-products:Sku\",\"collection\":\"skus\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/products/src/lib/models/Sku.ts\",\"packageName\":\"@happyvertical/smrt-products\",\"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}}},\"productId\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"description\":\"The product this item is a version of.\",\"_meta\":{\"required\":true,\"description\":\"The product this item is a version of.\"}},\"code\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"description\":\"The short code that identifies this exact item, such as a UPC or part number.\",\"_meta\":{\"required\":true,\"description\":\"The short code that identifies this exact item, such as a UPC or part number.\"}},\"barcode\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"attributes\":{\"type\":\"text\",\"required\":false,\"default\":\"{}\",\"description\":\"Which attribute values, such as size and color, this item has, stored as JSON.\",\"_meta\":{\"description\":\"Which attribute values, such as size and color, this item has, stored as JSON.\"}},\"weightGrams\":{\"type\":\"decimal\",\"required\":false,\"_meta\":{}},\"parentSkuId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"active\":{\"type\":\"boolean\",\"required\":false,\"default\":true}},\"methods\":{\"getAttributes\":{\"name\":\"getAttributes\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setAttributes\":{\"name\":\"setAttributes\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"Record<string, unknown> | string\",\"optional\":false,\"unionBranches\":[{\"type\":\"Record<string, unknown>\"},{\"type\":\"string\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"product_skus\",\"conflictColumns\":[\"code\",\"tenant_id\"],\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"Sku\",\"collectionExportName\":\"SkuCollection\",\"displayLabelField\":\"name\",\"validationRules\":[{\"field\":\"productId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"code\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"product_skus\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"product_skus\\\" (\\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 \\\"product_id\\\" TEXT NOT NULL DEFAULT '',\\n \\\"code\\\" TEXT NOT NULL DEFAULT '',\\n \\\"barcode\\\" TEXT DEFAULT '',\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"attributes\\\" TEXT DEFAULT '{}',\\n \\\"weight_grams\\\" REAL,\\n \\\"parent_sku_id\\\" TEXT DEFAULT '',\\n \\\"active\\\" BOOLEAN DEFAULT TRUE\\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},\"product_id\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"code\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"barcode\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"attributes\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"{}\"},\"weight_grams\":{\"type\":\"REAL\",\"notNull\":false,\"unique\":false},\"parent_sku_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"active\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":true}},\"indexes\":[{\"name\":\"product_skus_code_tenant_id_idx\",\"columns\":[\"code\",\"tenant_id\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"product_skus_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"product_skus_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"89d5a311\"},\"importPath\":\"@happyvertical/smrt-products/models\"}},\"moduleType\":\"smrt\",\"recipes\":[{\"id\":\"products.clothing\",\"className\":\"ClothingProductsRecipe\",\"label\":\"Clothing\",\"summary\":\"Products that come in sizes and colors, with a stock-keeping unit for each combination.\",\"synonyms\":[\"apparel\",\"garments\",\"sizes\",\"variants\"],\"models\":[\"@happyvertical/smrt-products:Product\",\"@happyvertical/smrt-products:ProductVariant\",\"@happyvertical/smrt-products:Sku\"],\"nav\":[{\"label\":\"Products\",\"model\":\"@happyvertical/smrt-products:Product\",\"icon\":\"package\",\"description\":\"What you sell, with prices and details.\"}],\"requires\":[],\"group\":{\"id\":\"products\",\"label\":\"Products\",\"summary\":\"Sell goods: simple items, or clothing that comes in sizes and colors.\"},\"section\":{\"id\":\"catalog\",\"label\":\"Catalog\",\"icon\":\"package\",\"description\":\"Products, ingredients and the stock you hold.\"},\"options\":{\"@happyvertical/smrt-products:Product\":{\"fields\":{\"productType\":{\"visibility\":\"hidden\"},\"category\":{\"visibility\":\"hidden\"},\"manufacturer\":{\"visibility\":\"hidden\"},\"model\":{\"visibility\":\"hidden\"},\"inStock\":{\"visibility\":\"hidden\"},\"specifications\":{\"visibility\":\"hidden\"},\"tags\":{\"visibility\":\"hidden\"},\"description\":{\"visibility\":\"hidden\"}}},\"@happyvertical/smrt-products:ProductVariant\":{\"fields\":{\"label\":{\"visibility\":\"hidden\"},\"sortOrder\":{\"visibility\":\"hidden\"}}},\"@happyvertical/smrt-products:Sku\":{\"fields\":{\"barcode\":{\"visibility\":\"hidden\"},\"name\":{\"visibility\":\"hidden\"},\"weightGrams\":{\"visibility\":\"hidden\"},\"parentSkuId\":{\"visibility\":\"hidden\"},\"active\":{\"visibility\":\"hidden\"}}}},\"help\":{\"markdown\":\"## Overview\\n\\nClothing is for products that come in sizes and colors. You describe the product\\nonce, say which sizes and colors you offer, and each combination becomes its own\\nitem you can sell and count separately: a shirt in three sizes and two colors is\\nsix items.\\n\\n## Tasks\\n\\n### Add a clothing item\\n\\n1. Create a product with a **{field:name}** and a **{field:price}**.\\n2. Add a variant axis for sizes and list the values you offer, for example XS to\\n XL. Leave out the ones you do not make.\\n3. Add a variant axis for colors the same way.\\n4. Create an item (SKU) for each size and color combination, with its own code\\n and its size and color attributes.\\n\\n### Add a size or a color later\\n\\n1. Add the new value to the size or color axis of the product.\\n2. Create items for the new combinations. Items you already had keep their\\n codes.\\n\\n### Stop selling a size\\n\\n1. Remove the size from the product's size axis.\\n2. Remove the items for that size.\\n\",\"fieldRefs\":[\"name\",\"price\"]},\"demo\":{\"mode\":\"server\",\"reasons\":[\"Needs a server because its package does not build for a browser: server bootstrap (startRestServer, express/cors), core generators/mcp; and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626).\"]}},{\"id\":\"products.ingredients\",\"className\":\"IngredientsRecipe\",\"label\":\"Ingredients\",\"summary\":\"Things you buy in to make what you sell, kept as products of the material kind with their own list.\",\"synonyms\":[\"materials\",\"raw materials\",\"supplies\",\"stock items\"],\"models\":[\"@happyvertical/smrt-products:Product\"],\"nav\":[{\"label\":\"Ingredients\",\"model\":\"@happyvertical/smrt-products:Product\",\"icon\":\"package\",\"description\":\"What you buy to make what you sell, with what each costs.\",\"key\":\"ingredients\",\"noun\":\"ingredient\",\"filter\":{\"field\":\"productType\",\"value\":\"material\"}}],\"requires\":[\"products.simple\"],\"group\":{\"id\":\"products\",\"label\":\"Products\",\"summary\":\"Sell goods: simple items, or clothing that comes in sizes and colors.\"},\"section\":{\"id\":\"catalog\",\"label\":\"Catalog\",\"icon\":\"package\",\"description\":\"Products, ingredients and the stock you hold.\"},\"options\":{\"@happyvertical/smrt-products:Product\":{\"fields\":{\"productType\":{\"visibility\":\"hidden\"},\"category\":{\"visibility\":\"hidden\"},\"manufacturer\":{\"visibility\":\"hidden\"},\"model\":{\"visibility\":\"hidden\"},\"inStock\":{\"visibility\":\"hidden\"},\"specifications\":{\"visibility\":\"hidden\"},\"tags\":{\"visibility\":\"hidden\"}}}},\"help\":{\"markdown\":\"## Overview\\n\\nIngredients are the things you buy in to make what you sell: flour, butter,\\nsteel, fabric. They are products of the material kind, so they have the same\\nname, price and description as anything you sell, and they are listed apart from\\nthe products you sell. Count them with inventory like any other item.\\n\\n## Tasks\\n\\n### Add an ingredient\\n\\n1. Create a new ingredient.\\n2. Give it a **{field:name}** that includes the pack size, for example \\\"Bread flour, 25 kg\\\".\\n3. Enter what you pay in the **{field:price}**, in minor units (cents).\\n4. Add a **{field:description}** such as the brand or grade.\\n5. Save. It appears in the ingredients list, not in the products you sell.\\n\\n### Update what you pay\\n\\n1. Find the ingredient.\\n2. Change the **{field:price}** and save.\\n\",\"fieldRefs\":[\"description\",\"name\",\"price\"]},\"demo\":{\"mode\":\"server\",\"reasons\":[\"Needs a server because its package does not build for a browser: server bootstrap (startRestServer, express/cors), core generators/mcp; and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626).\"]}},{\"id\":\"products.simple\",\"className\":\"SimpleProductsRecipe\",\"label\":\"Simple products\",\"summary\":\"Items with a name, a price and a description.\",\"synonyms\":[\"items\",\"goods\",\"catalog\"],\"models\":[\"@happyvertical/smrt-products:Product\"],\"nav\":[{\"label\":\"Products\",\"model\":\"@happyvertical/smrt-products:Product\",\"icon\":\"package\",\"description\":\"What you sell, with prices and details.\"}],\"requires\":[],\"group\":{\"id\":\"products\",\"label\":\"Products\",\"summary\":\"Sell goods: simple items, or clothing that comes in sizes and colors.\"},\"section\":{\"id\":\"catalog\",\"label\":\"Catalog\",\"icon\":\"package\",\"description\":\"Products, ingredients and the stock you hold.\"},\"options\":{\"@happyvertical/smrt-products:Product\":{\"fields\":{\"productType\":{\"visibility\":\"hidden\"},\"category\":{\"visibility\":\"hidden\"},\"manufacturer\":{\"visibility\":\"hidden\"},\"model\":{\"visibility\":\"hidden\"},\"inStock\":{\"visibility\":\"hidden\"},\"specifications\":{\"visibility\":\"hidden\"},\"tags\":{\"visibility\":\"hidden\"}}}},\"help\":{\"markdown\":\"## Overview\\n\\nSimple products are things you sell that come in one form: one name, one price,\\none description. Keep a record for each so you can see everything you offer in\\none list, with the price next to it, and change it whenever it moves.\\n\\n## Tasks\\n\\n### Add a simple product\\n\\n1. Create a new product.\\n2. Give it a **{field:name}**, for example \\\"Ceramic mug\\\".\\n3. Enter the **{field:price}** in minor units (cents).\\n4. Add a **{field:description}** so anyone reading the list knows what it is.\\n5. Save. The product is now on your list.\\n\\n### Change a price\\n\\n1. Find the product.\\n2. Change the **{field:price}** and save.\\n\",\"fieldRefs\":[\"description\",\"name\",\"price\"]},\"demo\":{\"mode\":\"server\",\"reasons\":[\"Needs a server because its package does not build for a browser: server bootstrap (startRestServer, express/cors), core generators/mcp; and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626).\"]}}],\"smrtDependencies\":[\"@happyvertical/smrt-assets\",\"@happyvertical/smrt-core\",\"@happyvertical/smrt-tenancy\"],\"browser\":{\"status\":\"server-only\",\"issues\":[\"#3616\",\"#3624\",\"#3626\"],\"reason\":\"server bootstrap (startRestServer, express/cors), core generators/mcp\",\"via\":[\"@happyvertical/smrt-tenancy\"]},\"stampsConstructors\":true}"));
|
|
4
4
|
//#endregion
|
|
5
5
|
|
|
6
|
-
//# sourceMappingURL=__smrt-register__-
|
|
6
|
+
//# sourceMappingURL=__smrt-register__-B7ze66--.js.map
|