boondmanager-mcp-server 2.4.0 → 2.5.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/README.md +20 -1
- package/dist/config/dictionary-overrides.d.ts +57 -0
- package/dist/config/dictionary-overrides.d.ts.map +1 -0
- package/dist/config/dictionary-overrides.js +193 -0
- package/dist/config/dictionary-overrides.js.map +1 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +25 -0
- package/dist/resources/index.js.map +1 -1
- package/dist/schemas/index.d.ts +33 -20
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +85 -20
- package/dist/schemas/index.js.map +1 -1
- package/dist/services/boond-client.d.ts +7 -0
- package/dist/services/boond-client.d.ts.map +1 -1
- package/dist/services/boond-client.js +22 -0
- package/dist/services/boond-client.js.map +1 -1
- package/dist/tools/actions.d.ts.map +1 -1
- package/dist/tools/actions.js +59 -3
- package/dist/tools/actions.js.map +1 -1
- package/dist/tools/candidates.js +2 -2
- package/dist/tools/candidates.js.map +1 -1
- package/dist/tools/companies.js +2 -2
- package/dist/tools/companies.js.map +1 -1
- package/dist/tools/contacts.js +2 -2
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/opportunities.d.ts.map +1 -1
- package/dist/tools/opportunities.js +3 -3
- package/dist/tools/opportunities.js.map +1 -1
- package/dist/tools/positionings.d.ts.map +1 -1
- package/dist/tools/positionings.js +75 -5
- package/dist/tools/positionings.js.map +1 -1
- package/dist/tools/projects.js +2 -2
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/resources.js +2 -2
- package/dist/tools/resources.js.map +1 -1
- package/manifest.json +10 -3
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
Serveur MCP (Model Context Protocol) pour l'API BoondManager, permettant a Claude (Desktop, Cowork, Code) de rechercher, consulter, creer et modifier des enregistrements dans votre instance BoondManager.
|
|
15
15
|
|
|
16
|
-
**
|
|
16
|
+
**175 outils** couvrant **38 domaines** de l'API BoondManager. Voir [TOOLS.md](./TOOLS.md) pour le catalogue auto-généré (outils + prompts + ressources).
|
|
17
17
|
|
|
18
18
|
## Domaines couverts
|
|
19
19
|
|
|
@@ -444,6 +444,25 @@ comptabilité), et/ou bloquer les écritures et suppressions.
|
|
|
444
444
|
|
|
445
445
|
Guide complet, règles de résolution et exemples : [docs/access-control.md](docs/access-control.md).
|
|
446
446
|
|
|
447
|
+
### Libellés personnalisés du dictionnaire
|
|
448
|
+
|
|
449
|
+
Si votre instance BoondManager utilise des libellés de dictionnaire
|
|
450
|
+
personnalisés (ex. types d'action ou états en anglais), vous pouvez déclarer
|
|
451
|
+
le mapping libellé→ID via `BOOND_DICTIONARY_OVERRIDES` (JSON inline ou chemin
|
|
452
|
+
vers un fichier JSON) :
|
|
453
|
+
|
|
454
|
+
```bash
|
|
455
|
+
export BOOND_DICTIONARY_OVERRIDES='{"action":{"contact":{"Call":61,"Email":63}},"state":{"candidate":{"Interviewed":2}}}'
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
Le serveur accepte alors ces libellés pour le `typeOf` de
|
|
459
|
+
`boond_actions_create` et les champs `state` des créations/modifications, les
|
|
460
|
+
résout automatiquement en IDs numériques, et enrichit les descriptions des
|
|
461
|
+
outils avec les libellés disponibles. Sans cette variable, le comportement est
|
|
462
|
+
strictement inchangé.
|
|
463
|
+
|
|
464
|
+
Format complet, entités supportées et limites : [docs/dictionary-overrides.md](docs/dictionary-overrides.md).
|
|
465
|
+
|
|
447
466
|
## Transports
|
|
448
467
|
|
|
449
468
|
Le serveur supporte deux transports MCP, selectionnables via la variable d'environnement `MCP_TRANSPORT`.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dictionary overrides: let operators whose BoondManager instance uses
|
|
3
|
+
* customised dictionary labels (e.g. English action types or states) declare
|
|
4
|
+
* a label→id mapping, so the model can pass human labels instead of opaque
|
|
5
|
+
* numeric dictionary ids.
|
|
6
|
+
*
|
|
7
|
+
* Env var (optional):
|
|
8
|
+
* - `BOOND_DICTIONARY_OVERRIDES` Either inline JSON (the value starts with
|
|
9
|
+
* `{`) or a path to a UTF-8 JSON file. Expected shape:
|
|
10
|
+
*
|
|
11
|
+
* {
|
|
12
|
+
* "action": { "contact": { "Call": 61, "Email": 63 }, "candidate": { ... } },
|
|
13
|
+
* "state": { "candidate": { "Interviewed": 2 }, "opportunity": { ... } }
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* Both sections are optional. Unknown entity keys are warned-and-ignored.
|
|
17
|
+
* Any hard error (unreadable file, invalid JSON, invalid structure) is logged
|
|
18
|
+
* as a warning and the overrides are simply disabled: the server ALWAYS
|
|
19
|
+
* starts (fail-open, same philosophy as services/update-checker.ts).
|
|
20
|
+
*
|
|
21
|
+
* This is a pure input-side convenience: it never translates API responses.
|
|
22
|
+
*/
|
|
23
|
+
/** Entities that can carry an action `typeOf` (see `setting.action.*`). */
|
|
24
|
+
export declare const ACTION_ENTITIES: readonly ["contact", "candidate", "resource", "opportunity", "project"];
|
|
25
|
+
/** Entities that carry a `state` attribute (see `setting.state.*`). */
|
|
26
|
+
export declare const STATE_ENTITIES: readonly ["candidate", "resource", "contact", "company", "opportunity", "project", "positioning", "quotation", "product", "invoice", "order", "absence"];
|
|
27
|
+
export type OverrideSection = "action" | "state";
|
|
28
|
+
/** Custom label → numeric dictionary id. */
|
|
29
|
+
export type LabelMap = Record<string, number>;
|
|
30
|
+
export interface DictionaryOverrides {
|
|
31
|
+
action: Partial<Record<string, LabelMap>>;
|
|
32
|
+
state: Partial<Record<string, LabelMap>>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Load and validate the overrides from the environment. Resilient: any error
|
|
36
|
+
* is logged as a warning and `null` is returned — the server always starts.
|
|
37
|
+
*/
|
|
38
|
+
export declare function loadDictionaryOverrides(env?: NodeJS.ProcessEnv): DictionaryOverrides | null;
|
|
39
|
+
export declare function getDictionaryOverrides(): DictionaryOverrides | null;
|
|
40
|
+
/** Reset the singleton (tests only). */
|
|
41
|
+
export declare function resetDictionaryOverridesForTests(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Resolve a custom label to its numeric dictionary id. Matching is
|
|
44
|
+
* case-insensitive and ignores leading/trailing whitespace.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveLabel(section: OverrideSection, entity: string, label: string): number | undefined;
|
|
47
|
+
/** Labels declared for a section/entity (original casing), or [] if none. */
|
|
48
|
+
export declare function availableLabels(section: OverrideSection, entity: string): string[];
|
|
49
|
+
/** Compact "Label=id, Label=id" summary for a section/entity, or null if none. */
|
|
50
|
+
export declare function formatOverridesSummary(section: OverrideSection, entity: string): string | null;
|
|
51
|
+
/**
|
|
52
|
+
* Append the accepted custom labels to a schema/tool description. Returns the
|
|
53
|
+
* base string unchanged (byte-for-byte) when no override is configured for
|
|
54
|
+
* this section/entity.
|
|
55
|
+
*/
|
|
56
|
+
export declare function appendOverridesToDescription(base: string, section: OverrideSection, entity: string): string;
|
|
57
|
+
//# sourceMappingURL=dictionary-overrides.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dictionary-overrides.d.ts","sourceRoot":"","sources":["../../src/config/dictionary-overrides.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,eAAe,yEAA0E,CAAC;AAEvG,uEAAuE;AACvE,eAAO,MAAM,cAAc,0JAajB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEjD,4CAA4C;AAC5C,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1C,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;CAC1C;AA8CD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,mBAAmB,GAAG,IAAI,CAuDxG;AASD,wBAAgB,sBAAsB,IAAI,mBAAmB,GAAG,IAAI,CAMnE;AAED,wCAAwC;AACxC,wBAAgB,gCAAgC,IAAI,IAAI,CAGvD;AAaD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQxG;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAGlF;AAED,kFAAkF;AAClF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM9F;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI3G"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { logger } from "../services/logger.js";
|
|
4
|
+
/**
|
|
5
|
+
* Dictionary overrides: let operators whose BoondManager instance uses
|
|
6
|
+
* customised dictionary labels (e.g. English action types or states) declare
|
|
7
|
+
* a label→id mapping, so the model can pass human labels instead of opaque
|
|
8
|
+
* numeric dictionary ids.
|
|
9
|
+
*
|
|
10
|
+
* Env var (optional):
|
|
11
|
+
* - `BOOND_DICTIONARY_OVERRIDES` Either inline JSON (the value starts with
|
|
12
|
+
* `{`) or a path to a UTF-8 JSON file. Expected shape:
|
|
13
|
+
*
|
|
14
|
+
* {
|
|
15
|
+
* "action": { "contact": { "Call": 61, "Email": 63 }, "candidate": { ... } },
|
|
16
|
+
* "state": { "candidate": { "Interviewed": 2 }, "opportunity": { ... } }
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* Both sections are optional. Unknown entity keys are warned-and-ignored.
|
|
20
|
+
* Any hard error (unreadable file, invalid JSON, invalid structure) is logged
|
|
21
|
+
* as a warning and the overrides are simply disabled: the server ALWAYS
|
|
22
|
+
* starts (fail-open, same philosophy as services/update-checker.ts).
|
|
23
|
+
*
|
|
24
|
+
* This is a pure input-side convenience: it never translates API responses.
|
|
25
|
+
*/
|
|
26
|
+
/** Entities that can carry an action `typeOf` (see `setting.action.*`). */
|
|
27
|
+
export const ACTION_ENTITIES = ["contact", "candidate", "resource", "opportunity", "project"];
|
|
28
|
+
/** Entities that carry a `state` attribute (see `setting.state.*`). */
|
|
29
|
+
export const STATE_ENTITIES = [
|
|
30
|
+
"candidate",
|
|
31
|
+
"resource",
|
|
32
|
+
"contact",
|
|
33
|
+
"company",
|
|
34
|
+
"opportunity",
|
|
35
|
+
"project",
|
|
36
|
+
"positioning",
|
|
37
|
+
"quotation",
|
|
38
|
+
"product",
|
|
39
|
+
"invoice",
|
|
40
|
+
"order",
|
|
41
|
+
"absence",
|
|
42
|
+
];
|
|
43
|
+
// Values must be numeric dictionary ids (>= 0).
|
|
44
|
+
const LabelMapSchema = z.record(z.string().min(1), z.number().int().min(0));
|
|
45
|
+
// Top-level shape. `.strict()` so a typo like "actions" fails loudly (warn +
|
|
46
|
+
// disabled) instead of being silently dropped.
|
|
47
|
+
const OverridesFileSchema = z
|
|
48
|
+
.object({
|
|
49
|
+
action: z.record(z.string(), LabelMapSchema).optional(),
|
|
50
|
+
state: z.record(z.string(), LabelMapSchema).optional(),
|
|
51
|
+
})
|
|
52
|
+
.strict();
|
|
53
|
+
// --- Env parsing helper (mirroring config/access-policy.ts) ---
|
|
54
|
+
function readEnv(env, key) {
|
|
55
|
+
const raw = env[key];
|
|
56
|
+
if (raw === undefined)
|
|
57
|
+
return undefined;
|
|
58
|
+
// Ignore unresolved placeholders like "${SOMETHING}" (same guard as http.ts).
|
|
59
|
+
if (raw.startsWith("${"))
|
|
60
|
+
return undefined;
|
|
61
|
+
if (raw.trim().length === 0)
|
|
62
|
+
return undefined;
|
|
63
|
+
return raw;
|
|
64
|
+
}
|
|
65
|
+
/** Keep only known entity keys; warn-and-ignore the rest (never fatal). */
|
|
66
|
+
function filterKnownEntities(section, raw, known, log) {
|
|
67
|
+
const out = {};
|
|
68
|
+
for (const [entity, labels] of Object.entries(raw)) {
|
|
69
|
+
if (known.includes(entity)) {
|
|
70
|
+
if (Object.keys(labels).length > 0)
|
|
71
|
+
out[entity] = labels;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
log.warn({ section, entity, known: [...known] }, `BOOND_DICTIONARY_OVERRIDES: unknown ${section} entity "${entity}" ignored`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return out;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Load and validate the overrides from the environment. Resilient: any error
|
|
81
|
+
* is logged as a warning and `null` is returned — the server always starts.
|
|
82
|
+
*/
|
|
83
|
+
export function loadDictionaryOverrides(env = process.env) {
|
|
84
|
+
const log = logger.child({ component: "dictionary-overrides" });
|
|
85
|
+
const raw = readEnv(env, "BOOND_DICTIONARY_OVERRIDES");
|
|
86
|
+
if (raw === undefined)
|
|
87
|
+
return null;
|
|
88
|
+
// Inline JSON if the value starts with "{", otherwise a file path.
|
|
89
|
+
let text = raw;
|
|
90
|
+
const trimmed = raw.trim();
|
|
91
|
+
if (!trimmed.startsWith("{")) {
|
|
92
|
+
try {
|
|
93
|
+
text = readFileSync(trimmed, "utf-8");
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
log.warn({ path: trimmed, err: err instanceof Error ? err.message : String(err) }, "BOOND_DICTIONARY_OVERRIDES: cannot read overrides file; custom labels disabled");
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
let parsed;
|
|
101
|
+
try {
|
|
102
|
+
parsed = JSON.parse(text);
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
log.warn({ err: err instanceof Error ? err.message : String(err) }, "BOOND_DICTIONARY_OVERRIDES: invalid JSON; custom labels disabled");
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const result = OverridesFileSchema.safeParse(parsed);
|
|
109
|
+
if (!result.success) {
|
|
110
|
+
log.warn({ issues: result.error.issues }, "BOOND_DICTIONARY_OVERRIDES: invalid structure; custom labels disabled");
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
const overrides = {
|
|
114
|
+
action: filterKnownEntities("action", result.data.action ?? {}, ACTION_ENTITIES, log),
|
|
115
|
+
state: filterKnownEntities("state", result.data.state ?? {}, STATE_ENTITIES, log),
|
|
116
|
+
};
|
|
117
|
+
if (Object.keys(overrides.action).length === 0 && Object.keys(overrides.state).length === 0) {
|
|
118
|
+
log.warn("BOOND_DICTIONARY_OVERRIDES: no usable entry after validation; custom labels disabled");
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
log.info({
|
|
122
|
+
actionEntities: Object.keys(overrides.action),
|
|
123
|
+
stateEntities: Object.keys(overrides.state),
|
|
124
|
+
}, "Dictionary overrides active: custom labels will be resolved to numeric ids");
|
|
125
|
+
return overrides;
|
|
126
|
+
}
|
|
127
|
+
// --- Lazy singleton over process.env ---
|
|
128
|
+
// Loaded on first use (NOT at import time) so tests can set the env var after
|
|
129
|
+
// importing modules that depend on this one.
|
|
130
|
+
let cached = null;
|
|
131
|
+
let loaded = false;
|
|
132
|
+
export function getDictionaryOverrides() {
|
|
133
|
+
if (!loaded) {
|
|
134
|
+
cached = loadDictionaryOverrides(process.env);
|
|
135
|
+
loaded = true;
|
|
136
|
+
}
|
|
137
|
+
return cached;
|
|
138
|
+
}
|
|
139
|
+
/** Reset the singleton (tests only). */
|
|
140
|
+
export function resetDictionaryOverridesForTests() {
|
|
141
|
+
cached = null;
|
|
142
|
+
loaded = false;
|
|
143
|
+
}
|
|
144
|
+
// --- Resolution helpers ---
|
|
145
|
+
function normalizeLabel(label) {
|
|
146
|
+
return label.trim().toLowerCase();
|
|
147
|
+
}
|
|
148
|
+
function labelMapFor(section, entity) {
|
|
149
|
+
const overrides = getDictionaryOverrides();
|
|
150
|
+
return overrides?.[section][entity];
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Resolve a custom label to its numeric dictionary id. Matching is
|
|
154
|
+
* case-insensitive and ignores leading/trailing whitespace.
|
|
155
|
+
*/
|
|
156
|
+
export function resolveLabel(section, entity, label) {
|
|
157
|
+
const map = labelMapFor(section, entity);
|
|
158
|
+
if (!map)
|
|
159
|
+
return undefined;
|
|
160
|
+
const wanted = normalizeLabel(label);
|
|
161
|
+
for (const [key, id] of Object.entries(map)) {
|
|
162
|
+
if (normalizeLabel(key) === wanted)
|
|
163
|
+
return id;
|
|
164
|
+
}
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
/** Labels declared for a section/entity (original casing), or [] if none. */
|
|
168
|
+
export function availableLabels(section, entity) {
|
|
169
|
+
const map = labelMapFor(section, entity);
|
|
170
|
+
return map ? Object.keys(map) : [];
|
|
171
|
+
}
|
|
172
|
+
/** Compact "Label=id, Label=id" summary for a section/entity, or null if none. */
|
|
173
|
+
export function formatOverridesSummary(section, entity) {
|
|
174
|
+
const map = labelMapFor(section, entity);
|
|
175
|
+
if (!map)
|
|
176
|
+
return null;
|
|
177
|
+
const entries = Object.entries(map);
|
|
178
|
+
if (entries.length === 0)
|
|
179
|
+
return null;
|
|
180
|
+
return entries.map(([label, id]) => `${label}=${id}`).join(", ");
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Append the accepted custom labels to a schema/tool description. Returns the
|
|
184
|
+
* base string unchanged (byte-for-byte) when no override is configured for
|
|
185
|
+
* this section/entity.
|
|
186
|
+
*/
|
|
187
|
+
export function appendOverridesToDescription(base, section, entity) {
|
|
188
|
+
const summary = formatOverridesSummary(section, entity);
|
|
189
|
+
if (summary === null)
|
|
190
|
+
return base;
|
|
191
|
+
return `${base}\nLibellés personnalisés acceptés (résolus automatiquement) : ${summary}`;
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=dictionary-overrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dictionary-overrides.js","sourceRoot":"","sources":["../../src/config/dictionary-overrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2KzE,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB;;;;GAQhC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuF5D"}
|
package/dist/resources/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { apiRequest } from "../services/boond-client.js";
|
|
2
2
|
import { getDictionary, resolveDictionaryPath } from "../services/dictionary.js";
|
|
3
|
+
import { getDictionaryOverrides } from "../config/dictionary-overrides.js";
|
|
3
4
|
/**
|
|
4
5
|
* Curated dictionaries surfaced as static MCP resources. Slugs follow the
|
|
5
6
|
* historical "kind/entity" naming for backward compatibility with client URIs;
|
|
@@ -129,6 +130,8 @@ const DICTIONARIES = [
|
|
|
129
130
|
const DICTIONARY_URI_PREFIX = "boond://dictionary/";
|
|
130
131
|
/** URI of the cached identity resource. */
|
|
131
132
|
const CURRENT_USER_URI = "boond://application/current-user";
|
|
133
|
+
/** URI of the static dictionary-overrides resource (no API call behind it). */
|
|
134
|
+
const OVERRIDES_URI = "boond://dictionary/overrides";
|
|
132
135
|
function buildResourceUri(slug) {
|
|
133
136
|
return `${DICTIONARY_URI_PREFIX}${slug}`;
|
|
134
137
|
}
|
|
@@ -139,6 +142,7 @@ export const REGISTERED_RESOURCES = [
|
|
|
139
142
|
uri: buildResourceUri(d.slug),
|
|
140
143
|
title: d.title,
|
|
141
144
|
})),
|
|
145
|
+
{ name: "dictionary/overrides", uri: OVERRIDES_URI, title: "Libellés personnalisés (overrides)" },
|
|
142
146
|
{ name: "application/current-user", uri: CURRENT_USER_URI, title: "Utilisateur courant" },
|
|
143
147
|
];
|
|
144
148
|
export function registerAllResources(server) {
|
|
@@ -167,6 +171,27 @@ export function registerAllResources(server) {
|
|
|
167
171
|
};
|
|
168
172
|
});
|
|
169
173
|
}
|
|
174
|
+
// Static resource: the label→id overrides configured by the operator via
|
|
175
|
+
// BOOND_DICTIONARY_OVERRIDES (see docs/dictionary-overrides.md). No API call:
|
|
176
|
+
// the body reflects exactly what the server resolved at startup, so the
|
|
177
|
+
// model (and the user) can check which custom labels are usable.
|
|
178
|
+
server.registerResource("dictionary/overrides", OVERRIDES_URI, {
|
|
179
|
+
title: "Libellés personnalisés (overrides)",
|
|
180
|
+
description: "Mapping libellé→ID configuré via BOOND_DICTIONARY_OVERRIDES (types d'action et états). " +
|
|
181
|
+
'Renvoie { "configured": false } si aucun override n\'est configuré.',
|
|
182
|
+
mimeType: "application/json",
|
|
183
|
+
}, () => {
|
|
184
|
+
const overrides = getDictionaryOverrides();
|
|
185
|
+
return Promise.resolve({
|
|
186
|
+
contents: [
|
|
187
|
+
{
|
|
188
|
+
uri: OVERRIDES_URI,
|
|
189
|
+
mimeType: "application/json",
|
|
190
|
+
text: JSON.stringify(overrides ?? { configured: false }, null, 2),
|
|
191
|
+
},
|
|
192
|
+
],
|
|
193
|
+
});
|
|
194
|
+
});
|
|
170
195
|
// The current-user resource is a convenience for prompts/tools that need
|
|
171
196
|
// the caller's userId without first issuing a tool call. The body is the
|
|
172
197
|
// full /application/current-user payload.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AA+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"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"}
|
package/dist/schemas/index.d.ts
CHANGED
|
@@ -313,6 +313,7 @@ export declare const IdTabSchema: z.ZodObject<{
|
|
|
313
313
|
id: z.ZodString;
|
|
314
314
|
tab: z.ZodOptional<z.ZodString>;
|
|
315
315
|
}, z.core.$strict>;
|
|
316
|
+
export declare const stateField: (entity: string, baseDescription: string) => z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
|
|
316
317
|
export declare const CandidateCreateSchema: z.ZodObject<{
|
|
317
318
|
firstName: z.ZodString;
|
|
318
319
|
lastName: z.ZodString;
|
|
@@ -321,10 +322,19 @@ export declare const CandidateCreateSchema: z.ZodObject<{
|
|
|
321
322
|
city: z.ZodOptional<z.ZodString>;
|
|
322
323
|
country: z.ZodOptional<z.ZodString>;
|
|
323
324
|
title: z.ZodOptional<z.ZodString>;
|
|
324
|
-
state: z.ZodOptional<z.
|
|
325
|
+
state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
|
|
325
326
|
mainSkills: z.ZodOptional<z.ZodString>;
|
|
326
327
|
note: z.ZodOptional<z.ZodString>;
|
|
327
328
|
}, z.core.$strict>;
|
|
329
|
+
export declare const PositioningUpdateSchema: z.ZodObject<{
|
|
330
|
+
id: z.ZodString;
|
|
331
|
+
state: z.ZodOptional<z.ZodNumber>;
|
|
332
|
+
stateReasonTypeOf: z.ZodOptional<z.ZodNumber>;
|
|
333
|
+
stateReasonDetail: z.ZodOptional<z.ZodString>;
|
|
334
|
+
startDate: z.ZodOptional<z.ZodString>;
|
|
335
|
+
endDate: z.ZodOptional<z.ZodString>;
|
|
336
|
+
informationComments: z.ZodOptional<z.ZodString>;
|
|
337
|
+
}, z.core.$strict>;
|
|
328
338
|
export declare const CandidateUpdateSchema: z.ZodObject<{
|
|
329
339
|
id: z.ZodString;
|
|
330
340
|
firstName: z.ZodOptional<z.ZodString>;
|
|
@@ -334,7 +344,7 @@ export declare const CandidateUpdateSchema: z.ZodObject<{
|
|
|
334
344
|
city: z.ZodOptional<z.ZodString>;
|
|
335
345
|
country: z.ZodOptional<z.ZodString>;
|
|
336
346
|
title: z.ZodOptional<z.ZodString>;
|
|
337
|
-
state: z.ZodOptional<z.
|
|
347
|
+
state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
|
|
338
348
|
mainSkills: z.ZodOptional<z.ZodString>;
|
|
339
349
|
note: z.ZodOptional<z.ZodString>;
|
|
340
350
|
}, z.core.$strict>;
|
|
@@ -346,7 +356,7 @@ export declare const ResourceCreateSchema: z.ZodObject<{
|
|
|
346
356
|
city: z.ZodOptional<z.ZodString>;
|
|
347
357
|
country: z.ZodOptional<z.ZodString>;
|
|
348
358
|
title: z.ZodOptional<z.ZodString>;
|
|
349
|
-
state: z.ZodOptional<z.
|
|
359
|
+
state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
|
|
350
360
|
note: z.ZodOptional<z.ZodString>;
|
|
351
361
|
}, z.core.$strict>;
|
|
352
362
|
export declare const ResourceUpdateSchema: z.ZodObject<{
|
|
@@ -358,14 +368,14 @@ export declare const ResourceUpdateSchema: z.ZodObject<{
|
|
|
358
368
|
city: z.ZodOptional<z.ZodString>;
|
|
359
369
|
country: z.ZodOptional<z.ZodString>;
|
|
360
370
|
title: z.ZodOptional<z.ZodString>;
|
|
361
|
-
state: z.ZodOptional<z.
|
|
371
|
+
state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
|
|
362
372
|
note: z.ZodOptional<z.ZodString>;
|
|
363
373
|
}, z.core.$strict>;
|
|
364
374
|
export declare const ResourceTechnicalDataUpdateSchema: z.ZodObject<{
|
|
365
375
|
id: z.ZodString;
|
|
366
376
|
mode: z.ZodDefault<z.ZodEnum<{
|
|
367
|
-
merge: "merge";
|
|
368
377
|
replace: "replace";
|
|
378
|
+
merge: "merge";
|
|
369
379
|
}>>;
|
|
370
380
|
title: z.ZodOptional<z.ZodString>;
|
|
371
381
|
summary: z.ZodOptional<z.ZodString>;
|
|
@@ -448,7 +458,7 @@ export declare const CompanyCreateSchema: z.ZodObject<{
|
|
|
448
458
|
country: z.ZodOptional<z.ZodString>;
|
|
449
459
|
website: z.ZodOptional<z.ZodString>;
|
|
450
460
|
siret: z.ZodOptional<z.ZodString>;
|
|
451
|
-
state: z.ZodOptional<z.
|
|
461
|
+
state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
|
|
452
462
|
note: z.ZodOptional<z.ZodString>;
|
|
453
463
|
}, z.core.$strict>;
|
|
454
464
|
export declare const CompanyUpdateSchema: z.ZodObject<{
|
|
@@ -460,14 +470,14 @@ export declare const CompanyUpdateSchema: z.ZodObject<{
|
|
|
460
470
|
country: z.ZodOptional<z.ZodString>;
|
|
461
471
|
website: z.ZodOptional<z.ZodString>;
|
|
462
472
|
siret: z.ZodOptional<z.ZodString>;
|
|
463
|
-
state: z.ZodOptional<z.
|
|
473
|
+
state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
|
|
464
474
|
note: z.ZodOptional<z.ZodString>;
|
|
465
475
|
}, z.core.$strict>;
|
|
466
476
|
export declare const OpportunityCreateSchema: z.ZodObject<{
|
|
467
477
|
name: z.ZodString;
|
|
468
478
|
companyId: z.ZodOptional<z.ZodString>;
|
|
469
479
|
contactId: z.ZodOptional<z.ZodString>;
|
|
470
|
-
state: z.ZodOptional<z.
|
|
480
|
+
state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
|
|
471
481
|
startDate: z.ZodOptional<z.ZodString>;
|
|
472
482
|
endDate: z.ZodOptional<z.ZodString>;
|
|
473
483
|
note: z.ZodOptional<z.ZodString>;
|
|
@@ -475,7 +485,7 @@ export declare const OpportunityCreateSchema: z.ZodObject<{
|
|
|
475
485
|
export declare const OpportunityUpdateSchema: z.ZodObject<{
|
|
476
486
|
id: z.ZodString;
|
|
477
487
|
name: z.ZodOptional<z.ZodString>;
|
|
478
|
-
state: z.ZodOptional<z.
|
|
488
|
+
state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
|
|
479
489
|
startDate: z.ZodOptional<z.ZodString>;
|
|
480
490
|
endDate: z.ZodOptional<z.ZodString>;
|
|
481
491
|
note: z.ZodOptional<z.ZodString>;
|
|
@@ -490,7 +500,7 @@ export declare const ActionSearchSchema: z.ZodObject<{
|
|
|
490
500
|
pageSize: z.ZodDefault<z.ZodNumber>;
|
|
491
501
|
}, z.core.$strict>;
|
|
492
502
|
export declare const ActionCreateSchema: z.ZodObject<{
|
|
493
|
-
typeOf: z.ZodCoercedNumber<unknown>;
|
|
503
|
+
typeOf: z.ZodUnion<readonly [z.ZodCoercedNumber<unknown>, z.ZodString]>;
|
|
494
504
|
title: z.ZodOptional<z.ZodString>;
|
|
495
505
|
text: z.ZodOptional<z.ZodString>;
|
|
496
506
|
startDate: z.ZodOptional<z.ZodString>;
|
|
@@ -501,6 +511,7 @@ export declare const ActionCreateSchema: z.ZodObject<{
|
|
|
501
511
|
opportunityId: z.ZodOptional<z.ZodString>;
|
|
502
512
|
projectId: z.ZodOptional<z.ZodString>;
|
|
503
513
|
companyId: z.ZodOptional<z.ZodString>;
|
|
514
|
+
positioningId: z.ZodOptional<z.ZodString>;
|
|
504
515
|
}, z.core.$strict>;
|
|
505
516
|
export declare const ResourceTimesheetSchema: z.ZodObject<{
|
|
506
517
|
resourceId: z.ZodString;
|
|
@@ -522,7 +533,7 @@ export declare const ProjectCreateSchema: z.ZodObject<{
|
|
|
522
533
|
companyId: z.ZodOptional<z.ZodString>;
|
|
523
534
|
contactId: z.ZodOptional<z.ZodString>;
|
|
524
535
|
opportunityId: z.ZodOptional<z.ZodString>;
|
|
525
|
-
state: z.ZodOptional<z.
|
|
536
|
+
state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
|
|
526
537
|
startDate: z.ZodOptional<z.ZodString>;
|
|
527
538
|
endDate: z.ZodOptional<z.ZodString>;
|
|
528
539
|
note: z.ZodOptional<z.ZodString>;
|
|
@@ -530,7 +541,7 @@ export declare const ProjectCreateSchema: z.ZodObject<{
|
|
|
530
541
|
export declare const ProjectUpdateSchema: z.ZodObject<{
|
|
531
542
|
id: z.ZodString;
|
|
532
543
|
name: z.ZodOptional<z.ZodString>;
|
|
533
|
-
state: z.ZodOptional<z.
|
|
544
|
+
state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
|
|
534
545
|
startDate: z.ZodOptional<z.ZodString>;
|
|
535
546
|
endDate: z.ZodOptional<z.ZodString>;
|
|
536
547
|
note: z.ZodOptional<z.ZodString>;
|
|
@@ -678,8 +689,10 @@ export declare const PositioningSearchSchema: z.ZodObject<{
|
|
|
678
689
|
keywords: z.ZodOptional<z.ZodString>;
|
|
679
690
|
candidateId: z.ZodOptional<z.ZodString>;
|
|
680
691
|
resourceId: z.ZodOptional<z.ZodString>;
|
|
681
|
-
projectId: z.ZodOptional<z.ZodString>;
|
|
682
692
|
opportunityId: z.ZodOptional<z.ZodString>;
|
|
693
|
+
companyId: z.ZodOptional<z.ZodString>;
|
|
694
|
+
contactId: z.ZodOptional<z.ZodString>;
|
|
695
|
+
productId: z.ZodOptional<z.ZodString>;
|
|
683
696
|
page: z.ZodDefault<z.ZodNumber>;
|
|
684
697
|
pageSize: z.ZodDefault<z.ZodNumber>;
|
|
685
698
|
}, z.core.$strict>;
|
|
@@ -752,27 +765,27 @@ export declare const DocumentParentTypes: readonly ["action", "resourceResume",
|
|
|
752
765
|
export declare const DocumentCreateSchema: z.ZodObject<{
|
|
753
766
|
parentType: z.ZodEnum<{
|
|
754
767
|
resource: "resource";
|
|
755
|
-
|
|
768
|
+
candidate: "candidate";
|
|
769
|
+
project: "project";
|
|
756
770
|
company: "company";
|
|
771
|
+
positioning: "positioning";
|
|
772
|
+
product: "product";
|
|
773
|
+
invoice: "invoice";
|
|
774
|
+
order: "order";
|
|
775
|
+
action: "action";
|
|
757
776
|
absencesReport: "absencesReport";
|
|
758
777
|
timesReport: "timesReport";
|
|
759
778
|
expensesReport: "expensesReport";
|
|
760
|
-
action: "action";
|
|
761
779
|
resourceResume: "resourceResume";
|
|
762
780
|
candidateResume: "candidateResume";
|
|
763
|
-
candidate: "candidate";
|
|
764
781
|
payment: "payment";
|
|
765
|
-
project: "project";
|
|
766
|
-
product: "product";
|
|
767
782
|
purchase: "purchase";
|
|
768
783
|
delivery: "delivery";
|
|
769
784
|
groupment: "groupment";
|
|
770
785
|
inactivity: "inactivity";
|
|
771
|
-
positioning: "positioning";
|
|
772
786
|
followeddocument: "followeddocument";
|
|
773
787
|
appentity: "appentity";
|
|
774
788
|
contract: "contract";
|
|
775
|
-
invoice: "invoice";
|
|
776
789
|
providerinvoice: "providerinvoice";
|
|
777
790
|
}>;
|
|
778
791
|
parentId: z.ZodNumber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
|