boondmanager-mcp-server 1.3.9 → 1.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.
Files changed (43) hide show
  1. package/README.md +108 -5
  2. package/dist/index.js +27 -45
  3. package/dist/index.js.map +1 -1
  4. package/dist/schemas/index.d.ts +146 -0
  5. package/dist/schemas/index.d.ts.map +1 -1
  6. package/dist/schemas/index.js +131 -0
  7. package/dist/schemas/index.js.map +1 -1
  8. package/dist/server.d.ts +6 -0
  9. package/dist/server.d.ts.map +1 -0
  10. package/dist/server.js +57 -0
  11. package/dist/server.js.map +1 -0
  12. package/dist/services/boond-client.d.ts +3 -2
  13. package/dist/services/boond-client.d.ts.map +1 -1
  14. package/dist/services/boond-client.js +25 -3
  15. package/dist/services/boond-client.js.map +1 -1
  16. package/dist/tools/candidates.d.ts.map +1 -1
  17. package/dist/tools/candidates.js +20 -2
  18. package/dist/tools/candidates.js.map +1 -1
  19. package/dist/tools/companies.d.ts.map +1 -1
  20. package/dist/tools/companies.js +19 -2
  21. package/dist/tools/companies.js.map +1 -1
  22. package/dist/tools/contacts.d.ts.map +1 -1
  23. package/dist/tools/contacts.js +19 -2
  24. package/dist/tools/contacts.js.map +1 -1
  25. package/dist/tools/crud-factory.d.ts +6 -1
  26. package/dist/tools/crud-factory.d.ts.map +1 -1
  27. package/dist/tools/crud-factory.js +9 -6
  28. package/dist/tools/crud-factory.js.map +1 -1
  29. package/dist/tools/opportunities.d.ts.map +1 -1
  30. package/dist/tools/opportunities.js +18 -2
  31. package/dist/tools/opportunities.js.map +1 -1
  32. package/dist/tools/projects.d.ts.map +1 -1
  33. package/dist/tools/projects.js +18 -2
  34. package/dist/tools/projects.js.map +1 -1
  35. package/dist/tools/resources.d.ts.map +1 -1
  36. package/dist/tools/resources.js +21 -2
  37. package/dist/tools/resources.js.map +1 -1
  38. package/dist/transports/http.d.ts +20 -0
  39. package/dist/transports/http.d.ts.map +1 -0
  40. package/dist/transports/http.js +152 -0
  41. package/dist/transports/http.js.map +1 -0
  42. package/manifest.json +1 -1
  43. package/package.json +1 -1
package/README.md CHANGED
@@ -268,6 +268,105 @@ export BOOND_BASE_URL="https://votre-instance.boondmanager.com/api"
268
268
 
269
269
  Par defaut, l'URL est `https://ui.boondmanager.com/api`.
270
270
 
271
+ ## Transports
272
+
273
+ Le serveur supporte deux transports MCP, selectionnables via la variable d'environnement `MCP_TRANSPORT`.
274
+
275
+ | Transport | Valeur | Cas d'usage |
276
+ |-----------|--------|-------------|
277
+ | **stdio** (defaut) | `stdio` ou non defini | Claude Desktop, Claude Code, integration locale |
278
+ | **Streamable HTTP** | `http` (alias : `streamable-http`) | Gateway MCP, deploiement distant, conteneurs |
279
+
280
+ ### Streamable HTTP (pour les gateways MCP)
281
+
282
+ Depuis la v1.4.0, le serveur peut etre expose en HTTP (specification MCP Streamable HTTP 2025-03-26) afin d'etre branche derriere une passerelle MCP ou deploye comme service.
283
+
284
+ ```bash
285
+ export MCP_TRANSPORT=http
286
+ export MCP_HTTP_HOST=0.0.0.0 # defaut: 127.0.0.1
287
+ export MCP_HTTP_PORT=3000 # defaut: 3000
288
+ export MCP_HTTP_PATH=/mcp # defaut: /mcp
289
+ export MCP_HTTP_BEARER_TOKEN=xxx # optionnel: protege l'endpoint
290
+ export BOOND_API_TOKEN=... # (credentials BoondManager, comme en stdio)
291
+
292
+ npx boondmanager-mcp-server
293
+ # 🚀 BoondManager MCP Server running (streamable HTTP transport)
294
+ # 📡 Endpoint: http://0.0.0.0:3000/mcp
295
+ # 🔑 Mode: stateless
296
+ ```
297
+
298
+ **Variables d'environnement HTTP**
299
+
300
+ | Variable | Defaut | Description |
301
+ |----------|--------|-------------|
302
+ | `MCP_TRANSPORT` | `stdio` | `http` pour activer le transport HTTP |
303
+ | `MCP_HTTP_HOST` | `127.0.0.1` | Interface d'ecoute (`0.0.0.0` pour exposer) |
304
+ | `MCP_HTTP_PORT` | `3000` | Port TCP |
305
+ | `MCP_HTTP_PATH` | `/mcp` | Chemin HTTP de l'endpoint MCP |
306
+ | `MCP_HTTP_STATEFUL` | `false` | `true` pour activer le mode stateful (session `Mcp-Session-Id`) |
307
+ | `MCP_HTTP_BEARER_TOKEN` | _(vide)_ | Si defini, le serveur exige `Authorization: Bearer <token>` |
308
+ | `MCP_HTTP_JSON_RESPONSE` | `false` | `true` pour forcer des reponses JSON (sans SSE) |
309
+
310
+ **Stateless (defaut)** : chaque requete HTTP POST est independante, idealement adapte a un gateway qui multiplexe plusieurs serveurs MCP. Aucune session n'est conservee cote serveur.
311
+
312
+ **Stateful** : le serveur genere un `Mcp-Session-Id` a l'initialisation que le client doit renvoyer dans chaque requete suivante. Utile pour les clients MCP natifs qui beneficient du streaming SSE et des notifications serveur.
313
+
314
+ #### Exemple : verifier l'endpoint
315
+
316
+ ```bash
317
+ curl -s -X POST http://localhost:3000/mcp \
318
+ -H 'Content-Type: application/json' \
319
+ -H 'Accept: application/json, text/event-stream' \
320
+ -d '{
321
+ "jsonrpc": "2.0",
322
+ "id": 1,
323
+ "method": "initialize",
324
+ "params": {
325
+ "protocolVersion": "2025-06-18",
326
+ "capabilities": {},
327
+ "clientInfo": { "name": "curl", "version": "1.0" }
328
+ }
329
+ }'
330
+ ```
331
+
332
+ #### Exemple : Claude Code via HTTP
333
+
334
+ ```bash
335
+ claude mcp add --transport http \
336
+ --header "Authorization: Bearer votre_token_local" \
337
+ boondmanager https://mcp.votre-domaine.com/mcp
338
+ ```
339
+
340
+ #### Exemple : configuration `.mcp.json` HTTP
341
+
342
+ ```json
343
+ {
344
+ "mcpServers": {
345
+ "boondmanager": {
346
+ "type": "http",
347
+ "url": "https://mcp.votre-domaine.com/mcp",
348
+ "headers": {
349
+ "Authorization": "Bearer ${MCP_HTTP_BEARER_TOKEN}"
350
+ }
351
+ }
352
+ }
353
+ }
354
+ ```
355
+
356
+ #### Exemple : Docker
357
+
358
+ ```bash
359
+ docker run --rm -p 3000:3000 \
360
+ -e MCP_TRANSPORT=http \
361
+ -e MCP_HTTP_HOST=0.0.0.0 \
362
+ -e MCP_HTTP_BEARER_TOKEN=$(openssl rand -hex 32) \
363
+ -e BOOND_API_TOKEN=$BOOND_API_TOKEN \
364
+ node:20-alpine \
365
+ npx -y boondmanager-mcp-server
366
+ ```
367
+
368
+ > **Securite** : en HTTP, les credentials BoondManager restent cote serveur (variables d'environnement du conteneur). Seul le token MCP (`MCP_HTTP_BEARER_TOKEN`) circule entre le client et le serveur. Derriere un reverse proxy, ajoutez TLS (HTTPS) et limitez l'acces reseau au gateway.
369
+
271
370
  ## Exemples d'utilisation
272
371
 
273
372
  Une fois configure, vous pouvez demander a Claude :
@@ -315,9 +414,12 @@ Une fois configure, vous pouvez demander a Claude :
315
414
  ```
316
415
  boondmanager-mcp-server/
317
416
  ├── src/
318
- │ ├── index.ts # Point d'entree MCP (stdio)
417
+ │ ├── index.ts # Point d'entree MCP (selection du transport)
418
+ │ ├── server.ts # Factory createMcpServer() + liste des domaines
319
419
  │ ├── constants.ts # Configuration, API paths, onglets
320
420
  │ ├── types.ts # Types TypeScript (JSON:API)
421
+ │ ├── transports/
422
+ │ │ └── http.ts # Transport Streamable HTTP (gateway/remote)
321
423
  │ ├── services/
322
424
  │ │ └── boond-client.ts # Client HTTP API BoondManager
323
425
  │ ├── schemas/
@@ -372,11 +474,12 @@ boondmanager-mcp-server/
372
474
 
373
475
  ## Securite
374
476
 
375
- - Les credentials ne transitent jamais via le reseau MCP -- ils sont configures en variables d'environnement locales
376
- - Le serveur tourne en local (stdio), pas de port reseau expose
477
+ - Les credentials BoondManager (JWT ou BasicAuth) ne transitent jamais via le protocole MCP -- ils sont configures en variables d'environnement cote serveur uniquement
478
+ - En mode **stdio**, le serveur tourne en local, aucun port reseau n'est expose
479
+ - En mode **streamable HTTP**, protegez l'endpoint avec `MCP_HTTP_BEARER_TOKEN` + TLS (HTTPS via reverse proxy) et restreignez l'acces reseau a votre gateway
377
480
  - Compatible avec les exigences ISO 27001
378
481
  - L'API BoondManager est hebergee en France et conforme RGPD
379
- - Authentification par BasicAuth (base64) ou JWT Bearer token
482
+ - Authentification BoondManager : JWT (recommande), BasicAuth, ou JWT construit automatiquement a partir des composants
380
483
 
381
484
  ## Developpement
382
485
 
@@ -407,7 +510,7 @@ npm run typecheck
407
510
  - **Validation** : Zod 4
408
511
  - **Tests** : Vitest 4 + couverture V8
409
512
  - **Lint** : ESLint 10 + typescript-eslint
410
- - **Transport** : stdio (pas de port reseau)
513
+ - **Transports** : stdio (defaut) + Streamable HTTP (MCP 2025-03-26)
411
514
 
412
515
  ## Ressources
413
516
 
package/dist/index.js CHANGED
@@ -1,50 +1,14 @@
1
1
  #!/usr/bin/env node
2
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
3
  import { initClient } from "./services/boond-client.js";
5
- import { registerCandidateTools, registerResourceTools, registerContactTools, registerCompanyTools, registerOpportunityTools, registerActionTools, registerTimesheetTools, registerProjectTools, registerInvoiceTools, registerOrderTools, registerDeliveryTools, registerAbsenceTools, registerExpenseTools, registerProductTools, registerPositioningTools, registerPaymentTools, registerAdvantageTools, registerApplicationTools, registerContractTools, registerPurchaseTools, registerProviderInvoiceTools, registerAccountTools, registerAgencyTools, registerBusinessUnitTools, registerRoleTools, registerLogTools, registerNotificationTools, registerThreadTools, registerTodolistTools, registerFlagTools, registerCalendarTools, registerWebhookTools, registerValidationTools, registerPoleTools, registerReportingTools, registerPlanningAbsenceTools, } from "./tools/index.js";
6
- const server = new McpServer({
7
- name: "boondmanager-mcp-server",
8
- version: "1.0.0",
9
- });
10
- // Register all domain tools
11
- registerCandidateTools(server);
12
- registerResourceTools(server);
13
- registerContactTools(server);
14
- registerCompanyTools(server);
15
- registerOpportunityTools(server);
16
- registerActionTools(server);
17
- registerTimesheetTools(server);
18
- registerProjectTools(server);
19
- registerInvoiceTools(server);
20
- registerOrderTools(server);
21
- registerDeliveryTools(server);
22
- registerAbsenceTools(server);
23
- registerExpenseTools(server);
24
- registerProductTools(server);
25
- registerPositioningTools(server);
26
- registerPaymentTools(server);
27
- registerAdvantageTools(server);
28
- registerApplicationTools(server);
29
- registerContractTools(server);
30
- registerPurchaseTools(server);
31
- registerProviderInvoiceTools(server);
32
- registerAccountTools(server);
33
- registerAgencyTools(server);
34
- registerBusinessUnitTools(server);
35
- registerRoleTools(server);
36
- registerLogTools(server);
37
- registerNotificationTools(server);
38
- registerThreadTools(server);
39
- registerTodolistTools(server);
40
- registerFlagTools(server);
41
- registerCalendarTools(server);
42
- registerWebhookTools(server);
43
- registerValidationTools(server);
44
- registerPoleTools(server);
45
- registerReportingTools(server);
46
- registerPlanningAbsenceTools(server);
47
- // Initialize and run
4
+ import { createMcpServer, REGISTERED_DOMAINS } from "./server.js";
5
+ import { resolveHttpOptions, startHttpTransport } from "./transports/http.js";
6
+ function resolveTransport() {
7
+ const raw = (process.env["MCP_TRANSPORT"] ?? "").toLowerCase().trim();
8
+ if (raw === "http" || raw === "streamable-http" || raw === "streamablehttp")
9
+ return "http";
10
+ return "stdio";
11
+ }
48
12
  async function main() {
49
13
  try {
50
14
  initClient();
@@ -53,10 +17,28 @@ async function main() {
53
17
  console.error("⚠️ Configuration warning:", error.message);
54
18
  console.error("The server will start but API calls will fail without proper credentials.");
55
19
  }
20
+ const kind = resolveTransport();
21
+ if (kind === "http") {
22
+ const options = resolveHttpOptions();
23
+ const handle = await startHttpTransport(createMcpServer, options);
24
+ console.error("🚀 BoondManager MCP Server running (streamable HTTP transport)");
25
+ console.error(`📡 Endpoint: http://${handle.address.host}:${handle.address.port}${handle.address.path}`);
26
+ console.error(`🔑 Mode: ${options.stateless ? "stateless" : "stateful"}${options.bearerToken ? " (bearer auth)" : ""}`);
27
+ console.error(`📦 Domains: ${REGISTERED_DOMAINS.join(", ")}`);
28
+ const shutdown = async (signal) => {
29
+ console.error(`\n🛑 Received ${signal}, shutting down...`);
30
+ await handle.close();
31
+ process.exit(0);
32
+ };
33
+ process.on("SIGINT", () => void shutdown("SIGINT"));
34
+ process.on("SIGTERM", () => void shutdown("SIGTERM"));
35
+ return;
36
+ }
37
+ const server = createMcpServer();
56
38
  const transport = new StdioServerTransport();
57
39
  await server.connect(transport);
58
40
  console.error("🚀 BoondManager MCP Server running (stdio transport)");
59
- console.error("📦 Domains: candidates, resources, contacts, companies, opportunities, actions, timesheets, projects, invoices, orders, deliveries, absences, expenses, products, positionings, payments, advantages, application, contracts, purchases, provider-invoices, accounts, agencies, business-units, roles, logs, notifications, threads, todolists, flags, calendars, webhooks, validations, poles, reporting, planning-absences");
41
+ console.error(`📦 Domains: ${REGISTERED_DOMAINS.join(", ")}`);
60
42
  }
61
43
  main().catch((error) => {
62
44
  console.error("Fatal error:", error);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,146 @@ export declare const SearchSchema: z.ZodObject<{
4
4
  page: z.ZodDefault<z.ZodNumber>;
5
5
  pageSize: z.ZodDefault<z.ZodNumber>;
6
6
  }, z.core.$strict>;
7
+ export declare const ResourceSearchSchema: z.ZodObject<{
8
+ keywords: z.ZodOptional<z.ZodString>;
9
+ mainManagers: z.ZodOptional<z.ZodArray<z.ZodString>>;
10
+ states: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
11
+ agencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
12
+ poles: z.ZodOptional<z.ZodArray<z.ZodString>>;
13
+ businessUnits: z.ZodOptional<z.ZodArray<z.ZodString>>;
14
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
15
+ tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
16
+ activityAreas: z.ZodOptional<z.ZodArray<z.ZodString>>;
17
+ languages: z.ZodOptional<z.ZodArray<z.ZodString>>;
18
+ typeOf: z.ZodOptional<z.ZodArray<z.ZodString>>;
19
+ saved: z.ZodOptional<z.ZodString>;
20
+ sort: z.ZodOptional<z.ZodString>;
21
+ order: z.ZodOptional<z.ZodEnum<{
22
+ asc: "asc";
23
+ desc: "desc";
24
+ }>>;
25
+ page: z.ZodDefault<z.ZodNumber>;
26
+ pageSize: z.ZodDefault<z.ZodNumber>;
27
+ }, z.core.$strict>;
28
+ export declare const CandidateSearchSchema: z.ZodObject<{
29
+ keywords: z.ZodOptional<z.ZodString>;
30
+ mainManagers: z.ZodOptional<z.ZodArray<z.ZodString>>;
31
+ states: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
32
+ agencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
33
+ poles: z.ZodOptional<z.ZodArray<z.ZodString>>;
34
+ businessUnits: z.ZodOptional<z.ZodArray<z.ZodString>>;
35
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
36
+ tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
37
+ activityAreas: z.ZodOptional<z.ZodArray<z.ZodString>>;
38
+ languages: z.ZodOptional<z.ZodArray<z.ZodString>>;
39
+ qualifications: z.ZodOptional<z.ZodArray<z.ZodString>>;
40
+ mobilityAreas: z.ZodOptional<z.ZodArray<z.ZodString>>;
41
+ typeOf: z.ZodOptional<z.ZodArray<z.ZodString>>;
42
+ origins: z.ZodOptional<z.ZodArray<z.ZodString>>;
43
+ saved: z.ZodOptional<z.ZodString>;
44
+ sort: z.ZodOptional<z.ZodString>;
45
+ order: z.ZodOptional<z.ZodEnum<{
46
+ asc: "asc";
47
+ desc: "desc";
48
+ }>>;
49
+ page: z.ZodDefault<z.ZodNumber>;
50
+ pageSize: z.ZodDefault<z.ZodNumber>;
51
+ }, z.core.$strict>;
52
+ export declare const ContactSearchSchema: z.ZodObject<{
53
+ keywords: z.ZodOptional<z.ZodString>;
54
+ mainManagers: z.ZodOptional<z.ZodArray<z.ZodString>>;
55
+ states: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
56
+ agencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
57
+ poles: z.ZodOptional<z.ZodArray<z.ZodString>>;
58
+ businessUnits: z.ZodOptional<z.ZodArray<z.ZodString>>;
59
+ company: z.ZodOptional<z.ZodString>;
60
+ typeOf: z.ZodOptional<z.ZodArray<z.ZodString>>;
61
+ origins: z.ZodOptional<z.ZodArray<z.ZodString>>;
62
+ activityAreas: z.ZodOptional<z.ZodArray<z.ZodString>>;
63
+ saved: z.ZodOptional<z.ZodString>;
64
+ sort: z.ZodOptional<z.ZodString>;
65
+ order: z.ZodOptional<z.ZodEnum<{
66
+ asc: "asc";
67
+ desc: "desc";
68
+ }>>;
69
+ page: z.ZodDefault<z.ZodNumber>;
70
+ pageSize: z.ZodDefault<z.ZodNumber>;
71
+ }, z.core.$strict>;
72
+ export declare const CompanySearchSchema: z.ZodObject<{
73
+ keywords: z.ZodOptional<z.ZodString>;
74
+ mainManagers: z.ZodOptional<z.ZodArray<z.ZodString>>;
75
+ states: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
76
+ agencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
77
+ poles: z.ZodOptional<z.ZodArray<z.ZodString>>;
78
+ businessUnits: z.ZodOptional<z.ZodArray<z.ZodString>>;
79
+ typeOf: z.ZodOptional<z.ZodArray<z.ZodString>>;
80
+ activityAreas: z.ZodOptional<z.ZodArray<z.ZodString>>;
81
+ origins: z.ZodOptional<z.ZodArray<z.ZodString>>;
82
+ saved: z.ZodOptional<z.ZodString>;
83
+ sort: z.ZodOptional<z.ZodString>;
84
+ order: z.ZodOptional<z.ZodEnum<{
85
+ asc: "asc";
86
+ desc: "desc";
87
+ }>>;
88
+ page: z.ZodDefault<z.ZodNumber>;
89
+ pageSize: z.ZodDefault<z.ZodNumber>;
90
+ }, z.core.$strict>;
91
+ export declare const OpportunitySearchSchema: z.ZodObject<{
92
+ keywords: z.ZodOptional<z.ZodString>;
93
+ mainManagers: z.ZodOptional<z.ZodArray<z.ZodString>>;
94
+ states: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
95
+ agencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
96
+ poles: z.ZodOptional<z.ZodArray<z.ZodString>>;
97
+ businessUnits: z.ZodOptional<z.ZodArray<z.ZodString>>;
98
+ company: z.ZodOptional<z.ZodString>;
99
+ contact: z.ZodOptional<z.ZodString>;
100
+ activityAreas: z.ZodOptional<z.ZodArray<z.ZodString>>;
101
+ origins: z.ZodOptional<z.ZodArray<z.ZodString>>;
102
+ period: z.ZodOptional<z.ZodEnum<{
103
+ creation: "creation";
104
+ update: "update";
105
+ startDate: "startDate";
106
+ endDate: "endDate";
107
+ }>>;
108
+ startDate: z.ZodOptional<z.ZodString>;
109
+ endDate: z.ZodOptional<z.ZodString>;
110
+ saved: z.ZodOptional<z.ZodString>;
111
+ sort: z.ZodOptional<z.ZodString>;
112
+ order: z.ZodOptional<z.ZodEnum<{
113
+ asc: "asc";
114
+ desc: "desc";
115
+ }>>;
116
+ page: z.ZodDefault<z.ZodNumber>;
117
+ pageSize: z.ZodDefault<z.ZodNumber>;
118
+ }, z.core.$strict>;
119
+ export declare const ProjectSearchSchema: z.ZodObject<{
120
+ keywords: z.ZodOptional<z.ZodString>;
121
+ mainManagers: z.ZodOptional<z.ZodArray<z.ZodString>>;
122
+ states: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
123
+ agencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
124
+ poles: z.ZodOptional<z.ZodArray<z.ZodString>>;
125
+ businessUnits: z.ZodOptional<z.ZodArray<z.ZodString>>;
126
+ company: z.ZodOptional<z.ZodString>;
127
+ contact: z.ZodOptional<z.ZodString>;
128
+ typeOf: z.ZodOptional<z.ZodArray<z.ZodString>>;
129
+ activityAreas: z.ZodOptional<z.ZodArray<z.ZodString>>;
130
+ period: z.ZodOptional<z.ZodEnum<{
131
+ creation: "creation";
132
+ update: "update";
133
+ startDate: "startDate";
134
+ endDate: "endDate";
135
+ }>>;
136
+ startDate: z.ZodOptional<z.ZodString>;
137
+ endDate: z.ZodOptional<z.ZodString>;
138
+ saved: z.ZodOptional<z.ZodString>;
139
+ sort: z.ZodOptional<z.ZodString>;
140
+ order: z.ZodOptional<z.ZodEnum<{
141
+ asc: "asc";
142
+ desc: "desc";
143
+ }>>;
144
+ page: z.ZodDefault<z.ZodNumber>;
145
+ pageSize: z.ZodDefault<z.ZodNumber>;
146
+ }, z.core.$strict>;
7
147
  export declare const IdSchema: z.ZodObject<{
8
148
  id: z.ZodString;
9
149
  }, z.core.$strict>;
@@ -339,6 +479,12 @@ export declare const DictionaryGetSchema: z.ZodObject<{
339
479
  dictionaryType: z.ZodString;
340
480
  }, z.core.$strict>;
341
481
  export type SearchInput = z.infer<typeof SearchSchema>;
482
+ export type ResourceSearchInput = z.infer<typeof ResourceSearchSchema>;
483
+ export type CandidateSearchInput = z.infer<typeof CandidateSearchSchema>;
484
+ export type ContactSearchInput = z.infer<typeof ContactSearchSchema>;
485
+ export type CompanySearchInput = z.infer<typeof CompanySearchSchema>;
486
+ export type OpportunitySearchInput = z.infer<typeof OpportunitySearchSchema>;
487
+ export type ProjectSearchInput = z.infer<typeof ProjectSearchSchema>;
342
488
  export type IdInput = z.infer<typeof IdSchema>;
343
489
  export type IdTabInput = z.infer<typeof IdTabSchema>;
344
490
  export type ResourceTimesheetInput = z.infer<typeof ResourceTimesheetSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,137 @@ export const SearchSchema = z.object({
7
7
  pageSize: z.number().int().min(1).max(MAX_PAGE_SIZE).default(DEFAULT_PAGE_SIZE)
8
8
  .describe(`Nombre de résultats par page (max: ${MAX_PAGE_SIZE}, défaut: ${DEFAULT_PAGE_SIZE})`),
9
9
  }).strict();
10
+ // ---- Reusable filter field helpers ----
11
+ // Keep descriptions short here; the tool description guides the LLM on usage.
12
+ const pageField = z.number().int().min(1).default(1).describe("Numéro de page (défaut: 1)");
13
+ const pageSizeField = z.number().int().min(1).max(MAX_PAGE_SIZE).default(DEFAULT_PAGE_SIZE)
14
+ .describe(`Nombre de résultats par page (max: ${MAX_PAGE_SIZE}, défaut: ${DEFAULT_PAGE_SIZE})`);
15
+ const sortField = z.string().optional().describe("Champ de tri (ex: lastName, createdAt)");
16
+ const orderField = z.enum(["asc", "desc"]).optional().describe("Ordre de tri : 'asc' ou 'desc'");
17
+ const idArray = (doc) => z.array(z.string()).optional().describe(doc);
18
+ const intArray = (doc) => z.array(z.number().int()).optional().describe(doc);
19
+ const strArray = (doc) => z.array(z.string()).optional().describe(doc);
20
+ // ---- Resource search schema ----
21
+ // Filtres les plus utiles de /resources. Inclut mainManagers (clé pour hiérarchie N-1/N-2).
22
+ export const ResourceSearchSchema = z.object({
23
+ keywords: z.string().optional().describe("Mots-clés (nom, prénom, email, compétences libres)"),
24
+ mainManagers: idArray("ID(s) du/des managers principaux. Les ressources retournées ont ce(s) manager(s) comme N+1. CLÉ pour les requêtes hiérarchiques (mes N-1, N-2...)."),
25
+ states: intArray("États de ressource à inclure (voir dictionnaire 'states/resources')"),
26
+ agencies: idArray("IDs d'agences"),
27
+ poles: idArray("IDs de pôles"),
28
+ businessUnits: idArray("IDs de business units"),
29
+ skills: strArray("Compétences techniques (ex: ['Java', 'React'])"),
30
+ tools: strArray("Outils / technologies"),
31
+ activityAreas: strArray("Secteurs d'activité"),
32
+ languages: strArray("Langues"),
33
+ typeOf: strArray("Types de ressource (interne, sous-traitant...)"),
34
+ saved: z.string().optional().describe("ID d'une recherche enregistrée (remplace les autres filtres)"),
35
+ sort: sortField,
36
+ order: orderField,
37
+ page: pageField,
38
+ pageSize: pageSizeField,
39
+ }).strict();
40
+ // ---- Candidate search schema ----
41
+ export const CandidateSearchSchema = z.object({
42
+ keywords: z.string().optional().describe("Mots-clés (nom, prénom, email, compétences libres)"),
43
+ mainManagers: idArray("ID(s) du/des managers principaux (responsables des candidats)"),
44
+ states: intArray("États de candidat (voir dictionnaire 'states/candidates')"),
45
+ agencies: idArray("IDs d'agences"),
46
+ poles: idArray("IDs de pôles"),
47
+ businessUnits: idArray("IDs de business units"),
48
+ skills: strArray("Compétences techniques"),
49
+ tools: strArray("Outils / technologies"),
50
+ activityAreas: strArray("Secteurs d'activité"),
51
+ languages: strArray("Langues"),
52
+ qualifications: strArray("Qualifications / diplômes"),
53
+ mobilityAreas: strArray("Zones de mobilité"),
54
+ typeOf: strArray("Types de candidat"),
55
+ origins: idArray("IDs d'origines (source de recrutement)"),
56
+ saved: z.string().optional().describe("ID d'une recherche enregistrée"),
57
+ sort: sortField,
58
+ order: orderField,
59
+ page: pageField,
60
+ pageSize: pageSizeField,
61
+ }).strict();
62
+ // ---- Contact search schema ----
63
+ export const ContactSearchSchema = z.object({
64
+ keywords: z.string().optional().describe("Mots-clés (nom, email, société...)"),
65
+ mainManagers: idArray("ID(s) du/des managers principaux (responsables commerciaux des contacts)"),
66
+ states: intArray("États de contact"),
67
+ agencies: idArray("IDs d'agences"),
68
+ poles: idArray("IDs de pôles"),
69
+ businessUnits: idArray("IDs de business units"),
70
+ company: z.string().optional().describe("ID d'une société : filtre les contacts rattachés à cette société"),
71
+ typeOf: strArray("Types de contact"),
72
+ origins: idArray("IDs d'origines"),
73
+ activityAreas: strArray("Secteurs d'activité"),
74
+ saved: z.string().optional().describe("ID d'une recherche enregistrée"),
75
+ sort: sortField,
76
+ order: orderField,
77
+ page: pageField,
78
+ pageSize: pageSizeField,
79
+ }).strict();
80
+ // ---- Company search schema ----
81
+ export const CompanySearchSchema = z.object({
82
+ keywords: z.string().optional().describe("Mots-clés (nom, SIRET, email...)"),
83
+ mainManagers: idArray("ID(s) du/des managers principaux (responsables commerciaux)"),
84
+ states: intArray("États de société"),
85
+ agencies: idArray("IDs d'agences"),
86
+ poles: idArray("IDs de pôles"),
87
+ businessUnits: idArray("IDs de business units"),
88
+ typeOf: strArray("Types de société (client, prospect, fournisseur...)"),
89
+ activityAreas: strArray("Secteurs d'activité"),
90
+ origins: idArray("IDs d'origines"),
91
+ saved: z.string().optional().describe("ID d'une recherche enregistrée"),
92
+ sort: sortField,
93
+ order: orderField,
94
+ page: pageField,
95
+ pageSize: pageSizeField,
96
+ }).strict();
97
+ // ---- Opportunity search schema ----
98
+ export const OpportunitySearchSchema = z.object({
99
+ keywords: z.string().optional().describe("Mots-clés (titre, société, contact...)"),
100
+ mainManagers: idArray("ID(s) du/des managers principaux (commerciaux en charge)"),
101
+ states: intArray("États d'opportunité (voir dictionnaire 'states/opportunities')"),
102
+ agencies: idArray("IDs d'agences"),
103
+ poles: idArray("IDs de pôles"),
104
+ businessUnits: idArray("IDs de business units"),
105
+ company: z.string().optional().describe("ID d'une société cliente"),
106
+ contact: z.string().optional().describe("ID d'un contact"),
107
+ activityAreas: strArray("Secteurs d'activité"),
108
+ origins: idArray("IDs d'origines"),
109
+ period: z.enum(["creation", "update", "startDate", "endDate"]).optional()
110
+ .describe("Champ date sur lequel appliquer startDate/endDate"),
111
+ startDate: z.string().optional().describe("Début de période (YYYY-MM-DD), à utiliser avec `period`"),
112
+ endDate: z.string().optional().describe("Fin de période (YYYY-MM-DD), à utiliser avec `period`"),
113
+ saved: z.string().optional().describe("ID d'une recherche enregistrée"),
114
+ sort: sortField,
115
+ order: orderField,
116
+ page: pageField,
117
+ pageSize: pageSizeField,
118
+ }).strict();
119
+ // ---- Project search schema ----
120
+ export const ProjectSearchSchema = z.object({
121
+ keywords: z.string().optional().describe("Mots-clés (nom du projet, société, contact...)"),
122
+ mainManagers: idArray("ID(s) du/des managers principaux (responsables du projet)"),
123
+ states: intArray("États de projet (voir dictionnaire 'states/projects')"),
124
+ agencies: idArray("IDs d'agences"),
125
+ poles: idArray("IDs de pôles"),
126
+ businessUnits: idArray("IDs de business units"),
127
+ company: z.string().optional().describe("ID d'une société cliente"),
128
+ contact: z.string().optional().describe("ID d'un contact"),
129
+ typeOf: strArray("Types de projet (régie, forfait, produit...)"),
130
+ activityAreas: strArray("Secteurs d'activité"),
131
+ period: z.enum(["creation", "update", "startDate", "endDate"]).optional()
132
+ .describe("Champ date sur lequel appliquer startDate/endDate"),
133
+ startDate: z.string().optional().describe("Début de période (YYYY-MM-DD)"),
134
+ endDate: z.string().optional().describe("Fin de période (YYYY-MM-DD)"),
135
+ saved: z.string().optional().describe("ID d'une recherche enregistrée"),
136
+ sort: sortField,
137
+ order: orderField,
138
+ page: pageField,
139
+ pageSize: pageSizeField,
140
+ }).strict();
10
141
  // ID param schema
11
142
  export const IdSchema = z.object({
12
143
  id: z.string().min(1).describe("Identifiant unique de l'entité BoondManager"),