@happyvertical/smrt-ads 0.55.23 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@
2
2
  "version": "1.0.0",
3
3
  "timestamp": 0,
4
4
  "packageName": "@happyvertical/smrt-ads",
5
- "packageVersion": "0.55.23",
5
+ "packageVersion": "0.56.0",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-ads:AdDeliveryTierCollection": {
8
8
  "name": "addeliverytiercollection",
@@ -1896,7 +1896,10 @@
1896
1896
  "contractId": {
1897
1897
  "type": "crossPackageRef",
1898
1898
  "required": false,
1899
- "related": "@happyvertical/smrt-commerce:Contract"
1899
+ "related": "@happyvertical/smrt-commerce:SalesContract",
1900
+ "_meta": {
1901
+ "validateSubtype": true
1902
+ }
1900
1903
  },
1901
1904
  "tierId": {
1902
1905
  "type": "foreignKey",
@@ -52,7 +52,7 @@ export declare class AdGroup extends SmrtObject {
52
52
  */
53
53
  tenantId: string | null;
54
54
  /**
55
- * Contract ID (FK to smrt-commerce Contract, cross-package)
55
+ * Sales contract ID (cross-package reference to smrt-commerce)
56
56
  */
57
57
  contractId: string;
58
58
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"AdGroup.d.ts","sourceRoot":"","sources":["../../src/models/AdGroup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,UAAU,EACV,KAAK,iBAAiB,EAEvB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAOa,OAAQ,SAAQ,UAAU;IACrC;;OAEG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B;;OAEG;IAEH,UAAU,EAAE,MAAM,CAAM;IAExB;;OAEG;IAEH,MAAM,EAAE,MAAM,CAAM;IAEpB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAM;IAElB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAM;IAE1B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAM;IAEvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAM;IAErB;;OAEG;IACH,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE9B;;OAEG;IACH,OAAO,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE5B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAO;IAE1B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAO;IAE1B;;OAEG;IACH,MAAM,EAAE,aAAa,CAAuB;gBAEhC,OAAO,GAAE,cAAmB;IAmBxC;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE;IAStB;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI;IAI/B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ/B;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKlC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASvC;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIlD;;OAEG;IACH,QAAQ,IAAI,OAAO;IAQnB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAKnB;;OAEG;IACH,UAAU,IAAI,OAAO;CAItB;AAED,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"AdGroup.d.ts","sourceRoot":"","sources":["../../src/models/AdGroup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,UAAU,EACV,KAAK,iBAAiB,EAEvB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAOa,OAAQ,SAAQ,UAAU;IACrC;;OAEG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B;;OAEG;IAIH,UAAU,EAAE,MAAM,CAAM;IAExB;;OAEG;IAEH,MAAM,EAAE,MAAM,CAAM;IAEpB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAM;IAElB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAM;IAE1B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAM;IAEvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAM;IAErB;;OAEG;IACH,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE9B;;OAEG;IACH,OAAO,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE5B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAO;IAE1B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAO;IAE1B;;OAEG;IACH,MAAM,EAAE,aAAa,CAAuB;gBAEhC,OAAO,GAAE,cAAmB;IAmBxC;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE;IAStB;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI;IAI/B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ/B;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKlC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASvC;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIlD;;OAEG;IACH,QAAQ,IAAI,OAAO;IAQnB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAKnB;;OAEG;IACH,UAAU,IAAI,OAAO;CAItB;AAED,eAAe,OAAO,CAAC"}
@@ -3,13 +3,13 @@
3
3
  "sensitiveFieldsExcluded": true,
4
4
  "generatedAt": "1970-01-01T00:00:00.000Z",
5
5
  "packageName": "@happyvertical/smrt-ads",
6
- "packageVersion": "0.55.23",
6
+ "packageVersion": "0.56.0",
7
7
  "sourceManifestPath": "dist/manifest.json",
8
8
  "agentDocPath": "AGENTS.md",
9
9
  "sourceHashes": {
10
- "manifest": "3682bb708198808071c9d4c90fbde03263c0186cc9ae20969665efd7069ec71c",
11
- "packageJson": "f4cfb36581894c697cd7b5a65a9fa1e5558c0f4761c65003382b56eb5977f099",
12
- "agents": "38d00ca384af711a76359907e4d9806733168d7b4b31f7610cd0c418fc72d566"
10
+ "manifest": "32ccbd67f144a265ade0bb1cb2fb2a71715dcfa38886598070f5522c46eda56c",
11
+ "packageJson": "97ea12ebcaedd8da6addad4aa76d5c785d2875c6ea226792755d45afcc2a1151",
12
+ "agents": "876d4834346e5033011df69c99da0767db466b3855bf03fec787cd44f7290679"
13
13
  },
14
14
  "exports": [
15
15
  ".",
@@ -2094,7 +2094,7 @@
2094
2094
  "name": "contractId",
2095
2095
  "type": "crossPackageRef",
2096
2096
  "required": false,
2097
- "related": "@happyvertical/smrt-commerce:Contract",
2097
+ "related": "@happyvertical/smrt-commerce:SalesContract",
2098
2098
  "columnType": "UUID"
2099
2099
  },
2100
2100
  {
@@ -2170,7 +2170,7 @@
2170
2170
  "name": "contractId",
2171
2171
  "type": "crossPackageRef",
2172
2172
  "required": false,
2173
- "related": "@happyvertical/smrt-commerce:Contract",
2173
+ "related": "@happyvertical/smrt-commerce:SalesContract",
2174
2174
  "columnType": "UUID"
2175
2175
  },
2176
2176
  {
@@ -4305,7 +4305,7 @@
4305
4305
  "polymorphicAssociations": 0,
4306
4306
  "uuidColumns": 30
4307
4307
  },
4308
- "agentDoc": "# @happyvertical/smrt-ads\n\nAd delivery with priority waterfall, weighted A/B testing, and immutable event tracking.\n\n## Models\n\n- **AdFormat**: IAB standard dimensions (width, height, type: banner/native/video)\n- **AdDeliveryTier**: priority levels — Sponsorship (1, FIXED pricing) > Standard (2, CPM) > House (3, fallback)\n- **AdGroup**: campaign with targeting, budget, zone restrictions\n- **AdVariation** (STI): creative variant with weighted selection for A/B. `weight=2` is 2x more likely than `weight=1`. Denormalized `impressions`/`clicks` fields.\n- **AdEvent** (STI, immutable): impression/click/conversion tracking. **Create-only** — no update/delete in API/MCP. `cli: false` (high-volume).\n\n## Cross-Package References (all plain string IDs)\n\n`contractId` → smrt-commerce, `zoneId`/`siteId` → smrt-properties, `assetId` → smrt-assets, `verticalSlug` → smrt-tags\n\n## Tenancy\n\nOptional tenancy via `@TenantScoped({ mode: 'optional' })` is applied to the\nthree transactional models — `AdGroup`, `AdVariation`, and `AdEvent` — which\nparticipate in per-tenant ad serving and event tracking.\n\n`AdFormat` and `AdDeliveryTier` are deliberately **NOT** tenant-scoped: they\nare shared catalog/lookup tables.\n\n- `AdFormat` rows describe IAB standard ad dimensions (e.g. `728x90`\n Leaderboard, `300x250` Medium Rectangle). The dimensions are an industry\n standard, not a tenant-specific configuration.\n- `AdDeliveryTier` rows describe the priority waterfall for ad selection\n (Sponsorship → Standard → House). Tiers are part of the package's\n ad-serving contract; per-tenant tier definitions would fragment the\n selection algorithm without a clear use case.\n\nEither model can still be filtered by tenant manually if a deployment ever\nneeds tenant-specific overrides, but the default is global. This mirrors the\ndocumented exception pattern in `packages/secrets/AGENTS.md` (`TenantKey`).\nEach `@smrt(...)` block on these two classes carries an inline comment\npointing back here.\n\n## Gotchas\n\n- **Priority waterfall**: lower priority number = higher priority in selection\n- **Weight is relative integer**: not percentage — probability calculated from total weight across variations\n- **Denormalized counts need async refresh**: impressions/clicks on AdVariation are eventually consistent\n- **No frequency capping or budget enforcement built-in**: external responsibility\n- **Targeting rules stored as JSON string**: no schema validation\n- **Optional tenancy** on `AdGroup`, `AdVariation`, `AdEvent` only — see Tenancy section above for `AdFormat`/`AdDeliveryTier` rationale\n",
4308
+ "agentDoc": "# @happyvertical/smrt-ads\n\nAd delivery with priority waterfall, weighted A/B testing, and immutable event tracking.\n\n## Models\n\n- **AdFormat**: IAB standard dimensions (width, height, type: banner/native/video)\n- **AdDeliveryTier**: priority levels — Sponsorship (1, FIXED pricing) > Standard (2, CPM) > House (3, fallback)\n- **AdGroup**: campaign with targeting, budget, zone restrictions\n- **AdVariation** (STI): creative variant with weighted selection for A/B. `weight=2` is 2x more likely than `weight=1`. Denormalized `impressions`/`clicks` fields.\n- **AdEvent** (STI, immutable): impression/click/conversion tracking. **Create-only** — no update/delete in API/MCP. `cli: false` (high-volume).\n\n## Cross-Package References (all plain string IDs)\n\n`contractId` → smrt-commerce `SalesContract`, `zoneId`/`siteId` → smrt-properties, `assetId` → smrt-assets, `verticalSlug` → smrt-tags\n\n## Tenancy\n\nOptional tenancy via `@TenantScoped({ mode: 'optional' })` is applied to the\nthree transactional models — `AdGroup`, `AdVariation`, and `AdEvent` — which\nparticipate in per-tenant ad serving and event tracking.\n\n`AdFormat` and `AdDeliveryTier` are deliberately **NOT** tenant-scoped: they\nare shared catalog/lookup tables.\n\n- `AdFormat` rows describe IAB standard ad dimensions (e.g. `728x90`\n Leaderboard, `300x250` Medium Rectangle). The dimensions are an industry\n standard, not a tenant-specific configuration.\n- `AdDeliveryTier` rows describe the priority waterfall for ad selection\n (Sponsorship → Standard → House). Tiers are part of the package's\n ad-serving contract; per-tenant tier definitions would fragment the\n selection algorithm without a clear use case.\n\nEither model can still be filtered by tenant manually if a deployment ever\nneeds tenant-specific overrides, but the default is global. This mirrors the\ndocumented exception pattern in `packages/secrets/AGENTS.md` (`TenantKey`).\nEach `@smrt(...)` block on these two classes carries an inline comment\npointing back here.\n\n## Gotchas\n\n- **Priority waterfall**: lower priority number = higher priority in selection\n- **Weight is relative integer**: not percentage — probability calculated from total weight across variations\n- **Denormalized counts need async refresh**: impressions/clicks on AdVariation are eventually consistent\n- **No frequency capping or budget enforcement built-in**: external responsibility\n- **Targeting rules stored as JSON string**: no schema validation\n- **Optional tenancy** on `AdGroup`, `AdVariation`, `AdEvent` only — see Tenancy section above for `AdFormat`/`AdDeliveryTier` rationale\n",
4309
4309
  "browser": {
4310
4310
  "status": "server-only",
4311
4311
  "issues": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-ads",
3
- "version": "0.55.23",
3
+ "version": "0.56.0",
4
4
  "description": "Advertising delivery and tracking models for SMRT framework",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,13 +19,13 @@
19
19
  "./manifest.json": "./dist/manifest.json"
20
20
  },
21
21
  "dependencies": {
22
- "@happyvertical/smrt-core": "0.55.23",
23
- "@happyvertical/smrt-tenancy": "0.55.23"
22
+ "@happyvertical/smrt-core": "0.56.0",
23
+ "@happyvertical/smrt-tenancy": "0.56.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@happyvertical/smrt-commerce": "0.55.23",
27
- "@happyvertical/smrt-vitest": "0.55.23",
28
- "@happyvertical/sql": "^0.103.5",
26
+ "@happyvertical/smrt-commerce": "0.56.0",
27
+ "@happyvertical/smrt-vitest": "0.56.0",
28
+ "@happyvertical/sql": "^0.103.6",
29
29
  "@types/node": "24.13.6",
30
30
  "fast-glob": "3.3.3",
31
31
  "typescript": "6.0.3",