@mj-biz-apps/marketing-server 0.3.0 → 0.4.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.
Files changed (56) hide show
  1. package/dist/__tests__/linkedInTargeting.test.d.ts +2 -0
  2. package/dist/__tests__/linkedInTargeting.test.d.ts.map +1 -0
  3. package/dist/__tests__/linkedInTargeting.test.js +65 -0
  4. package/dist/__tests__/linkedInTargeting.test.js.map +1 -0
  5. package/dist/agents/MarketingCreativeAgent.d.ts +16 -0
  6. package/dist/agents/MarketingCreativeAgent.d.ts.map +1 -0
  7. package/dist/agents/MarketingCreativeAgent.js +28 -0
  8. package/dist/agents/MarketingCreativeAgent.js.map +1 -0
  9. package/dist/agents/MarketingExperimentationAgent.d.ts +39 -0
  10. package/dist/agents/MarketingExperimentationAgent.d.ts.map +1 -1
  11. package/dist/agents/MarketingExperimentationAgent.js +73 -3
  12. package/dist/agents/MarketingExperimentationAgent.js.map +1 -1
  13. package/dist/agents/index.d.ts +1 -0
  14. package/dist/agents/index.d.ts.map +1 -1
  15. package/dist/agents/index.js +3 -0
  16. package/dist/agents/index.js.map +1 -1
  17. package/dist/index.d.ts +3 -2
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +3 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/programs/google/GoogleAdsProgramDriver.d.ts.map +1 -1
  22. package/dist/programs/google/GoogleAdsProgramDriver.js +14 -3
  23. package/dist/programs/google/GoogleAdsProgramDriver.js.map +1 -1
  24. package/dist/programs/google/googleBrandAssets.d.ts +5 -0
  25. package/dist/programs/google/googleBrandAssets.d.ts.map +1 -1
  26. package/dist/programs/google/googleBrandAssets.js +20 -15
  27. package/dist/programs/google/googleBrandAssets.js.map +1 -1
  28. package/dist/programs/index.d.ts +4 -0
  29. package/dist/programs/index.d.ts.map +1 -1
  30. package/dist/programs/index.js +5 -0
  31. package/dist/programs/index.js.map +1 -1
  32. package/dist/programs/linkedin/LinkedInAdsClient.d.ts +123 -2
  33. package/dist/programs/linkedin/LinkedInAdsClient.d.ts.map +1 -1
  34. package/dist/programs/linkedin/LinkedInAdsClient.js +183 -26
  35. package/dist/programs/linkedin/LinkedInAdsClient.js.map +1 -1
  36. package/dist/programs/linkedin/LinkedInAdsProgramDriver.d.ts +38 -7
  37. package/dist/programs/linkedin/LinkedInAdsProgramDriver.d.ts.map +1 -1
  38. package/dist/programs/linkedin/LinkedInAdsProgramDriver.js +364 -70
  39. package/dist/programs/linkedin/LinkedInAdsProgramDriver.js.map +1 -1
  40. package/dist/programs/linkedin/linkedInExecutionContext.d.ts +6 -0
  41. package/dist/programs/linkedin/linkedInExecutionContext.d.ts.map +1 -1
  42. package/dist/programs/linkedin/linkedInExecutionContext.js +2 -1
  43. package/dist/programs/linkedin/linkedInExecutionContext.js.map +1 -1
  44. package/dist/programs/meta/MetaAdsClient.d.ts +101 -0
  45. package/dist/programs/meta/MetaAdsClient.d.ts.map +1 -0
  46. package/dist/programs/meta/MetaAdsClient.js +239 -0
  47. package/dist/programs/meta/MetaAdsClient.js.map +1 -0
  48. package/dist/programs/meta/MetaAdsProgramDriver.d.ts +76 -0
  49. package/dist/programs/meta/MetaAdsProgramDriver.d.ts.map +1 -0
  50. package/dist/programs/meta/MetaAdsProgramDriver.js +431 -0
  51. package/dist/programs/meta/MetaAdsProgramDriver.js.map +1 -0
  52. package/dist/programs/meta/metaAdsExecutionContext.d.ts +39 -0
  53. package/dist/programs/meta/metaAdsExecutionContext.d.ts.map +1 -0
  54. package/dist/programs/meta/metaAdsExecutionContext.js +99 -0
  55. package/dist/programs/meta/metaAdsExecutionContext.js.map +1 -0
  56. package/package.json +9 -8
@@ -30,6 +30,7 @@ const ENDPOINTS = {
30
30
  campaignGroups: (adAccountId) => `/adAccounts/${adAccountId}/adCampaignGroups`,
31
31
  campaigns: (adAccountId) => `/adAccounts/${adAccountId}/adCampaigns`,
32
32
  campaign: (adAccountId, campaignId) => `/adAccounts/${adAccountId}/adCampaigns/${campaignId}`,
33
+ campaignGroup: (adAccountId, groupId) => `/adAccounts/${adAccountId}/adCampaignGroups/${groupId}`,
33
34
  /**
34
35
  * Website retargeting is a THREE-object flow (live-verified 2026-09-21 after /dmpSegments
35
36
  * answered 422 — that API is for uploaded lists, not Insight Tag visitors): a page set
@@ -47,6 +48,12 @@ const ENDPOINTS = {
47
48
  creativesInline: (adAccountId) => `/adAccounts/${adAccountId}/creatives?action=createInline`,
48
49
  creative: (adAccountId, creativeUrn) => `/adAccounts/${adAccountId}/creatives/${encodeURIComponent(creativeUrn)}`,
49
50
  post: (postUrn) => `/posts/${encodeURIComponent(postUrn)}`,
51
+ /** Saved audiences ("Saved Audience Templates"): account-level, carry their own targetingCriteria and an approximate member count (R1/R2). */
52
+ audienceTemplates: (accountUrn) => `/adTargetTemplates?q=account&account=${encodeURIComponent(accountUrn)}&sortField=ID`,
53
+ /** Conversions defined on the account (Insight Tag rules, CAPI, lead gen), paged (R5). */
54
+ conversions: (accountUrn, start) => `/conversions?q=account&account=${encodeURIComponent(accountUrn)}&start=${start}&count=50`,
55
+ /** The campaign ↔ conversion association — a compound-key PUT, idempotent (R5). */
56
+ campaignConversion: (campaignUrn, conversionUrn) => `/campaignConversions/${restliCompoundKey({ campaign: campaignUrn, conversion: conversionUrn })}`,
50
57
  };
51
58
  export class LinkedInApiError extends Error {
52
59
  constructor(status, message,
@@ -58,6 +65,30 @@ export class LinkedInApiError extends Error {
58
65
  this.name = 'LinkedInApiError';
59
66
  }
60
67
  }
68
+ /** The scope a campaign↔conversion association needs (an UPDATE on the conversion): the Conversions API product's scope. */
69
+ export const CONVERSION_SCOPE = 'rw_conversions';
70
+ /**
71
+ * Whether a token's scopes allow attaching a conversion (KI-148). Null scopes = the refresh response named none,
72
+ * which is not a refusal — the lock will find out — so only a KNOWN list without the scope is a miss.
73
+ */
74
+ export function lacksConversionScope(scopes) {
75
+ return scopes !== null && !scopes.includes(CONVERSION_SCOPE);
76
+ }
77
+ /**
78
+ * The post content of an ad (KI-150): article content with the image as the thumbnail — the only shape Campaign
79
+ * Manager renders with a headline, a destination URL and a button. Without an image the article has no thumbnail
80
+ * (a plain link card). Exported for the unit test; the builder above is the one caller.
81
+ */
82
+ export function inlineCreativeContent(opts) {
83
+ return {
84
+ article: {
85
+ source: opts.landingPageUrl,
86
+ title: opts.headline,
87
+ ...(opts.description ? { description: opts.description } : {}),
88
+ ...(opts.imageUrn ? { thumbnail: opts.imageUrn, thumbnailAltText: opts.headline } : {}),
89
+ },
90
+ };
91
+ }
61
92
  export class LinkedInAdsClient {
62
93
  constructor(config) {
63
94
  this.config = config;
@@ -100,34 +131,73 @@ export class LinkedInAdsClient {
100
131
  // — the Audience Network is a reach lever nobody has asked for yet.
101
132
  politicalIntent: 'NOT_POLITICAL',
102
133
  offsiteDeliveryEnabled: false,
103
- // Every program lands on a stamped landing page, so the objective is site visits, and
104
- // "maximum delivery" bidding (MAX_IMPRESSION under CPM) spends the daily budget without a
105
- // hand-set bid — a bid becomes a lever the day someone wants one.
106
- objectiveType: 'WEBSITE_VISIT', // singular — the docs table says WEBSITE_VISITS, the API rejects it (live-verified)
107
- // LinkedIn's allowed-combination matrix: for WEBSITE_VISIT, auto-bidding is MAX_CLICK
108
- // (MAX_IMPRESSION is BRAND_AWARENESS-only), and auto-bidding is charged CPM — CPC with
109
- // MAX_CLICK is rejected. Live-verified 2026-09-21.
134
+ // The objective follows the levers (R5): a program that names a conversion optimises for it
135
+ // (WEBSITE_CONVERSION + MAX_CONVERSION — the pair the account's own Teams Demo campaign runs,
136
+ // read back 2026-10-14); without one the campaign lands on the stamped page and optimises for clicks
137
+ // (WEBSITE_VISIT — singular, the docs table says WEBSITE_VISITS and the API rejects it, live-verified).
138
+ // LinkedIn's allowed-combination matrix: for WEBSITE_VISIT auto-bidding is MAX_CLICK (MAX_IMPRESSION is
139
+ // BRAND_AWARENESS-only), and auto-bidding is charged CPM — CPC with MAX_CLICK is rejected (2026-09-21).
140
+ objectiveType: opts.objective ?? 'WEBSITE_VISIT',
110
141
  // Sponsored Content = a single-image/text update from the company page; both are
111
142
  // LinkedIn business rules (MULTIPLE_VALIDATIONS_FAILED without them, live-verified).
112
143
  format: 'STANDARD_UPDATE',
113
144
  associatedEntity: opts.organizationUrn,
114
- optimizationTargetType: 'MAX_CLICK',
145
+ optimizationTargetType: (opts.objective ?? 'WEBSITE_VISIT') === 'WEBSITE_CONVERSION' ? 'MAX_CONVERSION' : 'MAX_CLICK',
115
146
  creativeSelection: 'OPTIMIZED',
116
147
  audienceExpansionEnabled: false,
117
148
  };
118
- // LinkedIn requires every campaign's targeting to declare a location and an interface
119
- // locale (the docs are explicit; a segment alone is rejected). US + en_US matches the
120
- // `locale` above and the programs we run today; both become brand levers when the first
121
- // non-US brand arrives. A website segment rides in the DYNAMIC facet — the
122
- // audienceMatching facet is for uploaded lists, and 422s for a retargeting segment.
123
- const facets = [];
124
- if (opts.audienceUrn)
125
- facets.push({ 'urn:li:adTargetingFacet:dynamicSegments': [opts.audienceUrn] });
126
- facets.push({ 'urn:li:adTargetingFacet:locations': [TARGETING_DEFAULTS.geoUrn] });
127
- facets.push({ 'urn:li:adTargetingFacet:interfaceLocales': [TARGETING_DEFAULTS.localeUrn] });
128
- body['targetingCriteria'] = { include: { and: facets.map(f => ({ or: f })) } };
149
+ // The saved audience's criteria, verbatim (R1), with what LinkedIn requires on every campaign added when the
150
+ // template lacks it (a location and an interface locale — a segment alone is rejected), and the website
151
+ // retargeting segment AND-ed in through the DYNAMIC facet (the audienceMatching facet is for uploaded lists
152
+ // and 422s for a retargeting segment, live-verified 2026-09-21).
153
+ body['targetingCriteria'] = withRequiredFacets(opts.targetingCriteria, opts.audienceUrn ?? null);
129
154
  return this.create(ENDPOINTS.campaigns(this.config.adAccountId), body, 'urn:li:sponsoredCampaign');
130
155
  }
156
+ /**
157
+ * The account's saved audiences (R1). Exact, case-insensitive name match; null when the account has none by
158
+ * that name — the driver turns that into `LI_AUDIENCE_TEMPLATE_UNKNOWN` with the names it did find.
159
+ */
160
+ async audienceTemplates() {
161
+ const res = await this.rest('GET', ENDPOINTS.audienceTemplates(this.accountUrn));
162
+ return (res.elements ?? [])
163
+ .filter(e => typeof e.name === 'string' && e.targetingCriteria && typeof e.targetingCriteria === 'object')
164
+ .map(e => ({
165
+ id: String(e.id ?? ''),
166
+ name: e.name,
167
+ approximateMemberCount: typeof e.approximateMemberCount === 'number' ? e.approximateMemberCount : null,
168
+ targetingCriteria: e.targetingCriteria,
169
+ }));
170
+ }
171
+ /** One saved audience by its id (D-34): the lever and the connection default carry ids, never names. */
172
+ async findAudienceTemplateById(id) {
173
+ const want = id.trim();
174
+ return (await this.audienceTemplates()).find(t => t.id === want) ?? null;
175
+ }
176
+ /** Every conversion on the account (R5), all pages. */
177
+ async conversions() {
178
+ const out = [];
179
+ for (let start = 0; start < 2000; start += 50) {
180
+ const res = await this.rest('GET', ENDPOINTS.conversions(this.accountUrn, start));
181
+ const page = res.elements ?? [];
182
+ for (const c of page) {
183
+ if (typeof c.name !== 'string' || c.id == null)
184
+ continue;
185
+ out.push({ id: String(c.id), urn: `urn:lla:llaPartnerConversion:${c.id}`, name: c.name, type: c.type ?? null, enabled: c.enabled !== false });
186
+ }
187
+ if (page.length < 50)
188
+ break;
189
+ }
190
+ return out;
191
+ }
192
+ /** One conversion by its id (D-34). */
193
+ async findConversionById(id) {
194
+ const want = id.trim();
195
+ return (await this.conversions()).find(c => c.id === want) ?? null;
196
+ }
197
+ /** Attaches a conversion to a campaign (R5). A PUT on the compound key; repeating it is a no-op on LinkedIn's side. */
198
+ async associateConversion(campaignUrn, conversionUrn) {
199
+ await this.raw('PUT', ENDPOINTS.campaignConversion(campaignUrn, conversionUrn), { campaign: campaignUrn, conversion: conversionUrn });
200
+ }
131
201
  /**
132
202
  * Creates a website-visitor retargeting audience: page set → empty RETARGETING segment →
133
203
  * source link. Returns the SEGMENT urn (what a campaign targets) plus the page set urn, so
@@ -241,13 +311,16 @@ export class LinkedInAdsClient {
241
311
  /**
242
312
  * Creates the ad: a DARK post (Direct Sponsored Content — authored by the company page but
243
313
  * never shown on its feed; it exists only inside the campaign) and the creative that sponsors
244
- * it, in LinkedIn's single inline call. With an image it is a single-image ad; without one it
245
- * is an article ad (link card) to the same landing page. Returns the creative urn.
314
+ * it, in LinkedIn's single inline call. The post is ALWAYS article content (KI-150): the landing
315
+ * page as `source`, the headline as `title`, the image as `thumbnail`. That is what Campaign
316
+ * Manager calls a single image ad — headline, destination URL and button under the image. The
317
+ * `media` shape LinkedIn's Image Ads page shows is a sponsored image post: Campaign Manager maps
318
+ * its title to alt text and has no headline, destination or button for it, so CP-02 served as a
319
+ * bare picture (the editor's own preview showed intro text and image only, 2026-10-19). Returns
320
+ * the creative urn.
246
321
  */
247
322
  async createInlineCreative(opts) {
248
- const content = opts.imageUrn
249
- ? { media: { id: opts.imageUrn, title: opts.headline, altText: opts.headline } }
250
- : { article: { source: opts.landingPageUrl, title: opts.headline, ...(opts.description ? { description: opts.description } : {}) } };
323
+ const content = inlineCreativeContent(opts);
251
324
  const body = {
252
325
  creative: {
253
326
  inlineContent: {
@@ -258,7 +331,7 @@ export class LinkedInAdsClient {
258
331
  visibility: 'PUBLIC',
259
332
  lifecycleState: 'PUBLISHED',
260
333
  isReshareDisabledByAuthor: true,
261
- contentCallToActionLabel: 'LEARN_MORE',
334
+ contentCallToActionLabel: opts.callToAction,
262
335
  contentLandingPage: opts.landingPageUrl,
263
336
  content,
264
337
  },
@@ -302,6 +375,19 @@ export class LinkedInAdsClient {
302
375
  const creative = await this.rest('GET', ENDPOINTS.creative(this.config.adAccountId, creativeUrn));
303
376
  return typeof creative.content?.reference === 'string' ? creative.content.reference : null;
304
377
  }
378
+ /**
379
+ * Retires a creative the way LinkedIn allows (KI-146, live-verified 2026-10-15 on the test account): ACTIVE → ARCHIVED
380
+ * is refused unless `review.status` is APPROVED (`TRANSITION_CONDITIONALLY_NOT_ALLOWED`), so a REJECTED or
381
+ * PENDING creative is PAUSED instead — it cannot serve either way, and the dark post is deleted by the caller.
382
+ * Returns the status LinkedIn accepted.
383
+ */
384
+ async retireCreative(creativeUrn) {
385
+ const creative = await this.rest('GET', ENDPOINTS.creative(this.config.adAccountId, creativeUrn));
386
+ const target = creativeRetireTarget(creative);
387
+ if (target.change)
388
+ await this.setCreativeStatus(creativeUrn, 'ARCHIVED');
389
+ return target.status;
390
+ }
305
391
  async setCreativeStatus(creativeUrn, status) {
306
392
  await this.raw('POST', ENDPOINTS.creative(this.config.adAccountId, creativeUrn), { patch: { $set: { intendedStatus: status } } }, { 'X-RestLi-Method': 'PARTIAL_UPDATE' });
307
393
  }
@@ -324,7 +410,7 @@ export class LinkedInAdsClient {
324
410
  const campaigns = `List(${campaignUrns.map(u => encodeURIComponent(u)).join(',')})`;
325
411
  const path = `${ENDPOINTS.adAnalytics}?q=analytics&pivot=CAMPAIGN&timeGranularity=ALL`
326
412
  + `&dateRange=${range}&campaigns=${campaigns}`
327
- + `&fields=impressions,clicks,externalWebsiteConversions,costInLocalCurrency`;
413
+ + `&fields=impressions,clicks,landingPageClicks,externalWebsiteConversions,costInLocalCurrency`;
328
414
  const res = await this.rest('GET', path);
329
415
  const elements = Array.isArray(res?.elements)
330
416
  ? res.elements
@@ -333,6 +419,7 @@ export class LinkedInAdsClient {
333
419
  return {
334
420
  impressions: sum('impressions'),
335
421
  clicks: sum('clicks'),
422
+ landingPageClicks: sum('landingPageClicks'),
336
423
  externalWebsiteConversions: sum('externalWebsiteConversions'),
337
424
  spendUsd: elements.reduce((a, e) => a + (Number(e['costInLocalCurrency']) || 0), 0),
338
425
  };
@@ -349,6 +436,31 @@ export class LinkedInAdsClient {
349
436
  throw new LinkedInApiError(response.status, `LinkedIn create at ${path} returned no x-restli-id header.`, false);
350
437
  return id.startsWith('urn:') ? id : `${urnPrefix}:${id}`;
351
438
  }
439
+ /**
440
+ * Moves a campaign's run schedule (KI-119): the program's sprint was pulled forward after lock and the platform
441
+ * still carried the old start. LinkedIn's rules, live-verified 2026-10-12 on a real account: a CAMPAIGN's
442
+ * start and end can be changed while it is Active and unserved; a non-draft campaign GROUP's `runSchedule.start`
443
+ * is immutable (`FIELD_IMMUTABLE_FOR_NON_DRAFT_CAMPAIGNS`), and a campaign may not run outside its group. So the
444
+ * group's start is never touched, its END is extended only when the new window runs past it, and the campaign
445
+ * gets the window — in that order, because the campaign update is refused while it would exceed the group.
446
+ */
447
+ async setRunSchedule(campaignUrn, campaignGroupUrn, runSchedule) {
448
+ if (campaignGroupUrn && runSchedule.end != null) {
449
+ const groupId = campaignGroupUrn.split(':').pop() ?? campaignGroupUrn;
450
+ const group = await this.rest('GET', ENDPOINTS.campaignGroup(this.config.adAccountId, groupId));
451
+ const groupEnd = group.runSchedule?.end;
452
+ if (groupEnd != null && groupEnd < runSchedule.end) {
453
+ await this.raw('POST', ENDPOINTS.campaignGroup(this.config.adAccountId, groupId), { patch: { $set: { runSchedule: { start: group.runSchedule?.start ?? runSchedule.start, end: runSchedule.end } } } }, { 'X-RestLi-Method': 'PARTIAL_UPDATE' });
454
+ }
455
+ }
456
+ await this.partialUpdateCampaign(campaignUrn, { runSchedule });
457
+ }
458
+ /** A campaign group's recorded start (epoch ms), or null when LinkedIn reports none (KI-143). */
459
+ async campaignGroupStart(campaignGroupUrn) {
460
+ const groupId = campaignGroupUrn.split(':').pop() ?? campaignGroupUrn;
461
+ const group = await this.rest('GET', ENDPOINTS.campaignGroup(this.config.adAccountId, groupId));
462
+ return group.runSchedule?.start ?? null;
463
+ }
352
464
  async partialUpdateCampaign(campaignUrn, set) {
353
465
  const campaignId = campaignUrn.split(':').pop() ?? campaignUrn;
354
466
  await this.raw('POST', ENDPOINTS.campaign(this.config.adAccountId, campaignId), { patch: { $set: set } }, { 'X-RestLi-Method': 'PARTIAL_UPDATE' });
@@ -377,6 +489,11 @@ export class LinkedInAdsClient {
377
489
  return response;
378
490
  }
379
491
  /** Refresh-token grant, cached in-memory with a 60s safety margin. */
492
+ /** The scopes the member authorization carries, as the token refresh reports them; null when it reported none. */
493
+ async tokenScopes() {
494
+ await this.accessToken();
495
+ return this.token?.scopes.length ? this.token.scopes : null;
496
+ }
380
497
  async accessToken() {
381
498
  if (this.token && Date.now() < this.token.expiresAtMs - 60_000)
382
499
  return this.token.accessToken;
@@ -402,11 +519,33 @@ export class LinkedInAdsClient {
402
519
  this.token = {
403
520
  accessToken: json.access_token,
404
521
  expiresAtMs: Date.now() + (Number(json.expires_in) || 1800) * 1000,
522
+ scopes: typeof json.scope === 'string' ? json.scope.split(/[\s,]+/).filter(Boolean) : [],
405
523
  };
406
524
  LogStatus('LinkedInAdsClient: access token refreshed.');
407
525
  return this.token.accessToken;
408
526
  }
409
527
  }
528
+ /**
529
+ * A saved audience's criteria plus what LinkedIn requires on every campaign: a location and an interface locale
530
+ * (both rejected when absent), and the retargeting segment when the audience lever asked for one. The template's
531
+ * own `and` list is preserved in order; `exclude` passes through untouched. Exported for the unit test.
532
+ */
533
+ export function withRequiredFacets(targetingCriteria, audienceUrn) {
534
+ const include = (targetingCriteria['include'] && typeof targetingCriteria['include'] === 'object')
535
+ ? { ...targetingCriteria['include'] } : {};
536
+ const and = Array.isArray(include['and'])
537
+ ? include['and'].map(a => ({ or: { ...(a.or ?? {}) } }))
538
+ : [];
539
+ const has = (facet) => and.some(a => Object.keys(a.or).includes(facet));
540
+ if (audienceUrn)
541
+ and.unshift({ or: { 'urn:li:adTargetingFacet:dynamicSegments': [audienceUrn] } });
542
+ if (!has('urn:li:adTargetingFacet:locations'))
543
+ and.push({ or: { 'urn:li:adTargetingFacet:locations': [TARGETING_DEFAULTS.geoUrn] } });
544
+ if (!has('urn:li:adTargetingFacet:interfaceLocales'))
545
+ and.push({ or: { 'urn:li:adTargetingFacet:interfaceLocales': [TARGETING_DEFAULTS.localeUrn] } });
546
+ include['and'] = and;
547
+ return { ...targetingCriteria, include };
548
+ }
410
549
  async function safeText(response) {
411
550
  try {
412
551
  return (await response.text()).slice(0, 500);
@@ -415,4 +554,22 @@ async function safeText(response) {
415
554
  return '';
416
555
  }
417
556
  }
557
+ /**
558
+ * LinkedIn's retire rule as a pure decision (KI-146): an already-archived creative needs nothing; an APPROVED one is
559
+ * archived; anything else (REJECTED, PENDING, no review) can only be paused — ACTIVE → ARCHIVED is refused for it.
560
+ */
561
+ /**
562
+ * What a stand-down may do to a creative (KI-146, live-verified twice): LinkedIn allows NO status change — not to
563
+ * ARCHIVED, not to PAUSED — until `review.status` is APPROVED ("transition is not allowed from ACTIVE to PAUSED if
564
+ * reviewStatus is not set to APPROVED", CP-03). An approved creative is archived; an unreviewed or rejected one is left
565
+ * as it is (`HELD`): its campaign is paused and its post deleted, so it cannot serve, and LinkedIn holds it with
566
+ * CAMPAIGN_STOPPED.
567
+ */
568
+ export function creativeRetireTarget(creative) {
569
+ if (creative.intendedStatus === 'ARCHIVED')
570
+ return { status: 'ARCHIVED', change: false };
571
+ if (creative.review?.status === 'APPROVED')
572
+ return { status: 'ARCHIVED', change: true };
573
+ return { status: 'HELD', change: false };
574
+ }
418
575
  //# sourceMappingURL=LinkedInAdsClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinkedInAdsClient.js","sourceRoot":"","sources":["../../../src/programs/linkedin/LinkedInAdsClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LinkedInAdsClient.js","sourceRoot":"","sources":["../../../src/programs/linkedin/LinkedInAdsClient.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@
28
28
  * program-approval gate (V3-12) — by the time onLock runs, a human approved the spend.
29
29
  */
30
30
  import { type UserInfo } from '@memberjunction/core';
31
- import { BaseProgramTypeDriver, type DriverRetirementReason, type DriverValidationIssue, type MetricCollectionWindow, type MetricObservation, type ProgramForDriver, type ProgramTypeParamSpec, type RefreshStatusResult, type RetireStatusResult } from '@mj-biz-apps/marketing-core';
31
+ import { BaseProgramTypeDriver, type DriverRetirementReason, type DriverValidationIssue, type AdCampaignConfig, type MetricCollectionWindow, type MetricObservation, type ProgramForDriver, type ProgramTypeParamSpec, type RefreshStatusResult, type RetireStatusResult, type ServingChangeResult, type ServingSnapshot, type PlatformAudienceOptions, type MovedWindow, type RescheduleResult } from '@mj-biz-apps/marketing-core';
32
32
  import { type LinkedInContextResolver } from './linkedInExecutionContext.js';
33
33
  export declare class LinkedInAdsProgramDriver extends BaseProgramTypeDriver {
34
34
  private readonly contextUser?;
@@ -38,15 +38,23 @@ export declare class LinkedInAdsProgramDriver extends BaseProgramTypeDriver {
38
38
  readonly paramSpecs: ReadonlyArray<ProgramTypeParamSpec>;
39
39
  constructor(contextUser?: UserInfo, resolveContext?: LinkedInContextResolver);
40
40
  validateProposal(program: ProgramForDriver): Promise<DriverValidationIssue[]>;
41
+ /**
42
+ * The audience and the conversion are platform OBJECTS the levers point at by id (R1/R2/R5, D-34): the pre-check
43
+ * looks them up so an id the account does not hold, a country-wide audience or an audience LinkedIn will not serve
44
+ * to is refused while the proposal is still a draft — not discovered at lock, and never, as with CP-02, discovered
45
+ * on the invoice. One GET each; a lookup that fails is a warning (the platform, not the proposal, is the problem).
46
+ */
47
+ private validateAudienceAndConversion;
41
48
  onLock(program: ProgramForDriver): Promise<void>;
42
49
  /**
43
- * The ad itself: the agent's creative, posted as Direct Sponsored Content from the brand's
44
- * page (a dark post — it exists only inside the campaign, never on the page's feed) and
45
- * attached to the campaign as a creative. Mirrors the Google driver's contract: no headline
46
- * means the campaign launches ad-less and SAYS so; a missing or unusable brand image degrades
47
- * to an article ad (link card) rather than to no ad; a second lock finds the ref and skips.
50
+ * The ads themselves (R4): ONE creative per headline, up to five, each the agent's copy posted as Direct Sponsored
51
+ * Content from the brand's page (a dark post — it exists only inside the campaign, never on the page's feed) and
52
+ * attached to the campaign, so `creativeSelection: OPTIMIZED` has something to optimise. Mirrors the Google
53
+ * driver's contract: no headline means the campaign launches ad-less and SAYS so; a missing or unusable image
54
+ * degrades to an article ad (link card) rather than to no ad. Idempotent per VARIANT: a second lock finds each
55
+ * variant's ref (or adopts an orphan by name) and creates only what is missing.
48
56
  */
49
- private attachCreative;
57
+ private attachCreatives;
50
58
  /**
51
59
  * The brand's marketing image (Brand.MarketingImageURL — Settings → Brand ad assets), fetched
52
60
  * with the same guards as the Google driver (public URL only, PNG/JPEG, 5MB) and uploaded to
@@ -54,6 +62,8 @@ export declare class LinkedInAdsProgramDriver extends BaseProgramTypeDriver {
54
62
  * cannot be used, so the caller can say why.
55
63
  */
56
64
  private uploadBrandImage;
65
+ /** One fetch-and-upload for every image source (brand or program): public URL only, PNG/JPEG, 5MB. */
66
+ private uploadImageFromUrl;
57
67
  collectMetrics(program: ProgramForDriver, window: MetricCollectionWindow): Promise<MetricObservation[] | null>;
58
68
  /**
59
69
  * The continuous poll (HA-7): the same platform figures collectMetrics reports at review time,
@@ -63,6 +73,14 @@ export declare class LinkedInAdsProgramDriver extends BaseProgramTypeDriver {
63
73
  */
64
74
  refreshStatus(program: ProgramForDriver, window: MetricCollectionWindow): Promise<RefreshStatusResult>;
65
75
  onRetire(program: ProgramForDriver, reason: DriverRetirementReason): Promise<RetireStatusResult>;
76
+ /** Stop serving, keep everything (R6 / KI-120): the campaigns go PAUSED; creatives and posts stay. */
77
+ onPause(program: ProgramForDriver): Promise<ServingChangeResult>;
78
+ onResume(program: ProgramForDriver): Promise<ServingChangeResult>;
79
+ private setServing;
80
+ /** The account's saved audiences and conversions (R1/R5): what Settings offers and the agent may name. */
81
+ listAudienceOptions(brandId: string): Promise<PlatformAudienceOptions | null>;
82
+ /** Live figures since the campaign was created (R6): what the early serving check judges. */
83
+ servingSnapshot(program: ProgramForDriver): Promise<ServingSnapshot | null>;
66
84
  /**
67
85
  * Which company page sponsors the campaign. The ad account's `reference` wins when it is a
68
86
  * page (a business account always carries one); the connection setting fills in when the
@@ -78,6 +96,12 @@ export declare class LinkedInAdsProgramDriver extends BaseProgramTypeDriver {
78
96
  * way starts now; a missing end leaves the window open (the decision pauses it anyway).
79
97
  */
80
98
  private runScheduleFor;
99
+ /**
100
+ * KI-119: the sprint moved after lock (an early close pulled it forward). The campaign group and campaign were
101
+ * created with the OLD window as their run schedule, so without this the real ad sat waiting for the original
102
+ * date while the app said the sprint was running. Both objects get the window the program now carries.
103
+ */
104
+ onWindowMoved(program: ProgramForDriver, window: MovedWindow): Promise<RescheduleResult>;
81
105
  private loadRefs;
82
106
  private saveRef;
83
107
  /** A ref's recorded state (breadcrumbs written at create time); an unparseable one reads as empty. */
@@ -89,4 +113,11 @@ export declare class LinkedInAdsProgramDriver extends BaseProgramTypeDriver {
89
113
  private requireUser;
90
114
  }
91
115
  export declare function LoadLinkedInAdsProgramDriver(): void;
116
+ /**
117
+ * LinkedIn's own copy rules, at propose (DRIVERS.md §11: "the only place a platform's rules live"). Lengths that
118
+ * LinkedIn enforces are errors in the shared parser (600 for the intro); what it merely clips is a notice.
119
+ */
120
+ export declare function validateLinkedInCreative(config: AdCampaignConfig): DriverValidationIssue[];
121
+ /** R2: the saved audience's own approximate count against the floor LinkedIn serves to and the ceiling Trent set. */
122
+ export declare function conversionScopeMessage(): string;
92
123
  //# sourceMappingURL=LinkedInAdsProgramDriver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinkedInAdsProgramDriver.d.ts","sourceRoot":"","sources":["../../../src/programs/linkedin/LinkedInAdsProgramDriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAA0C,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG7F,OAAO,EACH,qBAAqB,EAKrB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAE1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EAK1B,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EAGH,KAAK,uBAAuB,EAA4B,MAAM,+BAA+B,CAAC;AAIlG,qBACa,wBAAyB,SAAQ,qBAAqB;IAS3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IATnC,SAAgB,QAAQ,kBAA0B;IAClD,yFAAyF;IACzF,SAAgB,UAAU,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAG7D;gBAGmB,WAAW,CAAC,EAAE,QAAQ,EACtB,cAAc,GAAE,uBAAyD;IAKjF,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAmB7E,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2E7D;;;;;;OAMG;YACW,cAAc;IAqD5B;;;;;OAKG;YACW,gBAAgB;IAejB,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC;IA8B3H;;;;;OAKG;IACmB,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAoB/G,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA+C7G;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAqBtB;;;;;;OAMG;YACW,cAAc;YAkBd,QAAQ;YAaR,OAAO;IAqBrB,sGAAsG;IACtG,OAAO,CAAC,OAAO;YAID,cAAc;IAW5B,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,WAAW;CAItB;AAED,wBAAgB,4BAA4B,SAAK"}
1
+ {"version":3,"file":"LinkedInAdsProgramDriver.d.ts","sourceRoot":"","sources":["../../../src/programs/linkedin/LinkedInAdsProgramDriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAA0C,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG7F,OAAO,EACH,qBAAqB,EAKrB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAOsC,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAKnJ,OAAO,EAGH,KAAK,uBAAuB,EAA4B,MAAM,+BAA+B,CAAC;AAIlG,qBACa,wBAAyB,SAAQ,qBAAqB;IAS3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IATnC,SAAgB,QAAQ,kBAA0B;IAClD,yFAAyF;IACzF,SAAgB,UAAU,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAG7D;gBAGmB,WAAW,CAAC,EAAE,QAAQ,EACtB,cAAc,GAAE,uBAAyD;IAKjF,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAsB1F;;;;;OAKG;YACW,6BAA6B;IAiE9B,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmH7D;;;;;;;OAOG;YACW,eAAe;IAyE7B;;;;;OAKG;YACW,gBAAgB;IAM9B,sGAAsG;YACxF,kBAAkB;IAYnB,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC;IAoC3H;;;;;OAKG;IACmB,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAoB/G,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkD7G,sGAAsG;IAChF,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIhE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAIzE,UAAU;IAmBxB,0GAA0G;IACpF,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAYnG,6FAA6F;IACvE,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAejG;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAqBtB;;;;;;OAMG;YACW,cAAc;IAiB5B;;;;OAIG;IACmB,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAyBhG,QAAQ;YAaR,OAAO;IAqBrB,sGAAsG;IACtG,OAAO,CAAC,OAAO;YAID,cAAc;IAW5B,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,WAAW;CAItB;AAED,wBAAgB,4BAA4B,SAAK;AAEjD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,qBAAqB,EAAE,CAa1F;AAED,qHAAqH;AACrH,wBACS,sBAAsB,IAAI,MAAM,CAGxC"}