@gravity-rail/sdk 0.18.0 → 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-MP5ENP4Q.js → chunk-24L4RD4Z.js} +560 -136
  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-B51HZ6zY.d.cts → client-B0eh2BEY.d.cts} +1592 -364
  8. package/dist/{client-G5i59XtT.d.ts → client-CFz-BGmY.d.ts} +1592 -364
  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 +658 -129
  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 -11
  20. package/dist/index.js.map +1 -1
  21. package/dist/internal.cjs +581 -140
  22. package/dist/internal.cjs.map +1 -1
  23. package/dist/internal.d.cts +724 -553
  24. package/dist/internal.d.ts +724 -553
  25. package/dist/internal.js +23 -13
  26. package/dist/internal.js.map +1 -1
  27. package/dist/{revision-state-Cc7RAf8A.d.ts → revision-state-KfOztBkY.d.ts} +147 -232
  28. package/dist/{revision-state-DudSCwea.d.cts → revision-state-fJ9PM15N.d.cts} +147 -232
  29. package/dist/schemas.cjs +32 -18
  30. package/dist/schemas.cjs.map +1 -1
  31. package/dist/schemas.d.cts +37 -35
  32. package/dist/schemas.d.ts +37 -35
  33. package/dist/schemas.js +32 -18
  34. package/dist/schemas.js.map +1 -1
  35. package/dist/{tasks-1JXJJuG8.d.cts → tasks-WH_VfzMv.d.cts} +351 -20
  36. package/dist/{tasks-1JXJJuG8.d.ts → tasks-WH_VfzMv.d.ts} +351 -20
  37. package/package.json +6 -6
  38. package/dist/chunk-2YLKG4TT.js.map +0 -1
  39. package/dist/chunk-MP5ENP4Q.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).
@@ -4535,9 +4638,9 @@ var OrgApi = class extends BaseApiClient {
4535
4638
  /**
4536
4639
  * Update the settings an org admin owns: name, slug and contact details.
4537
4640
  *
4538
- * Deliberately NOT the admin organization update — `primary` and
4539
- * `enforceCreditLimit` are superuser-only and are not fields on this
4540
- * endpoint's request model at all.
4641
+ * Deliberately NOT the admin organization update — `enforceCreditLimit`
4642
+ * is superuser-only and is not a field on this endpoint's request model
4643
+ * at all.
4541
4644
  */
4542
4645
  async updateOrganizationSettings(orgIdOrUuid, data) {
4543
4646
  return this.fetch(`o/${orgIdOrUuid}`, {
@@ -4568,11 +4671,30 @@ 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`);
4575
4682
  }
4683
+ /**
4684
+ * Per-workspace usage for this organization's current credit window.
4685
+ *
4686
+ * Requires a billing role on the organization's billing customer — the
4687
+ * same gate `getOrgBillingCustomer().hasAccess` reports, and the one that
4688
+ * decides whether the billing tab is shown at all.
4689
+ *
4690
+ * `creditsUsed` is a real organization-wide total or it is null; it is
4691
+ * never a partial sum. There is deliberately no per-workspace "remaining"
4692
+ * figure — the caps belong to the organization, so `cap - oneWorkspace`
4693
+ * describes nothing.
4694
+ */
4695
+ async getOrgWorkspaceUsage(orgIdOrUuid) {
4696
+ return this.fetch(`o/${orgIdOrUuid}/usage/workspaces`);
4697
+ }
4576
4698
  /**
4577
4699
  * List members of an organization.
4578
4700
  */
@@ -4893,6 +5015,17 @@ var OrgApi = class extends BaseApiClient {
4893
5015
  async getOrgDomainSite(orgIdOrUuid, domainUuid) {
4894
5016
  return this.fetch(`o/${orgIdOrUuid}/domains/${domainUuid}/site`);
4895
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
+ }
4896
5029
  /**
4897
5030
  * Verify the site CNAME points at the Gravity Rail sites domain.
4898
5031
  */
@@ -4936,10 +5069,10 @@ var OrgApi = class extends BaseApiClient {
4936
5069
  * is required — brands register per legal entity (Customer Profile);
4937
5070
  * there is no primary-entity fallback.
4938
5071
  */
4939
- async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandDescription, brandUuid = null) {
5072
+ async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandUuid = null) {
4940
5073
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/start`, {
4941
5074
  method: "POST",
4942
- body: JSON.stringify({ legalEntityUuid, brandName, brandDescription, brandUuid })
5075
+ body: JSON.stringify({ legalEntityUuid, brandName, brandUuid })
4943
5076
  });
4944
5077
  }
4945
5078
  /**
@@ -5043,7 +5176,12 @@ var OrgApi = class extends BaseApiClient {
5043
5176
  * Reconcile trust product state against Twilio (discovery + status
5044
5177
  * refresh). Returns the refreshed products plus which product keys were
5045
5178
  * newly discovered. Responds 409 when another Trust Hub operation holds
5046
- * 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.
5047
5185
  */
5048
5186
  async syncVoiceTrustProducts(orgUuid, legalEntityUuid) {
5049
5187
  return this.fetch(
@@ -5076,6 +5214,16 @@ var OrgApi = class extends BaseApiClient {
5076
5214
  async listA2PBrands(orgUuid) {
5077
5215
  return this.fetch(`o/${orgUuid}/a2p-brands`);
5078
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
+ }
5079
5227
  /**
5080
5228
  * Fetch a brand's resolved A2P campaign config. The response carries both the
5081
5229
  * raw `overrides` and the `resolved` payload (defaults + overrides) the editor
@@ -5930,6 +6078,26 @@ var SalesforceApi = class extends BaseApiClient {
5930
6078
  }
5931
6079
  );
5932
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
+ }
5933
6101
  /**
5934
6102
  * List the sObjects available in the connected org.
5935
6103
  *
@@ -6360,12 +6528,6 @@ var SitesApi = class extends BaseApiClient {
6360
6528
  }
6361
6529
  return verifyResponse;
6362
6530
  }
6363
- /** Trigger a crawl of the site's external content source. */
6364
- async crawlSite(wid, siteId) {
6365
- return this.fetch(`w/${wid}/sites/${siteId}/crawl`, {
6366
- method: "POST"
6367
- });
6368
- }
6369
6531
  /** Create a new site in the workspace. */
6370
6532
  async createSite(wid, site) {
6371
6533
  return this.fetch(`w/${wid}/sites`, {
@@ -6535,9 +6697,65 @@ var SubscriptionsApi = class extends BaseApiClient {
6535
6697
  headers: { "Content-Type": "application/json" }
6536
6698
  });
6537
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
+ }
6538
6728
  /**
6539
- * List self-service, purchasable plans (org or workspace). Only plans with a
6540
- * paid Stripe price are returned. No auth required.
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
+ }
6756
+ /**
6757
+ * List self-service, purchasable organization plans or add-ons. Only products
6758
+ * with a Stripe Price are returned; zero-amount plans are allowed.
6541
6759
  */
6542
6760
  async listSelfServeProducts(productType) {
6543
6761
  const qs = productType ? `?product_type=${productType}` : "";
@@ -6572,7 +6790,13 @@ var SubscriptionsApi = class extends BaseApiClient {
6572
6790
  }
6573
6791
  });
6574
6792
  }
6575
- /** Add a workspace to an existing subscription. */
6793
+ /**
6794
+ * Provision a new workspace under an existing org subscription.
6795
+ *
6796
+ * No product or period: the organization already holds the plan and the new
6797
+ * workspace bills through it. Returns before the workspace exists —
6798
+ * `provisioning: true` means poll for it.
6799
+ */
6576
6800
  async addWorkspaceToSubscription(subscriptionId, data) {
6577
6801
  return this.fetch(`subscriptions/${subscriptionId}/add-workspace`, {
6578
6802
  method: "POST",
@@ -6733,6 +6957,9 @@ var CustomersApi = class extends BaseApiClient {
6733
6957
  if (opts?.status) params.set("status", opts.status);
6734
6958
  if (opts?.page !== void 0) params.set("page", String(opts.page));
6735
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
+ }
6736
6963
  const qs = params.toString();
6737
6964
  return this.fetch(`customers/${uuid}/subscriptions${qs ? "?" + qs : ""}`);
6738
6965
  }
@@ -7624,28 +7851,36 @@ var WorkflowsApi = class extends BaseApiClient {
7624
7851
  };
7625
7852
 
7626
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
+ }
7627
7862
  var WorkflowNotesApi = class extends BaseApiClient {
7628
- /** List all notes for a specific workflow. */
7629
- async getWorkflowNotes(wid, workflowId) {
7630
- 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));
7631
7866
  }
7632
- /** Create a new note on a workflow. */
7633
- async createWorkflowNote(wid, workflowId, data) {
7634
- 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), {
7635
7870
  method: "POST",
7636
7871
  body: JSON.stringify(data)
7637
7872
  });
7638
7873
  }
7639
7874
  /** Update an existing workflow note with partial data. */
7640
- async updateWorkflowNote(wid, workflowId, noteId, data) {
7641
- 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), {
7642
7877
  method: "PUT",
7643
7878
  body: JSON.stringify(data)
7644
7879
  });
7645
7880
  }
7646
7881
  /** Delete a workflow note by ID. */
7647
- async deleteWorkflowNote(wid, workflowId, noteId) {
7648
- 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), {
7649
7884
  method: "DELETE"
7650
7885
  });
7651
7886
  }
@@ -7747,6 +7982,9 @@ var Scope = /* @__PURE__ */ ((Scope2) => {
7747
7982
  Scope2["FILES_READ"] = "files:read";
7748
7983
  Scope2["FILES_WRITE"] = "files:write";
7749
7984
  Scope2["FILES_ADMIN"] = "files:admin";
7985
+ Scope2["DEVICES_READ"] = "devices:read";
7986
+ Scope2["DEVICES_WRITE"] = "devices:write";
7987
+ Scope2["DEVICES_ADMIN"] = "devices:admin";
7750
7988
  Scope2["SITES_READ"] = "sites:read";
7751
7989
  Scope2["SITES_WRITE"] = "sites:write";
7752
7990
  Scope2["SITES_ADMIN"] = "sites:admin";
@@ -7909,6 +8147,7 @@ var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
7909
8147
  EventRuleEventType2["CALENDAR_EVENT_CANCELLED"] = "calendar_event:cancelled";
7910
8148
  EventRuleEventType2["CALENDAR_EVENT_STARTING"] = "calendar_event:starting";
7911
8149
  EventRuleEventType2["CALENDAR_EVENT_ENDED"] = "calendar_event:ended";
8150
+ EventRuleEventType2["CALENDAR_EVENT_NO_SHOW"] = "calendar_event:no_show";
7912
8151
  EventRuleEventType2["CONNECTOR_EVENT"] = "connector:event";
7913
8152
  EventRuleEventType2["ASSIGNMENT_CONCLUDED"] = "assignment:concluded";
7914
8153
  EventRuleEventType2["JOURNEY_STEP_EXECUTE"] = "journey_step:execute";
@@ -7991,7 +8230,6 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
7991
8230
  WorkspaceFeature2["CONFLUENCE"] = "confluence";
7992
8231
  WorkspaceFeature2["AGENT_MEMORY"] = "agent_memory";
7993
8232
  WorkspaceFeature2["IMAGE_GENERATION"] = "image_generation";
7994
- WorkspaceFeature2["STRICT_NATIVE_VOICE"] = "strict_native_voice";
7995
8233
  WorkspaceFeature2["CHARLESTON_NEPHROLOGY_PMD_PAGING"] = "charleston_nephrology_pmd_paging";
7996
8234
  WorkspaceFeature2["PATIENTSYNC_TRANSFER"] = "patientsync_transfer";
7997
8235
  return WorkspaceFeature2;
@@ -8029,9 +8267,10 @@ var Resource = /* @__PURE__ */ ((Resource2) => {
8029
8267
  return Resource2;
8030
8268
  })(Resource || {});
8031
8269
  var ProductType = /* @__PURE__ */ ((ProductType2) => {
8032
- ProductType2["WORKSPACE"] = "workspace";
8033
8270
  ProductType2["ORG"] = "org";
8034
8271
  ProductType2["ADDON"] = "addon";
8272
+ ProductType2["MEMBER"] = "member";
8273
+ ProductType2["DEVICE"] = "device";
8035
8274
  return ProductType2;
8036
8275
  })(ProductType || {});
8037
8276
  var ORG_ONLY_RESOURCES = /* @__PURE__ */ new Set([
@@ -8039,15 +8278,27 @@ var ORG_ONLY_RESOURCES = /* @__PURE__ */ new Set([
8039
8278
  "org_admin" /* ORG_ADMIN */,
8040
8279
  "phone_number" /* PHONE_NUMBER */
8041
8280
  ]);
8042
- var LIMIT_ONLY_RESOURCES = /* @__PURE__ */ new Set([
8043
- "member" /* MEMBER */,
8044
- "inbox" /* INBOX */,
8045
- "site" /* SITE */,
8046
- "phone_number" /* PHONE_NUMBER */,
8047
- "storage_mb" /* STORAGE_MB */,
8048
- "workspace" /* WORKSPACE */,
8049
- "org_admin" /* ORG_ADMIN */
8050
- ]);
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
+ ];
8051
8302
 
8052
8303
  // src/types/workspace-types.ts
8053
8304
  var WorkspaceProvisionStatus = /* @__PURE__ */ ((WorkspaceProvisionStatus2) => {
@@ -8102,7 +8353,6 @@ var REALTIME_MODEL_OPENAI_MINI = "openai:realtime:gpt-realtime-mini";
8102
8353
  var REALTIME_MODEL_OPENAI_2 = "openai:realtime:gpt-realtime-2";
8103
8354
  var REALTIME_MODEL_GEMINI = "google:aistudio:gemini-3.1-flash-live";
8104
8355
  var REALTIME_MODEL_GEMINI_VERTEX = "google:vertex:gemini-3.1-flash-live";
8105
- var REALTIME_MODEL_NOVA_SONIC = "aws:bedrock:nova-sonic-1";
8106
8356
  var REALTIME_MODEL_CUSTOM = "custom:realtime:composable";
8107
8357
  var STT_MODEL_DEEPGRAM_FLUX = "deepgram:stt:flux-general-en";
8108
8358
  var STT_MODEL_DEEPGRAM_FLUX_SELFHOST = "deepgram:stt:flux-general-en:selfhost";
@@ -8691,6 +8941,13 @@ var WorkspacesApi = class extends BaseApiClient {
8691
8941
  signal: options?.signal
8692
8942
  });
8693
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
+ }
8694
8951
  /** Get a publicly accessible product by ID. */
8695
8952
  async getPublicProduct(id) {
8696
8953
  return this.fetch(`products/${id}`);
@@ -8741,15 +8998,47 @@ var WorkspacesApi = class extends BaseApiClient {
8741
8998
  })
8742
8999
  });
8743
9000
  }
8744
- /** Import workspace configuration from exported data. */
8745
- 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
+ }
8746
9039
  return this.fetch(`w/${wid}/import`, {
8747
9040
  method: "POST",
8748
- body: JSON.stringify({
8749
- exportData,
8750
- importMappings,
8751
- createNew
8752
- })
9041
+ body: JSON.stringify(payload)
8753
9042
  });
8754
9043
  }
8755
9044
  /** Preview a workspace import using the legacy untyped interface. */
@@ -8791,7 +9080,6 @@ var WorkspacesApi = class extends BaseApiClient {
8791
9080
  * Get billing dashboard data for a workspace.
8792
9081
  *
8793
9082
  * This endpoint is available to organization owners (with org:info scope).
8794
- * Superusers should use the admin endpoint via getWorkspaceUsageDashboard.
8795
9083
  *
8796
9084
  * Returns comprehensive billing information including:
8797
9085
  * - Subscription status and plan details
@@ -8875,6 +9163,44 @@ var DashboardsApi = class extends BaseApiClient {
8875
9163
  }
8876
9164
  };
8877
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
+
8878
9204
  // src/api/teams-apps.ts
8879
9205
  var TeamsAppsApi = class extends BaseApiClient {
8880
9206
  /**
@@ -9157,6 +9483,43 @@ var MetricsApi = class extends BaseApiClient {
9157
9483
  }
9158
9484
  };
9159
9485
 
9486
+ // src/api/projects.ts
9487
+ var ProjectsApi = class extends BaseApiClient {
9488
+ /** List projects (README frontmatter summaries). */
9489
+ async getProjects(wid, options = {}) {
9490
+ const params = new URLSearchParams();
9491
+ if (options.page !== void 0) params.append("page", options.page.toString());
9492
+ if (options.pageSize !== void 0) params.append("pageSize", options.pageSize.toString());
9493
+ return this.fetch(
9494
+ `w/${wid}/projects${params.toString() ? `?${params.toString()}` : ""}`
9495
+ );
9496
+ }
9497
+ /** One project: summary + present docs + plan summaries. */
9498
+ async getProject(wid, slug) {
9499
+ return this.fetch(`w/${wid}/projects/${encodeURIComponent(slug)}`);
9500
+ }
9501
+ /** One plan: summary + resolved process + flows + run state. */
9502
+ async getPlan(wid, slug, plan) {
9503
+ return this.fetch(
9504
+ `w/${wid}/projects/${encodeURIComponent(slug)}/plans/${encodeURIComponent(plan)}`
9505
+ );
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
+ }
9521
+ };
9522
+
9160
9523
  // src/api/tracked-links.ts
9161
9524
  function withFilters(params, options) {
9162
9525
  if (options.dateFrom) params.append("dateFrom", options.dateFrom);
@@ -9354,6 +9717,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9354
9717
  customToolkits: new CustomToolkitsApi(apiKey, baseUrl, customFetch),
9355
9718
  dashboards: new DashboardsApi(apiKey, baseUrl, customFetch),
9356
9719
  dataTypes: new DataTypesApi(apiKey, baseUrl, customFetch),
9720
+ devices: new DevicesApi(apiKey, baseUrl, customFetch),
9357
9721
  discordBots: new DiscordBotsApi(apiKey, baseUrl, customFetch),
9358
9722
  slackApps: new SlackAppsApi(apiKey, baseUrl, customFetch),
9359
9723
  teamsApps: new TeamsAppsApi(apiKey, baseUrl, customFetch),
@@ -9366,6 +9730,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9366
9730
  hubspot: new HubspotApi(apiKey, baseUrl, customFetch),
9367
9731
  features: new FeaturesApi(apiKey, baseUrl, customFetch),
9368
9732
  files: new FilesApi(apiKey, baseUrl, customFetch),
9733
+ projects: new ProjectsApi(apiKey, baseUrl, customFetch),
9369
9734
  inboxes: new InboxesApi(apiKey, baseUrl, customFetch),
9370
9735
  inquiries: new InquiriesApi(apiKey, baseUrl, customFetch),
9371
9736
  journeys: new JourneysApi(apiKey, baseUrl, customFetch),
@@ -9411,6 +9776,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9411
9776
  // src/client/workspace-client.ts
9412
9777
  var WORKSPACE_METHOD_NAMES = [
9413
9778
  "activateWorkflowRevision",
9779
+ "addEmailSenderAsMember",
9414
9780
  "addGroupMember",
9415
9781
  "advanceStep",
9416
9782
  "approveWorkspaceInvitation",
@@ -9441,6 +9807,7 @@ var WORKSPACE_METHOD_NAMES = [
9441
9807
  "checkAvailability",
9442
9808
  "checkSiteDomainAvailability",
9443
9809
  "checkSiteSlugAvailability",
9810
+ "claimDevicePairing",
9444
9811
  "clearConnectionMemberExclusion",
9445
9812
  "clearMemberSwitch",
9446
9813
  "clearTrackedLinkDestinations",
@@ -9460,7 +9827,6 @@ var WORKSPACE_METHOD_NAMES = [
9460
9827
  "configureSalesforce",
9461
9828
  "convertEmail",
9462
9829
  "convertFile",
9463
- "crawlSite",
9464
9830
  "createAbility",
9465
9831
  "createAccessGrant",
9466
9832
  "createAgent",
@@ -9629,6 +9995,7 @@ var WORKSPACE_METHOD_NAMES = [
9629
9995
  "exportMembers",
9630
9996
  "exportPhoneNumberOutboundAnalyticsCsv",
9631
9997
  "exportWorkspace",
9998
+ "exportWorkspaceZip",
9632
9999
  "fetchVoicemailAudio",
9633
10000
  "fhirBackfillEncounterSync",
9634
10001
  "fhirCheckPatientLinks",
@@ -9725,6 +10092,11 @@ var WORKSPACE_METHOD_NAMES = [
9725
10092
  "getConnectionSyncConfig",
9726
10093
  "getCredentialUpdateInvites",
9727
10094
  "getCurrentMember",
10095
+ "clearMemberWorkflowVoice",
10096
+ "getMemberWorkflowVoices",
10097
+ "getMyDataTypes",
10098
+ "getMyRecords",
10099
+ "setMemberWorkflowVoice",
9728
10100
  "getCurrentSmsChat",
9729
10101
  "getCustomToolkit",
9730
10102
  "getCustomToolkits",
@@ -9742,6 +10114,9 @@ var WORKSPACE_METHOD_NAMES = [
9742
10114
  "getDataTypeByUuid",
9743
10115
  "getDataTypeBySlug",
9744
10116
  "getDataTypes",
10117
+ "getDevice",
10118
+ "getDeviceKinds",
10119
+ "getDevices",
9745
10120
  "getDiscordBot",
9746
10121
  "getDiscordBotAccounts",
9747
10122
  "getDiscordBotByUuid",
@@ -9885,13 +10260,17 @@ var WORKSPACE_METHOD_NAMES = [
9885
10260
  "getPhoneNumbers",
9886
10261
  "getPhoneUsageReport",
9887
10262
  "getPlatformApp",
10263
+ "getPlan",
9888
10264
  "getPresenceStatus",
9889
10265
  "getProducts",
10266
+ "getProject",
10267
+ "getProjects",
9890
10268
  "getPublicFile",
9891
10269
  "getPublicFolder",
9892
10270
  "getPublicFolderFiles",
9893
10271
  "getPublicProducts",
9894
10272
  "previewPromoCode",
10273
+ "startPromoPlanTrial",
9895
10274
  "getQualification",
9896
10275
  "getQualifications",
9897
10276
  "getRecordingInfo",
@@ -10039,6 +10418,8 @@ var WORKSPACE_METHOD_NAMES = [
10039
10418
  "markNotificationAsRead",
10040
10419
  "mergeMemberRoles",
10041
10420
  "previewImportMembers",
10421
+ "previewMemberWorkflowVoice",
10422
+ "previewRenameFieldSlug",
10042
10423
  "previewImportWorkspace",
10043
10424
  "previewRoutineWorkflowAccess",
10044
10425
  "previewSchedule",
@@ -10051,6 +10432,7 @@ var WORKSPACE_METHOD_NAMES = [
10051
10432
  "rateMessage",
10052
10433
  "getChatFeedback",
10053
10434
  "reenrollMember",
10435
+ "renameFieldSlug",
10054
10436
  "registerLinkedRolesMetadata",
10055
10437
  "registerPushSubscription",
10056
10438
  "reindexFolder",
@@ -10070,6 +10452,7 @@ var WORKSPACE_METHOD_NAMES = [
10070
10452
  "restoreFileVersion",
10071
10453
  "revokeAccessGrant",
10072
10454
  "revokeApiKey",
10455
+ "revokeDevice",
10073
10456
  "revokeICalToken",
10074
10457
  "runRoutine",
10075
10458
  "searchEventRules",
@@ -10140,6 +10523,7 @@ var WORKSPACE_METHOD_NAMES = [
10140
10523
  "updateDataRecord",
10141
10524
  "updateDataRecordFilter",
10142
10525
  "updateDataType",
10526
+ "updateDevice",
10143
10527
  "updateDiscordBot",
10144
10528
  "updateEventAttendee",
10145
10529
  "updateEventRule",
@@ -10173,9 +10557,12 @@ var WORKSPACE_METHOD_NAMES = [
10173
10557
  "updatePersona",
10174
10558
  "updatePhoneNumber",
10175
10559
  "updatePlatformApp",
10560
+ "updatePlan",
10176
10561
  "updateProduct",
10562
+ "updateProject",
10177
10563
  "updateRoutine",
10178
10564
  "updateSalesforceSyncConfig",
10565
+ "resyncSalesforceLinkedMembers",
10179
10566
  "updateScenario",
10180
10567
  "updateSite",
10181
10568
  "updateSiteSharing",
@@ -10395,6 +10782,8 @@ function bindDataTypesMethods(target, dataTypes) {
10395
10782
  target.getDataRecordChanges = dataTypes.getDataRecordChanges.bind(dataTypes);
10396
10783
  target.upsertDataRecord = dataTypes.upsertDataRecord.bind(dataTypes);
10397
10784
  target.toggleFieldIndex = dataTypes.toggleFieldIndex.bind(dataTypes);
10785
+ target.previewRenameFieldSlug = dataTypes.previewRenameFieldSlug.bind(dataTypes);
10786
+ target.renameFieldSlug = dataTypes.renameFieldSlug.bind(dataTypes);
10398
10787
  target.getFieldIndexStatus = dataTypes.getFieldIndexStatus.bind(dataTypes);
10399
10788
  target.validateDataTypeSlug = dataTypes.validateDataTypeSlug.bind(dataTypes);
10400
10789
  target.getMemberRecordCounts = dataTypes.getMemberRecordCounts.bind(dataTypes);
@@ -10406,9 +10795,25 @@ function bindDataTypesMethods(target, dataTypes) {
10406
10795
  target.getDataRecordFilterCount = dataTypes.getDataRecordFilterCount.bind(dataTypes);
10407
10796
  }
10408
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
+
10409
10808
  // src/client/bindings/members.ts
10410
10809
  function bindMembersMethods(target, members) {
10411
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);
10412
10817
  target.getOwnedMembers = members.getOwnedMembers.bind(members);
10413
10818
  target.switchMember = members.switchMember.bind(members);
10414
10819
  target.clearMemberSwitch = members.clearMemberSwitch.bind(members);
@@ -10501,6 +10906,7 @@ function bindWorkspacesMethods(target, workspaces, signupRequests) {
10501
10906
  target.updateProduct = workspaces.updateProduct.bind(workspaces);
10502
10907
  target.deleteProduct = workspaces.deleteProduct.bind(workspaces);
10503
10908
  target.exportWorkspace = workspaces.exportWorkspace.bind(workspaces);
10909
+ target.exportWorkspaceZip = workspaces.exportWorkspaceZip.bind(workspaces);
10504
10910
  target.previewWorkspaceImport = workspaces.previewWorkspaceImport.bind(workspaces);
10505
10911
  target.importWorkspace = workspaces.importWorkspace.bind(workspaces);
10506
10912
  target.previewImportWorkspace = workspaces.previewImportWorkspace.bind(workspaces);
@@ -10620,7 +11026,6 @@ function bindSitesMethods(target, sites) {
10620
11026
  target.siteSendEmailCode = sites.siteSendEmailCode.bind(sites);
10621
11027
  target.siteVerifyCode = sites.siteVerifyCode.bind(sites);
10622
11028
  target.siteGoogleOAuthInitiate = sites.siteGoogleOAuthInitiate.bind(sites);
10623
- target.crawlSite = sites.crawlSite.bind(sites);
10624
11029
  target.createSite = sites.createSite.bind(sites);
10625
11030
  target.updateSite = sites.updateSite.bind(sites);
10626
11031
  target.deleteSite = sites.deleteSite.bind(sites);
@@ -10683,6 +11088,15 @@ function bindFilesMethods(target, files) {
10683
11088
  target.getPublicFolderFiles = files.getPublicFolderFiles.bind(files);
10684
11089
  }
10685
11090
 
11091
+ // src/client/bindings/projects.ts
11092
+ function bindProjectsMethods(target, projects) {
11093
+ target.getProjects = projects.getProjects.bind(projects);
11094
+ target.getProject = projects.getProject.bind(projects);
11095
+ target.getPlan = projects.getPlan.bind(projects);
11096
+ target.updateProject = projects.updateProject.bind(projects);
11097
+ target.updatePlan = projects.updatePlan.bind(projects);
11098
+ }
11099
+
10686
11100
  // src/client/bindings/events.ts
10687
11101
  function bindEventsMethods(target, events) {
10688
11102
  target.getEventRules = events.getEventRules.bind(events);
@@ -10841,6 +11255,7 @@ function bindCommunicationsMethods(target, phoneNumbers, inboxes, notificationRu
10841
11255
  target.getInboxEmail = inboxes.getInboxEmail.bind(inboxes);
10842
11256
  target.markEmailAsRead = inboxes.markEmailAsRead.bind(inboxes);
10843
11257
  target.markEmailAsUnread = inboxes.markEmailAsUnread.bind(inboxes);
11258
+ target.addEmailSenderAsMember = inboxes.addEmailSenderAsMember.bind(inboxes);
10844
11259
  target.convertEmail = inboxes.convertEmail.bind(inboxes);
10845
11260
  target.downloadEmailAttachment = inboxes.downloadEmailAttachment.bind(inboxes);
10846
11261
  target.getInboxThreads = inboxes.getInboxThreads.bind(inboxes);
@@ -10910,6 +11325,12 @@ function bindBillingMethods(target, apiKeys, subscriptions, reports) {
10910
11325
  target.addWorkspaceToSubscription = subscriptions.addWorkspaceToSubscription.bind(subscriptions);
10911
11326
  target.purchaseCredits = subscriptions.purchaseCredits.bind(subscriptions);
10912
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);
10913
11334
  target.listSelfServeProducts = subscriptions.listSelfServeProducts.bind(subscriptions);
10914
11335
  target.getAIUsageReport = reports.getAIUsageReport.bind(reports);
10915
11336
  target.getSMSUsageReport = reports.getSMSUsageReport.bind(reports);
@@ -11087,6 +11508,7 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
11087
11508
  target.getLinkedSalesforceMembers = salesforce.getLinkedSalesforceMembers.bind(salesforce);
11088
11509
  target.getSalesforceSyncConfig = salesforce.getSalesforceSyncConfig.bind(salesforce);
11089
11510
  target.updateSalesforceSyncConfig = salesforce.updateSalesforceSyncConfig.bind(salesforce);
11511
+ target.resyncSalesforceLinkedMembers = salesforce.resyncSalesforceLinkedMembers.bind(salesforce);
11090
11512
  target.listSalesforceObjects = salesforce.listSalesforceObjects.bind(salesforce);
11091
11513
  target.describeSalesforceObject = salesforce.describeSalesforceObject.bind(salesforce);
11092
11514
  target.searchSalesforceRecords = salesforce.searchSalesforceRecords.bind(salesforce);
@@ -11158,6 +11580,7 @@ function bindOrgMethods(target, org) {
11158
11580
  target.disableOrgDomainEmail = org.disableOrgDomainEmail.bind(org);
11159
11581
  target.enableOrgDomainSite = org.enableOrgDomainSite.bind(org);
11160
11582
  target.getOrgDomainSite = org.getOrgDomainSite.bind(org);
11583
+ target.preflightOrgDomainSite = org.preflightOrgDomainSite.bind(org);
11161
11584
  target.verifyOrgDomainSite = org.verifyOrgDomainSite.bind(org);
11162
11585
  target.disableOrgDomainSite = org.disableOrgDomainSite.bind(org);
11163
11586
  target.getBusinessProfile = org.getBusinessProfile.bind(org);
@@ -11171,6 +11594,7 @@ function bindOrgMethods(target, org) {
11171
11594
  target.syncVoiceTrustProducts = org.syncVoiceTrustProducts.bind(org);
11172
11595
  target.createOrganizationWorkspace = org.createOrganizationWorkspace.bind(org);
11173
11596
  target.getOrgBillingCustomer = org.getOrgBillingCustomer.bind(org);
11597
+ target.getOrgWorkspaceUsage = org.getOrgWorkspaceUsage.bind(org);
11174
11598
  }
11175
11599
 
11176
11600
  // src/client/bindings/pronunciations.ts
@@ -11427,6 +11851,8 @@ var GravityRailClient = class {
11427
11851
  getDataRecordChanges;
11428
11852
  upsertDataRecord;
11429
11853
  toggleFieldIndex;
11854
+ previewRenameFieldSlug;
11855
+ renameFieldSlug;
11430
11856
  getFieldIndexStatus;
11431
11857
  validateDataTypeSlug;
11432
11858
  getMemberRecordCounts;
@@ -11438,6 +11864,12 @@ var GravityRailClient = class {
11438
11864
  getDataRecordFilterCount;
11439
11865
  // Members API
11440
11866
  getCurrentMember;
11867
+ getMyDataTypes;
11868
+ getMyRecords;
11869
+ getMemberWorkflowVoices;
11870
+ previewMemberWorkflowVoice;
11871
+ setMemberWorkflowVoice;
11872
+ clearMemberWorkflowVoice;
11441
11873
  getOwnedMembers;
11442
11874
  switchMember;
11443
11875
  clearMemberSwitch;
@@ -11672,11 +12104,13 @@ var GravityRailClient = class {
11672
12104
  getWorkspaceProduct;
11673
12105
  getPublicProducts;
11674
12106
  previewPromoCode;
12107
+ startPromoPlanTrial;
11675
12108
  getPublicProduct;
11676
12109
  createProduct;
11677
12110
  updateProduct;
11678
12111
  deleteProduct;
11679
12112
  exportWorkspace;
12113
+ exportWorkspaceZip;
11680
12114
  previewWorkspaceImport;
11681
12115
  importWorkspace;
11682
12116
  previewImportWorkspace;
@@ -11703,6 +12137,7 @@ var GravityRailClient = class {
11703
12137
  disableOrgDomainEmail;
11704
12138
  enableOrgDomainSite;
11705
12139
  getOrgDomainSite;
12140
+ preflightOrgDomainSite;
11706
12141
  verifyOrgDomainSite;
11707
12142
  disableOrgDomainSite;
11708
12143
  getBusinessProfile;
@@ -11716,6 +12151,7 @@ var GravityRailClient = class {
11716
12151
  syncVoiceTrustProducts;
11717
12152
  createOrganizationWorkspace;
11718
12153
  getOrgBillingCustomer;
12154
+ getOrgWorkspaceUsage;
11719
12155
  getVapidPublicKey;
11720
12156
  registerPushSubscription;
11721
12157
  unregisterPushSubscription;
@@ -11815,7 +12251,6 @@ var GravityRailClient = class {
11815
12251
  siteSendEmailCode;
11816
12252
  siteVerifyCode;
11817
12253
  siteGoogleOAuthInitiate;
11818
- crawlSite;
11819
12254
  createSite;
11820
12255
  updateSite;
11821
12256
  deleteSite;
@@ -11836,6 +12271,11 @@ var GravityRailClient = class {
11836
12271
  // Files API
11837
12272
  getFiles;
11838
12273
  getFile;
12274
+ getProjects;
12275
+ getProject;
12276
+ getPlan;
12277
+ updateProject;
12278
+ updatePlan;
11839
12279
  resolveFilePath;
11840
12280
  downloadFilesZip;
11841
12281
  createFile;
@@ -12006,6 +12446,7 @@ var GravityRailClient = class {
12006
12446
  getInboxEmail;
12007
12447
  markEmailAsRead;
12008
12448
  markEmailAsUnread;
12449
+ addEmailSenderAsMember;
12009
12450
  convertEmail;
12010
12451
  downloadEmailAttachment;
12011
12452
  getInboxThreads;
@@ -12054,6 +12495,13 @@ var GravityRailClient = class {
12054
12495
  getFeatureRegistry;
12055
12496
  getPublicFeatureRegistry;
12056
12497
  getFeatureBySlug;
12498
+ // Devices API
12499
+ getDevices;
12500
+ getDevice;
12501
+ getDeviceKinds;
12502
+ claimDevicePairing;
12503
+ updateDevice;
12504
+ revokeDevice;
12057
12505
  // Billing API
12058
12506
  getApiKeys;
12059
12507
  createApiKey;
@@ -12069,6 +12517,12 @@ var GravityRailClient = class {
12069
12517
  addWorkspaceToSubscription;
12070
12518
  purchaseCredits;
12071
12519
  createCheckoutSession;
12520
+ createMemberCheckoutSession;
12521
+ createMemberPortalSession;
12522
+ getMemberSubscriptionStatus;
12523
+ createDeviceOrderCheckoutSession;
12524
+ listDeviceOrders;
12525
+ getCheckoutAttemptStatus;
12072
12526
  listSelfServeProducts;
12073
12527
  getAIUsageReport;
12074
12528
  getSMSUsageReport;
@@ -12248,6 +12702,7 @@ var GravityRailClient = class {
12248
12702
  getLinkedSalesforceMembers;
12249
12703
  getSalesforceSyncConfig;
12250
12704
  updateSalesforceSyncConfig;
12705
+ resyncSalesforceLinkedMembers;
12251
12706
  listSalesforceObjects;
12252
12707
  describeSalesforceObject;
12253
12708
  searchSalesforceRecords;
@@ -12350,6 +12805,7 @@ var GravityRailClient = class {
12350
12805
  bindChatsMethods(this, apis.chats);
12351
12806
  bindCallsMethods(this, apis.calls, apis.cel);
12352
12807
  bindDataTypesMethods(this, apis.dataTypes);
12808
+ bindDevicesMethods(this, apis.devices);
12353
12809
  bindMembersMethods(this, apis.members);
12354
12810
  bindAgentTasksMethods(this, apis.agentTasks);
12355
12811
  bindAgentsMethods(this, apis.agents);
@@ -12371,6 +12827,7 @@ var GravityRailClient = class {
12371
12827
  bindAuthMethods(this, apis.auth, apis.assignments);
12372
12828
  bindSitesMethods(this, apis.sites);
12373
12829
  bindFilesMethods(this, apis.files);
12830
+ bindProjectsMethods(this, apis.projects);
12374
12831
  bindEventsMethods(this, apis.events);
12375
12832
  bindWorkflowsMethods(this, apis.workflows, apis.workflowNotes, apis.voice, apis.supervisors);
12376
12833
  bindCalendarsMethods(this, apis.calendars);
@@ -12541,6 +12998,7 @@ var AbilityTypeSlugs = {
12541
12998
  SEND_WHATSAPP: "communication:send_whatsapp",
12542
12999
  MEMBER_ACCESS: "communication:member_access",
12543
13000
  AUDIO_PLAYBACK: "communication:audio_playback",
13001
+ IMAGE_DISPLAY: "communication:image_display",
12544
13002
  // Oversight
12545
13003
  SUPERVISOR: "oversight:supervisor",
12546
13004
  SUPERVISOR_ACTIONS: "oversight:supervisor_actions",
@@ -12549,6 +13007,7 @@ var AbilityTypeSlugs = {
12549
13007
  MEMBER_FIELD_VERIFICATION: "identity:member_field_verification",
12550
13008
  // Delegation
12551
13009
  CONTRIBUTOR: "delegation:contributor",
13010
+ MANAGE_WORKSPACE: "delegation:manage_workspace",
12552
13011
  // Workflow
12553
13012
  WORKFLOW_RUN: "workflow:run",
12554
13013
  // Commerce
@@ -12881,7 +13340,7 @@ function isChatType(value) {
12881
13340
 
12882
13341
  // src/constants/models.ts
12883
13342
  var DEFAULT_CHAT_MODEL = "aws:bedrock:claude-4-5-haiku";
12884
- var DEFAULT_VOICE_INFERENCE_MODEL = "google:vertex:gemini-3-flash";
13343
+ var DEFAULT_VOICE_INFERENCE_MODEL = "openai:chat:gpt-5.6-luna";
12885
13344
  var DEFAULT_CUSTOM_VOICE_MODEL = "elevenlabs:voice:river";
12886
13345
 
12887
13346
  // src/types/resource-metadata.ts
@@ -12890,105 +13349,79 @@ var RESOURCE_METADATA = {
12890
13349
  label: "Credits",
12891
13350
  unit: "credit",
12892
13351
  unitPlural: "credits",
12893
- description: "AI model usage billed as tokens with model-specific multipliers",
12894
- requiresFeature: null,
12895
- scope: "any"
13352
+ description: "AI model usage billed as tokens with model-specific multipliers"
12896
13353
  },
12897
13354
  ["stt" /* STT */]: {
12898
13355
  label: "Speech-to-Text",
12899
13356
  unit: "minute",
12900
13357
  unitPlural: "minutes",
12901
- description: "Audio transcription in minutes",
12902
- requiresFeature: null,
12903
- scope: "any"
13358
+ description: "Audio transcription in minutes"
12904
13359
  },
12905
13360
  ["tts" /* TTS */]: {
12906
13361
  label: "Text-to-Speech",
12907
13362
  unit: "1,000 characters",
12908
13363
  unitPlural: "1,000 characters",
12909
- description: "Text synthesized to audio, billed in lots of 1,000 characters",
12910
- requiresFeature: null,
12911
- scope: "any"
13364
+ description: "Text synthesized to audio, billed in lots of 1,000 characters"
12912
13365
  },
12913
13366
  ["sms" /* SMS */]: {
12914
13367
  label: "SMS Messages",
12915
13368
  unit: "message",
12916
13369
  unitPlural: "messages",
12917
- description: "Text messages sent via phone number",
12918
- requiresFeature: "phone" /* PHONE */,
12919
- scope: "any"
13370
+ description: "Text messages sent via phone number"
12920
13371
  },
12921
13372
  ["email" /* EMAIL */]: {
12922
13373
  label: "Emails",
12923
13374
  unit: "message",
12924
13375
  unitPlural: "messages",
12925
- description: "Email messages sent or received",
12926
- requiresFeature: "email" /* EMAIL */,
12927
- scope: "any"
13376
+ description: "Email messages sent or received"
12928
13377
  },
12929
13378
  ["phone_call" /* PHONE_CALL */]: {
12930
13379
  label: "Phone Calls",
12931
13380
  unit: "minute",
12932
13381
  unitPlural: "minutes",
12933
- description: "Phone call duration in minutes",
12934
- requiresFeature: "phone" /* PHONE */,
12935
- scope: "any"
13382
+ description: "Phone call duration in minutes"
12936
13383
  },
12937
13384
  ["phone_number" /* PHONE_NUMBER */]: {
12938
13385
  label: "Phone Numbers",
12939
13386
  unit: "number",
12940
13387
  unitPlural: "numbers",
12941
- description: "Active phone numbers for calling and SMS",
12942
- requiresFeature: "phone" /* PHONE */,
12943
- scope: "any"
13388
+ description: "Active phone numbers for calling and SMS"
12944
13389
  },
12945
13390
  ["inbox" /* INBOX */]: {
12946
13391
  label: "Email Inboxes",
12947
13392
  unit: "inbox",
12948
13393
  unitPlural: "inboxes",
12949
- description: "Email inboxes for receiving messages",
12950
- requiresFeature: "email" /* EMAIL */,
12951
- scope: "any"
13394
+ description: "Email inboxes for receiving messages"
12952
13395
  },
12953
13396
  ["site" /* SITE */]: {
12954
13397
  label: "Sites",
12955
13398
  unit: "site",
12956
13399
  unitPlural: "sites",
12957
- description: "Published websites",
12958
- requiresFeature: "sites" /* SITES */,
12959
- scope: "any"
13400
+ description: "Published websites"
12960
13401
  },
12961
13402
  ["member" /* MEMBER */]: {
12962
13403
  label: "Members",
12963
13404
  unit: "member",
12964
13405
  unitPlural: "members",
12965
- description: "Total workspace members",
12966
- requiresFeature: null,
12967
- scope: "workspace"
13406
+ description: "Members across the organization"
12968
13407
  },
12969
13408
  ["workspace" /* WORKSPACE */]: {
12970
13409
  label: "Workspaces",
12971
13410
  unit: "workspace",
12972
13411
  unitPlural: "workspaces",
12973
- description: "Workspaces in the organization",
12974
- requiresFeature: null,
12975
- scope: "org"
13412
+ description: "Workspaces in the organization"
12976
13413
  },
12977
13414
  ["org_admin" /* ORG_ADMIN */]: {
12978
13415
  label: "Organization Admins",
12979
13416
  unit: "admin",
12980
13417
  unitPlural: "admins",
12981
- description: "Organization administrators",
12982
- requiresFeature: null,
12983
- scope: "org"
13418
+ description: "Organization administrators"
12984
13419
  },
12985
13420
  ["storage_mb" /* STORAGE_MB */]: {
12986
13421
  label: "Storage",
12987
13422
  unit: "MB",
12988
13423
  unitPlural: "MB",
12989
- description: "File storage in megabytes",
12990
- requiresFeature: null,
12991
- scope: "any"
13424
+ description: "File storage in megabytes"
12992
13425
  }
12993
13426
  };
12994
13427
  function getResourceMetadata(resource) {
@@ -12997,35 +13430,6 @@ function getResourceMetadata(resource) {
12997
13430
  function getAllResourceSlugs() {
12998
13431
  return Object.keys(RESOURCE_METADATA);
12999
13432
  }
13000
- function getScopeFromProductType(productType) {
13001
- const isOrgProduct = productType === "org" /* ORG */;
13002
- return isOrgProduct ? "org" : "workspace";
13003
- }
13004
- function getApplicableResources(scope, enabledFeatures) {
13005
- const enabledSet = enabledFeatures ? new Set(enabledFeatures) : null;
13006
- return Object.entries(RESOURCE_METADATA).filter(([_slug, metadata]) => {
13007
- if (scope === "workspace" && metadata.scope === "org") {
13008
- return false;
13009
- }
13010
- if (scope === "org" && metadata.scope === "workspace") {
13011
- return false;
13012
- }
13013
- if (enabledSet !== null && metadata.requiresFeature !== null) {
13014
- if (!enabledSet.has(metadata.requiresFeature)) {
13015
- return false;
13016
- }
13017
- }
13018
- return true;
13019
- }).map(([slug]) => slug).sort((a, b) => {
13020
- const metaA = RESOURCE_METADATA[a];
13021
- const metaB = RESOURCE_METADATA[b];
13022
- return metaA.label.localeCompare(metaB.label);
13023
- });
13024
- }
13025
- function getApplicableResourceSlugs(productType) {
13026
- const scope = getScopeFromProductType(productType);
13027
- return getApplicableResources(scope);
13028
- }
13029
13433
 
13030
13434
  // src/scopes.ts
13031
13435
  var ScopeCategory = /* @__PURE__ */ ((ScopeCategory2) => {
@@ -13040,6 +13444,7 @@ var ScopeCategory = /* @__PURE__ */ ((ScopeCategory2) => {
13040
13444
  ScopeCategory2["DATATYPES"] = "datatypes";
13041
13445
  ScopeCategory2["RECORDS"] = "records";
13042
13446
  ScopeCategory2["FILES"] = "files";
13447
+ ScopeCategory2["DEVICES"] = "devices";
13043
13448
  ScopeCategory2["JOURNEYS"] = "journeys";
13044
13449
  ScopeCategory2["EXPERIMENTS"] = "experiments";
13045
13450
  ScopeCategory2["SITES"] = "sites";
@@ -13284,6 +13689,26 @@ var SCOPES = {
13284
13689
  implies: ["files:write"]
13285
13690
  },
13286
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
+ // =========================================================================
13287
13712
  // JOURNEYS
13288
13713
  // =========================================================================
13289
13714
  "journeys:read": {
@@ -13783,7 +14208,8 @@ export {
13783
14208
  Resource,
13784
14209
  ProductType,
13785
14210
  ORG_ONLY_RESOURCES,
13786
- LIMIT_ONLY_RESOURCES,
14211
+ MEMBER_SUBSCRIPTION_STATUSES,
14212
+ MEMBER_ENTITLEMENT_STATUSES,
13787
14213
  WorkspaceProvisionStatus,
13788
14214
  InvitationStatus,
13789
14215
  ModelProvider,
@@ -13793,7 +14219,6 @@ export {
13793
14219
  REALTIME_MODEL_OPENAI_2,
13794
14220
  REALTIME_MODEL_GEMINI,
13795
14221
  REALTIME_MODEL_GEMINI_VERTEX,
13796
- REALTIME_MODEL_NOVA_SONIC,
13797
14222
  REALTIME_MODEL_CUSTOM,
13798
14223
  STT_MODEL_DEEPGRAM_FLUX,
13799
14224
  STT_MODEL_DEEPGRAM_FLUX_SELFHOST,
@@ -13850,11 +14275,13 @@ export {
13850
14275
  bindMotdMethods,
13851
14276
  bindTrackedLinksMethods,
13852
14277
  bindDataTypesMethods,
14278
+ bindDevicesMethods,
13853
14279
  bindMembersMethods,
13854
14280
  bindWorkspacesMethods,
13855
14281
  bindAuthMethods,
13856
14282
  bindSitesMethods,
13857
14283
  bindFilesMethods,
14284
+ bindProjectsMethods,
13858
14285
  bindEventsMethods,
13859
14286
  bindExperimentsMethods,
13860
14287
  bindWorkflowsMethods,
@@ -13931,13 +14358,10 @@ export {
13931
14358
  DEFAULT_CUSTOM_VOICE_MODEL,
13932
14359
  getResourceMetadata,
13933
14360
  getAllResourceSlugs,
13934
- getScopeFromProductType,
13935
- getApplicableResources,
13936
- getApplicableResourceSlugs,
13937
14361
  ScopeCategory,
13938
14362
  SCOPES,
13939
14363
  ScopeManager,
13940
14364
  SCOPE_PRESETS,
13941
14365
  getRevisionState
13942
14366
  };
13943
- //# sourceMappingURL=chunk-MP5ENP4Q.js.map
14367
+ //# sourceMappingURL=chunk-24L4RD4Z.js.map