digital-tools 2.0.1

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 (452) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/CHANGELOG.md +9 -0
  3. package/README.md +1144 -0
  4. package/dist/define.d.ts +109 -0
  5. package/dist/define.d.ts.map +1 -0
  6. package/dist/define.js +268 -0
  7. package/dist/define.js.map +1 -0
  8. package/dist/entities/advertising.d.ts +79 -0
  9. package/dist/entities/advertising.d.ts.map +1 -0
  10. package/dist/entities/advertising.js +1000 -0
  11. package/dist/entities/advertising.js.map +1 -0
  12. package/dist/entities/ai.d.ts +69 -0
  13. package/dist/entities/ai.d.ts.map +1 -0
  14. package/dist/entities/ai.js +757 -0
  15. package/dist/entities/ai.js.map +1 -0
  16. package/dist/entities/analytics.d.ts +83 -0
  17. package/dist/entities/analytics.d.ts.map +1 -0
  18. package/dist/entities/analytics.js +1589 -0
  19. package/dist/entities/analytics.js.map +1 -0
  20. package/dist/entities/automation.d.ts +61 -0
  21. package/dist/entities/automation.d.ts.map +1 -0
  22. package/dist/entities/automation.js +602 -0
  23. package/dist/entities/automation.js.map +1 -0
  24. package/dist/entities/communication.d.ts +96 -0
  25. package/dist/entities/communication.d.ts.map +1 -0
  26. package/dist/entities/communication.js +1151 -0
  27. package/dist/entities/communication.js.map +1 -0
  28. package/dist/entities/crm.d.ts +91 -0
  29. package/dist/entities/crm.d.ts.map +1 -0
  30. package/dist/entities/crm.js +1387 -0
  31. package/dist/entities/crm.js.map +1 -0
  32. package/dist/entities/design.d.ts +61 -0
  33. package/dist/entities/design.d.ts.map +1 -0
  34. package/dist/entities/design.js +547 -0
  35. package/dist/entities/design.js.map +1 -0
  36. package/dist/entities/development.d.ts +145 -0
  37. package/dist/entities/development.d.ts.map +1 -0
  38. package/dist/entities/development.js +2213 -0
  39. package/dist/entities/development.js.map +1 -0
  40. package/dist/entities/document.d.ts +54 -0
  41. package/dist/entities/document.d.ts.map +1 -0
  42. package/dist/entities/document.js +875 -0
  43. package/dist/entities/document.js.map +1 -0
  44. package/dist/entities/ecommerce.d.ts +93 -0
  45. package/dist/entities/ecommerce.d.ts.map +1 -0
  46. package/dist/entities/ecommerce.js +1430 -0
  47. package/dist/entities/ecommerce.js.map +1 -0
  48. package/dist/entities/experiment.d.ts +89 -0
  49. package/dist/entities/experiment.d.ts.map +1 -0
  50. package/dist/entities/experiment.js +1040 -0
  51. package/dist/entities/experiment.js.map +1 -0
  52. package/dist/entities/finance.d.ts +272 -0
  53. package/dist/entities/finance.d.ts.map +1 -0
  54. package/dist/entities/finance.js +3479 -0
  55. package/dist/entities/finance.js.map +1 -0
  56. package/dist/entities/forms.d.ts +91 -0
  57. package/dist/entities/forms.d.ts.map +1 -0
  58. package/dist/entities/forms.js +1893 -0
  59. package/dist/entities/forms.js.map +1 -0
  60. package/dist/entities/hr.d.ts +62 -0
  61. package/dist/entities/hr.d.ts.map +1 -0
  62. package/dist/entities/hr.js +662 -0
  63. package/dist/entities/hr.js.map +1 -0
  64. package/dist/entities/identity.d.ts +90 -0
  65. package/dist/entities/identity.d.ts.map +1 -0
  66. package/dist/entities/identity.js +998 -0
  67. package/dist/entities/identity.js.map +1 -0
  68. package/dist/entities/index.d.ts +410 -0
  69. package/dist/entities/index.d.ts.map +1 -0
  70. package/dist/entities/index.js +283 -0
  71. package/dist/entities/index.js.map +1 -0
  72. package/dist/entities/infrastructure.d.ts +98 -0
  73. package/dist/entities/infrastructure.d.ts.map +1 -0
  74. package/dist/entities/infrastructure.js +1154 -0
  75. package/dist/entities/infrastructure.js.map +1 -0
  76. package/dist/entities/knowledge.d.ts +98 -0
  77. package/dist/entities/knowledge.d.ts.map +1 -0
  78. package/dist/entities/knowledge.js +1439 -0
  79. package/dist/entities/knowledge.js.map +1 -0
  80. package/dist/entities/marketing.d.ts +82 -0
  81. package/dist/entities/marketing.d.ts.map +1 -0
  82. package/dist/entities/marketing.js +1611 -0
  83. package/dist/entities/marketing.js.map +1 -0
  84. package/dist/entities/media.d.ts +83 -0
  85. package/dist/entities/media.d.ts.map +1 -0
  86. package/dist/entities/media.js +1635 -0
  87. package/dist/entities/media.js.map +1 -0
  88. package/dist/entities/notification.d.ts +76 -0
  89. package/dist/entities/notification.d.ts.map +1 -0
  90. package/dist/entities/notification.js +1200 -0
  91. package/dist/entities/notification.js.map +1 -0
  92. package/dist/entities/presentation.d.ts +61 -0
  93. package/dist/entities/presentation.d.ts.map +1 -0
  94. package/dist/entities/presentation.js +1275 -0
  95. package/dist/entities/presentation.js.map +1 -0
  96. package/dist/entities/productivity.d.ts +92 -0
  97. package/dist/entities/productivity.d.ts.map +1 -0
  98. package/dist/entities/productivity.js +1318 -0
  99. package/dist/entities/productivity.js.map +1 -0
  100. package/dist/entities/project-management.d.ts +89 -0
  101. package/dist/entities/project-management.d.ts.map +1 -0
  102. package/dist/entities/project-management.js +1137 -0
  103. package/dist/entities/project-management.js.map +1 -0
  104. package/dist/entities/recruiting.d.ts +54 -0
  105. package/dist/entities/recruiting.d.ts.map +1 -0
  106. package/dist/entities/recruiting.js +737 -0
  107. package/dist/entities/recruiting.js.map +1 -0
  108. package/dist/entities/shipping.d.ts +52 -0
  109. package/dist/entities/shipping.d.ts.map +1 -0
  110. package/dist/entities/shipping.js +510 -0
  111. package/dist/entities/shipping.js.map +1 -0
  112. package/dist/entities/signature.d.ts +83 -0
  113. package/dist/entities/signature.d.ts.map +1 -0
  114. package/dist/entities/signature.js +1103 -0
  115. package/dist/entities/signature.js.map +1 -0
  116. package/dist/entities/site.d.ts +33 -0
  117. package/dist/entities/site.d.ts.map +1 -0
  118. package/dist/entities/site.js +223 -0
  119. package/dist/entities/site.js.map +1 -0
  120. package/dist/entities/spreadsheet.d.ts +68 -0
  121. package/dist/entities/spreadsheet.d.ts.map +1 -0
  122. package/dist/entities/spreadsheet.js +1342 -0
  123. package/dist/entities/spreadsheet.js.map +1 -0
  124. package/dist/entities/storage.d.ts +74 -0
  125. package/dist/entities/storage.d.ts.map +1 -0
  126. package/dist/entities/storage.js +1199 -0
  127. package/dist/entities/storage.js.map +1 -0
  128. package/dist/entities/support.d.ts +83 -0
  129. package/dist/entities/support.d.ts.map +1 -0
  130. package/dist/entities/support.js +1167 -0
  131. package/dist/entities/support.js.map +1 -0
  132. package/dist/entities/video-conferencing.d.ts +129 -0
  133. package/dist/entities/video-conferencing.d.ts.map +1 -0
  134. package/dist/entities/video-conferencing.js +1751 -0
  135. package/dist/entities/video-conferencing.js.map +1 -0
  136. package/dist/entities/video.d.ts +76 -0
  137. package/dist/entities/video.d.ts.map +1 -0
  138. package/dist/entities/video.js +951 -0
  139. package/dist/entities/video.js.map +1 -0
  140. package/dist/entities.d.ts +147 -0
  141. package/dist/entities.d.ts.map +1 -0
  142. package/dist/entities.js +1664 -0
  143. package/dist/entities.js.map +1 -0
  144. package/dist/index.d.ts +29 -0
  145. package/dist/index.d.ts.map +1 -0
  146. package/dist/index.js +75 -0
  147. package/dist/index.js.map +1 -0
  148. package/dist/providers/analytics/index.d.ts +19 -0
  149. package/dist/providers/analytics/index.d.ts.map +1 -0
  150. package/dist/providers/analytics/index.js +18 -0
  151. package/dist/providers/analytics/index.js.map +1 -0
  152. package/dist/providers/analytics/mixpanel.d.ts +25 -0
  153. package/dist/providers/analytics/mixpanel.d.ts.map +1 -0
  154. package/dist/providers/analytics/mixpanel.js +256 -0
  155. package/dist/providers/analytics/mixpanel.js.map +1 -0
  156. package/dist/providers/calendar/cal-com.d.ts +26 -0
  157. package/dist/providers/calendar/cal-com.d.ts.map +1 -0
  158. package/dist/providers/calendar/cal-com.js +304 -0
  159. package/dist/providers/calendar/cal-com.js.map +1 -0
  160. package/dist/providers/calendar/google-calendar.d.ts +25 -0
  161. package/dist/providers/calendar/google-calendar.d.ts.map +1 -0
  162. package/dist/providers/calendar/google-calendar.js +336 -0
  163. package/dist/providers/calendar/google-calendar.js.map +1 -0
  164. package/dist/providers/calendar/index.d.ts +20 -0
  165. package/dist/providers/calendar/index.d.ts.map +1 -0
  166. package/dist/providers/calendar/index.js +21 -0
  167. package/dist/providers/calendar/index.js.map +1 -0
  168. package/dist/providers/crm/hubspot.d.ts +25 -0
  169. package/dist/providers/crm/hubspot.d.ts.map +1 -0
  170. package/dist/providers/crm/hubspot.js +567 -0
  171. package/dist/providers/crm/hubspot.js.map +1 -0
  172. package/dist/providers/crm/index.d.ts +19 -0
  173. package/dist/providers/crm/index.d.ts.map +1 -0
  174. package/dist/providers/crm/index.js +18 -0
  175. package/dist/providers/crm/index.js.map +1 -0
  176. package/dist/providers/development/github.d.ts +25 -0
  177. package/dist/providers/development/github.d.ts.map +1 -0
  178. package/dist/providers/development/github.js +473 -0
  179. package/dist/providers/development/github.js.map +1 -0
  180. package/dist/providers/development/index.d.ts +19 -0
  181. package/dist/providers/development/index.d.ts.map +1 -0
  182. package/dist/providers/development/index.js +18 -0
  183. package/dist/providers/development/index.js.map +1 -0
  184. package/dist/providers/ecommerce/index.d.ts +19 -0
  185. package/dist/providers/ecommerce/index.d.ts.map +1 -0
  186. package/dist/providers/ecommerce/index.js +18 -0
  187. package/dist/providers/ecommerce/index.js.map +1 -0
  188. package/dist/providers/ecommerce/shopify.d.ts +25 -0
  189. package/dist/providers/ecommerce/shopify.d.ts.map +1 -0
  190. package/dist/providers/ecommerce/shopify.js +379 -0
  191. package/dist/providers/ecommerce/shopify.js.map +1 -0
  192. package/dist/providers/email/index.d.ts +20 -0
  193. package/dist/providers/email/index.d.ts.map +1 -0
  194. package/dist/providers/email/index.js +21 -0
  195. package/dist/providers/email/index.js.map +1 -0
  196. package/dist/providers/email/resend.d.ts +25 -0
  197. package/dist/providers/email/resend.d.ts.map +1 -0
  198. package/dist/providers/email/resend.js +259 -0
  199. package/dist/providers/email/resend.js.map +1 -0
  200. package/dist/providers/email/sendgrid.d.ts +25 -0
  201. package/dist/providers/email/sendgrid.d.ts.map +1 -0
  202. package/dist/providers/email/sendgrid.js +162 -0
  203. package/dist/providers/email/sendgrid.js.map +1 -0
  204. package/dist/providers/finance/index.d.ts +19 -0
  205. package/dist/providers/finance/index.d.ts.map +1 -0
  206. package/dist/providers/finance/index.js +18 -0
  207. package/dist/providers/finance/index.js.map +1 -0
  208. package/dist/providers/finance/stripe.d.ts +25 -0
  209. package/dist/providers/finance/stripe.d.ts.map +1 -0
  210. package/dist/providers/finance/stripe.js +550 -0
  211. package/dist/providers/finance/stripe.js.map +1 -0
  212. package/dist/providers/forms/index.d.ts +19 -0
  213. package/dist/providers/forms/index.d.ts.map +1 -0
  214. package/dist/providers/forms/index.js +18 -0
  215. package/dist/providers/forms/index.js.map +1 -0
  216. package/dist/providers/forms/typeform.d.ts +25 -0
  217. package/dist/providers/forms/typeform.d.ts.map +1 -0
  218. package/dist/providers/forms/typeform.js +501 -0
  219. package/dist/providers/forms/typeform.js.map +1 -0
  220. package/dist/providers/index.d.ts +56 -0
  221. package/dist/providers/index.d.ts.map +1 -0
  222. package/dist/providers/index.js +124 -0
  223. package/dist/providers/index.js.map +1 -0
  224. package/dist/providers/knowledge/index.d.ts +19 -0
  225. package/dist/providers/knowledge/index.d.ts.map +1 -0
  226. package/dist/providers/knowledge/index.js +18 -0
  227. package/dist/providers/knowledge/index.js.map +1 -0
  228. package/dist/providers/knowledge/notion.d.ts +25 -0
  229. package/dist/providers/knowledge/notion.d.ts.map +1 -0
  230. package/dist/providers/knowledge/notion.js +390 -0
  231. package/dist/providers/knowledge/notion.js.map +1 -0
  232. package/dist/providers/marketing/index.d.ts +19 -0
  233. package/dist/providers/marketing/index.d.ts.map +1 -0
  234. package/dist/providers/marketing/index.js +18 -0
  235. package/dist/providers/marketing/index.js.map +1 -0
  236. package/dist/providers/marketing/mailchimp.d.ts +25 -0
  237. package/dist/providers/marketing/mailchimp.d.ts.map +1 -0
  238. package/dist/providers/marketing/mailchimp.js +444 -0
  239. package/dist/providers/marketing/mailchimp.js.map +1 -0
  240. package/dist/providers/media/cloudinary.d.ts +25 -0
  241. package/dist/providers/media/cloudinary.d.ts.map +1 -0
  242. package/dist/providers/media/cloudinary.js +319 -0
  243. package/dist/providers/media/cloudinary.js.map +1 -0
  244. package/dist/providers/media/index.d.ts +19 -0
  245. package/dist/providers/media/index.d.ts.map +1 -0
  246. package/dist/providers/media/index.js +18 -0
  247. package/dist/providers/media/index.js.map +1 -0
  248. package/dist/providers/messaging/index.d.ts +24 -0
  249. package/dist/providers/messaging/index.d.ts.map +1 -0
  250. package/dist/providers/messaging/index.js +21 -0
  251. package/dist/providers/messaging/index.js.map +1 -0
  252. package/dist/providers/messaging/slack.d.ts +25 -0
  253. package/dist/providers/messaging/slack.d.ts.map +1 -0
  254. package/dist/providers/messaging/slack.js +394 -0
  255. package/dist/providers/messaging/slack.js.map +1 -0
  256. package/dist/providers/messaging/twilio-sms.d.ts +25 -0
  257. package/dist/providers/messaging/twilio-sms.d.ts.map +1 -0
  258. package/dist/providers/messaging/twilio-sms.js +250 -0
  259. package/dist/providers/messaging/twilio-sms.js.map +1 -0
  260. package/dist/providers/project-management/index.d.ts +19 -0
  261. package/dist/providers/project-management/index.d.ts.map +1 -0
  262. package/dist/providers/project-management/index.js +18 -0
  263. package/dist/providers/project-management/index.js.map +1 -0
  264. package/dist/providers/project-management/linear.d.ts +25 -0
  265. package/dist/providers/project-management/linear.d.ts.map +1 -0
  266. package/dist/providers/project-management/linear.js +576 -0
  267. package/dist/providers/project-management/linear.js.map +1 -0
  268. package/dist/providers/registry.d.ts +41 -0
  269. package/dist/providers/registry.d.ts.map +1 -0
  270. package/dist/providers/registry.js +87 -0
  271. package/dist/providers/registry.js.map +1 -0
  272. package/dist/providers/spreadsheet/google-sheets.d.ts +25 -0
  273. package/dist/providers/spreadsheet/google-sheets.d.ts.map +1 -0
  274. package/dist/providers/spreadsheet/google-sheets.js +376 -0
  275. package/dist/providers/spreadsheet/google-sheets.js.map +1 -0
  276. package/dist/providers/spreadsheet/index.d.ts +20 -0
  277. package/dist/providers/spreadsheet/index.d.ts.map +1 -0
  278. package/dist/providers/spreadsheet/index.js +21 -0
  279. package/dist/providers/spreadsheet/index.js.map +1 -0
  280. package/dist/providers/spreadsheet/xlsx.d.ts +26 -0
  281. package/dist/providers/spreadsheet/xlsx.d.ts.map +1 -0
  282. package/dist/providers/spreadsheet/xlsx.js +424 -0
  283. package/dist/providers/spreadsheet/xlsx.js.map +1 -0
  284. package/dist/providers/storage/index.d.ts +30 -0
  285. package/dist/providers/storage/index.d.ts.map +1 -0
  286. package/dist/providers/storage/index.js +25 -0
  287. package/dist/providers/storage/index.js.map +1 -0
  288. package/dist/providers/storage/s3.d.ts +25 -0
  289. package/dist/providers/storage/s3.d.ts.map +1 -0
  290. package/dist/providers/storage/s3.js +420 -0
  291. package/dist/providers/storage/s3.js.map +1 -0
  292. package/dist/providers/support/index.d.ts +19 -0
  293. package/dist/providers/support/index.d.ts.map +1 -0
  294. package/dist/providers/support/index.js +18 -0
  295. package/dist/providers/support/index.js.map +1 -0
  296. package/dist/providers/support/zendesk.d.ts +25 -0
  297. package/dist/providers/support/zendesk.d.ts.map +1 -0
  298. package/dist/providers/support/zendesk.js +374 -0
  299. package/dist/providers/support/zendesk.js.map +1 -0
  300. package/dist/providers/tasks/index.d.ts +19 -0
  301. package/dist/providers/tasks/index.d.ts.map +1 -0
  302. package/dist/providers/tasks/index.js +18 -0
  303. package/dist/providers/tasks/index.js.map +1 -0
  304. package/dist/providers/tasks/todoist.d.ts +25 -0
  305. package/dist/providers/tasks/todoist.d.ts.map +1 -0
  306. package/dist/providers/tasks/todoist.js +287 -0
  307. package/dist/providers/tasks/todoist.js.map +1 -0
  308. package/dist/providers/types.d.ts +1753 -0
  309. package/dist/providers/types.d.ts.map +1 -0
  310. package/dist/providers/types.js +10 -0
  311. package/dist/providers/types.js.map +1 -0
  312. package/dist/providers/video-conferencing/google-meet.d.ts +26 -0
  313. package/dist/providers/video-conferencing/google-meet.d.ts.map +1 -0
  314. package/dist/providers/video-conferencing/google-meet.js +287 -0
  315. package/dist/providers/video-conferencing/google-meet.js.map +1 -0
  316. package/dist/providers/video-conferencing/index.d.ts +22 -0
  317. package/dist/providers/video-conferencing/index.d.ts.map +1 -0
  318. package/dist/providers/video-conferencing/index.js +32 -0
  319. package/dist/providers/video-conferencing/index.js.map +1 -0
  320. package/dist/providers/video-conferencing/jitsi.d.ts +26 -0
  321. package/dist/providers/video-conferencing/jitsi.d.ts.map +1 -0
  322. package/dist/providers/video-conferencing/jitsi.js +255 -0
  323. package/dist/providers/video-conferencing/jitsi.js.map +1 -0
  324. package/dist/providers/video-conferencing/teams.d.ts +26 -0
  325. package/dist/providers/video-conferencing/teams.d.ts.map +1 -0
  326. package/dist/providers/video-conferencing/teams.js +271 -0
  327. package/dist/providers/video-conferencing/teams.js.map +1 -0
  328. package/dist/providers/video-conferencing/zoom.d.ts +25 -0
  329. package/dist/providers/video-conferencing/zoom.d.ts.map +1 -0
  330. package/dist/providers/video-conferencing/zoom.js +333 -0
  331. package/dist/providers/video-conferencing/zoom.js.map +1 -0
  332. package/dist/providers/voice/vapi.d.ts +27 -0
  333. package/dist/providers/voice/vapi.d.ts.map +1 -0
  334. package/dist/providers/voice/vapi.js +440 -0
  335. package/dist/providers/voice/vapi.js.map +1 -0
  336. package/dist/registry.d.ts +38 -0
  337. package/dist/registry.d.ts.map +1 -0
  338. package/dist/registry.js +129 -0
  339. package/dist/registry.js.map +1 -0
  340. package/dist/tools/communication.d.ts +94 -0
  341. package/dist/tools/communication.d.ts.map +1 -0
  342. package/dist/tools/communication.js +185 -0
  343. package/dist/tools/communication.js.map +1 -0
  344. package/dist/tools/data.d.ts +61 -0
  345. package/dist/tools/data.d.ts.map +1 -0
  346. package/dist/tools/data.js +206 -0
  347. package/dist/tools/data.js.map +1 -0
  348. package/dist/tools/index.d.ts +12 -0
  349. package/dist/tools/index.d.ts.map +1 -0
  350. package/dist/tools/index.js +12 -0
  351. package/dist/tools/index.js.map +1 -0
  352. package/dist/tools/web.d.ts +45 -0
  353. package/dist/tools/web.d.ts.map +1 -0
  354. package/dist/tools/web.js +138 -0
  355. package/dist/tools/web.js.map +1 -0
  356. package/dist/types.d.ts +330 -0
  357. package/dist/types.d.ts.map +1 -0
  358. package/dist/types.js +11 -0
  359. package/dist/types.js.map +1 -0
  360. package/package.json +45 -0
  361. package/src/define.ts +321 -0
  362. package/src/entities/advertising.ts +1086 -0
  363. package/src/entities/ai.ts +835 -0
  364. package/src/entities/analytics.ts +1690 -0
  365. package/src/entities/automation.ts +669 -0
  366. package/src/entities/communication.ts +1255 -0
  367. package/src/entities/crm.ts +1481 -0
  368. package/src/entities/design.ts +606 -0
  369. package/src/entities/development.ts +2392 -0
  370. package/src/entities/document.ts +930 -0
  371. package/src/entities/ecommerce.ts +1539 -0
  372. package/src/entities/experiment.ts +1139 -0
  373. package/src/entities/finance.ts +3907 -0
  374. package/src/entities/forms.ts +2021 -0
  375. package/src/entities/hr.ts +725 -0
  376. package/src/entities/identity.ts +1093 -0
  377. package/src/entities/index.ts +731 -0
  378. package/src/entities/infrastructure.ts +1254 -0
  379. package/src/entities/knowledge.ts +1547 -0
  380. package/src/entities/marketing.ts +1718 -0
  381. package/src/entities/media.ts +1747 -0
  382. package/src/entities/notification.ts +1260 -0
  383. package/src/entities/presentation.ts +1360 -0
  384. package/src/entities/productivity.ts +1411 -0
  385. package/src/entities/project-management.ts +1222 -0
  386. package/src/entities/recruiting.ts +797 -0
  387. package/src/entities/shipping.ts +566 -0
  388. package/src/entities/signature.ts +1204 -0
  389. package/src/entities/site.ts +244 -0
  390. package/src/entities/spreadsheet.ts +1434 -0
  391. package/src/entities/storage.ts +1290 -0
  392. package/src/entities/support.ts +1267 -0
  393. package/src/entities/video-conferencing.ts +1874 -0
  394. package/src/entities/video.ts +1035 -0
  395. package/src/entities.ts +1795 -0
  396. package/src/index.ts +176 -0
  397. package/src/providers/analytics/index.ts +21 -0
  398. package/src/providers/analytics/mixpanel.ts +311 -0
  399. package/src/providers/calendar/cal-com.ts +435 -0
  400. package/src/providers/calendar/google-calendar.ts +412 -0
  401. package/src/providers/calendar/index.ts +24 -0
  402. package/src/providers/crm/hubspot.ts +667 -0
  403. package/src/providers/crm/index.ts +21 -0
  404. package/src/providers/development/github.ts +608 -0
  405. package/src/providers/development/index.ts +21 -0
  406. package/src/providers/ecommerce/index.ts +21 -0
  407. package/src/providers/ecommerce/shopify.ts +451 -0
  408. package/src/providers/email/index.ts +24 -0
  409. package/src/providers/email/resend.ts +301 -0
  410. package/src/providers/email/sendgrid.ts +196 -0
  411. package/src/providers/finance/index.ts +21 -0
  412. package/src/providers/finance/stripe.ts +665 -0
  413. package/src/providers/forms/index.ts +21 -0
  414. package/src/providers/forms/typeform.ts +598 -0
  415. package/src/providers/index.ts +281 -0
  416. package/src/providers/knowledge/index.ts +21 -0
  417. package/src/providers/knowledge/notion.ts +497 -0
  418. package/src/providers/marketing/index.ts +21 -0
  419. package/src/providers/marketing/mailchimp.ts +656 -0
  420. package/src/providers/media/cloudinary.ts +373 -0
  421. package/src/providers/media/index.ts +21 -0
  422. package/src/providers/messaging/index.ts +24 -0
  423. package/src/providers/messaging/slack.ts +487 -0
  424. package/src/providers/messaging/twilio-sms.ts +301 -0
  425. package/src/providers/project-management/index.ts +21 -0
  426. package/src/providers/project-management/linear.ts +693 -0
  427. package/src/providers/registry.ts +119 -0
  428. package/src/providers/spreadsheet/google-sheets.ts +464 -0
  429. package/src/providers/spreadsheet/index.ts +24 -0
  430. package/src/providers/spreadsheet/xlsx.ts +542 -0
  431. package/src/providers/storage/index.ts +35 -0
  432. package/src/providers/storage/s3.ts +513 -0
  433. package/src/providers/support/index.ts +21 -0
  434. package/src/providers/support/zendesk.ts +417 -0
  435. package/src/providers/tasks/index.ts +21 -0
  436. package/src/providers/tasks/todoist.ts +407 -0
  437. package/src/providers/types.ts +2113 -0
  438. package/src/providers/video-conferencing/google-meet.ts +412 -0
  439. package/src/providers/video-conferencing/index.ts +35 -0
  440. package/src/providers/video-conferencing/jitsi.ts +324 -0
  441. package/src/providers/video-conferencing/teams.ts +408 -0
  442. package/src/providers/video-conferencing/zoom.ts +451 -0
  443. package/src/registry.ts +172 -0
  444. package/src/tools/communication.ts +256 -0
  445. package/src/tools/data.ts +236 -0
  446. package/src/tools/index.ts +12 -0
  447. package/src/tools/web.ts +161 -0
  448. package/src/types.ts +539 -0
  449. package/test/define.test.ts +367 -0
  450. package/test/registry.test.ts +444 -0
  451. package/test/tools.test.ts +453 -0
  452. package/tsconfig.json +20 -0
@@ -0,0 +1,487 @@
1
+ /**
2
+ * Slack Messaging Provider
3
+ *
4
+ * Concrete implementation of MessagingProvider using Slack API.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+
9
+ import type {
10
+ MessagingProvider,
11
+ ProviderConfig,
12
+ ProviderHealth,
13
+ ProviderInfo,
14
+ SendMessageOptions,
15
+ SendMessageResult,
16
+ MessageData,
17
+ MessageListOptions,
18
+ MessageSearchOptions,
19
+ ChannelData,
20
+ ChannelListOptions,
21
+ CreateChannelOptions,
22
+ MemberData,
23
+ MemberListOptions,
24
+ PresenceData,
25
+ WorkspaceData,
26
+ PaginatedResult,
27
+ } from '../types.js'
28
+ import { defineProvider } from '../registry.js'
29
+
30
+ const SLACK_API_URL = 'https://slack.com/api'
31
+
32
+ /**
33
+ * Slack provider info
34
+ */
35
+ export const slackInfo: ProviderInfo = {
36
+ id: 'messaging.slack',
37
+ name: 'Slack',
38
+ description: 'Slack team messaging platform',
39
+ category: 'messaging',
40
+ website: 'https://slack.com',
41
+ docsUrl: 'https://api.slack.com/docs',
42
+ requiredConfig: ['accessToken'],
43
+ optionalConfig: ['botToken', 'signingSecret'],
44
+ }
45
+
46
+ /**
47
+ * Create Slack messaging provider
48
+ */
49
+ export function createSlackProvider(config: ProviderConfig): MessagingProvider {
50
+ let token: string
51
+
52
+ async function slackApi(method: string, body?: Record<string, unknown>): Promise<any> {
53
+ const response = await fetch(`${SLACK_API_URL}/${method}`, {
54
+ method: 'POST',
55
+ headers: {
56
+ 'Content-Type': 'application/json; charset=utf-8',
57
+ Authorization: `Bearer ${token}`,
58
+ },
59
+ body: body ? JSON.stringify(body) : undefined,
60
+ })
61
+
62
+ const data = await response.json()
63
+ return data
64
+ }
65
+
66
+ return {
67
+ info: slackInfo,
68
+
69
+ async initialize(cfg: ProviderConfig): Promise<void> {
70
+ token = (cfg.accessToken || cfg.botToken) as string
71
+ if (!token) {
72
+ throw new Error('Slack access token or bot token is required')
73
+ }
74
+ },
75
+
76
+ async healthCheck(): Promise<ProviderHealth> {
77
+ const start = Date.now()
78
+ try {
79
+ const data = await slackApi('auth.test')
80
+ return {
81
+ healthy: data.ok === true,
82
+ latencyMs: Date.now() - start,
83
+ message: data.ok ? `Connected as ${data.user}` : data.error,
84
+ checkedAt: new Date(),
85
+ }
86
+ } catch (error) {
87
+ return {
88
+ healthy: false,
89
+ latencyMs: Date.now() - start,
90
+ message: error instanceof Error ? error.message : 'Unknown error',
91
+ checkedAt: new Date(),
92
+ }
93
+ }
94
+ },
95
+
96
+ async dispose(): Promise<void> {
97
+ // No cleanup needed
98
+ },
99
+
100
+ async send(options: SendMessageOptions): Promise<SendMessageResult> {
101
+ const body: Record<string, unknown> = {
102
+ text: options.text,
103
+ }
104
+
105
+ if (options.channel) {
106
+ body.channel = options.channel
107
+ } else if (options.userId) {
108
+ // Open DM conversation first
109
+ const dm = await slackApi('conversations.open', { users: options.userId })
110
+ if (!dm.ok) {
111
+ return {
112
+ success: false,
113
+ error: { code: dm.error, message: `Failed to open DM: ${dm.error}` },
114
+ }
115
+ }
116
+ body.channel = dm.channel.id
117
+ } else {
118
+ return {
119
+ success: false,
120
+ error: { code: 'MISSING_TARGET', message: 'Either channel or userId is required' },
121
+ }
122
+ }
123
+
124
+ if (options.threadId) {
125
+ body.thread_ts = options.threadId
126
+ }
127
+
128
+ if (options.blocks) {
129
+ body.blocks = options.blocks
130
+ }
131
+
132
+ if (options.metadata) {
133
+ body.metadata = {
134
+ event_type: 'message_metadata',
135
+ event_payload: options.metadata,
136
+ }
137
+ }
138
+
139
+ const data = await slackApi('chat.postMessage', body)
140
+
141
+ if (data.ok) {
142
+ return {
143
+ success: true,
144
+ messageId: data.ts,
145
+ timestamp: data.ts,
146
+ channel: data.channel,
147
+ }
148
+ }
149
+
150
+ return {
151
+ success: false,
152
+ error: { code: data.error, message: data.error },
153
+ }
154
+ },
155
+
156
+ async edit(messageId: string, text: string, blocks?: unknown[]): Promise<SendMessageResult> {
157
+ const body: Record<string, unknown> = {
158
+ ts: messageId,
159
+ text,
160
+ }
161
+
162
+ if (blocks) {
163
+ body.blocks = blocks
164
+ }
165
+
166
+ const data = await slackApi('chat.update', body)
167
+
168
+ if (data.ok) {
169
+ return {
170
+ success: true,
171
+ messageId: data.ts,
172
+ timestamp: data.ts,
173
+ channel: data.channel,
174
+ }
175
+ }
176
+
177
+ return {
178
+ success: false,
179
+ error: { code: data.error, message: data.error },
180
+ }
181
+ },
182
+
183
+ async delete(messageId: string, channel: string): Promise<boolean> {
184
+ const data = await slackApi('chat.delete', { ts: messageId, channel })
185
+ return data.ok === true
186
+ },
187
+
188
+ async react(messageId: string, channel: string, emoji: string): Promise<boolean> {
189
+ const data = await slackApi('reactions.add', {
190
+ name: emoji.replace(/:/g, ''),
191
+ timestamp: messageId,
192
+ channel,
193
+ })
194
+ return data.ok === true
195
+ },
196
+
197
+ async unreact(messageId: string, channel: string, emoji: string): Promise<boolean> {
198
+ const data = await slackApi('reactions.remove', {
199
+ name: emoji.replace(/:/g, ''),
200
+ timestamp: messageId,
201
+ channel,
202
+ })
203
+ return data.ok === true
204
+ },
205
+
206
+ async getMessage(messageId: string, channel: string): Promise<MessageData | null> {
207
+ const data = await slackApi('conversations.history', {
208
+ channel,
209
+ latest: messageId,
210
+ inclusive: true,
211
+ limit: 1,
212
+ })
213
+
214
+ if (!data.ok || !data.messages?.length) {
215
+ return null
216
+ }
217
+
218
+ const msg = data.messages[0]
219
+ return mapSlackMessage(msg, channel)
220
+ },
221
+
222
+ async listMessages(channel: string, options?: MessageListOptions): Promise<PaginatedResult<MessageData>> {
223
+ const body: Record<string, unknown> = {
224
+ channel,
225
+ limit: options?.limit || 100,
226
+ }
227
+
228
+ if (options?.cursor) {
229
+ body.cursor = options.cursor
230
+ }
231
+ if (options?.since) {
232
+ body.oldest = (options.since.getTime() / 1000).toString()
233
+ }
234
+ if (options?.until) {
235
+ body.latest = (options.until.getTime() / 1000).toString()
236
+ }
237
+
238
+ const data = await slackApi('conversations.history', body)
239
+
240
+ if (!data.ok) {
241
+ return { items: [], hasMore: false }
242
+ }
243
+
244
+ return {
245
+ items: data.messages.map((msg: any) => mapSlackMessage(msg, channel)),
246
+ hasMore: data.has_more || false,
247
+ nextCursor: data.response_metadata?.next_cursor,
248
+ }
249
+ },
250
+
251
+ async searchMessages(query: string, options?: MessageSearchOptions): Promise<PaginatedResult<MessageData>> {
252
+ const data = await slackApi('search.messages', {
253
+ query,
254
+ count: options?.limit || 100,
255
+ page: options?.offset ? Math.floor(options.offset / (options.limit || 100)) + 1 : 1,
256
+ })
257
+
258
+ if (!data.ok) {
259
+ return { items: [], hasMore: false }
260
+ }
261
+
262
+ return {
263
+ items: data.messages.matches.map((match: any) => mapSlackMessage(match, match.channel.id)),
264
+ hasMore: data.messages.paging.pages > data.messages.paging.page,
265
+ total: data.messages.total,
266
+ }
267
+ },
268
+
269
+ async listChannels(options?: ChannelListOptions): Promise<PaginatedResult<ChannelData>> {
270
+ const body: Record<string, unknown> = {
271
+ limit: options?.limit || 100,
272
+ exclude_archived: options?.excludeArchived !== false,
273
+ }
274
+
275
+ if (options?.cursor) {
276
+ body.cursor = options.cursor
277
+ }
278
+
279
+ if (options?.types) {
280
+ body.types = options.types.map((t) => (t === 'private' ? 'private_channel' : 'public_channel')).join(',')
281
+ }
282
+
283
+ const data = await slackApi('conversations.list', body)
284
+
285
+ if (!data.ok) {
286
+ return { items: [], hasMore: false }
287
+ }
288
+
289
+ return {
290
+ items: data.channels.map(mapSlackChannel),
291
+ hasMore: data.response_metadata?.next_cursor ? true : false,
292
+ nextCursor: data.response_metadata?.next_cursor,
293
+ }
294
+ },
295
+
296
+ async getChannel(channelId: string): Promise<ChannelData | null> {
297
+ const data = await slackApi('conversations.info', { channel: channelId })
298
+
299
+ if (!data.ok) {
300
+ return null
301
+ }
302
+
303
+ return mapSlackChannel(data.channel)
304
+ },
305
+
306
+ async createChannel(name: string, options?: CreateChannelOptions): Promise<ChannelData> {
307
+ const body: Record<string, unknown> = {
308
+ name,
309
+ is_private: options?.isPrivate || false,
310
+ }
311
+
312
+ const data = await slackApi('conversations.create', body)
313
+
314
+ if (!data.ok) {
315
+ throw new Error(`Failed to create channel: ${data.error}`)
316
+ }
317
+
318
+ const channel = mapSlackChannel(data.channel)
319
+
320
+ // Set topic if provided
321
+ if (options?.topic) {
322
+ await slackApi('conversations.setTopic', {
323
+ channel: data.channel.id,
324
+ topic: options.topic,
325
+ })
326
+ }
327
+
328
+ // Set description/purpose if provided
329
+ if (options?.description) {
330
+ await slackApi('conversations.setPurpose', {
331
+ channel: data.channel.id,
332
+ purpose: options.description,
333
+ })
334
+ }
335
+
336
+ return channel
337
+ },
338
+
339
+ async archiveChannel(channelId: string): Promise<boolean> {
340
+ const data = await slackApi('conversations.archive', { channel: channelId })
341
+ return data.ok === true
342
+ },
343
+
344
+ async joinChannel(channelId: string): Promise<boolean> {
345
+ const data = await slackApi('conversations.join', { channel: channelId })
346
+ return data.ok === true
347
+ },
348
+
349
+ async leaveChannel(channelId: string): Promise<boolean> {
350
+ const data = await slackApi('conversations.leave', { channel: channelId })
351
+ return data.ok === true
352
+ },
353
+
354
+ async listMembers(options?: MemberListOptions): Promise<PaginatedResult<MemberData>> {
355
+ const body: Record<string, unknown> = {
356
+ limit: options?.limit || 100,
357
+ }
358
+
359
+ if (options?.cursor) {
360
+ body.cursor = options.cursor
361
+ }
362
+
363
+ let data: any
364
+
365
+ if (options?.channel) {
366
+ // Get members of specific channel
367
+ data = await slackApi('conversations.members', { ...body, channel: options.channel })
368
+ if (!data.ok) {
369
+ return { items: [], hasMore: false }
370
+ }
371
+
372
+ // Fetch user info for each member
373
+ const members = await Promise.all(
374
+ data.members.map(async (userId: string) => {
375
+ const userInfo = await slackApi('users.info', { user: userId })
376
+ return userInfo.ok ? mapSlackUser(userInfo.user) : null
377
+ })
378
+ )
379
+
380
+ return {
381
+ items: members.filter(Boolean) as MemberData[],
382
+ hasMore: data.response_metadata?.next_cursor ? true : false,
383
+ nextCursor: data.response_metadata?.next_cursor,
384
+ }
385
+ } else {
386
+ // Get all workspace members
387
+ data = await slackApi('users.list', body)
388
+ if (!data.ok) {
389
+ return { items: [], hasMore: false }
390
+ }
391
+
392
+ return {
393
+ items: data.members.filter((m: any) => !m.deleted).map(mapSlackUser),
394
+ hasMore: data.response_metadata?.next_cursor ? true : false,
395
+ nextCursor: data.response_metadata?.next_cursor,
396
+ }
397
+ }
398
+ },
399
+
400
+ async getMember(userId: string): Promise<MemberData | null> {
401
+ const data = await slackApi('users.info', { user: userId })
402
+
403
+ if (!data.ok) {
404
+ return null
405
+ }
406
+
407
+ return mapSlackUser(data.user)
408
+ },
409
+
410
+ async getPresence(userId: string): Promise<PresenceData> {
411
+ const data = await slackApi('users.getPresence', { user: userId })
412
+
413
+ return {
414
+ userId,
415
+ presence: data.presence === 'active' ? 'online' : 'away',
416
+ }
417
+ },
418
+
419
+ async getWorkspace(): Promise<WorkspaceData> {
420
+ const data = await slackApi('team.info')
421
+
422
+ if (!data.ok) {
423
+ throw new Error(`Failed to get workspace info: ${data.error}`)
424
+ }
425
+
426
+ return {
427
+ id: data.team.id,
428
+ name: data.team.name,
429
+ domain: data.team.domain,
430
+ icon: data.team.icon?.image_132,
431
+ }
432
+ },
433
+ }
434
+ }
435
+
436
+ function mapSlackMessage(msg: any, channel: string): MessageData {
437
+ return {
438
+ id: msg.ts,
439
+ channel,
440
+ userId: msg.user,
441
+ text: msg.text,
442
+ timestamp: msg.ts,
443
+ threadId: msg.thread_ts,
444
+ replyCount: msg.reply_count,
445
+ reactions: msg.reactions?.map((r: any) => ({
446
+ emoji: r.name,
447
+ count: r.count,
448
+ users: r.users,
449
+ })),
450
+ edited: !!msg.edited,
451
+ editedAt: msg.edited?.ts ? new Date(parseFloat(msg.edited.ts) * 1000) : undefined,
452
+ }
453
+ }
454
+
455
+ function mapSlackChannel(ch: any): ChannelData {
456
+ return {
457
+ id: ch.id,
458
+ name: ch.name,
459
+ topic: ch.topic?.value,
460
+ description: ch.purpose?.value,
461
+ isPrivate: ch.is_private || false,
462
+ isArchived: ch.is_archived || false,
463
+ memberCount: ch.num_members || 0,
464
+ createdAt: new Date(ch.created * 1000),
465
+ }
466
+ }
467
+
468
+ function mapSlackUser(user: any): MemberData {
469
+ return {
470
+ id: user.id,
471
+ username: user.name,
472
+ displayName: user.real_name || user.profile?.display_name || user.name,
473
+ email: user.profile?.email,
474
+ avatar: user.profile?.image_192,
475
+ title: user.profile?.title,
476
+ isAdmin: user.is_admin || user.is_owner || false,
477
+ isBot: user.is_bot || false,
478
+ timezone: user.tz,
479
+ }
480
+ }
481
+
482
+ /**
483
+ * Slack provider definition
484
+ */
485
+ export const slackProvider = defineProvider(slackInfo, async (config) =>
486
+ createSlackProvider(config)
487
+ )