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,1267 @@
1
+ /**
2
+ * Support/Helpdesk Entity Types (Nouns)
3
+ *
4
+ * Semantic type definitions for support and helpdesk 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
+ import type { Noun } from 'ai-database'
14
+
15
+ // =============================================================================
16
+ // Support Ticket
17
+ // =============================================================================
18
+
19
+ /**
20
+ * Support ticket entity
21
+ *
22
+ * Represents a customer support request or issue that needs resolution
23
+ */
24
+ export const SupportTicket: Noun = {
25
+ singular: 'support ticket',
26
+ plural: 'support tickets',
27
+ description: 'A customer support request or issue requiring assistance',
28
+
29
+ properties: {
30
+ // Identity
31
+ ticketNumber: {
32
+ type: 'string',
33
+ description: 'Unique ticket identifier or number',
34
+ },
35
+
36
+ // Content
37
+ subject: {
38
+ type: 'string',
39
+ description: 'Brief subject or title of the issue',
40
+ },
41
+ description: {
42
+ type: 'string',
43
+ description: 'Detailed description of the issue or request',
44
+ },
45
+
46
+ // Classification
47
+ type: {
48
+ type: 'string',
49
+ optional: true,
50
+ description: 'Ticket type: question, problem, incident, task, feature-request',
51
+ examples: ['question', 'problem', 'incident', 'task', 'feature-request'],
52
+ },
53
+ category: {
54
+ type: 'string',
55
+ optional: true,
56
+ description: 'Category or department: technical, billing, general, etc.',
57
+ },
58
+ tags: {
59
+ type: 'string',
60
+ array: true,
61
+ optional: true,
62
+ description: 'Tags for categorization and filtering',
63
+ },
64
+
65
+ // Priority & Status
66
+ priority: {
67
+ type: 'string',
68
+ description: 'Ticket priority: low, normal, high, urgent, critical',
69
+ examples: ['low', 'normal', 'high', 'urgent', 'critical'],
70
+ },
71
+ status: {
72
+ type: 'string',
73
+ description: 'Ticket status: new, open, pending, on-hold, solved, closed',
74
+ examples: ['new', 'open', 'pending', 'on-hold', 'solved', 'closed'],
75
+ },
76
+
77
+ // Assignment
78
+ assigneeId: {
79
+ type: 'string',
80
+ optional: true,
81
+ description: 'ID of the agent assigned to this ticket',
82
+ },
83
+ groupId: {
84
+ type: 'string',
85
+ optional: true,
86
+ description: 'ID of the team/group assigned to this ticket',
87
+ },
88
+
89
+ // Customer
90
+ requesterId: {
91
+ type: 'string',
92
+ description: 'ID of the customer who created the ticket',
93
+ },
94
+ requesterEmail: {
95
+ type: 'string',
96
+ description: 'Email address of the requester',
97
+ },
98
+ requesterName: {
99
+ type: 'string',
100
+ optional: true,
101
+ description: 'Name of the requester',
102
+ },
103
+
104
+ // Channel
105
+ channel: {
106
+ type: 'string',
107
+ optional: true,
108
+ description: 'How the ticket was created: email, web, chat, phone, api',
109
+ examples: ['email', 'web', 'chat', 'phone', 'api'],
110
+ },
111
+
112
+ // Timing
113
+ dueAt: {
114
+ type: 'datetime',
115
+ optional: true,
116
+ description: 'Due date/time for resolution',
117
+ },
118
+ firstResponseAt: {
119
+ type: 'datetime',
120
+ optional: true,
121
+ description: 'When the first response was sent',
122
+ },
123
+ resolvedAt: {
124
+ type: 'datetime',
125
+ optional: true,
126
+ description: 'When the ticket was resolved',
127
+ },
128
+ closedAt: {
129
+ type: 'datetime',
130
+ optional: true,
131
+ description: 'When the ticket was closed',
132
+ },
133
+
134
+ // Metrics
135
+ responseTime: {
136
+ type: 'number',
137
+ optional: true,
138
+ description: 'Time to first response in minutes',
139
+ },
140
+ resolutionTime: {
141
+ type: 'number',
142
+ optional: true,
143
+ description: 'Time to resolution in minutes',
144
+ },
145
+
146
+ // Additional
147
+ customFields: {
148
+ type: 'json',
149
+ optional: true,
150
+ description: 'Custom field values specific to organization',
151
+ },
152
+ isPublic: {
153
+ type: 'boolean',
154
+ optional: true,
155
+ description: 'Whether the ticket is publicly visible',
156
+ },
157
+ satisfaction: {
158
+ type: 'string',
159
+ optional: true,
160
+ description: 'Customer satisfaction rating: good, bad',
161
+ examples: ['good', 'bad'],
162
+ },
163
+ },
164
+
165
+ relationships: {
166
+ requester: {
167
+ type: 'Contact',
168
+ description: 'The customer who submitted the ticket',
169
+ },
170
+ assignee: {
171
+ type: 'Contact',
172
+ required: false,
173
+ description: 'The support agent assigned to the ticket',
174
+ },
175
+ comments: {
176
+ type: 'TicketComment[]',
177
+ backref: 'ticket',
178
+ description: 'Comments and replies on this ticket',
179
+ },
180
+ attachments: {
181
+ type: 'Attachment[]',
182
+ description: 'Files attached to the ticket',
183
+ },
184
+ relatedTickets: {
185
+ type: 'SupportTicket[]',
186
+ description: 'Related or linked tickets',
187
+ },
188
+ satisfactionRating: {
189
+ type: 'SatisfactionRating',
190
+ required: false,
191
+ backref: 'ticket',
192
+ description: 'Customer satisfaction rating for this ticket',
193
+ },
194
+ },
195
+
196
+ actions: [
197
+ 'create',
198
+ 'update',
199
+ 'assign',
200
+ 'reassign',
201
+ 'escalate',
202
+ 'merge',
203
+ 'split',
204
+ 'reply',
205
+ 'addComment',
206
+ 'addAttachment',
207
+ 'setPriority',
208
+ 'setStatus',
209
+ 'addTags',
210
+ 'removeTags',
211
+ 'markSpam',
212
+ 'delete',
213
+ 'close',
214
+ 'reopen',
215
+ 'requestFeedback',
216
+ ],
217
+
218
+ events: [
219
+ 'created',
220
+ 'updated',
221
+ 'assigned',
222
+ 'reassigned',
223
+ 'escalated',
224
+ 'merged',
225
+ 'split',
226
+ 'replied',
227
+ 'commented',
228
+ 'priorityChanged',
229
+ 'statusChanged',
230
+ 'tagged',
231
+ 'markedSpam',
232
+ 'deleted',
233
+ 'closed',
234
+ 'reopened',
235
+ 'rated',
236
+ 'solved',
237
+ ],
238
+ }
239
+
240
+ /**
241
+ * Ticket comment entity
242
+ *
243
+ * Represents a comment or reply on a support ticket
244
+ */
245
+ export const TicketComment: Noun = {
246
+ singular: 'ticket comment',
247
+ plural: 'ticket comments',
248
+ description: 'A comment or reply on a support ticket',
249
+
250
+ properties: {
251
+ // Content
252
+ body: {
253
+ type: 'string',
254
+ description: 'Comment text content',
255
+ },
256
+ html: {
257
+ type: 'string',
258
+ optional: true,
259
+ description: 'HTML formatted content',
260
+ },
261
+ plainText: {
262
+ type: 'string',
263
+ optional: true,
264
+ description: 'Plain text version of the comment',
265
+ },
266
+
267
+ // Visibility
268
+ isPublic: {
269
+ type: 'boolean',
270
+ description: 'Whether the comment is visible to the customer (vs internal note)',
271
+ },
272
+
273
+ // Author
274
+ authorId: {
275
+ type: 'string',
276
+ description: 'ID of the person who wrote the comment',
277
+ },
278
+ authorType: {
279
+ type: 'string',
280
+ description: 'Type of author: agent, customer, system',
281
+ examples: ['agent', 'customer', 'system'],
282
+ },
283
+
284
+ // Channel
285
+ channel: {
286
+ type: 'string',
287
+ optional: true,
288
+ description: 'How the comment was created: web, email, chat, api',
289
+ examples: ['web', 'email', 'chat', 'api'],
290
+ },
291
+
292
+ // Email specific
293
+ from: {
294
+ type: 'string',
295
+ optional: true,
296
+ description: 'Sender email address if from email',
297
+ },
298
+ to: {
299
+ type: 'string',
300
+ array: true,
301
+ optional: true,
302
+ description: 'Recipient email addresses if via email',
303
+ },
304
+ cc: {
305
+ type: 'string',
306
+ array: true,
307
+ optional: true,
308
+ description: 'CC email addresses',
309
+ },
310
+
311
+ // Metadata
312
+ edited: {
313
+ type: 'boolean',
314
+ optional: true,
315
+ description: 'Whether the comment was edited',
316
+ },
317
+ editedAt: {
318
+ type: 'datetime',
319
+ optional: true,
320
+ description: 'When the comment was last edited',
321
+ },
322
+ },
323
+
324
+ relationships: {
325
+ ticket: {
326
+ type: 'SupportTicket',
327
+ backref: 'comments',
328
+ description: 'The ticket this comment belongs to',
329
+ },
330
+ author: {
331
+ type: 'Contact',
332
+ description: 'Who wrote the comment',
333
+ },
334
+ attachments: {
335
+ type: 'Attachment[]',
336
+ description: 'Files attached to this comment',
337
+ },
338
+ },
339
+
340
+ actions: [
341
+ 'create',
342
+ 'edit',
343
+ 'delete',
344
+ 'makePublic',
345
+ 'makePrivate',
346
+ 'addAttachment',
347
+ 'removeAttachment',
348
+ ],
349
+
350
+ events: [
351
+ 'created',
352
+ 'edited',
353
+ 'deleted',
354
+ 'madePublic',
355
+ 'madePrivate',
356
+ 'attachmentAdded',
357
+ 'attachmentRemoved',
358
+ ],
359
+ }
360
+
361
+ // =============================================================================
362
+ // Live Chat Conversation
363
+ // =============================================================================
364
+
365
+ /**
366
+ * Live chat conversation entity
367
+ *
368
+ * Represents a real-time chat conversation between customer and support (Intercom, Zendesk Chat style)
369
+ */
370
+ export const Conversation: Noun = {
371
+ singular: 'conversation',
372
+ plural: 'conversations',
373
+ description: 'A live chat conversation between customer and support',
374
+
375
+ properties: {
376
+ // Status
377
+ status: {
378
+ type: 'string',
379
+ description: 'Conversation status: open, active, pending, closed, snoozed',
380
+ examples: ['open', 'active', 'pending', 'closed', 'snoozed'],
381
+ },
382
+ state: {
383
+ type: 'string',
384
+ optional: true,
385
+ description: 'Conversation state: waiting, assigned, resolved',
386
+ examples: ['waiting', 'assigned', 'resolved'],
387
+ },
388
+
389
+ // Participants
390
+ customerId: {
391
+ type: 'string',
392
+ description: 'ID of the customer in the conversation',
393
+ },
394
+ assigneeId: {
395
+ type: 'string',
396
+ optional: true,
397
+ description: 'ID of the assigned agent',
398
+ },
399
+
400
+ // Channel & Source
401
+ channel: {
402
+ type: 'string',
403
+ description: 'Channel type: web, mobile, email, facebook, twitter, etc.',
404
+ examples: ['web', 'mobile', 'email', 'facebook', 'twitter', 'whatsapp'],
405
+ },
406
+ source: {
407
+ type: 'json',
408
+ optional: true,
409
+ description: 'Source information (URL, device, etc.)',
410
+ },
411
+
412
+ // Classification
413
+ tags: {
414
+ type: 'string',
415
+ array: true,
416
+ optional: true,
417
+ description: 'Tags for categorization',
418
+ },
419
+ priority: {
420
+ type: 'number',
421
+ optional: true,
422
+ description: 'Priority score or level',
423
+ },
424
+
425
+ // Metrics
426
+ messageCount: {
427
+ type: 'number',
428
+ optional: true,
429
+ description: 'Total number of messages',
430
+ },
431
+ responseTime: {
432
+ type: 'number',
433
+ optional: true,
434
+ description: 'Average response time in seconds',
435
+ },
436
+ waitingTime: {
437
+ type: 'number',
438
+ optional: true,
439
+ description: 'Total time customer waited in seconds',
440
+ },
441
+
442
+ // Timing
443
+ startedAt: {
444
+ type: 'datetime',
445
+ description: 'When the conversation started',
446
+ },
447
+ lastMessageAt: {
448
+ type: 'datetime',
449
+ optional: true,
450
+ description: 'When the last message was sent',
451
+ },
452
+ closedAt: {
453
+ type: 'datetime',
454
+ optional: true,
455
+ description: 'When the conversation was closed',
456
+ },
457
+ snoozedUntil: {
458
+ type: 'datetime',
459
+ optional: true,
460
+ description: 'When a snoozed conversation should reopen',
461
+ },
462
+
463
+ // Customer context
464
+ customerContext: {
465
+ type: 'json',
466
+ optional: true,
467
+ description: 'Customer context data (location, device, page visited, etc.)',
468
+ },
469
+
470
+ // Rating
471
+ rated: {
472
+ type: 'boolean',
473
+ optional: true,
474
+ description: 'Whether the customer rated the conversation',
475
+ },
476
+ },
477
+
478
+ relationships: {
479
+ customer: {
480
+ type: 'Contact',
481
+ description: 'The customer in the conversation',
482
+ },
483
+ assignee: {
484
+ type: 'Contact',
485
+ required: false,
486
+ description: 'The assigned support agent',
487
+ },
488
+ messages: {
489
+ type: 'ConversationMessage[]',
490
+ backref: 'conversation',
491
+ description: 'Messages in this conversation',
492
+ },
493
+ ticket: {
494
+ type: 'SupportTicket',
495
+ required: false,
496
+ description: 'Support ticket created from this conversation',
497
+ },
498
+ satisfactionRating: {
499
+ type: 'SatisfactionRating',
500
+ required: false,
501
+ backref: 'conversation',
502
+ description: 'Customer satisfaction rating for this conversation',
503
+ },
504
+ },
505
+
506
+ actions: [
507
+ 'start',
508
+ 'reply',
509
+ 'assign',
510
+ 'reassign',
511
+ 'transfer',
512
+ 'close',
513
+ 'reopen',
514
+ 'snooze',
515
+ 'unsnooze',
516
+ 'addTags',
517
+ 'removeTags',
518
+ 'addNote',
519
+ 'markSpam',
520
+ 'createTicket',
521
+ 'requestRating',
522
+ ],
523
+
524
+ events: [
525
+ 'started',
526
+ 'messageSent',
527
+ 'messageReceived',
528
+ 'assigned',
529
+ 'reassigned',
530
+ 'transferred',
531
+ 'closed',
532
+ 'reopened',
533
+ 'snoozed',
534
+ 'unsnoozed',
535
+ 'tagged',
536
+ 'noteAdded',
537
+ 'markedSpam',
538
+ 'ticketCreated',
539
+ 'rated',
540
+ ],
541
+ }
542
+
543
+ /**
544
+ * Conversation message entity
545
+ *
546
+ * Represents a single message in a live chat conversation
547
+ */
548
+ export const ConversationMessage: Noun = {
549
+ singular: 'conversation message',
550
+ plural: 'conversation messages',
551
+ description: 'A single message in a live chat conversation',
552
+
553
+ properties: {
554
+ // Content
555
+ body: {
556
+ type: 'string',
557
+ description: 'Message text content',
558
+ },
559
+ html: {
560
+ type: 'string',
561
+ optional: true,
562
+ description: 'HTML formatted content',
563
+ },
564
+
565
+ // Type
566
+ messageType: {
567
+ type: 'string',
568
+ description: 'Message type: text, note, assignment, system',
569
+ examples: ['text', 'note', 'assignment', 'system'],
570
+ },
571
+
572
+ // Author
573
+ senderId: {
574
+ type: 'string',
575
+ description: 'ID of the person who sent the message',
576
+ },
577
+ senderType: {
578
+ type: 'string',
579
+ description: 'Type of sender: customer, agent, bot, system',
580
+ examples: ['customer', 'agent', 'bot', 'system'],
581
+ },
582
+
583
+ // Delivery
584
+ deliveredAt: {
585
+ type: 'datetime',
586
+ optional: true,
587
+ description: 'When the message was delivered',
588
+ },
589
+ readAt: {
590
+ type: 'datetime',
591
+ optional: true,
592
+ description: 'When the message was read',
593
+ },
594
+
595
+ // Metadata
596
+ metadata: {
597
+ type: 'json',
598
+ optional: true,
599
+ description: 'Additional message metadata',
600
+ },
601
+ },
602
+
603
+ relationships: {
604
+ conversation: {
605
+ type: 'Conversation',
606
+ backref: 'messages',
607
+ description: 'The conversation this message belongs to',
608
+ },
609
+ sender: {
610
+ type: 'Contact',
611
+ description: 'Who sent the message',
612
+ },
613
+ attachments: {
614
+ type: 'Attachment[]',
615
+ description: 'Files attached to this message',
616
+ },
617
+ },
618
+
619
+ actions: [
620
+ 'send',
621
+ 'edit',
622
+ 'delete',
623
+ 'markRead',
624
+ 'addAttachment',
625
+ 'react',
626
+ ],
627
+
628
+ events: [
629
+ 'sent',
630
+ 'delivered',
631
+ 'read',
632
+ 'edited',
633
+ 'deleted',
634
+ 'attachmentAdded',
635
+ 'reacted',
636
+ ],
637
+ }
638
+
639
+ // =============================================================================
640
+ // Help Center / Knowledge Base
641
+ // =============================================================================
642
+
643
+ /**
644
+ * Help article entity
645
+ *
646
+ * Represents a help center or knowledge base article
647
+ */
648
+ export const HelpArticle: Noun = {
649
+ singular: 'help article',
650
+ plural: 'help articles',
651
+ description: 'A help center or knowledge base article',
652
+
653
+ properties: {
654
+ // Content
655
+ title: {
656
+ type: 'string',
657
+ description: 'Article title',
658
+ },
659
+ body: {
660
+ type: 'markdown',
661
+ description: 'Article content in markdown',
662
+ },
663
+ html: {
664
+ type: 'string',
665
+ optional: true,
666
+ description: 'Article content in HTML',
667
+ },
668
+ description: {
669
+ type: 'string',
670
+ optional: true,
671
+ description: 'Brief description or excerpt',
672
+ },
673
+
674
+ // Organization
675
+ slug: {
676
+ type: 'string',
677
+ optional: true,
678
+ description: 'URL-friendly slug',
679
+ },
680
+ categoryId: {
681
+ type: 'string',
682
+ optional: true,
683
+ description: 'ID of the category this article belongs to',
684
+ },
685
+ position: {
686
+ type: 'number',
687
+ optional: true,
688
+ description: 'Display order within category',
689
+ },
690
+
691
+ // Visibility
692
+ status: {
693
+ type: 'string',
694
+ description: 'Article status: draft, published, archived',
695
+ examples: ['draft', 'published', 'archived'],
696
+ },
697
+ visibility: {
698
+ type: 'string',
699
+ optional: true,
700
+ description: 'Who can see: public, internal, restricted',
701
+ examples: ['public', 'internal', 'restricted'],
702
+ },
703
+
704
+ // Author & Attribution
705
+ authorId: {
706
+ type: 'string',
707
+ optional: true,
708
+ description: 'ID of the article author',
709
+ },
710
+ lastUpdatedBy: {
711
+ type: 'string',
712
+ optional: true,
713
+ description: 'ID of the last person to update the article',
714
+ },
715
+
716
+ // Engagement
717
+ viewCount: {
718
+ type: 'number',
719
+ optional: true,
720
+ description: 'Number of times article has been viewed',
721
+ },
722
+ upvoteCount: {
723
+ type: 'number',
724
+ optional: true,
725
+ description: 'Number of positive votes',
726
+ },
727
+ downvoteCount: {
728
+ type: 'number',
729
+ optional: true,
730
+ description: 'Number of negative votes',
731
+ },
732
+ helpfulCount: {
733
+ type: 'number',
734
+ optional: true,
735
+ description: 'Number of "helpful" votes',
736
+ },
737
+
738
+ // SEO
739
+ metaTitle: {
740
+ type: 'string',
741
+ optional: true,
742
+ description: 'SEO meta title',
743
+ },
744
+ metaDescription: {
745
+ type: 'string',
746
+ optional: true,
747
+ description: 'SEO meta description',
748
+ },
749
+ keywords: {
750
+ type: 'string',
751
+ array: true,
752
+ optional: true,
753
+ description: 'Keywords for search',
754
+ },
755
+
756
+ // Timing
757
+ publishedAt: {
758
+ type: 'datetime',
759
+ optional: true,
760
+ description: 'When the article was published',
761
+ },
762
+ lastUpdatedAt: {
763
+ type: 'datetime',
764
+ optional: true,
765
+ description: 'When the article was last updated',
766
+ },
767
+
768
+ // Localization
769
+ locale: {
770
+ type: 'string',
771
+ optional: true,
772
+ description: 'Language/locale code',
773
+ },
774
+ },
775
+
776
+ relationships: {
777
+ category: {
778
+ type: 'HelpCategory',
779
+ required: false,
780
+ backref: 'articles',
781
+ description: 'Category this article belongs to',
782
+ },
783
+ author: {
784
+ type: 'Contact',
785
+ required: false,
786
+ description: 'Article author',
787
+ },
788
+ relatedArticles: {
789
+ type: 'HelpArticle[]',
790
+ description: 'Related or suggested articles',
791
+ },
792
+ attachments: {
793
+ type: 'Attachment[]',
794
+ description: 'Images and files in the article',
795
+ },
796
+ },
797
+
798
+ actions: [
799
+ 'create',
800
+ 'edit',
801
+ 'publish',
802
+ 'unpublish',
803
+ 'archive',
804
+ 'delete',
805
+ 'move',
806
+ 'duplicate',
807
+ 'translate',
808
+ 'upvote',
809
+ 'downvote',
810
+ 'markHelpful',
811
+ 'markNotHelpful',
812
+ 'view',
813
+ 'search',
814
+ ],
815
+
816
+ events: [
817
+ 'created',
818
+ 'edited',
819
+ 'published',
820
+ 'unpublished',
821
+ 'archived',
822
+ 'deleted',
823
+ 'moved',
824
+ 'duplicated',
825
+ 'translated',
826
+ 'viewed',
827
+ 'upvoted',
828
+ 'downvoted',
829
+ 'markedHelpful',
830
+ 'markedNotHelpful',
831
+ ],
832
+ }
833
+
834
+ /**
835
+ * Help category entity
836
+ *
837
+ * Represents a category for organizing help articles
838
+ */
839
+ export const HelpCategory: Noun = {
840
+ singular: 'help category',
841
+ plural: 'help categories',
842
+ description: 'A category for organizing help articles',
843
+
844
+ properties: {
845
+ // Identity
846
+ name: {
847
+ type: 'string',
848
+ description: 'Category name',
849
+ },
850
+ description: {
851
+ type: 'string',
852
+ optional: true,
853
+ description: 'Category description',
854
+ },
855
+ slug: {
856
+ type: 'string',
857
+ optional: true,
858
+ description: 'URL-friendly slug',
859
+ },
860
+
861
+ // Organization
862
+ parentId: {
863
+ type: 'string',
864
+ optional: true,
865
+ description: 'ID of parent category for nested structure',
866
+ },
867
+ position: {
868
+ type: 'number',
869
+ optional: true,
870
+ description: 'Display order',
871
+ },
872
+
873
+ // Display
874
+ icon: {
875
+ type: 'string',
876
+ optional: true,
877
+ description: 'Icon name or emoji',
878
+ },
879
+ color: {
880
+ type: 'string',
881
+ optional: true,
882
+ description: 'Display color (hex code)',
883
+ },
884
+
885
+ // Visibility
886
+ visibility: {
887
+ type: 'string',
888
+ optional: true,
889
+ description: 'Who can see: public, internal, restricted',
890
+ examples: ['public', 'internal', 'restricted'],
891
+ },
892
+
893
+ // Metrics
894
+ articleCount: {
895
+ type: 'number',
896
+ optional: true,
897
+ description: 'Number of articles in this category',
898
+ },
899
+
900
+ // Localization
901
+ locale: {
902
+ type: 'string',
903
+ optional: true,
904
+ description: 'Language/locale code',
905
+ },
906
+ },
907
+
908
+ relationships: {
909
+ parent: {
910
+ type: 'HelpCategory',
911
+ required: false,
912
+ description: 'Parent category for nested structure',
913
+ },
914
+ subcategories: {
915
+ type: 'HelpCategory[]',
916
+ description: 'Child categories',
917
+ },
918
+ articles: {
919
+ type: 'HelpArticle[]',
920
+ backref: 'category',
921
+ description: 'Articles in this category',
922
+ },
923
+ },
924
+
925
+ actions: [
926
+ 'create',
927
+ 'edit',
928
+ 'delete',
929
+ 'move',
930
+ 'reorder',
931
+ 'addArticle',
932
+ 'removeArticle',
933
+ ],
934
+
935
+ events: [
936
+ 'created',
937
+ 'edited',
938
+ 'deleted',
939
+ 'moved',
940
+ 'reordered',
941
+ 'articleAdded',
942
+ 'articleRemoved',
943
+ ],
944
+ }
945
+
946
+ /**
947
+ * FAQ entity
948
+ *
949
+ * Represents a frequently asked question with answer
950
+ */
951
+ export const FAQ: Noun = {
952
+ singular: 'FAQ',
953
+ plural: 'FAQs',
954
+ description: 'A frequently asked question with answer',
955
+
956
+ properties: {
957
+ // Content
958
+ question: {
959
+ type: 'string',
960
+ description: 'The question text',
961
+ },
962
+ answer: {
963
+ type: 'string',
964
+ description: 'The answer text',
965
+ },
966
+ answerHtml: {
967
+ type: 'string',
968
+ optional: true,
969
+ description: 'HTML formatted answer',
970
+ },
971
+
972
+ // Organization
973
+ categoryId: {
974
+ type: 'string',
975
+ optional: true,
976
+ description: 'Category or topic ID',
977
+ },
978
+ position: {
979
+ type: 'number',
980
+ optional: true,
981
+ description: 'Display order',
982
+ },
983
+ tags: {
984
+ type: 'string',
985
+ array: true,
986
+ optional: true,
987
+ description: 'Tags for categorization',
988
+ },
989
+
990
+ // Visibility
991
+ status: {
992
+ type: 'string',
993
+ description: 'Status: draft, published, archived',
994
+ examples: ['draft', 'published', 'archived'],
995
+ },
996
+ visibility: {
997
+ type: 'string',
998
+ optional: true,
999
+ description: 'Who can see: public, internal',
1000
+ examples: ['public', 'internal'],
1001
+ },
1002
+
1003
+ // Engagement
1004
+ viewCount: {
1005
+ type: 'number',
1006
+ optional: true,
1007
+ description: 'Number of views',
1008
+ },
1009
+ helpfulCount: {
1010
+ type: 'number',
1011
+ optional: true,
1012
+ description: 'Number of "helpful" votes',
1013
+ },
1014
+ notHelpfulCount: {
1015
+ type: 'number',
1016
+ optional: true,
1017
+ description: 'Number of "not helpful" votes',
1018
+ },
1019
+
1020
+ // Timing
1021
+ publishedAt: {
1022
+ type: 'datetime',
1023
+ optional: true,
1024
+ description: 'When published',
1025
+ },
1026
+
1027
+ // Localization
1028
+ locale: {
1029
+ type: 'string',
1030
+ optional: true,
1031
+ description: 'Language/locale code',
1032
+ },
1033
+ },
1034
+
1035
+ relationships: {
1036
+ category: {
1037
+ type: 'HelpCategory',
1038
+ required: false,
1039
+ description: 'Category this FAQ belongs to',
1040
+ },
1041
+ relatedArticles: {
1042
+ type: 'HelpArticle[]',
1043
+ description: 'Related help articles',
1044
+ },
1045
+ },
1046
+
1047
+ actions: [
1048
+ 'create',
1049
+ 'edit',
1050
+ 'publish',
1051
+ 'unpublish',
1052
+ 'archive',
1053
+ 'delete',
1054
+ 'reorder',
1055
+ 'markHelpful',
1056
+ 'markNotHelpful',
1057
+ 'view',
1058
+ ],
1059
+
1060
+ events: [
1061
+ 'created',
1062
+ 'edited',
1063
+ 'published',
1064
+ 'unpublished',
1065
+ 'archived',
1066
+ 'deleted',
1067
+ 'reordered',
1068
+ 'viewed',
1069
+ 'markedHelpful',
1070
+ 'markedNotHelpful',
1071
+ ],
1072
+ }
1073
+
1074
+ // =============================================================================
1075
+ // Customer Feedback
1076
+ // =============================================================================
1077
+
1078
+ /**
1079
+ * Satisfaction rating entity
1080
+ *
1081
+ * Represents a CSAT/NPS rating from a customer
1082
+ */
1083
+ export const SatisfactionRating: Noun = {
1084
+ singular: 'satisfaction rating',
1085
+ plural: 'satisfaction ratings',
1086
+ description: 'A customer satisfaction (CSAT) or NPS rating',
1087
+
1088
+ properties: {
1089
+ // Rating
1090
+ score: {
1091
+ type: 'number',
1092
+ description: 'Rating score (e.g., 1-5 for CSAT, 0-10 for NPS)',
1093
+ },
1094
+ ratingType: {
1095
+ type: 'string',
1096
+ description: 'Type of rating: csat, nps, ces, custom',
1097
+ examples: ['csat', 'nps', 'ces', 'custom'],
1098
+ },
1099
+ sentiment: {
1100
+ type: 'string',
1101
+ optional: true,
1102
+ description: 'Calculated sentiment: positive, neutral, negative, promoter, passive, detractor',
1103
+ examples: ['positive', 'neutral', 'negative', 'promoter', 'passive', 'detractor'],
1104
+ },
1105
+
1106
+ // Feedback
1107
+ comment: {
1108
+ type: 'string',
1109
+ optional: true,
1110
+ description: 'Optional text feedback from customer',
1111
+ },
1112
+ reason: {
1113
+ type: 'string',
1114
+ optional: true,
1115
+ description: 'Reason for the rating (category)',
1116
+ },
1117
+
1118
+ // Context
1119
+ customerId: {
1120
+ type: 'string',
1121
+ description: 'ID of the customer who provided the rating',
1122
+ },
1123
+ agentId: {
1124
+ type: 'string',
1125
+ optional: true,
1126
+ description: 'ID of the agent who was rated',
1127
+ },
1128
+
1129
+ // Association
1130
+ ticketId: {
1131
+ type: 'string',
1132
+ optional: true,
1133
+ description: 'ID of the ticket being rated',
1134
+ },
1135
+ conversationId: {
1136
+ type: 'string',
1137
+ optional: true,
1138
+ description: 'ID of the conversation being rated',
1139
+ },
1140
+
1141
+ // Source
1142
+ channel: {
1143
+ type: 'string',
1144
+ optional: true,
1145
+ description: 'How the rating was collected: email, web, in-app, sms',
1146
+ examples: ['email', 'web', 'in-app', 'sms'],
1147
+ },
1148
+
1149
+ // Timing
1150
+ requestedAt: {
1151
+ type: 'datetime',
1152
+ optional: true,
1153
+ description: 'When the rating was requested',
1154
+ },
1155
+ respondedAt: {
1156
+ type: 'datetime',
1157
+ description: 'When the customer responded',
1158
+ },
1159
+
1160
+ // Status
1161
+ reviewed: {
1162
+ type: 'boolean',
1163
+ optional: true,
1164
+ description: 'Whether the rating has been reviewed by staff',
1165
+ },
1166
+ reviewedAt: {
1167
+ type: 'datetime',
1168
+ optional: true,
1169
+ description: 'When the rating was reviewed',
1170
+ },
1171
+ reviewedBy: {
1172
+ type: 'string',
1173
+ optional: true,
1174
+ description: 'ID of the person who reviewed the rating',
1175
+ },
1176
+
1177
+ // Follow-up
1178
+ followedUp: {
1179
+ type: 'boolean',
1180
+ optional: true,
1181
+ description: 'Whether follow-up action was taken',
1182
+ },
1183
+ followUpNote: {
1184
+ type: 'string',
1185
+ optional: true,
1186
+ description: 'Notes about follow-up action',
1187
+ },
1188
+ },
1189
+
1190
+ relationships: {
1191
+ customer: {
1192
+ type: 'Contact',
1193
+ description: 'The customer who provided the rating',
1194
+ },
1195
+ agent: {
1196
+ type: 'Contact',
1197
+ required: false,
1198
+ description: 'The agent who was rated',
1199
+ },
1200
+ ticket: {
1201
+ type: 'SupportTicket',
1202
+ required: false,
1203
+ backref: 'satisfactionRating',
1204
+ description: 'The ticket being rated',
1205
+ },
1206
+ conversation: {
1207
+ type: 'Conversation',
1208
+ required: false,
1209
+ backref: 'satisfactionRating',
1210
+ description: 'The conversation being rated',
1211
+ },
1212
+ },
1213
+
1214
+ actions: [
1215
+ 'submit',
1216
+ 'update',
1217
+ 'review',
1218
+ 'followUp',
1219
+ 'dismiss',
1220
+ 'export',
1221
+ 'analyze',
1222
+ ],
1223
+
1224
+ events: [
1225
+ 'submitted',
1226
+ 'updated',
1227
+ 'reviewed',
1228
+ 'followedUp',
1229
+ 'dismissed',
1230
+ 'exported',
1231
+ ],
1232
+ }
1233
+
1234
+ // =============================================================================
1235
+ // Export all entities as a schema
1236
+ // =============================================================================
1237
+
1238
+ /**
1239
+ * All support/helpdesk entity types
1240
+ */
1241
+ export const SupportEntities = {
1242
+ // Support Tickets
1243
+ SupportTicket,
1244
+ TicketComment,
1245
+
1246
+ // Live Chat
1247
+ Conversation,
1248
+ ConversationMessage,
1249
+
1250
+ // Help Center
1251
+ HelpArticle,
1252
+ HelpCategory,
1253
+ FAQ,
1254
+
1255
+ // Feedback
1256
+ SatisfactionRating,
1257
+ }
1258
+
1259
+ /**
1260
+ * Entity categories for organization
1261
+ */
1262
+ export const SupportCategories = {
1263
+ tickets: ['SupportTicket', 'TicketComment'],
1264
+ liveChat: ['Conversation', 'ConversationMessage'],
1265
+ helpCenter: ['HelpArticle', 'HelpCategory', 'FAQ'],
1266
+ feedback: ['SatisfactionRating'],
1267
+ } as const