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,1481 @@
1
+ /**
2
+ * CRM/Sales Entity Types (Nouns)
3
+ *
4
+ * Semantic type definitions for Customer Relationship Management and Sales tools.
5
+ * Each entity defines properties, relationships, actions (Verbs), and events that
6
+ * can be used by both remote human workers AND AI agents.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+
11
+ import type { Noun, NounProperty, NounRelationship, Verb } from 'ai-database'
12
+
13
+ // =============================================================================
14
+ // Lead Management
15
+ // =============================================================================
16
+
17
+ /**
18
+ * Lead entity
19
+ *
20
+ * Represents a potential customer/sales opportunity that has not yet been qualified
21
+ */
22
+ export const Lead: Noun = {
23
+ singular: 'lead',
24
+ plural: 'leads',
25
+ description: 'A potential customer or sales opportunity',
26
+
27
+ properties: {
28
+ // Identity
29
+ firstName: {
30
+ type: 'string',
31
+ description: 'Lead first name',
32
+ },
33
+ lastName: {
34
+ type: 'string',
35
+ description: 'Lead last name',
36
+ },
37
+ fullName: {
38
+ type: 'string',
39
+ optional: true,
40
+ description: 'Full name (computed or provided)',
41
+ },
42
+ title: {
43
+ type: 'string',
44
+ optional: true,
45
+ description: 'Job title',
46
+ },
47
+
48
+ // Contact Information
49
+ email: {
50
+ type: 'string',
51
+ optional: true,
52
+ description: 'Primary email address',
53
+ },
54
+ phone: {
55
+ type: 'string',
56
+ optional: true,
57
+ description: 'Primary phone number',
58
+ },
59
+ mobile: {
60
+ type: 'string',
61
+ optional: true,
62
+ description: 'Mobile phone number',
63
+ },
64
+ website: {
65
+ type: 'url',
66
+ optional: true,
67
+ description: 'Personal or company website',
68
+ },
69
+
70
+ // Company Information
71
+ company: {
72
+ type: 'string',
73
+ optional: true,
74
+ description: 'Company name',
75
+ },
76
+ industry: {
77
+ type: 'string',
78
+ optional: true,
79
+ description: 'Industry or vertical',
80
+ },
81
+ companySize: {
82
+ type: 'string',
83
+ optional: true,
84
+ description: 'Company size range (e.g., 1-10, 11-50, 51-200)',
85
+ examples: ['1-10', '11-50', '51-200', '201-500', '501-1000', '1000+'],
86
+ },
87
+ revenue: {
88
+ type: 'number',
89
+ optional: true,
90
+ description: 'Annual revenue in USD',
91
+ },
92
+
93
+ // Address
94
+ street: {
95
+ type: 'string',
96
+ optional: true,
97
+ description: 'Street address',
98
+ },
99
+ city: {
100
+ type: 'string',
101
+ optional: true,
102
+ description: 'City',
103
+ },
104
+ state: {
105
+ type: 'string',
106
+ optional: true,
107
+ description: 'State or province',
108
+ },
109
+ postalCode: {
110
+ type: 'string',
111
+ optional: true,
112
+ description: 'ZIP or postal code',
113
+ },
114
+ country: {
115
+ type: 'string',
116
+ optional: true,
117
+ description: 'Country',
118
+ },
119
+
120
+ // Lead Qualification
121
+ status: {
122
+ type: 'string',
123
+ description: 'Lead status: new, contacted, qualified, unqualified, converted, lost',
124
+ examples: ['new', 'contacted', 'qualified', 'unqualified', 'converted', 'lost'],
125
+ },
126
+ source: {
127
+ type: 'string',
128
+ optional: true,
129
+ description: 'Lead source: website, referral, advertisement, event, social, cold-call, partner',
130
+ examples: ['website', 'referral', 'advertisement', 'event', 'social', 'cold-call', 'partner', 'imported'],
131
+ },
132
+ score: {
133
+ type: 'number',
134
+ optional: true,
135
+ description: 'Lead score (0-100) indicating likelihood to convert',
136
+ },
137
+ rating: {
138
+ type: 'string',
139
+ optional: true,
140
+ description: 'Lead quality rating: hot, warm, cold',
141
+ examples: ['hot', 'warm', 'cold'],
142
+ },
143
+
144
+ // Context
145
+ description: {
146
+ type: 'string',
147
+ optional: true,
148
+ description: 'Notes or description about the lead',
149
+ },
150
+ notes: {
151
+ type: 'string',
152
+ optional: true,
153
+ description: 'Additional notes',
154
+ },
155
+ tags: {
156
+ type: 'string',
157
+ array: true,
158
+ optional: true,
159
+ description: 'Tags for categorization',
160
+ },
161
+
162
+ // Campaign
163
+ campaign: {
164
+ type: 'string',
165
+ optional: true,
166
+ description: 'Marketing campaign that generated this lead',
167
+ },
168
+ referredBy: {
169
+ type: 'string',
170
+ optional: true,
171
+ description: 'Who referred this lead',
172
+ },
173
+
174
+ // Tracking
175
+ lastContactedAt: {
176
+ type: 'datetime',
177
+ optional: true,
178
+ description: 'When the lead was last contacted',
179
+ },
180
+ convertedAt: {
181
+ type: 'datetime',
182
+ optional: true,
183
+ description: 'When the lead was converted to an account/opportunity',
184
+ },
185
+ },
186
+
187
+ relationships: {
188
+ owner: {
189
+ type: 'Contact',
190
+ description: 'Sales rep or user who owns this lead',
191
+ },
192
+ activities: {
193
+ type: 'Activity[]',
194
+ backref: 'lead',
195
+ description: 'Activities associated with this lead',
196
+ },
197
+ convertedAccount: {
198
+ type: 'Account',
199
+ required: false,
200
+ description: 'Account created when lead was converted',
201
+ },
202
+ convertedDeal: {
203
+ type: 'Deal',
204
+ required: false,
205
+ description: 'Deal/opportunity created when lead was converted',
206
+ },
207
+ },
208
+
209
+ actions: [
210
+ 'create',
211
+ 'update',
212
+ 'delete',
213
+ 'qualify',
214
+ 'disqualify',
215
+ 'convert',
216
+ 'assign',
217
+ 'contact',
218
+ 'score',
219
+ 'merge',
220
+ 'import',
221
+ 'export',
222
+ 'tag',
223
+ 'untag',
224
+ ],
225
+
226
+ events: [
227
+ 'created',
228
+ 'updated',
229
+ 'deleted',
230
+ 'qualified',
231
+ 'disqualified',
232
+ 'converted',
233
+ 'assigned',
234
+ 'contacted',
235
+ 'scored',
236
+ 'merged',
237
+ 'imported',
238
+ 'exported',
239
+ 'tagged',
240
+ ],
241
+ }
242
+
243
+ // =============================================================================
244
+ // Deal/Opportunity Management
245
+ // =============================================================================
246
+
247
+ /**
248
+ * Deal entity (also known as Opportunity in some CRMs)
249
+ *
250
+ * Represents a qualified sales opportunity with revenue potential
251
+ */
252
+ export const Deal: Noun = {
253
+ singular: 'deal',
254
+ plural: 'deals',
255
+ description: 'A sales opportunity or deal in progress',
256
+
257
+ properties: {
258
+ // Identity
259
+ name: {
260
+ type: 'string',
261
+ description: 'Deal name or title',
262
+ },
263
+ description: {
264
+ type: 'string',
265
+ optional: true,
266
+ description: 'Description of the opportunity',
267
+ },
268
+
269
+ // Financial
270
+ value: {
271
+ type: 'number',
272
+ description: 'Deal value or amount in USD',
273
+ },
274
+ currency: {
275
+ type: 'string',
276
+ optional: true,
277
+ description: 'Currency code (ISO 4217)',
278
+ examples: ['USD', 'EUR', 'GBP', 'CAD', 'AUD'],
279
+ },
280
+ expectedRevenue: {
281
+ type: 'number',
282
+ optional: true,
283
+ description: 'Expected revenue (value * probability)',
284
+ },
285
+
286
+ // Deal Stage & Status
287
+ stage: {
288
+ type: 'string',
289
+ description: 'Current pipeline stage',
290
+ examples: ['prospecting', 'qualification', 'proposal', 'negotiation', 'closed-won', 'closed-lost'],
291
+ },
292
+ probability: {
293
+ type: 'number',
294
+ optional: true,
295
+ description: 'Win probability percentage (0-100)',
296
+ },
297
+ status: {
298
+ type: 'string',
299
+ description: 'Deal status: open, won, lost, abandoned',
300
+ examples: ['open', 'won', 'lost', 'abandoned'],
301
+ },
302
+
303
+ // Dates
304
+ closeDate: {
305
+ type: 'date',
306
+ optional: true,
307
+ description: 'Expected or actual close date',
308
+ },
309
+ closedAt: {
310
+ type: 'datetime',
311
+ optional: true,
312
+ description: 'When the deal was closed',
313
+ },
314
+ lastActivityAt: {
315
+ type: 'datetime',
316
+ optional: true,
317
+ description: 'Last activity timestamp',
318
+ },
319
+
320
+ // Context
321
+ source: {
322
+ type: 'string',
323
+ optional: true,
324
+ description: 'How the opportunity was sourced',
325
+ examples: ['inbound', 'outbound', 'referral', 'partner', 'marketing'],
326
+ },
327
+ type: {
328
+ type: 'string',
329
+ optional: true,
330
+ description: 'Deal type: new-business, upsell, renewal, cross-sell',
331
+ examples: ['new-business', 'upsell', 'renewal', 'cross-sell'],
332
+ },
333
+ priority: {
334
+ type: 'string',
335
+ optional: true,
336
+ description: 'Deal priority: low, medium, high, critical',
337
+ examples: ['low', 'medium', 'high', 'critical'],
338
+ },
339
+
340
+ // Loss/Win Analysis
341
+ lostReason: {
342
+ type: 'string',
343
+ optional: true,
344
+ description: 'Reason why deal was lost',
345
+ examples: ['price', 'competition', 'timing', 'no-decision', 'product-fit'],
346
+ },
347
+ competitorName: {
348
+ type: 'string',
349
+ optional: true,
350
+ description: 'Competitor involved in the deal',
351
+ },
352
+
353
+ // Notes
354
+ notes: {
355
+ type: 'string',
356
+ optional: true,
357
+ description: 'Notes about the deal',
358
+ },
359
+ tags: {
360
+ type: 'string',
361
+ array: true,
362
+ optional: true,
363
+ description: 'Tags for categorization',
364
+ },
365
+ },
366
+
367
+ relationships: {
368
+ account: {
369
+ type: 'Account',
370
+ backref: 'deals',
371
+ description: 'The account/company this deal is with',
372
+ },
373
+ owner: {
374
+ type: 'Contact',
375
+ description: 'Sales rep who owns this deal',
376
+ },
377
+ pipeline: {
378
+ type: 'Pipeline',
379
+ backref: 'deals',
380
+ description: 'Sales pipeline this deal belongs to',
381
+ },
382
+ currentStage: {
383
+ type: 'Stage',
384
+ description: 'Current pipeline stage',
385
+ },
386
+ contacts: {
387
+ type: 'Contact[]',
388
+ description: 'Contacts involved in this deal',
389
+ },
390
+ activities: {
391
+ type: 'Activity[]',
392
+ backref: 'deal',
393
+ description: 'Activities related to this deal',
394
+ },
395
+ quotes: {
396
+ type: 'Quote[]',
397
+ backref: 'deal',
398
+ description: 'Quotes/proposals sent for this deal',
399
+ },
400
+ products: {
401
+ type: 'Product[]',
402
+ description: 'Products included in this deal',
403
+ },
404
+ },
405
+
406
+ actions: [
407
+ 'create',
408
+ 'update',
409
+ 'delete',
410
+ 'advance',
411
+ 'moveToStage',
412
+ 'win',
413
+ 'lose',
414
+ 'abandon',
415
+ 'reopen',
416
+ 'clone',
417
+ 'assign',
418
+ 'addContact',
419
+ 'removeContact',
420
+ 'addProduct',
421
+ 'removeProduct',
422
+ 'createQuote',
423
+ 'logActivity',
424
+ ],
425
+
426
+ events: [
427
+ 'created',
428
+ 'updated',
429
+ 'deleted',
430
+ 'advanced',
431
+ 'stageChanged',
432
+ 'won',
433
+ 'lost',
434
+ 'abandoned',
435
+ 'reopened',
436
+ 'cloned',
437
+ 'assigned',
438
+ 'contactAdded',
439
+ 'contactRemoved',
440
+ 'productAdded',
441
+ 'productRemoved',
442
+ 'quoteCreated',
443
+ 'activityLogged',
444
+ ],
445
+ }
446
+
447
+ // =============================================================================
448
+ // Account Management
449
+ // =============================================================================
450
+
451
+ /**
452
+ * Account entity
453
+ *
454
+ * Represents a company or organization (customer or prospect)
455
+ */
456
+ export const Account: Noun = {
457
+ singular: 'account',
458
+ plural: 'accounts',
459
+ description: 'A company or organization account',
460
+
461
+ properties: {
462
+ // Identity
463
+ name: {
464
+ type: 'string',
465
+ description: 'Account/company name',
466
+ },
467
+ legalName: {
468
+ type: 'string',
469
+ optional: true,
470
+ description: 'Legal business name',
471
+ },
472
+ description: {
473
+ type: 'string',
474
+ optional: true,
475
+ description: 'Description of the account',
476
+ },
477
+
478
+ // Company Information
479
+ industry: {
480
+ type: 'string',
481
+ optional: true,
482
+ description: 'Industry or vertical',
483
+ },
484
+ website: {
485
+ type: 'url',
486
+ optional: true,
487
+ description: 'Company website',
488
+ },
489
+ employeeCount: {
490
+ type: 'number',
491
+ optional: true,
492
+ description: 'Number of employees',
493
+ },
494
+ revenue: {
495
+ type: 'number',
496
+ optional: true,
497
+ description: 'Annual revenue in USD',
498
+ },
499
+
500
+ // Contact Information
501
+ phone: {
502
+ type: 'string',
503
+ optional: true,
504
+ description: 'Main phone number',
505
+ },
506
+ email: {
507
+ type: 'string',
508
+ optional: true,
509
+ description: 'General contact email',
510
+ },
511
+
512
+ // Address
513
+ billingStreet: {
514
+ type: 'string',
515
+ optional: true,
516
+ description: 'Billing street address',
517
+ },
518
+ billingCity: {
519
+ type: 'string',
520
+ optional: true,
521
+ description: 'Billing city',
522
+ },
523
+ billingState: {
524
+ type: 'string',
525
+ optional: true,
526
+ description: 'Billing state/province',
527
+ },
528
+ billingPostalCode: {
529
+ type: 'string',
530
+ optional: true,
531
+ description: 'Billing ZIP/postal code',
532
+ },
533
+ billingCountry: {
534
+ type: 'string',
535
+ optional: true,
536
+ description: 'Billing country',
537
+ },
538
+ shippingStreet: {
539
+ type: 'string',
540
+ optional: true,
541
+ description: 'Shipping street address',
542
+ },
543
+ shippingCity: {
544
+ type: 'string',
545
+ optional: true,
546
+ description: 'Shipping city',
547
+ },
548
+ shippingState: {
549
+ type: 'string',
550
+ optional: true,
551
+ description: 'Shipping state/province',
552
+ },
553
+ shippingPostalCode: {
554
+ type: 'string',
555
+ optional: true,
556
+ description: 'Shipping ZIP/postal code',
557
+ },
558
+ shippingCountry: {
559
+ type: 'string',
560
+ optional: true,
561
+ description: 'Shipping country',
562
+ },
563
+
564
+ // Account Status
565
+ type: {
566
+ type: 'string',
567
+ optional: true,
568
+ description: 'Account type: prospect, customer, partner, competitor, other',
569
+ examples: ['prospect', 'customer', 'partner', 'competitor', 'other'],
570
+ },
571
+ status: {
572
+ type: 'string',
573
+ optional: true,
574
+ description: 'Account status: active, inactive, suspended, churned',
575
+ examples: ['active', 'inactive', 'suspended', 'churned'],
576
+ },
577
+ priority: {
578
+ type: 'string',
579
+ optional: true,
580
+ description: 'Account priority: low, medium, high, strategic',
581
+ examples: ['low', 'medium', 'high', 'strategic'],
582
+ },
583
+ tier: {
584
+ type: 'string',
585
+ optional: true,
586
+ description: 'Customer tier: bronze, silver, gold, platinum',
587
+ examples: ['bronze', 'silver', 'gold', 'platinum'],
588
+ },
589
+
590
+ // Financials
591
+ lifetime_value: {
592
+ type: 'number',
593
+ optional: true,
594
+ description: 'Total lifetime value of the account',
595
+ },
596
+ totalRevenue: {
597
+ type: 'number',
598
+ optional: true,
599
+ description: 'Total revenue from this account',
600
+ },
601
+
602
+ // Metadata
603
+ notes: {
604
+ type: 'string',
605
+ optional: true,
606
+ description: 'Notes about the account',
607
+ },
608
+ tags: {
609
+ type: 'string',
610
+ array: true,
611
+ optional: true,
612
+ description: 'Tags for categorization',
613
+ },
614
+
615
+ // Tracking
616
+ lastContactedAt: {
617
+ type: 'datetime',
618
+ optional: true,
619
+ description: 'Last contact timestamp',
620
+ },
621
+ customerSince: {
622
+ type: 'date',
623
+ optional: true,
624
+ description: 'Date became a customer',
625
+ },
626
+ },
627
+
628
+ relationships: {
629
+ owner: {
630
+ type: 'Contact',
631
+ description: 'Account owner (sales rep or CSM)',
632
+ },
633
+ parentAccount: {
634
+ type: 'Account',
635
+ required: false,
636
+ description: 'Parent account if this is a subsidiary',
637
+ },
638
+ childAccounts: {
639
+ type: 'Account[]',
640
+ description: 'Subsidiary accounts',
641
+ },
642
+ contacts: {
643
+ type: 'Contact[]',
644
+ backref: 'account',
645
+ description: 'Contacts at this account',
646
+ },
647
+ deals: {
648
+ type: 'Deal[]',
649
+ backref: 'account',
650
+ description: 'Deals/opportunities with this account',
651
+ },
652
+ activities: {
653
+ type: 'Activity[]',
654
+ backref: 'account',
655
+ description: 'Activities related to this account',
656
+ },
657
+ quotes: {
658
+ type: 'Quote[]',
659
+ backref: 'account',
660
+ description: 'Quotes sent to this account',
661
+ },
662
+ },
663
+
664
+ actions: [
665
+ 'create',
666
+ 'update',
667
+ 'delete',
668
+ 'merge',
669
+ 'activate',
670
+ 'deactivate',
671
+ 'suspend',
672
+ 'assign',
673
+ 'addContact',
674
+ 'removeContact',
675
+ 'createDeal',
676
+ 'createQuote',
677
+ 'logActivity',
678
+ 'upgrade',
679
+ 'downgrade',
680
+ ],
681
+
682
+ events: [
683
+ 'created',
684
+ 'updated',
685
+ 'deleted',
686
+ 'merged',
687
+ 'activated',
688
+ 'deactivated',
689
+ 'suspended',
690
+ 'assigned',
691
+ 'contactAdded',
692
+ 'contactRemoved',
693
+ 'dealCreated',
694
+ 'quoteCreated',
695
+ 'activityLogged',
696
+ 'upgraded',
697
+ 'downgraded',
698
+ ],
699
+ }
700
+
701
+ // =============================================================================
702
+ // Pipeline & Stage Management
703
+ // =============================================================================
704
+
705
+ /**
706
+ * Pipeline entity
707
+ *
708
+ * Represents a sales pipeline with defined stages
709
+ */
710
+ export const Pipeline: Noun = {
711
+ singular: 'pipeline',
712
+ plural: 'pipelines',
713
+ description: 'A sales pipeline with defined stages',
714
+
715
+ properties: {
716
+ name: {
717
+ type: 'string',
718
+ description: 'Pipeline name',
719
+ },
720
+ description: {
721
+ type: 'string',
722
+ optional: true,
723
+ description: 'Description of the pipeline',
724
+ },
725
+ type: {
726
+ type: 'string',
727
+ optional: true,
728
+ description: 'Pipeline type: sales, partnership, renewal',
729
+ examples: ['sales', 'partnership', 'renewal'],
730
+ },
731
+ isDefault: {
732
+ type: 'boolean',
733
+ optional: true,
734
+ description: 'Whether this is the default pipeline',
735
+ },
736
+ isActive: {
737
+ type: 'boolean',
738
+ optional: true,
739
+ description: 'Whether this pipeline is active',
740
+ },
741
+ stageCount: {
742
+ type: 'number',
743
+ optional: true,
744
+ description: 'Number of stages in the pipeline',
745
+ },
746
+ totalValue: {
747
+ type: 'number',
748
+ optional: true,
749
+ description: 'Total value of all deals in this pipeline',
750
+ },
751
+ dealCount: {
752
+ type: 'number',
753
+ optional: true,
754
+ description: 'Number of deals in this pipeline',
755
+ },
756
+ },
757
+
758
+ relationships: {
759
+ stages: {
760
+ type: 'Stage[]',
761
+ backref: 'pipeline',
762
+ description: 'Stages in this pipeline',
763
+ },
764
+ deals: {
765
+ type: 'Deal[]',
766
+ backref: 'pipeline',
767
+ description: 'Deals in this pipeline',
768
+ },
769
+ },
770
+
771
+ actions: [
772
+ 'create',
773
+ 'update',
774
+ 'delete',
775
+ 'activate',
776
+ 'deactivate',
777
+ 'setDefault',
778
+ 'addStage',
779
+ 'removeStage',
780
+ 'reorderStages',
781
+ 'clone',
782
+ ],
783
+
784
+ events: [
785
+ 'created',
786
+ 'updated',
787
+ 'deleted',
788
+ 'activated',
789
+ 'deactivated',
790
+ 'setAsDefault',
791
+ 'stageAdded',
792
+ 'stageRemoved',
793
+ 'stagesReordered',
794
+ 'cloned',
795
+ ],
796
+ }
797
+
798
+ /**
799
+ * Stage entity
800
+ *
801
+ * Represents a stage within a sales pipeline
802
+ */
803
+ export const Stage: Noun = {
804
+ singular: 'stage',
805
+ plural: 'stages',
806
+ description: 'A stage in a sales pipeline',
807
+
808
+ properties: {
809
+ name: {
810
+ type: 'string',
811
+ description: 'Stage name',
812
+ examples: ['Prospecting', 'Qualification', 'Proposal', 'Negotiation', 'Closed Won', 'Closed Lost'],
813
+ },
814
+ description: {
815
+ type: 'string',
816
+ optional: true,
817
+ description: 'Description of what this stage represents',
818
+ },
819
+ order: {
820
+ type: 'number',
821
+ description: 'Display order in the pipeline (0-indexed)',
822
+ },
823
+ probability: {
824
+ type: 'number',
825
+ optional: true,
826
+ description: 'Default win probability for deals in this stage (0-100)',
827
+ },
828
+ type: {
829
+ type: 'string',
830
+ description: 'Stage type: open, won, lost',
831
+ examples: ['open', 'won', 'lost'],
832
+ },
833
+ rottenDays: {
834
+ type: 'number',
835
+ optional: true,
836
+ description: 'Number of days before deals in this stage are considered stale',
837
+ },
838
+ color: {
839
+ type: 'string',
840
+ optional: true,
841
+ description: 'Display color for the stage (hex code)',
842
+ },
843
+ dealCount: {
844
+ type: 'number',
845
+ optional: true,
846
+ description: 'Number of deals currently in this stage',
847
+ },
848
+ totalValue: {
849
+ type: 'number',
850
+ optional: true,
851
+ description: 'Total value of deals in this stage',
852
+ },
853
+ },
854
+
855
+ relationships: {
856
+ pipeline: {
857
+ type: 'Pipeline',
858
+ backref: 'stages',
859
+ description: 'Pipeline this stage belongs to',
860
+ },
861
+ deals: {
862
+ type: 'Deal[]',
863
+ description: 'Deals currently in this stage',
864
+ },
865
+ },
866
+
867
+ actions: [
868
+ 'create',
869
+ 'update',
870
+ 'delete',
871
+ 'reorder',
872
+ 'moveDeals',
873
+ ],
874
+
875
+ events: [
876
+ 'created',
877
+ 'updated',
878
+ 'deleted',
879
+ 'reordered',
880
+ 'dealsMoved',
881
+ ],
882
+ }
883
+
884
+ // =============================================================================
885
+ // Activity Management
886
+ // =============================================================================
887
+
888
+ /**
889
+ * Activity entity
890
+ *
891
+ * Represents a CRM activity (call, email, meeting, note, task)
892
+ */
893
+ export const Activity: Noun = {
894
+ singular: 'activity',
895
+ plural: 'activities',
896
+ description: 'A CRM activity such as a call, email, meeting, or note',
897
+
898
+ properties: {
899
+ // Activity Details
900
+ type: {
901
+ type: 'string',
902
+ description: 'Activity type: call, email, meeting, task, note, demo, lunch, other',
903
+ examples: ['call', 'email', 'meeting', 'task', 'note', 'demo', 'lunch', 'other'],
904
+ },
905
+ subject: {
906
+ type: 'string',
907
+ description: 'Activity subject or title',
908
+ },
909
+ description: {
910
+ type: 'string',
911
+ optional: true,
912
+ description: 'Detailed description or notes',
913
+ },
914
+
915
+ // Status
916
+ status: {
917
+ type: 'string',
918
+ optional: true,
919
+ description: 'Activity status: scheduled, completed, canceled, no-show',
920
+ examples: ['scheduled', 'completed', 'canceled', 'no-show'],
921
+ },
922
+ outcome: {
923
+ type: 'string',
924
+ optional: true,
925
+ description: 'Activity outcome: successful, unsuccessful, left-voicemail, no-answer',
926
+ examples: ['successful', 'unsuccessful', 'left-voicemail', 'no-answer', 'busy'],
927
+ },
928
+
929
+ // Timing
930
+ scheduledAt: {
931
+ type: 'datetime',
932
+ optional: true,
933
+ description: 'When the activity is scheduled',
934
+ },
935
+ completedAt: {
936
+ type: 'datetime',
937
+ optional: true,
938
+ description: 'When the activity was completed',
939
+ },
940
+ dueAt: {
941
+ type: 'datetime',
942
+ optional: true,
943
+ description: 'When the activity is due (for tasks)',
944
+ },
945
+ duration: {
946
+ type: 'number',
947
+ optional: true,
948
+ description: 'Duration in minutes',
949
+ },
950
+
951
+ // Priority
952
+ priority: {
953
+ type: 'string',
954
+ optional: true,
955
+ description: 'Priority: low, medium, high',
956
+ examples: ['low', 'medium', 'high'],
957
+ },
958
+
959
+ // Context
960
+ direction: {
961
+ type: 'string',
962
+ optional: true,
963
+ description: 'For calls/emails: inbound, outbound',
964
+ examples: ['inbound', 'outbound'],
965
+ },
966
+ location: {
967
+ type: 'string',
968
+ optional: true,
969
+ description: 'Meeting location or phone number',
970
+ },
971
+
972
+ // Flags
973
+ isPrivate: {
974
+ type: 'boolean',
975
+ optional: true,
976
+ description: 'Whether the activity is private',
977
+ },
978
+ isArchived: {
979
+ type: 'boolean',
980
+ optional: true,
981
+ description: 'Whether the activity is archived',
982
+ },
983
+ },
984
+
985
+ relationships: {
986
+ owner: {
987
+ type: 'Contact',
988
+ description: 'Person who owns/created this activity',
989
+ },
990
+ lead: {
991
+ type: 'Lead',
992
+ required: false,
993
+ backref: 'activities',
994
+ description: 'Lead associated with this activity',
995
+ },
996
+ deal: {
997
+ type: 'Deal',
998
+ required: false,
999
+ backref: 'activities',
1000
+ description: 'Deal associated with this activity',
1001
+ },
1002
+ account: {
1003
+ type: 'Account',
1004
+ required: false,
1005
+ backref: 'activities',
1006
+ description: 'Account associated with this activity',
1007
+ },
1008
+ contacts: {
1009
+ type: 'Contact[]',
1010
+ description: 'Contacts involved in this activity',
1011
+ },
1012
+ attendees: {
1013
+ type: 'Contact[]',
1014
+ description: 'Meeting attendees',
1015
+ },
1016
+ },
1017
+
1018
+ actions: [
1019
+ 'create',
1020
+ 'update',
1021
+ 'delete',
1022
+ 'complete',
1023
+ 'schedule',
1024
+ 'reschedule',
1025
+ 'cancel',
1026
+ 'archive',
1027
+ 'unarchive',
1028
+ 'addAttendee',
1029
+ 'removeAttendee',
1030
+ 'log',
1031
+ ],
1032
+
1033
+ events: [
1034
+ 'created',
1035
+ 'updated',
1036
+ 'deleted',
1037
+ 'completed',
1038
+ 'scheduled',
1039
+ 'rescheduled',
1040
+ 'canceled',
1041
+ 'archived',
1042
+ 'unarchived',
1043
+ 'attendeeAdded',
1044
+ 'attendeeRemoved',
1045
+ 'logged',
1046
+ ],
1047
+ }
1048
+
1049
+ // =============================================================================
1050
+ // Quote & Product Management
1051
+ // =============================================================================
1052
+
1053
+ /**
1054
+ * Quote entity
1055
+ *
1056
+ * Represents a sales quote or proposal with line items
1057
+ */
1058
+ export const Quote: Noun = {
1059
+ singular: 'quote',
1060
+ plural: 'quotes',
1061
+ description: 'A sales quote or proposal',
1062
+
1063
+ properties: {
1064
+ // Identity
1065
+ name: {
1066
+ type: 'string',
1067
+ description: 'Quote name or title',
1068
+ },
1069
+ quoteNumber: {
1070
+ type: 'string',
1071
+ optional: true,
1072
+ description: 'Unique quote number',
1073
+ },
1074
+ description: {
1075
+ type: 'string',
1076
+ optional: true,
1077
+ description: 'Quote description',
1078
+ },
1079
+
1080
+ // Status
1081
+ status: {
1082
+ type: 'string',
1083
+ description: 'Quote status: draft, sent, viewed, accepted, rejected, expired',
1084
+ examples: ['draft', 'sent', 'viewed', 'accepted', 'rejected', 'expired'],
1085
+ },
1086
+
1087
+ // Financials
1088
+ subtotal: {
1089
+ type: 'number',
1090
+ description: 'Subtotal before tax and discount',
1091
+ },
1092
+ discount: {
1093
+ type: 'number',
1094
+ optional: true,
1095
+ description: 'Discount amount',
1096
+ },
1097
+ discountPercent: {
1098
+ type: 'number',
1099
+ optional: true,
1100
+ description: 'Discount percentage',
1101
+ },
1102
+ tax: {
1103
+ type: 'number',
1104
+ optional: true,
1105
+ description: 'Tax amount',
1106
+ },
1107
+ taxPercent: {
1108
+ type: 'number',
1109
+ optional: true,
1110
+ description: 'Tax percentage',
1111
+ },
1112
+ total: {
1113
+ type: 'number',
1114
+ description: 'Total amount',
1115
+ },
1116
+ currency: {
1117
+ type: 'string',
1118
+ optional: true,
1119
+ description: 'Currency code (ISO 4217)',
1120
+ examples: ['USD', 'EUR', 'GBP', 'CAD', 'AUD'],
1121
+ },
1122
+
1123
+ // Terms
1124
+ validUntil: {
1125
+ type: 'date',
1126
+ optional: true,
1127
+ description: 'Quote expiration date',
1128
+ },
1129
+ terms: {
1130
+ type: 'string',
1131
+ optional: true,
1132
+ description: 'Terms and conditions',
1133
+ },
1134
+ paymentTerms: {
1135
+ type: 'string',
1136
+ optional: true,
1137
+ description: 'Payment terms: net-30, net-60, due-on-receipt',
1138
+ examples: ['net-30', 'net-60', 'net-90', 'due-on-receipt'],
1139
+ },
1140
+
1141
+ // Tracking
1142
+ sentAt: {
1143
+ type: 'datetime',
1144
+ optional: true,
1145
+ description: 'When the quote was sent',
1146
+ },
1147
+ viewedAt: {
1148
+ type: 'datetime',
1149
+ optional: true,
1150
+ description: 'When the quote was first viewed',
1151
+ },
1152
+ acceptedAt: {
1153
+ type: 'datetime',
1154
+ optional: true,
1155
+ description: 'When the quote was accepted',
1156
+ },
1157
+
1158
+ // Document
1159
+ documentUrl: {
1160
+ type: 'url',
1161
+ optional: true,
1162
+ description: 'URL to the quote document (PDF)',
1163
+ },
1164
+ publicUrl: {
1165
+ type: 'url',
1166
+ optional: true,
1167
+ description: 'Public URL for customer to view quote',
1168
+ },
1169
+
1170
+ // Notes
1171
+ notes: {
1172
+ type: 'string',
1173
+ optional: true,
1174
+ description: 'Internal notes about the quote',
1175
+ },
1176
+ },
1177
+
1178
+ relationships: {
1179
+ deal: {
1180
+ type: 'Deal',
1181
+ required: false,
1182
+ backref: 'quotes',
1183
+ description: 'Deal this quote is for',
1184
+ },
1185
+ account: {
1186
+ type: 'Account',
1187
+ required: false,
1188
+ backref: 'quotes',
1189
+ description: 'Account receiving this quote',
1190
+ },
1191
+ owner: {
1192
+ type: 'Contact',
1193
+ description: 'Sales rep who created the quote',
1194
+ },
1195
+ lineItems: {
1196
+ type: 'QuoteLineItem[]',
1197
+ backref: 'quote',
1198
+ description: 'Line items in this quote',
1199
+ },
1200
+ contact: {
1201
+ type: 'Contact',
1202
+ required: false,
1203
+ description: 'Primary contact for this quote',
1204
+ },
1205
+ },
1206
+
1207
+ actions: [
1208
+ 'create',
1209
+ 'update',
1210
+ 'delete',
1211
+ 'send',
1212
+ 'resend',
1213
+ 'accept',
1214
+ 'reject',
1215
+ 'expire',
1216
+ 'clone',
1217
+ 'generatePdf',
1218
+ 'addLineItem',
1219
+ 'removeLineItem',
1220
+ 'applyDiscount',
1221
+ ],
1222
+
1223
+ events: [
1224
+ 'created',
1225
+ 'updated',
1226
+ 'deleted',
1227
+ 'sent',
1228
+ 'resent',
1229
+ 'viewed',
1230
+ 'accepted',
1231
+ 'rejected',
1232
+ 'expired',
1233
+ 'cloned',
1234
+ 'pdfGenerated',
1235
+ 'lineItemAdded',
1236
+ 'lineItemRemoved',
1237
+ 'discountApplied',
1238
+ ],
1239
+ }
1240
+
1241
+ /**
1242
+ * QuoteLineItem entity
1243
+ *
1244
+ * Represents a single line item on a quote
1245
+ */
1246
+ export const QuoteLineItem: Noun = {
1247
+ singular: 'quote line item',
1248
+ plural: 'quote line items',
1249
+ description: 'A line item on a sales quote',
1250
+
1251
+ properties: {
1252
+ description: {
1253
+ type: 'string',
1254
+ description: 'Item description',
1255
+ },
1256
+ quantity: {
1257
+ type: 'number',
1258
+ description: 'Quantity',
1259
+ },
1260
+ unitPrice: {
1261
+ type: 'number',
1262
+ description: 'Price per unit',
1263
+ },
1264
+ discount: {
1265
+ type: 'number',
1266
+ optional: true,
1267
+ description: 'Discount amount per unit',
1268
+ },
1269
+ discountPercent: {
1270
+ type: 'number',
1271
+ optional: true,
1272
+ description: 'Discount percentage',
1273
+ },
1274
+ total: {
1275
+ type: 'number',
1276
+ description: 'Total line item amount (quantity * unitPrice - discount)',
1277
+ },
1278
+ order: {
1279
+ type: 'number',
1280
+ optional: true,
1281
+ description: 'Display order',
1282
+ },
1283
+ },
1284
+
1285
+ relationships: {
1286
+ quote: {
1287
+ type: 'Quote',
1288
+ backref: 'lineItems',
1289
+ description: 'Quote this line item belongs to',
1290
+ },
1291
+ product: {
1292
+ type: 'Product',
1293
+ required: false,
1294
+ description: 'Product being sold (if applicable)',
1295
+ },
1296
+ },
1297
+
1298
+ actions: ['create', 'update', 'delete', 'reorder'],
1299
+
1300
+ events: ['created', 'updated', 'deleted', 'reordered'],
1301
+ }
1302
+
1303
+ /**
1304
+ * Product entity
1305
+ *
1306
+ * Represents a product or service that can be sold
1307
+ */
1308
+ export const Product: Noun = {
1309
+ singular: 'product',
1310
+ plural: 'products',
1311
+ description: 'A product or service that can be sold',
1312
+
1313
+ properties: {
1314
+ // Identity
1315
+ name: {
1316
+ type: 'string',
1317
+ description: 'Product name',
1318
+ },
1319
+ sku: {
1320
+ type: 'string',
1321
+ optional: true,
1322
+ description: 'Stock keeping unit (SKU)',
1323
+ },
1324
+ code: {
1325
+ type: 'string',
1326
+ optional: true,
1327
+ description: 'Product code',
1328
+ },
1329
+ description: {
1330
+ type: 'string',
1331
+ optional: true,
1332
+ description: 'Product description',
1333
+ },
1334
+
1335
+ // Categorization
1336
+ category: {
1337
+ type: 'string',
1338
+ optional: true,
1339
+ description: 'Product category',
1340
+ },
1341
+ type: {
1342
+ type: 'string',
1343
+ optional: true,
1344
+ description: 'Product type: physical, service, subscription, digital',
1345
+ examples: ['physical', 'service', 'subscription', 'digital'],
1346
+ },
1347
+
1348
+ // Pricing
1349
+ price: {
1350
+ type: 'number',
1351
+ description: 'Base price',
1352
+ },
1353
+ cost: {
1354
+ type: 'number',
1355
+ optional: true,
1356
+ description: 'Cost of goods sold',
1357
+ },
1358
+ currency: {
1359
+ type: 'string',
1360
+ optional: true,
1361
+ description: 'Currency code (ISO 4217)',
1362
+ examples: ['USD', 'EUR', 'GBP', 'CAD', 'AUD'],
1363
+ },
1364
+ priceUnit: {
1365
+ type: 'string',
1366
+ optional: true,
1367
+ description: 'Pricing unit: unit, hour, day, month, year',
1368
+ examples: ['unit', 'hour', 'day', 'month', 'year'],
1369
+ },
1370
+
1371
+ // Status
1372
+ isActive: {
1373
+ type: 'boolean',
1374
+ optional: true,
1375
+ description: 'Whether the product is active/available',
1376
+ },
1377
+ isRecurring: {
1378
+ type: 'boolean',
1379
+ optional: true,
1380
+ description: 'Whether this is a recurring/subscription product',
1381
+ },
1382
+ isTaxable: {
1383
+ type: 'boolean',
1384
+ optional: true,
1385
+ description: 'Whether the product is taxable',
1386
+ },
1387
+
1388
+ // Inventory (if applicable)
1389
+ stock: {
1390
+ type: 'number',
1391
+ optional: true,
1392
+ description: 'Current stock quantity',
1393
+ },
1394
+ reorderPoint: {
1395
+ type: 'number',
1396
+ optional: true,
1397
+ description: 'Inventory level triggering reorder',
1398
+ },
1399
+
1400
+ // Metadata
1401
+ tags: {
1402
+ type: 'string',
1403
+ array: true,
1404
+ optional: true,
1405
+ description: 'Product tags',
1406
+ },
1407
+ imageUrl: {
1408
+ type: 'url',
1409
+ optional: true,
1410
+ description: 'Product image URL',
1411
+ },
1412
+ },
1413
+
1414
+ relationships: {
1415
+ deals: {
1416
+ type: 'Deal[]',
1417
+ description: 'Deals including this product',
1418
+ },
1419
+ },
1420
+
1421
+ actions: [
1422
+ 'create',
1423
+ 'update',
1424
+ 'delete',
1425
+ 'activate',
1426
+ 'deactivate',
1427
+ 'adjustPrice',
1428
+ 'updateStock',
1429
+ 'reorder',
1430
+ ],
1431
+
1432
+ events: [
1433
+ 'created',
1434
+ 'updated',
1435
+ 'deleted',
1436
+ 'activated',
1437
+ 'deactivated',
1438
+ 'priceAdjusted',
1439
+ 'stockUpdated',
1440
+ 'reordered',
1441
+ ],
1442
+ }
1443
+
1444
+ // =============================================================================
1445
+ // Export all CRM entities
1446
+ // =============================================================================
1447
+
1448
+ /**
1449
+ * All CRM/Sales entity types
1450
+ */
1451
+ export const CRMEntities = {
1452
+ // Core Entities
1453
+ Lead,
1454
+ Deal,
1455
+ Account,
1456
+
1457
+ // Pipeline
1458
+ Pipeline,
1459
+ Stage,
1460
+
1461
+ // Activities
1462
+ Activity,
1463
+
1464
+ // Quotes & Products
1465
+ Quote,
1466
+ QuoteLineItem,
1467
+ Product,
1468
+ }
1469
+
1470
+ /**
1471
+ * CRM Entity categories for organization
1472
+ */
1473
+ export const CRMCategories = {
1474
+ leads: ['Lead'],
1475
+ opportunities: ['Deal'],
1476
+ accounts: ['Account'],
1477
+ pipeline: ['Pipeline', 'Stage'],
1478
+ activities: ['Activity'],
1479
+ quotes: ['Quote', 'QuoteLineItem'],
1480
+ products: ['Product'],
1481
+ } as const