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