digital-tools 2.1.3 → 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 (294) hide show
  1. package/CHANGELOG.md +9 -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 +21 -11
  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 +31 -14
  132. package/src/client.ts +136 -0
  133. package/src/define.ts +30 -24
  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 -4
  199. package/LICENSE +0 -21
  200. package/dist/providers/voice/vapi.d.ts +0 -27
  201. package/dist/providers/voice/vapi.d.ts.map +0 -1
  202. package/dist/providers/voice/vapi.js +0 -440
  203. package/dist/providers/voice/vapi.js.map +0 -1
  204. package/src/define.js +0 -259
  205. package/src/entities/advertising.js +0 -999
  206. package/src/entities/ai.js +0 -756
  207. package/src/entities/analytics.js +0 -1588
  208. package/src/entities/automation.js +0 -601
  209. package/src/entities/communication.js +0 -1150
  210. package/src/entities/crm.js +0 -1386
  211. package/src/entities/design.js +0 -546
  212. package/src/entities/development.js +0 -2212
  213. package/src/entities/document.js +0 -874
  214. package/src/entities/ecommerce.js +0 -1429
  215. package/src/entities/experiment.js +0 -1039
  216. package/src/entities/finance.js +0 -3478
  217. package/src/entities/forms.js +0 -1892
  218. package/src/entities/hr.js +0 -661
  219. package/src/entities/identity.js +0 -997
  220. package/src/entities/index.js +0 -282
  221. package/src/entities/infrastructure.js +0 -1153
  222. package/src/entities/knowledge.js +0 -1438
  223. package/src/entities/marketing.js +0 -1610
  224. package/src/entities/media.js +0 -1634
  225. package/src/entities/notification.js +0 -1199
  226. package/src/entities/presentation.js +0 -1274
  227. package/src/entities/productivity.js +0 -1317
  228. package/src/entities/project-management.js +0 -1136
  229. package/src/entities/recruiting.js +0 -736
  230. package/src/entities/shipping.js +0 -509
  231. package/src/entities/signature.js +0 -1102
  232. package/src/entities/site.js +0 -222
  233. package/src/entities/spreadsheet.js +0 -1341
  234. package/src/entities/storage.js +0 -1198
  235. package/src/entities/support.js +0 -1166
  236. package/src/entities/video-conferencing.js +0 -1750
  237. package/src/entities/video.js +0 -950
  238. package/src/entities.js +0 -1663
  239. package/src/index.js +0 -74
  240. package/src/providers/analytics/index.js +0 -17
  241. package/src/providers/analytics/mixpanel.js +0 -255
  242. package/src/providers/calendar/cal-com.js +0 -303
  243. package/src/providers/calendar/google-calendar.js +0 -335
  244. package/src/providers/calendar/index.js +0 -20
  245. package/src/providers/crm/hubspot.js +0 -566
  246. package/src/providers/crm/index.js +0 -17
  247. package/src/providers/development/github.js +0 -472
  248. package/src/providers/development/index.js +0 -17
  249. package/src/providers/ecommerce/index.js +0 -17
  250. package/src/providers/ecommerce/shopify.js +0 -378
  251. package/src/providers/email/index.js +0 -20
  252. package/src/providers/email/resend.js +0 -258
  253. package/src/providers/email/sendgrid.js +0 -161
  254. package/src/providers/finance/index.js +0 -17
  255. package/src/providers/finance/stripe.js +0 -549
  256. package/src/providers/forms/index.js +0 -17
  257. package/src/providers/forms/typeform.js +0 -500
  258. package/src/providers/index.js +0 -123
  259. package/src/providers/knowledge/index.js +0 -17
  260. package/src/providers/knowledge/notion.js +0 -389
  261. package/src/providers/marketing/index.js +0 -17
  262. package/src/providers/marketing/mailchimp.js +0 -443
  263. package/src/providers/media/cloudinary.js +0 -318
  264. package/src/providers/media/index.js +0 -17
  265. package/src/providers/messaging/index.js +0 -20
  266. package/src/providers/messaging/slack.js +0 -393
  267. package/src/providers/messaging/twilio-sms.js +0 -249
  268. package/src/providers/project-management/index.js +0 -17
  269. package/src/providers/project-management/linear.js +0 -575
  270. package/src/providers/registry.js +0 -86
  271. package/src/providers/spreadsheet/google-sheets.js +0 -375
  272. package/src/providers/spreadsheet/index.js +0 -20
  273. package/src/providers/spreadsheet/xlsx.js +0 -423
  274. package/src/providers/storage/index.js +0 -24
  275. package/src/providers/storage/s3.js +0 -419
  276. package/src/providers/support/index.js +0 -17
  277. package/src/providers/support/zendesk.js +0 -373
  278. package/src/providers/tasks/index.js +0 -17
  279. package/src/providers/tasks/todoist.js +0 -286
  280. package/src/providers/types.js +0 -9
  281. package/src/providers/video-conferencing/google-meet.js +0 -286
  282. package/src/providers/video-conferencing/index.js +0 -31
  283. package/src/providers/video-conferencing/jitsi.js +0 -254
  284. package/src/providers/video-conferencing/teams.js +0 -270
  285. package/src/providers/video-conferencing/zoom.js +0 -332
  286. package/src/registry.js +0 -128
  287. package/src/tools/communication.js +0 -184
  288. package/src/tools/data.js +0 -205
  289. package/src/tools/index.js +0 -11
  290. package/src/tools/web.js +0 -137
  291. package/src/types.js +0 -10
  292. package/test/define.test.js +0 -306
  293. package/test/registry.test.js +0 -357
  294. 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'