@daften/fireflyiii-mcp 0.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.
- package/.env.example +15 -0
- package/CHANGELOG.md +28 -0
- package/LICENSE +21 -0
- package/README.md +605 -0
- package/dist/args.d.ts +10 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +65 -0
- package/dist/args.js.map +1 -0
- package/dist/client.d.ts +25 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +146 -0
- package/dist/client.js.map +1 -0
- package/dist/http.d.ts +13 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +271 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +5 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +13 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/_annotations.d.ts +17 -0
- package/dist/tools/_annotations.d.ts.map +1 -0
- package/dist/tools/_annotations.js +9 -0
- package/dist/tools/_annotations.js.map +1 -0
- package/dist/tools/_helpers.d.ts +17 -0
- package/dist/tools/_helpers.d.ts.map +1 -0
- package/dist/tools/_helpers.js +24 -0
- package/dist/tools/_helpers.js.map +1 -0
- package/dist/tools/accounts.d.ts +48 -0
- package/dist/tools/accounts.d.ts.map +1 -0
- package/dist/tools/accounts.js +151 -0
- package/dist/tools/accounts.js.map +1 -0
- package/dist/tools/attachments.d.ts +31 -0
- package/dist/tools/attachments.d.ts.map +1 -0
- package/dist/tools/attachments.js +112 -0
- package/dist/tools/attachments.js.map +1 -0
- package/dist/tools/bills.d.ts +43 -0
- package/dist/tools/bills.d.ts.map +1 -0
- package/dist/tools/bills.js +112 -0
- package/dist/tools/bills.js.map +1 -0
- package/dist/tools/budgets.d.ts +65 -0
- package/dist/tools/budgets.d.ts.map +1 -0
- package/dist/tools/budgets.js +209 -0
- package/dist/tools/budgets.js.map +1 -0
- package/dist/tools/categories.d.ts +27 -0
- package/dist/tools/categories.d.ts.map +1 -0
- package/dist/tools/categories.js +83 -0
- package/dist/tools/categories.js.map +1 -0
- package/dist/tools/currencies.d.ts +32 -0
- package/dist/tools/currencies.d.ts.map +1 -0
- package/dist/tools/currencies.js +104 -0
- package/dist/tools/currencies.js.map +1 -0
- package/dist/tools/exports.d.ts +10 -0
- package/dist/tools/exports.d.ts.map +1 -0
- package/dist/tools/exports.js +37 -0
- package/dist/tools/exports.js.map +1 -0
- package/dist/tools/index.d.ts +14 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +94 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/object-groups.d.ts +30 -0
- package/dist/tools/object-groups.d.ts.map +1 -0
- package/dist/tools/object-groups.js +107 -0
- package/dist/tools/object-groups.js.map +1 -0
- package/dist/tools/piggy-banks.d.ts +41 -0
- package/dist/tools/piggy-banks.d.ts.map +1 -0
- package/dist/tools/piggy-banks.js +110 -0
- package/dist/tools/piggy-banks.js.map +1 -0
- package/dist/tools/recurring.d.ts +70 -0
- package/dist/tools/recurring.d.ts.map +1 -0
- package/dist/tools/recurring.js +279 -0
- package/dist/tools/recurring.js.map +1 -0
- package/dist/tools/reports.d.ts +40 -0
- package/dist/tools/reports.d.ts.map +1 -0
- package/dist/tools/reports.js +413 -0
- package/dist/tools/reports.js.map +1 -0
- package/dist/tools/rules.d.ts +105 -0
- package/dist/tools/rules.d.ts.map +1 -0
- package/dist/tools/rules.js +361 -0
- package/dist/tools/rules.js.map +1 -0
- package/dist/tools/transaction-links.d.ts +30 -0
- package/dist/tools/transaction-links.d.ts.map +1 -0
- package/dist/tools/transaction-links.js +91 -0
- package/dist/tools/transaction-links.js.map +1 -0
- package/dist/tools/transactions.d.ts +72 -0
- package/dist/tools/transactions.d.ts.map +1 -0
- package/dist/tools/transactions.js +262 -0
- package/dist/tools/transactions.js.map +1 -0
- package/dist/transform.d.ts +48 -0
- package/dist/transform.d.ts.map +1 -0
- package/dist/transform.js +29 -0
- package/dist/transform.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { unwrapList, unwrapSingle, } from '../transform.js';
|
|
3
|
+
import { DELETE_ANNOTATIONS, READ_ANNOTATIONS, UPDATE_ANNOTATIONS, WRITE_ANNOTATIONS } from './_annotations.js';
|
|
4
|
+
import { dateSchema, defineTool } from './_helpers.js';
|
|
5
|
+
export async function fetchBills(client, params) {
|
|
6
|
+
const query = { page: params.page, limit: params.limit };
|
|
7
|
+
if (params.start)
|
|
8
|
+
query.start = params.start;
|
|
9
|
+
if (params.end)
|
|
10
|
+
query.end = params.end;
|
|
11
|
+
const response = await client.get('/bills', query);
|
|
12
|
+
return unwrapList(response);
|
|
13
|
+
}
|
|
14
|
+
export async function createBill(client, params) {
|
|
15
|
+
const response = await client.post('/bills', params);
|
|
16
|
+
return unwrapSingle(response);
|
|
17
|
+
}
|
|
18
|
+
export async function updateBill(client, id, params) {
|
|
19
|
+
const response = await client.put(`/bills/${id}`, params);
|
|
20
|
+
return unwrapSingle(response);
|
|
21
|
+
}
|
|
22
|
+
export async function deleteBill(client, id) {
|
|
23
|
+
await client.delete(`/bills/${id}`);
|
|
24
|
+
return { deleted: true, id };
|
|
25
|
+
}
|
|
26
|
+
export async function fetchBillTransactions(client, id, params) {
|
|
27
|
+
const query = { page: params.page, limit: params.limit };
|
|
28
|
+
if (params.start)
|
|
29
|
+
query.start = params.start;
|
|
30
|
+
if (params.end)
|
|
31
|
+
query.end = params.end;
|
|
32
|
+
const response = await client.get(`/bills/${id}/transactions`, query);
|
|
33
|
+
return unwrapList(response);
|
|
34
|
+
}
|
|
35
|
+
export function registerBillTools(server, client) {
|
|
36
|
+
defineTool(server, 'get_bills', {
|
|
37
|
+
title: 'Get Bills',
|
|
38
|
+
description: 'Get all recurring bills from Firefly III, including the next expected match date and payment status. Optionally filter by date range (YYYY-MM-DD).',
|
|
39
|
+
inputSchema: {
|
|
40
|
+
start: dateSchema.optional().describe('Start date (YYYY-MM-DD)'),
|
|
41
|
+
end: dateSchema.optional().describe('End date (YYYY-MM-DD)'),
|
|
42
|
+
page: z.number().int().positive().optional().default(1).describe('Page number'),
|
|
43
|
+
limit: z.number().int().positive().max(100).optional().default(50).describe('Results per page (max 100)'),
|
|
44
|
+
},
|
|
45
|
+
annotations: READ_ANNOTATIONS,
|
|
46
|
+
}, ({ start, end, page, limit }) => fetchBills(client, {
|
|
47
|
+
start: start,
|
|
48
|
+
end: end,
|
|
49
|
+
page: page,
|
|
50
|
+
limit: limit,
|
|
51
|
+
}));
|
|
52
|
+
defineTool(server, 'create_bill', {
|
|
53
|
+
title: 'Create Bill',
|
|
54
|
+
description: 'Create a new recurring bill in Firefly III.',
|
|
55
|
+
inputSchema: {
|
|
56
|
+
name: z.string().describe('Bill name'),
|
|
57
|
+
amount_min: z.string().describe('Minimum expected amount as a number string'),
|
|
58
|
+
amount_max: z.string().describe('Maximum expected amount as a number string'),
|
|
59
|
+
date: dateSchema.describe('Bill start date (YYYY-MM-DD)'),
|
|
60
|
+
repeat_freq: z.enum(['weekly', 'monthly', 'quarterly', 'half-year', 'yearly']).describe('Repeat frequency'),
|
|
61
|
+
currency_code: z.string().optional().describe('Currency code (e.g. EUR, USD)'),
|
|
62
|
+
end_date: dateSchema.optional().describe('End date for the bill (YYYY-MM-DD)'),
|
|
63
|
+
active: z.boolean().optional().describe('Whether the bill is active'),
|
|
64
|
+
notes: z.string().optional().describe('Notes'),
|
|
65
|
+
},
|
|
66
|
+
annotations: WRITE_ANNOTATIONS,
|
|
67
|
+
}, (params) => createBill(client, params));
|
|
68
|
+
defineTool(server, 'update_bill', {
|
|
69
|
+
title: 'Update Bill',
|
|
70
|
+
description: 'Update an existing bill in Firefly III. Only fields provided will be changed. Use get_bills to find valid bill IDs.',
|
|
71
|
+
inputSchema: {
|
|
72
|
+
id: z.string().describe('Bill ID — use get_bills to find valid IDs'),
|
|
73
|
+
name: z.string().optional().describe('Bill name'),
|
|
74
|
+
amount_min: z.string().optional().describe('Minimum expected amount as a number string'),
|
|
75
|
+
amount_max: z.string().optional().describe('Maximum expected amount as a number string'),
|
|
76
|
+
date: dateSchema.optional().describe('First expected payment date (YYYY-MM-DD)'),
|
|
77
|
+
repeat_freq: z
|
|
78
|
+
.enum(['weekly', 'monthly', 'quarterly', 'half-year', 'yearly'])
|
|
79
|
+
.optional()
|
|
80
|
+
.describe('Repeat frequency'),
|
|
81
|
+
currency_code: z.string().optional().describe('Currency code (e.g. EUR, USD)'),
|
|
82
|
+
end_date: dateSchema.optional().describe('End date (YYYY-MM-DD)'),
|
|
83
|
+
active: z.boolean().optional().describe('Whether the bill is active'),
|
|
84
|
+
notes: z.string().optional().describe('Notes'),
|
|
85
|
+
},
|
|
86
|
+
annotations: UPDATE_ANNOTATIONS,
|
|
87
|
+
}, ({ id, ...params }) => updateBill(client, id, params));
|
|
88
|
+
defineTool(server, 'delete_bill', {
|
|
89
|
+
title: 'Delete Bill',
|
|
90
|
+
description: 'Permanently delete a bill from Firefly III. **This action cannot be undone.** Use get_bills to confirm the ID before deleting.',
|
|
91
|
+
inputSchema: { id: z.string().describe('Bill ID — use get_bills to find valid IDs') },
|
|
92
|
+
annotations: DELETE_ANNOTATIONS,
|
|
93
|
+
}, ({ id }) => deleteBill(client, id));
|
|
94
|
+
defineTool(server, 'get_bill_transactions', {
|
|
95
|
+
title: 'Get Bill Transactions',
|
|
96
|
+
description: 'Get all transactions linked to a specific bill. Use get_bills to find valid bill IDs.',
|
|
97
|
+
inputSchema: {
|
|
98
|
+
id: z.string().describe('Bill ID'),
|
|
99
|
+
start: dateSchema.optional().describe('Start date (YYYY-MM-DD)'),
|
|
100
|
+
end: dateSchema.optional().describe('End date (YYYY-MM-DD)'),
|
|
101
|
+
page: z.number().int().positive().optional().default(1).describe('Page number'),
|
|
102
|
+
limit: z.number().int().positive().max(100).optional().default(50).describe('Results per page (max 100)'),
|
|
103
|
+
},
|
|
104
|
+
annotations: READ_ANNOTATIONS,
|
|
105
|
+
}, ({ id, start, end, page, limit }) => fetchBillTransactions(client, id, {
|
|
106
|
+
start: start,
|
|
107
|
+
end: end,
|
|
108
|
+
page: page,
|
|
109
|
+
limit: limit,
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=bills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bills.js","sourceRoot":"","sources":["../../src/tools/bills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { FireflyClient } from '../client.js';
|
|
3
|
+
import { type UnwrappedList, type UnwrappedSingle } from '../transform.js';
|
|
4
|
+
export declare function fetchBudgets(client: FireflyClient, params: {
|
|
5
|
+
page?: number;
|
|
6
|
+
limit?: number;
|
|
7
|
+
}): Promise<UnwrappedList>;
|
|
8
|
+
export declare function fetchBudgetLimits(client: FireflyClient, budgetId: string, start?: string, end?: string): Promise<UnwrappedList>;
|
|
9
|
+
export declare function createBudget(client: FireflyClient, params: {
|
|
10
|
+
name: string;
|
|
11
|
+
active?: boolean;
|
|
12
|
+
auto_budget_type?: 'reset' | 'rollover' | 'none';
|
|
13
|
+
auto_budget_currency_code?: string;
|
|
14
|
+
auto_budget_amount?: string;
|
|
15
|
+
auto_budget_period?: 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'half_year' | 'yearly';
|
|
16
|
+
}): Promise<UnwrappedSingle>;
|
|
17
|
+
export declare function updateBudget(client: FireflyClient, id: string, params: {
|
|
18
|
+
name?: string;
|
|
19
|
+
active?: boolean;
|
|
20
|
+
auto_budget_type?: 'reset' | 'rollover' | 'none';
|
|
21
|
+
auto_budget_currency_code?: string;
|
|
22
|
+
auto_budget_amount?: string;
|
|
23
|
+
auto_budget_period?: 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'half_year' | 'yearly';
|
|
24
|
+
}): Promise<UnwrappedSingle>;
|
|
25
|
+
export declare function deleteBudget(client: FireflyClient, id: string): Promise<{
|
|
26
|
+
deleted: true;
|
|
27
|
+
id: string;
|
|
28
|
+
}>;
|
|
29
|
+
export declare function createBudgetLimit(client: FireflyClient, budgetId: string, params: {
|
|
30
|
+
start: string;
|
|
31
|
+
end: string;
|
|
32
|
+
amount: string;
|
|
33
|
+
currency_code?: string;
|
|
34
|
+
period?: 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'half_year' | 'yearly';
|
|
35
|
+
}): Promise<UnwrappedSingle>;
|
|
36
|
+
export declare function updateBudgetLimit(client: FireflyClient, id: string, params: {
|
|
37
|
+
start?: string;
|
|
38
|
+
end?: string;
|
|
39
|
+
amount?: string;
|
|
40
|
+
currency_code?: string;
|
|
41
|
+
period?: 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'half_year' | 'yearly';
|
|
42
|
+
}): Promise<UnwrappedSingle>;
|
|
43
|
+
export declare function deleteBudgetLimit(client: FireflyClient, id: string): Promise<{
|
|
44
|
+
deleted: true;
|
|
45
|
+
id: string;
|
|
46
|
+
}>;
|
|
47
|
+
export declare function fetchAvailableBudgets(client: FireflyClient, params: {
|
|
48
|
+
page?: number;
|
|
49
|
+
limit?: number;
|
|
50
|
+
}): Promise<UnwrappedList>;
|
|
51
|
+
export declare function fetchAvailableBudget(client: FireflyClient, id: string): Promise<UnwrappedSingle>;
|
|
52
|
+
export declare function fetchBudgetTransactions(client: FireflyClient, id: string, params: {
|
|
53
|
+
start?: string;
|
|
54
|
+
end?: string;
|
|
55
|
+
page?: number;
|
|
56
|
+
limit?: number;
|
|
57
|
+
}): Promise<UnwrappedList>;
|
|
58
|
+
export declare function fetchTransactionsWithoutBudget(client: FireflyClient, params: {
|
|
59
|
+
start?: string;
|
|
60
|
+
end?: string;
|
|
61
|
+
page?: number;
|
|
62
|
+
limit?: number;
|
|
63
|
+
}): Promise<UnwrappedList>;
|
|
64
|
+
export declare function registerBudgetTools(server: McpServer, client: FireflyClient): void;
|
|
65
|
+
//# sourceMappingURL=budgets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budgets.d.ts","sourceRoot":"","sources":["../../src/tools/budgets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { unwrapList, unwrapSingle, } from '../transform.js';
|
|
3
|
+
import { DELETE_ANNOTATIONS, READ_ANNOTATIONS, UPDATE_ANNOTATIONS, WRITE_ANNOTATIONS } from './_annotations.js';
|
|
4
|
+
import { dateSchema, defineTool } from './_helpers.js';
|
|
5
|
+
export async function fetchBudgets(client, params) {
|
|
6
|
+
const response = await client.get('/budgets', { page: params.page, limit: params.limit });
|
|
7
|
+
return unwrapList(response);
|
|
8
|
+
}
|
|
9
|
+
export async function fetchBudgetLimits(client, budgetId, start, end) {
|
|
10
|
+
const query = {};
|
|
11
|
+
if (start)
|
|
12
|
+
query.start = start;
|
|
13
|
+
if (end)
|
|
14
|
+
query.end = end;
|
|
15
|
+
const response = await client.get(`/budgets/${budgetId}/limits`, query);
|
|
16
|
+
return unwrapList(response);
|
|
17
|
+
}
|
|
18
|
+
export async function createBudget(client, params) {
|
|
19
|
+
const response = await client.post('/budgets', params);
|
|
20
|
+
return unwrapSingle(response);
|
|
21
|
+
}
|
|
22
|
+
export async function updateBudget(client, id, params) {
|
|
23
|
+
const response = await client.put(`/budgets/${id}`, params);
|
|
24
|
+
return unwrapSingle(response);
|
|
25
|
+
}
|
|
26
|
+
export async function deleteBudget(client, id) {
|
|
27
|
+
await client.delete(`/budgets/${id}`);
|
|
28
|
+
return { deleted: true, id };
|
|
29
|
+
}
|
|
30
|
+
export async function createBudgetLimit(client, budgetId, params) {
|
|
31
|
+
const response = await client.post(`/budgets/${budgetId}/limits`, params);
|
|
32
|
+
return unwrapSingle(response);
|
|
33
|
+
}
|
|
34
|
+
export async function updateBudgetLimit(client, id, params) {
|
|
35
|
+
const response = await client.put(`/budget-limits/${id}`, params);
|
|
36
|
+
return unwrapSingle(response);
|
|
37
|
+
}
|
|
38
|
+
export async function deleteBudgetLimit(client, id) {
|
|
39
|
+
await client.delete(`/budget-limits/${id}`);
|
|
40
|
+
return { deleted: true, id };
|
|
41
|
+
}
|
|
42
|
+
export async function fetchAvailableBudgets(client, params) {
|
|
43
|
+
const response = await client.get('/available-budgets', {
|
|
44
|
+
page: params.page,
|
|
45
|
+
limit: params.limit,
|
|
46
|
+
});
|
|
47
|
+
return unwrapList(response);
|
|
48
|
+
}
|
|
49
|
+
export async function fetchAvailableBudget(client, id) {
|
|
50
|
+
const response = await client.get(`/available-budgets/${id}`);
|
|
51
|
+
return unwrapSingle(response);
|
|
52
|
+
}
|
|
53
|
+
export async function fetchBudgetTransactions(client, id, params) {
|
|
54
|
+
const query = { page: params.page, limit: params.limit };
|
|
55
|
+
if (params.start)
|
|
56
|
+
query.start = params.start;
|
|
57
|
+
if (params.end)
|
|
58
|
+
query.end = params.end;
|
|
59
|
+
const response = await client.get(`/budgets/${id}/transactions`, query);
|
|
60
|
+
return unwrapList(response);
|
|
61
|
+
}
|
|
62
|
+
export async function fetchTransactionsWithoutBudget(client, params) {
|
|
63
|
+
const query = { page: params.page, limit: params.limit };
|
|
64
|
+
if (params.start)
|
|
65
|
+
query.start = params.start;
|
|
66
|
+
if (params.end)
|
|
67
|
+
query.end = params.end;
|
|
68
|
+
const response = await client.get('/budgets/transactions-without-budget', query);
|
|
69
|
+
return unwrapList(response);
|
|
70
|
+
}
|
|
71
|
+
export function registerBudgetTools(server, client) {
|
|
72
|
+
defineTool(server, 'get_budgets', {
|
|
73
|
+
title: 'Get Budgets',
|
|
74
|
+
description: 'Get all budgets from Firefly III, including spent and available amounts for the current period. Use get_budget_limits for period-specific spending limits.',
|
|
75
|
+
inputSchema: {
|
|
76
|
+
page: z.number().int().positive().optional().default(1).describe('Page number'),
|
|
77
|
+
limit: z.number().int().positive().max(100).optional().default(50).describe('Results per page (max 100)'),
|
|
78
|
+
},
|
|
79
|
+
annotations: READ_ANNOTATIONS,
|
|
80
|
+
}, ({ page, limit }) => fetchBudgets(client, { page: page, limit: limit }));
|
|
81
|
+
defineTool(server, 'get_budget_limits', {
|
|
82
|
+
title: 'Get Budget Limits',
|
|
83
|
+
description: 'Get spending limits for a specific Firefly III budget, including how much has been spent against each limit. Optionally filter by date range (YYYY-MM-DD). Use get_budgets to find valid budget IDs.',
|
|
84
|
+
inputSchema: {
|
|
85
|
+
budgetId: z.string().describe('Budget ID — use get_budgets to find valid IDs'),
|
|
86
|
+
start: dateSchema.optional().describe('Start date (YYYY-MM-DD)'),
|
|
87
|
+
end: dateSchema.optional().describe('End date (YYYY-MM-DD)'),
|
|
88
|
+
},
|
|
89
|
+
annotations: READ_ANNOTATIONS,
|
|
90
|
+
}, ({ budgetId, start, end }) => fetchBudgetLimits(client, budgetId, start, end));
|
|
91
|
+
defineTool(server, 'create_budget', {
|
|
92
|
+
title: 'Create Budget',
|
|
93
|
+
description: 'Create a new budget in Firefly III.',
|
|
94
|
+
inputSchema: {
|
|
95
|
+
name: z.string().describe('Budget name'),
|
|
96
|
+
active: z.boolean().optional().describe('Whether the budget is active'),
|
|
97
|
+
auto_budget_type: z.enum(['reset', 'rollover', 'none']).optional().describe('Auto-budget type'),
|
|
98
|
+
auto_budget_currency_code: z.string().optional().describe('Currency code for auto-budget'),
|
|
99
|
+
auto_budget_amount: z.string().optional().describe('Auto-budget amount as a number string'),
|
|
100
|
+
auto_budget_period: z
|
|
101
|
+
.enum(['daily', 'weekly', 'monthly', 'quarterly', 'half_year', 'yearly'])
|
|
102
|
+
.optional()
|
|
103
|
+
.describe('Auto-budget period'),
|
|
104
|
+
},
|
|
105
|
+
annotations: WRITE_ANNOTATIONS,
|
|
106
|
+
}, (params) => createBudget(client, params));
|
|
107
|
+
defineTool(server, 'update_budget', {
|
|
108
|
+
title: 'Update Budget',
|
|
109
|
+
description: 'Update an existing budget in Firefly III. Only fields provided will be changed. Use get_budgets to find valid budget IDs.',
|
|
110
|
+
inputSchema: {
|
|
111
|
+
id: z.string().describe('Budget ID — use get_budgets to find valid IDs'),
|
|
112
|
+
name: z.string().optional().describe('Budget name'),
|
|
113
|
+
active: z.boolean().optional().describe('Whether the budget is active'),
|
|
114
|
+
auto_budget_type: z.enum(['reset', 'rollover', 'none']).optional().describe('Auto-budget type'),
|
|
115
|
+
auto_budget_currency_code: z.string().optional().describe('Currency code for auto-budget'),
|
|
116
|
+
auto_budget_amount: z.string().optional().describe('Auto-budget amount as a number string'),
|
|
117
|
+
auto_budget_period: z
|
|
118
|
+
.enum(['daily', 'weekly', 'monthly', 'quarterly', 'half_year', 'yearly'])
|
|
119
|
+
.optional()
|
|
120
|
+
.describe('Auto-budget period'),
|
|
121
|
+
},
|
|
122
|
+
annotations: UPDATE_ANNOTATIONS,
|
|
123
|
+
}, ({ id, ...params }) => updateBudget(client, id, params));
|
|
124
|
+
defineTool(server, 'delete_budget', {
|
|
125
|
+
title: 'Delete Budget',
|
|
126
|
+
description: 'Permanently delete a budget from Firefly III. **This action cannot be undone.** Use get_budgets to confirm the ID before deleting.',
|
|
127
|
+
inputSchema: { id: z.string().describe('Budget ID — use get_budgets to find valid IDs') },
|
|
128
|
+
annotations: DELETE_ANNOTATIONS,
|
|
129
|
+
}, ({ id }) => deleteBudget(client, id));
|
|
130
|
+
defineTool(server, 'create_budget_limit', {
|
|
131
|
+
title: 'Create Budget Limit',
|
|
132
|
+
description: 'Create a spending limit for a budget in Firefly III for a specific date range.',
|
|
133
|
+
inputSchema: {
|
|
134
|
+
budget_id: z.string().describe('Budget ID — use get_budgets to find valid IDs'),
|
|
135
|
+
start: dateSchema.describe('Start date (YYYY-MM-DD)'),
|
|
136
|
+
end: dateSchema.describe('End date (YYYY-MM-DD)'),
|
|
137
|
+
amount: z.string().describe('Limit amount as a number string'),
|
|
138
|
+
currency_code: z.string().optional().describe('Currency code (e.g. EUR, USD)'),
|
|
139
|
+
period: z
|
|
140
|
+
.enum(['daily', 'weekly', 'monthly', 'quarterly', 'half_year', 'yearly'])
|
|
141
|
+
.optional()
|
|
142
|
+
.describe('Budget period'),
|
|
143
|
+
},
|
|
144
|
+
annotations: WRITE_ANNOTATIONS,
|
|
145
|
+
}, ({ budget_id, ...params }) => createBudgetLimit(client, budget_id, params));
|
|
146
|
+
defineTool(server, 'update_budget_limit', {
|
|
147
|
+
title: 'Update Budget Limit',
|
|
148
|
+
description: 'Update an existing budget limit in Firefly III. Only fields provided will be changed. Use get_budget_limits to find valid limit IDs.',
|
|
149
|
+
inputSchema: {
|
|
150
|
+
id: z.string().describe('Budget limit ID — use get_budget_limits to find valid IDs'),
|
|
151
|
+
start: dateSchema.optional().describe('Start date (YYYY-MM-DD)'),
|
|
152
|
+
end: dateSchema.optional().describe('End date (YYYY-MM-DD)'),
|
|
153
|
+
amount: z.string().optional().describe('Limit amount as a number string'),
|
|
154
|
+
currency_code: z.string().optional().describe('Currency code (e.g. EUR, USD)'),
|
|
155
|
+
period: z
|
|
156
|
+
.enum(['daily', 'weekly', 'monthly', 'quarterly', 'half_year', 'yearly'])
|
|
157
|
+
.optional()
|
|
158
|
+
.describe('Budget period'),
|
|
159
|
+
},
|
|
160
|
+
annotations: UPDATE_ANNOTATIONS,
|
|
161
|
+
}, ({ id, ...params }) => updateBudgetLimit(client, id, params));
|
|
162
|
+
defineTool(server, 'delete_budget_limit', {
|
|
163
|
+
title: 'Delete Budget Limit',
|
|
164
|
+
description: 'Permanently delete a budget limit from Firefly III. **This action cannot be undone.** Use get_budget_limits to confirm the ID before deleting.',
|
|
165
|
+
inputSchema: { id: z.string().describe('Budget limit ID — use get_budget_limits to find valid IDs') },
|
|
166
|
+
annotations: DELETE_ANNOTATIONS,
|
|
167
|
+
}, ({ id }) => deleteBudgetLimit(client, id));
|
|
168
|
+
defineTool(server, 'get_available_budgets', {
|
|
169
|
+
title: 'Get Available Budgets',
|
|
170
|
+
description: 'Get all available budget amounts configured in Firefly III (the total money available to budget per period).',
|
|
171
|
+
inputSchema: {
|
|
172
|
+
page: z.number().int().positive().optional().default(1).describe('Page number'),
|
|
173
|
+
limit: z.number().int().positive().max(100).optional().default(50).describe('Results per page (max 100)'),
|
|
174
|
+
},
|
|
175
|
+
annotations: READ_ANNOTATIONS,
|
|
176
|
+
}, ({ page, limit }) => fetchAvailableBudgets(client, { page: page, limit: limit }));
|
|
177
|
+
defineTool(server, 'get_available_budget', {
|
|
178
|
+
title: 'Get Available Budget',
|
|
179
|
+
description: 'Get a single available budget amount by ID. Use get_available_budgets to find valid IDs.',
|
|
180
|
+
inputSchema: {
|
|
181
|
+
id: z.string().describe('Available budget ID'),
|
|
182
|
+
},
|
|
183
|
+
annotations: READ_ANNOTATIONS,
|
|
184
|
+
}, ({ id }) => fetchAvailableBudget(client, id));
|
|
185
|
+
defineTool(server, 'get_budget_transactions', {
|
|
186
|
+
title: 'Get Budget Transactions',
|
|
187
|
+
description: 'Get all transactions linked to a specific budget. Use get_budgets to find valid budget IDs.',
|
|
188
|
+
inputSchema: {
|
|
189
|
+
id: z.string().describe('Budget ID'),
|
|
190
|
+
start: dateSchema.optional().describe('Start date (YYYY-MM-DD)'),
|
|
191
|
+
end: dateSchema.optional().describe('End date (YYYY-MM-DD)'),
|
|
192
|
+
page: z.number().int().positive().optional().default(1).describe('Page number'),
|
|
193
|
+
limit: z.number().int().positive().max(100).optional().default(50).describe('Results per page (max 100)'),
|
|
194
|
+
},
|
|
195
|
+
annotations: READ_ANNOTATIONS,
|
|
196
|
+
}, ({ id, start, end, page, limit }) => fetchBudgetTransactions(client, id, { start, end, page, limit }));
|
|
197
|
+
defineTool(server, 'get_transactions_without_budget', {
|
|
198
|
+
title: 'Get Transactions Without Budget',
|
|
199
|
+
description: 'Get all transactions that have no budget assigned. Useful for finding unbudgeted spending.',
|
|
200
|
+
inputSchema: {
|
|
201
|
+
start: dateSchema.optional().describe('Start date (YYYY-MM-DD)'),
|
|
202
|
+
end: dateSchema.optional().describe('End date (YYYY-MM-DD)'),
|
|
203
|
+
page: z.number().int().positive().optional().default(1).describe('Page number'),
|
|
204
|
+
limit: z.number().int().positive().max(100).optional().default(50).describe('Results per page (max 100)'),
|
|
205
|
+
},
|
|
206
|
+
annotations: READ_ANNOTATIONS,
|
|
207
|
+
}, (params) => fetchTransactionsWithoutBudget(client, params));
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=budgets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budgets.js","sourceRoot":"","sources":["../../src/tools/budgets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { FireflyClient } from '../client.js';
|
|
3
|
+
import { type UnwrappedList, type UnwrappedSingle } from '../transform.js';
|
|
4
|
+
export declare function fetchCategories(client: FireflyClient, params: {
|
|
5
|
+
page?: number;
|
|
6
|
+
limit?: number;
|
|
7
|
+
}): Promise<UnwrappedList>;
|
|
8
|
+
export declare function fetchCategoryTransactions(client: FireflyClient, categoryId: string, params: {
|
|
9
|
+
start?: string;
|
|
10
|
+
end?: string;
|
|
11
|
+
page?: number;
|
|
12
|
+
limit?: number;
|
|
13
|
+
}): Promise<UnwrappedList>;
|
|
14
|
+
export declare function createCategory(client: FireflyClient, params: {
|
|
15
|
+
name: string;
|
|
16
|
+
notes?: string;
|
|
17
|
+
}): Promise<UnwrappedSingle>;
|
|
18
|
+
export declare function updateCategory(client: FireflyClient, id: string, params: {
|
|
19
|
+
name?: string;
|
|
20
|
+
notes?: string;
|
|
21
|
+
}): Promise<UnwrappedSingle>;
|
|
22
|
+
export declare function deleteCategory(client: FireflyClient, id: string): Promise<{
|
|
23
|
+
deleted: true;
|
|
24
|
+
id: string;
|
|
25
|
+
}>;
|
|
26
|
+
export declare function registerCategoryTools(server: McpServer, client: FireflyClient): void;
|
|
27
|
+
//# sourceMappingURL=categories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../src/tools/categories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,eAAe,EAGrB,MAAM,iBAAiB,CAAC;AAKzB,wBAAsB,eAAe,CACnC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC,aAAa,CAAC,CAGxB;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACtE,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACvC,OAAO,CAAC,eAAe,CAAC,CAG1B;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC,eAAe,CAAC,CAG1B;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAG9G;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAuFpF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { unwrapList, unwrapSingle, } from '../transform.js';
|
|
3
|
+
import { DELETE_ANNOTATIONS, READ_ANNOTATIONS, UPDATE_ANNOTATIONS, WRITE_ANNOTATIONS } from './_annotations.js';
|
|
4
|
+
import { dateSchema, defineTool } from './_helpers.js';
|
|
5
|
+
export async function fetchCategories(client, params) {
|
|
6
|
+
const response = await client.get('/categories', { page: params.page, limit: params.limit });
|
|
7
|
+
return unwrapList(response);
|
|
8
|
+
}
|
|
9
|
+
export async function fetchCategoryTransactions(client, categoryId, params) {
|
|
10
|
+
const query = { page: params.page, limit: params.limit };
|
|
11
|
+
if (params.start)
|
|
12
|
+
query.start = params.start;
|
|
13
|
+
if (params.end)
|
|
14
|
+
query.end = params.end;
|
|
15
|
+
const response = await client.get(`/categories/${categoryId}/transactions`, query);
|
|
16
|
+
return unwrapList(response);
|
|
17
|
+
}
|
|
18
|
+
export async function createCategory(client, params) {
|
|
19
|
+
const response = await client.post('/categories', params);
|
|
20
|
+
return unwrapSingle(response);
|
|
21
|
+
}
|
|
22
|
+
export async function updateCategory(client, id, params) {
|
|
23
|
+
const response = await client.put(`/categories/${id}`, params);
|
|
24
|
+
return unwrapSingle(response);
|
|
25
|
+
}
|
|
26
|
+
export async function deleteCategory(client, id) {
|
|
27
|
+
await client.delete(`/categories/${id}`);
|
|
28
|
+
return { deleted: true, id };
|
|
29
|
+
}
|
|
30
|
+
export function registerCategoryTools(server, client) {
|
|
31
|
+
defineTool(server, 'get_categories', {
|
|
32
|
+
title: 'Get Categories',
|
|
33
|
+
description: 'Get all spending categories defined in Firefly III. Use get_category_transactions to list transactions for a specific category.',
|
|
34
|
+
inputSchema: {
|
|
35
|
+
page: z.number().int().positive().optional().default(1).describe('Page number'),
|
|
36
|
+
limit: z.number().int().positive().max(100).optional().default(50).describe('Results per page (max 100)'),
|
|
37
|
+
},
|
|
38
|
+
annotations: READ_ANNOTATIONS,
|
|
39
|
+
}, ({ page, limit }) => fetchCategories(client, { page: page, limit: limit }));
|
|
40
|
+
defineTool(server, 'get_category_transactions', {
|
|
41
|
+
title: 'Get Category Transactions',
|
|
42
|
+
description: 'Get all transactions belonging to a specific Firefly III category. Optionally filter by date range (YYYY-MM-DD). Use get_categories to find valid category IDs.',
|
|
43
|
+
inputSchema: {
|
|
44
|
+
categoryId: z.string().describe('Category ID — use get_categories to find valid IDs'),
|
|
45
|
+
start: dateSchema.optional().describe('Start date (YYYY-MM-DD)'),
|
|
46
|
+
end: dateSchema.optional().describe('End date (YYYY-MM-DD)'),
|
|
47
|
+
page: z.number().int().positive().optional().default(1).describe('Page number'),
|
|
48
|
+
limit: z.number().int().positive().max(100).optional().default(50).describe('Results per page (max 100)'),
|
|
49
|
+
},
|
|
50
|
+
annotations: READ_ANNOTATIONS,
|
|
51
|
+
}, ({ categoryId, start, end, page, limit }) => fetchCategoryTransactions(client, categoryId, {
|
|
52
|
+
start: start,
|
|
53
|
+
end: end,
|
|
54
|
+
page: page,
|
|
55
|
+
limit: limit,
|
|
56
|
+
}));
|
|
57
|
+
defineTool(server, 'create_category', {
|
|
58
|
+
title: 'Create Category',
|
|
59
|
+
description: 'Create a new spending category in Firefly III.',
|
|
60
|
+
inputSchema: {
|
|
61
|
+
name: z.string().describe('Category name'),
|
|
62
|
+
notes: z.string().optional().describe('Notes'),
|
|
63
|
+
},
|
|
64
|
+
annotations: WRITE_ANNOTATIONS,
|
|
65
|
+
}, (params) => createCategory(client, params));
|
|
66
|
+
defineTool(server, 'update_category', {
|
|
67
|
+
title: 'Update Category',
|
|
68
|
+
description: 'Update an existing category in Firefly III. Only fields provided will be changed. Use get_categories to find valid category IDs.',
|
|
69
|
+
inputSchema: {
|
|
70
|
+
id: z.string().describe('Category ID — use get_categories to find valid IDs'),
|
|
71
|
+
name: z.string().optional().describe('Category name'),
|
|
72
|
+
notes: z.string().optional().describe('Notes'),
|
|
73
|
+
},
|
|
74
|
+
annotations: UPDATE_ANNOTATIONS,
|
|
75
|
+
}, ({ id, ...params }) => updateCategory(client, id, params));
|
|
76
|
+
defineTool(server, 'delete_category', {
|
|
77
|
+
title: 'Delete Category',
|
|
78
|
+
description: 'Permanently delete a category from Firefly III. **This action cannot be undone.** Transactions in this category will become uncategorised. Use get_categories to confirm the ID.',
|
|
79
|
+
inputSchema: { id: z.string().describe('Category ID — use get_categories to find valid IDs') },
|
|
80
|
+
annotations: DELETE_ANNOTATIONS,
|
|
81
|
+
}, ({ id }) => deleteCategory(client, id));
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=categories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/tools/categories.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { FireflyClient } from '../client.js';
|
|
3
|
+
import { type UnwrappedList, type UnwrappedSingle } from '../transform.js';
|
|
4
|
+
export declare function fetchCurrencies(client: FireflyClient, params: {
|
|
5
|
+
page?: number;
|
|
6
|
+
limit?: number;
|
|
7
|
+
}): Promise<UnwrappedList>;
|
|
8
|
+
export declare function fetchCurrency(client: FireflyClient, code: string): Promise<UnwrappedSingle>;
|
|
9
|
+
export declare function createCurrency(client: FireflyClient, params: {
|
|
10
|
+
name: string;
|
|
11
|
+
code: string;
|
|
12
|
+
symbol: string;
|
|
13
|
+
decimal_places?: number;
|
|
14
|
+
enabled?: boolean;
|
|
15
|
+
default?: boolean;
|
|
16
|
+
}): Promise<UnwrappedSingle>;
|
|
17
|
+
export declare function updateCurrency(client: FireflyClient, code: string, params: {
|
|
18
|
+
name?: string;
|
|
19
|
+
symbol?: string;
|
|
20
|
+
decimal_places?: number;
|
|
21
|
+
enabled?: boolean;
|
|
22
|
+
default?: boolean;
|
|
23
|
+
}): Promise<UnwrappedSingle>;
|
|
24
|
+
export declare function deleteCurrency(client: FireflyClient, code: string): Promise<{
|
|
25
|
+
deleted: true;
|
|
26
|
+
code: string;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function enableCurrency(client: FireflyClient, code: string): Promise<UnwrappedSingle>;
|
|
29
|
+
export declare function disableCurrency(client: FireflyClient, code: string): Promise<UnwrappedSingle>;
|
|
30
|
+
export declare function setPrimaryCurrency(client: FireflyClient, code: string): Promise<UnwrappedSingle>;
|
|
31
|
+
export declare function registerCurrencyTools(server: McpServer, client: FireflyClient): void;
|
|
32
|
+
//# sourceMappingURL=currencies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currencies.d.ts","sourceRoot":"","sources":["../../src/tools/currencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,eAAe,EAGrB,MAAM,iBAAiB,CAAC;AAIzB,wBAAsB,eAAe,CACnC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC,aAAa,CAAC,CAGxB;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAGjG;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACpH,OAAO,CAAC,eAAe,CAAC,CAG1B;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACxG,OAAO,CAAC,eAAe,CAAC,CAG1B;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAGlH;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAGlG;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAGnG;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAGtG;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAoHpF"}
|