@gravity-rail/sdk 0.18.1 → 0.22.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 (39) hide show
  1. package/dist/{chunk-2YLKG4TT.js → chunk-3HAV5XUJ.js} +1 -1
  2. package/dist/chunk-3HAV5XUJ.js.map +1 -0
  3. package/dist/{chunk-PJFEGUHM.js → chunk-7OLBLLV7.js} +6 -2
  4. package/dist/{chunk-PJFEGUHM.js.map → chunk-7OLBLLV7.js.map} +1 -1
  5. package/dist/{chunk-PUIYXJSZ.js → chunk-WMA6YCAS.js} +496 -41
  6. package/dist/chunk-WMA6YCAS.js.map +1 -0
  7. package/dist/{client-B-jmQ4UA.d.cts → client-C10qSd6b.d.ts} +1678 -285
  8. package/dist/{client-CatNn6FD.d.ts → client-Ct0soeip.d.cts} +1678 -285
  9. package/dist/helpers.cjs +141 -0
  10. package/dist/helpers.cjs.map +1 -1
  11. package/dist/helpers.d.cts +17 -3
  12. package/dist/helpers.d.ts +17 -3
  13. package/dist/helpers.js +127 -1
  14. package/dist/helpers.js.map +1 -1
  15. package/dist/index.cjs +595 -41
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +28 -5
  18. package/dist/index.d.ts +28 -5
  19. package/dist/index.js +123 -5
  20. package/dist/index.js.map +1 -1
  21. package/dist/internal.cjs +502 -41
  22. package/dist/internal.cjs.map +1 -1
  23. package/dist/internal.d.cts +630 -551
  24. package/dist/internal.d.ts +630 -551
  25. package/dist/internal.js +9 -5
  26. package/dist/internal.js.map +1 -1
  27. package/dist/{revision-state-Fw1jsQOa.d.ts → revision-state-C6aM-PHu.d.ts} +53 -172
  28. package/dist/{revision-state-CuESPYpi.d.cts → revision-state-CCPTiW-i.d.cts} +53 -172
  29. package/dist/schemas.cjs +31 -5
  30. package/dist/schemas.cjs.map +1 -1
  31. package/dist/schemas.d.cts +37 -14
  32. package/dist/schemas.d.ts +37 -14
  33. package/dist/schemas.js +31 -6
  34. package/dist/schemas.js.map +1 -1
  35. package/dist/{tasks-GVbVa_Lj.d.cts → tasks-WH_VfzMv.d.cts} +351 -16
  36. package/dist/{tasks-GVbVa_Lj.d.ts → tasks-WH_VfzMv.d.ts} +351 -16
  37. package/package.json +6 -6
  38. package/dist/chunk-2YLKG4TT.js.map +0 -1
  39. package/dist/chunk-PUIYXJSZ.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ApiError,
3
3
  BaseApiClient
4
- } from "./chunk-PJFEGUHM.js";
4
+ } from "./chunk-7OLBLLV7.js";
5
5
 
6
6
  // src/api/abilities.ts
7
7
  var AbilitiesApi = class extends BaseApiClient {
@@ -203,6 +203,7 @@ var AgentsApi = class extends BaseApiClient {
203
203
  if (options.search) params.append("search", options.search);
204
204
  if (options.includeArchived)
205
205
  params.append("includeArchived", options.includeArchived.toString());
206
+ if (options.owner) params.append("owner", options.owner);
206
207
  return this.fetch(
207
208
  `w/${wid}/agents${params.toString() ? `?${params.toString()}` : ""}`
208
209
  );
@@ -596,33 +597,36 @@ var AuthApi = class extends BaseApiClient {
596
597
  });
597
598
  }
598
599
  /** Initiate SMS login by sending a verification code to the given phone number. */
599
- async login(phoneNumber, wid, organizationUuid) {
600
+ async login(phoneNumber, wid, organizationUuid, isSignUp = false) {
600
601
  const params = new URLSearchParams();
601
602
  if (wid) params.append("wid", wid);
602
603
  const body = { phoneNumber: sanitizePhoneForBackend(phoneNumber) };
603
604
  if (organizationUuid) body.organizationUuid = organizationUuid;
605
+ if (isSignUp) body.isSignUp = true;
604
606
  return await this.fetch(`auth/login?${params.toString()}`, {
605
607
  method: "POST",
606
608
  body: JSON.stringify(body)
607
609
  });
608
610
  }
609
611
  /** Resend the SMS verification code to the given phone number. */
610
- async resendCode(phoneNumber, organizationUuid) {
612
+ async resendCode(phoneNumber, organizationUuid, isSignUp = false) {
611
613
  const body = { phoneNumber: sanitizePhoneForBackend(phoneNumber) };
612
614
  if (organizationUuid) body.organizationUuid = organizationUuid;
615
+ if (isSignUp) body.isSignUp = true;
613
616
  return await this.fetch("auth/resend-code", {
614
617
  method: "POST",
615
618
  body: JSON.stringify(body)
616
619
  });
617
620
  }
618
621
  /** Verify an SMS code and complete authentication, handling 2FA if required. */
619
- async verifyCodeWith2FA(phoneNumber, code, organizationUuid) {
622
+ async verifyCodeWith2FA(phoneNumber, code, organizationUuid, isSignUp = false) {
620
623
  const verifyResponse = await this.fetch("auth/verify-with-2fa", {
621
624
  method: "POST",
622
625
  body: JSON.stringify({
623
626
  phoneNumber: sanitizePhoneForBackend(phoneNumber),
624
627
  code,
625
- organizationUuid
628
+ organizationUuid,
629
+ isSignUp
626
630
  })
627
631
  });
628
632
  if (!verifyResponse.requiresTwoFactor && verifyResponse.token) {
@@ -872,14 +876,17 @@ var AuthApi = class extends BaseApiClient {
872
876
  // ===== CREDENTIAL CHANGE METHODS =====
873
877
  /**
874
878
  * Request to change email or phone credential.
875
- * Sends an OTP to the NEW credential to verify ownership.
879
+ * Sends an OTP to the NEW credential to verify ownership. For phone, the
880
+ * code can be delivered by SMS (default) or read aloud over a voice call
881
+ * (`deliveryMethod: 'voice'`) so landlines can be verified too.
876
882
  */
877
- async requestCredentialChange(credentialType, newValue) {
883
+ async requestCredentialChange(credentialType, newValue, deliveryMethod = "sms") {
878
884
  return this.fetch("account/request-credential-change", {
879
885
  method: "POST",
880
886
  body: JSON.stringify({
881
887
  credential_type: credentialType,
882
- new_value: newValue
888
+ new_value: newValue,
889
+ delivery_method: deliveryMethod
883
890
  })
884
891
  });
885
892
  }
@@ -1161,10 +1168,12 @@ var CalendarsApi = class extends BaseApiClient {
1161
1168
  }
1162
1169
  /** Generate or regenerate an iCal feed token for a calendar. */
1163
1170
  async generateICalToken(wid, calendarId, regenerate = false) {
1164
- return this.fetch(`w/${wid}/calendars/${calendarId}/ical-token`, {
1165
- method: "POST",
1166
- body: JSON.stringify({ regenerate })
1167
- });
1171
+ const qs = new URLSearchParams();
1172
+ qs.set("regenerate", regenerate ? "true" : "false");
1173
+ return this.fetch(
1174
+ `w/${wid}/calendars/${calendarId}/ical-token?${qs.toString()}`,
1175
+ { method: "POST" }
1176
+ );
1168
1177
  }
1169
1178
  /** Revoke the iCal feed token for a calendar, disabling external feed access. */
1170
1179
  async revokeICalToken(wid, calendarId) {
@@ -2051,6 +2060,34 @@ var DataTypesApi = class extends BaseApiClient {
2051
2060
  async getFieldIndexStatus(wid, dataTypeId, fieldSlug) {
2052
2061
  return this.fetch(`w/${wid}/data-types/${dataTypeId}/fields/${fieldSlug}/index-status`);
2053
2062
  }
2063
+ /**
2064
+ * Preview renaming a field's slug — read-only.
2065
+ *
2066
+ * A field slug is the key its answers are stored under, so a rename moves
2067
+ * stored data. This reports whether the new slug is allowed, how many records
2068
+ * would move, and every configured place still naming the old slug (CEL,
2069
+ * templates, sync maps) which this rename does NOT rewrite.
2070
+ */
2071
+ async previewRenameFieldSlug(wid, dataTypeId, fieldSlug, newSlug) {
2072
+ return this.fetch(
2073
+ `w/${wid}/data-types/${dataTypeId}/fields/${fieldSlug}/rename-preview`,
2074
+ { method: "POST", body: JSON.stringify({ newSlug }) }
2075
+ );
2076
+ }
2077
+ /**
2078
+ * Rename a field's slug, preserving stored answers.
2079
+ *
2080
+ * The schema change commits synchronously; the answers are moved by the
2081
+ * existing cleanup workflow, so this resolves on ACCEPTANCE, not completion.
2082
+ * Call {@link previewRenameFieldSlug} first — references naming the old slug
2083
+ * are reported, never rewritten.
2084
+ */
2085
+ async renameFieldSlug(wid, dataTypeId, fieldSlug, newSlug) {
2086
+ return this.fetch(
2087
+ `w/${wid}/data-types/${dataTypeId}/fields/${fieldSlug}/rename`,
2088
+ { method: "POST", body: JSON.stringify({ newSlug }) }
2089
+ );
2090
+ }
2054
2091
  /**
2055
2092
  * Validate if a data type slug is available.
2056
2093
  * Returns availability and a suggested alternative if taken.
@@ -2441,6 +2478,7 @@ var EventsApi = class extends BaseApiClient {
2441
2478
  if (options.sortBy) params.append("sortBy", options.sortBy);
2442
2479
  if (options.sortOrder) params.append("sortOrder", options.sortOrder);
2443
2480
  if (options.owner) params.append("owner", options.owner);
2481
+ if (options.ownerId) params.append("ownerId", options.ownerId.toString());
2444
2482
  return this.fetch(
2445
2483
  `w/${wid}/routines${params.toString() ? `?${params.toString()}` : ""}`
2446
2484
  );
@@ -3357,12 +3395,37 @@ var InboxesApi = class extends BaseApiClient {
3357
3395
  });
3358
3396
  }
3359
3397
  /** Reply to an email from the inbox. */
3360
- async replyToEmail(wid, inboxId, emailId, content) {
3398
+ async replyToEmail(wid, inboxId, emailId, content, htmlContent) {
3399
+ const body = { content, htmlContent };
3361
3400
  return this.fetch(`w/${wid}/inboxes/${inboxId}/emails/${emailId}/reply`, {
3362
3401
  method: "POST",
3363
- body: JSON.stringify({ content })
3402
+ body: JSON.stringify(body)
3364
3403
  });
3365
3404
  }
3405
+ /** Compose and send a new email from an inbox. */
3406
+ async sendInboxEmail(wid, inboxId, body) {
3407
+ return this.fetch(`w/${wid}/inboxes/${inboxId}/emails`, {
3408
+ method: "POST",
3409
+ body: JSON.stringify(body)
3410
+ });
3411
+ }
3412
+ /**
3413
+ * Make a stored email's sender a Member of this workspace.
3414
+ *
3415
+ * The explicit alternative to auto-signup for inboxes that accept
3416
+ * non-member mail. Requires `members:write` AND `inboxes:read`. Responds
3417
+ * 409 when a Member already holds the address — gate the call on
3418
+ * `Email.senderIsMember` rather than discovering it from the error.
3419
+ */
3420
+ async addEmailSenderAsMember(wid, inboxId, emailId, body) {
3421
+ return this.fetch(
3422
+ `w/${wid}/inboxes/${inboxId}/emails/${emailId}/add-sender-as-member`,
3423
+ {
3424
+ method: "POST",
3425
+ body: JSON.stringify(body)
3426
+ }
3427
+ );
3428
+ }
3366
3429
  /** Convert an email to text, markdown, or PDF format. */
3367
3430
  async convertEmail(wid, inboxId, emailId, format = "pdf") {
3368
3431
  return this.fetch(
@@ -3705,6 +3768,54 @@ var MembersApi = class extends BaseApiClient {
3705
3768
  async getCurrentMember(wid) {
3706
3769
  return this.fetch(`w/${wid}/me`);
3707
3770
  }
3771
+ /**
3772
+ * One row per workflow available to the member, with its voice state
3773
+ * (Custom Voice). Own-data-or-scope: a member reads their OWN rows with
3774
+ * no member scope; others need members:read.
3775
+ */
3776
+ async getMemberWorkflowVoices(wid, memberId) {
3777
+ return this.fetch(
3778
+ `w/${wid}/members/${memberId}/workflow-voices`
3779
+ );
3780
+ }
3781
+ /** Audition a voice the member can pick for this workflow (PCM16). */
3782
+ async previewMemberWorkflowVoice(wid, memberId, workflowId, body) {
3783
+ const response = await this.fetchRaw(
3784
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}/preview`,
3785
+ { method: "POST", body: JSON.stringify(body) }
3786
+ );
3787
+ return response.arrayBuffer();
3788
+ }
3789
+ /** Set the member's preferred voice for one workflow (Custom Voice). */
3790
+ async setMemberWorkflowVoice(wid, memberId, workflowId, body) {
3791
+ return this.fetch(
3792
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}`,
3793
+ { method: "PUT", body: JSON.stringify(body) }
3794
+ );
3795
+ }
3796
+ /** Clear the member's preferred voice for one workflow (Custom Voice). */
3797
+ async clearMemberWorkflowVoice(wid, memberId, workflowId) {
3798
+ return this.fetch(
3799
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}`,
3800
+ { method: "DELETE" }
3801
+ );
3802
+ }
3803
+ /**
3804
+ * Member-scoped DataTypes the current member may use (self-access — works
3805
+ * on a Site session, which can hold no records scope by construction).
3806
+ */
3807
+ async getMyDataTypes(wid) {
3808
+ return this.fetch(`w/${wid}/me/data-types`);
3809
+ }
3810
+ /** The current member's own records for one DataType (self-access). */
3811
+ async getMyRecords(wid, dataTypeId, options) {
3812
+ const params = new URLSearchParams({ data_type_id: String(dataTypeId) });
3813
+ if (options?.page) params.set("page", String(options.page));
3814
+ if (options?.pageSize) params.set("page_size", String(options.pageSize));
3815
+ return this.fetch(
3816
+ `w/${wid}/me/records?${params.toString()}`
3817
+ );
3818
+ }
3708
3819
  /**
3709
3820
  * Get all members owned by the current member in this workspace.
3710
3821
  * Returns the authenticated member plus any members they own (via owner_id).
@@ -4568,7 +4679,11 @@ var OrgApi = class extends BaseApiClient {
4568
4679
  });
4569
4680
  }
4570
4681
  /**
4571
- * Get the billing customer UUID for an organization.
4682
+ * Get the billing customer and this organization's billable subscription.
4683
+ *
4684
+ * `subscriptionId` is the org-scoped row — never pick the customer's
4685
+ * newest subscription from the list endpoint. One customer can bill many
4686
+ * organizations.
4572
4687
  */
4573
4688
  async getOrgBillingCustomer(orgIdOrUuid) {
4574
4689
  return this.fetch(`o/${orgIdOrUuid}/billing-customer`);
@@ -4908,6 +5023,17 @@ var OrgApi = class extends BaseApiClient {
4908
5023
  async getOrgDomainSite(orgIdOrUuid, domainUuid) {
4909
5024
  return this.fetch(`o/${orgIdOrUuid}/domains/${domainUuid}/site`);
4910
5025
  }
5026
+ /**
5027
+ * Pre-enable DNS check: is the site CNAME resolving to the routing
5028
+ * endpoint yet? Pure DNS — consumes no enable budget.
5029
+ */
5030
+ async preflightOrgDomainSite(orgIdOrUuid, domainUuid) {
5031
+ return this.fetch(
5032
+ `o/${orgIdOrUuid}/domains/${domainUuid}/site/preflight`,
5033
+ // Empty JSON body: the route requires one as a CSRF barrier.
5034
+ { method: "POST", body: JSON.stringify({}) }
5035
+ );
5036
+ }
4911
5037
  /**
4912
5038
  * Verify the site CNAME points at the Gravity Rail sites domain.
4913
5039
  */
@@ -4951,10 +5077,10 @@ var OrgApi = class extends BaseApiClient {
4951
5077
  * is required — brands register per legal entity (Customer Profile);
4952
5078
  * there is no primary-entity fallback.
4953
5079
  */
4954
- async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandDescription, brandUuid = null) {
5080
+ async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandUuid = null) {
4955
5081
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/start`, {
4956
5082
  method: "POST",
4957
- body: JSON.stringify({ legalEntityUuid, brandName, brandDescription, brandUuid })
5083
+ body: JSON.stringify({ legalEntityUuid, brandName, brandUuid })
4958
5084
  });
4959
5085
  }
4960
5086
  /**
@@ -5058,7 +5184,12 @@ var OrgApi = class extends BaseApiClient {
5058
5184
  * Reconcile trust product state against Twilio (discovery + status
5059
5185
  * refresh). Returns the refreshed products plus which product keys were
5060
5186
  * newly discovered. Responds 409 when another Trust Hub operation holds
5061
- * the org lock — retry shortly rather than queueing.
5187
+ * this legal entity's lock, failing fast rather than queueing.
5188
+ *
5189
+ * No `Retry-After` is sent, deliberately (#23601): holders range from a
5190
+ * sub-second JSONB write to a multi-minute Twilio sequence, so no interval
5191
+ * would be honest. Back off on your own schedule, and re-read before
5192
+ * retrying — the operation you collided with may have committed SIDs.
5062
5193
  */
5063
5194
  async syncVoiceTrustProducts(orgUuid, legalEntityUuid) {
5064
5195
  return this.fetch(
@@ -5091,6 +5222,16 @@ var OrgApi = class extends BaseApiClient {
5091
5222
  async listA2PBrands(orgUuid) {
5092
5223
  return this.fetch(`o/${orgUuid}/a2p-brands`);
5093
5224
  }
5225
+ /**
5226
+ * Live per-brand campaign use-case eligibility. Approved brands only — a
5227
+ * brand still under TCR review comes back as a structured 412 the picker
5228
+ * renders as the supported-list fallback, not an error.
5229
+ */
5230
+ async getA2PBrandUseCases(orgUuid, brandUuid) {
5231
+ return this.fetch(
5232
+ `o/${orgUuid}/a2p-brands/${brandUuid}/use-cases`
5233
+ );
5234
+ }
5094
5235
  /**
5095
5236
  * Fetch a brand's resolved A2P campaign config. The response carries both the
5096
5237
  * raw `overrides` and the `resolved` payload (defaults + overrides) the editor
@@ -5945,6 +6086,26 @@ var SalesforceApi = class extends BaseApiClient {
5945
6086
  }
5946
6087
  );
5947
6088
  }
6089
+ /**
6090
+ * Pull linked members' Salesforce records now, ignoring the sync cursor.
6091
+ *
6092
+ * The inbound poll only ever returns records modified after the stored
6093
+ * cursor, so a member linked to a record that has not changed since is
6094
+ * unreachable by any poll and its link never receives a field — silently.
6095
+ * This fetches the records by Id and leaves the cursor untouched, so it is
6096
+ * safe to call at any time.
6097
+ *
6098
+ * Omit `memberIds` to resync every linked member (capped server-side).
6099
+ */
6100
+ async resyncSalesforceLinkedMembers(wid, data = {}) {
6101
+ return this.fetch(
6102
+ `w/${wid}/app-connections/salesforce/sync/resync-members`,
6103
+ {
6104
+ method: "POST",
6105
+ body: JSON.stringify(data)
6106
+ }
6107
+ );
6108
+ }
5948
6109
  /**
5949
6110
  * List the sObjects available in the connected org.
5950
6111
  *
@@ -6544,6 +6705,62 @@ var SubscriptionsApi = class extends BaseApiClient {
6544
6705
  headers: { "Content-Type": "application/json" }
6545
6706
  });
6546
6707
  }
6708
+ /** Purchase a role-granting membership in an existing workspace. */
6709
+ async createMemberCheckoutSession(productId, planPeriod = "month", options = {}) {
6710
+ return this.fetch(`subscriptions/member-checkout-session`, {
6711
+ method: "POST",
6712
+ credentials: "include",
6713
+ body: JSON.stringify({ productId, planPeriod, ...options }),
6714
+ headers: { "Content-Type": "application/json" }
6715
+ });
6716
+ }
6717
+ async getMemberSubscriptionStatus(siteUuidOrOptions) {
6718
+ const options = typeof siteUuidOrOptions === "string" ? { siteUuid: siteUuidOrOptions } : siteUuidOrOptions;
6719
+ const params = new URLSearchParams();
6720
+ if (options.siteUuid) params.set("siteUuid", options.siteUuid);
6721
+ if (options.workspaceUuid) params.set("workspaceUuid", options.workspaceUuid);
6722
+ return this.fetch(
6723
+ `subscriptions/member-subscription?${params.toString()}`,
6724
+ { credentials: "include" }
6725
+ );
6726
+ }
6727
+ /** Open Stripe's hosted membership-management portal. */
6728
+ async createMemberPortalSession(options) {
6729
+ return this.fetch(`subscriptions/member-portal-session`, {
6730
+ method: "POST",
6731
+ credentials: "include",
6732
+ body: JSON.stringify(options),
6733
+ headers: { "Content-Type": "application/json" }
6734
+ });
6735
+ }
6736
+ /**
6737
+ * Purchase one physical companion device (one-time payment; Stripe collects
6738
+ * the shipping address in hosted Checkout).
6739
+ */
6740
+ async createDeviceOrderCheckoutSession(productId, options = {}) {
6741
+ return this.fetch(`device-orders/checkout-session`, {
6742
+ method: "POST",
6743
+ credentials: "include",
6744
+ body: JSON.stringify({ productId, ...options }),
6745
+ headers: { "Content-Type": "application/json" }
6746
+ });
6747
+ }
6748
+ /** List the authenticated Account's own device orders in one workspace. */
6749
+ async listDeviceOrders(options) {
6750
+ const params = new URLSearchParams();
6751
+ if (options.siteUuid) params.set("siteUuid", options.siteUuid);
6752
+ if (options.workspaceUuid) params.set("workspaceUuid", options.workspaceUuid);
6753
+ return this.fetch(`device-orders?${params.toString()}`, {
6754
+ credentials: "include"
6755
+ });
6756
+ }
6757
+ /** Read one authenticated, server-owned checkout attempt. */
6758
+ async getCheckoutAttemptStatus(attemptId) {
6759
+ return this.fetch(
6760
+ `subscriptions/checkout-attempts/${encodeURIComponent(attemptId)}`,
6761
+ { credentials: "include" }
6762
+ );
6763
+ }
6547
6764
  /**
6548
6765
  * List self-service, purchasable organization plans or add-ons. Only products
6549
6766
  * with a Stripe Price are returned; zero-amount plans are allowed.
@@ -6748,6 +6965,9 @@ var CustomersApi = class extends BaseApiClient {
6748
6965
  if (opts?.status) params.set("status", opts.status);
6749
6966
  if (opts?.page !== void 0) params.set("page", String(opts.page));
6750
6967
  if (opts?.pageSize !== void 0) params.set("page_size", String(opts.pageSize));
6968
+ if (opts?.subscriptionId !== void 0) {
6969
+ params.set("subscription_id", String(opts.subscriptionId));
6970
+ }
6751
6971
  const qs = params.toString();
6752
6972
  return this.fetch(`customers/${uuid}/subscriptions${qs ? "?" + qs : ""}`);
6753
6973
  }
@@ -7639,28 +7859,36 @@ var WorkflowsApi = class extends BaseApiClient {
7639
7859
  };
7640
7860
 
7641
7861
  // src/api/workflow-notes.ts
7862
+ function notesPath(wid, workflowId, noteId, query) {
7863
+ const base = noteId == null ? `w/${wid}/workflows/${workflowId}/notes` : `w/${wid}/workflows/${workflowId}/notes/${noteId}`;
7864
+ if (query?.workflowRevisionId == null) return base;
7865
+ const params = new URLSearchParams({
7866
+ workflowRevisionId: String(query.workflowRevisionId)
7867
+ });
7868
+ return `${base}?${params.toString()}`;
7869
+ }
7642
7870
  var WorkflowNotesApi = class extends BaseApiClient {
7643
- /** List all notes for a specific workflow. */
7644
- async getWorkflowNotes(wid, workflowId) {
7645
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes`);
7871
+ /** List notes for a workflow root (draft unless `workflowRevisionId` is set). */
7872
+ async getWorkflowNotes(wid, workflowId, query) {
7873
+ return this.fetch(notesPath(wid, workflowId, void 0, query));
7646
7874
  }
7647
- /** Create a new note on a workflow. */
7648
- async createWorkflowNote(wid, workflowId, data) {
7649
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes`, {
7875
+ /** Create a new note on a workflow's draft (or a pinned draft revision). */
7876
+ async createWorkflowNote(wid, workflowId, data, query) {
7877
+ return this.fetch(notesPath(wid, workflowId, void 0, query), {
7650
7878
  method: "POST",
7651
7879
  body: JSON.stringify(data)
7652
7880
  });
7653
7881
  }
7654
7882
  /** Update an existing workflow note with partial data. */
7655
- async updateWorkflowNote(wid, workflowId, noteId, data) {
7656
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes/${noteId}`, {
7883
+ async updateWorkflowNote(wid, workflowId, noteId, data, query) {
7884
+ return this.fetch(notesPath(wid, workflowId, noteId, query), {
7657
7885
  method: "PUT",
7658
7886
  body: JSON.stringify(data)
7659
7887
  });
7660
7888
  }
7661
7889
  /** Delete a workflow note by ID. */
7662
- async deleteWorkflowNote(wid, workflowId, noteId) {
7663
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes/${noteId}`, {
7890
+ async deleteWorkflowNote(wid, workflowId, noteId, query) {
7891
+ return this.fetch(notesPath(wid, workflowId, noteId, query), {
7664
7892
  method: "DELETE"
7665
7893
  });
7666
7894
  }
@@ -7762,6 +7990,9 @@ var Scope = /* @__PURE__ */ ((Scope2) => {
7762
7990
  Scope2["FILES_READ"] = "files:read";
7763
7991
  Scope2["FILES_WRITE"] = "files:write";
7764
7992
  Scope2["FILES_ADMIN"] = "files:admin";
7993
+ Scope2["DEVICES_READ"] = "devices:read";
7994
+ Scope2["DEVICES_WRITE"] = "devices:write";
7995
+ Scope2["DEVICES_ADMIN"] = "devices:admin";
7765
7996
  Scope2["SITES_READ"] = "sites:read";
7766
7997
  Scope2["SITES_WRITE"] = "sites:write";
7767
7998
  Scope2["SITES_ADMIN"] = "sites:admin";
@@ -7924,6 +8155,7 @@ var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
7924
8155
  EventRuleEventType2["CALENDAR_EVENT_CANCELLED"] = "calendar_event:cancelled";
7925
8156
  EventRuleEventType2["CALENDAR_EVENT_STARTING"] = "calendar_event:starting";
7926
8157
  EventRuleEventType2["CALENDAR_EVENT_ENDED"] = "calendar_event:ended";
8158
+ EventRuleEventType2["CALENDAR_EVENT_NO_SHOW"] = "calendar_event:no_show";
7927
8159
  EventRuleEventType2["CONNECTOR_EVENT"] = "connector:event";
7928
8160
  EventRuleEventType2["ASSIGNMENT_CONCLUDED"] = "assignment:concluded";
7929
8161
  EventRuleEventType2["JOURNEY_STEP_EXECUTE"] = "journey_step:execute";
@@ -8006,7 +8238,6 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
8006
8238
  WorkspaceFeature2["CONFLUENCE"] = "confluence";
8007
8239
  WorkspaceFeature2["AGENT_MEMORY"] = "agent_memory";
8008
8240
  WorkspaceFeature2["IMAGE_GENERATION"] = "image_generation";
8009
- WorkspaceFeature2["STRICT_NATIVE_VOICE"] = "strict_native_voice";
8010
8241
  WorkspaceFeature2["CHARLESTON_NEPHROLOGY_PMD_PAGING"] = "charleston_nephrology_pmd_paging";
8011
8242
  WorkspaceFeature2["PATIENTSYNC_TRANSFER"] = "patientsync_transfer";
8012
8243
  return WorkspaceFeature2;
@@ -8046,6 +8277,8 @@ var Resource = /* @__PURE__ */ ((Resource2) => {
8046
8277
  var ProductType = /* @__PURE__ */ ((ProductType2) => {
8047
8278
  ProductType2["ORG"] = "org";
8048
8279
  ProductType2["ADDON"] = "addon";
8280
+ ProductType2["MEMBER"] = "member";
8281
+ ProductType2["DEVICE"] = "device";
8049
8282
  return ProductType2;
8050
8283
  })(ProductType || {});
8051
8284
  var ORG_ONLY_RESOURCES = /* @__PURE__ */ new Set([
@@ -8053,6 +8286,27 @@ var ORG_ONLY_RESOURCES = /* @__PURE__ */ new Set([
8053
8286
  "org_admin" /* ORG_ADMIN */,
8054
8287
  "phone_number" /* PHONE_NUMBER */
8055
8288
  ]);
8289
+ var MEMBER_SUBSCRIPTION_STATUSES = [
8290
+ "creating",
8291
+ "checkout_pending",
8292
+ "checkout_failed",
8293
+ "incomplete",
8294
+ "incomplete_expired",
8295
+ "trialing",
8296
+ "active",
8297
+ "past_due",
8298
+ "unpaid",
8299
+ "paused",
8300
+ "canceled"
8301
+ ];
8302
+ var MEMBER_ENTITLEMENT_STATUSES = [
8303
+ "pending",
8304
+ "grant_pending",
8305
+ "granted",
8306
+ "revoked",
8307
+ "superseded",
8308
+ "needs_reconcile"
8309
+ ];
8056
8310
 
8057
8311
  // src/types/workspace-types.ts
8058
8312
  var WorkspaceProvisionStatus = /* @__PURE__ */ ((WorkspaceProvisionStatus2) => {
@@ -8107,7 +8361,6 @@ var REALTIME_MODEL_OPENAI_MINI = "openai:realtime:gpt-realtime-mini";
8107
8361
  var REALTIME_MODEL_OPENAI_2 = "openai:realtime:gpt-realtime-2";
8108
8362
  var REALTIME_MODEL_GEMINI = "google:aistudio:gemini-3.1-flash-live";
8109
8363
  var REALTIME_MODEL_GEMINI_VERTEX = "google:vertex:gemini-3.1-flash-live";
8110
- var REALTIME_MODEL_NOVA_SONIC = "aws:bedrock:nova-sonic-1";
8111
8364
  var REALTIME_MODEL_CUSTOM = "custom:realtime:composable";
8112
8365
  var STT_MODEL_DEEPGRAM_FLUX = "deepgram:stt:flux-general-en";
8113
8366
  var STT_MODEL_DEEPGRAM_FLUX_SELFHOST = "deepgram:stt:flux-general-en:selfhost";
@@ -8696,6 +8949,13 @@ var WorkspacesApi = class extends BaseApiClient {
8696
8949
  signal: options?.signal
8697
8950
  });
8698
8951
  }
8952
+ /** Provision the one-month direct organization plan carried by a promo code. */
8953
+ async startPromoPlanTrial(request) {
8954
+ return this.fetch("promo-codes/plan-trial", {
8955
+ method: "POST",
8956
+ body: JSON.stringify(request)
8957
+ });
8958
+ }
8699
8959
  /** Get a publicly accessible product by ID. */
8700
8960
  async getPublicProduct(id) {
8701
8961
  return this.fetch(`products/${id}`);
@@ -8746,15 +9006,47 @@ var WorkspacesApi = class extends BaseApiClient {
8746
9006
  })
8747
9007
  });
8748
9008
  }
8749
- /** Import workspace configuration from exported data. */
8750
- async importWorkspace(wid, exportData, importMappings, createNew) {
9009
+ /** Download a workspace export ZIP (``export.json`` + file blobs). */
9010
+ async exportWorkspaceZip(wid, workflowId, scope, exclude) {
9011
+ const searchParams = new URLSearchParams();
9012
+ if (workflowId !== void 0) searchParams.set("workflow_id", String(workflowId));
9013
+ if (scope !== void 0) searchParams.set("scope", scope);
9014
+ if (exclude !== void 0) searchParams.set("exclude", exclude);
9015
+ const qs = searchParams.toString();
9016
+ const response = await this.fetchRaw(`w/${wid}/export.zip${qs ? `?${qs}` : ""}`);
9017
+ return response.arrayBuffer();
9018
+ }
9019
+ /** Import workspace configuration from exported JSON, or from a ZIP archive.
9020
+ * Pass ``archive`` (the ZIP from ``exportWorkspaceZip``) to restore file
9021
+ * contents. ``exportData`` may be omitted when the ZIP contains it.
9022
+ */
9023
+ async importWorkspace(wid, exportData, importMappings, createNew, archive) {
9024
+ const payload = {
9025
+ importMappings,
9026
+ createNew
9027
+ };
9028
+ if (exportData) {
9029
+ payload.exportData = exportData;
9030
+ }
9031
+ if (archive) {
9032
+ const form = new FormData();
9033
+ form.append(
9034
+ "request",
9035
+ new Blob([JSON.stringify(payload)], { type: "application/json" }),
9036
+ "import.json"
9037
+ );
9038
+ form.append("archive", archive, "workspace-export.zip");
9039
+ return this.fetch(`w/${wid}/import.zip`, {
9040
+ method: "POST",
9041
+ body: form
9042
+ });
9043
+ }
9044
+ if (!exportData) {
9045
+ throw new Error("exportData is required for JSON import");
9046
+ }
8751
9047
  return this.fetch(`w/${wid}/import`, {
8752
9048
  method: "POST",
8753
- body: JSON.stringify({
8754
- exportData,
8755
- importMappings,
8756
- createNew
8757
- })
9049
+ body: JSON.stringify(payload)
8758
9050
  });
8759
9051
  }
8760
9052
  /** Preview a workspace import using the legacy untyped interface. */
@@ -8796,7 +9088,6 @@ var WorkspacesApi = class extends BaseApiClient {
8796
9088
  * Get billing dashboard data for a workspace.
8797
9089
  *
8798
9090
  * This endpoint is available to organization owners (with org:info scope).
8799
- * Superusers should use the admin endpoint via getWorkspaceUsageDashboard.
8800
9091
  *
8801
9092
  * Returns comprehensive billing information including:
8802
9093
  * - Subscription status and plan details
@@ -8880,6 +9171,44 @@ var DashboardsApi = class extends BaseApiClient {
8880
9171
  }
8881
9172
  };
8882
9173
 
9174
+ // src/api/devices.ts
9175
+ var DevicesApi = class extends BaseApiClient {
9176
+ /** List devices visible to the caller (own devices, or all with devices:admin). */
9177
+ async getDevices(wid, options = {}) {
9178
+ const qs = options.mine ? "?mine=true" : "";
9179
+ return this.fetch(`w/${wid}/devices${qs}`);
9180
+ }
9181
+ /** Fetch one device by UUID. Non-owners without devices:admin receive 404. */
9182
+ async getDevice(wid, deviceUuid) {
9183
+ return this.fetch(`w/${wid}/devices/${deviceUuid}`);
9184
+ }
9185
+ /** List shippable companion-device products (Lantern, later SKUs). */
9186
+ async getDeviceKinds(wid) {
9187
+ return this.fetch(`w/${wid}/devices/kinds`);
9188
+ }
9189
+ /** Claim a pairing code shown on a companion device. Requires devices:write. */
9190
+ async claimDevicePairing(wid, body) {
9191
+ return this.fetch(`w/${wid}/devices/pairing/claim`, {
9192
+ method: "POST",
9193
+ body: JSON.stringify(body)
9194
+ });
9195
+ }
9196
+ /** Update display name and/or LAN capability flags. Requires devices:write. */
9197
+ async updateDevice(wid, deviceUuid, body) {
9198
+ return this.fetch(`w/${wid}/devices/${deviceUuid}`, {
9199
+ method: "PATCH",
9200
+ body: JSON.stringify(body)
9201
+ });
9202
+ }
9203
+ /** Revoke a device credential. The device must pair again. Requires devices:write. */
9204
+ async revokeDevice(wid, deviceUuid) {
9205
+ return this.fetch(`w/${wid}/devices/${deviceUuid}/revoke`, {
9206
+ method: "POST",
9207
+ body: JSON.stringify({})
9208
+ });
9209
+ }
9210
+ };
9211
+
8883
9212
  // src/api/teams-apps.ts
8884
9213
  var TeamsAppsApi = class extends BaseApiClient {
8885
9214
  /**
@@ -9183,6 +9512,20 @@ var ProjectsApi = class extends BaseApiClient {
9183
9512
  `w/${wid}/projects/${encodeURIComponent(slug)}/plans/${encodeURIComponent(plan)}`
9184
9513
  );
9185
9514
  }
9515
+ /** Typed update of a project README; absent fields are untouched. */
9516
+ async updateProject(wid, slug, update) {
9517
+ return this.fetch(`w/${wid}/projects/${encodeURIComponent(slug)}`, {
9518
+ method: "PATCH",
9519
+ body: JSON.stringify(update)
9520
+ });
9521
+ }
9522
+ /** Typed update of a plan README; absent fields are untouched. */
9523
+ async updatePlan(wid, slug, plan, update) {
9524
+ return this.fetch(
9525
+ `w/${wid}/projects/${encodeURIComponent(slug)}/plans/${encodeURIComponent(plan)}`,
9526
+ { method: "PATCH", body: JSON.stringify(update) }
9527
+ );
9528
+ }
9186
9529
  };
9187
9530
 
9188
9531
  // src/api/tracked-links.ts
@@ -9382,6 +9725,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9382
9725
  customToolkits: new CustomToolkitsApi(apiKey, baseUrl, customFetch),
9383
9726
  dashboards: new DashboardsApi(apiKey, baseUrl, customFetch),
9384
9727
  dataTypes: new DataTypesApi(apiKey, baseUrl, customFetch),
9728
+ devices: new DevicesApi(apiKey, baseUrl, customFetch),
9385
9729
  discordBots: new DiscordBotsApi(apiKey, baseUrl, customFetch),
9386
9730
  slackApps: new SlackAppsApi(apiKey, baseUrl, customFetch),
9387
9731
  teamsApps: new TeamsAppsApi(apiKey, baseUrl, customFetch),
@@ -9440,6 +9784,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9440
9784
  // src/client/workspace-client.ts
9441
9785
  var WORKSPACE_METHOD_NAMES = [
9442
9786
  "activateWorkflowRevision",
9787
+ "addEmailSenderAsMember",
9443
9788
  "addGroupMember",
9444
9789
  "advanceStep",
9445
9790
  "approveWorkspaceInvitation",
@@ -9470,6 +9815,7 @@ var WORKSPACE_METHOD_NAMES = [
9470
9815
  "checkAvailability",
9471
9816
  "checkSiteDomainAvailability",
9472
9817
  "checkSiteSlugAvailability",
9818
+ "claimDevicePairing",
9473
9819
  "clearConnectionMemberExclusion",
9474
9820
  "clearMemberSwitch",
9475
9821
  "clearTrackedLinkDestinations",
@@ -9657,6 +10003,7 @@ var WORKSPACE_METHOD_NAMES = [
9657
10003
  "exportMembers",
9658
10004
  "exportPhoneNumberOutboundAnalyticsCsv",
9659
10005
  "exportWorkspace",
10006
+ "exportWorkspaceZip",
9660
10007
  "fetchVoicemailAudio",
9661
10008
  "fhirBackfillEncounterSync",
9662
10009
  "fhirCheckPatientLinks",
@@ -9753,6 +10100,11 @@ var WORKSPACE_METHOD_NAMES = [
9753
10100
  "getConnectionSyncConfig",
9754
10101
  "getCredentialUpdateInvites",
9755
10102
  "getCurrentMember",
10103
+ "clearMemberWorkflowVoice",
10104
+ "getMemberWorkflowVoices",
10105
+ "getMyDataTypes",
10106
+ "getMyRecords",
10107
+ "setMemberWorkflowVoice",
9756
10108
  "getCurrentSmsChat",
9757
10109
  "getCustomToolkit",
9758
10110
  "getCustomToolkits",
@@ -9770,6 +10122,9 @@ var WORKSPACE_METHOD_NAMES = [
9770
10122
  "getDataTypeByUuid",
9771
10123
  "getDataTypeBySlug",
9772
10124
  "getDataTypes",
10125
+ "getDevice",
10126
+ "getDeviceKinds",
10127
+ "getDevices",
9773
10128
  "getDiscordBot",
9774
10129
  "getDiscordBotAccounts",
9775
10130
  "getDiscordBotByUuid",
@@ -9923,6 +10278,7 @@ var WORKSPACE_METHOD_NAMES = [
9923
10278
  "getPublicFolderFiles",
9924
10279
  "getPublicProducts",
9925
10280
  "previewPromoCode",
10281
+ "startPromoPlanTrial",
9926
10282
  "getQualification",
9927
10283
  "getQualifications",
9928
10284
  "getRecordingInfo",
@@ -10070,6 +10426,8 @@ var WORKSPACE_METHOD_NAMES = [
10070
10426
  "markNotificationAsRead",
10071
10427
  "mergeMemberRoles",
10072
10428
  "previewImportMembers",
10429
+ "previewMemberWorkflowVoice",
10430
+ "previewRenameFieldSlug",
10073
10431
  "previewImportWorkspace",
10074
10432
  "previewRoutineWorkflowAccess",
10075
10433
  "previewSchedule",
@@ -10082,6 +10440,7 @@ var WORKSPACE_METHOD_NAMES = [
10082
10440
  "rateMessage",
10083
10441
  "getChatFeedback",
10084
10442
  "reenrollMember",
10443
+ "renameFieldSlug",
10085
10444
  "registerLinkedRolesMetadata",
10086
10445
  "registerPushSubscription",
10087
10446
  "reindexFolder",
@@ -10101,6 +10460,7 @@ var WORKSPACE_METHOD_NAMES = [
10101
10460
  "restoreFileVersion",
10102
10461
  "revokeAccessGrant",
10103
10462
  "revokeApiKey",
10463
+ "revokeDevice",
10104
10464
  "revokeICalToken",
10105
10465
  "runRoutine",
10106
10466
  "searchEventRules",
@@ -10110,6 +10470,7 @@ var WORKSPACE_METHOD_NAMES = [
10110
10470
  "selectCurrentAssignmentTask",
10111
10471
  "sendAssistantMessage",
10112
10472
  "sendChatMessage",
10473
+ "sendInboxEmail",
10113
10474
  "sendOperatorMessage",
10114
10475
  "siteGoogleOAuthInitiate",
10115
10476
  "siteSendEmailCode",
@@ -10171,6 +10532,7 @@ var WORKSPACE_METHOD_NAMES = [
10171
10532
  "updateDataRecord",
10172
10533
  "updateDataRecordFilter",
10173
10534
  "updateDataType",
10535
+ "updateDevice",
10174
10536
  "updateDiscordBot",
10175
10537
  "updateEventAttendee",
10176
10538
  "updateEventRule",
@@ -10204,9 +10566,12 @@ var WORKSPACE_METHOD_NAMES = [
10204
10566
  "updatePersona",
10205
10567
  "updatePhoneNumber",
10206
10568
  "updatePlatformApp",
10569
+ "updatePlan",
10207
10570
  "updateProduct",
10571
+ "updateProject",
10208
10572
  "updateRoutine",
10209
10573
  "updateSalesforceSyncConfig",
10574
+ "resyncSalesforceLinkedMembers",
10210
10575
  "updateScenario",
10211
10576
  "updateSite",
10212
10577
  "updateSiteSharing",
@@ -10426,6 +10791,8 @@ function bindDataTypesMethods(target, dataTypes) {
10426
10791
  target.getDataRecordChanges = dataTypes.getDataRecordChanges.bind(dataTypes);
10427
10792
  target.upsertDataRecord = dataTypes.upsertDataRecord.bind(dataTypes);
10428
10793
  target.toggleFieldIndex = dataTypes.toggleFieldIndex.bind(dataTypes);
10794
+ target.previewRenameFieldSlug = dataTypes.previewRenameFieldSlug.bind(dataTypes);
10795
+ target.renameFieldSlug = dataTypes.renameFieldSlug.bind(dataTypes);
10429
10796
  target.getFieldIndexStatus = dataTypes.getFieldIndexStatus.bind(dataTypes);
10430
10797
  target.validateDataTypeSlug = dataTypes.validateDataTypeSlug.bind(dataTypes);
10431
10798
  target.getMemberRecordCounts = dataTypes.getMemberRecordCounts.bind(dataTypes);
@@ -10437,9 +10804,25 @@ function bindDataTypesMethods(target, dataTypes) {
10437
10804
  target.getDataRecordFilterCount = dataTypes.getDataRecordFilterCount.bind(dataTypes);
10438
10805
  }
10439
10806
 
10807
+ // src/client/bindings/devices.ts
10808
+ function bindDevicesMethods(target, devices) {
10809
+ target.getDevices = devices.getDevices.bind(devices);
10810
+ target.getDevice = devices.getDevice.bind(devices);
10811
+ target.getDeviceKinds = devices.getDeviceKinds.bind(devices);
10812
+ target.claimDevicePairing = devices.claimDevicePairing.bind(devices);
10813
+ target.updateDevice = devices.updateDevice.bind(devices);
10814
+ target.revokeDevice = devices.revokeDevice.bind(devices);
10815
+ }
10816
+
10440
10817
  // src/client/bindings/members.ts
10441
10818
  function bindMembersMethods(target, members) {
10442
10819
  target.getCurrentMember = members.getCurrentMember.bind(members);
10820
+ target.getMyDataTypes = members.getMyDataTypes.bind(members);
10821
+ target.getMyRecords = members.getMyRecords.bind(members);
10822
+ target.getMemberWorkflowVoices = members.getMemberWorkflowVoices.bind(members);
10823
+ target.previewMemberWorkflowVoice = members.previewMemberWorkflowVoice.bind(members);
10824
+ target.setMemberWorkflowVoice = members.setMemberWorkflowVoice.bind(members);
10825
+ target.clearMemberWorkflowVoice = members.clearMemberWorkflowVoice.bind(members);
10443
10826
  target.getOwnedMembers = members.getOwnedMembers.bind(members);
10444
10827
  target.switchMember = members.switchMember.bind(members);
10445
10828
  target.clearMemberSwitch = members.clearMemberSwitch.bind(members);
@@ -10532,6 +10915,7 @@ function bindWorkspacesMethods(target, workspaces, signupRequests) {
10532
10915
  target.updateProduct = workspaces.updateProduct.bind(workspaces);
10533
10916
  target.deleteProduct = workspaces.deleteProduct.bind(workspaces);
10534
10917
  target.exportWorkspace = workspaces.exportWorkspace.bind(workspaces);
10918
+ target.exportWorkspaceZip = workspaces.exportWorkspaceZip.bind(workspaces);
10535
10919
  target.previewWorkspaceImport = workspaces.previewWorkspaceImport.bind(workspaces);
10536
10920
  target.importWorkspace = workspaces.importWorkspace.bind(workspaces);
10537
10921
  target.previewImportWorkspace = workspaces.previewImportWorkspace.bind(workspaces);
@@ -10718,6 +11102,8 @@ function bindProjectsMethods(target, projects) {
10718
11102
  target.getProjects = projects.getProjects.bind(projects);
10719
11103
  target.getProject = projects.getProject.bind(projects);
10720
11104
  target.getPlan = projects.getPlan.bind(projects);
11105
+ target.updateProject = projects.updateProject.bind(projects);
11106
+ target.updatePlan = projects.updatePlan.bind(projects);
10721
11107
  }
10722
11108
 
10723
11109
  // src/client/bindings/events.ts
@@ -10878,12 +11264,14 @@ function bindCommunicationsMethods(target, phoneNumbers, inboxes, notificationRu
10878
11264
  target.getInboxEmail = inboxes.getInboxEmail.bind(inboxes);
10879
11265
  target.markEmailAsRead = inboxes.markEmailAsRead.bind(inboxes);
10880
11266
  target.markEmailAsUnread = inboxes.markEmailAsUnread.bind(inboxes);
11267
+ target.addEmailSenderAsMember = inboxes.addEmailSenderAsMember.bind(inboxes);
10881
11268
  target.convertEmail = inboxes.convertEmail.bind(inboxes);
10882
11269
  target.downloadEmailAttachment = inboxes.downloadEmailAttachment.bind(inboxes);
10883
11270
  target.getInboxThreads = inboxes.getInboxThreads.bind(inboxes);
10884
11271
  target.getThreadEmails = inboxes.getThreadEmails.bind(inboxes);
10885
11272
  target.getChatEmails = inboxes.getChatEmails.bind(inboxes);
10886
11273
  target.replyToEmail = inboxes.replyToEmail.bind(inboxes);
11274
+ target.sendInboxEmail = inboxes.sendInboxEmail.bind(inboxes);
10887
11275
  target.getNotificationRules = notificationRules.getNotificationRules.bind(notificationRules);
10888
11276
  target.createNotificationRule = notificationRules.createNotificationRule.bind(notificationRules);
10889
11277
  target.updateNotificationRule = notificationRules.updateNotificationRule.bind(notificationRules);
@@ -10947,6 +11335,12 @@ function bindBillingMethods(target, apiKeys, subscriptions, reports) {
10947
11335
  target.addWorkspaceToSubscription = subscriptions.addWorkspaceToSubscription.bind(subscriptions);
10948
11336
  target.purchaseCredits = subscriptions.purchaseCredits.bind(subscriptions);
10949
11337
  target.createCheckoutSession = subscriptions.createCheckoutSession.bind(subscriptions);
11338
+ target.createMemberCheckoutSession = subscriptions.createMemberCheckoutSession.bind(subscriptions);
11339
+ target.createMemberPortalSession = subscriptions.createMemberPortalSession.bind(subscriptions);
11340
+ target.getMemberSubscriptionStatus = subscriptions.getMemberSubscriptionStatus.bind(subscriptions);
11341
+ target.createDeviceOrderCheckoutSession = subscriptions.createDeviceOrderCheckoutSession.bind(subscriptions);
11342
+ target.listDeviceOrders = subscriptions.listDeviceOrders.bind(subscriptions);
11343
+ target.getCheckoutAttemptStatus = subscriptions.getCheckoutAttemptStatus.bind(subscriptions);
10950
11344
  target.listSelfServeProducts = subscriptions.listSelfServeProducts.bind(subscriptions);
10951
11345
  target.getAIUsageReport = reports.getAIUsageReport.bind(reports);
10952
11346
  target.getSMSUsageReport = reports.getSMSUsageReport.bind(reports);
@@ -11124,6 +11518,7 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
11124
11518
  target.getLinkedSalesforceMembers = salesforce.getLinkedSalesforceMembers.bind(salesforce);
11125
11519
  target.getSalesforceSyncConfig = salesforce.getSalesforceSyncConfig.bind(salesforce);
11126
11520
  target.updateSalesforceSyncConfig = salesforce.updateSalesforceSyncConfig.bind(salesforce);
11521
+ target.resyncSalesforceLinkedMembers = salesforce.resyncSalesforceLinkedMembers.bind(salesforce);
11127
11522
  target.listSalesforceObjects = salesforce.listSalesforceObjects.bind(salesforce);
11128
11523
  target.describeSalesforceObject = salesforce.describeSalesforceObject.bind(salesforce);
11129
11524
  target.searchSalesforceRecords = salesforce.searchSalesforceRecords.bind(salesforce);
@@ -11195,6 +11590,7 @@ function bindOrgMethods(target, org) {
11195
11590
  target.disableOrgDomainEmail = org.disableOrgDomainEmail.bind(org);
11196
11591
  target.enableOrgDomainSite = org.enableOrgDomainSite.bind(org);
11197
11592
  target.getOrgDomainSite = org.getOrgDomainSite.bind(org);
11593
+ target.preflightOrgDomainSite = org.preflightOrgDomainSite.bind(org);
11198
11594
  target.verifyOrgDomainSite = org.verifyOrgDomainSite.bind(org);
11199
11595
  target.disableOrgDomainSite = org.disableOrgDomainSite.bind(org);
11200
11596
  target.getBusinessProfile = org.getBusinessProfile.bind(org);
@@ -11208,6 +11604,8 @@ function bindOrgMethods(target, org) {
11208
11604
  target.syncVoiceTrustProducts = org.syncVoiceTrustProducts.bind(org);
11209
11605
  target.createOrganizationWorkspace = org.createOrganizationWorkspace.bind(org);
11210
11606
  target.getOrgBillingCustomer = org.getOrgBillingCustomer.bind(org);
11607
+ target.getA2PCampaignConfig = org.getA2PCampaignConfig.bind(org);
11608
+ target.updateA2PCampaignConfig = org.updateA2PCampaignConfig.bind(org);
11211
11609
  target.getOrgWorkspaceUsage = org.getOrgWorkspaceUsage.bind(org);
11212
11610
  }
11213
11611
 
@@ -11465,6 +11863,8 @@ var GravityRailClient = class {
11465
11863
  getDataRecordChanges;
11466
11864
  upsertDataRecord;
11467
11865
  toggleFieldIndex;
11866
+ previewRenameFieldSlug;
11867
+ renameFieldSlug;
11468
11868
  getFieldIndexStatus;
11469
11869
  validateDataTypeSlug;
11470
11870
  getMemberRecordCounts;
@@ -11476,6 +11876,12 @@ var GravityRailClient = class {
11476
11876
  getDataRecordFilterCount;
11477
11877
  // Members API
11478
11878
  getCurrentMember;
11879
+ getMyDataTypes;
11880
+ getMyRecords;
11881
+ getMemberWorkflowVoices;
11882
+ previewMemberWorkflowVoice;
11883
+ setMemberWorkflowVoice;
11884
+ clearMemberWorkflowVoice;
11479
11885
  getOwnedMembers;
11480
11886
  switchMember;
11481
11887
  clearMemberSwitch;
@@ -11710,11 +12116,13 @@ var GravityRailClient = class {
11710
12116
  getWorkspaceProduct;
11711
12117
  getPublicProducts;
11712
12118
  previewPromoCode;
12119
+ startPromoPlanTrial;
11713
12120
  getPublicProduct;
11714
12121
  createProduct;
11715
12122
  updateProduct;
11716
12123
  deleteProduct;
11717
12124
  exportWorkspace;
12125
+ exportWorkspaceZip;
11718
12126
  previewWorkspaceImport;
11719
12127
  importWorkspace;
11720
12128
  previewImportWorkspace;
@@ -11741,6 +12149,7 @@ var GravityRailClient = class {
11741
12149
  disableOrgDomainEmail;
11742
12150
  enableOrgDomainSite;
11743
12151
  getOrgDomainSite;
12152
+ preflightOrgDomainSite;
11744
12153
  verifyOrgDomainSite;
11745
12154
  disableOrgDomainSite;
11746
12155
  getBusinessProfile;
@@ -11754,6 +12163,8 @@ var GravityRailClient = class {
11754
12163
  syncVoiceTrustProducts;
11755
12164
  createOrganizationWorkspace;
11756
12165
  getOrgBillingCustomer;
12166
+ getA2PCampaignConfig;
12167
+ updateA2PCampaignConfig;
11757
12168
  getOrgWorkspaceUsage;
11758
12169
  getVapidPublicKey;
11759
12170
  registerPushSubscription;
@@ -11877,6 +12288,8 @@ var GravityRailClient = class {
11877
12288
  getProjects;
11878
12289
  getProject;
11879
12290
  getPlan;
12291
+ updateProject;
12292
+ updatePlan;
11880
12293
  resolveFilePath;
11881
12294
  downloadFilesZip;
11882
12295
  createFile;
@@ -12047,12 +12460,14 @@ var GravityRailClient = class {
12047
12460
  getInboxEmail;
12048
12461
  markEmailAsRead;
12049
12462
  markEmailAsUnread;
12463
+ addEmailSenderAsMember;
12050
12464
  convertEmail;
12051
12465
  downloadEmailAttachment;
12052
12466
  getInboxThreads;
12053
12467
  getThreadEmails;
12054
12468
  getChatEmails;
12055
12469
  replyToEmail;
12470
+ sendInboxEmail;
12056
12471
  getNotificationRules;
12057
12472
  createNotificationRule;
12058
12473
  updateNotificationRule;
@@ -12095,6 +12510,13 @@ var GravityRailClient = class {
12095
12510
  getFeatureRegistry;
12096
12511
  getPublicFeatureRegistry;
12097
12512
  getFeatureBySlug;
12513
+ // Devices API
12514
+ getDevices;
12515
+ getDevice;
12516
+ getDeviceKinds;
12517
+ claimDevicePairing;
12518
+ updateDevice;
12519
+ revokeDevice;
12098
12520
  // Billing API
12099
12521
  getApiKeys;
12100
12522
  createApiKey;
@@ -12110,6 +12532,12 @@ var GravityRailClient = class {
12110
12532
  addWorkspaceToSubscription;
12111
12533
  purchaseCredits;
12112
12534
  createCheckoutSession;
12535
+ createMemberCheckoutSession;
12536
+ createMemberPortalSession;
12537
+ getMemberSubscriptionStatus;
12538
+ createDeviceOrderCheckoutSession;
12539
+ listDeviceOrders;
12540
+ getCheckoutAttemptStatus;
12113
12541
  listSelfServeProducts;
12114
12542
  getAIUsageReport;
12115
12543
  getSMSUsageReport;
@@ -12289,6 +12717,7 @@ var GravityRailClient = class {
12289
12717
  getLinkedSalesforceMembers;
12290
12718
  getSalesforceSyncConfig;
12291
12719
  updateSalesforceSyncConfig;
12720
+ resyncSalesforceLinkedMembers;
12292
12721
  listSalesforceObjects;
12293
12722
  describeSalesforceObject;
12294
12723
  searchSalesforceRecords;
@@ -12391,6 +12820,7 @@ var GravityRailClient = class {
12391
12820
  bindChatsMethods(this, apis.chats);
12392
12821
  bindCallsMethods(this, apis.calls, apis.cel);
12393
12822
  bindDataTypesMethods(this, apis.dataTypes);
12823
+ bindDevicesMethods(this, apis.devices);
12394
12824
  bindMembersMethods(this, apis.members);
12395
12825
  bindAgentTasksMethods(this, apis.agentTasks);
12396
12826
  bindAgentsMethods(this, apis.agents);
@@ -12583,6 +13013,7 @@ var AbilityTypeSlugs = {
12583
13013
  SEND_WHATSAPP: "communication:send_whatsapp",
12584
13014
  MEMBER_ACCESS: "communication:member_access",
12585
13015
  AUDIO_PLAYBACK: "communication:audio_playback",
13016
+ IMAGE_DISPLAY: "communication:image_display",
12586
13017
  // Oversight
12587
13018
  SUPERVISOR: "oversight:supervisor",
12588
13019
  SUPERVISOR_ACTIONS: "oversight:supervisor_actions",
@@ -12591,6 +13022,7 @@ var AbilityTypeSlugs = {
12591
13022
  MEMBER_FIELD_VERIFICATION: "identity:member_field_verification",
12592
13023
  // Delegation
12593
13024
  CONTRIBUTOR: "delegation:contributor",
13025
+ MANAGE_WORKSPACE: "delegation:manage_workspace",
12594
13026
  // Workflow
12595
13027
  WORKFLOW_RUN: "workflow:run",
12596
13028
  // Commerce
@@ -12923,7 +13355,7 @@ function isChatType(value) {
12923
13355
 
12924
13356
  // src/constants/models.ts
12925
13357
  var DEFAULT_CHAT_MODEL = "aws:bedrock:claude-4-5-haiku";
12926
- var DEFAULT_VOICE_INFERENCE_MODEL = "google:vertex:gemini-3-flash";
13358
+ var DEFAULT_VOICE_INFERENCE_MODEL = "openai:chat:gpt-5.6-luna";
12927
13359
  var DEFAULT_CUSTOM_VOICE_MODEL = "elevenlabs:voice:river";
12928
13360
 
12929
13361
  // src/types/resource-metadata.ts
@@ -13027,6 +13459,7 @@ var ScopeCategory = /* @__PURE__ */ ((ScopeCategory2) => {
13027
13459
  ScopeCategory2["DATATYPES"] = "datatypes";
13028
13460
  ScopeCategory2["RECORDS"] = "records";
13029
13461
  ScopeCategory2["FILES"] = "files";
13462
+ ScopeCategory2["DEVICES"] = "devices";
13030
13463
  ScopeCategory2["JOURNEYS"] = "journeys";
13031
13464
  ScopeCategory2["EXPERIMENTS"] = "experiments";
13032
13465
  ScopeCategory2["SITES"] = "sites";
@@ -13271,6 +13704,26 @@ var SCOPES = {
13271
13704
  implies: ["files:write"]
13272
13705
  },
13273
13706
  // =========================================================================
13707
+ // DEVICES
13708
+ // =========================================================================
13709
+ "devices:read": {
13710
+ name: "devices:read",
13711
+ category: "devices" /* DEVICES */,
13712
+ description: "View companion devices"
13713
+ },
13714
+ "devices:write": {
13715
+ name: "devices:write",
13716
+ category: "devices" /* DEVICES */,
13717
+ description: "Enrol and manage own companion devices",
13718
+ implies: ["devices:read"]
13719
+ },
13720
+ "devices:admin": {
13721
+ name: "devices:admin",
13722
+ category: "devices" /* DEVICES */,
13723
+ description: "List and revoke any companion device",
13724
+ implies: ["devices:write"]
13725
+ },
13726
+ // =========================================================================
13274
13727
  // JOURNEYS
13275
13728
  // =========================================================================
13276
13729
  "journeys:read": {
@@ -13770,6 +14223,8 @@ export {
13770
14223
  Resource,
13771
14224
  ProductType,
13772
14225
  ORG_ONLY_RESOURCES,
14226
+ MEMBER_SUBSCRIPTION_STATUSES,
14227
+ MEMBER_ENTITLEMENT_STATUSES,
13773
14228
  WorkspaceProvisionStatus,
13774
14229
  InvitationStatus,
13775
14230
  ModelProvider,
@@ -13779,7 +14234,6 @@ export {
13779
14234
  REALTIME_MODEL_OPENAI_2,
13780
14235
  REALTIME_MODEL_GEMINI,
13781
14236
  REALTIME_MODEL_GEMINI_VERTEX,
13782
- REALTIME_MODEL_NOVA_SONIC,
13783
14237
  REALTIME_MODEL_CUSTOM,
13784
14238
  STT_MODEL_DEEPGRAM_FLUX,
13785
14239
  STT_MODEL_DEEPGRAM_FLUX_SELFHOST,
@@ -13836,6 +14290,7 @@ export {
13836
14290
  bindMotdMethods,
13837
14291
  bindTrackedLinksMethods,
13838
14292
  bindDataTypesMethods,
14293
+ bindDevicesMethods,
13839
14294
  bindMembersMethods,
13840
14295
  bindWorkspacesMethods,
13841
14296
  bindAuthMethods,
@@ -13924,4 +14379,4 @@ export {
13924
14379
  SCOPE_PRESETS,
13925
14380
  getRevisionState
13926
14381
  };
13927
- //# sourceMappingURL=chunk-PUIYXJSZ.js.map
14382
+ //# sourceMappingURL=chunk-WMA6YCAS.js.map