{
  "version": "1.0.0",
  "timestamp": 0,
  "packageName": "@happyvertical/smrt-products",
  "packageVersion": "0.42.6",
  "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": "category_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"category_collections\" (\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);",
        "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"
          }
        },
        "indexes": [
          {
            "name": "category_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "category_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "f2f42d47"
      }
    },
    "@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": {
        "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  \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\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"
          }
        },
        "indexes": [
          {
            "name": "products_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "products_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "d7d2c125"
      }
    },
    "@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": {
        "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
        },
        "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
        },
        "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);",
        "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"
          }
        },
        "indexes": [
          {
            "name": "product_assets_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "product_assets_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "ffb1b593"
      }
    },
    "@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": "product_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"product_collections\" (\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);",
        "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"
          }
        },
        "indexes": [
          {
            "name": "product_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "product_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "51a90ef1"
      }
    },
    "@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);",
        "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"
          }
        },
        "indexes": [
          {
            "name": "product_variants_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "product_variants_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "7e192164"
      }
    },
    "@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);",
        "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"
          }
        },
        "indexes": [
          {
            "name": "product_skus_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "product_skus_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "f3e8dedc"
      }
    },
    "@happyvertical/smrt-products:Category": {
      "name": "category",
      "className": "Category",
      "qualifiedName": "@happyvertical/smrt-products:Category",
      "collection": "categories",
      "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": {
        "getAiUsageSnapshot": {
          "name": "getAiUsageSnapshot",
          "async": false,
          "parameters": [],
          "returnType": "AiUsageSnapshot | undefined",
          "isStatic": false,
          "isPublic": true
        },
        "resetAiUsage": {
          "name": "resetAiUsage",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "listAiUsage": {
          "name": "listAiUsage",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiUsageListOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<SmrtAiUsageRecord[]>",
          "isStatic": false,
          "isPublic": true
        },
        "summarizeAiUsage": {
          "name": "summarizeAiUsage",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiUsageSummaryOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<Record<string, AiUsageStats>>",
          "isStatic": false,
          "isPublic": true
        },
        "destroy": {
          "name": "destroy",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "markAsPersisted": {
          "name": "markAsPersisted",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "requireInsertOnSave": {
          "name": "requireInsertOnSave",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "initialize": {
          "name": "initialize",
          "async": true,
          "parameters": [],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "loadDataFromDb": {
          "name": "loadDataFromDb",
          "async": true,
          "parameters": [
            {
              "name": "data",
              "type": "Record<string>",
              "optional": false
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getFields": {
          "name": "getFields",
          "async": true,
          "parameters": [],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "toJSON": {
          "name": "toJSON",
          "async": false,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "toPlainObject": {
          "name": "toPlainObject",
          "async": false,
          "parameters": [],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "toPublicJSON": {
          "name": "toPublicJSON",
          "async": false,
          "parameters": [
            {
              "name": "options",
              "type": "PublicJsonOptions",
              "optional": true
            }
          ],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "getId": {
          "name": "getId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getSlug": {
          "name": "getSlug",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getSavedId": {
          "name": "getSavedId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "isSaved": {
          "name": "isSaved",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "save": {
          "name": "save",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "classifyConstraintError": {
          "name": "classifyConstraintError",
          "async": false,
          "parameters": [
            {
              "name": "message",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "'unique' | 'not_null' | null",
          "isStatic": true,
          "isPublic": true
        },
        "loadFromId": {
          "name": "loadFromId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "loadFromSlug": {
          "name": "loadFromSlug",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "is": {
          "name": "is",
          "async": true,
          "parameters": [
            {
              "name": "criteria",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "do": {
          "name": "do",
          "async": true,
          "parameters": [
            {
              "name": "instructions",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "describe": {
          "name": "describe",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "delete": {
          "name": "delete",
          "async": true,
          "parameters": [],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "isRelatedLoaded": {
          "name": "isRelatedLoaded",
          "async": false,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "_setLoadedRelationship": {
          "name": "_setLoadedRelationship",
          "async": false,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "value",
              "type": "any",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "loadRelated": {
          "name": "loadRelated",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "loadRelatedMany": {
          "name": "loadRelatedMany",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getRelated": {
          "name": "getRelated",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "getAvailableTools": {
          "name": "getAvailableTools",
          "async": false,
          "parameters": [],
          "returnType": "AITool[]",
          "isStatic": false,
          "isPublic": true
        },
        "executeToolCall": {
          "name": "executeToolCall",
          "async": true,
          "parameters": [
            {
              "name": "toolCall",
              "type": "ToolCall",
              "optional": false
            }
          ],
          "returnType": "Promise<ToolCallResult>",
          "isStatic": false,
          "isPublic": true
        },
        "remember": {
          "name": "remember",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "recall": {
          "name": "recall",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "recallAll": {
          "name": "recallAll",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": true
            }
          ],
          "returnType": "Promise<Map<string>>",
          "isStatic": false,
          "isPublic": true
        },
        "forget": {
          "name": "forget",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "forgetScope": {
          "name": "forgetScope",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "generateEmbeddings": {
          "name": "generateEmbeddings",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "GenerateEmbeddingsOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "getEmbedding": {
          "name": "getEmbedding",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "model",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<number[] | null>",
          "isStatic": false,
          "isPublic": true
        },
        "hasStaleEmbeddings": {
          "name": "hasStaleEmbeddings",
          "async": true,
          "parameters": [],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "clearEmbeddings": {
          "name": "clearEmbeddings",
          "async": true,
          "parameters": [],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "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",
      "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
          },
          "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
          },
          {
            "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": "9b7d356d"
      }
    },
    "@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
        },
        "name": {
          "type": "text",
          "required": false
        },
        "description": {
          "type": "text",
          "required": false
        },
        "category": {
          "type": "text",
          "required": false
        },
        "manufacturer": {
          "type": "text",
          "required": false
        },
        "model": {
          "type": "text",
          "required": false
        },
        "price": {
          "type": "integer",
          "required": true,
          "default": 0
        },
        "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": {
        "getAiUsageSnapshot": {
          "name": "getAiUsageSnapshot",
          "async": false,
          "parameters": [],
          "returnType": "AiUsageSnapshot | undefined",
          "isStatic": false,
          "isPublic": true
        },
        "resetAiUsage": {
          "name": "resetAiUsage",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "listAiUsage": {
          "name": "listAiUsage",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiUsageListOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<SmrtAiUsageRecord[]>",
          "isStatic": false,
          "isPublic": true
        },
        "summarizeAiUsage": {
          "name": "summarizeAiUsage",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiUsageSummaryOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<Record<string, AiUsageStats>>",
          "isStatic": false,
          "isPublic": true
        },
        "destroy": {
          "name": "destroy",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "markAsPersisted": {
          "name": "markAsPersisted",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "requireInsertOnSave": {
          "name": "requireInsertOnSave",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "initialize": {
          "name": "initialize",
          "async": true,
          "parameters": [],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "loadDataFromDb": {
          "name": "loadDataFromDb",
          "async": true,
          "parameters": [
            {
              "name": "data",
              "type": "Record<string>",
              "optional": false
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getFields": {
          "name": "getFields",
          "async": true,
          "parameters": [],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "toJSON": {
          "name": "toJSON",
          "async": false,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "toPlainObject": {
          "name": "toPlainObject",
          "async": false,
          "parameters": [],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "toPublicJSON": {
          "name": "toPublicJSON",
          "async": false,
          "parameters": [
            {
              "name": "options",
              "type": "PublicJsonOptions",
              "optional": true
            }
          ],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "getId": {
          "name": "getId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getSlug": {
          "name": "getSlug",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getSavedId": {
          "name": "getSavedId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "isSaved": {
          "name": "isSaved",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "save": {
          "name": "save",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "classifyConstraintError": {
          "name": "classifyConstraintError",
          "async": false,
          "parameters": [
            {
              "name": "message",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "'unique' | 'not_null' | null",
          "isStatic": true,
          "isPublic": true
        },
        "loadFromId": {
          "name": "loadFromId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "loadFromSlug": {
          "name": "loadFromSlug",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "is": {
          "name": "is",
          "async": true,
          "parameters": [
            {
              "name": "criteria",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "do": {
          "name": "do",
          "async": true,
          "parameters": [
            {
              "name": "instructions",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "describe": {
          "name": "describe",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "delete": {
          "name": "delete",
          "async": true,
          "parameters": [],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "isRelatedLoaded": {
          "name": "isRelatedLoaded",
          "async": false,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "_setLoadedRelationship": {
          "name": "_setLoadedRelationship",
          "async": false,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "value",
              "type": "any",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "loadRelated": {
          "name": "loadRelated",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "loadRelatedMany": {
          "name": "loadRelatedMany",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getRelated": {
          "name": "getRelated",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "getAvailableTools": {
          "name": "getAvailableTools",
          "async": false,
          "parameters": [],
          "returnType": "AITool[]",
          "isStatic": false,
          "isPublic": true
        },
        "executeToolCall": {
          "name": "executeToolCall",
          "async": true,
          "parameters": [
            {
              "name": "toolCall",
              "type": "ToolCall",
              "optional": false
            }
          ],
          "returnType": "Promise<ToolCallResult>",
          "isStatic": false,
          "isPublic": true
        },
        "remember": {
          "name": "remember",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "recall": {
          "name": "recall",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "recallAll": {
          "name": "recallAll",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": true
            }
          ],
          "returnType": "Promise<Map<string>>",
          "isStatic": false,
          "isPublic": true
        },
        "forget": {
          "name": "forget",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "forgetScope": {
          "name": "forgetScope",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "generateEmbeddings": {
          "name": "generateEmbeddings",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "GenerateEmbeddingsOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "getEmbedding": {
          "name": "getEmbedding",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "model",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<number[] | null>",
          "isStatic": false,
          "isPublic": true
        },
        "hasStaleEmbeddings": {
          "name": "hasStaleEmbeddings",
          "async": true,
          "parameters": [],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "clearEmbeddings": {
          "name": "clearEmbeddings",
          "async": true,
          "parameters": [],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "getSpecification": {
          "name": "getSpecification",
          "async": true,
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "updateSpecification": {
          "name": "updateSpecification",
          "async": true,
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false
            },
            {
              "name": "value",
              "type": "any",
              "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": true,
        "tenantScoped": {
          "mode": "optional"
        },
        "tableName": "products",
        "tableStrategy": "sti"
      },
      "extends": "Product",
      "exportName": "Material",
      "collectionExportName": "MaterialCollection",
      "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
          },
          {
            "name": "products_meta_type_idx",
            "columns": [
              "_meta_type"
            ]
          },
          {
            "name": "products_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          }
        ],
        "version": "a7b4d592"
      }
    },
    "@happyvertical/smrt-products:Product": {
      "name": "product",
      "className": "Product",
      "qualifiedName": "@happyvertical/smrt-products:Product",
      "collection": "products",
      "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
        },
        "name": {
          "type": "text",
          "required": false
        },
        "description": {
          "type": "text",
          "required": false
        },
        "category": {
          "type": "text",
          "required": false
        },
        "manufacturer": {
          "type": "text",
          "required": false
        },
        "model": {
          "type": "text",
          "required": false
        },
        "price": {
          "type": "integer",
          "required": true,
          "default": 0
        },
        "inStock": {
          "type": "boolean",
          "required": true,
          "default": true
        },
        "specifications": {
          "type": "json",
          "required": false,
          "default": {}
        },
        "tags": {
          "type": "json",
          "required": false,
          "default": []
        }
      },
      "methods": {
        "getAiUsageSnapshot": {
          "name": "getAiUsageSnapshot",
          "async": false,
          "parameters": [],
          "returnType": "AiUsageSnapshot | undefined",
          "isStatic": false,
          "isPublic": true
        },
        "resetAiUsage": {
          "name": "resetAiUsage",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "listAiUsage": {
          "name": "listAiUsage",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiUsageListOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<SmrtAiUsageRecord[]>",
          "isStatic": false,
          "isPublic": true
        },
        "summarizeAiUsage": {
          "name": "summarizeAiUsage",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiUsageSummaryOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<Record<string, AiUsageStats>>",
          "isStatic": false,
          "isPublic": true
        },
        "destroy": {
          "name": "destroy",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "markAsPersisted": {
          "name": "markAsPersisted",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "requireInsertOnSave": {
          "name": "requireInsertOnSave",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "initialize": {
          "name": "initialize",
          "async": true,
          "parameters": [],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "loadDataFromDb": {
          "name": "loadDataFromDb",
          "async": true,
          "parameters": [
            {
              "name": "data",
              "type": "Record<string>",
              "optional": false
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getFields": {
          "name": "getFields",
          "async": true,
          "parameters": [],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "toJSON": {
          "name": "toJSON",
          "async": false,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "toPlainObject": {
          "name": "toPlainObject",
          "async": false,
          "parameters": [],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "toPublicJSON": {
          "name": "toPublicJSON",
          "async": false,
          "parameters": [
            {
              "name": "options",
              "type": "PublicJsonOptions",
              "optional": true
            }
          ],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "getId": {
          "name": "getId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getSlug": {
          "name": "getSlug",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getSavedId": {
          "name": "getSavedId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "isSaved": {
          "name": "isSaved",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "save": {
          "name": "save",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "classifyConstraintError": {
          "name": "classifyConstraintError",
          "async": false,
          "parameters": [
            {
              "name": "message",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "'unique' | 'not_null' | null",
          "isStatic": true,
          "isPublic": true
        },
        "loadFromId": {
          "name": "loadFromId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "loadFromSlug": {
          "name": "loadFromSlug",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "is": {
          "name": "is",
          "async": true,
          "parameters": [
            {
              "name": "criteria",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "do": {
          "name": "do",
          "async": true,
          "parameters": [
            {
              "name": "instructions",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "describe": {
          "name": "describe",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "delete": {
          "name": "delete",
          "async": true,
          "parameters": [],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "isRelatedLoaded": {
          "name": "isRelatedLoaded",
          "async": false,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "_setLoadedRelationship": {
          "name": "_setLoadedRelationship",
          "async": false,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "value",
              "type": "any",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "loadRelated": {
          "name": "loadRelated",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "loadRelatedMany": {
          "name": "loadRelatedMany",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getRelated": {
          "name": "getRelated",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "getAvailableTools": {
          "name": "getAvailableTools",
          "async": false,
          "parameters": [],
          "returnType": "AITool[]",
          "isStatic": false,
          "isPublic": true
        },
        "executeToolCall": {
          "name": "executeToolCall",
          "async": true,
          "parameters": [
            {
              "name": "toolCall",
              "type": "ToolCall",
              "optional": false
            }
          ],
          "returnType": "Promise<ToolCallResult>",
          "isStatic": false,
          "isPublic": true
        },
        "remember": {
          "name": "remember",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "recall": {
          "name": "recall",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "recallAll": {
          "name": "recallAll",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": true
            }
          ],
          "returnType": "Promise<Map<string>>",
          "isStatic": false,
          "isPublic": true
        },
        "forget": {
          "name": "forget",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "forgetScope": {
          "name": "forgetScope",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "generateEmbeddings": {
          "name": "generateEmbeddings",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "GenerateEmbeddingsOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "getEmbedding": {
          "name": "getEmbedding",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "model",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<number[] | null>",
          "isStatic": false,
          "isPublic": true
        },
        "hasStaleEmbeddings": {
          "name": "hasStaleEmbeddings",
          "async": true,
          "parameters": [],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "clearEmbeddings": {
          "name": "clearEmbeddings",
          "async": true,
          "parameters": [],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "getSpecification": {
          "name": "getSpecification",
          "async": true,
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "updateSpecification": {
          "name": "updateSpecification",
          "async": true,
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false
            },
            {
              "name": "value",
              "type": "any",
              "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": true,
        "tenantScoped": {
          "mode": "optional"
        },
        "conflictColumns": [
          "tenant_id",
          "slug",
          "context",
          "_meta_type"
        ]
      },
      "extends": "SmrtObject",
      "exportName": "Product",
      "collectionExportName": "ProductCollection",
      "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
          },
          {
            "name": "products_meta_type_idx",
            "columns": [
              "_meta_type"
            ]
          },
          {
            "name": "products_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          }
        ],
        "version": "a7b4d592"
      }
    },
    "@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
          },
          "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
          },
          {
            "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": "320e1554"
      }
    },
    "@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": "",
          "_meta": {
            "required": true
          }
        },
        "axisName": {
          "type": "text",
          "required": true,
          "default": "",
          "_meta": {
            "required": true
          }
        },
        "label": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "allowedValues": {
          "type": "text",
          "required": false,
          "default": "[]"
        },
        "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
            }
          ],
          "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": true,
        "tenantScoped": {
          "mode": "optional"
        }
      },
      "extends": "SmrtObject",
      "exportName": "ProductVariant",
      "collectionExportName": "ProductVariantCollection",
      "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
          },
          {
            "name": "product_variants_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ]
          },
          {
            "name": "product_variants_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          }
        ],
        "version": "2891ff02"
      }
    },
    "@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": "",
          "_meta": {
            "required": true
          }
        },
        "code": {
          "type": "text",
          "required": true,
          "default": "",
          "_meta": {
            "required": true
          }
        },
        "barcode": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "name": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "attributes": {
          "type": "text",
          "required": false,
          "default": "{}"
        },
        "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>",
          "isStatic": false,
          "isPublic": true
        },
        "setAttributes": {
          "name": "setAttributes",
          "async": false,
          "parameters": [
            {
              "name": "value",
              "type": "Record<string> | string",
              "optional": false
            }
          ],
          "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": true,
        "tenantScoped": {
          "mode": "optional"
        }
      },
      "extends": "SmrtObject",
      "exportName": "Sku",
      "collectionExportName": "SkuCollection",
      "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
          },
          {
            "name": "product_skus_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ]
          },
          {
            "name": "product_skus_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          }
        ],
        "version": "89d5a311"
      }
    }
  },
  "moduleType": "smrt",
  "smrtDependencies": [
    "@happyvertical/smrt-assets",
    "@happyvertical/smrt-core",
    "@happyvertical/smrt-tenancy"
  ]
}