@gravity-rail/sdk 0.4.0 → 0.5.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.
@@ -46,7 +46,7 @@ function parseOrgAuthChallenge(wwwAuthenticate) {
46
46
  const cookieNameMatch = wwwAuthenticate.match(/cookie_name="([^"]+)"/);
47
47
  const authUrlMatch = wwwAuthenticate.match(/auth_url="([^"]+)"/);
48
48
  if (!orgUuidMatch?.[1] || !cookieNameMatch?.[1] || !authUrlMatch?.[1]) {
49
- console.warn("Invalid org auth challenge header:", wwwAuthenticate);
49
+ console.warn("Invalid org auth challenge header: missing required fields");
50
50
  return null;
51
51
  }
52
52
  return {
@@ -63,8 +63,17 @@ var BaseApiClient = class {
63
63
  enhancedAuthHandler;
64
64
  enhancedAuthInProgress = null;
65
65
  orgAuthHandler;
66
+ orgAuthInProgress = null;
66
67
  actingMemberUuid;
67
68
  orgToken;
69
+ /**
70
+ * The org_uuid that issued the current orgToken. Tracked so we can detect
71
+ * a 401 challenge from a *different* org and re-fire the handler — the
72
+ * orgToken is an opaque JWE we cannot decrypt client-side, so without this
73
+ * the original guard `!this.orgToken` would prevent re-auth across orgs and
74
+ * surface as a silent 401 in multi-org CLI workflows.
75
+ */
76
+ orgTokenOrgUuid;
68
77
  constructor(apiKey, baseUrl, customFetch) {
69
78
  this.baseUrl = baseUrl;
70
79
  this.apiKey = apiKey;
@@ -114,9 +123,15 @@ var BaseApiClient = class {
114
123
  * Set the org token for cross-domain requests.
115
124
  * When set, all API requests will include the X-Org-Token header,
116
125
  * allowing org-level SSO verification without cookies.
126
+ *
127
+ * `orgUuid` is the org that issued the token; passing it lets the 401
128
+ * handler detect a stale token when a subsequent request targets a
129
+ * different org and re-fire the org-auth handler instead of silently
130
+ * 401-ing. Callers without that context (legacy / unknown) may omit it.
117
131
  */
118
- setOrgToken(token) {
132
+ setOrgToken(token, orgUuid) {
119
133
  this.orgToken = token;
134
+ this.orgTokenOrgUuid = token ? orgUuid : void 0;
120
135
  }
121
136
  async fetch(endpoint, options) {
122
137
  try {
@@ -164,29 +179,61 @@ var BaseApiClient = class {
164
179
  return await this.fetch(endpoint, options);
165
180
  } catch (retryError) {
166
181
  this.orgToken = void 0;
182
+ this.orgTokenOrgUuid = void 0;
167
183
  throw retryError;
168
184
  }
169
185
  }
170
186
  if (response.status === 401) {
171
187
  const orgAuthInfo = parseOrgAuthChallenge(response.headers.get("WWW-Authenticate"));
188
+ if (orgAuthInfo && this.orgToken && this.orgTokenOrgUuid && this.orgTokenOrgUuid !== orgAuthInfo.orgUuid) {
189
+ this.orgToken = void 0;
190
+ this.orgTokenOrgUuid = void 0;
191
+ }
172
192
  if (orgAuthInfo && !this.orgToken) {
173
193
  const requestCookieName = orgAuthInfo.cookieName.replace(
174
- "orgToken",
194
+ /^orgToken/,
175
195
  "requestOrgToken"
176
196
  );
177
197
  const cachedOrgToken = getCookieValue(requestCookieName);
178
198
  if (cachedOrgToken) {
179
199
  this.orgToken = cachedOrgToken;
200
+ this.orgTokenOrgUuid = orgAuthInfo.orgUuid;
180
201
  try {
181
202
  return await this.fetch(endpoint, options);
182
203
  } catch (retryError) {
183
204
  this.orgToken = void 0;
205
+ this.orgTokenOrgUuid = void 0;
184
206
  throw retryError;
185
207
  }
186
208
  }
187
209
  if (this.orgAuthHandler) {
188
- await this.orgAuthHandler(orgAuthInfo);
189
- throw new ApiError("Organization authentication required", 401);
210
+ if (!this.orgAuthInProgress) {
211
+ const handler = this.orgAuthHandler;
212
+ this.orgAuthInProgress = (async () => {
213
+ try {
214
+ await handler(orgAuthInfo);
215
+ } finally {
216
+ this.orgAuthInProgress = null;
217
+ }
218
+ })();
219
+ }
220
+ await this.orgAuthInProgress;
221
+ const postHandlerToken = getCookieValue(requestCookieName) ?? this.orgToken;
222
+ if (!postHandlerToken) {
223
+ throw new ApiError(
224
+ "Organization authentication did not issue a token",
225
+ 401
226
+ );
227
+ }
228
+ this.orgToken = postHandlerToken;
229
+ this.orgTokenOrgUuid = orgAuthInfo.orgUuid;
230
+ try {
231
+ return await this.fetch(endpoint, options);
232
+ } catch (retryError) {
233
+ this.orgToken = void 0;
234
+ this.orgTokenOrgUuid = void 0;
235
+ throw retryError;
236
+ }
190
237
  }
191
238
  }
192
239
  }
@@ -285,29 +332,61 @@ ${formattedErrors}`, response.status);
285
332
  return await this.fetchRaw(endpoint, options, allowedErrorStatuses);
286
333
  } catch (retryError) {
287
334
  this.orgToken = void 0;
335
+ this.orgTokenOrgUuid = void 0;
288
336
  throw retryError;
289
337
  }
290
338
  }
291
339
  if (response.status === 401) {
292
340
  const orgAuthInfo = parseOrgAuthChallenge(response.headers.get("WWW-Authenticate"));
341
+ if (orgAuthInfo && this.orgToken && this.orgTokenOrgUuid && this.orgTokenOrgUuid !== orgAuthInfo.orgUuid) {
342
+ this.orgToken = void 0;
343
+ this.orgTokenOrgUuid = void 0;
344
+ }
293
345
  if (orgAuthInfo && !this.orgToken) {
294
346
  const requestCookieName = orgAuthInfo.cookieName.replace(
295
- "orgToken",
347
+ /^orgToken/,
296
348
  "requestOrgToken"
297
349
  );
298
350
  const cachedOrgToken = getCookieValue(requestCookieName);
299
351
  if (cachedOrgToken) {
300
352
  this.orgToken = cachedOrgToken;
353
+ this.orgTokenOrgUuid = orgAuthInfo.orgUuid;
301
354
  try {
302
355
  return await this.fetchRaw(endpoint, options, allowedErrorStatuses);
303
356
  } catch (retryError) {
304
357
  this.orgToken = void 0;
358
+ this.orgTokenOrgUuid = void 0;
305
359
  throw retryError;
306
360
  }
307
361
  }
308
362
  if (this.orgAuthHandler) {
309
- await this.orgAuthHandler(orgAuthInfo);
310
- throw new ApiError("Organization authentication required", 401);
363
+ if (!this.orgAuthInProgress) {
364
+ const handler = this.orgAuthHandler;
365
+ this.orgAuthInProgress = (async () => {
366
+ try {
367
+ await handler(orgAuthInfo);
368
+ } finally {
369
+ this.orgAuthInProgress = null;
370
+ }
371
+ })();
372
+ }
373
+ await this.orgAuthInProgress;
374
+ const postHandlerToken = getCookieValue(requestCookieName) ?? this.orgToken;
375
+ if (!postHandlerToken) {
376
+ throw new ApiError(
377
+ "Organization authentication did not issue a token",
378
+ 401
379
+ );
380
+ }
381
+ this.orgToken = postHandlerToken;
382
+ this.orgTokenOrgUuid = orgAuthInfo.orgUuid;
383
+ try {
384
+ return await this.fetchRaw(endpoint, options, allowedErrorStatuses);
385
+ } catch (retryError) {
386
+ this.orgToken = void 0;
387
+ this.orgTokenOrgUuid = void 0;
388
+ throw retryError;
389
+ }
311
390
  }
312
391
  }
313
392
  }
@@ -730,7 +809,8 @@ var AssignmentsApi = class extends BaseApiClient {
730
809
  if (options.sortOrder) params.append("sortOrder", options.sortOrder);
731
810
  if (options.mine) params.append("mine", options.mine.toString());
732
811
  if (options.taskId) params.append("taskId", options.taskId.toString());
733
- if (options.memberId) params.append("memberId", options.memberId.toString());
812
+ if (options.memberId !== void 0)
813
+ params.append("memberId", options.memberId.toString());
734
814
  if (options.status) params.append("status", options.status);
735
815
  return this.fetch(
736
816
  `w/${wid}/assignments${params.toString() ? `?${params.toString()}` : ""}`
@@ -1536,6 +1616,8 @@ var ChatsApi = class extends BaseApiClient {
1536
1616
  if (options.filters && options.filters.length > 0) {
1537
1617
  params.append("filters", JSON.stringify(options.filters));
1538
1618
  }
1619
+ if (options.createdAfter) params.append("createdAfter", options.createdAfter);
1620
+ if (options.createdBefore) params.append("createdBefore", options.createdBefore);
1539
1621
  return params;
1540
1622
  }
1541
1623
  /** List chats with optional filtering, sorting, and pagination. */
@@ -2816,6 +2898,40 @@ var HealthieApi = class extends BaseApiClient {
2816
2898
  method: "DELETE"
2817
2899
  });
2818
2900
  }
2901
+ async listHealthieAppointmentTypes(wid, providerId) {
2902
+ const query = new URLSearchParams();
2903
+ if (providerId) query.set("provider_id", providerId);
2904
+ const qs = query.toString() ? `?${query.toString()}` : "";
2905
+ return this.fetch(
2906
+ `w/${wid}/app-connections/healthie/appointment-types${qs}`
2907
+ );
2908
+ }
2909
+ async listHealthiePatients(wid, keywords) {
2910
+ const query = new URLSearchParams();
2911
+ if (keywords?.trim()) query.set("keywords", keywords.trim());
2912
+ const qs = query.toString() ? `?${query.toString()}` : "";
2913
+ return this.fetch(
2914
+ `w/${wid}/app-connections/healthie/patients${qs}`
2915
+ );
2916
+ }
2917
+ async getHealthieAvailableSlots(wid, request) {
2918
+ return this.fetch(
2919
+ `w/${wid}/app-connections/healthie/scheduling/available-slots`,
2920
+ {
2921
+ method: "POST",
2922
+ body: JSON.stringify(request)
2923
+ }
2924
+ );
2925
+ }
2926
+ async bookHealthieAppointment(wid, request) {
2927
+ return this.fetch(
2928
+ `w/${wid}/app-connections/healthie/scheduling/book`,
2929
+ {
2930
+ method: "POST",
2931
+ body: JSON.stringify(request)
2932
+ }
2933
+ );
2934
+ }
2819
2935
  };
2820
2936
 
2821
2937
  // src/api/files.ts
@@ -3083,10 +3199,17 @@ var InboxesApi = class extends BaseApiClient {
3083
3199
  method: "POST"
3084
3200
  });
3085
3201
  }
3202
+ /** Reply to an email from the inbox. */
3203
+ async replyToEmail(wid, inboxId, emailId, content) {
3204
+ return this.fetch(`w/${wid}/inboxes/${inboxId}/emails/${emailId}/reply`, {
3205
+ method: "POST",
3206
+ body: JSON.stringify({ content })
3207
+ });
3208
+ }
3086
3209
  /** Convert an email to text, markdown, or PDF format. */
3087
- async convertEmail(wid, emailId, format = "pdf") {
3210
+ async convertEmail(wid, inboxId, emailId, format = "pdf") {
3088
3211
  return this.fetch(
3089
- `w/${wid}/inboxes/emails/${emailId}/convert?format=${format}`,
3212
+ `w/${wid}/inboxes/${inboxId}/emails/${emailId}/convert?format=${format}`,
3090
3213
  {
3091
3214
  method: "POST"
3092
3215
  }
@@ -3261,6 +3384,19 @@ var AppConnectionsApi = class extends BaseApiClient {
3261
3384
  { method: "DELETE" }
3262
3385
  );
3263
3386
  }
3387
+ /**
3388
+ * List distinct ``MemberField.key`` values scoped to a connection
3389
+ * (GRA-2920). Drives the Monday custom-match "Custom fields" picker.
3390
+ *
3391
+ * Returns only the set of keys already in use on this connection;
3392
+ * values are intentionally never exposed. Operators can also add a
3393
+ * new key via the UI's "Add custom field key" free-text action.
3394
+ */
3395
+ async listConnectionMemberFieldKeys(wid, connectionId) {
3396
+ return this.fetch(
3397
+ `w/${wid}/app-connections/${connectionId}/member-field-keys`
3398
+ );
3399
+ }
3264
3400
  };
3265
3401
 
3266
3402
  // src/api/mcp-servers.ts
@@ -3883,33 +4019,6 @@ var MondayIntegrationApi = class extends BaseApiClient {
3883
4019
  );
3884
4020
  return { columns };
3885
4021
  }
3886
- /**
3887
- * Create a webhook in Monday.com
3888
- */
3889
- async createWebhook(wid, params) {
3890
- return this.fetch(`w/${wid}/app-connections/monday/webhooks`, {
3891
- method: "POST",
3892
- body: JSON.stringify(params)
3893
- });
3894
- }
3895
- /**
3896
- * Delete a webhook from Monday.com
3897
- */
3898
- async deleteWebhook(wid, webhookId) {
3899
- return this.fetch(
3900
- `w/${wid}/app-connections/monday/webhooks/${webhookId}`,
3901
- { method: "DELETE" }
3902
- );
3903
- }
3904
- /**
3905
- * Get details of a specific webhook from Monday.com
3906
- * Returns 404 if the webhook no longer exists
3907
- */
3908
- async getWebhook(wid, boardId, webhookId) {
3909
- return this.fetch(
3910
- `w/${wid}/app-connections/monday/boards/${boardId}/webhooks/${webhookId}`
3911
- );
3912
- }
3913
4022
  /**
3914
4023
  * Get groups for a specific Monday.com board
3915
4024
  */
@@ -4522,6 +4631,53 @@ var OrgApi = class extends BaseApiClient {
4522
4631
  body: JSON.stringify({ sampleMessages })
4523
4632
  });
4524
4633
  }
4634
+ // ============================================================================
4635
+ // Organization Business Profile API (Twilio Trust Hub Secondary CP)
4636
+ // ============================================================================
4637
+ /**
4638
+ * Live fetch of the org's Twilio Customer Profile + related entities.
4639
+ *
4640
+ * Response carries both the lifecycle `status` and the compliance
4641
+ * `evaluationStatus`. Twilio models lifecycle and evaluation as two
4642
+ * separate enums on two separate resources, so the Submit-button gate
4643
+ * is `evaluationStatus === 'compliant'` — never `status === 'compliant'`,
4644
+ * which is impossible (lifecycle status is one of `draft` /
4645
+ * `pending-review` / `in-review` / `twilio-approved` / `twilio-rejected`).
4646
+ */
4647
+ async getBusinessProfile(orgUuid) {
4648
+ return this.fetch(`o/${orgUuid}/business-profile`);
4649
+ }
4650
+ /**
4651
+ * Upsert the org's business profile. Idempotent via cached SIDs.
4652
+ * Returns a fresh BusinessProfileResponse on success — including the
4653
+ * compliance evaluation result so the frontend can immediately enable
4654
+ * Submit without a second round-trip.
4655
+ */
4656
+ async updateBusinessProfile(orgUuid, data) {
4657
+ return this.fetch(`o/${orgUuid}/business-profile`, {
4658
+ method: "PUT",
4659
+ body: JSON.stringify(data)
4660
+ });
4661
+ }
4662
+ /**
4663
+ * Submit the business profile to Twilio for review. Server re-evaluates
4664
+ * compliance live and returns 412 if the profile is not currently
4665
+ * `compliant`; returns 409 if a review is already in flight.
4666
+ */
4667
+ async submitBusinessProfile(orgUuid) {
4668
+ return this.fetch(`o/${orgUuid}/business-profile/submit`, {
4669
+ method: "POST"
4670
+ });
4671
+ }
4672
+ /**
4673
+ * Cancel an in-flight Twilio review. Resets the cached profile state
4674
+ * to `draft` so the user can edit and resubmit.
4675
+ */
4676
+ async cancelBusinessProfile(orgUuid) {
4677
+ return this.fetch(`o/${orgUuid}/business-profile/cancel`, {
4678
+ method: "POST"
4679
+ });
4680
+ }
4525
4681
  /**
4526
4682
  * List available member roles for a workspace in the organization.
4527
4683
  */
@@ -4873,15 +5029,15 @@ var PronunciationsApi = class extends BaseApiClient {
4873
5029
  // src/api/prompts.ts
4874
5030
  var PromptsApi = class extends BaseApiClient {
4875
5031
  /** Inspect the full composed prompt for a task (static) or chat (live). */
4876
- async inspectPrompt(wid, taskId, options = {}) {
5032
+ async inspectPrompt(wid, options) {
4877
5033
  const params = new URLSearchParams();
4878
- if (options.chatId) {
5034
+ if (options.chatId !== void 0) {
4879
5035
  params.append("chat_id", options.chatId.toString());
4880
- } else {
4881
- params.append("task_id", taskId.toString());
5036
+ } else if (options.taskId !== void 0) {
5037
+ params.append("task_id", options.taskId.toString());
4882
5038
  }
4883
5039
  if (options.channel) params.append("channel", options.channel);
4884
- if (options.turn) params.append("turn", options.turn.toString());
5040
+ if (options.turn !== void 0) params.append("turn", options.turn.toString());
4885
5041
  return this.fetch(`w/${wid}/prompts/inspect?${params}`);
4886
5042
  }
4887
5043
  };
@@ -5234,7 +5390,8 @@ var ConnectionSyncApi = class extends BaseApiClient {
5234
5390
  dryRun: options?.dryRun ?? false,
5235
5391
  resetCheckpoints: options?.resetCheckpoints ?? false,
5236
5392
  ...options?.entityType ? { entityType: options.entityType } : {},
5237
- ...options?.boardId ? { boardId: options.boardId } : {}
5393
+ ...options?.boardId ? { boardId: options.boardId } : {},
5394
+ ...typeof options?.recordLimit === "number" ? { recordLimit: options.recordLimit } : {}
5238
5395
  })
5239
5396
  });
5240
5397
  }
@@ -5253,6 +5410,19 @@ var ConnectionSyncApi = class extends BaseApiClient {
5253
5410
  `w/${wid}/app-connections/${connectionId}/sync/runs/${runId}/items?limit=${limit}`
5254
5411
  );
5255
5412
  }
5413
+ /**
5414
+ * Clear a manual-unlink exclusion for a member on a connection so
5415
+ * subsequent outbound syncs stop silently skipping them. Idempotent:
5416
+ * returns ``cleared=false`` when no matching exclusion exists.
5417
+ * ``boardId`` is only meaningful for multi-scope connectors (Monday).
5418
+ */
5419
+ async clearConnectionMemberExclusion(wid, connectionId, memberId, options) {
5420
+ const query = options?.boardId ? `?board_id=${encodeURIComponent(options.boardId)}` : "";
5421
+ return this.fetch(
5422
+ `w/${wid}/app-connections/${connectionId}/member-exclusions/${memberId}${query}`,
5423
+ { method: "DELETE" }
5424
+ );
5425
+ }
5256
5426
  };
5257
5427
 
5258
5428
  // src/api/hubspot.ts
@@ -5653,6 +5823,98 @@ var SubscriptionsApi = class extends BaseApiClient {
5653
5823
  }
5654
5824
  };
5655
5825
 
5826
+ // src/api/support-requests.ts
5827
+ function supportRequestParams(params) {
5828
+ const searchParams = new URLSearchParams();
5829
+ if (params?.page) searchParams.append("page", params.page.toString());
5830
+ if (params?.pageSize) searchParams.append("pageSize", params.pageSize.toString());
5831
+ if (params?.status) searchParams.append("status", params.status);
5832
+ if (params?.supportRequestType) {
5833
+ searchParams.append("supportRequestType", params.supportRequestType);
5834
+ }
5835
+ if (params?.severity) searchParams.append("severity", params.severity);
5836
+ if (params?.source) searchParams.append("source", params.source);
5837
+ if (params?.organizationId !== void 0) {
5838
+ searchParams.append("organizationId", params.organizationId.toString());
5839
+ }
5840
+ if (params?.workspaceId !== void 0) {
5841
+ searchParams.append("workspaceId", params.workspaceId.toString());
5842
+ }
5843
+ if (params?.linearLinked !== void 0) {
5844
+ searchParams.append("linearLinked", params.linearLinked.toString());
5845
+ }
5846
+ const query = searchParams.toString();
5847
+ return query ? `?${query}` : "";
5848
+ }
5849
+ var SupportRequestsApi = class extends BaseApiClient {
5850
+ async listSupportRequests(params) {
5851
+ return this.fetch(
5852
+ `support-requests${supportRequestParams(params)}`
5853
+ );
5854
+ }
5855
+ async getSupportRequest(uuid) {
5856
+ return this.fetch(`support-requests/${uuid}`);
5857
+ }
5858
+ async createSupportRequest(data) {
5859
+ return this.fetch("support-requests", {
5860
+ method: "POST",
5861
+ body: JSON.stringify(data)
5862
+ });
5863
+ }
5864
+ async commentOnSupportRequest(uuid, data) {
5865
+ return this.fetch(`support-requests/${uuid}/comments`, {
5866
+ method: "POST",
5867
+ body: JSON.stringify(data)
5868
+ });
5869
+ }
5870
+ async listOrgSupportRequests(orgUuid, params) {
5871
+ return this.fetch(
5872
+ `o/${orgUuid}/support-requests${supportRequestParams(params)}`
5873
+ );
5874
+ }
5875
+ async getOrgSupportRequest(orgUuid, uuid) {
5876
+ return this.fetch(`o/${orgUuid}/support-requests/${uuid}`);
5877
+ }
5878
+ async createOrgSupportRequest(orgUuid, data) {
5879
+ return this.fetch(`o/${orgUuid}/support-requests`, {
5880
+ method: "POST",
5881
+ body: JSON.stringify(data)
5882
+ });
5883
+ }
5884
+ async commentOnOrgSupportRequest(orgUuid, uuid, data) {
5885
+ return this.fetch(`o/${orgUuid}/support-requests/${uuid}/comments`, {
5886
+ method: "POST",
5887
+ body: JSON.stringify(data)
5888
+ });
5889
+ }
5890
+ async listWorkspaceSupportRequests(workspaceUuid, params) {
5891
+ return this.fetch(
5892
+ `w/${workspaceUuid}/support-requests${supportRequestParams(params)}`
5893
+ );
5894
+ }
5895
+ async getWorkspaceSupportRequest(workspaceUuid, uuid) {
5896
+ return this.fetch(`w/${workspaceUuid}/support-requests/${uuid}`);
5897
+ }
5898
+ async createWorkspaceSupportRequest(workspaceUuid, data) {
5899
+ return this.fetch(`w/${workspaceUuid}/support-requests`, {
5900
+ method: "POST",
5901
+ body: JSON.stringify(data)
5902
+ });
5903
+ }
5904
+ async commentOnWorkspaceSupportRequest(workspaceUuid, uuid, data) {
5905
+ return this.fetch(`w/${workspaceUuid}/support-requests/${uuid}/comments`, {
5906
+ method: "POST",
5907
+ body: JSON.stringify(data)
5908
+ });
5909
+ }
5910
+ async closeWorkspaceSupportRequest(workspaceUuid, uuid, data = {}) {
5911
+ return this.fetch(`w/${workspaceUuid}/support-requests/${uuid}/close`, {
5912
+ method: "POST",
5913
+ body: JSON.stringify(data)
5914
+ });
5915
+ }
5916
+ };
5917
+
5656
5918
  // src/api/customers.ts
5657
5919
  var CustomersApi = class extends BaseApiClient {
5658
5920
  async getMyCustomers() {
@@ -5667,8 +5929,8 @@ var CustomersApi = class extends BaseApiClient {
5667
5929
  async getMyCustomerSubscriptions(uuid, opts) {
5668
5930
  const params = new URLSearchParams();
5669
5931
  if (opts?.status) params.set("status", opts.status);
5670
- if (opts?.page) params.set("page", String(opts.page));
5671
- if (opts?.pageSize) params.set("page_size", String(opts.pageSize));
5932
+ if (opts?.page !== void 0) params.set("page", String(opts.page));
5933
+ if (opts?.pageSize !== void 0) params.set("page_size", String(opts.pageSize));
5672
5934
  const qs = params.toString();
5673
5935
  return this.fetch(`customers/${uuid}/subscriptions${qs ? "?" + qs : ""}`);
5674
5936
  }
@@ -5705,6 +5967,16 @@ var CustomersApi = class extends BaseApiClient {
5705
5967
  method: "PUT"
5706
5968
  });
5707
5969
  }
5970
+ async getMyCustomerCreditGrants(uuid, opts) {
5971
+ const params = new URLSearchParams();
5972
+ if (opts?.subscriptionId !== void 0) {
5973
+ params.set("subscription_id", String(opts.subscriptionId));
5974
+ }
5975
+ if (opts?.page !== void 0) params.set("page", String(opts.page));
5976
+ if (opts?.pageSize !== void 0) params.set("page_size", String(opts.pageSize));
5977
+ const qs = params.toString();
5978
+ return this.fetch(`customers/${uuid}/credit-grants${qs ? "?" + qs : ""}`);
5979
+ }
5708
5980
  };
5709
5981
 
5710
5982
  // src/api/resellers.ts
@@ -5939,6 +6211,14 @@ var JourneysApi = class extends BaseApiClient {
5939
6211
  method: "DELETE"
5940
6212
  });
5941
6213
  }
6214
+ /**
6215
+ * Get Journey Health diagnostics — authoring issues and runtime
6216
+ * failures for a single journey. PHI-safe: response carries IDs,
6217
+ * counts, error_type strings, and timestamps only.
6218
+ */
6219
+ async getJourneyHealth(wid, journeyId) {
6220
+ return this.fetch(`w/${wid}/journeys/${journeyId}/health`);
6221
+ }
5942
6222
  /** Create a step within a journey. */
5943
6223
  async createStep(wid, journeyId, data) {
5944
6224
  return this.fetch(`w/${wid}/journeys/${journeyId}/steps`, {
@@ -6006,6 +6286,13 @@ var JourneysApi = class extends BaseApiClient {
6006
6286
  if (params?.page) qs.set("page", String(params.page));
6007
6287
  if (params?.pageSize) qs.set("pageSize", String(params.pageSize));
6008
6288
  if (params?.search) qs.set("search", params.search);
6289
+ if (params?.status) qs.set("status", params.status);
6290
+ if (params?.enrolledAfter) qs.set("enrolledAfter", params.enrolledAfter);
6291
+ if (params?.enrolledBefore) qs.set("enrolledBefore", params.enrolledBefore);
6292
+ if (params?.currentTaskId !== void 0)
6293
+ qs.set("currentTaskId", String(params.currentTaskId));
6294
+ if (params?.runtimeFailureEdgeId !== void 0)
6295
+ qs.set("runtimeFailureEdgeId", String(params.runtimeFailureEdgeId));
6009
6296
  const query = qs.toString();
6010
6297
  return this.fetch(
6011
6298
  `w/${wid}/journeys/${journeyId}/members${query ? `?${query}` : ""}`
@@ -6026,10 +6313,10 @@ var JourneysApi = class extends BaseApiClient {
6026
6313
  });
6027
6314
  }
6028
6315
  /** Re-enroll a canceled member back to enrolled status. */
6029
- async reenrollMember(wid, journeyId, memberId) {
6316
+ async reenrollMember(wid, journeyId, data) {
6030
6317
  return this.fetch(`w/${wid}/journeys/${journeyId}/reenroll`, {
6031
6318
  method: "POST",
6032
- body: JSON.stringify({ memberId })
6319
+ body: JSON.stringify(data)
6033
6320
  });
6034
6321
  }
6035
6322
  /** Hard-delete a canceled enrollment so the member can be re-enrolled fresh. */
@@ -6042,6 +6329,18 @@ var JourneysApi = class extends BaseApiClient {
6042
6329
  async getMemberJourneys(wid, memberId) {
6043
6330
  return this.fetch(`w/${wid}/journeys/by-member/${memberId}`);
6044
6331
  }
6332
+ /**
6333
+ * Dry-run heartbeat CEL evaluation for an enrolled member.
6334
+ *
6335
+ * Evaluates all PENDING steps exactly as the heartbeat would, but writes no
6336
+ * state changes. Returns step-by-step results for debugging stuck members.
6337
+ */
6338
+ async testRunJourney(wid, journeyId, memberId) {
6339
+ return this.fetch(
6340
+ `w/${wid}/journeys/${journeyId}/members/${memberId}/test-run`,
6341
+ { method: "POST" }
6342
+ );
6343
+ }
6045
6344
  // ===== JOURNEY NOTES =====
6046
6345
  /** List notes for a journey. */
6047
6346
  async getJourneyNotes(wid, journeyId) {
@@ -6194,6 +6493,30 @@ var WorkflowsApi = class extends BaseApiClient {
6194
6493
  `w/${wid}/workflows/${workflowId}/validate-config`
6195
6494
  );
6196
6495
  }
6496
+ /**
6497
+ * Replay automatic routing for a Chat without performing the transition.
6498
+ *
6499
+ * Operator tool: returns a PHI-safe trace describing what the
6500
+ * automatic-edge evaluator would do at the next turn. Never returns
6501
+ * raw CEL, Form values, Member values, Chat content, or raw
6502
+ * exception strings — only IDs, status labels, and the exception
6503
+ * class name when the evaluator raises.
6504
+ *
6505
+ * Requires Workflow edit permission.
6506
+ */
6507
+ async getWorkflowRouteDryRun(wid, workflowId, args) {
6508
+ const params = new URLSearchParams();
6509
+ params.set("chat_id", String(args.chatId));
6510
+ if (args.currentTaskId !== void 0) {
6511
+ params.set("current_task_id", String(args.currentTaskId));
6512
+ }
6513
+ if (args.currentAssignmentTaskId !== void 0) {
6514
+ params.set("current_assignment_task_id", String(args.currentAssignmentTaskId));
6515
+ }
6516
+ return this.fetch(
6517
+ `w/${wid}/workflows/${workflowId}/route-dry-run?${params.toString()}`
6518
+ );
6519
+ }
6197
6520
  // Workflow Contributors API
6198
6521
  /** List all contributors for a workflow. */
6199
6522
  async getWorkflowContributors(wid, workflowId) {
@@ -6457,6 +6780,13 @@ var Scope = /* @__PURE__ */ ((Scope2) => {
6457
6780
  return Scope2;
6458
6781
  })(Scope || {});
6459
6782
 
6783
+ // src/types/generated/member.ts
6784
+ var BulkMemberResultStatus = {
6785
+ created: "created",
6786
+ updated: "updated",
6787
+ failed: "failed"
6788
+ };
6789
+
6460
6790
  // src/types/member-types.ts
6461
6791
  var MemberType = /* @__PURE__ */ ((MemberType2) => {
6462
6792
  MemberType2["ANONYMOUS"] = "anonymous";
@@ -6493,7 +6823,6 @@ var EventRuleObjectType = /* @__PURE__ */ ((EventRuleObjectType2) => {
6493
6823
  EventRuleObjectType2["WORKFLOW"] = "workflow";
6494
6824
  EventRuleObjectType2["CALENDAR"] = "calendar";
6495
6825
  EventRuleObjectType2["CALENDAR_EVENT_TYPE"] = "calendar_event_type";
6496
- EventRuleObjectType2["MONDAY"] = "monday";
6497
6826
  EventRuleObjectType2["JOURNEY"] = "journey";
6498
6827
  EventRuleObjectType2["CALL"] = "call";
6499
6828
  return EventRuleObjectType2;
@@ -6515,7 +6844,8 @@ var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
6515
6844
  EventRuleEventType2["CALENDAR_EVENT_CANCELLED"] = "calendar_event:cancelled";
6516
6845
  EventRuleEventType2["CALENDAR_EVENT_STARTING"] = "calendar_event:starting";
6517
6846
  EventRuleEventType2["CALENDAR_EVENT_ENDED"] = "calendar_event:ended";
6518
- EventRuleEventType2["MONDAY_WEBHOOK"] = "monday:webhook";
6847
+ EventRuleEventType2["CONNECTOR_EVENT"] = "connector:event";
6848
+ EventRuleEventType2["ASSIGNMENT_CONCLUDED"] = "assignment:concluded";
6519
6849
  EventRuleEventType2["JOURNEY_STEP_EXECUTE"] = "journey_step:execute";
6520
6850
  EventRuleEventType2["JOURNEY_ENROLLED"] = "journey:enrolled";
6521
6851
  EventRuleEventType2["JOURNEY_COMPLETED"] = "journey:completed";
@@ -6535,11 +6865,10 @@ var EventRuleActionType = /* @__PURE__ */ ((EventRuleActionType2) => {
6535
6865
  EventRuleActionType2["MESSAGE_VALIDATION"] = "message:validation";
6536
6866
  EventRuleActionType2["CHAT_CREATE"] = "chat:create";
6537
6867
  EventRuleActionType2["CHAT_CONTINUE"] = "chat:continue";
6868
+ EventRuleActionType2["CHAT_PAUSE"] = "chat:pause";
6538
6869
  EventRuleActionType2["CHAT_SUMMARIZE"] = "chat:summarize";
6539
6870
  EventRuleActionType2["EMAIL_SEND"] = "email:send";
6540
6871
  EventRuleActionType2["INVOKE_CUSTOM_TOOL"] = "custom_tool:invoke";
6541
- EventRuleActionType2["INVOKE_SUPERVISOR"] = "supervisor:invoke";
6542
- EventRuleActionType2["MONDAY_CREATE_ITEM"] = "monday:create_item";
6543
6872
  EventRuleActionType2["MONDAY_UPSERT_ITEM"] = "monday:upsert_item";
6544
6873
  EventRuleActionType2["MONDAY_REFRESH"] = "monday:refresh";
6545
6874
  EventRuleActionType2["ASSIGNMENT_CONCLUDE"] = "assignment:conclude";
@@ -6548,9 +6877,14 @@ var EventRuleActionType = /* @__PURE__ */ ((EventRuleActionType2) => {
6548
6877
  EventRuleActionType2["WHATSAPP_SEND"] = "whatsapp:send";
6549
6878
  EventRuleActionType2["PHONE_CALL"] = "phone:call";
6550
6879
  EventRuleActionType2["CONNECTION_SYNC"] = "connection:sync";
6880
+ EventRuleActionType2["CONNECTOR_OPERATION"] = "connector:operation";
6551
6881
  EventRuleActionType2["ECW_REFRESH_MEMBER_ENCOUNTERS"] = "ecw:refresh_member_encounters";
6882
+ EventRuleActionType2["PLAY_AUDIO"] = "audio:play";
6552
6883
  return EventRuleActionType2;
6553
6884
  })(EventRuleActionType || {});
6885
+ function eventRuleActionParams(params) {
6886
+ return params ?? {};
6887
+ }
6554
6888
  var MASKED_SECRET_SENTINEL = "__SECRET_SET__";
6555
6889
 
6556
6890
  // src/types/billing-types.ts
@@ -6560,6 +6894,7 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
6560
6894
  WorkspaceFeature2["WHATSAPP"] = "whatsapp";
6561
6895
  WorkspaceFeature2["DISCORD"] = "discord";
6562
6896
  WorkspaceFeature2["SLACK"] = "slack";
6897
+ WorkspaceFeature2["TEAMS"] = "teams";
6563
6898
  WorkspaceFeature2["SITES"] = "sites";
6564
6899
  WorkspaceFeature2["FORMS"] = "forms";
6565
6900
  WorkspaceFeature2["MAPS"] = "maps";
@@ -6667,14 +7002,38 @@ var InvitationStatus = /* @__PURE__ */ ((InvitationStatus2) => {
6667
7002
  return InvitationStatus2;
6668
7003
  })(InvitationStatus || {});
6669
7004
 
7005
+ // src/types/generated/ai_model.ts
7006
+ var ModelProvider = {
7007
+ unknown: "unknown",
7008
+ openai: "openai",
7009
+ google: "google",
7010
+ anthropic: "anthropic",
7011
+ aws: "aws",
7012
+ elevenlabs: "elevenlabs",
7013
+ deepgram: "deepgram",
7014
+ pocket: "pocket",
7015
+ xai: "xai",
7016
+ custom: "custom"
7017
+ };
7018
+ var ModelType = {
7019
+ chat: "chat",
7020
+ realtime: "realtime",
7021
+ image: "image",
7022
+ video: "video",
7023
+ stt: "stt",
7024
+ tts: "tts"
7025
+ };
7026
+
6670
7027
  // src/types/ai-model-types.ts
6671
7028
  var REALTIME_MODEL_OPENAI = "openai:realtime:gpt-realtime";
6672
7029
  var REALTIME_MODEL_OPENAI_MINI = "openai:realtime:gpt-realtime-mini";
7030
+ var REALTIME_MODEL_OPENAI_2 = "openai:realtime:gpt-realtime-2";
6673
7031
  var REALTIME_MODEL_GEMINI = "google:aistudio:gemini-3.1-flash-live";
6674
7032
  var REALTIME_MODEL_GEMINI_VERTEX = "google:vertex:gemini-3.1-flash-live";
6675
7033
  var REALTIME_MODEL_NOVA_SONIC = "aws:bedrock:nova-sonic-1";
6676
7034
  var REALTIME_MODEL_CUSTOM = "custom:realtime:composable";
6677
7035
  var STT_MODEL_DEEPGRAM_FLUX = "deepgram:stt:flux-general-en";
7036
+ var STT_MODEL_DEEPGRAM_FLUX_MULTI = "deepgram:stt:flux-general-multi";
6678
7037
  var STT_MODEL_ELEVENLABS_SCRIBE = "elevenlabs:stt:scribe_v2_realtime";
6679
7038
  var TTS_MODEL_ELEVENLABS_FLASH = "elevenlabs:tts:eleven_flash_v2_5";
6680
7039
  var TTS_MODEL_ELEVENLABS_TURBO = "elevenlabs:tts:eleven_turbo_v2_5";
@@ -6754,6 +7113,14 @@ var ConsentMethod = /* @__PURE__ */ ((ConsentMethod2) => {
6754
7113
  return ConsentMethod2;
6755
7114
  })(ConsentMethod || {});
6756
7115
 
7116
+ // src/types/agent-task-types.ts
7117
+ var TERMINAL_TASK_STATES = [
7118
+ "TASK_STATE_COMPLETED",
7119
+ "TASK_STATE_FAILED",
7120
+ "TASK_STATE_CANCELED",
7121
+ "TASK_STATE_REJECTED"
7122
+ ];
7123
+
6757
7124
  // src/api/workspace-invitations.ts
6758
7125
  var WorkspaceInvitationsApi = class extends BaseApiClient {
6759
7126
  /**
@@ -7212,6 +7579,68 @@ var WorkspacesApi = class extends BaseApiClient {
7212
7579
  }
7213
7580
  };
7214
7581
 
7582
+ // src/api/teams-apps.ts
7583
+ var TeamsAppsApi = class extends BaseApiClient {
7584
+ /**
7585
+ * List all Teams apps configured for a workspace.
7586
+ */
7587
+ async getTeamsApps(wid, options = {}) {
7588
+ const params = new URLSearchParams();
7589
+ if (options.page) params.append("page", options.page.toString());
7590
+ if (options.pageSize) params.append("pageSize", options.pageSize.toString());
7591
+ if (options.sortBy) params.append("sortBy", options.sortBy);
7592
+ if (options.sortOrder) params.append("sortOrder", options.sortOrder);
7593
+ if (options.search) params.append("search", options.search);
7594
+ return this.fetch(
7595
+ `w/${wid}/app-connections/teams/apps${params.toString() ? `?${params.toString()}` : ""}`
7596
+ );
7597
+ }
7598
+ async getTeamsApp(wid, appId) {
7599
+ return this.fetch(`w/${wid}/app-connections/teams/apps/${appId}`);
7600
+ }
7601
+ async createTeamsApp(wid, data) {
7602
+ return this.fetch(`w/${wid}/app-connections/teams/apps`, {
7603
+ method: "POST",
7604
+ body: JSON.stringify(data)
7605
+ });
7606
+ }
7607
+ async updateTeamsApp(wid, appId, data) {
7608
+ return this.fetch(`w/${wid}/app-connections/teams/apps/${appId}`, {
7609
+ method: "PUT",
7610
+ body: JSON.stringify(data)
7611
+ });
7612
+ }
7613
+ async deleteTeamsApp(wid, appId) {
7614
+ return this.fetch(`w/${wid}/app-connections/teams/apps/${appId}`, {
7615
+ method: "DELETE"
7616
+ });
7617
+ }
7618
+ async getTeamsConversations(wid, appId, options = {}) {
7619
+ const params = new URLSearchParams();
7620
+ if (options.page) params.append("page", options.page.toString());
7621
+ if (options.pageSize) params.append("pageSize", options.pageSize.toString());
7622
+ return this.fetch(
7623
+ `w/${wid}/app-connections/teams/apps/${appId}/conversations${params.toString() ? `?${params.toString()}` : ""}`
7624
+ );
7625
+ }
7626
+ async getTeamsInstallations(wid, appId, options = {}) {
7627
+ const params = new URLSearchParams();
7628
+ if (options.page) params.append("page", options.page.toString());
7629
+ if (options.pageSize) params.append("pageSize", options.pageSize.toString());
7630
+ return this.fetch(
7631
+ `w/${wid}/app-connections/teams/apps/${appId}/installations${params.toString() ? `?${params.toString()}` : ""}`
7632
+ );
7633
+ }
7634
+ async getTeamsAppAccounts(wid, appId, options = {}) {
7635
+ const params = new URLSearchParams();
7636
+ if (options.page) params.append("page", options.page.toString());
7637
+ if (options.pageSize) params.append("pageSize", options.pageSize.toString());
7638
+ return this.fetch(
7639
+ `w/${wid}/app-connections/teams/apps/${appId}/accounts${params.toString() ? `?${params.toString()}` : ""}`
7640
+ );
7641
+ }
7642
+ };
7643
+
7215
7644
  // src/app-context.ts
7216
7645
  function formatAppContextAsMarkdown(context) {
7217
7646
  if (!context) {
@@ -7298,6 +7727,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
7298
7727
  dataTypes: new DataTypesApi(apiKey, baseUrl, customFetch),
7299
7728
  discordBots: new DiscordBotsApi(apiKey, baseUrl, customFetch),
7300
7729
  slackApps: new SlackAppsApi(apiKey, baseUrl, customFetch),
7730
+ teamsApps: new TeamsAppsApi(apiKey, baseUrl, customFetch),
7301
7731
  events: new EventsApi(apiKey, baseUrl, customFetch),
7302
7732
  fhirConnections: new FhirConnectionsApi(apiKey, baseUrl, customFetch),
7303
7733
  healthie: new HealthieApi(apiKey, baseUrl, customFetch),
@@ -7327,6 +7757,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
7327
7757
  salesforce: new SalesforceApi(apiKey, baseUrl, customFetch),
7328
7758
  sites: new SitesApi(apiKey, baseUrl, customFetch),
7329
7759
  subscriptions: new SubscriptionsApi(apiKey, baseUrl, customFetch),
7760
+ supportRequests: new SupportRequestsApi(apiKey, baseUrl, customFetch),
7330
7761
  supervisors: new SupervisorsApi(apiKey, baseUrl, customFetch),
7331
7762
  tasks: new TasksApi(apiKey, baseUrl, customFetch),
7332
7763
  templates: new TemplatesApi(apiKey, baseUrl, customFetch),
@@ -7855,6 +8286,7 @@ function bindCommunicationsMethods(target, phoneNumbers, inboxes, notificationRu
7855
8286
  target.getInboxThreads = inboxes.getInboxThreads.bind(inboxes);
7856
8287
  target.getThreadEmails = inboxes.getThreadEmails.bind(inboxes);
7857
8288
  target.getChatEmails = inboxes.getChatEmails.bind(inboxes);
8289
+ target.replyToEmail = inboxes.replyToEmail.bind(inboxes);
7858
8290
  target.getNotificationRules = notificationRules.getNotificationRules.bind(notificationRules);
7859
8291
  target.createNotificationRule = notificationRules.createNotificationRule.bind(notificationRules);
7860
8292
  target.updateNotificationRule = notificationRules.updateNotificationRule.bind(notificationRules);
@@ -7954,13 +8386,10 @@ function bindAppsMethods(target, apps, builders, inquiries, oauth, oauthConnecti
7954
8386
  }
7955
8387
 
7956
8388
  // src/client/bindings/integrations.ts
7957
- function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackApps, fhirConnections, healthie, salesforce, hubspot, appConnections, connectionSync, confluence) {
8389
+ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackApps, teamsApps, fhirConnections, healthie, salesforce, hubspot, appConnections, connectionSync, confluence) {
7958
8390
  target.getMondayBoards = mondayIntegration.getBoards.bind(mondayIntegration);
7959
8391
  target.getMondayBoardColumns = mondayIntegration.getBoardColumns.bind(mondayIntegration);
7960
8392
  target.getMondayBoardGroups = mondayIntegration.getBoardGroups.bind(mondayIntegration);
7961
- target.createMondayWebhook = mondayIntegration.createWebhook.bind(mondayIntegration);
7962
- target.deleteMondayWebhook = mondayIntegration.deleteWebhook.bind(mondayIntegration);
7963
- target.getMondayWebhook = mondayIntegration.getWebhook.bind(mondayIntegration);
7964
8393
  target.getMondayCurrentUserInfo = mondayIntegration.getCurrentUserInfo.bind(mondayIntegration);
7965
8394
  target.configureMondayConnection = mondayIntegration.configureMondayConnection.bind(mondayIntegration);
7966
8395
  target.getMondayConnectionStatus = mondayIntegration.getMondayConnectionStatus.bind(mondayIntegration);
@@ -8004,6 +8433,14 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
8004
8433
  target.getSlackThreads = slackApps.getSlackThreads.bind(slackApps);
8005
8434
  target.getSlackInstallations = slackApps.getSlackInstallations.bind(slackApps);
8006
8435
  target.getSlackAppAccounts = slackApps.getSlackAppAccounts.bind(slackApps);
8436
+ target.getTeamsApps = teamsApps.getTeamsApps.bind(teamsApps);
8437
+ target.getTeamsApp = teamsApps.getTeamsApp.bind(teamsApps);
8438
+ target.createTeamsApp = teamsApps.createTeamsApp.bind(teamsApps);
8439
+ target.updateTeamsApp = teamsApps.updateTeamsApp.bind(teamsApps);
8440
+ target.deleteTeamsApp = teamsApps.deleteTeamsApp.bind(teamsApps);
8441
+ target.getTeamsConversations = teamsApps.getTeamsConversations.bind(teamsApps);
8442
+ target.getTeamsInstallations = teamsApps.getTeamsInstallations.bind(teamsApps);
8443
+ target.getTeamsAppAccounts = teamsApps.getTeamsAppAccounts.bind(teamsApps);
8007
8444
  target.getFhirConnections = fhirConnections.getFhirConnections.bind(fhirConnections);
8008
8445
  target.getFhirConnection = fhirConnections.getFhirConnection.bind(fhirConnections);
8009
8446
  target.getFhirConnectionByUuid = fhirConnections.getFhirConnectionByUuid.bind(fhirConnections);
@@ -8044,6 +8481,10 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
8044
8481
  target.getHealthieReconciliationMatches = healthie.getHealthieReconciliationMatches.bind(healthie);
8045
8482
  target.linkMemberToHealthie = healthie.linkMemberToHealthie.bind(healthie);
8046
8483
  target.unlinkMemberFromHealthie = healthie.unlinkMemberFromHealthie.bind(healthie);
8484
+ target.listHealthieAppointmentTypes = healthie.listHealthieAppointmentTypes.bind(healthie);
8485
+ target.listHealthiePatients = healthie.listHealthiePatients.bind(healthie);
8486
+ target.getHealthieAvailableSlots = healthie.getHealthieAvailableSlots.bind(healthie);
8487
+ target.bookHealthieAppointment = healthie.bookHealthieAppointment.bind(healthie);
8047
8488
  target.configureConfluence = confluence.configureConfluence.bind(confluence);
8048
8489
  target.startConfluenceOAuth = confluence.startConfluenceOAuth.bind(confluence);
8049
8490
  target.getConfluenceStatus = confluence.getConfluenceStatus.bind(confluence);
@@ -8096,12 +8537,14 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
8096
8537
  target.getSyncRuns = connectionSync.getSyncRuns.bind(connectionSync);
8097
8538
  target.getSyncRunItems = connectionSync.getSyncRunItems.bind(connectionSync);
8098
8539
  target.getMemberSyncSummary = connectionSync.getMemberSyncSummary.bind(connectionSync);
8540
+ target.clearConnectionMemberExclusion = connectionSync.clearConnectionMemberExclusion.bind(connectionSync);
8099
8541
  target.listAvailableAppConnections = appConnections.listAvailableAppConnections.bind(appConnections);
8100
8542
  target.listAppConnections = appConnections.listAppConnections.bind(appConnections);
8101
8543
  target.enablePlatformApp = appConnections.enablePlatformApp.bind(appConnections);
8102
8544
  target.getPlatformApp = appConnections.getPlatformApp.bind(appConnections);
8103
8545
  target.updatePlatformApp = appConnections.updatePlatformApp.bind(appConnections);
8104
8546
  target.deletePlatformApp = appConnections.deletePlatformApp.bind(appConnections);
8547
+ target.listConnectionMemberFieldKeys = appConnections.listConnectionMemberFieldKeys.bind(appConnections);
8105
8548
  }
8106
8549
 
8107
8550
  // src/client/bindings/operator-groups.ts
@@ -8135,6 +8578,10 @@ function bindOrgMethods(target, org) {
8135
8578
  target.getOrgDomainSite = org.getOrgDomainSite.bind(org);
8136
8579
  target.verifyOrgDomainSite = org.verifyOrgDomainSite.bind(org);
8137
8580
  target.disableOrgDomainSite = org.disableOrgDomainSite.bind(org);
8581
+ target.getBusinessProfile = org.getBusinessProfile.bind(org);
8582
+ target.updateBusinessProfile = org.updateBusinessProfile.bind(org);
8583
+ target.submitBusinessProfile = org.submitBusinessProfile.bind(org);
8584
+ target.cancelBusinessProfile = org.cancelBusinessProfile.bind(org);
8138
8585
  }
8139
8586
 
8140
8587
  // src/client/bindings/pronunciations.ts
@@ -8158,6 +8605,7 @@ function bindPronunciationsMethods(target, pronunciations) {
8158
8605
  function bindJourneysMethods(target, journeys) {
8159
8606
  target.getJourneys = journeys.getJourneys.bind(journeys);
8160
8607
  target.getJourney = journeys.getJourney.bind(journeys);
8608
+ target.getJourneyHealth = journeys.getJourneyHealth.bind(journeys);
8161
8609
  target.createJourney = journeys.createJourney.bind(journeys);
8162
8610
  target.updateJourney = journeys.updateJourney.bind(journeys);
8163
8611
  target.archiveJourney = journeys.archiveJourney.bind(journeys);
@@ -8176,6 +8624,7 @@ function bindJourneysMethods(target, journeys) {
8176
8624
  target.reenrollMember = journeys.reenrollMember.bind(journeys);
8177
8625
  target.deleteEnrollment = journeys.deleteEnrollment.bind(journeys);
8178
8626
  target.getMemberJourneys = journeys.getMemberJourneys.bind(journeys);
8627
+ target.testRunJourney = journeys.testRunJourney.bind(journeys);
8179
8628
  target.getJourneyNotes = journeys.getJourneyNotes.bind(journeys);
8180
8629
  target.createJourneyNote = journeys.createJourneyNote.bind(journeys);
8181
8630
  target.updateJourneyNote = journeys.updateJourneyNote.bind(journeys);
@@ -8221,6 +8670,7 @@ function bindCustomersMethods(target, customers) {
8221
8670
  target.attachMyCustomerPaymentMethod = customers.attachMyCustomerPaymentMethod.bind(customers);
8222
8671
  target.detachMyCustomerPaymentMethod = customers.detachMyCustomerPaymentMethod.bind(customers);
8223
8672
  target.setDefaultMyCustomerPaymentMethod = customers.setDefaultMyCustomerPaymentMethod.bind(customers);
8673
+ target.getMyCustomerCreditGrants = customers.getMyCustomerCreditGrants.bind(customers);
8224
8674
  }
8225
8675
 
8226
8676
  // src/client/bindings/resellers.ts
@@ -8238,6 +8688,23 @@ function bindPromptsMethods(target, prompts) {
8238
8688
  target.inspectPrompt = prompts.inspectPrompt.bind(prompts);
8239
8689
  }
8240
8690
 
8691
+ // src/client/bindings/support-requests.ts
8692
+ function bindSupportRequestMethods(target, supportRequests) {
8693
+ target.listSupportRequests = supportRequests.listSupportRequests.bind(supportRequests);
8694
+ target.getSupportRequest = supportRequests.getSupportRequest.bind(supportRequests);
8695
+ target.createSupportRequest = supportRequests.createSupportRequest.bind(supportRequests);
8696
+ target.commentOnSupportRequest = supportRequests.commentOnSupportRequest.bind(supportRequests);
8697
+ target.listOrgSupportRequests = supportRequests.listOrgSupportRequests.bind(supportRequests);
8698
+ target.getOrgSupportRequest = supportRequests.getOrgSupportRequest.bind(supportRequests);
8699
+ target.createOrgSupportRequest = supportRequests.createOrgSupportRequest.bind(supportRequests);
8700
+ target.commentOnOrgSupportRequest = supportRequests.commentOnOrgSupportRequest.bind(supportRequests);
8701
+ target.listWorkspaceSupportRequests = supportRequests.listWorkspaceSupportRequests.bind(supportRequests);
8702
+ target.getWorkspaceSupportRequest = supportRequests.getWorkspaceSupportRequest.bind(supportRequests);
8703
+ target.createWorkspaceSupportRequest = supportRequests.createWorkspaceSupportRequest.bind(supportRequests);
8704
+ target.commentOnWorkspaceSupportRequest = supportRequests.commentOnWorkspaceSupportRequest.bind(supportRequests);
8705
+ target.closeWorkspaceSupportRequest = supportRequests.closeWorkspaceSupportRequest.bind(supportRequests);
8706
+ }
8707
+
8241
8708
  // src/client/client.ts
8242
8709
  var GravityRailClient = class {
8243
8710
  // WorkspaceInvitations is exposed publicly for backward compatibility
@@ -8412,6 +8879,7 @@ var GravityRailClient = class {
8412
8879
  // Journeys API
8413
8880
  getJourneys;
8414
8881
  getJourney;
8882
+ getJourneyHealth;
8415
8883
  createJourney;
8416
8884
  updateJourney;
8417
8885
  archiveJourney;
@@ -8430,6 +8898,7 @@ var GravityRailClient = class {
8430
8898
  reenrollMember;
8431
8899
  deleteEnrollment;
8432
8900
  getMemberJourneys;
8901
+ testRunJourney;
8433
8902
  getJourneyNotes;
8434
8903
  createJourneyNote;
8435
8904
  updateJourneyNote;
@@ -8519,6 +8988,10 @@ var GravityRailClient = class {
8519
8988
  getOrgDomainSite;
8520
8989
  verifyOrgDomainSite;
8521
8990
  disableOrgDomainSite;
8991
+ getBusinessProfile;
8992
+ updateBusinessProfile;
8993
+ submitBusinessProfile;
8994
+ cancelBusinessProfile;
8522
8995
  getVapidPublicKey;
8523
8996
  registerPushSubscription;
8524
8997
  unregisterPushSubscription;
@@ -8792,6 +9265,7 @@ var GravityRailClient = class {
8792
9265
  getInboxThreads;
8793
9266
  getThreadEmails;
8794
9267
  getChatEmails;
9268
+ replyToEmail;
8795
9269
  getNotificationRules;
8796
9270
  createNotificationRule;
8797
9271
  updateNotificationRule;
@@ -8883,9 +9357,6 @@ var GravityRailClient = class {
8883
9357
  getMondayBoards;
8884
9358
  getMondayBoardColumns;
8885
9359
  getMondayBoardGroups;
8886
- createMondayWebhook;
8887
- deleteMondayWebhook;
8888
- getMondayWebhook;
8889
9360
  getMondayCurrentUserInfo;
8890
9361
  // Monday.com Connection API
8891
9362
  configureMondayConnection;
@@ -8932,6 +9403,15 @@ var GravityRailClient = class {
8932
9403
  getSlackThreads;
8933
9404
  getSlackInstallations;
8934
9405
  getSlackAppAccounts;
9406
+ // Teams Apps API
9407
+ getTeamsApps;
9408
+ getTeamsApp;
9409
+ createTeamsApp;
9410
+ updateTeamsApp;
9411
+ deleteTeamsApp;
9412
+ getTeamsConversations;
9413
+ getTeamsInstallations;
9414
+ getTeamsAppAccounts;
8935
9415
  // FHIR Connections API
8936
9416
  getFhirConnections;
8937
9417
  getFhirConnection;
@@ -8974,6 +9454,10 @@ var GravityRailClient = class {
8974
9454
  getHealthieReconciliationMatches;
8975
9455
  linkMemberToHealthie;
8976
9456
  unlinkMemberFromHealthie;
9457
+ listHealthieAppointmentTypes;
9458
+ listHealthiePatients;
9459
+ getHealthieAvailableSlots;
9460
+ bookHealthieAppointment;
8977
9461
  // Confluence API
8978
9462
  configureConfluence;
8979
9463
  startConfluenceOAuth;
@@ -9030,6 +9514,7 @@ var GravityRailClient = class {
9030
9514
  getSyncRuns;
9031
9515
  getSyncRunItems;
9032
9516
  getMemberSyncSummary;
9517
+ clearConnectionMemberExclusion;
9033
9518
  // App Connections API
9034
9519
  listAvailableAppConnections;
9035
9520
  listAppConnections;
@@ -9037,6 +9522,7 @@ var GravityRailClient = class {
9037
9522
  getPlatformApp;
9038
9523
  updatePlatformApp;
9039
9524
  deletePlatformApp;
9525
+ listConnectionMemberFieldKeys;
9040
9526
  // Pronunciations API
9041
9527
  getPronunciationEntries;
9042
9528
  createPronunciationEntry;
@@ -9063,6 +9549,7 @@ var GravityRailClient = class {
9063
9549
  attachMyCustomerPaymentMethod;
9064
9550
  detachMyCustomerPaymentMethod;
9065
9551
  setDefaultMyCustomerPaymentMethod;
9552
+ getMyCustomerCreditGrants;
9066
9553
  // Resellers API (self-service reseller portal)
9067
9554
  getMyResellers;
9068
9555
  getMyReseller;
@@ -9070,6 +9557,20 @@ var GravityRailClient = class {
9070
9557
  getMyResellerProducts;
9071
9558
  getMyResellerSubscriptions;
9072
9559
  updateMyReseller;
9560
+ // Support Requests API
9561
+ listSupportRequests;
9562
+ getSupportRequest;
9563
+ createSupportRequest;
9564
+ commentOnSupportRequest;
9565
+ listOrgSupportRequests;
9566
+ getOrgSupportRequest;
9567
+ createOrgSupportRequest;
9568
+ commentOnOrgSupportRequest;
9569
+ listWorkspaceSupportRequests;
9570
+ getWorkspaceSupportRequest;
9571
+ createWorkspaceSupportRequest;
9572
+ commentOnWorkspaceSupportRequest;
9573
+ closeWorkspaceSupportRequest;
9073
9574
  constructor(apiKey, baseUrl, customFetch) {
9074
9575
  const apis = createApiModules(apiKey, baseUrl, customFetch);
9075
9576
  this.apis = apis;
@@ -9119,6 +9620,7 @@ var GravityRailClient = class {
9119
9620
  apis.mondayIntegration,
9120
9621
  apis.discordBots,
9121
9622
  apis.slackApps,
9623
+ apis.teamsApps,
9122
9624
  apis.fhirConnections,
9123
9625
  apis.healthie,
9124
9626
  apis.salesforce,
@@ -9130,6 +9632,7 @@ var GravityRailClient = class {
9130
9632
  bindPronunciationsMethods(this, apis.pronunciations);
9131
9633
  bindCustomersMethods(this, apis.customers);
9132
9634
  bindResellersMethods(this, apis.resellers);
9635
+ bindSupportRequestMethods(this, apis.supportRequests);
9133
9636
  }
9134
9637
  /**
9135
9638
  * Set the handler for enhanced authentication requirements (RFC 9470 Step-Up Auth).
@@ -9157,6 +9660,24 @@ var GravityRailClient = class {
9157
9660
  }
9158
9661
  });
9159
9662
  }
9663
+ /**
9664
+ * Set the org token for cross-domain / non-browser clients (e.g. CLI).
9665
+ * When set, all API requests include the X-Org-Token header so the backend
9666
+ * accepts the request without requiring a browser cookie.
9667
+ *
9668
+ * `orgUuid` is the org that issued the token. Pass it so the SDK can
9669
+ * detect a stale token (e.g. switching orgs mid-session) and re-fire the
9670
+ * org-auth handler instead of silently 401-ing.
9671
+ *
9672
+ * Propagates to all API modules.
9673
+ */
9674
+ setOrgToken(token, orgUuid) {
9675
+ Object.values(this.apis).forEach((api) => {
9676
+ if (typeof api.setOrgToken === "function") {
9677
+ api.setOrgToken(token, orgUuid);
9678
+ }
9679
+ });
9680
+ }
9160
9681
  /**
9161
9682
  * Update the API key across all modules.
9162
9683
  * Used after successful re-authentication.
@@ -9217,6 +9738,8 @@ var AbilityTypeSlugs = {
9217
9738
  SUPERVISOR: "oversight:supervisor",
9218
9739
  SUPERVISOR_ACTIONS: "oversight:supervisor_actions",
9219
9740
  ESCALATION: "oversight:escalation",
9741
+ // Identity
9742
+ MEMBER_FIELD_VERIFICATION: "identity:member_field_verification",
9220
9743
  // System (auto-injected, hidden from users)
9221
9744
  USER_MESSAGE_RULES: "system:user_message_rules",
9222
9745
  ASSISTANT_MESSAGE_RULES: "chat:assistant_message_rules",
@@ -9239,7 +9762,8 @@ var TTS_PREVIEW_PROVIDERS = [
9239
9762
  "google",
9240
9763
  "aws",
9241
9764
  "pocket",
9242
- "deepgram"
9765
+ "deepgram",
9766
+ "xai"
9243
9767
  ];
9244
9768
  function getVoiceModelId(entity) {
9245
9769
  const config = entity.realtimeModelConfig;
@@ -9252,6 +9776,129 @@ function canPreviewVoice(entity) {
9252
9776
  return TTS_PREVIEW_PROVIDERS.includes(provider);
9253
9777
  }
9254
9778
 
9779
+ // src/types/chat-types.ts
9780
+ var SMS_DELIVERY_FAILURE_STATUSES = /* @__PURE__ */ new Set([
9781
+ "failed",
9782
+ "undelivered"
9783
+ ]);
9784
+ function isSMSDeliveryFailureStatus(status) {
9785
+ return status != null && SMS_DELIVERY_FAILURE_STATUSES.has(status);
9786
+ }
9787
+
9788
+ // src/types/generated/organization.ts
9789
+ var BusinessIndustry = {
9790
+ AGRICULTURE: "AGRICULTURE",
9791
+ AUTOMOTIVE: "AUTOMOTIVE",
9792
+ BANKING: "BANKING",
9793
+ CONSUMER: "CONSUMER",
9794
+ EDUCATION: "EDUCATION",
9795
+ ELECTRONICS: "ELECTRONICS",
9796
+ ENERGY: "ENERGY",
9797
+ ENGINEERING: "ENGINEERING",
9798
+ FAST_MOVING_CONSUMER_GOODS: "FAST_MOVING_CONSUMER_GOODS",
9799
+ FINANCIAL: "FINANCIAL",
9800
+ FINTECH: "FINTECH",
9801
+ FOOD_AND_BEVERAGE: "FOOD_AND_BEVERAGE",
9802
+ GOVERNMENT: "GOVERNMENT",
9803
+ HEALTHCARE: "HEALTHCARE",
9804
+ HOSPITALITY: "HOSPITALITY",
9805
+ INSURANCE: "INSURANCE",
9806
+ JEWELRY: "JEWELRY",
9807
+ LEGAL: "LEGAL",
9808
+ MANUFACTURING: "MANUFACTURING",
9809
+ MEDIA: "MEDIA",
9810
+ NOT_FOR_PROFIT: "NOT_FOR_PROFIT",
9811
+ OIL_AND_GAS: "OIL_AND_GAS",
9812
+ ONLINE: "ONLINE",
9813
+ RAW_MATERIALS: "RAW_MATERIALS",
9814
+ REAL_ESTATE: "REAL_ESTATE",
9815
+ RELIGION: "RELIGION",
9816
+ RETAIL: "RETAIL",
9817
+ TECHNOLOGY: "TECHNOLOGY",
9818
+ TELECOMMUNICATIONS: "TELECOMMUNICATIONS",
9819
+ TRANSPORTATION: "TRANSPORTATION",
9820
+ TRAVEL: "TRAVEL"
9821
+ };
9822
+ var BusinessType = {
9823
+ Sole_Proprietorship: "Sole Proprietorship",
9824
+ Partnership: "Partnership",
9825
+ Limited_Liability_Corporation: "Limited Liability Corporation",
9826
+ "Co-operative": "Co-operative",
9827
+ "Non-profit_Corporation": "Non-profit Corporation",
9828
+ Corporation: "Corporation"
9829
+ };
9830
+ var EmailDnsRecordType = {
9831
+ TXT: "TXT",
9832
+ CNAME: "CNAME",
9833
+ MX: "MX"
9834
+ };
9835
+ var JobPosition = {
9836
+ Director: "Director",
9837
+ GM: "GM",
9838
+ VP: "VP",
9839
+ CEO: "CEO",
9840
+ CFO: "CFO",
9841
+ General_Counsel: "General Counsel",
9842
+ Other: "Other"
9843
+ };
9844
+ var OIDCAdminConfigViewProviderType = {
9845
+ azure_ad: "azure_ad",
9846
+ okta: "okta",
9847
+ auth0: "auth0",
9848
+ generic: "generic"
9849
+ };
9850
+ var Region = {
9851
+ AFRICA: "AFRICA",
9852
+ ASIA: "ASIA",
9853
+ EUROPE: "EUROPE",
9854
+ LATIN_AMERICA: "LATIN_AMERICA",
9855
+ USA_AND_CANADA: "USA_AND_CANADA",
9856
+ AUSTRALIA: "AUSTRALIA"
9857
+ };
9858
+ var RegistrationIdentifier = {
9859
+ EIN: "EIN",
9860
+ CBN: "CBN",
9861
+ CN: "CN",
9862
+ ACN: "ACN",
9863
+ CIN: "CIN",
9864
+ VAT: "VAT",
9865
+ VATRN: "VATRN",
9866
+ RN: "RN",
9867
+ DUNS: "DUNS",
9868
+ Other: "Other"
9869
+ };
9870
+ var SiteDnsRecordType = {
9871
+ CNAME: "CNAME",
9872
+ A: "A",
9873
+ TXT: "TXT"
9874
+ };
9875
+
9876
+ // src/types/generated/site.ts
9877
+ var MenuItemResponseItemType = {
9878
+ page: "page",
9879
+ url: "url",
9880
+ products: "products",
9881
+ none: "none"
9882
+ };
9883
+
9884
+ // src/types/generated/task.ts
9885
+ var AbilityConfigIssueCode = {
9886
+ missing_resource: "missing_resource",
9887
+ invalid_state: "invalid_state",
9888
+ feature_disabled: "feature_disabled",
9889
+ external_drift: "external_drift"
9890
+ };
9891
+ var AbilityConfigIssueSeverity = {
9892
+ warning: "warning",
9893
+ error: "error"
9894
+ };
9895
+ var WorkflowAccessWarningResourceType = {
9896
+ form: "form",
9897
+ file: "file",
9898
+ folder: "folder",
9899
+ calendar: "calendar"
9900
+ };
9901
+
9255
9902
  // src/features/registry.ts
9256
9903
  var FeatureCategory = /* @__PURE__ */ ((FeatureCategory2) => {
9257
9904
  FeatureCategory2["COMMUNICATION"] = "communication";
@@ -9382,7 +10029,7 @@ function isChatType(value) {
9382
10029
 
9383
10030
  // src/constants/models.ts
9384
10031
  var DEFAULT_CHAT_MODEL = "aws:bedrock:claude-4-5-haiku";
9385
- var DEFAULT_VOICE_INFERENCE_MODEL = "google:aistudio:gemini-3-flash";
10032
+ var DEFAULT_VOICE_INFERENCE_MODEL = "google:vertex:gemini-3-flash";
9386
10033
  var DEFAULT_CUSTOM_VOICE_MODEL = "elevenlabs:voice:river";
9387
10034
 
9388
10035
  // src/types/resource-metadata.ts
@@ -10197,6 +10844,7 @@ export {
10197
10844
  SitesApi,
10198
10845
  SnippetsApi,
10199
10846
  SubscriptionsApi,
10847
+ SupportRequestsApi,
10200
10848
  CustomersApi,
10201
10849
  ResellersApi,
10202
10850
  SupervisorsApi,
@@ -10220,12 +10868,14 @@ export {
10220
10868
  decodePermissions,
10221
10869
  encodePermissions,
10222
10870
  Scope,
10871
+ BulkMemberResultStatus,
10223
10872
  MemberType,
10224
10873
  McpServerState,
10225
10874
  ToolkitState,
10226
10875
  EventRuleObjectType,
10227
10876
  EventRuleEventType,
10228
10877
  EventRuleActionType,
10878
+ eventRuleActionParams,
10229
10879
  MASKED_SECRET_SENTINEL,
10230
10880
  WorkspaceFeature,
10231
10881
  MemberFeature,
@@ -10236,13 +10886,17 @@ export {
10236
10886
  LIMIT_ONLY_RESOURCES,
10237
10887
  WorkspaceProvisionStatus,
10238
10888
  InvitationStatus,
10889
+ ModelProvider,
10890
+ ModelType,
10239
10891
  REALTIME_MODEL_OPENAI,
10240
10892
  REALTIME_MODEL_OPENAI_MINI,
10893
+ REALTIME_MODEL_OPENAI_2,
10241
10894
  REALTIME_MODEL_GEMINI,
10242
10895
  REALTIME_MODEL_GEMINI_VERTEX,
10243
10896
  REALTIME_MODEL_NOVA_SONIC,
10244
10897
  REALTIME_MODEL_CUSTOM,
10245
10898
  STT_MODEL_DEEPGRAM_FLUX,
10899
+ STT_MODEL_DEEPGRAM_FLUX_MULTI,
10246
10900
  STT_MODEL_ELEVENLABS_SCRIBE,
10247
10901
  TTS_MODEL_ELEVENLABS_FLASH,
10248
10902
  TTS_MODEL_ELEVENLABS_TURBO,
@@ -10260,6 +10914,7 @@ export {
10260
10914
  AccessGrantStatus,
10261
10915
  AccessGrantTrigger,
10262
10916
  ConsentMethod,
10917
+ TERMINAL_TASK_STATES,
10263
10918
  WorkspaceInvitationsApi,
10264
10919
  WorkspacesApi,
10265
10920
  formatAppContextAsMarkdown,
@@ -10293,6 +10948,7 @@ export {
10293
10948
  bindCustomersMethods,
10294
10949
  bindResellersMethods,
10295
10950
  bindPromptsMethods,
10951
+ bindSupportRequestMethods,
10296
10952
  GravityRailClient,
10297
10953
  AbilityTypeSlugs,
10298
10954
  DEFAULT_THINKING_SPEECH_PHRASES,
@@ -10300,6 +10956,20 @@ export {
10300
10956
  TTS_PREVIEW_PROVIDERS,
10301
10957
  getVoiceModelId,
10302
10958
  canPreviewVoice,
10959
+ SMS_DELIVERY_FAILURE_STATUSES,
10960
+ isSMSDeliveryFailureStatus,
10961
+ BusinessIndustry,
10962
+ BusinessType,
10963
+ EmailDnsRecordType,
10964
+ JobPosition,
10965
+ OIDCAdminConfigViewProviderType,
10966
+ Region,
10967
+ RegistrationIdentifier,
10968
+ SiteDnsRecordType,
10969
+ MenuItemResponseItemType,
10970
+ AbilityConfigIssueCode,
10971
+ AbilityConfigIssueSeverity,
10972
+ WorkflowAccessWarningResourceType,
10303
10973
  FeatureCategory,
10304
10974
  FeatureVisibility,
10305
10975
  initializeFeatures,
@@ -10333,4 +11003,4 @@ export {
10333
11003
  ScopeManager,
10334
11004
  SCOPE_PRESETS
10335
11005
  };
10336
- //# sourceMappingURL=chunk-3BG2GMJZ.js.map
11006
+ //# sourceMappingURL=chunk-XRKRVY46.js.map