boondmanager-mcp-server 2.16.0 → 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.
Files changed (270) hide show
  1. package/README.md +36 -4
  2. package/dist/config/access-policy.d.ts.map +1 -1
  3. package/dist/config/access-policy.js +6 -18
  4. package/dist/config/access-policy.js.map +1 -1
  5. package/dist/config/dictionary-overrides.d.ts.map +1 -1
  6. package/dist/config/dictionary-overrides.js +2 -12
  7. package/dist/config/dictionary-overrides.js.map +1 -1
  8. package/dist/config/env.d.ts +63 -0
  9. package/dist/config/env.d.ts.map +1 -0
  10. package/dist/config/env.js +116 -0
  11. package/dist/config/env.js.map +1 -0
  12. package/dist/config/profiles.d.ts +22 -8
  13. package/dist/config/profiles.d.ts.map +1 -1
  14. package/dist/config/profiles.js +48 -4
  15. package/dist/config/profiles.js.map +1 -1
  16. package/dist/constants.d.ts +13 -2
  17. package/dist/constants.d.ts.map +1 -1
  18. package/dist/constants.js +25 -1
  19. package/dist/constants.js.map +1 -1
  20. package/dist/icons.d.ts.map +1 -1
  21. package/dist/icons.js +6 -1
  22. package/dist/icons.js.map +1 -1
  23. package/dist/index.js +33 -15
  24. package/dist/index.js.map +1 -1
  25. package/dist/instructions.d.ts +1 -1
  26. package/dist/instructions.d.ts.map +1 -1
  27. package/dist/instructions.js +6 -6
  28. package/dist/instructions.js.map +1 -1
  29. package/dist/prompts/index.d.ts +19 -1
  30. package/dist/prompts/index.d.ts.map +1 -1
  31. package/dist/prompts/index.js +495 -25
  32. package/dist/prompts/index.js.map +1 -1
  33. package/dist/prompts/periods.d.ts +45 -0
  34. package/dist/prompts/periods.d.ts.map +1 -0
  35. package/dist/prompts/periods.js +154 -0
  36. package/dist/prompts/periods.js.map +1 -0
  37. package/dist/resources/index.d.ts +14 -0
  38. package/dist/resources/index.d.ts.map +1 -1
  39. package/dist/resources/index.js +285 -0
  40. package/dist/resources/index.js.map +1 -1
  41. package/dist/resources/templates.d.ts +1 -1
  42. package/dist/resources/templates.d.ts.map +1 -1
  43. package/dist/resources/templates.js +2 -0
  44. package/dist/resources/templates.js.map +1 -1
  45. package/dist/schema-dialect.js.map +1 -1
  46. package/dist/schemas/filter-aliases.d.ts +1 -1
  47. package/dist/schemas/filter-aliases.d.ts.map +1 -1
  48. package/dist/schemas/filter-aliases.js +101 -2
  49. package/dist/schemas/filter-aliases.js.map +1 -1
  50. package/dist/schemas/index.d.ts +987 -161
  51. package/dist/schemas/index.d.ts.map +1 -1
  52. package/dist/schemas/index.js +853 -323
  53. package/dist/schemas/index.js.map +1 -1
  54. package/dist/server.d.ts.map +1 -1
  55. package/dist/server.js +10 -3
  56. package/dist/server.js.map +1 -1
  57. package/dist/services/boond-client.d.ts +29 -213
  58. package/dist/services/boond-client.d.ts.map +1 -1
  59. package/dist/services/boond-client.js +29 -1168
  60. package/dist/services/boond-client.js.map +1 -1
  61. package/dist/services/dictionary.d.ts +27 -3
  62. package/dist/services/dictionary.d.ts.map +1 -1
  63. package/dist/services/dictionary.js +60 -23
  64. package/dist/services/dictionary.js.map +1 -1
  65. package/dist/services/document-text.d.ts +32 -0
  66. package/dist/services/document-text.d.ts.map +1 -0
  67. package/dist/services/document-text.js +120 -0
  68. package/dist/services/document-text.js.map +1 -0
  69. package/dist/services/format/detail.d.ts +16 -0
  70. package/dist/services/format/detail.d.ts.map +1 -0
  71. package/dist/services/format/detail.js +36 -0
  72. package/dist/services/format/detail.js.map +1 -0
  73. package/dist/services/format/html.d.ts +19 -0
  74. package/dist/services/format/html.d.ts.map +1 -0
  75. package/dist/services/format/html.js +87 -0
  76. package/dist/services/format/html.js.map +1 -0
  77. package/dist/services/format/list.d.ts +3 -0
  78. package/dist/services/format/list.d.ts.map +1 -0
  79. package/dist/services/format/list.js +44 -0
  80. package/dist/services/format/list.js.map +1 -0
  81. package/dist/services/format/summary.d.ts +16 -0
  82. package/dist/services/format/summary.d.ts.map +1 -0
  83. package/dist/services/format/summary.js +172 -0
  84. package/dist/services/format/summary.js.map +1 -0
  85. package/dist/services/format/tab.d.ts +9 -0
  86. package/dist/services/format/tab.d.ts.map +1 -0
  87. package/dist/services/format/tab.js +32 -0
  88. package/dist/services/format/tab.js.map +1 -0
  89. package/dist/services/http/auth.d.ts +44 -0
  90. package/dist/services/http/auth.d.ts.map +1 -0
  91. package/dist/services/http/auth.js +146 -0
  92. package/dist/services/http/auth.js.map +1 -0
  93. package/dist/services/http/download.d.ts +60 -0
  94. package/dist/services/http/download.d.ts.map +1 -0
  95. package/dist/services/http/download.js +160 -0
  96. package/dist/services/http/download.js.map +1 -0
  97. package/dist/services/http/errors.d.ts +45 -0
  98. package/dist/services/http/errors.d.ts.map +1 -0
  99. package/dist/services/http/errors.js +188 -0
  100. package/dist/services/http/errors.js.map +1 -0
  101. package/dist/services/http/rate-limit.d.ts +40 -0
  102. package/dist/services/http/rate-limit.d.ts.map +1 -0
  103. package/dist/services/http/rate-limit.js +92 -0
  104. package/dist/services/http/rate-limit.js.map +1 -0
  105. package/dist/services/http/retry.d.ts +46 -0
  106. package/dist/services/http/retry.d.ts.map +1 -0
  107. package/dist/services/http/retry.js +101 -0
  108. package/dist/services/http/retry.js.map +1 -0
  109. package/dist/services/http/transport.d.ts +73 -0
  110. package/dist/services/http/transport.d.ts.map +1 -0
  111. package/dist/services/http/transport.js +272 -0
  112. package/dist/services/http/transport.js.map +1 -0
  113. package/dist/services/logger.d.ts +53 -2
  114. package/dist/services/logger.d.ts.map +1 -1
  115. package/dist/services/logger.js +82 -21
  116. package/dist/services/logger.js.map +1 -1
  117. package/dist/services/oauth.d.ts +12 -0
  118. package/dist/services/oauth.d.ts.map +1 -1
  119. package/dist/services/oauth.js +21 -8
  120. package/dist/services/oauth.js.map +1 -1
  121. package/dist/services/rate-limiter.d.ts +9 -2
  122. package/dist/services/rate-limiter.d.ts.map +1 -1
  123. package/dist/services/rate-limiter.js +18 -6
  124. package/dist/services/rate-limiter.js.map +1 -1
  125. package/dist/services/request-context.d.ts +47 -0
  126. package/dist/services/request-context.d.ts.map +1 -0
  127. package/dist/services/request-context.js +112 -0
  128. package/dist/services/request-context.js.map +1 -0
  129. package/dist/services/search.d.ts +26 -0
  130. package/dist/services/search.d.ts.map +1 -0
  131. package/dist/services/search.js +98 -0
  132. package/dist/services/search.js.map +1 -0
  133. package/dist/services/update-checker.d.ts.map +1 -1
  134. package/dist/services/update-checker.js +15 -8
  135. package/dist/services/update-checker.js.map +1 -1
  136. package/dist/tools/absences.d.ts +9 -0
  137. package/dist/tools/absences.d.ts.map +1 -1
  138. package/dist/tools/absences.js +65 -20
  139. package/dist/tools/absences.js.map +1 -1
  140. package/dist/tools/actions.d.ts.map +1 -1
  141. package/dist/tools/actions.js +11 -27
  142. package/dist/tools/actions.js.map +1 -1
  143. package/dist/tools/advantages.d.ts +2 -0
  144. package/dist/tools/advantages.d.ts.map +1 -1
  145. package/dist/tools/advantages.js +66 -13
  146. package/dist/tools/advantages.js.map +1 -1
  147. package/dist/tools/alerts.d.ts +18 -0
  148. package/dist/tools/alerts.d.ts.map +1 -0
  149. package/dist/tools/alerts.js +82 -0
  150. package/dist/tools/alerts.js.map +1 -0
  151. package/dist/tools/application.d.ts +2 -1
  152. package/dist/tools/application.d.ts.map +1 -1
  153. package/dist/tools/application.js +9 -3
  154. package/dist/tools/application.js.map +1 -1
  155. package/dist/tools/contacts.d.ts.map +1 -1
  156. package/dist/tools/contacts.js +3 -7
  157. package/dist/tools/contacts.js.map +1 -1
  158. package/dist/tools/contracts.d.ts +22 -0
  159. package/dist/tools/contracts.d.ts.map +1 -1
  160. package/dist/tools/contracts.js +185 -52
  161. package/dist/tools/contracts.js.map +1 -1
  162. package/dist/tools/crud-factory.d.ts +33 -2
  163. package/dist/tools/crud-factory.d.ts.map +1 -1
  164. package/dist/tools/crud-factory.js +42 -15
  165. package/dist/tools/crud-factory.js.map +1 -1
  166. package/dist/tools/deliveries.d.ts +3 -0
  167. package/dist/tools/deliveries.d.ts.map +1 -1
  168. package/dist/tools/deliveries.js +50 -94
  169. package/dist/tools/deliveries.js.map +1 -1
  170. package/dist/tools/description-builders.d.ts +0 -1
  171. package/dist/tools/description-builders.d.ts.map +1 -1
  172. package/dist/tools/description-builders.js +46 -3
  173. package/dist/tools/description-builders.js.map +1 -1
  174. package/dist/tools/documents.d.ts.map +1 -1
  175. package/dist/tools/documents.js +73 -21
  176. package/dist/tools/documents.js.map +1 -1
  177. package/dist/tools/expenses.d.ts.map +1 -1
  178. package/dist/tools/expenses.js +2 -11
  179. package/dist/tools/expenses.js.map +1 -1
  180. package/dist/tools/find.d.ts +61 -0
  181. package/dist/tools/find.d.ts.map +1 -0
  182. package/dist/tools/find.js +221 -0
  183. package/dist/tools/find.js.map +1 -0
  184. package/dist/tools/flags.d.ts +5 -0
  185. package/dist/tools/flags.d.ts.map +1 -1
  186. package/dist/tools/flags.js +116 -1
  187. package/dist/tools/flags.js.map +1 -1
  188. package/dist/tools/forms.d.ts +5 -0
  189. package/dist/tools/forms.d.ts.map +1 -0
  190. package/dist/tools/forms.js +64 -0
  191. package/dist/tools/forms.js.map +1 -0
  192. package/dist/tools/groupments.d.ts +5 -0
  193. package/dist/tools/groupments.d.ts.map +1 -0
  194. package/dist/tools/groupments.js +68 -0
  195. package/dist/tools/groupments.js.map +1 -0
  196. package/dist/tools/inactivities.d.ts +5 -0
  197. package/dist/tools/inactivities.d.ts.map +1 -0
  198. package/dist/tools/inactivities.js +59 -0
  199. package/dist/tools/inactivities.js.map +1 -0
  200. package/dist/tools/index.d.ts +4 -0
  201. package/dist/tools/index.d.ts.map +1 -1
  202. package/dist/tools/index.js +4 -0
  203. package/dist/tools/index.js.map +1 -1
  204. package/dist/tools/invoices.d.ts.map +1 -1
  205. package/dist/tools/invoices.js +27 -2
  206. package/dist/tools/invoices.js.map +1 -1
  207. package/dist/tools/linked-entity-filters.d.ts +48 -0
  208. package/dist/tools/linked-entity-filters.d.ts.map +1 -0
  209. package/dist/tools/linked-entity-filters.js +64 -0
  210. package/dist/tools/linked-entity-filters.js.map +1 -0
  211. package/dist/tools/notifications.d.ts.map +1 -1
  212. package/dist/tools/notifications.js +0 -5
  213. package/dist/tools/notifications.js.map +1 -1
  214. package/dist/tools/orders.d.ts.map +1 -1
  215. package/dist/tools/orders.js +33 -4
  216. package/dist/tools/orders.js.map +1 -1
  217. package/dist/tools/parameter-disclosure.js.map +1 -1
  218. package/dist/tools/payments.d.ts +3 -0
  219. package/dist/tools/payments.d.ts.map +1 -1
  220. package/dist/tools/payments.js +43 -109
  221. package/dist/tools/payments.js.map +1 -1
  222. package/dist/tools/positionings.d.ts.map +1 -1
  223. package/dist/tools/positionings.js +9 -39
  224. package/dist/tools/positionings.js.map +1 -1
  225. package/dist/tools/projects.d.ts.map +1 -1
  226. package/dist/tools/projects.js +5 -12
  227. package/dist/tools/projects.js.map +1 -1
  228. package/dist/tools/provider-invoices.d.ts +2 -0
  229. package/dist/tools/provider-invoices.d.ts.map +1 -1
  230. package/dist/tools/provider-invoices.js +30 -111
  231. package/dist/tools/provider-invoices.js.map +1 -1
  232. package/dist/tools/purchases.d.ts +2 -0
  233. package/dist/tools/purchases.d.ts.map +1 -1
  234. package/dist/tools/purchases.js +50 -104
  235. package/dist/tools/purchases.js.map +1 -1
  236. package/dist/tools/registration-decorators.d.ts +28 -0
  237. package/dist/tools/registration-decorators.d.ts.map +1 -1
  238. package/dist/tools/registration-decorators.js +107 -0
  239. package/dist/tools/registration-decorators.js.map +1 -1
  240. package/dist/tools/resources.d.ts.map +1 -1
  241. package/dist/tools/resources.js +27 -5
  242. package/dist/tools/resources.js.map +1 -1
  243. package/dist/tools/rights.d.ts +101 -0
  244. package/dist/tools/rights.d.ts.map +1 -0
  245. package/dist/tools/rights.js +75 -0
  246. package/dist/tools/rights.js.map +1 -0
  247. package/dist/tools/tab-tools.js +3 -3
  248. package/dist/tools/tab-tools.js.map +1 -1
  249. package/dist/tools/timesheets.d.ts +29 -0
  250. package/dist/tools/timesheets.d.ts.map +1 -1
  251. package/dist/tools/timesheets.js +196 -126
  252. package/dist/tools/timesheets.js.map +1 -1
  253. package/dist/tools/todolists.d.ts +2 -0
  254. package/dist/tools/todolists.d.ts.map +1 -1
  255. package/dist/tools/todolists.js +64 -1
  256. package/dist/tools/todolists.js.map +1 -1
  257. package/dist/tools/validations.d.ts +9 -0
  258. package/dist/tools/validations.d.ts.map +1 -1
  259. package/dist/tools/validations.js +86 -9
  260. package/dist/tools/validations.js.map +1 -1
  261. package/dist/tools/workflows.js +1 -1
  262. package/dist/tools/workflows.js.map +1 -1
  263. package/dist/transports/http.d.ts +116 -0
  264. package/dist/transports/http.d.ts.map +1 -1
  265. package/dist/transports/http.js +422 -92
  266. package/dist/transports/http.js.map +1 -1
  267. package/dist/types.d.ts +3 -3
  268. package/dist/types.d.ts.map +1 -1
  269. package/manifest.json +2 -2
  270. package/package.json +6 -5
@@ -7,6 +7,12 @@ export declare const DEFAULT_MAX_RESULTS = 500;
7
7
  export declare const TOOLS_IGNORING_PAGINATION: ReadonlySet<string>;
8
8
  export declare const MAX_SEARCH_PAGE = 100;
9
9
  export declare const MAX_DOCUMENT_BYTES: number;
10
+ /**
11
+ * Ceiling for a document returned as MCP `image` content (issue #263). Hosts
12
+ * hand `image` content to the model's vision input, so the bytes land in the
13
+ * context as-is: 2 MiB is a scanned receipt or a photo of a CV, not a poster.
14
+ */
15
+ export declare const MAX_IMAGE_BYTES: number;
10
16
  export declare const MAX_RESOURCE_BYTES: number;
11
17
  export declare const DEFAULT_HTTP_TIMEOUT_MS = 30000;
12
18
  export declare const DEFAULT_HTTP_MAX_RETRIES = 2;
@@ -59,8 +65,12 @@ export declare const API_PATHS: {
59
65
  readonly reportingSynthesis: "/reporting-synthesis";
60
66
  readonly reportingProductionPlans: "/reporting-production-plans";
61
67
  readonly documents: "/documents";
68
+ readonly inactivities: "/inactivities";
69
+ readonly forms: "/forms";
70
+ readonly groupments: "/groupments";
71
+ readonly alerts: "/alerts";
62
72
  };
63
- 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", "documents", "workflows"];
73
+ 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", "inactivities", "forms", "groupments", "alerts", "documents", "workflows"];
64
74
  export type DomainName = (typeof REGISTERED_DOMAINS)[number];
65
75
  export declare const ENTITY_TABS: {
66
76
  readonly candidates: readonly ["information", "technical-data", "administrative", "actions", "positionings"];
@@ -69,7 +79,8 @@ export declare const ENTITY_TABS: {
69
79
  readonly companies: readonly ["information", "contacts", "actions", "opportunities", "projects", "orders", "invoices", "purchases", "provider-invoices"];
70
80
  readonly opportunities: readonly ["information", "actions", "positionings", "projects", "simulation"];
71
81
  readonly projects: readonly ["information", "actions", "simulation", "deliveries-groupments", "orders", "purchases", "productivity"];
72
- readonly invoices: readonly ["information", "actions", "billable-items"];
82
+ readonly invoices: readonly ["information", "actions"];
73
83
  readonly orders: readonly ["information", "actions", "invoices"];
84
+ readonly purchases: readonly ["information"];
74
85
  };
75
86
  //# sourceMappingURL=constants.d.ts.map
@@ -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;AAUjC,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEpD,CAAC;AACF,eAAO,MAAM,mBAAmB,MAAgB,CAAC;AA6BjD,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAKxD,CAAC;AAKH,eAAO,MAAM,eAAe,MAAM,CAAC;AAMnC,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AASlD,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAK7C,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CZ,CAAC;AAOX,eAAO,MAAM,kBAAkB,+fAuCrB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAG7D,eAAO,MAAM,WAAW;;;;;;;;;CAsCd,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;AAUjC,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEpD,CAAC;AACF,eAAO,MAAM,mBAAmB,MAAgB,CAAC;AA6BjD,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAKxD,CAAC;AAKH,eAAO,MAAM,eAAe,MAAM,CAAC;AAMnC,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AAClD;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAkB,CAAC;AAS/C,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAK7C,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDZ,CAAC;AAOX,eAAO,MAAM,kBAAkB,gjBA6CrB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAG7D,eAAO,MAAM,WAAW;;;;;;;;;;CA4Cd,CAAC"}
package/dist/constants.js CHANGED
@@ -57,6 +57,12 @@ export const MAX_SEARCH_PAGE = 100;
57
57
  // anything beyond this is refused with a clear message instead of silently
58
58
  // flooding the conversation.
59
59
  export const MAX_DOCUMENT_BYTES = 5 * 1024 * 1024;
60
+ /**
61
+ * Ceiling for a document returned as MCP `image` content (issue #263). Hosts
62
+ * hand `image` content to the model's vision input, so the bytes land in the
63
+ * context as-is: 2 MiB is a scanned receipt or a photo of a CV, not a poster.
64
+ */
65
+ export const MAX_IMAGE_BYTES = 2 * 1024 * 1024;
60
66
  // Hard ceiling on the body of an entity resource template
61
67
  // (`boond://candidate/{id}`). Unlike a tool, a resource has no `pageSize` and
62
68
  // the model cannot ask for less, so the cap is enforced server-side by dropping
@@ -127,6 +133,12 @@ export const API_PATHS = {
127
133
  reportingSynthesis: "/reporting-synthesis",
128
134
  reportingProductionPlans: "/reporting-production-plans",
129
135
  documents: "/documents",
136
+ // Issue #256 — create-only collections (search.raml documents `post`), plus default / rights.
137
+ inactivities: "/inactivities",
138
+ forms: "/forms",
139
+ groupments: "/groupments",
140
+ // Issue #255 — the user's dashboard alerts (alerts/search.raml: get only, no parameter).
141
+ alerts: "/alerts",
130
142
  };
131
143
  // Canonical list of tool domains exposed by the server, in registration order.
132
144
  // Domain names use dashes; the matching tool-name prefix replaces them with
@@ -170,6 +182,12 @@ export const REGISTERED_DOMAINS = [
170
182
  "poles",
171
183
  "reporting",
172
184
  "planning-absences",
185
+ // Issue #256
186
+ "inactivities",
187
+ "forms",
188
+ "groupments",
189
+ // Issue #255
190
+ "alerts",
173
191
  "documents",
174
192
  "workflows",
175
193
  ];
@@ -210,7 +228,13 @@ export const ENTITY_TABS = {
210
228
  "purchases",
211
229
  "productivity",
212
230
  ],
213
- invoices: ["information", "actions", "billable-items"],
231
+ // `billable-items` was listed here but never wired (#258): probed live on
232
+ // 2026-09-26, `GET /invoices/{id}/billable-items` answers 403 "Potential
233
+ // missing contractual feature(s): labs, appsNoCode" — a feature-gated route,
234
+ // absent from the RAML. Not exposed until a tenant is seen answering 200.
235
+ invoices: ["information", "actions"],
214
236
  orders: ["information", "actions", "invoices"],
237
+ // `/purchases/{id}/actions` and `/billable-items` answer 404 (same probe).
238
+ purchases: ["information"],
215
239
  };
216
240
  //# sourceMappingURL=constants.js.map
@@ -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":"AAAA,6BAA6B;AAC7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,4EAA4E;AAC5E,gFAAgF;AAChF,0EAA0E;AAC1E,6EAA6E;AAC7E,gFAAgF;AAChF,8EAA8E;AAC9E,mEAAmE;AACnE,iFAAiF;AACjF,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,UAAU,EAAE,GAAG;CAChB,CAAC;AACF,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAEjD,4EAA4E;AAC5E,yEAAyE;AACzE,2BAA2B;AAC3B,EAAE;AACF,yDAAyD;AACzD,yDAAyD;AACzD,yDAAyD;AACzD,wDAAwD;AACxD,EAAE;AACF,wEAAwE;AACxE,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,EAAE;AACF,4EAA4E;AAC5E,uEAAuE;AACvE,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,wDAAwD;AACxD,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,4EAA4E;AAC5E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,yBAAyB,GAAwB,IAAI,GAAG,CAAC;IACpE,oBAAoB;IACpB,uBAAuB;IACvB,wBAAwB;IACxB,uBAAuB;CACxB,CAAC,CAAC;AAEH,yEAAyE;AACzE,wEAAwE;AACxE,yEAAyE;AACzE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,wEAAwE;AACxE,6EAA6E;AAC7E,2EAA2E;AAC3E,6BAA6B;AAC7B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAClD;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C,0DAA0D;AAC1D,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,sEAAsE;AACtE,0EAA0E;AAC1E,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAC;AAE7C,uBAAuB;AACvB,qEAAqE;AACrE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C,4EAA4E;AAC5E,6EAA6E;AAC7E,4BAA4B;AAC5B,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAE/C,2EAA2E;AAC3E,2EAA2E;AAC3E,wEAAwE;AACxE,kDAAkD;AAClD,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAC9C,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEhD,YAAY;AACZ,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU,EAAE,aAAa;IACzB,SAAS,EAAE,YAAY;IACvB,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,YAAY;IACvB,aAAa,EAAE,gBAAgB;IAC/B,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,aAAa;IACzB,oBAAoB,EAAE,wBAAwB;IAC9C,QAAQ,EAAE,WAAW;IACrB,eAAe,EAAE,mBAAmB;IACpC,QAAQ,EAAE,WAAW;IACrB,eAAe,EAAE,mBAAmB;IACpC,QAAQ,EAAE,WAAW;IACrB,YAAY,EAAE,eAAe;IAC7B,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,aAAa;IACzB,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,gBAAgB;IAC9B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,gBAAgB,EAAE,oBAAoB;IACtC,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,WAAW;IACrB,aAAa,EAAE,iBAAiB;IAChC,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,OAAO;IACb,aAAa,EAAE,gBAAgB;IAC/B,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,YAAY;IACvB,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,YAAY;IACvB,QAAQ,EAAE,WAAW;IACrB,WAAW,EAAE,cAAc;IAC3B,KAAK,EAAE,QAAQ;IACf,gBAAgB,EAAE,oBAAoB;IACtC,kBAAkB,EAAE,sBAAsB;IAC1C,iBAAiB,EAAE,qBAAqB;IACxC,kBAAkB,EAAE,sBAAsB;IAC1C,kBAAkB,EAAE,sBAAsB;IAC1C,wBAAwB,EAAE,6BAA6B;IACvD,SAAS,EAAE,YAAY;IACvB,8FAA8F;IAC9F,YAAY,EAAE,eAAe;IAC7B,KAAK,EAAE,QAAQ;IACf,UAAU,EAAE,aAAa;IACzB,yFAAyF;IACzF,MAAM,EAAE,SAAS;CACT,CAAC;AAEX,+EAA+E;AAC/E,4EAA4E;AAC5E,yEAAyE;AACzE,wEAAwE;AACxE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,YAAY;IACZ,WAAW;IACX,UAAU;IACV,WAAW;IACX,eAAe;IACf,SAAS;IACT,YAAY;IACZ,UAAU;IACV,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,UAAU;IACV,UAAU;IACV,UAAU;IACV,cAAc;IACd,UAAU;IACV,YAAY;IACZ,aAAa;IACb,WAAW;IACX,WAAW;IACX,mBAAmB;IACnB,UAAU;IACV,UAAU;IACV,gBAAgB;IAChB,OAAO;IACP,MAAM;IACN,eAAe;IACf,SAAS;IACT,WAAW;IACX,OAAO;IACP,WAAW;IACX,UAAU;IACV,aAAa;IACb,OAAO;IACP,WAAW;IACX,mBAAmB;IACnB,aAAa;IACb,cAAc;IACd,OAAO;IACP,YAAY;IACZ,aAAa;IACb,QAAQ;IACR,WAAW;IACX,WAAW;CACH,CAAC;AAIX,kEAAkE;AAClE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,UAAU,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,CAAU;IACnG,SAAS,EAAE;QACT,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,YAAY;QACZ,SAAS;QACT,cAAc;QACd,UAAU;QACV,eAAe;QACf,kBAAkB;QAClB,kBAAkB;KACV;IACV,QAAQ,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAU;IAChG,SAAS,EAAE;QACT,aAAa;QACb,UAAU;QACV,SAAS;QACT,eAAe;QACf,UAAU;QACV,QAAQ;QACR,UAAU;QACV,WAAW;QACX,mBAAmB;KACX;IACV,aAAa,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,CAAU;IAC5F,QAAQ,EAAE;QACR,aAAa;QACb,SAAS;QACT,YAAY;QACZ,uBAAuB;QACvB,QAAQ;QACR,WAAW;QACX,cAAc;KACN;IACV,0EAA0E;IAC1E,yEAAyE;IACzE,6EAA6E;IAC7E,0EAA0E;IAC1E,QAAQ,EAAE,CAAC,aAAa,EAAE,SAAS,CAAU;IAC7C,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,CAAU;IACvD,2EAA2E;IAC3E,SAAS,EAAE,CAAC,aAAa,CAAU;CAC3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAmED;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAuC7D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,IAAI,EAAE,GAAG,SAAS,CAEnD;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,IAAI,IAAI,EAAE,GAAG,SAAS,CAElD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI,EAAE,GAAG,SAAS,CAGjF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,SAAS,CAG/D;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,SAAS,GAAG,MAAM,CAExE;AAQD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI,CA4BtF"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAmED;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CA2C7D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,IAAI,EAAE,GAAG,SAAS,CAEnD;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,IAAI,IAAI,EAAE,GAAG,SAAS,CAElD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI,EAAE,GAAG,SAAS,CAGjF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,SAAS,CAG/D;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,SAAS,GAAG,MAAM,CAExE;AAQD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI,CA4BtF"}
package/dist/icons.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { ListPromptsRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
2
2
  import { PROMPTS } from "./prompts/index.js";
3
3
  import { isFeatureDisabled } from "./config/env-flags.js";
4
+ import { readString } from "./config/env.js";
4
5
  /**
5
6
  * Mid-grey: legible on both light and dark client themes. A data-URI SVG can't
6
7
  * inherit `currentColor` from the host UI, so a single neutral tone beats
@@ -14,7 +15,7 @@ const ICON_COLOR = "%237d8794";
14
15
  * that doesn't — hence the switch.
15
16
  */
16
17
  function iconsDisabled() {
17
- return isFeatureDisabled(process.env.BOOND_MCP_ICONS);
18
+ return isFeatureDisabled(readString("BOOND_MCP_ICONS"));
18
19
  }
19
20
  /**
20
21
  * Build the data URI for a single-path 16×16 glyph.
@@ -95,6 +96,10 @@ export const DOMAIN_ICONS = {
95
96
  poles: [PIN],
96
97
  reporting: [CHART],
97
98
  "planning-absences": [CALENDAR],
99
+ inactivities: [CLOCK],
100
+ forms: [CHECK],
101
+ groupments: [BRIEFCASE],
102
+ alerts: [BELL],
98
103
  documents: [DOCUMENT],
99
104
  workflows: [LIST],
100
105
  };
package/dist/icons.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"icons.js","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEtG,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAiD1D;;;;GAIG;AACH,MAAM,UAAU,GAAG,WAAW,CAAC;AAE/B;;;;;GAKG;AACH,SAAS,aAAa;IACpB,OAAO,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,KAAK,CAAC,IAAY;IACzB,OAAO;QACL,GAAG,EACD,4FAA4F;YAC5F,YAAY,UAAU,oBAAoB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,iBAAiB;KACrF,CAAC;AACJ,CAAC;AAED,qDAAqD;AACrD,MAAM,MAAM,GAAG,KAAK,CAAC,4EAA4E,CAAC,CAAC;AACnG,MAAM,MAAM,GAAG,KAAK,CAClB,0JAA0J,CAC3J,CAAC;AACF,MAAM,QAAQ,GAAG,KAAK,CAAC,uEAAuE,CAAC,CAAC;AAChG,MAAM,MAAM,GAAG,KAAK,CAAC,6DAA6D,CAAC,CAAC;AACpF,MAAM,SAAS,GAAG,KAAK,CAAC,gCAAgC,CAAC,CAAC;AAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,mDAAmD,CAAC,CAAC;AAC5E,MAAM,QAAQ,GAAG,KAAK,CAAC,iDAAiD,CAAC,CAAC;AAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,kEAAkE,CAAC,CAAC;AACxF,MAAM,KAAK,GAAG,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,wEAAwE,CAAC,CAAC;AAC7F,MAAM,GAAG,GAAG,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACtE,MAAM,KAAK,GAAG,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACvE,MAAM,IAAI,GAAG,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,+CAA+C,CAAC,CAAC;AACrE,MAAM,GAAG,GAAG,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACpD,MAAM,IAAI,GAAG,KAAK,CAChB,6HAA6H,CAC9H,CAAC;AACF,MAAM,IAAI,GAAG,KAAK,CAAC,8EAA8E,CAAC,CAAC;AACnG,MAAM,IAAI,GAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,wEAAwE,CAAC,CAAC;AAC7F,MAAM,GAAG,GAAG,KAAK,CACf,2GAA2G,CAC5G,CAAC;AACF,MAAM,GAAG,GAAG,KAAK,CACf,qHAAqH,CACtH,CAAC;AACF,MAAM,KAAK,GAAG,KAAK,CAAC,uDAAuD,CAAC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAyC;IAChE,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,SAAS,EAAE,CAAC,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,aAAa,EAAE,CAAC,MAAM,CAAC;IACvB,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,UAAU,EAAE,CAAC,KAAK,CAAC;IACnB,QAAQ,EAAE,CAAC,SAAS,CAAC;IACrB,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACpB,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB,QAAQ,EAAE,CAAC,GAAG,CAAC;IACf,YAAY,EAAE,CAAC,MAAM,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB,UAAU,EAAE,CAAC,KAAK,CAAC;IACnB,WAAW,EAAE,CAAC,IAAI,CAAC;IACnB,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,SAAS,EAAE,CAAC,IAAI,CAAC;IACjB,mBAAmB,EAAE,CAAC,QAAQ,CAAC;IAC/B,QAAQ,EAAE,CAAC,GAAG,CAAC;IACf,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACpB,gBAAgB,EAAE,CAAC,QAAQ,CAAC;IAC5B,KAAK,EAAE,CAAC,GAAG,CAAC;IACZ,IAAI,EAAE,CAAC,IAAI,CAAC;IACZ,aAAa,EAAE,CAAC,IAAI,CAAC;IACrB,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,SAAS,EAAE,CAAC,KAAK,CAAC;IAClB,KAAK,EAAE,CAAC,GAAG,CAAC;IACZ,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,CAAC;IAChB,WAAW,EAAE,CAAC,KAAK,CAAC;IACpB,KAAK,EAAE,CAAC,GAAG,CAAC;IACZ,SAAS,EAAE,CAAC,KAAK,CAAC;IAClB,mBAAmB,EAAE,CAAC,QAAQ,CAAC;IAC/B,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,SAAS,EAAE,CAAC,IAAI,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,aAAa;IAC3B,OAAO,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAA8B;IAC3D,IAAI,MAAM,KAAK,SAAS,IAAI,aAAa,EAAE;QAAE,OAAO,SAAS,CAAC;IAC9D,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACpD,OAAO,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,KAAkC;IAC9D,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAChE,CAAC;AAID,SAAS,SAAS,CAA6B,KAAQ,EAAE,KAAyB;IAChF,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;AACjF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,KAAwB;IAC9E,6EAA6E;IAC7E,0DAA0D;IAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,MAEzB,CAAC;IACF,MAAM,QAAQ,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE/D,UAAU,CAAC,iBAAiB,GAAG,CAAC,MAAe,EAAE,OAAmB,EAAE,EAAE;QACtE,IAAI,MAAM,KAAK,sBAAsB,EAAE,CAAC;YACtC,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;gBACnD,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAwC,CAAC;gBAC/E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;oBAAE,OAAO,MAAM,CAAC;gBACjD,OAAO;oBACL,GAAG,MAAM;oBACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBAC5F,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,MAAM,KAAK,wBAAwB,EAAE,CAAC;YACxC,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;gBACnD,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAA0C,CAAC;gBACjF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;oBAAE,OAAO,MAAM,CAAC;gBACnD,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACjG,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,8 +7,9 @@ import { initClient, initClientWithAuth, oauthContextAuth, hasEnvCredentials } f
7
7
  import { createMcpServer, REGISTERED_DOMAINS } from "./server.js";
8
8
  import { runUpdateNotification } from "./services/update-checker.js";
9
9
  import { resolveHttpOptions, startHttpTransport } from "./transports/http.js";
10
+ import { readString } from "./config/env.js";
10
11
  function resolveTransport() {
11
- const raw = (process.env["MCP_TRANSPORT"] ?? "").toLowerCase().trim();
12
+ const raw = (readString("MCP_TRANSPORT") ?? "").toLowerCase().trim();
12
13
  if (raw === "http" || raw === "streamable-http" || raw === "streamablehttp")
13
14
  return "http";
14
15
  return "stdio";
@@ -32,16 +33,13 @@ function scheduleUpdateCheck() {
32
33
  return;
33
34
  void runUpdateNotification({ currentVersion: meta.version, packageName: meta.name });
34
35
  }
35
- function resolveStaticAuth() {
36
- const v = process.env["BOOND_HTTP_STATIC_AUTH"];
37
- if (!v || v.startsWith("${"))
38
- return false;
39
- return v.toLowerCase() === "true" || v === "1" || v.toLowerCase() === "yes";
40
- }
41
36
  async function main() {
42
37
  const kind = resolveTransport();
43
38
  if (kind === "http") {
44
- const useStaticAuth = resolveStaticAuth();
39
+ // Read once, here: `BOOND_HTTP_STATIC_AUTH` used to be parsed a second
40
+ // time by a private reader in this file (#242).
41
+ const options = resolveHttpOptions();
42
+ const useStaticAuth = options.staticAuth === true;
45
43
  if (useStaticAuth) {
46
44
  // Static-auth mode: operator provides env credentials; no per-request
47
45
  // OAuth token needed from MCP clients (e.g. Hermes, CI pipelines,
@@ -63,25 +61,45 @@ async function main() {
63
61
  // OAuth2 protected resource: each MCP request must carry its own Bearer.
64
62
  initClientWithAuth(oauthContextAuth);
65
63
  }
66
- const options = resolveHttpOptions();
67
64
  const handle = await startHttpTransport(createMcpServer, options);
68
65
  console.error("🚀 BoondManager MCP Server running (streamable HTTP transport)");
69
66
  console.error(`📡 Endpoint: http://${handle.address.host}:${handle.address.port}${handle.address.path}`);
70
67
  console.error(`🔑 Mode: ${options.stateless ? "stateless" : "stateful"}`);
71
68
  if (useStaticAuth) {
72
- console.error("🔐 Boond auth: JWT statique (credentials env, pas de Bearer requis par le client)");
69
+ console.error(options.apiKey
70
+ ? "🔐 Boond auth: JWT statique (credentials env) — clients authentifiés par MCP_HTTP_API_KEY"
71
+ : "🔐 Boond auth: JWT statique (credentials env) — ⚠️ aucune authentification client (bind loopback ou MCP_HTTP_INSECURE_STATIC_AUTH)");
73
72
  }
74
73
  else {
75
74
  console.error("🔐 Boond auth: OAuth2 (per-request Bearer from MCP client)");
76
75
  }
77
76
  console.error(`📦 Domains: ${REGISTERED_DOMAINS.join(", ")}`);
78
- const shutdown = async (signal) => {
77
+ // Idempotent: a second signal (Docker sends SIGTERM, then the operator
78
+ // hits Ctrl-C; Kubernetes retries) must not call close() on a closed
79
+ // server and leave an unhandled rejection. The forced exit covers a
80
+ // close() that never resolves (issue #237); handle.close() already
81
+ // destroys lingering connections after `shutdownTimeoutMs`, so this only
82
+ // fires if something else wedges.
83
+ let shutdownStarted = false;
84
+ const shutdown = (signal) => {
85
+ if (shutdownStarted) {
86
+ console.error(`🛑 ${signal} received again — shutdown already in progress`);
87
+ return;
88
+ }
89
+ shutdownStarted = true;
79
90
  console.error(`\n🛑 Received ${signal}, shutting down...`);
80
- await handle.close();
81
- process.exit(0);
91
+ const forceExit = setTimeout(() => {
92
+ console.error("⏱️ Shutdown did not complete in time, exiting");
93
+ process.exit(1);
94
+ }, (options.shutdownTimeoutMs ?? 10_000) + 2_000);
95
+ forceExit.unref();
96
+ handle.close().then(() => process.exit(0), (error) => {
97
+ console.error("Shutdown error:", error instanceof Error ? error.message : error);
98
+ process.exit(1);
99
+ });
82
100
  };
83
- process.on("SIGINT", () => void shutdown("SIGINT"));
84
- process.on("SIGTERM", () => void shutdown("SIGTERM"));
101
+ process.on("SIGINT", () => shutdown("SIGINT"));
102
+ process.on("SIGTERM", () => shutdown("SIGTERM"));
85
103
  scheduleUpdateCheck();
86
104
  return;
87
105
  }
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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"}
@@ -17,5 +17,5 @@
17
17
  * (`MAX_SERVER_INSTRUCTIONS_LENGTH`) — these instructions compete with the
18
18
  * tool catalogue for the same context window.
19
19
  */
20
- export declare const SERVER_INSTRUCTIONS = "Acc\u00E8s aux donn\u00E9es ERP/CRM BoondManager (API JSON:API) : candidats, ressources (consultants), contacts, soci\u00E9t\u00E9s, opportunit\u00E9s, projets, CRA, factures, achats\u2026\n\n## Nommage des outils\n\n`boond_{domaine}_{op\u00E9ration}` \u2014 op\u00E9rations : `search`, `get`, `create`, `update`, `delete`. Les onglets d'une fiche sont des outils distincts : `boond_{domaine}_{onglet}` (ex. `boond_resources_technical_data`). Workflow habituel : un `search` pour obtenir l'id, puis `get` ou l'onglet voulu pour le d\u00E9tail.\n\n## Les filtres sont propres \u00E0 chaque endpoint\n\nLe sch\u00E9ma de chaque outil est la r\u00E9f\u00E9rence : **ne pas transposer un filtre d'un endpoint \u00E0 un autre**. Les sch\u00E9mas sont `.strict()`, donc un nom inconnu est rejet\u00E9 par une erreur de validation \u2014 mais ce rejet a deux causes possibles : mauvais nom de filtre, **ou** filtre non support\u00E9 par cet endpoint. Dans le second cas, ne pas r\u00E9essayer avec des variantes : reprendre la recherche avec les filtres que le sch\u00E9ma expose (souvent `keywords` seul), ou filtrer c\u00F4t\u00E9 client apr\u00E8s lecture.\n\n## P\u00E9rim\u00E8tre (les 6 recherches principales + `boond_reporting_*`)\n\nSur `resources`, `candidates`, `contacts`, `companies`, `opportunities`, `projects` et le reporting \u2014 pas sur les domaines de r\u00E9f\u00E9rence/administration :\n\n- \u00AB mes donn\u00E9es / mon \u00E9quipe / mon agence \u00BB \u2192 `perimeterDynamic` : `[\"data\"]` (mes donn\u00E9es), `[\"managers\"]` (mon N-1), `[\"agencies\"]`, `[\"poles\"]`, `[\"businessUnits\"]`\n- \u00AB l'\u00E9quipe de X \u00BB \u2192 `perimeterManagers: [<id de X>]`\n- p\u00E9rim\u00E8tre organisationnel explicite \u2192 `perimeterAgencies` / `perimeterPoles` / `perimeterBusinessUnits`, \u00E0 combiner avec `narrowPerimeter: true` pour un ET logique\n\n`mainManagers`, `agencies`, `poles`, `businessUnits` n'existent sur aucun endpoint.\n\n## Cibler une entit\u00E9 li\u00E9e\n\nVocabulaire des pr\u00E9fixes de `keywords` : `CSOC<id>` (soci\u00E9t\u00E9), `CCON<id>` (contact), `CAND<id>` (candidat), `COMP<id>` (ressource), `AO<id>` (opportunit\u00E9), `PRJ<id>` (projet), `MIS<id>` (mission), `PROD<id>` (produit), `CTR<id>` (contrat) \u2014 ex. `keywords: \"CSOC42\"`.\n\n**Chaque endpoint n'en accepte qu'un sous-ensemble, \u00E9num\u00E9r\u00E9 dans la description de l'outil.** `keywords` \u00E9tant du texte libre, un pr\u00E9fixe non support\u00E9 n'est pas rejet\u00E9 : il part en recherche plein texte et renvoie 0 r\u00E9sultat. Une page vide apr\u00E8s un pr\u00E9fixe hors liste ne veut donc pas dire \u00AB aucune entit\u00E9 li\u00E9e \u00BB \u2014 v\u00E9rifier la description de l'outil avant de conclure.\n\n`keywordsType` (recherches `resources`, `candidates`, `contacts`, `companies` uniquement) restreint `keywords` \u00E0 un champ ; les valeurs admises diff\u00E8rent par endpoint (`lastName`/`fullName`/`titleSkills`\u2026 sur les personnes, `name`/`phones`/`emails` sur les soci\u00E9t\u00E9s) \u2014 lire l'\u00E9num\u00E9ration du sch\u00E9ma. Sans lui, la recherche porte sur le champ par d\u00E9faut de l'endpoint (CV ou texte int\u00E9gral).\n\n## \u00C9conomie de contexte\n\n- `pageSize` : d\u00E9faut 30, maximum 500. `page` est plafonn\u00E9 \u00E0 100 : au-del\u00E0, affiner les filtres plut\u00F4t que paginer.\n- `fields: [\"title\", \"updateDate\", \u2026]` remplace le r\u00E9sum\u00E9 d'une ligne par les seuls attributs demand\u00E9s \u2014 \u00E0 utiliser d\u00E8s qu'une page de r\u00E9sultats est large. Disponible sur les outils de recherche, sauf `boond_timesheets_search` et `boond_reporting_*`.\n- Fiche compl\u00E8te d'une entit\u00E9 connue : lire la ressource `boond://{candidate|resource|contact|company|opportunity|project}/<id>` (fiche + informations + comp\u00E9tences en une lecture) plut\u00F4t que d'encha\u00EEner `_get` puis les outils d'onglet.\n\n## \u00C9tats et types\n\nCes filtres attendent des identifiants **entiers** et leur nom est propre \u00E0 l'endpoint : `resourceStates`, `candidateStates`, `opportunityStates`, `projectStates`, `states` + `typesOf` (contacts), `states` seul (soci\u00E9t\u00E9s \u2014 il n'y a pas de filtre de type sur `/companies`). Pour les traduire en libell\u00E9s, lire les ressources `boond://dictionary/*` (states, typeOf, countries, currencies, languages) plut\u00F4t que d'appeler `boond_application_dictionary` : m\u00EAme contenu, sans consommer un appel d'outil.";
20
+ export declare const SERVER_INSTRUCTIONS = "Acc\u00E8s aux donn\u00E9es ERP/CRM BoondManager (API JSON:API) : candidats, ressources (consultants), contacts, soci\u00E9t\u00E9s, opportunit\u00E9s, projets, CRA, factures, achats\u2026\n\n## Nommage des outils\n\n`boond_{domaine}_{op\u00E9ration}` \u2014 op\u00E9rations : `search`, `get`, `create`, `update`, `delete`. Les onglets d'une fiche sont des outils distincts : `boond_{domaine}_{onglet}` (ex. `boond_resources_technical_data`). Workflow habituel : un `search` pour obtenir l'id, puis `get` ou l'onglet voulu pour le d\u00E9tail.\n\n## Les filtres sont propres \u00E0 chaque endpoint\n\nLe sch\u00E9ma de chaque outil est la r\u00E9f\u00E9rence : **ne pas transposer un filtre d'un endpoint \u00E0 un autre**. Les sch\u00E9mas sont `.strict()`, donc un nom inconnu est rejet\u00E9 par une erreur de validation \u2014 mais ce rejet a deux causes possibles : mauvais nom de filtre, **ou** filtre non support\u00E9 par cet endpoint. Dans le second cas, ne pas r\u00E9essayer avec des variantes : reprendre la recherche avec les filtres que le sch\u00E9ma expose (souvent `keywords` seul), ou filtrer c\u00F4t\u00E9 client apr\u00E8s lecture.\n\n## P\u00E9rim\u00E8tre (recherches m\u00E9tier + `boond_reporting_*`)\n\nSur les recherches m\u00E9tier (personnes, soci\u00E9t\u00E9s, opportunit\u00E9s, projets, actions, finance, activit\u00E9) et le reporting \u2014 pas sur les domaines de r\u00E9f\u00E9rence / admin :\n\n- \u00AB mes donn\u00E9es / mon \u00E9quipe / mon agence \u00BB \u2192 `perimeterDynamic` : `[\"data\"]` (mes donn\u00E9es), `[\"managers\"]` (mon N-1), `[\"agencies\"]`, `[\"poles\"]`, `[\"businessUnits\"]`\n- \u00AB l'\u00E9quipe de X \u00BB \u2192 `perimeterManagers: [<id de X>]`\n- p\u00E9rim\u00E8tre organisationnel explicite \u2192 `perimeterAgencies` / `perimeterPoles` / `perimeterBusinessUnits`, \u00E0 combiner avec `narrowPerimeter: true` pour un ET logique\n\n`mainManagers`, `agencies`, `poles`, `businessUnits` n'existent sur aucun endpoint.\n\n## Cibler une entit\u00E9 li\u00E9e\n\nVocabulaire des pr\u00E9fixes de `keywords` : `CSOC<id>` (soci\u00E9t\u00E9), `CCON<id>` (contact), `CAND<id>` (candidat), `COMP<id>` (ressource), `AO<id>` (opportunit\u00E9), `PRJ<id>` (projet), `MIS<id>` (mission), `PROD<id>` (produit), `CTR<id>` (contrat) \u2014 ex. `keywords: \"CSOC42\"`.\n\n**Chaque endpoint n'en accepte qu'un sous-ensemble, \u00E9num\u00E9r\u00E9 dans la description de l'outil.** `keywords` \u00E9tant du texte libre, un pr\u00E9fixe non support\u00E9 n'est pas rejet\u00E9 : il part en recherche plein texte et renvoie 0 r\u00E9sultat. Une page vide apr\u00E8s un pr\u00E9fixe hors liste ne veut donc pas dire \u00AB aucune entit\u00E9 li\u00E9e \u00BB \u2014 v\u00E9rifier la description de l'outil avant de conclure.\n\n`keywordsType` (recherches `resources`, `candidates`, `contacts`, `companies` uniquement) restreint `keywords` \u00E0 un champ ; les valeurs admises diff\u00E8rent par endpoint (`lastName`/`fullName`/`titleSkills`\u2026 sur les personnes, `name`/`phones`/`emails` sur les soci\u00E9t\u00E9s) \u2014 lire l'\u00E9num\u00E9ration du sch\u00E9ma. Sans lui, la recherche porte sur le champ par d\u00E9faut de l'endpoint (CV / texte int\u00E9gral).\n\n## \u00C9conomie de contexte\n\n- `pageSize` : d\u00E9faut 30, maximum 500. `page` est plafonn\u00E9 \u00E0 100 : au-del\u00E0, affiner les filtres plut\u00F4t que paginer.\n- `fields: [\"title\", \"updateDate\", \u2026]` remplace le r\u00E9sum\u00E9 d'une ligne par les seuls attributs demand\u00E9s \u2014 \u00E0 utiliser sur les pages larges. Sur les outils de recherche, sauf `boond_timesheets_search` et `boond_reporting_*`.\n- Fiche compl\u00E8te d'une entit\u00E9 connue : lire la ressource `boond://{candidate|resource|contact|company|opportunity|project}/<id>` (fiche + informations + comp\u00E9tences) plut\u00F4t que `_get` puis les onglets.\n\n## \u00C9tats et types\n\nCes filtres attendent des identifiants **entiers** et leur nom est propre \u00E0 l'endpoint : `resourceStates`, `candidateStates`, `opportunityStates`, `projectStates`, `states` + `typesOf` (contacts), `states` seul (soci\u00E9t\u00E9s \u2014 il n'y a pas de filtre de type sur `/companies`). Pour les traduire en libell\u00E9s, lire `boond://dictionary/*` (`states/<entit\u00E9>`, `typeOf/<entit\u00E9>`, `actions/<entit\u00E9>` = `typeOf` d'action, `sources`, `origins`\u2026) plut\u00F4t que `boond_application_dictionary` : m\u00EAme contenu, sans appel d'outil. `boond://application/current-user/rights` : agences, p\u00F4les, droits par entit\u00E9 (avant d'\u00E9crire ou de filtrer par `perimeter*`).";
21
21
  //# sourceMappingURL=instructions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB,s5IAoCue,CAAC"}
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB,ghJAoCmoB,CAAC"}
@@ -27,9 +27,9 @@ export const SERVER_INSTRUCTIONS = `Accès aux données ERP/CRM BoondManager (AP
27
27
 
28
28
  Le schéma de chaque outil est la référence : **ne pas transposer un filtre d'un endpoint à un autre**. Les schémas sont \`.strict()\`, donc un nom inconnu est rejeté par une erreur de validation — mais ce rejet a deux causes possibles : mauvais nom de filtre, **ou** filtre non supporté par cet endpoint. Dans le second cas, ne pas réessayer avec des variantes : reprendre la recherche avec les filtres que le schéma expose (souvent \`keywords\` seul), ou filtrer côté client après lecture.
29
29
 
30
- ## Périmètre (les 6 recherches principales + \`boond_reporting_*\`)
30
+ ## Périmètre (recherches métier + \`boond_reporting_*\`)
31
31
 
32
- Sur \`resources\`, \`candidates\`, \`contacts\`, \`companies\`, \`opportunities\`, \`projects\` et le reporting — pas sur les domaines de référence/administration :
32
+ Sur les recherches métier (personnes, sociétés, opportunités, projets, actions, finance, activité) et le reporting — pas sur les domaines de référence / admin :
33
33
 
34
34
  - « mes données / mon équipe / mon agence » → \`perimeterDynamic\` : \`["data"]\` (mes données), \`["managers"]\` (mon N-1), \`["agencies"]\`, \`["poles"]\`, \`["businessUnits"]\`
35
35
  - « l'équipe de X » → \`perimeterManagers: [<id de X>]\`
@@ -43,15 +43,15 @@ Vocabulaire des préfixes de \`keywords\` : \`CSOC<id>\` (société), \`CCON<id>
43
43
 
44
44
  **Chaque endpoint n'en accepte qu'un sous-ensemble, énuméré dans la description de l'outil.** \`keywords\` étant du texte libre, un préfixe non supporté n'est pas rejeté : il part en recherche plein texte et renvoie 0 résultat. Une page vide après un préfixe hors liste ne veut donc pas dire « aucune entité liée » — vérifier la description de l'outil avant de conclure.
45
45
 
46
- \`keywordsType\` (recherches \`resources\`, \`candidates\`, \`contacts\`, \`companies\` uniquement) restreint \`keywords\` à un champ ; les valeurs admises diffèrent par endpoint (\`lastName\`/\`fullName\`/\`titleSkills\`… sur les personnes, \`name\`/\`phones\`/\`emails\` sur les sociétés) — lire l'énumération du schéma. Sans lui, la recherche porte sur le champ par défaut de l'endpoint (CV ou texte intégral).
46
+ \`keywordsType\` (recherches \`resources\`, \`candidates\`, \`contacts\`, \`companies\` uniquement) restreint \`keywords\` à un champ ; les valeurs admises diffèrent par endpoint (\`lastName\`/\`fullName\`/\`titleSkills\`… sur les personnes, \`name\`/\`phones\`/\`emails\` sur les sociétés) — lire l'énumération du schéma. Sans lui, la recherche porte sur le champ par défaut de l'endpoint (CV / texte intégral).
47
47
 
48
48
  ## Économie de contexte
49
49
 
50
50
  - \`pageSize\` : défaut 30, maximum 500. \`page\` est plafonné à 100 : au-delà, affiner les filtres plutôt que paginer.
51
- - \`fields: ["title", "updateDate", …]\` remplace le résumé d'une ligne par les seuls attributs demandés — à utiliser dès qu'une page de résultats est large. Disponible sur les outils de recherche, sauf \`boond_timesheets_search\` et \`boond_reporting_*\`.
52
- - Fiche complète d'une entité connue : lire la ressource \`boond://{candidate|resource|contact|company|opportunity|project}/<id>\` (fiche + informations + compétences en une lecture) plutôt que d'enchaîner \`_get\` puis les outils d'onglet.
51
+ - \`fields: ["title", "updateDate", …]\` remplace le résumé d'une ligne par les seuls attributs demandés — à utiliser sur les pages larges. Sur les outils de recherche, sauf \`boond_timesheets_search\` et \`boond_reporting_*\`.
52
+ - Fiche complète d'une entité connue : lire la ressource \`boond://{candidate|resource|contact|company|opportunity|project}/<id>\` (fiche + informations + compétences) plutôt que \`_get\` puis les onglets.
53
53
 
54
54
  ## États et types
55
55
 
56
- Ces filtres attendent des identifiants **entiers** et leur nom est propre à l'endpoint : \`resourceStates\`, \`candidateStates\`, \`opportunityStates\`, \`projectStates\`, \`states\` + \`typesOf\` (contacts), \`states\` seul (sociétés — il n'y a pas de filtre de type sur \`/companies\`). Pour les traduire en libellés, lire les ressources \`boond://dictionary/*\` (states, typeOf, countries, currencies, languages) plutôt que d'appeler \`boond_application_dictionary\` : même contenu, sans consommer un appel d'outil.`;
56
+ Ces filtres attendent des identifiants **entiers** et leur nom est propre à l'endpoint : \`resourceStates\`, \`candidateStates\`, \`opportunityStates\`, \`projectStates\`, \`states\` + \`typesOf\` (contacts), \`states\` seul (sociétés — il n'y a pas de filtre de type sur \`/companies\`). Pour les traduire en libellés, lire \`boond://dictionary/*\` (\`states/<entité>\`, \`typeOf/<entité>\`, \`actions/<entité>\` = \`typeOf\` d'action, \`sources\`, \`origins\`…) plutôt que \`boond_application_dictionary\` : même contenu, sans appel d'outil. \`boond://application/current-user/rights\` : agences, pôles, droits par entité (avant d'écrire ou de filtrer par \`perimeter*\`).`;
57
57
  //# sourceMappingURL=instructions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ugBAoCoe,CAAC"}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mqBAoCgoB,CAAC"}
@@ -17,9 +17,26 @@ export interface PromptDefinition {
17
17
  * is filtered, the user simply passes a numeric id instead.
18
18
  */
19
19
  domains: readonly DomainName[];
20
- build: (args: Record<string, string | undefined>) => string;
20
+ /**
21
+ * Render the runbook. `now` is the reference date for relative periods
22
+ * ("cette semaine", "D → D+H"): the server resolves them to literal ISO
23
+ * dates (issue #260, `./periods.ts`) instead of leaving the arithmetic to
24
+ * the model. Injected by tests; defaults to the wall clock.
25
+ */
26
+ build: (args: Record<string, string | undefined>, now?: Date) => string;
21
27
  }
28
+ /**
29
+ * Pour chaque prompt, l'utilisateur peut passer soit un ID numérique (rapide,
30
+ * sans ambiguïté), soit un libellé textuel (« Jean Dupont », « ACME »,
31
+ * « Refonte SI »…). Le runbook renvoyé au modèle contient alors une étape
32
+ * préalable qui résout le libellé via le `*_search` adéquat avant de l'utiliser
33
+ * comme filtre. Cela évite à l'utilisateur de chercher l'ID en amont — la
34
+ * majorité des appels passent en une seule formulation naturelle.
35
+ */
36
+ type EntityKind = "resource" | "society" | "opportunity" | "agency" | "project" | "candidate" | "contact";
22
37
  export declare const PROMPTS: PromptDefinition[];
38
+ /** Search the entity by the typed prefix; empty on any failure (no credentials, API down). */
39
+ export declare function completeEntityArgument(kind: EntityKind, value: string): Promise<string[]>;
23
40
  export declare function registerAllPrompts(server: McpServer, policy?: AccessPolicy): void;
24
41
  /** Exposed for tests so we can assert names/coverage without instantiating a server. */
25
42
  export declare const REGISTERED_PROMPTS: {
@@ -28,4 +45,5 @@ export declare const REGISTERED_PROMPTS: {
28
45
  description: string;
29
46
  argKeys: string[];
30
47
  }[];
48
+ export {};
31
49
  //# sourceMappingURL=index.d.ts.map
@@ -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;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;AA+DD,eAAO,MAAM,OAAO,EAAE,gBAAgB,EAirBrC,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
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,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;AAwBhF,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;;;;;OAKG;IACH,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC;CACzE;AAaD;;;;;;;GAOG;AACH,KAAK,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAwF1G,eAAO,MAAM,OAAO,EAAE,gBAAgB,EAqsCrC,CAAC;AA+CF,8FAA8F;AAC9F,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAc/F;AASD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAejF;AAED,wFAAwF;AACxF,eAAO,MAAM,kBAAkB;;;;;GAK5B,CAAC"}