boondmanager-mcp-server 2.2.0 → 2.4.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/dist/constants.d.ts +3 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +7 -0
- package/dist/constants.js.map +1 -1
- package/dist/schemas/index.d.ts +39 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +71 -6
- package/dist/schemas/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -1
- package/dist/server.js.map +1 -1
- package/dist/services/boond-client.d.ts +50 -2
- package/dist/services/boond-client.d.ts.map +1 -1
- package/dist/services/boond-client.js +194 -7
- package/dist/services/boond-client.js.map +1 -1
- package/dist/tools/absences.d.ts.map +1 -1
- package/dist/tools/absences.js +12 -20
- package/dist/tools/absences.js.map +1 -1
- package/dist/tools/actions.d.ts.map +1 -1
- package/dist/tools/actions.js +4 -16
- package/dist/tools/actions.js.map +1 -1
- package/dist/tools/crud-factory.d.ts +40 -2
- package/dist/tools/crud-factory.d.ts.map +1 -1
- package/dist/tools/crud-factory.js +164 -16
- package/dist/tools/crud-factory.js.map +1 -1
- package/dist/tools/documents.d.ts +3 -0
- package/dist/tools/documents.d.ts.map +1 -0
- package/dist/tools/documents.js +118 -0
- package/dist/tools/documents.js.map +1 -0
- package/dist/tools/expenses.d.ts.map +1 -1
- package/dist/tools/expenses.js +17 -20
- package/dist/tools/expenses.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/invoices.d.ts.map +1 -1
- package/dist/tools/invoices.js +12 -20
- package/dist/tools/invoices.js.map +1 -1
- package/dist/tools/orders.d.ts.map +1 -1
- package/dist/tools/orders.js +12 -20
- package/dist/tools/orders.js.map +1 -1
- package/dist/tools/positionings.d.ts.map +1 -1
- package/dist/tools/positionings.js +13 -18
- package/dist/tools/positionings.js.map +1 -1
- package/dist/tools/purchases.d.ts.map +1 -1
- package/dist/tools/purchases.js +16 -21
- package/dist/tools/purchases.js.map +1 -1
- package/dist/tools/resources.d.ts.map +1 -1
- package/dist/tools/resources.js +12 -1
- package/dist/tools/resources.js.map +1 -1
- package/dist/transports/http.d.ts +2 -0
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +83 -5
- package/dist/transports/http.js.map +1 -1
- package/manifest.json +11 -3
- package/package.json +1 -1
package/dist/tools/invoices.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InvoiceSearchSchema, InvoiceCreateSchema, InvoiceUpdateSchema, IdSchema } from "../schemas/index.js";
|
|
2
2
|
import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse } from "../services/boond-client.js";
|
|
3
|
-
import { buildJsonApiBody } from "./crud-factory.js";
|
|
3
|
+
import { buildJsonApiBody, registerDeleteTool } from "./crud-factory.js";
|
|
4
4
|
export function registerInvoiceTools(server) {
|
|
5
5
|
// Search invoices
|
|
6
6
|
server.registerTool("boond_invoices_search", {
|
|
@@ -75,10 +75,12 @@ Returns: Liste des factures correspondantes.`,
|
|
|
75
75
|
const response = await apiRequest("/invoices", "POST", body);
|
|
76
76
|
const entity = Array.isArray(response.data) ? response.data[0] : response.data;
|
|
77
77
|
return {
|
|
78
|
-
content: [
|
|
78
|
+
content: [
|
|
79
|
+
{
|
|
79
80
|
type: "text",
|
|
80
81
|
text: `✅ Facture créée avec succès.\nID: ${entity?.id}\n\n${formatDetailResponse(response)}`,
|
|
81
|
-
}
|
|
82
|
+
},
|
|
83
|
+
],
|
|
82
84
|
};
|
|
83
85
|
});
|
|
84
86
|
// Update invoice
|
|
@@ -97,28 +99,18 @@ Returns: Liste des factures correspondantes.`,
|
|
|
97
99
|
const body = buildJsonApiBody("invoice", attrs, id);
|
|
98
100
|
const response = await apiRequest(`/invoices/${id}`, "PATCH", body);
|
|
99
101
|
return {
|
|
100
|
-
content: [
|
|
102
|
+
content: [
|
|
103
|
+
{
|
|
101
104
|
type: "text",
|
|
102
105
|
text: `✅ Facture #${id} mise à jour.\n\n${formatDetailResponse(response)}`,
|
|
103
|
-
}
|
|
106
|
+
},
|
|
107
|
+
],
|
|
104
108
|
};
|
|
105
109
|
});
|
|
106
|
-
// Delete invoice
|
|
107
|
-
server
|
|
110
|
+
// Delete invoice — via la factory pour l'élicitation de confirmation + structuredContent
|
|
111
|
+
registerDeleteTool(server, { entityName: "facture", entityNamePlural: "factures", apiPath: "/invoices", prefix: "boond_invoices" }, {
|
|
108
112
|
title: "Supprimer une facture",
|
|
109
|
-
description: `Supprime une facture de BoondManager. ⚠️ Action irréversible.`,
|
|
110
|
-
inputSchema: IdSchema,
|
|
111
|
-
annotations: {
|
|
112
|
-
readOnlyHint: false,
|
|
113
|
-
destructiveHint: true,
|
|
114
|
-
idempotentHint: false,
|
|
115
|
-
openWorldHint: false,
|
|
116
|
-
},
|
|
117
|
-
}, async (params) => {
|
|
118
|
-
await apiRequest(`/invoices/${params.id}`, "DELETE");
|
|
119
|
-
return {
|
|
120
|
-
content: [{ type: "text", text: `🗑️ Facture #${params.id} supprimée.` }],
|
|
121
|
-
};
|
|
113
|
+
description: `Supprime une facture de BoondManager. ⚠️ Action irréversible. Si le client MCP supporte l'élicitation, une confirmation est demandée avant la suppression.`,
|
|
122
114
|
});
|
|
123
115
|
}
|
|
124
116
|
//# sourceMappingURL=invoices.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoices.js","sourceRoot":"","sources":["../../src/tools/invoices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"invoices.js","sourceRoot":"","sources":["../../src/tools/invoices.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../src/tools/orders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../src/tools/orders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+H1D"}
|
package/dist/tools/orders.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OrderSearchSchema, OrderCreateSchema, OrderUpdateSchema, IdSchema } from "../schemas/index.js";
|
|
2
2
|
import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse } from "../services/boond-client.js";
|
|
3
|
-
import { buildJsonApiBody } from "./crud-factory.js";
|
|
3
|
+
import { buildJsonApiBody, registerDeleteTool } from "./crud-factory.js";
|
|
4
4
|
export function registerOrderTools(server) {
|
|
5
5
|
// Search orders
|
|
6
6
|
server.registerTool("boond_orders_search", {
|
|
@@ -69,10 +69,12 @@ Returns: Liste des bons de commande correspondants.`,
|
|
|
69
69
|
const response = await apiRequest("/orders", "POST", body);
|
|
70
70
|
const entity = Array.isArray(response.data) ? response.data[0] : response.data;
|
|
71
71
|
return {
|
|
72
|
-
content: [
|
|
72
|
+
content: [
|
|
73
|
+
{
|
|
73
74
|
type: "text",
|
|
74
75
|
text: `✅ Bon de commande créé avec succès.\nID: ${entity?.id}\n\n${formatDetailResponse(response)}`,
|
|
75
|
-
}
|
|
76
|
+
},
|
|
77
|
+
],
|
|
76
78
|
};
|
|
77
79
|
});
|
|
78
80
|
// Update order
|
|
@@ -91,28 +93,18 @@ Returns: Liste des bons de commande correspondants.`,
|
|
|
91
93
|
const body = buildJsonApiBody("order", attrs, id);
|
|
92
94
|
const response = await apiRequest(`/orders/${id}`, "PATCH", body);
|
|
93
95
|
return {
|
|
94
|
-
content: [
|
|
96
|
+
content: [
|
|
97
|
+
{
|
|
95
98
|
type: "text",
|
|
96
99
|
text: `✅ Bon de commande #${id} mis à jour.\n\n${formatDetailResponse(response)}`,
|
|
97
|
-
}
|
|
100
|
+
},
|
|
101
|
+
],
|
|
98
102
|
};
|
|
99
103
|
});
|
|
100
|
-
// Delete order
|
|
101
|
-
server
|
|
104
|
+
// Delete order — via la factory pour l'élicitation de confirmation + structuredContent
|
|
105
|
+
registerDeleteTool(server, { entityName: "bon de commande", entityNamePlural: "bons de commande", apiPath: "/orders", prefix: "boond_orders" }, {
|
|
102
106
|
title: "Supprimer un bon de commande",
|
|
103
|
-
description: `Supprime un bon de commande de BoondManager. ⚠️ Action irréversible.`,
|
|
104
|
-
inputSchema: IdSchema,
|
|
105
|
-
annotations: {
|
|
106
|
-
readOnlyHint: false,
|
|
107
|
-
destructiveHint: true,
|
|
108
|
-
idempotentHint: false,
|
|
109
|
-
openWorldHint: false,
|
|
110
|
-
},
|
|
111
|
-
}, async (params) => {
|
|
112
|
-
await apiRequest(`/orders/${params.id}`, "DELETE");
|
|
113
|
-
return {
|
|
114
|
-
content: [{ type: "text", text: `🗑️ Bon de commande #${params.id} supprimé.` }],
|
|
115
|
-
};
|
|
107
|
+
description: `Supprime un bon de commande de BoondManager. ⚠️ Action irréversible. Si le client MCP supporte l'élicitation, une confirmation est demandée avant la suppression.`,
|
|
116
108
|
});
|
|
117
109
|
}
|
|
118
110
|
//# sourceMappingURL=orders.js.map
|
package/dist/tools/orders.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orders.js","sourceRoot":"","sources":["../../src/tools/orders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"orders.js","sourceRoot":"","sources":["../../src/tools/orders.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positionings.d.ts","sourceRoot":"","sources":["../../src/tools/positionings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"positionings.d.ts","sourceRoot":"","sources":["../../src/tools/positionings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyGhE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PositioningSearchSchema, PositioningCreateSchema, IdSchema } from "../schemas/index.js";
|
|
2
2
|
import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse } from "../services/boond-client.js";
|
|
3
|
-
import { buildJsonApiBody } from "./crud-factory.js";
|
|
3
|
+
import { buildJsonApiBody, registerDeleteTool } from "./crud-factory.js";
|
|
4
4
|
export function registerPositioningTools(server) {
|
|
5
5
|
// Search positionings
|
|
6
6
|
server.registerTool("boond_positionings_search", {
|
|
@@ -73,28 +73,23 @@ Returns: Liste des positionnements correspondants.`,
|
|
|
73
73
|
const response = await apiRequest("/positionings", "POST", body);
|
|
74
74
|
const entity = Array.isArray(response.data) ? response.data[0] : response.data;
|
|
75
75
|
return {
|
|
76
|
-
content: [
|
|
76
|
+
content: [
|
|
77
|
+
{
|
|
77
78
|
type: "text",
|
|
78
79
|
text: `✅ Positionnement créé avec succès.\nID: ${entity?.id}\n\n${formatDetailResponse(response)}`,
|
|
79
|
-
}
|
|
80
|
+
},
|
|
81
|
+
],
|
|
80
82
|
};
|
|
81
83
|
});
|
|
82
|
-
// Delete positioning
|
|
83
|
-
server
|
|
84
|
+
// Delete positioning — via la factory pour l'élicitation de confirmation + structuredContent
|
|
85
|
+
registerDeleteTool(server, {
|
|
86
|
+
entityName: "positionnement",
|
|
87
|
+
entityNamePlural: "positionnements",
|
|
88
|
+
apiPath: "/positionings",
|
|
89
|
+
prefix: "boond_positionings",
|
|
90
|
+
}, {
|
|
84
91
|
title: "Supprimer un positionnement",
|
|
85
|
-
description: `Supprime un positionnement de BoondManager. ⚠️ Action irréversible.`,
|
|
86
|
-
inputSchema: IdSchema,
|
|
87
|
-
annotations: {
|
|
88
|
-
readOnlyHint: false,
|
|
89
|
-
destructiveHint: true,
|
|
90
|
-
idempotentHint: false,
|
|
91
|
-
openWorldHint: false,
|
|
92
|
-
},
|
|
93
|
-
}, async (params) => {
|
|
94
|
-
await apiRequest(`/positionings/${params.id}`, "DELETE");
|
|
95
|
-
return {
|
|
96
|
-
content: [{ type: "text", text: `🗑️ Positionnement #${params.id} supprimé.` }],
|
|
97
|
-
};
|
|
92
|
+
description: `Supprime un positionnement de BoondManager. ⚠️ Action irréversible. Si le client MCP supporte l'élicitation, une confirmation est demandée avant la suppression.`,
|
|
98
93
|
});
|
|
99
94
|
}
|
|
100
95
|
//# sourceMappingURL=positionings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positionings.js","sourceRoot":"","sources":["../../src/tools/positionings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"positionings.js","sourceRoot":"","sources":["../../src/tools/positionings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purchases.d.ts","sourceRoot":"","sources":["../../src/tools/purchases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"purchases.d.ts","sourceRoot":"","sources":["../../src/tools/purchases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4BzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8F7D"}
|
package/dist/tools/purchases.js
CHANGED
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
import { IdSchema } from "../schemas/index.js";
|
|
2
2
|
import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse } from "../services/boond-client.js";
|
|
3
|
-
import { buildJsonApiBody } from "./crud-factory.js";
|
|
3
|
+
import { buildJsonApiBody, registerDeleteTool } from "./crud-factory.js";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE, MAX_SEARCH_PAGE } from "../constants.js";
|
|
6
|
-
const PurchaseSearchSchema = z
|
|
6
|
+
const PurchaseSearchSchema = z
|
|
7
|
+
.object({
|
|
7
8
|
keywords: z.string().optional().describe("Mots-clés de recherche"),
|
|
8
9
|
companyId: z.string().optional().describe("Filtrer par ID société"),
|
|
9
10
|
projectId: z.string().optional().describe("Filtrer par ID projet"),
|
|
10
11
|
page: z.number().int().min(1).max(MAX_SEARCH_PAGE).default(1).describe(`Numéro de page (max: ${MAX_SEARCH_PAGE})`),
|
|
11
12
|
pageSize: z.number().int().min(1).max(MAX_PAGE_SIZE).default(DEFAULT_PAGE_SIZE).describe("Résultats par page"),
|
|
12
|
-
})
|
|
13
|
-
|
|
13
|
+
})
|
|
14
|
+
.strict();
|
|
15
|
+
const PurchaseCreateSchema = z
|
|
16
|
+
.object({
|
|
14
17
|
companyId: z.string().optional().describe("ID de la société fournisseur"),
|
|
15
18
|
projectId: z.string().optional().describe("ID du projet associé"),
|
|
16
19
|
state: z.number().int().optional().describe("État de l'achat"),
|
|
17
20
|
startDate: z.string().optional().describe("Date de début (YYYY-MM-DD)"),
|
|
18
21
|
endDate: z.string().optional().describe("Date de fin (YYYY-MM-DD)"),
|
|
19
22
|
note: z.string().optional().describe("Notes / commentaires"),
|
|
20
|
-
})
|
|
23
|
+
})
|
|
24
|
+
.strict();
|
|
21
25
|
export function registerPurchaseTools(server) {
|
|
22
26
|
server.registerTool("boond_purchases_search", {
|
|
23
27
|
title: "Rechercher des achats/sous-traitance",
|
|
@@ -82,27 +86,18 @@ Returns: Liste des achats correspondants.`,
|
|
|
82
86
|
const response = await apiRequest("/purchases", "POST", body);
|
|
83
87
|
const entity = Array.isArray(response.data) ? response.data[0] : response.data;
|
|
84
88
|
return {
|
|
85
|
-
content: [
|
|
89
|
+
content: [
|
|
90
|
+
{
|
|
86
91
|
type: "text",
|
|
87
92
|
text: `✅ Achat créé avec succès.\nID: ${entity?.id}\n\n${formatDetailResponse(response)}`,
|
|
88
|
-
}
|
|
93
|
+
},
|
|
94
|
+
],
|
|
89
95
|
};
|
|
90
96
|
});
|
|
91
|
-
|
|
97
|
+
// Delete purchase — via la factory pour l'élicitation de confirmation + structuredContent
|
|
98
|
+
registerDeleteTool(server, { entityName: "achat", entityNamePlural: "achats", apiPath: "/purchases", prefix: "boond_purchases" }, {
|
|
92
99
|
title: "Supprimer un achat/sous-traitance",
|
|
93
|
-
description: `Supprime un achat de BoondManager. ⚠️ Action irréversible.`,
|
|
94
|
-
inputSchema: IdSchema,
|
|
95
|
-
annotations: {
|
|
96
|
-
readOnlyHint: false,
|
|
97
|
-
destructiveHint: true,
|
|
98
|
-
idempotentHint: false,
|
|
99
|
-
openWorldHint: false,
|
|
100
|
-
},
|
|
101
|
-
}, async (params) => {
|
|
102
|
-
await apiRequest(`/purchases/${params.id}`, "DELETE");
|
|
103
|
-
return {
|
|
104
|
-
content: [{ type: "text", text: `🗑️ Achat #${params.id} supprimé.` }],
|
|
105
|
-
};
|
|
100
|
+
description: `Supprime un achat de BoondManager. ⚠️ Action irréversible. Si le client MCP supporte l'élicitation, une confirmation est demandée avant la suppression.`,
|
|
106
101
|
});
|
|
107
102
|
}
|
|
108
103
|
//# sourceMappingURL=purchases.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purchases.js","sourceRoot":"","sources":["../../src/tools/purchases.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"purchases.js","sourceRoot":"","sources":["../../src/tools/purchases.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/tools/resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/tools/resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4LzE,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuEzB;AA+BD,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAe5E,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,iBAAiB,GAAG,iBAAiB,CAQlF;AAWD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+N7D"}
|
package/dist/tools/resources.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ResourceCreateSchema, ResourceUpdateSchema, ResourceSearchSchema, ResourceTechnicalDataUpdateSchema, ReferenceCreateSchema, ReferenceUpdateSchema, ReferenceIdSchema, IdSchema, } from "../schemas/index.js";
|
|
2
|
-
import { registerSearchTool, registerGetTool, registerCreateTool, registerUpdateTool, registerDeleteTool, buildJsonApiBody, } from "./crud-factory.js";
|
|
2
|
+
import { registerSearchTool, registerGetTool, registerCreateTool, registerUpdateTool, registerDeleteTool, buildJsonApiBody, confirmDeletion, } from "./crud-factory.js";
|
|
3
3
|
import { apiRequest, formatDetailResponse } from "../services/boond-client.js";
|
|
4
4
|
const OPTS = {
|
|
5
5
|
entityName: "ressource",
|
|
@@ -415,6 +415,17 @@ export function registerResourceTools(server) {
|
|
|
415
415
|
},
|
|
416
416
|
}, async (params) => {
|
|
417
417
|
const { resourceId, referenceId } = params;
|
|
418
|
+
const confirmation = await confirmDeletion(server, "référence", referenceId);
|
|
419
|
+
if (!confirmation.confirmed) {
|
|
420
|
+
return {
|
|
421
|
+
content: [
|
|
422
|
+
{
|
|
423
|
+
type: "text",
|
|
424
|
+
text: `❌ Suppression de la référence #${referenceId} annulée par l'utilisateur.`,
|
|
425
|
+
},
|
|
426
|
+
],
|
|
427
|
+
};
|
|
428
|
+
}
|
|
418
429
|
const current = await fetchTechnicalDataReferences(resourceId);
|
|
419
430
|
const next = current.filter((r) => String(r.id) !== String(referenceId));
|
|
420
431
|
if (next.length === current.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/tools/resources.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/tools/resources.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,iCAAiC,EACjC,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAE/E,MAAM,IAAI,GAAG;IACX,UAAU,EAAE,WAAW;IACvB,gBAAgB,EAAE,YAAY;IAC9B,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,iBAAiB;CAC1B,CAAC;AAEF,MAAM,oBAAoB,GAAG;IAC3B,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,KAAK;CACZ,CAAC;AASX,MAAM,aAAa,GAAoB;IACrC;QACE,IAAI,EAAE,aAAa;QACnB,GAAG,EAAE,aAAa;QAClB,KAAK,EAAE,wCAAwC;QAC/C,WAAW,EAAE;;;;;kEAKiD;KAC/D;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,GAAG,EAAE,gBAAgB;QACrB,KAAK,EAAE,wCAAwC;QAC/C,WAAW,EAAE;;;;;4DAK2C;KACzD;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,GAAG,EAAE,gBAAgB;QACrB,KAAK,EAAE,yCAAyC;QAChD,WAAW,EAAE;;;;;wDAKuC;KACrD;IACD;QACE,IAAI,EAAE,YAAY;QAClB,GAAG,EAAE,YAAY;QACjB,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE;;;;;8CAK6B;KAC3C;IACD;QACE,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE;;;;;iDAKgC;KAC9C;IACD;QACE,IAAI,EAAE,cAAc;QACpB,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,iCAAiC;QACxC,WAAW,EAAE;;;;;oDAKmC;KACjD;IACD;QACE,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE;;;;;4CAK2B;KACzC;IACD;QACE,IAAI,EAAE,eAAe;QACrB,GAAG,EAAE,eAAe;QACpB,KAAK,EAAE,mCAAmC;QAC1C,WAAW,EAAE;;;;;sDAKqC;KACnD;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,kBAAkB;QACvB,KAAK,EAAE,gCAAgC;QACvC,WAAW,EAAE;;;;;mDAKkC;KAChD;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,kBAAkB;QACvB,KAAK,EAAE,qCAAqC;QAC5C,WAAW,EAAE;;;;;wDAKuC;KACrD;CACF,CAAC;AAEF,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;kGAiB8D,CAAC;AAKnG,0EAA0E;AAC1E,+EAA+E;AAC/E,qEAAqE;AACrE,MAAM,UAAU,kBAAkB,CAChC,OAAgC,EAChC,KAA8B;IAE9B,MAAM,GAAG,GAA4B,EAAE,CAAC;IAExC,MAAM,OAAO,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IAE1E,wDAAwD;IACxD,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAU,EAAE,CAAC;QAC5D,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;QAC/B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAC1B,CAAC;aACE,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACtC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,eAAe,EAAE,UAAU,CAAU,EAAE,CAAC;QAC3E,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,OAAO,CAAC,GAAG,CAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjG,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACxB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACZ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,OAAO,CAAC,KAAwC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClG,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,SAAS,GAAI,KAAK,CAAC,KAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC3G,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAE,OAAO,CAAC,SAA4C,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1G,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAI,KAAK,CAAC,SAA8B,CAAC,MAAM,CAC5D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CACvD,CAAC;QACF,GAAG,CAAC,SAAS,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,iCAAiC,GAAG;;;;;;;;;;;;kIAYwF,CAAC;AAEnI,MAAM,4BAA4B,GAAG;;;;;;;yGAOoE,CAAC;AAE1G,MAAM,4BAA4B,GAAG;;8IAEyG,CAAC;AAE/I,MAAM,4BAA4B,GAAG,8NAA8N,CAAC;AAIpQ,KAAK,UAAU,4BAA4B,CAAC,UAAkB;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,cAAc,UAAU,iBAAiB,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC/E,MAAM,IAAI,GAAI,MAAM,EAAE,UAAuC,EAAE,UAAU,CAAC;IAC1E,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAA4B,CAAC,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,6EAA6E;AAC7E,6EAA6E;AAC7E,wEAAwE;AACxE,2EAA2E;AAC3E,uEAAuE;AACvE,qCAAqC;AACrC,MAAM,UAAU,wBAAwB,CAAC,GAAsB;IAC7D,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;YAAE,SAAS;QAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QAChD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,UAAkB,EAClB,UAA+B;IAE/B,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC;IACjF,OAAO,UAAU,CAAC,cAAc,UAAU,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE;QAC/B,MAAM,EAAE,oBAAoB;QAC5B,WAAW,EAAE,2BAA2B;KACzC,CAAC,CAAC;IACH,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE9B,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;QAChE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QAC5B,OAAO,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;QAChE,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QAChC,OAAO,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAY,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEjC,qCAAqC;IACrC,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,CAAC,YAAY,CACjB,mBAAmB,GAAG,CAAC,IAAI,EAAE,EAC7B;YACE,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,oBAAoB;SAClC,EACD,KAAK,EAAE,MAAe,EAAE,EAAE;YACxB,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,cAAc,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACxE,MAAM,IAAI,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAC5C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;aAC3C,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CACjB,uCAAuC,EACvC;QACE,KAAK,EAAE,oDAAoD;QAC3D,WAAW,EAAE,iCAAiC;QAC9C,WAAW,EAAE,iCAAiC;QAC9C,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAwC,EAAE,EAAE;QACjD,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QACrC,MAAM,QAAQ,GAA4B,MAAM,CAAC,WAAW,CAC1D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CACxD,CAAC;QAEF,IAAI,UAAmC,CAAC;QACxC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,UAAU,GAAG,QAAQ,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;YAC5E,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;YAC3G,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,UAAU,IAAI,EAAE,CAA4B,CAAC;YAClF,UAAU,GAAG,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yBAAyB,EAAE,kDAAkD,IAAI,IAAI;qBAC5F;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAClF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,wCAAwC,EAAE,sBAAsB,IAAI,SAAS,oBAAoB,CAAC,QAAQ,CAAC,EAAE;iBACpH;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kCAAkC,EAClC;QACE,KAAK,EAAE,wDAAwD;QAC/D,WAAW,EAAE,4BAA4B;QACzC,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAA4B,EAAE,EAAE;QACrC,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QACxC,MAAM,QAAQ,GAA4B,MAAM,CAAC,WAAW,CAC1D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CACzD,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,EAAE,QAA6B,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/E,MAAM,IAAI,GAAG,CAAE,MAAM,EAAE,UAAmD,EAAE,UAAU;YACpF,EAAE,CAAwB,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,uCAAuC,UAAU,KAAK,IAAI,CAAC,MAAM,iCAAiC,OAAO,EAAE,EAAE,IAAI,gBAAgB,OAAO,oBAAoB,CAAC,QAAQ,CAAC,EAAE;iBAC/K;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kCAAkC,EAClC;QACE,KAAK,EAAE,yCAAyC;QAChD,WAAW,EAAE,4BAA4B;QACzC,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAA4B,EAAE,EAAE;QACrC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QACrD,MAAM,QAAQ,GAA4B,MAAM,CAAC,WAAW,CAC1D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CACzD,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3E,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,gBAAgB,WAAW,kCAAkC,UAAU,mBAAmB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,GAAG;qBACpJ;iBACF;aACF,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,gBAAgB,WAAW,kCAAkC,UAAU,QAAQ,oBAAoB,CAAC,QAAQ,CAAC,EAAE;iBACtH;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kCAAkC,EAClC;QACE,KAAK,EAAE,0CAA0C;QACjD,WAAW,EAAE,4BAA4B;QACzC,WAAW,EAAE,iBAAiB;QAC9B,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAwB,EAAE,EAAE;QACjC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAC3C,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC7E,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,kCAAkC,WAAW,6BAA6B;qBACjF;iBACF;aACF,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,gBAAgB,WAAW,kCAAkC,UAAU,mBAAmB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,GAAG;qBACpJ;iBACF;aACF,CAAC;QACJ,CAAC;QACD,MAAM,0BAA0B,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,kBAAkB,WAAW,+BAA+B,UAAU,KAAK,IAAI,CAAC,MAAM,6BAA6B;iBAC1H;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -9,6 +9,8 @@ export interface HttpTransportOptions {
|
|
|
9
9
|
sessionTtlMs?: number;
|
|
10
10
|
/** How often to sweep idle sessions, in ms. Defaults to 5 min. */
|
|
11
11
|
sessionSweepIntervalMs?: number;
|
|
12
|
+
/** Max concurrent stateful sessions before new inits are rejected with 503. */
|
|
13
|
+
maxSessions?: number;
|
|
12
14
|
/**
|
|
13
15
|
* Allow-list of Host header hostnames (port-agnostic) for DNS rebinding
|
|
14
16
|
* protection. Empty array = validation disabled. Use `["*"]` to opt out
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,4EAA4E;IAC5E,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1C;AAuCD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAmB5F;AAiBD,wBAAgB,kBAAkB,IAAI,oBAAoB,CAsBzD;AAyED,wBAAsB,kBAAkB,CACtC,mBAAmB,EAAE,MAAM,SAAS,EACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAwR3B"}
|
package/dist/transports/http.js
CHANGED
|
@@ -3,11 +3,16 @@ import { randomUUID } from "node:crypto";
|
|
|
3
3
|
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
4
4
|
import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js";
|
|
5
5
|
import { logger, generateCorrelationId } from "../services/logger.js";
|
|
6
|
+
import { SERVER_VERSION } from "../server.js";
|
|
6
7
|
import { buildProtectedResourceMetadata, extractBearerToken, oauthContext, resolveAdvertisedScopes, resolveAuthorizationServer, } from "../services/oauth.js";
|
|
7
8
|
// Defaults: a half-hour idle window matches typical MCP gateway behaviour, and
|
|
8
9
|
// a 5-minute sweep keeps memory bounded without hammering the event loop.
|
|
9
10
|
const DEFAULT_SESSION_TTL_MS = 30 * 60_000;
|
|
10
11
|
const DEFAULT_SESSION_SWEEP_INTERVAL_MS = 5 * 60_000;
|
|
12
|
+
// Ceiling on concurrent stateful sessions. Each session holds a live
|
|
13
|
+
// McpServer + transport until its TTL sweep, so without a cap an authenticated
|
|
14
|
+
// client could spin up unbounded `initialize` requests and exhaust memory.
|
|
15
|
+
const DEFAULT_MAX_SESSIONS = 1000;
|
|
11
16
|
// Loopback addresses that should default to the localhost host allow-list.
|
|
12
17
|
const LOOPBACK_HOSTS = new Set(["127.0.0.1", "::1", "localhost"]);
|
|
13
18
|
const LOCALHOST_ALLOWED_HOSTS = ["localhost", "127.0.0.1", "[::1]"];
|
|
@@ -44,8 +49,17 @@ function readAllowedHosts() {
|
|
|
44
49
|
*/
|
|
45
50
|
export function resolveAllowedHosts(configured, host) {
|
|
46
51
|
if (configured && configured.length > 0) {
|
|
47
|
-
|
|
48
|
-
|
|
52
|
+
// `*` disables validation, but only when it is the *sole* entry — a bare
|
|
53
|
+
// `*` mixed with real hostnames (`"mcp.example.com,*"`) is almost always a
|
|
54
|
+
// mistake, so we keep validation on and warn rather than silently opening
|
|
55
|
+
// up to every Host. (A glob like `*.example.com` stays a literal token and
|
|
56
|
+
// is treated as a normal allow-list entry.)
|
|
57
|
+
if (configured.includes("*")) {
|
|
58
|
+
if (configured.length === 1)
|
|
59
|
+
return [];
|
|
60
|
+
logger.warn({ allowedHosts: configured }, "MCP_HTTP_ALLOWED_HOSTS contains '*' alongside other hosts; ignoring '*' and keeping Host validation enabled. Set it to exactly '*' to disable validation.");
|
|
61
|
+
return configured.filter((h) => h !== "*");
|
|
62
|
+
}
|
|
49
63
|
return configured;
|
|
50
64
|
}
|
|
51
65
|
if (LOOPBACK_HOSTS.has(host))
|
|
@@ -85,6 +99,7 @@ export function resolveHttpOptions() {
|
|
|
85
99
|
enableJsonResponse,
|
|
86
100
|
sessionTtlMs: readPositiveInt("MCP_HTTP_SESSION_TTL_MS", DEFAULT_SESSION_TTL_MS),
|
|
87
101
|
sessionSweepIntervalMs: readPositiveInt("MCP_HTTP_SESSION_SWEEP_INTERVAL_MS", DEFAULT_SESSION_SWEEP_INTERVAL_MS),
|
|
102
|
+
maxSessions: readPositiveInt("MCP_HTTP_MAX_SESSIONS", DEFAULT_MAX_SESSIONS),
|
|
88
103
|
allowedHosts: readAllowedHosts(),
|
|
89
104
|
publicUrl: readEnv("MCP_HTTP_PUBLIC_URL"),
|
|
90
105
|
};
|
|
@@ -100,10 +115,26 @@ function resolveResourceUrl(options) {
|
|
|
100
115
|
return options.publicUrl.replace(/\/$/, "") || options.publicUrl;
|
|
101
116
|
return `http://${options.host}:${options.port}${options.path}`;
|
|
102
117
|
}
|
|
118
|
+
/** Max accepted request body size (1 MiB). MCP initialize payloads are tiny;
|
|
119
|
+
* this caps the memory a single authenticated request can force us to buffer. */
|
|
120
|
+
const MAX_BODY_BYTES = 1024 * 1024;
|
|
121
|
+
class PayloadTooLargeError extends Error {
|
|
122
|
+
constructor() {
|
|
123
|
+
super("Request body exceeds the maximum allowed size");
|
|
124
|
+
this.name = "PayloadTooLargeError";
|
|
125
|
+
}
|
|
126
|
+
}
|
|
103
127
|
async function readJsonBody(req) {
|
|
104
128
|
const chunks = [];
|
|
129
|
+
let total = 0;
|
|
105
130
|
for await (const chunk of req) {
|
|
106
|
-
|
|
131
|
+
const buf = chunk;
|
|
132
|
+
total += buf.length;
|
|
133
|
+
if (total > MAX_BODY_BYTES) {
|
|
134
|
+
req.destroy();
|
|
135
|
+
throw new PayloadTooLargeError();
|
|
136
|
+
}
|
|
137
|
+
chunks.push(buf);
|
|
107
138
|
}
|
|
108
139
|
const raw = Buffer.concat(chunks).toString("utf8");
|
|
109
140
|
if (!raw)
|
|
@@ -137,14 +168,20 @@ export async function startHttpTransport(createServerFactory, options) {
|
|
|
137
168
|
const sessions = new Map();
|
|
138
169
|
const sessionTtlMs = options.sessionTtlMs ?? DEFAULT_SESSION_TTL_MS;
|
|
139
170
|
const sessionSweepIntervalMs = options.sessionSweepIntervalMs ?? DEFAULT_SESSION_SWEEP_INTERVAL_MS;
|
|
171
|
+
const maxSessions = options.maxSessions ?? DEFAULT_MAX_SESSIONS;
|
|
140
172
|
const allowedHosts = resolveAllowedHosts(options.allowedHosts, options.host);
|
|
141
173
|
const resourceUrl = resolveResourceUrl(options);
|
|
142
174
|
const authorizationServer = resolveAuthorizationServer();
|
|
143
175
|
const advertisedScopes = resolveAdvertisedScopes();
|
|
144
176
|
// Per RFC 9728 §3.2 the metadata URL is `/.well-known/oauth-protected-resource`
|
|
145
177
|
// optionally suffixed with the resource path so multiple resources can
|
|
146
|
-
// coexist on one host. We serve both for compatibility.
|
|
147
|
-
|
|
178
|
+
// coexist on one host. We serve both for compatibility. Strip the path as a
|
|
179
|
+
// *suffix* (not an arbitrary substring) so a hostname that happens to embed
|
|
180
|
+
// the path string isn't mangled.
|
|
181
|
+
const resourceOrigin = resourceUrl.endsWith(options.path)
|
|
182
|
+
? resourceUrl.slice(0, resourceUrl.length - options.path.length)
|
|
183
|
+
: resourceUrl;
|
|
184
|
+
const metadataUrl = `${resourceOrigin}/.well-known/oauth-protected-resource${options.path}`;
|
|
148
185
|
const wwwAuthenticate = `Bearer realm="${resourceUrl}", resource_metadata="${metadataUrl}"`;
|
|
149
186
|
const sweepIdleSessions = async () => {
|
|
150
187
|
const cutoff = Date.now() - sessionTtlMs;
|
|
@@ -195,6 +232,20 @@ export async function startHttpTransport(createServerFactory, options) {
|
|
|
195
232
|
const corrId = generateCorrelationId();
|
|
196
233
|
const reqLogger = logger.child({ corrId, method: req.method, path: req.url });
|
|
197
234
|
try {
|
|
235
|
+
// Liveness probe — served before Host validation so Docker/Kubernetes
|
|
236
|
+
// probes (which often send the pod IP as Host) always succeed. GET only,
|
|
237
|
+
// no auth: it exposes nothing beyond the server version.
|
|
238
|
+
if (req.method === "GET" && req.url?.split("?")[0] === "/healthz") {
|
|
239
|
+
res.statusCode = 200;
|
|
240
|
+
res.setHeader("Content-Type", "application/json");
|
|
241
|
+
res.end(JSON.stringify({
|
|
242
|
+
status: "ok",
|
|
243
|
+
version: SERVER_VERSION,
|
|
244
|
+
mode: options.stateless ? "stateless" : "stateful",
|
|
245
|
+
sessions: sessions.size,
|
|
246
|
+
}));
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
198
249
|
// DNS rebinding protection: validate the Host header against the
|
|
199
250
|
// configured allow-list before doing anything else. See CVE-2025-66414.
|
|
200
251
|
if (allowedHosts.length > 0) {
|
|
@@ -208,6 +259,14 @@ export async function startHttpTransport(createServerFactory, options) {
|
|
|
208
259
|
return;
|
|
209
260
|
}
|
|
210
261
|
}
|
|
262
|
+
// Reject oversized payloads up front when the client advertises the
|
|
263
|
+
// length, before buffering anything. The streaming guard in
|
|
264
|
+
// readJsonBody still covers chunked / lying Content-Length cases.
|
|
265
|
+
const contentLength = Number(req.headers["content-length"]);
|
|
266
|
+
if (Number.isFinite(contentLength) && contentLength > MAX_BODY_BYTES) {
|
|
267
|
+
writeJsonRpcError(res, 413, "Request body too large");
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
211
270
|
const url = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
|
|
212
271
|
// Public OAuth2 discovery endpoint (RFC 9728). Must be reachable
|
|
213
272
|
// without authentication — clients fetch it to learn where to send
|
|
@@ -272,6 +331,16 @@ export async function startHttpTransport(createServerFactory, options) {
|
|
|
272
331
|
writeJsonRpcError(res, 400, "First request must be an MCP initialize message");
|
|
273
332
|
return;
|
|
274
333
|
}
|
|
334
|
+
// Cap concurrent sessions. Try a sweep first in case the ceiling is
|
|
335
|
+
// hit purely by idle-but-not-yet-reaped sessions, then reject.
|
|
336
|
+
if (sessions.size >= maxSessions) {
|
|
337
|
+
await sweepIdleSessions();
|
|
338
|
+
if (sessions.size >= maxSessions) {
|
|
339
|
+
reqLogger.warn({ sessionCount: sessions.size, maxSessions }, "Session limit reached; rejecting new initialize");
|
|
340
|
+
writeJsonRpcError(res, 503, "Server session limit reached; retry later");
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
275
344
|
const transport = new StreamableHTTPServerTransport({
|
|
276
345
|
sessionIdGenerator: () => randomUUID(),
|
|
277
346
|
enableJsonResponse: options.enableJsonResponse,
|
|
@@ -306,6 +375,15 @@ export async function startHttpTransport(createServerFactory, options) {
|
|
|
306
375
|
});
|
|
307
376
|
}
|
|
308
377
|
catch (error) {
|
|
378
|
+
if (error instanceof PayloadTooLargeError) {
|
|
379
|
+
if (!res.headersSent) {
|
|
380
|
+
writeJsonRpcError(res, 413, "Request body too large");
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
res.end();
|
|
384
|
+
}
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
309
387
|
reqLogger.error({ err: error }, "HTTP transport error");
|
|
310
388
|
if (!res.headersSent) {
|
|
311
389
|
writeJsonRpcError(res, 500, "Internal server error");
|