@happyvertical/smrt-sites 0.49.2 → 0.49.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ObjectRegistry, SmrtCollection, SmrtObject, foreignKey, smrt } from "@happyvertical/smrt-core";
2
2
  import { TenantScoped, tenantId } from "@happyvertical/smrt-tenancy";
3
3
  //#region src/__smrt-register__.ts
4
- ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-sites\",\"packageVersion\":\"0.49.2\",\"objects\":{\"@happyvertical/smrt-sites:SiteAgentBindingCollection\":{\"name\":\"siteagentbindingcollection\",\"className\":\"SiteAgentBindingCollection\",\"qualifiedName\":\"@happyvertical/smrt-sites:SiteAgentBindingCollection\",\"collection\":\"siteagentbindings\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/sites/src/collections/SiteAgentBindingCollection.ts\",\"packageName\":\"@happyvertical/smrt-sites\",\"fields\":{},\"methods\":{\"findBySite\":{\"name\":\"findBySite\",\"async\":true,\"parameters\":[{\"name\":\"siteId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<SiteAgentBinding[]>\",\"isStatic\":false,\"isPublic\":true},\"findByAgent\":{\"name\":\"findByAgent\",\"async\":true,\"parameters\":[{\"name\":\"agentClass\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<SiteAgentBinding[]>\",\"isStatic\":false,\"isPublic\":true},\"findEnabled\":{\"name\":\"findEnabled\",\"async\":true,\"parameters\":[{\"name\":\"siteId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<SiteAgentBinding[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySiteAndAgent\":{\"name\":\"findBySiteAndAgent\",\"async\":true,\"parameters\":[{\"name\":\"siteId\",\"type\":\"string\",\"optional\":false},{\"name\":\"agentClass\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<SiteAgentBinding | null>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"site_agent_bindings\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"SiteAgentBinding\",\"exportName\":\"SiteAgentBindingCollection\",\"collectionExportName\":\"SiteAgentBindingCollectionCollection\",\"schema\":{\"tableName\":\"site_agent_bindings\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"site_agent_bindings\\\" (\\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\":\"site_agent_bindings_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"site_agent_bindings_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"b7f2e6f8\"}},\"@happyvertical/smrt-sites:SiteCollection\":{\"name\":\"sitecollection\",\"className\":\"SiteCollection\",\"qualifiedName\":\"@happyvertical/smrt-sites:SiteCollection\",\"collection\":\"sites\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/sites/src/collections/SiteCollection.ts\",\"packageName\":\"@happyvertical/smrt-sites\",\"fields\":{},\"methods\":{\"findByDomain\":{\"name\":\"findByDomain\",\"async\":true,\"parameters\":[{\"name\":\"domain\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Site | null>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Site[]>\",\"isStatic\":false,\"isPublic\":true},\"findByStatus\":{\"name\":\"findByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"SiteStatus\",\"optional\":false}],\"returnType\":\"Promise<Site[]>\",\"isStatic\":false,\"isPublic\":true},\"findActive\":{\"name\":\"findActive\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Site[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"sites\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Site\",\"exportName\":\"SiteCollection\",\"collectionExportName\":\"SiteCollectionCollection\",\"schema\":{\"tableName\":\"sites\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"sites\\\" (\\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\":\"sites_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"sites_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"2f0752a0\"}},\"@happyvertical/smrt-sites:Site\":{\"name\":\"site\",\"className\":\"Site\",\"qualifiedName\":\"@happyvertical/smrt-sites:Site\",\"collection\":\"sites\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/sites/src/models/Site.ts\",\"packageName\":\"@happyvertical/smrt-sites\",\"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}}},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"domain\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"status\":{\"type\":\"text\",\"required\":false,\"default\":\"draft\"},\"tier\":{\"type\":\"text\",\"required\":false,\"default\":\"free\"},\"databaseUrl\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"databaseType\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"portalConfig\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"repositoryUrl\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"templateName\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"provisioningStatus\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"provisionedAt\":{\"type\":\"datetime\",\"required\":false},\"provisioningError\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isReady\":{\"name\":\"isReady\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"getPortalConfig\":{\"name\":\"getPortalConfig\",\"async\":false,\"parameters\":[],\"returnType\":\"SitePortalConfig\",\"isStatic\":false,\"isPublic\":true},\"setPortalConfig\":{\"name\":\"setPortalConfig\",\"async\":false,\"parameters\":[{\"name\":\"config\",\"type\":\"SitePortalConfig\",\"optional\":false}],\"returnType\":\"void\",\"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\":\"data\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"sites\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"cli\":{\"skipApiCheck\":true},\"conflictColumns\":[\"tenant_id\",\"domain\"],\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"Site\",\"collectionExportName\":\"SiteCollection\",\"validationRules\":[],\"schema\":{\"tableName\":\"sites\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"sites\\\" (\\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 \\\"name\\\" TEXT DEFAULT '',\\n \\\"domain\\\" TEXT DEFAULT '',\\n \\\"status\\\" TEXT DEFAULT 'draft',\\n \\\"tier\\\" TEXT DEFAULT 'free',\\n \\\"database_url\\\" TEXT DEFAULT '',\\n \\\"database_type\\\" TEXT DEFAULT '',\\n \\\"portal_config\\\" TEXT DEFAULT '',\\n \\\"repository_url\\\" TEXT DEFAULT '',\\n \\\"template_name\\\" TEXT DEFAULT '',\\n \\\"provisioning_status\\\" TEXT DEFAULT '',\\n \\\"provisioned_at\\\" TIMESTAMP,\\n \\\"provisioning_error\\\" TEXT DEFAULT '',\\n \\\"metadata\\\" TEXT DEFAULT ''\\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},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"domain\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"draft\"},\"tier\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"free\"},\"database_url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"database_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"portal_config\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"repository_url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"template_name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"provisioning_status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"provisioned_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"provisioning_error\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"sites_tenant_id_domain_idx\",\"columns\":[\"tenant_id\",\"domain\"],\"unique\":true},{\"name\":\"sites_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"sites_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"1845042e\"}},\"@happyvertical/smrt-sites:SiteAgentBinding\":{\"name\":\"siteagentbinding\",\"className\":\"SiteAgentBinding\",\"qualifiedName\":\"@happyvertical/smrt-sites:SiteAgentBinding\",\"collection\":\"siteagentbindings\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/sites/src/models/SiteAgentBinding.ts\",\"packageName\":\"@happyvertical/smrt-sites\",\"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}}},\"siteId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Site\"},\"agentClass\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"enabled\":{\"type\":\"boolean\",\"required\":false,\"default\":true},\"config\":{\"type\":\"json\",\"required\":false,\"default\":{}},\"priority\":{\"type\":\"integer\",\"required\":false,\"default\":0}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"site_agent_bindings\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\",\"delete\"]},\"cli\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"conflictColumns\":[\"site_id\",\"agent_class\"],\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"SiteAgentBinding\",\"collectionExportName\":\"SiteAgentBindingCollection\",\"validationRules\":[],\"schema\":{\"tableName\":\"site_agent_bindings\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"site_agent_bindings\\\" (\\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 \\\"site_id\\\" UUID,\\n \\\"agent_class\\\" TEXT DEFAULT '',\\n \\\"enabled\\\" BOOLEAN DEFAULT TRUE,\\n \\\"config\\\" JSON DEFAULT '{}',\\n \\\"priority\\\" INTEGER DEFAULT 0\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"site_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"sites\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"agent_class\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"enabled\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":true},\"config\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":{}},\"priority\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"site_agent_bindings_site_id_agent_class_idx\",\"columns\":[\"site_id\",\"agent_class\"],\"unique\":true},{\"name\":\"site_agent_bindings_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"site_agent_bindings_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"dec43c9c\"}}},\"moduleType\":\"smrt\",\"smrtDependencies\":[\"@happyvertical/smrt-core\",\"@happyvertical/smrt-tenancy\"]}"));
4
+ ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-sites\",\"packageVersion\":\"0.49.4\",\"objects\":{\"@happyvertical/smrt-sites:SiteAgentBindingCollection\":{\"name\":\"siteagentbindingcollection\",\"className\":\"SiteAgentBindingCollection\",\"qualifiedName\":\"@happyvertical/smrt-sites:SiteAgentBindingCollection\",\"collection\":\"siteagentbindings\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/sites/src/collections/SiteAgentBindingCollection.ts\",\"packageName\":\"@happyvertical/smrt-sites\",\"fields\":{},\"methods\":{\"findBySite\":{\"name\":\"findBySite\",\"async\":true,\"parameters\":[{\"name\":\"siteId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<SiteAgentBinding[]>\",\"isStatic\":false,\"isPublic\":true},\"findByAgent\":{\"name\":\"findByAgent\",\"async\":true,\"parameters\":[{\"name\":\"agentClass\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<SiteAgentBinding[]>\",\"isStatic\":false,\"isPublic\":true},\"findEnabled\":{\"name\":\"findEnabled\",\"async\":true,\"parameters\":[{\"name\":\"siteId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<SiteAgentBinding[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySiteAndAgent\":{\"name\":\"findBySiteAndAgent\",\"async\":true,\"parameters\":[{\"name\":\"siteId\",\"type\":\"string\",\"optional\":false},{\"name\":\"agentClass\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<SiteAgentBinding | null>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"site_agent_bindings\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"SiteAgentBinding\",\"exportName\":\"SiteAgentBindingCollection\",\"collectionExportName\":\"SiteAgentBindingCollectionCollection\",\"schema\":{\"tableName\":\"site_agent_bindings\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"site_agent_bindings\\\" (\\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 \\\"site_id\\\" UUID,\\n \\\"agent_class\\\" TEXT DEFAULT '',\\n \\\"enabled\\\" BOOLEAN DEFAULT TRUE,\\n \\\"config\\\" JSON DEFAULT '{}',\\n \\\"priority\\\" INTEGER DEFAULT 0\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"site_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"sites\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"agent_class\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"enabled\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":true},\"config\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":{}},\"priority\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"site_agent_bindings_site_id_agent_class_idx\",\"columns\":[\"site_id\",\"agent_class\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"site_agent_bindings_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"site_agent_bindings_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"dec43c9c\"}},\"@happyvertical/smrt-sites:SiteCollection\":{\"name\":\"sitecollection\",\"className\":\"SiteCollection\",\"qualifiedName\":\"@happyvertical/smrt-sites:SiteCollection\",\"collection\":\"sites\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/sites/src/collections/SiteCollection.ts\",\"packageName\":\"@happyvertical/smrt-sites\",\"fields\":{},\"methods\":{\"findByDomain\":{\"name\":\"findByDomain\",\"async\":true,\"parameters\":[{\"name\":\"domain\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Site | null>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Site[]>\",\"isStatic\":false,\"isPublic\":true},\"findByStatus\":{\"name\":\"findByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"SiteStatus\",\"optional\":false}],\"returnType\":\"Promise<Site[]>\",\"isStatic\":false,\"isPublic\":true},\"findActive\":{\"name\":\"findActive\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Site[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"sites\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Site\",\"exportName\":\"SiteCollection\",\"collectionExportName\":\"SiteCollectionCollection\",\"schema\":{\"tableName\":\"sites\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"sites\\\" (\\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 \\\"name\\\" TEXT DEFAULT '',\\n \\\"domain\\\" TEXT DEFAULT '',\\n \\\"status\\\" TEXT DEFAULT 'draft',\\n \\\"tier\\\" TEXT DEFAULT 'free',\\n \\\"database_url\\\" TEXT DEFAULT '',\\n \\\"database_type\\\" TEXT DEFAULT '',\\n \\\"portal_config\\\" TEXT DEFAULT '',\\n \\\"repository_url\\\" TEXT DEFAULT '',\\n \\\"template_name\\\" TEXT DEFAULT '',\\n \\\"provisioning_status\\\" TEXT DEFAULT '',\\n \\\"provisioned_at\\\" TIMESTAMP,\\n \\\"provisioning_error\\\" TEXT DEFAULT '',\\n \\\"metadata\\\" TEXT DEFAULT ''\\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},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"domain\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"draft\"},\"tier\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"free\"},\"database_url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"database_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"portal_config\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"repository_url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"template_name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"provisioning_status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"provisioned_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"provisioning_error\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"sites_tenant_id_domain_idx\",\"columns\":[\"tenant_id\",\"domain\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"sites_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"sites_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"1845042e\"}},\"@happyvertical/smrt-sites:Site\":{\"name\":\"site\",\"className\":\"Site\",\"qualifiedName\":\"@happyvertical/smrt-sites:Site\",\"collection\":\"sites\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/sites/src/models/Site.ts\",\"packageName\":\"@happyvertical/smrt-sites\",\"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}}},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"domain\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"status\":{\"type\":\"text\",\"required\":false,\"default\":\"draft\"},\"tier\":{\"type\":\"text\",\"required\":false,\"default\":\"free\"},\"databaseUrl\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"databaseType\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"portalConfig\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"repositoryUrl\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"templateName\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"provisioningStatus\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"provisionedAt\":{\"type\":\"datetime\",\"required\":false},\"provisioningError\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isReady\":{\"name\":\"isReady\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"getPortalConfig\":{\"name\":\"getPortalConfig\",\"async\":false,\"parameters\":[],\"returnType\":\"SitePortalConfig\",\"isStatic\":false,\"isPublic\":true},\"setPortalConfig\":{\"name\":\"setPortalConfig\",\"async\":false,\"parameters\":[{\"name\":\"config\",\"type\":\"SitePortalConfig\",\"optional\":false}],\"returnType\":\"void\",\"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\":\"data\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"sites\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"cli\":{\"skipApiCheck\":true},\"conflictColumns\":[\"tenant_id\",\"domain\"],\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"Site\",\"collectionExportName\":\"SiteCollection\",\"validationRules\":[],\"schema\":{\"tableName\":\"sites\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"sites\\\" (\\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 \\\"name\\\" TEXT DEFAULT '',\\n \\\"domain\\\" TEXT DEFAULT '',\\n \\\"status\\\" TEXT DEFAULT 'draft',\\n \\\"tier\\\" TEXT DEFAULT 'free',\\n \\\"database_url\\\" TEXT DEFAULT '',\\n \\\"database_type\\\" TEXT DEFAULT '',\\n \\\"portal_config\\\" TEXT DEFAULT '',\\n \\\"repository_url\\\" TEXT DEFAULT '',\\n \\\"template_name\\\" TEXT DEFAULT '',\\n \\\"provisioning_status\\\" TEXT DEFAULT '',\\n \\\"provisioned_at\\\" TIMESTAMP,\\n \\\"provisioning_error\\\" TEXT DEFAULT '',\\n \\\"metadata\\\" TEXT DEFAULT ''\\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},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"domain\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"draft\"},\"tier\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"free\"},\"database_url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"database_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"portal_config\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"repository_url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"template_name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"provisioning_status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"provisioned_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"provisioning_error\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"sites_tenant_id_domain_idx\",\"columns\":[\"tenant_id\",\"domain\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"sites_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"sites_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"1845042e\"}},\"@happyvertical/smrt-sites:SiteAgentBinding\":{\"name\":\"siteagentbinding\",\"className\":\"SiteAgentBinding\",\"qualifiedName\":\"@happyvertical/smrt-sites:SiteAgentBinding\",\"collection\":\"siteagentbindings\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/sites/src/models/SiteAgentBinding.ts\",\"packageName\":\"@happyvertical/smrt-sites\",\"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}}},\"siteId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Site\"},\"agentClass\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"enabled\":{\"type\":\"boolean\",\"required\":false,\"default\":true},\"config\":{\"type\":\"json\",\"required\":false,\"default\":{}},\"priority\":{\"type\":\"integer\",\"required\":false,\"default\":0}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"site_agent_bindings\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\",\"delete\"]},\"cli\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"conflictColumns\":[\"site_id\",\"agent_class\"],\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"SiteAgentBinding\",\"collectionExportName\":\"SiteAgentBindingCollection\",\"validationRules\":[],\"schema\":{\"tableName\":\"site_agent_bindings\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"site_agent_bindings\\\" (\\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 \\\"site_id\\\" UUID,\\n \\\"agent_class\\\" TEXT DEFAULT '',\\n \\\"enabled\\\" BOOLEAN DEFAULT TRUE,\\n \\\"config\\\" JSON DEFAULT '{}',\\n \\\"priority\\\" INTEGER DEFAULT 0\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"site_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"sites\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"agent_class\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"enabled\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":true},\"config\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":{}},\"priority\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"site_agent_bindings_site_id_agent_class_idx\",\"columns\":[\"site_id\",\"agent_class\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"site_agent_bindings_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"site_agent_bindings_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"dec43c9c\"}}},\"moduleType\":\"smrt\",\"smrtDependencies\":[\"@happyvertical/smrt-core\",\"@happyvertical/smrt-tenancy\"]}"));
5
5
  //#endregion
6
6
  //#region src/models/SiteAgentBinding.ts
7
7
  var __defProp$1 = Object.defineProperty;
@@ -2,7 +2,7 @@
2
2
  "version": "1.0.0",
3
3
  "timestamp": 0,
4
4
  "packageName": "@happyvertical/smrt-sites",
5
- "packageVersion": "0.49.2",
5
+ "packageVersion": "0.49.4",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-sites:SiteAgentBindingCollection": {
8
8
  "name": "siteagentbindingcollection",
@@ -84,7 +84,7 @@
84
84
  "collectionExportName": "SiteAgentBindingCollectionCollection",
85
85
  "schema": {
86
86
  "tableName": "site_agent_bindings",
87
- "ddl": "CREATE TABLE IF NOT EXISTS \"site_agent_bindings\" (\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);",
87
+ "ddl": "CREATE TABLE IF NOT EXISTS \"site_agent_bindings\" (\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 \"site_id\" UUID,\n \"agent_class\" TEXT DEFAULT '',\n \"enabled\" BOOLEAN DEFAULT TRUE,\n \"config\" JSON DEFAULT '{}',\n \"priority\" INTEGER DEFAULT 0\n);",
88
88
  "columns": {
89
89
  "id": {
90
90
  "type": "UUID",
@@ -110,25 +110,76 @@
110
110
  "type": "TIMESTAMP",
111
111
  "notNull": true,
112
112
  "default": "current_timestamp"
113
+ },
114
+ "tenant_id": {
115
+ "type": "UUID",
116
+ "referenceKind": "tenantId",
117
+ "notNull": true,
118
+ "unique": false
119
+ },
120
+ "site_id": {
121
+ "type": "UUID",
122
+ "referenceKind": "foreignKey",
123
+ "notNull": false,
124
+ "unique": false,
125
+ "foreignKey": {
126
+ "table": "sites",
127
+ "column": "id",
128
+ "onDelete": "CASCADE",
129
+ "onUpdate": "CASCADE"
130
+ }
131
+ },
132
+ "agent_class": {
133
+ "type": "TEXT",
134
+ "notNull": false,
135
+ "unique": false,
136
+ "default": ""
137
+ },
138
+ "enabled": {
139
+ "type": "BOOLEAN",
140
+ "notNull": false,
141
+ "unique": false,
142
+ "default": true
143
+ },
144
+ "config": {
145
+ "type": "JSON",
146
+ "notNull": false,
147
+ "unique": false,
148
+ "default": {}
149
+ },
150
+ "priority": {
151
+ "type": "INTEGER",
152
+ "notNull": false,
153
+ "unique": false,
154
+ "default": 0
113
155
  }
114
156
  },
115
157
  "indexes": [
158
+ {
159
+ "name": "site_agent_bindings_site_id_agent_class_idx",
160
+ "columns": [
161
+ "site_id",
162
+ "agent_class"
163
+ ],
164
+ "unique": true,
165
+ "nullsNotDistinct": true
166
+ },
116
167
  {
117
168
  "name": "site_agent_bindings_slug_context_idx",
118
169
  "columns": [
119
170
  "slug",
120
171
  "context"
121
- ],
122
- "unique": true
172
+ ]
123
173
  },
124
174
  {
125
- "name": "site_agent_bindings_created_at_idx",
175
+ "name": "site_agent_bindings_tenant_id_created_at_idx",
126
176
  "columns": [
177
+ "tenant_id",
127
178
  "created_at"
128
179
  ]
129
180
  }
130
181
  ],
131
- "version": "b7f2e6f8"
182
+ "version": "dec43c9c"
132
183
  }
133
184
  },
134
185
  "@happyvertical/smrt-sites:SiteCollection": {
@@ -200,7 +251,7 @@
200
251
  "collectionExportName": "SiteCollectionCollection",
201
252
  "schema": {
202
253
  "tableName": "sites",
203
- "ddl": "CREATE TABLE IF NOT EXISTS \"sites\" (\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);",
254
+ "ddl": "CREATE TABLE IF NOT EXISTS \"sites\" (\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 \"name\" TEXT DEFAULT '',\n \"domain\" TEXT DEFAULT '',\n \"status\" TEXT DEFAULT 'draft',\n \"tier\" TEXT DEFAULT 'free',\n \"database_url\" TEXT DEFAULT '',\n \"database_type\" TEXT DEFAULT '',\n \"portal_config\" TEXT DEFAULT '',\n \"repository_url\" TEXT DEFAULT '',\n \"template_name\" TEXT DEFAULT '',\n \"provisioning_status\" TEXT DEFAULT '',\n \"provisioned_at\" TIMESTAMP,\n \"provisioning_error\" TEXT DEFAULT '',\n \"metadata\" TEXT DEFAULT ''\n);",
204
255
  "columns": {
205
256
  "id": {
206
257
  "type": "UUID",
@@ -226,25 +277,117 @@
226
277
  "type": "TIMESTAMP",
227
278
  "notNull": true,
228
279
  "default": "current_timestamp"
280
+ },
281
+ "tenant_id": {
282
+ "type": "UUID",
283
+ "referenceKind": "tenantId",
284
+ "notNull": true,
285
+ "unique": false
286
+ },
287
+ "name": {
288
+ "type": "TEXT",
289
+ "notNull": false,
290
+ "unique": false,
291
+ "default": ""
292
+ },
293
+ "domain": {
294
+ "type": "TEXT",
295
+ "notNull": false,
296
+ "unique": false,
297
+ "default": ""
298
+ },
299
+ "status": {
300
+ "type": "TEXT",
301
+ "notNull": false,
302
+ "unique": false,
303
+ "default": "draft"
304
+ },
305
+ "tier": {
306
+ "type": "TEXT",
307
+ "notNull": false,
308
+ "unique": false,
309
+ "default": "free"
310
+ },
311
+ "database_url": {
312
+ "type": "TEXT",
313
+ "notNull": false,
314
+ "unique": false,
315
+ "default": ""
316
+ },
317
+ "database_type": {
318
+ "type": "TEXT",
319
+ "notNull": false,
320
+ "unique": false,
321
+ "default": ""
322
+ },
323
+ "portal_config": {
324
+ "type": "TEXT",
325
+ "notNull": false,
326
+ "unique": false,
327
+ "default": ""
328
+ },
329
+ "repository_url": {
330
+ "type": "TEXT",
331
+ "notNull": false,
332
+ "unique": false,
333
+ "default": ""
334
+ },
335
+ "template_name": {
336
+ "type": "TEXT",
337
+ "notNull": false,
338
+ "unique": false,
339
+ "default": ""
340
+ },
341
+ "provisioning_status": {
342
+ "type": "TEXT",
343
+ "notNull": false,
344
+ "unique": false,
345
+ "default": ""
346
+ },
347
+ "provisioned_at": {
348
+ "type": "TIMESTAMP",
349
+ "notNull": false,
350
+ "unique": false
351
+ },
352
+ "provisioning_error": {
353
+ "type": "TEXT",
354
+ "notNull": false,
355
+ "unique": false,
356
+ "default": ""
357
+ },
358
+ "metadata": {
359
+ "type": "TEXT",
360
+ "notNull": false,
361
+ "unique": false,
362
+ "default": ""
229
363
  }
230
364
  },
231
365
  "indexes": [
366
+ {
367
+ "name": "sites_tenant_id_domain_idx",
368
+ "columns": [
369
+ "tenant_id",
370
+ "domain"
371
+ ],
372
+ "unique": true,
373
+ "nullsNotDistinct": true
374
+ },
232
375
  {
233
376
  "name": "sites_slug_context_idx",
234
377
  "columns": [
235
378
  "slug",
236
379
  "context"
237
- ],
238
- "unique": true
380
+ ]
239
381
  },
240
382
  {
241
- "name": "sites_created_at_idx",
383
+ "name": "sites_tenant_id_created_at_idx",
242
384
  "columns": [
385
+ "tenant_id",
243
386
  "created_at"
244
387
  ]
245
388
  }
246
389
  ],
247
- "version": "2f0752a0"
390
+ "version": "1845042e"
248
391
  }
249
392
  },
250
393
  "@happyvertical/smrt-sites:Site": {
@@ -575,7 +718,8 @@
575
718
  "tenant_id",
576
719
  "domain"
577
720
  ],
578
- "unique": true
721
+ "unique": true,
722
+ "nullsNotDistinct": true
579
723
  },
580
724
  {
581
725
  "name": "sites_slug_context_idx",
@@ -761,7 +905,8 @@
761
905
  "site_id",
762
906
  "agent_class"
763
907
  ],
764
- "unique": true
908
+ "unique": true,
909
+ "nullsNotDistinct": true
765
910
  },
766
911
  {
767
912
  "name": "site_agent_bindings_slug_context_idx",
@@ -3,12 +3,12 @@
3
3
  "sensitiveFieldsExcluded": true,
4
4
  "generatedAt": "1970-01-01T00:00:00.000Z",
5
5
  "packageName": "@happyvertical/smrt-sites",
6
- "packageVersion": "0.49.2",
6
+ "packageVersion": "0.49.4",
7
7
  "sourceManifestPath": "dist/manifest.json",
8
8
  "agentDocPath": "AGENTS.md",
9
9
  "sourceHashes": {
10
- "manifest": "cfab74e00730618102d37363e1adec56bfe9e93891accd36777ea24ac04978f5",
11
- "packageJson": "4b21fef5cecbfc9551767320cdbdeb0881a73b5567578e1aa92f3650a0e78c4c",
10
+ "manifest": "a00bff8be55a702690f89734561d47d5b459329cbcb4514e1ff90ce9b104f16c",
11
+ "packageJson": "9a22ecfc628504609e463c572f2e7507b8aa9acdfa8f66914e9fb9d34756afd3",
12
12
  "agents": "20ecba2963426d3e132157f077fbdc5583a20bb0f68d8a7942cf7f8ada5d5aa2"
13
13
  },
14
14
  "exports": [
@@ -1194,7 +1194,7 @@
1194
1194
  "junctionCollections": 0,
1195
1195
  "hierarchicalObjects": 0,
1196
1196
  "polymorphicAssociations": 0,
1197
- "uuidColumns": 7
1197
+ "uuidColumns": 10
1198
1198
  },
1199
1199
  "agentDoc": "# @happyvertical/smrt-sites\n\nMulti-tenant site lifecycle management with agent bindings.\n\n## Models\n\n- **Site**: `domain` (unique per tenant), `tier` (free/standard/premium), `portalConfig` JSON, database connection, `provisioningStatus`/`provisioningTimestamp`. Status: draft/active/suspended/archived.\n- **SiteAgentBinding**: junction linking sites to agent classes. Per-site `config` overrides and `priority` ordering. `conflictColumns: ['site_id', 'agent_class']`.\n\n## SiteService\n\nStateless lifecycle ops: `activate()`, `suspend()`, `archive()`. `bindAgent()` handles upsert (update config if exists, create if not).\n\n## Gotchas\n\n- **Required tenancy**: both models use `@TenantScoped({ mode: 'required' })` — must have tenant context\n- **portalConfig accepts both object and JSON string** in constructor\n- **SiteAgentBinding.config is nullable**: auto-parsed from JSON on init\n"
1200
1200
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-sites",
3
- "version": "0.49.2",
3
+ "version": "0.49.4",
4
4
  "description": "Site lifecycle management for multi-tenant SMRT networks",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,12 +19,12 @@
19
19
  "./manifest.json": "./dist/manifest.json"
20
20
  },
21
21
  "dependencies": {
22
- "@happyvertical/smrt-core": "0.49.2",
23
- "@happyvertical/smrt-tenancy": "0.49.2"
22
+ "@happyvertical/smrt-core": "0.49.4",
23
+ "@happyvertical/smrt-tenancy": "0.49.4"
24
24
  },
25
25
  "devDependencies": {
26
- "@happyvertical/smrt-cli": "0.49.2",
27
- "@happyvertical/smrt-vitest": "0.49.2",
26
+ "@happyvertical/smrt-cli": "0.49.4",
27
+ "@happyvertical/smrt-vitest": "0.49.4",
28
28
  "@happyvertical/sql": "^0.89.6",
29
29
  "@types/node": "24.13.2",
30
30
  "fast-glob": "3.3.3",