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,311 @@
1
+ /**
2
+ * @module validators
3
+ *
4
+ * Consolidated filter validation utilities
5
+ * Provides functions to validate and normalize filter parameters
6
+ *
7
+ * This module provides:
8
+ * - Structure validation for filter objects
9
+ * - Date range validation and normalization
10
+ * - Numeric range validation
11
+ * - Activity filter validation
12
+ * - Filter condition validation
13
+ * - Parameter type validation and conversion
14
+ */
15
+ // External dependencies
16
+ import { DateRangePreset, isValidFilterCondition } from '../../types/attio.js';
17
+ import { FilterValidationError } from '../../errors/api-errors.js';
18
+ import { isValidISODateString } from '../date-utils.js';
19
+ // Internal module dependencies
20
+ import { InteractionType, FilterConditionType, } from './types.js';
21
+ /**
22
+ * Validates a filter structure for basic required properties
23
+ *
24
+ * @param filter - The filter to validate
25
+ * @returns True if filter is valid, false otherwise
26
+ */
27
+ export function validateFilterStructure(filter) {
28
+ if (!filter) {
29
+ return false;
30
+ }
31
+ if (!filter.attribute || !filter.attribute.slug) {
32
+ return false;
33
+ }
34
+ if (!filter.condition) {
35
+ return false;
36
+ }
37
+ return true;
38
+ }
39
+ /**
40
+ * Validates a date range object
41
+ *
42
+ * @param dateRange - The date range to validate
43
+ * @returns Validated and normalized date range
44
+ * @throws FilterValidationError if validation fails
45
+ */
46
+ export function validateDateRange(dateRange) {
47
+ if (!dateRange) {
48
+ throw new FilterValidationError('Date range is required');
49
+ }
50
+ // Normalize dateRange if it's a string
51
+ if (typeof dateRange === 'string') {
52
+ try {
53
+ dateRange = JSON.parse(dateRange);
54
+ }
55
+ catch (error) {
56
+ throw new FilterValidationError(`Invalid date range format: ${error instanceof Error ? error.message : String(error)}`);
57
+ }
58
+ }
59
+ // Check if it's a proper object
60
+ if (typeof dateRange !== 'object' || Array.isArray(dateRange)) {
61
+ throw new FilterValidationError('Date range must be an object with start, end, or preset properties');
62
+ }
63
+ // Must have at least one of preset, start, or end
64
+ if (!dateRange.preset && !dateRange.start && !dateRange.end) {
65
+ throw new FilterValidationError('Date range must specify at least one of: preset, start, or end');
66
+ }
67
+ // Validate preset if provided
68
+ if (dateRange.preset) {
69
+ const normalizedPreset = typeof dateRange.preset === 'string'
70
+ ? dateRange.preset.toLowerCase().trim()
71
+ : String(dateRange.preset);
72
+ const validPresets = Object.values(DateRangePreset);
73
+ if (!validPresets.includes(normalizedPreset)) {
74
+ throw new FilterValidationError(`Invalid date preset: "${dateRange.preset}". ` +
75
+ `Valid presets are: ${validPresets.join(', ')}`);
76
+ }
77
+ // Normalize the preset to ensure proper casing
78
+ dateRange.preset = normalizedPreset;
79
+ }
80
+ // Validate start date if provided
81
+ if (dateRange.start) {
82
+ if (typeof dateRange.start === 'string') {
83
+ // Validate ISO string format
84
+ if (!isValidISODateString(dateRange.start)) {
85
+ throw new FilterValidationError(`Invalid ISO date string format for start date: ${dateRange.start}`);
86
+ }
87
+ }
88
+ else if (typeof dateRange.start === 'object' &&
89
+ !Array.isArray(dateRange.start)) {
90
+ // It's a relative date object, validate basic structure
91
+ if (!dateRange.start.unit ||
92
+ !dateRange.start.value ||
93
+ !dateRange.start.direction) {
94
+ throw new FilterValidationError('Relative start date must have unit, value, and direction properties');
95
+ }
96
+ // Validate value is a number
97
+ if (typeof dateRange.start.value !== 'number' ||
98
+ isNaN(dateRange.start.value)) {
99
+ throw new FilterValidationError('Relative date value must be a number');
100
+ }
101
+ // Validate direction
102
+ if (dateRange.start.direction !== 'past' &&
103
+ dateRange.start.direction !== 'future') {
104
+ throw new FilterValidationError('Relative date direction must be either "past" or "future"');
105
+ }
106
+ }
107
+ else {
108
+ throw new FilterValidationError('Start date must be either an ISO date string or a relative date object');
109
+ }
110
+ }
111
+ // Validate end date if provided
112
+ if (dateRange.end) {
113
+ if (typeof dateRange.end === 'string') {
114
+ // Validate ISO string format
115
+ if (!isValidISODateString(dateRange.end)) {
116
+ throw new FilterValidationError(`Invalid ISO date string format for end date: ${dateRange.end}`);
117
+ }
118
+ }
119
+ else if (typeof dateRange.end === 'object' &&
120
+ !Array.isArray(dateRange.end)) {
121
+ // It's a relative date object, validate basic structure
122
+ if (!dateRange.end.unit ||
123
+ !dateRange.end.value ||
124
+ !dateRange.end.direction) {
125
+ throw new FilterValidationError('Relative end date must have unit, value, and direction properties');
126
+ }
127
+ // Validate value is a number
128
+ if (typeof dateRange.end.value !== 'number' ||
129
+ isNaN(dateRange.end.value)) {
130
+ throw new FilterValidationError('Relative date value must be a number');
131
+ }
132
+ // Validate direction
133
+ if (dateRange.end.direction !== 'past' &&
134
+ dateRange.end.direction !== 'future') {
135
+ throw new FilterValidationError('Relative date direction must be either "past" or "future"');
136
+ }
137
+ }
138
+ else {
139
+ throw new FilterValidationError('End date must be either an ISO date string or a relative date object');
140
+ }
141
+ }
142
+ return dateRange;
143
+ }
144
+ /**
145
+ * Validates an activity filter object
146
+ *
147
+ * @param activityFilter - The activity filter to validate
148
+ * @returns Validated and normalized activity filter
149
+ * @throws FilterValidationError if validation fails
150
+ */
151
+ export function validateActivityFilter(activityFilter) {
152
+ if (!activityFilter) {
153
+ throw new FilterValidationError('Activity filter is required');
154
+ }
155
+ // Normalize if it's a string
156
+ if (typeof activityFilter === 'string') {
157
+ try {
158
+ activityFilter = JSON.parse(activityFilter);
159
+ }
160
+ catch (error) {
161
+ throw new FilterValidationError(`Invalid activity filter format: ${error instanceof Error ? error.message : String(error)}`);
162
+ }
163
+ }
164
+ // Check if it's a proper object
165
+ if (typeof activityFilter !== 'object' || Array.isArray(activityFilter)) {
166
+ throw new FilterValidationError('Activity filter must be an object with dateRange and optional interactionType');
167
+ }
168
+ // Validate required dateRange property
169
+ if (!activityFilter.dateRange) {
170
+ throw new FilterValidationError('Activity filter must include a dateRange property');
171
+ }
172
+ // Validate dateRange
173
+ try {
174
+ activityFilter.dateRange = validateDateRange(activityFilter.dateRange);
175
+ }
176
+ catch (error) {
177
+ throw new FilterValidationError(`Invalid dateRange in activity filter: ${error instanceof Error ? error.message : String(error)}`);
178
+ }
179
+ // Validate interactionType if provided
180
+ if (activityFilter.interactionType !== undefined) {
181
+ const validTypes = Object.values(InteractionType);
182
+ if (typeof activityFilter.interactionType !== 'string' ||
183
+ !validTypes.includes(activityFilter.interactionType)) {
184
+ throw new FilterValidationError(`Invalid interaction type: "${activityFilter.interactionType}". ` +
185
+ `Valid types are: ${validTypes.join(', ')}`);
186
+ }
187
+ }
188
+ return activityFilter;
189
+ }
190
+ /**
191
+ * Validates a numeric range object
192
+ *
193
+ * @param range - The numeric range to validate
194
+ * @returns Validated and normalized numeric range
195
+ * @throws FilterValidationError if validation fails
196
+ */
197
+ export function validateNumericRange(range) {
198
+ if (!range) {
199
+ throw new FilterValidationError('Numeric range is required');
200
+ }
201
+ // Normalize if it's a string
202
+ if (typeof range === 'string') {
203
+ try {
204
+ range = JSON.parse(range);
205
+ }
206
+ catch (error) {
207
+ throw new FilterValidationError(`Invalid numeric range format: ${error instanceof Error ? error.message : String(error)}`);
208
+ }
209
+ }
210
+ // Check if it's a proper object
211
+ if (typeof range !== 'object' || Array.isArray(range)) {
212
+ throw new FilterValidationError('Numeric range must be an object with min, max, or equals properties');
213
+ }
214
+ // Must have at least one of min, max, or equals
215
+ if (range.min === undefined &&
216
+ range.max === undefined &&
217
+ range.equals === undefined) {
218
+ throw new FilterValidationError('Numeric range must specify at least one of: min, max, or equals');
219
+ }
220
+ // If equals is specified, min and max should not be
221
+ if (range.equals !== undefined &&
222
+ (range.min !== undefined || range.max !== undefined)) {
223
+ throw new FilterValidationError('Cannot specify both equals and min/max in a numeric range');
224
+ }
225
+ // Check types and convert to number if needed
226
+ if (range.min !== undefined) {
227
+ range.min = Number(range.min);
228
+ if (isNaN(range.min)) {
229
+ throw new FilterValidationError('Min value must be a valid number');
230
+ }
231
+ }
232
+ if (range.max !== undefined) {
233
+ range.max = Number(range.max);
234
+ if (isNaN(range.max)) {
235
+ throw new FilterValidationError('Max value must be a valid number');
236
+ }
237
+ }
238
+ if (range.equals !== undefined) {
239
+ range.equals = Number(range.equals);
240
+ if (isNaN(range.equals)) {
241
+ throw new FilterValidationError('Equals value must be a valid number');
242
+ }
243
+ }
244
+ // Check that min <= max if both are specified
245
+ if (range.min !== undefined &&
246
+ range.max !== undefined &&
247
+ range.min > range.max) {
248
+ throw new FilterValidationError(`Invalid numeric range: min (${range.min}) cannot be greater than max (${range.max})`);
249
+ }
250
+ return range;
251
+ }
252
+ /**
253
+ * Validates a filter condition string
254
+ *
255
+ * @param condition - The condition to validate
256
+ * @returns The validated condition
257
+ * @throws FilterValidationError if validation fails
258
+ */
259
+ export function validateFilterCondition(condition) {
260
+ if (!condition) {
261
+ throw new FilterValidationError('Filter condition is required');
262
+ }
263
+ // Use the isValidFilterCondition from types/attio.js
264
+ if (!isValidFilterCondition(condition)) {
265
+ const validConditions = Object.values(FilterConditionType);
266
+ throw new FilterValidationError(`Invalid filter condition: "${condition}". ` +
267
+ `Valid conditions are: ${validConditions.join(', ')}`);
268
+ }
269
+ return condition;
270
+ }
271
+ /**
272
+ * Ensures a value is a number, converting if necessary
273
+ *
274
+ * @param value - The value to validate and convert
275
+ * @param paramName - Name of the parameter (for error messages)
276
+ * @param defaultValue - Optional default value if undefined
277
+ * @returns The validated number
278
+ * @throws FilterValidationError if validation fails
279
+ */
280
+ export function validateNumericParam(value, paramName, defaultValue) {
281
+ if (value === undefined || value === null) {
282
+ if (defaultValue !== undefined) {
283
+ return defaultValue;
284
+ }
285
+ throw new FilterValidationError(`${paramName} is required`);
286
+ }
287
+ const num = Number(value);
288
+ if (isNaN(num)) {
289
+ throw new FilterValidationError(`${paramName} must be a valid number`);
290
+ }
291
+ return num;
292
+ }
293
+ /**
294
+ * Validates filter structure and conditions
295
+ *
296
+ * @param filter - The filter to validate
297
+ * @param validateConditions - Whether to validate condition types (default: true)
298
+ * @throws FilterValidationError if validation fails
299
+ */
300
+ export function validateFilterWithConditions(filter, validateConditions = true) {
301
+ if (!validateFilterStructure(filter)) {
302
+ const slugInfo = filter?.attribute?.slug ? ` ${filter.attribute.slug}` : '';
303
+ throw new FilterValidationError(`Invalid filter: Incomplete filter structure for${slugInfo}`);
304
+ }
305
+ const { slug } = filter.attribute;
306
+ if (validateConditions && !isValidFilterCondition(filter.condition)) {
307
+ throw new FilterValidationError(`Invalid filter condition '${filter.condition}' for attribute '${slug}'. ` +
308
+ `Valid conditions are: ${Object.values(FilterConditionType).join(', ')}`);
309
+ }
310
+ }
311
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/utils/filters/validators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Interface for serialization options
3
+ */
4
+ export interface SerializationOptions {
5
+ /** Maximum depth for nested objects (only used in the legacy implementation) */
6
+ maxDepth?: number;
7
+ /** Maximum string length before truncation */
8
+ maxStringLength?: number;
9
+ /** Whether to include stack traces in error objects */
10
+ includeStackTraces?: boolean;
11
+ /** Custom replacer function */
12
+ replacer?: (key: string, value: any) => any;
13
+ /** Indent spaces for pretty printing (default: 2) */
14
+ indent?: number;
15
+ }
16
+ /**
17
+ * Safe JSON stringify that handles circular references and non-serializable values
18
+ *
19
+ * Uses fast-safe-stringify for high performance and reliability
20
+ *
21
+ * @param obj - The object to stringify
22
+ * @param options - Serialization options
23
+ * @returns Safe JSON string
24
+ */
25
+ export declare function safeJsonStringify(obj: any, options?: SerializationOptions): string;
26
+ /**
27
+ * Validates that a JSON string is properly formed and can be parsed
28
+ *
29
+ * @param jsonString - The JSON string to validate
30
+ * @returns Object with validation result and parsed data if successful
31
+ */
32
+ export declare function validateJsonString(jsonString: string): {
33
+ isValid: boolean;
34
+ data?: any;
35
+ error?: string;
36
+ size: number;
37
+ };
38
+ /**
39
+ * Detects potential circular references in an object before serialization
40
+ *
41
+ * NOTE: This is less critical now with fast-safe-stringify, but kept for
42
+ * compatibility with existing code that uses it.
43
+ *
44
+ * @param obj - The object to check
45
+ * @param maxDepth - Maximum depth to check
46
+ * @returns True if circular references are detected
47
+ */
48
+ export declare function hasCircularReferences(obj: any, maxDepth?: number): boolean;
49
+ /**
50
+ * Creates a safe copy of an object that can be JSON serialized
51
+ *
52
+ * Uses fast-safe-stringify for improved performance and reliability
53
+ *
54
+ * @param obj - The object to copy
55
+ * @param options - Serialization options
56
+ * @returns Safe copy of the object
57
+ */
58
+ export declare function createSafeCopy(obj: any, options?: SerializationOptions): any;
59
+ /**
60
+ * Sanitizes MCP response objects to prevent JSON parsing errors
61
+ *
62
+ * Uses fast-safe-stringify to ensure all responses are safely serializable
63
+ *
64
+ * @param response - The MCP response object to sanitize
65
+ * @returns Sanitized response object
66
+ */
67
+ export declare function sanitizeMcpResponse(response: any): any;
68
+ //# sourceMappingURL=json-serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-serializer.d.ts","sourceRoot":"","sources":["../../src/utils/json-serializer.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;IAC5C,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAaD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,GAAG,EACR,OAAO,GAAE,oBAAyB,GACjC,MAAM,CAyFR;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAiBA;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,EACR,QAAQ,GAAE,MAAW,GACpB,OAAO,CAuBT;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,OAAO,GAAE,oBAAyB,GACjC,GAAG,CAoBL;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CA4CtD"}
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Safe JSON serialization utilities to prevent MCP protocol breakdown
3
+ * Handles circular references, non-serializable values, and large objects
4
+ *
5
+ * Uses fast-safe-stringify for improved performance and reliability
6
+ *
7
+ * IMPORTANT MCP PROTOCOL WARNING:
8
+ * Never use console.log() in this file or any MCP-related code.
9
+ * Always use console.error() or logger.safeMcpLog() instead.
10
+ * Using console.log will break the MCP protocol, as it writes to stdout
11
+ * which is used for client-server communication.
12
+ */
13
+ // @ts-ignore - Fast-safe-stringify has CommonJS exports
14
+ import fastSafeStringify from 'fast-safe-stringify';
15
+ /**
16
+ * Default serialization options
17
+ */
18
+ const DEFAULT_OPTIONS = {
19
+ maxDepth: 20, // Kept for backward compatibility
20
+ maxStringLength: 25000, // 25KB max string length - more reasonable for MCP
21
+ includeStackTraces: false,
22
+ replacer: (key, value) => value,
23
+ indent: 2,
24
+ };
25
+ /**
26
+ * Safe JSON stringify that handles circular references and non-serializable values
27
+ *
28
+ * Uses fast-safe-stringify for high performance and reliability
29
+ *
30
+ * @param obj - The object to stringify
31
+ * @param options - Serialization options
32
+ * @returns Safe JSON string
33
+ */
34
+ export function safeJsonStringify(obj, options = {}) {
35
+ const opts = { ...DEFAULT_OPTIONS, ...options };
36
+ // Performance monitoring for large objects
37
+ const startTime = performance.now();
38
+ try {
39
+ // Create a custom replacer to handle non-standard values
40
+ const customReplacer = (key, value) => {
41
+ // First apply user-provided replacer if any
42
+ value = opts.replacer(key, value);
43
+ // Handle undefined (normally skipped by JSON)
44
+ if (value === undefined) {
45
+ return null;
46
+ }
47
+ // Handle very long strings
48
+ if (typeof value === 'string' && value.length > opts.maxStringLength) {
49
+ return value.substring(0, opts.maxStringLength) + '... [truncated]';
50
+ }
51
+ // Handle special object types more gracefully
52
+ if (value instanceof Error) {
53
+ const errorObj = {
54
+ name: value.name,
55
+ message: value.message,
56
+ };
57
+ if (opts.includeStackTraces && value.stack) {
58
+ errorObj.stack = value.stack;
59
+ }
60
+ if (value.cause) {
61
+ errorObj.cause = value.cause;
62
+ }
63
+ return errorObj;
64
+ }
65
+ if (value instanceof Map) {
66
+ return '[Map: ' + value.size + ' entries]';
67
+ }
68
+ if (value instanceof Set) {
69
+ return '[Set: ' + value.size + ' items]';
70
+ }
71
+ if (ArrayBuffer && value instanceof ArrayBuffer) {
72
+ return '[ArrayBuffer: ' + value.byteLength + ' bytes]';
73
+ }
74
+ return value;
75
+ };
76
+ // Use fast-safe-stringify with our custom replacer
77
+ const result = fastSafeStringify(obj, customReplacer, opts.indent);
78
+ // Performance monitoring and logging
79
+ const duration = performance.now() - startTime;
80
+ if (duration > 100) {
81
+ console.error(`[safeJsonStringify] Slow serialization detected: ${duration.toFixed(2)}ms for ${typeof obj} (${result.length} chars)`);
82
+ }
83
+ return result;
84
+ }
85
+ catch (error) {
86
+ // Enhanced error context
87
+ const duration = performance.now() - startTime;
88
+ console.error(`[safeJsonStringify] Serialization failed after ${duration.toFixed(2)}ms for ${typeof obj}:`, error);
89
+ // Use fast-safe-stringify directly for the error fallback
90
+ return fastSafeStringify({
91
+ error: 'Serialization failed',
92
+ message: error instanceof Error ? error.message : String(error),
93
+ originalType: typeof obj,
94
+ timestamp: new Date().toISOString(),
95
+ duration: `${duration.toFixed(2)}ms`,
96
+ }, undefined, 2);
97
+ }
98
+ }
99
+ /**
100
+ * Validates that a JSON string is properly formed and can be parsed
101
+ *
102
+ * @param jsonString - The JSON string to validate
103
+ * @returns Object with validation result and parsed data if successful
104
+ */
105
+ export function validateJsonString(jsonString) {
106
+ const size = Buffer.byteLength(jsonString, 'utf8');
107
+ try {
108
+ const data = JSON.parse(jsonString);
109
+ return {
110
+ isValid: true,
111
+ data,
112
+ size,
113
+ };
114
+ }
115
+ catch (error) {
116
+ return {
117
+ isValid: false,
118
+ error: error instanceof Error ? error.message : String(error),
119
+ size,
120
+ };
121
+ }
122
+ }
123
+ /**
124
+ * Detects potential circular references in an object before serialization
125
+ *
126
+ * NOTE: This is less critical now with fast-safe-stringify, but kept for
127
+ * compatibility with existing code that uses it.
128
+ *
129
+ * @param obj - The object to check
130
+ * @param maxDepth - Maximum depth to check
131
+ * @returns True if circular references are detected
132
+ */
133
+ export function hasCircularReferences(obj, maxDepth = 10) {
134
+ const seen = new WeakSet();
135
+ function check(value, depth) {
136
+ if (depth > maxDepth)
137
+ return false;
138
+ if (value === null || typeof value !== 'object')
139
+ return false;
140
+ if (seen.has(value))
141
+ return true;
142
+ seen.add(value);
143
+ try {
144
+ if (Array.isArray(value)) {
145
+ return value.some((item) => check(item, depth + 1));
146
+ }
147
+ else {
148
+ return Object.values(value).some((val) => check(val, depth + 1));
149
+ }
150
+ }
151
+ finally {
152
+ seen.delete(value);
153
+ }
154
+ }
155
+ return check(obj, 0);
156
+ }
157
+ /**
158
+ * Creates a safe copy of an object that can be JSON serialized
159
+ *
160
+ * Uses fast-safe-stringify for improved performance and reliability
161
+ *
162
+ * @param obj - The object to copy
163
+ * @param options - Serialization options
164
+ * @returns Safe copy of the object
165
+ */
166
+ export function createSafeCopy(obj, options = {}) {
167
+ try {
168
+ // Fast path: directly use fast-safe-stringify to create a JSON string
169
+ const jsonString = safeJsonStringify(obj, options);
170
+ // Parse it back to create the safe copy
171
+ return JSON.parse(jsonString);
172
+ }
173
+ catch (error) {
174
+ console.error('[createSafeCopy] Failed to create safe copy:', error instanceof Error ? error.message : String(error));
175
+ // Return a structured error object
176
+ return {
177
+ error: 'Failed to create safe copy',
178
+ message: error instanceof Error ? error.message : String(error),
179
+ originalType: typeof obj,
180
+ };
181
+ }
182
+ }
183
+ /**
184
+ * Sanitizes MCP response objects to prevent JSON parsing errors
185
+ *
186
+ * Uses fast-safe-stringify to ensure all responses are safely serializable
187
+ *
188
+ * @param response - The MCP response object to sanitize
189
+ * @returns Sanitized response object
190
+ */
191
+ export function sanitizeMcpResponse(response) {
192
+ // Ensure response has the correct structure
193
+ if (!response || typeof response !== 'object') {
194
+ return {
195
+ content: [
196
+ {
197
+ type: 'text',
198
+ text: 'Invalid response structure',
199
+ },
200
+ ],
201
+ isError: true,
202
+ error: {
203
+ code: 500,
204
+ message: 'Response sanitization failed',
205
+ type: 'sanitization_error',
206
+ },
207
+ };
208
+ }
209
+ try {
210
+ // Create safe copy with MCP-specific options optimized for Attio responses
211
+ return createSafeCopy(response, {
212
+ maxStringLength: 40000, // 40KB for response content - reasonable limit
213
+ includeStackTraces: process.env.NODE_ENV === 'development',
214
+ });
215
+ }
216
+ catch (error) {
217
+ // Provide a valid fallback response if sanitization fails
218
+ return {
219
+ content: [
220
+ {
221
+ type: 'text',
222
+ text: 'Error processing response. The server encountered an error while formatting the response data.',
223
+ },
224
+ ],
225
+ isError: true,
226
+ error: {
227
+ code: 500,
228
+ message: 'Response sanitization failed: ' +
229
+ (error instanceof Error ? error.message : String(error)),
230
+ type: 'sanitization_error',
231
+ },
232
+ };
233
+ }
234
+ }
235
+ //# sourceMappingURL=json-serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-serializer.js","sourceRoot":"","sources":["../../src/utils/json-serializer.ts"],"names":[],"mappings":"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"}