attio-mcp 0.1.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 (644) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/LICENSE +236 -0
  3. package/README.md +105 -0
  4. package/dist/api/attio-client.d.ts +25 -0
  5. package/dist/api/attio-client.d.ts.map +1 -0
  6. package/dist/api/attio-client.js +64 -0
  7. package/dist/api/attio-client.js.map +1 -0
  8. package/dist/api/attribute-types.d.ts +119 -0
  9. package/dist/api/attribute-types.d.ts.map +1 -0
  10. package/dist/api/attribute-types.js +320 -0
  11. package/dist/api/attribute-types.js.map +1 -0
  12. package/dist/api/client.d.ts +3 -0
  13. package/dist/api/client.d.ts.map +1 -0
  14. package/dist/api/client.js +61 -0
  15. package/dist/api/client.js.map +1 -0
  16. package/dist/api/operations/batch.d.ts +55 -0
  17. package/dist/api/operations/batch.d.ts.map +1 -0
  18. package/dist/api/operations/batch.js +176 -0
  19. package/dist/api/operations/batch.js.map +1 -0
  20. package/dist/api/operations/crud.d.ts +61 -0
  21. package/dist/api/operations/crud.d.ts.map +1 -0
  22. package/dist/api/operations/crud.js +192 -0
  23. package/dist/api/operations/crud.js.map +1 -0
  24. package/dist/api/operations/index.d.ts +14 -0
  25. package/dist/api/operations/index.d.ts.map +1 -0
  26. package/dist/api/operations/index.js +18 -0
  27. package/dist/api/operations/index.js.map +1 -0
  28. package/dist/api/operations/lists.d.ts +66 -0
  29. package/dist/api/operations/lists.d.ts.map +1 -0
  30. package/dist/api/operations/lists.js +300 -0
  31. package/dist/api/operations/lists.js.map +1 -0
  32. package/dist/api/operations/notes.d.ts +29 -0
  33. package/dist/api/operations/notes.d.ts.map +1 -0
  34. package/dist/api/operations/notes.js +63 -0
  35. package/dist/api/operations/notes.js.map +1 -0
  36. package/dist/api/operations/retry.d.ts +48 -0
  37. package/dist/api/operations/retry.d.ts.map +1 -0
  38. package/dist/api/operations/retry.js +98 -0
  39. package/dist/api/operations/retry.js.map +1 -0
  40. package/dist/api/operations/search.d.ts +37 -0
  41. package/dist/api/operations/search.d.ts.map +1 -0
  42. package/dist/api/operations/search.js +186 -0
  43. package/dist/api/operations/search.js.map +1 -0
  44. package/dist/api/operations/tasks.d.ts +20 -0
  45. package/dist/api/operations/tasks.d.ts.map +1 -0
  46. package/dist/api/operations/tasks.js +87 -0
  47. package/dist/api/operations/tasks.js.map +1 -0
  48. package/dist/api/operations/types.d.ts +61 -0
  49. package/dist/api/operations/types.d.ts.map +1 -0
  50. package/dist/api/operations/types.js +10 -0
  51. package/dist/api/operations/types.js.map +1 -0
  52. package/dist/cli/commands/attributes.d.ts +34 -0
  53. package/dist/cli/commands/attributes.d.ts.map +1 -0
  54. package/dist/cli/commands/attributes.js +171 -0
  55. package/dist/cli/commands/attributes.js.map +1 -0
  56. package/dist/cli/discover.d.ts +3 -0
  57. package/dist/cli/discover.d.ts.map +1 -0
  58. package/dist/cli/discover.js +72 -0
  59. package/dist/cli/discover.js.map +1 -0
  60. package/dist/errors/api-errors.d.ts +191 -0
  61. package/dist/errors/api-errors.d.ts.map +1 -0
  62. package/dist/errors/api-errors.js +305 -0
  63. package/dist/errors/api-errors.js.map +1 -0
  64. package/dist/errors/company-errors.d.ts +40 -0
  65. package/dist/errors/company-errors.d.ts.map +1 -0
  66. package/dist/errors/company-errors.js +62 -0
  67. package/dist/errors/company-errors.js.map +1 -0
  68. package/dist/errors/value-match-error.d.ts +15 -0
  69. package/dist/errors/value-match-error.d.ts.map +1 -0
  70. package/dist/errors/value-match-error.js +40 -0
  71. package/dist/errors/value-match-error.js.map +1 -0
  72. package/dist/handlers/error-interceptor.d.ts +6 -0
  73. package/dist/handlers/error-interceptor.d.ts.map +1 -0
  74. package/dist/handlers/error-interceptor.js +17 -0
  75. package/dist/handlers/error-interceptor.js.map +1 -0
  76. package/dist/handlers/rate-limited-handler.d.ts +17 -0
  77. package/dist/handlers/rate-limited-handler.d.ts.map +1 -0
  78. package/dist/handlers/rate-limited-handler.js +126 -0
  79. package/dist/handlers/rate-limited-handler.js.map +1 -0
  80. package/dist/handlers/resources.d.ts +11 -0
  81. package/dist/handlers/resources.d.ts.map +1 -0
  82. package/dist/handlers/resources.js +109 -0
  83. package/dist/handlers/resources.js.map +1 -0
  84. package/dist/handlers/tool-configs/companies/attributes.d.ts +85 -0
  85. package/dist/handlers/tool-configs/companies/attributes.d.ts.map +1 -0
  86. package/dist/handlers/tool-configs/companies/attributes.js +203 -0
  87. package/dist/handlers/tool-configs/companies/attributes.js.map +1 -0
  88. package/dist/handlers/tool-configs/companies/batch.d.ts +145 -0
  89. package/dist/handlers/tool-configs/companies/batch.d.ts.map +1 -0
  90. package/dist/handlers/tool-configs/companies/batch.js +249 -0
  91. package/dist/handlers/tool-configs/companies/batch.js.map +1 -0
  92. package/dist/handlers/tool-configs/companies/crud.d.ts +103 -0
  93. package/dist/handlers/tool-configs/companies/crud.d.ts.map +1 -0
  94. package/dist/handlers/tool-configs/companies/crud.js +157 -0
  95. package/dist/handlers/tool-configs/companies/crud.js.map +1 -0
  96. package/dist/handlers/tool-configs/companies/definitions.d.ts +5 -0
  97. package/dist/handlers/tool-configs/companies/definitions.d.ts.map +1 -0
  98. package/dist/handlers/tool-configs/companies/definitions.js +9 -0
  99. package/dist/handlers/tool-configs/companies/definitions.js.map +1 -0
  100. package/dist/handlers/tool-configs/companies/formatters.d.ts +42 -0
  101. package/dist/handlers/tool-configs/companies/formatters.d.ts.map +1 -0
  102. package/dist/handlers/tool-configs/companies/formatters.js +324 -0
  103. package/dist/handlers/tool-configs/companies/formatters.js.map +1 -0
  104. package/dist/handlers/tool-configs/companies/index.d.ts +642 -0
  105. package/dist/handlers/tool-configs/companies/index.d.ts.map +1 -0
  106. package/dist/handlers/tool-configs/companies/index.js +86 -0
  107. package/dist/handlers/tool-configs/companies/index.js.map +1 -0
  108. package/dist/handlers/tool-configs/companies/notes.d.ts +61 -0
  109. package/dist/handlers/tool-configs/companies/notes.d.ts.map +1 -0
  110. package/dist/handlers/tool-configs/companies/notes.js +109 -0
  111. package/dist/handlers/tool-configs/companies/notes.js.map +1 -0
  112. package/dist/handlers/tool-configs/companies/relationships.d.ts +137 -0
  113. package/dist/handlers/tool-configs/companies/relationships.d.ts.map +1 -0
  114. package/dist/handlers/tool-configs/companies/relationships.js +163 -0
  115. package/dist/handlers/tool-configs/companies/relationships.js.map +1 -0
  116. package/dist/handlers/tool-configs/companies/search.d.ts +101 -0
  117. package/dist/handlers/tool-configs/companies/search.d.ts.map +1 -0
  118. package/dist/handlers/tool-configs/companies/search.js +163 -0
  119. package/dist/handlers/tool-configs/companies/search.js.map +1 -0
  120. package/dist/handlers/tool-configs/companies/types.d.ts +6 -0
  121. package/dist/handlers/tool-configs/companies/types.d.ts.map +1 -0
  122. package/dist/handlers/tool-configs/companies/types.js +2 -0
  123. package/dist/handlers/tool-configs/companies/types.js.map +1 -0
  124. package/dist/handlers/tool-configs/index.d.ts +12 -0
  125. package/dist/handlers/tool-configs/index.d.ts.map +1 -0
  126. package/dist/handlers/tool-configs/index.js +12 -0
  127. package/dist/handlers/tool-configs/index.js.map +1 -0
  128. package/dist/handlers/tool-configs/lists.d.ts +459 -0
  129. package/dist/handlers/tool-configs/lists.d.ts.map +1 -0
  130. package/dist/handlers/tool-configs/lists.js +597 -0
  131. package/dist/handlers/tool-configs/lists.js.map +1 -0
  132. package/dist/handlers/tool-configs/paginated-people.d.ts +197 -0
  133. package/dist/handlers/tool-configs/paginated-people.d.ts.map +1 -0
  134. package/dist/handlers/tool-configs/paginated-people.js +256 -0
  135. package/dist/handlers/tool-configs/paginated-people.js.map +1 -0
  136. package/dist/handlers/tool-configs/people/activity-search.d.ts +98 -0
  137. package/dist/handlers/tool-configs/people/activity-search.d.ts.map +1 -0
  138. package/dist/handlers/tool-configs/people/activity-search.js +113 -0
  139. package/dist/handlers/tool-configs/people/activity-search.js.map +1 -0
  140. package/dist/handlers/tool-configs/people/advanced-search.d.ts +62 -0
  141. package/dist/handlers/tool-configs/people/advanced-search.d.ts.map +1 -0
  142. package/dist/handlers/tool-configs/people/advanced-search.js +74 -0
  143. package/dist/handlers/tool-configs/people/advanced-search.js.map +1 -0
  144. package/dist/handlers/tool-configs/people/crud.d.ts +63 -0
  145. package/dist/handlers/tool-configs/people/crud.d.ts.map +1 -0
  146. package/dist/handlers/tool-configs/people/crud.js +71 -0
  147. package/dist/handlers/tool-configs/people/crud.js.map +1 -0
  148. package/dist/handlers/tool-configs/people/date-search.d.ts +42 -0
  149. package/dist/handlers/tool-configs/people/date-search.d.ts.map +1 -0
  150. package/dist/handlers/tool-configs/people/date-search.js +93 -0
  151. package/dist/handlers/tool-configs/people/date-search.js.map +1 -0
  152. package/dist/handlers/tool-configs/people/formatters.d.ts +19 -0
  153. package/dist/handlers/tool-configs/people/formatters.d.ts.map +1 -0
  154. package/dist/handlers/tool-configs/people/formatters.js +98 -0
  155. package/dist/handlers/tool-configs/people/formatters.js.map +1 -0
  156. package/dist/handlers/tool-configs/people/index.d.ts +407 -0
  157. package/dist/handlers/tool-configs/people/index.d.ts.map +1 -0
  158. package/dist/handlers/tool-configs/people/index.js +30 -0
  159. package/dist/handlers/tool-configs/people/index.js.map +1 -0
  160. package/dist/handlers/tool-configs/people/notes.d.ts +38 -0
  161. package/dist/handlers/tool-configs/people/notes.d.ts.map +1 -0
  162. package/dist/handlers/tool-configs/people/notes.js +57 -0
  163. package/dist/handlers/tool-configs/people/notes.js.map +1 -0
  164. package/dist/handlers/tool-configs/people/relationships.d.ts +112 -0
  165. package/dist/handlers/tool-configs/people/relationships.d.ts.map +1 -0
  166. package/dist/handlers/tool-configs/people/relationships.js +173 -0
  167. package/dist/handlers/tool-configs/people/relationships.js.map +1 -0
  168. package/dist/handlers/tool-configs/people/search.d.ts +53 -0
  169. package/dist/handlers/tool-configs/people/search.d.ts.map +1 -0
  170. package/dist/handlers/tool-configs/people/search.js +61 -0
  171. package/dist/handlers/tool-configs/people/search.js.map +1 -0
  172. package/dist/handlers/tool-configs/people-fix-complete.d.ts +6 -0
  173. package/dist/handlers/tool-configs/people-fix-complete.d.ts.map +1 -0
  174. package/dist/handlers/tool-configs/people-fix-complete.js +76 -0
  175. package/dist/handlers/tool-configs/people-fix-complete.js.map +1 -0
  176. package/dist/handlers/tool-configs/people-fixed.d.ts +12 -0
  177. package/dist/handlers/tool-configs/people-fixed.d.ts.map +1 -0
  178. package/dist/handlers/tool-configs/people-fixed.js +58 -0
  179. package/dist/handlers/tool-configs/people-fixed.js.map +1 -0
  180. package/dist/handlers/tool-configs/people-types.d.ts +32 -0
  181. package/dist/handlers/tool-configs/people-types.d.ts.map +1 -0
  182. package/dist/handlers/tool-configs/people-types.js +5 -0
  183. package/dist/handlers/tool-configs/people-types.js.map +1 -0
  184. package/dist/handlers/tool-configs/people.d.ts +599 -0
  185. package/dist/handlers/tool-configs/people.d.ts.map +1 -0
  186. package/dist/handlers/tool-configs/people.js +817 -0
  187. package/dist/handlers/tool-configs/people.js.map +1 -0
  188. package/dist/handlers/tool-configs/prompts.d.ts +69 -0
  189. package/dist/handlers/tool-configs/prompts.d.ts.map +1 -0
  190. package/dist/handlers/tool-configs/prompts.js +90 -0
  191. package/dist/handlers/tool-configs/prompts.js.map +1 -0
  192. package/dist/handlers/tool-configs/rate-limited-people.d.ts +203 -0
  193. package/dist/handlers/tool-configs/rate-limited-people.d.ts.map +1 -0
  194. package/dist/handlers/tool-configs/rate-limited-people.js +44 -0
  195. package/dist/handlers/tool-configs/rate-limited-people.js.map +1 -0
  196. package/dist/handlers/tool-configs/records/index.d.ts +282 -0
  197. package/dist/handlers/tool-configs/records/index.d.ts.map +1 -0
  198. package/dist/handlers/tool-configs/records/index.js +277 -0
  199. package/dist/handlers/tool-configs/records/index.js.map +1 -0
  200. package/dist/handlers/tool-configs/records.d.ts +282 -0
  201. package/dist/handlers/tool-configs/records.d.ts.map +1 -0
  202. package/dist/handlers/tool-configs/records.js +277 -0
  203. package/dist/handlers/tool-configs/records.js.map +1 -0
  204. package/dist/handlers/tool-configs/resource-specific-tools.d.ts +15 -0
  205. package/dist/handlers/tool-configs/resource-specific-tools.d.ts.map +1 -0
  206. package/dist/handlers/tool-configs/resource-specific-tools.js +33 -0
  207. package/dist/handlers/tool-configs/resource-specific-tools.js.map +1 -0
  208. package/dist/handlers/tool-configs/tasks.d.ts +127 -0
  209. package/dist/handlers/tool-configs/tasks.d.ts.map +1 -0
  210. package/dist/handlers/tool-configs/tasks.js +95 -0
  211. package/dist/handlers/tool-configs/tasks.js.map +1 -0
  212. package/dist/handlers/tool-types.d.ts +47 -0
  213. package/dist/handlers/tool-types.d.ts.map +1 -0
  214. package/dist/handlers/tool-types.js +2 -0
  215. package/dist/handlers/tool-types.js.map +1 -0
  216. package/dist/handlers/tools/config-verifier.d.ts +27 -0
  217. package/dist/handlers/tools/config-verifier.d.ts.map +1 -0
  218. package/dist/handlers/tools/config-verifier.js +108 -0
  219. package/dist/handlers/tools/config-verifier.js.map +1 -0
  220. package/dist/handlers/tools/dispatcher/core.d.ts +12 -0
  221. package/dist/handlers/tools/dispatcher/core.d.ts.map +1 -0
  222. package/dist/handlers/tools/dispatcher/core.js +276 -0
  223. package/dist/handlers/tools/dispatcher/core.js.map +1 -0
  224. package/dist/handlers/tools/dispatcher/formatting.d.ts +17 -0
  225. package/dist/handlers/tools/dispatcher/formatting.d.ts.map +1 -0
  226. package/dist/handlers/tools/dispatcher/formatting.js +25 -0
  227. package/dist/handlers/tools/dispatcher/formatting.js.map +1 -0
  228. package/dist/handlers/tools/dispatcher/logging.d.ts +63 -0
  229. package/dist/handlers/tools/dispatcher/logging.d.ts.map +1 -0
  230. package/dist/handlers/tools/dispatcher/logging.js +108 -0
  231. package/dist/handlers/tools/dispatcher/logging.js.map +1 -0
  232. package/dist/handlers/tools/dispatcher/operations/batch.d.ts +29 -0
  233. package/dist/handlers/tools/dispatcher/operations/batch.d.ts.map +1 -0
  234. package/dist/handlers/tools/dispatcher/operations/batch.js +137 -0
  235. package/dist/handlers/tools/dispatcher/operations/batch.js.map +1 -0
  236. package/dist/handlers/tools/dispatcher/operations/crud.d.ts +25 -0
  237. package/dist/handlers/tools/dispatcher/operations/crud.d.ts.map +1 -0
  238. package/dist/handlers/tools/dispatcher/operations/crud.js +110 -0
  239. package/dist/handlers/tools/dispatcher/operations/crud.js.map +1 -0
  240. package/dist/handlers/tools/dispatcher/operations/details.d.ts +13 -0
  241. package/dist/handlers/tools/dispatcher/operations/details.d.ts.map +1 -0
  242. package/dist/handlers/tools/dispatcher/operations/details.js +52 -0
  243. package/dist/handlers/tools/dispatcher/operations/details.js.map +1 -0
  244. package/dist/handlers/tools/dispatcher/operations/info.d.ts +25 -0
  245. package/dist/handlers/tools/dispatcher/operations/info.d.ts.map +1 -0
  246. package/dist/handlers/tools/dispatcher/operations/info.js +82 -0
  247. package/dist/handlers/tools/dispatcher/operations/info.js.map +1 -0
  248. package/dist/handlers/tools/dispatcher/operations/lists.d.ts +62 -0
  249. package/dist/handlers/tools/dispatcher/operations/lists.d.ts.map +1 -0
  250. package/dist/handlers/tools/dispatcher/operations/lists.js +283 -0
  251. package/dist/handlers/tools/dispatcher/operations/lists.js.map +1 -0
  252. package/dist/handlers/tools/dispatcher/operations/notes.d.ts +17 -0
  253. package/dist/handlers/tools/dispatcher/operations/notes.d.ts.map +1 -0
  254. package/dist/handlers/tools/dispatcher/operations/notes.js +102 -0
  255. package/dist/handlers/tools/dispatcher/operations/notes.js.map +1 -0
  256. package/dist/handlers/tools/dispatcher/operations/search.d.ts +43 -0
  257. package/dist/handlers/tools/dispatcher/operations/search.d.ts.map +1 -0
  258. package/dist/handlers/tools/dispatcher/operations/search.js +190 -0
  259. package/dist/handlers/tools/dispatcher/operations/search.js.map +1 -0
  260. package/dist/handlers/tools/dispatcher/validation.d.ts +27 -0
  261. package/dist/handlers/tools/dispatcher/validation.d.ts.map +1 -0
  262. package/dist/handlers/tools/dispatcher/validation.js +47 -0
  263. package/dist/handlers/tools/dispatcher/validation.js.map +1 -0
  264. package/dist/handlers/tools/dispatcher.d.ts +11 -0
  265. package/dist/handlers/tools/dispatcher.d.ts.map +1 -0
  266. package/dist/handlers/tools/dispatcher.js +15 -0
  267. package/dist/handlers/tools/dispatcher.js.map +1 -0
  268. package/dist/handlers/tools/error-types.d.ts +33 -0
  269. package/dist/handlers/tools/error-types.d.ts.map +1 -0
  270. package/dist/handlers/tools/error-types.js +21 -0
  271. package/dist/handlers/tools/error-types.js.map +1 -0
  272. package/dist/handlers/tools/formatters.d.ts +43 -0
  273. package/dist/handlers/tools/formatters.d.ts.map +1 -0
  274. package/dist/handlers/tools/formatters.js +170 -0
  275. package/dist/handlers/tools/formatters.js.map +1 -0
  276. package/dist/handlers/tools/index.d.ts +15 -0
  277. package/dist/handlers/tools/index.d.ts.map +1 -0
  278. package/dist/handlers/tools/index.js +34 -0
  279. package/dist/handlers/tools/index.js.map +1 -0
  280. package/dist/handlers/tools/registry.d.ts +1874 -0
  281. package/dist/handlers/tools/registry.d.ts.map +1 -0
  282. package/dist/handlers/tools/registry.js +103 -0
  283. package/dist/handlers/tools/registry.js.map +1 -0
  284. package/dist/health/http-server.d.ts +24 -0
  285. package/dist/health/http-server.d.ts.map +1 -0
  286. package/dist/health/http-server.js +106 -0
  287. package/dist/health/http-server.js.map +1 -0
  288. package/dist/index.d.ts +3 -0
  289. package/dist/index.d.ts.map +1 -0
  290. package/dist/index.js +238 -0
  291. package/dist/index.js.map +1 -0
  292. package/dist/objects/base-operations.d.ts +41 -0
  293. package/dist/objects/base-operations.d.ts.map +1 -0
  294. package/dist/objects/base-operations.js +116 -0
  295. package/dist/objects/base-operations.js.map +1 -0
  296. package/dist/objects/batch-companies.d.ts +112 -0
  297. package/dist/objects/batch-companies.d.ts.map +1 -0
  298. package/dist/objects/batch-companies.js +347 -0
  299. package/dist/objects/batch-companies.js.map +1 -0
  300. package/dist/objects/companies/attributes.d.ts +83 -0
  301. package/dist/objects/companies/attributes.d.ts.map +1 -0
  302. package/dist/objects/companies/attributes.js +426 -0
  303. package/dist/objects/companies/attributes.js.map +1 -0
  304. package/dist/objects/companies/basic.d.ts +117 -0
  305. package/dist/objects/companies/basic.d.ts.map +1 -0
  306. package/dist/objects/companies/basic.js +367 -0
  307. package/dist/objects/companies/basic.js.map +1 -0
  308. package/dist/objects/companies/batch.d.ts +6 -0
  309. package/dist/objects/companies/batch.d.ts.map +1 -0
  310. package/dist/objects/companies/batch.js +6 -0
  311. package/dist/objects/companies/batch.js.map +1 -0
  312. package/dist/objects/companies/index.d.ts +13 -0
  313. package/dist/objects/companies/index.d.ts.map +1 -0
  314. package/dist/objects/companies/index.js +17 -0
  315. package/dist/objects/companies/index.js.map +1 -0
  316. package/dist/objects/companies/notes.d.ts +26 -0
  317. package/dist/objects/companies/notes.d.ts.map +1 -0
  318. package/dist/objects/companies/notes.js +199 -0
  319. package/dist/objects/companies/notes.js.map +1 -0
  320. package/dist/objects/companies/relationships.d.ts +41 -0
  321. package/dist/objects/companies/relationships.d.ts.map +1 -0
  322. package/dist/objects/companies/relationships.js +142 -0
  323. package/dist/objects/companies/relationships.js.map +1 -0
  324. package/dist/objects/companies/search.d.ts +158 -0
  325. package/dist/objects/companies/search.d.ts.map +1 -0
  326. package/dist/objects/companies/search.js +463 -0
  327. package/dist/objects/companies/search.js.map +1 -0
  328. package/dist/objects/companies/types.d.ts +27 -0
  329. package/dist/objects/companies/types.d.ts.map +1 -0
  330. package/dist/objects/companies/types.js +3 -0
  331. package/dist/objects/companies/types.js.map +1 -0
  332. package/dist/objects/lists.d.ts +148 -0
  333. package/dist/objects/lists.d.ts.map +1 -0
  334. package/dist/objects/lists.js +586 -0
  335. package/dist/objects/lists.js.map +1 -0
  336. package/dist/objects/paginated-people.d.ts +50 -0
  337. package/dist/objects/paginated-people.d.ts.map +1 -0
  338. package/dist/objects/paginated-people.js +171 -0
  339. package/dist/objects/paginated-people.js.map +1 -0
  340. package/dist/objects/people/basic.d.ts +90 -0
  341. package/dist/objects/people/basic.d.ts.map +1 -0
  342. package/dist/objects/people/basic.js +157 -0
  343. package/dist/objects/people/basic.js.map +1 -0
  344. package/dist/objects/people/batch.d.ts +24 -0
  345. package/dist/objects/people/batch.d.ts.map +1 -0
  346. package/dist/objects/people/batch.js +145 -0
  347. package/dist/objects/people/batch.js.map +1 -0
  348. package/dist/objects/people/index.d.ts +11 -0
  349. package/dist/objects/people/index.d.ts.map +1 -0
  350. package/dist/objects/people/index.js +17 -0
  351. package/dist/objects/people/index.js.map +1 -0
  352. package/dist/objects/people/notes.d.ts +20 -0
  353. package/dist/objects/people/notes.d.ts.map +1 -0
  354. package/dist/objects/people/notes.js +60 -0
  355. package/dist/objects/people/notes.js.map +1 -0
  356. package/dist/objects/people/relationships.d.ts +23 -0
  357. package/dist/objects/people/relationships.d.ts.map +1 -0
  358. package/dist/objects/people/relationships.js +116 -0
  359. package/dist/objects/people/relationships.js.map +1 -0
  360. package/dist/objects/people/search.d.ts +83 -0
  361. package/dist/objects/people/search.d.ts.map +1 -0
  362. package/dist/objects/people/search.js +286 -0
  363. package/dist/objects/people/search.js.map +1 -0
  364. package/dist/objects/people/types.d.ts +37 -0
  365. package/dist/objects/people/types.d.ts.map +1 -0
  366. package/dist/objects/people/types.js +71 -0
  367. package/dist/objects/people/types.js.map +1 -0
  368. package/dist/objects/people-write.d.ts +71 -0
  369. package/dist/objects/people-write.d.ts.map +1 -0
  370. package/dist/objects/people-write.js +261 -0
  371. package/dist/objects/people-write.js.map +1 -0
  372. package/dist/objects/records/formatters.d.ts +20 -0
  373. package/dist/objects/records/formatters.d.ts.map +1 -0
  374. package/dist/objects/records/formatters.js +47 -0
  375. package/dist/objects/records/formatters.js.map +1 -0
  376. package/dist/objects/records/index.d.ts +74 -0
  377. package/dist/objects/records/index.d.ts.map +1 -0
  378. package/dist/objects/records/index.js +374 -0
  379. package/dist/objects/records/index.js.map +1 -0
  380. package/dist/objects/records.d.ts +88 -0
  381. package/dist/objects/records.d.ts.map +1 -0
  382. package/dist/objects/records.js +432 -0
  383. package/dist/objects/records.js.map +1 -0
  384. package/dist/objects/tasks.d.ts +19 -0
  385. package/dist/objects/tasks.d.ts.map +1 -0
  386. package/dist/objects/tasks.js +23 -0
  387. package/dist/objects/tasks.js.map +1 -0
  388. package/dist/prompts/error-handler.d.ts +28 -0
  389. package/dist/prompts/error-handler.d.ts.map +1 -0
  390. package/dist/prompts/error-handler.js +47 -0
  391. package/dist/prompts/error-handler.js.map +1 -0
  392. package/dist/prompts/handlers.d.ts +49 -0
  393. package/dist/prompts/handlers.d.ts.map +1 -0
  394. package/dist/prompts/handlers.js +353 -0
  395. package/dist/prompts/handlers.js.map +1 -0
  396. package/dist/prompts/index.d.ts +11 -0
  397. package/dist/prompts/index.d.ts.map +1 -0
  398. package/dist/prompts/index.js +15 -0
  399. package/dist/prompts/index.js.map +1 -0
  400. package/dist/prompts/templates/companies.d.ts +10 -0
  401. package/dist/prompts/templates/companies.d.ts.map +1 -0
  402. package/dist/prompts/templates/companies.js +128 -0
  403. package/dist/prompts/templates/companies.js.map +1 -0
  404. package/dist/prompts/templates/index.d.ts +42 -0
  405. package/dist/prompts/templates/index.d.ts.map +1 -0
  406. package/dist/prompts/templates/index.js +58 -0
  407. package/dist/prompts/templates/index.js.map +1 -0
  408. package/dist/prompts/templates/lists.d.ts +10 -0
  409. package/dist/prompts/templates/lists.d.ts.map +1 -0
  410. package/dist/prompts/templates/lists.js +127 -0
  411. package/dist/prompts/templates/lists.js.map +1 -0
  412. package/dist/prompts/templates/notes.d.ts +10 -0
  413. package/dist/prompts/templates/notes.d.ts.map +1 -0
  414. package/dist/prompts/templates/notes.js +119 -0
  415. package/dist/prompts/templates/notes.js.map +1 -0
  416. package/dist/prompts/templates/people.d.ts +10 -0
  417. package/dist/prompts/templates/people.d.ts.map +1 -0
  418. package/dist/prompts/templates/people.js +127 -0
  419. package/dist/prompts/templates/people.js.map +1 -0
  420. package/dist/prompts/types.d.ts +52 -0
  421. package/dist/prompts/types.d.ts.map +1 -0
  422. package/dist/prompts/types.js +5 -0
  423. package/dist/prompts/types.js.map +1 -0
  424. package/dist/types/attio.d.ts +424 -0
  425. package/dist/types/attio.d.ts.map +1 -0
  426. package/dist/types/attio.js +116 -0
  427. package/dist/types/attio.js.map +1 -0
  428. package/dist/types/company-types.d.ts +52 -0
  429. package/dist/types/company-types.d.ts.map +1 -0
  430. package/dist/types/company-types.js +5 -0
  431. package/dist/types/company-types.js.map +1 -0
  432. package/dist/types/tool-types.d.ts +262 -0
  433. package/dist/types/tool-types.d.ts.map +1 -0
  434. package/dist/types/tool-types.js +6 -0
  435. package/dist/types/tool-types.js.map +1 -0
  436. package/dist/utils/api-fallback.d.ts +39 -0
  437. package/dist/utils/api-fallback.d.ts.map +1 -0
  438. package/dist/utils/api-fallback.js +94 -0
  439. package/dist/utils/api-fallback.js.map +1 -0
  440. package/dist/utils/attribute-mapping/attribute-mappers.d.ts +39 -0
  441. package/dist/utils/attribute-mapping/attribute-mappers.d.ts.map +1 -0
  442. package/dist/utils/attribute-mapping/attribute-mappers.js +394 -0
  443. package/dist/utils/attribute-mapping/attribute-mappers.js.map +1 -0
  444. package/dist/utils/attribute-mapping/filter-translator.d.ts +9 -0
  445. package/dist/utils/attribute-mapping/filter-translator.d.ts.map +1 -0
  446. package/dist/utils/attribute-mapping/filter-translator.js +104 -0
  447. package/dist/utils/attribute-mapping/filter-translator.js.map +1 -0
  448. package/dist/utils/attribute-mapping/index.d.ts +10 -0
  449. package/dist/utils/attribute-mapping/index.d.ts.map +1 -0
  450. package/dist/utils/attribute-mapping/index.js +12 -0
  451. package/dist/utils/attribute-mapping/index.js.map +1 -0
  452. package/dist/utils/attribute-mapping/legacy-maps.d.ts +11 -0
  453. package/dist/utils/attribute-mapping/legacy-maps.d.ts.map +1 -0
  454. package/dist/utils/attribute-mapping/legacy-maps.js +54 -0
  455. package/dist/utils/attribute-mapping/legacy-maps.js.map +1 -0
  456. package/dist/utils/attribute-mapping/mapping-utils.d.ts +90 -0
  457. package/dist/utils/attribute-mapping/mapping-utils.d.ts.map +1 -0
  458. package/dist/utils/attribute-mapping/mapping-utils.js +145 -0
  459. package/dist/utils/attribute-mapping/mapping-utils.js.map +1 -0
  460. package/dist/utils/auto-discovery.d.ts +22 -0
  461. package/dist/utils/auto-discovery.d.ts.map +1 -0
  462. package/dist/utils/auto-discovery.js +143 -0
  463. package/dist/utils/auto-discovery.js.map +1 -0
  464. package/dist/utils/cli-colors.d.ts +36 -0
  465. package/dist/utils/cli-colors.d.ts.map +1 -0
  466. package/dist/utils/cli-colors.js +35 -0
  467. package/dist/utils/cli-colors.js.map +1 -0
  468. package/dist/utils/config-loader.d.ts +41 -0
  469. package/dist/utils/config-loader.d.ts.map +1 -0
  470. package/dist/utils/config-loader.js +167 -0
  471. package/dist/utils/config-loader.js.map +1 -0
  472. package/dist/utils/config-migration.d.ts +140 -0
  473. package/dist/utils/config-migration.d.ts.map +1 -0
  474. package/dist/utils/config-migration.js +310 -0
  475. package/dist/utils/config-migration.js.map +1 -0
  476. package/dist/utils/date-utils.d.ts +63 -0
  477. package/dist/utils/date-utils.d.ts.map +1 -0
  478. package/dist/utils/date-utils.js +329 -0
  479. package/dist/utils/date-utils.js.map +1 -0
  480. package/dist/utils/debug-b2b-segment.d.ts +2 -0
  481. package/dist/utils/debug-b2b-segment.d.ts.map +1 -0
  482. package/dist/utils/debug-b2b-segment.js +67 -0
  483. package/dist/utils/debug-b2b-segment.js.map +1 -0
  484. package/dist/utils/domain-utils.d.ts +46 -0
  485. package/dist/utils/domain-utils.d.ts.map +1 -0
  486. package/dist/utils/domain-utils.js +143 -0
  487. package/dist/utils/domain-utils.js.map +1 -0
  488. package/dist/utils/dynamic-import.d.ts +33 -0
  489. package/dist/utils/dynamic-import.d.ts.map +1 -0
  490. package/dist/utils/dynamic-import.js +41 -0
  491. package/dist/utils/dynamic-import.js.map +1 -0
  492. package/dist/utils/error-enhancer.d.ts +23 -0
  493. package/dist/utils/error-enhancer.d.ts.map +1 -0
  494. package/dist/utils/error-enhancer.js +188 -0
  495. package/dist/utils/error-enhancer.js.map +1 -0
  496. package/dist/utils/error-handler.d.ts +89 -0
  497. package/dist/utils/error-handler.d.ts.map +1 -0
  498. package/dist/utils/error-handler.js +336 -0
  499. package/dist/utils/error-handler.js.map +1 -0
  500. package/dist/utils/filters/builders/activity.d.ts +13 -0
  501. package/dist/utils/filters/builders/activity.d.ts.map +1 -0
  502. package/dist/utils/filters/builders/activity.js +65 -0
  503. package/dist/utils/filters/builders/activity.js.map +1 -0
  504. package/dist/utils/filters/builders/basic.d.ts +13 -0
  505. package/dist/utils/filters/builders/basic.d.ts.map +1 -0
  506. package/dist/utils/filters/builders/basic.js +36 -0
  507. package/dist/utils/filters/builders/basic.js.map +1 -0
  508. package/dist/utils/filters/builders/complex.d.ts +31 -0
  509. package/dist/utils/filters/builders/complex.d.ts.map +1 -0
  510. package/dist/utils/filters/builders/complex.js +92 -0
  511. package/dist/utils/filters/builders/complex.js.map +1 -0
  512. package/dist/utils/filters/builders/date.d.ts +17 -0
  513. package/dist/utils/filters/builders/date.d.ts.map +1 -0
  514. package/dist/utils/filters/builders/date.js +51 -0
  515. package/dist/utils/filters/builders/date.js.map +1 -0
  516. package/dist/utils/filters/builders/index.d.ts +8 -0
  517. package/dist/utils/filters/builders/index.d.ts.map +1 -0
  518. package/dist/utils/filters/builders/index.js +8 -0
  519. package/dist/utils/filters/builders/index.js.map +1 -0
  520. package/dist/utils/filters/builders/numeric.d.ts +17 -0
  521. package/dist/utils/filters/builders/numeric.d.ts.map +1 -0
  522. package/dist/utils/filters/builders/numeric.js +61 -0
  523. package/dist/utils/filters/builders/numeric.js.map +1 -0
  524. package/dist/utils/filters/builders/text.d.ts +17 -0
  525. package/dist/utils/filters/builders/text.d.ts.map +1 -0
  526. package/dist/utils/filters/builders/text.js +47 -0
  527. package/dist/utils/filters/builders/text.js.map +1 -0
  528. package/dist/utils/filters/builders/types.d.ts +2 -0
  529. package/dist/utils/filters/builders/types.d.ts.map +1 -0
  530. package/dist/utils/filters/builders/types.js +2 -0
  531. package/dist/utils/filters/builders/types.js.map +1 -0
  532. package/dist/utils/filters/builders.d.ts +2 -0
  533. package/dist/utils/filters/builders.d.ts.map +1 -0
  534. package/dist/utils/filters/builders.js +2 -0
  535. package/dist/utils/filters/builders.js.map +1 -0
  536. package/dist/utils/filters/cache.d.ts +80 -0
  537. package/dist/utils/filters/cache.d.ts.map +1 -0
  538. package/dist/utils/filters/cache.js +212 -0
  539. package/dist/utils/filters/cache.js.map +1 -0
  540. package/dist/utils/filters/index.d.ts +51 -0
  541. package/dist/utils/filters/index.d.ts.map +1 -0
  542. package/dist/utils/filters/index.js +67 -0
  543. package/dist/utils/filters/index.js.map +1 -0
  544. package/dist/utils/filters/operators.d.ts +65 -0
  545. package/dist/utils/filters/operators.d.ts.map +1 -0
  546. package/dist/utils/filters/operators.js +214 -0
  547. package/dist/utils/filters/operators.js.map +1 -0
  548. package/dist/utils/filters/relationship.d.ts +81 -0
  549. package/dist/utils/filters/relationship.d.ts.map +1 -0
  550. package/dist/utils/filters/relationship.js +393 -0
  551. package/dist/utils/filters/relationship.js.map +1 -0
  552. package/dist/utils/filters/translators.d.ts +120 -0
  553. package/dist/utils/filters/translators.d.ts.map +1 -0
  554. package/dist/utils/filters/translators.js +397 -0
  555. package/dist/utils/filters/translators.js.map +1 -0
  556. package/dist/utils/filters/types.d.ts +77 -0
  557. package/dist/utils/filters/types.d.ts.map +1 -0
  558. package/dist/utils/filters/types.js +85 -0
  559. package/dist/utils/filters/types.js.map +1 -0
  560. package/dist/utils/filters/utils.d.ts +86 -0
  561. package/dist/utils/filters/utils.d.ts.map +1 -0
  562. package/dist/utils/filters/utils.js +142 -0
  563. package/dist/utils/filters/utils.js.map +1 -0
  564. package/dist/utils/filters/validation-utils.d.ts +123 -0
  565. package/dist/utils/filters/validation-utils.d.ts.map +1 -0
  566. package/dist/utils/filters/validation-utils.js +282 -0
  567. package/dist/utils/filters/validation-utils.js.map +1 -0
  568. package/dist/utils/filters/validators.d.ts +73 -0
  569. package/dist/utils/filters/validators.d.ts.map +1 -0
  570. package/dist/utils/filters/validators.js +311 -0
  571. package/dist/utils/filters/validators.js.map +1 -0
  572. package/dist/utils/json-serializer.d.ts +68 -0
  573. package/dist/utils/json-serializer.d.ts.map +1 -0
  574. package/dist/utils/json-serializer.js +235 -0
  575. package/dist/utils/json-serializer.js.map +1 -0
  576. package/dist/utils/logger.d.ts +226 -0
  577. package/dist/utils/logger.d.ts.map +1 -0
  578. package/dist/utils/logger.js +323 -0
  579. package/dist/utils/logger.js.map +1 -0
  580. package/dist/utils/numeric-utils.d.ts +27 -0
  581. package/dist/utils/numeric-utils.d.ts.map +1 -0
  582. package/dist/utils/numeric-utils.js +83 -0
  583. package/dist/utils/numeric-utils.js.map +1 -0
  584. package/dist/utils/pagination.d.ts +85 -0
  585. package/dist/utils/pagination.d.ts.map +1 -0
  586. package/dist/utils/pagination.js +169 -0
  587. package/dist/utils/pagination.js.map +1 -0
  588. package/dist/utils/person-lookup.d.ts +35 -0
  589. package/dist/utils/person-lookup.d.ts.map +1 -0
  590. package/dist/utils/person-lookup.js +67 -0
  591. package/dist/utils/person-lookup.js.map +1 -0
  592. package/dist/utils/rate-limiter.d.ts +82 -0
  593. package/dist/utils/rate-limiter.d.ts.map +1 -0
  594. package/dist/utils/rate-limiter.js +159 -0
  595. package/dist/utils/rate-limiter.js.map +1 -0
  596. package/dist/utils/record-utils.d.ts +74 -0
  597. package/dist/utils/record-utils.d.ts.map +1 -0
  598. package/dist/utils/record-utils.js +312 -0
  599. package/dist/utils/record-utils.js.map +1 -0
  600. package/dist/utils/relationship-utils.d.ts +61 -0
  601. package/dist/utils/relationship-utils.d.ts.map +1 -0
  602. package/dist/utils/relationship-utils.js +242 -0
  603. package/dist/utils/relationship-utils.js.map +1 -0
  604. package/dist/utils/response-formatter.d.ts +121 -0
  605. package/dist/utils/response-formatter.d.ts.map +1 -0
  606. package/dist/utils/response-formatter.js +188 -0
  607. package/dist/utils/response-formatter.js.map +1 -0
  608. package/dist/utils/uri-parser.d.ts +18 -0
  609. package/dist/utils/uri-parser.d.ts.map +1 -0
  610. package/dist/utils/uri-parser.js +31 -0
  611. package/dist/utils/uri-parser.js.map +1 -0
  612. package/dist/utils/validation.d.ts +59 -0
  613. package/dist/utils/validation.d.ts.map +1 -0
  614. package/dist/utils/validation.js +264 -0
  615. package/dist/utils/validation.js.map +1 -0
  616. package/dist/utils/value-matcher.d.ts +58 -0
  617. package/dist/utils/value-matcher.d.ts.map +1 -0
  618. package/dist/utils/value-matcher.js +131 -0
  619. package/dist/utils/value-matcher.js.map +1 -0
  620. package/dist/validators/attribute-validator.d.ts +59 -0
  621. package/dist/validators/attribute-validator.d.ts.map +1 -0
  622. package/dist/validators/attribute-validator.js +531 -0
  623. package/dist/validators/attribute-validator.js.map +1 -0
  624. package/dist/validators/company/field_detector.d.ts +5 -0
  625. package/dist/validators/company/field_detector.d.ts.map +1 -0
  626. package/dist/validators/company/field_detector.js +95 -0
  627. package/dist/validators/company/field_detector.js.map +1 -0
  628. package/dist/validators/company/index.d.ts +26 -0
  629. package/dist/validators/company/index.d.ts.map +1 -0
  630. package/dist/validators/company/index.js +433 -0
  631. package/dist/validators/company/index.js.map +1 -0
  632. package/dist/validators/company/type_cache.d.ts +14 -0
  633. package/dist/validators/company/type_cache.d.ts.map +1 -0
  634. package/dist/validators/company/type_cache.js +28 -0
  635. package/dist/validators/company/type_cache.js.map +1 -0
  636. package/dist/validators/company/types.d.ts +8 -0
  637. package/dist/validators/company/types.d.ts.map +1 -0
  638. package/dist/validators/company/types.js +2 -0
  639. package/dist/validators/company/types.js.map +1 -0
  640. package/dist/validators/company-validator.d.ts +2 -0
  641. package/dist/validators/company-validator.d.ts.map +1 -0
  642. package/dist/validators/company-validator.js +2 -0
  643. package/dist/validators/company-validator.js.map +1 -0
  644. package/package.json +167 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric-utils.js","sourceRoot":"","sources":["../../src/utils/numeric-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAYxD;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAmB;IACtD,iDAAiD;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,oDAAoD;QACpD,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8BAA8B;IAC9B,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAED,uDAAuD;IACvD,IACE,KAAK,CAAC,GAAG,KAAK,SAAS;QACvB,KAAK,CAAC,GAAG,KAAK,SAAS;QACvB,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EACrB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,CAAC,GAAG,iCAAiC,KAAK,CAAC,GAAG,GAAG,CACtF,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACtC,aAAqB,EACrB,KAAmB;IAEnB,IAAI,CAAC;QACH,6BAA6B;QAC7B,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAE5B,MAAM,OAAO,GAAsB,EAAE,CAAC;QAEtC,0BAA0B;QAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;gBAClC,SAAS,EAAE,mBAAmB,CAAC,MAAM;gBACrC,KAAK,EAAE,KAAK,CAAC,MAAM;aACpB,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACtC,CAAC;QAED,2CAA2C;QAC3C,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;gBAClC,SAAS,EAAE,mBAAmB,CAAC,sBAAsB;gBACrD,KAAK,EAAE,KAAK,CAAC,GAAG;aACjB,CAAC,CAAC;QACL,CAAC;QAED,wCAAwC;QACxC,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;gBAClC,SAAS,EAAE,mBAAmB,CAAC,mBAAmB;gBAClD,KAAK,EAAE,KAAK,CAAC,GAAG;aACjB,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,OAAO;YACP,mFAAmF;YACnF,QAAQ,EAAE,KAAK;SAChB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,oCAAoC,YAAY,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Pagination utilities for Attio MCP server
3
+ * Provides functions for implementing efficient pagination with filtered results
4
+ */
5
+ import { AttioRecord } from '../types/attio.js';
6
+ /**
7
+ * Standard pagination metadata interface
8
+ */
9
+ export interface PaginationMetadata {
10
+ /** Total number of records available */
11
+ totalCount: number;
12
+ /** Current page number (1-based) */
13
+ currentPage: number;
14
+ /** Number of records per page */
15
+ pageSize: number;
16
+ /** Total number of pages available */
17
+ totalPages: number;
18
+ /** Whether there are more pages available */
19
+ hasMore: boolean;
20
+ /** URL for the next page (if available) */
21
+ nextPageUrl?: string;
22
+ /** URL for the previous page (if available) */
23
+ prevPageUrl?: string;
24
+ }
25
+ /**
26
+ * Paginated response interface
27
+ */
28
+ export interface PaginatedResponse<T> {
29
+ /** Results for the current page */
30
+ results: T[];
31
+ /** Pagination metadata */
32
+ pagination: PaginationMetadata;
33
+ }
34
+ /**
35
+ * Creates a paginated response object with metadata
36
+ *
37
+ * @param results - The current page of results
38
+ * @param totalCount - The total number of results available
39
+ * @param page - The current page number (1-based)
40
+ * @param pageSize - The number of results per page
41
+ * @param baseUrl - Optional base URL for constructing next/prev page URLs
42
+ * @returns Paginated response object
43
+ */
44
+ export declare function createPaginatedResponse<T>(results: T[], totalCount: number, page?: number, pageSize?: number, baseUrl?: string): PaginatedResponse<T>;
45
+ /**
46
+ * Applies pagination to a list of records
47
+ *
48
+ * @param records - The full list of records to paginate
49
+ * @param page - The page number to return (1-based)
50
+ * @param pageSize - The number of records per page
51
+ * @returns Paginated response with the requested page of records
52
+ */
53
+ export declare function paginateRecords<T>(records: T[], page?: number, pageSize?: number): PaginatedResponse<T>;
54
+ /**
55
+ * Applies pagination parameters to a query
56
+ *
57
+ * @param pageParam - The page parameter from the request
58
+ * @param pageSizeParam - The page size parameter from the request
59
+ * @returns Object with normalized limit and offset values
60
+ */
61
+ export declare function getPaginationParams(pageParam?: number | string, pageSizeParam?: number | string): {
62
+ limit: number;
63
+ offset: number;
64
+ };
65
+ /**
66
+ * Processes API responses with cursor-based pagination into a standardized paginated response
67
+ *
68
+ * @param apiResponse - The API response object with cursor-based pagination
69
+ * @param records - The records from the response
70
+ * @param page - The current page number (1-based)
71
+ * @param pageSize - The number of records per page
72
+ * @param baseUrl - Optional base URL for constructing next/prev page URLs
73
+ * @returns Standardized paginated response
74
+ */
75
+ export declare function processCursorPagination<T extends AttioRecord>(apiResponse: any, records: T[], page?: number, pageSize?: number, baseUrl?: string): PaginatedResponse<T>;
76
+ /**
77
+ * Fetches all pages of results for a paginated query
78
+ *
79
+ * @param queryFn - Function that fetches a page of results
80
+ * @param pageSize - Page size to use for fetching
81
+ * @param maxPages - Maximum number of pages to fetch
82
+ * @returns All results combined
83
+ */
84
+ export declare function fetchAllPages<T>(queryFn: (limit: number, offset: number) => Promise<T[]>, pageSize?: number, maxPages?: number): Promise<T[]>;
85
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/utils/pagination.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IAEnB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IAEpB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IAEjB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IAEnB,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IAEjB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,mCAAmC;IACnC,OAAO,EAAE,CAAC,EAAE,CAAC;IAEb,0BAA0B;IAC1B,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EACvC,OAAO,EAAE,CAAC,EAAE,EACZ,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,MAAU,EAChB,QAAQ,GAAE,MAAW,EACrB,OAAO,CAAC,EAAE,MAAM,GACf,iBAAiB,CAAC,CAAC,CAAC,CAqCtB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,OAAO,EAAE,CAAC,EAAE,EACZ,IAAI,GAAE,MAAU,EAChB,QAAQ,GAAE,MAAW,GACpB,iBAAiB,CAAC,CAAC,CAAC,CAmBtB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAC9B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA+BnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,WAAW,EAC3D,WAAW,EAAE,GAAG,EAChB,OAAO,EAAE,CAAC,EAAE,EACZ,IAAI,GAAE,MAAU,EAChB,QAAQ,GAAE,MAAW,EACrB,OAAO,CAAC,EAAE,MAAM,GACf,iBAAiB,CAAC,CAAC,CAAC,CA+CtB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EACxD,QAAQ,GAAE,MAAW,EACrB,QAAQ,GAAE,MAAW,GACpB,OAAO,CAAC,CAAC,EAAE,CAAC,CAsBd"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Creates a paginated response object with metadata
3
+ *
4
+ * @param results - The current page of results
5
+ * @param totalCount - The total number of results available
6
+ * @param page - The current page number (1-based)
7
+ * @param pageSize - The number of results per page
8
+ * @param baseUrl - Optional base URL for constructing next/prev page URLs
9
+ * @returns Paginated response object
10
+ */
11
+ export function createPaginatedResponse(results, totalCount, page = 1, pageSize = 20, baseUrl) {
12
+ // Calculate total pages
13
+ const totalPages = Math.max(1, Math.ceil(totalCount / pageSize));
14
+ // Determine if there are more pages
15
+ const hasMore = page < totalPages;
16
+ // Pagination metadata
17
+ const pagination = {
18
+ totalCount,
19
+ currentPage: page,
20
+ pageSize,
21
+ totalPages,
22
+ hasMore,
23
+ };
24
+ // Add URLs if base URL is provided
25
+ if (baseUrl) {
26
+ // Create next page URL if there are more pages
27
+ if (hasMore) {
28
+ pagination.nextPageUrl = `${baseUrl}?page=${page + 1}&pageSize=${pageSize}`;
29
+ }
30
+ // Create previous page URL if not on first page
31
+ if (page > 1) {
32
+ pagination.prevPageUrl = `${baseUrl}?page=${page - 1}&pageSize=${pageSize}`;
33
+ }
34
+ }
35
+ return {
36
+ results,
37
+ pagination,
38
+ };
39
+ }
40
+ /**
41
+ * Applies pagination to a list of records
42
+ *
43
+ * @param records - The full list of records to paginate
44
+ * @param page - The page number to return (1-based)
45
+ * @param pageSize - The number of records per page
46
+ * @returns Paginated response with the requested page of records
47
+ */
48
+ export function paginateRecords(records, page = 1, pageSize = 20) {
49
+ // Ensure valid pagination parameters
50
+ const validPage = Math.max(1, page);
51
+ const validPageSize = Math.max(1, Math.min(100, pageSize)); // Limit page size to 100
52
+ // Calculate start and end indices
53
+ const startIndex = (validPage - 1) * validPageSize;
54
+ const endIndex = startIndex + validPageSize;
55
+ // Extract the requested page of records
56
+ const paginatedResults = records.slice(startIndex, endIndex);
57
+ // Create and return paginated response
58
+ return createPaginatedResponse(paginatedResults, records.length, validPage, validPageSize);
59
+ }
60
+ /**
61
+ * Applies pagination parameters to a query
62
+ *
63
+ * @param pageParam - The page parameter from the request
64
+ * @param pageSizeParam - The page size parameter from the request
65
+ * @returns Object with normalized limit and offset values
66
+ */
67
+ export function getPaginationParams(pageParam, pageSizeParam) {
68
+ // Default values
69
+ const defaultPageSize = 20;
70
+ const defaultPage = 1;
71
+ const maxPageSize = 100;
72
+ // Parse and validate page
73
+ let page = defaultPage;
74
+ if (pageParam !== undefined) {
75
+ const parsedPage = Number(pageParam);
76
+ if (!isNaN(parsedPage) && parsedPage > 0) {
77
+ page = parsedPage;
78
+ }
79
+ }
80
+ // Parse and validate page size
81
+ let pageSize = defaultPageSize;
82
+ if (pageSizeParam !== undefined) {
83
+ const parsedPageSize = Number(pageSizeParam);
84
+ if (!isNaN(parsedPageSize) && parsedPageSize > 0) {
85
+ pageSize = Math.min(parsedPageSize, maxPageSize);
86
+ }
87
+ }
88
+ // Calculate offset from page and page size
89
+ const offset = (page - 1) * pageSize;
90
+ return {
91
+ limit: pageSize,
92
+ offset,
93
+ };
94
+ }
95
+ /**
96
+ * Processes API responses with cursor-based pagination into a standardized paginated response
97
+ *
98
+ * @param apiResponse - The API response object with cursor-based pagination
99
+ * @param records - The records from the response
100
+ * @param page - The current page number (1-based)
101
+ * @param pageSize - The number of records per page
102
+ * @param baseUrl - Optional base URL for constructing next/prev page URLs
103
+ * @returns Standardized paginated response
104
+ */
105
+ export function processCursorPagination(apiResponse, records, page = 1, pageSize = 20, baseUrl) {
106
+ // Extract pagination metadata from the API response
107
+ const totalCount = apiResponse.pagination?.total_count || records.length;
108
+ const hasMore = apiResponse.has_more || apiResponse.pagination?.next_cursor !== undefined;
109
+ // Calculate total pages based on total count and page size
110
+ const totalPages = Math.max(1, Math.ceil(totalCount / pageSize));
111
+ // Create pagination metadata
112
+ const pagination = {
113
+ totalCount,
114
+ currentPage: page,
115
+ pageSize,
116
+ totalPages,
117
+ hasMore,
118
+ };
119
+ // Add URLs if base URL is provided
120
+ if (baseUrl) {
121
+ // Create next page URL if there's a next cursor
122
+ if (hasMore) {
123
+ const nextCursor = apiResponse.next_cursor || apiResponse.pagination?.next_cursor;
124
+ if (nextCursor) {
125
+ pagination.nextPageUrl = `${baseUrl}?cursor=${encodeURIComponent(nextCursor)}&pageSize=${pageSize}`;
126
+ }
127
+ else {
128
+ pagination.nextPageUrl = `${baseUrl}?page=${page + 1}&pageSize=${pageSize}`;
129
+ }
130
+ }
131
+ // Create previous page URL if not on first page
132
+ if (page > 1) {
133
+ pagination.prevPageUrl = `${baseUrl}?page=${page - 1}&pageSize=${pageSize}`;
134
+ }
135
+ }
136
+ return {
137
+ results: records,
138
+ pagination,
139
+ };
140
+ }
141
+ /**
142
+ * Fetches all pages of results for a paginated query
143
+ *
144
+ * @param queryFn - Function that fetches a page of results
145
+ * @param pageSize - Page size to use for fetching
146
+ * @param maxPages - Maximum number of pages to fetch
147
+ * @returns All results combined
148
+ */
149
+ export async function fetchAllPages(queryFn, pageSize = 20, maxPages = 10) {
150
+ let allResults = [];
151
+ let currentPage = 1;
152
+ let hasMoreResults = true;
153
+ while (hasMoreResults && currentPage <= maxPages) {
154
+ const offset = (currentPage - 1) * pageSize;
155
+ const pageResults = await queryFn(pageSize, offset);
156
+ // Add results to our collection
157
+ allResults = [...allResults, ...pageResults];
158
+ // Check if we've reached the end
159
+ if (pageResults.length < pageSize) {
160
+ hasMoreResults = false;
161
+ }
162
+ else {
163
+ // Move to the next page
164
+ currentPage++;
165
+ }
166
+ }
167
+ return allResults;
168
+ }
169
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/utils/pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Person ID validation regex
3
+ * Matches person_<alphanumeric> with minimum 10 characters after prefix
4
+ */
5
+ export declare const PERSON_ID_PATTERN: RegExp;
6
+ /**
7
+ * Interface for a record reference in Attio API format
8
+ */
9
+ export interface RecordReference {
10
+ target_record_id: string;
11
+ target_object: string;
12
+ }
13
+ /**
14
+ * Finds a person by name or validates a Person Record ID
15
+ *
16
+ * This utility function helps with looking up people for record references.
17
+ * It handles both:
18
+ * 1. Direct Person Record IDs (e.g., "person_01h8g3j5k7m9n1p3r")
19
+ * 2. Person names, which will be searched in Attio
20
+ *
21
+ * @param value - Either a Person Record ID or a person name
22
+ * @param operationContext - Context information for error messages
23
+ * @param recordIdType - Type of record the error is associated with (e.g., "company")
24
+ * @param recordId - ID of the record (e.g., company ID)
25
+ * @returns Formatted record reference for the Attio API
26
+ * @throws CompanyOperationError if person lookup fails or multiple matches found
27
+ */
28
+ export declare function findPersonReference(value: string, operationContext: string, recordIdType: string, recordId: string): Promise<RecordReference[]>;
29
+ /**
30
+ * Clears a person reference by returning an empty array
31
+ *
32
+ * @returns Empty array representing cleared person reference
33
+ */
34
+ export declare function clearPersonReference(): RecordReference[];
35
+ //# sourceMappingURL=person-lookup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"person-lookup.d.ts","sourceRoot":"","sources":["../../src/utils/person-lookup.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAA8B,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,EAAE,CAAC,CAwD5B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAExD"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Utility functions for looking up people and handling person references
3
+ */
4
+ import { searchPeople } from '../objects/people/search.js';
5
+ import { CompanyOperationError } from '../errors/company-errors.js';
6
+ /**
7
+ * Person ID validation regex
8
+ * Matches person_<alphanumeric> with minimum 10 characters after prefix
9
+ */
10
+ export const PERSON_ID_PATTERN = /^person_[a-zA-Z0-9]{10,}$/;
11
+ /**
12
+ * Finds a person by name or validates a Person Record ID
13
+ *
14
+ * This utility function helps with looking up people for record references.
15
+ * It handles both:
16
+ * 1. Direct Person Record IDs (e.g., "person_01h8g3j5k7m9n1p3r")
17
+ * 2. Person names, which will be searched in Attio
18
+ *
19
+ * @param value - Either a Person Record ID or a person name
20
+ * @param operationContext - Context information for error messages
21
+ * @param recordIdType - Type of record the error is associated with (e.g., "company")
22
+ * @param recordId - ID of the record (e.g., company ID)
23
+ * @returns Formatted record reference for the Attio API
24
+ * @throws CompanyOperationError if person lookup fails or multiple matches found
25
+ */
26
+ export async function findPersonReference(value, operationContext, recordIdType, recordId) {
27
+ // Check if it's already a valid Person Record ID
28
+ if (PERSON_ID_PATTERN.test(value)) {
29
+ return [{ target_record_id: value, target_object: 'people' }];
30
+ }
31
+ // It's a name, try to find the person by name
32
+ try {
33
+ const people = await searchPeople(value);
34
+ if (people.length === 0) {
35
+ throw new CompanyOperationError(operationContext, recordId, `Person named "${value}" not found. Please provide an exact name or a valid Person Record ID (e.g., person_xxxxxxxxxxxx).`);
36
+ }
37
+ if (people.length > 1) {
38
+ const names = people
39
+ .map((p) => p.values.name?.[0]?.value || 'Unknown Name')
40
+ .join(', ');
41
+ throw new CompanyOperationError(operationContext, recordId, `Multiple people found for "${value}": [${names}]. Please provide a more specific name or the Person Record ID.`);
42
+ }
43
+ const person = people[0];
44
+ const personRecordId = person.id?.record_id;
45
+ if (!personRecordId) {
46
+ throw new CompanyOperationError(operationContext, recordId, `Could not retrieve Record ID for person "${value}".`);
47
+ }
48
+ return [{ target_record_id: personRecordId, target_object: 'people' }];
49
+ }
50
+ catch (searchError) {
51
+ // Pass through CompanyOperationError
52
+ if (searchError instanceof CompanyOperationError) {
53
+ throw searchError;
54
+ }
55
+ // Wrap other errors
56
+ throw new CompanyOperationError(operationContext, recordId, `Failed to search for person "${value}": ${searchError instanceof Error ? searchError.message : String(searchError)}`);
57
+ }
58
+ }
59
+ /**
60
+ * Clears a person reference by returning an empty array
61
+ *
62
+ * @returns Empty array representing cleared person reference
63
+ */
64
+ export function clearPersonReference() {
65
+ return [];
66
+ }
67
+ //# sourceMappingURL=person-lookup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"person-lookup.js","sourceRoot":"","sources":["../../src/utils/person-lookup.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AAU7D;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAAa,EACb,gBAAwB,EACxB,YAAoB,EACpB,QAAgB;IAEhB,iDAAiD;IACjD,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,8CAA8C;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,qBAAqB,CAC7B,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,KAAK,oGAAoG,CAC3H,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,MAAM;iBACjB,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,cAAc,CAAC;iBAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,IAAI,qBAAqB,CAC7B,gBAAgB,EAChB,QAAQ,EACR,8BAA8B,KAAK,OAAO,KAAK,iEAAiE,CACjH,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;QAE5C,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,qBAAqB,CAC7B,gBAAgB,EAChB,QAAQ,EACR,4CAA4C,KAAK,IAAI,CACtD,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,WAAW,EAAE,CAAC;QACrB,qCAAqC;QACrC,IAAI,WAAW,YAAY,qBAAqB,EAAE,CAAC;YACjD,MAAM,WAAW,CAAC;QACpB,CAAC;QAED,oBAAoB;QACpB,MAAM,IAAI,qBAAqB,CAC7B,gBAAgB,EAChB,QAAQ,EACR,gCAAgC,KAAK,MACnC,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CACzE,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Rate limiter utility for Attio MCP server
3
+ * Provides simple rate limiting functionality for API endpoints
4
+ */
5
+ /**
6
+ * Configuration for the rate limiter
7
+ */
8
+ export interface RateLimiterConfig {
9
+ /** Maximum number of requests allowed in the time window */
10
+ maxRequests: number;
11
+ /** Time window in milliseconds */
12
+ windowMs: number;
13
+ /** Whether to track requests by IP address (default: true) */
14
+ trackByIp?: boolean;
15
+ /** Optional key function to determine the rate limiting key */
16
+ keyFn?: (req: any) => string;
17
+ }
18
+ /**
19
+ * Rate limiter implementation
20
+ */
21
+ export declare class RateLimiter {
22
+ private requests;
23
+ private config;
24
+ /**
25
+ * Create a new rate limiter
26
+ *
27
+ * @param config - Rate limiter configuration
28
+ */
29
+ constructor(config: RateLimiterConfig);
30
+ /**
31
+ * Check if a request is allowed
32
+ *
33
+ * @param req - Request object (with IP address or other identifying info)
34
+ * @returns Object with allowed status and rate limit info
35
+ */
36
+ check(req: any): {
37
+ allowed: boolean;
38
+ remaining: number;
39
+ resetTime: number;
40
+ msUntilReset: number;
41
+ };
42
+ /**
43
+ * Cleanup old entries to prevent memory leaks
44
+ */
45
+ cleanup(): void;
46
+ /**
47
+ * Get the key to track a request by
48
+ *
49
+ * @param req - Request object
50
+ * @returns Key for rate limiting
51
+ */
52
+ private getKey;
53
+ }
54
+ /**
55
+ * Get or create a rate limiter for a specific endpoint
56
+ *
57
+ * @param endpoint - Endpoint to rate limit
58
+ * @param config - Rate limiter configuration
59
+ * @returns Rate limiter instance
60
+ */
61
+ export declare function getRateLimiter(endpoint: string, config: RateLimiterConfig): RateLimiter;
62
+ /**
63
+ * Middleware for rate limiting Express requests
64
+ *
65
+ * @param config - Rate limiter configuration
66
+ * @returns Express middleware function
67
+ */
68
+ export declare function rateLimiterMiddleware(config: RateLimiterConfig): (req: any, res: any, next: () => void) => void;
69
+ /**
70
+ * Rate limiting for filter operations
71
+ *
72
+ * @param req - Request object
73
+ * @param endpoint - Endpoint being accessed
74
+ * @returns Object with allowed status and rate limit info
75
+ */
76
+ export declare function checkFilterRateLimit(req: any, endpoint: string): {
77
+ allowed: boolean;
78
+ remaining: number;
79
+ resetTime: number;
80
+ msUntilReset: number;
81
+ };
82
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IAEpB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IAEjB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,MAAM,CAAoB;IAElC;;;;OAIG;gBACS,MAAM,EAAE,iBAAiB;IAUrC;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG;QACf,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB;IAkCD;;OAEG;IACH,OAAO,IAAI,IAAI;IASf;;;;;OAKG;IACH,OAAO,CAAC,MAAM;CAmBf;AAKD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,iBAAiB,GACxB,WAAW,CAUb;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,IAMrD,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,UAsB7C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,GACf;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,CAaA"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Rate limiter utility for Attio MCP server
3
+ * Provides simple rate limiting functionality for API endpoints
4
+ */
5
+ /**
6
+ * Rate limiter implementation
7
+ */
8
+ export class RateLimiter {
9
+ requests;
10
+ config;
11
+ /**
12
+ * Create a new rate limiter
13
+ *
14
+ * @param config - Rate limiter configuration
15
+ */
16
+ constructor(config) {
17
+ this.requests = new Map();
18
+ this.config = {
19
+ maxRequests: config.maxRequests,
20
+ windowMs: config.windowMs,
21
+ trackByIp: config.trackByIp !== false, // Default to true
22
+ keyFn: config.keyFn,
23
+ };
24
+ }
25
+ /**
26
+ * Check if a request is allowed
27
+ *
28
+ * @param req - Request object (with IP address or other identifying info)
29
+ * @returns Object with allowed status and rate limit info
30
+ */
31
+ check(req) {
32
+ const now = Date.now();
33
+ // Get the key to track this request by
34
+ const key = this.getKey(req);
35
+ // Get or create record for this key
36
+ let record = this.requests.get(key);
37
+ if (!record || now > record.resetTime) {
38
+ // If no record exists or the window has passed, create a new one
39
+ record = {
40
+ count: 0,
41
+ resetTime: now + this.config.windowMs,
42
+ };
43
+ this.requests.set(key, record);
44
+ }
45
+ // Check if request is allowed
46
+ const allowed = record.count < this.config.maxRequests;
47
+ // Increment counter if allowed
48
+ if (allowed) {
49
+ record.count++;
50
+ }
51
+ // Return result
52
+ return {
53
+ allowed,
54
+ remaining: Math.max(0, this.config.maxRequests - record.count),
55
+ resetTime: record.resetTime,
56
+ msUntilReset: Math.max(0, record.resetTime - now),
57
+ };
58
+ }
59
+ /**
60
+ * Cleanup old entries to prevent memory leaks
61
+ */
62
+ cleanup() {
63
+ const now = Date.now();
64
+ for (const [key, record] of this.requests.entries()) {
65
+ if (now > record.resetTime) {
66
+ this.requests.delete(key);
67
+ }
68
+ }
69
+ }
70
+ /**
71
+ * Get the key to track a request by
72
+ *
73
+ * @param req - Request object
74
+ * @returns Key for rate limiting
75
+ */
76
+ getKey(req) {
77
+ // Use custom key function if provided
78
+ if (this.config.keyFn) {
79
+ return this.config.keyFn(req);
80
+ }
81
+ // Track by IP if configured
82
+ if (this.config.trackByIp) {
83
+ const ip = req.ip ||
84
+ req.connection?.remoteAddress ||
85
+ req.headers?.['x-forwarded-for'] ||
86
+ 'unknown';
87
+ return `ip:${ip}`;
88
+ }
89
+ // Default to a static key (not recommended for production)
90
+ return 'global';
91
+ }
92
+ }
93
+ // Global rate limiter instances
94
+ const rateLimiters = new Map();
95
+ /**
96
+ * Get or create a rate limiter for a specific endpoint
97
+ *
98
+ * @param endpoint - Endpoint to rate limit
99
+ * @param config - Rate limiter configuration
100
+ * @returns Rate limiter instance
101
+ */
102
+ export function getRateLimiter(endpoint, config) {
103
+ // Check if limiter already exists
104
+ let limiter = rateLimiters.get(endpoint);
105
+ if (!limiter) {
106
+ // Create new limiter
107
+ limiter = new RateLimiter(config);
108
+ rateLimiters.set(endpoint, limiter);
109
+ }
110
+ return limiter;
111
+ }
112
+ /**
113
+ * Middleware for rate limiting Express requests
114
+ *
115
+ * @param config - Rate limiter configuration
116
+ * @returns Express middleware function
117
+ */
118
+ export function rateLimiterMiddleware(config) {
119
+ const limiter = new RateLimiter(config);
120
+ // Schedule cleanup every windowMs to prevent memory leaks
121
+ setInterval(() => limiter.cleanup(), config.windowMs);
122
+ return (req, res, next) => {
123
+ const result = limiter.check(req);
124
+ // Add rate limit headers
125
+ res.setHeader('X-RateLimit-Limit', config.maxRequests);
126
+ res.setHeader('X-RateLimit-Remaining', result.remaining);
127
+ res.setHeader('X-RateLimit-Reset', result.resetTime);
128
+ if (!result.allowed) {
129
+ // Return 429 Too Many Requests
130
+ res.status(429).json({
131
+ error: 'Too many requests',
132
+ message: `Rate limit exceeded. Try again in ${Math.ceil(result.msUntilReset / 1000)} seconds.`,
133
+ retryAfter: Math.ceil(result.msUntilReset / 1000),
134
+ });
135
+ return;
136
+ }
137
+ next();
138
+ };
139
+ }
140
+ /**
141
+ * Rate limiting for filter operations
142
+ *
143
+ * @param req - Request object
144
+ * @param endpoint - Endpoint being accessed
145
+ * @returns Object with allowed status and rate limit info
146
+ */
147
+ export function checkFilterRateLimit(req, endpoint) {
148
+ // Configuration for filter endpoints
149
+ const config = {
150
+ maxRequests: 60, // 60 requests
151
+ windowMs: 60 * 1000, // per minute
152
+ trackByIp: true, // track by IP address
153
+ };
154
+ // Get limiter for this endpoint
155
+ const limiter = getRateLimiter(`filter:${endpoint}`, config);
156
+ // Check rate limit
157
+ return limiter.check(req);
158
+ }
159
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"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"}