{
  "version": "1.0.0",
  "timestamp": 0,
  "packageName": "@happyvertical/smrt-personas",
  "packageVersion": "0.51.10",
  "objects": {
    "@happyvertical/smrt-personas:AgentPersona": {
      "name": "agentpersona",
      "className": "AgentPersona",
      "qualifiedName": "@happyvertical/smrt-personas:AgentPersona",
      "collection": "agentpersonas",
      "filePath": "/home/runner/work/smrt/smrt/packages/personas/src/agent-persona.ts",
      "packageName": "@happyvertical/smrt-personas",
      "fields": {
        "tenantId": {
          "type": "text",
          "required": true,
          "_meta": {
            "sqlType": "UUID",
            "__tenancy": {
              "isTenantIdField": true,
              "autoFilter": true,
              "required": true,
              "autoPopulate": true,
              "nullable": false,
              "mode": "required",
              "field": "tenantId",
              "allowSuperAdminBypass": false
            }
          }
        },
        "agentClass": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "name": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "contextType": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "contextId": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "instructions": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "allowedTools": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "runAsUserId": {
          "type": "crossPackageRef",
          "required": true,
          "related": "@happyvertical/smrt-users:User"
        },
        "actsAsProfileId": {
          "type": "crossPackageRef",
          "required": false,
          "related": "@happyvertical/smrt-profiles:Profile",
          "_meta": {
            "nullable": true
          }
        },
        "memoryScope": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "priority": {
          "type": "integer",
          "required": false,
          "default": 0
        },
        "enabled": {
          "type": "boolean",
          "required": false,
          "_meta": {}
        }
      },
      "methods": {
        "getAllowedTools": {
          "name": "getAllowedTools",
          "async": false,
          "parameters": [],
          "returnType": "string[]",
          "isStatic": false,
          "isPublic": true
        },
        "setAllowedTools": {
          "name": "setAllowedTools",
          "async": false,
          "parameters": [
            {
              "name": "tools",
              "type": "string[]",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "agent_personas",
        "api": {
          "include": [
            "list",
            "get",
            "create",
            "update",
            "delete"
          ]
        },
        "cli": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "conflictColumns": [
          "tenant_id",
          "agent_class",
          "name"
        ],
        "tenantScoped": {
          "mode": "required"
        }
      },
      "extends": "SmrtObject",
      "exportName": "AgentPersona",
      "collectionExportName": "AgentPersonaCollection",
      "validationRules": [
        {
          "field": "runAsUserId",
          "rule": "required",
          "fieldType": "crossPackageRef"
        }
      ],
      "schema": {
        "tableName": "agent_personas",
        "ddl": "CREATE TABLE IF NOT EXISTS \"agent_personas\" (\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 NOT NULL,\n  \"agent_class\" TEXT,\n  \"name\" TEXT DEFAULT '',\n  \"context_type\" TEXT,\n  \"context_id\" TEXT,\n  \"instructions\" TEXT,\n  \"allowed_tools\" TEXT,\n  \"run_as_user_id\" UUID NOT NULL,\n  \"acts_as_profile_id\" UUID,\n  \"memory_scope\" TEXT,\n  \"priority\" INTEGER DEFAULT 0,\n  \"enabled\" BOOLEAN\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": true,
            "unique": false
          },
          "agent_class": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "name": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "context_type": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "context_id": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "instructions": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "allowed_tools": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "run_as_user_id": {
            "type": "UUID",
            "referenceKind": "crossPackageRef",
            "notNull": true,
            "unique": false
          },
          "acts_as_profile_id": {
            "type": "UUID",
            "referenceKind": "crossPackageRef",
            "notNull": false,
            "unique": false
          },
          "memory_scope": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "priority": {
            "type": "INTEGER",
            "notNull": false,
            "unique": false,
            "default": 0
          },
          "enabled": {
            "type": "BOOLEAN",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "agent_personas_tenant_id_agent_class_idx",
            "columns": [
              "tenant_id",
              "agent_class",
              "name"
            ],
            "unique": true,
            "nullsNotDistinct": true
          },
          {
            "name": "agent_personas_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ]
          },
          {
            "name": "agent_personas_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          },
          {
            "name": "agent_personas_run_as_user_id_idx",
            "columns": [
              "run_as_user_id"
            ]
          },
          {
            "name": "agent_personas_acts_as_profile_id_idx",
            "columns": [
              "acts_as_profile_id"
            ]
          }
        ],
        "version": "71e955ef"
      },
      "importPath": "@happyvertical/smrt-personas"
    },
    "@happyvertical/smrt-personas:AgentPersonaCollection": {
      "name": "agentpersonacollection",
      "className": "AgentPersonaCollection",
      "qualifiedName": "@happyvertical/smrt-personas:AgentPersonaCollection",
      "collection": "agentpersonas",
      "filePath": "/home/runner/work/smrt/smrt/packages/personas/src/agent-persona.ts",
      "packageName": "@happyvertical/smrt-personas",
      "fields": {},
      "methods": {
        "byTenantAndClass": {
          "name": "byTenantAndClass",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "agentClass",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AgentPersona[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findActive": {
          "name": "findActive",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "agentClass",
              "type": "string",
              "optional": false
            },
            {
              "name": "context",
              "type": "object",
              "optional": true,
              "memberTypes": [
                "string | null"
              ]
            }
          ],
          "returnType": "Promise<AgentPersona[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "agent_personas"
      },
      "extends": "SmrtCollection",
      "extendsTypeArg": "AgentPersona",
      "exportName": "AgentPersonaCollection",
      "collectionExportName": "AgentPersonaCollectionCollection",
      "schema": {
        "tableName": "agent_personas",
        "ddl": "CREATE TABLE IF NOT EXISTS \"agent_personas\" (\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 NOT NULL,\n  \"agent_class\" TEXT,\n  \"name\" TEXT DEFAULT '',\n  \"context_type\" TEXT,\n  \"context_id\" TEXT,\n  \"instructions\" TEXT,\n  \"allowed_tools\" TEXT,\n  \"run_as_user_id\" UUID NOT NULL,\n  \"acts_as_profile_id\" UUID,\n  \"memory_scope\" TEXT,\n  \"priority\" INTEGER DEFAULT 0,\n  \"enabled\" BOOLEAN\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": true,
            "unique": false
          },
          "agent_class": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "name": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "context_type": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "context_id": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "instructions": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "allowed_tools": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "run_as_user_id": {
            "type": "UUID",
            "referenceKind": "crossPackageRef",
            "notNull": true,
            "unique": false
          },
          "acts_as_profile_id": {
            "type": "UUID",
            "referenceKind": "crossPackageRef",
            "notNull": false,
            "unique": false
          },
          "memory_scope": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "priority": {
            "type": "INTEGER",
            "notNull": false,
            "unique": false,
            "default": 0
          },
          "enabled": {
            "type": "BOOLEAN",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "agent_personas_tenant_id_agent_class_idx",
            "columns": [
              "tenant_id",
              "agent_class",
              "name"
            ],
            "unique": true,
            "nullsNotDistinct": true
          },
          {
            "name": "agent_personas_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ]
          },
          {
            "name": "agent_personas_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          },
          {
            "name": "agent_personas_run_as_user_id_idx",
            "columns": [
              "run_as_user_id"
            ]
          },
          {
            "name": "agent_personas_acts_as_profile_id_idx",
            "columns": [
              "acts_as_profile_id"
            ]
          }
        ],
        "version": "71e955ef"
      },
      "importPath": "@happyvertical/smrt-personas"
    },
    "@happyvertical/smrt-personas:DirectiveProposal": {
      "name": "directiveproposal",
      "className": "DirectiveProposal",
      "qualifiedName": "@happyvertical/smrt-personas:DirectiveProposal",
      "collection": "directiveproposals",
      "filePath": "/home/runner/work/smrt/smrt/packages/personas/src/directive-proposal.ts",
      "packageName": "@happyvertical/smrt-personas",
      "fields": {
        "tenantId": {
          "type": "text",
          "required": true,
          "_meta": {
            "sqlType": "UUID",
            "__tenancy": {
              "isTenantIdField": true,
              "autoFilter": true,
              "required": true,
              "autoPopulate": true,
              "nullable": false,
              "mode": "required",
              "field": "tenantId",
              "allowSuperAdminBypass": false
            }
          }
        },
        "personaId": {
          "type": "foreignKey",
          "required": true,
          "related": "AgentPersona",
          "_meta": {
            "required": true
          }
        },
        "agentClass": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "promptKey": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "proposedInstructions": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "currentInstructions": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "rationale": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "evidence": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "status": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "fingerprint": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "confidence": {
          "type": "decimal",
          "required": false,
          "default": 0
        },
        "proposedBy": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "reviewedBy": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "reviewedAt": {
          "type": "datetime",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "reviewNote": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "activatedOverrideId": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        }
      },
      "methods": {
        "getEvidence": {
          "name": "getEvidence",
          "async": false,
          "parameters": [],
          "returnType": "DirectiveEvidence",
          "isStatic": false,
          "isPublic": true
        },
        "setEvidence": {
          "name": "setEvidence",
          "async": false,
          "parameters": [
            {
              "name": "value",
              "type": "DirectiveEvidence",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "isPending": {
          "name": "isPending",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "directive_proposals",
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "tenantScoped": {
          "mode": "required"
        },
        "conflictColumns": [
          "tenant_id",
          "slug",
          "context"
        ]
      },
      "extends": "SmrtObject",
      "exportName": "DirectiveProposal",
      "collectionExportName": "DirectiveProposalCollection",
      "validationRules": [
        {
          "field": "personaId",
          "rule": "required",
          "fieldType": "foreignKey"
        }
      ],
      "schema": {
        "tableName": "directive_proposals",
        "ddl": "CREATE TABLE IF NOT EXISTS \"directive_proposals\" (\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 NOT NULL,\n  \"persona_id\" UUID NOT NULL,\n  \"agent_class\" TEXT,\n  \"prompt_key\" TEXT,\n  \"proposed_instructions\" TEXT,\n  \"current_instructions\" TEXT,\n  \"rationale\" TEXT,\n  \"evidence\" TEXT,\n  \"status\" TEXT,\n  \"fingerprint\" TEXT,\n  \"confidence\" REAL DEFAULT 0,\n  \"proposed_by\" TEXT,\n  \"reviewed_by\" TEXT,\n  \"reviewed_at\" TIMESTAMP,\n  \"review_note\" TEXT,\n  \"activated_override_id\" TEXT\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": true,
            "unique": false
          },
          "persona_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "agent_personas",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "agent_class": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "prompt_key": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "proposed_instructions": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "current_instructions": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "rationale": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "evidence": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "status": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "fingerprint": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "confidence": {
            "type": "REAL",
            "notNull": false,
            "unique": false,
            "default": 0
          },
          "proposed_by": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "reviewed_by": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "reviewed_at": {
            "type": "TIMESTAMP",
            "notNull": false,
            "unique": false
          },
          "review_note": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "activated_override_id": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "directive_proposals_slug_context_idx",
            "columns": [
              "tenant_id",
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "directive_proposals_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          },
          {
            "name": "directive_proposals_persona_id_idx",
            "columns": [
              "persona_id"
            ]
          }
        ],
        "version": "96be8911"
      },
      "importPath": "@happyvertical/smrt-personas"
    },
    "@happyvertical/smrt-personas:DirectiveProposalCollection": {
      "name": "directiveproposalcollection",
      "className": "DirectiveProposalCollection",
      "qualifiedName": "@happyvertical/smrt-personas:DirectiveProposalCollection",
      "collection": "directiveproposals",
      "filePath": "/home/runner/work/smrt/smrt/packages/personas/src/directive-proposal.ts",
      "packageName": "@happyvertical/smrt-personas",
      "fields": {},
      "methods": {
        "pending": {
          "name": "pending",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": true,
              "memberTypes": [
                "string",
                "number"
              ]
            }
          ],
          "returnType": "Promise<DirectiveProposal[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByFingerprint": {
          "name": "findByFingerprint",
          "async": true,
          "parameters": [
            {
              "name": "personaId",
              "type": "string",
              "optional": false
            },
            {
              "name": "fingerprint",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<DirectiveProposal[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "directive_proposals"
      },
      "extends": "SmrtCollection",
      "extendsTypeArg": "DirectiveProposal",
      "exportName": "DirectiveProposalCollection",
      "collectionExportName": "DirectiveProposalCollectionCollection",
      "schema": {
        "tableName": "directive_proposals",
        "ddl": "CREATE TABLE IF NOT EXISTS \"directive_proposals\" (\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 NOT NULL,\n  \"persona_id\" UUID NOT NULL,\n  \"agent_class\" TEXT,\n  \"prompt_key\" TEXT,\n  \"proposed_instructions\" TEXT,\n  \"current_instructions\" TEXT,\n  \"rationale\" TEXT,\n  \"evidence\" TEXT,\n  \"status\" TEXT,\n  \"fingerprint\" TEXT,\n  \"confidence\" REAL DEFAULT 0,\n  \"proposed_by\" TEXT,\n  \"reviewed_by\" TEXT,\n  \"reviewed_at\" TIMESTAMP,\n  \"review_note\" TEXT,\n  \"activated_override_id\" TEXT\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": true,
            "unique": false
          },
          "persona_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "agent_personas",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "agent_class": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "prompt_key": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "proposed_instructions": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "current_instructions": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "rationale": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "evidence": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "status": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "fingerprint": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "confidence": {
            "type": "REAL",
            "notNull": false,
            "unique": false,
            "default": 0
          },
          "proposed_by": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "reviewed_by": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "reviewed_at": {
            "type": "TIMESTAMP",
            "notNull": false,
            "unique": false
          },
          "review_note": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "activated_override_id": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "directive_proposals_slug_context_idx",
            "columns": [
              "tenant_id",
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "directive_proposals_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          },
          {
            "name": "directive_proposals_persona_id_idx",
            "columns": [
              "persona_id"
            ]
          }
        ],
        "version": "96be8911"
      },
      "importPath": "@happyvertical/smrt-personas"
    },
    "@happyvertical/smrt-personas:Feedback": {
      "name": "feedback",
      "className": "Feedback",
      "qualifiedName": "@happyvertical/smrt-personas:Feedback",
      "collection": "feedbacks",
      "filePath": "/home/runner/work/smrt/smrt/packages/personas/src/feedback.ts",
      "packageName": "@happyvertical/smrt-personas",
      "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
            }
          }
        },
        "personaId": {
          "type": "foreignKey",
          "required": true,
          "related": "AgentPersona",
          "_meta": {
            "required": true
          }
        },
        "agentClass": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "memoryScope": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "scope": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "key": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "signalType": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "source": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "correlationId": {
          "type": "text",
          "required": true,
          "_meta": {
            "required": true
          }
        },
        "correlationType": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "rating": {
          "type": "decimal",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "metric": {
          "type": "decimal",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "success": {
          "type": "boolean",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "correction": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "comment": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "actorId": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "metadata": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "reinforcedAt": {
          "type": "datetime",
          "required": false,
          "_meta": {
            "nullable": true
          }
        }
      },
      "methods": {
        "isHuman": {
          "name": "isHuman",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "getMetadata": {
          "name": "getMetadata",
          "async": false,
          "parameters": [],
          "returnType": "Record<string, unknown>",
          "isStatic": false,
          "isPublic": true
        },
        "setMetadata": {
          "name": "setMetadata",
          "async": false,
          "parameters": [
            {
              "name": "value",
              "type": "Record<string, unknown>",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "updateMetadata": {
          "name": "updateMetadata",
          "async": false,
          "parameters": [
            {
              "name": "patch",
              "type": "Record<string, unknown>",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "getCorrectionValue": {
          "name": "getCorrectionValue",
          "async": false,
          "parameters": [],
          "returnType": "string | undefined",
          "isStatic": false,
          "isPublic": true
        },
        "toLearningOutcome": {
          "name": "toLearningOutcome",
          "async": false,
          "parameters": [
            {
              "name": "options",
              "type": "FeedbackOutcomeOptions",
              "optional": true
            }
          ],
          "returnType": "LearningOutcome | null",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "agent_feedback",
        "api": {
          "include": [
            "list",
            "get",
            "create"
          ]
        },
        "cli": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "tenantScoped": {
          "mode": "optional"
        },
        "conflictColumns": [
          "tenant_id",
          "slug",
          "context"
        ]
      },
      "extends": "SmrtObject",
      "exportName": "Feedback",
      "collectionExportName": "FeedbackCollection",
      "validationRules": [
        {
          "field": "personaId",
          "rule": "required",
          "fieldType": "foreignKey"
        },
        {
          "field": "correlationId",
          "rule": "required",
          "fieldType": "text"
        }
      ],
      "schema": {
        "tableName": "agent_feedback",
        "ddl": "CREATE TABLE IF NOT EXISTS \"agent_feedback\" (\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  \"persona_id\" UUID NOT NULL,\n  \"agent_class\" TEXT,\n  \"memory_scope\" TEXT,\n  \"scope\" TEXT,\n  \"key\" TEXT,\n  \"signal_type\" TEXT,\n  \"source\" TEXT,\n  \"correlation_id\" TEXT NOT NULL,\n  \"correlation_type\" TEXT,\n  \"rating\" REAL,\n  \"metric\" REAL,\n  \"success\" BOOLEAN,\n  \"correction\" TEXT,\n  \"comment\" TEXT,\n  \"actor_id\" TEXT,\n  \"metadata\" TEXT,\n  \"reinforced_at\" 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"
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "tenantId",
            "notNull": false,
            "unique": false
          },
          "persona_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "agent_personas",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "agent_class": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "memory_scope": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "scope": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "key": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "signal_type": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "source": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "correlation_id": {
            "type": "TEXT",
            "notNull": true,
            "unique": false
          },
          "correlation_type": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "rating": {
            "type": "REAL",
            "notNull": false,
            "unique": false
          },
          "metric": {
            "type": "REAL",
            "notNull": false,
            "unique": false
          },
          "success": {
            "type": "BOOLEAN",
            "notNull": false,
            "unique": false
          },
          "correction": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "comment": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "actor_id": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "metadata": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "reinforced_at": {
            "type": "TIMESTAMP",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "agent_feedback_slug_context_idx",
            "columns": [
              "tenant_id",
              "slug",
              "context"
            ],
            "unique": true,
            "nullsNotDistinct": true
          },
          {
            "name": "agent_feedback_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          },
          {
            "name": "agent_feedback_persona_id_idx",
            "columns": [
              "persona_id"
            ]
          }
        ],
        "version": "91715a87"
      },
      "importPath": "@happyvertical/smrt-personas"
    },
    "@happyvertical/smrt-personas:FeedbackCollection": {
      "name": "feedbackcollection",
      "className": "FeedbackCollection",
      "qualifiedName": "@happyvertical/smrt-personas:FeedbackCollection",
      "collection": "feedbacks",
      "filePath": "/home/runner/work/smrt/smrt/packages/personas/src/feedback.ts",
      "packageName": "@happyvertical/smrt-personas",
      "fields": {},
      "methods": {
        "forPersona": {
          "name": "forPersona",
          "async": true,
          "parameters": [
            {
              "name": "personaId",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "object",
              "optional": true,
              "memberTypes": [
                "number"
              ]
            }
          ],
          "returnType": "Promise<Feedback[]>",
          "isStatic": false,
          "isPublic": true
        },
        "forScope": {
          "name": "forScope",
          "async": true,
          "parameters": [
            {
              "name": "memoryScope",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "object",
              "optional": true,
              "memberTypes": [
                "number"
              ]
            }
          ],
          "returnType": "Promise<Feedback[]>",
          "isStatic": false,
          "isPublic": true
        },
        "byCorrelation": {
          "name": "byCorrelation",
          "async": true,
          "parameters": [
            {
              "name": "correlationId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Feedback[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "agent_feedback"
      },
      "extends": "SmrtCollection",
      "extendsTypeArg": "Feedback",
      "exportName": "FeedbackCollection",
      "collectionExportName": "FeedbackCollectionCollection",
      "schema": {
        "tableName": "agent_feedback",
        "ddl": "CREATE TABLE IF NOT EXISTS \"agent_feedback\" (\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  \"persona_id\" UUID NOT NULL,\n  \"agent_class\" TEXT,\n  \"memory_scope\" TEXT,\n  \"scope\" TEXT,\n  \"key\" TEXT,\n  \"signal_type\" TEXT,\n  \"source\" TEXT,\n  \"correlation_id\" TEXT NOT NULL,\n  \"correlation_type\" TEXT,\n  \"rating\" REAL,\n  \"metric\" REAL,\n  \"success\" BOOLEAN,\n  \"correction\" TEXT,\n  \"comment\" TEXT,\n  \"actor_id\" TEXT,\n  \"metadata\" TEXT,\n  \"reinforced_at\" 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"
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "tenantId",
            "notNull": false,
            "unique": false
          },
          "persona_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "agent_personas",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "agent_class": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "memory_scope": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "scope": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "key": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "signal_type": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "source": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "correlation_id": {
            "type": "TEXT",
            "notNull": true,
            "unique": false
          },
          "correlation_type": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "rating": {
            "type": "REAL",
            "notNull": false,
            "unique": false
          },
          "metric": {
            "type": "REAL",
            "notNull": false,
            "unique": false
          },
          "success": {
            "type": "BOOLEAN",
            "notNull": false,
            "unique": false
          },
          "correction": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "comment": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "actor_id": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "metadata": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "reinforced_at": {
            "type": "TIMESTAMP",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "agent_feedback_slug_context_idx",
            "columns": [
              "tenant_id",
              "slug",
              "context"
            ],
            "unique": true,
            "nullsNotDistinct": true
          },
          {
            "name": "agent_feedback_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          },
          {
            "name": "agent_feedback_persona_id_idx",
            "columns": [
              "persona_id"
            ]
          }
        ],
        "version": "91715a87"
      },
      "importPath": "@happyvertical/smrt-personas"
    }
  },
  "moduleType": "smrt",
  "smrtDependencies": [
    "@happyvertical/smrt-agents",
    "@happyvertical/smrt-core",
    "@happyvertical/smrt-messages",
    "@happyvertical/smrt-prompts",
    "@happyvertical/smrt-tenancy",
    "@happyvertical/smrt-users"
  ]
}