@codemill-solutions/yuki-mcp 1.0.0 → 1.0.1
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/dist/index.d.ts +1 -1
- package/dist/index.js +19 -19
- package/dist/index.js.map +1 -1
- package/dist/tools/accounting.d.ts +2 -2
- package/dist/tools/accounting.d.ts.map +1 -1
- package/dist/tools/accounting.js +14 -17
- package/dist/tools/accounting.js.map +1 -1
- package/dist/tools/administrations.d.ts +2 -2
- package/dist/tools/administrations.d.ts.map +1 -1
- package/dist/tools/administrations.js +9 -9
- package/dist/tools/administrations.js.map +1 -1
- package/dist/tools/documents.d.ts +2 -2
- package/dist/tools/documents.d.ts.map +1 -1
- package/dist/tools/documents.js +87 -79
- package/dist/tools/documents.js.map +1 -1
- package/dist/tools/invoices.d.ts +2 -2
- package/dist/tools/invoices.d.ts.map +1 -1
- package/dist/tools/invoices.js +231 -190
- package/dist/tools/invoices.js.map +1 -1
- package/dist/tools/relations.d.ts +2 -2
- package/dist/tools/relations.d.ts.map +1 -1
- package/dist/tools/relations.js +106 -88
- package/dist/tools/relations.js.map +1 -1
- package/dist/tools/transactions.d.ts +2 -2
- package/dist/tools/transactions.d.ts.map +1 -1
- package/dist/tools/transactions.js +71 -63
- package/dist/tools/transactions.js.map +1 -1
- package/dist/yuki-client.d.ts.map +1 -1
- package/dist/yuki-client.js +42 -42
- package/dist/yuki-client.js.map +1 -1
- package/package.json +9 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { z } from
|
|
2
|
-
import { XmlValue, escapeXml } from
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { XmlValue, escapeXml } from '../yuki-client.js';
|
|
3
3
|
/**
|
|
4
4
|
* Register tools for retrieving GL account transactions from Yuki.
|
|
5
5
|
*
|
|
@@ -27,36 +27,32 @@ export function registerTransactionTools(server, client) {
|
|
|
27
27
|
*
|
|
28
28
|
* Rate cost: 1 request.
|
|
29
29
|
*/
|
|
30
|
-
server.registerTool(
|
|
31
|
-
description:
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
server.registerTool('get_transactions', {
|
|
31
|
+
description: 'Retrieve all journal entries for a specific GL account code within a date range. ' +
|
|
32
|
+
'Use this for bank transactions (find the bank GL code with get_gl_accounts first). ' +
|
|
33
|
+
'Returns date, description, debit/credit amounts, and counterpart GL account.',
|
|
34
34
|
inputSchema: {
|
|
35
35
|
glAccountCode: z
|
|
36
36
|
.string()
|
|
37
37
|
.describe("GL account code to retrieve transactions for (e.g. '1200' for a bank account). " +
|
|
38
|
-
|
|
39
|
-
startDate: z
|
|
40
|
-
|
|
41
|
-
.describe("Start date in YYYY-MM-DD format (inclusive)"),
|
|
42
|
-
endDate: z
|
|
43
|
-
.string()
|
|
44
|
-
.describe("End date in YYYY-MM-DD format (inclusive)"),
|
|
38
|
+
'Use get_gl_accounts to find the right code.'),
|
|
39
|
+
startDate: z.string().describe('Start date in YYYY-MM-DD format (inclusive)'),
|
|
40
|
+
endDate: z.string().describe('End date in YYYY-MM-DD format (inclusive)'),
|
|
45
41
|
administrationId: z
|
|
46
42
|
.string()
|
|
47
43
|
.optional()
|
|
48
|
-
.describe(
|
|
44
|
+
.describe('Administration ID (GUID). Defaults to YUKI_DOMAIN_ID env var.'),
|
|
49
45
|
},
|
|
50
46
|
}, async ({ glAccountCode, startDate, endDate, administrationId }) => {
|
|
51
47
|
try {
|
|
52
48
|
const adminId = administrationId ?? client.defaultDomainId;
|
|
53
49
|
if (!adminId) {
|
|
54
|
-
throw new Error(
|
|
50
|
+
throw new Error('administrationId is required (or set YUKI_DOMAIN_ID env var)');
|
|
55
51
|
}
|
|
56
52
|
const sessionID = await client.getSessionID();
|
|
57
53
|
const result = await client.callSoap({
|
|
58
|
-
service:
|
|
59
|
-
method:
|
|
54
|
+
service: 'Accounting.asmx',
|
|
55
|
+
method: 'GLAccountTransactions',
|
|
60
56
|
params: {
|
|
61
57
|
sessionID,
|
|
62
58
|
administrationID: adminId,
|
|
@@ -69,7 +65,7 @@ export function registerTransactionTools(server, client) {
|
|
|
69
65
|
return {
|
|
70
66
|
content: [
|
|
71
67
|
{
|
|
72
|
-
type:
|
|
68
|
+
type: 'text',
|
|
73
69
|
text: JSON.stringify({
|
|
74
70
|
success: true,
|
|
75
71
|
count: transactions.length,
|
|
@@ -86,7 +82,7 @@ export function registerTransactionTools(server, client) {
|
|
|
86
82
|
return {
|
|
87
83
|
content: [
|
|
88
84
|
{
|
|
89
|
-
type:
|
|
85
|
+
type: 'text',
|
|
90
86
|
text: JSON.stringify({ success: false, error: message }, null, 2),
|
|
91
87
|
},
|
|
92
88
|
],
|
|
@@ -105,17 +101,15 @@ export function registerTransactionTools(server, client) {
|
|
|
105
101
|
*
|
|
106
102
|
* Rate cost: 1 request.
|
|
107
103
|
*/
|
|
108
|
-
server.registerTool(
|
|
109
|
-
description:
|
|
110
|
-
|
|
104
|
+
server.registerTool('get_transaction_details', {
|
|
105
|
+
description: 'Check whether an outstanding item (invoice) with a given reference still exists in Yuki ' +
|
|
106
|
+
'and retrieve its current open amount and status.',
|
|
111
107
|
inputSchema: {
|
|
112
|
-
reference: z
|
|
113
|
-
.string()
|
|
114
|
-
.describe("Invoice reference number as shown in Yuki (e.g. '2024-0042')"),
|
|
108
|
+
reference: z.string().describe("Invoice reference number as shown in Yuki (e.g. '2024-0042')"),
|
|
115
109
|
administrationId: z
|
|
116
110
|
.string()
|
|
117
111
|
.optional()
|
|
118
|
-
.describe(
|
|
112
|
+
.describe('Administration ID (GUID). Defaults to YUKI_DOMAIN_ID env var.'),
|
|
119
113
|
},
|
|
120
114
|
}, async ({ reference, administrationId }) => {
|
|
121
115
|
try {
|
|
@@ -123,8 +117,8 @@ export function registerTransactionTools(server, client) {
|
|
|
123
117
|
const sessionID = await client.getSessionID();
|
|
124
118
|
// CheckOutstandingItemAdmin checks a specific reference within an administration
|
|
125
119
|
const result = await client.callSoap({
|
|
126
|
-
service:
|
|
127
|
-
method:
|
|
120
|
+
service: 'Accounting.asmx',
|
|
121
|
+
method: 'CheckOutstandingItemAdmin',
|
|
128
122
|
params: {
|
|
129
123
|
sessionID,
|
|
130
124
|
adminID: adminId,
|
|
@@ -134,7 +128,7 @@ export function registerTransactionTools(server, client) {
|
|
|
134
128
|
return {
|
|
135
129
|
content: [
|
|
136
130
|
{
|
|
137
|
-
type:
|
|
131
|
+
type: 'text',
|
|
138
132
|
text: JSON.stringify({ success: true, reference, result }, null, 2),
|
|
139
133
|
},
|
|
140
134
|
],
|
|
@@ -145,7 +139,7 @@ export function registerTransactionTools(server, client) {
|
|
|
145
139
|
return {
|
|
146
140
|
content: [
|
|
147
141
|
{
|
|
148
|
-
type:
|
|
142
|
+
type: 'text',
|
|
149
143
|
text: JSON.stringify({ success: false, error: message }, null, 2),
|
|
150
144
|
},
|
|
151
145
|
],
|
|
@@ -180,30 +174,40 @@ export function registerJournalWriteTools(server, client) {
|
|
|
180
174
|
*
|
|
181
175
|
* Rate cost: 1 request.
|
|
182
176
|
*/
|
|
183
|
-
server.registerTool(
|
|
184
|
-
description:
|
|
185
|
-
|
|
186
|
-
|
|
177
|
+
server.registerTool('process_journal', {
|
|
178
|
+
description: 'Post a general journal entry (memoriaal) in Yuki for bank reconciliation, corrections, or custom bookings. ' +
|
|
179
|
+
'IMPORTANT: all entry amounts must sum to exactly 0 (positive = debit, negative = credit). ' +
|
|
180
|
+
'Yuki will reject the entry if this rule is violated.',
|
|
187
181
|
inputSchema: {
|
|
188
|
-
subject: z
|
|
189
|
-
|
|
190
|
-
.
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
182
|
+
subject: z
|
|
183
|
+
.string()
|
|
184
|
+
.describe("Document subject / description shown in Yuki (e.g. 'Bank reconciliation April 2024')"),
|
|
185
|
+
journalType: z
|
|
186
|
+
.enum(['GeneralJournal', 'EndOfYearCorrection', 'FiscalCorrection'])
|
|
187
|
+
.optional()
|
|
188
|
+
.default('GeneralJournal')
|
|
189
|
+
.describe('Journal type. Year-end and fiscal corrections must have entry dates on the last day of the financial year.'),
|
|
190
|
+
entries: z
|
|
191
|
+
.array(z.object({
|
|
192
|
+
entryDate: z.string().describe('Entry date in YYYY-MM-DD format'),
|
|
194
193
|
glAccount: z.string().describe("GL account code (e.g. '1200' for bank, '1300' for debtors)"),
|
|
195
|
-
amount: z.number().describe(
|
|
196
|
-
description: z.string().optional().describe(
|
|
197
|
-
contactCode: z.string().optional().describe(
|
|
198
|
-
contactName: z.string().optional().describe(
|
|
199
|
-
}))
|
|
200
|
-
|
|
194
|
+
amount: z.number().describe('Amount: positive = debit, negative = credit. All entries must sum to 0.'),
|
|
195
|
+
description: z.string().optional().describe('Line description (max 256 characters)'),
|
|
196
|
+
contactCode: z.string().optional().describe('Yuki contact code to link this entry to a relation'),
|
|
197
|
+
contactName: z.string().optional().describe('Contact name (used if contactCode is not provided)'),
|
|
198
|
+
}))
|
|
199
|
+
.min(2)
|
|
200
|
+
.describe('Journal entries — must contain at least 2 lines and sum to zero'),
|
|
201
|
+
administrationId: z
|
|
202
|
+
.string()
|
|
203
|
+
.optional()
|
|
204
|
+
.describe('Administration ID (GUID). Defaults to YUKI_DOMAIN_ID env var.'),
|
|
201
205
|
},
|
|
202
206
|
}, async ({ subject, journalType, entries, administrationId }) => {
|
|
203
207
|
try {
|
|
204
208
|
const adminId = administrationId ?? client.defaultDomainId;
|
|
205
209
|
if (!adminId)
|
|
206
|
-
throw new Error(
|
|
210
|
+
throw new Error('administrationId is required (or set YUKI_DOMAIN_ID env var)');
|
|
207
211
|
// Validate balance before sending — save a request on obvious errors
|
|
208
212
|
const total = entries.reduce((sum, e) => sum + e.amount, 0);
|
|
209
213
|
if (Math.abs(total) > 0.001) {
|
|
@@ -211,12 +215,11 @@ export function registerJournalWriteTools(server, client) {
|
|
|
211
215
|
`Check your debit/credit amounts.`);
|
|
212
216
|
}
|
|
213
217
|
const sessionID = await client.getSessionID();
|
|
214
|
-
const xmlDoc = buildJournalXml({ administrationId: adminId, subject,
|
|
215
|
-
journalType, entries });
|
|
218
|
+
const xmlDoc = buildJournalXml({ administrationId: adminId, subject, journalType, entries });
|
|
216
219
|
// Accounting.asmx uses sessionID / administrationID (uppercase D)
|
|
217
220
|
const result = await client.callSoap({
|
|
218
|
-
service:
|
|
219
|
-
method:
|
|
221
|
+
service: 'Accounting.asmx',
|
|
222
|
+
method: 'ProcessJournal',
|
|
220
223
|
params: {
|
|
221
224
|
sessionID,
|
|
222
225
|
administrationID: adminId,
|
|
@@ -224,15 +227,18 @@ export function registerJournalWriteTools(server, client) {
|
|
|
224
227
|
},
|
|
225
228
|
});
|
|
226
229
|
return {
|
|
227
|
-
content: [
|
|
228
|
-
|
|
230
|
+
content: [
|
|
231
|
+
{
|
|
232
|
+
type: 'text',
|
|
233
|
+
text: JSON.stringify({ success: true, subject, entryCount: entries.length, result }, null, 2),
|
|
234
|
+
},
|
|
235
|
+
],
|
|
229
236
|
};
|
|
230
237
|
}
|
|
231
238
|
catch (err) {
|
|
232
239
|
const message = err instanceof Error ? err.message : String(err);
|
|
233
240
|
return {
|
|
234
|
-
content: [{ type:
|
|
235
|
-
text: JSON.stringify({ success: false, error: message }, null, 2) }],
|
|
241
|
+
content: [{ type: 'text', text: JSON.stringify({ success: false, error: message }, null, 2) }],
|
|
236
242
|
isError: true,
|
|
237
243
|
};
|
|
238
244
|
}
|
|
@@ -242,21 +248,23 @@ export function registerJournalWriteTools(server, client) {
|
|
|
242
248
|
/** Build the xmlDoc string for ProcessJournal. */
|
|
243
249
|
function buildJournalXml(args) {
|
|
244
250
|
const x = escapeXml;
|
|
245
|
-
const entriesXml = args.entries
|
|
251
|
+
const entriesXml = args.entries
|
|
252
|
+
.map((e) => `
|
|
246
253
|
<JournalEntry>
|
|
247
254
|
<EntryDate>${x(e.entryDate)}</EntryDate>
|
|
248
255
|
<GLAccount>${x(e.glAccount)}</GLAccount>
|
|
249
256
|
<Amount>${e.amount}</Amount>
|
|
250
|
-
${e.description ? `<Description>${x(e.description.slice(0, 256))}</Description>` :
|
|
251
|
-
${e.contactCode ? `<ContactCode>${x(e.contactCode)}</ContactCode>` :
|
|
252
|
-
${!e.contactCode && e.contactName ? `<ContactName>${x(e.contactName)}</ContactName>` :
|
|
253
|
-
</JournalEntry>`)
|
|
257
|
+
${e.description ? `<Description>${x(e.description.slice(0, 256))}</Description>` : ''}
|
|
258
|
+
${e.contactCode ? `<ContactCode>${x(e.contactCode)}</ContactCode>` : ''}
|
|
259
|
+
${!e.contactCode && e.contactName ? `<ContactName>${x(e.contactName)}</ContactName>` : ''}
|
|
260
|
+
</JournalEntry>`)
|
|
261
|
+
.join('');
|
|
254
262
|
return `<?xml version="1.0" encoding="utf-8"?>
|
|
255
263
|
<Journal xmlns="urn:xmlns:http://www.theyukicompany.com:journal"
|
|
256
264
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
257
265
|
<AdministrationID>${x(args.administrationId)}</AdministrationID>
|
|
258
266
|
<DocumentSubject>${x(args.subject)}</DocumentSubject>
|
|
259
|
-
<JournalType>${x(args.journalType ??
|
|
267
|
+
<JournalType>${x(args.journalType ?? 'GeneralJournal')}</JournalType>
|
|
260
268
|
${entriesXml}
|
|
261
269
|
</Journal>`;
|
|
262
270
|
}
|
|
@@ -267,8 +275,8 @@ function normalizeTransactions(result) {
|
|
|
267
275
|
if (Array.isArray(result))
|
|
268
276
|
return result;
|
|
269
277
|
const rec = result;
|
|
270
|
-
const wrappers = [
|
|
271
|
-
const itemTags = [
|
|
278
|
+
const wrappers = ['Transactions', 'GLTransactions', 'Rows'];
|
|
279
|
+
const itemTags = ['Transaction', 'GLTransaction', 'Row'];
|
|
272
280
|
for (const wrapper of wrappers) {
|
|
273
281
|
const c = rec[wrapper];
|
|
274
282
|
if (!c)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/tools/transactions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAc,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpE;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,
|
|
1
|
+
{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/tools/transactions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuki-client.d.ts","sourceRoot":"","sources":["../src/yuki-client.ts"],"names":[],"mappings":"AAwBA;;;;;;;;;GASG;AACH,qBAAa,QAAQ;IACP,QAAQ,CAAC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;CACjC;AAED,MAAM,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"yuki-client.d.ts","sourceRoot":"","sources":["../src/yuki-client.ts"],"names":[],"mappings":"AAwBA;;;;;;;;;GASG;AACH,qBAAa,QAAQ;IACP,QAAQ,CAAC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;CACjC;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACxC;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAEnC,0EAA0E;IAC1E,OAAO,CAAC,eAAe,CAAuB;gBAElC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAe5C;;;;;;;;;;OAUG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAkBrC,kEAAkE;IAClE,iBAAiB,IAAI,IAAI;IAIzB,mEAAmE;IACnE,IAAI,eAAe,IAAI,MAAM,CAE5B;IAID,8DAA8D;IAC9D,OAAO,CAAC,iBAAiB;IAczB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAYvB;;;;;;;OAOG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAsD1D,4EAA4E;IAC5E,OAAO,CAAC,gBAAgB;CAoBzB;AAID;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7C"}
|
package/dist/yuki-client.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import axios from
|
|
2
|
-
import { XMLParser } from
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { XMLParser } from 'fast-xml-parser';
|
|
3
3
|
// Confirmed via WSDL inspection of api.yukiworks.nl
|
|
4
|
-
const YUKI_BASE_URL =
|
|
5
|
-
const YUKI_NAMESPACE =
|
|
4
|
+
const YUKI_BASE_URL = 'https://api.yukiworks.nl/ws/';
|
|
5
|
+
const YUKI_NAMESPACE = 'http://www.theyukicompany.com/';
|
|
6
6
|
// Tags that should always be treated as arrays even when there is only one element
|
|
7
7
|
const ALWAYS_ARRAY_TAGS = new Set([
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
8
|
+
'Administration',
|
|
9
|
+
'SalesInvoice',
|
|
10
|
+
'PurchaseInvoice',
|
|
11
|
+
'Contact',
|
|
12
|
+
'Relation',
|
|
13
|
+
'Transaction',
|
|
14
|
+
'BankTransaction',
|
|
15
|
+
'GLAccount',
|
|
16
|
+
'DebtorItem',
|
|
17
|
+
'CreditorItem',
|
|
18
|
+
'InvoiceLine',
|
|
19
|
+
'Line',
|
|
20
|
+
'Row',
|
|
21
21
|
]);
|
|
22
22
|
/**
|
|
23
23
|
* Wraps a raw XML string so it is embedded directly into the SOAP body
|
|
@@ -46,7 +46,7 @@ export class YukiClient {
|
|
|
46
46
|
this.domainId = domainId;
|
|
47
47
|
this.parser = new XMLParser({
|
|
48
48
|
ignoreAttributes: false,
|
|
49
|
-
attributeNamePrefix:
|
|
49
|
+
attributeNamePrefix: '@_',
|
|
50
50
|
// Strip namespace prefixes so we can address tags by their local name
|
|
51
51
|
removeNSPrefix: true,
|
|
52
52
|
parseAttributeValue: true,
|
|
@@ -70,13 +70,13 @@ export class YukiClient {
|
|
|
70
70
|
if (this.cachedSessionID)
|
|
71
71
|
return this.cachedSessionID;
|
|
72
72
|
const result = await this.callSoap({
|
|
73
|
-
service:
|
|
74
|
-
method:
|
|
73
|
+
service: 'Accounting.asmx',
|
|
74
|
+
method: 'Authenticate',
|
|
75
75
|
params: { accessKey: this.apiKey },
|
|
76
76
|
});
|
|
77
77
|
const sessionID = extractString(result);
|
|
78
78
|
if (!sessionID) {
|
|
79
|
-
throw new Error(
|
|
79
|
+
throw new Error('Authenticate returned an empty session ID. Check your YUKI_API_KEY.');
|
|
80
80
|
}
|
|
81
81
|
this.cachedSessionID = sessionID;
|
|
82
82
|
return sessionID;
|
|
@@ -111,14 +111,14 @@ export class YukiClient {
|
|
|
111
111
|
*/
|
|
112
112
|
serializeParams(params) {
|
|
113
113
|
return Object.entries(params)
|
|
114
|
-
.filter(([, v]) => v !== undefined && v !==
|
|
114
|
+
.filter(([, v]) => v !== undefined && v !== '')
|
|
115
115
|
.map(([key, v]) => {
|
|
116
116
|
if (v instanceof XmlValue) {
|
|
117
117
|
return `<${key}>${v.xml}</${key}>`;
|
|
118
118
|
}
|
|
119
119
|
return `<${key}>${escapeXml(String(v))}</${key}>`;
|
|
120
120
|
})
|
|
121
|
-
.join(
|
|
121
|
+
.join('\n ');
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
124
124
|
* Execute a SOAP call against a Yuki web service.
|
|
@@ -137,11 +137,11 @@ export class YukiClient {
|
|
|
137
137
|
try {
|
|
138
138
|
const response = await axios.post(url, soapBody, {
|
|
139
139
|
headers: {
|
|
140
|
-
|
|
140
|
+
'Content-Type': 'text/xml; charset=utf-8',
|
|
141
141
|
SOAPAction: `"${soapAction}"`,
|
|
142
142
|
},
|
|
143
143
|
timeout: 30_000,
|
|
144
|
-
responseType:
|
|
144
|
+
responseType: 'text',
|
|
145
145
|
});
|
|
146
146
|
responseData = response.data;
|
|
147
147
|
}
|
|
@@ -160,11 +160,11 @@ export class YukiClient {
|
|
|
160
160
|
const parsed = this.parser.parse(responseData);
|
|
161
161
|
const body = parsed?.Envelope?.Body;
|
|
162
162
|
if (!body) {
|
|
163
|
-
throw new Error(
|
|
163
|
+
throw new Error('Invalid SOAP response: missing <soap:Body>');
|
|
164
164
|
}
|
|
165
|
-
if (body[
|
|
165
|
+
if (body['Fault']) {
|
|
166
166
|
const fault = this.extractSoapFault(responseData);
|
|
167
|
-
throw new Error(`SOAP Fault: ${fault ??
|
|
167
|
+
throw new Error(`SOAP Fault: ${fault ?? 'Unknown SOAP fault'}`);
|
|
168
168
|
}
|
|
169
169
|
// Unwrap <{method}Response><{method}Result> automatically
|
|
170
170
|
const responseKey = `${method}Response`;
|
|
@@ -184,11 +184,11 @@ export class YukiClient {
|
|
|
184
184
|
if (!fault)
|
|
185
185
|
return null;
|
|
186
186
|
// SOAP 1.1 faultstring
|
|
187
|
-
if (typeof fault[
|
|
188
|
-
return fault[
|
|
187
|
+
if (typeof fault['faultstring'] === 'string')
|
|
188
|
+
return fault['faultstring'];
|
|
189
189
|
// SOAP 1.2 Reason/Text
|
|
190
|
-
const text = fault[
|
|
191
|
-
if (typeof text ===
|
|
190
|
+
const text = fault['Reason']?.Text;
|
|
191
|
+
if (typeof text === 'string')
|
|
192
192
|
return text;
|
|
193
193
|
return JSON.stringify(fault);
|
|
194
194
|
}
|
|
@@ -204,22 +204,22 @@ export class YukiClient {
|
|
|
204
204
|
*/
|
|
205
205
|
export function escapeXml(str) {
|
|
206
206
|
return str
|
|
207
|
-
.replace(/&/g,
|
|
208
|
-
.replace(/</g,
|
|
209
|
-
.replace(/>/g,
|
|
210
|
-
.replace(/"/g,
|
|
211
|
-
.replace(/'/g,
|
|
207
|
+
.replace(/&/g, '&')
|
|
208
|
+
.replace(/</g, '<')
|
|
209
|
+
.replace(/>/g, '>')
|
|
210
|
+
.replace(/"/g, '"')
|
|
211
|
+
.replace(/'/g, ''');
|
|
212
212
|
}
|
|
213
213
|
/** Extract a plain string value from a parsed SOAP result (handles wrapping objects). */
|
|
214
214
|
function extractString(value) {
|
|
215
|
-
if (typeof value ===
|
|
215
|
+
if (typeof value === 'string')
|
|
216
216
|
return value.trim() || null;
|
|
217
|
-
if (typeof value ===
|
|
217
|
+
if (typeof value === 'number')
|
|
218
218
|
return String(value);
|
|
219
219
|
// fast-xml-parser sometimes wraps a text node in { "#text": "..." }
|
|
220
|
-
if (value && typeof value ===
|
|
221
|
-
const text = value[
|
|
222
|
-
if (typeof text ===
|
|
220
|
+
if (value && typeof value === 'object') {
|
|
221
|
+
const text = value['#text'];
|
|
222
|
+
if (typeof text === 'string')
|
|
223
223
|
return text.trim() || null;
|
|
224
224
|
}
|
|
225
225
|
return null;
|
package/dist/yuki-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuki-client.js","sourceRoot":"","sources":["../src/yuki-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,oDAAoD;AACpD,MAAM,aAAa,GAAG,8BAA8B,CAAC;AACrD,MAAM,cAAc,GAAG,gCAAgC,CAAC;AAExD,mFAAmF;AACnF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,gBAAgB;IAChB,cAAc;IACd,iBAAiB;IACjB,SAAS;IACT,UAAU;IACV,aAAa;IACb,iBAAiB;IACjB,WAAW;IACX,YAAY;IACZ,cAAc;IACd,aAAa;IACb,MAAM;IACN,KAAK;CACN,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,OAAO,QAAQ;IACE;IAArB,YAAqB,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;CACrC;
|
|
1
|
+
{"version":3,"file":"yuki-client.js","sourceRoot":"","sources":["../src/yuki-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codemill-solutions/yuki-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "MCP server for the Yuki accounting SOAP API",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/CodeMill-Solutions/yuki-mcp.git"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/CodeMill-Solutions/yuki-mcp#readme",
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/CodeMill-Solutions/yuki-mcp/issues"
|
|
12
|
+
},
|
|
5
13
|
"type": "module",
|
|
6
14
|
"main": "dist/index.js",
|
|
7
15
|
"types": "dist/index.d.ts",
|