@gravity-rail/sdk 0.18.1 → 0.21.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-PUIYXJSZ.js → chunk-24L4RD4Z.js} +479 -39
  2. package/dist/chunk-24L4RD4Z.js.map +1 -0
  3. package/dist/{chunk-2YLKG4TT.js → chunk-3HAV5XUJ.js} +1 -1
  4. package/dist/chunk-3HAV5XUJ.js.map +1 -0
  5. package/dist/{chunk-PJFEGUHM.js → chunk-7OLBLLV7.js} +6 -2
  6. package/dist/{chunk-PJFEGUHM.js.map → chunk-7OLBLLV7.js.map} +1 -1
  7. package/dist/{client-B-jmQ4UA.d.cts → client-B0eh2BEY.d.cts} +1315 -285
  8. package/dist/{client-CatNn6FD.d.ts → client-CFz-BGmY.d.ts} +1315 -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 +578 -39
  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 +485 -39
  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-KfOztBkY.d.ts} +53 -172
  28. package/dist/{revision-state-CuESPYpi.d.cts → revision-state-fJ9PM15N.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
  );
@@ -3363,6 +3401,23 @@ var InboxesApi = class extends BaseApiClient {
3363
3401
  body: JSON.stringify({ content })
3364
3402
  });
3365
3403
  }
3404
+ /**
3405
+ * Make a stored email's sender a Member of this workspace.
3406
+ *
3407
+ * The explicit alternative to auto-signup for inboxes that accept
3408
+ * non-member mail. Requires `members:write` AND `inboxes:read`. Responds
3409
+ * 409 when a Member already holds the address — gate the call on
3410
+ * `Email.senderIsMember` rather than discovering it from the error.
3411
+ */
3412
+ async addEmailSenderAsMember(wid, inboxId, emailId, body) {
3413
+ return this.fetch(
3414
+ `w/${wid}/inboxes/${inboxId}/emails/${emailId}/add-sender-as-member`,
3415
+ {
3416
+ method: "POST",
3417
+ body: JSON.stringify(body)
3418
+ }
3419
+ );
3420
+ }
3366
3421
  /** Convert an email to text, markdown, or PDF format. */
3367
3422
  async convertEmail(wid, inboxId, emailId, format = "pdf") {
3368
3423
  return this.fetch(
@@ -3705,6 +3760,54 @@ var MembersApi = class extends BaseApiClient {
3705
3760
  async getCurrentMember(wid) {
3706
3761
  return this.fetch(`w/${wid}/me`);
3707
3762
  }
3763
+ /**
3764
+ * One row per workflow available to the member, with its voice state
3765
+ * (Custom Voice). Own-data-or-scope: a member reads their OWN rows with
3766
+ * no member scope; others need members:read.
3767
+ */
3768
+ async getMemberWorkflowVoices(wid, memberId) {
3769
+ return this.fetch(
3770
+ `w/${wid}/members/${memberId}/workflow-voices`
3771
+ );
3772
+ }
3773
+ /** Audition a voice the member can pick for this workflow (PCM16). */
3774
+ async previewMemberWorkflowVoice(wid, memberId, workflowId, body) {
3775
+ const response = await this.fetchRaw(
3776
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}/preview`,
3777
+ { method: "POST", body: JSON.stringify(body) }
3778
+ );
3779
+ return response.arrayBuffer();
3780
+ }
3781
+ /** Set the member's preferred voice for one workflow (Custom Voice). */
3782
+ async setMemberWorkflowVoice(wid, memberId, workflowId, body) {
3783
+ return this.fetch(
3784
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}`,
3785
+ { method: "PUT", body: JSON.stringify(body) }
3786
+ );
3787
+ }
3788
+ /** Clear the member's preferred voice for one workflow (Custom Voice). */
3789
+ async clearMemberWorkflowVoice(wid, memberId, workflowId) {
3790
+ return this.fetch(
3791
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}`,
3792
+ { method: "DELETE" }
3793
+ );
3794
+ }
3795
+ /**
3796
+ * Member-scoped DataTypes the current member may use (self-access — works
3797
+ * on a Site session, which can hold no records scope by construction).
3798
+ */
3799
+ async getMyDataTypes(wid) {
3800
+ return this.fetch(`w/${wid}/me/data-types`);
3801
+ }
3802
+ /** The current member's own records for one DataType (self-access). */
3803
+ async getMyRecords(wid, dataTypeId, options) {
3804
+ const params = new URLSearchParams({ data_type_id: String(dataTypeId) });
3805
+ if (options?.page) params.set("page", String(options.page));
3806
+ if (options?.pageSize) params.set("page_size", String(options.pageSize));
3807
+ return this.fetch(
3808
+ `w/${wid}/me/records?${params.toString()}`
3809
+ );
3810
+ }
3708
3811
  /**
3709
3812
  * Get all members owned by the current member in this workspace.
3710
3813
  * Returns the authenticated member plus any members they own (via owner_id).
@@ -4568,7 +4671,11 @@ var OrgApi = class extends BaseApiClient {
4568
4671
  });
4569
4672
  }
4570
4673
  /**
4571
- * Get the billing customer UUID for an organization.
4674
+ * Get the billing customer and this organization's billable subscription.
4675
+ *
4676
+ * `subscriptionId` is the org-scoped row — never pick the customer's
4677
+ * newest subscription from the list endpoint. One customer can bill many
4678
+ * organizations.
4572
4679
  */
4573
4680
  async getOrgBillingCustomer(orgIdOrUuid) {
4574
4681
  return this.fetch(`o/${orgIdOrUuid}/billing-customer`);
@@ -4908,6 +5015,17 @@ var OrgApi = class extends BaseApiClient {
4908
5015
  async getOrgDomainSite(orgIdOrUuid, domainUuid) {
4909
5016
  return this.fetch(`o/${orgIdOrUuid}/domains/${domainUuid}/site`);
4910
5017
  }
5018
+ /**
5019
+ * Pre-enable DNS check: is the site CNAME resolving to the routing
5020
+ * endpoint yet? Pure DNS — consumes no enable budget.
5021
+ */
5022
+ async preflightOrgDomainSite(orgIdOrUuid, domainUuid) {
5023
+ return this.fetch(
5024
+ `o/${orgIdOrUuid}/domains/${domainUuid}/site/preflight`,
5025
+ // Empty JSON body: the route requires one as a CSRF barrier.
5026
+ { method: "POST", body: JSON.stringify({}) }
5027
+ );
5028
+ }
4911
5029
  /**
4912
5030
  * Verify the site CNAME points at the Gravity Rail sites domain.
4913
5031
  */
@@ -4951,10 +5069,10 @@ var OrgApi = class extends BaseApiClient {
4951
5069
  * is required — brands register per legal entity (Customer Profile);
4952
5070
  * there is no primary-entity fallback.
4953
5071
  */
4954
- async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandDescription, brandUuid = null) {
5072
+ async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandUuid = null) {
4955
5073
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/start`, {
4956
5074
  method: "POST",
4957
- body: JSON.stringify({ legalEntityUuid, brandName, brandDescription, brandUuid })
5075
+ body: JSON.stringify({ legalEntityUuid, brandName, brandUuid })
4958
5076
  });
4959
5077
  }
4960
5078
  /**
@@ -5058,7 +5176,12 @@ var OrgApi = class extends BaseApiClient {
5058
5176
  * Reconcile trust product state against Twilio (discovery + status
5059
5177
  * refresh). Returns the refreshed products plus which product keys were
5060
5178
  * newly discovered. Responds 409 when another Trust Hub operation holds
5061
- * the org lock — retry shortly rather than queueing.
5179
+ * this legal entity's lock, failing fast rather than queueing.
5180
+ *
5181
+ * No `Retry-After` is sent, deliberately (#23601): holders range from a
5182
+ * sub-second JSONB write to a multi-minute Twilio sequence, so no interval
5183
+ * would be honest. Back off on your own schedule, and re-read before
5184
+ * retrying — the operation you collided with may have committed SIDs.
5062
5185
  */
5063
5186
  async syncVoiceTrustProducts(orgUuid, legalEntityUuid) {
5064
5187
  return this.fetch(
@@ -5091,6 +5214,16 @@ var OrgApi = class extends BaseApiClient {
5091
5214
  async listA2PBrands(orgUuid) {
5092
5215
  return this.fetch(`o/${orgUuid}/a2p-brands`);
5093
5216
  }
5217
+ /**
5218
+ * Live per-brand campaign use-case eligibility. Approved brands only — a
5219
+ * brand still under TCR review comes back as a structured 412 the picker
5220
+ * renders as the supported-list fallback, not an error.
5221
+ */
5222
+ async getA2PBrandUseCases(orgUuid, brandUuid) {
5223
+ return this.fetch(
5224
+ `o/${orgUuid}/a2p-brands/${brandUuid}/use-cases`
5225
+ );
5226
+ }
5094
5227
  /**
5095
5228
  * Fetch a brand's resolved A2P campaign config. The response carries both the
5096
5229
  * raw `overrides` and the `resolved` payload (defaults + overrides) the editor
@@ -5945,6 +6078,26 @@ var SalesforceApi = class extends BaseApiClient {
5945
6078
  }
5946
6079
  );
5947
6080
  }
6081
+ /**
6082
+ * Pull linked members' Salesforce records now, ignoring the sync cursor.
6083
+ *
6084
+ * The inbound poll only ever returns records modified after the stored
6085
+ * cursor, so a member linked to a record that has not changed since is
6086
+ * unreachable by any poll and its link never receives a field — silently.
6087
+ * This fetches the records by Id and leaves the cursor untouched, so it is
6088
+ * safe to call at any time.
6089
+ *
6090
+ * Omit `memberIds` to resync every linked member (capped server-side).
6091
+ */
6092
+ async resyncSalesforceLinkedMembers(wid, data = {}) {
6093
+ return this.fetch(
6094
+ `w/${wid}/app-connections/salesforce/sync/resync-members`,
6095
+ {
6096
+ method: "POST",
6097
+ body: JSON.stringify(data)
6098
+ }
6099
+ );
6100
+ }
5948
6101
  /**
5949
6102
  * List the sObjects available in the connected org.
5950
6103
  *
@@ -6544,6 +6697,62 @@ var SubscriptionsApi = class extends BaseApiClient {
6544
6697
  headers: { "Content-Type": "application/json" }
6545
6698
  });
6546
6699
  }
6700
+ /** Purchase a role-granting membership in an existing workspace. */
6701
+ async createMemberCheckoutSession(productId, planPeriod = "month", options = {}) {
6702
+ return this.fetch(`subscriptions/member-checkout-session`, {
6703
+ method: "POST",
6704
+ credentials: "include",
6705
+ body: JSON.stringify({ productId, planPeriod, ...options }),
6706
+ headers: { "Content-Type": "application/json" }
6707
+ });
6708
+ }
6709
+ async getMemberSubscriptionStatus(siteUuidOrOptions) {
6710
+ const options = typeof siteUuidOrOptions === "string" ? { siteUuid: siteUuidOrOptions } : siteUuidOrOptions;
6711
+ const params = new URLSearchParams();
6712
+ if (options.siteUuid) params.set("siteUuid", options.siteUuid);
6713
+ if (options.workspaceUuid) params.set("workspaceUuid", options.workspaceUuid);
6714
+ return this.fetch(
6715
+ `subscriptions/member-subscription?${params.toString()}`,
6716
+ { credentials: "include" }
6717
+ );
6718
+ }
6719
+ /** Open Stripe's hosted membership-management portal. */
6720
+ async createMemberPortalSession(options) {
6721
+ return this.fetch(`subscriptions/member-portal-session`, {
6722
+ method: "POST",
6723
+ credentials: "include",
6724
+ body: JSON.stringify(options),
6725
+ headers: { "Content-Type": "application/json" }
6726
+ });
6727
+ }
6728
+ /**
6729
+ * Purchase one physical companion device (one-time payment; Stripe collects
6730
+ * the shipping address in hosted Checkout).
6731
+ */
6732
+ async createDeviceOrderCheckoutSession(productId, options = {}) {
6733
+ return this.fetch(`device-orders/checkout-session`, {
6734
+ method: "POST",
6735
+ credentials: "include",
6736
+ body: JSON.stringify({ productId, ...options }),
6737
+ headers: { "Content-Type": "application/json" }
6738
+ });
6739
+ }
6740
+ /** List the authenticated Account's own device orders in one workspace. */
6741
+ async listDeviceOrders(options) {
6742
+ const params = new URLSearchParams();
6743
+ if (options.siteUuid) params.set("siteUuid", options.siteUuid);
6744
+ if (options.workspaceUuid) params.set("workspaceUuid", options.workspaceUuid);
6745
+ return this.fetch(`device-orders?${params.toString()}`, {
6746
+ credentials: "include"
6747
+ });
6748
+ }
6749
+ /** Read one authenticated, server-owned checkout attempt. */
6750
+ async getCheckoutAttemptStatus(attemptId) {
6751
+ return this.fetch(
6752
+ `subscriptions/checkout-attempts/${encodeURIComponent(attemptId)}`,
6753
+ { credentials: "include" }
6754
+ );
6755
+ }
6547
6756
  /**
6548
6757
  * List self-service, purchasable organization plans or add-ons. Only products
6549
6758
  * with a Stripe Price are returned; zero-amount plans are allowed.
@@ -6748,6 +6957,9 @@ var CustomersApi = class extends BaseApiClient {
6748
6957
  if (opts?.status) params.set("status", opts.status);
6749
6958
  if (opts?.page !== void 0) params.set("page", String(opts.page));
6750
6959
  if (opts?.pageSize !== void 0) params.set("page_size", String(opts.pageSize));
6960
+ if (opts?.subscriptionId !== void 0) {
6961
+ params.set("subscription_id", String(opts.subscriptionId));
6962
+ }
6751
6963
  const qs = params.toString();
6752
6964
  return this.fetch(`customers/${uuid}/subscriptions${qs ? "?" + qs : ""}`);
6753
6965
  }
@@ -7639,28 +7851,36 @@ var WorkflowsApi = class extends BaseApiClient {
7639
7851
  };
7640
7852
 
7641
7853
  // src/api/workflow-notes.ts
7854
+ function notesPath(wid, workflowId, noteId, query) {
7855
+ const base = noteId == null ? `w/${wid}/workflows/${workflowId}/notes` : `w/${wid}/workflows/${workflowId}/notes/${noteId}`;
7856
+ if (query?.workflowRevisionId == null) return base;
7857
+ const params = new URLSearchParams({
7858
+ workflowRevisionId: String(query.workflowRevisionId)
7859
+ });
7860
+ return `${base}?${params.toString()}`;
7861
+ }
7642
7862
  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`);
7863
+ /** List notes for a workflow root (draft unless `workflowRevisionId` is set). */
7864
+ async getWorkflowNotes(wid, workflowId, query) {
7865
+ return this.fetch(notesPath(wid, workflowId, void 0, query));
7646
7866
  }
7647
- /** Create a new note on a workflow. */
7648
- async createWorkflowNote(wid, workflowId, data) {
7649
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes`, {
7867
+ /** Create a new note on a workflow's draft (or a pinned draft revision). */
7868
+ async createWorkflowNote(wid, workflowId, data, query) {
7869
+ return this.fetch(notesPath(wid, workflowId, void 0, query), {
7650
7870
  method: "POST",
7651
7871
  body: JSON.stringify(data)
7652
7872
  });
7653
7873
  }
7654
7874
  /** 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}`, {
7875
+ async updateWorkflowNote(wid, workflowId, noteId, data, query) {
7876
+ return this.fetch(notesPath(wid, workflowId, noteId, query), {
7657
7877
  method: "PUT",
7658
7878
  body: JSON.stringify(data)
7659
7879
  });
7660
7880
  }
7661
7881
  /** Delete a workflow note by ID. */
7662
- async deleteWorkflowNote(wid, workflowId, noteId) {
7663
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes/${noteId}`, {
7882
+ async deleteWorkflowNote(wid, workflowId, noteId, query) {
7883
+ return this.fetch(notesPath(wid, workflowId, noteId, query), {
7664
7884
  method: "DELETE"
7665
7885
  });
7666
7886
  }
@@ -7762,6 +7982,9 @@ var Scope = /* @__PURE__ */ ((Scope2) => {
7762
7982
  Scope2["FILES_READ"] = "files:read";
7763
7983
  Scope2["FILES_WRITE"] = "files:write";
7764
7984
  Scope2["FILES_ADMIN"] = "files:admin";
7985
+ Scope2["DEVICES_READ"] = "devices:read";
7986
+ Scope2["DEVICES_WRITE"] = "devices:write";
7987
+ Scope2["DEVICES_ADMIN"] = "devices:admin";
7765
7988
  Scope2["SITES_READ"] = "sites:read";
7766
7989
  Scope2["SITES_WRITE"] = "sites:write";
7767
7990
  Scope2["SITES_ADMIN"] = "sites:admin";
@@ -7924,6 +8147,7 @@ var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
7924
8147
  EventRuleEventType2["CALENDAR_EVENT_CANCELLED"] = "calendar_event:cancelled";
7925
8148
  EventRuleEventType2["CALENDAR_EVENT_STARTING"] = "calendar_event:starting";
7926
8149
  EventRuleEventType2["CALENDAR_EVENT_ENDED"] = "calendar_event:ended";
8150
+ EventRuleEventType2["CALENDAR_EVENT_NO_SHOW"] = "calendar_event:no_show";
7927
8151
  EventRuleEventType2["CONNECTOR_EVENT"] = "connector:event";
7928
8152
  EventRuleEventType2["ASSIGNMENT_CONCLUDED"] = "assignment:concluded";
7929
8153
  EventRuleEventType2["JOURNEY_STEP_EXECUTE"] = "journey_step:execute";
@@ -8006,7 +8230,6 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
8006
8230
  WorkspaceFeature2["CONFLUENCE"] = "confluence";
8007
8231
  WorkspaceFeature2["AGENT_MEMORY"] = "agent_memory";
8008
8232
  WorkspaceFeature2["IMAGE_GENERATION"] = "image_generation";
8009
- WorkspaceFeature2["STRICT_NATIVE_VOICE"] = "strict_native_voice";
8010
8233
  WorkspaceFeature2["CHARLESTON_NEPHROLOGY_PMD_PAGING"] = "charleston_nephrology_pmd_paging";
8011
8234
  WorkspaceFeature2["PATIENTSYNC_TRANSFER"] = "patientsync_transfer";
8012
8235
  return WorkspaceFeature2;
@@ -8046,6 +8269,8 @@ var Resource = /* @__PURE__ */ ((Resource2) => {
8046
8269
  var ProductType = /* @__PURE__ */ ((ProductType2) => {
8047
8270
  ProductType2["ORG"] = "org";
8048
8271
  ProductType2["ADDON"] = "addon";
8272
+ ProductType2["MEMBER"] = "member";
8273
+ ProductType2["DEVICE"] = "device";
8049
8274
  return ProductType2;
8050
8275
  })(ProductType || {});
8051
8276
  var ORG_ONLY_RESOURCES = /* @__PURE__ */ new Set([
@@ -8053,6 +8278,27 @@ var ORG_ONLY_RESOURCES = /* @__PURE__ */ new Set([
8053
8278
  "org_admin" /* ORG_ADMIN */,
8054
8279
  "phone_number" /* PHONE_NUMBER */
8055
8280
  ]);
8281
+ var MEMBER_SUBSCRIPTION_STATUSES = [
8282
+ "creating",
8283
+ "checkout_pending",
8284
+ "checkout_failed",
8285
+ "incomplete",
8286
+ "incomplete_expired",
8287
+ "trialing",
8288
+ "active",
8289
+ "past_due",
8290
+ "unpaid",
8291
+ "paused",
8292
+ "canceled"
8293
+ ];
8294
+ var MEMBER_ENTITLEMENT_STATUSES = [
8295
+ "pending",
8296
+ "grant_pending",
8297
+ "granted",
8298
+ "revoked",
8299
+ "superseded",
8300
+ "needs_reconcile"
8301
+ ];
8056
8302
 
8057
8303
  // src/types/workspace-types.ts
8058
8304
  var WorkspaceProvisionStatus = /* @__PURE__ */ ((WorkspaceProvisionStatus2) => {
@@ -8107,7 +8353,6 @@ var REALTIME_MODEL_OPENAI_MINI = "openai:realtime:gpt-realtime-mini";
8107
8353
  var REALTIME_MODEL_OPENAI_2 = "openai:realtime:gpt-realtime-2";
8108
8354
  var REALTIME_MODEL_GEMINI = "google:aistudio:gemini-3.1-flash-live";
8109
8355
  var REALTIME_MODEL_GEMINI_VERTEX = "google:vertex:gemini-3.1-flash-live";
8110
- var REALTIME_MODEL_NOVA_SONIC = "aws:bedrock:nova-sonic-1";
8111
8356
  var REALTIME_MODEL_CUSTOM = "custom:realtime:composable";
8112
8357
  var STT_MODEL_DEEPGRAM_FLUX = "deepgram:stt:flux-general-en";
8113
8358
  var STT_MODEL_DEEPGRAM_FLUX_SELFHOST = "deepgram:stt:flux-general-en:selfhost";
@@ -8696,6 +8941,13 @@ var WorkspacesApi = class extends BaseApiClient {
8696
8941
  signal: options?.signal
8697
8942
  });
8698
8943
  }
8944
+ /** Provision the one-month direct organization plan carried by a promo code. */
8945
+ async startPromoPlanTrial(request) {
8946
+ return this.fetch("promo-codes/plan-trial", {
8947
+ method: "POST",
8948
+ body: JSON.stringify(request)
8949
+ });
8950
+ }
8699
8951
  /** Get a publicly accessible product by ID. */
8700
8952
  async getPublicProduct(id) {
8701
8953
  return this.fetch(`products/${id}`);
@@ -8746,15 +8998,47 @@ var WorkspacesApi = class extends BaseApiClient {
8746
8998
  })
8747
8999
  });
8748
9000
  }
8749
- /** Import workspace configuration from exported data. */
8750
- async importWorkspace(wid, exportData, importMappings, createNew) {
9001
+ /** Download a workspace export ZIP (``export.json`` + file blobs). */
9002
+ async exportWorkspaceZip(wid, workflowId, scope, exclude) {
9003
+ const searchParams = new URLSearchParams();
9004
+ if (workflowId !== void 0) searchParams.set("workflow_id", String(workflowId));
9005
+ if (scope !== void 0) searchParams.set("scope", scope);
9006
+ if (exclude !== void 0) searchParams.set("exclude", exclude);
9007
+ const qs = searchParams.toString();
9008
+ const response = await this.fetchRaw(`w/${wid}/export.zip${qs ? `?${qs}` : ""}`);
9009
+ return response.arrayBuffer();
9010
+ }
9011
+ /** Import workspace configuration from exported JSON, or from a ZIP archive.
9012
+ * Pass ``archive`` (the ZIP from ``exportWorkspaceZip``) to restore file
9013
+ * contents. ``exportData`` may be omitted when the ZIP contains it.
9014
+ */
9015
+ async importWorkspace(wid, exportData, importMappings, createNew, archive) {
9016
+ const payload = {
9017
+ importMappings,
9018
+ createNew
9019
+ };
9020
+ if (exportData) {
9021
+ payload.exportData = exportData;
9022
+ }
9023
+ if (archive) {
9024
+ const form = new FormData();
9025
+ form.append(
9026
+ "request",
9027
+ new Blob([JSON.stringify(payload)], { type: "application/json" }),
9028
+ "import.json"
9029
+ );
9030
+ form.append("archive", archive, "workspace-export.zip");
9031
+ return this.fetch(`w/${wid}/import.zip`, {
9032
+ method: "POST",
9033
+ body: form
9034
+ });
9035
+ }
9036
+ if (!exportData) {
9037
+ throw new Error("exportData is required for JSON import");
9038
+ }
8751
9039
  return this.fetch(`w/${wid}/import`, {
8752
9040
  method: "POST",
8753
- body: JSON.stringify({
8754
- exportData,
8755
- importMappings,
8756
- createNew
8757
- })
9041
+ body: JSON.stringify(payload)
8758
9042
  });
8759
9043
  }
8760
9044
  /** Preview a workspace import using the legacy untyped interface. */
@@ -8796,7 +9080,6 @@ var WorkspacesApi = class extends BaseApiClient {
8796
9080
  * Get billing dashboard data for a workspace.
8797
9081
  *
8798
9082
  * This endpoint is available to organization owners (with org:info scope).
8799
- * Superusers should use the admin endpoint via getWorkspaceUsageDashboard.
8800
9083
  *
8801
9084
  * Returns comprehensive billing information including:
8802
9085
  * - Subscription status and plan details
@@ -8880,6 +9163,44 @@ var DashboardsApi = class extends BaseApiClient {
8880
9163
  }
8881
9164
  };
8882
9165
 
9166
+ // src/api/devices.ts
9167
+ var DevicesApi = class extends BaseApiClient {
9168
+ /** List devices visible to the caller (own devices, or all with devices:admin). */
9169
+ async getDevices(wid, options = {}) {
9170
+ const qs = options.mine ? "?mine=true" : "";
9171
+ return this.fetch(`w/${wid}/devices${qs}`);
9172
+ }
9173
+ /** Fetch one device by UUID. Non-owners without devices:admin receive 404. */
9174
+ async getDevice(wid, deviceUuid) {
9175
+ return this.fetch(`w/${wid}/devices/${deviceUuid}`);
9176
+ }
9177
+ /** List shippable companion-device products (Lantern, later SKUs). */
9178
+ async getDeviceKinds(wid) {
9179
+ return this.fetch(`w/${wid}/devices/kinds`);
9180
+ }
9181
+ /** Claim a pairing code shown on a companion device. Requires devices:write. */
9182
+ async claimDevicePairing(wid, body) {
9183
+ return this.fetch(`w/${wid}/devices/pairing/claim`, {
9184
+ method: "POST",
9185
+ body: JSON.stringify(body)
9186
+ });
9187
+ }
9188
+ /** Update display name and/or LAN capability flags. Requires devices:write. */
9189
+ async updateDevice(wid, deviceUuid, body) {
9190
+ return this.fetch(`w/${wid}/devices/${deviceUuid}`, {
9191
+ method: "PATCH",
9192
+ body: JSON.stringify(body)
9193
+ });
9194
+ }
9195
+ /** Revoke a device credential. The device must pair again. Requires devices:write. */
9196
+ async revokeDevice(wid, deviceUuid) {
9197
+ return this.fetch(`w/${wid}/devices/${deviceUuid}/revoke`, {
9198
+ method: "POST",
9199
+ body: JSON.stringify({})
9200
+ });
9201
+ }
9202
+ };
9203
+
8883
9204
  // src/api/teams-apps.ts
8884
9205
  var TeamsAppsApi = class extends BaseApiClient {
8885
9206
  /**
@@ -9183,6 +9504,20 @@ var ProjectsApi = class extends BaseApiClient {
9183
9504
  `w/${wid}/projects/${encodeURIComponent(slug)}/plans/${encodeURIComponent(plan)}`
9184
9505
  );
9185
9506
  }
9507
+ /** Typed update of a project README; absent fields are untouched. */
9508
+ async updateProject(wid, slug, update) {
9509
+ return this.fetch(`w/${wid}/projects/${encodeURIComponent(slug)}`, {
9510
+ method: "PATCH",
9511
+ body: JSON.stringify(update)
9512
+ });
9513
+ }
9514
+ /** Typed update of a plan README; absent fields are untouched. */
9515
+ async updatePlan(wid, slug, plan, update) {
9516
+ return this.fetch(
9517
+ `w/${wid}/projects/${encodeURIComponent(slug)}/plans/${encodeURIComponent(plan)}`,
9518
+ { method: "PATCH", body: JSON.stringify(update) }
9519
+ );
9520
+ }
9186
9521
  };
9187
9522
 
9188
9523
  // src/api/tracked-links.ts
@@ -9382,6 +9717,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9382
9717
  customToolkits: new CustomToolkitsApi(apiKey, baseUrl, customFetch),
9383
9718
  dashboards: new DashboardsApi(apiKey, baseUrl, customFetch),
9384
9719
  dataTypes: new DataTypesApi(apiKey, baseUrl, customFetch),
9720
+ devices: new DevicesApi(apiKey, baseUrl, customFetch),
9385
9721
  discordBots: new DiscordBotsApi(apiKey, baseUrl, customFetch),
9386
9722
  slackApps: new SlackAppsApi(apiKey, baseUrl, customFetch),
9387
9723
  teamsApps: new TeamsAppsApi(apiKey, baseUrl, customFetch),
@@ -9440,6 +9776,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9440
9776
  // src/client/workspace-client.ts
9441
9777
  var WORKSPACE_METHOD_NAMES = [
9442
9778
  "activateWorkflowRevision",
9779
+ "addEmailSenderAsMember",
9443
9780
  "addGroupMember",
9444
9781
  "advanceStep",
9445
9782
  "approveWorkspaceInvitation",
@@ -9470,6 +9807,7 @@ var WORKSPACE_METHOD_NAMES = [
9470
9807
  "checkAvailability",
9471
9808
  "checkSiteDomainAvailability",
9472
9809
  "checkSiteSlugAvailability",
9810
+ "claimDevicePairing",
9473
9811
  "clearConnectionMemberExclusion",
9474
9812
  "clearMemberSwitch",
9475
9813
  "clearTrackedLinkDestinations",
@@ -9657,6 +9995,7 @@ var WORKSPACE_METHOD_NAMES = [
9657
9995
  "exportMembers",
9658
9996
  "exportPhoneNumberOutboundAnalyticsCsv",
9659
9997
  "exportWorkspace",
9998
+ "exportWorkspaceZip",
9660
9999
  "fetchVoicemailAudio",
9661
10000
  "fhirBackfillEncounterSync",
9662
10001
  "fhirCheckPatientLinks",
@@ -9753,6 +10092,11 @@ var WORKSPACE_METHOD_NAMES = [
9753
10092
  "getConnectionSyncConfig",
9754
10093
  "getCredentialUpdateInvites",
9755
10094
  "getCurrentMember",
10095
+ "clearMemberWorkflowVoice",
10096
+ "getMemberWorkflowVoices",
10097
+ "getMyDataTypes",
10098
+ "getMyRecords",
10099
+ "setMemberWorkflowVoice",
9756
10100
  "getCurrentSmsChat",
9757
10101
  "getCustomToolkit",
9758
10102
  "getCustomToolkits",
@@ -9770,6 +10114,9 @@ var WORKSPACE_METHOD_NAMES = [
9770
10114
  "getDataTypeByUuid",
9771
10115
  "getDataTypeBySlug",
9772
10116
  "getDataTypes",
10117
+ "getDevice",
10118
+ "getDeviceKinds",
10119
+ "getDevices",
9773
10120
  "getDiscordBot",
9774
10121
  "getDiscordBotAccounts",
9775
10122
  "getDiscordBotByUuid",
@@ -9923,6 +10270,7 @@ var WORKSPACE_METHOD_NAMES = [
9923
10270
  "getPublicFolderFiles",
9924
10271
  "getPublicProducts",
9925
10272
  "previewPromoCode",
10273
+ "startPromoPlanTrial",
9926
10274
  "getQualification",
9927
10275
  "getQualifications",
9928
10276
  "getRecordingInfo",
@@ -10070,6 +10418,8 @@ var WORKSPACE_METHOD_NAMES = [
10070
10418
  "markNotificationAsRead",
10071
10419
  "mergeMemberRoles",
10072
10420
  "previewImportMembers",
10421
+ "previewMemberWorkflowVoice",
10422
+ "previewRenameFieldSlug",
10073
10423
  "previewImportWorkspace",
10074
10424
  "previewRoutineWorkflowAccess",
10075
10425
  "previewSchedule",
@@ -10082,6 +10432,7 @@ var WORKSPACE_METHOD_NAMES = [
10082
10432
  "rateMessage",
10083
10433
  "getChatFeedback",
10084
10434
  "reenrollMember",
10435
+ "renameFieldSlug",
10085
10436
  "registerLinkedRolesMetadata",
10086
10437
  "registerPushSubscription",
10087
10438
  "reindexFolder",
@@ -10101,6 +10452,7 @@ var WORKSPACE_METHOD_NAMES = [
10101
10452
  "restoreFileVersion",
10102
10453
  "revokeAccessGrant",
10103
10454
  "revokeApiKey",
10455
+ "revokeDevice",
10104
10456
  "revokeICalToken",
10105
10457
  "runRoutine",
10106
10458
  "searchEventRules",
@@ -10171,6 +10523,7 @@ var WORKSPACE_METHOD_NAMES = [
10171
10523
  "updateDataRecord",
10172
10524
  "updateDataRecordFilter",
10173
10525
  "updateDataType",
10526
+ "updateDevice",
10174
10527
  "updateDiscordBot",
10175
10528
  "updateEventAttendee",
10176
10529
  "updateEventRule",
@@ -10204,9 +10557,12 @@ var WORKSPACE_METHOD_NAMES = [
10204
10557
  "updatePersona",
10205
10558
  "updatePhoneNumber",
10206
10559
  "updatePlatformApp",
10560
+ "updatePlan",
10207
10561
  "updateProduct",
10562
+ "updateProject",
10208
10563
  "updateRoutine",
10209
10564
  "updateSalesforceSyncConfig",
10565
+ "resyncSalesforceLinkedMembers",
10210
10566
  "updateScenario",
10211
10567
  "updateSite",
10212
10568
  "updateSiteSharing",
@@ -10426,6 +10782,8 @@ function bindDataTypesMethods(target, dataTypes) {
10426
10782
  target.getDataRecordChanges = dataTypes.getDataRecordChanges.bind(dataTypes);
10427
10783
  target.upsertDataRecord = dataTypes.upsertDataRecord.bind(dataTypes);
10428
10784
  target.toggleFieldIndex = dataTypes.toggleFieldIndex.bind(dataTypes);
10785
+ target.previewRenameFieldSlug = dataTypes.previewRenameFieldSlug.bind(dataTypes);
10786
+ target.renameFieldSlug = dataTypes.renameFieldSlug.bind(dataTypes);
10429
10787
  target.getFieldIndexStatus = dataTypes.getFieldIndexStatus.bind(dataTypes);
10430
10788
  target.validateDataTypeSlug = dataTypes.validateDataTypeSlug.bind(dataTypes);
10431
10789
  target.getMemberRecordCounts = dataTypes.getMemberRecordCounts.bind(dataTypes);
@@ -10437,9 +10795,25 @@ function bindDataTypesMethods(target, dataTypes) {
10437
10795
  target.getDataRecordFilterCount = dataTypes.getDataRecordFilterCount.bind(dataTypes);
10438
10796
  }
10439
10797
 
10798
+ // src/client/bindings/devices.ts
10799
+ function bindDevicesMethods(target, devices) {
10800
+ target.getDevices = devices.getDevices.bind(devices);
10801
+ target.getDevice = devices.getDevice.bind(devices);
10802
+ target.getDeviceKinds = devices.getDeviceKinds.bind(devices);
10803
+ target.claimDevicePairing = devices.claimDevicePairing.bind(devices);
10804
+ target.updateDevice = devices.updateDevice.bind(devices);
10805
+ target.revokeDevice = devices.revokeDevice.bind(devices);
10806
+ }
10807
+
10440
10808
  // src/client/bindings/members.ts
10441
10809
  function bindMembersMethods(target, members) {
10442
10810
  target.getCurrentMember = members.getCurrentMember.bind(members);
10811
+ target.getMyDataTypes = members.getMyDataTypes.bind(members);
10812
+ target.getMyRecords = members.getMyRecords.bind(members);
10813
+ target.getMemberWorkflowVoices = members.getMemberWorkflowVoices.bind(members);
10814
+ target.previewMemberWorkflowVoice = members.previewMemberWorkflowVoice.bind(members);
10815
+ target.setMemberWorkflowVoice = members.setMemberWorkflowVoice.bind(members);
10816
+ target.clearMemberWorkflowVoice = members.clearMemberWorkflowVoice.bind(members);
10443
10817
  target.getOwnedMembers = members.getOwnedMembers.bind(members);
10444
10818
  target.switchMember = members.switchMember.bind(members);
10445
10819
  target.clearMemberSwitch = members.clearMemberSwitch.bind(members);
@@ -10532,6 +10906,7 @@ function bindWorkspacesMethods(target, workspaces, signupRequests) {
10532
10906
  target.updateProduct = workspaces.updateProduct.bind(workspaces);
10533
10907
  target.deleteProduct = workspaces.deleteProduct.bind(workspaces);
10534
10908
  target.exportWorkspace = workspaces.exportWorkspace.bind(workspaces);
10909
+ target.exportWorkspaceZip = workspaces.exportWorkspaceZip.bind(workspaces);
10535
10910
  target.previewWorkspaceImport = workspaces.previewWorkspaceImport.bind(workspaces);
10536
10911
  target.importWorkspace = workspaces.importWorkspace.bind(workspaces);
10537
10912
  target.previewImportWorkspace = workspaces.previewImportWorkspace.bind(workspaces);
@@ -10718,6 +11093,8 @@ function bindProjectsMethods(target, projects) {
10718
11093
  target.getProjects = projects.getProjects.bind(projects);
10719
11094
  target.getProject = projects.getProject.bind(projects);
10720
11095
  target.getPlan = projects.getPlan.bind(projects);
11096
+ target.updateProject = projects.updateProject.bind(projects);
11097
+ target.updatePlan = projects.updatePlan.bind(projects);
10721
11098
  }
10722
11099
 
10723
11100
  // src/client/bindings/events.ts
@@ -10878,6 +11255,7 @@ function bindCommunicationsMethods(target, phoneNumbers, inboxes, notificationRu
10878
11255
  target.getInboxEmail = inboxes.getInboxEmail.bind(inboxes);
10879
11256
  target.markEmailAsRead = inboxes.markEmailAsRead.bind(inboxes);
10880
11257
  target.markEmailAsUnread = inboxes.markEmailAsUnread.bind(inboxes);
11258
+ target.addEmailSenderAsMember = inboxes.addEmailSenderAsMember.bind(inboxes);
10881
11259
  target.convertEmail = inboxes.convertEmail.bind(inboxes);
10882
11260
  target.downloadEmailAttachment = inboxes.downloadEmailAttachment.bind(inboxes);
10883
11261
  target.getInboxThreads = inboxes.getInboxThreads.bind(inboxes);
@@ -10947,6 +11325,12 @@ function bindBillingMethods(target, apiKeys, subscriptions, reports) {
10947
11325
  target.addWorkspaceToSubscription = subscriptions.addWorkspaceToSubscription.bind(subscriptions);
10948
11326
  target.purchaseCredits = subscriptions.purchaseCredits.bind(subscriptions);
10949
11327
  target.createCheckoutSession = subscriptions.createCheckoutSession.bind(subscriptions);
11328
+ target.createMemberCheckoutSession = subscriptions.createMemberCheckoutSession.bind(subscriptions);
11329
+ target.createMemberPortalSession = subscriptions.createMemberPortalSession.bind(subscriptions);
11330
+ target.getMemberSubscriptionStatus = subscriptions.getMemberSubscriptionStatus.bind(subscriptions);
11331
+ target.createDeviceOrderCheckoutSession = subscriptions.createDeviceOrderCheckoutSession.bind(subscriptions);
11332
+ target.listDeviceOrders = subscriptions.listDeviceOrders.bind(subscriptions);
11333
+ target.getCheckoutAttemptStatus = subscriptions.getCheckoutAttemptStatus.bind(subscriptions);
10950
11334
  target.listSelfServeProducts = subscriptions.listSelfServeProducts.bind(subscriptions);
10951
11335
  target.getAIUsageReport = reports.getAIUsageReport.bind(reports);
10952
11336
  target.getSMSUsageReport = reports.getSMSUsageReport.bind(reports);
@@ -11124,6 +11508,7 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
11124
11508
  target.getLinkedSalesforceMembers = salesforce.getLinkedSalesforceMembers.bind(salesforce);
11125
11509
  target.getSalesforceSyncConfig = salesforce.getSalesforceSyncConfig.bind(salesforce);
11126
11510
  target.updateSalesforceSyncConfig = salesforce.updateSalesforceSyncConfig.bind(salesforce);
11511
+ target.resyncSalesforceLinkedMembers = salesforce.resyncSalesforceLinkedMembers.bind(salesforce);
11127
11512
  target.listSalesforceObjects = salesforce.listSalesforceObjects.bind(salesforce);
11128
11513
  target.describeSalesforceObject = salesforce.describeSalesforceObject.bind(salesforce);
11129
11514
  target.searchSalesforceRecords = salesforce.searchSalesforceRecords.bind(salesforce);
@@ -11195,6 +11580,7 @@ function bindOrgMethods(target, org) {
11195
11580
  target.disableOrgDomainEmail = org.disableOrgDomainEmail.bind(org);
11196
11581
  target.enableOrgDomainSite = org.enableOrgDomainSite.bind(org);
11197
11582
  target.getOrgDomainSite = org.getOrgDomainSite.bind(org);
11583
+ target.preflightOrgDomainSite = org.preflightOrgDomainSite.bind(org);
11198
11584
  target.verifyOrgDomainSite = org.verifyOrgDomainSite.bind(org);
11199
11585
  target.disableOrgDomainSite = org.disableOrgDomainSite.bind(org);
11200
11586
  target.getBusinessProfile = org.getBusinessProfile.bind(org);
@@ -11465,6 +11851,8 @@ var GravityRailClient = class {
11465
11851
  getDataRecordChanges;
11466
11852
  upsertDataRecord;
11467
11853
  toggleFieldIndex;
11854
+ previewRenameFieldSlug;
11855
+ renameFieldSlug;
11468
11856
  getFieldIndexStatus;
11469
11857
  validateDataTypeSlug;
11470
11858
  getMemberRecordCounts;
@@ -11476,6 +11864,12 @@ var GravityRailClient = class {
11476
11864
  getDataRecordFilterCount;
11477
11865
  // Members API
11478
11866
  getCurrentMember;
11867
+ getMyDataTypes;
11868
+ getMyRecords;
11869
+ getMemberWorkflowVoices;
11870
+ previewMemberWorkflowVoice;
11871
+ setMemberWorkflowVoice;
11872
+ clearMemberWorkflowVoice;
11479
11873
  getOwnedMembers;
11480
11874
  switchMember;
11481
11875
  clearMemberSwitch;
@@ -11710,11 +12104,13 @@ var GravityRailClient = class {
11710
12104
  getWorkspaceProduct;
11711
12105
  getPublicProducts;
11712
12106
  previewPromoCode;
12107
+ startPromoPlanTrial;
11713
12108
  getPublicProduct;
11714
12109
  createProduct;
11715
12110
  updateProduct;
11716
12111
  deleteProduct;
11717
12112
  exportWorkspace;
12113
+ exportWorkspaceZip;
11718
12114
  previewWorkspaceImport;
11719
12115
  importWorkspace;
11720
12116
  previewImportWorkspace;
@@ -11741,6 +12137,7 @@ var GravityRailClient = class {
11741
12137
  disableOrgDomainEmail;
11742
12138
  enableOrgDomainSite;
11743
12139
  getOrgDomainSite;
12140
+ preflightOrgDomainSite;
11744
12141
  verifyOrgDomainSite;
11745
12142
  disableOrgDomainSite;
11746
12143
  getBusinessProfile;
@@ -11877,6 +12274,8 @@ var GravityRailClient = class {
11877
12274
  getProjects;
11878
12275
  getProject;
11879
12276
  getPlan;
12277
+ updateProject;
12278
+ updatePlan;
11880
12279
  resolveFilePath;
11881
12280
  downloadFilesZip;
11882
12281
  createFile;
@@ -12047,6 +12446,7 @@ var GravityRailClient = class {
12047
12446
  getInboxEmail;
12048
12447
  markEmailAsRead;
12049
12448
  markEmailAsUnread;
12449
+ addEmailSenderAsMember;
12050
12450
  convertEmail;
12051
12451
  downloadEmailAttachment;
12052
12452
  getInboxThreads;
@@ -12095,6 +12495,13 @@ var GravityRailClient = class {
12095
12495
  getFeatureRegistry;
12096
12496
  getPublicFeatureRegistry;
12097
12497
  getFeatureBySlug;
12498
+ // Devices API
12499
+ getDevices;
12500
+ getDevice;
12501
+ getDeviceKinds;
12502
+ claimDevicePairing;
12503
+ updateDevice;
12504
+ revokeDevice;
12098
12505
  // Billing API
12099
12506
  getApiKeys;
12100
12507
  createApiKey;
@@ -12110,6 +12517,12 @@ var GravityRailClient = class {
12110
12517
  addWorkspaceToSubscription;
12111
12518
  purchaseCredits;
12112
12519
  createCheckoutSession;
12520
+ createMemberCheckoutSession;
12521
+ createMemberPortalSession;
12522
+ getMemberSubscriptionStatus;
12523
+ createDeviceOrderCheckoutSession;
12524
+ listDeviceOrders;
12525
+ getCheckoutAttemptStatus;
12113
12526
  listSelfServeProducts;
12114
12527
  getAIUsageReport;
12115
12528
  getSMSUsageReport;
@@ -12289,6 +12702,7 @@ var GravityRailClient = class {
12289
12702
  getLinkedSalesforceMembers;
12290
12703
  getSalesforceSyncConfig;
12291
12704
  updateSalesforceSyncConfig;
12705
+ resyncSalesforceLinkedMembers;
12292
12706
  listSalesforceObjects;
12293
12707
  describeSalesforceObject;
12294
12708
  searchSalesforceRecords;
@@ -12391,6 +12805,7 @@ var GravityRailClient = class {
12391
12805
  bindChatsMethods(this, apis.chats);
12392
12806
  bindCallsMethods(this, apis.calls, apis.cel);
12393
12807
  bindDataTypesMethods(this, apis.dataTypes);
12808
+ bindDevicesMethods(this, apis.devices);
12394
12809
  bindMembersMethods(this, apis.members);
12395
12810
  bindAgentTasksMethods(this, apis.agentTasks);
12396
12811
  bindAgentsMethods(this, apis.agents);
@@ -12583,6 +12998,7 @@ var AbilityTypeSlugs = {
12583
12998
  SEND_WHATSAPP: "communication:send_whatsapp",
12584
12999
  MEMBER_ACCESS: "communication:member_access",
12585
13000
  AUDIO_PLAYBACK: "communication:audio_playback",
13001
+ IMAGE_DISPLAY: "communication:image_display",
12586
13002
  // Oversight
12587
13003
  SUPERVISOR: "oversight:supervisor",
12588
13004
  SUPERVISOR_ACTIONS: "oversight:supervisor_actions",
@@ -12591,6 +13007,7 @@ var AbilityTypeSlugs = {
12591
13007
  MEMBER_FIELD_VERIFICATION: "identity:member_field_verification",
12592
13008
  // Delegation
12593
13009
  CONTRIBUTOR: "delegation:contributor",
13010
+ MANAGE_WORKSPACE: "delegation:manage_workspace",
12594
13011
  // Workflow
12595
13012
  WORKFLOW_RUN: "workflow:run",
12596
13013
  // Commerce
@@ -12923,7 +13340,7 @@ function isChatType(value) {
12923
13340
 
12924
13341
  // src/constants/models.ts
12925
13342
  var DEFAULT_CHAT_MODEL = "aws:bedrock:claude-4-5-haiku";
12926
- var DEFAULT_VOICE_INFERENCE_MODEL = "google:vertex:gemini-3-flash";
13343
+ var DEFAULT_VOICE_INFERENCE_MODEL = "openai:chat:gpt-5.6-luna";
12927
13344
  var DEFAULT_CUSTOM_VOICE_MODEL = "elevenlabs:voice:river";
12928
13345
 
12929
13346
  // src/types/resource-metadata.ts
@@ -13027,6 +13444,7 @@ var ScopeCategory = /* @__PURE__ */ ((ScopeCategory2) => {
13027
13444
  ScopeCategory2["DATATYPES"] = "datatypes";
13028
13445
  ScopeCategory2["RECORDS"] = "records";
13029
13446
  ScopeCategory2["FILES"] = "files";
13447
+ ScopeCategory2["DEVICES"] = "devices";
13030
13448
  ScopeCategory2["JOURNEYS"] = "journeys";
13031
13449
  ScopeCategory2["EXPERIMENTS"] = "experiments";
13032
13450
  ScopeCategory2["SITES"] = "sites";
@@ -13271,6 +13689,26 @@ var SCOPES = {
13271
13689
  implies: ["files:write"]
13272
13690
  },
13273
13691
  // =========================================================================
13692
+ // DEVICES
13693
+ // =========================================================================
13694
+ "devices:read": {
13695
+ name: "devices:read",
13696
+ category: "devices" /* DEVICES */,
13697
+ description: "View companion devices"
13698
+ },
13699
+ "devices:write": {
13700
+ name: "devices:write",
13701
+ category: "devices" /* DEVICES */,
13702
+ description: "Enrol and manage own companion devices",
13703
+ implies: ["devices:read"]
13704
+ },
13705
+ "devices:admin": {
13706
+ name: "devices:admin",
13707
+ category: "devices" /* DEVICES */,
13708
+ description: "List and revoke any companion device",
13709
+ implies: ["devices:write"]
13710
+ },
13711
+ // =========================================================================
13274
13712
  // JOURNEYS
13275
13713
  // =========================================================================
13276
13714
  "journeys:read": {
@@ -13770,6 +14208,8 @@ export {
13770
14208
  Resource,
13771
14209
  ProductType,
13772
14210
  ORG_ONLY_RESOURCES,
14211
+ MEMBER_SUBSCRIPTION_STATUSES,
14212
+ MEMBER_ENTITLEMENT_STATUSES,
13773
14213
  WorkspaceProvisionStatus,
13774
14214
  InvitationStatus,
13775
14215
  ModelProvider,
@@ -13779,7 +14219,6 @@ export {
13779
14219
  REALTIME_MODEL_OPENAI_2,
13780
14220
  REALTIME_MODEL_GEMINI,
13781
14221
  REALTIME_MODEL_GEMINI_VERTEX,
13782
- REALTIME_MODEL_NOVA_SONIC,
13783
14222
  REALTIME_MODEL_CUSTOM,
13784
14223
  STT_MODEL_DEEPGRAM_FLUX,
13785
14224
  STT_MODEL_DEEPGRAM_FLUX_SELFHOST,
@@ -13836,6 +14275,7 @@ export {
13836
14275
  bindMotdMethods,
13837
14276
  bindTrackedLinksMethods,
13838
14277
  bindDataTypesMethods,
14278
+ bindDevicesMethods,
13839
14279
  bindMembersMethods,
13840
14280
  bindWorkspacesMethods,
13841
14281
  bindAuthMethods,
@@ -13924,4 +14364,4 @@ export {
13924
14364
  SCOPE_PRESETS,
13925
14365
  getRevisionState
13926
14366
  };
13927
- //# sourceMappingURL=chunk-PUIYXJSZ.js.map
14367
+ //# sourceMappingURL=chunk-24L4RD4Z.js.map