@warmio/contracts 3.0.10 → 3.1.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 (53) hide show
  1. package/dist/api/endpoints.d.ts +11 -0
  2. package/dist/api/endpoints.d.ts.map +1 -1
  3. package/dist/api/endpoints.js +9 -0
  4. package/dist/api/endpoints.js.map +1 -1
  5. package/dist/financial-context-artifact-protocol.d.ts +36 -0
  6. package/dist/financial-context-artifact-protocol.d.ts.map +1 -1
  7. package/dist/generated/mcp-package-release-metadata.d.ts +1 -1
  8. package/dist/generated/mcp-package-release-metadata.d.ts.map +1 -1
  9. package/dist/generated/mcp-package-release-metadata.js +1 -1
  10. package/dist/generated/mcp-package-release-metadata.js.map +1 -1
  11. package/dist/generated/private-mcp-tool-descriptors.d.ts +27 -0
  12. package/dist/generated/private-mcp-tool-descriptors.d.ts.map +1 -1
  13. package/dist/generated/private-mcp-tool-descriptors.js +36 -0
  14. package/dist/generated/private-mcp-tool-descriptors.js.map +1 -1
  15. package/dist/generated/warm-app-api-manifest.d.ts +32 -5
  16. package/dist/generated/warm-app-api-manifest.d.ts.map +1 -1
  17. package/dist/generated/warm-app-api-manifest.js +41 -5
  18. package/dist/generated/warm-app-api-manifest.js.map +1 -1
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +1 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/mcp/card-benefits.d.ts +380 -0
  24. package/dist/mcp/card-benefits.d.ts.map +1 -0
  25. package/dist/mcp/card-benefits.js +109 -0
  26. package/dist/mcp/card-benefits.js.map +1 -0
  27. package/dist/mcp/hosted-write-tools.d.ts +393 -1
  28. package/dist/mcp/hosted-write-tools.d.ts.map +1 -1
  29. package/dist/mcp/hosted-write-tools.js +9 -0
  30. package/dist/mcp/hosted-write-tools.js.map +1 -1
  31. package/dist/mcp/index.d.ts +1 -0
  32. package/dist/mcp/index.d.ts.map +1 -1
  33. package/dist/mcp/index.js +1 -0
  34. package/dist/mcp/index.js.map +1 -1
  35. package/dist/mcp/public-output.d.ts +241 -3
  36. package/dist/mcp/public-output.d.ts.map +1 -1
  37. package/dist/mcp/public-output.js +35 -2
  38. package/dist/mcp/public-output.js.map +1 -1
  39. package/dist/mcp/public-tools.d.ts +196 -4
  40. package/dist/mcp/public-tools.d.ts.map +1 -1
  41. package/dist/mcp/public-tools.js +7 -3
  42. package/dist/mcp/public-tools.js.map +1 -1
  43. package/dist/mcp/tools.d.ts +68 -0
  44. package/dist/mcp/tools.d.ts.map +1 -1
  45. package/dist/schemas/financial-context.d.ts +26 -0
  46. package/dist/schemas/financial-context.d.ts.map +1 -1
  47. package/dist/schemas/financial-context.js +2 -0
  48. package/dist/schemas/financial-context.js.map +1 -1
  49. package/dist/scrub-text.d.ts +4 -0
  50. package/dist/scrub-text.d.ts.map +1 -0
  51. package/dist/scrub-text.js +18 -0
  52. package/dist/scrub-text.js.map +1 -0
  53. package/package.json +1 -1
@@ -0,0 +1,380 @@
1
+ import { z } from 'zod';
2
+ export declare const getCardBenefitsMcpInputShape: {};
3
+ export declare const getCardBenefitsMcpInputSchema: z.ZodObject<{}, "strict", z.ZodTypeAny, {}, {}>;
4
+ export declare const CARD_BENEFIT_KINDS: readonly ['statement_credit', 'in_app_credit', 'membership', 'insurance', 'lounge', 'status', 'fee_credit', 'reward_rate', 'other'];
5
+ export declare const CARD_BENEFIT_PERIODS: readonly ['monthly', 'quarterly', 'semiannual', 'calendar_year', 'anniversary_year', 'every_4_years', 'per_occurrence', 'one_time', 'none'];
6
+ export declare const CARD_BENEFIT_RESET_BASES: readonly ['calendar', 'anniversary_entered', 'anniversary_unknown', 'dated', 'rolling'];
7
+ export declare const CARD_BENEFIT_MATCH_TYPES: readonly ['included_service', 'may_qualify', 'better_card'];
8
+ export declare const cardBenefitsResponseSchema: z.ZodObject<{
9
+ version: z.ZodLiteral<1>;
10
+ generated_at: z.ZodString;
11
+ as_of: z.ZodString;
12
+ time_zone: z.ZodString;
13
+ catalog_version: z.ZodString;
14
+ notes: z.ZodArray<z.ZodString, "many">;
15
+ cards: z.ZodArray<z.ZodObject<{
16
+ account_id: z.ZodString;
17
+ display_name: z.ZodString;
18
+ product: z.ZodObject<{
19
+ slug: z.ZodString;
20
+ name: z.ZodString;
21
+ issuer: z.ZodString;
22
+ }, "strict", z.ZodTypeAny, {
23
+ slug: string;
24
+ name: string;
25
+ issuer: string;
26
+ }, {
27
+ slug: string;
28
+ name: string;
29
+ issuer: string;
30
+ }>;
31
+ anniversary_month: z.ZodNullable<z.ZodNumber>;
32
+ benefits: z.ZodArray<z.ZodObject<{
33
+ id: z.ZodString;
34
+ kind: z.ZodEnum<["statement_credit", "in_app_credit", "membership", "insurance", "lounge", "status", "fee_credit", "reward_rate", "other"]>;
35
+ title: z.ZodString;
36
+ summary: z.ZodString;
37
+ amount: z.ZodNullable<z.ZodObject<{
38
+ per_period_cents: z.ZodNumber;
39
+ period: z.ZodEnum<["monthly", "quarterly", "semiannual", "calendar_year", "anniversary_year", "every_4_years", "per_occurrence", "one_time", "none"]>;
40
+ annual_cap_cents: z.ZodNullable<z.ZodNumber>;
41
+ }, "strict", z.ZodTypeAny, {
42
+ per_period_cents: number;
43
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
44
+ annual_cap_cents: number | null;
45
+ }, {
46
+ per_period_cents: number;
47
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
48
+ annual_cap_cents: number | null;
49
+ }>>;
50
+ value_cents: z.ZodNullable<z.ZodNumber>;
51
+ reset: z.ZodObject<{
52
+ period: z.ZodEnum<["monthly", "quarterly", "semiannual", "calendar_year", "anniversary_year", "every_4_years", "per_occurrence", "one_time", "none"]>;
53
+ next_reset_on: z.ZodNullable<z.ZodString>;
54
+ basis: z.ZodEnum<["calendar", "anniversary_entered", "anniversary_unknown", "dated", "rolling"]>;
55
+ }, "strict", z.ZodTypeAny, {
56
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
57
+ next_reset_on: string | null;
58
+ basis: "anniversary_entered" | "anniversary_unknown" | "calendar" | "dated" | "rolling";
59
+ }, {
60
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
61
+ next_reset_on: string | null;
62
+ basis: "anniversary_entered" | "anniversary_unknown" | "calendar" | "dated" | "rolling";
63
+ }>;
64
+ ends_on: z.ZodNullable<z.ZodString>;
65
+ activate_by: z.ZodNullable<z.ZodString>;
66
+ term_months: z.ZodNullable<z.ZodNumber>;
67
+ activation_required: z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"unknown">]>;
68
+ conditions: z.ZodString;
69
+ status: z.ZodEnum<["current", "needs_check"]>;
70
+ source: z.ZodObject<{
71
+ url: z.ZodString;
72
+ reviewed_on: z.ZodString;
73
+ }, "strict", z.ZodTypeAny, {
74
+ url: string;
75
+ reviewed_on: string;
76
+ }, {
77
+ url: string;
78
+ reviewed_on: string;
79
+ }>;
80
+ matches: z.ZodArray<z.ZodObject<{
81
+ type: z.ZodEnum<["included_service", "may_qualify", "better_card"]>;
82
+ text: z.ZodString;
83
+ stream_id: z.ZodOptional<z.ZodString>;
84
+ transaction_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
85
+ amount_cents: z.ZodOptional<z.ZodNumber>;
86
+ }, "strict", z.ZodTypeAny, {
87
+ type: "better_card" | "included_service" | "may_qualify";
88
+ text: string;
89
+ stream_id?: string | undefined;
90
+ transaction_ids?: string[] | undefined;
91
+ amount_cents?: number | undefined;
92
+ }, {
93
+ type: "better_card" | "included_service" | "may_qualify";
94
+ text: string;
95
+ stream_id?: string | undefined;
96
+ transaction_ids?: string[] | undefined;
97
+ amount_cents?: number | undefined;
98
+ }>, "many">;
99
+ }, "strict", z.ZodTypeAny, {
100
+ id: string;
101
+ kind: "fee_credit" | "in_app_credit" | "insurance" | "lounge" | "membership" | "other" | "reward_rate" | "statement_credit" | "status";
102
+ title: string;
103
+ summary: string;
104
+ amount: {
105
+ per_period_cents: number;
106
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
107
+ annual_cap_cents: number | null;
108
+ } | null;
109
+ value_cents: number | null;
110
+ reset: {
111
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
112
+ next_reset_on: string | null;
113
+ basis: "anniversary_entered" | "anniversary_unknown" | "calendar" | "dated" | "rolling";
114
+ };
115
+ ends_on: string | null;
116
+ activate_by: string | null;
117
+ term_months: number | null;
118
+ activation_required: "unknown" | boolean;
119
+ conditions: string;
120
+ status: "current" | "needs_check";
121
+ source: {
122
+ url: string;
123
+ reviewed_on: string;
124
+ };
125
+ matches: {
126
+ type: "better_card" | "included_service" | "may_qualify";
127
+ text: string;
128
+ stream_id?: string | undefined;
129
+ transaction_ids?: string[] | undefined;
130
+ amount_cents?: number | undefined;
131
+ }[];
132
+ }, {
133
+ id: string;
134
+ kind: "fee_credit" | "in_app_credit" | "insurance" | "lounge" | "membership" | "other" | "reward_rate" | "statement_credit" | "status";
135
+ title: string;
136
+ summary: string;
137
+ amount: {
138
+ per_period_cents: number;
139
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
140
+ annual_cap_cents: number | null;
141
+ } | null;
142
+ value_cents: number | null;
143
+ reset: {
144
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
145
+ next_reset_on: string | null;
146
+ basis: "anniversary_entered" | "anniversary_unknown" | "calendar" | "dated" | "rolling";
147
+ };
148
+ ends_on: string | null;
149
+ activate_by: string | null;
150
+ term_months: number | null;
151
+ activation_required: "unknown" | boolean;
152
+ conditions: string;
153
+ status: "current" | "needs_check";
154
+ source: {
155
+ url: string;
156
+ reviewed_on: string;
157
+ };
158
+ matches: {
159
+ type: "better_card" | "included_service" | "may_qualify";
160
+ text: string;
161
+ stream_id?: string | undefined;
162
+ transaction_ids?: string[] | undefined;
163
+ amount_cents?: number | undefined;
164
+ }[];
165
+ }>, "many">;
166
+ }, "strict", z.ZodTypeAny, {
167
+ account_id: string;
168
+ display_name: string;
169
+ product: {
170
+ slug: string;
171
+ name: string;
172
+ issuer: string;
173
+ };
174
+ anniversary_month: number | null;
175
+ benefits: {
176
+ id: string;
177
+ kind: "fee_credit" | "in_app_credit" | "insurance" | "lounge" | "membership" | "other" | "reward_rate" | "statement_credit" | "status";
178
+ title: string;
179
+ summary: string;
180
+ amount: {
181
+ per_period_cents: number;
182
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
183
+ annual_cap_cents: number | null;
184
+ } | null;
185
+ value_cents: number | null;
186
+ reset: {
187
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
188
+ next_reset_on: string | null;
189
+ basis: "anniversary_entered" | "anniversary_unknown" | "calendar" | "dated" | "rolling";
190
+ };
191
+ ends_on: string | null;
192
+ activate_by: string | null;
193
+ term_months: number | null;
194
+ activation_required: "unknown" | boolean;
195
+ conditions: string;
196
+ status: "current" | "needs_check";
197
+ source: {
198
+ url: string;
199
+ reviewed_on: string;
200
+ };
201
+ matches: {
202
+ type: "better_card" | "included_service" | "may_qualify";
203
+ text: string;
204
+ stream_id?: string | undefined;
205
+ transaction_ids?: string[] | undefined;
206
+ amount_cents?: number | undefined;
207
+ }[];
208
+ }[];
209
+ }, {
210
+ account_id: string;
211
+ display_name: string;
212
+ product: {
213
+ slug: string;
214
+ name: string;
215
+ issuer: string;
216
+ };
217
+ anniversary_month: number | null;
218
+ benefits: {
219
+ id: string;
220
+ kind: "fee_credit" | "in_app_credit" | "insurance" | "lounge" | "membership" | "other" | "reward_rate" | "statement_credit" | "status";
221
+ title: string;
222
+ summary: string;
223
+ amount: {
224
+ per_period_cents: number;
225
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
226
+ annual_cap_cents: number | null;
227
+ } | null;
228
+ value_cents: number | null;
229
+ reset: {
230
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
231
+ next_reset_on: string | null;
232
+ basis: "anniversary_entered" | "anniversary_unknown" | "calendar" | "dated" | "rolling";
233
+ };
234
+ ends_on: string | null;
235
+ activate_by: string | null;
236
+ term_months: number | null;
237
+ activation_required: "unknown" | boolean;
238
+ conditions: string;
239
+ status: "current" | "needs_check";
240
+ source: {
241
+ url: string;
242
+ reviewed_on: string;
243
+ };
244
+ matches: {
245
+ type: "better_card" | "included_service" | "may_qualify";
246
+ text: string;
247
+ stream_id?: string | undefined;
248
+ transaction_ids?: string[] | undefined;
249
+ amount_cents?: number | undefined;
250
+ }[];
251
+ }[];
252
+ }>, "many">;
253
+ uncovered_cards: z.ZodArray<z.ZodObject<{
254
+ account_id: z.ZodString;
255
+ display_name: z.ZodString;
256
+ reason: z.ZodEnum<["unidentified", "not_in_catalog"]>;
257
+ }, "strict", z.ZodTypeAny, {
258
+ account_id: string;
259
+ display_name: string;
260
+ reason: "not_in_catalog" | "unidentified";
261
+ }, {
262
+ account_id: string;
263
+ display_name: string;
264
+ reason: "not_in_catalog" | "unidentified";
265
+ }>, "many">;
266
+ }, "strict", z.ZodTypeAny, {
267
+ version: 1;
268
+ generated_at: string;
269
+ as_of: string;
270
+ time_zone: string;
271
+ catalog_version: string;
272
+ notes: string[];
273
+ cards: {
274
+ account_id: string;
275
+ display_name: string;
276
+ product: {
277
+ slug: string;
278
+ name: string;
279
+ issuer: string;
280
+ };
281
+ anniversary_month: number | null;
282
+ benefits: {
283
+ id: string;
284
+ kind: "fee_credit" | "in_app_credit" | "insurance" | "lounge" | "membership" | "other" | "reward_rate" | "statement_credit" | "status";
285
+ title: string;
286
+ summary: string;
287
+ amount: {
288
+ per_period_cents: number;
289
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
290
+ annual_cap_cents: number | null;
291
+ } | null;
292
+ value_cents: number | null;
293
+ reset: {
294
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
295
+ next_reset_on: string | null;
296
+ basis: "anniversary_entered" | "anniversary_unknown" | "calendar" | "dated" | "rolling";
297
+ };
298
+ ends_on: string | null;
299
+ activate_by: string | null;
300
+ term_months: number | null;
301
+ activation_required: "unknown" | boolean;
302
+ conditions: string;
303
+ status: "current" | "needs_check";
304
+ source: {
305
+ url: string;
306
+ reviewed_on: string;
307
+ };
308
+ matches: {
309
+ type: "better_card" | "included_service" | "may_qualify";
310
+ text: string;
311
+ stream_id?: string | undefined;
312
+ transaction_ids?: string[] | undefined;
313
+ amount_cents?: number | undefined;
314
+ }[];
315
+ }[];
316
+ }[];
317
+ uncovered_cards: {
318
+ account_id: string;
319
+ display_name: string;
320
+ reason: "not_in_catalog" | "unidentified";
321
+ }[];
322
+ }, {
323
+ version: 1;
324
+ generated_at: string;
325
+ as_of: string;
326
+ time_zone: string;
327
+ catalog_version: string;
328
+ notes: string[];
329
+ cards: {
330
+ account_id: string;
331
+ display_name: string;
332
+ product: {
333
+ slug: string;
334
+ name: string;
335
+ issuer: string;
336
+ };
337
+ anniversary_month: number | null;
338
+ benefits: {
339
+ id: string;
340
+ kind: "fee_credit" | "in_app_credit" | "insurance" | "lounge" | "membership" | "other" | "reward_rate" | "statement_credit" | "status";
341
+ title: string;
342
+ summary: string;
343
+ amount: {
344
+ per_period_cents: number;
345
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
346
+ annual_cap_cents: number | null;
347
+ } | null;
348
+ value_cents: number | null;
349
+ reset: {
350
+ period: "anniversary_year" | "calendar_year" | "every_4_years" | "monthly" | "none" | "one_time" | "per_occurrence" | "quarterly" | "semiannual";
351
+ next_reset_on: string | null;
352
+ basis: "anniversary_entered" | "anniversary_unknown" | "calendar" | "dated" | "rolling";
353
+ };
354
+ ends_on: string | null;
355
+ activate_by: string | null;
356
+ term_months: number | null;
357
+ activation_required: "unknown" | boolean;
358
+ conditions: string;
359
+ status: "current" | "needs_check";
360
+ source: {
361
+ url: string;
362
+ reviewed_on: string;
363
+ };
364
+ matches: {
365
+ type: "better_card" | "included_service" | "may_qualify";
366
+ text: string;
367
+ stream_id?: string | undefined;
368
+ transaction_ids?: string[] | undefined;
369
+ amount_cents?: number | undefined;
370
+ }[];
371
+ }[];
372
+ }[];
373
+ uncovered_cards: {
374
+ account_id: string;
375
+ display_name: string;
376
+ reason: "not_in_catalog" | "unidentified";
377
+ }[];
378
+ }>;
379
+ export type CardBenefitsResponse = z.infer<typeof cardBenefitsResponseSchema>;
380
+ //# sourceMappingURL=card-benefits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-benefits.d.ts","sourceRoot":"","sources":["../../src/mcp/card-benefits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAoB,MAAM,KAAK,CAAC;AAE1C,eAAO,MAAM,4BAA4B,IAA2B,CAAC;AACrE,eAAO,MAAM,6BAA6B,iDAAkD,CAAC;AAK7F,eAAO,MAAM,kBAAkB,YAC7B,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,OAAO,CACC,CAAC;AAEX,eAAO,MAAM,oBAAoB,YAC/B,SAAS,EACT,WAAW,EACX,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,MAAM,CACE,CAAC;AAEX,eAAO,MAAM,wBAAwB,YACnC,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,OAAO,EACP,SAAS,CACD,CAAC;AAEX,eAAO,MAAM,wBAAwB,YAAI,kBAAkB,EAAE,aAAa,EAAE,aAAa,CAAU,CAAC;AAqDpG,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6B5B,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
@@ -0,0 +1,109 @@
1
+ import { z } from 'zod';
2
+ export const getCardBenefitsMcpInputShape = {};
3
+ export const getCardBenefitsMcpInputSchema = z.object(getCardBenefitsMcpInputShape).strict();
4
+ const dateSchema = z.string().regex(/^\d{4}-\d{2}-\d{2}$/u, 'Expected YYYY-MM-DD date.');
5
+ const dateTimeSchema = z.string().datetime({ offset: true });
6
+ export const CARD_BENEFIT_KINDS = [
7
+ 'statement_credit',
8
+ 'in_app_credit',
9
+ 'membership',
10
+ 'insurance',
11
+ 'lounge',
12
+ 'status',
13
+ 'fee_credit',
14
+ 'reward_rate',
15
+ 'other',
16
+ ];
17
+ export const CARD_BENEFIT_PERIODS = [
18
+ 'monthly',
19
+ 'quarterly',
20
+ 'semiannual',
21
+ 'calendar_year',
22
+ 'anniversary_year',
23
+ 'every_4_years',
24
+ 'per_occurrence',
25
+ 'one_time',
26
+ 'none',
27
+ ];
28
+ export const CARD_BENEFIT_RESET_BASES = [
29
+ 'calendar',
30
+ 'anniversary_entered',
31
+ 'anniversary_unknown',
32
+ 'dated',
33
+ 'rolling',
34
+ ];
35
+ export const CARD_BENEFIT_MATCH_TYPES = ['included_service', 'may_qualify', 'better_card'];
36
+ const benefitAmountSchema = z
37
+ .object({
38
+ per_period_cents: z.number().int().nonnegative(),
39
+ period: z.enum(CARD_BENEFIT_PERIODS),
40
+ annual_cap_cents: z.number().int().nonnegative().nullable(),
41
+ })
42
+ .strict();
43
+ const benefitResetSchema = z
44
+ .object({
45
+ period: z.enum(CARD_BENEFIT_PERIODS),
46
+ next_reset_on: dateSchema.nullable(),
47
+ basis: z.enum(CARD_BENEFIT_RESET_BASES),
48
+ })
49
+ .strict();
50
+ const benefitMatchSchema = z
51
+ .object({
52
+ type: z.enum(CARD_BENEFIT_MATCH_TYPES),
53
+ text: z.string(),
54
+ stream_id: z.string().optional(),
55
+ transaction_ids: z.array(z.string()).optional(),
56
+ amount_cents: z.number().int().optional(),
57
+ })
58
+ .strict();
59
+ const benefitSchema = z
60
+ .object({
61
+ id: z.string(),
62
+ kind: z.enum(CARD_BENEFIT_KINDS),
63
+ title: z.string(),
64
+ summary: z.string(),
65
+ amount: benefitAmountSchema.nullable(),
66
+ value_cents: z.number().int().nonnegative().nullable(),
67
+ reset: benefitResetSchema,
68
+ ends_on: dateSchema.nullable(),
69
+ activate_by: dateSchema.nullable(),
70
+ term_months: z.number().int().positive().nullable(),
71
+ activation_required: z.union([z.boolean(), z.literal('unknown')]),
72
+ conditions: z.string(),
73
+ status: z.enum(['current', 'needs_check']),
74
+ source: z
75
+ .object({
76
+ url: z.string().url(),
77
+ reviewed_on: dateSchema,
78
+ })
79
+ .strict(),
80
+ matches: z.array(benefitMatchSchema),
81
+ })
82
+ .strict();
83
+ export const cardBenefitsResponseSchema = z
84
+ .object({
85
+ version: z.literal(1),
86
+ generated_at: dateTimeSchema,
87
+ as_of: dateSchema,
88
+ time_zone: z.string(),
89
+ catalog_version: z.string().regex(/^[a-f0-9]{64}$/u),
90
+ notes: z.array(z.string()),
91
+ cards: z.array(z
92
+ .object({
93
+ account_id: z.string(),
94
+ display_name: z.string(),
95
+ product: z.object({ slug: z.string(), name: z.string(), issuer: z.string() }).strict(),
96
+ anniversary_month: z.number().int().min(1).max(12).nullable(),
97
+ benefits: z.array(benefitSchema),
98
+ })
99
+ .strict()),
100
+ uncovered_cards: z.array(z
101
+ .object({
102
+ account_id: z.string(),
103
+ display_name: z.string(),
104
+ reason: z.enum(['unidentified', 'not_in_catalog']),
105
+ })
106
+ .strict()),
107
+ })
108
+ .strict();
109
+ //# sourceMappingURL=card-benefits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-benefits.js","sourceRoot":"","sources":["../../src/mcp/card-benefits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAoB,MAAM,KAAK,CAAC;AAE1C,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAwB,CAAC;AACrE,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,MAAM,EAAE,CAAC;AAE7F,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,EAAE,2BAA2B,CAAC,CAAC;AACzF,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,kBAAkB;IAClB,eAAe;IACf,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,OAAO;CACC,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,SAAS;IACT,WAAW;IACX,YAAY;IACZ,eAAe;IACf,kBAAkB;IAClB,eAAe;IACf,gBAAgB;IAChB,UAAU;IACV,MAAM;CACE,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,UAAU;IACV,qBAAqB;IACrB,qBAAqB;IACrB,OAAO;IACP,SAAS;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,kBAAkB,EAAE,aAAa,EAAE,aAAa,CAAU,CAAC;AAEpG,MAAM,mBAAmB,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAChD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACpC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CAC5D,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,kBAAkB,GAAG,CAAC;KACzB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACpC,aAAa,EAAE,UAAU,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;CACxC,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,kBAAkB,GAAG,CAAC;KACzB,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAC1C,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACtD,KAAK,EAAE,kBAAkB;IACzB,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE;IAC9B,WAAW,EAAE,UAAU,CAAC,QAAQ,EAAE;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACnD,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACjE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;QACrB,WAAW,EAAE,UAAU;KACxB,CAAC;SACD,MAAM,EAAE;IACX,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;CACrC,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,YAAY,EAAE,cAAc;IAC5B,KAAK,EAAE,UAAU;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACpD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC;SACE,MAAM,CAAC;QACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACtF,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC7D,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;KACjC,CAAC;SACD,MAAM,EAAE,CACZ;IACD,eAAe,EAAE,CAAC,CAAC,KAAK,CACtB,CAAC;SACE,MAAM,CAAC;QACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;KACnD,CAAC;SACD,MAAM,EAAE,CACZ;CACF,CAAC;KACD,MAAM,EAAE,CAAC"}