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,1434 @@
1
+ /**
2
+ * Spreadsheet Entity Types (Nouns)
3
+ *
4
+ * Semantic type definitions for spreadsheets that support
5
+ * Google Sheets, Microsoft Excel/XLSX, and CSV 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
+ // Spreadsheet
18
+ // =============================================================================
19
+
20
+ /**
21
+ * Spreadsheet entity
22
+ *
23
+ * Represents a spreadsheet workbook containing one or more sheets.
24
+ * Supports Google Sheets, Microsoft Excel/XLSX, and CSV formats.
25
+ */
26
+ export const Spreadsheet: Noun = {
27
+ singular: 'spreadsheet',
28
+ plural: 'spreadsheets',
29
+ description: 'A spreadsheet workbook for organizing and analyzing data',
30
+
31
+ properties: {
32
+ // Identity
33
+ title: {
34
+ type: 'string',
35
+ description: 'Spreadsheet 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: 'Spreadsheet description',
46
+ },
47
+
48
+ // Format
49
+ format: {
50
+ type: 'string',
51
+ description: 'Spreadsheet format: xlsx, gsheet, csv, tsv, ods',
52
+ examples: ['xlsx', 'gsheet', 'csv', 'tsv', 'ods'],
53
+ },
54
+ fileSize: {
55
+ type: 'number',
56
+ optional: true,
57
+ description: 'File size in bytes',
58
+ },
59
+
60
+ // Status
61
+ status: {
62
+ type: 'string',
63
+ description: 'Spreadsheet status: draft, active, archived',
64
+ examples: ['draft', 'active', 'archived'],
65
+ },
66
+ visibility: {
67
+ type: 'string',
68
+ description: 'Visibility: private, internal, public',
69
+ examples: ['private', 'internal', 'public'],
70
+ },
71
+
72
+ // Structure
73
+ sheetCount: {
74
+ type: 'number',
75
+ optional: true,
76
+ description: 'Number of sheets in the workbook',
77
+ },
78
+ totalRows: {
79
+ type: 'number',
80
+ optional: true,
81
+ description: 'Total rows across all sheets',
82
+ },
83
+ totalColumns: {
84
+ type: 'number',
85
+ optional: true,
86
+ description: 'Total columns across all sheets',
87
+ },
88
+ totalCells: {
89
+ type: 'number',
90
+ optional: true,
91
+ description: 'Total cells across all sheets',
92
+ },
93
+
94
+ // Settings
95
+ locale: {
96
+ type: 'string',
97
+ optional: true,
98
+ description: 'Locale for number and date formatting',
99
+ },
100
+ timezone: {
101
+ type: 'string',
102
+ optional: true,
103
+ description: 'Timezone for date/time values',
104
+ },
105
+ defaultDateFormat: {
106
+ type: 'string',
107
+ optional: true,
108
+ description: 'Default date format string',
109
+ },
110
+ defaultNumberFormat: {
111
+ type: 'string',
112
+ optional: true,
113
+ description: 'Default number format string',
114
+ },
115
+ currency: {
116
+ type: 'string',
117
+ optional: true,
118
+ description: 'Default currency code',
119
+ },
120
+
121
+ // Recalculation
122
+ autoRecalculate: {
123
+ type: 'boolean',
124
+ optional: true,
125
+ description: 'Whether formulas auto-recalculate',
126
+ },
127
+ iterativeCalculation: {
128
+ type: 'boolean',
129
+ optional: true,
130
+ description: 'Whether iterative calculation is enabled',
131
+ },
132
+ maxIterations: {
133
+ type: 'number',
134
+ optional: true,
135
+ description: 'Maximum calculation iterations',
136
+ },
137
+
138
+ // Collaboration
139
+ allowComments: {
140
+ type: 'boolean',
141
+ optional: true,
142
+ description: 'Whether comments are enabled',
143
+ },
144
+ shareMode: {
145
+ type: 'string',
146
+ optional: true,
147
+ description: 'Sharing mode: view, comment, edit',
148
+ examples: ['view', 'comment', 'edit'],
149
+ },
150
+ allowDownload: {
151
+ type: 'boolean',
152
+ optional: true,
153
+ description: 'Whether download is allowed',
154
+ },
155
+ allowCopy: {
156
+ type: 'boolean',
157
+ optional: true,
158
+ description: 'Whether copying is allowed',
159
+ },
160
+ allowPrint: {
161
+ type: 'boolean',
162
+ optional: true,
163
+ description: 'Whether printing is allowed',
164
+ },
165
+
166
+ // Protection
167
+ protected: {
168
+ type: 'boolean',
169
+ optional: true,
170
+ description: 'Whether spreadsheet is protected',
171
+ },
172
+ password: {
173
+ type: 'string',
174
+ optional: true,
175
+ description: 'Protection password',
176
+ },
177
+
178
+ // Templates
179
+ isTemplate: {
180
+ type: 'boolean',
181
+ optional: true,
182
+ description: 'Whether this is a template',
183
+ },
184
+ templateId: {
185
+ type: 'string',
186
+ optional: true,
187
+ description: 'ID of template this was created from',
188
+ },
189
+ templateCategory: {
190
+ type: 'string',
191
+ optional: true,
192
+ description: 'Template category',
193
+ examples: ['budget', 'schedule', 'tracker', 'analysis', 'report'],
194
+ },
195
+
196
+ // Integration
197
+ externalId: {
198
+ type: 'string',
199
+ optional: true,
200
+ description: 'External system ID (Google Sheets ID, OneDrive ID, etc.)',
201
+ },
202
+ externalUrl: {
203
+ type: 'url',
204
+ optional: true,
205
+ description: 'URL in external system',
206
+ },
207
+ syncEnabled: {
208
+ type: 'boolean',
209
+ optional: true,
210
+ description: 'Whether sync is enabled',
211
+ },
212
+ lastSyncedAt: {
213
+ type: 'datetime',
214
+ optional: true,
215
+ description: 'Last sync timestamp',
216
+ },
217
+ dataSource: {
218
+ type: 'json',
219
+ optional: true,
220
+ description: 'External data source configuration',
221
+ },
222
+
223
+ // Metadata
224
+ tags: {
225
+ type: 'string',
226
+ array: true,
227
+ optional: true,
228
+ description: 'Tags for categorization',
229
+ },
230
+ category: {
231
+ type: 'string',
232
+ optional: true,
233
+ description: 'Spreadsheet category',
234
+ },
235
+ folder: {
236
+ type: 'string',
237
+ optional: true,
238
+ description: 'Folder or workspace path',
239
+ },
240
+ customMetadata: {
241
+ type: 'json',
242
+ optional: true,
243
+ description: 'Custom metadata fields',
244
+ },
245
+
246
+ // Analytics
247
+ viewCount: {
248
+ type: 'number',
249
+ optional: true,
250
+ description: 'Number of views',
251
+ },
252
+ editCount: {
253
+ type: 'number',
254
+ optional: true,
255
+ description: 'Number of edits',
256
+ },
257
+ downloadCount: {
258
+ type: 'number',
259
+ optional: true,
260
+ description: 'Number of downloads',
261
+ },
262
+ lastViewedAt: {
263
+ type: 'datetime',
264
+ optional: true,
265
+ description: 'Last view timestamp',
266
+ },
267
+ lastEditedAt: {
268
+ type: 'datetime',
269
+ optional: true,
270
+ description: 'Last edit timestamp',
271
+ },
272
+ },
273
+
274
+ relationships: {
275
+ owner: {
276
+ type: 'Contact',
277
+ description: 'Spreadsheet owner',
278
+ },
279
+ creator: {
280
+ type: 'Contact',
281
+ description: 'User who created the spreadsheet',
282
+ },
283
+ lastEditor: {
284
+ type: 'Contact',
285
+ required: false,
286
+ description: 'User who last edited',
287
+ },
288
+ sheets: {
289
+ type: 'Sheet[]',
290
+ backref: 'spreadsheet',
291
+ description: 'Sheets in this workbook',
292
+ },
293
+ charts: {
294
+ type: 'Chart[]',
295
+ backref: 'spreadsheet',
296
+ description: 'Charts in the spreadsheet',
297
+ },
298
+ pivotTables: {
299
+ type: 'PivotTable[]',
300
+ backref: 'spreadsheet',
301
+ description: 'Pivot tables in the spreadsheet',
302
+ },
303
+ collaborators: {
304
+ type: 'Contact[]',
305
+ description: 'Users with access',
306
+ },
307
+ },
308
+
309
+ actions: [
310
+ 'create',
311
+ 'open',
312
+ 'edit',
313
+ 'save',
314
+ 'saveAs',
315
+ 'duplicate',
316
+ 'rename',
317
+ 'delete',
318
+ 'restore',
319
+ 'export',
320
+ 'download',
321
+ 'print',
322
+ 'share',
323
+ 'unshare',
324
+ 'archive',
325
+ 'unarchive',
326
+ 'move',
327
+ 'copy',
328
+ 'protect',
329
+ 'unprotect',
330
+ 'addSheet',
331
+ 'removeSheet',
332
+ 'reorderSheets',
333
+ 'makeTemplate',
334
+ 'createFromTemplate',
335
+ 'importData',
336
+ 'exportData',
337
+ 'refreshData',
338
+ 'calculate',
339
+ 'sort',
340
+ 'filter',
341
+ 'search',
342
+ 'findAndReplace',
343
+ 'insertChart',
344
+ 'insertPivotTable',
345
+ 'merge',
346
+ 'split',
347
+ 'freeze',
348
+ 'unfreeze',
349
+ 'hideSheet',
350
+ 'unhideSheet',
351
+ ],
352
+
353
+ events: [
354
+ 'created',
355
+ 'opened',
356
+ 'edited',
357
+ 'saved',
358
+ 'renamed',
359
+ 'deleted',
360
+ 'restored',
361
+ 'exported',
362
+ 'downloaded',
363
+ 'printed',
364
+ 'shared',
365
+ 'unshared',
366
+ 'archived',
367
+ 'unarchived',
368
+ 'moved',
369
+ 'copied',
370
+ 'protected',
371
+ 'unprotected',
372
+ 'sheetAdded',
373
+ 'sheetRemoved',
374
+ 'sheetReordered',
375
+ 'dataImported',
376
+ 'dataExported',
377
+ 'dataRefreshed',
378
+ 'calculated',
379
+ 'chartInserted',
380
+ 'pivotTableInserted',
381
+ 'collaboratorAdded',
382
+ 'collaboratorRemoved',
383
+ 'permissionChanged',
384
+ 'synced',
385
+ 'viewed',
386
+ ],
387
+ }
388
+
389
+ // =============================================================================
390
+ // Sheet
391
+ // =============================================================================
392
+
393
+ /**
394
+ * Sheet entity
395
+ *
396
+ * Represents a single worksheet within a spreadsheet workbook.
397
+ */
398
+ export const Sheet: Noun = {
399
+ singular: 'sheet',
400
+ plural: 'sheets',
401
+ description: 'A worksheet within a spreadsheet workbook',
402
+
403
+ properties: {
404
+ // Identity
405
+ name: {
406
+ type: 'string',
407
+ description: 'Sheet name',
408
+ },
409
+ index: {
410
+ type: 'number',
411
+ description: 'Sheet position in workbook (0-based)',
412
+ },
413
+ sheetId: {
414
+ type: 'string',
415
+ optional: true,
416
+ description: 'Internal sheet identifier',
417
+ },
418
+
419
+ // Dimensions
420
+ rowCount: {
421
+ type: 'number',
422
+ description: 'Number of rows',
423
+ },
424
+ columnCount: {
425
+ type: 'number',
426
+ description: 'Number of columns',
427
+ },
428
+ frozenRows: {
429
+ type: 'number',
430
+ optional: true,
431
+ description: 'Number of frozen rows',
432
+ },
433
+ frozenColumns: {
434
+ type: 'number',
435
+ optional: true,
436
+ description: 'Number of frozen columns',
437
+ },
438
+
439
+ // Visibility
440
+ hidden: {
441
+ type: 'boolean',
442
+ optional: true,
443
+ description: 'Whether sheet is hidden',
444
+ },
445
+ veryHidden: {
446
+ type: 'boolean',
447
+ optional: true,
448
+ description: 'Whether sheet is very hidden (Excel)',
449
+ },
450
+
451
+ // Color and styling
452
+ tabColor: {
453
+ type: 'string',
454
+ optional: true,
455
+ description: 'Sheet tab color (hex)',
456
+ },
457
+ gridLinesVisible: {
458
+ type: 'boolean',
459
+ optional: true,
460
+ description: 'Whether grid lines are visible',
461
+ },
462
+ gridLinesColor: {
463
+ type: 'string',
464
+ optional: true,
465
+ description: 'Grid line color',
466
+ },
467
+
468
+ // Protection
469
+ protected: {
470
+ type: 'boolean',
471
+ optional: true,
472
+ description: 'Whether sheet is protected',
473
+ },
474
+ protectedRanges: {
475
+ type: 'json',
476
+ optional: true,
477
+ description: 'Protected cell ranges',
478
+ },
479
+
480
+ // Data
481
+ data: {
482
+ type: 'json',
483
+ optional: true,
484
+ description: 'Sheet data as 2D array or object',
485
+ },
486
+ hasHeaders: {
487
+ type: 'boolean',
488
+ optional: true,
489
+ description: 'Whether first row contains headers',
490
+ },
491
+ dataRange: {
492
+ type: 'string',
493
+ optional: true,
494
+ description: 'Range containing data (e.g., A1:Z100)',
495
+ },
496
+
497
+ // Filters and sorts
498
+ hasFilters: {
499
+ type: 'boolean',
500
+ optional: true,
501
+ description: 'Whether filters are applied',
502
+ },
503
+ filterRange: {
504
+ type: 'string',
505
+ optional: true,
506
+ description: 'Range with filters applied',
507
+ },
508
+ sortSpecs: {
509
+ type: 'json',
510
+ optional: true,
511
+ description: 'Active sort specifications',
512
+ },
513
+
514
+ // Named ranges
515
+ namedRanges: {
516
+ type: 'json',
517
+ optional: true,
518
+ description: 'Named ranges in this sheet',
519
+ },
520
+
521
+ // Conditional formatting
522
+ conditionalFormats: {
523
+ type: 'json',
524
+ optional: true,
525
+ description: 'Conditional formatting rules',
526
+ },
527
+
528
+ // Data validation
529
+ dataValidations: {
530
+ type: 'json',
531
+ optional: true,
532
+ description: 'Data validation rules by range',
533
+ },
534
+
535
+ // Metadata
536
+ notes: {
537
+ type: 'string',
538
+ optional: true,
539
+ description: 'Sheet notes or description',
540
+ },
541
+ metadata: {
542
+ type: 'json',
543
+ optional: true,
544
+ description: 'Custom metadata',
545
+ },
546
+ },
547
+
548
+ relationships: {
549
+ spreadsheet: {
550
+ type: 'Spreadsheet',
551
+ backref: 'sheets',
552
+ description: 'Parent spreadsheet',
553
+ },
554
+ charts: {
555
+ type: 'Chart[]',
556
+ backref: 'sheet',
557
+ description: 'Charts in this sheet',
558
+ },
559
+ pivotTables: {
560
+ type: 'PivotTable[]',
561
+ backref: 'sheet',
562
+ description: 'Pivot tables in this sheet',
563
+ },
564
+ },
565
+
566
+ actions: [
567
+ 'create',
568
+ 'rename',
569
+ 'delete',
570
+ 'duplicate',
571
+ 'move',
572
+ 'hide',
573
+ 'unhide',
574
+ 'protect',
575
+ 'unprotect',
576
+ 'clear',
577
+ 'clearFormats',
578
+ 'clearData',
579
+ 'insertRow',
580
+ 'insertRows',
581
+ 'deleteRow',
582
+ 'deleteRows',
583
+ 'insertColumn',
584
+ 'insertColumns',
585
+ 'deleteColumn',
586
+ 'deleteColumns',
587
+ 'freeze',
588
+ 'unfreeze',
589
+ 'sort',
590
+ 'filter',
591
+ 'clearFilter',
592
+ 'autoResize',
593
+ 'setTabColor',
594
+ 'addChart',
595
+ 'addPivotTable',
596
+ 'addConditionalFormat',
597
+ 'addDataValidation',
598
+ 'addNamedRange',
599
+ 'merge',
600
+ 'unmerge',
601
+ 'format',
602
+ 'copyFormat',
603
+ 'pasteFormat',
604
+ ],
605
+
606
+ events: [
607
+ 'created',
608
+ 'renamed',
609
+ 'deleted',
610
+ 'duplicated',
611
+ 'moved',
612
+ 'hidden',
613
+ 'unhidden',
614
+ 'protected',
615
+ 'unprotected',
616
+ 'cleared',
617
+ 'rowInserted',
618
+ 'rowDeleted',
619
+ 'columnInserted',
620
+ 'columnDeleted',
621
+ 'frozen',
622
+ 'unfrozen',
623
+ 'sorted',
624
+ 'filtered',
625
+ 'filterCleared',
626
+ 'chartAdded',
627
+ 'pivotTableAdded',
628
+ 'conditionalFormatAdded',
629
+ 'dataValidationAdded',
630
+ 'namedRangeAdded',
631
+ 'cellsMerged',
632
+ 'cellsUnmerged',
633
+ 'formatted',
634
+ ],
635
+ }
636
+
637
+ // =============================================================================
638
+ // Cell
639
+ // =============================================================================
640
+
641
+ /**
642
+ * Cell entity
643
+ *
644
+ * Represents a single cell in a spreadsheet.
645
+ */
646
+ export const Cell: Noun = {
647
+ singular: 'cell',
648
+ plural: 'cells',
649
+ description: 'A single cell in a spreadsheet',
650
+
651
+ properties: {
652
+ // Location
653
+ row: {
654
+ type: 'number',
655
+ description: 'Row index (0-based)',
656
+ },
657
+ column: {
658
+ type: 'number',
659
+ description: 'Column index (0-based)',
660
+ },
661
+ address: {
662
+ type: 'string',
663
+ optional: true,
664
+ description: 'Cell address (e.g., A1, B2)',
665
+ },
666
+
667
+ // Value
668
+ value: {
669
+ type: 'string',
670
+ optional: true,
671
+ description: 'Display value',
672
+ },
673
+ rawValue: {
674
+ type: 'string',
675
+ optional: true,
676
+ description: 'Raw value before formatting',
677
+ },
678
+ dataType: {
679
+ type: 'string',
680
+ optional: true,
681
+ description: 'Data type: string, number, boolean, date, formula, error',
682
+ examples: ['string', 'number', 'boolean', 'date', 'formula', 'error', 'null'],
683
+ },
684
+
685
+ // Formula
686
+ formula: {
687
+ type: 'string',
688
+ optional: true,
689
+ description: 'Cell formula',
690
+ },
691
+ hasFormula: {
692
+ type: 'boolean',
693
+ optional: true,
694
+ description: 'Whether cell contains a formula',
695
+ },
696
+
697
+ // Formatting
698
+ format: {
699
+ type: 'json',
700
+ optional: true,
701
+ description: 'Cell format configuration',
702
+ },
703
+ numberFormat: {
704
+ type: 'string',
705
+ optional: true,
706
+ description: 'Number format string',
707
+ },
708
+ fontFamily: {
709
+ type: 'string',
710
+ optional: true,
711
+ description: 'Font family',
712
+ },
713
+ fontSize: {
714
+ type: 'number',
715
+ optional: true,
716
+ description: 'Font size in points',
717
+ },
718
+ fontWeight: {
719
+ type: 'string',
720
+ optional: true,
721
+ description: 'Font weight: normal, bold',
722
+ examples: ['normal', 'bold'],
723
+ },
724
+ fontStyle: {
725
+ type: 'string',
726
+ optional: true,
727
+ description: 'Font style: normal, italic',
728
+ examples: ['normal', 'italic'],
729
+ },
730
+ textColor: {
731
+ type: 'string',
732
+ optional: true,
733
+ description: 'Text color (hex)',
734
+ },
735
+ backgroundColor: {
736
+ type: 'string',
737
+ optional: true,
738
+ description: 'Background color (hex)',
739
+ },
740
+ horizontalAlignment: {
741
+ type: 'string',
742
+ optional: true,
743
+ description: 'Horizontal alignment: left, center, right',
744
+ examples: ['left', 'center', 'right'],
745
+ },
746
+ verticalAlignment: {
747
+ type: 'string',
748
+ optional: true,
749
+ description: 'Vertical alignment: top, middle, bottom',
750
+ examples: ['top', 'middle', 'bottom'],
751
+ },
752
+ wrapText: {
753
+ type: 'boolean',
754
+ optional: true,
755
+ description: 'Whether text wraps',
756
+ },
757
+
758
+ // Borders
759
+ borders: {
760
+ type: 'json',
761
+ optional: true,
762
+ description: 'Border configuration',
763
+ },
764
+
765
+ // Validation
766
+ dataValidation: {
767
+ type: 'json',
768
+ optional: true,
769
+ description: 'Data validation rules',
770
+ },
771
+ isValid: {
772
+ type: 'boolean',
773
+ optional: true,
774
+ description: 'Whether value passes validation',
775
+ },
776
+
777
+ // Merge
778
+ isMerged: {
779
+ type: 'boolean',
780
+ optional: true,
781
+ description: 'Whether cell is part of merged range',
782
+ },
783
+ mergeRange: {
784
+ type: 'string',
785
+ optional: true,
786
+ description: 'Merged cell range',
787
+ },
788
+
789
+ // Notes and comments
790
+ note: {
791
+ type: 'string',
792
+ optional: true,
793
+ description: 'Cell note',
794
+ },
795
+ hasComment: {
796
+ type: 'boolean',
797
+ optional: true,
798
+ description: 'Whether cell has a comment',
799
+ },
800
+
801
+ // Links
802
+ hyperlink: {
803
+ type: 'url',
804
+ optional: true,
805
+ description: 'Hyperlink URL',
806
+ },
807
+
808
+ // Protection
809
+ locked: {
810
+ type: 'boolean',
811
+ optional: true,
812
+ description: 'Whether cell is locked',
813
+ },
814
+ },
815
+
816
+ relationships: {
817
+ sheet: {
818
+ type: 'Sheet',
819
+ description: 'Parent sheet',
820
+ },
821
+ },
822
+
823
+ actions: [
824
+ 'setValue',
825
+ 'setFormula',
826
+ 'clear',
827
+ 'clearFormat',
828
+ 'format',
829
+ 'merge',
830
+ 'unmerge',
831
+ 'lock',
832
+ 'unlock',
833
+ 'addNote',
834
+ 'removeNote',
835
+ 'addComment',
836
+ 'addHyperlink',
837
+ 'removeHyperlink',
838
+ 'copy',
839
+ 'cut',
840
+ 'paste',
841
+ 'validate',
842
+ ],
843
+
844
+ events: [
845
+ 'valueChanged',
846
+ 'formulaSet',
847
+ 'cleared',
848
+ 'formatted',
849
+ 'merged',
850
+ 'unmerged',
851
+ 'locked',
852
+ 'unlocked',
853
+ 'noteAdded',
854
+ 'noteRemoved',
855
+ 'commentAdded',
856
+ 'hyperlinkAdded',
857
+ 'hyperlinkRemoved',
858
+ 'copied',
859
+ 'pasted',
860
+ ],
861
+ }
862
+
863
+ // =============================================================================
864
+ // Range
865
+ // =============================================================================
866
+
867
+ /**
868
+ * Range entity
869
+ *
870
+ * Represents a range of cells in a spreadsheet.
871
+ */
872
+ export const Range: Noun = {
873
+ singular: 'range',
874
+ plural: 'ranges',
875
+ description: 'A range of cells in a spreadsheet',
876
+
877
+ properties: {
878
+ // Location
879
+ startRow: {
880
+ type: 'number',
881
+ description: 'Starting row index (0-based)',
882
+ },
883
+ startColumn: {
884
+ type: 'number',
885
+ description: 'Starting column index (0-based)',
886
+ },
887
+ endRow: {
888
+ type: 'number',
889
+ description: 'Ending row index (0-based)',
890
+ },
891
+ endColumn: {
892
+ type: 'number',
893
+ description: 'Ending column index (0-based)',
894
+ },
895
+ address: {
896
+ type: 'string',
897
+ optional: true,
898
+ description: 'Range address (e.g., A1:B10)',
899
+ },
900
+
901
+ // Dimensions
902
+ rowCount: {
903
+ type: 'number',
904
+ optional: true,
905
+ description: 'Number of rows in range',
906
+ },
907
+ columnCount: {
908
+ type: 'number',
909
+ optional: true,
910
+ description: 'Number of columns in range',
911
+ },
912
+ cellCount: {
913
+ type: 'number',
914
+ optional: true,
915
+ description: 'Total number of cells',
916
+ },
917
+
918
+ // Data
919
+ values: {
920
+ type: 'json',
921
+ optional: true,
922
+ description: 'Cell values as 2D array',
923
+ },
924
+ formulas: {
925
+ type: 'json',
926
+ optional: true,
927
+ description: 'Cell formulas as 2D array',
928
+ },
929
+
930
+ // Named range
931
+ name: {
932
+ type: 'string',
933
+ optional: true,
934
+ description: 'Named range identifier',
935
+ },
936
+ isNamed: {
937
+ type: 'boolean',
938
+ optional: true,
939
+ description: 'Whether this is a named range',
940
+ },
941
+
942
+ // Format
943
+ format: {
944
+ type: 'json',
945
+ optional: true,
946
+ description: 'Range format configuration',
947
+ },
948
+
949
+ // Protection
950
+ protected: {
951
+ type: 'boolean',
952
+ optional: true,
953
+ description: 'Whether range is protected',
954
+ },
955
+ },
956
+
957
+ relationships: {
958
+ sheet: {
959
+ type: 'Sheet',
960
+ description: 'Parent sheet',
961
+ },
962
+ },
963
+
964
+ actions: [
965
+ 'select',
966
+ 'setValue',
967
+ 'setValues',
968
+ 'setFormula',
969
+ 'setFormulas',
970
+ 'clear',
971
+ 'clearFormat',
972
+ 'clearData',
973
+ 'format',
974
+ 'copy',
975
+ 'cut',
976
+ 'paste',
977
+ 'merge',
978
+ 'unmerge',
979
+ 'sort',
980
+ 'filter',
981
+ 'protect',
982
+ 'unprotect',
983
+ 'autoFill',
984
+ 'insertRows',
985
+ 'insertColumns',
986
+ 'deleteRows',
987
+ 'deleteColumns',
988
+ 'name',
989
+ 'unname',
990
+ ],
991
+
992
+ events: [
993
+ 'selected',
994
+ 'valuesChanged',
995
+ 'formulasSet',
996
+ 'cleared',
997
+ 'formatted',
998
+ 'copied',
999
+ 'pasted',
1000
+ 'merged',
1001
+ 'unmerged',
1002
+ 'sorted',
1003
+ 'filtered',
1004
+ 'protected',
1005
+ 'unprotected',
1006
+ 'autoFilled',
1007
+ 'rowsInserted',
1008
+ 'columnsInserted',
1009
+ 'rowsDeleted',
1010
+ 'columnsDeleted',
1011
+ 'named',
1012
+ 'unnamed',
1013
+ ],
1014
+ }
1015
+
1016
+ // =============================================================================
1017
+ // Chart
1018
+ // =============================================================================
1019
+
1020
+ /**
1021
+ * Chart entity
1022
+ *
1023
+ * Represents a chart or graph in a spreadsheet.
1024
+ */
1025
+ export const Chart: Noun = {
1026
+ singular: 'chart',
1027
+ plural: 'charts',
1028
+ description: 'A chart or graph visualizing spreadsheet data',
1029
+
1030
+ properties: {
1031
+ // Identity
1032
+ title: {
1033
+ type: 'string',
1034
+ description: 'Chart title',
1035
+ },
1036
+ subtitle: {
1037
+ type: 'string',
1038
+ optional: true,
1039
+ description: 'Chart subtitle',
1040
+ },
1041
+
1042
+ // Type
1043
+ type: {
1044
+ type: 'string',
1045
+ description: 'Chart type',
1046
+ examples: [
1047
+ 'line',
1048
+ 'bar',
1049
+ 'column',
1050
+ 'pie',
1051
+ 'scatter',
1052
+ 'area',
1053
+ 'combo',
1054
+ 'histogram',
1055
+ 'waterfall',
1056
+ 'candlestick',
1057
+ 'treemap',
1058
+ 'gauge',
1059
+ 'radar',
1060
+ ],
1061
+ },
1062
+ subtype: {
1063
+ type: 'string',
1064
+ optional: true,
1065
+ description: 'Chart subtype variant',
1066
+ },
1067
+
1068
+ // Data source
1069
+ dataRange: {
1070
+ type: 'string',
1071
+ description: 'Source data range',
1072
+ },
1073
+ hasHeaders: {
1074
+ type: 'boolean',
1075
+ optional: true,
1076
+ description: 'Whether data includes headers',
1077
+ },
1078
+ series: {
1079
+ type: 'json',
1080
+ optional: true,
1081
+ description: 'Data series configuration',
1082
+ },
1083
+
1084
+ // Position and size
1085
+ position: {
1086
+ type: 'json',
1087
+ optional: true,
1088
+ description: 'Chart position on sheet',
1089
+ },
1090
+ width: {
1091
+ type: 'number',
1092
+ optional: true,
1093
+ description: 'Chart width in pixels',
1094
+ },
1095
+ height: {
1096
+ type: 'number',
1097
+ optional: true,
1098
+ description: 'Chart height in pixels',
1099
+ },
1100
+
1101
+ // Axes
1102
+ xAxis: {
1103
+ type: 'json',
1104
+ optional: true,
1105
+ description: 'X-axis configuration',
1106
+ },
1107
+ yAxis: {
1108
+ type: 'json',
1109
+ optional: true,
1110
+ description: 'Y-axis configuration',
1111
+ },
1112
+ secondaryAxis: {
1113
+ type: 'json',
1114
+ optional: true,
1115
+ description: 'Secondary axis configuration',
1116
+ },
1117
+
1118
+ // Legend
1119
+ showLegend: {
1120
+ type: 'boolean',
1121
+ optional: true,
1122
+ description: 'Whether to show legend',
1123
+ },
1124
+ legendPosition: {
1125
+ type: 'string',
1126
+ optional: true,
1127
+ description: 'Legend position: top, bottom, left, right',
1128
+ examples: ['top', 'bottom', 'left', 'right'],
1129
+ },
1130
+
1131
+ // Styling
1132
+ theme: {
1133
+ type: 'string',
1134
+ optional: true,
1135
+ description: 'Chart theme',
1136
+ },
1137
+ colors: {
1138
+ type: 'string',
1139
+ array: true,
1140
+ optional: true,
1141
+ description: 'Custom colors for series',
1142
+ },
1143
+ backgroundColor: {
1144
+ type: 'string',
1145
+ optional: true,
1146
+ description: 'Background color',
1147
+ },
1148
+
1149
+ // Options
1150
+ showDataLabels: {
1151
+ type: 'boolean',
1152
+ optional: true,
1153
+ description: 'Whether to show data labels',
1154
+ },
1155
+ showGridLines: {
1156
+ type: 'boolean',
1157
+ optional: true,
1158
+ description: 'Whether to show grid lines',
1159
+ },
1160
+ stacked: {
1161
+ type: 'boolean',
1162
+ optional: true,
1163
+ description: 'Whether chart is stacked',
1164
+ },
1165
+ smooth: {
1166
+ type: 'boolean',
1167
+ optional: true,
1168
+ description: 'Whether to smooth line charts',
1169
+ },
1170
+
1171
+ // Interaction
1172
+ interactive: {
1173
+ type: 'boolean',
1174
+ optional: true,
1175
+ description: 'Whether chart is interactive',
1176
+ },
1177
+ allowFiltering: {
1178
+ type: 'boolean',
1179
+ optional: true,
1180
+ description: 'Whether filtering is allowed',
1181
+ },
1182
+
1183
+ // Metadata
1184
+ description: {
1185
+ type: 'string',
1186
+ optional: true,
1187
+ description: 'Chart description',
1188
+ },
1189
+ },
1190
+
1191
+ relationships: {
1192
+ spreadsheet: {
1193
+ type: 'Spreadsheet',
1194
+ backref: 'charts',
1195
+ description: 'Parent spreadsheet',
1196
+ },
1197
+ sheet: {
1198
+ type: 'Sheet',
1199
+ backref: 'charts',
1200
+ description: 'Sheet containing the chart',
1201
+ },
1202
+ },
1203
+
1204
+ actions: [
1205
+ 'create',
1206
+ 'edit',
1207
+ 'delete',
1208
+ 'duplicate',
1209
+ 'move',
1210
+ 'resize',
1211
+ 'refresh',
1212
+ 'changeType',
1213
+ 'updateData',
1214
+ 'export',
1215
+ 'copyImage',
1216
+ 'setTitle',
1217
+ 'setTheme',
1218
+ 'showLegend',
1219
+ 'hideLegend',
1220
+ 'addSeries',
1221
+ 'removeSeries',
1222
+ ],
1223
+
1224
+ events: [
1225
+ 'created',
1226
+ 'edited',
1227
+ 'deleted',
1228
+ 'duplicated',
1229
+ 'moved',
1230
+ 'resized',
1231
+ 'refreshed',
1232
+ 'typeChanged',
1233
+ 'dataUpdated',
1234
+ 'exported',
1235
+ 'titleSet',
1236
+ 'themeSet',
1237
+ 'seriesAdded',
1238
+ 'seriesRemoved',
1239
+ ],
1240
+ }
1241
+
1242
+ // =============================================================================
1243
+ // PivotTable
1244
+ // =============================================================================
1245
+
1246
+ /**
1247
+ * PivotTable entity
1248
+ *
1249
+ * Represents a pivot table for data analysis and summarization.
1250
+ */
1251
+ export const PivotTable: Noun = {
1252
+ singular: 'pivot table',
1253
+ plural: 'pivot tables',
1254
+ description: 'A pivot table for analyzing and summarizing data',
1255
+
1256
+ properties: {
1257
+ // Identity
1258
+ name: {
1259
+ type: 'string',
1260
+ description: 'Pivot table name',
1261
+ },
1262
+
1263
+ // Source
1264
+ sourceRange: {
1265
+ type: 'string',
1266
+ description: 'Source data range',
1267
+ },
1268
+ targetRange: {
1269
+ type: 'string',
1270
+ optional: true,
1271
+ description: 'Target range for pivot table output',
1272
+ },
1273
+
1274
+ // Configuration
1275
+ rows: {
1276
+ type: 'json',
1277
+ description: 'Row field configuration',
1278
+ },
1279
+ columns: {
1280
+ type: 'json',
1281
+ optional: true,
1282
+ description: 'Column field configuration',
1283
+ },
1284
+ values: {
1285
+ type: 'json',
1286
+ description: 'Value field configuration with aggregations',
1287
+ },
1288
+ filters: {
1289
+ type: 'json',
1290
+ optional: true,
1291
+ description: 'Filter field configuration',
1292
+ },
1293
+
1294
+ // Aggregation
1295
+ aggregationFunctions: {
1296
+ type: 'json',
1297
+ optional: true,
1298
+ description: 'Aggregation functions by field',
1299
+ },
1300
+
1301
+ // Sorting
1302
+ sortBy: {
1303
+ type: 'string',
1304
+ optional: true,
1305
+ description: 'Field to sort by',
1306
+ },
1307
+ sortOrder: {
1308
+ type: 'string',
1309
+ optional: true,
1310
+ description: 'Sort order: asc, desc',
1311
+ examples: ['asc', 'desc'],
1312
+ },
1313
+
1314
+ // Filtering
1315
+ activeFilters: {
1316
+ type: 'json',
1317
+ optional: true,
1318
+ description: 'Active filter values',
1319
+ },
1320
+
1321
+ // Display
1322
+ showGrandTotals: {
1323
+ type: 'boolean',
1324
+ optional: true,
1325
+ description: 'Whether to show grand totals',
1326
+ },
1327
+ showSubtotals: {
1328
+ type: 'boolean',
1329
+ optional: true,
1330
+ description: 'Whether to show subtotals',
1331
+ },
1332
+ compactLayout: {
1333
+ type: 'boolean',
1334
+ optional: true,
1335
+ description: 'Whether to use compact layout',
1336
+ },
1337
+
1338
+ // Refresh
1339
+ autoRefresh: {
1340
+ type: 'boolean',
1341
+ optional: true,
1342
+ description: 'Whether to auto-refresh on data change',
1343
+ },
1344
+ lastRefreshedAt: {
1345
+ type: 'datetime',
1346
+ optional: true,
1347
+ description: 'Last refresh timestamp',
1348
+ },
1349
+
1350
+ // Calculated fields
1351
+ calculatedFields: {
1352
+ type: 'json',
1353
+ optional: true,
1354
+ description: 'Custom calculated field definitions',
1355
+ },
1356
+ },
1357
+
1358
+ relationships: {
1359
+ spreadsheet: {
1360
+ type: 'Spreadsheet',
1361
+ backref: 'pivotTables',
1362
+ description: 'Parent spreadsheet',
1363
+ },
1364
+ sheet: {
1365
+ type: 'Sheet',
1366
+ backref: 'pivotTables',
1367
+ description: 'Sheet containing the pivot table',
1368
+ },
1369
+ },
1370
+
1371
+ actions: [
1372
+ 'create',
1373
+ 'edit',
1374
+ 'delete',
1375
+ 'refresh',
1376
+ 'addField',
1377
+ 'removeField',
1378
+ 'moveField',
1379
+ 'setAggregation',
1380
+ 'filter',
1381
+ 'clearFilter',
1382
+ 'sort',
1383
+ 'expand',
1384
+ 'collapse',
1385
+ 'expandAll',
1386
+ 'collapseAll',
1387
+ 'addCalculatedField',
1388
+ 'removeCalculatedField',
1389
+ 'showFieldList',
1390
+ 'export',
1391
+ ],
1392
+
1393
+ events: [
1394
+ 'created',
1395
+ 'edited',
1396
+ 'deleted',
1397
+ 'refreshed',
1398
+ 'fieldAdded',
1399
+ 'fieldRemoved',
1400
+ 'fieldMoved',
1401
+ 'aggregationSet',
1402
+ 'filtered',
1403
+ 'filterCleared',
1404
+ 'sorted',
1405
+ 'expanded',
1406
+ 'collapsed',
1407
+ 'calculatedFieldAdded',
1408
+ 'calculatedFieldRemoved',
1409
+ 'exported',
1410
+ ],
1411
+ }
1412
+
1413
+ // =============================================================================
1414
+ // Export all entities as a schema
1415
+ // =============================================================================
1416
+
1417
+ /**
1418
+ * All spreadsheet entity types
1419
+ */
1420
+ export const SpreadsheetEntities = {
1421
+ Spreadsheet,
1422
+ Sheet,
1423
+ Cell,
1424
+ Range,
1425
+ Chart,
1426
+ PivotTable,
1427
+ }
1428
+
1429
+ /**
1430
+ * Entity categories for organization
1431
+ */
1432
+ export const SpreadsheetCategories = {
1433
+ spreadsheets: ['Spreadsheet', 'Sheet', 'Cell', 'Range', 'Chart', 'PivotTable'],
1434
+ } as const