storno-cli 1.0.5
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/LICENSE +53 -0
- package/README.md +257 -0
- package/TOOLS.md +3309 -0
- package/dist/client.d.ts +42 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +162 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +22 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +30 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +172 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/accounting-export.d.ts +14 -0
- package/dist/tools/accounting-export.d.ts.map +1 -0
- package/dist/tools/accounting-export.js +97 -0
- package/dist/tools/accounting-export.js.map +1 -0
- package/dist/tools/admin.d.ts +8 -0
- package/dist/tools/admin.d.ts.map +1 -0
- package/dist/tools/admin.js +98 -0
- package/dist/tools/admin.js.map +1 -0
- package/dist/tools/anaf.d.ts +8 -0
- package/dist/tools/anaf.d.ts.map +1 -0
- package/dist/tools/anaf.js +115 -0
- package/dist/tools/anaf.js.map +1 -0
- package/dist/tools/api-keys.d.ts +8 -0
- package/dist/tools/api-keys.d.ts.map +1 -0
- package/dist/tools/api-keys.js +29 -0
- package/dist/tools/api-keys.js.map +1 -0
- package/dist/tools/auth.d.ts +8 -0
- package/dist/tools/auth.d.ts.map +1 -0
- package/dist/tools/auth.js +187 -0
- package/dist/tools/auth.js.map +1 -0
- package/dist/tools/backup.d.ts +62 -0
- package/dist/tools/backup.d.ts.map +1 -0
- package/dist/tools/backup.js +167 -0
- package/dist/tools/backup.js.map +1 -0
- package/dist/tools/bank-accounts.d.ts +14 -0
- package/dist/tools/bank-accounts.d.ts.map +1 -0
- package/dist/tools/bank-accounts.js +140 -0
- package/dist/tools/bank-accounts.js.map +1 -0
- package/dist/tools/borderou.d.ts +14 -0
- package/dist/tools/borderou.d.ts.map +1 -0
- package/dist/tools/borderou.js +233 -0
- package/dist/tools/borderou.js.map +1 -0
- package/dist/tools/clients.d.ts +14 -0
- package/dist/tools/clients.d.ts.map +1 -0
- package/dist/tools/clients.js +353 -0
- package/dist/tools/clients.js.map +1 -0
- package/dist/tools/companies.d.ts +8 -0
- package/dist/tools/companies.d.ts.map +1 -0
- package/dist/tools/companies.js +211 -0
- package/dist/tools/companies.js.map +1 -0
- package/dist/tools/company-registry.d.ts +31 -0
- package/dist/tools/company-registry.d.ts.map +1 -0
- package/dist/tools/company-registry.js +51 -0
- package/dist/tools/company-registry.js.map +1 -0
- package/dist/tools/cpv-codes.d.ts +17 -0
- package/dist/tools/cpv-codes.d.ts.map +1 -0
- package/dist/tools/cpv-codes.js +28 -0
- package/dist/tools/cpv-codes.js.map +1 -0
- package/dist/tools/dashboard.d.ts +23 -0
- package/dist/tools/dashboard.d.ts.map +1 -0
- package/dist/tools/dashboard.js +37 -0
- package/dist/tools/dashboard.js.map +1 -0
- package/dist/tools/defaults.d.ts +14 -0
- package/dist/tools/defaults.d.ts.map +1 -0
- package/dist/tools/defaults.js +29 -0
- package/dist/tools/defaults.js.map +1 -0
- package/dist/tools/delivery-notes.d.ts +185 -0
- package/dist/tools/delivery-notes.d.ts.map +1 -0
- package/dist/tools/delivery-notes.js +525 -0
- package/dist/tools/delivery-notes.js.map +1 -0
- package/dist/tools/document-series.d.ts +54 -0
- package/dist/tools/document-series.d.ts.map +1 -0
- package/dist/tools/document-series.js +171 -0
- package/dist/tools/document-series.js.map +1 -0
- package/dist/tools/efactura-messages.d.ts +34 -0
- package/dist/tools/efactura-messages.d.ts.map +1 -0
- package/dist/tools/efactura-messages.js +51 -0
- package/dist/tools/efactura-messages.js.map +1 -0
- package/dist/tools/einvoice.d.ts +8 -0
- package/dist/tools/einvoice.d.ts.map +1 -0
- package/dist/tools/einvoice.js +170 -0
- package/dist/tools/einvoice.js.map +1 -0
- package/dist/tools/email-templates.d.ts +14 -0
- package/dist/tools/email-templates.d.ts.map +1 -0
- package/dist/tools/email-templates.js +104 -0
- package/dist/tools/email-templates.js.map +1 -0
- package/dist/tools/exchange-rates.d.ts +14 -0
- package/dist/tools/exchange-rates.d.ts.map +1 -0
- package/dist/tools/exchange-rates.js +55 -0
- package/dist/tools/exchange-rates.js.map +1 -0
- package/dist/tools/exports.d.ts +14 -0
- package/dist/tools/exports.d.ts.map +1 -0
- package/dist/tools/exports.js +25 -0
- package/dist/tools/exports.js.map +1 -0
- package/dist/tools/import.d.ts +14 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +221 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/invitations.d.ts +8 -0
- package/dist/tools/invitations.d.ts.map +1 -0
- package/dist/tools/invitations.js +70 -0
- package/dist/tools/invitations.js.map +1 -0
- package/dist/tools/invoices.d.ts +14 -0
- package/dist/tools/invoices.d.ts.map +1 -0
- package/dist/tools/invoices.js +1191 -0
- package/dist/tools/invoices.js.map +1 -0
- package/dist/tools/licensing.d.ts +8 -0
- package/dist/tools/licensing.d.ts.map +1 -0
- package/dist/tools/licensing.js +90 -0
- package/dist/tools/licensing.js.map +1 -0
- package/dist/tools/members.d.ts +8 -0
- package/dist/tools/members.d.ts.map +1 -0
- package/dist/tools/members.js +79 -0
- package/dist/tools/members.js.map +1 -0
- package/dist/tools/nc-codes.d.ts +17 -0
- package/dist/tools/nc-codes.d.ts.map +1 -0
- package/dist/tools/nc-codes.js +28 -0
- package/dist/tools/nc-codes.js.map +1 -0
- package/dist/tools/notifications.d.ts +8 -0
- package/dist/tools/notifications.d.ts.map +1 -0
- package/dist/tools/notifications.js +111 -0
- package/dist/tools/notifications.js.map +1 -0
- package/dist/tools/oauth2-clients.d.ts +8 -0
- package/dist/tools/oauth2-clients.d.ts.map +1 -0
- package/dist/tools/oauth2-clients.js +147 -0
- package/dist/tools/oauth2-clients.js.map +1 -0
- package/dist/tools/payments.d.ts +17 -0
- package/dist/tools/payments.d.ts.map +1 -0
- package/dist/tools/payments.js +109 -0
- package/dist/tools/payments.js.map +1 -0
- package/dist/tools/pdf-template-config.d.ts +14 -0
- package/dist/tools/pdf-template-config.d.ts.map +1 -0
- package/dist/tools/pdf-template-config.js +131 -0
- package/dist/tools/pdf-template-config.js.map +1 -0
- package/dist/tools/products.d.ts +40 -0
- package/dist/tools/products.d.ts.map +1 -0
- package/dist/tools/products.js +73 -0
- package/dist/tools/products.js.map +1 -0
- package/dist/tools/proforma-invoices.d.ts +198 -0
- package/dist/tools/proforma-invoices.d.ts.map +1 -0
- package/dist/tools/proforma-invoices.js +378 -0
- package/dist/tools/proforma-invoices.js.map +1 -0
- package/dist/tools/receipts.d.ts +166 -0
- package/dist/tools/receipts.d.ts.map +1 -0
- package/dist/tools/receipts.js +397 -0
- package/dist/tools/receipts.js.map +1 -0
- package/dist/tools/recurring-invoices.d.ts +187 -0
- package/dist/tools/recurring-invoices.d.ts.map +1 -0
- package/dist/tools/recurring-invoices.js +305 -0
- package/dist/tools/recurring-invoices.js.map +1 -0
- package/dist/tools/reports.d.ts +48 -0
- package/dist/tools/reports.d.ts.map +1 -0
- package/dist/tools/reports.js +200 -0
- package/dist/tools/reports.js.map +1 -0
- package/dist/tools/storage-config.d.ts +8 -0
- package/dist/tools/storage-config.d.ts.map +1 -0
- package/dist/tools/storage-config.js +117 -0
- package/dist/tools/storage-config.js.map +1 -0
- package/dist/tools/suppliers.d.ts +14 -0
- package/dist/tools/suppliers.d.ts.map +1 -0
- package/dist/tools/suppliers.js +205 -0
- package/dist/tools/suppliers.js.map +1 -0
- package/dist/tools/system.d.ts +8 -0
- package/dist/tools/system.d.ts.map +1 -0
- package/dist/tools/system.js +24 -0
- package/dist/tools/system.js.map +1 -0
- package/dist/tools/vat-rates.d.ts +14 -0
- package/dist/tools/vat-rates.d.ts.map +1 -0
- package/dist/tools/vat-rates.js +145 -0
- package/dist/tools/vat-rates.js.map +1 -0
- package/dist/tools/webhooks.d.ts +8 -0
- package/dist/tools/webhooks.d.ts.map +1 -0
- package/dist/tools/webhooks.js +305 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/dist/utils/errors.d.ts +18 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +45 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/pagination.d.ts +9 -0
- package/dist/utils/pagination.d.ts.map +1 -0
- package/dist/utils/pagination.js +10 -0
- package/dist/utils/pagination.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { apiRequest } from '../client.js';
|
|
3
|
+
import { formatResponse, notAuthenticated, noCompanySelected } from '../utils/errors.js';
|
|
4
|
+
import { getConfig } from '../config.js';
|
|
5
|
+
function getCompanyId(params) {
|
|
6
|
+
return params.companyId || getConfig().companyId;
|
|
7
|
+
}
|
|
8
|
+
export const tools = [
|
|
9
|
+
{
|
|
10
|
+
name: 'document_series_list',
|
|
11
|
+
description: 'List all document series for the active company, optionally filtered by type. Document series define the numbering prefixes for invoices (e.g., "FAC"), proformas ("PRO"), credit notes, and delivery notes. Each series tracks the current and next available number.',
|
|
12
|
+
inputSchema: z.object({
|
|
13
|
+
companyId: z
|
|
14
|
+
.string()
|
|
15
|
+
.optional()
|
|
16
|
+
.describe('Company UUID override (uses active company if not set)'),
|
|
17
|
+
type: z
|
|
18
|
+
.enum(['invoice', 'proforma', 'credit_note', 'delivery_note'])
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('Filter by document type: invoice, proforma, credit_note, or delivery_note'),
|
|
21
|
+
}),
|
|
22
|
+
handler: async (params) => {
|
|
23
|
+
if (!getConfig().token)
|
|
24
|
+
return notAuthenticated();
|
|
25
|
+
const companyId = getCompanyId(params);
|
|
26
|
+
if (!companyId)
|
|
27
|
+
return noCompanySelected();
|
|
28
|
+
const { type } = params;
|
|
29
|
+
const result = await apiRequest('/api/v1/document-series', {
|
|
30
|
+
companyId,
|
|
31
|
+
query: type ? { type } : undefined,
|
|
32
|
+
});
|
|
33
|
+
return formatResponse(result);
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'document_series_create',
|
|
38
|
+
description: 'Create a new document series. The prefix must be unique per company and document type. Common patterns: "FAC" for invoices, "FAC2026" for annual series, "PRO" for proformas. Use currentNumber to set the starting number (default: 0, so first document gets number 1).',
|
|
39
|
+
inputSchema: z.object({
|
|
40
|
+
companyId: z
|
|
41
|
+
.string()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe('Company UUID override (uses active company if not set)'),
|
|
44
|
+
prefix: z
|
|
45
|
+
.string()
|
|
46
|
+
.describe('Series prefix (must be unique per company+type). Examples: "FAC", "FAC2026", "PRO", "AVZ"'),
|
|
47
|
+
type: z
|
|
48
|
+
.enum(['invoice', 'proforma', 'credit_note', 'delivery_note'])
|
|
49
|
+
.describe('Document type this series is for'),
|
|
50
|
+
currentNumber: z
|
|
51
|
+
.number()
|
|
52
|
+
.int()
|
|
53
|
+
.min(0)
|
|
54
|
+
.optional()
|
|
55
|
+
.describe('Starting number — the last used number (default: 0, meaning next document gets 1)'),
|
|
56
|
+
active: z
|
|
57
|
+
.boolean()
|
|
58
|
+
.optional()
|
|
59
|
+
.describe('Whether the series is active and available for new documents (default: true)'),
|
|
60
|
+
}),
|
|
61
|
+
handler: async (params) => {
|
|
62
|
+
if (!getConfig().token)
|
|
63
|
+
return notAuthenticated();
|
|
64
|
+
const companyId = getCompanyId(params);
|
|
65
|
+
if (!companyId)
|
|
66
|
+
return noCompanySelected();
|
|
67
|
+
const { companyId: _cid, ...rest } = params;
|
|
68
|
+
const body = {};
|
|
69
|
+
const fields = ['prefix', 'type', 'currentNumber', 'active'];
|
|
70
|
+
for (const field of fields) {
|
|
71
|
+
if (rest[field] !== undefined)
|
|
72
|
+
body[field] = rest[field];
|
|
73
|
+
}
|
|
74
|
+
const result = await apiRequest('/api/v1/document-series', {
|
|
75
|
+
method: 'POST',
|
|
76
|
+
companyId,
|
|
77
|
+
body,
|
|
78
|
+
});
|
|
79
|
+
return formatResponse(result);
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'document_series_update',
|
|
84
|
+
description: 'Update an existing document series. Only "currentNumber" and "active" can be changed — prefix and type are immutable after creation. Use active=false to deactivate a series (e.g., at end of fiscal year). Changing currentNumber affects the next document number, use with extreme caution to avoid duplicates.',
|
|
85
|
+
inputSchema: z.object({
|
|
86
|
+
uuid: z.string().describe('Document series UUID to update'),
|
|
87
|
+
companyId: z
|
|
88
|
+
.string()
|
|
89
|
+
.optional()
|
|
90
|
+
.describe('Company UUID override (uses active company if not set)'),
|
|
91
|
+
currentNumber: z
|
|
92
|
+
.number()
|
|
93
|
+
.int()
|
|
94
|
+
.min(0)
|
|
95
|
+
.optional()
|
|
96
|
+
.describe('Update the last used number (CAUTION: setting lower than max existing number may create duplicates)'),
|
|
97
|
+
active: z
|
|
98
|
+
.boolean()
|
|
99
|
+
.optional()
|
|
100
|
+
.describe('Set series active or inactive (inactive = not available for new documents)'),
|
|
101
|
+
}),
|
|
102
|
+
handler: async (params) => {
|
|
103
|
+
if (!getConfig().token)
|
|
104
|
+
return notAuthenticated();
|
|
105
|
+
const companyId = getCompanyId(params);
|
|
106
|
+
if (!companyId)
|
|
107
|
+
return noCompanySelected();
|
|
108
|
+
const { uuid, companyId: _cid, ...rest } = params;
|
|
109
|
+
const body = {};
|
|
110
|
+
if (rest.currentNumber !== undefined)
|
|
111
|
+
body.currentNumber = rest.currentNumber;
|
|
112
|
+
if (rest.active !== undefined)
|
|
113
|
+
body.active = rest.active;
|
|
114
|
+
const result = await apiRequest(`/api/v1/document-series/${uuid}`, {
|
|
115
|
+
method: 'PATCH',
|
|
116
|
+
companyId,
|
|
117
|
+
body,
|
|
118
|
+
});
|
|
119
|
+
return formatResponse(result);
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: 'document_series_set_default',
|
|
124
|
+
description: 'Set a document series as the default for its type. The default series is auto-selected when creating new documents of that type. Only one series can be default per type.',
|
|
125
|
+
inputSchema: z.object({
|
|
126
|
+
uuid: z.string().describe('Document series UUID to set as default'),
|
|
127
|
+
companyId: z
|
|
128
|
+
.string()
|
|
129
|
+
.optional()
|
|
130
|
+
.describe('Company UUID override (uses active company if not set)'),
|
|
131
|
+
}),
|
|
132
|
+
handler: async (params) => {
|
|
133
|
+
if (!getConfig().token)
|
|
134
|
+
return notAuthenticated();
|
|
135
|
+
const companyId = getCompanyId(params);
|
|
136
|
+
if (!companyId)
|
|
137
|
+
return noCompanySelected();
|
|
138
|
+
const { uuid } = params;
|
|
139
|
+
const result = await apiRequest(`/api/v1/document-series/${uuid}/set-default`, {
|
|
140
|
+
method: 'POST',
|
|
141
|
+
companyId,
|
|
142
|
+
});
|
|
143
|
+
return formatResponse(result);
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
name: 'document_series_delete',
|
|
148
|
+
description: 'Permanently delete a document series. Cannot delete a series that has been used for any documents. Consider marking as inactive (active=false) instead, to preserve referential integrity and the audit trail. Only delete if the series was created by mistake and never used.',
|
|
149
|
+
inputSchema: z.object({
|
|
150
|
+
uuid: z.string().describe('Document series UUID to delete'),
|
|
151
|
+
companyId: z
|
|
152
|
+
.string()
|
|
153
|
+
.optional()
|
|
154
|
+
.describe('Company UUID override (uses active company if not set)'),
|
|
155
|
+
}),
|
|
156
|
+
handler: async (params) => {
|
|
157
|
+
if (!getConfig().token)
|
|
158
|
+
return notAuthenticated();
|
|
159
|
+
const companyId = getCompanyId(params);
|
|
160
|
+
if (!companyId)
|
|
161
|
+
return noCompanySelected();
|
|
162
|
+
const { uuid } = params;
|
|
163
|
+
const result = await apiRequest(`/api/v1/document-series/${uuid}`, {
|
|
164
|
+
method: 'DELETE',
|
|
165
|
+
companyId,
|
|
166
|
+
});
|
|
167
|
+
return formatResponse(result);
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
];
|
|
171
|
+
//# sourceMappingURL=document-series.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-series.js","sourceRoot":"","sources":["../../src/tools/document-series.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const tools: ({
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
inputSchema: z.ZodObject<{
|
|
6
|
+
page: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
messageType: z.ZodOptional<z.ZodEnum<["response", "notification", "error", "warning", "info"]>>;
|
|
9
|
+
status: z.ZodOptional<z.ZodEnum<["ok", "error", "warning", "pending"]>>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
status?: "ok" | "error" | "warning" | "pending" | undefined;
|
|
12
|
+
page?: number | undefined;
|
|
13
|
+
limit?: number | undefined;
|
|
14
|
+
messageType?: "error" | "response" | "notification" | "warning" | "info" | undefined;
|
|
15
|
+
}, {
|
|
16
|
+
status?: "ok" | "error" | "warning" | "pending" | undefined;
|
|
17
|
+
page?: number | undefined;
|
|
18
|
+
limit?: number | undefined;
|
|
19
|
+
messageType?: "error" | "response" | "notification" | "warning" | "info" | undefined;
|
|
20
|
+
}>;
|
|
21
|
+
handler: (params: Record<string, unknown>) => Promise<string>;
|
|
22
|
+
} | {
|
|
23
|
+
name: string;
|
|
24
|
+
description: string;
|
|
25
|
+
inputSchema: z.ZodObject<{
|
|
26
|
+
uuid: z.ZodString;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
uuid: string;
|
|
29
|
+
}, {
|
|
30
|
+
uuid: string;
|
|
31
|
+
}>;
|
|
32
|
+
handler: (params: Record<string, unknown>) => Promise<string>;
|
|
33
|
+
})[];
|
|
34
|
+
//# sourceMappingURL=efactura-messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"efactura-messages.d.ts","sourceRoot":"","sources":["../../src/tools/efactura-messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;sBAiBU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;sBAuBzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;IAQpE,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { apiRequest } from '../client.js';
|
|
3
|
+
import { formatResponse, notAuthenticated } from '../utils/errors.js';
|
|
4
|
+
import { getConfig } from '../config.js';
|
|
5
|
+
export const tools = [
|
|
6
|
+
{
|
|
7
|
+
name: 'efactura_messages_list',
|
|
8
|
+
description: 'List e-Factura messages from the ANAF SPV platform with pagination and filtering. Messages include responses to uploaded invoices, notifications (accepted/rejected), errors, warnings, and informational messages. Useful for troubleshooting invoice upload issues.',
|
|
9
|
+
inputSchema: z.object({
|
|
10
|
+
page: z.number().optional().describe('Page number (default: 1)'),
|
|
11
|
+
limit: z.number().optional().describe('Items per page (default: 20, max: 100)'),
|
|
12
|
+
messageType: z
|
|
13
|
+
.enum(['response', 'notification', 'error', 'warning', 'info'])
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('Filter by message type'),
|
|
16
|
+
status: z
|
|
17
|
+
.enum(['ok', 'error', 'warning', 'pending'])
|
|
18
|
+
.optional()
|
|
19
|
+
.describe('Filter by message status'),
|
|
20
|
+
}),
|
|
21
|
+
handler: async (params) => {
|
|
22
|
+
const config = getConfig();
|
|
23
|
+
if (!config.token)
|
|
24
|
+
return notAuthenticated();
|
|
25
|
+
const res = await apiRequest('/api/v1/efactura-messages', {
|
|
26
|
+
query: {
|
|
27
|
+
page: params.page,
|
|
28
|
+
limit: params.limit,
|
|
29
|
+
messageType: params.messageType,
|
|
30
|
+
status: params.status,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
return formatResponse(res);
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'efactura_messages_get',
|
|
38
|
+
description: 'Get full details of a specific e-Factura message including both parsed details and raw ANAF response data. Includes related invoice information when available. Useful for diagnosing specific invoice upload errors.',
|
|
39
|
+
inputSchema: z.object({
|
|
40
|
+
uuid: z.string().describe('UUID of the e-Factura message to retrieve'),
|
|
41
|
+
}),
|
|
42
|
+
handler: async (params) => {
|
|
43
|
+
const config = getConfig();
|
|
44
|
+
if (!config.token)
|
|
45
|
+
return notAuthenticated();
|
|
46
|
+
const res = await apiRequest(`/api/v1/efactura-messages/${params.uuid}`);
|
|
47
|
+
return formatResponse(res);
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
//# sourceMappingURL=efactura-messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"efactura-messages.js","sourceRoot":"","sources":["../../src/tools/efactura-messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,uQAAuQ;QACzQ,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YAChE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YAC/E,WAAW,EAAE,CAAC;iBACX,IAAI,CAAC,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;iBAC9D,QAAQ,EAAE;iBACV,QAAQ,CAAC,wBAAwB,CAAC;YACrC,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;iBAC3C,QAAQ,EAAE;iBACV,QAAQ,CAAC,0BAA0B,CAAC;SACxC,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAA+B,EAAmB,EAAE;YAClE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK;gBAAE,OAAO,gBAAgB,EAAE,CAAC;YAE7C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,2BAA2B,EAAE;gBACxD,KAAK,EAAE;oBACL,IAAI,EAAE,MAAM,CAAC,IAA0B;oBACvC,KAAK,EAAE,MAAM,CAAC,KAA2B;oBACzC,WAAW,EAAE,MAAM,CAAC,WAAiC;oBACrD,MAAM,EAAE,MAAM,CAAC,MAA4B;iBAC5C;aACF,CAAC,CAAC;YACH,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;KACF;IAED;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,uNAAuN;QACzN,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;SACvE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAA+B,EAAmB,EAAE;YAClE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK;gBAAE,OAAO,gBAAgB,EAAE,CAAC;YAE7C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,6BAA6B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzE,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const tools: {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
6
|
+
handler: (_params: Record<string, unknown>) => Promise<string>;
|
|
7
|
+
}[];
|
|
8
|
+
//# sourceMappingURL=einvoice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"einvoice.d.ts","sourceRoot":"","sources":["../../src/tools/einvoice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,KAAK;;;;uBAMW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;GA2KrE,CAAC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { apiRequest } from '../client.js';
|
|
3
|
+
import { formatResponse, notAuthenticated, noCompanySelected } from '../utils/errors.js';
|
|
4
|
+
import { getConfig } from '../config.js';
|
|
5
|
+
function getCompanyId(params) {
|
|
6
|
+
return params.companyId || getConfig().companyId || undefined;
|
|
7
|
+
}
|
|
8
|
+
export const tools = [
|
|
9
|
+
{
|
|
10
|
+
name: 'einvoice_providers',
|
|
11
|
+
description: 'List all available e-invoicing providers. Returns provider identifiers, labels, and country codes. Providers include: anaf (Romania), xrechnung (Germany), sdi (Italy), ksef (Poland), facturx (France).',
|
|
12
|
+
inputSchema: z.object({}),
|
|
13
|
+
handler: async (_params) => {
|
|
14
|
+
const config = getConfig();
|
|
15
|
+
if (!config.token)
|
|
16
|
+
return notAuthenticated();
|
|
17
|
+
const res = await apiRequest('/api/v1/einvoice/providers');
|
|
18
|
+
return formatResponse(res);
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'einvoice_submit',
|
|
23
|
+
description: 'Submit an invoice to an e-invoicing provider. Supports all EU providers: anaf (Romania e-Factura), xrechnung (Germany), sdi (Italy), ksef (Poland), facturx (France). For ANAF, uses the existing e-Factura submission flow. For other providers, generates country-specific XML and optionally submits via API if credentials are configured.',
|
|
24
|
+
inputSchema: z.object({
|
|
25
|
+
uuid: z.string().describe('UUID of the invoice to submit'),
|
|
26
|
+
provider: z
|
|
27
|
+
.enum(['anaf', 'xrechnung', 'sdi', 'ksef', 'facturx'])
|
|
28
|
+
.describe('E-invoicing provider: anaf (Romania), xrechnung (Germany), sdi (Italy), ksef (Poland), facturx (France)'),
|
|
29
|
+
companyId: z.string().optional().describe('Company UUID (uses default if not specified)'),
|
|
30
|
+
}),
|
|
31
|
+
handler: async (params) => {
|
|
32
|
+
const config = getConfig();
|
|
33
|
+
if (!config.token)
|
|
34
|
+
return notAuthenticated();
|
|
35
|
+
const companyId = getCompanyId(params);
|
|
36
|
+
if (!companyId)
|
|
37
|
+
return noCompanySelected();
|
|
38
|
+
const res = await apiRequest(`/api/v1/invoices/${params.uuid}/submit-einvoice`, {
|
|
39
|
+
method: 'POST',
|
|
40
|
+
companyId,
|
|
41
|
+
body: { provider: params.provider },
|
|
42
|
+
});
|
|
43
|
+
return formatResponse(res);
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'einvoice_submissions',
|
|
48
|
+
description: 'List all e-invoice submissions for a specific invoice. Shows submission history across all providers (ANAF, XRechnung, SDI, KSeF, Factur-X) with status, external IDs, error messages, and metadata. Note: ANAF submissions are tracked separately via the existing e-Factura flow and may not appear here.',
|
|
49
|
+
inputSchema: z.object({
|
|
50
|
+
uuid: z.string().describe('UUID of the invoice'),
|
|
51
|
+
companyId: z.string().optional().describe('Company UUID (uses default if not specified)'),
|
|
52
|
+
}),
|
|
53
|
+
handler: async (params) => {
|
|
54
|
+
const config = getConfig();
|
|
55
|
+
if (!config.token)
|
|
56
|
+
return notAuthenticated();
|
|
57
|
+
const companyId = getCompanyId(params);
|
|
58
|
+
if (!companyId)
|
|
59
|
+
return noCompanySelected();
|
|
60
|
+
const res = await apiRequest(`/api/v1/invoices/${params.uuid}/einvoice-submissions`, {
|
|
61
|
+
companyId,
|
|
62
|
+
});
|
|
63
|
+
return formatResponse(res);
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'einvoice_config_list',
|
|
68
|
+
description: 'List all e-invoice provider configurations for a company. Shows which providers are enabled and their settings (API credentials, routing codes, etc.). Provider-specific config fields: anaf (managed via ANAF tokens), xrechnung (clientId, clientSecret for ZRE), sdi (certPath, certPassword or apiEndpoint, apiKey), ksef (authToken, nip), facturx (clientId, clientSecret, siret for Chorus Pro).',
|
|
69
|
+
inputSchema: z.object({
|
|
70
|
+
companyId: z.string().optional().describe('Company UUID (uses default if not specified)'),
|
|
71
|
+
}),
|
|
72
|
+
handler: async (params) => {
|
|
73
|
+
const config = getConfig();
|
|
74
|
+
if (!config.token)
|
|
75
|
+
return notAuthenticated();
|
|
76
|
+
const companyId = getCompanyId(params);
|
|
77
|
+
if (!companyId)
|
|
78
|
+
return noCompanySelected();
|
|
79
|
+
const res = await apiRequest(`/api/v1/companies/${companyId}/einvoice-config`, {
|
|
80
|
+
companyId,
|
|
81
|
+
});
|
|
82
|
+
return formatResponse(res);
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'einvoice_config_save',
|
|
87
|
+
description: 'Create or update an e-invoice provider configuration for a company. Use this to enable a provider and set API credentials. Config is provider-specific JSON: xrechnung requires {clientId, clientSecret} for ZRE API; sdi requires {certPath, certPassword} or {apiEndpoint, apiKey} for intermediary; ksef requires {authToken, nip}; facturx requires {clientId, clientSecret, siret} for Chorus Pro. ANAF config is managed separately via ANAF tokens.',
|
|
88
|
+
inputSchema: z.object({
|
|
89
|
+
provider: z
|
|
90
|
+
.enum(['anaf', 'xrechnung', 'sdi', 'ksef', 'facturx'])
|
|
91
|
+
.describe('E-invoicing provider to configure'),
|
|
92
|
+
enabled: z.boolean().optional().describe('Whether this provider is active (default: true)'),
|
|
93
|
+
config: z
|
|
94
|
+
.record(z.unknown())
|
|
95
|
+
.optional()
|
|
96
|
+
.describe('Provider-specific configuration as JSON object'),
|
|
97
|
+
companyId: z.string().optional().describe('Company UUID (uses default if not specified)'),
|
|
98
|
+
}),
|
|
99
|
+
handler: async (params) => {
|
|
100
|
+
const config = getConfig();
|
|
101
|
+
if (!config.token)
|
|
102
|
+
return notAuthenticated();
|
|
103
|
+
const companyId = getCompanyId(params);
|
|
104
|
+
if (!companyId)
|
|
105
|
+
return noCompanySelected();
|
|
106
|
+
const body = { provider: params.provider };
|
|
107
|
+
if (params.enabled !== undefined)
|
|
108
|
+
body.enabled = params.enabled;
|
|
109
|
+
if (params.config !== undefined)
|
|
110
|
+
body.config = params.config;
|
|
111
|
+
const res = await apiRequest(`/api/v1/companies/${companyId}/einvoice-config`, {
|
|
112
|
+
method: 'POST',
|
|
113
|
+
companyId,
|
|
114
|
+
body,
|
|
115
|
+
});
|
|
116
|
+
return formatResponse(res);
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: 'einvoice_config_delete',
|
|
121
|
+
description: 'Delete an e-invoice provider configuration for a company. Removes the provider settings and disables submissions for that provider. Existing submissions are not affected.',
|
|
122
|
+
inputSchema: z.object({
|
|
123
|
+
provider: z
|
|
124
|
+
.enum(['anaf', 'xrechnung', 'sdi', 'ksef', 'facturx'])
|
|
125
|
+
.describe('E-invoicing provider to remove'),
|
|
126
|
+
companyId: z.string().optional().describe('Company UUID (uses default if not specified)'),
|
|
127
|
+
}),
|
|
128
|
+
handler: async (params) => {
|
|
129
|
+
const config = getConfig();
|
|
130
|
+
if (!config.token)
|
|
131
|
+
return notAuthenticated();
|
|
132
|
+
const companyId = getCompanyId(params);
|
|
133
|
+
if (!companyId)
|
|
134
|
+
return noCompanySelected();
|
|
135
|
+
const res = await apiRequest(`/api/v1/companies/${companyId}/einvoice-config/${params.provider}`, {
|
|
136
|
+
method: 'DELETE',
|
|
137
|
+
companyId,
|
|
138
|
+
});
|
|
139
|
+
return formatResponse(res);
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: 'einvoice_config_test',
|
|
144
|
+
description: 'Test e-invoice provider connection with given credentials before saving. Validates that the credentials can authenticate with the provider API. Supports: xrechnung (ZRE OAuth2), sdi (intermediary API or cert validation), ksef (session init), facturx (Chorus Pro OAuth2). ANAF uses a separate OAuth flow and cannot be tested here.',
|
|
145
|
+
inputSchema: z.object({
|
|
146
|
+
provider: z
|
|
147
|
+
.enum(['xrechnung', 'sdi', 'ksef', 'facturx'])
|
|
148
|
+
.describe('E-invoicing provider to test connection for'),
|
|
149
|
+
config: z
|
|
150
|
+
.record(z.unknown())
|
|
151
|
+
.describe('Provider-specific credentials to test. xrechnung: {clientId, clientSecret}; sdi: {apiEndpoint, apiKey} or {certPassword}; ksef: {authToken, nip}; facturx: {clientId, clientSecret}'),
|
|
152
|
+
companyId: z.string().optional().describe('Company UUID (uses default if not specified)'),
|
|
153
|
+
}),
|
|
154
|
+
handler: async (params) => {
|
|
155
|
+
const config = getConfig();
|
|
156
|
+
if (!config.token)
|
|
157
|
+
return notAuthenticated();
|
|
158
|
+
const companyId = getCompanyId(params);
|
|
159
|
+
if (!companyId)
|
|
160
|
+
return noCompanySelected();
|
|
161
|
+
const res = await apiRequest(`/api/v1/companies/${companyId}/einvoice-config/test`, {
|
|
162
|
+
method: 'POST',
|
|
163
|
+
companyId,
|
|
164
|
+
body: { provider: params.provider, config: params.config },
|
|
165
|
+
});
|
|
166
|
+
return formatResponse(res);
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
];
|
|
170
|
+
//# sourceMappingURL=einvoice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"einvoice.js","sourceRoot":"","sources":["../../src/tools/einvoice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const tools: {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
inputSchema: z.ZodObject<{
|
|
6
|
+
companyId: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
companyId?: string | undefined;
|
|
9
|
+
}, {
|
|
10
|
+
companyId?: string | undefined;
|
|
11
|
+
}>;
|
|
12
|
+
handler: (params: Record<string, unknown>) => Promise<string>;
|
|
13
|
+
}[];
|
|
14
|
+
//# sourceMappingURL=email-templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-templates.d.ts","sourceRoot":"","sources":["../../src/tools/email-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,KAAK;;;;;;;;;;sBAQU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;GA6FpE,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { apiRequest } from '../client.js';
|
|
3
|
+
import { formatResponse, notAuthenticated, noCompanySelected } from '../utils/errors.js';
|
|
4
|
+
import { getConfig } from '../config.js';
|
|
5
|
+
export const tools = [
|
|
6
|
+
{
|
|
7
|
+
name: 'email_templates_list',
|
|
8
|
+
description: 'List all email templates configured for the selected company. Templates support dynamic variables like {{invoice_number}}, {{client_name}}, {{total}}, {{currency}}, {{due_date}}, {{issue_date}}, {{company_name}}. If no templates exist, a default template is automatically created.',
|
|
9
|
+
inputSchema: z.object({
|
|
10
|
+
companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
|
|
11
|
+
}),
|
|
12
|
+
handler: async (params) => {
|
|
13
|
+
const config = getConfig();
|
|
14
|
+
if (!config.token)
|
|
15
|
+
return notAuthenticated();
|
|
16
|
+
const companyId = params.companyId || config.companyId;
|
|
17
|
+
if (!companyId)
|
|
18
|
+
return noCompanySelected();
|
|
19
|
+
const res = await apiRequest('/api/v1/email-templates', { companyId });
|
|
20
|
+
return formatResponse(res);
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'email_templates_create',
|
|
25
|
+
description: 'Create a new email template for invoice communications. Templates support dynamic variables ({{invoice_number}}, {{client_name}}, {{total}}, {{currency}}, {{due_date}}, {{issue_date}}, {{company_name}}) that are replaced with actual data when emails are sent.',
|
|
26
|
+
inputSchema: z.object({
|
|
27
|
+
companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
|
|
28
|
+
name: z.string().describe('Template name for internal reference'),
|
|
29
|
+
subject: z.string().describe('Email subject line (supports variables like {{invoice_number}})'),
|
|
30
|
+
body: z.string().describe('Email body content (supports variables and HTML formatting)'),
|
|
31
|
+
isDefault: z
|
|
32
|
+
.boolean()
|
|
33
|
+
.optional()
|
|
34
|
+
.describe('Set as default template (default: false). Only one template can be default'),
|
|
35
|
+
}),
|
|
36
|
+
handler: async (params) => {
|
|
37
|
+
const config = getConfig();
|
|
38
|
+
if (!config.token)
|
|
39
|
+
return notAuthenticated();
|
|
40
|
+
const companyId = params.companyId || config.companyId;
|
|
41
|
+
if (!companyId)
|
|
42
|
+
return noCompanySelected();
|
|
43
|
+
const { companyId: _cid, ...body } = params;
|
|
44
|
+
const res = await apiRequest('/api/v1/email-templates', {
|
|
45
|
+
method: 'POST',
|
|
46
|
+
companyId,
|
|
47
|
+
body: body,
|
|
48
|
+
});
|
|
49
|
+
return formatResponse(res);
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'email_templates_update',
|
|
54
|
+
description: 'Update an existing email template. All fields are optional but at least one must be provided. Setting isDefault to true will unset the current default template.',
|
|
55
|
+
inputSchema: z.object({
|
|
56
|
+
uuid: z.string().describe('UUID of the email template to update'),
|
|
57
|
+
companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
|
|
58
|
+
name: z.string().optional().describe('Template name for internal reference'),
|
|
59
|
+
subject: z.string().optional().describe('Email subject line (supports variables)'),
|
|
60
|
+
body: z.string().optional().describe('Email body content (supports variables and HTML formatting)'),
|
|
61
|
+
isDefault: z
|
|
62
|
+
.boolean()
|
|
63
|
+
.optional()
|
|
64
|
+
.describe('Set as default template. Only one template can be default at a time'),
|
|
65
|
+
}),
|
|
66
|
+
handler: async (params) => {
|
|
67
|
+
const config = getConfig();
|
|
68
|
+
if (!config.token)
|
|
69
|
+
return notAuthenticated();
|
|
70
|
+
const companyId = params.companyId || config.companyId;
|
|
71
|
+
if (!companyId)
|
|
72
|
+
return noCompanySelected();
|
|
73
|
+
const { uuid, companyId: _cid, ...body } = params;
|
|
74
|
+
const res = await apiRequest(`/api/v1/email-templates/${uuid}`, {
|
|
75
|
+
method: 'PATCH',
|
|
76
|
+
companyId,
|
|
77
|
+
body: body,
|
|
78
|
+
});
|
|
79
|
+
return formatResponse(res);
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'email_templates_delete',
|
|
84
|
+
description: 'Permanently delete an email template. Cannot delete the last remaining template or the default template (set another as default first). Emails already sent using this template are not affected.',
|
|
85
|
+
inputSchema: z.object({
|
|
86
|
+
uuid: z.string().describe('UUID of the email template to delete'),
|
|
87
|
+
companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
|
|
88
|
+
}),
|
|
89
|
+
handler: async (params) => {
|
|
90
|
+
const config = getConfig();
|
|
91
|
+
if (!config.token)
|
|
92
|
+
return notAuthenticated();
|
|
93
|
+
const companyId = params.companyId || config.companyId;
|
|
94
|
+
if (!companyId)
|
|
95
|
+
return noCompanySelected();
|
|
96
|
+
const res = await apiRequest(`/api/v1/email-templates/${params.uuid}`, {
|
|
97
|
+
method: 'DELETE',
|
|
98
|
+
companyId,
|
|
99
|
+
});
|
|
100
|
+
return formatResponse(res);
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
];
|
|
104
|
+
//# sourceMappingURL=email-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-templates.js","sourceRoot":"","sources":["../../src/tools/email-templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const tools: {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
inputSchema: z.ZodObject<{
|
|
6
|
+
date: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
date?: string | undefined;
|
|
9
|
+
}, {
|
|
10
|
+
date?: string | undefined;
|
|
11
|
+
}>;
|
|
12
|
+
handler: (params: Record<string, unknown>) => Promise<string>;
|
|
13
|
+
}[];
|
|
14
|
+
//# sourceMappingURL=exchange-rates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exchange-rates.d.ts","sourceRoot":"","sources":["../../src/tools/exchange-rates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,KAAK;;;;;;;;;;sBAWU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;GAyCpE,CAAC"}
|