{
  "schemaVersion": 1,
  "sensitiveFieldsExcluded": true,
  "generatedAt": "1970-01-01T00:00:00.000Z",
  "packageName": "@happyvertical/smrt-subscriptions",
  "packageVersion": "0.51.10",
  "sourceManifestPath": "dist/manifest.json",
  "agentDocPath": "AGENTS.md",
  "sourceHashes": {
    "manifest": "d9c89ea25672d0f645638052135887dcd8b374ff25c80880782c6b51dc976a8a",
    "packageJson": "9fa069a968b7f01594c203c913ac8a4861a093d54a9e9820715bc88ab3f6c592",
    "agents": "149a45af3f2a142302dae957dd80c29dc11c30a3f40520679aad1e0029f6c4f8"
  },
  "exports": [
    ".",
    "./manifest",
    "./manifest.json",
    "./svelte"
  ],
  "dependencies": {
    "@happyvertical/smrt-core": "workspace:*",
    "@happyvertical/smrt-tenancy": "workspace:*",
    "@happyvertical/smrt-ui": "workspace:*",
    "@happyvertical/sql": "catalog:",
    "@happyvertical/smrt-vitest": "workspace:*",
    "@sveltejs/package": "^2.5.8",
    "@types/node": "24.13.2",
    "svelte": "^5.56.4",
    "svelte-check": "^4.7.1",
    "typescript": "5.9.3",
    "vite": "8.1.4",
    "vitest": "4.1.10"
  },
  "smrtDependencies": [
    "@happyvertical/smrt-core",
    "@happyvertical/smrt-tenancy",
    "@happyvertical/smrt-ui",
    "@happyvertical/smrt-vitest"
  ],
  "sdkDependencies": [
    "@happyvertical/sql"
  ],
  "tags": [
    "billing",
    "cross-package",
    "entitlements",
    "multi-tenant",
    "smrt",
    "subscriptions"
  ],
  "risks": [
    "sensitive-fields-excluded"
  ],
  "objects": [
    {
      "name": "SubscriptionPlanCollection",
      "qualifiedName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection",
      "collection": "subscriptionplans",
      "tableName": "_smrt_subscription_plans",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtCollection",
      "fields": [],
      "relationships": [],
      "methods": [
        "findActive",
        "findByPlanKey",
        "findByStripePriceId"
      ],
      "methodSignatures": [
        {
          "name": "findActive",
          "async": true,
          "returns": "Promise<SubscriptionPlan[]>"
        },
        {
          "name": "findByPlanKey",
          "async": true,
          "params": [
            "planKey: string"
          ],
          "returns": "Promise<SubscriptionPlan | null>"
        },
        {
          "name": "findByStripePriceId",
          "async": true,
          "params": [
            "stripePriceId: string"
          ],
          "returns": "Promise<SubscriptionPlan | null>"
        }
      ],
      "surfaces": [
        {
          "kind": "api",
          "name": "subscriptionplans.findByPlanKey",
          "operation": "findByPlanKey",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection",
          "path": "/subscriptionplans/findByPlanKey",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "subscriptionplans.findActive",
          "operation": "findActive",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection",
          "path": "/subscriptionplans/findActive",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "subscriptionplans.findByStripePriceId",
          "operation": "findByStripePriceId",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection",
          "path": "/subscriptionplans/findByStripePriceId",
          "method": "POST"
        },
        {
          "kind": "cli",
          "name": "subscriptionplancollection_findByPlanKey",
          "operation": "findByPlanKey",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection"
        },
        {
          "kind": "cli",
          "name": "subscriptionplancollection_findActive",
          "operation": "findActive",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection"
        },
        {
          "kind": "cli",
          "name": "subscriptionplancollection_findByStripePriceId",
          "operation": "findByStripePriceId",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection"
        },
        {
          "kind": "mcp",
          "name": "subscriptionplancollection_findbyplankey",
          "operation": "findByPlanKey",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection"
        },
        {
          "kind": "mcp",
          "name": "subscriptionplancollection_findactive",
          "operation": "findActive",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection"
        },
        {
          "kind": "mcp",
          "name": "subscriptionplancollection_findbystripepriceid",
          "operation": "findByStripePriceId",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection"
        }
      ],
      "relationshipFeatures": [
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    },
    {
      "name": "TenantSubscriptionCollection",
      "qualifiedName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection",
      "collection": "tenantsubscriptions",
      "tableName": "_smrt_tenant_subscriptions",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtCollection",
      "fields": [],
      "relationships": [],
      "methods": [
        "findByStripeSubscriptionId",
        "findByTenant",
        "findCurrentForSubscriber",
        "findCurrentForTenant"
      ],
      "methodSignatures": [
        {
          "name": "findByStripeSubscriptionId",
          "async": true,
          "params": [
            "stripeSubscriptionId: string"
          ],
          "returns": "Promise<TenantSubscription | null>"
        },
        {
          "name": "findByTenant",
          "async": true,
          "params": [
            "tenantId: string"
          ],
          "returns": "Promise<TenantSubscription[]>"
        },
        {
          "name": "findCurrentForSubscriber",
          "async": true,
          "params": [
            "subscriber: Subscriber",
            "now?: any"
          ],
          "returns": "Promise<TenantSubscription | null>"
        },
        {
          "name": "findCurrentForTenant",
          "async": true,
          "params": [
            "tenantId: string",
            "now?: any"
          ],
          "returns": "Promise<TenantSubscription | null>"
        }
      ],
      "surfaces": [
        {
          "kind": "api",
          "name": "tenantsubscriptions.findByTenant",
          "operation": "findByTenant",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection",
          "path": "/tenantsubscriptions/findByTenant",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "tenantsubscriptions.findCurrentForTenant",
          "operation": "findCurrentForTenant",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection",
          "path": "/tenantsubscriptions/findCurrentForTenant",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "tenantsubscriptions.findCurrentForSubscriber",
          "operation": "findCurrentForSubscriber",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection",
          "path": "/tenantsubscriptions/findCurrentForSubscriber",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "tenantsubscriptions.findByStripeSubscriptionId",
          "operation": "findByStripeSubscriptionId",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection",
          "path": "/tenantsubscriptions/findByStripeSubscriptionId",
          "method": "POST"
        },
        {
          "kind": "cli",
          "name": "tenantsubscriptioncollection_findByTenant",
          "operation": "findByTenant",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
        },
        {
          "kind": "cli",
          "name": "tenantsubscriptioncollection_findCurrentForTenant",
          "operation": "findCurrentForTenant",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
        },
        {
          "kind": "cli",
          "name": "tenantsubscriptioncollection_findCurrentForSubscriber",
          "operation": "findCurrentForSubscriber",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
        },
        {
          "kind": "cli",
          "name": "tenantsubscriptioncollection_findByStripeSubscriptionId",
          "operation": "findByStripeSubscriptionId",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
        },
        {
          "kind": "mcp",
          "name": "tenantsubscriptioncollection_findbytenant",
          "operation": "findByTenant",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
        },
        {
          "kind": "mcp",
          "name": "tenantsubscriptioncollection_findcurrentfortenant",
          "operation": "findCurrentForTenant",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
        },
        {
          "kind": "mcp",
          "name": "tenantsubscriptioncollection_findcurrentforsubscriber",
          "operation": "findCurrentForSubscriber",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
        },
        {
          "kind": "mcp",
          "name": "tenantsubscriptioncollection_findbystripesubscriptionid",
          "operation": "findByStripeSubscriptionId",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
        }
      ],
      "relationshipFeatures": [
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    },
    {
      "name": "TenantUsageMetricCollection",
      "qualifiedName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection",
      "collection": "tenantusagemetrics",
      "tableName": "_smrt_tenant_usage_metrics",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtCollection",
      "fields": [],
      "relationships": [],
      "methods": [
        "findByTenantAndMetric",
        "recordUsage",
        "summarizeTenantAiUsage",
        "summarizeUsage",
        "summarizeUsageBatch"
      ],
      "methodSignatures": [
        {
          "name": "findByTenantAndMetric",
          "async": true,
          "params": [
            "tenantId: string",
            "metricKey: string"
          ],
          "returns": "Promise<TenantUsageMetric[]>"
        },
        {
          "name": "recordUsage",
          "async": true,
          "params": [
            "options: RecordUsageOptions"
          ],
          "returns": "Promise<TenantUsageMetric>"
        },
        {
          "name": "summarizeTenantAiUsage",
          "async": true,
          "params": [
            "options: SummarizeAiUsageOptions"
          ],
          "returns": "Promise<AiUsageSummary>"
        },
        {
          "name": "summarizeUsage",
          "async": true,
          "params": [
            "options: SummarizeUsageOptions"
          ],
          "returns": "Promise<UsageSummary>"
        },
        {
          "name": "summarizeUsageBatch",
          "async": true,
          "params": [
            "options: SummarizeUsageBatchOptions"
          ],
          "returns": "Promise<UsageSummary[]>"
        }
      ],
      "surfaces": [
        {
          "kind": "api",
          "name": "tenantusagemetrics.recordUsage",
          "operation": "recordUsage",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection",
          "path": "/tenantusagemetrics/recordUsage",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "tenantusagemetrics.findByTenantAndMetric",
          "operation": "findByTenantAndMetric",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection",
          "path": "/tenantusagemetrics/findByTenantAndMetric",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "tenantusagemetrics.summarizeUsage",
          "operation": "summarizeUsage",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection",
          "path": "/tenantusagemetrics/summarizeUsage",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "tenantusagemetrics.summarizeUsageBatch",
          "operation": "summarizeUsageBatch",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection",
          "path": "/tenantusagemetrics/summarizeUsageBatch",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "tenantusagemetrics.summarizeTenantAiUsage",
          "operation": "summarizeTenantAiUsage",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection",
          "path": "/tenantusagemetrics/summarizeTenantAiUsage",
          "method": "POST"
        },
        {
          "kind": "cli",
          "name": "tenantusagemetriccollection_recordUsage",
          "operation": "recordUsage",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
        },
        {
          "kind": "cli",
          "name": "tenantusagemetriccollection_findByTenantAndMetric",
          "operation": "findByTenantAndMetric",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
        },
        {
          "kind": "cli",
          "name": "tenantusagemetriccollection_summarizeUsage",
          "operation": "summarizeUsage",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
        },
        {
          "kind": "cli",
          "name": "tenantusagemetriccollection_summarizeUsageBatch",
          "operation": "summarizeUsageBatch",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
        },
        {
          "kind": "cli",
          "name": "tenantusagemetriccollection_summarizeTenantAiUsage",
          "operation": "summarizeTenantAiUsage",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
        },
        {
          "kind": "mcp",
          "name": "tenantusagemetriccollection_recordusage",
          "operation": "recordUsage",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
        },
        {
          "kind": "mcp",
          "name": "tenantusagemetriccollection_findbytenantandmetric",
          "operation": "findByTenantAndMetric",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
        },
        {
          "kind": "mcp",
          "name": "tenantusagemetriccollection_summarizeusage",
          "operation": "summarizeUsage",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
        },
        {
          "kind": "mcp",
          "name": "tenantusagemetriccollection_summarizeusagebatch",
          "operation": "summarizeUsageBatch",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
        },
        {
          "kind": "mcp",
          "name": "tenantusagemetriccollection_summarizetenantaiusage",
          "operation": "summarizeTenantAiUsage",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
        }
      ],
      "relationshipFeatures": [
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    },
    {
      "name": "SubscriptionPlan",
      "qualifiedName": "@happyvertical/smrt-subscriptions:SubscriptionPlan",
      "collection": "subscriptionplans",
      "tableName": "_smrt_subscription_plans",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtObject",
      "fields": [
        {
          "name": "tenantId",
          "type": "text",
          "required": false,
          "columnType": "UUID"
        },
        {
          "name": "planKey",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "name",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "description",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "status",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "active"
        },
        {
          "name": "sortOrder",
          "type": "integer",
          "required": false,
          "columnType": "INTEGER",
          "default": 0
        },
        {
          "name": "priceAmount",
          "type": "integer",
          "required": false,
          "columnType": "INTEGER",
          "default": 0
        },
        {
          "name": "currency",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "USD"
        },
        {
          "name": "billingInterval",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "month"
        },
        {
          "name": "externalProvider",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "stripe"
        },
        {
          "name": "stripeProductId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "stripePriceId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "features",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "[]"
        },
        {
          "name": "thresholds",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "[]"
        },
        {
          "name": "metadata",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "{}"
        }
      ],
      "relationships": [],
      "methods": [
        "getFeatureGrants",
        "getFeatureKeys",
        "getMetadata",
        "getThresholds",
        "isActive",
        "setFeatureGrants",
        "setMetadata",
        "setThresholds"
      ],
      "methodSignatures": [
        {
          "name": "getFeatureGrants",
          "returns": "PlanFeatureGrant[]"
        },
        {
          "name": "getFeatureKeys",
          "returns": "string[]"
        },
        {
          "name": "getMetadata",
          "returns": "JsonObject"
        },
        {
          "name": "getThresholds",
          "returns": "PlanThreshold[]"
        },
        {
          "name": "isActive",
          "returns": "boolean"
        },
        {
          "name": "setFeatureGrants",
          "params": [
            "grants: Array<string | PlanFeatureGrant>"
          ],
          "returns": "void"
        },
        {
          "name": "setMetadata",
          "params": [
            "metadata: JsonObject"
          ],
          "returns": "void"
        },
        {
          "name": "setThresholds",
          "params": [
            "thresholds: PlanThreshold[]"
          ],
          "returns": "void"
        }
      ],
      "tenant": {
        "scoped": true,
        "mode": "optional",
        "field": "tenantId"
      },
      "conflictColumns": [
        "plan_key"
      ],
      "surfaces": [
        {
          "kind": "api",
          "name": "subscriptionplans.list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan",
          "path": "/subscriptionplans",
          "method": "GET"
        },
        {
          "kind": "api",
          "name": "subscriptionplans.get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan",
          "path": "/subscriptionplans/[id]",
          "method": "GET"
        },
        {
          "kind": "api",
          "name": "subscriptionplans.create",
          "operation": "create",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan",
          "path": "/subscriptionplans",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "subscriptionplans.update",
          "operation": "update",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan",
          "path": "/subscriptionplans/[id]",
          "method": "PATCH"
        },
        {
          "kind": "cli",
          "name": "subscriptionplan_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "cli",
          "name": "subscriptionplan_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "cli",
          "name": "subscriptionplan_create",
          "operation": "create",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "cli",
          "name": "subscriptionplan_update",
          "operation": "update",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "cli",
          "name": "subscriptionplan_delete",
          "operation": "delete",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "cli",
          "name": "subscriptionplan_isActive",
          "operation": "isActive",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "cli",
          "name": "subscriptionplan_getFeatureGrants",
          "operation": "getFeatureGrants",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "cli",
          "name": "subscriptionplan_setFeatureGrants",
          "operation": "setFeatureGrants",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "cli",
          "name": "subscriptionplan_getFeatureKeys",
          "operation": "getFeatureKeys",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "cli",
          "name": "subscriptionplan_getThresholds",
          "operation": "getThresholds",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "cli",
          "name": "subscriptionplan_setThresholds",
          "operation": "setThresholds",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "cli",
          "name": "subscriptionplan_getMetadata",
          "operation": "getMetadata",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "cli",
          "name": "subscriptionplan_setMetadata",
          "operation": "setMetadata",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "mcp",
          "name": "subscriptionplan_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "mcp",
          "name": "subscriptionplan_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        }
      ],
      "withheldSurfaces": [
        {
          "kind": "api",
          "operation": "getFeatureGrants",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "api",
          "operation": "getFeatureKeys",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "api",
          "operation": "getMetadata",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "api",
          "operation": "getThresholds",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "api",
          "operation": "isActive",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "api",
          "operation": "setFeatureGrants",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "api",
          "operation": "setMetadata",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        },
        {
          "kind": "api",
          "operation": "setThresholds",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
        }
      ],
      "relationshipFeatures": [
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    },
    {
      "name": "TenantSubscription",
      "qualifiedName": "@happyvertical/smrt-subscriptions:TenantSubscription",
      "collection": "tenantsubscriptions",
      "tableName": "_smrt_tenant_subscriptions",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtObject",
      "fields": [
        {
          "name": "tenantId",
          "type": "text",
          "required": true,
          "columnType": "UUID"
        },
        {
          "name": "subscriberKind",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "tenant"
        },
        {
          "name": "subscriberExternalId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "planId",
          "type": "foreignKey",
          "required": false,
          "related": "SubscriptionPlan",
          "columnType": "UUID"
        },
        {
          "name": "status",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "incomplete"
        },
        {
          "name": "startedAt",
          "type": "datetime",
          "required": false,
          "columnType": "TIMESTAMP"
        },
        {
          "name": "currentPeriodStart",
          "type": "datetime",
          "required": false,
          "columnType": "TIMESTAMP"
        },
        {
          "name": "currentPeriodEnd",
          "type": "datetime",
          "required": false,
          "columnType": "TIMESTAMP"
        },
        {
          "name": "trialEndsAt",
          "type": "datetime",
          "required": false,
          "columnType": "TIMESTAMP"
        },
        {
          "name": "cancelAtPeriodEnd",
          "type": "boolean",
          "required": false,
          "columnType": "BOOLEAN",
          "default": false
        },
        {
          "name": "canceledAt",
          "type": "datetime",
          "required": false,
          "columnType": "TIMESTAMP"
        },
        {
          "name": "externalProvider",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "stripe"
        },
        {
          "name": "stripeCustomerId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "stripeSubscriptionId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "stripeCheckoutSessionId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "metadata",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "{}"
        }
      ],
      "relationships": [
        {
          "name": "planId",
          "type": "foreignKey",
          "required": false,
          "related": "SubscriptionPlan",
          "columnType": "UUID"
        }
      ],
      "methods": [
        "getMetadata",
        "getSubscriber",
        "isEntitled",
        "setMetadata"
      ],
      "methodSignatures": [
        {
          "name": "getMetadata",
          "returns": "JsonObject"
        },
        {
          "name": "getSubscriber",
          "returns": "Subscriber | null"
        },
        {
          "name": "isEntitled",
          "params": [
            "now?: any"
          ],
          "returns": "boolean"
        },
        {
          "name": "setMetadata",
          "params": [
            "metadata: JsonObject"
          ],
          "returns": "void"
        }
      ],
      "tenant": {
        "scoped": true,
        "mode": "required",
        "field": "tenantId"
      },
      "conflictColumns": [
        "tenant_id",
        "subscriber_kind",
        "subscriber_external_id"
      ],
      "surfaces": [
        {
          "kind": "api",
          "name": "tenantsubscriptions.list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription",
          "path": "/tenantsubscriptions",
          "method": "GET"
        },
        {
          "kind": "api",
          "name": "tenantsubscriptions.get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription",
          "path": "/tenantsubscriptions/[id]",
          "method": "GET"
        },
        {
          "kind": "api",
          "name": "tenantsubscriptions.create",
          "operation": "create",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription",
          "path": "/tenantsubscriptions",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "tenantsubscriptions.update",
          "operation": "update",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription",
          "path": "/tenantsubscriptions/[id]",
          "method": "PATCH"
        },
        {
          "kind": "cli",
          "name": "tenantsubscription_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        },
        {
          "kind": "cli",
          "name": "tenantsubscription_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        },
        {
          "kind": "cli",
          "name": "tenantsubscription_create",
          "operation": "create",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        },
        {
          "kind": "cli",
          "name": "tenantsubscription_update",
          "operation": "update",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        },
        {
          "kind": "cli",
          "name": "tenantsubscription_delete",
          "operation": "delete",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        },
        {
          "kind": "cli",
          "name": "tenantsubscription_isEntitled",
          "operation": "isEntitled",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        },
        {
          "kind": "cli",
          "name": "tenantsubscription_getSubscriber",
          "operation": "getSubscriber",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        },
        {
          "kind": "cli",
          "name": "tenantsubscription_getMetadata",
          "operation": "getMetadata",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        },
        {
          "kind": "cli",
          "name": "tenantsubscription_setMetadata",
          "operation": "setMetadata",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        },
        {
          "kind": "mcp",
          "name": "tenantsubscription_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        },
        {
          "kind": "mcp",
          "name": "tenantsubscription_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        }
      ],
      "withheldSurfaces": [
        {
          "kind": "api",
          "operation": "getMetadata",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        },
        {
          "kind": "api",
          "operation": "getSubscriber",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        },
        {
          "kind": "api",
          "operation": "isEntitled",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        },
        {
          "kind": "api",
          "operation": "setMetadata",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
        }
      ],
      "relationshipFeatures": [
        "foreignKey",
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    },
    {
      "name": "TenantUsageMetric",
      "qualifiedName": "@happyvertical/smrt-subscriptions:TenantUsageMetric",
      "collection": "tenantusagemetrics",
      "tableName": "_smrt_tenant_usage_metrics",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtObject",
      "fields": [
        {
          "name": "tenantId",
          "type": "text",
          "required": true,
          "columnType": "UUID"
        },
        {
          "name": "subscriberKind",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "tenant"
        },
        {
          "name": "subscriberExternalId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "metricKey",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "quantity",
          "type": "decimal",
          "required": false,
          "columnType": "REAL",
          "default": 0
        },
        {
          "name": "windowStart",
          "type": "datetime",
          "required": false,
          "columnType": "TIMESTAMP"
        },
        {
          "name": "windowEnd",
          "type": "datetime",
          "required": false,
          "columnType": "TIMESTAMP"
        },
        {
          "name": "source",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "sourceId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "projectId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "workRefType",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "workRefId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "provider",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "dimensions",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "{}"
        }
      ],
      "relationships": [],
      "methods": [
        "getDimensions",
        "getSubscriber",
        "setDimensions"
      ],
      "methodSignatures": [
        {
          "name": "getDimensions",
          "returns": "JsonObject"
        },
        {
          "name": "getSubscriber",
          "returns": "Subscriber | null"
        },
        {
          "name": "setDimensions",
          "params": [
            "dimensions: JsonObject"
          ],
          "returns": "void"
        }
      ],
      "tenant": {
        "scoped": true,
        "mode": "required",
        "field": "tenantId"
      },
      "conflictColumns": [
        "tenant_id",
        "slug",
        "context"
      ],
      "surfaces": [
        {
          "kind": "api",
          "name": "tenantusagemetrics.list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric",
          "path": "/tenantusagemetrics",
          "method": "GET"
        },
        {
          "kind": "api",
          "name": "tenantusagemetrics.get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric",
          "path": "/tenantusagemetrics/[id]",
          "method": "GET"
        },
        {
          "kind": "api",
          "name": "tenantusagemetrics.create",
          "operation": "create",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric",
          "path": "/tenantusagemetrics",
          "method": "POST"
        },
        {
          "kind": "cli",
          "name": "tenantusagemetric_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
        },
        {
          "kind": "cli",
          "name": "tenantusagemetric_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
        },
        {
          "kind": "cli",
          "name": "tenantusagemetric_create",
          "operation": "create",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
        },
        {
          "kind": "mcp",
          "name": "tenantusagemetric_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
        },
        {
          "kind": "mcp",
          "name": "tenantusagemetric_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
        }
      ],
      "withheldSurfaces": [
        {
          "kind": "api",
          "operation": "getDimensions",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
        },
        {
          "kind": "api",
          "operation": "getSubscriber",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
        },
        {
          "kind": "api",
          "operation": "setDimensions",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
        }
      ],
      "relationshipFeatures": [
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    },
    {
      "name": "PricingRule",
      "qualifiedName": "@happyvertical/smrt-subscriptions:PricingRule",
      "collection": "pricingrules",
      "tableName": "_smrt_pricing_rules",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtObject",
      "fields": [
        {
          "name": "tenantId",
          "type": "text",
          "required": true,
          "columnType": "UUID"
        },
        {
          "name": "ruleKey",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "metricKey",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "serviceKey",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "strategy",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "fixed_unit"
        },
        {
          "name": "currency",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "USD"
        },
        {
          "name": "effectiveFrom",
          "type": "datetime",
          "required": false,
          "columnType": "TIMESTAMP"
        },
        {
          "name": "effectiveTo",
          "type": "datetime",
          "required": false,
          "columnType": "TIMESTAMP"
        },
        {
          "name": "priority",
          "type": "integer",
          "required": false,
          "columnType": "INTEGER",
          "default": 0
        },
        {
          "name": "terms",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "{}"
        },
        {
          "name": "active",
          "type": "boolean",
          "required": false,
          "columnType": "BOOLEAN",
          "default": true
        }
      ],
      "relationships": [],
      "methods": [
        "getTerms",
        "setTerms"
      ],
      "methodSignatures": [
        {
          "name": "getTerms",
          "returns": "Record<string, unknown>"
        },
        {
          "name": "setTerms",
          "params": [
            "value: Record<string, unknown>"
          ],
          "returns": "void"
        }
      ],
      "tenant": {
        "scoped": true,
        "mode": "required",
        "field": "tenantId"
      },
      "conflictColumns": [
        "tenant_id",
        "slug",
        "context"
      ],
      "surfaces": [
        {
          "kind": "api",
          "name": "pricingrules.list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
          "path": "/pricingrules",
          "method": "GET"
        },
        {
          "kind": "api",
          "name": "pricingrules.get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
          "path": "/pricingrules/[id]",
          "method": "GET"
        },
        {
          "kind": "api",
          "name": "pricingrules.create",
          "operation": "create",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
          "path": "/pricingrules",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "pricingrules.update",
          "operation": "update",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
          "path": "/pricingrules/[id]",
          "method": "PATCH"
        },
        {
          "kind": "api",
          "name": "pricingrules.delete",
          "operation": "delete",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
          "path": "/pricingrules/[id]",
          "method": "DELETE"
        },
        {
          "kind": "api",
          "name": "pricingrules.getTerms",
          "operation": "getTerms",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
          "path": "/pricingrules/[id]/getTerms",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "pricingrules.setTerms",
          "operation": "setTerms",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
          "path": "/pricingrules/[id]/setTerms",
          "method": "POST"
        },
        {
          "kind": "cli",
          "name": "pricingrule_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        },
        {
          "kind": "cli",
          "name": "pricingrule_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        },
        {
          "kind": "cli",
          "name": "pricingrule_create",
          "operation": "create",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        },
        {
          "kind": "cli",
          "name": "pricingrule_update",
          "operation": "update",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        },
        {
          "kind": "cli",
          "name": "pricingrule_delete",
          "operation": "delete",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        },
        {
          "kind": "cli",
          "name": "pricingrule_getTerms",
          "operation": "getTerms",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        },
        {
          "kind": "cli",
          "name": "pricingrule_setTerms",
          "operation": "setTerms",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        },
        {
          "kind": "mcp",
          "name": "pricingrule_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        },
        {
          "kind": "mcp",
          "name": "pricingrule_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        },
        {
          "kind": "mcp",
          "name": "pricingrule_create",
          "operation": "create",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        },
        {
          "kind": "mcp",
          "name": "pricingrule_update",
          "operation": "update",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        },
        {
          "kind": "mcp",
          "name": "pricingrule_delete",
          "operation": "delete",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        },
        {
          "kind": "mcp",
          "name": "pricingrule_getterms",
          "operation": "getTerms",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        },
        {
          "kind": "mcp",
          "name": "pricingrule_setterms",
          "operation": "setTerms",
          "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
        }
      ],
      "relationshipFeatures": [
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    },
    {
      "name": "ClientCharge",
      "qualifiedName": "@happyvertical/smrt-subscriptions:ClientCharge",
      "collection": "clientcharges",
      "tableName": "_smrt_client_charges",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtObject",
      "fields": [
        {
          "name": "tenantId",
          "type": "text",
          "required": true,
          "columnType": "UUID"
        },
        {
          "name": "usageEventId",
          "type": "foreignKey",
          "required": false,
          "related": "TenantUsageMetric",
          "columnType": "UUID"
        },
        {
          "name": "subscriberKind",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "tenant"
        },
        {
          "name": "subscriberExternalId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "projectId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "workRefType",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "workRefId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "provider",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "serviceKey",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "metricKey",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "quantity",
          "type": "decimal",
          "required": false,
          "columnType": "REAL",
          "default": 0
        },
        {
          "name": "amount",
          "type": "integer",
          "required": false,
          "columnType": "INTEGER",
          "default": 0
        },
        {
          "name": "currency",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "USD"
        },
        {
          "name": "pricingRuleId",
          "type": "foreignKey",
          "required": false,
          "related": "PricingRule",
          "columnType": "UUID"
        },
        {
          "name": "pricingSnapshot",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "{}"
        },
        {
          "name": "status",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "draft"
        },
        {
          "name": "approvedAt",
          "type": "datetime",
          "required": false,
          "columnType": "TIMESTAMP"
        }
      ],
      "relationships": [
        {
          "name": "usageEventId",
          "type": "foreignKey",
          "required": false,
          "related": "TenantUsageMetric",
          "columnType": "UUID"
        },
        {
          "name": "pricingRuleId",
          "type": "foreignKey",
          "required": false,
          "related": "PricingRule",
          "columnType": "UUID"
        }
      ],
      "methods": [
        "getPricingSnapshot"
      ],
      "methodSignatures": [
        {
          "name": "getPricingSnapshot",
          "returns": "Record<string, unknown>"
        }
      ],
      "tenant": {
        "scoped": true,
        "mode": "required",
        "field": "tenantId"
      },
      "conflictColumns": [
        "usage_event_id"
      ],
      "surfaces": [
        {
          "kind": "api",
          "name": "clientcharges.list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:ClientCharge",
          "path": "/clientcharges",
          "method": "GET"
        },
        {
          "kind": "api",
          "name": "clientcharges.get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:ClientCharge",
          "path": "/clientcharges/[id]",
          "method": "GET"
        },
        {
          "kind": "cli",
          "name": "clientcharge_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
        },
        {
          "kind": "cli",
          "name": "clientcharge_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
        },
        {
          "kind": "mcp",
          "name": "clientcharge_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
        },
        {
          "kind": "mcp",
          "name": "clientcharge_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
        }
      ],
      "withheldSurfaces": [
        {
          "kind": "api",
          "operation": "getPricingSnapshot",
          "code": "not-included",
          "reason": "not listed in api.include",
          "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
        }
      ],
      "relationshipFeatures": [
        "foreignKey",
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    },
    {
      "name": "BillingAdjustment",
      "qualifiedName": "@happyvertical/smrt-subscriptions:BillingAdjustment",
      "collection": "billingadjustments",
      "tableName": "_smrt_billing_adjustments",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtObject",
      "fields": [
        {
          "name": "tenantId",
          "type": "text",
          "required": true,
          "columnType": "UUID"
        },
        {
          "name": "clientChargeId",
          "type": "foreignKey",
          "required": false,
          "related": "ClientCharge",
          "columnType": "UUID"
        },
        {
          "name": "amount",
          "type": "integer",
          "required": false,
          "columnType": "INTEGER",
          "default": 0
        },
        {
          "name": "currency",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "USD"
        },
        {
          "name": "reason",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "source",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "sourceId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "createdBy",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        }
      ],
      "relationships": [
        {
          "name": "clientChargeId",
          "type": "foreignKey",
          "required": false,
          "related": "ClientCharge",
          "columnType": "UUID"
        }
      ],
      "methods": [],
      "tenant": {
        "scoped": true,
        "mode": "required",
        "field": "tenantId"
      },
      "conflictColumns": [
        "tenant_id",
        "slug",
        "context"
      ],
      "surfaces": [
        {
          "kind": "api",
          "name": "billingadjustments.list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment",
          "path": "/billingadjustments",
          "method": "GET"
        },
        {
          "kind": "api",
          "name": "billingadjustments.get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment",
          "path": "/billingadjustments/[id]",
          "method": "GET"
        },
        {
          "kind": "cli",
          "name": "billingadjustment_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
        },
        {
          "kind": "cli",
          "name": "billingadjustment_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
        },
        {
          "kind": "mcp",
          "name": "billingadjustment_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
        },
        {
          "kind": "mcp",
          "name": "billingadjustment_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
        }
      ],
      "relationshipFeatures": [
        "foreignKey",
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    },
    {
      "name": "SpendingPolicy",
      "qualifiedName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
      "collection": "spendingpolicies",
      "tableName": "_smrt_spending_policies",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtObject",
      "fields": [
        {
          "name": "tenantId",
          "type": "text",
          "required": true,
          "columnType": "UUID"
        },
        {
          "name": "name",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "subscriberKind",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "subscriberExternalId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "projectId",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "serviceKey",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "metricKey",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": ""
        },
        {
          "name": "period",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "month"
        },
        {
          "name": "rollingSeconds",
          "type": "integer",
          "required": false,
          "columnType": "INTEGER",
          "default": 0
        },
        {
          "name": "limitAmount",
          "type": "integer",
          "required": false,
          "columnType": "INTEGER",
          "default": 0
        },
        {
          "name": "currency",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "USD"
        },
        {
          "name": "behavior",
          "type": "text",
          "required": false,
          "columnType": "TEXT",
          "default": "observe"
        },
        {
          "name": "priority",
          "type": "integer",
          "required": false,
          "columnType": "INTEGER",
          "default": 0
        },
        {
          "name": "active",
          "type": "boolean",
          "required": false,
          "columnType": "BOOLEAN",
          "default": true
        }
      ],
      "relationships": [],
      "methods": [],
      "tenant": {
        "scoped": true,
        "mode": "required",
        "field": "tenantId"
      },
      "conflictColumns": [
        "tenant_id",
        "subscriber_kind",
        "subscriber_external_id",
        "project_id",
        "service_key",
        "metric_key",
        "period",
        "name"
      ],
      "surfaces": [
        {
          "kind": "api",
          "name": "spendingpolicies.list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
          "path": "/spendingpolicies",
          "method": "GET"
        },
        {
          "kind": "api",
          "name": "spendingpolicies.get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
          "path": "/spendingpolicies/[id]",
          "method": "GET"
        },
        {
          "kind": "api",
          "name": "spendingpolicies.create",
          "operation": "create",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
          "path": "/spendingpolicies",
          "method": "POST"
        },
        {
          "kind": "api",
          "name": "spendingpolicies.update",
          "operation": "update",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
          "path": "/spendingpolicies/[id]",
          "method": "PATCH"
        },
        {
          "kind": "api",
          "name": "spendingpolicies.delete",
          "operation": "delete",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
          "path": "/spendingpolicies/[id]",
          "method": "DELETE"
        },
        {
          "kind": "cli",
          "name": "spendingpolicy_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
        },
        {
          "kind": "cli",
          "name": "spendingpolicy_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
        },
        {
          "kind": "cli",
          "name": "spendingpolicy_create",
          "operation": "create",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
        },
        {
          "kind": "cli",
          "name": "spendingpolicy_update",
          "operation": "update",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
        },
        {
          "kind": "cli",
          "name": "spendingpolicy_delete",
          "operation": "delete",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
        },
        {
          "kind": "mcp",
          "name": "spendingpolicy_list",
          "operation": "list",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
        },
        {
          "kind": "mcp",
          "name": "spendingpolicy_get",
          "operation": "get",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
        },
        {
          "kind": "mcp",
          "name": "spendingpolicy_create",
          "operation": "create",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
        },
        {
          "kind": "mcp",
          "name": "spendingpolicy_update",
          "operation": "update",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
        },
        {
          "kind": "mcp",
          "name": "spendingpolicy_delete",
          "operation": "delete",
          "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
        }
      ],
      "relationshipFeatures": [
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    },
    {
      "name": "PricingRuleCollection",
      "qualifiedName": "@happyvertical/smrt-subscriptions:PricingRuleCollection",
      "collection": "pricingrules",
      "tableName": "_smrt_pricing_rules",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtCollection",
      "fields": [],
      "relationships": [],
      "methods": [],
      "surfaces": [],
      "relationshipFeatures": [
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    },
    {
      "name": "ClientChargeCollection",
      "qualifiedName": "@happyvertical/smrt-subscriptions:ClientChargeCollection",
      "collection": "clientcharges",
      "tableName": "_smrt_client_charges",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtCollection",
      "fields": [],
      "relationships": [],
      "methods": [],
      "surfaces": [],
      "relationshipFeatures": [
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    },
    {
      "name": "BillingAdjustmentCollection",
      "qualifiedName": "@happyvertical/smrt-subscriptions:BillingAdjustmentCollection",
      "collection": "billingadjustments",
      "tableName": "_smrt_billing_adjustments",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtCollection",
      "fields": [],
      "relationships": [],
      "methods": [],
      "surfaces": [],
      "relationshipFeatures": [
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    },
    {
      "name": "SpendingPolicyCollection",
      "qualifiedName": "@happyvertical/smrt-subscriptions:SpendingPolicyCollection",
      "collection": "spendingpolicies",
      "tableName": "_smrt_spending_policies",
      "packageName": "@happyvertical/smrt-subscriptions",
      "extends": "SmrtCollection",
      "fields": [],
      "relationships": [],
      "methods": [],
      "surfaces": [],
      "relationshipFeatures": [
        "uuidColumns"
      ],
      "tags": [],
      "risks": []
    }
  ],
  "surfaces": [
    {
      "kind": "api",
      "name": "subscriptionplans.findByPlanKey",
      "operation": "findByPlanKey",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection",
      "path": "/subscriptionplans/findByPlanKey",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "subscriptionplans.findActive",
      "operation": "findActive",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection",
      "path": "/subscriptionplans/findActive",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "subscriptionplans.findByStripePriceId",
      "operation": "findByStripePriceId",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection",
      "path": "/subscriptionplans/findByStripePriceId",
      "method": "POST"
    },
    {
      "kind": "cli",
      "name": "subscriptionplancollection_findByPlanKey",
      "operation": "findByPlanKey",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection"
    },
    {
      "kind": "cli",
      "name": "subscriptionplancollection_findActive",
      "operation": "findActive",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection"
    },
    {
      "kind": "cli",
      "name": "subscriptionplancollection_findByStripePriceId",
      "operation": "findByStripePriceId",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection"
    },
    {
      "kind": "mcp",
      "name": "subscriptionplancollection_findbyplankey",
      "operation": "findByPlanKey",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection"
    },
    {
      "kind": "mcp",
      "name": "subscriptionplancollection_findactive",
      "operation": "findActive",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection"
    },
    {
      "kind": "mcp",
      "name": "subscriptionplancollection_findbystripepriceid",
      "operation": "findByStripePriceId",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlanCollection"
    },
    {
      "kind": "api",
      "name": "tenantsubscriptions.findByTenant",
      "operation": "findByTenant",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection",
      "path": "/tenantsubscriptions/findByTenant",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "tenantsubscriptions.findCurrentForTenant",
      "operation": "findCurrentForTenant",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection",
      "path": "/tenantsubscriptions/findCurrentForTenant",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "tenantsubscriptions.findCurrentForSubscriber",
      "operation": "findCurrentForSubscriber",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection",
      "path": "/tenantsubscriptions/findCurrentForSubscriber",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "tenantsubscriptions.findByStripeSubscriptionId",
      "operation": "findByStripeSubscriptionId",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection",
      "path": "/tenantsubscriptions/findByStripeSubscriptionId",
      "method": "POST"
    },
    {
      "kind": "cli",
      "name": "tenantsubscriptioncollection_findByTenant",
      "operation": "findByTenant",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
    },
    {
      "kind": "cli",
      "name": "tenantsubscriptioncollection_findCurrentForTenant",
      "operation": "findCurrentForTenant",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
    },
    {
      "kind": "cli",
      "name": "tenantsubscriptioncollection_findCurrentForSubscriber",
      "operation": "findCurrentForSubscriber",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
    },
    {
      "kind": "cli",
      "name": "tenantsubscriptioncollection_findByStripeSubscriptionId",
      "operation": "findByStripeSubscriptionId",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
    },
    {
      "kind": "mcp",
      "name": "tenantsubscriptioncollection_findbytenant",
      "operation": "findByTenant",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
    },
    {
      "kind": "mcp",
      "name": "tenantsubscriptioncollection_findcurrentfortenant",
      "operation": "findCurrentForTenant",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
    },
    {
      "kind": "mcp",
      "name": "tenantsubscriptioncollection_findcurrentforsubscriber",
      "operation": "findCurrentForSubscriber",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
    },
    {
      "kind": "mcp",
      "name": "tenantsubscriptioncollection_findbystripesubscriptionid",
      "operation": "findByStripeSubscriptionId",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscriptionCollection"
    },
    {
      "kind": "api",
      "name": "tenantusagemetrics.recordUsage",
      "operation": "recordUsage",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection",
      "path": "/tenantusagemetrics/recordUsage",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "tenantusagemetrics.findByTenantAndMetric",
      "operation": "findByTenantAndMetric",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection",
      "path": "/tenantusagemetrics/findByTenantAndMetric",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "tenantusagemetrics.summarizeUsage",
      "operation": "summarizeUsage",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection",
      "path": "/tenantusagemetrics/summarizeUsage",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "tenantusagemetrics.summarizeUsageBatch",
      "operation": "summarizeUsageBatch",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection",
      "path": "/tenantusagemetrics/summarizeUsageBatch",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "tenantusagemetrics.summarizeTenantAiUsage",
      "operation": "summarizeTenantAiUsage",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection",
      "path": "/tenantusagemetrics/summarizeTenantAiUsage",
      "method": "POST"
    },
    {
      "kind": "cli",
      "name": "tenantusagemetriccollection_recordUsage",
      "operation": "recordUsage",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
    },
    {
      "kind": "cli",
      "name": "tenantusagemetriccollection_findByTenantAndMetric",
      "operation": "findByTenantAndMetric",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
    },
    {
      "kind": "cli",
      "name": "tenantusagemetriccollection_summarizeUsage",
      "operation": "summarizeUsage",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
    },
    {
      "kind": "cli",
      "name": "tenantusagemetriccollection_summarizeUsageBatch",
      "operation": "summarizeUsageBatch",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
    },
    {
      "kind": "cli",
      "name": "tenantusagemetriccollection_summarizeTenantAiUsage",
      "operation": "summarizeTenantAiUsage",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
    },
    {
      "kind": "mcp",
      "name": "tenantusagemetriccollection_recordusage",
      "operation": "recordUsage",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
    },
    {
      "kind": "mcp",
      "name": "tenantusagemetriccollection_findbytenantandmetric",
      "operation": "findByTenantAndMetric",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
    },
    {
      "kind": "mcp",
      "name": "tenantusagemetriccollection_summarizeusage",
      "operation": "summarizeUsage",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
    },
    {
      "kind": "mcp",
      "name": "tenantusagemetriccollection_summarizeusagebatch",
      "operation": "summarizeUsageBatch",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
    },
    {
      "kind": "mcp",
      "name": "tenantusagemetriccollection_summarizetenantaiusage",
      "operation": "summarizeTenantAiUsage",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetricCollection"
    },
    {
      "kind": "api",
      "name": "subscriptionplans.list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan",
      "path": "/subscriptionplans",
      "method": "GET"
    },
    {
      "kind": "api",
      "name": "subscriptionplans.get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan",
      "path": "/subscriptionplans/[id]",
      "method": "GET"
    },
    {
      "kind": "api",
      "name": "subscriptionplans.create",
      "operation": "create",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan",
      "path": "/subscriptionplans",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "subscriptionplans.update",
      "operation": "update",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan",
      "path": "/subscriptionplans/[id]",
      "method": "PATCH"
    },
    {
      "kind": "cli",
      "name": "subscriptionplan_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "cli",
      "name": "subscriptionplan_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "cli",
      "name": "subscriptionplan_create",
      "operation": "create",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "cli",
      "name": "subscriptionplan_update",
      "operation": "update",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "cli",
      "name": "subscriptionplan_delete",
      "operation": "delete",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "cli",
      "name": "subscriptionplan_isActive",
      "operation": "isActive",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "cli",
      "name": "subscriptionplan_getFeatureGrants",
      "operation": "getFeatureGrants",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "cli",
      "name": "subscriptionplan_setFeatureGrants",
      "operation": "setFeatureGrants",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "cli",
      "name": "subscriptionplan_getFeatureKeys",
      "operation": "getFeatureKeys",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "cli",
      "name": "subscriptionplan_getThresholds",
      "operation": "getThresholds",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "cli",
      "name": "subscriptionplan_setThresholds",
      "operation": "setThresholds",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "cli",
      "name": "subscriptionplan_getMetadata",
      "operation": "getMetadata",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "cli",
      "name": "subscriptionplan_setMetadata",
      "operation": "setMetadata",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "mcp",
      "name": "subscriptionplan_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "mcp",
      "name": "subscriptionplan_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:SubscriptionPlan"
    },
    {
      "kind": "api",
      "name": "tenantsubscriptions.list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription",
      "path": "/tenantsubscriptions",
      "method": "GET"
    },
    {
      "kind": "api",
      "name": "tenantsubscriptions.get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription",
      "path": "/tenantsubscriptions/[id]",
      "method": "GET"
    },
    {
      "kind": "api",
      "name": "tenantsubscriptions.create",
      "operation": "create",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription",
      "path": "/tenantsubscriptions",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "tenantsubscriptions.update",
      "operation": "update",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription",
      "path": "/tenantsubscriptions/[id]",
      "method": "PATCH"
    },
    {
      "kind": "cli",
      "name": "tenantsubscription_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
    },
    {
      "kind": "cli",
      "name": "tenantsubscription_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
    },
    {
      "kind": "cli",
      "name": "tenantsubscription_create",
      "operation": "create",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
    },
    {
      "kind": "cli",
      "name": "tenantsubscription_update",
      "operation": "update",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
    },
    {
      "kind": "cli",
      "name": "tenantsubscription_delete",
      "operation": "delete",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
    },
    {
      "kind": "cli",
      "name": "tenantsubscription_isEntitled",
      "operation": "isEntitled",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
    },
    {
      "kind": "cli",
      "name": "tenantsubscription_getSubscriber",
      "operation": "getSubscriber",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
    },
    {
      "kind": "cli",
      "name": "tenantsubscription_getMetadata",
      "operation": "getMetadata",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
    },
    {
      "kind": "cli",
      "name": "tenantsubscription_setMetadata",
      "operation": "setMetadata",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
    },
    {
      "kind": "mcp",
      "name": "tenantsubscription_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
    },
    {
      "kind": "mcp",
      "name": "tenantsubscription_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:TenantSubscription"
    },
    {
      "kind": "api",
      "name": "tenantusagemetrics.list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric",
      "path": "/tenantusagemetrics",
      "method": "GET"
    },
    {
      "kind": "api",
      "name": "tenantusagemetrics.get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric",
      "path": "/tenantusagemetrics/[id]",
      "method": "GET"
    },
    {
      "kind": "api",
      "name": "tenantusagemetrics.create",
      "operation": "create",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric",
      "path": "/tenantusagemetrics",
      "method": "POST"
    },
    {
      "kind": "cli",
      "name": "tenantusagemetric_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
    },
    {
      "kind": "cli",
      "name": "tenantusagemetric_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
    },
    {
      "kind": "cli",
      "name": "tenantusagemetric_create",
      "operation": "create",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
    },
    {
      "kind": "mcp",
      "name": "tenantusagemetric_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
    },
    {
      "kind": "mcp",
      "name": "tenantusagemetric_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
    },
    {
      "kind": "api",
      "name": "pricingrules.list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
      "path": "/pricingrules",
      "method": "GET"
    },
    {
      "kind": "api",
      "name": "pricingrules.get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
      "path": "/pricingrules/[id]",
      "method": "GET"
    },
    {
      "kind": "api",
      "name": "pricingrules.create",
      "operation": "create",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
      "path": "/pricingrules",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "pricingrules.update",
      "operation": "update",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
      "path": "/pricingrules/[id]",
      "method": "PATCH"
    },
    {
      "kind": "api",
      "name": "pricingrules.delete",
      "operation": "delete",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
      "path": "/pricingrules/[id]",
      "method": "DELETE"
    },
    {
      "kind": "api",
      "name": "pricingrules.getTerms",
      "operation": "getTerms",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
      "path": "/pricingrules/[id]/getTerms",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "pricingrules.setTerms",
      "operation": "setTerms",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
      "path": "/pricingrules/[id]/setTerms",
      "method": "POST"
    },
    {
      "kind": "cli",
      "name": "pricingrule_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "cli",
      "name": "pricingrule_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "cli",
      "name": "pricingrule_create",
      "operation": "create",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "cli",
      "name": "pricingrule_update",
      "operation": "update",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "cli",
      "name": "pricingrule_delete",
      "operation": "delete",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "cli",
      "name": "pricingrule_getTerms",
      "operation": "getTerms",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "cli",
      "name": "pricingrule_setTerms",
      "operation": "setTerms",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "mcp",
      "name": "pricingrule_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "mcp",
      "name": "pricingrule_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "mcp",
      "name": "pricingrule_create",
      "operation": "create",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "mcp",
      "name": "pricingrule_update",
      "operation": "update",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "mcp",
      "name": "pricingrule_delete",
      "operation": "delete",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "mcp",
      "name": "pricingrule_getterms",
      "operation": "getTerms",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "mcp",
      "name": "pricingrule_setterms",
      "operation": "setTerms",
      "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
    },
    {
      "kind": "api",
      "name": "clientcharges.list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:ClientCharge",
      "path": "/clientcharges",
      "method": "GET"
    },
    {
      "kind": "api",
      "name": "clientcharges.get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:ClientCharge",
      "path": "/clientcharges/[id]",
      "method": "GET"
    },
    {
      "kind": "cli",
      "name": "clientcharge_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
    },
    {
      "kind": "cli",
      "name": "clientcharge_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
    },
    {
      "kind": "mcp",
      "name": "clientcharge_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
    },
    {
      "kind": "mcp",
      "name": "clientcharge_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
    },
    {
      "kind": "api",
      "name": "billingadjustments.list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment",
      "path": "/billingadjustments",
      "method": "GET"
    },
    {
      "kind": "api",
      "name": "billingadjustments.get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment",
      "path": "/billingadjustments/[id]",
      "method": "GET"
    },
    {
      "kind": "cli",
      "name": "billingadjustment_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
    },
    {
      "kind": "cli",
      "name": "billingadjustment_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
    },
    {
      "kind": "mcp",
      "name": "billingadjustment_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
    },
    {
      "kind": "mcp",
      "name": "billingadjustment_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
    },
    {
      "kind": "api",
      "name": "spendingpolicies.list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
      "path": "/spendingpolicies",
      "method": "GET"
    },
    {
      "kind": "api",
      "name": "spendingpolicies.get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
      "path": "/spendingpolicies/[id]",
      "method": "GET"
    },
    {
      "kind": "api",
      "name": "spendingpolicies.create",
      "operation": "create",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
      "path": "/spendingpolicies",
      "method": "POST"
    },
    {
      "kind": "api",
      "name": "spendingpolicies.update",
      "operation": "update",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
      "path": "/spendingpolicies/[id]",
      "method": "PATCH"
    },
    {
      "kind": "api",
      "name": "spendingpolicies.delete",
      "operation": "delete",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
      "path": "/spendingpolicies/[id]",
      "method": "DELETE"
    },
    {
      "kind": "cli",
      "name": "spendingpolicy_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
    },
    {
      "kind": "cli",
      "name": "spendingpolicy_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
    },
    {
      "kind": "cli",
      "name": "spendingpolicy_create",
      "operation": "create",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
    },
    {
      "kind": "cli",
      "name": "spendingpolicy_update",
      "operation": "update",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
    },
    {
      "kind": "cli",
      "name": "spendingpolicy_delete",
      "operation": "delete",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
    },
    {
      "kind": "mcp",
      "name": "spendingpolicy_list",
      "operation": "list",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
    },
    {
      "kind": "mcp",
      "name": "spendingpolicy_get",
      "operation": "get",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
    },
    {
      "kind": "mcp",
      "name": "spendingpolicy_create",
      "operation": "create",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
    },
    {
      "kind": "mcp",
      "name": "spendingpolicy_update",
      "operation": "update",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
    },
    {
      "kind": "mcp",
      "name": "spendingpolicy_delete",
      "operation": "delete",
      "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
    }
  ],
  "prompts": [],
  "relationshipsV2": {
    "foreignKeyFields": 4,
    "crossPackageRefFields": 0,
    "junctionCollections": 0,
    "hierarchicalObjects": 0,
    "polymorphicAssociations": 0,
    "uuidColumns": 36
  },
  "agentDoc": "# @happyvertical/smrt-subscriptions\n\nTenant subscriptions, plan features, immutable/idempotent usage evidence,\neffective-dated client pricing, scoped spending policies, and entitlement\nresolution for SMRT applications.\n\n## Validation\n\n```bash\npnpm --filter @happyvertical/smrt-subscriptions test\npnpm --filter @happyvertical/smrt-subscriptions test:postgres\npnpm --filter @happyvertical/smrt-subscriptions typecheck\npnpm --filter @happyvertical/smrt-subscriptions build\n```\n\n`test:postgres` is the lane that holds the money-column line — SQLite's type\naffinity stores a REAL in an INTEGER column without complaint, so a money field\nthat reverted to DECIMAL passes every SQLite suite.\n\n## Money\n\n- **Money is integer minor units** (cents) — `$19.99` is `1999`.\n  `SubscriptionPlan.priceAmount`, `ClientCharge.amount`,\n  `BillingAdjustment.amount` and `SpendingPolicy.limitAmount` all initialize\n  `= 0`, never `= 0.0`: the integer literal is what maps them to INTEGER\n  columns (BIGINT on fresh PostgreSQL/DuckDB databases; #2401, #2373). `ClientCharge.quantity` and `TenantUsageMetric.quantity` are\n  the opposite case — metered quantities are genuinely fractional and stay\n  DECIMAL.\n- **`PricingRule.terms` are minor units *per unit of usage*, and stay\n  fractional.** A per-token rate is routinely a fraction of a cent, so an\n  integer `unitPrice` would truncate it to zero. `calculateAmount()` rounds the\n  computed result to a whole minor unit — that is the single boundary in the\n  package where a rate meets money, and it is what lets `evaluateSpending()`\n  compare charge sums against `limitAmount` exactly.\n- **`adjust()` rejects a fractional amount.** Negative amounts are legitimate\n  (a credit); fractional ones almost always mean the caller passed major units.\n- **Billing rejects immediate JSON write-back.** The JSON adapter's default\n  `writeStrategy: 'immediate'` and DuckDB with that write-back strategy export\n  files before transaction commit, while adapter rollback restores only the\n  database transaction. `CommercialUsageService` therefore fails before setup\n  on those configurations. PostgreSQL, SQLite, ordinary DuckDB, and explicit\n  non-immediate write strategies remain supported. When supplying an already\n  resolved database handle, also pass `billingStorage` so this capability\n  decision is explicit rather than inferred from private adapter state.\n- **Embedded sourced adjustments serialize per database.** SQLite, DuckDB, and\n  supported non-immediate JSON handles multiplex local writes; the complete\n  deterministic adjustment flow, including recovery reads, runs under one\n  database-scoped lock. Every supported embedded adjustment transaction,\n  sourced or unsourced, also holds the core embedded write queue for its full\n  lifetime; transaction-bound model saves re-enter that hold so adjustments\n  cannot absorb, roll back, or deadlock with unrelated ordinary writes.\n- **UI formats by dividing, never by `toFixed`.** `PlanPicker` and\n  `CommercialOverview` scale back to major units using the currency's own\n  minor-unit exponent, so zero-decimal currencies (JPY, KRW) are not divided.\n- **Migrating an existing database**: `preflightSubscriptionsMoneyMinorUnits(db)`\n  reports which columns still hold major units and which rows would be rounded\n  or exceed JavaScript's safe-integer range; `migrateSubscriptionsMoneyToMinorUnits(db)` converts them\n  (idempotent via `_smrt_backfills`). On SQLite the values are rescaled but the\n  declared type needs the table-rebuild path (#2370). Existing\n  `PricingRule.terms` are **not** migrated automatically — only the operator\n  knows which keys in a given rule are prices rather than quantities or ratios.\n- **Range and existing deployments**: fresh PostgreSQL/DuckDB INTEGER columns\n  are BIGINT, and hydration rejects values outside JavaScript's safe-integer\n  range. Existing PostgreSQL `int4` columns require the explicit widening in #2424.\n\n## Notes\n\n- Keep Stripe-specific fields as provider binding metadata. Runtime Stripe API\n  calls belong in the HappyVertical SDK accounting provider.\n- Thresholds are evaluated from tenant usage metrics and optional AI usage\n  summaries. Resolve multiple thresholds with the batch usage path where\n  available; do not bypass tenant context in application code.\n- Use `SubscriptionResolver.create()` or an explicitly injected\n  `SubscriptionResolver` once per request when resolving entitlements multiple\n  times. Load and pass `EntitlementResolutionContext` to avoid re-reading the\n  current subscription and plan.\n- Subscription UI components should stay provider-neutral and receive actions\n  from the host app.\n"
}