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,1664 @@
1
+ /**
2
+ * Digital Tool Entity Types (Nouns)
3
+ *
4
+ * Semantic type definitions for digital tools that can be used by
5
+ * both remote human workers AND AI agents. Each entity defines:
6
+ * - Properties: The data fields
7
+ * - Actions: Operations that can be performed (Verbs)
8
+ * - Events: State changes that occur
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ // =============================================================================
13
+ // Email
14
+ // =============================================================================
15
+ /**
16
+ * Email message entity
17
+ *
18
+ * Represents an email that can be composed, sent, received, replied to, etc.
19
+ */
20
+ export const Email = {
21
+ singular: 'email',
22
+ plural: 'emails',
23
+ description: 'An electronic mail message',
24
+ properties: {
25
+ // Identity
26
+ messageId: {
27
+ type: 'string',
28
+ description: 'Unique message identifier (Message-ID header)',
29
+ },
30
+ // Addressing
31
+ from: {
32
+ type: 'string',
33
+ description: 'Sender email address',
34
+ },
35
+ to: {
36
+ type: 'string',
37
+ array: true,
38
+ description: 'Primary recipient email addresses',
39
+ },
40
+ cc: {
41
+ type: 'string',
42
+ array: true,
43
+ optional: true,
44
+ description: 'Carbon copy recipient addresses',
45
+ },
46
+ bcc: {
47
+ type: 'string',
48
+ array: true,
49
+ optional: true,
50
+ description: 'Blind carbon copy recipient addresses',
51
+ },
52
+ replyTo: {
53
+ type: 'string',
54
+ optional: true,
55
+ description: 'Reply-to address if different from sender',
56
+ },
57
+ // Content
58
+ subject: {
59
+ type: 'string',
60
+ description: 'Email subject line',
61
+ },
62
+ body: {
63
+ type: 'string',
64
+ description: 'Plain text body content',
65
+ },
66
+ html: {
67
+ type: 'string',
68
+ optional: true,
69
+ description: 'HTML body content',
70
+ },
71
+ // Threading
72
+ inReplyTo: {
73
+ type: 'string',
74
+ optional: true,
75
+ description: 'Message-ID of the email being replied to',
76
+ },
77
+ references: {
78
+ type: 'string',
79
+ array: true,
80
+ optional: true,
81
+ description: 'Message-IDs of the conversation thread',
82
+ },
83
+ threadId: {
84
+ type: 'string',
85
+ optional: true,
86
+ description: 'Conversation thread identifier',
87
+ },
88
+ // Status
89
+ status: {
90
+ type: 'string',
91
+ description: 'Email status: draft, queued, sent, delivered, bounced, failed',
92
+ examples: ['draft', 'queued', 'sent', 'delivered', 'bounced', 'failed'],
93
+ },
94
+ read: {
95
+ type: 'boolean',
96
+ optional: true,
97
+ description: 'Whether the email has been read',
98
+ },
99
+ starred: {
100
+ type: 'boolean',
101
+ optional: true,
102
+ description: 'Whether the email is starred/flagged',
103
+ },
104
+ labels: {
105
+ type: 'string',
106
+ array: true,
107
+ optional: true,
108
+ description: 'Labels or folders applied to the email',
109
+ },
110
+ // Metadata
111
+ priority: {
112
+ type: 'string',
113
+ optional: true,
114
+ description: 'Email priority: low, normal, high',
115
+ examples: ['low', 'normal', 'high'],
116
+ },
117
+ headers: {
118
+ type: 'json',
119
+ optional: true,
120
+ description: 'Additional email headers',
121
+ },
122
+ },
123
+ relationships: {
124
+ attachments: {
125
+ type: 'Attachment[]',
126
+ description: 'Files attached to the email',
127
+ },
128
+ sender: {
129
+ type: 'Contact',
130
+ description: 'The sender as a contact entity',
131
+ },
132
+ recipients: {
133
+ type: 'Contact[]',
134
+ description: 'All recipients as contact entities',
135
+ },
136
+ thread: {
137
+ type: 'EmailThread',
138
+ backref: 'emails',
139
+ description: 'The conversation thread this email belongs to',
140
+ },
141
+ },
142
+ actions: [
143
+ 'compose',
144
+ 'send',
145
+ 'reply',
146
+ 'replyAll',
147
+ 'forward',
148
+ 'archive',
149
+ 'delete',
150
+ 'markRead',
151
+ 'markUnread',
152
+ 'star',
153
+ 'unstar',
154
+ 'label',
155
+ 'unlabel',
156
+ 'move',
157
+ 'schedule',
158
+ ],
159
+ events: [
160
+ 'composed',
161
+ 'sent',
162
+ 'delivered',
163
+ 'opened',
164
+ 'clicked',
165
+ 'bounced',
166
+ 'replied',
167
+ 'forwarded',
168
+ 'archived',
169
+ 'deleted',
170
+ 'read',
171
+ 'starred',
172
+ 'labeled',
173
+ 'moved',
174
+ ],
175
+ };
176
+ /**
177
+ * Email thread/conversation
178
+ */
179
+ export const EmailThread = {
180
+ singular: 'email thread',
181
+ plural: 'email threads',
182
+ description: 'A conversation thread of related emails',
183
+ properties: {
184
+ subject: {
185
+ type: 'string',
186
+ description: 'Thread subject (from first email)',
187
+ },
188
+ snippet: {
189
+ type: 'string',
190
+ optional: true,
191
+ description: 'Preview snippet of latest message',
192
+ },
193
+ messageCount: {
194
+ type: 'number',
195
+ description: 'Number of emails in the thread',
196
+ },
197
+ unreadCount: {
198
+ type: 'number',
199
+ optional: true,
200
+ description: 'Number of unread emails',
201
+ },
202
+ participants: {
203
+ type: 'string',
204
+ array: true,
205
+ description: 'Email addresses of all participants',
206
+ },
207
+ lastMessageAt: {
208
+ type: 'datetime',
209
+ description: 'Timestamp of the most recent message',
210
+ },
211
+ },
212
+ relationships: {
213
+ emails: {
214
+ type: 'Email[]',
215
+ backref: 'thread',
216
+ description: 'All emails in this thread',
217
+ },
218
+ },
219
+ actions: ['archive', 'delete', 'markRead', 'markUnread', 'mute', 'unmute'],
220
+ events: ['updated', 'archived', 'deleted', 'muted'],
221
+ };
222
+ // =============================================================================
223
+ // Spreadsheet
224
+ // =============================================================================
225
+ /**
226
+ * Spreadsheet workbook entity
227
+ */
228
+ export const Spreadsheet = {
229
+ singular: 'spreadsheet',
230
+ plural: 'spreadsheets',
231
+ description: 'A workbook containing sheets of tabular data with formulas',
232
+ properties: {
233
+ name: {
234
+ type: 'string',
235
+ description: 'Spreadsheet name/title',
236
+ },
237
+ description: {
238
+ type: 'string',
239
+ optional: true,
240
+ description: 'Description of the spreadsheet contents',
241
+ },
242
+ format: {
243
+ type: 'string',
244
+ description: 'File format: xlsx, xls, csv, ods, gsheet',
245
+ examples: ['xlsx', 'xls', 'csv', 'ods', 'gsheet'],
246
+ },
247
+ locale: {
248
+ type: 'string',
249
+ optional: true,
250
+ description: 'Locale for number/date formatting',
251
+ },
252
+ timeZone: {
253
+ type: 'string',
254
+ optional: true,
255
+ description: 'Timezone for date calculations',
256
+ },
257
+ sheetCount: {
258
+ type: 'number',
259
+ description: 'Number of sheets in the workbook',
260
+ },
261
+ size: {
262
+ type: 'number',
263
+ optional: true,
264
+ description: 'File size in bytes',
265
+ },
266
+ },
267
+ relationships: {
268
+ sheets: {
269
+ type: 'Sheet[]',
270
+ backref: 'spreadsheet',
271
+ description: 'Sheets/worksheets in this spreadsheet',
272
+ },
273
+ owner: {
274
+ type: 'Contact',
275
+ description: 'Owner of the spreadsheet',
276
+ },
277
+ collaborators: {
278
+ type: 'Contact[]',
279
+ description: 'People with access to edit',
280
+ },
281
+ },
282
+ actions: [
283
+ 'create',
284
+ 'open',
285
+ 'save',
286
+ 'export',
287
+ 'import',
288
+ 'share',
289
+ 'duplicate',
290
+ 'rename',
291
+ 'delete',
292
+ 'addSheet',
293
+ 'removeSheet',
294
+ ],
295
+ events: [
296
+ 'created',
297
+ 'opened',
298
+ 'saved',
299
+ 'exported',
300
+ 'imported',
301
+ 'shared',
302
+ 'duplicated',
303
+ 'renamed',
304
+ 'deleted',
305
+ 'sheetAdded',
306
+ 'sheetRemoved',
307
+ ],
308
+ };
309
+ /**
310
+ * Individual sheet/worksheet within a spreadsheet
311
+ */
312
+ export const Sheet = {
313
+ singular: 'sheet',
314
+ plural: 'sheets',
315
+ description: 'A single worksheet within a spreadsheet',
316
+ properties: {
317
+ name: {
318
+ type: 'string',
319
+ description: 'Sheet tab name',
320
+ },
321
+ index: {
322
+ type: 'number',
323
+ description: 'Position in the workbook (0-indexed)',
324
+ },
325
+ rowCount: {
326
+ type: 'number',
327
+ description: 'Number of rows with data',
328
+ },
329
+ columnCount: {
330
+ type: 'number',
331
+ description: 'Number of columns with data',
332
+ },
333
+ frozenRows: {
334
+ type: 'number',
335
+ optional: true,
336
+ description: 'Number of frozen header rows',
337
+ },
338
+ frozenColumns: {
339
+ type: 'number',
340
+ optional: true,
341
+ description: 'Number of frozen columns',
342
+ },
343
+ hidden: {
344
+ type: 'boolean',
345
+ optional: true,
346
+ description: 'Whether the sheet is hidden',
347
+ },
348
+ protected: {
349
+ type: 'boolean',
350
+ optional: true,
351
+ description: 'Whether the sheet is protected from editing',
352
+ },
353
+ },
354
+ relationships: {
355
+ spreadsheet: {
356
+ type: 'Spreadsheet',
357
+ backref: 'sheets',
358
+ description: 'Parent spreadsheet',
359
+ },
360
+ cells: {
361
+ type: 'Cell[]',
362
+ description: 'Cells in this sheet',
363
+ },
364
+ charts: {
365
+ type: 'Chart[]',
366
+ description: 'Charts embedded in this sheet',
367
+ },
368
+ },
369
+ actions: [
370
+ 'rename',
371
+ 'duplicate',
372
+ 'delete',
373
+ 'hide',
374
+ 'show',
375
+ 'protect',
376
+ 'unprotect',
377
+ 'clear',
378
+ 'sort',
379
+ 'filter',
380
+ 'insertRow',
381
+ 'insertColumn',
382
+ 'deleteRow',
383
+ 'deleteColumn',
384
+ ],
385
+ events: [
386
+ 'renamed',
387
+ 'duplicated',
388
+ 'deleted',
389
+ 'hidden',
390
+ 'shown',
391
+ 'protected',
392
+ 'cleared',
393
+ 'sorted',
394
+ 'filtered',
395
+ 'rowInserted',
396
+ 'columnInserted',
397
+ ],
398
+ };
399
+ /**
400
+ * Cell within a sheet
401
+ */
402
+ export const Cell = {
403
+ singular: 'cell',
404
+ plural: 'cells',
405
+ description: 'A single cell in a spreadsheet sheet',
406
+ properties: {
407
+ address: {
408
+ type: 'string',
409
+ description: 'Cell address (e.g., A1, B2)',
410
+ },
411
+ row: {
412
+ type: 'number',
413
+ description: 'Row number (1-indexed)',
414
+ },
415
+ column: {
416
+ type: 'number',
417
+ description: 'Column number (1-indexed)',
418
+ },
419
+ value: {
420
+ type: 'json',
421
+ description: 'The cell value (string, number, boolean, null)',
422
+ },
423
+ formula: {
424
+ type: 'string',
425
+ optional: true,
426
+ description: 'Formula if the cell contains one',
427
+ },
428
+ displayValue: {
429
+ type: 'string',
430
+ optional: true,
431
+ description: 'Formatted display value',
432
+ },
433
+ format: {
434
+ type: 'json',
435
+ optional: true,
436
+ description: 'Cell formatting (font, color, borders, etc.)',
437
+ },
438
+ dataType: {
439
+ type: 'string',
440
+ description: 'Data type: string, number, boolean, date, formula, empty',
441
+ examples: ['string', 'number', 'boolean', 'date', 'formula', 'empty'],
442
+ },
443
+ note: {
444
+ type: 'string',
445
+ optional: true,
446
+ description: 'Cell comment/note',
447
+ },
448
+ },
449
+ actions: ['set', 'clear', 'format', 'addNote', 'removeNote', 'copy', 'cut', 'paste'],
450
+ events: ['changed', 'cleared', 'formatted', 'noteAdded', 'noteRemoved'],
451
+ };
452
+ // =============================================================================
453
+ // Document
454
+ // =============================================================================
455
+ /**
456
+ * Word processor document entity
457
+ */
458
+ export const Document = {
459
+ singular: 'document',
460
+ plural: 'documents',
461
+ description: 'A word processor document with rich text content',
462
+ properties: {
463
+ title: {
464
+ type: 'string',
465
+ description: 'Document title',
466
+ },
467
+ content: {
468
+ type: 'markdown',
469
+ description: 'Document content (as markdown or rich text)',
470
+ },
471
+ format: {
472
+ type: 'string',
473
+ description: 'File format: docx, doc, odt, rtf, gdoc, md',
474
+ examples: ['docx', 'doc', 'odt', 'rtf', 'gdoc', 'md'],
475
+ },
476
+ wordCount: {
477
+ type: 'number',
478
+ optional: true,
479
+ description: 'Number of words in the document',
480
+ },
481
+ characterCount: {
482
+ type: 'number',
483
+ optional: true,
484
+ description: 'Number of characters',
485
+ },
486
+ pageCount: {
487
+ type: 'number',
488
+ optional: true,
489
+ description: 'Number of pages',
490
+ },
491
+ language: {
492
+ type: 'string',
493
+ optional: true,
494
+ description: 'Document language code',
495
+ },
496
+ template: {
497
+ type: 'string',
498
+ optional: true,
499
+ description: 'Template used to create the document',
500
+ },
501
+ status: {
502
+ type: 'string',
503
+ optional: true,
504
+ description: 'Document status: draft, review, final, published',
505
+ examples: ['draft', 'review', 'final', 'published'],
506
+ },
507
+ },
508
+ relationships: {
509
+ owner: {
510
+ type: 'Contact',
511
+ description: 'Document owner',
512
+ },
513
+ collaborators: {
514
+ type: 'Contact[]',
515
+ description: 'People with edit access',
516
+ },
517
+ comments: {
518
+ type: 'Comment[]',
519
+ backref: 'document',
520
+ description: 'Comments on the document',
521
+ },
522
+ revisions: {
523
+ type: 'Revision[]',
524
+ backref: 'document',
525
+ description: 'Version history',
526
+ },
527
+ },
528
+ actions: [
529
+ 'create',
530
+ 'open',
531
+ 'edit',
532
+ 'save',
533
+ 'export',
534
+ 'print',
535
+ 'share',
536
+ 'comment',
537
+ 'suggest',
538
+ 'accept',
539
+ 'reject',
540
+ 'resolve',
541
+ 'duplicate',
542
+ 'rename',
543
+ 'delete',
544
+ 'restore',
545
+ ],
546
+ events: [
547
+ 'created',
548
+ 'opened',
549
+ 'edited',
550
+ 'saved',
551
+ 'exported',
552
+ 'printed',
553
+ 'shared',
554
+ 'commented',
555
+ 'suggested',
556
+ 'accepted',
557
+ 'rejected',
558
+ 'resolved',
559
+ 'duplicated',
560
+ 'renamed',
561
+ 'deleted',
562
+ 'restored',
563
+ ],
564
+ };
565
+ // =============================================================================
566
+ // Presentation
567
+ // =============================================================================
568
+ /**
569
+ * Presentation/slide deck entity
570
+ */
571
+ export const Presentation = {
572
+ singular: 'presentation',
573
+ plural: 'presentations',
574
+ description: 'A slide deck for presenting information',
575
+ properties: {
576
+ title: {
577
+ type: 'string',
578
+ description: 'Presentation title',
579
+ },
580
+ description: {
581
+ type: 'string',
582
+ optional: true,
583
+ description: 'Presentation description or summary',
584
+ },
585
+ format: {
586
+ type: 'string',
587
+ description: 'File format: pptx, ppt, odp, gslides, key',
588
+ examples: ['pptx', 'ppt', 'odp', 'gslides', 'key'],
589
+ },
590
+ slideCount: {
591
+ type: 'number',
592
+ description: 'Number of slides',
593
+ },
594
+ aspectRatio: {
595
+ type: 'string',
596
+ optional: true,
597
+ description: 'Slide aspect ratio: 16:9, 4:3, etc.',
598
+ examples: ['16:9', '4:3', '16:10'],
599
+ },
600
+ theme: {
601
+ type: 'string',
602
+ optional: true,
603
+ description: 'Applied theme or template name',
604
+ },
605
+ speakerNotes: {
606
+ type: 'boolean',
607
+ optional: true,
608
+ description: 'Whether presentation has speaker notes',
609
+ },
610
+ duration: {
611
+ type: 'number',
612
+ optional: true,
613
+ description: 'Estimated presentation duration in minutes',
614
+ },
615
+ },
616
+ relationships: {
617
+ slides: {
618
+ type: 'Slide[]',
619
+ backref: 'presentation',
620
+ description: 'Slides in this presentation',
621
+ },
622
+ owner: {
623
+ type: 'Contact',
624
+ description: 'Presentation owner',
625
+ },
626
+ collaborators: {
627
+ type: 'Contact[]',
628
+ description: 'People with edit access',
629
+ },
630
+ },
631
+ actions: [
632
+ 'create',
633
+ 'open',
634
+ 'edit',
635
+ 'save',
636
+ 'export',
637
+ 'present',
638
+ 'share',
639
+ 'duplicate',
640
+ 'rename',
641
+ 'delete',
642
+ 'addSlide',
643
+ 'removeSlide',
644
+ 'reorderSlides',
645
+ 'applyTheme',
646
+ ],
647
+ events: [
648
+ 'created',
649
+ 'opened',
650
+ 'edited',
651
+ 'saved',
652
+ 'exported',
653
+ 'presented',
654
+ 'shared',
655
+ 'duplicated',
656
+ 'renamed',
657
+ 'deleted',
658
+ 'slideAdded',
659
+ 'slideRemoved',
660
+ 'slidesReordered',
661
+ 'themeApplied',
662
+ ],
663
+ };
664
+ /**
665
+ * Individual slide within a presentation
666
+ */
667
+ export const Slide = {
668
+ singular: 'slide',
669
+ plural: 'slides',
670
+ description: 'A single slide in a presentation',
671
+ properties: {
672
+ title: {
673
+ type: 'string',
674
+ optional: true,
675
+ description: 'Slide title',
676
+ },
677
+ index: {
678
+ type: 'number',
679
+ description: 'Position in the presentation (0-indexed)',
680
+ },
681
+ layout: {
682
+ type: 'string',
683
+ optional: true,
684
+ description: 'Slide layout type: title, titleAndContent, blank, etc.',
685
+ examples: ['title', 'titleAndContent', 'sectionHeader', 'twoColumn', 'blank'],
686
+ },
687
+ notes: {
688
+ type: 'string',
689
+ optional: true,
690
+ description: 'Speaker notes for this slide',
691
+ },
692
+ hidden: {
693
+ type: 'boolean',
694
+ optional: true,
695
+ description: 'Whether slide is hidden from presentation',
696
+ },
697
+ transition: {
698
+ type: 'json',
699
+ optional: true,
700
+ description: 'Slide transition effect settings',
701
+ },
702
+ },
703
+ relationships: {
704
+ presentation: {
705
+ type: 'Presentation',
706
+ backref: 'slides',
707
+ description: 'Parent presentation',
708
+ },
709
+ elements: {
710
+ type: 'SlideElement[]',
711
+ description: 'Elements on this slide (text boxes, images, shapes)',
712
+ },
713
+ },
714
+ actions: [
715
+ 'edit',
716
+ 'duplicate',
717
+ 'delete',
718
+ 'hide',
719
+ 'show',
720
+ 'move',
721
+ 'addElement',
722
+ 'removeElement',
723
+ 'setLayout',
724
+ 'setTransition',
725
+ 'addNote',
726
+ ],
727
+ events: [
728
+ 'edited',
729
+ 'duplicated',
730
+ 'deleted',
731
+ 'hidden',
732
+ 'shown',
733
+ 'moved',
734
+ 'elementAdded',
735
+ 'elementRemoved',
736
+ 'layoutChanged',
737
+ 'transitionChanged',
738
+ ],
739
+ };
740
+ // =============================================================================
741
+ // Phone / Voice Call
742
+ // =============================================================================
743
+ /**
744
+ * Phone call entity
745
+ */
746
+ export const PhoneCall = {
747
+ singular: 'phone call',
748
+ plural: 'phone calls',
749
+ description: 'A voice telephone call',
750
+ properties: {
751
+ // Parties
752
+ from: {
753
+ type: 'string',
754
+ description: 'Caller phone number (E.164 format)',
755
+ },
756
+ to: {
757
+ type: 'string',
758
+ description: 'Recipient phone number (E.164 format)',
759
+ },
760
+ direction: {
761
+ type: 'string',
762
+ description: 'Call direction: inbound, outbound',
763
+ examples: ['inbound', 'outbound'],
764
+ },
765
+ // Status
766
+ status: {
767
+ type: 'string',
768
+ description: 'Call status: ringing, in-progress, completed, busy, failed, no-answer, canceled',
769
+ examples: ['ringing', 'in-progress', 'completed', 'busy', 'failed', 'no-answer', 'canceled'],
770
+ },
771
+ // Timing
772
+ startedAt: {
773
+ type: 'datetime',
774
+ optional: true,
775
+ description: 'When the call was initiated',
776
+ },
777
+ answeredAt: {
778
+ type: 'datetime',
779
+ optional: true,
780
+ description: 'When the call was answered',
781
+ },
782
+ endedAt: {
783
+ type: 'datetime',
784
+ optional: true,
785
+ description: 'When the call ended',
786
+ },
787
+ duration: {
788
+ type: 'number',
789
+ optional: true,
790
+ description: 'Call duration in seconds',
791
+ },
792
+ // Recording
793
+ recorded: {
794
+ type: 'boolean',
795
+ optional: true,
796
+ description: 'Whether the call was recorded',
797
+ },
798
+ recordingUrl: {
799
+ type: 'url',
800
+ optional: true,
801
+ description: 'URL to the call recording',
802
+ },
803
+ transcription: {
804
+ type: 'string',
805
+ optional: true,
806
+ description: 'Transcription of the call',
807
+ },
808
+ // Context
809
+ notes: {
810
+ type: 'string',
811
+ optional: true,
812
+ description: 'Notes about the call',
813
+ },
814
+ tags: {
815
+ type: 'string',
816
+ array: true,
817
+ optional: true,
818
+ description: 'Tags/labels for the call',
819
+ },
820
+ },
821
+ relationships: {
822
+ caller: {
823
+ type: 'Contact',
824
+ description: 'The person who made the call',
825
+ },
826
+ recipient: {
827
+ type: 'Contact',
828
+ description: 'The person who received the call',
829
+ },
830
+ voicemail: {
831
+ type: 'Voicemail',
832
+ required: false,
833
+ description: 'Voicemail left if call was not answered',
834
+ },
835
+ },
836
+ actions: [
837
+ 'dial',
838
+ 'answer',
839
+ 'hangup',
840
+ 'hold',
841
+ 'resume',
842
+ 'transfer',
843
+ 'mute',
844
+ 'unmute',
845
+ 'record',
846
+ 'stopRecording',
847
+ 'sendDtmf',
848
+ 'addParticipant',
849
+ ],
850
+ events: [
851
+ 'initiated',
852
+ 'ringing',
853
+ 'answered',
854
+ 'held',
855
+ 'resumed',
856
+ 'transferred',
857
+ 'muted',
858
+ 'unmuted',
859
+ 'recordingStarted',
860
+ 'recordingStopped',
861
+ 'ended',
862
+ 'voicemailLeft',
863
+ ],
864
+ };
865
+ /**
866
+ * Voicemail message
867
+ */
868
+ export const Voicemail = {
869
+ singular: 'voicemail',
870
+ plural: 'voicemails',
871
+ description: 'A voicemail message',
872
+ properties: {
873
+ from: {
874
+ type: 'string',
875
+ description: 'Caller phone number',
876
+ },
877
+ to: {
878
+ type: 'string',
879
+ description: 'Recipient phone number',
880
+ },
881
+ duration: {
882
+ type: 'number',
883
+ description: 'Voicemail duration in seconds',
884
+ },
885
+ audioUrl: {
886
+ type: 'url',
887
+ description: 'URL to the audio file',
888
+ },
889
+ transcription: {
890
+ type: 'string',
891
+ optional: true,
892
+ description: 'Transcription of the voicemail',
893
+ },
894
+ read: {
895
+ type: 'boolean',
896
+ description: 'Whether the voicemail has been listened to',
897
+ },
898
+ },
899
+ relationships: {
900
+ caller: {
901
+ type: 'Contact',
902
+ description: 'The person who left the voicemail',
903
+ },
904
+ call: {
905
+ type: 'PhoneCall',
906
+ description: 'The missed call this voicemail is associated with',
907
+ },
908
+ },
909
+ actions: ['play', 'markRead', 'markUnread', 'delete', 'transcribe', 'callback'],
910
+ events: ['received', 'played', 'read', 'deleted', 'transcribed'],
911
+ };
912
+ // =============================================================================
913
+ // Channel / Team Messaging (Slack/Teams/Discord alternative naming)
914
+ // =============================================================================
915
+ /**
916
+ * Workspace - The top-level container for team messaging
917
+ *
918
+ * This is the brand-agnostic equivalent of:
919
+ * - Slack Workspace
920
+ * - Microsoft Teams Team
921
+ * - Discord Server
922
+ */
923
+ export const Workspace = {
924
+ singular: 'workspace',
925
+ plural: 'workspaces',
926
+ description: 'A collaborative workspace for team communication and coordination',
927
+ properties: {
928
+ name: {
929
+ type: 'string',
930
+ description: 'Workspace name',
931
+ },
932
+ description: {
933
+ type: 'string',
934
+ optional: true,
935
+ description: 'Workspace description or purpose',
936
+ },
937
+ icon: {
938
+ type: 'url',
939
+ optional: true,
940
+ description: 'Workspace icon/logo URL',
941
+ },
942
+ domain: {
943
+ type: 'string',
944
+ optional: true,
945
+ description: 'Custom domain or URL slug',
946
+ },
947
+ visibility: {
948
+ type: 'string',
949
+ description: 'Workspace visibility: public, private, organization',
950
+ examples: ['public', 'private', 'organization'],
951
+ },
952
+ memberCount: {
953
+ type: 'number',
954
+ optional: true,
955
+ description: 'Number of members',
956
+ },
957
+ plan: {
958
+ type: 'string',
959
+ optional: true,
960
+ description: 'Subscription plan: free, pro, business, enterprise',
961
+ },
962
+ },
963
+ relationships: {
964
+ channels: {
965
+ type: 'Channel[]',
966
+ backref: 'workspace',
967
+ description: 'Channels in this workspace',
968
+ },
969
+ members: {
970
+ type: 'Member[]',
971
+ backref: 'workspace',
972
+ description: 'Members of the workspace',
973
+ },
974
+ owner: {
975
+ type: 'Contact',
976
+ description: 'Workspace owner/creator',
977
+ },
978
+ },
979
+ actions: [
980
+ 'create',
981
+ 'configure',
982
+ 'invite',
983
+ 'remove',
984
+ 'archive',
985
+ 'delete',
986
+ 'createChannel',
987
+ 'setPermissions',
988
+ ],
989
+ events: [
990
+ 'created',
991
+ 'configured',
992
+ 'memberJoined',
993
+ 'memberLeft',
994
+ 'memberRemoved',
995
+ 'channelCreated',
996
+ 'archived',
997
+ 'deleted',
998
+ ],
999
+ };
1000
+ /**
1001
+ * Channel - A communication channel within a workspace
1002
+ *
1003
+ * This is the brand-agnostic equivalent of:
1004
+ * - Slack Channel
1005
+ * - Microsoft Teams Channel
1006
+ * - Discord Channel
1007
+ */
1008
+ export const Channel = {
1009
+ singular: 'channel',
1010
+ plural: 'channels',
1011
+ description: 'A communication channel for group messaging and collaboration',
1012
+ properties: {
1013
+ name: {
1014
+ type: 'string',
1015
+ description: 'Channel name (typically lowercase with hyphens)',
1016
+ },
1017
+ topic: {
1018
+ type: 'string',
1019
+ optional: true,
1020
+ description: 'Channel topic or purpose',
1021
+ },
1022
+ description: {
1023
+ type: 'string',
1024
+ optional: true,
1025
+ description: 'Detailed channel description',
1026
+ },
1027
+ visibility: {
1028
+ type: 'string',
1029
+ description: 'Channel visibility: public, private',
1030
+ examples: ['public', 'private'],
1031
+ },
1032
+ archived: {
1033
+ type: 'boolean',
1034
+ optional: true,
1035
+ description: 'Whether the channel is archived',
1036
+ },
1037
+ pinned: {
1038
+ type: 'boolean',
1039
+ optional: true,
1040
+ description: 'Whether the channel is pinned for easy access',
1041
+ },
1042
+ muted: {
1043
+ type: 'boolean',
1044
+ optional: true,
1045
+ description: 'Whether notifications are muted',
1046
+ },
1047
+ memberCount: {
1048
+ type: 'number',
1049
+ optional: true,
1050
+ description: 'Number of channel members',
1051
+ },
1052
+ lastActivityAt: {
1053
+ type: 'datetime',
1054
+ optional: true,
1055
+ description: 'Timestamp of last message or activity',
1056
+ },
1057
+ },
1058
+ relationships: {
1059
+ workspace: {
1060
+ type: 'Workspace',
1061
+ backref: 'channels',
1062
+ description: 'Parent workspace',
1063
+ },
1064
+ messages: {
1065
+ type: 'Message[]',
1066
+ backref: 'channel',
1067
+ description: 'Messages in this channel',
1068
+ },
1069
+ members: {
1070
+ type: 'Member[]',
1071
+ description: 'Members who have access to this channel',
1072
+ },
1073
+ pinnedMessages: {
1074
+ type: 'Message[]',
1075
+ description: 'Pinned messages in this channel',
1076
+ },
1077
+ },
1078
+ actions: [
1079
+ 'create',
1080
+ 'rename',
1081
+ 'setTopic',
1082
+ 'invite',
1083
+ 'remove',
1084
+ 'join',
1085
+ 'leave',
1086
+ 'archive',
1087
+ 'unarchive',
1088
+ 'delete',
1089
+ 'pin',
1090
+ 'unpin',
1091
+ 'mute',
1092
+ 'unmute',
1093
+ ],
1094
+ events: [
1095
+ 'created',
1096
+ 'renamed',
1097
+ 'topicChanged',
1098
+ 'memberJoined',
1099
+ 'memberLeft',
1100
+ 'memberRemoved',
1101
+ 'archived',
1102
+ 'unarchived',
1103
+ 'deleted',
1104
+ 'pinned',
1105
+ 'unpinned',
1106
+ 'muted',
1107
+ 'unmuted',
1108
+ ],
1109
+ };
1110
+ /**
1111
+ * Message - A message in a channel or direct conversation
1112
+ */
1113
+ export const Message = {
1114
+ singular: 'message',
1115
+ plural: 'messages',
1116
+ description: 'A message in a channel or conversation',
1117
+ properties: {
1118
+ text: {
1119
+ type: 'string',
1120
+ description: 'Message text content',
1121
+ },
1122
+ richText: {
1123
+ type: 'json',
1124
+ optional: true,
1125
+ description: 'Rich text content (formatted blocks)',
1126
+ },
1127
+ // Threading
1128
+ threadId: {
1129
+ type: 'string',
1130
+ optional: true,
1131
+ description: 'Thread identifier if part of a thread',
1132
+ },
1133
+ replyCount: {
1134
+ type: 'number',
1135
+ optional: true,
1136
+ description: 'Number of replies if this is a thread parent',
1137
+ },
1138
+ // Status
1139
+ edited: {
1140
+ type: 'boolean',
1141
+ optional: true,
1142
+ description: 'Whether the message has been edited',
1143
+ },
1144
+ editedAt: {
1145
+ type: 'datetime',
1146
+ optional: true,
1147
+ description: 'When the message was last edited',
1148
+ },
1149
+ pinned: {
1150
+ type: 'boolean',
1151
+ optional: true,
1152
+ description: 'Whether the message is pinned',
1153
+ },
1154
+ // Mentions & References
1155
+ mentions: {
1156
+ type: 'string',
1157
+ array: true,
1158
+ optional: true,
1159
+ description: 'User IDs mentioned in the message',
1160
+ },
1161
+ channelMentions: {
1162
+ type: 'string',
1163
+ array: true,
1164
+ optional: true,
1165
+ description: 'Channel IDs mentioned',
1166
+ },
1167
+ },
1168
+ relationships: {
1169
+ channel: {
1170
+ type: 'Channel',
1171
+ backref: 'messages',
1172
+ description: 'Channel this message was posted in',
1173
+ },
1174
+ sender: {
1175
+ type: 'Member',
1176
+ description: 'Who sent the message',
1177
+ },
1178
+ attachments: {
1179
+ type: 'Attachment[]',
1180
+ description: 'Files attached to the message',
1181
+ },
1182
+ reactions: {
1183
+ type: 'Reaction[]',
1184
+ backref: 'message',
1185
+ description: 'Emoji reactions to the message',
1186
+ },
1187
+ thread: {
1188
+ type: 'Thread',
1189
+ required: false,
1190
+ description: 'Thread this message belongs to or started',
1191
+ },
1192
+ },
1193
+ actions: [
1194
+ 'send',
1195
+ 'edit',
1196
+ 'delete',
1197
+ 'react',
1198
+ 'unreact',
1199
+ 'reply',
1200
+ 'pin',
1201
+ 'unpin',
1202
+ 'share',
1203
+ 'bookmark',
1204
+ 'report',
1205
+ ],
1206
+ events: [
1207
+ 'sent',
1208
+ 'edited',
1209
+ 'deleted',
1210
+ 'reacted',
1211
+ 'unreacted',
1212
+ 'replied',
1213
+ 'pinned',
1214
+ 'unpinned',
1215
+ 'shared',
1216
+ 'bookmarked',
1217
+ ],
1218
+ };
1219
+ /**
1220
+ * Thread - A threaded conversation within a channel
1221
+ */
1222
+ export const Thread = {
1223
+ singular: 'thread',
1224
+ plural: 'threads',
1225
+ description: 'A threaded conversation branching from a message',
1226
+ properties: {
1227
+ replyCount: {
1228
+ type: 'number',
1229
+ description: 'Number of replies in the thread',
1230
+ },
1231
+ participantCount: {
1232
+ type: 'number',
1233
+ optional: true,
1234
+ description: 'Number of unique participants',
1235
+ },
1236
+ lastReplyAt: {
1237
+ type: 'datetime',
1238
+ optional: true,
1239
+ description: 'Timestamp of the last reply',
1240
+ },
1241
+ subscribed: {
1242
+ type: 'boolean',
1243
+ optional: true,
1244
+ description: 'Whether the current user is subscribed to replies',
1245
+ },
1246
+ },
1247
+ relationships: {
1248
+ parentMessage: {
1249
+ type: 'Message',
1250
+ description: 'The message that started this thread',
1251
+ },
1252
+ replies: {
1253
+ type: 'Message[]',
1254
+ description: 'Reply messages in this thread',
1255
+ },
1256
+ participants: {
1257
+ type: 'Member[]',
1258
+ description: 'People who have replied in this thread',
1259
+ },
1260
+ },
1261
+ actions: ['reply', 'subscribe', 'unsubscribe', 'markRead'],
1262
+ events: ['replied', 'subscribed', 'unsubscribed', 'read'],
1263
+ };
1264
+ /**
1265
+ * DirectMessage - Private one-on-one or group conversation
1266
+ */
1267
+ export const DirectMessage = {
1268
+ singular: 'direct message',
1269
+ plural: 'direct messages',
1270
+ description: 'A private conversation between two or more people',
1271
+ properties: {
1272
+ name: {
1273
+ type: 'string',
1274
+ optional: true,
1275
+ description: 'Custom name for group DMs',
1276
+ },
1277
+ isGroup: {
1278
+ type: 'boolean',
1279
+ description: 'Whether this is a group DM (more than 2 people)',
1280
+ },
1281
+ lastMessageAt: {
1282
+ type: 'datetime',
1283
+ optional: true,
1284
+ description: 'Timestamp of the last message',
1285
+ },
1286
+ unreadCount: {
1287
+ type: 'number',
1288
+ optional: true,
1289
+ description: 'Number of unread messages',
1290
+ },
1291
+ muted: {
1292
+ type: 'boolean',
1293
+ optional: true,
1294
+ description: 'Whether notifications are muted',
1295
+ },
1296
+ },
1297
+ relationships: {
1298
+ participants: {
1299
+ type: 'Member[]',
1300
+ description: 'People in this conversation',
1301
+ },
1302
+ messages: {
1303
+ type: 'Message[]',
1304
+ description: 'Messages in this conversation',
1305
+ },
1306
+ },
1307
+ actions: [
1308
+ 'send',
1309
+ 'archive',
1310
+ 'leave',
1311
+ 'addParticipant',
1312
+ 'removeParticipant',
1313
+ 'mute',
1314
+ 'unmute',
1315
+ 'markRead',
1316
+ ],
1317
+ events: [
1318
+ 'messageSent',
1319
+ 'archived',
1320
+ 'left',
1321
+ 'participantAdded',
1322
+ 'participantRemoved',
1323
+ 'muted',
1324
+ 'unmuted',
1325
+ 'read',
1326
+ ],
1327
+ };
1328
+ /**
1329
+ * Member - A member of a workspace
1330
+ */
1331
+ export const Member = {
1332
+ singular: 'member',
1333
+ plural: 'members',
1334
+ description: 'A member of a workspace or channel',
1335
+ properties: {
1336
+ displayName: {
1337
+ type: 'string',
1338
+ description: 'Display name',
1339
+ },
1340
+ username: {
1341
+ type: 'string',
1342
+ optional: true,
1343
+ description: 'Username handle',
1344
+ },
1345
+ avatar: {
1346
+ type: 'url',
1347
+ optional: true,
1348
+ description: 'Profile picture URL',
1349
+ },
1350
+ title: {
1351
+ type: 'string',
1352
+ optional: true,
1353
+ description: 'Job title',
1354
+ },
1355
+ status: {
1356
+ type: 'string',
1357
+ optional: true,
1358
+ description: 'Custom status message',
1359
+ },
1360
+ presence: {
1361
+ type: 'string',
1362
+ description: 'Online presence: online, away, dnd, offline',
1363
+ examples: ['online', 'away', 'dnd', 'offline'],
1364
+ },
1365
+ role: {
1366
+ type: 'string',
1367
+ description: 'Role in workspace: owner, admin, member, guest',
1368
+ examples: ['owner', 'admin', 'member', 'guest'],
1369
+ },
1370
+ timezone: {
1371
+ type: 'string',
1372
+ optional: true,
1373
+ description: 'Member timezone',
1374
+ },
1375
+ },
1376
+ relationships: {
1377
+ workspace: {
1378
+ type: 'Workspace',
1379
+ backref: 'members',
1380
+ description: 'Workspace this member belongs to',
1381
+ },
1382
+ contact: {
1383
+ type: 'Contact',
1384
+ description: 'Associated contact record',
1385
+ },
1386
+ },
1387
+ actions: [
1388
+ 'invite',
1389
+ 'remove',
1390
+ 'setRole',
1391
+ 'setStatus',
1392
+ 'setPresence',
1393
+ 'mention',
1394
+ 'message',
1395
+ 'block',
1396
+ 'unblock',
1397
+ ],
1398
+ events: [
1399
+ 'joined',
1400
+ 'left',
1401
+ 'removed',
1402
+ 'roleChanged',
1403
+ 'statusChanged',
1404
+ 'presenceChanged',
1405
+ 'blocked',
1406
+ 'unblocked',
1407
+ ],
1408
+ };
1409
+ /**
1410
+ * Reaction - An emoji reaction to a message
1411
+ */
1412
+ export const Reaction = {
1413
+ singular: 'reaction',
1414
+ plural: 'reactions',
1415
+ description: 'An emoji reaction to a message',
1416
+ properties: {
1417
+ emoji: {
1418
+ type: 'string',
1419
+ description: 'Emoji character or shortcode',
1420
+ },
1421
+ count: {
1422
+ type: 'number',
1423
+ description: 'Number of users who added this reaction',
1424
+ },
1425
+ },
1426
+ relationships: {
1427
+ message: {
1428
+ type: 'Message',
1429
+ backref: 'reactions',
1430
+ description: 'Message this reaction is on',
1431
+ },
1432
+ users: {
1433
+ type: 'Member[]',
1434
+ description: 'Users who added this reaction',
1435
+ },
1436
+ },
1437
+ actions: ['add', 'remove'],
1438
+ events: ['added', 'removed'],
1439
+ };
1440
+ // =============================================================================
1441
+ // Supporting Entities
1442
+ // =============================================================================
1443
+ /**
1444
+ * Attachment - A file attachment
1445
+ */
1446
+ export const Attachment = {
1447
+ singular: 'attachment',
1448
+ plural: 'attachments',
1449
+ description: 'A file attachment to an email, message, or document',
1450
+ properties: {
1451
+ filename: {
1452
+ type: 'string',
1453
+ description: 'Original filename',
1454
+ },
1455
+ mimeType: {
1456
+ type: 'string',
1457
+ description: 'MIME type of the file',
1458
+ },
1459
+ size: {
1460
+ type: 'number',
1461
+ description: 'File size in bytes',
1462
+ },
1463
+ url: {
1464
+ type: 'url',
1465
+ description: 'URL to download the file',
1466
+ },
1467
+ thumbnailUrl: {
1468
+ type: 'url',
1469
+ optional: true,
1470
+ description: 'URL to a thumbnail preview',
1471
+ },
1472
+ contentId: {
1473
+ type: 'string',
1474
+ optional: true,
1475
+ description: 'Content ID for inline attachments',
1476
+ },
1477
+ },
1478
+ actions: ['upload', 'download', 'preview', 'delete', 'share'],
1479
+ events: ['uploaded', 'downloaded', 'previewed', 'deleted', 'shared'],
1480
+ };
1481
+ /**
1482
+ * Contact - A person's contact information
1483
+ */
1484
+ export const Contact = {
1485
+ singular: 'contact',
1486
+ plural: 'contacts',
1487
+ description: 'Contact information for a person or organization',
1488
+ properties: {
1489
+ name: {
1490
+ type: 'string',
1491
+ description: 'Full name',
1492
+ },
1493
+ email: {
1494
+ type: 'string',
1495
+ optional: true,
1496
+ description: 'Primary email address',
1497
+ },
1498
+ phone: {
1499
+ type: 'string',
1500
+ optional: true,
1501
+ description: 'Primary phone number',
1502
+ },
1503
+ company: {
1504
+ type: 'string',
1505
+ optional: true,
1506
+ description: 'Company or organization',
1507
+ },
1508
+ title: {
1509
+ type: 'string',
1510
+ optional: true,
1511
+ description: 'Job title',
1512
+ },
1513
+ avatar: {
1514
+ type: 'url',
1515
+ optional: true,
1516
+ description: 'Profile photo URL',
1517
+ },
1518
+ notes: {
1519
+ type: 'string',
1520
+ optional: true,
1521
+ description: 'Notes about this contact',
1522
+ },
1523
+ tags: {
1524
+ type: 'string',
1525
+ array: true,
1526
+ optional: true,
1527
+ description: 'Tags/labels for categorization',
1528
+ },
1529
+ },
1530
+ actions: ['create', 'update', 'delete', 'merge', 'export', 'import'],
1531
+ events: ['created', 'updated', 'deleted', 'merged', 'exported', 'imported'],
1532
+ };
1533
+ /**
1534
+ * Comment - A comment on a document or other entity
1535
+ */
1536
+ export const Comment = {
1537
+ singular: 'comment',
1538
+ plural: 'comments',
1539
+ description: 'A comment or annotation on a document',
1540
+ properties: {
1541
+ text: {
1542
+ type: 'string',
1543
+ description: 'Comment text',
1544
+ },
1545
+ anchor: {
1546
+ type: 'json',
1547
+ optional: true,
1548
+ description: 'Location anchor (selection, range, etc.)',
1549
+ },
1550
+ resolved: {
1551
+ type: 'boolean',
1552
+ optional: true,
1553
+ description: 'Whether the comment has been resolved',
1554
+ },
1555
+ },
1556
+ relationships: {
1557
+ document: {
1558
+ type: 'Document',
1559
+ backref: 'comments',
1560
+ description: 'Document this comment is on',
1561
+ },
1562
+ author: {
1563
+ type: 'Contact',
1564
+ description: 'Who wrote the comment',
1565
+ },
1566
+ replies: {
1567
+ type: 'Comment[]',
1568
+ description: 'Replies to this comment',
1569
+ },
1570
+ },
1571
+ actions: ['create', 'edit', 'delete', 'resolve', 'unresolve', 'reply'],
1572
+ events: ['created', 'edited', 'deleted', 'resolved', 'unresololved', 'replied'],
1573
+ };
1574
+ /**
1575
+ * Revision - A version/revision of a document
1576
+ */
1577
+ export const Revision = {
1578
+ singular: 'revision',
1579
+ plural: 'revisions',
1580
+ description: 'A saved version of a document',
1581
+ properties: {
1582
+ version: {
1583
+ type: 'number',
1584
+ description: 'Version number',
1585
+ },
1586
+ label: {
1587
+ type: 'string',
1588
+ optional: true,
1589
+ description: 'Optional version label',
1590
+ },
1591
+ changes: {
1592
+ type: 'string',
1593
+ optional: true,
1594
+ description: 'Summary of changes',
1595
+ },
1596
+ size: {
1597
+ type: 'number',
1598
+ optional: true,
1599
+ description: 'Document size at this revision',
1600
+ },
1601
+ },
1602
+ relationships: {
1603
+ document: {
1604
+ type: 'Document',
1605
+ backref: 'revisions',
1606
+ description: 'Document this is a revision of',
1607
+ },
1608
+ author: {
1609
+ type: 'Contact',
1610
+ description: 'Who made this revision',
1611
+ },
1612
+ },
1613
+ actions: ['view', 'restore', 'compare', 'download'],
1614
+ events: ['created', 'restored', 'compared'],
1615
+ };
1616
+ // =============================================================================
1617
+ // Export all entities as a schema
1618
+ // =============================================================================
1619
+ /**
1620
+ * All digital tool entity types
1621
+ */
1622
+ export const DigitalToolEntities = {
1623
+ // Email
1624
+ Email,
1625
+ EmailThread,
1626
+ // Spreadsheet
1627
+ Spreadsheet,
1628
+ Sheet,
1629
+ Cell,
1630
+ // Document
1631
+ Document,
1632
+ // Presentation
1633
+ Presentation,
1634
+ Slide,
1635
+ // Phone
1636
+ PhoneCall,
1637
+ Voicemail,
1638
+ // Team Messaging (Slack/Teams/Discord)
1639
+ Workspace,
1640
+ Channel,
1641
+ Message,
1642
+ Thread,
1643
+ DirectMessage,
1644
+ Member,
1645
+ Reaction,
1646
+ // Supporting
1647
+ Attachment,
1648
+ Contact,
1649
+ Comment,
1650
+ Revision,
1651
+ };
1652
+ /**
1653
+ * Entity categories for organization
1654
+ */
1655
+ export const DigitalToolCategories = {
1656
+ email: ['Email', 'EmailThread'],
1657
+ spreadsheet: ['Spreadsheet', 'Sheet', 'Cell'],
1658
+ document: ['Document', 'Comment', 'Revision'],
1659
+ presentation: ['Presentation', 'Slide'],
1660
+ phone: ['PhoneCall', 'Voicemail'],
1661
+ messaging: ['Workspace', 'Channel', 'Message', 'Thread', 'DirectMessage', 'Member', 'Reaction'],
1662
+ shared: ['Attachment', 'Contact'],
1663
+ };
1664
+ //# sourceMappingURL=entities.js.map