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,1360 @@
1
+ /**
2
+ * Presentation Entity Types (Nouns)
3
+ *
4
+ * Semantic type definitions for presentations that support
5
+ * Google Slides, Microsoft PowerPoint/PPTX, and Reveal.js/MDX formats.
6
+ * Each entity defines:
7
+ * - Properties: The data fields
8
+ * - Actions: Operations that can be performed (Verbs)
9
+ * - Events: State changes that occur
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+
14
+ import type { Noun } from 'ai-database'
15
+
16
+ // =============================================================================
17
+ // Presentation
18
+ // =============================================================================
19
+
20
+ /**
21
+ * Presentation entity
22
+ *
23
+ * Represents a slide presentation for creating and delivering visual content.
24
+ * Supports Google Slides, PowerPoint/PPTX, and Reveal.js/MDX formats.
25
+ */
26
+ export const Presentation: Noun = {
27
+ singular: 'presentation',
28
+ plural: 'presentations',
29
+ description: 'A slide presentation for creating and delivering visual content',
30
+
31
+ properties: {
32
+ // Identity
33
+ title: {
34
+ type: 'string',
35
+ description: 'Presentation title',
36
+ },
37
+ slug: {
38
+ type: 'string',
39
+ optional: true,
40
+ description: 'URL-friendly identifier',
41
+ },
42
+ description: {
43
+ type: 'string',
44
+ optional: true,
45
+ description: 'Presentation description or summary',
46
+ },
47
+ subtitle: {
48
+ type: 'string',
49
+ optional: true,
50
+ description: 'Presentation subtitle',
51
+ },
52
+
53
+ // Format
54
+ format: {
55
+ type: 'string',
56
+ description: 'Presentation format: pptx, gslides, revealjs, mdx, pdf',
57
+ examples: ['pptx', 'gslides', 'revealjs', 'mdx', 'pdf', 'keynote'],
58
+ },
59
+ aspectRatio: {
60
+ type: 'string',
61
+ optional: true,
62
+ description: 'Slide aspect ratio: 16:9, 4:3, 16:10',
63
+ examples: ['16:9', '4:3', '16:10'],
64
+ },
65
+ slideSize: {
66
+ type: 'json',
67
+ optional: true,
68
+ description: 'Custom slide dimensions',
69
+ },
70
+
71
+ // Status
72
+ status: {
73
+ type: 'string',
74
+ description: 'Presentation status: draft, in-review, ready, presented, archived',
75
+ examples: ['draft', 'in-review', 'ready', 'presented', 'archived'],
76
+ },
77
+ visibility: {
78
+ type: 'string',
79
+ description: 'Visibility: private, internal, public',
80
+ examples: ['private', 'internal', 'public'],
81
+ },
82
+
83
+ // Structure
84
+ slideCount: {
85
+ type: 'number',
86
+ optional: true,
87
+ description: 'Total number of slides',
88
+ },
89
+ duration: {
90
+ type: 'number',
91
+ optional: true,
92
+ description: 'Estimated presentation duration in minutes',
93
+ },
94
+
95
+ // Theme and styling
96
+ theme: {
97
+ type: 'string',
98
+ optional: true,
99
+ description: 'Presentation theme name',
100
+ },
101
+ themeConfig: {
102
+ type: 'json',
103
+ optional: true,
104
+ description: 'Theme configuration and customization',
105
+ },
106
+ masterSlides: {
107
+ type: 'json',
108
+ optional: true,
109
+ description: 'Master slide layouts',
110
+ },
111
+ colorScheme: {
112
+ type: 'json',
113
+ optional: true,
114
+ description: 'Color scheme configuration',
115
+ },
116
+ fontScheme: {
117
+ type: 'json',
118
+ optional: true,
119
+ description: 'Font scheme configuration',
120
+ },
121
+
122
+ // Transitions and animations
123
+ defaultTransition: {
124
+ type: 'string',
125
+ optional: true,
126
+ description: 'Default slide transition effect',
127
+ examples: ['none', 'fade', 'slide', 'zoom', 'flip', 'cube', 'wipe'],
128
+ },
129
+ transitionSpeed: {
130
+ type: 'string',
131
+ optional: true,
132
+ description: 'Transition speed: slow, default, fast',
133
+ examples: ['slow', 'default', 'fast'],
134
+ },
135
+
136
+ // Presenter features
137
+ hasNotes: {
138
+ type: 'boolean',
139
+ optional: true,
140
+ description: 'Whether presentation includes speaker notes',
141
+ },
142
+ hasTimings: {
143
+ type: 'boolean',
144
+ optional: true,
145
+ description: 'Whether slides have timing information',
146
+ },
147
+ autoAdvance: {
148
+ type: 'boolean',
149
+ optional: true,
150
+ description: 'Whether slides auto-advance',
151
+ },
152
+ autoAdvanceDelay: {
153
+ type: 'number',
154
+ optional: true,
155
+ description: 'Auto-advance delay in seconds',
156
+ },
157
+ loop: {
158
+ type: 'boolean',
159
+ optional: true,
160
+ description: 'Whether presentation loops',
161
+ },
162
+
163
+ // Collaboration
164
+ allowComments: {
165
+ type: 'boolean',
166
+ optional: true,
167
+ description: 'Whether comments are enabled',
168
+ },
169
+ shareMode: {
170
+ type: 'string',
171
+ optional: true,
172
+ description: 'Sharing mode: view, comment, edit, present',
173
+ examples: ['view', 'comment', 'edit', 'present'],
174
+ },
175
+ allowDownload: {
176
+ type: 'boolean',
177
+ optional: true,
178
+ description: 'Whether download is allowed',
179
+ },
180
+
181
+ // Templates
182
+ isTemplate: {
183
+ type: 'boolean',
184
+ optional: true,
185
+ description: 'Whether this is a template',
186
+ },
187
+ templateId: {
188
+ type: 'string',
189
+ optional: true,
190
+ description: 'ID of template this was created from',
191
+ },
192
+ templateCategory: {
193
+ type: 'string',
194
+ optional: true,
195
+ description: 'Template category',
196
+ examples: ['business', 'education', 'pitch-deck', 'report', 'training'],
197
+ },
198
+
199
+ // Publishing
200
+ published: {
201
+ type: 'boolean',
202
+ optional: true,
203
+ description: 'Whether presentation is published',
204
+ },
205
+ publishedUrl: {
206
+ type: 'url',
207
+ optional: true,
208
+ description: 'Published presentation URL',
209
+ },
210
+ publishedAt: {
211
+ type: 'datetime',
212
+ optional: true,
213
+ description: 'Publication timestamp',
214
+ },
215
+ embedCode: {
216
+ type: 'string',
217
+ optional: true,
218
+ description: 'HTML embed code',
219
+ },
220
+
221
+ // Presentation sessions
222
+ lastPresentedAt: {
223
+ type: 'datetime',
224
+ optional: true,
225
+ description: 'Last presentation timestamp',
226
+ },
227
+ presentationCount: {
228
+ type: 'number',
229
+ optional: true,
230
+ description: 'Number of times presented',
231
+ },
232
+
233
+ // Integration
234
+ externalId: {
235
+ type: 'string',
236
+ optional: true,
237
+ description: 'External system ID (Google Slides ID, OneDrive ID, etc.)',
238
+ },
239
+ externalUrl: {
240
+ type: 'url',
241
+ optional: true,
242
+ description: 'URL in external system',
243
+ },
244
+ syncEnabled: {
245
+ type: 'boolean',
246
+ optional: true,
247
+ description: 'Whether sync is enabled',
248
+ },
249
+ lastSyncedAt: {
250
+ type: 'datetime',
251
+ optional: true,
252
+ description: 'Last sync timestamp',
253
+ },
254
+
255
+ // Metadata
256
+ language: {
257
+ type: 'string',
258
+ optional: true,
259
+ description: 'Presentation language code',
260
+ },
261
+ author: {
262
+ type: 'string',
263
+ optional: true,
264
+ description: 'Presentation author name',
265
+ },
266
+ company: {
267
+ type: 'string',
268
+ optional: true,
269
+ description: 'Company or organization',
270
+ },
271
+ tags: {
272
+ type: 'string',
273
+ array: true,
274
+ optional: true,
275
+ description: 'Tags for categorization',
276
+ },
277
+ category: {
278
+ type: 'string',
279
+ optional: true,
280
+ description: 'Presentation category',
281
+ },
282
+ folder: {
283
+ type: 'string',
284
+ optional: true,
285
+ description: 'Folder or workspace path',
286
+ },
287
+ customMetadata: {
288
+ type: 'json',
289
+ optional: true,
290
+ description: 'Custom metadata fields',
291
+ },
292
+
293
+ // Analytics
294
+ viewCount: {
295
+ type: 'number',
296
+ optional: true,
297
+ description: 'Number of views',
298
+ },
299
+ downloadCount: {
300
+ type: 'number',
301
+ optional: true,
302
+ description: 'Number of downloads',
303
+ },
304
+ lastViewedAt: {
305
+ type: 'datetime',
306
+ optional: true,
307
+ description: 'Last view timestamp',
308
+ },
309
+ lastEditedAt: {
310
+ type: 'datetime',
311
+ optional: true,
312
+ description: 'Last edit timestamp',
313
+ },
314
+ },
315
+
316
+ relationships: {
317
+ owner: {
318
+ type: 'Contact',
319
+ description: 'Presentation owner',
320
+ },
321
+ creator: {
322
+ type: 'Contact',
323
+ description: 'User who created the presentation',
324
+ },
325
+ lastEditor: {
326
+ type: 'Contact',
327
+ required: false,
328
+ description: 'User who last edited',
329
+ },
330
+ slides: {
331
+ type: 'Slide[]',
332
+ backref: 'presentation',
333
+ description: 'Slides in this presentation',
334
+ },
335
+ collaborators: {
336
+ type: 'Contact[]',
337
+ description: 'Users with access',
338
+ },
339
+ },
340
+
341
+ actions: [
342
+ 'create',
343
+ 'open',
344
+ 'edit',
345
+ 'save',
346
+ 'saveAs',
347
+ 'duplicate',
348
+ 'rename',
349
+ 'delete',
350
+ 'restore',
351
+ 'export',
352
+ 'download',
353
+ 'print',
354
+ 'share',
355
+ 'unshare',
356
+ 'publish',
357
+ 'unpublish',
358
+ 'archive',
359
+ 'unarchive',
360
+ 'move',
361
+ 'copy',
362
+ 'present',
363
+ 'startPresentation',
364
+ 'endPresentation',
365
+ 'addSlide',
366
+ 'removeSlide',
367
+ 'reorderSlides',
368
+ 'duplicateSlide',
369
+ 'makeTemplate',
370
+ 'createFromTemplate',
371
+ 'applyTheme',
372
+ 'changeAspectRatio',
373
+ 'setTransitions',
374
+ 'addAnimation',
375
+ 'recordPresentation',
376
+ 'embedPresentation',
377
+ ],
378
+
379
+ events: [
380
+ 'created',
381
+ 'opened',
382
+ 'edited',
383
+ 'saved',
384
+ 'renamed',
385
+ 'deleted',
386
+ 'restored',
387
+ 'exported',
388
+ 'downloaded',
389
+ 'printed',
390
+ 'shared',
391
+ 'unshared',
392
+ 'published',
393
+ 'unpublished',
394
+ 'archived',
395
+ 'unarchived',
396
+ 'moved',
397
+ 'copied',
398
+ 'presented',
399
+ 'presentationStarted',
400
+ 'presentationEnded',
401
+ 'slideAdded',
402
+ 'slideRemoved',
403
+ 'slidesReordered',
404
+ 'slideDuplicated',
405
+ 'themeApplied',
406
+ 'aspectRatioChanged',
407
+ 'transitionsSet',
408
+ 'animationAdded',
409
+ 'recorded',
410
+ 'embedded',
411
+ 'collaboratorAdded',
412
+ 'collaboratorRemoved',
413
+ 'permissionChanged',
414
+ 'synced',
415
+ 'viewed',
416
+ ],
417
+ }
418
+
419
+ // =============================================================================
420
+ // Slide
421
+ // =============================================================================
422
+
423
+ /**
424
+ * Slide entity
425
+ *
426
+ * Represents a single slide within a presentation.
427
+ */
428
+ export const Slide: Noun = {
429
+ singular: 'slide',
430
+ plural: 'slides',
431
+ description: 'A single slide within a presentation',
432
+
433
+ properties: {
434
+ // Identity
435
+ title: {
436
+ type: 'string',
437
+ optional: true,
438
+ description: 'Slide title',
439
+ },
440
+ index: {
441
+ type: 'number',
442
+ description: 'Slide position in presentation (0-based)',
443
+ },
444
+ slideId: {
445
+ type: 'string',
446
+ optional: true,
447
+ description: 'Internal slide identifier',
448
+ },
449
+
450
+ // Layout
451
+ layout: {
452
+ type: 'string',
453
+ optional: true,
454
+ description: 'Slide layout type',
455
+ examples: [
456
+ 'title',
457
+ 'title-content',
458
+ 'section-header',
459
+ 'two-column',
460
+ 'comparison',
461
+ 'blank',
462
+ 'content',
463
+ 'title-only',
464
+ 'picture',
465
+ ],
466
+ },
467
+ masterSlideId: {
468
+ type: 'string',
469
+ optional: true,
470
+ description: 'Master slide/layout reference',
471
+ },
472
+
473
+ // Background
474
+ backgroundColor: {
475
+ type: 'string',
476
+ optional: true,
477
+ description: 'Background color (hex)',
478
+ },
479
+ backgroundImage: {
480
+ type: 'url',
481
+ optional: true,
482
+ description: 'Background image URL',
483
+ },
484
+ backgroundType: {
485
+ type: 'string',
486
+ optional: true,
487
+ description: 'Background type: solid, gradient, image, video',
488
+ examples: ['solid', 'gradient', 'image', 'video'],
489
+ },
490
+ backgroundGradient: {
491
+ type: 'json',
492
+ optional: true,
493
+ description: 'Gradient configuration',
494
+ },
495
+
496
+ // Transition
497
+ transition: {
498
+ type: 'string',
499
+ optional: true,
500
+ description: 'Slide transition effect',
501
+ examples: ['none', 'fade', 'slide', 'zoom', 'flip', 'cube', 'wipe', 'dissolve'],
502
+ },
503
+ transitionDuration: {
504
+ type: 'number',
505
+ optional: true,
506
+ description: 'Transition duration in milliseconds',
507
+ },
508
+ transitionDirection: {
509
+ type: 'string',
510
+ optional: true,
511
+ description: 'Transition direction',
512
+ examples: ['left', 'right', 'up', 'down'],
513
+ },
514
+
515
+ // Timing
516
+ duration: {
517
+ type: 'number',
518
+ optional: true,
519
+ description: 'Slide display duration in seconds',
520
+ },
521
+ autoAdvance: {
522
+ type: 'boolean',
523
+ optional: true,
524
+ description: 'Whether slide auto-advances',
525
+ },
526
+ advanceAfter: {
527
+ type: 'number',
528
+ optional: true,
529
+ description: 'Seconds before auto-advance',
530
+ },
531
+
532
+ // Content
533
+ hasContent: {
534
+ type: 'boolean',
535
+ optional: true,
536
+ description: 'Whether slide has content elements',
537
+ },
538
+ elementCount: {
539
+ type: 'number',
540
+ optional: true,
541
+ description: 'Number of elements on slide',
542
+ },
543
+
544
+ // Notes
545
+ notes: {
546
+ type: 'string',
547
+ optional: true,
548
+ description: 'Speaker notes for this slide',
549
+ },
550
+ hasNotes: {
551
+ type: 'boolean',
552
+ optional: true,
553
+ description: 'Whether slide has speaker notes',
554
+ },
555
+
556
+ // Visibility
557
+ hidden: {
558
+ type: 'boolean',
559
+ optional: true,
560
+ description: 'Whether slide is hidden',
561
+ },
562
+
563
+ // Section
564
+ sectionTitle: {
565
+ type: 'string',
566
+ optional: true,
567
+ description: 'Section this slide belongs to',
568
+ },
569
+ isSection: {
570
+ type: 'boolean',
571
+ optional: true,
572
+ description: 'Whether this is a section divider',
573
+ },
574
+
575
+ // Animations
576
+ hasAnimations: {
577
+ type: 'boolean',
578
+ optional: true,
579
+ description: 'Whether slide has animations',
580
+ },
581
+ animationCount: {
582
+ type: 'number',
583
+ optional: true,
584
+ description: 'Number of animations',
585
+ },
586
+
587
+ // Thumbnail
588
+ thumbnail: {
589
+ type: 'url',
590
+ optional: true,
591
+ description: 'Slide thumbnail URL',
592
+ },
593
+
594
+ // Metadata
595
+ metadata: {
596
+ type: 'json',
597
+ optional: true,
598
+ description: 'Custom metadata',
599
+ },
600
+ },
601
+
602
+ relationships: {
603
+ presentation: {
604
+ type: 'Presentation',
605
+ backref: 'slides',
606
+ description: 'Parent presentation',
607
+ },
608
+ elements: {
609
+ type: 'SlideElement[]',
610
+ backref: 'slide',
611
+ description: 'Elements on this slide',
612
+ },
613
+ speakerNotes: {
614
+ type: 'SpeakerNotes',
615
+ required: false,
616
+ description: 'Detailed speaker notes',
617
+ },
618
+ animations: {
619
+ type: 'Animation[]',
620
+ backref: 'slide',
621
+ description: 'Animations on this slide',
622
+ },
623
+ },
624
+
625
+ actions: [
626
+ 'create',
627
+ 'edit',
628
+ 'delete',
629
+ 'duplicate',
630
+ 'move',
631
+ 'hide',
632
+ 'unhide',
633
+ 'setLayout',
634
+ 'setBackground',
635
+ 'setTransition',
636
+ 'addElement',
637
+ 'removeElement',
638
+ 'reorderElements',
639
+ 'addNotes',
640
+ 'editNotes',
641
+ 'addAnimation',
642
+ 'preview',
643
+ 'present',
644
+ 'export',
645
+ 'generateThumbnail',
646
+ 'createSection',
647
+ ],
648
+
649
+ events: [
650
+ 'created',
651
+ 'edited',
652
+ 'deleted',
653
+ 'duplicated',
654
+ 'moved',
655
+ 'hidden',
656
+ 'unhidden',
657
+ 'layoutSet',
658
+ 'backgroundSet',
659
+ 'transitionSet',
660
+ 'elementAdded',
661
+ 'elementRemoved',
662
+ 'elementsReordered',
663
+ 'notesAdded',
664
+ 'notesEdited',
665
+ 'animationAdded',
666
+ 'presented',
667
+ 'exported',
668
+ 'thumbnailGenerated',
669
+ 'sectionCreated',
670
+ ],
671
+ }
672
+
673
+ // =============================================================================
674
+ // SlideElement
675
+ // =============================================================================
676
+
677
+ /**
678
+ * SlideElement entity
679
+ *
680
+ * Represents a content element on a slide (text, image, shape, chart, etc.).
681
+ */
682
+ export const SlideElement: Noun = {
683
+ singular: 'slide element',
684
+ plural: 'slide elements',
685
+ description: 'A content element on a slide (text, image, shape, chart, video, etc.)',
686
+
687
+ properties: {
688
+ // Identity
689
+ elementId: {
690
+ type: 'string',
691
+ optional: true,
692
+ description: 'Unique element identifier',
693
+ },
694
+ name: {
695
+ type: 'string',
696
+ optional: true,
697
+ description: 'Element name or label',
698
+ },
699
+
700
+ // Type
701
+ type: {
702
+ type: 'string',
703
+ description: 'Element type',
704
+ examples: [
705
+ 'text',
706
+ 'textbox',
707
+ 'image',
708
+ 'shape',
709
+ 'chart',
710
+ 'table',
711
+ 'video',
712
+ 'audio',
713
+ 'embed',
714
+ 'line',
715
+ 'arrow',
716
+ 'group',
717
+ 'smartart',
718
+ ],
719
+ },
720
+ subtype: {
721
+ type: 'string',
722
+ optional: true,
723
+ description: 'Element subtype (shape type, chart type, etc.)',
724
+ },
725
+
726
+ // Position and size
727
+ x: {
728
+ type: 'number',
729
+ description: 'X position in slide coordinates',
730
+ },
731
+ y: {
732
+ type: 'number',
733
+ description: 'Y position in slide coordinates',
734
+ },
735
+ width: {
736
+ type: 'number',
737
+ description: 'Element width',
738
+ },
739
+ height: {
740
+ type: 'number',
741
+ description: 'Element height',
742
+ },
743
+ rotation: {
744
+ type: 'number',
745
+ optional: true,
746
+ description: 'Rotation angle in degrees',
747
+ },
748
+ zIndex: {
749
+ type: 'number',
750
+ optional: true,
751
+ description: 'Z-index for layering',
752
+ },
753
+
754
+ // Content (varies by type)
755
+ content: {
756
+ type: 'string',
757
+ optional: true,
758
+ description: 'Element content (text, URL, etc.)',
759
+ },
760
+ richContent: {
761
+ type: 'json',
762
+ optional: true,
763
+ description: 'Rich formatted content',
764
+ },
765
+
766
+ // Text-specific
767
+ text: {
768
+ type: 'string',
769
+ optional: true,
770
+ description: 'Text content',
771
+ },
772
+ fontFamily: {
773
+ type: 'string',
774
+ optional: true,
775
+ description: 'Font family',
776
+ },
777
+ fontSize: {
778
+ type: 'number',
779
+ optional: true,
780
+ description: 'Font size in points',
781
+ },
782
+ fontWeight: {
783
+ type: 'string',
784
+ optional: true,
785
+ description: 'Font weight: normal, bold',
786
+ examples: ['normal', 'bold'],
787
+ },
788
+ fontStyle: {
789
+ type: 'string',
790
+ optional: true,
791
+ description: 'Font style: normal, italic',
792
+ examples: ['normal', 'italic'],
793
+ },
794
+ textAlign: {
795
+ type: 'string',
796
+ optional: true,
797
+ description: 'Text alignment: left, center, right, justify',
798
+ examples: ['left', 'center', 'right', 'justify'],
799
+ },
800
+ textColor: {
801
+ type: 'string',
802
+ optional: true,
803
+ description: 'Text color (hex)',
804
+ },
805
+ lineHeight: {
806
+ type: 'number',
807
+ optional: true,
808
+ description: 'Line height multiplier',
809
+ },
810
+ bulletStyle: {
811
+ type: 'string',
812
+ optional: true,
813
+ description: 'Bullet list style',
814
+ },
815
+
816
+ // Image-specific
817
+ imageUrl: {
818
+ type: 'url',
819
+ optional: true,
820
+ description: 'Image URL',
821
+ },
822
+ imageSource: {
823
+ type: 'string',
824
+ optional: true,
825
+ description: 'Image source or attribution',
826
+ },
827
+ imageAlt: {
828
+ type: 'string',
829
+ optional: true,
830
+ description: 'Image alt text',
831
+ },
832
+
833
+ // Video-specific
834
+ videoUrl: {
835
+ type: 'url',
836
+ optional: true,
837
+ description: 'Video URL',
838
+ },
839
+ videoProvider: {
840
+ type: 'string',
841
+ optional: true,
842
+ description: 'Video provider: youtube, vimeo, etc.',
843
+ examples: ['youtube', 'vimeo', 'local'],
844
+ },
845
+ autoplay: {
846
+ type: 'boolean',
847
+ optional: true,
848
+ description: 'Whether video autoplays',
849
+ },
850
+ loop: {
851
+ type: 'boolean',
852
+ optional: true,
853
+ description: 'Whether video loops',
854
+ },
855
+
856
+ // Shape-specific
857
+ shapeType: {
858
+ type: 'string',
859
+ optional: true,
860
+ description: 'Shape type',
861
+ examples: ['rectangle', 'circle', 'triangle', 'star', 'arrow', 'callout'],
862
+ },
863
+ fillColor: {
864
+ type: 'string',
865
+ optional: true,
866
+ description: 'Fill color (hex)',
867
+ },
868
+ strokeColor: {
869
+ type: 'string',
870
+ optional: true,
871
+ description: 'Stroke/border color (hex)',
872
+ },
873
+ strokeWidth: {
874
+ type: 'number',
875
+ optional: true,
876
+ description: 'Stroke width in points',
877
+ },
878
+
879
+ // Chart-specific
880
+ chartType: {
881
+ type: 'string',
882
+ optional: true,
883
+ description: 'Chart type',
884
+ examples: ['line', 'bar', 'pie', 'scatter', 'area'],
885
+ },
886
+ chartData: {
887
+ type: 'json',
888
+ optional: true,
889
+ description: 'Chart data and configuration',
890
+ },
891
+
892
+ // Table-specific
893
+ tableData: {
894
+ type: 'json',
895
+ optional: true,
896
+ description: 'Table data as 2D array',
897
+ },
898
+ tableRows: {
899
+ type: 'number',
900
+ optional: true,
901
+ description: 'Number of table rows',
902
+ },
903
+ tableColumns: {
904
+ type: 'number',
905
+ optional: true,
906
+ description: 'Number of table columns',
907
+ },
908
+
909
+ // Styling
910
+ backgroundColor: {
911
+ type: 'string',
912
+ optional: true,
913
+ description: 'Background color (hex)',
914
+ },
915
+ opacity: {
916
+ type: 'number',
917
+ optional: true,
918
+ description: 'Opacity (0-1)',
919
+ },
920
+ shadow: {
921
+ type: 'json',
922
+ optional: true,
923
+ description: 'Shadow configuration',
924
+ },
925
+ border: {
926
+ type: 'json',
927
+ optional: true,
928
+ description: 'Border configuration',
929
+ },
930
+
931
+ // Interactions
932
+ link: {
933
+ type: 'url',
934
+ optional: true,
935
+ description: 'Hyperlink URL',
936
+ },
937
+ linkType: {
938
+ type: 'string',
939
+ optional: true,
940
+ description: 'Link type: url, slide, file',
941
+ examples: ['url', 'slide', 'file', 'email'],
942
+ },
943
+ linkedSlideIndex: {
944
+ type: 'number',
945
+ optional: true,
946
+ description: 'Linked slide index for navigation',
947
+ },
948
+
949
+ // Animation
950
+ hasAnimation: {
951
+ type: 'boolean',
952
+ optional: true,
953
+ description: 'Whether element has animation',
954
+ },
955
+
956
+ // Grouping
957
+ isGrouped: {
958
+ type: 'boolean',
959
+ optional: true,
960
+ description: 'Whether element is part of a group',
961
+ },
962
+ groupId: {
963
+ type: 'string',
964
+ optional: true,
965
+ description: 'Group identifier',
966
+ },
967
+
968
+ // Visibility
969
+ hidden: {
970
+ type: 'boolean',
971
+ optional: true,
972
+ description: 'Whether element is hidden',
973
+ },
974
+ locked: {
975
+ type: 'boolean',
976
+ optional: true,
977
+ description: 'Whether element is locked from editing',
978
+ },
979
+
980
+ // Metadata
981
+ metadata: {
982
+ type: 'json',
983
+ optional: true,
984
+ description: 'Custom metadata',
985
+ },
986
+ },
987
+
988
+ relationships: {
989
+ slide: {
990
+ type: 'Slide',
991
+ backref: 'elements',
992
+ description: 'Parent slide',
993
+ },
994
+ animations: {
995
+ type: 'Animation[]',
996
+ backref: 'element',
997
+ description: 'Animations applied to this element',
998
+ },
999
+ },
1000
+
1001
+ actions: [
1002
+ 'create',
1003
+ 'edit',
1004
+ 'delete',
1005
+ 'duplicate',
1006
+ 'move',
1007
+ 'resize',
1008
+ 'rotate',
1009
+ 'bringToFront',
1010
+ 'sendToBack',
1011
+ 'bringForward',
1012
+ 'sendBackward',
1013
+ 'align',
1014
+ 'distribute',
1015
+ 'group',
1016
+ 'ungroup',
1017
+ 'lock',
1018
+ 'unlock',
1019
+ 'hide',
1020
+ 'unhide',
1021
+ 'setStyle',
1022
+ 'addLink',
1023
+ 'removeLink',
1024
+ 'addAnimation',
1025
+ 'copy',
1026
+ 'paste',
1027
+ 'cut',
1028
+ ],
1029
+
1030
+ events: [
1031
+ 'created',
1032
+ 'edited',
1033
+ 'deleted',
1034
+ 'duplicated',
1035
+ 'moved',
1036
+ 'resized',
1037
+ 'rotated',
1038
+ 'reordered',
1039
+ 'aligned',
1040
+ 'distributed',
1041
+ 'grouped',
1042
+ 'ungrouped',
1043
+ 'locked',
1044
+ 'unlocked',
1045
+ 'hidden',
1046
+ 'unhidden',
1047
+ 'styled',
1048
+ 'linkAdded',
1049
+ 'linkRemoved',
1050
+ 'animationAdded',
1051
+ 'copied',
1052
+ 'pasted',
1053
+ ],
1054
+ }
1055
+
1056
+ // =============================================================================
1057
+ // SpeakerNotes
1058
+ // =============================================================================
1059
+
1060
+ /**
1061
+ * SpeakerNotes entity
1062
+ *
1063
+ * Represents detailed speaker notes for a slide.
1064
+ */
1065
+ export const SpeakerNotes: Noun = {
1066
+ singular: 'speaker notes',
1067
+ plural: 'speaker notes',
1068
+ description: 'Detailed speaker notes for a presentation slide',
1069
+
1070
+ properties: {
1071
+ // Content
1072
+ text: {
1073
+ type: 'string',
1074
+ description: 'Notes text content',
1075
+ },
1076
+ richText: {
1077
+ type: 'json',
1078
+ optional: true,
1079
+ description: 'Rich formatted notes',
1080
+ },
1081
+
1082
+ // Formatting
1083
+ fontSize: {
1084
+ type: 'number',
1085
+ optional: true,
1086
+ description: 'Font size for display',
1087
+ },
1088
+
1089
+ // Timing
1090
+ estimatedTime: {
1091
+ type: 'number',
1092
+ optional: true,
1093
+ description: 'Estimated time for this slide in seconds',
1094
+ },
1095
+ actualTime: {
1096
+ type: 'number',
1097
+ optional: true,
1098
+ description: 'Actual time spent on slide during presentation',
1099
+ },
1100
+
1101
+ // Cues
1102
+ cuePoints: {
1103
+ type: 'json',
1104
+ optional: true,
1105
+ description: 'Timing cues or reminders',
1106
+ },
1107
+
1108
+ // Structure
1109
+ keyPoints: {
1110
+ type: 'string',
1111
+ array: true,
1112
+ optional: true,
1113
+ description: 'Key points to cover',
1114
+ },
1115
+ questions: {
1116
+ type: 'string',
1117
+ array: true,
1118
+ optional: true,
1119
+ description: 'Questions to ask audience',
1120
+ },
1121
+
1122
+ // Visibility
1123
+ visibleToAudience: {
1124
+ type: 'boolean',
1125
+ optional: true,
1126
+ description: 'Whether notes are visible to audience',
1127
+ },
1128
+
1129
+ // Metadata
1130
+ metadata: {
1131
+ type: 'json',
1132
+ optional: true,
1133
+ description: 'Custom metadata',
1134
+ },
1135
+ },
1136
+
1137
+ relationships: {
1138
+ slide: {
1139
+ type: 'Slide',
1140
+ description: 'Associated slide',
1141
+ },
1142
+ },
1143
+
1144
+ actions: [
1145
+ 'create',
1146
+ 'edit',
1147
+ 'delete',
1148
+ 'clear',
1149
+ 'format',
1150
+ 'addCue',
1151
+ 'removeCue',
1152
+ 'setTiming',
1153
+ 'addKeyPoint',
1154
+ 'addQuestion',
1155
+ 'print',
1156
+ 'export',
1157
+ ],
1158
+
1159
+ events: [
1160
+ 'created',
1161
+ 'edited',
1162
+ 'deleted',
1163
+ 'cleared',
1164
+ 'formatted',
1165
+ 'cueAdded',
1166
+ 'cueRemoved',
1167
+ 'timingSet',
1168
+ 'keyPointAdded',
1169
+ 'questionAdded',
1170
+ 'printed',
1171
+ 'exported',
1172
+ ],
1173
+ }
1174
+
1175
+ // =============================================================================
1176
+ // Animation
1177
+ // =============================================================================
1178
+
1179
+ /**
1180
+ * Animation entity
1181
+ *
1182
+ * Represents an animation effect applied to a slide or element.
1183
+ */
1184
+ export const Animation: Noun = {
1185
+ singular: 'animation',
1186
+ plural: 'animations',
1187
+ description: 'An animation effect applied to a slide or element',
1188
+
1189
+ properties: {
1190
+ // Type
1191
+ type: {
1192
+ type: 'string',
1193
+ description: 'Animation type: entrance, emphasis, exit, motion',
1194
+ examples: ['entrance', 'emphasis', 'exit', 'motion'],
1195
+ },
1196
+ effect: {
1197
+ type: 'string',
1198
+ description: 'Animation effect name',
1199
+ examples: [
1200
+ 'fade',
1201
+ 'fly',
1202
+ 'wipe',
1203
+ 'split',
1204
+ 'shape',
1205
+ 'wheel',
1206
+ 'zoom',
1207
+ 'bounce',
1208
+ 'spin',
1209
+ 'grow',
1210
+ 'shrink',
1211
+ 'pulse',
1212
+ ],
1213
+ },
1214
+ variant: {
1215
+ type: 'string',
1216
+ optional: true,
1217
+ description: 'Effect variant or direction',
1218
+ examples: ['left', 'right', 'up', 'down', 'in', 'out'],
1219
+ },
1220
+
1221
+ // Timing
1222
+ trigger: {
1223
+ type: 'string',
1224
+ description: 'Animation trigger: on-click, with-previous, after-previous, auto',
1225
+ examples: ['on-click', 'with-previous', 'after-previous', 'auto'],
1226
+ },
1227
+ order: {
1228
+ type: 'number',
1229
+ description: 'Animation sequence order',
1230
+ },
1231
+ delay: {
1232
+ type: 'number',
1233
+ optional: true,
1234
+ description: 'Delay before animation starts in milliseconds',
1235
+ },
1236
+ duration: {
1237
+ type: 'number',
1238
+ optional: true,
1239
+ description: 'Animation duration in milliseconds',
1240
+ },
1241
+
1242
+ // Easing
1243
+ easing: {
1244
+ type: 'string',
1245
+ optional: true,
1246
+ description: 'Easing function',
1247
+ examples: ['linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'bounce', 'elastic'],
1248
+ },
1249
+
1250
+ // Motion path (for motion animations)
1251
+ motionPath: {
1252
+ type: 'json',
1253
+ optional: true,
1254
+ description: 'Motion path configuration',
1255
+ },
1256
+
1257
+ // Options
1258
+ reverse: {
1259
+ type: 'boolean',
1260
+ optional: true,
1261
+ description: 'Whether animation plays in reverse',
1262
+ },
1263
+ rewind: {
1264
+ type: 'boolean',
1265
+ optional: true,
1266
+ description: 'Whether element rewinds after animation',
1267
+ },
1268
+ loop: {
1269
+ type: 'boolean',
1270
+ optional: true,
1271
+ description: 'Whether animation loops',
1272
+ },
1273
+ loopCount: {
1274
+ type: 'number',
1275
+ optional: true,
1276
+ description: 'Number of times to loop',
1277
+ },
1278
+
1279
+ // Sound
1280
+ soundEffect: {
1281
+ type: 'url',
1282
+ optional: true,
1283
+ description: 'Sound effect URL',
1284
+ },
1285
+
1286
+ // Metadata
1287
+ metadata: {
1288
+ type: 'json',
1289
+ optional: true,
1290
+ description: 'Custom metadata',
1291
+ },
1292
+ },
1293
+
1294
+ relationships: {
1295
+ slide: {
1296
+ type: 'Slide',
1297
+ backref: 'animations',
1298
+ description: 'Parent slide',
1299
+ },
1300
+ element: {
1301
+ type: 'SlideElement',
1302
+ backref: 'animations',
1303
+ required: false,
1304
+ description: 'Element being animated',
1305
+ },
1306
+ },
1307
+
1308
+ actions: [
1309
+ 'create',
1310
+ 'edit',
1311
+ 'delete',
1312
+ 'duplicate',
1313
+ 'reorder',
1314
+ 'play',
1315
+ 'pause',
1316
+ 'stop',
1317
+ 'reset',
1318
+ 'preview',
1319
+ 'setTiming',
1320
+ 'setEffect',
1321
+ 'setTrigger',
1322
+ ],
1323
+
1324
+ events: [
1325
+ 'created',
1326
+ 'edited',
1327
+ 'deleted',
1328
+ 'duplicated',
1329
+ 'reordered',
1330
+ 'played',
1331
+ 'paused',
1332
+ 'stopped',
1333
+ 'reset',
1334
+ 'timingSet',
1335
+ 'effectSet',
1336
+ 'triggerSet',
1337
+ ],
1338
+ }
1339
+
1340
+ // =============================================================================
1341
+ // Export all entities as a schema
1342
+ // =============================================================================
1343
+
1344
+ /**
1345
+ * All presentation entity types
1346
+ */
1347
+ export const PresentationEntities = {
1348
+ Presentation,
1349
+ Slide,
1350
+ SlideElement,
1351
+ SpeakerNotes,
1352
+ Animation,
1353
+ }
1354
+
1355
+ /**
1356
+ * Entity categories for organization
1357
+ */
1358
+ export const PresentationCategories = {
1359
+ presentations: ['Presentation', 'Slide', 'SlideElement', 'SpeakerNotes', 'Animation'],
1360
+ } as const