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,1411 @@
1
+ /**
2
+ * Productivity Tool Entity Types (Nouns)
3
+ *
4
+ * Semantic type definitions for productivity digital tools that can be used by
5
+ * both remote human workers AND AI agents. Each entity defines:
6
+ * - Properties: The data fields
7
+ * - Actions: Operations that can be performed (Verbs)
8
+ * - Events: State changes that occur
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+
13
+ import type { Noun, NounProperty, NounRelationship, Verb } from 'ai-database'
14
+
15
+ // =============================================================================
16
+ // Calendar
17
+ // =============================================================================
18
+
19
+ /**
20
+ * Calendar entity
21
+ *
22
+ * Represents a calendar containing events, meetings, and appointments.
23
+ */
24
+ export const Calendar: Noun = {
25
+ singular: 'calendar',
26
+ plural: 'calendars',
27
+ description: 'A calendar containing events, meetings, and appointments',
28
+
29
+ properties: {
30
+ name: {
31
+ type: 'string',
32
+ description: 'Calendar name',
33
+ },
34
+ description: {
35
+ type: 'string',
36
+ optional: true,
37
+ description: 'Calendar description or purpose',
38
+ },
39
+ color: {
40
+ type: 'string',
41
+ optional: true,
42
+ description: 'Color code for visual identification',
43
+ },
44
+ timezone: {
45
+ type: 'string',
46
+ description: 'Default timezone for events (IANA timezone identifier)',
47
+ },
48
+ visibility: {
49
+ type: 'string',
50
+ description: 'Calendar visibility: public, private, shared',
51
+ examples: ['public', 'private', 'shared'],
52
+ },
53
+ accessRole: {
54
+ type: 'string',
55
+ optional: true,
56
+ description: 'User access role: owner, writer, reader, freeBusyReader',
57
+ examples: ['owner', 'writer', 'reader', 'freeBusyReader'],
58
+ },
59
+ primary: {
60
+ type: 'boolean',
61
+ optional: true,
62
+ description: 'Whether this is the user primary calendar',
63
+ },
64
+ defaultReminders: {
65
+ type: 'json',
66
+ optional: true,
67
+ description: 'Default reminder settings for events',
68
+ },
69
+ },
70
+
71
+ relationships: {
72
+ events: {
73
+ type: 'Event[]',
74
+ backref: 'calendar',
75
+ description: 'Events in this calendar',
76
+ },
77
+ owner: {
78
+ type: 'Contact',
79
+ description: 'Calendar owner',
80
+ },
81
+ subscribers: {
82
+ type: 'Contact[]',
83
+ description: 'People who have subscribed to this calendar',
84
+ },
85
+ },
86
+
87
+ actions: [
88
+ 'create',
89
+ 'update',
90
+ 'delete',
91
+ 'share',
92
+ 'unshare',
93
+ 'subscribe',
94
+ 'unsubscribe',
95
+ 'export',
96
+ 'import',
97
+ 'sync',
98
+ 'setColor',
99
+ 'setTimezone',
100
+ ],
101
+
102
+ events: [
103
+ 'created',
104
+ 'updated',
105
+ 'deleted',
106
+ 'shared',
107
+ 'unshared',
108
+ 'subscribed',
109
+ 'unsubscribed',
110
+ 'exported',
111
+ 'imported',
112
+ 'synced',
113
+ ],
114
+ }
115
+
116
+ /**
117
+ * Event entity
118
+ *
119
+ * Represents a calendar event, meeting, or appointment with attendees, time, location, and recurrence.
120
+ */
121
+ export const Event: Noun = {
122
+ singular: 'event',
123
+ plural: 'events',
124
+ description: 'A calendar event, meeting, or appointment',
125
+
126
+ properties: {
127
+ // Basic details
128
+ title: {
129
+ type: 'string',
130
+ description: 'Event title or summary',
131
+ },
132
+ description: {
133
+ type: 'string',
134
+ optional: true,
135
+ description: 'Event description or notes',
136
+ },
137
+ location: {
138
+ type: 'string',
139
+ optional: true,
140
+ description: 'Event location (address, room, or virtual meeting link)',
141
+ },
142
+
143
+ // Timing
144
+ startTime: {
145
+ type: 'datetime',
146
+ description: 'Event start date and time',
147
+ },
148
+ endTime: {
149
+ type: 'datetime',
150
+ description: 'Event end date and time',
151
+ },
152
+ allDay: {
153
+ type: 'boolean',
154
+ optional: true,
155
+ description: 'Whether this is an all-day event',
156
+ },
157
+ timezone: {
158
+ type: 'string',
159
+ optional: true,
160
+ description: 'Event timezone (IANA timezone identifier)',
161
+ },
162
+
163
+ // Recurrence
164
+ recurring: {
165
+ type: 'boolean',
166
+ optional: true,
167
+ description: 'Whether this event recurs',
168
+ },
169
+ recurrenceRule: {
170
+ type: 'string',
171
+ optional: true,
172
+ description: 'Recurrence rule in RRULE format (RFC 5545)',
173
+ },
174
+ recurrenceId: {
175
+ type: 'string',
176
+ optional: true,
177
+ description: 'Parent recurring event ID if this is an occurrence',
178
+ },
179
+ exceptions: {
180
+ type: 'datetime',
181
+ array: true,
182
+ optional: true,
183
+ description: 'Dates excluded from the recurrence',
184
+ },
185
+
186
+ // Attendees
187
+ attendees: {
188
+ type: 'json',
189
+ array: true,
190
+ optional: true,
191
+ description: 'List of attendees with email, name, response status',
192
+ },
193
+ organizer: {
194
+ type: 'json',
195
+ optional: true,
196
+ description: 'Event organizer information',
197
+ },
198
+
199
+ // Status
200
+ status: {
201
+ type: 'string',
202
+ description: 'Event status: confirmed, tentative, cancelled',
203
+ examples: ['confirmed', 'tentative', 'cancelled'],
204
+ },
205
+ visibility: {
206
+ type: 'string',
207
+ optional: true,
208
+ description: 'Event visibility: public, private, confidential',
209
+ examples: ['public', 'private', 'confidential'],
210
+ },
211
+ transparency: {
212
+ type: 'string',
213
+ optional: true,
214
+ description: 'Free/busy status: opaque (busy), transparent (free)',
215
+ examples: ['opaque', 'transparent'],
216
+ },
217
+
218
+ // Reminders
219
+ reminders: {
220
+ type: 'json',
221
+ array: true,
222
+ optional: true,
223
+ description: 'Reminder notifications with method and time offset',
224
+ },
225
+
226
+ // Meeting details
227
+ conferenceData: {
228
+ type: 'json',
229
+ optional: true,
230
+ description: 'Video/phone conference details (Zoom, Meet, Teams links)',
231
+ },
232
+ attachments: {
233
+ type: 'json',
234
+ array: true,
235
+ optional: true,
236
+ description: 'File attachments with URLs',
237
+ },
238
+
239
+ // Metadata
240
+ color: {
241
+ type: 'string',
242
+ optional: true,
243
+ description: 'Event color override',
244
+ },
245
+ responseStatus: {
246
+ type: 'string',
247
+ optional: true,
248
+ description: 'User response: accepted, declined, tentative, needsAction',
249
+ examples: ['accepted', 'declined', 'tentative', 'needsAction'],
250
+ },
251
+ },
252
+
253
+ relationships: {
254
+ calendar: {
255
+ type: 'Calendar',
256
+ backref: 'events',
257
+ description: 'Calendar this event belongs to',
258
+ },
259
+ relatedTasks: {
260
+ type: 'Task[]',
261
+ description: 'Tasks associated with this event',
262
+ },
263
+ relatedNotes: {
264
+ type: 'Note[]',
265
+ description: 'Notes related to this event',
266
+ },
267
+ },
268
+
269
+ actions: [
270
+ 'create',
271
+ 'update',
272
+ 'delete',
273
+ 'cancel',
274
+ 'reschedule',
275
+ 'invite',
276
+ 'respond',
277
+ 'accept',
278
+ 'decline',
279
+ 'markTentative',
280
+ 'addAttendee',
281
+ 'removeAttendee',
282
+ 'addReminder',
283
+ 'removeReminder',
284
+ 'duplicate',
285
+ 'move',
286
+ ],
287
+
288
+ events: [
289
+ 'created',
290
+ 'updated',
291
+ 'deleted',
292
+ 'cancelled',
293
+ 'rescheduled',
294
+ 'invitationSent',
295
+ 'responseReceived',
296
+ 'accepted',
297
+ 'declined',
298
+ 'tentative',
299
+ 'attendeeAdded',
300
+ 'attendeeRemoved',
301
+ 'reminderTriggered',
302
+ 'started',
303
+ 'ended',
304
+ ],
305
+ }
306
+
307
+ // =============================================================================
308
+ // Task Management
309
+ // =============================================================================
310
+
311
+ /**
312
+ * Task entity
313
+ *
314
+ * Represents a todo item with status, priority, due date, and assignee.
315
+ */
316
+ export const Task: Noun = {
317
+ singular: 'task',
318
+ plural: 'tasks',
319
+ description: 'A todo item or work task to be completed',
320
+
321
+ properties: {
322
+ // Basic details
323
+ title: {
324
+ type: 'string',
325
+ description: 'Task title or summary',
326
+ },
327
+ description: {
328
+ type: 'string',
329
+ optional: true,
330
+ description: 'Detailed task description',
331
+ },
332
+
333
+ // Status and progress
334
+ status: {
335
+ type: 'string',
336
+ description: 'Task status: todo, in-progress, blocked, done, cancelled',
337
+ examples: ['todo', 'in-progress', 'blocked', 'done', 'cancelled'],
338
+ },
339
+ completed: {
340
+ type: 'boolean',
341
+ optional: true,
342
+ description: 'Whether the task is completed',
343
+ },
344
+ completedAt: {
345
+ type: 'datetime',
346
+ optional: true,
347
+ description: 'When the task was completed',
348
+ },
349
+ progress: {
350
+ type: 'number',
351
+ optional: true,
352
+ description: 'Task progress percentage (0-100)',
353
+ },
354
+
355
+ // Scheduling
356
+ dueDate: {
357
+ type: 'datetime',
358
+ optional: true,
359
+ description: 'Task due date',
360
+ },
361
+ startDate: {
362
+ type: 'datetime',
363
+ optional: true,
364
+ description: 'Task start date',
365
+ },
366
+ estimatedDuration: {
367
+ type: 'number',
368
+ optional: true,
369
+ description: 'Estimated time to complete in minutes',
370
+ },
371
+ actualDuration: {
372
+ type: 'number',
373
+ optional: true,
374
+ description: 'Actual time spent in minutes',
375
+ },
376
+
377
+ // Priority and categorization
378
+ priority: {
379
+ type: 'string',
380
+ optional: true,
381
+ description: 'Task priority: low, medium, high, urgent',
382
+ examples: ['low', 'medium', 'high', 'urgent'],
383
+ },
384
+ tags: {
385
+ type: 'string',
386
+ array: true,
387
+ optional: true,
388
+ description: 'Tags for categorization',
389
+ },
390
+ labels: {
391
+ type: 'string',
392
+ array: true,
393
+ optional: true,
394
+ description: 'Labels for organization',
395
+ },
396
+
397
+ // Assignment
398
+ assignee: {
399
+ type: 'string',
400
+ optional: true,
401
+ description: 'Person assigned to this task',
402
+ },
403
+ reporter: {
404
+ type: 'string',
405
+ optional: true,
406
+ description: 'Person who created/reported this task',
407
+ },
408
+
409
+ // Organization
410
+ project: {
411
+ type: 'string',
412
+ optional: true,
413
+ description: 'Project this task belongs to',
414
+ },
415
+ section: {
416
+ type: 'string',
417
+ optional: true,
418
+ description: 'Section or column within a project',
419
+ },
420
+ position: {
421
+ type: 'number',
422
+ optional: true,
423
+ description: 'Position in the task list',
424
+ },
425
+
426
+ // Dependencies
427
+ blockedBy: {
428
+ type: 'string',
429
+ array: true,
430
+ optional: true,
431
+ description: 'Task IDs that block this task',
432
+ },
433
+ blocking: {
434
+ type: 'string',
435
+ array: true,
436
+ optional: true,
437
+ description: 'Task IDs that this task blocks',
438
+ },
439
+
440
+ // Metadata
441
+ recurring: {
442
+ type: 'boolean',
443
+ optional: true,
444
+ description: 'Whether this task recurs',
445
+ },
446
+ recurrenceRule: {
447
+ type: 'string',
448
+ optional: true,
449
+ description: 'Recurrence rule in RRULE format',
450
+ },
451
+ },
452
+
453
+ relationships: {
454
+ subtasks: {
455
+ type: 'Task[]',
456
+ description: 'Subtasks of this task',
457
+ },
458
+ parentTask: {
459
+ type: 'Task',
460
+ required: false,
461
+ description: 'Parent task if this is a subtask',
462
+ },
463
+ checklist: {
464
+ type: 'Checklist',
465
+ required: false,
466
+ backref: 'tasks',
467
+ description: 'Checklist this task belongs to',
468
+ },
469
+ attachments: {
470
+ type: 'Attachment[]',
471
+ description: 'Files attached to this task',
472
+ },
473
+ comments: {
474
+ type: 'Comment[]',
475
+ description: 'Comments on this task',
476
+ },
477
+ relatedEvents: {
478
+ type: 'Event[]',
479
+ description: 'Calendar events related to this task',
480
+ },
481
+ },
482
+
483
+ actions: [
484
+ 'create',
485
+ 'update',
486
+ 'delete',
487
+ 'complete',
488
+ 'uncomplete',
489
+ 'start',
490
+ 'pause',
491
+ 'block',
492
+ 'unblock',
493
+ 'assign',
494
+ 'unassign',
495
+ 'setPriority',
496
+ 'setDueDate',
497
+ 'addSubtask',
498
+ 'removeSubtask',
499
+ 'addTag',
500
+ 'removeTag',
501
+ 'move',
502
+ 'duplicate',
503
+ 'archive',
504
+ ],
505
+
506
+ events: [
507
+ 'created',
508
+ 'updated',
509
+ 'deleted',
510
+ 'completed',
511
+ 'uncompleted',
512
+ 'started',
513
+ 'paused',
514
+ 'blocked',
515
+ 'unblocked',
516
+ 'assigned',
517
+ 'unassigned',
518
+ 'priorityChanged',
519
+ 'dueDateChanged',
520
+ 'overdue',
521
+ 'subtaskAdded',
522
+ 'subtaskCompleted',
523
+ 'commented',
524
+ 'archived',
525
+ ],
526
+ }
527
+
528
+ /**
529
+ * Checklist entity
530
+ *
531
+ * Represents a list of checkbox items or tasks.
532
+ */
533
+ export const Checklist: Noun = {
534
+ singular: 'checklist',
535
+ plural: 'checklists',
536
+ description: 'A list of checkbox items or tasks to be completed',
537
+
538
+ properties: {
539
+ title: {
540
+ type: 'string',
541
+ description: 'Checklist title',
542
+ },
543
+ description: {
544
+ type: 'string',
545
+ optional: true,
546
+ description: 'Checklist description',
547
+ },
548
+ itemCount: {
549
+ type: 'number',
550
+ optional: true,
551
+ description: 'Total number of items',
552
+ },
553
+ completedCount: {
554
+ type: 'number',
555
+ optional: true,
556
+ description: 'Number of completed items',
557
+ },
558
+ progress: {
559
+ type: 'number',
560
+ optional: true,
561
+ description: 'Completion progress percentage (0-100)',
562
+ },
563
+ template: {
564
+ type: 'boolean',
565
+ optional: true,
566
+ description: 'Whether this is a reusable template',
567
+ },
568
+ tags: {
569
+ type: 'string',
570
+ array: true,
571
+ optional: true,
572
+ description: 'Tags for categorization',
573
+ },
574
+ },
575
+
576
+ relationships: {
577
+ tasks: {
578
+ type: 'Task[]',
579
+ backref: 'checklist',
580
+ description: 'Tasks/items in this checklist',
581
+ },
582
+ relatedNote: {
583
+ type: 'Note',
584
+ required: false,
585
+ description: 'Note this checklist is embedded in',
586
+ },
587
+ },
588
+
589
+ actions: [
590
+ 'create',
591
+ 'update',
592
+ 'delete',
593
+ 'addItem',
594
+ 'removeItem',
595
+ 'checkItem',
596
+ 'uncheckItem',
597
+ 'reorderItems',
598
+ 'clear',
599
+ 'reset',
600
+ 'duplicate',
601
+ 'convertToTemplate',
602
+ ],
603
+
604
+ events: [
605
+ 'created',
606
+ 'updated',
607
+ 'deleted',
608
+ 'itemAdded',
609
+ 'itemRemoved',
610
+ 'itemChecked',
611
+ 'itemUnchecked',
612
+ 'itemsReordered',
613
+ 'cleared',
614
+ 'completed',
615
+ 'duplicated',
616
+ ],
617
+ }
618
+
619
+ // =============================================================================
620
+ // Note Taking
621
+ // =============================================================================
622
+
623
+ /**
624
+ * Note entity
625
+ *
626
+ * Represents a note or memo (like Notion, Evernote, OneNote).
627
+ */
628
+ export const Note: Noun = {
629
+ singular: 'note',
630
+ plural: 'notes',
631
+ description: 'A note, memo, or document for capturing information',
632
+
633
+ properties: {
634
+ title: {
635
+ type: 'string',
636
+ description: 'Note title',
637
+ },
638
+ content: {
639
+ type: 'markdown',
640
+ description: 'Note content (markdown, rich text, or blocks)',
641
+ },
642
+ plainText: {
643
+ type: 'string',
644
+ optional: true,
645
+ description: 'Plain text version of the content',
646
+ },
647
+ format: {
648
+ type: 'string',
649
+ optional: true,
650
+ description: 'Content format: markdown, html, blocks, plaintext',
651
+ examples: ['markdown', 'html', 'blocks', 'plaintext'],
652
+ },
653
+
654
+ // Organization
655
+ folder: {
656
+ type: 'string',
657
+ optional: true,
658
+ description: 'Folder or path within notebook',
659
+ },
660
+ tags: {
661
+ type: 'string',
662
+ array: true,
663
+ optional: true,
664
+ description: 'Tags for categorization',
665
+ },
666
+
667
+ // Status
668
+ pinned: {
669
+ type: 'boolean',
670
+ optional: true,
671
+ description: 'Whether the note is pinned',
672
+ },
673
+ archived: {
674
+ type: 'boolean',
675
+ optional: true,
676
+ description: 'Whether the note is archived',
677
+ },
678
+ favorited: {
679
+ type: 'boolean',
680
+ optional: true,
681
+ description: 'Whether the note is favorited/starred',
682
+ },
683
+ locked: {
684
+ type: 'boolean',
685
+ optional: true,
686
+ description: 'Whether the note is locked from editing',
687
+ },
688
+
689
+ // Metadata
690
+ wordCount: {
691
+ type: 'number',
692
+ optional: true,
693
+ description: 'Number of words in the note',
694
+ },
695
+ characterCount: {
696
+ type: 'number',
697
+ optional: true,
698
+ description: 'Number of characters',
699
+ },
700
+ language: {
701
+ type: 'string',
702
+ optional: true,
703
+ description: 'Note language code',
704
+ },
705
+
706
+ // Sharing and collaboration
707
+ shared: {
708
+ type: 'boolean',
709
+ optional: true,
710
+ description: 'Whether the note is shared',
711
+ },
712
+ publicUrl: {
713
+ type: 'url',
714
+ optional: true,
715
+ description: 'Public sharing URL if shared',
716
+ },
717
+
718
+ // Source
719
+ sourceUrl: {
720
+ type: 'url',
721
+ optional: true,
722
+ description: 'Original source URL if clipped from web',
723
+ },
724
+ author: {
725
+ type: 'string',
726
+ optional: true,
727
+ description: 'Original author if sourced externally',
728
+ },
729
+ },
730
+
731
+ relationships: {
732
+ notebook: {
733
+ type: 'Notebook',
734
+ backref: 'notes',
735
+ description: 'Notebook this note belongs to',
736
+ },
737
+ attachments: {
738
+ type: 'Attachment[]',
739
+ description: 'Files, images, audio attached to this note',
740
+ },
741
+ checklists: {
742
+ type: 'Checklist[]',
743
+ description: 'Embedded checklists',
744
+ },
745
+ linkedNotes: {
746
+ type: 'Note[]',
747
+ description: 'Other notes linked from this note',
748
+ },
749
+ backlinks: {
750
+ type: 'Note[]',
751
+ description: 'Notes that link to this note',
752
+ },
753
+ tasks: {
754
+ type: 'Task[]',
755
+ description: 'Tasks embedded in this note',
756
+ },
757
+ reminders: {
758
+ type: 'Reminder[]',
759
+ description: 'Reminders associated with this note',
760
+ },
761
+ },
762
+
763
+ actions: [
764
+ 'create',
765
+ 'update',
766
+ 'delete',
767
+ 'archive',
768
+ 'unarchive',
769
+ 'pin',
770
+ 'unpin',
771
+ 'favorite',
772
+ 'unfavorite',
773
+ 'lock',
774
+ 'unlock',
775
+ 'share',
776
+ 'unshare',
777
+ 'duplicate',
778
+ 'export',
779
+ 'print',
780
+ 'addTag',
781
+ 'removeTag',
782
+ 'move',
783
+ 'merge',
784
+ ],
785
+
786
+ events: [
787
+ 'created',
788
+ 'updated',
789
+ 'deleted',
790
+ 'archived',
791
+ 'unarchived',
792
+ 'pinned',
793
+ 'unpinned',
794
+ 'favorited',
795
+ 'unfavorited',
796
+ 'locked',
797
+ 'unlocked',
798
+ 'shared',
799
+ 'unshared',
800
+ 'duplicated',
801
+ 'exported',
802
+ 'printed',
803
+ 'moved',
804
+ 'merged',
805
+ ],
806
+ }
807
+
808
+ /**
809
+ * Notebook entity
810
+ *
811
+ * Represents a collection of notes (like an Evernote notebook or Notion workspace).
812
+ */
813
+ export const Notebook: Noun = {
814
+ singular: 'notebook',
815
+ plural: 'notebooks',
816
+ description: 'A collection or folder of related notes',
817
+
818
+ properties: {
819
+ name: {
820
+ type: 'string',
821
+ description: 'Notebook name',
822
+ },
823
+ description: {
824
+ type: 'string',
825
+ optional: true,
826
+ description: 'Notebook description or purpose',
827
+ },
828
+ color: {
829
+ type: 'string',
830
+ optional: true,
831
+ description: 'Color for visual identification',
832
+ },
833
+ icon: {
834
+ type: 'string',
835
+ optional: true,
836
+ description: 'Icon or emoji for the notebook',
837
+ },
838
+ type: {
839
+ type: 'string',
840
+ optional: true,
841
+ description: 'Notebook type: personal, shared, business, archive',
842
+ examples: ['personal', 'shared', 'business', 'archive'],
843
+ },
844
+ defaultNote: {
845
+ type: 'boolean',
846
+ optional: true,
847
+ description: 'Whether this is the default notebook for new notes',
848
+ },
849
+ noteCount: {
850
+ type: 'number',
851
+ optional: true,
852
+ description: 'Number of notes in this notebook',
853
+ },
854
+ shared: {
855
+ type: 'boolean',
856
+ optional: true,
857
+ description: 'Whether the notebook is shared',
858
+ },
859
+ position: {
860
+ type: 'number',
861
+ optional: true,
862
+ description: 'Position in the notebook list',
863
+ },
864
+ },
865
+
866
+ relationships: {
867
+ notes: {
868
+ type: 'Note[]',
869
+ backref: 'notebook',
870
+ description: 'Notes in this notebook',
871
+ },
872
+ parentNotebook: {
873
+ type: 'Notebook',
874
+ required: false,
875
+ description: 'Parent notebook if this is nested',
876
+ },
877
+ subNotebooks: {
878
+ type: 'Notebook[]',
879
+ description: 'Child notebooks',
880
+ },
881
+ owner: {
882
+ type: 'Contact',
883
+ description: 'Notebook owner',
884
+ },
885
+ collaborators: {
886
+ type: 'Contact[]',
887
+ description: 'People with access to this notebook',
888
+ },
889
+ },
890
+
891
+ actions: [
892
+ 'create',
893
+ 'update',
894
+ 'delete',
895
+ 'rename',
896
+ 'share',
897
+ 'unshare',
898
+ 'move',
899
+ 'duplicate',
900
+ 'export',
901
+ 'import',
902
+ 'merge',
903
+ 'archive',
904
+ ],
905
+
906
+ events: [
907
+ 'created',
908
+ 'updated',
909
+ 'deleted',
910
+ 'renamed',
911
+ 'shared',
912
+ 'unshared',
913
+ 'moved',
914
+ 'duplicated',
915
+ 'exported',
916
+ 'imported',
917
+ 'merged',
918
+ 'archived',
919
+ ],
920
+ }
921
+
922
+ // =============================================================================
923
+ // Reminders and Bookmarks
924
+ // =============================================================================
925
+
926
+ /**
927
+ * Reminder entity
928
+ *
929
+ * Represents a time-based reminder or alert.
930
+ */
931
+ export const Reminder: Noun = {
932
+ singular: 'reminder',
933
+ plural: 'reminders',
934
+ description: 'A time-based reminder or notification',
935
+
936
+ properties: {
937
+ title: {
938
+ type: 'string',
939
+ description: 'Reminder title or message',
940
+ },
941
+ description: {
942
+ type: 'string',
943
+ optional: true,
944
+ description: 'Additional reminder details',
945
+ },
946
+
947
+ // Timing
948
+ dueDate: {
949
+ type: 'datetime',
950
+ description: 'When the reminder should trigger',
951
+ },
952
+ timezone: {
953
+ type: 'string',
954
+ optional: true,
955
+ description: 'Timezone for the reminder (IANA timezone identifier)',
956
+ },
957
+ allDay: {
958
+ type: 'boolean',
959
+ optional: true,
960
+ description: 'Whether this is an all-day reminder',
961
+ },
962
+
963
+ // Recurrence
964
+ recurring: {
965
+ type: 'boolean',
966
+ optional: true,
967
+ description: 'Whether this reminder recurs',
968
+ },
969
+ recurrenceRule: {
970
+ type: 'string',
971
+ optional: true,
972
+ description: 'Recurrence rule in RRULE format',
973
+ },
974
+
975
+ // Status
976
+ completed: {
977
+ type: 'boolean',
978
+ optional: true,
979
+ description: 'Whether the reminder has been completed',
980
+ },
981
+ completedAt: {
982
+ type: 'datetime',
983
+ optional: true,
984
+ description: 'When the reminder was marked complete',
985
+ },
986
+ snoozedUntil: {
987
+ type: 'datetime',
988
+ optional: true,
989
+ description: 'Snoozed until this time',
990
+ },
991
+ triggered: {
992
+ type: 'boolean',
993
+ optional: true,
994
+ description: 'Whether the reminder notification has been triggered',
995
+ },
996
+ triggeredAt: {
997
+ type: 'datetime',
998
+ optional: true,
999
+ description: 'When the reminder was triggered',
1000
+ },
1001
+
1002
+ // Priority and categorization
1003
+ priority: {
1004
+ type: 'string',
1005
+ optional: true,
1006
+ description: 'Reminder priority: low, medium, high',
1007
+ examples: ['low', 'medium', 'high'],
1008
+ },
1009
+ tags: {
1010
+ type: 'string',
1011
+ array: true,
1012
+ optional: true,
1013
+ description: 'Tags for categorization',
1014
+ },
1015
+ list: {
1016
+ type: 'string',
1017
+ optional: true,
1018
+ description: 'List or category the reminder belongs to',
1019
+ },
1020
+
1021
+ // Notification
1022
+ notificationMethod: {
1023
+ type: 'string',
1024
+ array: true,
1025
+ optional: true,
1026
+ description: 'Notification methods: push, email, sms',
1027
+ examples: ['push', 'email', 'sms'],
1028
+ },
1029
+ },
1030
+
1031
+ relationships: {
1032
+ relatedTask: {
1033
+ type: 'Task',
1034
+ required: false,
1035
+ description: 'Task associated with this reminder',
1036
+ },
1037
+ relatedEvent: {
1038
+ type: 'Event',
1039
+ required: false,
1040
+ description: 'Calendar event associated with this reminder',
1041
+ },
1042
+ relatedNote: {
1043
+ type: 'Note',
1044
+ required: false,
1045
+ description: 'Note associated with this reminder',
1046
+ },
1047
+ },
1048
+
1049
+ actions: [
1050
+ 'create',
1051
+ 'update',
1052
+ 'delete',
1053
+ 'complete',
1054
+ 'uncomplete',
1055
+ 'snooze',
1056
+ 'dismiss',
1057
+ 'trigger',
1058
+ 'reschedule',
1059
+ 'duplicate',
1060
+ ],
1061
+
1062
+ events: [
1063
+ 'created',
1064
+ 'updated',
1065
+ 'deleted',
1066
+ 'completed',
1067
+ 'uncompleted',
1068
+ 'snoozed',
1069
+ 'dismissed',
1070
+ 'triggered',
1071
+ 'rescheduled',
1072
+ 'duplicated',
1073
+ ],
1074
+ }
1075
+
1076
+ /**
1077
+ * Bookmark entity
1078
+ *
1079
+ * Represents a saved link or URL with tags and metadata.
1080
+ */
1081
+ export const Bookmark: Noun = {
1082
+ singular: 'bookmark',
1083
+ plural: 'bookmarks',
1084
+ description: 'A saved link, URL, or web page reference',
1085
+
1086
+ properties: {
1087
+ title: {
1088
+ type: 'string',
1089
+ description: 'Bookmark title or page title',
1090
+ },
1091
+ url: {
1092
+ type: 'url',
1093
+ description: 'The bookmarked URL',
1094
+ },
1095
+ description: {
1096
+ type: 'string',
1097
+ optional: true,
1098
+ description: 'Bookmark description or notes',
1099
+ },
1100
+
1101
+ // Metadata
1102
+ favicon: {
1103
+ type: 'url',
1104
+ optional: true,
1105
+ description: 'URL to the site favicon',
1106
+ },
1107
+ screenshot: {
1108
+ type: 'url',
1109
+ optional: true,
1110
+ description: 'Screenshot or preview image URL',
1111
+ },
1112
+ excerpt: {
1113
+ type: 'string',
1114
+ optional: true,
1115
+ description: 'Text excerpt from the page',
1116
+ },
1117
+
1118
+ // Organization
1119
+ folder: {
1120
+ type: 'string',
1121
+ optional: true,
1122
+ description: 'Folder or collection the bookmark belongs to',
1123
+ },
1124
+ tags: {
1125
+ type: 'string',
1126
+ array: true,
1127
+ optional: true,
1128
+ description: 'Tags for categorization',
1129
+ },
1130
+
1131
+ // Status
1132
+ favorited: {
1133
+ type: 'boolean',
1134
+ optional: true,
1135
+ description: 'Whether the bookmark is favorited',
1136
+ },
1137
+ archived: {
1138
+ type: 'boolean',
1139
+ optional: true,
1140
+ description: 'Whether the bookmark is archived',
1141
+ },
1142
+ private: {
1143
+ type: 'boolean',
1144
+ optional: true,
1145
+ description: 'Whether the bookmark is private',
1146
+ },
1147
+ unread: {
1148
+ type: 'boolean',
1149
+ optional: true,
1150
+ description: 'Whether the bookmark is marked as unread',
1151
+ },
1152
+
1153
+ // Web page metadata
1154
+ author: {
1155
+ type: 'string',
1156
+ optional: true,
1157
+ description: 'Page author if available',
1158
+ },
1159
+ publishedAt: {
1160
+ type: 'datetime',
1161
+ optional: true,
1162
+ description: 'When the page was published',
1163
+ },
1164
+ siteName: {
1165
+ type: 'string',
1166
+ optional: true,
1167
+ description: 'Name of the website',
1168
+ },
1169
+ domain: {
1170
+ type: 'string',
1171
+ optional: true,
1172
+ description: 'Domain name of the URL',
1173
+ },
1174
+
1175
+ // Archive
1176
+ archived_content: {
1177
+ type: 'markdown',
1178
+ optional: true,
1179
+ description: 'Archived page content',
1180
+ },
1181
+ archivedAt: {
1182
+ type: 'datetime',
1183
+ optional: true,
1184
+ description: 'When the page content was archived',
1185
+ },
1186
+
1187
+ // Access
1188
+ lastVisitedAt: {
1189
+ type: 'datetime',
1190
+ optional: true,
1191
+ description: 'When the bookmark was last visited',
1192
+ },
1193
+ visitCount: {
1194
+ type: 'number',
1195
+ optional: true,
1196
+ description: 'Number of times visited',
1197
+ },
1198
+ },
1199
+
1200
+ relationships: {
1201
+ relatedNotes: {
1202
+ type: 'Note[]',
1203
+ description: 'Notes that reference this bookmark',
1204
+ },
1205
+ },
1206
+
1207
+ actions: [
1208
+ 'create',
1209
+ 'update',
1210
+ 'delete',
1211
+ 'visit',
1212
+ 'favorite',
1213
+ 'unfavorite',
1214
+ 'archive',
1215
+ 'unarchive',
1216
+ 'addTag',
1217
+ 'removeTag',
1218
+ 'move',
1219
+ 'share',
1220
+ 'export',
1221
+ 'import',
1222
+ ],
1223
+
1224
+ events: [
1225
+ 'created',
1226
+ 'updated',
1227
+ 'deleted',
1228
+ 'visited',
1229
+ 'favorited',
1230
+ 'unfavorited',
1231
+ 'archived',
1232
+ 'unarchived',
1233
+ 'moved',
1234
+ 'shared',
1235
+ 'exported',
1236
+ 'imported',
1237
+ ],
1238
+ }
1239
+
1240
+ // =============================================================================
1241
+ // Availability
1242
+ // =============================================================================
1243
+
1244
+ /**
1245
+ * Availability entity
1246
+ *
1247
+ * Represents a user's available time windows for scheduling meetings.
1248
+ * Used by scheduling tools like Calendly, Cal.com, etc.
1249
+ */
1250
+ export const Availability: Noun = {
1251
+ singular: 'availability',
1252
+ plural: 'availabilities',
1253
+ description: "A user's available time windows for scheduling",
1254
+
1255
+ properties: {
1256
+ // Identity
1257
+ name: {
1258
+ type: 'string',
1259
+ description: 'Availability schedule name',
1260
+ },
1261
+ description: {
1262
+ type: 'string',
1263
+ optional: true,
1264
+ description: 'Description of this availability schedule',
1265
+ },
1266
+
1267
+ // Timezone
1268
+ timezone: {
1269
+ type: 'string',
1270
+ description: 'Timezone for availability windows',
1271
+ },
1272
+
1273
+ // Weekly recurring schedule
1274
+ schedule: {
1275
+ type: 'json',
1276
+ description: 'Weekly recurring availability (day -> time ranges)',
1277
+ },
1278
+
1279
+ // Exceptions
1280
+ dateOverrides: {
1281
+ type: 'json',
1282
+ optional: true,
1283
+ description: 'Specific date overrides to the regular schedule',
1284
+ },
1285
+ blockedDates: {
1286
+ type: 'datetime',
1287
+ array: true,
1288
+ optional: true,
1289
+ description: 'Dates when unavailable',
1290
+ },
1291
+
1292
+ // Buffer settings
1293
+ bufferBefore: {
1294
+ type: 'number',
1295
+ optional: true,
1296
+ description: 'Buffer time before meetings in minutes',
1297
+ },
1298
+ bufferAfter: {
1299
+ type: 'number',
1300
+ optional: true,
1301
+ description: 'Buffer time after meetings in minutes',
1302
+ },
1303
+ minimumNotice: {
1304
+ type: 'number',
1305
+ optional: true,
1306
+ description: 'Minimum advance notice required in hours',
1307
+ },
1308
+
1309
+ // Scheduling window
1310
+ daysInAdvance: {
1311
+ type: 'number',
1312
+ optional: true,
1313
+ description: 'How many days in advance can be booked',
1314
+ },
1315
+ startDate: {
1316
+ type: 'datetime',
1317
+ optional: true,
1318
+ description: 'Date when availability starts',
1319
+ },
1320
+ endDate: {
1321
+ type: 'datetime',
1322
+ optional: true,
1323
+ description: 'Date when availability ends',
1324
+ },
1325
+
1326
+ // Status
1327
+ isDefault: {
1328
+ type: 'boolean',
1329
+ optional: true,
1330
+ description: 'Whether this is the default availability',
1331
+ },
1332
+ active: {
1333
+ type: 'boolean',
1334
+ description: 'Whether this availability is active',
1335
+ },
1336
+ },
1337
+
1338
+ relationships: {
1339
+ calendar: {
1340
+ type: 'Calendar',
1341
+ required: false,
1342
+ description: 'Associated calendar for conflict checking',
1343
+ },
1344
+ user: {
1345
+ type: 'User',
1346
+ description: 'User this availability belongs to',
1347
+ },
1348
+ },
1349
+
1350
+ actions: [
1351
+ 'create',
1352
+ 'update',
1353
+ 'delete',
1354
+ 'activate',
1355
+ 'deactivate',
1356
+ 'setDefault',
1357
+ 'addOverride',
1358
+ 'removeOverride',
1359
+ 'blockDate',
1360
+ 'unblockDate',
1361
+ ],
1362
+
1363
+ events: [
1364
+ 'created',
1365
+ 'updated',
1366
+ 'deleted',
1367
+ 'activated',
1368
+ 'deactivated',
1369
+ 'overrideAdded',
1370
+ 'overrideRemoved',
1371
+ 'dateBlocked',
1372
+ 'dateUnblocked',
1373
+ ],
1374
+ }
1375
+
1376
+ // =============================================================================
1377
+ // Export all entities as a schema
1378
+ // =============================================================================
1379
+
1380
+ /**
1381
+ * All productivity tool entity types
1382
+ */
1383
+ export const ProductivityEntities = {
1384
+ // Calendar & Scheduling
1385
+ Calendar,
1386
+ Event,
1387
+ Availability,
1388
+
1389
+ // Task Management
1390
+ Task,
1391
+ Checklist,
1392
+
1393
+ // Note Taking
1394
+ Note,
1395
+ Notebook,
1396
+
1397
+ // Reminders and Bookmarks
1398
+ Reminder,
1399
+ Bookmark,
1400
+ }
1401
+
1402
+ /**
1403
+ * Entity categories for organization
1404
+ */
1405
+ export const ProductivityCategories = {
1406
+ calendar: ['Calendar', 'Event', 'Availability'],
1407
+ tasks: ['Task', 'Checklist'],
1408
+ notes: ['Note', 'Notebook'],
1409
+ reminders: ['Reminder'],
1410
+ bookmarks: ['Bookmark'],
1411
+ } as const