deepline 0.3.342 → 0.3.344

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 (105) hide show
  1. package/dist/bundling-sources/sdk/src/http.ts +9 -1
  2. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  3. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/index.ts +9 -1
  4. package/dist/bundling-sources/shared_libs/plays/csv-text-repair.ts +145 -0
  5. package/dist/bundling-sources/shared_libs/product-notifications/billing-sales.ts +2 -0
  6. package/dist/bundling-sources/shared_libs/product-notifications/catalog.ts +33 -0
  7. package/dist/bundling-sources/shared_libs/product-notifications/events.ts +15 -0
  8. package/dist/cli/auth-6ABMIWQQ.js +31 -0
  9. package/dist/cli/{auth-7GVSCIFY.mjs → auth-KHHPB2DO.mjs} +4 -4
  10. package/dist/cli/{billing-CQDTIFBF.js → billing-HAR4AJZT.js} +71 -71
  11. package/dist/cli/{billing-BVCHOOOJ.mjs → billing-RLK734WE.mjs} +4 -4
  12. package/dist/cli/{chunk-SBXCXMYT.mjs → chunk-23D4YCM6.mjs} +1 -1
  13. package/dist/cli/{chunk-4LPBIUQ2.mjs → chunk-2MSG6WCC.mjs} +2 -2
  14. package/dist/cli/{chunk-W5BMDA4F.js → chunk-475OQE7H.js} +2 -2
  15. package/dist/cli/{chunk-FT4V72RC.mjs → chunk-4DIFNYJZ.mjs} +2 -2
  16. package/dist/cli/{chunk-ECBT2RXL.mjs → chunk-BQYPKV4P.mjs} +8 -8
  17. package/dist/cli/{chunk-VZHA6YHU.mjs → chunk-CIV43IXR.mjs} +4 -4
  18. package/dist/cli/{chunk-GEGCG7MG.mjs → chunk-CMK6UNJA.mjs} +8 -8
  19. package/dist/cli/{chunk-OJH4W52K.mjs → chunk-DRHVFFMJ.mjs} +94 -6
  20. package/dist/cli/{chunk-ERC3XIUO.js → chunk-FHCBNR7M.js} +27 -28
  21. package/dist/cli/{chunk-BIA27ZNI.mjs → chunk-GJYCHN2L.mjs} +2 -2
  22. package/dist/cli/{chunk-G6TM2GK2.mjs → chunk-J5NN6XCF.mjs} +5 -1
  23. package/dist/cli/{chunk-B2PMPAIJ.js → chunk-J5P35NOT.js} +60 -60
  24. package/dist/cli/{chunk-K2P365R2.js → chunk-JXCEXXKW.js} +57 -67
  25. package/dist/cli/{chunk-5Y2DDT5K.js → chunk-LELCMU5K.js} +26 -26
  26. package/dist/cli/{chunk-IDTUEEF4.mjs → chunk-M5FYGL42.mjs} +1 -1
  27. package/dist/cli/{chunk-DP2XSXRA.js → chunk-MQIHCQ5Z.js} +8 -8
  28. package/dist/cli/{chunk-3BY3UMYO.js → chunk-QO6T7ETF.js} +15 -15
  29. package/dist/cli/{chunk-GAQGAH34.mjs → chunk-QZMF7VDU.mjs} +22 -23
  30. package/dist/cli/{chunk-AC7QCWXV.mjs → chunk-RN7NIZIL.mjs} +1 -1
  31. package/dist/cli/{chunk-3BGGXEO5.js → chunk-SJIF45BK.js} +8 -4
  32. package/dist/cli/{chunk-KM3JYG56.js → chunk-TYPYDSNY.js} +9 -9
  33. package/dist/cli/{chunk-4EW5CMVL.js → chunk-UWV3BA43.js} +227 -227
  34. package/dist/cli/{chunk-DL5YQFZ6.js → chunk-VL5IYXS3.js} +112 -24
  35. package/dist/cli/{chunk-XAMWA45P.mjs → chunk-XRZUDK6O.mjs} +11 -21
  36. package/dist/cli/{chunk-KYHNFT7T.js → chunk-Y6PJVWDY.js} +1 -1
  37. package/dist/cli/{chunk-LQGHKRNZ.js → chunk-ZUHK5OX3.js} +48 -48
  38. package/dist/cli/{client-UMFL6LP2.mjs → client-JWDU663V.mjs} +3 -3
  39. package/dist/cli/client-KETSZR46.js +20 -0
  40. package/dist/cli/{csv-HYZKDWVL.js → csv-7AW5GZ4K.js} +12 -12
  41. package/dist/cli/{csv-EFHLVMV2.mjs → csv-CIAWYPZO.mjs} +3 -3
  42. package/dist/cli/{db-GVC55S5W.mjs → db-SX73JJBH.mjs} +4 -4
  43. package/dist/cli/{db-RPWOYGIJ.js → db-UENUIWQN.js} +29 -29
  44. package/dist/cli/{describe-X5WLZXOS.mjs → describe-4SC5G2FG.mjs} +8 -8
  45. package/dist/cli/{describe-EPNNEVZG.js → describe-7OGZQAGF.js} +15 -15
  46. package/dist/cli/{executions-MEQFDGRU.js → executions-UDXQNB34.js} +6 -6
  47. package/dist/cli/{executions-MPEF66XO.mjs → executions-YB4IAUTW.mjs} +4 -4
  48. package/dist/cli/{feedback-SCZSITXP.js → feedback-5SGAGRAW.js} +7 -7
  49. package/dist/cli/{feedback-I4UNJEHC.mjs → feedback-76QWZSW3.mjs} +3 -3
  50. package/dist/cli/git-4PRJV7B3.js +23 -0
  51. package/dist/cli/{git-5H4ZVTTV.mjs → git-ESESPEVB.mjs} +4 -4
  52. package/dist/cli/index.js +80 -80
  53. package/dist/cli/index.mjs +32 -32
  54. package/dist/cli/{legacy-noops-326HSG4F.mjs → legacy-noops-6F6QSRDB.mjs} +4 -4
  55. package/dist/cli/{legacy-noops-BH6IRSKQ.js → legacy-noops-E74OIJCW.js} +7 -7
  56. package/dist/cli/{monitors-SIXPXBKU.js → monitors-4MIXICCR.js} +85 -85
  57. package/dist/cli/{monitors-AZ64IIUO.mjs → monitors-USOHPXUY.mjs} +4 -4
  58. package/dist/cli/{org-2FAU4GBK.mjs → org-2RRIFNXJ.mjs} +4 -4
  59. package/dist/cli/{org-4VX6L3SZ.js → org-DO3Q6L7S.js} +60 -60
  60. package/dist/cli/{play-7VQABXW7.mjs → play-KAXYPLCQ.mjs} +7 -7
  61. package/dist/cli/play-SHRBJAO4.js +153 -0
  62. package/dist/cli/{providers-DOFRWRDC.mjs → providers-FKHLPGQO.mjs} +4 -4
  63. package/dist/cli/{providers-WWEGDKWO.js → providers-RCUITFFY.js} +7 -7
  64. package/dist/cli/{quickstart-JXN53CUE.mjs → quickstart-CDBWA6IK.mjs} +3 -3
  65. package/dist/cli/{quickstart-64NWQZXP.js → quickstart-XGU4M4Z5.js} +5 -5
  66. package/dist/cli/{search-NREYIQO7.mjs → search-QA4DAJPS.mjs} +5 -5
  67. package/dist/cli/search-ZHYH2BA3.js +26 -0
  68. package/dist/cli/{secrets-LO2S3ASQ.mjs → secrets-6S2CDL2M.mjs} +4 -4
  69. package/dist/cli/{secrets-FGZSIICG.js → secrets-KYKXEHNR.js} +13 -13
  70. package/dist/cli/{sessions-VOLIMKDL.js → sessions-PWAIUF7I.js} +5 -5
  71. package/dist/cli/{sessions-FYHXMESN.mjs → sessions-WGLVMQYC.mjs} +4 -4
  72. package/dist/cli/{settings-EYQHZTCR.js → settings-CNWO5VFJ.js} +74 -74
  73. package/dist/cli/{settings-WABX7ZVG.mjs → settings-FQ5CWYNQ.mjs} +7 -7
  74. package/dist/cli/{setup-7H5EAAZK.js → setup-ABIO2LJD.js} +41 -41
  75. package/dist/cli/{setup-JVECE4TU.mjs → setup-RRT66ENS.mjs} +6 -6
  76. package/dist/cli/{skills-BEVLJDUH.mjs → skills-3LY2RQE3.mjs} +4 -4
  77. package/dist/cli/skills-OBTT3OF7.js +28 -0
  78. package/dist/cli/tools-DMXHSMU2.js +40 -0
  79. package/dist/cli/{tools-5D32S2CY.mjs → tools-TQMHPW3U.mjs} +6 -6
  80. package/dist/cli/update-4CK752WQ.js +28 -0
  81. package/dist/cli/{update-EMNDLIDA.mjs → update-6U4ASVZX.mjs} +6 -6
  82. package/dist/cli/{workflow-BBMZ2A2Y.js → workflow-GVXAFVXF.js} +15 -15
  83. package/dist/cli/{workflow-MMTSJB3D.mjs → workflow-XLE4N3W3.mjs} +5 -5
  84. package/dist/{client-B-hjM1NX.d.mts → client-BHReRdWK.d.mts} +41 -0
  85. package/dist/{client-txa3om01.d.ts → client-DW3zASj8.d.ts} +41 -0
  86. package/dist/index.d.mts +2 -2
  87. package/dist/index.d.ts +2 -2
  88. package/dist/index.js +6 -6
  89. package/dist/index.mjs +3 -3
  90. package/dist/install-integrity.json +77 -76
  91. package/dist/plays/run-request.d.mts +1 -1
  92. package/dist/plays/run-request.d.ts +1 -1
  93. package/dist/release.d.mts +1 -1
  94. package/dist/release.d.ts +1 -1
  95. package/dist/release.js +2 -2
  96. package/dist/release.mjs +1 -1
  97. package/package.json +1 -1
  98. package/dist/cli/auth-BFOCE76P.js +0 -31
  99. package/dist/cli/client-FCOLYBLU.js +0 -20
  100. package/dist/cli/git-YA73D6HG.js +0 -23
  101. package/dist/cli/play-SDZWMYJM.js +0 -153
  102. package/dist/cli/search-VKOBBQAN.js +0 -26
  103. package/dist/cli/skills-4WHWKCUN.js +0 -28
  104. package/dist/cli/tools-SGLGLR2H.js +0 -40
  105. package/dist/cli/update-HRB4G5LS.js +0 -28
@@ -36,7 +36,11 @@ import {
36
36
  import { SDK_API_CONTRACT, SDK_VERSION } from './version.js';
37
37
  import { apiErrorCodeFromResponse, apiErrorMessage } from './api-error';
38
38
  import type { LiveEventEnvelope } from './types.js';
39
- import { detectAgentRuntime, isCoworkLikeSandbox } from './agent-runtime.js';
39
+ import {
40
+ agentSessionIdFromEnvironment,
41
+ detectAgentRuntime,
42
+ isCoworkLikeSandbox,
43
+ } from './agent-runtime.js';
40
44
  import { readSdkSkillsLocalVersion } from './skills-version.js';
41
45
  import { deploymentProtectionHeaders } from './deployment-protection.js';
42
46
  import {
@@ -289,6 +293,10 @@ export class HttpClient {
289
293
  if (skillsVersion) {
290
294
  headers['X-Deepline-Skills-Version'] = skillsVersion;
291
295
  }
296
+ const agentSessionId = agentSessionIdFromEnvironment();
297
+ if (agentSessionId) {
298
+ headers['X-Deepline-Agent-Session-Id'] = agentSessionId;
299
+ }
292
300
  const playArtifactR2Prefix =
293
301
  typeof process !== 'undefined'
294
302
  ? process.env?.DEEPLINE_PLAY_ARTIFACT_R2_PREFIX
@@ -200,7 +200,7 @@ export const SDK_RELEASE = {
200
200
  // getters keep their established compatibility behavior.
201
201
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
202
202
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
203
- version: '0.3.342',
203
+ version: '0.3.344',
204
204
  updateSummary:
205
205
  'Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.',
206
206
  packageCapabilities: {
@@ -10,6 +10,7 @@ import { compileFunction } from 'node:vm';
10
10
  import { gunzipSync } from 'node:zlib';
11
11
  import { Readable } from 'node:stream';
12
12
  import { parse } from 'csv-parse';
13
+ import { csvInputTextOptions } from '../../plays/csv-text-repair';
13
14
  import { install as installSourceMapSupport } from 'source-map-support';
14
15
  import {
15
16
  createDeferredPlayDataset,
@@ -1559,7 +1560,14 @@ async function emitAndExit(
1559
1560
  function parseCsvStream(
1560
1561
  source: NodeJS.ReadableStream,
1561
1562
  ): AsyncIterable<Record<string, unknown>> {
1562
- const parser = parse({ columns: true, skip_empty_lines: true, trim: true });
1563
+ // Every Play's CSV input passes through here, so this is where a customer
1564
+ // file's BOM and mis-decoded UTF-8 ("j̩r̫me", "o’malley") get fixed before
1565
+ // any row reaches a provider. See ../../plays/csv-text-repair.
1566
+ const parser = parse({
1567
+ ...csvInputTextOptions(),
1568
+ skip_empty_lines: true,
1569
+ trim: true,
1570
+ });
1563
1571
  // `Readable.pipe()` does not forward source errors to the destination. A
1564
1572
  // missing staged file therefore used to emit an unhandled `error` from
1565
1573
  // createReadStream and kill the Daytona process outside main().catch().
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Repair UTF-8 text that was decoded with the wrong single-byte code page and
3
+ * re-encoded ("mojibake"), the way Excel exports and copy-pasted sheets often
4
+ * arrive: "jérôme" as "jérôme" (read as Windows-1252) or "o’malley" as
5
+ * "o’malley" (read as Mac Roman).
6
+ *
7
+ * Why this exists: a 2026-08 ContactOut batch of 50 LinkedIn profiles was
8
+ * rejected outright because one slug carried "o’malley", and the same corrupt
9
+ * URLs had already been sent to LimaData and LeadMagic as paid misses. The
10
+ * corruption is in the customer's file, so the fix belongs where every CSV
11
+ * enters a Play: the runtime's CSV parser and the CLI's local CSV reader.
12
+ *
13
+ * Only runs of non-ASCII characters are touched, and a run is rewritten only
14
+ * when mapping it back through one of the two code pages yields strictly
15
+ * valid UTF-8. Correctly encoded text ("José", "Zoltán Erdős", CJK, emoji)
16
+ * never satisfies that test and passes through unchanged.
17
+ */
18
+
19
+ /** Windows-1252 bytes 0x80-0x9F that are not Latin-1 identity. */
20
+ const CP1252_HIGH_TO_BYTE = new Map<number, number>([
21
+ [0x20ac, 0x80],
22
+ [0x201a, 0x82],
23
+ [0x0192, 0x83],
24
+ [0x201e, 0x84],
25
+ [0x2026, 0x85],
26
+ [0x2020, 0x86],
27
+ [0x2021, 0x87],
28
+ [0x02c6, 0x88],
29
+ [0x2030, 0x89],
30
+ [0x0160, 0x8a],
31
+ [0x2039, 0x8b],
32
+ [0x0152, 0x8c],
33
+ [0x017d, 0x8e],
34
+ [0x2018, 0x91],
35
+ [0x2019, 0x92],
36
+ [0x201c, 0x93],
37
+ [0x201d, 0x94],
38
+ [0x2022, 0x95],
39
+ [0x2013, 0x96],
40
+ [0x2014, 0x97],
41
+ [0x02dc, 0x98],
42
+ [0x2122, 0x99],
43
+ [0x0161, 0x9a],
44
+ [0x203a, 0x9b],
45
+ [0x0153, 0x9c],
46
+ [0x017e, 0x9e],
47
+ [0x0178, 0x9f],
48
+ ]);
49
+
50
+ /** Mac OS Roman bytes 0x80-0xFF, in order (Python `bytes(range(128,256)).decode('mac_roman')`). */
51
+ const MAC_ROMAN_HIGH =
52
+ 'ÄÅÇÉÑÖÜáàâäãåçéè' +
53
+ 'êëíìîïñóòôöõúùûü' +
54
+ '†°¢£§•¶ß®©™´¨≠ÆØ' +
55
+ '∞±≤≥¥µ∂∑∏π∫ªºΩæø' +
56
+ '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ' +
57
+ '–—“”‘’÷◊ÿŸ⁄€‹›fifl' +
58
+ '‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ' +
59
+ 'ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ';
60
+ const MAC_ROMAN_TO_BYTE = new Map<number, number>(
61
+ [...MAC_ROMAN_HIGH].map((ch, i) => [ch.codePointAt(0)!, 0x80 + i] as const),
62
+ );
63
+
64
+ const STRICT_UTF8 = new TextDecoder('utf-8', { fatal: true });
65
+
66
+ function cp1252Byte(code: number): number | null {
67
+ if (code < 0x100) return code;
68
+ return CP1252_HIGH_TO_BYTE.get(code) ?? null;
69
+ }
70
+
71
+ function macRomanByte(code: number): number | null {
72
+ if (code < 0x80) return code;
73
+ return MAC_ROMAN_TO_BYTE.get(code) ?? null;
74
+ }
75
+
76
+ function decodeAs(
77
+ run: string,
78
+ toByte: (code: number) => number | null,
79
+ ): string | null {
80
+ const bytes = new Uint8Array(run.length);
81
+ let i = 0;
82
+ for (const ch of run) {
83
+ const byte = toByte(ch.codePointAt(0)!);
84
+ if (byte === null) return null;
85
+ bytes[i++] = byte;
86
+ }
87
+ // A real mojibake run always encodes at least one multi-byte sequence, so it
88
+ // must contain a UTF-8 lead byte; a lone Latin-1 letter never does.
89
+ if (!bytes.subarray(0, i).some((b) => b >= 0xc2 && b <= 0xf4)) return null;
90
+ try {
91
+ return STRICT_UTF8.decode(bytes.subarray(0, i));
92
+ } catch {
93
+ return null;
94
+ }
95
+ }
96
+
97
+ /** Maximal runs of non-ASCII characters are the only places mojibake can live. */
98
+ const NON_ASCII_RUN = /[^\u0000-\u007f]+/g;
99
+
100
+ /**
101
+ * Return `value` with mis-decoded UTF-8 runs repaired. Text that is already
102
+ * valid UTF-8 comes back identical (same string instance when nothing changed).
103
+ */
104
+ export function repairMisdecodedText(value: string): string {
105
+ // Fast path: pure ASCII cannot be mojibake.
106
+ if (!/[^\u0000-\u007f]/.test(value)) return value;
107
+ let changed = false;
108
+ const repaired = value.replace(NON_ASCII_RUN, (run) => {
109
+ const fixed = decodeAs(run, cp1252Byte) ?? decodeAs(run, macRomanByte);
110
+ if (fixed === null || fixed === run) return run;
111
+ changed = true;
112
+ return fixed;
113
+ });
114
+ return changed ? repaired : value;
115
+ }
116
+
117
+ /** Repair every string value of a parsed CSV record in place and return it. */
118
+ export function repairRecordText<T extends Record<string, unknown>>(
119
+ record: T,
120
+ ): T {
121
+ for (const key of Object.keys(record)) {
122
+ const value = record[key];
123
+ if (typeof value === 'string') {
124
+ (record as Record<string, unknown>)[key] = repairMisdecodedText(value);
125
+ }
126
+ }
127
+ return record;
128
+ }
129
+
130
+ /**
131
+ * `csv-parse` options every CSV entry point shares: strip a UTF-8 BOM, repair
132
+ * mojibake in header names (a corrupt header never matches a column mapping)
133
+ * and in every string cell.
134
+ */
135
+ export function csvInputTextOptions(): {
136
+ bom: true;
137
+ columns: (header: string[]) => string[];
138
+ on_record: <T extends Record<string, unknown>>(record: T) => T;
139
+ } {
140
+ return {
141
+ bom: true,
142
+ columns: (header) => header.map(repairMisdecodedText),
143
+ on_record: repairRecordText,
144
+ };
145
+ }
@@ -3,9 +3,11 @@ export const BILLING_SALES_DESTINATION_KEY = 'shadow.billing-sales.slack';
3
3
  export const BILLING_SALES_SLACK_CHANNEL_ID = 'C0AGWVD2TNK';
4
4
  export const BILLING_SALES_CONNECTION_ID = 'platform-reporting-bot';
5
5
  export const BILLING_SALES_CREDIT_PURCHASE_MINIMUM_CENTS = 15_000;
6
+ export const BILLING_PURCHASE_LATE_RULE_KEY = 'internal.billing.purchase_late';
6
7
  export const BILLING_SALES_RULE_KEYS: readonly string[] = [
7
8
  'internal.billing.credit_purchase',
8
9
  'internal.billing.paid_plan',
10
+ BILLING_PURCHASE_LATE_RULE_KEY,
9
11
  ];
10
12
 
11
13
  export function isPlatformNotificationGroup(groupKey: string): boolean {
@@ -14,6 +14,7 @@ import {
14
14
  import { legacySlackNotificationType } from './legacy-slack';
15
15
  import type { NotificationText } from './content';
16
16
  import {
17
+ BILLING_PURCHASE_LATE_RULE_KEY,
17
18
  BILLING_SALES_CREDIT_PURCHASE_MINIMUM_CENTS,
18
19
  BILLING_SALES_GROUP_KEY,
19
20
  } from './billing-sales';
@@ -814,6 +815,38 @@ const PRODUCT_NOTIFICATION_TYPE_REGISTRY = [
814
815
  }),
815
816
  },
816
817
  },
818
+ {
819
+ id: BILLING_PURCHASE_LATE_RULE_KEY,
820
+ eventName: ProductNotificationEvent.BillingPurchaseLate,
821
+ requiredFilter: {},
822
+ allowedTriggers: ['each_match'],
823
+ catalog: undefined,
824
+ shadow: true,
825
+ rule: {
826
+ default: {
827
+ ruleKey: BILLING_PURCHASE_LATE_RULE_KEY,
828
+ groupKey: BILLING_SALES_GROUP_KEY,
829
+ },
830
+ create: (_input, base) => ({
831
+ ...base,
832
+ repeatMode: 'every_match',
833
+ trigger: { kind: 'each_match' },
834
+ }),
835
+ present: ({ payload }) => ({
836
+ title: `Purchase not completed after ${payload.thresholdSeconds} seconds`,
837
+ summary: [
838
+ '<!channel> Purchase fulfillment in ',
839
+ { workspace: true },
840
+ ' needs investigation. Verify payment and fulfillment independently.',
841
+ ],
842
+ details: [`Operation: ${payload.operationId}`],
843
+ targetUrl: String(payload.targetUrl),
844
+ subjectKind: 'billing_operation',
845
+ subjectId: String(payload.operationId),
846
+ severity: 'error',
847
+ }),
848
+ },
849
+ },
817
850
  {
818
851
  id: 'play.failed',
819
852
  eventName: ProductNotificationEvent.PlayRunCompleted,
@@ -20,6 +20,7 @@ export const ProductNotificationEvent = {
20
20
  CreditsUsageRecorded: 'credits.usage.recorded',
21
21
  AutoTopupLimitObserved: 'billing.auto_topup.limit_observed',
22
22
  BillingPlanPurchased: 'billing.plan.purchased',
23
+ BillingPurchaseLate: 'billing.purchase.late',
23
24
  MonitorLifecycleChanged: 'monitor.lifecycle.changed',
24
25
  PlayLifecycleChanged: 'play.lifecycle.changed',
25
26
  PlayRunCompleted: 'play.run.completed',
@@ -36,6 +37,7 @@ export type ProductNotificationEvent =
36
37
  export const ProductNotificationProducerKey = {
37
38
  BillingCredits: 'billing.credits',
38
39
  BillingPlans: 'billing.plans',
40
+ BillingPurchases: 'billing.purchases',
39
41
  BillingUsage: 'billing.usage',
40
42
  MonitorsLifecycle: 'monitors.lifecycle',
41
43
  PlaysLifecycle: 'plays.lifecycle',
@@ -61,6 +63,7 @@ export const PRODUCT_NOTIFICATION_EVENT_NAMES = [
61
63
  ProductNotificationEvent.AutoTopupLimitObserved,
62
64
  ProductNotificationEvent.CreditsPurchaseCompleted,
63
65
  ProductNotificationEvent.BillingPlanPurchased,
66
+ ProductNotificationEvent.BillingPurchaseLate,
64
67
  ] as const;
65
68
 
66
69
  export const PRODUCT_NOTIFICATION_COMPATIBILITY_EVENT_NAMES = [
@@ -225,6 +228,18 @@ export const PRODUCT_NOTIFICATION_EVENT_DEFINITIONS: readonly ProductNotificatio
225
228
  orderingSubjectFact: 'accountId',
226
229
  allowedTriggers: ['each_match'],
227
230
  },
231
+ {
232
+ eventName: ProductNotificationEvent.BillingPurchaseLate,
233
+ producerKey: ProductNotificationProducerKey.BillingPurchases,
234
+ requiredFacts: {
235
+ accountId: 'string',
236
+ operationId: 'string',
237
+ thresholdSeconds: 'number',
238
+ targetUrl: 'string',
239
+ },
240
+ orderingSubjectFact: 'operationId',
241
+ allowedTriggers: ['each_match'],
242
+ },
228
243
  ...PRODUCT_NOTIFICATION_COMPATIBILITY_EVENT_NAMES.map((eventName) => ({
229
244
  eventName,
230
245
  producerKey: ProductNotificationProducerKey.LegacyProductNotifications,
@@ -0,0 +1,31 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+ var _chunkJXCEXXKWjs = require('./chunk-JXCEXXKW.js');
13
+ require('./chunk-VL5IYXS3.js');
14
+ require('./chunk-SJIF45BK.js');
15
+ require('./chunk-XNYIZMNQ.js');
16
+ require('./chunk-Y6PJVWDY.js');
17
+ require('./chunk-7P5AA3SN.js');
18
+ require('./chunk-OG64RBAC.js');
19
+ require('./chunk-COGTRVWW.js');
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+ exports.EXIT_WORKSPACE_MISMATCH = _chunkJXCEXXKWjs.EXIT_WORKSPACE_MISMATCH; exports.clearPendingClaim = _chunkJXCEXXKWjs.clearPendingClaim; exports.clearSatisfiedPendingClaim = _chunkJXCEXXKWjs.clearSatisfiedPendingClaim; exports.handleRegister = _chunkJXCEXXKWjs.handleRegister; exports.handleStatus = _chunkJXCEXXKWjs.handleStatus; exports.handleWait = _chunkJXCEXXKWjs.handleWait; exports.readPendingAuthClaim = _chunkJXCEXXKWjs.readPendingAuthClaim; exports.registerAuthCommands = _chunkJXCEXXKWjs.registerAuthCommands; exports.reportSetupCompleted = _chunkJXCEXXKWjs.reportSetupCompleted; exports.resolvePendingAuthClaimForResume = _chunkJXCEXXKWjs.resolvePendingAuthClaimForResume;
@@ -9,11 +9,11 @@ import {
9
9
  registerAuthCommands,
10
10
  reportSetupCompleted,
11
11
  resolvePendingAuthClaimForResume
12
- } from "./chunk-XAMWA45P.mjs";
13
- import "./chunk-OJH4W52K.mjs";
14
- import "./chunk-G6TM2GK2.mjs";
12
+ } from "./chunk-XRZUDK6O.mjs";
13
+ import "./chunk-DRHVFFMJ.mjs";
14
+ import "./chunk-J5NN6XCF.mjs";
15
15
  import "./chunk-DLIRSHV6.mjs";
16
- import "./chunk-AC7QCWXV.mjs";
16
+ import "./chunk-RN7NIZIL.mjs";
17
17
  import "./chunk-NXGCO4JB.mjs";
18
18
  import "./chunk-WZYKRD7T.mjs";
19
19
  import "./chunk-KRD6H754.mjs";