{
  "version": "1.0.0",
  "timestamp": 0,
  "packageName": "@happyvertical/smrt-tags",
  "packageVersion": "0.43.3",
  "objects": {
    "@happyvertical/smrt-tags:TagAlias": {
      "name": "tagalias",
      "className": "TagAlias",
      "qualifiedName": "@happyvertical/smrt-tags:TagAlias",
      "collection": "tagaliases",
      "filePath": "/home/runner/work/smrt/smrt/packages/tags/src/tag-alias.ts",
      "packageName": "@happyvertical/smrt-tags",
      "fields": {
        "created_at": {
          "type": "datetime",
          "required": false
        },
        "updated_at": {
          "type": "datetime",
          "required": false
        },
        "tagSlug": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "alias": {
          "type": "text",
          "required": true,
          "default": "",
          "_meta": {
            "required": true
          }
        },
        "language": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "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
            }
          }
        },
        "createdAt": {
          "type": "datetime",
          "required": false
        }
      },
      "methods": {
        "withDatabase": {
          "name": "withDatabase",
          "async": true,
          "parameters": [
            {
              "name": "db",
              "type": "DatabaseInterface",
              "optional": false
            },
            {
              "name": "operation",
              "type": "Function",
              "optional": false
            }
          ],
          "returnType": "Promise<T>",
          "isStatic": false,
          "isPublic": true
        },
        "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
        },
        "getTag": {
          "name": "getTag",
          "async": true,
          "parameters": [],
          "returnType": "Promise<Tag | null>",
          "isStatic": false,
          "isPublic": true
        },
        "searchByAlias": {
          "name": "searchByAlias",
          "async": true,
          "parameters": [
            {
              "name": "_alias",
              "type": "string",
              "optional": false
            },
            {
              "name": "_language",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<Tag[]>",
          "isStatic": true,
          "isPublic": true
        },
        "getAliasesForTag": {
          "name": "getAliasesForTag",
          "async": true,
          "parameters": [
            {
              "name": "_tagSlug",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<TagAlias[]>",
          "isStatic": true,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableStrategy": "sti",
        "api": {
          "include": [
            "list",
            "get",
            "create",
            "update",
            "delete"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get",
            "create"
          ]
        },
        "cli": true,
        "tenantScoped": {
          "mode": "optional"
        },
        "conflictColumns": [
          "tenant_id",
          "slug",
          "context",
          "_meta_type"
        ]
      },
      "extends": "SmrtObject",
      "exportName": "TagAlias",
      "collectionExportName": "TagAliasCollection",
      "validationRules": [
        {
          "field": "alias",
          "rule": "required",
          "fieldType": "text"
        }
      ],
      "schema": {
        "tableName": "tag_aliases",
        "ddl": "CREATE TABLE IF NOT EXISTS \"tag_aliases\" (\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  \"tag_slug\" TEXT DEFAULT '',\n  \"alias\" TEXT DEFAULT '',\n  \"language\" TEXT DEFAULT '',\n  \"tenant_id\" UUID\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"
          },
          "tag_slug": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "alias": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "language": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "tenantId",
            "notNull": false
          }
        },
        "indexes": [
          {
            "name": "tag_aliases_slug_context_meta_type_idx",
            "columns": [
              "tenant_id",
              "slug",
              "context",
              "_meta_type"
            ],
            "unique": true
          },
          {
            "name": "tag_aliases_meta_type_idx",
            "columns": [
              "_meta_type"
            ]
          },
          {
            "name": "tag_aliases_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          }
        ],
        "version": "95a4bc18"
      }
    },
    "@happyvertical/smrt-tags:TagAliasCollection": {
      "name": "tagaliascollection",
      "className": "TagAliasCollection",
      "qualifiedName": "@happyvertical/smrt-tags:TagAliasCollection",
      "collection": "tagaliases",
      "filePath": "/home/runner/work/smrt/smrt/packages/tags/src/tag-aliases.ts",
      "packageName": "@happyvertical/smrt-tags",
      "fields": {},
      "methods": {
        "addAlias": {
          "name": "addAlias",
          "async": true,
          "parameters": [
            {
              "name": "tagSlug",
              "type": "string",
              "optional": false
            },
            {
              "name": "alias",
              "type": "string",
              "optional": false
            },
            {
              "name": "language",
              "type": "string",
              "optional": true
            },
            {
              "name": "context",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<TagAlias>",
          "isStatic": false,
          "isPublic": true
        },
        "searchByAlias": {
          "name": "searchByAlias",
          "async": true,
          "parameters": [
            {
              "name": "alias",
              "type": "string",
              "optional": false
            },
            {
              "name": "language",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<Tag[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getAliasesForTag": {
          "name": "getAliasesForTag",
          "async": true,
          "parameters": [
            {
              "name": "tagSlug",
              "type": "string",
              "optional": false
            },
            {
              "name": "language",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<TagAlias[]>",
          "isStatic": false,
          "isPublic": true
        },
        "removeAlias": {
          "name": "removeAlias",
          "async": true,
          "parameters": [
            {
              "name": "aliasId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "bulkAddAliases": {
          "name": "bulkAddAliases",
          "async": true,
          "parameters": [
            {
              "name": "tagSlug",
              "type": "string",
              "optional": false
            },
            {
              "name": "aliases",
              "type": "Array<object>",
              "optional": false
            }
          ],
          "returnType": "Promise<TagAlias[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getAliasesByLanguage": {
          "name": "getAliasesByLanguage",
          "async": true,
          "parameters": [
            {
              "name": "tagSlug",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Map<string, string[]>>",
          "isStatic": false,
          "isPublic": true
        },
        "findMatchingAliases": {
          "name": "findMatchingAliases",
          "async": true,
          "parameters": [
            {
              "name": "query",
              "type": "string",
              "optional": false
            },
            {
              "name": "language",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<TagAlias[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByTenant": {
          "name": "findByTenant",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<TagAlias[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findGlobal": {
          "name": "findGlobal",
          "async": true,
          "parameters": [],
          "returnType": "Promise<TagAlias[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findWithGlobals": {
          "name": "findWithGlobals",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<TagAlias[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "TagAlias",
      "exportName": "TagAliasCollection",
      "collectionExportName": "TagAliasCollectionCollection",
      "schema": {
        "tableName": "tag_alias_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"tag_alias_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": "tag_alias_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "tag_alias_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "1a92c60d"
      }
    },
    "@happyvertical/smrt-tags:Tag": {
      "name": "tag",
      "className": "Tag",
      "qualifiedName": "@happyvertical/smrt-tags:Tag",
      "collection": "tags",
      "filePath": "/home/runner/work/smrt/smrt/packages/tags/src/tag.ts",
      "packageName": "@happyvertical/smrt-tags",
      "fields": {
        "created_at": {
          "type": "datetime",
          "required": false
        },
        "updated_at": {
          "type": "datetime",
          "required": false
        },
        "parentId": {
          "type": "foreignKey",
          "required": false,
          "related": "Tag",
          "_meta": {
            "nullable": true
          }
        },
        "name": {
          "type": "text",
          "required": true,
          "default": "",
          "_meta": {
            "required": true
          }
        },
        "level": {
          "type": "integer",
          "required": false,
          "default": 0
        },
        "description": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "metadata": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "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
            }
          }
        },
        "createdAt": {
          "type": "datetime",
          "required": false
        },
        "updatedAt": {
          "type": "datetime",
          "required": false
        }
      },
      "methods": {
        "withDatabase": {
          "name": "withDatabase",
          "async": true,
          "parameters": [
            {
              "name": "db",
              "type": "DatabaseInterface",
              "optional": false
            },
            {
              "name": "operation",
              "type": "Function",
              "optional": false
            }
          ],
          "returnType": "Promise<T>",
          "isStatic": false,
          "isPublic": true
        },
        "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
        },
        "getParent": {
          "name": "getParent",
          "async": true,
          "parameters": [],
          "returnType": "Promise<null>",
          "isStatic": false,
          "isPublic": true
        },
        "getChildren": {
          "name": "getChildren",
          "async": true,
          "parameters": [],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "getAncestors": {
          "name": "getAncestors",
          "async": true,
          "parameters": [],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "getDescendants": {
          "name": "getDescendants",
          "async": true,
          "parameters": [],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "getHierarchy": {
          "name": "getHierarchy",
          "async": true,
          "parameters": [],
          "returnType": "Promise<HierarchyView>",
          "isStatic": false,
          "isPublic": true
        },
        "moveTo": {
          "name": "moveTo",
          "async": true,
          "parameters": [
            {
              "name": "newParent",
              "type": "string | null",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "getMetadata": {
          "name": "getMetadata",
          "async": false,
          "parameters": [],
          "returnType": "TagMetadata",
          "isStatic": false,
          "isPublic": true
        },
        "setMetadata": {
          "name": "setMetadata",
          "async": false,
          "parameters": [
            {
              "name": "data",
              "type": "TagMetadata",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "updateMetadata": {
          "name": "updateMetadata",
          "async": false,
          "parameters": [
            {
              "name": "updates",
              "type": "Partial<TagMetadata>",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "getBySlug": {
          "name": "getBySlug",
          "async": true,
          "parameters": [
            {
              "name": "_slug",
              "type": "string",
              "optional": false
            },
            {
              "name": "_context",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<Tag | null>",
          "isStatic": true,
          "isPublic": true
        },
        "getRootTags": {
          "name": "getRootTags",
          "async": true,
          "parameters": [
            {
              "name": "_context",
              "type": "string",
              "optional": true,
              "default": "global"
            }
          ],
          "returnType": "Promise<Tag[]>",
          "isStatic": true,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableStrategy": "sti",
        "api": {
          "include": [
            "list",
            "get",
            "create",
            "update",
            "delete"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get",
            "create",
            "update"
          ]
        },
        "cli": true,
        "tenantScoped": {
          "mode": "optional"
        },
        "conflictColumns": [
          "tenant_id",
          "slug",
          "context",
          "_meta_type"
        ]
      },
      "extends": "SmrtHierarchical",
      "exportName": "Tag",
      "collectionExportName": "TagCollection",
      "validationRules": [
        {
          "field": "name",
          "rule": "required",
          "fieldType": "text"
        }
      ],
      "schema": {
        "tableName": "tags",
        "ddl": "CREATE TABLE IF NOT EXISTS \"tags\" (\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  \"parent_id\" UUID,\n  \"name\" TEXT DEFAULT '',\n  \"level\" INTEGER DEFAULT 0,\n  \"description\" TEXT DEFAULT '',\n  \"metadata\" TEXT DEFAULT '',\n  \"tenant_id\" UUID\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"
          },
          "parent_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": false,
            "foreignKey": {
              "table": "tags",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "name": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "level": {
            "type": "INTEGER",
            "notNull": false,
            "default": 0
          },
          "description": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "metadata": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "tenantId",
            "notNull": false
          }
        },
        "indexes": [
          {
            "name": "tags_slug_context_meta_type_idx",
            "columns": [
              "tenant_id",
              "slug",
              "context",
              "_meta_type"
            ],
            "unique": true
          },
          {
            "name": "tags_meta_type_idx",
            "columns": [
              "_meta_type"
            ]
          },
          {
            "name": "tags_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          },
          {
            "name": "tags_parent_id_idx",
            "columns": [
              "parent_id"
            ]
          }
        ],
        "version": "4da9de3e"
      }
    },
    "@happyvertical/smrt-tags:TagCollection": {
      "name": "tagcollection",
      "className": "TagCollection",
      "qualifiedName": "@happyvertical/smrt-tags:TagCollection",
      "collection": "tags",
      "filePath": "/home/runner/work/smrt/smrt/packages/tags/src/tags.ts",
      "packageName": "@happyvertical/smrt-tags",
      "fields": {},
      "methods": {
        "getOrCreate": {
          "name": "getOrCreate",
          "async": true,
          "parameters": [
            {
              "name": "slug",
              "type": "string",
              "optional": false
            },
            {
              "name": "context",
              "type": "string",
              "optional": true,
              "default": "global"
            }
          ],
          "returnType": "Promise<Tag>",
          "isStatic": false,
          "isPublic": true
        },
        "listByContext": {
          "name": "listByContext",
          "async": true,
          "parameters": [
            {
              "name": "context",
              "type": "string",
              "optional": false
            },
            {
              "name": "parentSlug",
              "type": "string | null",
              "optional": true
            }
          ],
          "returnType": "Promise<Tag[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getRootTags": {
          "name": "getRootTags",
          "async": true,
          "parameters": [
            {
              "name": "context",
              "type": "string",
              "optional": true,
              "default": "global"
            }
          ],
          "returnType": "Promise<Tag[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getChildren": {
          "name": "getChildren",
          "async": true,
          "parameters": [
            {
              "name": "parentSlug",
              "type": "string",
              "optional": false
            },
            {
              "name": "context",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<Tag[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getHierarchy": {
          "name": "getHierarchy",
          "async": true,
          "parameters": [
            {
              "name": "slug",
              "type": "string",
              "optional": false
            },
            {
              "name": "context",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<TagHierarchy>",
          "isStatic": false,
          "isPublic": true
        },
        "moveTag": {
          "name": "moveTag",
          "async": true,
          "parameters": [
            {
              "name": "slug",
              "type": "string",
              "optional": false
            },
            {
              "name": "newParentSlug",
              "type": "string | null",
              "optional": false
            },
            {
              "name": "context",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "mergeTag": {
          "name": "mergeTag",
          "async": true,
          "parameters": [
            {
              "name": "fromSlug",
              "type": "string",
              "optional": false
            },
            {
              "name": "toSlug",
              "type": "string",
              "optional": false
            },
            {
              "name": "context",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "cleanupUnused": {
          "name": "cleanupUnused",
          "async": true,
          "parameters": [
            {
              "name": "context",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "calculateLevel": {
          "name": "calculateLevel",
          "async": true,
          "parameters": [
            {
              "name": "parentSlug",
              "type": "string | null",
              "optional": false
            },
            {
              "name": "context",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "findByTenant": {
          "name": "findByTenant",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Tag[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findGlobal": {
          "name": "findGlobal",
          "async": true,
          "parameters": [],
          "returnType": "Promise<Tag[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findWithGlobals": {
          "name": "findWithGlobals",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Tag[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "Tag",
      "exportName": "TagCollection",
      "collectionExportName": "TagCollectionCollection",
      "schema": {
        "tableName": "tag_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"tag_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": "tag_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "tag_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "42236c49"
      }
    }
  },
  "moduleType": "smrt",
  "smrtDependencies": [
    "@happyvertical/smrt-core",
    "@happyvertical/smrt-tenancy"
  ]
}