@happyvertical/smrt-analytics 0.56.0 → 0.56.1

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
@@ -2,7 +2,7 @@ import { ObjectRegistry, SmrtCollection, SmrtObject, SmrtRecipe, field, foreignK
2
2
  import { definePrompt, resolvePrompt } from "@happyvertical/smrt-prompts";
3
3
  import { TenantScoped, tenantId } from "@happyvertical/smrt-tenancy";
4
4
  //#region src/__smrt-register__.ts
5
- ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-analytics","packageVersion":"0.56.0","objects":{"@happyvertical/smrt-analytics:AnalyticsDataStreamCollection":{"name":"analyticsdatastreamcollection","className":"AnalyticsDataStreamCollection","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsDataStreamCollection","collection":"analyticsdatastreams","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/collections/AnalyticsDataStreamCollection.ts","packageName":"@happyvertical/smrt-analytics","fields":{},"methods":{"findByProperty":{"name":"findByProperty","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findByExternalId":{"name":"findByExternalId","async":true,"parameters":[{"name":"externalId","type":"string","optional":false}],"returnType":"Promise<AnalyticsDataStream | null>","isStatic":false,"isPublic":true},"findByMeasurementId":{"name":"findByMeasurementId","async":true,"parameters":[{"name":"measurementId","type":"string","optional":false}],"returnType":"Promise<AnalyticsDataStream | null>","isStatic":false,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"streamType","type":"DataStreamType","optional":false}],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findWebStreams":{"name":"findWebStreams","async":true,"parameters":[],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findIOSStreams":{"name":"findIOSStreams","async":true,"parameters":[],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findAndroidStreams":{"name":"findAndroidStreams","async":true,"parameters":[],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findMobileStreams":{"name":"findMobileStreams","async":true,"parameters":[],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"DataStreamStatus","optional":false}],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findActive":{"name":"findActive","async":true,"parameters":[],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findActiveByProperty":{"name":"findActiveByProperty","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"AnalyticsDataStream","exportName":"AnalyticsDataStreamCollection","collectionExportName":"AnalyticsDataStreamCollectionCollection","schema":{"tableName":"analytics_data_streams","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_data_streams\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"property_id\\" UUID,\\n \\"display_name\\" TEXT DEFAULT '',\\n \\"stream_type\\" TEXT,\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"measurement_id\\" TEXT DEFAULT '',\\n \\"firebase_app_id\\" TEXT DEFAULT '',\\n \\"default_uri\\" TEXT DEFAULT '',\\n \\"bundle_id\\" TEXT DEFAULT '',\\n \\"package_name\\" TEXT DEFAULT '',\\n \\"status\\" TEXT,\\n \\"enhanced_measurement\\" BOOLEAN DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"property_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"analytics_properties","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"display_name":{"type":"TEXT","notNull":false,"default":""},"stream_type":{"type":"TEXT","notNull":false},"external_id":{"type":"TEXT","notNull":false,"default":""},"measurement_id":{"type":"TEXT","notNull":false,"default":""},"firebase_app_id":{"type":"TEXT","notNull":false,"default":""},"default_uri":{"type":"TEXT","notNull":false,"default":""},"bundle_id":{"type":"TEXT","notNull":false,"default":""},"package_name":{"type":"TEXT","notNull":false,"default":""},"status":{"type":"TEXT","notNull":false},"enhanced_measurement":{"type":"BOOLEAN","notNull":false,"default":true}},"indexes":[{"name":"analytics_data_streams_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_data_streams_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_data_streams_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"analytics_data_streams_property_id_idx","columns":["property_id"]}],"version":"851609ba"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsEventCollection":{"name":"analyticseventcollection","className":"AnalyticsEventCollection","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsEventCollection","collection":"analyticsevents","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/collections/AnalyticsEventCollection.ts","packageName":"@happyvertical/smrt-analytics","fields":{},"methods":{"findByProperty":{"name":"findByProperty","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findByEventName":{"name":"findByEventName","async":true,"parameters":[{"name":"eventName","type":"string","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findByClientId":{"name":"findByClientId","async":true,"parameters":[{"name":"clientId","type":"string","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findByUserId":{"name":"findByUserId","async":true,"parameters":[{"name":"userId","type":"string","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"TrackingEventStatus","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findPending":{"name":"findPending","async":true,"parameters":[],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findSent":{"name":"findSent","async":true,"parameters":[],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findFailed":{"name":"findFailed","async":true,"parameters":[],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findForRetry":{"name":"findForRetry","async":true,"parameters":[{"name":"maxRetries","type":"number","optional":true}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findPendingByProperty":{"name":"findPendingByProperty","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findByDateRange":{"name":"findByDateRange","async":true,"parameters":[{"name":"startDate","type":"Date","optional":false},{"name":"endDate","type":"Date","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findConversions":{"name":"findConversions","async":true,"parameters":[{"name":"propertyId","type":"string","optional":true}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findPageviews":{"name":"findPageviews","async":true,"parameters":[{"name":"propertyId","type":"string","optional":true}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"countByEventName":{"name":"countByEventName","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<Map<string, number>>","isStatic":false,"isPublic":true},"getPropertyStats":{"name":"getPropertyStats","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<object>","isStatic":false,"isPublic":true},"getPropertyStatsWithTrend":{"name":"getPropertyStatsWithTrend","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false},{"name":"now","type":"Date","optional":true},{"name":"timeZone","type":"string","optional":true,"default":"UTC"}],"returnType":"Promise<PropertyStatsWithTrend>","isStatic":false,"isPublic":true},"getBatchPropertyStats":{"name":"getBatchPropertyStats","async":true,"parameters":[{"name":"propertyIds","type":"string[]","optional":false},{"name":"now","type":"Date","optional":true},{"name":"timeZone","type":"string","optional":true,"default":"UTC"}],"returnType":"Promise<Map<string, PropertyStatsWithTrend>>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"AnalyticsEvent","exportName":"AnalyticsEventCollection","collectionExportName":"AnalyticsEventCollectionCollection","schema":{"tableName":"analytics_events","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_events\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"property_id\\" UUID,\\n \\"event_name\\" TEXT DEFAULT '',\\n \\"client_id\\" TEXT DEFAULT '',\\n \\"user_id\\" TEXT DEFAULT '',\\n \\"params\\" TEXT DEFAULT '{}',\\n \\"event_timestamp\\" TIMESTAMP,\\n \\"status\\" TEXT,\\n \\"sent_at\\" TIMESTAMP,\\n \\"error_message\\" TEXT DEFAULT '',\\n \\"retry_count\\" INTEGER DEFAULT 0,\\n \\"non_personalized_ads\\" BOOLEAN DEFAULT FALSE,\\n \\"session_id\\" TEXT DEFAULT '',\\n \\"page_path\\" TEXT DEFAULT '',\\n \\"page_title\\" TEXT DEFAULT '',\\n \\"user_agent\\" TEXT DEFAULT '',\\n \\"ip_address\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"property_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"analytics_properties","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"event_name":{"type":"TEXT","notNull":false,"default":""},"client_id":{"type":"TEXT","notNull":false,"default":""},"user_id":{"type":"TEXT","notNull":false,"default":""},"params":{"type":"TEXT","notNull":false,"default":"{}"},"event_timestamp":{"type":"TIMESTAMP","notNull":false},"status":{"type":"TEXT","notNull":false},"sent_at":{"type":"TIMESTAMP","notNull":false},"error_message":{"type":"TEXT","notNull":false,"default":""},"retry_count":{"type":"INTEGER","notNull":false,"default":0},"non_personalized_ads":{"type":"BOOLEAN","notNull":false,"default":false},"session_id":{"type":"TEXT","notNull":false,"default":""},"page_path":{"type":"TEXT","notNull":false,"default":""},"page_title":{"type":"TEXT","notNull":false,"default":""},"user_agent":{"type":"TEXT","notNull":false,"default":""},"ip_address":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"analytics_events_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_events_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_events_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"analytics_events_property_id_idx","columns":["property_id"]}],"version":"bee09e1d"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsPropertyCollection":{"name":"analyticspropertycollection","className":"AnalyticsPropertyCollection","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsPropertyCollection","collection":"analyticsproperties","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/collections/AnalyticsPropertyCollection.ts","packageName":"@happyvertical/smrt-analytics","fields":{},"methods":{"findByExternalId":{"name":"findByExternalId","async":true,"parameters":[{"name":"externalId","type":"string","optional":false}],"returnType":"Promise<AnalyticsProperty | null>","isStatic":false,"isPublic":true},"findByMeasurementId":{"name":"findByMeasurementId","async":true,"parameters":[{"name":"measurementId","type":"string","optional":false}],"returnType":"Promise<AnalyticsProperty | null>","isStatic":false,"isPublic":true},"findBySiteDomain":{"name":"findBySiteDomain","async":true,"parameters":[{"name":"siteDomain","type":"string","optional":false},{"name":"provider","type":"AnalyticsProvider","optional":true}],"returnType":"Promise<AnalyticsProperty | null>","isStatic":false,"isPublic":true},"findByProvider":{"name":"findByProvider","async":true,"parameters":[{"name":"provider","type":"AnalyticsProvider","optional":false}],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true},"findGA4Properties":{"name":"findGA4Properties","async":true,"parameters":[],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true},"findPlausibleSites":{"name":"findPlausibleSites","async":true,"parameters":[],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true},"findMatomoSites":{"name":"findMatomoSites","async":true,"parameters":[],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"AnalyticsPropertyStatus","optional":false}],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true},"findActive":{"name":"findActive","async":true,"parameters":[],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true},"findNeedingSync":{"name":"findNeedingSync","async":true,"parameters":[{"name":"hoursAgo","type":"number","optional":true}],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"AnalyticsProperty","exportName":"AnalyticsPropertyCollection","collectionExportName":"AnalyticsPropertyCollectionCollection","schema":{"tableName":"analytics_properties","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_properties\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"display_name\\" TEXT DEFAULT '',\\n \\"provider\\" TEXT,\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"measurement_id\\" TEXT DEFAULT '',\\n \\"api_secret\\" TEXT DEFAULT '',\\n \\"site_domain\\" TEXT DEFAULT '',\\n \\"time_zone\\" TEXT DEFAULT 'America/Los_Angeles',\\n \\"currency_code\\" TEXT DEFAULT 'USD',\\n \\"industry_category\\" TEXT DEFAULT '',\\n \\"service_level\\" TEXT DEFAULT 'STANDARD',\\n \\"status\\" TEXT,\\n \\"last_sync_at\\" TIMESTAMP,\\n \\"provider_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":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"display_name":{"type":"TEXT","notNull":false,"default":""},"provider":{"type":"TEXT","notNull":false},"external_id":{"type":"TEXT","notNull":false,"default":""},"measurement_id":{"type":"TEXT","notNull":false,"default":""},"api_secret":{"type":"TEXT","notNull":false,"default":""},"site_domain":{"type":"TEXT","notNull":false,"default":""},"time_zone":{"type":"TEXT","notNull":false,"default":"America/Los_Angeles"},"currency_code":{"type":"TEXT","notNull":false,"default":"USD"},"industry_category":{"type":"TEXT","notNull":false,"default":""},"service_level":{"type":"TEXT","notNull":false,"default":"STANDARD"},"status":{"type":"TEXT","notNull":false},"last_sync_at":{"type":"TIMESTAMP","notNull":false},"provider_metadata":{"type":"TEXT","notNull":false,"default":"{}"}},"indexes":[{"name":"analytics_properties_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_properties_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_properties_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"f38a20b9"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsReportCollection":{"name":"analyticsreportcollection","className":"AnalyticsReportCollection","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsReportCollection","collection":"analyticsreports","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/collections/AnalyticsReportCollection.ts","packageName":"@happyvertical/smrt-analytics","fields":{},"methods":{"findByProperty":{"name":"findByProperty","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"ReportStatus","optional":false}],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findDrafts":{"name":"findDrafts","async":true,"parameters":[],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findScheduled":{"name":"findScheduled","async":true,"parameters":[],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findCompleted":{"name":"findCompleted","async":true,"parameters":[],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findFailed":{"name":"findFailed","async":true,"parameters":[],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findByFrequency":{"name":"findByFrequency","async":true,"parameters":[{"name":"frequency","type":"ReportFrequency","optional":false}],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findRecurring":{"name":"findRecurring","async":true,"parameters":[],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findDue":{"name":"findDue","async":true,"parameters":[],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findByPropertyAndStatus":{"name":"findByPropertyAndStatus","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false},{"name":"status","type":"ReportStatus","optional":false}],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findRecentlyRun":{"name":"findRecentlyRun","async":true,"parameters":[{"name":"hoursAgo","type":"number","optional":true}],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"AnalyticsReport","exportName":"AnalyticsReportCollection","collectionExportName":"AnalyticsReportCollectionCollection","schema":{"tableName":"analytics_reports","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_reports\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"property_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT DEFAULT '',\\n \\"dimensions\\" TEXT DEFAULT '[]',\\n \\"metrics\\" TEXT DEFAULT '[]',\\n \\"date_range_start\\" TEXT DEFAULT '7daysAgo',\\n \\"date_range_end\\" TEXT DEFAULT 'today',\\n \\"dimension_filter\\" TEXT DEFAULT '',\\n \\"metric_filter\\" TEXT DEFAULT '',\\n \\"order_by\\" TEXT DEFAULT '[]',\\n \\"max_results\\" INTEGER DEFAULT 0,\\n \\"status\\" TEXT,\\n \\"frequency\\" TEXT,\\n \\"last_run_at\\" TIMESTAMP,\\n \\"next_run_at\\" TIMESTAMP,\\n \\"result_data\\" TEXT DEFAULT '',\\n \\"row_count\\" INTEGER DEFAULT 0,\\n \\"last_error\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"property_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"analytics_properties","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false,"default":""},"dimensions":{"type":"TEXT","notNull":false,"default":"[]"},"metrics":{"type":"TEXT","notNull":false,"default":"[]"},"date_range_start":{"type":"TEXT","notNull":false,"default":"7daysAgo"},"date_range_end":{"type":"TEXT","notNull":false,"default":"today"},"dimension_filter":{"type":"TEXT","notNull":false,"default":""},"metric_filter":{"type":"TEXT","notNull":false,"default":""},"order_by":{"type":"TEXT","notNull":false,"default":"[]"},"max_results":{"type":"INTEGER","notNull":false,"default":0},"status":{"type":"TEXT","notNull":false},"frequency":{"type":"TEXT","notNull":false},"last_run_at":{"type":"TIMESTAMP","notNull":false},"next_run_at":{"type":"TIMESTAMP","notNull":false},"result_data":{"type":"TEXT","notNull":false,"default":""},"row_count":{"type":"INTEGER","notNull":false,"default":0},"last_error":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"analytics_reports_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_reports_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_reports_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"analytics_reports_property_id_idx","columns":["property_id"]}],"version":"22ce0f1c"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsDataStream":{"name":"analyticsdatastream","className":"AnalyticsDataStream","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsDataStream","collection":"analyticsdatastreams","description":"AnalyticsDataStream represents a data stream (web, iOS, Android) for an analytics property.","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/models/AnalyticsDataStream.ts","packageName":"@happyvertical/smrt-analytics","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"propertyId":{"type":"foreignKey","required":false,"related":"AnalyticsProperty"},"displayName":{"type":"text","required":false,"default":""},"streamType":{"type":"text","required":false,"enum":["WEB_DATA_STREAM","ANDROID_APP_DATA_STREAM","IOS_APP_DATA_STREAM"]},"externalId":{"type":"text","required":false,"default":""},"measurementId":{"type":"text","required":false,"default":""},"firebaseAppId":{"type":"text","required":false,"default":""},"defaultUri":{"type":"text","required":false,"default":""},"bundleId":{"type":"text","required":false,"default":""},"packageName":{"type":"text","required":false,"default":""},"status":{"type":"text","required":false,"enum":["active","inactive"]},"enhancedMeasurement":{"type":"boolean","required":false,"default":true}},"methods":{"isWeb":{"name":"isWeb","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isIOS":{"name":"isIOS","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAndroid":{"name":"isAndroid","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isMobileApp":{"name":"isMobileApp","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"getPlatformId":{"name":"getPlatformId","async":false,"parameters":[],"returnType":"string","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"AnalyticsDataStream","collectionExportName":"AnalyticsDataStreamCollection","schema":{"tableName":"analytics_data_streams","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_data_streams\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"property_id\\" UUID,\\n \\"display_name\\" TEXT DEFAULT '',\\n \\"stream_type\\" TEXT,\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"measurement_id\\" TEXT DEFAULT '',\\n \\"firebase_app_id\\" TEXT DEFAULT '',\\n \\"default_uri\\" TEXT DEFAULT '',\\n \\"bundle_id\\" TEXT DEFAULT '',\\n \\"package_name\\" TEXT DEFAULT '',\\n \\"status\\" TEXT,\\n \\"enhanced_measurement\\" BOOLEAN DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"property_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"analytics_properties","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"display_name":{"type":"TEXT","notNull":false,"default":""},"stream_type":{"type":"TEXT","notNull":false},"external_id":{"type":"TEXT","notNull":false,"default":""},"measurement_id":{"type":"TEXT","notNull":false,"default":""},"firebase_app_id":{"type":"TEXT","notNull":false,"default":""},"default_uri":{"type":"TEXT","notNull":false,"default":""},"bundle_id":{"type":"TEXT","notNull":false,"default":""},"package_name":{"type":"TEXT","notNull":false,"default":""},"status":{"type":"TEXT","notNull":false},"enhanced_measurement":{"type":"BOOLEAN","notNull":false,"default":true}},"indexes":[{"name":"analytics_data_streams_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_data_streams_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_data_streams_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"analytics_data_streams_property_id_idx","columns":["property_id"]}],"version":"851609ba"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsEvent":{"name":"analyticsevent","className":"AnalyticsEvent","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsEvent","collection":"analyticsevents","description":"AnalyticsEvent represents a tracked analytics event (server-side tracking log).","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/models/AnalyticsEvent.ts","packageName":"@happyvertical/smrt-analytics","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"propertyId":{"type":"foreignKey","required":false,"related":"AnalyticsProperty"},"eventName":{"type":"text","required":false,"default":""},"clientId":{"type":"text","required":false,"default":""},"userId":{"type":"text","required":false,"default":""},"params":{"type":"text","required":false,"default":"{}"},"eventTimestamp":{"type":"datetime","required":false},"status":{"type":"text","required":false,"enum":["pending","sent","failed"]},"sentAt":{"type":"datetime","required":false},"errorMessage":{"type":"text","required":false,"default":""},"retryCount":{"type":"integer","required":false,"default":0},"nonPersonalizedAds":{"type":"boolean","required":false,"default":false},"sessionId":{"type":"text","required":false,"default":""},"pagePath":{"type":"text","required":false,"default":""},"pageTitle":{"type":"text","required":false,"default":""},"userAgent":{"type":"text","required":false,"default":""},"ipAddress":{"type":"text","required":false,"default":""}},"methods":{"getParams":{"name":"getParams","async":false,"parameters":[],"returnType":"Record<string, string | number | boolean>","isStatic":false,"isPublic":true},"setParams":{"name":"setParams","async":false,"parameters":[{"name":"params","type":"Record<string, string | number | boolean>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"addParam":{"name":"addParam","async":false,"parameters":[{"name":"key","type":"string","optional":false},{"name":"value","type":"string | number | boolean","optional":false,"unionBranches":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}],"returnType":"void","isStatic":false,"isPublic":true},"isPageview":{"name":"isPageview","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isConversion":{"name":"isConversion","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"markSent":{"name":"markSent","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"markFailed":{"name":"markFailed","async":false,"parameters":[{"name":"error","type":"string","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"resetForRetry":{"name":"resetForRetry","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"shouldRetry":{"name":"shouldRetry","async":false,"parameters":[{"name":"maxRetries","type":"number","optional":true}],"returnType":"boolean","isStatic":false,"isPublic":true},"toTrackEvent":{"name":"toTrackEvent","async":false,"parameters":[],"returnType":"object","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create"]},"mcp":{"include":["list","get","track"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"AnalyticsEvent","collectionExportName":"AnalyticsEventCollection","schema":{"tableName":"analytics_events","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_events\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"property_id\\" UUID,\\n \\"event_name\\" TEXT DEFAULT '',\\n \\"client_id\\" TEXT DEFAULT '',\\n \\"user_id\\" TEXT DEFAULT '',\\n \\"params\\" TEXT DEFAULT '{}',\\n \\"event_timestamp\\" TIMESTAMP,\\n \\"status\\" TEXT,\\n \\"sent_at\\" TIMESTAMP,\\n \\"error_message\\" TEXT DEFAULT '',\\n \\"retry_count\\" INTEGER DEFAULT 0,\\n \\"non_personalized_ads\\" BOOLEAN DEFAULT FALSE,\\n \\"session_id\\" TEXT DEFAULT '',\\n \\"page_path\\" TEXT DEFAULT '',\\n \\"page_title\\" TEXT DEFAULT '',\\n \\"user_agent\\" TEXT DEFAULT '',\\n \\"ip_address\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"property_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"analytics_properties","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"event_name":{"type":"TEXT","notNull":false,"default":""},"client_id":{"type":"TEXT","notNull":false,"default":""},"user_id":{"type":"TEXT","notNull":false,"default":""},"params":{"type":"TEXT","notNull":false,"default":"{}"},"event_timestamp":{"type":"TIMESTAMP","notNull":false},"status":{"type":"TEXT","notNull":false},"sent_at":{"type":"TIMESTAMP","notNull":false},"error_message":{"type":"TEXT","notNull":false,"default":""},"retry_count":{"type":"INTEGER","notNull":false,"default":0},"non_personalized_ads":{"type":"BOOLEAN","notNull":false,"default":false},"session_id":{"type":"TEXT","notNull":false,"default":""},"page_path":{"type":"TEXT","notNull":false,"default":""},"page_title":{"type":"TEXT","notNull":false,"default":""},"user_agent":{"type":"TEXT","notNull":false,"default":""},"ip_address":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"analytics_events_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_events_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_events_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"analytics_events_property_id_idx","columns":["property_id"]}],"version":"bee09e1d"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsProperty":{"name":"analyticsproperty","className":"AnalyticsProperty","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsProperty","collection":"analyticsproperties","description":"AnalyticsProperty represents an analytics property (GA4 property, Plausible site, or Matomo site).","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/models/AnalyticsProperty.ts","packageName":"@happyvertical/smrt-analytics","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"name":{"type":"text","required":false,"default":""},"displayName":{"type":"text","required":false,"default":"","description":"The name people see for this website or app.","_meta":{"description":"The name people see for this website or app."}},"provider":{"type":"text","required":false,"description":"Which analytics service tracks it: Google Analytics 4, Plausible or Matomo.","_meta":{"description":"Which analytics service tracks it: Google Analytics 4, Plausible or Matomo."},"enum":["ga4","plausible","matomo"]},"externalId":{"type":"text","required":false,"default":"","description":"The id the analytics service gives the property, such as properties/123456789 or a Matomo site id.","_meta":{"description":"The id the analytics service gives the property, such as properties/123456789 or a Matomo site id."}},"measurementId":{"type":"text","required":false,"default":"","description":"The tracking id for a web stream, such as G-XXXXXXXXXX.","_meta":{"description":"The tracking id for a web stream, such as G-XXXXXXXXXX."}},"apiSecret":{"type":"text","required":false,"default":"","description":"The secret key your analytics service issues for this property. It is kept out of responses and tool results, but it is not encrypted in the database.","_meta":{"sensitive":true,"description":"The secret key your analytics service issues for this property. It is kept out of responses and tool results, but it is not encrypted in the database."},"sensitive":true},"siteDomain":{"type":"text","required":false,"default":"","description":"The website address, used by Plausible and Matomo.","_meta":{"description":"The website address, used by Plausible and Matomo."}},"timeZone":{"type":"text","required":false,"default":"America/Los_Angeles","description":"The time zone the figures are reported in.","_meta":{"description":"The time zone the figures are reported in."}},"currencyCode":{"type":"text","required":false,"default":"USD","description":"The currency used for revenue figures, such as USD.","_meta":{"description":"The currency used for revenue figures, such as USD."}},"industryCategory":{"type":"text","required":false,"default":""},"serviceLevel":{"type":"text","required":false,"default":"STANDARD"},"status":{"type":"text","required":false,"description":"Whether tracking is active, inactive or still being set up.","_meta":{"description":"Whether tracking is active, inactive or still being set up."},"enum":["active","inactive","pending"]},"lastSyncAt":{"type":"datetime","required":false,"description":"When the property was last synced with the analytics service.","_meta":{"description":"When the property was last synced with the analytics service."}},"providerMetadata":{"type":"text","required":false,"default":"{}","description":"Extra connection details from your analytics service. They are kept out of responses and tool results, but they are not encrypted in the database.","_meta":{"sensitive":true,"description":"Extra connection details from your analytics service. They are kept out of responses and tool results, but they are not encrypted in the database."},"sensitive":true}},"methods":{"isGA4":{"name":"isGA4","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isPlausible":{"name":"isPlausible","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isMatomo":{"name":"isMatomo","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"getProviderMetadata":{"name":"getProviderMetadata","async":false,"parameters":[],"returnType":"Record<string, unknown>","isStatic":false,"isPublic":true},"setProviderMetadata":{"name":"setProviderMetadata","async":false,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"markSynced":{"name":"markSynced","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"analyzePerformance":{"name":"analyzePerformance","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string"]}],"returnType":"Promise<object>","isStatic":false,"isPublic":true},"isPerformingWell":{"name":"isPerformingWell","async":true,"parameters":[],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get","sync","runReport"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"AnalyticsProperty","collectionExportName":"AnalyticsPropertyCollection","displayLabelField":"name","schema":{"tableName":"analytics_properties","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_properties\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"display_name\\" TEXT DEFAULT '',\\n \\"provider\\" TEXT,\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"measurement_id\\" TEXT DEFAULT '',\\n \\"api_secret\\" TEXT DEFAULT '',\\n \\"site_domain\\" TEXT DEFAULT '',\\n \\"time_zone\\" TEXT DEFAULT 'America/Los_Angeles',\\n \\"currency_code\\" TEXT DEFAULT 'USD',\\n \\"industry_category\\" TEXT DEFAULT '',\\n \\"service_level\\" TEXT DEFAULT 'STANDARD',\\n \\"status\\" TEXT,\\n \\"last_sync_at\\" TIMESTAMP,\\n \\"provider_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":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"display_name":{"type":"TEXT","notNull":false,"default":""},"provider":{"type":"TEXT","notNull":false},"external_id":{"type":"TEXT","notNull":false,"default":""},"measurement_id":{"type":"TEXT","notNull":false,"default":""},"api_secret":{"type":"TEXT","notNull":false,"default":""},"site_domain":{"type":"TEXT","notNull":false,"default":""},"time_zone":{"type":"TEXT","notNull":false,"default":"America/Los_Angeles"},"currency_code":{"type":"TEXT","notNull":false,"default":"USD"},"industry_category":{"type":"TEXT","notNull":false,"default":""},"service_level":{"type":"TEXT","notNull":false,"default":"STANDARD"},"status":{"type":"TEXT","notNull":false},"last_sync_at":{"type":"TIMESTAMP","notNull":false},"provider_metadata":{"type":"TEXT","notNull":false,"default":"{}"}},"indexes":[{"name":"analytics_properties_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_properties_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_properties_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"f38a20b9"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsReport":{"name":"analyticsreport","className":"AnalyticsReport","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsReport","collection":"analyticsreports","description":"AnalyticsReport represents a saved report configuration with optional scheduling.","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/models/AnalyticsReport.ts","packageName":"@happyvertical/smrt-analytics","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"propertyId":{"type":"foreignKey","required":false,"related":"AnalyticsProperty","_meta":{"description":"The website or app this report is about."}},"name":{"type":"text","required":false,"default":"","description":"A short name for the report, such as Weekly traffic.","_meta":{"description":"A short name for the report, such as Weekly traffic."}},"description":{"type":"text","required":false,"default":"","description":"What the report is for.","_meta":{"description":"What the report is for."}},"dimensions":{"type":"text","required":false,"default":"[]","description":"What to break the figures down by, such as country or device, as a list.","_meta":{"description":"What to break the figures down by, such as country or device, as a list."}},"metrics":{"type":"text","required":false,"default":"[]","description":"What to count, such as active users or sessions, as a list.","_meta":{"description":"What to count, such as active users or sessions, as a list."}},"dateRangeStart":{"type":"text","required":false,"default":"7daysAgo","description":"Where the period begins: a date, or a relative value such as 7daysAgo.","_meta":{"description":"Where the period begins: a date, or a relative value such as 7daysAgo."}},"dateRangeEnd":{"type":"text","required":false,"default":"today","description":"Where the period ends: a date, or a relative value such as today.","_meta":{"description":"Where the period ends: a date, or a relative value such as today."}},"dimensionFilter":{"type":"text","required":false,"default":""},"metricFilter":{"type":"text","required":false,"default":""},"orderBy":{"type":"text","required":false,"default":"[]"},"maxResults":{"type":"integer","required":false,"default":0},"status":{"type":"text","required":false,"description":"Where the report stands: draft, scheduled, running, completed or failed.","_meta":{"description":"Where the report stands: draft, scheduled, running, completed or failed."},"enum":["draft","scheduled","running","completed","failed"]},"frequency":{"type":"text","required":false,"description":"How often the report repeats: once, daily, weekly or monthly.","_meta":{"description":"How often the report repeats: once, daily, weekly or monthly."},"enum":["once","daily","weekly","monthly"]},"lastRunAt":{"type":"datetime","required":false,"description":"When the report last ran.","_meta":{"description":"When the report last ran."}},"nextRunAt":{"type":"datetime","required":false,"description":"When the report is next due to run.","_meta":{"description":"When the report is next due to run."}},"resultData":{"type":"text","required":false,"default":""},"rowCount":{"type":"integer","required":false,"default":0,"description":"How many rows the last run returned.","_meta":{"description":"How many rows the last run returned."}},"lastError":{"type":"text","required":false,"default":"","description":"Why the last run failed. Empty when it worked.","_meta":{"description":"Why the last run failed. Empty when it worked."}}},"methods":{"getDimensions":{"name":"getDimensions","async":false,"parameters":[],"returnType":"Array<object>","isStatic":false,"isPublic":true},"setDimensions":{"name":"setDimensions","async":false,"parameters":[{"name":"dimensions","type":"Array<object>","optional":false,"memberTypes":["string"]}],"returnType":"void","isStatic":false,"isPublic":true},"getMetrics":{"name":"getMetrics","async":false,"parameters":[],"returnType":"Array<object>","isStatic":false,"isPublic":true},"setMetrics":{"name":"setMetrics","async":false,"parameters":[{"name":"metrics","type":"Array<object>","optional":false,"memberTypes":["string"]}],"returnType":"void","isStatic":false,"isPublic":true},"getResultData":{"name":"getResultData","async":false,"parameters":[],"returnType":"Record<string, unknown> | null","isStatic":false,"isPublic":true},"setResultData":{"name":"setResultData","async":false,"parameters":[{"name":"data","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"markRunning":{"name":"markRunning","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"markCompleted":{"name":"markCompleted","async":false,"parameters":[{"name":"rowCount","type":"number","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"markFailed":{"name":"markFailed","async":false,"parameters":[{"name":"error","type":"string","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"calculateNextRun":{"name":"calculateNextRun","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"isDue":{"name":"isDue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"analyzeResults":{"name":"analyzeResults","async":true,"parameters":[{"name":"_options","type":"Record<string, unknown>","optional":true}],"returnType":"Promise<object>","isStatic":false,"isPublic":true},"hasPositiveTrends":{"name":"hasPositiveTrends","async":true,"parameters":[],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"AnalyticsReport","collectionExportName":"AnalyticsReportCollection","displayLabelField":"name","schema":{"tableName":"analytics_reports","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_reports\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"property_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT DEFAULT '',\\n \\"dimensions\\" TEXT DEFAULT '[]',\\n \\"metrics\\" TEXT DEFAULT '[]',\\n \\"date_range_start\\" TEXT DEFAULT '7daysAgo',\\n \\"date_range_end\\" TEXT DEFAULT 'today',\\n \\"dimension_filter\\" TEXT DEFAULT '',\\n \\"metric_filter\\" TEXT DEFAULT '',\\n \\"order_by\\" TEXT DEFAULT '[]',\\n \\"max_results\\" INTEGER DEFAULT 0,\\n \\"status\\" TEXT,\\n \\"frequency\\" TEXT,\\n \\"last_run_at\\" TIMESTAMP,\\n \\"next_run_at\\" TIMESTAMP,\\n \\"result_data\\" TEXT DEFAULT '',\\n \\"row_count\\" INTEGER DEFAULT 0,\\n \\"last_error\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"property_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"analytics_properties","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false,"default":""},"dimensions":{"type":"TEXT","notNull":false,"default":"[]"},"metrics":{"type":"TEXT","notNull":false,"default":"[]"},"date_range_start":{"type":"TEXT","notNull":false,"default":"7daysAgo"},"date_range_end":{"type":"TEXT","notNull":false,"default":"today"},"dimension_filter":{"type":"TEXT","notNull":false,"default":""},"metric_filter":{"type":"TEXT","notNull":false,"default":""},"order_by":{"type":"TEXT","notNull":false,"default":"[]"},"max_results":{"type":"INTEGER","notNull":false,"default":0},"status":{"type":"TEXT","notNull":false},"frequency":{"type":"TEXT","notNull":false},"last_run_at":{"type":"TIMESTAMP","notNull":false},"next_run_at":{"type":"TIMESTAMP","notNull":false},"result_data":{"type":"TEXT","notNull":false,"default":""},"row_count":{"type":"INTEGER","notNull":false,"default":0},"last_error":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"analytics_reports_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_reports_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_reports_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"analytics_reports_property_id_idx","columns":["property_id"]}],"version":"22ce0f1c"},"importPath":"@happyvertical/smrt-analytics"}},"moduleType":"smrt","recipes":[{"id":"analytics.reports","className":"AnalyticsReportsRecipe","label":"Analytics","summary":"Save traffic reports for your websites and apps and get a plain-language read on the results.","synonyms":["analytics","traffic","pageviews","visitors","web stats","google analytics","plausible","matomo"],"models":["@happyvertical/smrt-analytics:AnalyticsProperty","@happyvertical/smrt-analytics:AnalyticsReport"],"nav":[{"label":"Analytics properties","model":"@happyvertical/smrt-analytics:AnalyticsProperty","icon":"home","description":"The websites and apps you track, and who tracks them."},{"label":"Analytics reports","model":"@happyvertical/smrt-analytics:AnalyticsReport","icon":"fileText","description":"Saved reports, how often they run and what they found."}],"requires":[],"section":{"id":"analytics","label":"Analytics","icon":"layers","description":"How your websites and apps are doing."},"options":{"@happyvertical/smrt-analytics:AnalyticsProperty":{"fields":{"name":{"visibility":"hidden"},"industryCategory":{"visibility":"advanced"},"serviceLevel":{"visibility":"advanced"},"lastSyncAt":{"locked":true}}},"@happyvertical/smrt-analytics:AnalyticsReport":{"fields":{"dimensionFilter":{"visibility":"advanced"},"metricFilter":{"visibility":"advanced"},"orderBy":{"visibility":"advanced"},"maxResults":{"visibility":"advanced"},"resultData":{"visibility":"hidden","locked":true},"rowCount":{"locked":true},"lastRunAt":{"locked":true},"nextRunAt":{"locked":true},"lastError":{"locked":true}}}},"help":{"markdown":"## Overview\\n\\nAnalytics keeps the traffic reports you care about for your websites and apps.\\nAdd a property for each site or app you track in Google Analytics 4, Plausible\\nor Matomo. Save a report on it that says what to count, what to break the\\nfigures down by, and over which dates. The rows each run returns are stored\\nwith the report, and the assistant can read them back to you in plain words.\\n\\nProperties and reports are kept on your server. Provider secrets are stored on\\nthe property and never sent to the assistant or returned in responses, but they\\nare not encrypted in the database.\\n\\n## Tasks\\n\\n### Add a property\\n\\n1. Create a new property.\\n2. Enter the **{field:AnalyticsProperty.displayName}** and pick the\\n **{field:AnalyticsProperty.provider}**.\\n3. Enter the **{field:AnalyticsProperty.externalId}** the analytics service\\n gives it.\\n4. For Google Analytics, enter the **{field:AnalyticsProperty.measurementId}**.\\n For Plausible or Matomo, enter the **{field:AnalyticsProperty.siteDomain}**.\\n5. Keep **{field:AnalyticsProperty.status}** on active while you want it\\n tracked.\\n\\n### Save a report\\n\\n1. Create a new report and choose the property in\\n **{field:AnalyticsReport.propertyId}**.\\n2. Give it a **{field:AnalyticsReport.name}**.\\n3. List what to break the figures down by in\\n **{field:AnalyticsReport.dimensions}** and what to count in\\n **{field:AnalyticsReport.metrics}**.\\n4. Set the period with **{field:AnalyticsReport.dateRangeStart}** and\\n **{field:AnalyticsReport.dateRangeEnd}**.\\n5. Pick **{field:AnalyticsReport.frequency}** to repeat it daily, weekly or\\n monthly.\\n\\n### Check what a report found\\n\\n1. **{field:AnalyticsReport.status}** says where the report stands, and\\n **{field:AnalyticsReport.lastRunAt}** when it last ran.\\n2. **{field:AnalyticsReport.rowCount}** shows how many rows came back.\\n3. If a run failed, **{field:AnalyticsReport.lastError}** says why.\\n\\n### Ask the assistant\\n\\n1. Ask about a saved report by name, for example \\"how did last week's traffic\\n report look?\\". When your app has the analytics tools switched on, the\\n assistant can list your saved reports and open one to read its figures.\\n2. A written summary of a report comes from your app, which sends the stored\\n rows to the AI provider as they are. Leave out dimensions that identify a\\n person.\\n3. For totals your own app calculates, such as orders or signups, ask for a\\n refreshed report. The assistant reads those with \`reports.query\`; see\\n Reports.\\n4. For a one-off question those reports do not answer, the assistant can\\n propose a report with \`reports.runtime.define\`. Nothing is saved until you\\n confirm it.\\n","fieldRefs":["AnalyticsProperty.displayName","AnalyticsProperty.externalId","AnalyticsProperty.measurementId","AnalyticsProperty.provider","AnalyticsProperty.siteDomain","AnalyticsProperty.status","AnalyticsReport.dateRangeEnd","AnalyticsReport.dateRangeStart","AnalyticsReport.dimensions","AnalyticsReport.frequency","AnalyticsReport.lastError","AnalyticsReport.lastRunAt","AnalyticsReport.metrics","AnalyticsReport.name","AnalyticsReport.propertyId","AnalyticsReport.rowCount","AnalyticsReport.status"]},"surfaces":[{"kind":"route","path":"/analytics/summary","export":"@happyvertical/smrt-analytics/svelte#AnalyticsSummary","label":"Traffic summary"}],"runtime":"server","demo":{"mode":"server","reasons":["The recipe declares runtime \\"server\\".","Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624)."]}}],"smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-prompts","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3624"],"via":["@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
5
+ ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-analytics","packageVersion":"0.56.1","objects":{"@happyvertical/smrt-analytics:AnalyticsDataStreamCollection":{"name":"analyticsdatastreamcollection","className":"AnalyticsDataStreamCollection","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsDataStreamCollection","collection":"analyticsdatastreams","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/collections/AnalyticsDataStreamCollection.ts","packageName":"@happyvertical/smrt-analytics","fields":{},"methods":{"findByProperty":{"name":"findByProperty","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findByExternalId":{"name":"findByExternalId","async":true,"parameters":[{"name":"externalId","type":"string","optional":false}],"returnType":"Promise<AnalyticsDataStream | null>","isStatic":false,"isPublic":true},"findByMeasurementId":{"name":"findByMeasurementId","async":true,"parameters":[{"name":"measurementId","type":"string","optional":false}],"returnType":"Promise<AnalyticsDataStream | null>","isStatic":false,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"streamType","type":"DataStreamType","optional":false}],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findWebStreams":{"name":"findWebStreams","async":true,"parameters":[],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findIOSStreams":{"name":"findIOSStreams","async":true,"parameters":[],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findAndroidStreams":{"name":"findAndroidStreams","async":true,"parameters":[],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findMobileStreams":{"name":"findMobileStreams","async":true,"parameters":[],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"DataStreamStatus","optional":false}],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findActive":{"name":"findActive","async":true,"parameters":[],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true},"findActiveByProperty":{"name":"findActiveByProperty","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<AnalyticsDataStream[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"AnalyticsDataStream","exportName":"AnalyticsDataStreamCollection","collectionExportName":"AnalyticsDataStreamCollectionCollection","schema":{"tableName":"analytics_data_streams","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_data_streams\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"property_id\\" UUID,\\n \\"display_name\\" TEXT DEFAULT '',\\n \\"stream_type\\" TEXT,\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"measurement_id\\" TEXT DEFAULT '',\\n \\"firebase_app_id\\" TEXT DEFAULT '',\\n \\"default_uri\\" TEXT DEFAULT '',\\n \\"bundle_id\\" TEXT DEFAULT '',\\n \\"package_name\\" TEXT DEFAULT '',\\n \\"status\\" TEXT,\\n \\"enhanced_measurement\\" BOOLEAN DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"property_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"analytics_properties","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"display_name":{"type":"TEXT","notNull":false,"default":""},"stream_type":{"type":"TEXT","notNull":false},"external_id":{"type":"TEXT","notNull":false,"default":""},"measurement_id":{"type":"TEXT","notNull":false,"default":""},"firebase_app_id":{"type":"TEXT","notNull":false,"default":""},"default_uri":{"type":"TEXT","notNull":false,"default":""},"bundle_id":{"type":"TEXT","notNull":false,"default":""},"package_name":{"type":"TEXT","notNull":false,"default":""},"status":{"type":"TEXT","notNull":false},"enhanced_measurement":{"type":"BOOLEAN","notNull":false,"default":true}},"indexes":[{"name":"analytics_data_streams_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_data_streams_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_data_streams_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"analytics_data_streams_property_id_idx","columns":["property_id"]}],"version":"851609ba"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsEventCollection":{"name":"analyticseventcollection","className":"AnalyticsEventCollection","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsEventCollection","collection":"analyticsevents","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/collections/AnalyticsEventCollection.ts","packageName":"@happyvertical/smrt-analytics","fields":{},"methods":{"findByProperty":{"name":"findByProperty","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findByEventName":{"name":"findByEventName","async":true,"parameters":[{"name":"eventName","type":"string","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findByClientId":{"name":"findByClientId","async":true,"parameters":[{"name":"clientId","type":"string","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findByUserId":{"name":"findByUserId","async":true,"parameters":[{"name":"userId","type":"string","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"TrackingEventStatus","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findPending":{"name":"findPending","async":true,"parameters":[],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findSent":{"name":"findSent","async":true,"parameters":[],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findFailed":{"name":"findFailed","async":true,"parameters":[],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findForRetry":{"name":"findForRetry","async":true,"parameters":[{"name":"maxRetries","type":"number","optional":true}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findPendingByProperty":{"name":"findPendingByProperty","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findByDateRange":{"name":"findByDateRange","async":true,"parameters":[{"name":"startDate","type":"Date","optional":false},{"name":"endDate","type":"Date","optional":false}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findConversions":{"name":"findConversions","async":true,"parameters":[{"name":"propertyId","type":"string","optional":true}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"findPageviews":{"name":"findPageviews","async":true,"parameters":[{"name":"propertyId","type":"string","optional":true}],"returnType":"Promise<AnalyticsEvent[]>","isStatic":false,"isPublic":true},"countByEventName":{"name":"countByEventName","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<Map<string, number>>","isStatic":false,"isPublic":true},"getPropertyStats":{"name":"getPropertyStats","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<object>","isStatic":false,"isPublic":true},"getPropertyStatsWithTrend":{"name":"getPropertyStatsWithTrend","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false},{"name":"now","type":"Date","optional":true},{"name":"timeZone","type":"string","optional":true,"default":"UTC"}],"returnType":"Promise<PropertyStatsWithTrend>","isStatic":false,"isPublic":true},"getBatchPropertyStats":{"name":"getBatchPropertyStats","async":true,"parameters":[{"name":"propertyIds","type":"string[]","optional":false},{"name":"now","type":"Date","optional":true},{"name":"timeZone","type":"string","optional":true,"default":"UTC"}],"returnType":"Promise<Map<string, PropertyStatsWithTrend>>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"AnalyticsEvent","exportName":"AnalyticsEventCollection","collectionExportName":"AnalyticsEventCollectionCollection","schema":{"tableName":"analytics_events","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_events\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"property_id\\" UUID,\\n \\"event_name\\" TEXT DEFAULT '',\\n \\"client_id\\" TEXT DEFAULT '',\\n \\"user_id\\" TEXT DEFAULT '',\\n \\"params\\" TEXT DEFAULT '{}',\\n \\"event_timestamp\\" TIMESTAMP,\\n \\"status\\" TEXT,\\n \\"sent_at\\" TIMESTAMP,\\n \\"error_message\\" TEXT DEFAULT '',\\n \\"retry_count\\" INTEGER DEFAULT 0,\\n \\"non_personalized_ads\\" BOOLEAN DEFAULT FALSE,\\n \\"session_id\\" TEXT DEFAULT '',\\n \\"page_path\\" TEXT DEFAULT '',\\n \\"page_title\\" TEXT DEFAULT '',\\n \\"user_agent\\" TEXT DEFAULT '',\\n \\"ip_address\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"property_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"analytics_properties","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"event_name":{"type":"TEXT","notNull":false,"default":""},"client_id":{"type":"TEXT","notNull":false,"default":""},"user_id":{"type":"TEXT","notNull":false,"default":""},"params":{"type":"TEXT","notNull":false,"default":"{}"},"event_timestamp":{"type":"TIMESTAMP","notNull":false},"status":{"type":"TEXT","notNull":false},"sent_at":{"type":"TIMESTAMP","notNull":false},"error_message":{"type":"TEXT","notNull":false,"default":""},"retry_count":{"type":"INTEGER","notNull":false,"default":0},"non_personalized_ads":{"type":"BOOLEAN","notNull":false,"default":false},"session_id":{"type":"TEXT","notNull":false,"default":""},"page_path":{"type":"TEXT","notNull":false,"default":""},"page_title":{"type":"TEXT","notNull":false,"default":""},"user_agent":{"type":"TEXT","notNull":false,"default":""},"ip_address":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"analytics_events_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_events_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_events_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"analytics_events_property_id_idx","columns":["property_id"]}],"version":"bee09e1d"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsPropertyCollection":{"name":"analyticspropertycollection","className":"AnalyticsPropertyCollection","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsPropertyCollection","collection":"analyticsproperties","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/collections/AnalyticsPropertyCollection.ts","packageName":"@happyvertical/smrt-analytics","fields":{},"methods":{"findByExternalId":{"name":"findByExternalId","async":true,"parameters":[{"name":"externalId","type":"string","optional":false}],"returnType":"Promise<AnalyticsProperty | null>","isStatic":false,"isPublic":true},"findByMeasurementId":{"name":"findByMeasurementId","async":true,"parameters":[{"name":"measurementId","type":"string","optional":false}],"returnType":"Promise<AnalyticsProperty | null>","isStatic":false,"isPublic":true},"findBySiteDomain":{"name":"findBySiteDomain","async":true,"parameters":[{"name":"siteDomain","type":"string","optional":false},{"name":"provider","type":"AnalyticsProvider","optional":true}],"returnType":"Promise<AnalyticsProperty | null>","isStatic":false,"isPublic":true},"findByProvider":{"name":"findByProvider","async":true,"parameters":[{"name":"provider","type":"AnalyticsProvider","optional":false}],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true},"findGA4Properties":{"name":"findGA4Properties","async":true,"parameters":[],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true},"findPlausibleSites":{"name":"findPlausibleSites","async":true,"parameters":[],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true},"findMatomoSites":{"name":"findMatomoSites","async":true,"parameters":[],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"AnalyticsPropertyStatus","optional":false}],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true},"findActive":{"name":"findActive","async":true,"parameters":[],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true},"findNeedingSync":{"name":"findNeedingSync","async":true,"parameters":[{"name":"hoursAgo","type":"number","optional":true}],"returnType":"Promise<AnalyticsProperty[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"AnalyticsProperty","exportName":"AnalyticsPropertyCollection","collectionExportName":"AnalyticsPropertyCollectionCollection","schema":{"tableName":"analytics_properties","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_properties\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"display_name\\" TEXT DEFAULT '',\\n \\"provider\\" TEXT,\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"measurement_id\\" TEXT DEFAULT '',\\n \\"api_secret\\" TEXT DEFAULT '',\\n \\"site_domain\\" TEXT DEFAULT '',\\n \\"time_zone\\" TEXT DEFAULT 'America/Los_Angeles',\\n \\"currency_code\\" TEXT DEFAULT 'USD',\\n \\"industry_category\\" TEXT DEFAULT '',\\n \\"service_level\\" TEXT DEFAULT 'STANDARD',\\n \\"status\\" TEXT,\\n \\"last_sync_at\\" TIMESTAMP,\\n \\"provider_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":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"display_name":{"type":"TEXT","notNull":false,"default":""},"provider":{"type":"TEXT","notNull":false},"external_id":{"type":"TEXT","notNull":false,"default":""},"measurement_id":{"type":"TEXT","notNull":false,"default":""},"api_secret":{"type":"TEXT","notNull":false,"default":""},"site_domain":{"type":"TEXT","notNull":false,"default":""},"time_zone":{"type":"TEXT","notNull":false,"default":"America/Los_Angeles"},"currency_code":{"type":"TEXT","notNull":false,"default":"USD"},"industry_category":{"type":"TEXT","notNull":false,"default":""},"service_level":{"type":"TEXT","notNull":false,"default":"STANDARD"},"status":{"type":"TEXT","notNull":false},"last_sync_at":{"type":"TIMESTAMP","notNull":false},"provider_metadata":{"type":"TEXT","notNull":false,"default":"{}"}},"indexes":[{"name":"analytics_properties_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_properties_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_properties_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"f38a20b9"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsReportCollection":{"name":"analyticsreportcollection","className":"AnalyticsReportCollection","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsReportCollection","collection":"analyticsreports","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/collections/AnalyticsReportCollection.ts","packageName":"@happyvertical/smrt-analytics","fields":{},"methods":{"findByProperty":{"name":"findByProperty","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false}],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findByStatus":{"name":"findByStatus","async":true,"parameters":[{"name":"status","type":"ReportStatus","optional":false}],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findDrafts":{"name":"findDrafts","async":true,"parameters":[],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findScheduled":{"name":"findScheduled","async":true,"parameters":[],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findCompleted":{"name":"findCompleted","async":true,"parameters":[],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findFailed":{"name":"findFailed","async":true,"parameters":[],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findByFrequency":{"name":"findByFrequency","async":true,"parameters":[{"name":"frequency","type":"ReportFrequency","optional":false}],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findRecurring":{"name":"findRecurring","async":true,"parameters":[],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findDue":{"name":"findDue","async":true,"parameters":[],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findByPropertyAndStatus":{"name":"findByPropertyAndStatus","async":true,"parameters":[{"name":"propertyId","type":"string","optional":false},{"name":"status","type":"ReportStatus","optional":false}],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true},"findRecentlyRun":{"name":"findRecentlyRun","async":true,"parameters":[{"name":"hoursAgo","type":"number","optional":true}],"returnType":"Promise<AnalyticsReport[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"AnalyticsReport","exportName":"AnalyticsReportCollection","collectionExportName":"AnalyticsReportCollectionCollection","schema":{"tableName":"analytics_reports","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_reports\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"property_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT DEFAULT '',\\n \\"dimensions\\" TEXT DEFAULT '[]',\\n \\"metrics\\" TEXT DEFAULT '[]',\\n \\"date_range_start\\" TEXT DEFAULT '7daysAgo',\\n \\"date_range_end\\" TEXT DEFAULT 'today',\\n \\"dimension_filter\\" TEXT DEFAULT '',\\n \\"metric_filter\\" TEXT DEFAULT '',\\n \\"order_by\\" TEXT DEFAULT '[]',\\n \\"max_results\\" INTEGER DEFAULT 0,\\n \\"status\\" TEXT,\\n \\"frequency\\" TEXT,\\n \\"last_run_at\\" TIMESTAMP,\\n \\"next_run_at\\" TIMESTAMP,\\n \\"result_data\\" TEXT DEFAULT '',\\n \\"row_count\\" INTEGER DEFAULT 0,\\n \\"last_error\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"property_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"analytics_properties","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false,"default":""},"dimensions":{"type":"TEXT","notNull":false,"default":"[]"},"metrics":{"type":"TEXT","notNull":false,"default":"[]"},"date_range_start":{"type":"TEXT","notNull":false,"default":"7daysAgo"},"date_range_end":{"type":"TEXT","notNull":false,"default":"today"},"dimension_filter":{"type":"TEXT","notNull":false,"default":""},"metric_filter":{"type":"TEXT","notNull":false,"default":""},"order_by":{"type":"TEXT","notNull":false,"default":"[]"},"max_results":{"type":"INTEGER","notNull":false,"default":0},"status":{"type":"TEXT","notNull":false},"frequency":{"type":"TEXT","notNull":false},"last_run_at":{"type":"TIMESTAMP","notNull":false},"next_run_at":{"type":"TIMESTAMP","notNull":false},"result_data":{"type":"TEXT","notNull":false,"default":""},"row_count":{"type":"INTEGER","notNull":false,"default":0},"last_error":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"analytics_reports_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_reports_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_reports_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"analytics_reports_property_id_idx","columns":["property_id"]}],"version":"22ce0f1c"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsDataStream":{"name":"analyticsdatastream","className":"AnalyticsDataStream","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsDataStream","collection":"analyticsdatastreams","description":"AnalyticsDataStream represents a data stream (web, iOS, Android) for an analytics property.","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/models/AnalyticsDataStream.ts","packageName":"@happyvertical/smrt-analytics","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"propertyId":{"type":"foreignKey","required":false,"related":"AnalyticsProperty"},"displayName":{"type":"text","required":false,"default":""},"streamType":{"type":"text","required":false,"enum":["WEB_DATA_STREAM","ANDROID_APP_DATA_STREAM","IOS_APP_DATA_STREAM"]},"externalId":{"type":"text","required":false,"default":""},"measurementId":{"type":"text","required":false,"default":""},"firebaseAppId":{"type":"text","required":false,"default":""},"defaultUri":{"type":"text","required":false,"default":""},"bundleId":{"type":"text","required":false,"default":""},"packageName":{"type":"text","required":false,"default":""},"status":{"type":"text","required":false,"enum":["active","inactive"]},"enhancedMeasurement":{"type":"boolean","required":false,"default":true}},"methods":{"isWeb":{"name":"isWeb","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isIOS":{"name":"isIOS","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isAndroid":{"name":"isAndroid","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isMobileApp":{"name":"isMobileApp","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"getPlatformId":{"name":"getPlatformId","async":false,"parameters":[],"returnType":"string","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"AnalyticsDataStream","collectionExportName":"AnalyticsDataStreamCollection","schema":{"tableName":"analytics_data_streams","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_data_streams\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"property_id\\" UUID,\\n \\"display_name\\" TEXT DEFAULT '',\\n \\"stream_type\\" TEXT,\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"measurement_id\\" TEXT DEFAULT '',\\n \\"firebase_app_id\\" TEXT DEFAULT '',\\n \\"default_uri\\" TEXT DEFAULT '',\\n \\"bundle_id\\" TEXT DEFAULT '',\\n \\"package_name\\" TEXT DEFAULT '',\\n \\"status\\" TEXT,\\n \\"enhanced_measurement\\" BOOLEAN DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"property_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"analytics_properties","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"display_name":{"type":"TEXT","notNull":false,"default":""},"stream_type":{"type":"TEXT","notNull":false},"external_id":{"type":"TEXT","notNull":false,"default":""},"measurement_id":{"type":"TEXT","notNull":false,"default":""},"firebase_app_id":{"type":"TEXT","notNull":false,"default":""},"default_uri":{"type":"TEXT","notNull":false,"default":""},"bundle_id":{"type":"TEXT","notNull":false,"default":""},"package_name":{"type":"TEXT","notNull":false,"default":""},"status":{"type":"TEXT","notNull":false},"enhanced_measurement":{"type":"BOOLEAN","notNull":false,"default":true}},"indexes":[{"name":"analytics_data_streams_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_data_streams_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_data_streams_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"analytics_data_streams_property_id_idx","columns":["property_id"]}],"version":"851609ba"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsEvent":{"name":"analyticsevent","className":"AnalyticsEvent","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsEvent","collection":"analyticsevents","description":"AnalyticsEvent represents a tracked analytics event (server-side tracking log).","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/models/AnalyticsEvent.ts","packageName":"@happyvertical/smrt-analytics","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"propertyId":{"type":"foreignKey","required":false,"related":"AnalyticsProperty"},"eventName":{"type":"text","required":false,"default":""},"clientId":{"type":"text","required":false,"default":""},"userId":{"type":"text","required":false,"default":""},"params":{"type":"text","required":false,"default":"{}"},"eventTimestamp":{"type":"datetime","required":false},"status":{"type":"text","required":false,"enum":["pending","sent","failed"]},"sentAt":{"type":"datetime","required":false},"errorMessage":{"type":"text","required":false,"default":""},"retryCount":{"type":"integer","required":false,"default":0},"nonPersonalizedAds":{"type":"boolean","required":false,"default":false},"sessionId":{"type":"text","required":false,"default":""},"pagePath":{"type":"text","required":false,"default":""},"pageTitle":{"type":"text","required":false,"default":""},"userAgent":{"type":"text","required":false,"default":""},"ipAddress":{"type":"text","required":false,"default":""}},"methods":{"getParams":{"name":"getParams","async":false,"parameters":[],"returnType":"Record<string, string | number | boolean>","isStatic":false,"isPublic":true},"setParams":{"name":"setParams","async":false,"parameters":[{"name":"params","type":"Record<string, string | number | boolean>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"addParam":{"name":"addParam","async":false,"parameters":[{"name":"key","type":"string","optional":false},{"name":"value","type":"string | number | boolean","optional":false,"unionBranches":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}],"returnType":"void","isStatic":false,"isPublic":true},"isPageview":{"name":"isPageview","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isConversion":{"name":"isConversion","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"markSent":{"name":"markSent","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"markFailed":{"name":"markFailed","async":false,"parameters":[{"name":"error","type":"string","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"resetForRetry":{"name":"resetForRetry","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"shouldRetry":{"name":"shouldRetry","async":false,"parameters":[{"name":"maxRetries","type":"number","optional":true}],"returnType":"boolean","isStatic":false,"isPublic":true},"toTrackEvent":{"name":"toTrackEvent","async":false,"parameters":[],"returnType":"object","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create"]},"mcp":{"include":["list","get","track"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"AnalyticsEvent","collectionExportName":"AnalyticsEventCollection","schema":{"tableName":"analytics_events","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_events\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"property_id\\" UUID,\\n \\"event_name\\" TEXT DEFAULT '',\\n \\"client_id\\" TEXT DEFAULT '',\\n \\"user_id\\" TEXT DEFAULT '',\\n \\"params\\" TEXT DEFAULT '{}',\\n \\"event_timestamp\\" TIMESTAMP,\\n \\"status\\" TEXT,\\n \\"sent_at\\" TIMESTAMP,\\n \\"error_message\\" TEXT DEFAULT '',\\n \\"retry_count\\" INTEGER DEFAULT 0,\\n \\"non_personalized_ads\\" BOOLEAN DEFAULT FALSE,\\n \\"session_id\\" TEXT DEFAULT '',\\n \\"page_path\\" TEXT DEFAULT '',\\n \\"page_title\\" TEXT DEFAULT '',\\n \\"user_agent\\" TEXT DEFAULT '',\\n \\"ip_address\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"property_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"analytics_properties","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"event_name":{"type":"TEXT","notNull":false,"default":""},"client_id":{"type":"TEXT","notNull":false,"default":""},"user_id":{"type":"TEXT","notNull":false,"default":""},"params":{"type":"TEXT","notNull":false,"default":"{}"},"event_timestamp":{"type":"TIMESTAMP","notNull":false},"status":{"type":"TEXT","notNull":false},"sent_at":{"type":"TIMESTAMP","notNull":false},"error_message":{"type":"TEXT","notNull":false,"default":""},"retry_count":{"type":"INTEGER","notNull":false,"default":0},"non_personalized_ads":{"type":"BOOLEAN","notNull":false,"default":false},"session_id":{"type":"TEXT","notNull":false,"default":""},"page_path":{"type":"TEXT","notNull":false,"default":""},"page_title":{"type":"TEXT","notNull":false,"default":""},"user_agent":{"type":"TEXT","notNull":false,"default":""},"ip_address":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"analytics_events_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_events_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_events_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"analytics_events_property_id_idx","columns":["property_id"]}],"version":"bee09e1d"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsProperty":{"name":"analyticsproperty","className":"AnalyticsProperty","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsProperty","collection":"analyticsproperties","description":"AnalyticsProperty represents an analytics property (GA4 property, Plausible site, or Matomo site).","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/models/AnalyticsProperty.ts","packageName":"@happyvertical/smrt-analytics","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"name":{"type":"text","required":false,"default":""},"displayName":{"type":"text","required":false,"default":"","description":"The name people see for this website or app.","_meta":{"description":"The name people see for this website or app."}},"provider":{"type":"text","required":false,"description":"Which analytics service tracks it: Google Analytics 4, Plausible or Matomo.","_meta":{"description":"Which analytics service tracks it: Google Analytics 4, Plausible or Matomo."},"enum":["ga4","plausible","matomo"]},"externalId":{"type":"text","required":false,"default":"","description":"The id the analytics service gives the property, such as properties/123456789 or a Matomo site id.","_meta":{"description":"The id the analytics service gives the property, such as properties/123456789 or a Matomo site id."}},"measurementId":{"type":"text","required":false,"default":"","description":"The tracking id for a web stream, such as G-XXXXXXXXXX.","_meta":{"description":"The tracking id for a web stream, such as G-XXXXXXXXXX."}},"apiSecret":{"type":"text","required":false,"default":"","description":"The secret key your analytics service issues for this property. It is kept out of responses and tool results, but it is not encrypted in the database.","_meta":{"sensitive":true,"description":"The secret key your analytics service issues for this property. It is kept out of responses and tool results, but it is not encrypted in the database."},"sensitive":true},"siteDomain":{"type":"text","required":false,"default":"","description":"The website address, used by Plausible and Matomo.","_meta":{"description":"The website address, used by Plausible and Matomo."}},"timeZone":{"type":"text","required":false,"default":"America/Los_Angeles","description":"The time zone the figures are reported in.","_meta":{"description":"The time zone the figures are reported in."}},"currencyCode":{"type":"text","required":false,"default":"USD","description":"The currency used for revenue figures, such as USD.","_meta":{"description":"The currency used for revenue figures, such as USD."}},"industryCategory":{"type":"text","required":false,"default":""},"serviceLevel":{"type":"text","required":false,"default":"STANDARD"},"status":{"type":"text","required":false,"description":"Whether tracking is active, inactive or still being set up.","_meta":{"description":"Whether tracking is active, inactive or still being set up."},"enum":["active","inactive","pending"]},"lastSyncAt":{"type":"datetime","required":false,"description":"When the property was last synced with the analytics service.","_meta":{"description":"When the property was last synced with the analytics service."}},"providerMetadata":{"type":"text","required":false,"default":"{}","description":"Extra connection details from your analytics service. They are kept out of responses and tool results, but they are not encrypted in the database.","_meta":{"sensitive":true,"description":"Extra connection details from your analytics service. They are kept out of responses and tool results, but they are not encrypted in the database."},"sensitive":true}},"methods":{"isGA4":{"name":"isGA4","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isPlausible":{"name":"isPlausible","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isMatomo":{"name":"isMatomo","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"getProviderMetadata":{"name":"getProviderMetadata","async":false,"parameters":[],"returnType":"Record<string, unknown>","isStatic":false,"isPublic":true},"setProviderMetadata":{"name":"setProviderMetadata","async":false,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"markSynced":{"name":"markSynced","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"analyzePerformance":{"name":"analyzePerformance","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string"]}],"returnType":"Promise<object>","isStatic":false,"isPublic":true},"isPerformingWell":{"name":"isPerformingWell","async":true,"parameters":[],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get","sync","runReport"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"AnalyticsProperty","collectionExportName":"AnalyticsPropertyCollection","displayLabelField":"name","schema":{"tableName":"analytics_properties","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_properties\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"display_name\\" TEXT DEFAULT '',\\n \\"provider\\" TEXT,\\n \\"external_id\\" TEXT DEFAULT '',\\n \\"measurement_id\\" TEXT DEFAULT '',\\n \\"api_secret\\" TEXT DEFAULT '',\\n \\"site_domain\\" TEXT DEFAULT '',\\n \\"time_zone\\" TEXT DEFAULT 'America/Los_Angeles',\\n \\"currency_code\\" TEXT DEFAULT 'USD',\\n \\"industry_category\\" TEXT DEFAULT '',\\n \\"service_level\\" TEXT DEFAULT 'STANDARD',\\n \\"status\\" TEXT,\\n \\"last_sync_at\\" TIMESTAMP,\\n \\"provider_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":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"display_name":{"type":"TEXT","notNull":false,"default":""},"provider":{"type":"TEXT","notNull":false},"external_id":{"type":"TEXT","notNull":false,"default":""},"measurement_id":{"type":"TEXT","notNull":false,"default":""},"api_secret":{"type":"TEXT","notNull":false,"default":""},"site_domain":{"type":"TEXT","notNull":false,"default":""},"time_zone":{"type":"TEXT","notNull":false,"default":"America/Los_Angeles"},"currency_code":{"type":"TEXT","notNull":false,"default":"USD"},"industry_category":{"type":"TEXT","notNull":false,"default":""},"service_level":{"type":"TEXT","notNull":false,"default":"STANDARD"},"status":{"type":"TEXT","notNull":false},"last_sync_at":{"type":"TIMESTAMP","notNull":false},"provider_metadata":{"type":"TEXT","notNull":false,"default":"{}"}},"indexes":[{"name":"analytics_properties_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_properties_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_properties_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"f38a20b9"},"importPath":"@happyvertical/smrt-analytics"},"@happyvertical/smrt-analytics:AnalyticsReport":{"name":"analyticsreport","className":"AnalyticsReport","qualifiedName":"@happyvertical/smrt-analytics:AnalyticsReport","collection":"analyticsreports","description":"AnalyticsReport represents a saved report configuration with optional scheduling.","filePath":"/home/runner/work/smrt/smrt/packages/analytics/src/models/AnalyticsReport.ts","packageName":"@happyvertical/smrt-analytics","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"propertyId":{"type":"foreignKey","required":false,"related":"AnalyticsProperty","_meta":{"description":"The website or app this report is about."}},"name":{"type":"text","required":false,"default":"","description":"A short name for the report, such as Weekly traffic.","_meta":{"description":"A short name for the report, such as Weekly traffic."}},"description":{"type":"text","required":false,"default":"","description":"What the report is for.","_meta":{"description":"What the report is for."}},"dimensions":{"type":"text","required":false,"default":"[]","description":"What to break the figures down by, such as country or device, as a list.","_meta":{"description":"What to break the figures down by, such as country or device, as a list."}},"metrics":{"type":"text","required":false,"default":"[]","description":"What to count, such as active users or sessions, as a list.","_meta":{"description":"What to count, such as active users or sessions, as a list."}},"dateRangeStart":{"type":"text","required":false,"default":"7daysAgo","description":"Where the period begins: a date, or a relative value such as 7daysAgo.","_meta":{"description":"Where the period begins: a date, or a relative value such as 7daysAgo."}},"dateRangeEnd":{"type":"text","required":false,"default":"today","description":"Where the period ends: a date, or a relative value such as today.","_meta":{"description":"Where the period ends: a date, or a relative value such as today."}},"dimensionFilter":{"type":"text","required":false,"default":""},"metricFilter":{"type":"text","required":false,"default":""},"orderBy":{"type":"text","required":false,"default":"[]"},"maxResults":{"type":"integer","required":false,"default":0},"status":{"type":"text","required":false,"description":"Where the report stands: draft, scheduled, running, completed or failed.","_meta":{"description":"Where the report stands: draft, scheduled, running, completed or failed."},"enum":["draft","scheduled","running","completed","failed"]},"frequency":{"type":"text","required":false,"description":"How often the report repeats: once, daily, weekly or monthly.","_meta":{"description":"How often the report repeats: once, daily, weekly or monthly."},"enum":["once","daily","weekly","monthly"]},"lastRunAt":{"type":"datetime","required":false,"description":"When the report last ran.","_meta":{"description":"When the report last ran."}},"nextRunAt":{"type":"datetime","required":false,"description":"When the report is next due to run.","_meta":{"description":"When the report is next due to run."}},"resultData":{"type":"text","required":false,"default":""},"rowCount":{"type":"integer","required":false,"default":0,"description":"How many rows the last run returned.","_meta":{"description":"How many rows the last run returned."}},"lastError":{"type":"text","required":false,"default":"","description":"Why the last run failed. Empty when it worked.","_meta":{"description":"Why the last run failed. Empty when it worked."}}},"methods":{"getDimensions":{"name":"getDimensions","async":false,"parameters":[],"returnType":"Array<object>","isStatic":false,"isPublic":true},"setDimensions":{"name":"setDimensions","async":false,"parameters":[{"name":"dimensions","type":"Array<object>","optional":false,"memberTypes":["string"]}],"returnType":"void","isStatic":false,"isPublic":true},"getMetrics":{"name":"getMetrics","async":false,"parameters":[],"returnType":"Array<object>","isStatic":false,"isPublic":true},"setMetrics":{"name":"setMetrics","async":false,"parameters":[{"name":"metrics","type":"Array<object>","optional":false,"memberTypes":["string"]}],"returnType":"void","isStatic":false,"isPublic":true},"getResultData":{"name":"getResultData","async":false,"parameters":[],"returnType":"Record<string, unknown> | null","isStatic":false,"isPublic":true},"setResultData":{"name":"setResultData","async":false,"parameters":[{"name":"data","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"markRunning":{"name":"markRunning","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"markCompleted":{"name":"markCompleted","async":false,"parameters":[{"name":"rowCount","type":"number","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"markFailed":{"name":"markFailed","async":false,"parameters":[{"name":"error","type":"string","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"calculateNextRun":{"name":"calculateNextRun","async":false,"parameters":[],"returnType":"void","isStatic":false,"isPublic":true},"isDue":{"name":"isDue","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"analyzeResults":{"name":"analyzeResults","async":true,"parameters":[{"name":"_options","type":"Record<string, unknown>","optional":true}],"returnType":"Promise<object>","isStatic":false,"isPublic":true},"hasPositiveTrends":{"name":"hasPositiveTrends","async":true,"parameters":[],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"AnalyticsReport","collectionExportName":"AnalyticsReportCollection","displayLabelField":"name","schema":{"tableName":"analytics_reports","ddl":"CREATE TABLE IF NOT EXISTS \\"analytics_reports\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"property_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT DEFAULT '',\\n \\"dimensions\\" TEXT DEFAULT '[]',\\n \\"metrics\\" TEXT DEFAULT '[]',\\n \\"date_range_start\\" TEXT DEFAULT '7daysAgo',\\n \\"date_range_end\\" TEXT DEFAULT 'today',\\n \\"dimension_filter\\" TEXT DEFAULT '',\\n \\"metric_filter\\" TEXT DEFAULT '',\\n \\"order_by\\" TEXT DEFAULT '[]',\\n \\"max_results\\" INTEGER DEFAULT 0,\\n \\"status\\" TEXT,\\n \\"frequency\\" TEXT,\\n \\"last_run_at\\" TIMESTAMP,\\n \\"next_run_at\\" TIMESTAMP,\\n \\"result_data\\" TEXT DEFAULT '',\\n \\"row_count\\" INTEGER DEFAULT 0,\\n \\"last_error\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"property_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"analytics_properties","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false,"default":""},"dimensions":{"type":"TEXT","notNull":false,"default":"[]"},"metrics":{"type":"TEXT","notNull":false,"default":"[]"},"date_range_start":{"type":"TEXT","notNull":false,"default":"7daysAgo"},"date_range_end":{"type":"TEXT","notNull":false,"default":"today"},"dimension_filter":{"type":"TEXT","notNull":false,"default":""},"metric_filter":{"type":"TEXT","notNull":false,"default":""},"order_by":{"type":"TEXT","notNull":false,"default":"[]"},"max_results":{"type":"INTEGER","notNull":false,"default":0},"status":{"type":"TEXT","notNull":false},"frequency":{"type":"TEXT","notNull":false},"last_run_at":{"type":"TIMESTAMP","notNull":false},"next_run_at":{"type":"TIMESTAMP","notNull":false},"result_data":{"type":"TEXT","notNull":false,"default":""},"row_count":{"type":"INTEGER","notNull":false,"default":0},"last_error":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"analytics_reports_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"analytics_reports_meta_type_idx","columns":["_meta_type"]},{"name":"analytics_reports_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"analytics_reports_property_id_idx","columns":["property_id"]}],"version":"22ce0f1c"},"importPath":"@happyvertical/smrt-analytics"}},"moduleType":"smrt","recipes":[{"id":"analytics.reports","className":"AnalyticsReportsRecipe","label":"Analytics","summary":"Save traffic reports for your websites and apps and get a plain-language read on the results.","synonyms":["analytics","traffic","pageviews","visitors","web stats","google analytics","plausible","matomo"],"models":["@happyvertical/smrt-analytics:AnalyticsProperty","@happyvertical/smrt-analytics:AnalyticsReport"],"nav":[{"label":"Analytics properties","model":"@happyvertical/smrt-analytics:AnalyticsProperty","icon":"home","description":"The websites and apps you track, and who tracks them."},{"label":"Analytics reports","model":"@happyvertical/smrt-analytics:AnalyticsReport","icon":"fileText","description":"Saved reports, how often they run and what they found."}],"requires":[],"section":{"id":"analytics","label":"Analytics","icon":"layers","description":"How your websites and apps are doing."},"options":{"@happyvertical/smrt-analytics:AnalyticsProperty":{"fields":{"name":{"visibility":"hidden"},"industryCategory":{"visibility":"advanced"},"serviceLevel":{"visibility":"advanced"},"lastSyncAt":{"locked":true}}},"@happyvertical/smrt-analytics:AnalyticsReport":{"fields":{"dimensionFilter":{"visibility":"advanced"},"metricFilter":{"visibility":"advanced"},"orderBy":{"visibility":"advanced"},"maxResults":{"visibility":"advanced"},"resultData":{"visibility":"hidden","locked":true},"rowCount":{"locked":true},"lastRunAt":{"locked":true},"nextRunAt":{"locked":true},"lastError":{"locked":true}}}},"help":{"markdown":"## Overview\\n\\nAnalytics keeps the traffic reports you care about for your websites and apps.\\nAdd a property for each site or app you track in Google Analytics 4, Plausible\\nor Matomo. Save a report on it that says what to count, what to break the\\nfigures down by, and over which dates. The rows each run returns are stored\\nwith the report, and the assistant can read them back to you in plain words.\\n\\nProperties and reports are kept on your server. Provider secrets are stored on\\nthe property and never sent to the assistant or returned in responses, but they\\nare not encrypted in the database.\\n\\n## Tasks\\n\\n### Add a property\\n\\n1. Create a new property.\\n2. Enter the **{field:AnalyticsProperty.displayName}** and pick the\\n **{field:AnalyticsProperty.provider}**.\\n3. Enter the **{field:AnalyticsProperty.externalId}** the analytics service\\n gives it.\\n4. For Google Analytics, enter the **{field:AnalyticsProperty.measurementId}**.\\n For Plausible or Matomo, enter the **{field:AnalyticsProperty.siteDomain}**.\\n5. Keep **{field:AnalyticsProperty.status}** on active while you want it\\n tracked.\\n\\n### Save a report\\n\\n1. Create a new report and choose the property in\\n **{field:AnalyticsReport.propertyId}**.\\n2. Give it a **{field:AnalyticsReport.name}**.\\n3. List what to break the figures down by in\\n **{field:AnalyticsReport.dimensions}** and what to count in\\n **{field:AnalyticsReport.metrics}**.\\n4. Set the period with **{field:AnalyticsReport.dateRangeStart}** and\\n **{field:AnalyticsReport.dateRangeEnd}**.\\n5. Pick **{field:AnalyticsReport.frequency}** to repeat it daily, weekly or\\n monthly.\\n\\n### Check what a report found\\n\\n1. **{field:AnalyticsReport.status}** says where the report stands, and\\n **{field:AnalyticsReport.lastRunAt}** when it last ran.\\n2. **{field:AnalyticsReport.rowCount}** shows how many rows came back.\\n3. If a run failed, **{field:AnalyticsReport.lastError}** says why.\\n\\n### Ask the assistant\\n\\n1. Ask about a saved report by name, for example \\"how did last week's traffic\\n report look?\\". When your app has the analytics tools switched on, the\\n assistant can list your saved reports and open one to read its figures.\\n2. A written summary of a report comes from your app, which sends the stored\\n rows to the AI provider as they are. Leave out dimensions that identify a\\n person.\\n3. For totals your own app calculates, such as orders or signups, ask for a\\n refreshed report. The assistant reads those with \`reports.query\`; see\\n Reports.\\n4. For a one-off question those reports do not answer, the assistant can\\n propose a report with \`reports.runtime.define\`. Nothing is saved until you\\n confirm it.\\n","fieldRefs":["AnalyticsProperty.displayName","AnalyticsProperty.externalId","AnalyticsProperty.measurementId","AnalyticsProperty.provider","AnalyticsProperty.siteDomain","AnalyticsProperty.status","AnalyticsReport.dateRangeEnd","AnalyticsReport.dateRangeStart","AnalyticsReport.dimensions","AnalyticsReport.frequency","AnalyticsReport.lastError","AnalyticsReport.lastRunAt","AnalyticsReport.metrics","AnalyticsReport.name","AnalyticsReport.propertyId","AnalyticsReport.rowCount","AnalyticsReport.status"]},"surfaces":[{"kind":"route","path":"/analytics/summary","export":"@happyvertical/smrt-analytics/svelte#AnalyticsSummary","label":"Traffic summary"}],"runtime":"server","demo":{"mode":"server","reasons":["The recipe declares runtime \\"server\\".","Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624)."]}}],"smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-prompts","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3624"],"via":["@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
6
6
  //#endregion
7
7
  //#region src/prompts.ts
8
8
  var smrtAnalyticsAnalyzePerformancePrompt = definePrompt({