boondmanager-mcp-server 2.15.2 → 2.17.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/LICENSE +1 -1
- package/NOTICE +16 -2
- package/README.md +60 -15
- package/dist/config/access-policy.d.ts.map +1 -1
- package/dist/config/access-policy.js +6 -18
- package/dist/config/access-policy.js.map +1 -1
- package/dist/config/dictionary-overrides.d.ts.map +1 -1
- package/dist/config/dictionary-overrides.js +2 -12
- package/dist/config/dictionary-overrides.js.map +1 -1
- package/dist/config/env.d.ts +63 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +116 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/profiles.d.ts +22 -8
- package/dist/config/profiles.d.ts.map +1 -1
- package/dist/config/profiles.js +48 -4
- package/dist/config/profiles.js.map +1 -1
- package/dist/constants.d.ts +13 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +25 -1
- package/dist/constants.js.map +1 -1
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +6 -1
- package/dist/icons.js.map +1 -1
- package/dist/index.js +33 -15
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +6 -6
- package/dist/instructions.js.map +1 -1
- package/dist/prompts/index.d.ts +19 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +495 -25
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/periods.d.ts +45 -0
- package/dist/prompts/periods.d.ts.map +1 -0
- package/dist/prompts/periods.js +154 -0
- package/dist/prompts/periods.js.map +1 -0
- package/dist/resources/index.d.ts +14 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +285 -0
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/templates.d.ts +1 -1
- package/dist/resources/templates.d.ts.map +1 -1
- package/dist/resources/templates.js +2 -0
- package/dist/resources/templates.js.map +1 -1
- package/dist/schema-dialect.js.map +1 -1
- package/dist/schemas/filter-aliases.d.ts +1 -1
- package/dist/schemas/filter-aliases.d.ts.map +1 -1
- package/dist/schemas/filter-aliases.js +101 -2
- package/dist/schemas/filter-aliases.js.map +1 -1
- package/dist/schemas/index.d.ts +987 -161
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +853 -323
- package/dist/schemas/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +10 -3
- package/dist/server.js.map +1 -1
- package/dist/services/boond-client.d.ts +29 -213
- package/dist/services/boond-client.d.ts.map +1 -1
- package/dist/services/boond-client.js +29 -1168
- package/dist/services/boond-client.js.map +1 -1
- package/dist/services/dictionary.d.ts +27 -3
- package/dist/services/dictionary.d.ts.map +1 -1
- package/dist/services/dictionary.js +60 -23
- package/dist/services/dictionary.js.map +1 -1
- package/dist/services/document-text.d.ts +32 -0
- package/dist/services/document-text.d.ts.map +1 -0
- package/dist/services/document-text.js +120 -0
- package/dist/services/document-text.js.map +1 -0
- package/dist/services/format/detail.d.ts +16 -0
- package/dist/services/format/detail.d.ts.map +1 -0
- package/dist/services/format/detail.js +36 -0
- package/dist/services/format/detail.js.map +1 -0
- package/dist/services/format/html.d.ts +19 -0
- package/dist/services/format/html.d.ts.map +1 -0
- package/dist/services/format/html.js +87 -0
- package/dist/services/format/html.js.map +1 -0
- package/dist/services/format/list.d.ts +3 -0
- package/dist/services/format/list.d.ts.map +1 -0
- package/dist/services/format/list.js +44 -0
- package/dist/services/format/list.js.map +1 -0
- package/dist/services/format/summary.d.ts +16 -0
- package/dist/services/format/summary.d.ts.map +1 -0
- package/dist/services/format/summary.js +172 -0
- package/dist/services/format/summary.js.map +1 -0
- package/dist/services/format/tab.d.ts +9 -0
- package/dist/services/format/tab.d.ts.map +1 -0
- package/dist/services/format/tab.js +32 -0
- package/dist/services/format/tab.js.map +1 -0
- package/dist/services/http/auth.d.ts +44 -0
- package/dist/services/http/auth.d.ts.map +1 -0
- package/dist/services/http/auth.js +146 -0
- package/dist/services/http/auth.js.map +1 -0
- package/dist/services/http/download.d.ts +60 -0
- package/dist/services/http/download.d.ts.map +1 -0
- package/dist/services/http/download.js +160 -0
- package/dist/services/http/download.js.map +1 -0
- package/dist/services/http/errors.d.ts +45 -0
- package/dist/services/http/errors.d.ts.map +1 -0
- package/dist/services/http/errors.js +188 -0
- package/dist/services/http/errors.js.map +1 -0
- package/dist/services/http/rate-limit.d.ts +40 -0
- package/dist/services/http/rate-limit.d.ts.map +1 -0
- package/dist/services/http/rate-limit.js +92 -0
- package/dist/services/http/rate-limit.js.map +1 -0
- package/dist/services/http/retry.d.ts +46 -0
- package/dist/services/http/retry.d.ts.map +1 -0
- package/dist/services/http/retry.js +101 -0
- package/dist/services/http/retry.js.map +1 -0
- package/dist/services/http/transport.d.ts +73 -0
- package/dist/services/http/transport.d.ts.map +1 -0
- package/dist/services/http/transport.js +272 -0
- package/dist/services/http/transport.js.map +1 -0
- package/dist/services/logger.d.ts +53 -2
- package/dist/services/logger.d.ts.map +1 -1
- package/dist/services/logger.js +82 -21
- package/dist/services/logger.js.map +1 -1
- package/dist/services/oauth.d.ts +12 -0
- package/dist/services/oauth.d.ts.map +1 -1
- package/dist/services/oauth.js +21 -8
- package/dist/services/oauth.js.map +1 -1
- package/dist/services/rate-limiter.d.ts +9 -2
- package/dist/services/rate-limiter.d.ts.map +1 -1
- package/dist/services/rate-limiter.js +18 -6
- package/dist/services/rate-limiter.js.map +1 -1
- package/dist/services/request-context.d.ts +47 -0
- package/dist/services/request-context.d.ts.map +1 -0
- package/dist/services/request-context.js +112 -0
- package/dist/services/request-context.js.map +1 -0
- package/dist/services/search.d.ts +26 -0
- package/dist/services/search.d.ts.map +1 -0
- package/dist/services/search.js +98 -0
- package/dist/services/search.js.map +1 -0
- package/dist/services/update-checker.d.ts.map +1 -1
- package/dist/services/update-checker.js +15 -8
- package/dist/services/update-checker.js.map +1 -1
- package/dist/tools/absences.d.ts +9 -0
- package/dist/tools/absences.d.ts.map +1 -1
- package/dist/tools/absences.js +65 -20
- package/dist/tools/absences.js.map +1 -1
- package/dist/tools/actions.d.ts.map +1 -1
- package/dist/tools/actions.js +11 -27
- package/dist/tools/actions.js.map +1 -1
- package/dist/tools/advantages.d.ts +2 -0
- package/dist/tools/advantages.d.ts.map +1 -1
- package/dist/tools/advantages.js +66 -13
- package/dist/tools/advantages.js.map +1 -1
- package/dist/tools/alerts.d.ts +18 -0
- package/dist/tools/alerts.d.ts.map +1 -0
- package/dist/tools/alerts.js +82 -0
- package/dist/tools/alerts.js.map +1 -0
- package/dist/tools/application.d.ts +2 -1
- package/dist/tools/application.d.ts.map +1 -1
- package/dist/tools/application.js +9 -3
- package/dist/tools/application.js.map +1 -1
- package/dist/tools/contacts.d.ts.map +1 -1
- package/dist/tools/contacts.js +3 -7
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/contracts.d.ts +22 -0
- package/dist/tools/contracts.d.ts.map +1 -1
- package/dist/tools/contracts.js +185 -52
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/crud-factory.d.ts +33 -2
- package/dist/tools/crud-factory.d.ts.map +1 -1
- package/dist/tools/crud-factory.js +42 -15
- package/dist/tools/crud-factory.js.map +1 -1
- package/dist/tools/deliveries.d.ts +3 -0
- package/dist/tools/deliveries.d.ts.map +1 -1
- package/dist/tools/deliveries.js +50 -94
- package/dist/tools/deliveries.js.map +1 -1
- package/dist/tools/description-builders.d.ts +0 -1
- package/dist/tools/description-builders.d.ts.map +1 -1
- package/dist/tools/description-builders.js +46 -3
- package/dist/tools/description-builders.js.map +1 -1
- package/dist/tools/documents.d.ts.map +1 -1
- package/dist/tools/documents.js +73 -21
- package/dist/tools/documents.js.map +1 -1
- package/dist/tools/expenses.d.ts.map +1 -1
- package/dist/tools/expenses.js +2 -11
- package/dist/tools/expenses.js.map +1 -1
- package/dist/tools/find.d.ts +61 -0
- package/dist/tools/find.d.ts.map +1 -0
- package/dist/tools/find.js +221 -0
- package/dist/tools/find.js.map +1 -0
- package/dist/tools/flags.d.ts +5 -0
- package/dist/tools/flags.d.ts.map +1 -1
- package/dist/tools/flags.js +116 -1
- package/dist/tools/flags.js.map +1 -1
- package/dist/tools/forms.d.ts +5 -0
- package/dist/tools/forms.d.ts.map +1 -0
- package/dist/tools/forms.js +64 -0
- package/dist/tools/forms.js.map +1 -0
- package/dist/tools/groupments.d.ts +5 -0
- package/dist/tools/groupments.d.ts.map +1 -0
- package/dist/tools/groupments.js +68 -0
- package/dist/tools/groupments.js.map +1 -0
- package/dist/tools/inactivities.d.ts +5 -0
- package/dist/tools/inactivities.d.ts.map +1 -0
- package/dist/tools/inactivities.js +59 -0
- package/dist/tools/inactivities.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/invoices.d.ts.map +1 -1
- package/dist/tools/invoices.js +27 -2
- package/dist/tools/invoices.js.map +1 -1
- package/dist/tools/linked-entity-filters.d.ts +48 -0
- package/dist/tools/linked-entity-filters.d.ts.map +1 -0
- package/dist/tools/linked-entity-filters.js +64 -0
- package/dist/tools/linked-entity-filters.js.map +1 -0
- package/dist/tools/notifications.d.ts.map +1 -1
- package/dist/tools/notifications.js +0 -5
- package/dist/tools/notifications.js.map +1 -1
- package/dist/tools/orders.d.ts.map +1 -1
- package/dist/tools/orders.js +33 -4
- package/dist/tools/orders.js.map +1 -1
- package/dist/tools/parameter-disclosure.js.map +1 -1
- package/dist/tools/payments.d.ts +3 -0
- package/dist/tools/payments.d.ts.map +1 -1
- package/dist/tools/payments.js +43 -109
- package/dist/tools/payments.js.map +1 -1
- package/dist/tools/positionings.d.ts.map +1 -1
- package/dist/tools/positionings.js +9 -39
- package/dist/tools/positionings.js.map +1 -1
- package/dist/tools/projects.d.ts.map +1 -1
- package/dist/tools/projects.js +5 -12
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/provider-invoices.d.ts +2 -0
- package/dist/tools/provider-invoices.d.ts.map +1 -1
- package/dist/tools/provider-invoices.js +30 -111
- package/dist/tools/provider-invoices.js.map +1 -1
- package/dist/tools/purchases.d.ts +2 -0
- package/dist/tools/purchases.d.ts.map +1 -1
- package/dist/tools/purchases.js +50 -104
- package/dist/tools/purchases.js.map +1 -1
- package/dist/tools/registration-decorators.d.ts +28 -0
- package/dist/tools/registration-decorators.d.ts.map +1 -1
- package/dist/tools/registration-decorators.js +107 -0
- package/dist/tools/registration-decorators.js.map +1 -1
- package/dist/tools/resources.d.ts.map +1 -1
- package/dist/tools/resources.js +27 -5
- package/dist/tools/resources.js.map +1 -1
- package/dist/tools/rights.d.ts +101 -0
- package/dist/tools/rights.d.ts.map +1 -0
- package/dist/tools/rights.js +75 -0
- package/dist/tools/rights.js.map +1 -0
- package/dist/tools/tab-tools.js +3 -3
- package/dist/tools/tab-tools.js.map +1 -1
- package/dist/tools/timesheets.d.ts +29 -0
- package/dist/tools/timesheets.d.ts.map +1 -1
- package/dist/tools/timesheets.js +196 -126
- package/dist/tools/timesheets.js.map +1 -1
- package/dist/tools/todolists.d.ts +2 -0
- package/dist/tools/todolists.d.ts.map +1 -1
- package/dist/tools/todolists.js +64 -1
- package/dist/tools/todolists.js.map +1 -1
- package/dist/tools/validations.d.ts +9 -0
- package/dist/tools/validations.d.ts.map +1 -1
- package/dist/tools/validations.js +86 -9
- package/dist/tools/validations.js.map +1 -1
- package/dist/tools/workflows.js +1 -1
- package/dist/tools/workflows.js.map +1 -1
- package/dist/transports/http.d.ts +116 -0
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +422 -92
- package/dist/transports/http.js.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/manifest.json +7 -7
- package/package.json +14 -10
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/services/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/services/update-checker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/services/update-checker.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AA4BD,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAyB7B;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { logger } from "./logger.js";
|
|
2
|
+
import { readBool } from "../config/env.js";
|
|
2
3
|
const NPM_REGISTRY_URL = "https://registry.npmjs.org";
|
|
3
4
|
const DEFAULT_TIMEOUT_MS = 3000;
|
|
4
5
|
function parseSemverCore(v) {
|
|
@@ -6,20 +7,27 @@ function parseSemverCore(v) {
|
|
|
6
7
|
const parts = core.split(".");
|
|
7
8
|
if (parts.length !== 3)
|
|
8
9
|
return null;
|
|
9
|
-
const
|
|
10
|
-
if (
|
|
10
|
+
const [major, minor, patch] = parts.map((p) => Number(p));
|
|
11
|
+
if (major === undefined || minor === undefined || patch === undefined)
|
|
11
12
|
return null;
|
|
12
|
-
|
|
13
|
+
if ([major, minor, patch].some((n) => !Number.isInteger(n) || n < 0))
|
|
14
|
+
return null;
|
|
15
|
+
return [major, minor, patch];
|
|
13
16
|
}
|
|
14
17
|
function isNewer(latest, current) {
|
|
15
18
|
const a = parseSemverCore(latest);
|
|
16
19
|
const b = parseSemverCore(current);
|
|
17
20
|
if (!a || !b)
|
|
18
21
|
return false;
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
const pairs = [
|
|
23
|
+
[a[0], b[0]],
|
|
24
|
+
[a[1], b[1]],
|
|
25
|
+
[a[2], b[2]],
|
|
26
|
+
];
|
|
27
|
+
for (const [x, y] of pairs) {
|
|
28
|
+
if (x > y)
|
|
21
29
|
return true;
|
|
22
|
-
if (
|
|
30
|
+
if (x < y)
|
|
23
31
|
return false;
|
|
24
32
|
}
|
|
25
33
|
return false;
|
|
@@ -54,8 +62,7 @@ export async function checkForUpdate(opts) {
|
|
|
54
62
|
}
|
|
55
63
|
}
|
|
56
64
|
export function isUpdateCheckDisabled() {
|
|
57
|
-
|
|
58
|
-
return raw === "1" || raw === "true" || raw === "yes";
|
|
65
|
+
return readBool("BOOND_DISABLE_UPDATE_CHECK", false);
|
|
59
66
|
}
|
|
60
67
|
export async function runUpdateNotification(opts) {
|
|
61
68
|
if (isUpdateCheckDisabled())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/services/update-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/services/update-checker.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/absences.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { JsonApiResponse } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Render `/absences-reports/default` down to what a caller needs before
|
|
5
|
+
* `boond_absences_create` (issue #257): the absence types — work-unit types
|
|
6
|
+
* on the included resource, same publication point as the CRA (#249), absent
|
|
7
|
+
* from `/application/dictionary` — plus the report's own scalar attributes
|
|
8
|
+
* (quotas, agency, term) without the raw payload.
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatAbsenceDefaults(response: JsonApiResponse): string;
|
|
2
11
|
export declare function registerAbsenceTools(server: McpServer): void;
|
|
3
12
|
//# sourceMappingURL=absences.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"absences.d.ts","sourceRoot":"","sources":["../../src/tools/absences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"absences.d.ts","sourceRoot":"","sources":["../../src/tools/absences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmBnD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAoCvE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsL5D"}
|
package/dist/tools/absences.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { toKeywordReferences } from "./linked-entity-filters.js";
|
|
2
|
+
import { AbsenceSearchSchema, AbsenceCreateSchema, AbsenceUpdateSchema, AbsenceDefaultSchema, IdSchema, } from "../schemas/index.js";
|
|
3
|
+
import { renderAttributeValue } from "../services/format/summary.js";
|
|
2
4
|
import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse } from "../services/boond-client.js";
|
|
3
5
|
import { buildJsonApiBody, registerDeleteTool } from "./crud-factory.js";
|
|
4
6
|
import { composeDescription, defaultDeleteDescription, defaultGetDescription } from "./description-builders.js";
|
|
@@ -9,15 +11,68 @@ function inclusiveDays(startDate, endDate) {
|
|
|
9
11
|
return 1;
|
|
10
12
|
return Math.floor((end.getTime() - start.getTime()) / 86_400_000) + 1;
|
|
11
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Render `/absences-reports/default` down to what a caller needs before
|
|
16
|
+
* `boond_absences_create` (issue #257): the absence types — work-unit types
|
|
17
|
+
* on the included resource, same publication point as the CRA (#249), absent
|
|
18
|
+
* from `/application/dictionary` — plus the report's own scalar attributes
|
|
19
|
+
* (quotas, agency, term) without the raw payload.
|
|
20
|
+
*/
|
|
21
|
+
export function formatAbsenceDefaults(response) {
|
|
22
|
+
const entity = Array.isArray(response.data) ? response.data[0] : response.data;
|
|
23
|
+
if (!entity)
|
|
24
|
+
return "Aucune donnée par défaut retournée pour cette ressource.";
|
|
25
|
+
const attrs = entity.attributes ?? {};
|
|
26
|
+
const included = response.included ?? [];
|
|
27
|
+
const resourceRef = entity.relationships?.resource?.data;
|
|
28
|
+
const resource = included.find((i) => i.type === "resource" && i.id === resourceRef?.id) ??
|
|
29
|
+
included.find((i) => i.type === "resource");
|
|
30
|
+
const agency = included.find((i) => i.type === "agency");
|
|
31
|
+
const resourceAttrs = resource?.attributes ?? {};
|
|
32
|
+
const name = [resourceAttrs.firstName, resourceAttrs.lastName].filter(Boolean).join(" ");
|
|
33
|
+
const lines = [
|
|
34
|
+
`Demande d'absence — ressource #${resource?.id ?? resourceRef?.id ?? "?"}${name ? ` (${name})` : ""}${agency ? ` | agence #${agency.id}${agency.attributes?.name ? ` (${String(agency.attributes.name)})` : ""}` : ""}`,
|
|
35
|
+
];
|
|
36
|
+
const types = (resourceAttrs.workUnitTypesAllowed ?? []).filter((t) => t.activityType === undefined ||
|
|
37
|
+
/absence|conge|leave/i.test(String(t.activityType)) ||
|
|
38
|
+
t.activityType !== "production");
|
|
39
|
+
lines.push("", `Types d'absence autorisés (${types.length}) — utiliser \`reference\` comme \`workUnitTypeReference\` :`);
|
|
40
|
+
lines.push(...(types.length
|
|
41
|
+
? types.map((t) => ` reference=${t.reference} | ${t.name ?? ""}${t.activityType ? ` | ${t.activityType}` : ""}`)
|
|
42
|
+
: [" (aucun type publié pour cette ressource — vérifier l'agence)"]));
|
|
43
|
+
const scalars = Object.entries(attrs).filter(([, v]) => v !== null && typeof v !== "object");
|
|
44
|
+
if (scalars.length > 0) {
|
|
45
|
+
lines.push("", "Valeurs par défaut de la demande :");
|
|
46
|
+
lines.push(...scalars.map(([k, v]) => ` ${k}: ${renderAttributeValue(v)}`));
|
|
47
|
+
}
|
|
48
|
+
return lines.join("\n");
|
|
49
|
+
}
|
|
12
50
|
export function registerAbsenceTools(server) {
|
|
51
|
+
server.registerTool("boond_absences_default", {
|
|
52
|
+
title: "Référentiels d'une demande d'absence",
|
|
53
|
+
description: composeDescription({
|
|
54
|
+
purpose: "Renvoie les types d'absence autorisés pour une ressource (RTT, maladie, congés payés… avec leur code) et les valeurs par défaut d'une demande.",
|
|
55
|
+
when: "AVANT `boond_absences_create` — le code `workUnitTypeReference` n'est publié que par `GET /absences-reports/default` (ni dans `boond_application_dictionary`, ni sur l'agence).",
|
|
56
|
+
instead: "`boond_timesheets_default` pour les mêmes codes vus du CRA (production comprise) ; aucun autre outil ne donne les types d'absence.",
|
|
57
|
+
behaviour: [
|
|
58
|
+
"Lecture seule ; la réponse brute est réduite aux types (ressource incluse, `workUnitTypesAllowed`) et aux scalaires de la demande.",
|
|
59
|
+
],
|
|
60
|
+
returns: "texte : ressource, agence, types d'absence (reference | libellé | activityType), valeurs par défaut.",
|
|
61
|
+
}),
|
|
62
|
+
inputSchema: AbsenceDefaultSchema,
|
|
63
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
64
|
+
}, async (params) => {
|
|
65
|
+
const query = { resource: params.resourceId };
|
|
66
|
+
if (params.agencyId)
|
|
67
|
+
query.agency = params.agencyId;
|
|
68
|
+
const response = await apiRequest("/absences-reports/default", "GET", undefined, query);
|
|
69
|
+
return { content: [{ type: "text", text: formatAbsenceDefaults(response) }] };
|
|
70
|
+
});
|
|
13
71
|
server.registerTool("boond_absences_search", {
|
|
14
72
|
title: "Rechercher des demandes d'absence",
|
|
15
|
-
description: `Recherche des demandes d'absence dans BoondManager.
|
|
73
|
+
description: `Recherche des demandes d'absence dans BoondManager, par période (\`startMonth\` / \`endMonth\` en YYYY-MM, requis), ressource, état de validation (\`validationStates\`) et périmètre (\`perimeter*\`).
|
|
16
74
|
|
|
17
|
-
|
|
18
|
-
- keywords (string, optional): Termes de recherche. resourceId est converti en COMP<id>.
|
|
19
|
-
- startMonth, endMonth (string, optional): Periode au format YYYY-MM.
|
|
20
|
-
- page, pageSize: Pagination
|
|
75
|
+
\`resourceId\` est converti en référence \`keywords\` COMP<id> : l'API n'a pas de paramètre dédié.
|
|
21
76
|
|
|
22
77
|
Returns: Liste des demandes d'absence correspondantes.`,
|
|
23
78
|
inputSchema: AbsenceSearchSchema,
|
|
@@ -28,13 +83,7 @@ Returns: Liste des demandes d'absence correspondantes.`,
|
|
|
28
83
|
openWorldHint: true,
|
|
29
84
|
},
|
|
30
85
|
}, async (params) => {
|
|
31
|
-
const
|
|
32
|
-
const tokens = [];
|
|
33
|
-
if (keywords)
|
|
34
|
-
tokens.push(keywords);
|
|
35
|
-
if (resourceId)
|
|
36
|
-
tokens.push(`COMP${resourceId}`);
|
|
37
|
-
const query = buildSearchQuery(tokens.length > 0 ? { ...rest, keywords: tokens.join(" ") } : rest);
|
|
86
|
+
const query = buildSearchQuery(toKeywordReferences(params));
|
|
38
87
|
const response = await apiRequest("/absences-reports", "GET", undefined, query);
|
|
39
88
|
return {
|
|
40
89
|
content: [{ type: "text", text: formatListResponse(response, "absence", params.fields) }],
|
|
@@ -67,7 +116,7 @@ Returns: Liste des demandes d'absence correspondantes.`,
|
|
|
67
116
|
instead: "`boond_absences_update` pour modifier une demande déjà déposée.",
|
|
68
117
|
behaviour: [
|
|
69
118
|
"Le détail est porté par `absencesPeriods` ; si le tableau est omis, une période unique est déduite de `startDate`/`endDate`.",
|
|
70
|
-
"`state` est
|
|
119
|
+
"Pas de `state` : sur `/absences-reports` l'état est une chaîne du workflow de validation (`waitingForValidation`, `validated`…) que seul le workflow déplace — la demande part en attente de validation, elle n'est pas validée par cet appel (suivi via `boond_validations_search`).",
|
|
71
120
|
"Écriture non idempotente — l'API ne déduplique pas deux demandes sur les mêmes dates.",
|
|
72
121
|
],
|
|
73
122
|
returns: "confirmation et fiche de la demande créée.",
|
|
@@ -80,7 +129,7 @@ Returns: Liste des demandes d'absence correspondantes.`,
|
|
|
80
129
|
openWorldHint: false,
|
|
81
130
|
},
|
|
82
131
|
}, async (params) => {
|
|
83
|
-
const { resourceId, typeOf, startDate, endDate, duration, workUnitTypeReference, absencesPeriods,
|
|
132
|
+
const { resourceId, typeOf, startDate, endDate, duration, workUnitTypeReference, absencesPeriods, note } = params;
|
|
84
133
|
const periods = absencesPeriods ?? [
|
|
85
134
|
{
|
|
86
135
|
startDate,
|
|
@@ -92,12 +141,8 @@ Returns: Liste des demandes d'absence correspondantes.`,
|
|
|
92
141
|
];
|
|
93
142
|
const body = buildJsonApiBody("absencesreport", {
|
|
94
143
|
...(note ? { informationComments: note } : {}),
|
|
95
|
-
...(state !== undefined ? { state } : {}),
|
|
96
144
|
absencesPeriods: periods,
|
|
97
|
-
});
|
|
98
|
-
body.data.relationships = {
|
|
99
|
-
resource: { data: { id: resourceId, type: "resource" } },
|
|
100
|
-
};
|
|
145
|
+
}, undefined, { resource: { id: resourceId, type: "resource" } });
|
|
101
146
|
const response = await apiRequest("/absences-reports", "POST", body);
|
|
102
147
|
const entity = Array.isArray(response.data) ? response.data[0] : response.data;
|
|
103
148
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"absences.js","sourceRoot":"","sources":["../../src/tools/absences.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"absences.js","sourceRoot":"","sources":["../../src/tools/absences.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/tools/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/tools/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuCzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuN3D"}
|
package/dist/tools/actions.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { toKeywordReferences } from "./linked-entity-filters.js";
|
|
1
2
|
import { ActionSearchSchema, ActionCreateSchema, ActionUpdateSchema, IdSchema } from "../schemas/index.js";
|
|
2
3
|
import { apiRequest, apiSearch, buildSearchQuery, formatListResponse, formatDetailResponse, } from "../services/boond-client.js";
|
|
3
4
|
import { progressReporterFrom } from "../services/progress.js";
|
|
@@ -32,12 +33,9 @@ export function registerActionTools(server) {
|
|
|
32
33
|
// Search actions
|
|
33
34
|
server.registerTool("boond_actions_search", {
|
|
34
35
|
title: "Rechercher des actions",
|
|
35
|
-
description: `Recherche des actions (appels, emails, RDV, notes) dans BoondManager
|
|
36
|
+
description: `Recherche des actions (appels, emails, RDV, notes) dans BoondManager par entité rattachée (candidat, ressource, contact, société, opportunité, projet), type (\`actionTypes\`), période (\`period\` + dates ou \`periodDynamic\`) et périmètre (\`perimeter*\`).
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
- keywords (string, optional): Termes de recherche
|
|
39
|
-
- candidateId, resourceId, contactId, companyId (string, optional): Filtrer par entité liée
|
|
40
|
-
- page, pageSize: Pagination
|
|
38
|
+
Les filtres \`candidateId\` / \`resourceId\` / \`contactId\` / \`companyId\` sont convertis en références \`keywords\` (CAND<id> / COMP<id> / CCON<id> / CSOC<id>) : l'API n'a pas de paramètre dédié.
|
|
41
39
|
|
|
42
40
|
Returns: Liste des actions correspondantes.`,
|
|
43
41
|
inputSchema: ActionSearchSchema,
|
|
@@ -48,7 +46,7 @@ Returns: Liste des actions correspondantes.`,
|
|
|
48
46
|
openWorldHint: true,
|
|
49
47
|
},
|
|
50
48
|
}, async (params, extra) => {
|
|
51
|
-
const query = buildSearchQuery(params);
|
|
49
|
+
const query = buildSearchQuery(toKeywordReferences(params));
|
|
52
50
|
// apiSearch chunks the request to respect BoondManager's 100-result cap
|
|
53
51
|
// on /actions (heavy objects → memory overflow above 100).
|
|
54
52
|
const response = await apiSearch("/actions", query, progressReporterFrom(extra));
|
|
@@ -81,13 +79,7 @@ Returns: Liste des actions correspondantes.`,
|
|
|
81
79
|
title: "Créer une action",
|
|
82
80
|
description: buildActionCreateDescription(`Crée une nouvelle action (appel, email, RDV, note) dans BoondManager, rattachée à un contact, candidat, ressource, opportunité ou projet (relation dependsOn, obligatoire).
|
|
83
81
|
|
|
84
|
-
|
|
85
|
-
- typeOf (number, requis): ID numérique du type d'action (dictionnaire setting.action.*, via boond_application_dictionary)
|
|
86
|
-
- title, text (string, optional): Titre et contenu de l'action
|
|
87
|
-
- startDate, endDate (string, optional): Dates ISO avec timezone (ex: 2026-06-05T10:00:00+0200)
|
|
88
|
-
- contactId | candidateId | resourceId | opportunityId | projectId (string, un requis): Entité de rattachement
|
|
89
|
-
- companyId (string, optional): Société, uniquement en complément d'un contactId
|
|
90
|
-
- positioningId (string, optional): Positionnement à lier — requis par l'API pour les types d'action liés aux positionnements (ex. RQ)
|
|
82
|
+
Exactement une entité de rattachement parmi \`contactId\` / \`candidateId\` / \`resourceId\` / \`opportunityId\` / \`projectId\` est requise (422 sinon) ; \`companyId\` n'est accepté qu'en complément d'un \`contactId\`, et \`positioningId\` est exigé par l'API pour les types d'action liés aux positionnements (ex. RQ).
|
|
91
83
|
|
|
92
84
|
Returns: L'action créée avec son ID.`),
|
|
93
85
|
inputSchema: ActionCreateSchema,
|
|
@@ -109,7 +101,7 @@ Returns: L'action créée avec son ID.`),
|
|
|
109
101
|
{ id: opportunityId, type: "opportunity" },
|
|
110
102
|
{ id: projectId, type: "project" },
|
|
111
103
|
];
|
|
112
|
-
const dependsOn = dependsOnCandidates.
|
|
104
|
+
const dependsOn = dependsOnCandidates.flatMap((c) => (c.id ? [{ id: c.id, type: c.type }] : [])).at(0);
|
|
113
105
|
if (!dependsOn) {
|
|
114
106
|
return {
|
|
115
107
|
isError: true,
|
|
@@ -143,12 +135,11 @@ Returns: L'action créée avec son ID.`),
|
|
|
143
135
|
}
|
|
144
136
|
attrs.typeOf = resolved;
|
|
145
137
|
}
|
|
146
|
-
const body = buildJsonApiBody("action", attrs);
|
|
147
138
|
const relationships = {
|
|
148
|
-
dependsOn: {
|
|
139
|
+
dependsOn: { id: dependsOn.id, type: dependsOn.type },
|
|
149
140
|
};
|
|
150
141
|
if (companyId && dependsOn.type === "contact") {
|
|
151
|
-
relationships.company = {
|
|
142
|
+
relationships.company = { id: companyId, type: "company" };
|
|
152
143
|
}
|
|
153
144
|
// Some action types (those bound to positionings in the Boond setup, e.g.
|
|
154
145
|
// "RQ"-style interviews) are rejected with a 422 "1002 - Wrong or missing
|
|
@@ -156,9 +147,9 @@ Returns: L'action créée avec son ID.`),
|
|
|
156
147
|
// relationship is sent. The official bodyPost.json schema does not
|
|
157
148
|
// document it, but the API enforces it for those types.
|
|
158
149
|
if (positioningId) {
|
|
159
|
-
relationships.positioning = {
|
|
150
|
+
relationships.positioning = { id: positioningId, type: "positioning" };
|
|
160
151
|
}
|
|
161
|
-
body
|
|
152
|
+
const body = buildJsonApiBody("action", attrs, undefined, relationships);
|
|
162
153
|
const response = await apiRequest("/actions", "POST", body);
|
|
163
154
|
const entity = Array.isArray(response.data) ? response.data[0] : response.data;
|
|
164
155
|
return {
|
|
@@ -175,14 +166,7 @@ Returns: L'action créée avec son ID.`),
|
|
|
175
166
|
title: "Modifier une action",
|
|
176
167
|
description: `Met à jour une action existante dans BoondManager (PUT partiel, seuls les champs fournis sont modifiés).
|
|
177
168
|
|
|
178
|
-
⚠️ Aucune relation n'est envoyée : le rattachement (dependsOn), le positionnement et la synchronisation calendrier (event Outlook/Teams, invités) sont préservés. Idéal pour ajouter un compte-rendu sans casser l'agenda — contrairement à delete + recreate qui supprime l'événement.
|
|
179
|
-
|
|
180
|
-
Args:
|
|
181
|
-
- id (string, requis): ID de l'action à modifier
|
|
182
|
-
- typeOf (number, optional): Nouveau type (ID numérique du dictionnaire setting.action.*)
|
|
183
|
-
- title (string, optional): Nouveau titre
|
|
184
|
-
- text (string, optional): Nouveau contenu / notes (remplace l'existant, pas d'ajout)
|
|
185
|
-
- startDate, endDate (string, optional): Dates ISO avec timezone (ex: 2026-06-05T10:00:00+0200)
|
|
169
|
+
⚠️ Aucune relation n'est envoyée : le rattachement (dependsOn), le positionnement et la synchronisation calendrier (event Outlook/Teams, invités) sont préservés. Idéal pour ajouter un compte-rendu sans casser l'agenda — contrairement à delete + recreate qui supprime l'événement. \`text\` remplace le contenu existant (pas d'ajout).
|
|
186
170
|
|
|
187
171
|
Returns: L'action mise à jour.`,
|
|
188
172
|
inputSchema: ActionUpdateSchema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/tools/actions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3G,OAAO,EACL,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC1G,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAE5F,yEAAyE;AACzE,MAAM,oBAAoB,GAA6C;IACrE,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,WAAW,EAAE,UAAU,CAAC;IACzB,CAAC,aAAa,EAAE,aAAa,CAAC;IAC9B,CAAC,QAAQ,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,SAAS,4BAA4B,CAAC,IAAY;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,oBAAoB,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,OAAO,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,GAAG,IAAI,6EAA6E,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AACjH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/tools/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
/** `/advantages` payload (issue #254): the four ids become relationships, `note` → `informationComments` (`models.advantage`). */
|
|
3
|
+
export declare function buildAdvantageBody(params: Record<string, unknown>): unknown;
|
|
2
4
|
export declare function registerAdvantageTools(server: McpServer): void;
|
|
3
5
|
//# sourceMappingURL=advantages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advantages.d.ts","sourceRoot":"","sources":["../../src/tools/advantages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"advantages.d.ts","sourceRoot":"","sources":["../../src/tools/advantages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,kIAAkI;AAClI,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAa3E;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgG9D"}
|
package/dist/tools/advantages.js
CHANGED
|
@@ -1,19 +1,32 @@
|
|
|
1
|
-
import { AdvantageSearchSchema, IdSchema } from "../schemas/index.js";
|
|
2
|
-
import { apiRequest,
|
|
3
|
-
import {
|
|
4
|
-
import { defaultGetDescription } from "./description-builders.js";
|
|
1
|
+
import { AdvantageCreateSchema, AdvantageDefaultSchema, AdvantageSearchSchema, IdSchema } from "../schemas/index.js";
|
|
2
|
+
import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse } from "../services/boond-client.js";
|
|
3
|
+
import { buildJsonApiBody, registerCreateTool } from "./crud-factory.js";
|
|
4
|
+
import { composeDescription, defaultGetDescription } from "./description-builders.js";
|
|
5
|
+
const OPTS = {
|
|
6
|
+
entityName: "avantage",
|
|
7
|
+
entityNamePlural: "avantages",
|
|
8
|
+
apiPath: "/advantages",
|
|
9
|
+
prefix: "boond_advantages",
|
|
10
|
+
};
|
|
11
|
+
/** `/advantages` payload (issue #254): the four ids become relationships, `note` → `informationComments` (`models.advantage`). */
|
|
12
|
+
export function buildAdvantageBody(params) {
|
|
13
|
+
const { resourceId, contractId, projectId, deliveryId, note, ...attrs } = params;
|
|
14
|
+
return buildJsonApiBody("advantage", { ...attrs, ...(note !== undefined ? { informationComments: note } : {}) }, undefined, {
|
|
15
|
+
resource: { id: String(resourceId), type: "resource" },
|
|
16
|
+
contract: contractId ? { id: String(contractId), type: "contract" } : undefined,
|
|
17
|
+
project: projectId ? { id: String(projectId), type: "project" } : undefined,
|
|
18
|
+
delivery: deliveryId ? { id: String(deliveryId), type: "delivery" } : undefined,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
5
21
|
export function registerAdvantageTools(server) {
|
|
6
22
|
// Search advantages
|
|
7
23
|
server.registerTool("boond_advantages_search", {
|
|
8
24
|
title: "Rechercher des avantages",
|
|
9
|
-
description: `
|
|
25
|
+
description: `Liste les avantages (tickets restaurant, mutuelle, véhicule, primes...) d'une ressource.
|
|
10
26
|
|
|
11
|
-
|
|
12
|
-
- keywords (string, optional): Termes de recherche
|
|
13
|
-
- resourceId (string, optional): Filtrer par ID ressource
|
|
14
|
-
- page, pageSize: Pagination
|
|
27
|
+
\`resourceId\` est obligatoire : l'API n'a pas de recherche globale des avantages (\`GET /advantages\` n'existe pas), la liste est servie par \`GET /resources/{id}/avantages\`. \`advantageTypes\` restreint aux types \`<reference>_<agencyId>\`.
|
|
15
28
|
|
|
16
|
-
Returns: Liste des avantages
|
|
29
|
+
Returns: Liste des avantages de la ressource.`,
|
|
17
30
|
inputSchema: AdvantageSearchSchema,
|
|
18
31
|
annotations: {
|
|
19
32
|
readOnlyHint: true,
|
|
@@ -21,13 +34,53 @@ Returns: Liste des avantages correspondants.`,
|
|
|
21
34
|
idempotentHint: true,
|
|
22
35
|
openWorldHint: true,
|
|
23
36
|
},
|
|
24
|
-
}, async (params
|
|
25
|
-
const
|
|
26
|
-
const
|
|
37
|
+
}, async (params) => {
|
|
38
|
+
const { resourceId, ...rest } = params;
|
|
39
|
+
const query = buildSearchQuery(rest);
|
|
40
|
+
const response = await apiRequest(`/resources/${resourceId}/advantages`, "GET", undefined, query);
|
|
27
41
|
return {
|
|
28
42
|
content: [{ type: "text", text: formatListResponse(response, "avantage", params.fields) }],
|
|
29
43
|
};
|
|
30
44
|
});
|
|
45
|
+
// Issue #254: `GET /advantages/default?resource=&contract=&project=&delivery=`
|
|
46
|
+
// (advantages/default.raml) — the advantage types and the amounts the agency
|
|
47
|
+
// pre-fills, to read before creating.
|
|
48
|
+
server.registerTool("boond_advantages_default", {
|
|
49
|
+
title: "Référentiels d'un avantage",
|
|
50
|
+
description: composeDescription({
|
|
51
|
+
purpose: "Renvoie les valeurs par défaut d'un avantage pour une ressource (types d'avantage de l'agence, montants pré-remplis, devise) avant sa création.",
|
|
52
|
+
when: "AVANT `boond_advantages_create` — les types (`advantageType`) et leurs quotas viennent de là.",
|
|
53
|
+
instead: "`boond_advantages_search` pour les avantages déjà attribués à la ressource.",
|
|
54
|
+
behaviour: ["Lecture seule (`GET /advantages/default`) ; la réponse est rendue telle quelle."],
|
|
55
|
+
returns: "JSON de l'avantage vide pré-rempli, avec les types d'avantage inclus.",
|
|
56
|
+
}),
|
|
57
|
+
inputSchema: AdvantageDefaultSchema,
|
|
58
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
59
|
+
}, async (params) => {
|
|
60
|
+
const query = { resource: params.resourceId };
|
|
61
|
+
if (params.contractId)
|
|
62
|
+
query.contract = params.contractId;
|
|
63
|
+
if (params.projectId)
|
|
64
|
+
query.project = params.projectId;
|
|
65
|
+
if (params.deliveryId)
|
|
66
|
+
query.delivery = params.deliveryId;
|
|
67
|
+
const response = await apiRequest("/advantages/default", "GET", undefined, query);
|
|
68
|
+
return { content: [{ type: "text", text: formatDetailResponse(response) }] };
|
|
69
|
+
});
|
|
70
|
+
// Issue #254: `POST /advantages` is documented (advantages/search.raml: post only), its body is not — not exercised.
|
|
71
|
+
registerCreateTool(server, OPTS, AdvantageCreateSchema, buildAdvantageBody, {
|
|
72
|
+
title: "Créer un avantage",
|
|
73
|
+
description: composeDescription({
|
|
74
|
+
purpose: "Attribue un avantage (tickets restaurant, mutuelle, véhicule, prime…) à une ressource.",
|
|
75
|
+
when: "après `boond_advantages_default` pour connaître les types et montants de l'agence.",
|
|
76
|
+
instead: "`boond_advantages_search` d'abord : l'API ne déduplique pas.",
|
|
77
|
+
behaviour: [
|
|
78
|
+
"Corps déduit de `models.advantage` (`date`, `quantity`, `advantageType`, montants, relations `resource` / `contract` / `project` / `delivery`) — non éprouvé sur un tenant de test.",
|
|
79
|
+
"Écriture non idempotente.",
|
|
80
|
+
],
|
|
81
|
+
returns: "confirmation et ID de l'avantage (`structuredContent.id`).",
|
|
82
|
+
}),
|
|
83
|
+
});
|
|
31
84
|
// Get advantage details
|
|
32
85
|
server.registerTool("boond_advantages_get", {
|
|
33
86
|
title: "Détails d'un avantage",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advantages.js","sourceRoot":"","sources":["../../src/tools/advantages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"advantages.js","sourceRoot":"","sources":["../../src/tools/advantages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { JsonApiResource } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* The user's dashboard alerts (issue #255). Observed live on 2026-09-26
|
|
5
|
+
* (issue #311): `GET /alerts` returns the **configuration** of the user's
|
|
6
|
+
* dashboard indicators, not computed occurrences — one row per indicator
|
|
7
|
+
* (`module`: actions | activityExpenses | resources…, `indicator`:
|
|
8
|
+
* `contractsEndedUpcoming`, `resourcesProbationaryDateUpcoming`,
|
|
9
|
+
* `timesReportsWithNoValidation`, `actionsUpcoming`…) with its `params`
|
|
10
|
+
* (`period` in days or `-1` = last month, `X` / `Y` = state or type ids,
|
|
11
|
+
* `perimeter` such as `dynamic_data`) and the daily / weekly report flags.
|
|
12
|
+
* There is no `/alerts/{id}` (404). So the list says *what* to watch and with
|
|
13
|
+
* which thresholds; the matching `*_search` gives the items — which is what
|
|
14
|
+
* the `attention_du_jour` prompt does.
|
|
15
|
+
*/
|
|
16
|
+
export declare function alertSummary(alert: JsonApiResource): string;
|
|
17
|
+
export declare function registerAlertTools(server: McpServer): void;
|
|
18
|
+
//# sourceMappingURL=alerts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alerts.d.ts","sourceRoot":"","sources":["../../src/tools/alerts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CA2B3D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+B1D"}
|