digital-tools 2.1.1 → 2.3.0

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 (293) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +2 -0
  3. package/dist/client.d.ts +109 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +69 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/define.d.ts +2 -2
  8. package/dist/define.d.ts.map +1 -1
  9. package/dist/define.js +22 -20
  10. package/dist/define.js.map +1 -1
  11. package/dist/function-ref.d.ts +229 -0
  12. package/dist/function-ref.d.ts.map +1 -0
  13. package/dist/function-ref.js +28 -0
  14. package/dist/function-ref.js.map +1 -0
  15. package/dist/function-sugar.d.ts +57 -0
  16. package/dist/function-sugar.d.ts.map +1 -0
  17. package/dist/function-sugar.js +79 -0
  18. package/dist/function-sugar.js.map +1 -0
  19. package/dist/index.d.ts +10 -3
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +24 -4
  22. package/dist/index.js.map +1 -1
  23. package/dist/providers/analytics/mixpanel.d.ts.map +1 -1
  24. package/dist/providers/analytics/mixpanel.js +21 -18
  25. package/dist/providers/analytics/mixpanel.js.map +1 -1
  26. package/dist/providers/calendar/cal-com.d.ts.map +1 -1
  27. package/dist/providers/calendar/cal-com.js +10 -10
  28. package/dist/providers/calendar/cal-com.js.map +1 -1
  29. package/dist/providers/calendar/google-calendar.d.ts.map +1 -1
  30. package/dist/providers/calendar/google-calendar.js +4 -4
  31. package/dist/providers/calendar/google-calendar.js.map +1 -1
  32. package/dist/providers/crm/hubspot.d.ts.map +1 -1
  33. package/dist/providers/crm/hubspot.js +107 -85
  34. package/dist/providers/crm/hubspot.js.map +1 -1
  35. package/dist/providers/development/github.d.ts.map +1 -1
  36. package/dist/providers/development/github.js +40 -43
  37. package/dist/providers/development/github.js.map +1 -1
  38. package/dist/providers/ecommerce/shopify.d.ts.map +1 -1
  39. package/dist/providers/ecommerce/shopify.js +79 -62
  40. package/dist/providers/ecommerce/shopify.js.map +1 -1
  41. package/dist/providers/email/resend.d.ts.map +1 -1
  42. package/dist/providers/email/resend.js +20 -16
  43. package/dist/providers/email/resend.js.map +1 -1
  44. package/dist/providers/email/sendgrid.d.ts.map +1 -1
  45. package/dist/providers/email/sendgrid.js +12 -9
  46. package/dist/providers/email/sendgrid.js.map +1 -1
  47. package/dist/providers/finance/stripe.d.ts.map +1 -1
  48. package/dist/providers/finance/stripe.js +44 -42
  49. package/dist/providers/finance/stripe.js.map +1 -1
  50. package/dist/providers/forms/typeform.d.ts.map +1 -1
  51. package/dist/providers/forms/typeform.js +68 -58
  52. package/dist/providers/forms/typeform.js.map +1 -1
  53. package/dist/providers/knowledge/notion.d.ts.map +1 -1
  54. package/dist/providers/knowledge/notion.js +75 -41
  55. package/dist/providers/knowledge/notion.js.map +1 -1
  56. package/dist/providers/marketing/mailchimp.d.ts.map +1 -1
  57. package/dist/providers/marketing/mailchimp.js +74 -61
  58. package/dist/providers/marketing/mailchimp.js.map +1 -1
  59. package/dist/providers/media/cloudinary.d.ts.map +1 -1
  60. package/dist/providers/media/cloudinary.js +30 -28
  61. package/dist/providers/media/cloudinary.js.map +1 -1
  62. package/dist/providers/messaging/slack.d.ts.map +1 -1
  63. package/dist/providers/messaging/slack.js +75 -58
  64. package/dist/providers/messaging/slack.js.map +1 -1
  65. package/dist/providers/messaging/twilio-sms.d.ts.map +1 -1
  66. package/dist/providers/messaging/twilio-sms.js +33 -15
  67. package/dist/providers/messaging/twilio-sms.js.map +1 -1
  68. package/dist/providers/project-management/linear.d.ts.map +1 -1
  69. package/dist/providers/project-management/linear.js +31 -27
  70. package/dist/providers/project-management/linear.js.map +1 -1
  71. package/dist/providers/spreadsheet/google-sheets.d.ts.map +1 -1
  72. package/dist/providers/spreadsheet/google-sheets.js +21 -18
  73. package/dist/providers/spreadsheet/google-sheets.js.map +1 -1
  74. package/dist/providers/spreadsheet/xlsx.d.ts.map +1 -1
  75. package/dist/providers/spreadsheet/xlsx.js +4 -4
  76. package/dist/providers/spreadsheet/xlsx.js.map +1 -1
  77. package/dist/providers/storage/index.js +1 -0
  78. package/dist/providers/storage/index.js.map +1 -1
  79. package/dist/providers/storage/s3.d.ts.map +1 -1
  80. package/dist/providers/storage/s3.js +36 -27
  81. package/dist/providers/storage/s3.js.map +1 -1
  82. package/dist/providers/support/zendesk.d.ts.map +1 -1
  83. package/dist/providers/support/zendesk.js +24 -25
  84. package/dist/providers/support/zendesk.js.map +1 -1
  85. package/dist/providers/tasks/todoist.d.ts.map +1 -1
  86. package/dist/providers/tasks/todoist.js +18 -18
  87. package/dist/providers/tasks/todoist.js.map +1 -1
  88. package/dist/providers/video-conferencing/google-meet.d.ts.map +1 -1
  89. package/dist/providers/video-conferencing/google-meet.js +11 -11
  90. package/dist/providers/video-conferencing/google-meet.js.map +1 -1
  91. package/dist/providers/video-conferencing/jitsi.js +14 -14
  92. package/dist/providers/video-conferencing/jitsi.js.map +1 -1
  93. package/dist/providers/video-conferencing/teams.d.ts.map +1 -1
  94. package/dist/providers/video-conferencing/teams.js +9 -7
  95. package/dist/providers/video-conferencing/teams.js.map +1 -1
  96. package/dist/providers/video-conferencing/zoom.d.ts.map +1 -1
  97. package/dist/providers/video-conferencing/zoom.js +26 -24
  98. package/dist/providers/video-conferencing/zoom.js.map +1 -1
  99. package/dist/tools/data.d.ts.map +1 -1
  100. package/dist/tools/data.js +5 -12
  101. package/dist/tools/data.js.map +1 -1
  102. package/dist/tools/index.d.ts +1 -0
  103. package/dist/tools/index.d.ts.map +1 -1
  104. package/dist/tools/index.js +1 -0
  105. package/dist/tools/index.js.map +1 -1
  106. package/dist/tools/system.d.ts +289 -0
  107. package/dist/tools/system.d.ts.map +1 -0
  108. package/dist/tools/system.js +752 -0
  109. package/dist/tools/system.js.map +1 -0
  110. package/dist/tools/web.d.ts.map +1 -1
  111. package/dist/tools/web.js +22 -10
  112. package/dist/tools/web.js.map +1 -1
  113. package/dist/track-record.d.ts +101 -0
  114. package/dist/track-record.d.ts.map +1 -0
  115. package/dist/track-record.js +17 -0
  116. package/dist/track-record.js.map +1 -0
  117. package/dist/types.d.ts +210 -9
  118. package/dist/types.d.ts.map +1 -1
  119. package/dist/verb-registration.d.ts +122 -0
  120. package/dist/verb-registration.d.ts.map +1 -0
  121. package/dist/verb-registration.js +176 -0
  122. package/dist/verb-registration.js.map +1 -0
  123. package/dist/worker.d.ts +93 -0
  124. package/dist/worker.d.ts.map +1 -0
  125. package/dist/worker.js +315 -0
  126. package/dist/worker.js.map +1 -0
  127. package/dist/wrap.d.ts +89 -0
  128. package/dist/wrap.d.ts.map +1 -0
  129. package/dist/wrap.js +225 -0
  130. package/dist/wrap.js.map +1 -0
  131. package/package.json +21 -4
  132. package/src/client.ts +136 -0
  133. package/src/define.ts +31 -37
  134. package/src/function-ref.ts +264 -0
  135. package/src/function-sugar.ts +134 -0
  136. package/src/index.ts +132 -10
  137. package/src/providers/analytics/mixpanel.ts +19 -18
  138. package/src/providers/calendar/cal-com.ts +29 -18
  139. package/src/providers/calendar/google-calendar.ts +20 -14
  140. package/src/providers/crm/hubspot.ts +225 -99
  141. package/src/providers/development/github.ts +206 -135
  142. package/src/providers/ecommerce/shopify.ts +250 -89
  143. package/src/providers/email/resend.ts +101 -28
  144. package/src/providers/email/sendgrid.ts +12 -9
  145. package/src/providers/finance/stripe.ts +128 -49
  146. package/src/providers/forms/typeform.ts +74 -58
  147. package/src/providers/knowledge/notion.ts +340 -88
  148. package/src/providers/marketing/mailchimp.ts +86 -70
  149. package/src/providers/media/cloudinary.ts +99 -41
  150. package/src/providers/messaging/slack.ts +283 -85
  151. package/src/providers/messaging/twilio-sms.ts +35 -15
  152. package/src/providers/project-management/linear.ts +143 -55
  153. package/src/providers/spreadsheet/google-sheets.ts +222 -56
  154. package/src/providers/spreadsheet/xlsx.ts +47 -16
  155. package/src/providers/storage/s3.ts +119 -47
  156. package/src/providers/support/zendesk.ts +196 -46
  157. package/src/providers/tasks/todoist.ts +20 -26
  158. package/src/providers/video-conferencing/google-meet.ts +17 -20
  159. package/src/providers/video-conferencing/jitsi.ts +14 -14
  160. package/src/providers/video-conferencing/teams.ts +14 -13
  161. package/src/providers/video-conferencing/zoom.ts +54 -49
  162. package/src/tools/data.ts +6 -16
  163. package/src/tools/index.ts +1 -0
  164. package/src/tools/system.ts +887 -0
  165. package/src/tools/web.ts +22 -10
  166. package/src/track-record.ts +106 -0
  167. package/src/types.ts +241 -13
  168. package/src/verb-registration.ts +197 -0
  169. package/src/worker.ts +370 -0
  170. package/src/wrap.ts +260 -0
  171. package/test/client.test.ts +146 -0
  172. package/test/communication-tools-extended.test.ts +734 -0
  173. package/test/data-tools-extended.test.ts +743 -0
  174. package/test/define-extended.test.ts +819 -0
  175. package/test/define.test.ts +150 -41
  176. package/test/entities.test.ts +623 -0
  177. package/test/extended-entities.test.ts +1228 -0
  178. package/test/provider-implementations.test.ts +725 -0
  179. package/test/provider-registry-extended.test.ts +583 -0
  180. package/test/providers/google-sheets.test.ts +851 -0
  181. package/test/providers/helpers.ts +554 -0
  182. package/test/providers/hubspot.test.ts +576 -0
  183. package/test/providers/slack.test.ts +932 -0
  184. package/test/providers/stripe.test.ts +701 -0
  185. package/test/providers.test.ts +578 -0
  186. package/test/system-tools-extended.test.ts +632 -0
  187. package/test/system.test.ts +673 -0
  188. package/test/tools.test.ts +15 -11
  189. package/test/types.test.ts +402 -0
  190. package/test/verb-registration.test.ts +395 -0
  191. package/test/web-tools.test.ts +553 -0
  192. package/test/worker-extended.test.ts +699 -0
  193. package/test/worker.test.ts +576 -0
  194. package/test/wrap.test.ts +366 -0
  195. package/tsconfig.json +3 -13
  196. package/vitest.config.ts +37 -0
  197. package/wrangler.jsonc +9 -0
  198. package/.turbo/turbo-build.log +0 -5
  199. package/dist/providers/voice/vapi.d.ts +0 -27
  200. package/dist/providers/voice/vapi.d.ts.map +0 -1
  201. package/dist/providers/voice/vapi.js +0 -440
  202. package/dist/providers/voice/vapi.js.map +0 -1
  203. package/src/define.js +0 -267
  204. package/src/entities/advertising.js +0 -999
  205. package/src/entities/ai.js +0 -756
  206. package/src/entities/analytics.js +0 -1588
  207. package/src/entities/automation.js +0 -601
  208. package/src/entities/communication.js +0 -1150
  209. package/src/entities/crm.js +0 -1386
  210. package/src/entities/design.js +0 -546
  211. package/src/entities/development.js +0 -2212
  212. package/src/entities/document.js +0 -874
  213. package/src/entities/ecommerce.js +0 -1429
  214. package/src/entities/experiment.js +0 -1039
  215. package/src/entities/finance.js +0 -3478
  216. package/src/entities/forms.js +0 -1892
  217. package/src/entities/hr.js +0 -661
  218. package/src/entities/identity.js +0 -997
  219. package/src/entities/index.js +0 -282
  220. package/src/entities/infrastructure.js +0 -1153
  221. package/src/entities/knowledge.js +0 -1438
  222. package/src/entities/marketing.js +0 -1610
  223. package/src/entities/media.js +0 -1634
  224. package/src/entities/notification.js +0 -1199
  225. package/src/entities/presentation.js +0 -1274
  226. package/src/entities/productivity.js +0 -1317
  227. package/src/entities/project-management.js +0 -1136
  228. package/src/entities/recruiting.js +0 -736
  229. package/src/entities/shipping.js +0 -509
  230. package/src/entities/signature.js +0 -1102
  231. package/src/entities/site.js +0 -222
  232. package/src/entities/spreadsheet.js +0 -1341
  233. package/src/entities/storage.js +0 -1198
  234. package/src/entities/support.js +0 -1166
  235. package/src/entities/video-conferencing.js +0 -1750
  236. package/src/entities/video.js +0 -950
  237. package/src/entities.js +0 -1663
  238. package/src/index.js +0 -74
  239. package/src/providers/analytics/index.js +0 -17
  240. package/src/providers/analytics/mixpanel.js +0 -255
  241. package/src/providers/calendar/cal-com.js +0 -303
  242. package/src/providers/calendar/google-calendar.js +0 -335
  243. package/src/providers/calendar/index.js +0 -20
  244. package/src/providers/crm/hubspot.js +0 -566
  245. package/src/providers/crm/index.js +0 -17
  246. package/src/providers/development/github.js +0 -472
  247. package/src/providers/development/index.js +0 -17
  248. package/src/providers/ecommerce/index.js +0 -17
  249. package/src/providers/ecommerce/shopify.js +0 -378
  250. package/src/providers/email/index.js +0 -20
  251. package/src/providers/email/resend.js +0 -258
  252. package/src/providers/email/sendgrid.js +0 -161
  253. package/src/providers/finance/index.js +0 -17
  254. package/src/providers/finance/stripe.js +0 -549
  255. package/src/providers/forms/index.js +0 -17
  256. package/src/providers/forms/typeform.js +0 -500
  257. package/src/providers/index.js +0 -123
  258. package/src/providers/knowledge/index.js +0 -17
  259. package/src/providers/knowledge/notion.js +0 -389
  260. package/src/providers/marketing/index.js +0 -17
  261. package/src/providers/marketing/mailchimp.js +0 -443
  262. package/src/providers/media/cloudinary.js +0 -318
  263. package/src/providers/media/index.js +0 -17
  264. package/src/providers/messaging/index.js +0 -20
  265. package/src/providers/messaging/slack.js +0 -393
  266. package/src/providers/messaging/twilio-sms.js +0 -249
  267. package/src/providers/project-management/index.js +0 -17
  268. package/src/providers/project-management/linear.js +0 -575
  269. package/src/providers/registry.js +0 -86
  270. package/src/providers/spreadsheet/google-sheets.js +0 -375
  271. package/src/providers/spreadsheet/index.js +0 -20
  272. package/src/providers/spreadsheet/xlsx.js +0 -423
  273. package/src/providers/storage/index.js +0 -24
  274. package/src/providers/storage/s3.js +0 -419
  275. package/src/providers/support/index.js +0 -17
  276. package/src/providers/support/zendesk.js +0 -373
  277. package/src/providers/tasks/index.js +0 -17
  278. package/src/providers/tasks/todoist.js +0 -286
  279. package/src/providers/types.js +0 -9
  280. package/src/providers/video-conferencing/google-meet.js +0 -286
  281. package/src/providers/video-conferencing/index.js +0 -31
  282. package/src/providers/video-conferencing/jitsi.js +0 -254
  283. package/src/providers/video-conferencing/teams.js +0 -270
  284. package/src/providers/video-conferencing/zoom.js +0 -332
  285. package/src/registry.js +0 -128
  286. package/src/tools/communication.js +0 -184
  287. package/src/tools/data.js +0 -205
  288. package/src/tools/index.js +0 -11
  289. package/src/tools/web.js +0 -137
  290. package/src/types.js +0 -10
  291. package/test/define.test.js +0 -306
  292. package/test/registry.test.js +0 -357
  293. package/test/tools.test.js +0 -363
@@ -166,10 +166,7 @@ export function createTeamsProvider(config: ProviderConfig): VideoConferencingPr
166
166
  /**
167
167
  * Make authenticated API request
168
168
  */
169
- async function apiRequest<T>(
170
- endpoint: string,
171
- options: RequestInit = {}
172
- ): Promise<T> {
169
+ async function apiRequest<T>(endpoint: string, options: RequestInit = {}): Promise<T> {
173
170
  const token = await getAccessToken()
174
171
  const url = endpoint.startsWith('http') ? endpoint : `${GRAPH_API_URL}${endpoint}`
175
172
 
@@ -185,7 +182,9 @@ export function createTeamsProvider(config: ProviderConfig): VideoConferencingPr
185
182
  if (!response.ok) {
186
183
  const errorData = await response.json().catch(() => ({}))
187
184
  throw new Error(
188
- `Microsoft Graph API error: ${response.status} - ${(errorData as any)?.error?.message || response.statusText}`
185
+ `Microsoft Graph API error: ${response.status} - ${
186
+ (errorData as any)?.error?.message || response.statusText
187
+ }`
189
188
  )
190
189
  }
191
190
 
@@ -230,9 +229,9 @@ export function createTeamsProvider(config: ProviderConfig): VideoConferencingPr
230
229
 
231
230
  async initialize(cfg: ProviderConfig): Promise<void> {
232
231
  accessToken = cfg.accessToken as string
233
- clientId = cfg.clientId as string | undefined
234
- clientSecret = cfg.clientSecret as string | undefined
235
- tenantId = cfg.tenantId as string | undefined
232
+ clientId = cfg['clientId'] as string | undefined
233
+ clientSecret = cfg['clientSecret'] as string | undefined
234
+ tenantId = cfg['tenantId'] as string | undefined
236
235
 
237
236
  if (!accessToken) {
238
237
  throw new Error('Microsoft Teams requires accessToken')
@@ -319,14 +318,14 @@ export function createTeamsProvider(config: ProviderConfig): VideoConferencingPr
319
318
 
320
319
  const body: Record<string, unknown> = {}
321
320
 
322
- if (updates.topic) body.subject = updates.topic
321
+ if (updates.topic) body['subject'] = updates.topic
323
322
 
324
323
  if (updates.startTime) {
325
324
  const endTime = new Date(
326
325
  updates.startTime.getTime() + (updates.duration || current.duration || 60) * 60000
327
326
  )
328
- body.startDateTime = updates.startTime.toISOString()
329
- body.endDateTime = endTime.toISOString()
327
+ body['startDateTime'] = updates.startTime.toISOString()
328
+ body['endDateTime'] = endTime.toISOString()
330
329
  }
331
330
 
332
331
  const response = await apiRequest<GraphOnlineMeeting>(
@@ -376,11 +375,13 @@ export function createTeamsProvider(config: ProviderConfig): VideoConferencingPr
376
375
  return {
377
376
  items: response.value.map(convertMeeting),
378
377
  hasMore: !!response['@odata.nextLink'],
379
- nextCursor: response['@odata.nextLink'],
378
+ ...(response['@odata.nextLink'] !== undefined && {
379
+ nextCursor: response['@odata.nextLink'],
380
+ }),
380
381
  }
381
382
  },
382
383
 
383
- endMeeting: async function(meetingId: string): Promise<boolean> {
384
+ endMeeting: async function (meetingId: string): Promise<boolean> {
384
385
  // Microsoft Teams doesn't support programmatically ending meetings
385
386
  // We can delete the meeting instead
386
387
  return await this.deleteMeeting!(meetingId)
@@ -120,13 +120,16 @@ export function createZoomProvider(config: ProviderConfig): VideoConferencingPro
120
120
 
121
121
  // Get new token
122
122
  const credentials = Buffer.from(`${clientId}:${clientSecret}`).toString('base64')
123
- const response = await fetch(`https://zoom.us/oauth/token?grant_type=account_credentials&account_id=${accountId}`, {
124
- method: 'POST',
125
- headers: {
126
- Authorization: `Basic ${credentials}`,
127
- 'Content-Type': 'application/x-www-form-urlencoded',
128
- },
129
- })
123
+ const response = await fetch(
124
+ `https://zoom.us/oauth/token?grant_type=account_credentials&account_id=${accountId}`,
125
+ {
126
+ method: 'POST',
127
+ headers: {
128
+ Authorization: `Basic ${credentials}`,
129
+ 'Content-Type': 'application/x-www-form-urlencoded',
130
+ },
131
+ }
132
+ )
130
133
 
131
134
  if (!response.ok) {
132
135
  throw new Error(`Failed to get access token: HTTP ${response.status}`)
@@ -142,10 +145,7 @@ export function createZoomProvider(config: ProviderConfig): VideoConferencingPro
142
145
  /**
143
146
  * Make authenticated API request
144
147
  */
145
- async function apiRequest<T>(
146
- endpoint: string,
147
- options: RequestInit = {}
148
- ): Promise<T> {
148
+ async function apiRequest<T>(endpoint: string, options: RequestInit = {}): Promise<T> {
149
149
  const token = await getAccessToken()
150
150
  const url = `${ZOOM_API_URL}${endpoint}`
151
151
 
@@ -175,14 +175,14 @@ export function createZoomProvider(config: ProviderConfig): VideoConferencingPro
175
175
  return {
176
176
  id: meeting.id.toString(),
177
177
  topic: meeting.topic,
178
- startTime: meeting.start_time ? new Date(meeting.start_time) : undefined,
179
- duration: meeting.duration,
180
- timezone: meeting.timezone,
181
- agenda: meeting.agenda,
178
+ ...(meeting.start_time !== undefined && { startTime: new Date(meeting.start_time) }),
179
+ ...(meeting.duration !== undefined && { duration: meeting.duration }),
180
+ ...(meeting.timezone !== undefined && { timezone: meeting.timezone }),
181
+ ...(meeting.agenda !== undefined && { agenda: meeting.agenda }),
182
182
  joinUrl: meeting.join_url,
183
183
  hostId: meeting.host_id,
184
184
  status: meeting.status as 'waiting' | 'started' | 'finished',
185
- password: meeting.password,
185
+ ...(meeting.password !== undefined && { password: meeting.password }),
186
186
  createdAt: new Date(meeting.created_at),
187
187
  }
188
188
  }
@@ -191,9 +191,9 @@ export function createZoomProvider(config: ProviderConfig): VideoConferencingPro
191
191
  info: zoomInfo,
192
192
 
193
193
  async initialize(cfg: ProviderConfig): Promise<void> {
194
- accountId = cfg.accountId as string
195
- clientId = cfg.clientId as string
196
- clientSecret = cfg.clientSecret as string
194
+ accountId = cfg['accountId'] as string
195
+ clientId = cfg['clientId'] as string
196
+ clientSecret = cfg['clientSecret'] as string
197
197
  accessToken = cfg.accessToken as string | undefined
198
198
 
199
199
  if (!accountId || !clientId || !clientSecret) {
@@ -243,7 +243,7 @@ export function createZoomProvider(config: ProviderConfig): VideoConferencingPro
243
243
  }
244
244
 
245
245
  if (meeting.settings) {
246
- body.settings = {
246
+ body['settings'] = {
247
247
  ...(meeting.settings.hostVideo !== undefined && {
248
248
  host_video: meeting.settings.hostVideo,
249
249
  }),
@@ -291,15 +291,15 @@ export function createZoomProvider(config: ProviderConfig): VideoConferencingPro
291
291
  ): Promise<MeetingData> {
292
292
  const body: Record<string, unknown> = {}
293
293
 
294
- if (updates.topic) body.topic = updates.topic
295
- if (updates.startTime) body.start_time = updates.startTime.toISOString()
296
- if (updates.duration !== undefined) body.duration = updates.duration
297
- if (updates.timezone) body.timezone = updates.timezone
298
- if (updates.agenda !== undefined) body.agenda = updates.agenda
299
- if (updates.password !== undefined) body.password = updates.password
294
+ if (updates.topic) body['topic'] = updates.topic
295
+ if (updates.startTime) body['start_time'] = updates.startTime.toISOString()
296
+ if (updates.duration !== undefined) body['duration'] = updates.duration
297
+ if (updates.timezone) body['timezone'] = updates.timezone
298
+ if (updates.agenda !== undefined) body['agenda'] = updates.agenda
299
+ if (updates.password !== undefined) body['password'] = updates.password
300
300
 
301
301
  if (updates.settings) {
302
- body.settings = {
302
+ body['settings'] = {
303
303
  ...(updates.settings.hostVideo !== undefined && {
304
304
  host_video: updates.settings.hostVideo,
305
305
  }),
@@ -376,7 +376,7 @@ export function createZoomProvider(config: ProviderConfig): VideoConferencingPro
376
376
  items: response.meetings.map(convertMeeting),
377
377
  total: response.total_records,
378
378
  hasMore: !!response.next_page_token,
379
- nextCursor: response.next_page_token,
379
+ ...(response.next_page_token !== undefined && { nextCursor: response.next_page_token }),
380
380
  }
381
381
  },
382
382
 
@@ -401,14 +401,16 @@ export function createZoomProvider(config: ProviderConfig): VideoConferencingPro
401
401
  `/past_meetings/${meetingId}/participants`
402
402
  )
403
403
 
404
- return response.participants.map((p) => ({
405
- id: p.id,
406
- name: p.name,
407
- email: p.user_email,
408
- joinTime: new Date(p.join_time),
409
- leaveTime: p.leave_time ? new Date(p.leave_time) : undefined,
410
- duration: p.duration,
411
- }))
404
+ return response.participants.map(
405
+ (p): ParticipantData => ({
406
+ id: p.id,
407
+ name: p.name,
408
+ ...(p.user_email !== undefined && { email: p.user_email }),
409
+ joinTime: new Date(p.join_time),
410
+ ...(p.leave_time !== undefined && { leaveTime: new Date(p.leave_time) }),
411
+ ...(p.duration !== undefined && { duration: p.duration }),
412
+ })
413
+ )
412
414
  } catch (error) {
413
415
  if (error instanceof Error && error.message.includes('404')) {
414
416
  return []
@@ -423,16 +425,21 @@ export function createZoomProvider(config: ProviderConfig): VideoConferencingPro
423
425
  `/meetings/${meetingId}/recordings`
424
426
  )
425
427
 
426
- return response.recording_files.map((r) => ({
427
- id: r.id,
428
- meetingId: r.meeting_id,
429
- type: r.recording_type === 'audio_only' ? 'audio' :
430
- r.file_type === 'TRANSCRIPT' ? 'transcript' : 'video',
431
- url: r.download_url,
432
- size: r.file_size,
433
- duration: undefined, // Not provided in this endpoint
434
- createdAt: new Date(r.recording_start),
435
- }))
428
+ return response.recording_files.map(
429
+ (r): MeetingRecordingData => ({
430
+ id: r.id,
431
+ meetingId: r.meeting_id,
432
+ type:
433
+ r.recording_type === 'audio_only'
434
+ ? 'audio'
435
+ : r.file_type === 'TRANSCRIPT'
436
+ ? 'transcript'
437
+ : 'video',
438
+ url: r.download_url,
439
+ ...(r.file_size !== undefined && { size: r.file_size }),
440
+ createdAt: new Date(r.recording_start),
441
+ })
442
+ )
436
443
  } catch (error) {
437
444
  if (error instanceof Error && error.message.includes('404')) {
438
445
  return []
@@ -446,6 +453,4 @@ export function createZoomProvider(config: ProviderConfig): VideoConferencingPro
446
453
  /**
447
454
  * Zoom provider definition
448
455
  */
449
- export const zoomProvider = defineProvider(zoomInfo, async (config) =>
450
- createZoomProvider(config)
451
- )
456
+ export const zoomProvider = defineProvider(zoomInfo, async (config) => createZoomProvider(config))
package/src/tools/data.ts CHANGED
@@ -48,10 +48,7 @@ export const parseJson = defineTool<
48
48
  /**
49
49
  * Stringify object to JSON
50
50
  */
51
- export const stringifyJson = defineTool<
52
- { data: unknown; pretty?: boolean },
53
- { text: string }
54
- >({
51
+ export const stringifyJson = defineTool<{ data: unknown; pretty?: boolean }, { text: string }>({
55
52
  id: 'data.json.stringify',
56
53
  name: 'Stringify JSON',
57
54
  description: 'Convert an object to a JSON string',
@@ -66,9 +63,7 @@ export const stringifyJson = defineTool<
66
63
  required: ['data'],
67
64
  },
68
65
  handler: async (input) => {
69
- const text = input.pretty
70
- ? JSON.stringify(input.data, null, 2)
71
- : JSON.stringify(input.data)
66
+ const text = input.pretty ? JSON.stringify(input.data, null, 2) : JSON.stringify(input.data)
72
67
  return { text }
73
68
  },
74
69
  options: {
@@ -108,9 +103,10 @@ export const parseCsv = defineTool<
108
103
  return { rows: [], headers: [], rowCount: 0 }
109
104
  }
110
105
 
106
+ const firstLine = lines[0]!
111
107
  const headers = hasHeaders
112
- ? lines[0].split(delimiter).map((h) => h.trim())
113
- : lines[0].split(delimiter).map((_, i) => `column${i + 1}`)
108
+ ? firstLine.split(delimiter).map((h) => h.trim())
109
+ : firstLine.split(delimiter).map((_, i) => `column${i + 1}`)
114
110
 
115
111
  const dataLines = hasHeaders ? lines.slice(1) : lines
116
112
 
@@ -227,10 +223,4 @@ export const filterData = defineTool<
227
223
  /**
228
224
  * All data tools
229
225
  */
230
- export const dataTools: AnyTool[] = [
231
- parseJson,
232
- stringifyJson,
233
- parseCsv,
234
- transformData,
235
- filterData,
236
- ]
226
+ export const dataTools: AnyTool[] = [parseJson, stringifyJson, parseCsv, transformData, filterData]
@@ -10,3 +10,4 @@
10
10
  export * from './web.js'
11
11
  export * from './data.js'
12
12
  export * from './communication.js'
13
+ export * from './system.js'