@warmio/contracts 3.0.9 → 3.0.10

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../../src/mcp/findings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ import { z } from 'zod';
2
+ export const getFindingsMcpInputShape = {};
3
+ export const getFindingsMcpInputSchema = z.object(getFindingsMcpInputShape).strict();
4
+ export const FINDINGS_CONTRACT_VERSION = 1;
5
+ export const FINDINGS_RECENT_DAYS = 30;
6
+ export const FINDINGS_UPCOMING_DAYS = 14;
7
+ export const FINDINGS_MAX_ITEMS = 100;
8
+ export const FINDING_TYPES = [
9
+ 'connection_repair',
10
+ 'payment_due',
11
+ 'upcoming_charge',
12
+ 'unusual_charge',
13
+ 'duplicate_charge',
14
+ 'above_average_charge',
15
+ 'fee_charged',
16
+ 'low_cash',
17
+ ];
18
+ export const FINDING_ACCOUNT_KINDS = [
19
+ 'credit',
20
+ 'depository',
21
+ 'loan',
22
+ 'investment',
23
+ 'other',
24
+ ];
25
+ export const FINDING_CANCEL_ACTION_TYPES = [
26
+ 'cancel_subscription',
27
+ 'manage_subscription',
28
+ 'contact_support',
29
+ ];
30
+ const dateSchema = z.string().regex(/^\d{4}-\d{2}-\d{2}$/u, 'Expected YYYY-MM-DD date.');
31
+ const dateTimeSchema = z.string().datetime({ offset: true });
32
+ const idSchema = z.string().min(1).max(256);
33
+ const signedAmountSchema = z.number().describe('Negative for money out, positive for money in.');
34
+ const owedAmountSchema = z.number().describe('Amount owed, as a positive number.');
35
+ export const findingAccountSchema = z
36
+ .object({
37
+ name: z.string().nullable(),
38
+ institution: z.string().nullable(),
39
+ mask: z.string().nullable(),
40
+ kind: z.enum(FINDING_ACCOUNT_KINDS),
41
+ })
42
+ .strict();
43
+ const linkSchema = z
44
+ .object({
45
+ label: z.string(),
46
+ url: z.string().url(),
47
+ })
48
+ .strict();
49
+ export const findingCancelOptionsSchema = z
50
+ .object({
51
+ actions: z.array(linkSchema.extend({ type: z.enum(FINDING_CANCEL_ACTION_TYPES) }).strict()),
52
+ billing_alternatives: z
53
+ .array(linkSchema)
54
+ .describe('App store billing pages. Each applies only if the user pays through that store.'),
55
+ })
56
+ .strict();
57
+ const baseFields = {
58
+ id: idSchema,
59
+ title: z.string(),
60
+ warm_url: z.string().url(),
61
+ };
62
+ const chargeFields = {
63
+ ...baseFields,
64
+ account: findingAccountSchema.nullable(),
65
+ currency: z.string(),
66
+ };
67
+ const recurringFields = {
68
+ ...chargeFields,
69
+ merchant: z.string(),
70
+ frequency: z.string().nullable(),
71
+ last_amount: signedAmountSchema.nullable(),
72
+ average_amount: signedAmountSchema.nullable(),
73
+ cancel: findingCancelOptionsSchema.nullable(),
74
+ };
75
+ const chargeEvidenceSchema = z
76
+ .object({
77
+ transaction_id: idSchema.nullable(),
78
+ date: dateSchema,
79
+ amount: signedAmountSchema,
80
+ })
81
+ .strict();
82
+ export const findingSchema = z.discriminatedUnion('type', [
83
+ z
84
+ .object({
85
+ ...baseFields,
86
+ type: z.literal('connection_repair'),
87
+ institution: z.string().nullable(),
88
+ since: dateSchema.nullable(),
89
+ })
90
+ .strict(),
91
+ z
92
+ .object({
93
+ ...chargeFields,
94
+ type: z.literal('payment_due'),
95
+ due_date: dateSchema.nullable(),
96
+ overdue: z.boolean(),
97
+ minimum_payment: owedAmountSchema.nullable(),
98
+ statement_balance: owedAmountSchema.nullable(),
99
+ apr_percentage: z.number().nullable(),
100
+ })
101
+ .strict(),
102
+ z
103
+ .object({
104
+ ...recurringFields,
105
+ type: z.literal('upcoming_charge'),
106
+ expected_date: dateSchema.describe('Date Warm expects the next charge, from the past pattern.'),
107
+ })
108
+ .strict(),
109
+ z
110
+ .object({
111
+ ...chargeFields,
112
+ type: z.literal('unusual_charge'),
113
+ reason: z.enum(['first_time_large', 'above_usual']),
114
+ transaction_id: idSchema.nullable(),
115
+ date: dateSchema.describe('Date the charge posted.'),
116
+ amount: signedAmountSchema,
117
+ usual_amount: signedAmountSchema.nullable(),
118
+ merchant: z.string().nullable(),
119
+ category: z.string().nullable(),
120
+ })
121
+ .strict(),
122
+ z
123
+ .object({
124
+ ...chargeFields,
125
+ type: z.literal('duplicate_charge'),
126
+ merchant: z.string().nullable(),
127
+ charges: z.array(chargeEvidenceSchema).min(2),
128
+ })
129
+ .strict(),
130
+ z
131
+ .object({
132
+ ...recurringFields,
133
+ type: z.literal('above_average_charge'),
134
+ last_date: dateSchema.nullable(),
135
+ })
136
+ .strict(),
137
+ z
138
+ .object({
139
+ ...chargeFields,
140
+ type: z.literal('fee_charged'),
141
+ transaction_id: idSchema,
142
+ date: dateSchema.describe('Date the fee posted.'),
143
+ amount: signedAmountSchema,
144
+ name: z.string(),
145
+ detailed_category: z.string().nullable(),
146
+ })
147
+ .strict(),
148
+ z
149
+ .object({
150
+ ...baseFields,
151
+ type: z.literal('low_cash'),
152
+ account: findingAccountSchema.nullable(),
153
+ currency: z.string(),
154
+ observed_on: dateSchema,
155
+ balance: signedAmountSchema.nullable(),
156
+ days_until_zero: z.number().nullable(),
157
+ })
158
+ .strict(),
159
+ ]);
160
+ export const findingsResponseSchema = z
161
+ .object({
162
+ version: z.literal(FINDINGS_CONTRACT_VERSION),
163
+ generated_at: dateTimeSchema,
164
+ as_of: dateSchema.describe("Today's date in the user's time zone."),
165
+ time_zone: z.string(),
166
+ recent_days: z.literal(FINDINGS_RECENT_DAYS),
167
+ upcoming_days: z.literal(FINDINGS_UPCOMING_DAYS),
168
+ truncated: z.boolean(),
169
+ findings: z.array(findingSchema).max(FINDINGS_MAX_ITEMS),
170
+ })
171
+ .strict();
172
+ //# sourceMappingURL=findings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings.js","sourceRoot":"","sources":["../../src/mcp/findings.ts"],"names":[],"mappings":"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"}