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,1255 @@
1
+ /**
2
+ * Communication Entity Types (Nouns)
3
+ *
4
+ * Simplified single-word nouns for all communication primitives.
5
+ * Uses `type` property to distinguish variants rather than separate entities.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+
10
+ import type { Noun } from 'ai-database'
11
+
12
+ // =============================================================================
13
+ // Message
14
+ // =============================================================================
15
+
16
+ /**
17
+ * Message entity
18
+ *
19
+ * Universal async communication unit. The `type` property distinguishes:
20
+ * - email: Traditional email message
21
+ * - text: SMS/MMS text message
22
+ * - chat: Team chat message (Slack, Teams, Discord)
23
+ * - direct: Person-to-person direct message
24
+ * - voicemail: Recorded voice message
25
+ */
26
+ export const Message: Noun = {
27
+ singular: 'message',
28
+ plural: 'messages',
29
+ description: 'An async communication unit (email, text, chat, direct, voicemail)',
30
+
31
+ properties: {
32
+ // Type
33
+ type: {
34
+ type: 'string',
35
+ description: 'Message type: email, text, chat, direct, voicemail',
36
+ examples: ['email', 'text', 'chat', 'direct', 'voicemail'],
37
+ },
38
+
39
+ // Identity
40
+ id: {
41
+ type: 'string',
42
+ description: 'Unique message identifier',
43
+ },
44
+
45
+ // Addressing
46
+ from: {
47
+ type: 'string',
48
+ description: 'Sender address (email, phone, user ID)',
49
+ },
50
+ to: {
51
+ type: 'string',
52
+ array: true,
53
+ description: 'Recipient addresses',
54
+ },
55
+ cc: {
56
+ type: 'string',
57
+ array: true,
58
+ optional: true,
59
+ description: 'Carbon copy recipients (email only)',
60
+ },
61
+ bcc: {
62
+ type: 'string',
63
+ array: true,
64
+ optional: true,
65
+ description: 'Blind carbon copy recipients (email only)',
66
+ },
67
+ replyTo: {
68
+ type: 'string',
69
+ optional: true,
70
+ description: 'Reply-to address',
71
+ },
72
+
73
+ // Content
74
+ subject: {
75
+ type: 'string',
76
+ optional: true,
77
+ description: 'Message subject (email, some chat systems)',
78
+ },
79
+ body: {
80
+ type: 'string',
81
+ description: 'Message content (plain text)',
82
+ },
83
+ html: {
84
+ type: 'string',
85
+ optional: true,
86
+ description: 'HTML content (email)',
87
+ },
88
+ mediaUrl: {
89
+ type: 'url',
90
+ optional: true,
91
+ description: 'Media URL (voicemail audio, MMS image)',
92
+ },
93
+
94
+ // Threading
95
+ threadId: {
96
+ type: 'string',
97
+ optional: true,
98
+ description: 'Thread/conversation identifier',
99
+ },
100
+ parentId: {
101
+ type: 'string',
102
+ optional: true,
103
+ description: 'Parent message ID (for replies)',
104
+ },
105
+ replyToId: {
106
+ type: 'string',
107
+ optional: true,
108
+ description: 'Message being replied to',
109
+ },
110
+
111
+ // Channel context (for chat type)
112
+ channelId: {
113
+ type: 'string',
114
+ optional: true,
115
+ description: 'Channel identifier (chat messages)',
116
+ },
117
+ workspaceId: {
118
+ type: 'string',
119
+ optional: true,
120
+ description: 'Workspace identifier (chat messages)',
121
+ },
122
+
123
+ // Status
124
+ status: {
125
+ type: 'string',
126
+ description: 'Message status',
127
+ examples: ['draft', 'queued', 'sent', 'delivered', 'read', 'failed', 'bounced'],
128
+ },
129
+ read: {
130
+ type: 'boolean',
131
+ optional: true,
132
+ description: 'Whether message has been read',
133
+ },
134
+ starred: {
135
+ type: 'boolean',
136
+ optional: true,
137
+ description: 'Whether message is starred/flagged',
138
+ },
139
+
140
+ // Voicemail specific
141
+ duration: {
142
+ type: 'number',
143
+ optional: true,
144
+ description: 'Duration in seconds (voicemail)',
145
+ },
146
+ transcription: {
147
+ type: 'string',
148
+ optional: true,
149
+ description: 'Transcribed text (voicemail)',
150
+ },
151
+
152
+ // Metadata
153
+ labels: {
154
+ type: 'string',
155
+ array: true,
156
+ optional: true,
157
+ description: 'Labels or tags',
158
+ },
159
+ priority: {
160
+ type: 'string',
161
+ optional: true,
162
+ description: 'Priority: low, normal, high, urgent',
163
+ examples: ['low', 'normal', 'high', 'urgent'],
164
+ },
165
+ metadata: {
166
+ type: 'json',
167
+ optional: true,
168
+ description: 'Additional metadata',
169
+ },
170
+ },
171
+
172
+ relationships: {
173
+ thread: {
174
+ type: 'Thread',
175
+ backref: 'messages',
176
+ required: false,
177
+ description: 'Thread this message belongs to',
178
+ },
179
+ sender: {
180
+ type: 'Contact',
181
+ description: 'Sender as contact',
182
+ },
183
+ recipients: {
184
+ type: 'Contact[]',
185
+ description: 'Recipients as contacts',
186
+ },
187
+ attachments: {
188
+ type: 'Attachment[]',
189
+ description: 'File attachments',
190
+ },
191
+ reactions: {
192
+ type: 'Reaction[]',
193
+ backref: 'message',
194
+ description: 'Emoji reactions',
195
+ },
196
+ channel: {
197
+ type: 'Channel',
198
+ required: false,
199
+ description: 'Channel (for chat messages)',
200
+ },
201
+ },
202
+
203
+ actions: [
204
+ 'send',
205
+ 'reply',
206
+ 'forward',
207
+ 'edit',
208
+ 'delete',
209
+ 'archive',
210
+ 'star',
211
+ 'unstar',
212
+ 'read',
213
+ 'unread',
214
+ 'label',
215
+ 'unlabel',
216
+ 'pin',
217
+ 'unpin',
218
+ 'react',
219
+ 'transcribe',
220
+ 'schedule',
221
+ ],
222
+
223
+ events: [
224
+ 'sent',
225
+ 'delivered',
226
+ 'read',
227
+ 'failed',
228
+ 'bounced',
229
+ 'opened',
230
+ 'clicked',
231
+ 'replied',
232
+ 'forwarded',
233
+ 'edited',
234
+ 'deleted',
235
+ 'archived',
236
+ 'starred',
237
+ 'labeled',
238
+ 'pinned',
239
+ 'reacted',
240
+ 'transcribed',
241
+ ],
242
+ }
243
+
244
+ // =============================================================================
245
+ // Thread
246
+ // =============================================================================
247
+
248
+ /**
249
+ * Thread entity
250
+ *
251
+ * Container for related messages. Works for email threads, chat threads,
252
+ * SMS conversations, etc.
253
+ */
254
+ export const Thread: Noun = {
255
+ singular: 'thread',
256
+ plural: 'threads',
257
+ description: 'A container for related messages (conversation)',
258
+
259
+ properties: {
260
+ // Identity
261
+ id: {
262
+ type: 'string',
263
+ description: 'Unique thread identifier',
264
+ },
265
+
266
+ // Type
267
+ type: {
268
+ type: 'string',
269
+ optional: true,
270
+ description: 'Thread type: email, text, chat',
271
+ examples: ['email', 'text', 'chat'],
272
+ },
273
+
274
+ // Content summary
275
+ subject: {
276
+ type: 'string',
277
+ optional: true,
278
+ description: 'Thread subject',
279
+ },
280
+ snippet: {
281
+ type: 'string',
282
+ optional: true,
283
+ description: 'Preview of latest message',
284
+ },
285
+ messageCount: {
286
+ type: 'number',
287
+ optional: true,
288
+ description: 'Number of messages in thread',
289
+ },
290
+
291
+ // Participants
292
+ participants: {
293
+ type: 'string',
294
+ array: true,
295
+ optional: true,
296
+ description: 'Participant addresses/IDs',
297
+ },
298
+
299
+ // Status
300
+ read: {
301
+ type: 'boolean',
302
+ optional: true,
303
+ description: 'Whether all messages are read',
304
+ },
305
+ unreadCount: {
306
+ type: 'number',
307
+ optional: true,
308
+ description: 'Number of unread messages',
309
+ },
310
+ archived: {
311
+ type: 'boolean',
312
+ optional: true,
313
+ description: 'Whether thread is archived',
314
+ },
315
+ muted: {
316
+ type: 'boolean',
317
+ optional: true,
318
+ description: 'Whether notifications are muted',
319
+ },
320
+ starred: {
321
+ type: 'boolean',
322
+ optional: true,
323
+ description: 'Whether thread is starred',
324
+ },
325
+ pinned: {
326
+ type: 'boolean',
327
+ optional: true,
328
+ description: 'Whether thread is pinned',
329
+ },
330
+
331
+ // Metadata
332
+ labels: {
333
+ type: 'string',
334
+ array: true,
335
+ optional: true,
336
+ description: 'Labels or tags',
337
+ },
338
+ lastMessageAt: {
339
+ type: 'datetime',
340
+ optional: true,
341
+ description: 'Timestamp of last message',
342
+ },
343
+ },
344
+
345
+ relationships: {
346
+ messages: {
347
+ type: 'Message[]',
348
+ backref: 'thread',
349
+ description: 'Messages in this thread',
350
+ },
351
+ channel: {
352
+ type: 'Channel',
353
+ required: false,
354
+ description: 'Channel (for chat threads)',
355
+ },
356
+ },
357
+
358
+ actions: [
359
+ 'archive',
360
+ 'unarchive',
361
+ 'delete',
362
+ 'read',
363
+ 'unread',
364
+ 'mute',
365
+ 'unmute',
366
+ 'star',
367
+ 'unstar',
368
+ 'pin',
369
+ 'unpin',
370
+ 'label',
371
+ 'unlabel',
372
+ 'move',
373
+ ],
374
+
375
+ events: [
376
+ 'created',
377
+ 'updated',
378
+ 'archived',
379
+ 'deleted',
380
+ 'read',
381
+ 'muted',
382
+ 'unmuted',
383
+ 'starred',
384
+ 'pinned',
385
+ 'labeled',
386
+ 'moved',
387
+ ],
388
+ }
389
+
390
+ // =============================================================================
391
+ // Call
392
+ // =============================================================================
393
+
394
+ /**
395
+ * Call entity
396
+ *
397
+ * Real-time voice/video communication. The `type` property distinguishes:
398
+ * - phone: Traditional phone call
399
+ * - web: Browser-based call
400
+ * - video: Video call
401
+ */
402
+ export const Call: Noun = {
403
+ singular: 'call',
404
+ plural: 'calls',
405
+ description: 'A real-time voice or video communication',
406
+
407
+ properties: {
408
+ // Type
409
+ type: {
410
+ type: 'string',
411
+ description: 'Call type: phone, web, video',
412
+ examples: ['phone', 'web', 'video'],
413
+ },
414
+
415
+ // Identity
416
+ id: {
417
+ type: 'string',
418
+ description: 'Unique call identifier',
419
+ },
420
+
421
+ // Direction
422
+ direction: {
423
+ type: 'string',
424
+ description: 'Call direction: inbound, outbound',
425
+ examples: ['inbound', 'outbound'],
426
+ },
427
+
428
+ // Participants
429
+ from: {
430
+ type: 'string',
431
+ description: 'Caller address (phone number, user ID)',
432
+ },
433
+ to: {
434
+ type: 'string',
435
+ description: 'Callee address',
436
+ },
437
+ participants: {
438
+ type: 'string',
439
+ array: true,
440
+ optional: true,
441
+ description: 'All participants (for group calls)',
442
+ },
443
+
444
+ // Status
445
+ status: {
446
+ type: 'string',
447
+ description: 'Call status',
448
+ examples: ['queued', 'ringing', 'answered', 'active', 'hold', 'ended', 'failed', 'busy', 'noanswer'],
449
+ },
450
+
451
+ // Timing
452
+ startedAt: {
453
+ type: 'datetime',
454
+ optional: true,
455
+ description: 'When call started',
456
+ },
457
+ answeredAt: {
458
+ type: 'datetime',
459
+ optional: true,
460
+ description: 'When call was answered',
461
+ },
462
+ endedAt: {
463
+ type: 'datetime',
464
+ optional: true,
465
+ description: 'When call ended',
466
+ },
467
+ duration: {
468
+ type: 'number',
469
+ optional: true,
470
+ description: 'Call duration in seconds',
471
+ },
472
+
473
+ // Recording
474
+ recorded: {
475
+ type: 'boolean',
476
+ optional: true,
477
+ description: 'Whether call was recorded',
478
+ },
479
+ recordingUrl: {
480
+ type: 'url',
481
+ optional: true,
482
+ description: 'URL to recording',
483
+ },
484
+
485
+ // Transcription
486
+ transcription: {
487
+ type: 'string',
488
+ optional: true,
489
+ description: 'Call transcription',
490
+ },
491
+ transcript: {
492
+ type: 'json',
493
+ optional: true,
494
+ description: 'Detailed transcript with timestamps',
495
+ },
496
+
497
+ // AI/Assistant (for voice AI calls)
498
+ assistantId: {
499
+ type: 'string',
500
+ optional: true,
501
+ description: 'AI assistant ID (for AI calls)',
502
+ },
503
+ summary: {
504
+ type: 'string',
505
+ optional: true,
506
+ description: 'AI-generated call summary',
507
+ },
508
+ analysis: {
509
+ type: 'json',
510
+ optional: true,
511
+ description: 'Call analysis/structured data',
512
+ },
513
+
514
+ // Cost
515
+ cost: {
516
+ type: 'number',
517
+ optional: true,
518
+ description: 'Call cost',
519
+ },
520
+ currency: {
521
+ type: 'string',
522
+ optional: true,
523
+ description: 'Currency code',
524
+ },
525
+
526
+ // Quality
527
+ quality: {
528
+ type: 'string',
529
+ optional: true,
530
+ description: 'Call quality: excellent, good, fair, poor',
531
+ examples: ['excellent', 'good', 'fair', 'poor'],
532
+ },
533
+
534
+ // Metadata
535
+ metadata: {
536
+ type: 'json',
537
+ optional: true,
538
+ description: 'Additional metadata',
539
+ },
540
+ },
541
+
542
+ relationships: {
543
+ caller: {
544
+ type: 'Contact',
545
+ description: 'Caller as contact',
546
+ },
547
+ callee: {
548
+ type: 'Contact',
549
+ description: 'Callee as contact',
550
+ },
551
+ messages: {
552
+ type: 'Message[]',
553
+ description: 'Related messages (voicemail if missed)',
554
+ },
555
+ },
556
+
557
+ actions: [
558
+ 'initiate',
559
+ 'answer',
560
+ 'reject',
561
+ 'hold',
562
+ 'unhold',
563
+ 'mute',
564
+ 'unmute',
565
+ 'transfer',
566
+ 'merge',
567
+ 'record',
568
+ 'transcribe',
569
+ 'end',
570
+ ],
571
+
572
+ events: [
573
+ 'initiated',
574
+ 'ringing',
575
+ 'answered',
576
+ 'rejected',
577
+ 'held',
578
+ 'unheld',
579
+ 'muted',
580
+ 'unmuted',
581
+ 'transferred',
582
+ 'merged',
583
+ 'recorded',
584
+ 'transcribed',
585
+ 'ended',
586
+ 'failed',
587
+ ],
588
+ }
589
+
590
+ // =============================================================================
591
+ // Channel
592
+ // =============================================================================
593
+
594
+ /**
595
+ * Channel entity
596
+ *
597
+ * Persistent topic-based communication space.
598
+ */
599
+ export const Channel: Noun = {
600
+ singular: 'channel',
601
+ plural: 'channels',
602
+ description: 'A persistent topic-based communication space',
603
+
604
+ properties: {
605
+ // Identity
606
+ id: {
607
+ type: 'string',
608
+ description: 'Unique channel identifier',
609
+ },
610
+ name: {
611
+ type: 'string',
612
+ description: 'Channel name',
613
+ },
614
+ description: {
615
+ type: 'string',
616
+ optional: true,
617
+ description: 'Channel description/purpose',
618
+ },
619
+ topic: {
620
+ type: 'string',
621
+ optional: true,
622
+ description: 'Current topic',
623
+ },
624
+
625
+ // Type
626
+ type: {
627
+ type: 'string',
628
+ description: 'Channel type: public, private, shared',
629
+ examples: ['public', 'private', 'shared'],
630
+ },
631
+
632
+ // Status
633
+ archived: {
634
+ type: 'boolean',
635
+ optional: true,
636
+ description: 'Whether channel is archived',
637
+ },
638
+ muted: {
639
+ type: 'boolean',
640
+ optional: true,
641
+ description: 'Whether notifications are muted',
642
+ },
643
+
644
+ // Membership
645
+ memberCount: {
646
+ type: 'number',
647
+ optional: true,
648
+ description: 'Number of members',
649
+ },
650
+
651
+ // Metadata
652
+ createdAt: {
653
+ type: 'datetime',
654
+ description: 'Creation timestamp',
655
+ },
656
+ lastActivityAt: {
657
+ type: 'datetime',
658
+ optional: true,
659
+ description: 'Last activity timestamp',
660
+ },
661
+ },
662
+
663
+ relationships: {
664
+ workspace: {
665
+ type: 'Workspace',
666
+ backref: 'channels',
667
+ description: 'Parent workspace',
668
+ },
669
+ members: {
670
+ type: 'Member[]',
671
+ backref: 'channels',
672
+ description: 'Channel members',
673
+ },
674
+ messages: {
675
+ type: 'Message[]',
676
+ description: 'Messages in channel',
677
+ },
678
+ threads: {
679
+ type: 'Thread[]',
680
+ backref: 'channel',
681
+ description: 'Threads in channel',
682
+ },
683
+ pins: {
684
+ type: 'Message[]',
685
+ description: 'Pinned messages',
686
+ },
687
+ },
688
+
689
+ actions: [
690
+ 'create',
691
+ 'rename',
692
+ 'setTopic',
693
+ 'archive',
694
+ 'unarchive',
695
+ 'delete',
696
+ 'join',
697
+ 'leave',
698
+ 'invite',
699
+ 'kick',
700
+ 'mute',
701
+ 'unmute',
702
+ 'pin',
703
+ 'unpin',
704
+ ],
705
+
706
+ events: [
707
+ 'created',
708
+ 'renamed',
709
+ 'topicSet',
710
+ 'archived',
711
+ 'unarchived',
712
+ 'deleted',
713
+ 'joined',
714
+ 'left',
715
+ 'invited',
716
+ 'kicked',
717
+ 'muted',
718
+ 'unmuted',
719
+ 'pinned',
720
+ 'unpinned',
721
+ ],
722
+ }
723
+
724
+ // =============================================================================
725
+ // Workspace
726
+ // =============================================================================
727
+
728
+ /**
729
+ * Workspace entity
730
+ *
731
+ * Team/organization container for channels and members.
732
+ */
733
+ export const Workspace: Noun = {
734
+ singular: 'workspace',
735
+ plural: 'workspaces',
736
+ description: 'A team or organization container',
737
+
738
+ properties: {
739
+ // Identity
740
+ id: {
741
+ type: 'string',
742
+ description: 'Unique workspace identifier',
743
+ },
744
+ name: {
745
+ type: 'string',
746
+ description: 'Workspace name',
747
+ },
748
+ domain: {
749
+ type: 'string',
750
+ optional: true,
751
+ description: 'Workspace domain/slug',
752
+ },
753
+ description: {
754
+ type: 'string',
755
+ optional: true,
756
+ description: 'Workspace description',
757
+ },
758
+
759
+ // Branding
760
+ icon: {
761
+ type: 'url',
762
+ optional: true,
763
+ description: 'Workspace icon URL',
764
+ },
765
+
766
+ // Status
767
+ plan: {
768
+ type: 'string',
769
+ optional: true,
770
+ description: 'Subscription plan',
771
+ },
772
+
773
+ // Counts
774
+ memberCount: {
775
+ type: 'number',
776
+ optional: true,
777
+ description: 'Number of members',
778
+ },
779
+ channelCount: {
780
+ type: 'number',
781
+ optional: true,
782
+ description: 'Number of channels',
783
+ },
784
+ },
785
+
786
+ relationships: {
787
+ channels: {
788
+ type: 'Channel[]',
789
+ backref: 'workspace',
790
+ description: 'Channels in workspace',
791
+ },
792
+ members: {
793
+ type: 'Member[]',
794
+ backref: 'workspace',
795
+ description: 'Workspace members',
796
+ },
797
+ owner: {
798
+ type: 'Contact',
799
+ description: 'Workspace owner',
800
+ },
801
+ },
802
+
803
+ actions: [
804
+ 'create',
805
+ 'rename',
806
+ 'invite',
807
+ 'remove',
808
+ 'archive',
809
+ 'delete',
810
+ 'transfer',
811
+ ],
812
+
813
+ events: [
814
+ 'created',
815
+ 'renamed',
816
+ 'invited',
817
+ 'removed',
818
+ 'archived',
819
+ 'deleted',
820
+ 'transferred',
821
+ ],
822
+ }
823
+
824
+ // =============================================================================
825
+ // Member
826
+ // =============================================================================
827
+
828
+ /**
829
+ * Member entity
830
+ *
831
+ * A user's membership in a workspace/channel.
832
+ */
833
+ export const Member: Noun = {
834
+ singular: 'member',
835
+ plural: 'members',
836
+ description: 'A user membership in a workspace or channel',
837
+
838
+ properties: {
839
+ // Identity
840
+ id: {
841
+ type: 'string',
842
+ description: 'Unique member identifier',
843
+ },
844
+ userId: {
845
+ type: 'string',
846
+ description: 'User identifier',
847
+ },
848
+
849
+ // Profile
850
+ name: {
851
+ type: 'string',
852
+ description: 'Display name',
853
+ },
854
+ email: {
855
+ type: 'string',
856
+ optional: true,
857
+ description: 'Email address',
858
+ },
859
+ avatar: {
860
+ type: 'url',
861
+ optional: true,
862
+ description: 'Avatar URL',
863
+ },
864
+ title: {
865
+ type: 'string',
866
+ optional: true,
867
+ description: 'Job title',
868
+ },
869
+
870
+ // Role
871
+ role: {
872
+ type: 'string',
873
+ description: 'Member role: owner, admin, member, guest',
874
+ examples: ['owner', 'admin', 'member', 'guest'],
875
+ },
876
+
877
+ // Status
878
+ status: {
879
+ type: 'string',
880
+ optional: true,
881
+ description: 'Presence status: active, away, dnd, offline',
882
+ examples: ['active', 'away', 'dnd', 'offline'],
883
+ },
884
+ statusText: {
885
+ type: 'string',
886
+ optional: true,
887
+ description: 'Custom status text',
888
+ },
889
+ statusEmoji: {
890
+ type: 'string',
891
+ optional: true,
892
+ description: 'Status emoji',
893
+ },
894
+
895
+ // Activity
896
+ lastActiveAt: {
897
+ type: 'datetime',
898
+ optional: true,
899
+ description: 'Last activity timestamp',
900
+ },
901
+ joinedAt: {
902
+ type: 'datetime',
903
+ description: 'Join timestamp',
904
+ },
905
+ },
906
+
907
+ relationships: {
908
+ workspace: {
909
+ type: 'Workspace',
910
+ backref: 'members',
911
+ description: 'Workspace membership',
912
+ },
913
+ channels: {
914
+ type: 'Channel[]',
915
+ backref: 'members',
916
+ description: 'Channel memberships',
917
+ },
918
+ contact: {
919
+ type: 'Contact',
920
+ description: 'Associated contact',
921
+ },
922
+ },
923
+
924
+ actions: [
925
+ 'invite',
926
+ 'remove',
927
+ 'promote',
928
+ 'demote',
929
+ 'activate',
930
+ 'deactivate',
931
+ 'setStatus',
932
+ ],
933
+
934
+ events: [
935
+ 'invited',
936
+ 'joined',
937
+ 'removed',
938
+ 'promoted',
939
+ 'demoted',
940
+ 'activated',
941
+ 'deactivated',
942
+ 'statusChanged',
943
+ ],
944
+ }
945
+
946
+ // =============================================================================
947
+ // Contact
948
+ // =============================================================================
949
+
950
+ /**
951
+ * Contact entity
952
+ *
953
+ * A person or entity you communicate with.
954
+ */
955
+ export const Contact: Noun = {
956
+ singular: 'contact',
957
+ plural: 'contacts',
958
+ description: 'A person or entity for communication',
959
+
960
+ properties: {
961
+ // Identity
962
+ id: {
963
+ type: 'string',
964
+ description: 'Unique contact identifier',
965
+ },
966
+
967
+ // Name
968
+ name: {
969
+ type: 'string',
970
+ description: 'Full name',
971
+ },
972
+ firstName: {
973
+ type: 'string',
974
+ optional: true,
975
+ description: 'First name',
976
+ },
977
+ lastName: {
978
+ type: 'string',
979
+ optional: true,
980
+ description: 'Last name',
981
+ },
982
+ nickname: {
983
+ type: 'string',
984
+ optional: true,
985
+ description: 'Nickname',
986
+ },
987
+
988
+ // Contact info
989
+ email: {
990
+ type: 'string',
991
+ optional: true,
992
+ description: 'Email address',
993
+ },
994
+ phone: {
995
+ type: 'string',
996
+ optional: true,
997
+ description: 'Phone number',
998
+ },
999
+ avatar: {
1000
+ type: 'url',
1001
+ optional: true,
1002
+ description: 'Avatar URL',
1003
+ },
1004
+
1005
+ // Organization
1006
+ company: {
1007
+ type: 'string',
1008
+ optional: true,
1009
+ description: 'Company name',
1010
+ },
1011
+ title: {
1012
+ type: 'string',
1013
+ optional: true,
1014
+ description: 'Job title',
1015
+ },
1016
+
1017
+ // Address
1018
+ address: {
1019
+ type: 'json',
1020
+ optional: true,
1021
+ description: 'Address',
1022
+ },
1023
+
1024
+ // Social
1025
+ social: {
1026
+ type: 'json',
1027
+ optional: true,
1028
+ description: 'Social media handles',
1029
+ },
1030
+
1031
+ // Metadata
1032
+ tags: {
1033
+ type: 'string',
1034
+ array: true,
1035
+ optional: true,
1036
+ description: 'Tags',
1037
+ },
1038
+ notes: {
1039
+ type: 'string',
1040
+ optional: true,
1041
+ description: 'Notes',
1042
+ },
1043
+ metadata: {
1044
+ type: 'json',
1045
+ optional: true,
1046
+ description: 'Additional metadata',
1047
+ },
1048
+ },
1049
+
1050
+ relationships: {
1051
+ messages: {
1052
+ type: 'Message[]',
1053
+ description: 'Messages with this contact',
1054
+ },
1055
+ calls: {
1056
+ type: 'Call[]',
1057
+ description: 'Calls with this contact',
1058
+ },
1059
+ },
1060
+
1061
+ actions: [
1062
+ 'create',
1063
+ 'update',
1064
+ 'delete',
1065
+ 'merge',
1066
+ 'tag',
1067
+ 'untag',
1068
+ 'block',
1069
+ 'unblock',
1070
+ ],
1071
+
1072
+ events: [
1073
+ 'created',
1074
+ 'updated',
1075
+ 'deleted',
1076
+ 'merged',
1077
+ 'tagged',
1078
+ 'blocked',
1079
+ 'unblocked',
1080
+ ],
1081
+ }
1082
+
1083
+ // =============================================================================
1084
+ // Attachment
1085
+ // =============================================================================
1086
+
1087
+ /**
1088
+ * Attachment entity
1089
+ *
1090
+ * A file attached to a message.
1091
+ */
1092
+ export const Attachment: Noun = {
1093
+ singular: 'attachment',
1094
+ plural: 'attachments',
1095
+ description: 'A file attached to a message',
1096
+
1097
+ properties: {
1098
+ // Identity
1099
+ id: {
1100
+ type: 'string',
1101
+ description: 'Unique attachment identifier',
1102
+ },
1103
+
1104
+ // File info
1105
+ name: {
1106
+ type: 'string',
1107
+ description: 'File name',
1108
+ },
1109
+ type: {
1110
+ type: 'string',
1111
+ description: 'MIME type',
1112
+ },
1113
+ size: {
1114
+ type: 'number',
1115
+ description: 'File size in bytes',
1116
+ },
1117
+ url: {
1118
+ type: 'url',
1119
+ description: 'Download URL',
1120
+ },
1121
+
1122
+ // Preview
1123
+ thumbnail: {
1124
+ type: 'url',
1125
+ optional: true,
1126
+ description: 'Thumbnail URL',
1127
+ },
1128
+ preview: {
1129
+ type: 'string',
1130
+ optional: true,
1131
+ description: 'Preview content',
1132
+ },
1133
+
1134
+ // Metadata
1135
+ metadata: {
1136
+ type: 'json',
1137
+ optional: true,
1138
+ description: 'File metadata',
1139
+ },
1140
+ },
1141
+
1142
+ relationships: {
1143
+ message: {
1144
+ type: 'Message',
1145
+ backref: 'attachments',
1146
+ description: 'Parent message',
1147
+ },
1148
+ },
1149
+
1150
+ actions: [
1151
+ 'upload',
1152
+ 'download',
1153
+ 'preview',
1154
+ 'delete',
1155
+ ],
1156
+
1157
+ events: [
1158
+ 'uploaded',
1159
+ 'downloaded',
1160
+ 'previewed',
1161
+ 'deleted',
1162
+ ],
1163
+ }
1164
+
1165
+ // =============================================================================
1166
+ // Reaction
1167
+ // =============================================================================
1168
+
1169
+ /**
1170
+ * Reaction entity
1171
+ *
1172
+ * An emoji reaction to a message.
1173
+ */
1174
+ export const Reaction: Noun = {
1175
+ singular: 'reaction',
1176
+ plural: 'reactions',
1177
+ description: 'An emoji reaction to a message',
1178
+
1179
+ properties: {
1180
+ // Identity
1181
+ id: {
1182
+ type: 'string',
1183
+ description: 'Unique reaction identifier',
1184
+ },
1185
+
1186
+ // Emoji
1187
+ emoji: {
1188
+ type: 'string',
1189
+ description: 'Emoji character or code',
1190
+ },
1191
+ name: {
1192
+ type: 'string',
1193
+ optional: true,
1194
+ description: 'Emoji name',
1195
+ },
1196
+
1197
+ // Count
1198
+ count: {
1199
+ type: 'number',
1200
+ optional: true,
1201
+ description: 'Number of users who reacted',
1202
+ },
1203
+ },
1204
+
1205
+ relationships: {
1206
+ message: {
1207
+ type: 'Message',
1208
+ backref: 'reactions',
1209
+ description: 'Message being reacted to',
1210
+ },
1211
+ user: {
1212
+ type: 'Contact',
1213
+ description: 'User who reacted',
1214
+ },
1215
+ },
1216
+
1217
+ actions: [
1218
+ 'add',
1219
+ 'remove',
1220
+ ],
1221
+
1222
+ events: [
1223
+ 'added',
1224
+ 'removed',
1225
+ ],
1226
+ }
1227
+
1228
+ // =============================================================================
1229
+ // Export
1230
+ // =============================================================================
1231
+
1232
+ /**
1233
+ * All communication entities
1234
+ */
1235
+ export const CommunicationEntities = {
1236
+ Message,
1237
+ Thread,
1238
+ Call,
1239
+ Channel,
1240
+ Workspace,
1241
+ Member,
1242
+ Contact,
1243
+ Attachment,
1244
+ Reaction,
1245
+ }
1246
+
1247
+ /**
1248
+ * Communication categories
1249
+ */
1250
+ export const CommunicationCategories = {
1251
+ messaging: ['Message', 'Thread', 'Attachment', 'Reaction'],
1252
+ voice: ['Call'],
1253
+ team: ['Channel', 'Workspace', 'Member'],
1254
+ contacts: ['Contact'],
1255
+ } as const