boondmanager-mcp-server 2.1.1 → 2.3.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 CHANGED
@@ -423,6 +423,27 @@ Pour eviter qu'une boucle d'outils emballee n'inonde l'API (et n'enchaine les `4
423
423
  | `BOOND_HTTP_RATE_LIMIT_RPS` | `10` | Debit soutenu (requetes/seconde). `0` desactive completement. |
424
424
  | `BOOND_HTTP_RATE_LIMIT_BURST` | `20` | Capacite du bucket = taille maximale de rafale immediate. |
425
425
 
426
+ ### Restriction d'accès (domaines / lecture seule)
427
+
428
+ Vous pouvez restreindre **ce que l'IA voit et peut faire**, entièrement par
429
+ variables d'environnement : exposer seulement certains domaines (ex. la
430
+ comptabilité), et/ou bloquer les écritures et suppressions.
431
+
432
+ | Variable | Effet |
433
+ |----------|-------|
434
+ | `BOOND_MCP_DOMAINS` | Liste blanche de domaines (CSV). Absente = tous. Ex. `invoices,payments,application` |
435
+ | `BOOND_MCP_EXCLUDE_DOMAINS` | Liste noire de domaines (CSV), appliquée après la liste blanche. Ex. `candidates,resources` |
436
+ | `BOOND_MCP_OPERATIONS` | Opérations autorisées (CSV) parmi `read,create,update,delete`. Absente = toutes. |
437
+ | `BOOND_MCP_READ_ONLY` | Raccourci : `true` équivaut à `BOOND_MCP_OPERATIONS=read` (tout en lecture seule). |
438
+
439
+ > ⚠️ **Ce n'est pas une frontière de sécurité dure.** Le filtre masque des
440
+ > outils à l'IA mais n'altère pas les droits du compte BoondManager utilisé.
441
+ > Pour un vrai cloisonnement, configurez d'abord les droits du compte/rôle
442
+ > BoondManager (lecture seule, périmètre comptable…) ; ce filtre vient en
443
+ > complément (économie de tokens, garde-fou anti-action accidentelle).
444
+
445
+ Guide complet, règles de résolution et exemples : [docs/access-control.md](docs/access-control.md).
446
+
426
447
  ## Transports
427
448
 
428
449
  Le serveur supporte deux transports MCP, selectionnables via la variable d'environnement `MCP_TRANSPORT`.
@@ -0,0 +1,68 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /**
3
+ * Access policy: operator-side restriction of what the MCP server exposes,
4
+ * driven entirely by environment variables. Two orthogonal axes:
5
+ *
6
+ * 1. Domain filtering (allow-list + deny-list): restrict the server to a
7
+ * subset of business domains (e.g. accounting only).
8
+ * 2. Operation filtering: restrict which kinds of action are exposed
9
+ * (`read` / `create` / `update` / `delete`), e.g. read-only mode.
10
+ *
11
+ * ⚠️ This is NOT a hard security boundary. The server keeps using the
12
+ * configured BoondManager credentials; if those credentials may write, this
13
+ * filter only HIDES the tools from the model; it does not revoke anything
14
+ * API-side. The real boundary is the BoondManager account/role rights. The
15
+ * two are complementary: Boond rights = hard wall; this filter = ergonomics,
16
+ * token economy, and a guard-rail against accidental actions.
17
+ *
18
+ * Env vars (all optional; absent = no restriction = current behaviour):
19
+ * - `BOOND_MCP_DOMAINS` CSV allow-list of domains. Absent = all.
20
+ * - `BOOND_MCP_EXCLUDE_DOMAINS` CSV deny-list. Applied AFTER the allow-list.
21
+ * - `BOOND_MCP_OPERATIONS` CSV of `read,create,update,delete`. Absent = all.
22
+ * - `BOOND_MCP_READ_ONLY` Boolean shortcut, equivalent to OPERATIONS=read.
23
+ */
24
+ export type Operation = "read" | "create" | "update" | "delete";
25
+ export declare const ALL_OPERATIONS: readonly Operation[];
26
+ /** Subset of the MCP tool annotations we use to classify a tool's operation. */
27
+ export interface ToolAnnotations {
28
+ readOnlyHint?: boolean;
29
+ destructiveHint?: boolean;
30
+ idempotentHint?: boolean;
31
+ openWorldHint?: boolean;
32
+ }
33
+ export interface AccessPolicy {
34
+ /** `null` = all domains allowed (no allow-list). Otherwise the set of allowed canonical (dash) domain names. */
35
+ allowedDomains: Set<string> | null;
36
+ /** Canonical (dash) domain names explicitly denied. Applied after the allow-list. */
37
+ excludedDomains: Set<string>;
38
+ /** Operations the server is allowed to expose. */
39
+ operations: Set<Operation>;
40
+ }
41
+ /**
42
+ * Build the effective access policy from the environment. Resilient: unknown
43
+ * domains/operations are warned-and-ignored, never fatal.
44
+ */
45
+ export declare function resolveAccessPolicy(env?: NodeJS.ProcessEnv): AccessPolicy;
46
+ /** Is a business domain allowed by the policy? (deny-list wins over allow-list.) */
47
+ export declare function isDomainAllowed(policy: AccessPolicy, domain: string): boolean;
48
+ /**
49
+ * Classify a tool into a single operation from its MCP annotations.
50
+ * Order matters: read-only first, then destructive (delete), then idempotent
51
+ * writes (update), else non-idempotent writes (create). A tool with no
52
+ * `readOnlyHint:true` is treated as a write (the safe default in read-only mode).
53
+ */
54
+ export declare function operationOf(annotations: ToolAnnotations | undefined): Operation;
55
+ /** Is a tool (by its annotations) allowed under the policy's operation set? */
56
+ export declare function isOperationAllowed(policy: AccessPolicy, annotations: ToolAnnotations | undefined): boolean;
57
+ /**
58
+ * Wrap an McpServer so that `registerTool` silently drops tools whose operation
59
+ * is not allowed by the policy. Implemented as a Proxy (no mutation of the
60
+ * instance, typing preserved). Methods are bound to the real target so the
61
+ * SDK's private fields keep working. Other methods (`registerPrompt`,
62
+ * `registerResource`, …) pass straight through.
63
+ *
64
+ * Fast path: when all operations are allowed, the original server is returned
65
+ * untouched (zero overhead in the default, unrestricted case).
66
+ */
67
+ export declare function withPolicy(server: McpServer, policy: AccessPolicy): McpServer;
68
+ //# sourceMappingURL=access-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-policy.d.ts","sourceRoot":"","sources":["../../src/config/access-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhE,eAAO,MAAM,cAAc,EAAE,SAAS,SAAS,EAA2C,CAAC;AAE3F,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,gHAAgH;IAChH,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACnC,qFAAqF;IACrF,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,kDAAkD;IAClD,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;CAC5B;AA2ED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,YAAY,CAiDtF;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAK7E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,eAAe,GAAG,SAAS,GAAG,SAAS,CAK/E;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,GAAG,SAAS,GAAG,OAAO,CAE1G;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,SAAS,CAwB7E"}
@@ -0,0 +1,169 @@
1
+ import { REGISTERED_DOMAINS } from "../constants.js";
2
+ import { logger } from "../services/logger.js";
3
+ export const ALL_OPERATIONS = ["read", "create", "update", "delete"];
4
+ // --- Env parsing helpers (mirroring the patterns already used across the
5
+ // codebase: see transports/http.ts, services/oauth.ts, services/update-checker.ts) ---
6
+ function readEnv(env, key) {
7
+ const raw = env[key];
8
+ if (raw === undefined)
9
+ return undefined;
10
+ // Ignore unresolved placeholders like "${SOMETHING}" (same guard as http.ts).
11
+ if (raw.startsWith("${"))
12
+ return undefined;
13
+ return raw;
14
+ }
15
+ /** Split a CSV / whitespace-separated env value into trimmed, non-empty tokens. */
16
+ function parseList(raw) {
17
+ if (!raw)
18
+ return [];
19
+ return raw
20
+ .split(/[\s,]+/)
21
+ .map((s) => s.trim())
22
+ .filter((s) => s.length > 0);
23
+ }
24
+ function parseBoolean(raw) {
25
+ const v = (raw ?? "").toLowerCase().trim();
26
+ return v === "1" || v === "true" || v === "yes";
27
+ }
28
+ /** Normalise a user-supplied domain to the canonical (dash, lowercase) form. */
29
+ function normalizeDomain(domain) {
30
+ return domain.toLowerCase().trim().replace(/_/g, "-");
31
+ }
32
+ function normalizeAndValidateDomains(items, known, varName, log) {
33
+ const out = new Set();
34
+ for (const raw of items) {
35
+ const norm = normalizeDomain(raw);
36
+ if (known.has(norm)) {
37
+ out.add(norm);
38
+ }
39
+ else {
40
+ log.warn({ value: raw, normalized: norm, var: varName }, `${varName}: unknown domain "${raw}" ignored (not one of the ${known.size} known domains)`);
41
+ }
42
+ }
43
+ return out;
44
+ }
45
+ function validateOperations(items, log) {
46
+ const out = new Set();
47
+ for (const raw of items) {
48
+ const op = raw.toLowerCase();
49
+ if (ALL_OPERATIONS.includes(op)) {
50
+ out.add(op);
51
+ }
52
+ else {
53
+ log.warn({ value: raw }, `BOOND_MCP_OPERATIONS: unknown operation "${raw}" ignored (expected read/create/update/delete)`);
54
+ }
55
+ }
56
+ // If the operator provided only invalid values, fall back to "all" rather
57
+ // than silently exposing zero tools (that would look like a broken server).
58
+ if (out.size === 0) {
59
+ log.warn("BOOND_MCP_OPERATIONS contained no valid operation; defaulting to all operations");
60
+ return new Set(ALL_OPERATIONS);
61
+ }
62
+ return out;
63
+ }
64
+ /**
65
+ * Build the effective access policy from the environment. Resilient: unknown
66
+ * domains/operations are warned-and-ignored, never fatal.
67
+ */
68
+ export function resolveAccessPolicy(env = process.env) {
69
+ const log = logger.child({ component: "access-policy" });
70
+ const known = new Set(REGISTERED_DOMAINS);
71
+ // --- Domains ---
72
+ const allowItems = parseList(readEnv(env, "BOOND_MCP_DOMAINS"));
73
+ const excludeItems = parseList(readEnv(env, "BOOND_MCP_EXCLUDE_DOMAINS"));
74
+ const allowedDomains = allowItems.length > 0 ? normalizeAndValidateDomains(allowItems, known, "BOOND_MCP_DOMAINS", log) : null;
75
+ const excludedDomains = normalizeAndValidateDomains(excludeItems, known, "BOOND_MCP_EXCLUDE_DOMAINS", log);
76
+ // --- Operations ---
77
+ const opItems = parseList(readEnv(env, "BOOND_MCP_OPERATIONS"));
78
+ const readOnlyShortcut = parseBoolean(readEnv(env, "BOOND_MCP_READ_ONLY"));
79
+ let operations;
80
+ if (opItems.length > 0) {
81
+ operations = validateOperations(opItems, log);
82
+ if (readOnlyShortcut) {
83
+ log.warn("Both BOOND_MCP_OPERATIONS and BOOND_MCP_READ_ONLY are set; BOOND_MCP_OPERATIONS takes precedence");
84
+ }
85
+ }
86
+ else if (readOnlyShortcut) {
87
+ operations = new Set(["read"]);
88
+ }
89
+ else {
90
+ operations = new Set(ALL_OPERATIONS);
91
+ }
92
+ const policy = { allowedDomains, excludedDomains, operations };
93
+ // --- Surface the effective policy + a guard-rail warning for `application` ---
94
+ const restricted = allowedDomains !== null || excludedDomains.size > 0 || operations.size !== ALL_OPERATIONS.length;
95
+ if (restricted) {
96
+ if (!isDomainAllowed(policy, "application")) {
97
+ log.warn("Domain `application` is filtered out; dictionary lookups (state/type labels) and current-user resolution will be unavailable, degrading many tools/resources");
98
+ }
99
+ log.info({
100
+ allowedDomains: allowedDomains ? [...allowedDomains] : "all",
101
+ excludedDomains: [...excludedDomains],
102
+ operations: [...operations],
103
+ }, "Access policy active: the exposed tool/prompt surface is restricted");
104
+ }
105
+ return policy;
106
+ }
107
+ /** Is a business domain allowed by the policy? (deny-list wins over allow-list.) */
108
+ export function isDomainAllowed(policy, domain) {
109
+ const norm = normalizeDomain(domain);
110
+ if (policy.excludedDomains.has(norm))
111
+ return false;
112
+ if (policy.allowedDomains !== null && !policy.allowedDomains.has(norm))
113
+ return false;
114
+ return true;
115
+ }
116
+ /**
117
+ * Classify a tool into a single operation from its MCP annotations.
118
+ * Order matters: read-only first, then destructive (delete), then idempotent
119
+ * writes (update), else non-idempotent writes (create). A tool with no
120
+ * `readOnlyHint:true` is treated as a write (the safe default in read-only mode).
121
+ */
122
+ export function operationOf(annotations) {
123
+ if (annotations?.readOnlyHint === true)
124
+ return "read";
125
+ if (annotations?.destructiveHint === true)
126
+ return "delete";
127
+ if (annotations?.idempotentHint === true)
128
+ return "update";
129
+ return "create";
130
+ }
131
+ /** Is a tool (by its annotations) allowed under the policy's operation set? */
132
+ export function isOperationAllowed(policy, annotations) {
133
+ return policy.operations.has(operationOf(annotations));
134
+ }
135
+ /**
136
+ * Wrap an McpServer so that `registerTool` silently drops tools whose operation
137
+ * is not allowed by the policy. Implemented as a Proxy (no mutation of the
138
+ * instance, typing preserved). Methods are bound to the real target so the
139
+ * SDK's private fields keep working. Other methods (`registerPrompt`,
140
+ * `registerResource`, …) pass straight through.
141
+ *
142
+ * Fast path: when all operations are allowed, the original server is returned
143
+ * untouched (zero overhead in the default, unrestricted case).
144
+ */
145
+ export function withPolicy(server, policy) {
146
+ if (policy.operations.size === ALL_OPERATIONS.length)
147
+ return server;
148
+ return new Proxy(server, {
149
+ get(target, prop) {
150
+ // receiver = target so any getters/private fields resolve against the real instance.
151
+ const value = Reflect.get(target, prop, target);
152
+ if (typeof value !== "function")
153
+ return value;
154
+ if (prop === "registerTool") {
155
+ return (...args) => {
156
+ const config = args[1];
157
+ if (!isOperationAllowed(policy, config?.annotations)) {
158
+ return undefined; // skip registration; callers ignore the return value
159
+ }
160
+ return value.apply(target, args);
161
+ };
162
+ }
163
+ // Bind every other method to the real target (avoids private-field errors
164
+ // that occur when an unbound method runs with `this` = Proxy).
165
+ return value.bind(target);
166
+ },
167
+ });
168
+ }
169
+ //# sourceMappingURL=access-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-policy.js","sourceRoot":"","sources":["../../src/config/access-policy.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,8 @@ export declare const API_PATHS: {
54
54
  readonly reportingSynthesis: "/reporting-synthesis";
55
55
  readonly reportingProductionPlans: "/reporting-production-plans";
56
56
  };
57
+ export declare const REGISTERED_DOMAINS: readonly ["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", "workflows"];
58
+ export type DomainName = (typeof REGISTERED_DOMAINS)[number];
57
59
  export declare const ENTITY_TABS: {
58
60
  readonly candidates: readonly ["information", "technical-data", "administrative", "actions", "positionings"];
59
61
  readonly resources: readonly ["information", "technical-data", "administrative", "advantages", "actions", "positionings", "projects", "times-reports", "expenses-reports", "absences-reports"];
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,gBAAgB,oCAAoC,CAAC;AAClE,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,aAAa,MAAM,CAAC;AAKjC,eAAO,MAAM,eAAe,MAAM,CAAC;AAKnC,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAK9C,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,yBAAyB,OAAQ,CAAC;AAM/C,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAGhD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CZ,CAAC;AAGX,eAAO,MAAM,WAAW;;;;;;;;;CASd,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,gBAAgB,oCAAoC,CAAC;AAClE,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,aAAa,MAAM,CAAC;AAKjC,eAAO,MAAM,eAAe,MAAM,CAAC;AAKnC,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAK9C,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,yBAAyB,OAAQ,CAAC;AAM/C,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAGhD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CZ,CAAC;AAOX,eAAO,MAAM,kBAAkB,kfAsCrB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAG7D,eAAO,MAAM,WAAW;;;;;;;;;CAsCd,CAAC"}
package/dist/constants.js CHANGED
@@ -69,14 +69,87 @@ export const API_PATHS = {
69
69
  reportingSynthesis: "/reporting-synthesis",
70
70
  reportingProductionPlans: "/reporting-production-plans",
71
71
  };
72
+ // Canonical list of tool domains exposed by the server, in registration order.
73
+ // Domain names use dashes; the matching tool-name prefix replaces them with
74
+ // underscores (e.g. `provider-invoices` -> `boond_provider_invoices_*`).
75
+ // Lives here (not in server.ts) so the access-policy layer can validate
76
+ // configured domains without importing server.ts (avoids an import cycle).
77
+ export const REGISTERED_DOMAINS = [
78
+ "candidates",
79
+ "resources",
80
+ "contacts",
81
+ "companies",
82
+ "opportunities",
83
+ "actions",
84
+ "timesheets",
85
+ "projects",
86
+ "invoices",
87
+ "orders",
88
+ "deliveries",
89
+ "absences",
90
+ "expenses",
91
+ "products",
92
+ "positionings",
93
+ "payments",
94
+ "advantages",
95
+ "application",
96
+ "contracts",
97
+ "purchases",
98
+ "provider-invoices",
99
+ "accounts",
100
+ "agencies",
101
+ "business-units",
102
+ "roles",
103
+ "logs",
104
+ "notifications",
105
+ "threads",
106
+ "todolists",
107
+ "flags",
108
+ "calendars",
109
+ "webhooks",
110
+ "validations",
111
+ "poles",
112
+ "reporting",
113
+ "planning-absences",
114
+ "workflows",
115
+ ];
72
116
  // Tab names available on entities (matching actual API endpoints)
73
117
  export const ENTITY_TABS = {
74
118
  candidates: ["information", "technical-data", "administrative", "actions", "positionings"],
75
- resources: ["information", "technical-data", "administrative", "advantages", "actions", "positionings", "projects", "times-reports", "expenses-reports", "absences-reports"],
119
+ resources: [
120
+ "information",
121
+ "technical-data",
122
+ "administrative",
123
+ "advantages",
124
+ "actions",
125
+ "positionings",
126
+ "projects",
127
+ "times-reports",
128
+ "expenses-reports",
129
+ "absences-reports",
130
+ ],
76
131
  contacts: ["information", "actions", "opportunities", "projects", "orders", "invoices"],
77
- companies: ["information", "contacts", "actions", "opportunities", "projects", "orders", "invoices", "purchases", "provider-invoices"],
132
+ companies: [
133
+ "information",
134
+ "contacts",
135
+ "actions",
136
+ "opportunities",
137
+ "projects",
138
+ "orders",
139
+ "invoices",
140
+ "purchases",
141
+ "provider-invoices",
142
+ ],
78
143
  opportunities: ["information", "actions", "positionings", "projects", "simulation"],
79
- projects: ["information", "actions", "simulation", "deliveries-groupments", "orders", "purchases", "productivity"],
144
+ projects: [
145
+ "information",
146
+ "actions",
147
+ "simulation",
148
+ "deliveries-groupments",
149
+ "orders",
150
+ "purchases",
151
+ "productivity",
152
+ ],
80
153
  invoices: ["information", "actions", "billable-items"],
81
154
  orders: ["information", "actions", "invoices"],
82
155
  };
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,26 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { z } from "zod";
3
+ import type { DomainName } from "../constants.js";
4
+ import { type AccessPolicy } from "../config/access-policy.js";
3
5
  export interface PromptDefinition {
4
6
  name: string;
5
7
  title: string;
6
8
  description: string;
7
9
  argsSchema: z.ZodRawShape;
10
+ /**
11
+ * Business domains this prompt's runbook orchestrates. Used by the access
12
+ * policy: the prompt (and its mirror workflow tool in `tools/workflows.ts`)
13
+ * is cut when ANY of these domains is filtered out, so a surfaced runbook
14
+ * never points the model at tools that aren't registered. Optional
15
+ * name-resolution helpers (e.g. resolving a manager name via
16
+ * `boond_resources_search`) are intentionally NOT listed: if their domain
17
+ * is filtered, the user simply passes a numeric id instead.
18
+ */
19
+ domains: readonly DomainName[];
8
20
  build: (args: Record<string, string | undefined>) => string;
9
21
  }
10
22
  export declare const PROMPTS: PromptDefinition[];
11
- export declare function registerAllPrompts(server: McpServer): void;
23
+ export declare function registerAllPrompts(server: McpServer, policy?: AccessPolicy): void;
12
24
  /** Exposed for tests so we can assert names/coverage without instantiating a server. */
13
25
  export declare const REGISTERED_PROMPTS: {
14
26
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsBxB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC;IAC1B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KAAK,MAAM,CAAC;CAC7D;AA2DD,eAAO,MAAM,OAAO,EAAE,gBAAgB,EAgkBrC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAY1D;AAED,wFAAwF;AACxF,eAAO,MAAM,kBAAkB;;;;;GAK5B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAsBhF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC;IAC1B;;;;;;;;OAQG;IACH,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KAAK,MAAM,CAAC;CAC7D;AA2DD,eAAO,MAAM,OAAO,EAAE,gBAAgB,EA2kBrC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAejF;AAED,wFAAwF;AACxF,eAAO,MAAM,kBAAkB;;;;;GAK5B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ import { isDomainAllowed } from "../config/access-policy.js";
2
3
  /**
3
4
  * Pre-orchestrated MCP prompts for the most common Boond workflows.
4
5
  *
@@ -67,6 +68,7 @@ export const PROMPTS = [
67
68
  .optional()
68
69
  .describe("Période d'analyse libre (ex: 'cette semaine', 'avril 2026'). Défaut: mois en cours."),
69
70
  },
71
+ domains: ["resources", "application"],
70
72
  build: ({ manager_id, periode }) => {
71
73
  const periodeText = periode || "le mois en cours";
72
74
  let preamble = "";
@@ -105,6 +107,7 @@ export const PROMPTS = [
105
107
  ID_OR_NAME_HINT_RESOURCE +
106
108
  " Si absent, scope = équipe de l'utilisateur courant via `perimeterDynamic: ['data']`."),
107
109
  },
110
+ domains: ["opportunities", "application"],
108
111
  build: ({ date_debut, date_fin, manager_id }) => {
109
112
  let preamble = "";
110
113
  let scopeFilter;
@@ -134,6 +137,7 @@ export const PROMPTS = [
134
137
  .optional()
135
138
  .describe("Société ciblée pour la relance. " + ID_OR_NAME_HINT_SOCIETY),
136
139
  },
140
+ domains: ["invoices", "application"],
137
141
  build: ({ society_id }) => {
138
142
  let preamble = "";
139
143
  let filterLine;
@@ -159,6 +163,7 @@ export const PROMPTS = [
159
163
  argsSchema: {
160
164
  opportunity_id: z.string().describe("Opportunité à pourvoir. " + ID_OR_NAME_HINT_OPPORTUNITY),
161
165
  },
166
+ domains: ["candidates", "opportunities", "application"],
162
167
  build: ({ opportunity_id }) => {
163
168
  const r = resolveEntity(opportunity_id ?? "", "opportunity", "<OPPORTUNITY_ID>");
164
169
  const oppLit = r.idForFilter;
@@ -176,6 +181,7 @@ export const PROMPTS = [
176
181
  argsSchema: {
177
182
  resource_id: z.string().describe("Ressource ciblée. " + ID_OR_NAME_HINT_RESOURCE),
178
183
  },
184
+ domains: ["resources"],
179
185
  build: ({ resource_id }) => {
180
186
  const r = resolveEntity(resource_id ?? "", "resource", "<RESOURCE_ID>");
181
187
  const idLit = r.idForFilter;
@@ -206,6 +212,7 @@ export const PROMPTS = [
206
212
  ID_OR_NAME_HINT_RESOURCE +
207
213
  " Si absent, scope = mon équipe via `perimeterDynamic: ['managers']`."),
208
214
  },
215
+ domains: ["resources", "application"],
209
216
  build: ({ start_date, end_date, competences, manager_id }) => {
210
217
  let preamble = "";
211
218
  let scope;
@@ -250,6 +257,7 @@ export const PROMPTS = [
250
257
  ID_OR_NAME_HINT_RESOURCE +
251
258
  " Si absent, scope = mon équipe via `perimeterDynamic: ['managers']`."),
252
259
  },
260
+ domains: ["resources", "application"],
253
261
  build: ({ horizon_jours, manager_id }) => {
254
262
  const horizon = horizon_jours || "60";
255
263
  let preamble = "";
@@ -290,6 +298,7 @@ export const PROMPTS = [
290
298
  .describe("Agence pour cartographier toute une agence (alternatif à `manager_id`). " + ID_OR_NAME_HINT_AGENCY),
291
299
  top_n: z.string().optional().describe("Nombre de compétences à mettre en avant dans le top (défaut: 20)."),
292
300
  },
301
+ domains: ["resources", "opportunities", "application"],
293
302
  build: ({ manager_id, agency_id, top_n }) => {
294
303
  const top = top_n || "20";
295
304
  let preamble = "";
@@ -331,6 +340,7 @@ export const PROMPTS = [
331
340
  ID_OR_NAME_HINT_RESOURCE +
332
341
  " Si absent, scope = mon équipe via `perimeterDynamic: ['managers']`."),
333
342
  },
343
+ domains: ["resources", "application"],
334
344
  build: ({ seuil_mois, manager_id }) => {
335
345
  const seuil = seuil_mois || "12";
336
346
  let preamble = "";
@@ -381,6 +391,7 @@ export const PROMPTS = [
381
391
  ID_OR_NAME_HINT_RESOURCE +
382
392
  " Sinon scope ouvert (toute l'organisation accessible)."),
383
393
  },
394
+ domains: ["resources", "candidates", "application"],
384
395
  build: ({ competences, experience_min, dispo_avant, inclure_candidats, manager_id }) => {
385
396
  const includeCandidates = (inclure_candidats || "oui").toLowerCase() !== "non";
386
397
  let preamble = "";
@@ -421,6 +432,7 @@ export const PROMPTS = [
421
432
  .optional()
422
433
  .describe("Semaine ciblée (ex: 'cette semaine', 'la semaine prochaine'). Défaut: cette semaine."),
423
434
  },
435
+ domains: ["resources", "opportunities", "projects", "application"],
424
436
  build: ({ semaine }) => {
425
437
  const semaineText = semaine || "cette semaine";
426
438
  return [
@@ -443,8 +455,12 @@ export const PROMPTS = [
443
455
  },
444
456
  },
445
457
  ];
446
- export function registerAllPrompts(server) {
458
+ export function registerAllPrompts(server, policy) {
447
459
  for (const p of PROMPTS) {
460
+ // Cut a prompt when any domain it orchestrates is filtered out, so the
461
+ // surfaced runbook never references tools that aren't registered.
462
+ if (policy && !p.domains.every((d) => isDomainAllowed(policy, d)))
463
+ continue;
448
464
  server.registerPrompt(p.name, {
449
465
  title: p.title,
450
466
  description: p.description,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}