@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
package/dist/internal.cjs CHANGED
@@ -43,6 +43,7 @@ __export(internal_exports, {
43
43
  ActivityEventTypePreset: () => ActivityEventTypePreset,
44
44
  ActivityGoalImpact: () => ActivityGoalImpact,
45
45
  ActivityTimelineProjection: () => ActivityTimelineProjection,
46
+ AddonMutationResponseScope: () => AddonMutationResponseScope,
46
47
  AgentTasksApi: () => AgentTasksApi,
47
48
  AgentsApi: () => AgentsApi,
48
49
  ApiError: () => ApiError,
@@ -120,8 +121,9 @@ __export(internal_exports, {
120
121
  InvitationStatus: () => InvitationStatus,
121
122
  JobPosition: () => JobPosition,
122
123
  JourneysApi: () => JourneysApi,
123
- LIMIT_ONLY_RESOURCES: () => LIMIT_ONLY_RESOURCES,
124
124
  MASKED_SECRET_SENTINEL: () => MASKED_SECRET_SENTINEL,
125
+ MEMBER_ENTITLEMENT_STATUSES: () => MEMBER_ENTITLEMENT_STATUSES,
126
+ MEMBER_SUBSCRIPTION_STATUSES: () => MEMBER_SUBSCRIPTION_STATUSES,
125
127
  McpServerState: () => McpServerState,
126
128
  McpServersApi: () => McpServersApi,
127
129
  MemberFeature: () => MemberFeature,
@@ -150,6 +152,7 @@ __export(internal_exports, {
150
152
  OperatorApi: () => OperatorApi,
151
153
  OrgApi: () => OrgApi,
152
154
  OrgFeature: () => OrgFeature,
155
+ OrganizationAddonResponseScope: () => OrganizationAddonResponseScope,
153
156
  PERMISSION_ADMIN: () => PERMISSION_ADMIN,
154
157
  PERMISSION_CREATE: () => PERMISSION_CREATE,
155
158
  PERMISSION_DELETE: () => PERMISSION_DELETE,
@@ -182,7 +185,6 @@ __export(internal_exports, {
182
185
  REALTIME_MODEL_CUSTOM: () => REALTIME_MODEL_CUSTOM,
183
186
  REALTIME_MODEL_GEMINI: () => REALTIME_MODEL_GEMINI,
184
187
  REALTIME_MODEL_GEMINI_VERTEX: () => REALTIME_MODEL_GEMINI_VERTEX,
185
- REALTIME_MODEL_NOVA_SONIC: () => REALTIME_MODEL_NOVA_SONIC,
186
188
  REALTIME_MODEL_OPENAI: () => REALTIME_MODEL_OPENAI,
187
189
  REALTIME_MODEL_OPENAI_2: () => REALTIME_MODEL_OPENAI_2,
188
190
  REALTIME_MODEL_OPENAI_MINI: () => REALTIME_MODEL_OPENAI_MINI,
@@ -250,6 +252,7 @@ __export(internal_exports, {
250
252
  bindCustomersMethods: () => bindCustomersMethods,
251
253
  bindDashboardsMethods: () => bindDashboardsMethods,
252
254
  bindDataTypesMethods: () => bindDataTypesMethods,
255
+ bindDevicesMethods: () => bindDevicesMethods,
253
256
  bindEventsMethods: () => bindEventsMethods,
254
257
  bindExperimentsMethods: () => bindExperimentsMethods,
255
258
  bindFilesMethods: () => bindFilesMethods,
@@ -261,6 +264,7 @@ __export(internal_exports, {
261
264
  bindOperatorMethods: () => bindOperatorMethods,
262
265
  bindOrgMethods: () => bindOrgMethods,
263
266
  bindPersonasMethods: () => bindPersonasMethods,
267
+ bindProjectsMethods: () => bindProjectsMethods,
264
268
  bindPromptsMethods: () => bindPromptsMethods,
265
269
  bindPronunciationsMethods: () => bindPronunciationsMethods,
266
270
  bindQualificationsMethods: () => bindQualificationsMethods,
@@ -283,8 +287,6 @@ __export(internal_exports, {
283
287
  formatAppContextAsMarkdown: () => formatAppContextAsMarkdown,
284
288
  getAllFeatures: () => getAllFeatures,
285
289
  getAllResourceSlugs: () => getAllResourceSlugs,
286
- getApplicableResourceSlugs: () => getApplicableResourceSlugs,
287
- getApplicableResources: () => getApplicableResources,
288
290
  getAvailableFeaturesForUpgrade: () => getAvailableFeaturesForUpgrade,
289
291
  getCookieValue: () => getCookieValue,
290
292
  getFeature: () => getFeature,
@@ -293,7 +295,6 @@ __export(internal_exports, {
293
295
  getMissingDependencies: () => getMissingDependencies,
294
296
  getResourceMetadata: () => getResourceMetadata,
295
297
  getRevisionState: () => getRevisionState,
296
- getScopeFromProductType: () => getScopeFromProductType,
297
298
  getTTSProvider: () => getTTSProvider,
298
299
  getVoiceModelId: () => getVoiceModelId,
299
300
  initializeFeatures: () => initializeFeatures,
@@ -414,6 +415,9 @@ var Scope = /* @__PURE__ */ ((Scope2) => {
414
415
  Scope2["FILES_READ"] = "files:read";
415
416
  Scope2["FILES_WRITE"] = "files:write";
416
417
  Scope2["FILES_ADMIN"] = "files:admin";
418
+ Scope2["DEVICES_READ"] = "devices:read";
419
+ Scope2["DEVICES_WRITE"] = "devices:write";
420
+ Scope2["DEVICES_ADMIN"] = "devices:admin";
417
421
  Scope2["SITES_READ"] = "sites:read";
418
422
  Scope2["SITES_WRITE"] = "sites:write";
419
423
  Scope2["SITES_ADMIN"] = "sites:admin";
@@ -576,6 +580,7 @@ var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
576
580
  EventRuleEventType2["CALENDAR_EVENT_CANCELLED"] = "calendar_event:cancelled";
577
581
  EventRuleEventType2["CALENDAR_EVENT_STARTING"] = "calendar_event:starting";
578
582
  EventRuleEventType2["CALENDAR_EVENT_ENDED"] = "calendar_event:ended";
583
+ EventRuleEventType2["CALENDAR_EVENT_NO_SHOW"] = "calendar_event:no_show";
579
584
  EventRuleEventType2["CONNECTOR_EVENT"] = "connector:event";
580
585
  EventRuleEventType2["ASSIGNMENT_CONCLUDED"] = "assignment:concluded";
581
586
  EventRuleEventType2["JOURNEY_STEP_EXECUTE"] = "journey_step:execute";
@@ -658,7 +663,6 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
658
663
  WorkspaceFeature2["CONFLUENCE"] = "confluence";
659
664
  WorkspaceFeature2["AGENT_MEMORY"] = "agent_memory";
660
665
  WorkspaceFeature2["IMAGE_GENERATION"] = "image_generation";
661
- WorkspaceFeature2["STRICT_NATIVE_VOICE"] = "strict_native_voice";
662
666
  WorkspaceFeature2["CHARLESTON_NEPHROLOGY_PMD_PAGING"] = "charleston_nephrology_pmd_paging";
663
667
  WorkspaceFeature2["PATIENTSYNC_TRANSFER"] = "patientsync_transfer";
664
668
  return WorkspaceFeature2;
@@ -696,9 +700,10 @@ var Resource = /* @__PURE__ */ ((Resource2) => {
696
700
  return Resource2;
697
701
  })(Resource || {});
698
702
  var ProductType = /* @__PURE__ */ ((ProductType2) => {
699
- ProductType2["WORKSPACE"] = "workspace";
700
703
  ProductType2["ORG"] = "org";
701
704
  ProductType2["ADDON"] = "addon";
705
+ ProductType2["MEMBER"] = "member";
706
+ ProductType2["DEVICE"] = "device";
702
707
  return ProductType2;
703
708
  })(ProductType || {});
704
709
  var ORG_ONLY_RESOURCES = /* @__PURE__ */ new Set([
@@ -706,15 +711,27 @@ var ORG_ONLY_RESOURCES = /* @__PURE__ */ new Set([
706
711
  "org_admin" /* ORG_ADMIN */,
707
712
  "phone_number" /* PHONE_NUMBER */
708
713
  ]);
709
- var LIMIT_ONLY_RESOURCES = /* @__PURE__ */ new Set([
710
- "member" /* MEMBER */,
711
- "inbox" /* INBOX */,
712
- "site" /* SITE */,
713
- "phone_number" /* PHONE_NUMBER */,
714
- "storage_mb" /* STORAGE_MB */,
715
- "workspace" /* WORKSPACE */,
716
- "org_admin" /* ORG_ADMIN */
717
- ]);
714
+ var MEMBER_SUBSCRIPTION_STATUSES = [
715
+ "creating",
716
+ "checkout_pending",
717
+ "checkout_failed",
718
+ "incomplete",
719
+ "incomplete_expired",
720
+ "trialing",
721
+ "active",
722
+ "past_due",
723
+ "unpaid",
724
+ "paused",
725
+ "canceled"
726
+ ];
727
+ var MEMBER_ENTITLEMENT_STATUSES = [
728
+ "pending",
729
+ "grant_pending",
730
+ "granted",
731
+ "revoked",
732
+ "superseded",
733
+ "needs_reconcile"
734
+ ];
718
735
 
719
736
  // src/types/workspace-types.ts
720
737
  var WorkspaceProvisionStatus = /* @__PURE__ */ ((WorkspaceProvisionStatus2) => {
@@ -827,7 +844,6 @@ var REALTIME_MODEL_OPENAI_MINI = "openai:realtime:gpt-realtime-mini";
827
844
  var REALTIME_MODEL_OPENAI_2 = "openai:realtime:gpt-realtime-2";
828
845
  var REALTIME_MODEL_GEMINI = "google:aistudio:gemini-3.1-flash-live";
829
846
  var REALTIME_MODEL_GEMINI_VERTEX = "google:vertex:gemini-3.1-flash-live";
830
- var REALTIME_MODEL_NOVA_SONIC = "aws:bedrock:nova-sonic-1";
831
847
  var REALTIME_MODEL_CUSTOM = "custom:realtime:composable";
832
848
  var STT_MODEL_DEEPGRAM_FLUX = "deepgram:stt:flux-general-en";
833
849
  var STT_MODEL_DEEPGRAM_FLUX_SELFHOST = "deepgram:stt:flux-general-en:selfhost";
@@ -1100,6 +1116,7 @@ var AbilityTypeSlugs = {
1100
1116
  SEND_WHATSAPP: "communication:send_whatsapp",
1101
1117
  MEMBER_ACCESS: "communication:member_access",
1102
1118
  AUDIO_PLAYBACK: "communication:audio_playback",
1119
+ IMAGE_DISPLAY: "communication:image_display",
1103
1120
  // Oversight
1104
1121
  SUPERVISOR: "oversight:supervisor",
1105
1122
  SUPERVISOR_ACTIONS: "oversight:supervisor_actions",
@@ -1108,6 +1125,7 @@ var AbilityTypeSlugs = {
1108
1125
  MEMBER_FIELD_VERIFICATION: "identity:member_field_verification",
1109
1126
  // Delegation
1110
1127
  CONTRIBUTOR: "delegation:contributor",
1128
+ MANAGE_WORKSPACE: "delegation:manage_workspace",
1111
1129
  // Workflow
1112
1130
  WORKFLOW_RUN: "workflow:run",
1113
1131
  // Commerce
@@ -1118,6 +1136,16 @@ var AbilityTypeSlugs = {
1118
1136
  CEL_ROUTING: "system:cel_routing"
1119
1137
  };
1120
1138
 
1139
+ // src/types/generated/addon.ts
1140
+ var AddonMutationResponseScope = {
1141
+ organization: "organization",
1142
+ workspace: "workspace"
1143
+ };
1144
+ var OrganizationAddonResponseScope = {
1145
+ organization: "organization",
1146
+ workspace: "workspace"
1147
+ };
1148
+
1121
1149
  // src/types/generated/promo_code_service.ts
1122
1150
  var PromoCodeStatus = {
1123
1151
  active: "active",
@@ -1363,105 +1391,79 @@ var RESOURCE_METADATA = {
1363
1391
  label: "Credits",
1364
1392
  unit: "credit",
1365
1393
  unitPlural: "credits",
1366
- description: "AI model usage billed as tokens with model-specific multipliers",
1367
- requiresFeature: null,
1368
- scope: "any"
1394
+ description: "AI model usage billed as tokens with model-specific multipliers"
1369
1395
  },
1370
1396
  ["stt" /* STT */]: {
1371
1397
  label: "Speech-to-Text",
1372
1398
  unit: "minute",
1373
1399
  unitPlural: "minutes",
1374
- description: "Audio transcription in minutes",
1375
- requiresFeature: null,
1376
- scope: "any"
1400
+ description: "Audio transcription in minutes"
1377
1401
  },
1378
1402
  ["tts" /* TTS */]: {
1379
1403
  label: "Text-to-Speech",
1380
1404
  unit: "1,000 characters",
1381
1405
  unitPlural: "1,000 characters",
1382
- description: "Text synthesized to audio, billed in lots of 1,000 characters",
1383
- requiresFeature: null,
1384
- scope: "any"
1406
+ description: "Text synthesized to audio, billed in lots of 1,000 characters"
1385
1407
  },
1386
1408
  ["sms" /* SMS */]: {
1387
1409
  label: "SMS Messages",
1388
1410
  unit: "message",
1389
1411
  unitPlural: "messages",
1390
- description: "Text messages sent via phone number",
1391
- requiresFeature: "phone" /* PHONE */,
1392
- scope: "any"
1412
+ description: "Text messages sent via phone number"
1393
1413
  },
1394
1414
  ["email" /* EMAIL */]: {
1395
1415
  label: "Emails",
1396
1416
  unit: "message",
1397
1417
  unitPlural: "messages",
1398
- description: "Email messages sent or received",
1399
- requiresFeature: "email" /* EMAIL */,
1400
- scope: "any"
1418
+ description: "Email messages sent or received"
1401
1419
  },
1402
1420
  ["phone_call" /* PHONE_CALL */]: {
1403
1421
  label: "Phone Calls",
1404
1422
  unit: "minute",
1405
1423
  unitPlural: "minutes",
1406
- description: "Phone call duration in minutes",
1407
- requiresFeature: "phone" /* PHONE */,
1408
- scope: "any"
1424
+ description: "Phone call duration in minutes"
1409
1425
  },
1410
1426
  ["phone_number" /* PHONE_NUMBER */]: {
1411
1427
  label: "Phone Numbers",
1412
1428
  unit: "number",
1413
1429
  unitPlural: "numbers",
1414
- description: "Active phone numbers for calling and SMS",
1415
- requiresFeature: "phone" /* PHONE */,
1416
- scope: "any"
1430
+ description: "Active phone numbers for calling and SMS"
1417
1431
  },
1418
1432
  ["inbox" /* INBOX */]: {
1419
1433
  label: "Email Inboxes",
1420
1434
  unit: "inbox",
1421
1435
  unitPlural: "inboxes",
1422
- description: "Email inboxes for receiving messages",
1423
- requiresFeature: "email" /* EMAIL */,
1424
- scope: "any"
1436
+ description: "Email inboxes for receiving messages"
1425
1437
  },
1426
1438
  ["site" /* SITE */]: {
1427
1439
  label: "Sites",
1428
1440
  unit: "site",
1429
1441
  unitPlural: "sites",
1430
- description: "Published websites",
1431
- requiresFeature: "sites" /* SITES */,
1432
- scope: "any"
1442
+ description: "Published websites"
1433
1443
  },
1434
1444
  ["member" /* MEMBER */]: {
1435
1445
  label: "Members",
1436
1446
  unit: "member",
1437
1447
  unitPlural: "members",
1438
- description: "Total workspace members",
1439
- requiresFeature: null,
1440
- scope: "workspace"
1448
+ description: "Members across the organization"
1441
1449
  },
1442
1450
  ["workspace" /* WORKSPACE */]: {
1443
1451
  label: "Workspaces",
1444
1452
  unit: "workspace",
1445
1453
  unitPlural: "workspaces",
1446
- description: "Workspaces in the organization",
1447
- requiresFeature: null,
1448
- scope: "org"
1454
+ description: "Workspaces in the organization"
1449
1455
  },
1450
1456
  ["org_admin" /* ORG_ADMIN */]: {
1451
1457
  label: "Organization Admins",
1452
1458
  unit: "admin",
1453
1459
  unitPlural: "admins",
1454
- description: "Organization administrators",
1455
- requiresFeature: null,
1456
- scope: "org"
1460
+ description: "Organization administrators"
1457
1461
  },
1458
1462
  ["storage_mb" /* STORAGE_MB */]: {
1459
1463
  label: "Storage",
1460
1464
  unit: "MB",
1461
1465
  unitPlural: "MB",
1462
- description: "File storage in megabytes",
1463
- requiresFeature: null,
1464
- scope: "any"
1466
+ description: "File storage in megabytes"
1465
1467
  }
1466
1468
  };
1467
1469
  function getResourceMetadata(resource) {
@@ -1470,35 +1472,6 @@ function getResourceMetadata(resource) {
1470
1472
  function getAllResourceSlugs() {
1471
1473
  return Object.keys(RESOURCE_METADATA);
1472
1474
  }
1473
- function getScopeFromProductType(productType) {
1474
- const isOrgProduct = productType === "org" /* ORG */;
1475
- return isOrgProduct ? "org" : "workspace";
1476
- }
1477
- function getApplicableResources(scope, enabledFeatures) {
1478
- const enabledSet = enabledFeatures ? new Set(enabledFeatures) : null;
1479
- return Object.entries(RESOURCE_METADATA).filter(([_slug, metadata]) => {
1480
- if (scope === "workspace" && metadata.scope === "org") {
1481
- return false;
1482
- }
1483
- if (scope === "org" && metadata.scope === "workspace") {
1484
- return false;
1485
- }
1486
- if (enabledSet !== null && metadata.requiresFeature !== null) {
1487
- if (!enabledSet.has(metadata.requiresFeature)) {
1488
- return false;
1489
- }
1490
- }
1491
- return true;
1492
- }).map(([slug]) => slug).sort((a, b) => {
1493
- const metaA = RESOURCE_METADATA[a];
1494
- const metaB = RESOURCE_METADATA[b];
1495
- return metaA.label.localeCompare(metaB.label);
1496
- });
1497
- }
1498
- function getApplicableResourceSlugs(productType) {
1499
- const scope = getScopeFromProductType(productType);
1500
- return getApplicableResources(scope);
1501
- }
1502
1475
 
1503
1476
  // src/types/chat-types.ts
1504
1477
  var SMS_DELIVERY_FAILURE_STATUSES = /* @__PURE__ */ new Set([
@@ -1791,7 +1764,7 @@ function isChatType(value) {
1791
1764
 
1792
1765
  // src/constants/models.ts
1793
1766
  var DEFAULT_CHAT_MODEL = "aws:bedrock:claude-4-5-haiku";
1794
- var DEFAULT_VOICE_INFERENCE_MODEL = "google:vertex:gemini-3-flash";
1767
+ var DEFAULT_VOICE_INFERENCE_MODEL = "openai:chat:gpt-5.6-luna";
1795
1768
  var DEFAULT_CUSTOM_VOICE_MODEL = "elevenlabs:voice:river";
1796
1769
 
1797
1770
  // src/scopes.ts
@@ -1807,6 +1780,7 @@ var ScopeCategory = /* @__PURE__ */ ((ScopeCategory2) => {
1807
1780
  ScopeCategory2["DATATYPES"] = "datatypes";
1808
1781
  ScopeCategory2["RECORDS"] = "records";
1809
1782
  ScopeCategory2["FILES"] = "files";
1783
+ ScopeCategory2["DEVICES"] = "devices";
1810
1784
  ScopeCategory2["JOURNEYS"] = "journeys";
1811
1785
  ScopeCategory2["EXPERIMENTS"] = "experiments";
1812
1786
  ScopeCategory2["SITES"] = "sites";
@@ -2051,6 +2025,26 @@ var SCOPES = {
2051
2025
  implies: ["files:write"]
2052
2026
  },
2053
2027
  // =========================================================================
2028
+ // DEVICES
2029
+ // =========================================================================
2030
+ "devices:read": {
2031
+ name: "devices:read",
2032
+ category: "devices" /* DEVICES */,
2033
+ description: "View companion devices"
2034
+ },
2035
+ "devices:write": {
2036
+ name: "devices:write",
2037
+ category: "devices" /* DEVICES */,
2038
+ description: "Enrol and manage own companion devices",
2039
+ implies: ["devices:read"]
2040
+ },
2041
+ "devices:admin": {
2042
+ name: "devices:admin",
2043
+ category: "devices" /* DEVICES */,
2044
+ description: "List and revoke any companion device",
2045
+ implies: ["devices:write"]
2046
+ },
2047
+ // =========================================================================
2054
2048
  // JOURNEYS
2055
2049
  // =========================================================================
2056
2050
  "journeys:read": {
@@ -2753,7 +2747,11 @@ ${formattedErrors}`, response.status);
2753
2747
  throw error;
2754
2748
  }
2755
2749
  const errorMessage = typeof errorData.detail === "string" ? errorData.detail : errorData.message || response.statusText;
2756
- throw new ApiError(errorMessage, response.status);
2750
+ const simpleError = new ApiError(errorMessage, response.status);
2751
+ if (typeof errorData.code === "string") {
2752
+ simpleError.errorData = errorData;
2753
+ }
2754
+ throw simpleError;
2757
2755
  }
2758
2756
  if (response.status === 204) {
2759
2757
  return void 0;
@@ -3119,6 +3117,7 @@ var AgentsApi = class extends BaseApiClient {
3119
3117
  if (options.search) params.append("search", options.search);
3120
3118
  if (options.includeArchived)
3121
3119
  params.append("includeArchived", options.includeArchived.toString());
3120
+ if (options.owner) params.append("owner", options.owner);
3122
3121
  return this.fetch(
3123
3122
  `w/${wid}/agents${params.toString() ? `?${params.toString()}` : ""}`
3124
3123
  );
@@ -3512,33 +3511,36 @@ var AuthApi = class extends BaseApiClient {
3512
3511
  });
3513
3512
  }
3514
3513
  /** Initiate SMS login by sending a verification code to the given phone number. */
3515
- async login(phoneNumber, wid, organizationUuid) {
3514
+ async login(phoneNumber, wid, organizationUuid, isSignUp = false) {
3516
3515
  const params = new URLSearchParams();
3517
3516
  if (wid) params.append("wid", wid);
3518
3517
  const body = { phoneNumber: sanitizePhoneForBackend(phoneNumber) };
3519
3518
  if (organizationUuid) body.organizationUuid = organizationUuid;
3519
+ if (isSignUp) body.isSignUp = true;
3520
3520
  return await this.fetch(`auth/login?${params.toString()}`, {
3521
3521
  method: "POST",
3522
3522
  body: JSON.stringify(body)
3523
3523
  });
3524
3524
  }
3525
3525
  /** Resend the SMS verification code to the given phone number. */
3526
- async resendCode(phoneNumber, organizationUuid) {
3526
+ async resendCode(phoneNumber, organizationUuid, isSignUp = false) {
3527
3527
  const body = { phoneNumber: sanitizePhoneForBackend(phoneNumber) };
3528
3528
  if (organizationUuid) body.organizationUuid = organizationUuid;
3529
+ if (isSignUp) body.isSignUp = true;
3529
3530
  return await this.fetch("auth/resend-code", {
3530
3531
  method: "POST",
3531
3532
  body: JSON.stringify(body)
3532
3533
  });
3533
3534
  }
3534
3535
  /** Verify an SMS code and complete authentication, handling 2FA if required. */
3535
- async verifyCodeWith2FA(phoneNumber, code, organizationUuid) {
3536
+ async verifyCodeWith2FA(phoneNumber, code, organizationUuid, isSignUp = false) {
3536
3537
  const verifyResponse = await this.fetch("auth/verify-with-2fa", {
3537
3538
  method: "POST",
3538
3539
  body: JSON.stringify({
3539
3540
  phoneNumber: sanitizePhoneForBackend(phoneNumber),
3540
3541
  code,
3541
- organizationUuid
3542
+ organizationUuid,
3543
+ isSignUp
3542
3544
  })
3543
3545
  });
3544
3546
  if (!verifyResponse.requiresTwoFactor && verifyResponse.token) {
@@ -3788,14 +3790,17 @@ var AuthApi = class extends BaseApiClient {
3788
3790
  // ===== CREDENTIAL CHANGE METHODS =====
3789
3791
  /**
3790
3792
  * Request to change email or phone credential.
3791
- * Sends an OTP to the NEW credential to verify ownership.
3793
+ * Sends an OTP to the NEW credential to verify ownership. For phone, the
3794
+ * code can be delivered by SMS (default) or read aloud over a voice call
3795
+ * (`deliveryMethod: 'voice'`) so landlines can be verified too.
3792
3796
  */
3793
- async requestCredentialChange(credentialType, newValue) {
3797
+ async requestCredentialChange(credentialType, newValue, deliveryMethod = "sms") {
3794
3798
  return this.fetch("account/request-credential-change", {
3795
3799
  method: "POST",
3796
3800
  body: JSON.stringify({
3797
3801
  credential_type: credentialType,
3798
- new_value: newValue
3802
+ new_value: newValue,
3803
+ delivery_method: deliveryMethod
3799
3804
  })
3800
3805
  });
3801
3806
  }
@@ -4077,10 +4082,12 @@ var CalendarsApi = class extends BaseApiClient {
4077
4082
  }
4078
4083
  /** Generate or regenerate an iCal feed token for a calendar. */
4079
4084
  async generateICalToken(wid, calendarId, regenerate = false) {
4080
- return this.fetch(`w/${wid}/calendars/${calendarId}/ical-token`, {
4081
- method: "POST",
4082
- body: JSON.stringify({ regenerate })
4083
- });
4085
+ const qs = new URLSearchParams();
4086
+ qs.set("regenerate", regenerate ? "true" : "false");
4087
+ return this.fetch(
4088
+ `w/${wid}/calendars/${calendarId}/ical-token?${qs.toString()}`,
4089
+ { method: "POST" }
4090
+ );
4084
4091
  }
4085
4092
  /** Revoke the iCal feed token for a calendar, disabling external feed access. */
4086
4093
  async revokeICalToken(wid, calendarId) {
@@ -5038,6 +5045,34 @@ var DataTypesApi = class extends BaseApiClient {
5038
5045
  async getFieldIndexStatus(wid, dataTypeId, fieldSlug) {
5039
5046
  return this.fetch(`w/${wid}/data-types/${dataTypeId}/fields/${fieldSlug}/index-status`);
5040
5047
  }
5048
+ /**
5049
+ * Preview renaming a field's slug — read-only.
5050
+ *
5051
+ * A field slug is the key its answers are stored under, so a rename moves
5052
+ * stored data. This reports whether the new slug is allowed, how many records
5053
+ * would move, and every configured place still naming the old slug (CEL,
5054
+ * templates, sync maps) which this rename does NOT rewrite.
5055
+ */
5056
+ async previewRenameFieldSlug(wid, dataTypeId, fieldSlug, newSlug) {
5057
+ return this.fetch(
5058
+ `w/${wid}/data-types/${dataTypeId}/fields/${fieldSlug}/rename-preview`,
5059
+ { method: "POST", body: JSON.stringify({ newSlug }) }
5060
+ );
5061
+ }
5062
+ /**
5063
+ * Rename a field's slug, preserving stored answers.
5064
+ *
5065
+ * The schema change commits synchronously; the answers are moved by the
5066
+ * existing cleanup workflow, so this resolves on ACCEPTANCE, not completion.
5067
+ * Call {@link previewRenameFieldSlug} first — references naming the old slug
5068
+ * are reported, never rewritten.
5069
+ */
5070
+ async renameFieldSlug(wid, dataTypeId, fieldSlug, newSlug) {
5071
+ return this.fetch(
5072
+ `w/${wid}/data-types/${dataTypeId}/fields/${fieldSlug}/rename`,
5073
+ { method: "POST", body: JSON.stringify({ newSlug }) }
5074
+ );
5075
+ }
5041
5076
  /**
5042
5077
  * Validate if a data type slug is available.
5043
5078
  * Returns availability and a suggested alternative if taken.
@@ -5060,6 +5095,44 @@ function isUuid(value) {
5060
5095
  return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);
5061
5096
  }
5062
5097
 
5098
+ // src/api/devices.ts
5099
+ var DevicesApi = class extends BaseApiClient {
5100
+ /** List devices visible to the caller (own devices, or all with devices:admin). */
5101
+ async getDevices(wid, options = {}) {
5102
+ const qs = options.mine ? "?mine=true" : "";
5103
+ return this.fetch(`w/${wid}/devices${qs}`);
5104
+ }
5105
+ /** Fetch one device by UUID. Non-owners without devices:admin receive 404. */
5106
+ async getDevice(wid, deviceUuid) {
5107
+ return this.fetch(`w/${wid}/devices/${deviceUuid}`);
5108
+ }
5109
+ /** List shippable companion-device products (Lantern, later SKUs). */
5110
+ async getDeviceKinds(wid) {
5111
+ return this.fetch(`w/${wid}/devices/kinds`);
5112
+ }
5113
+ /** Claim a pairing code shown on a companion device. Requires devices:write. */
5114
+ async claimDevicePairing(wid, body) {
5115
+ return this.fetch(`w/${wid}/devices/pairing/claim`, {
5116
+ method: "POST",
5117
+ body: JSON.stringify(body)
5118
+ });
5119
+ }
5120
+ /** Update display name and/or LAN capability flags. Requires devices:write. */
5121
+ async updateDevice(wid, deviceUuid, body) {
5122
+ return this.fetch(`w/${wid}/devices/${deviceUuid}`, {
5123
+ method: "PATCH",
5124
+ body: JSON.stringify(body)
5125
+ });
5126
+ }
5127
+ /** Revoke a device credential. The device must pair again. Requires devices:write. */
5128
+ async revokeDevice(wid, deviceUuid) {
5129
+ return this.fetch(`w/${wid}/devices/${deviceUuid}/revoke`, {
5130
+ method: "POST",
5131
+ body: JSON.stringify({})
5132
+ });
5133
+ }
5134
+ };
5135
+
5063
5136
  // src/api/discord-bots.ts
5064
5137
  var DiscordBotsApi = class extends BaseApiClient {
5065
5138
  /**
@@ -5490,6 +5563,7 @@ var EventsApi = class extends BaseApiClient {
5490
5563
  if (options.sortBy) params.append("sortBy", options.sortBy);
5491
5564
  if (options.sortOrder) params.append("sortOrder", options.sortOrder);
5492
5565
  if (options.owner) params.append("owner", options.owner);
5566
+ if (options.ownerId) params.append("ownerId", options.ownerId.toString());
5493
5567
  return this.fetch(
5494
5568
  `w/${wid}/routines${params.toString() ? `?${params.toString()}` : ""}`
5495
5569
  );
@@ -6517,6 +6591,23 @@ var InboxesApi = class extends BaseApiClient {
6517
6591
  body: JSON.stringify({ content })
6518
6592
  });
6519
6593
  }
6594
+ /**
6595
+ * Make a stored email's sender a Member of this workspace.
6596
+ *
6597
+ * The explicit alternative to auto-signup for inboxes that accept
6598
+ * non-member mail. Requires `members:write` AND `inboxes:read`. Responds
6599
+ * 409 when a Member already holds the address — gate the call on
6600
+ * `Email.senderIsMember` rather than discovering it from the error.
6601
+ */
6602
+ async addEmailSenderAsMember(wid, inboxId, emailId, body) {
6603
+ return this.fetch(
6604
+ `w/${wid}/inboxes/${inboxId}/emails/${emailId}/add-sender-as-member`,
6605
+ {
6606
+ method: "POST",
6607
+ body: JSON.stringify(body)
6608
+ }
6609
+ );
6610
+ }
6520
6611
  /** Convert an email to text, markdown, or PDF format. */
6521
6612
  async convertEmail(wid, inboxId, emailId, format = "pdf") {
6522
6613
  return this.fetch(
@@ -6859,6 +6950,54 @@ var MembersApi = class extends BaseApiClient {
6859
6950
  async getCurrentMember(wid) {
6860
6951
  return this.fetch(`w/${wid}/me`);
6861
6952
  }
6953
+ /**
6954
+ * One row per workflow available to the member, with its voice state
6955
+ * (Custom Voice). Own-data-or-scope: a member reads their OWN rows with
6956
+ * no member scope; others need members:read.
6957
+ */
6958
+ async getMemberWorkflowVoices(wid, memberId) {
6959
+ return this.fetch(
6960
+ `w/${wid}/members/${memberId}/workflow-voices`
6961
+ );
6962
+ }
6963
+ /** Audition a voice the member can pick for this workflow (PCM16). */
6964
+ async previewMemberWorkflowVoice(wid, memberId, workflowId, body) {
6965
+ const response = await this.fetchRaw(
6966
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}/preview`,
6967
+ { method: "POST", body: JSON.stringify(body) }
6968
+ );
6969
+ return response.arrayBuffer();
6970
+ }
6971
+ /** Set the member's preferred voice for one workflow (Custom Voice). */
6972
+ async setMemberWorkflowVoice(wid, memberId, workflowId, body) {
6973
+ return this.fetch(
6974
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}`,
6975
+ { method: "PUT", body: JSON.stringify(body) }
6976
+ );
6977
+ }
6978
+ /** Clear the member's preferred voice for one workflow (Custom Voice). */
6979
+ async clearMemberWorkflowVoice(wid, memberId, workflowId) {
6980
+ return this.fetch(
6981
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}`,
6982
+ { method: "DELETE" }
6983
+ );
6984
+ }
6985
+ /**
6986
+ * Member-scoped DataTypes the current member may use (self-access — works
6987
+ * on a Site session, which can hold no records scope by construction).
6988
+ */
6989
+ async getMyDataTypes(wid) {
6990
+ return this.fetch(`w/${wid}/me/data-types`);
6991
+ }
6992
+ /** The current member's own records for one DataType (self-access). */
6993
+ async getMyRecords(wid, dataTypeId, options) {
6994
+ const params = new URLSearchParams({ data_type_id: String(dataTypeId) });
6995
+ if (options?.page) params.set("page", String(options.page));
6996
+ if (options?.pageSize) params.set("page_size", String(options.pageSize));
6997
+ return this.fetch(
6998
+ `w/${wid}/me/records?${params.toString()}`
6999
+ );
7000
+ }
6862
7001
  /**
6863
7002
  * Get all members owned by the current member in this workspace.
6864
7003
  * Returns the authenticated member plus any members they own (via owner_id).
@@ -7736,9 +7875,9 @@ var OrgApi = class extends BaseApiClient {
7736
7875
  /**
7737
7876
  * Update the settings an org admin owns: name, slug and contact details.
7738
7877
  *
7739
- * Deliberately NOT the admin organization update — `primary` and
7740
- * `enforceCreditLimit` are superuser-only and are not fields on this
7741
- * endpoint's request model at all.
7878
+ * Deliberately NOT the admin organization update — `enforceCreditLimit`
7879
+ * is superuser-only and is not a field on this endpoint's request model
7880
+ * at all.
7742
7881
  */
7743
7882
  async updateOrganizationSettings(orgIdOrUuid, data) {
7744
7883
  return this.fetch(`o/${orgIdOrUuid}`, {
@@ -7769,11 +7908,30 @@ var OrgApi = class extends BaseApiClient {
7769
7908
  });
7770
7909
  }
7771
7910
  /**
7772
- * Get the billing customer UUID for an organization.
7911
+ * Get the billing customer and this organization's billable subscription.
7912
+ *
7913
+ * `subscriptionId` is the org-scoped row — never pick the customer's
7914
+ * newest subscription from the list endpoint. One customer can bill many
7915
+ * organizations.
7773
7916
  */
7774
7917
  async getOrgBillingCustomer(orgIdOrUuid) {
7775
7918
  return this.fetch(`o/${orgIdOrUuid}/billing-customer`);
7776
7919
  }
7920
+ /**
7921
+ * Per-workspace usage for this organization's current credit window.
7922
+ *
7923
+ * Requires a billing role on the organization's billing customer — the
7924
+ * same gate `getOrgBillingCustomer().hasAccess` reports, and the one that
7925
+ * decides whether the billing tab is shown at all.
7926
+ *
7927
+ * `creditsUsed` is a real organization-wide total or it is null; it is
7928
+ * never a partial sum. There is deliberately no per-workspace "remaining"
7929
+ * figure — the caps belong to the organization, so `cap - oneWorkspace`
7930
+ * describes nothing.
7931
+ */
7932
+ async getOrgWorkspaceUsage(orgIdOrUuid) {
7933
+ return this.fetch(`o/${orgIdOrUuid}/usage/workspaces`);
7934
+ }
7777
7935
  /**
7778
7936
  * List members of an organization.
7779
7937
  */
@@ -8094,6 +8252,17 @@ var OrgApi = class extends BaseApiClient {
8094
8252
  async getOrgDomainSite(orgIdOrUuid, domainUuid) {
8095
8253
  return this.fetch(`o/${orgIdOrUuid}/domains/${domainUuid}/site`);
8096
8254
  }
8255
+ /**
8256
+ * Pre-enable DNS check: is the site CNAME resolving to the routing
8257
+ * endpoint yet? Pure DNS — consumes no enable budget.
8258
+ */
8259
+ async preflightOrgDomainSite(orgIdOrUuid, domainUuid) {
8260
+ return this.fetch(
8261
+ `o/${orgIdOrUuid}/domains/${domainUuid}/site/preflight`,
8262
+ // Empty JSON body: the route requires one as a CSRF barrier.
8263
+ { method: "POST", body: JSON.stringify({}) }
8264
+ );
8265
+ }
8097
8266
  /**
8098
8267
  * Verify the site CNAME points at the Gravity Rail sites domain.
8099
8268
  */
@@ -8137,10 +8306,10 @@ var OrgApi = class extends BaseApiClient {
8137
8306
  * is required — brands register per legal entity (Customer Profile);
8138
8307
  * there is no primary-entity fallback.
8139
8308
  */
8140
- async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandDescription, brandUuid = null) {
8309
+ async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandUuid = null) {
8141
8310
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/start`, {
8142
8311
  method: "POST",
8143
- body: JSON.stringify({ legalEntityUuid, brandName, brandDescription, brandUuid })
8312
+ body: JSON.stringify({ legalEntityUuid, brandName, brandUuid })
8144
8313
  });
8145
8314
  }
8146
8315
  /**
@@ -8244,7 +8413,12 @@ var OrgApi = class extends BaseApiClient {
8244
8413
  * Reconcile trust product state against Twilio (discovery + status
8245
8414
  * refresh). Returns the refreshed products plus which product keys were
8246
8415
  * newly discovered. Responds 409 when another Trust Hub operation holds
8247
- * the org lock — retry shortly rather than queueing.
8416
+ * this legal entity's lock, failing fast rather than queueing.
8417
+ *
8418
+ * No `Retry-After` is sent, deliberately (#23601): holders range from a
8419
+ * sub-second JSONB write to a multi-minute Twilio sequence, so no interval
8420
+ * would be honest. Back off on your own schedule, and re-read before
8421
+ * retrying — the operation you collided with may have committed SIDs.
8248
8422
  */
8249
8423
  async syncVoiceTrustProducts(orgUuid, legalEntityUuid) {
8250
8424
  return this.fetch(
@@ -8277,6 +8451,16 @@ var OrgApi = class extends BaseApiClient {
8277
8451
  async listA2PBrands(orgUuid) {
8278
8452
  return this.fetch(`o/${orgUuid}/a2p-brands`);
8279
8453
  }
8454
+ /**
8455
+ * Live per-brand campaign use-case eligibility. Approved brands only — a
8456
+ * brand still under TCR review comes back as a structured 412 the picker
8457
+ * renders as the supported-list fallback, not an error.
8458
+ */
8459
+ async getA2PBrandUseCases(orgUuid, brandUuid) {
8460
+ return this.fetch(
8461
+ `o/${orgUuid}/a2p-brands/${brandUuid}/use-cases`
8462
+ );
8463
+ }
8280
8464
  /**
8281
8465
  * Fetch a brand's resolved A2P campaign config. The response carries both the
8282
8466
  * raw `overrides` and the `resolved` payload (defaults + overrides) the editor
@@ -8927,6 +9111,43 @@ var QueriesApi = class extends BaseApiClient {
8927
9111
  }
8928
9112
  };
8929
9113
 
9114
+ // src/api/projects.ts
9115
+ var ProjectsApi = class extends BaseApiClient {
9116
+ /** List projects (README frontmatter summaries). */
9117
+ async getProjects(wid, options = {}) {
9118
+ const params = new URLSearchParams();
9119
+ if (options.page !== void 0) params.append("page", options.page.toString());
9120
+ if (options.pageSize !== void 0) params.append("pageSize", options.pageSize.toString());
9121
+ return this.fetch(
9122
+ `w/${wid}/projects${params.toString() ? `?${params.toString()}` : ""}`
9123
+ );
9124
+ }
9125
+ /** One project: summary + present docs + plan summaries. */
9126
+ async getProject(wid, slug) {
9127
+ return this.fetch(`w/${wid}/projects/${encodeURIComponent(slug)}`);
9128
+ }
9129
+ /** One plan: summary + resolved process + flows + run state. */
9130
+ async getPlan(wid, slug, plan) {
9131
+ return this.fetch(
9132
+ `w/${wid}/projects/${encodeURIComponent(slug)}/plans/${encodeURIComponent(plan)}`
9133
+ );
9134
+ }
9135
+ /** Typed update of a project README; absent fields are untouched. */
9136
+ async updateProject(wid, slug, update) {
9137
+ return this.fetch(`w/${wid}/projects/${encodeURIComponent(slug)}`, {
9138
+ method: "PATCH",
9139
+ body: JSON.stringify(update)
9140
+ });
9141
+ }
9142
+ /** Typed update of a plan README; absent fields are untouched. */
9143
+ async updatePlan(wid, slug, plan, update) {
9144
+ return this.fetch(
9145
+ `w/${wid}/projects/${encodeURIComponent(slug)}/plans/${encodeURIComponent(plan)}`,
9146
+ { method: "PATCH", body: JSON.stringify(update) }
9147
+ );
9148
+ }
9149
+ };
9150
+
8930
9151
  // src/api/qualifications.ts
8931
9152
  var QualificationsApi = class extends BaseApiClient {
8932
9153
  /** List qualifications in a workspace, paginated. */
@@ -9192,6 +9413,26 @@ var SalesforceApi = class extends BaseApiClient {
9192
9413
  }
9193
9414
  );
9194
9415
  }
9416
+ /**
9417
+ * Pull linked members' Salesforce records now, ignoring the sync cursor.
9418
+ *
9419
+ * The inbound poll only ever returns records modified after the stored
9420
+ * cursor, so a member linked to a record that has not changed since is
9421
+ * unreachable by any poll and its link never receives a field — silently.
9422
+ * This fetches the records by Id and leaves the cursor untouched, so it is
9423
+ * safe to call at any time.
9424
+ *
9425
+ * Omit `memberIds` to resync every linked member (capped server-side).
9426
+ */
9427
+ async resyncSalesforceLinkedMembers(wid, data = {}) {
9428
+ return this.fetch(
9429
+ `w/${wid}/app-connections/salesforce/sync/resync-members`,
9430
+ {
9431
+ method: "POST",
9432
+ body: JSON.stringify(data)
9433
+ }
9434
+ );
9435
+ }
9195
9436
  /**
9196
9437
  * List the sObjects available in the connected org.
9197
9438
  *
@@ -9622,12 +9863,6 @@ var SitesApi = class extends BaseApiClient {
9622
9863
  }
9623
9864
  return verifyResponse;
9624
9865
  }
9625
- /** Trigger a crawl of the site's external content source. */
9626
- async crawlSite(wid, siteId) {
9627
- return this.fetch(`w/${wid}/sites/${siteId}/crawl`, {
9628
- method: "POST"
9629
- });
9630
- }
9631
9866
  /** Create a new site in the workspace. */
9632
9867
  async createSite(wid, site) {
9633
9868
  return this.fetch(`w/${wid}/sites`, {
@@ -9797,9 +10032,65 @@ var SubscriptionsApi = class extends BaseApiClient {
9797
10032
  headers: { "Content-Type": "application/json" }
9798
10033
  });
9799
10034
  }
10035
+ /** Purchase a role-granting membership in an existing workspace. */
10036
+ async createMemberCheckoutSession(productId, planPeriod = "month", options = {}) {
10037
+ return this.fetch(`subscriptions/member-checkout-session`, {
10038
+ method: "POST",
10039
+ credentials: "include",
10040
+ body: JSON.stringify({ productId, planPeriod, ...options }),
10041
+ headers: { "Content-Type": "application/json" }
10042
+ });
10043
+ }
10044
+ async getMemberSubscriptionStatus(siteUuidOrOptions) {
10045
+ const options = typeof siteUuidOrOptions === "string" ? { siteUuid: siteUuidOrOptions } : siteUuidOrOptions;
10046
+ const params = new URLSearchParams();
10047
+ if (options.siteUuid) params.set("siteUuid", options.siteUuid);
10048
+ if (options.workspaceUuid) params.set("workspaceUuid", options.workspaceUuid);
10049
+ return this.fetch(
10050
+ `subscriptions/member-subscription?${params.toString()}`,
10051
+ { credentials: "include" }
10052
+ );
10053
+ }
10054
+ /** Open Stripe's hosted membership-management portal. */
10055
+ async createMemberPortalSession(options) {
10056
+ return this.fetch(`subscriptions/member-portal-session`, {
10057
+ method: "POST",
10058
+ credentials: "include",
10059
+ body: JSON.stringify(options),
10060
+ headers: { "Content-Type": "application/json" }
10061
+ });
10062
+ }
10063
+ /**
10064
+ * Purchase one physical companion device (one-time payment; Stripe collects
10065
+ * the shipping address in hosted Checkout).
10066
+ */
10067
+ async createDeviceOrderCheckoutSession(productId, options = {}) {
10068
+ return this.fetch(`device-orders/checkout-session`, {
10069
+ method: "POST",
10070
+ credentials: "include",
10071
+ body: JSON.stringify({ productId, ...options }),
10072
+ headers: { "Content-Type": "application/json" }
10073
+ });
10074
+ }
10075
+ /** List the authenticated Account's own device orders in one workspace. */
10076
+ async listDeviceOrders(options) {
10077
+ const params = new URLSearchParams();
10078
+ if (options.siteUuid) params.set("siteUuid", options.siteUuid);
10079
+ if (options.workspaceUuid) params.set("workspaceUuid", options.workspaceUuid);
10080
+ return this.fetch(`device-orders?${params.toString()}`, {
10081
+ credentials: "include"
10082
+ });
10083
+ }
10084
+ /** Read one authenticated, server-owned checkout attempt. */
10085
+ async getCheckoutAttemptStatus(attemptId) {
10086
+ return this.fetch(
10087
+ `subscriptions/checkout-attempts/${encodeURIComponent(attemptId)}`,
10088
+ { credentials: "include" }
10089
+ );
10090
+ }
9800
10091
  /**
9801
- * List self-service, purchasable plans (org or workspace). Only plans with a
9802
- * paid Stripe price are returned. No auth required.
10092
+ * List self-service, purchasable organization plans or add-ons. Only products
10093
+ * with a Stripe Price are returned; zero-amount plans are allowed.
9803
10094
  */
9804
10095
  async listSelfServeProducts(productType) {
9805
10096
  const qs = productType ? `?product_type=${productType}` : "";
@@ -9834,7 +10125,13 @@ var SubscriptionsApi = class extends BaseApiClient {
9834
10125
  }
9835
10126
  });
9836
10127
  }
9837
- /** Add a workspace to an existing subscription. */
10128
+ /**
10129
+ * Provision a new workspace under an existing org subscription.
10130
+ *
10131
+ * No product or period: the organization already holds the plan and the new
10132
+ * workspace bills through it. Returns before the workspace exists —
10133
+ * `provisioning: true` means poll for it.
10134
+ */
9838
10135
  async addWorkspaceToSubscription(subscriptionId, data) {
9839
10136
  return this.fetch(`subscriptions/${subscriptionId}/add-workspace`, {
9840
10137
  method: "POST",
@@ -9995,6 +10292,9 @@ var CustomersApi = class extends BaseApiClient {
9995
10292
  if (opts?.status) params.set("status", opts.status);
9996
10293
  if (opts?.page !== void 0) params.set("page", String(opts.page));
9997
10294
  if (opts?.pageSize !== void 0) params.set("page_size", String(opts.pageSize));
10295
+ if (opts?.subscriptionId !== void 0) {
10296
+ params.set("subscription_id", String(opts.subscriptionId));
10297
+ }
9998
10298
  const qs = params.toString();
9999
10299
  return this.fetch(`customers/${uuid}/subscriptions${qs ? "?" + qs : ""}`);
10000
10300
  }
@@ -10998,28 +11298,36 @@ var WorkflowsApi = class extends BaseApiClient {
10998
11298
  };
10999
11299
 
11000
11300
  // src/api/workflow-notes.ts
11301
+ function notesPath(wid, workflowId, noteId, query) {
11302
+ const base = noteId == null ? `w/${wid}/workflows/${workflowId}/notes` : `w/${wid}/workflows/${workflowId}/notes/${noteId}`;
11303
+ if (query?.workflowRevisionId == null) return base;
11304
+ const params = new URLSearchParams({
11305
+ workflowRevisionId: String(query.workflowRevisionId)
11306
+ });
11307
+ return `${base}?${params.toString()}`;
11308
+ }
11001
11309
  var WorkflowNotesApi = class extends BaseApiClient {
11002
- /** List all notes for a specific workflow. */
11003
- async getWorkflowNotes(wid, workflowId) {
11004
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes`);
11310
+ /** List notes for a workflow root (draft unless `workflowRevisionId` is set). */
11311
+ async getWorkflowNotes(wid, workflowId, query) {
11312
+ return this.fetch(notesPath(wid, workflowId, void 0, query));
11005
11313
  }
11006
- /** Create a new note on a workflow. */
11007
- async createWorkflowNote(wid, workflowId, data) {
11008
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes`, {
11314
+ /** Create a new note on a workflow's draft (or a pinned draft revision). */
11315
+ async createWorkflowNote(wid, workflowId, data, query) {
11316
+ return this.fetch(notesPath(wid, workflowId, void 0, query), {
11009
11317
  method: "POST",
11010
11318
  body: JSON.stringify(data)
11011
11319
  });
11012
11320
  }
11013
11321
  /** Update an existing workflow note with partial data. */
11014
- async updateWorkflowNote(wid, workflowId, noteId, data) {
11015
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes/${noteId}`, {
11322
+ async updateWorkflowNote(wid, workflowId, noteId, data, query) {
11323
+ return this.fetch(notesPath(wid, workflowId, noteId, query), {
11016
11324
  method: "PUT",
11017
11325
  body: JSON.stringify(data)
11018
11326
  });
11019
11327
  }
11020
11328
  /** Delete a workflow note by ID. */
11021
- async deleteWorkflowNote(wid, workflowId, noteId) {
11022
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes/${noteId}`, {
11329
+ async deleteWorkflowNote(wid, workflowId, noteId, query) {
11330
+ return this.fetch(notesPath(wid, workflowId, noteId, query), {
11023
11331
  method: "DELETE"
11024
11332
  });
11025
11333
  }
@@ -11413,6 +11721,13 @@ var WorkspacesApi = class extends BaseApiClient {
11413
11721
  signal: options?.signal
11414
11722
  });
11415
11723
  }
11724
+ /** Provision the one-month direct organization plan carried by a promo code. */
11725
+ async startPromoPlanTrial(request) {
11726
+ return this.fetch("promo-codes/plan-trial", {
11727
+ method: "POST",
11728
+ body: JSON.stringify(request)
11729
+ });
11730
+ }
11416
11731
  /** Get a publicly accessible product by ID. */
11417
11732
  async getPublicProduct(id) {
11418
11733
  return this.fetch(`products/${id}`);
@@ -11463,15 +11778,47 @@ var WorkspacesApi = class extends BaseApiClient {
11463
11778
  })
11464
11779
  });
11465
11780
  }
11466
- /** Import workspace configuration from exported data. */
11467
- async importWorkspace(wid, exportData, importMappings, createNew) {
11781
+ /** Download a workspace export ZIP (``export.json`` + file blobs). */
11782
+ async exportWorkspaceZip(wid, workflowId, scope, exclude) {
11783
+ const searchParams = new URLSearchParams();
11784
+ if (workflowId !== void 0) searchParams.set("workflow_id", String(workflowId));
11785
+ if (scope !== void 0) searchParams.set("scope", scope);
11786
+ if (exclude !== void 0) searchParams.set("exclude", exclude);
11787
+ const qs = searchParams.toString();
11788
+ const response = await this.fetchRaw(`w/${wid}/export.zip${qs ? `?${qs}` : ""}`);
11789
+ return response.arrayBuffer();
11790
+ }
11791
+ /** Import workspace configuration from exported JSON, or from a ZIP archive.
11792
+ * Pass ``archive`` (the ZIP from ``exportWorkspaceZip``) to restore file
11793
+ * contents. ``exportData`` may be omitted when the ZIP contains it.
11794
+ */
11795
+ async importWorkspace(wid, exportData, importMappings, createNew, archive) {
11796
+ const payload = {
11797
+ importMappings,
11798
+ createNew
11799
+ };
11800
+ if (exportData) {
11801
+ payload.exportData = exportData;
11802
+ }
11803
+ if (archive) {
11804
+ const form = new FormData();
11805
+ form.append(
11806
+ "request",
11807
+ new Blob([JSON.stringify(payload)], { type: "application/json" }),
11808
+ "import.json"
11809
+ );
11810
+ form.append("archive", archive, "workspace-export.zip");
11811
+ return this.fetch(`w/${wid}/import.zip`, {
11812
+ method: "POST",
11813
+ body: form
11814
+ });
11815
+ }
11816
+ if (!exportData) {
11817
+ throw new Error("exportData is required for JSON import");
11818
+ }
11468
11819
  return this.fetch(`w/${wid}/import`, {
11469
11820
  method: "POST",
11470
- body: JSON.stringify({
11471
- exportData,
11472
- importMappings,
11473
- createNew
11474
- })
11821
+ body: JSON.stringify(payload)
11475
11822
  });
11476
11823
  }
11477
11824
  /** Preview a workspace import using the legacy untyped interface. */
@@ -11513,7 +11860,6 @@ var WorkspacesApi = class extends BaseApiClient {
11513
11860
  * Get billing dashboard data for a workspace.
11514
11861
  *
11515
11862
  * This endpoint is available to organization owners (with org:info scope).
11516
- * Superusers should use the admin endpoint via getWorkspaceUsageDashboard.
11517
11863
  *
11518
11864
  * Returns comprehensive billing information including:
11519
11865
  * - Subscription status and plan details
@@ -11548,6 +11894,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
11548
11894
  customToolkits: new CustomToolkitsApi(apiKey, baseUrl, customFetch),
11549
11895
  dashboards: new DashboardsApi(apiKey, baseUrl, customFetch),
11550
11896
  dataTypes: new DataTypesApi(apiKey, baseUrl, customFetch),
11897
+ devices: new DevicesApi(apiKey, baseUrl, customFetch),
11551
11898
  discordBots: new DiscordBotsApi(apiKey, baseUrl, customFetch),
11552
11899
  slackApps: new SlackAppsApi(apiKey, baseUrl, customFetch),
11553
11900
  teamsApps: new TeamsAppsApi(apiKey, baseUrl, customFetch),
@@ -11560,6 +11907,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
11560
11907
  hubspot: new HubspotApi(apiKey, baseUrl, customFetch),
11561
11908
  features: new FeaturesApi(apiKey, baseUrl, customFetch),
11562
11909
  files: new FilesApi(apiKey, baseUrl, customFetch),
11910
+ projects: new ProjectsApi(apiKey, baseUrl, customFetch),
11563
11911
  inboxes: new InboxesApi(apiKey, baseUrl, customFetch),
11564
11912
  inquiries: new InquiriesApi(apiKey, baseUrl, customFetch),
11565
11913
  journeys: new JourneysApi(apiKey, baseUrl, customFetch),
@@ -11605,6 +11953,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
11605
11953
  // src/client/workspace-client.ts
11606
11954
  var WORKSPACE_METHOD_NAMES = [
11607
11955
  "activateWorkflowRevision",
11956
+ "addEmailSenderAsMember",
11608
11957
  "addGroupMember",
11609
11958
  "advanceStep",
11610
11959
  "approveWorkspaceInvitation",
@@ -11635,6 +11984,7 @@ var WORKSPACE_METHOD_NAMES = [
11635
11984
  "checkAvailability",
11636
11985
  "checkSiteDomainAvailability",
11637
11986
  "checkSiteSlugAvailability",
11987
+ "claimDevicePairing",
11638
11988
  "clearConnectionMemberExclusion",
11639
11989
  "clearMemberSwitch",
11640
11990
  "clearTrackedLinkDestinations",
@@ -11654,7 +12004,6 @@ var WORKSPACE_METHOD_NAMES = [
11654
12004
  "configureSalesforce",
11655
12005
  "convertEmail",
11656
12006
  "convertFile",
11657
- "crawlSite",
11658
12007
  "createAbility",
11659
12008
  "createAccessGrant",
11660
12009
  "createAgent",
@@ -11823,6 +12172,7 @@ var WORKSPACE_METHOD_NAMES = [
11823
12172
  "exportMembers",
11824
12173
  "exportPhoneNumberOutboundAnalyticsCsv",
11825
12174
  "exportWorkspace",
12175
+ "exportWorkspaceZip",
11826
12176
  "fetchVoicemailAudio",
11827
12177
  "fhirBackfillEncounterSync",
11828
12178
  "fhirCheckPatientLinks",
@@ -11919,6 +12269,11 @@ var WORKSPACE_METHOD_NAMES = [
11919
12269
  "getConnectionSyncConfig",
11920
12270
  "getCredentialUpdateInvites",
11921
12271
  "getCurrentMember",
12272
+ "clearMemberWorkflowVoice",
12273
+ "getMemberWorkflowVoices",
12274
+ "getMyDataTypes",
12275
+ "getMyRecords",
12276
+ "setMemberWorkflowVoice",
11922
12277
  "getCurrentSmsChat",
11923
12278
  "getCustomToolkit",
11924
12279
  "getCustomToolkits",
@@ -11936,6 +12291,9 @@ var WORKSPACE_METHOD_NAMES = [
11936
12291
  "getDataTypeByUuid",
11937
12292
  "getDataTypeBySlug",
11938
12293
  "getDataTypes",
12294
+ "getDevice",
12295
+ "getDeviceKinds",
12296
+ "getDevices",
11939
12297
  "getDiscordBot",
11940
12298
  "getDiscordBotAccounts",
11941
12299
  "getDiscordBotByUuid",
@@ -12079,13 +12437,17 @@ var WORKSPACE_METHOD_NAMES = [
12079
12437
  "getPhoneNumbers",
12080
12438
  "getPhoneUsageReport",
12081
12439
  "getPlatformApp",
12440
+ "getPlan",
12082
12441
  "getPresenceStatus",
12083
12442
  "getProducts",
12443
+ "getProject",
12444
+ "getProjects",
12084
12445
  "getPublicFile",
12085
12446
  "getPublicFolder",
12086
12447
  "getPublicFolderFiles",
12087
12448
  "getPublicProducts",
12088
12449
  "previewPromoCode",
12450
+ "startPromoPlanTrial",
12089
12451
  "getQualification",
12090
12452
  "getQualifications",
12091
12453
  "getRecordingInfo",
@@ -12233,6 +12595,8 @@ var WORKSPACE_METHOD_NAMES = [
12233
12595
  "markNotificationAsRead",
12234
12596
  "mergeMemberRoles",
12235
12597
  "previewImportMembers",
12598
+ "previewMemberWorkflowVoice",
12599
+ "previewRenameFieldSlug",
12236
12600
  "previewImportWorkspace",
12237
12601
  "previewRoutineWorkflowAccess",
12238
12602
  "previewSchedule",
@@ -12245,6 +12609,7 @@ var WORKSPACE_METHOD_NAMES = [
12245
12609
  "rateMessage",
12246
12610
  "getChatFeedback",
12247
12611
  "reenrollMember",
12612
+ "renameFieldSlug",
12248
12613
  "registerLinkedRolesMetadata",
12249
12614
  "registerPushSubscription",
12250
12615
  "reindexFolder",
@@ -12264,6 +12629,7 @@ var WORKSPACE_METHOD_NAMES = [
12264
12629
  "restoreFileVersion",
12265
12630
  "revokeAccessGrant",
12266
12631
  "revokeApiKey",
12632
+ "revokeDevice",
12267
12633
  "revokeICalToken",
12268
12634
  "runRoutine",
12269
12635
  "searchEventRules",
@@ -12334,6 +12700,7 @@ var WORKSPACE_METHOD_NAMES = [
12334
12700
  "updateDataRecord",
12335
12701
  "updateDataRecordFilter",
12336
12702
  "updateDataType",
12703
+ "updateDevice",
12337
12704
  "updateDiscordBot",
12338
12705
  "updateEventAttendee",
12339
12706
  "updateEventRule",
@@ -12367,9 +12734,12 @@ var WORKSPACE_METHOD_NAMES = [
12367
12734
  "updatePersona",
12368
12735
  "updatePhoneNumber",
12369
12736
  "updatePlatformApp",
12737
+ "updatePlan",
12370
12738
  "updateProduct",
12739
+ "updateProject",
12371
12740
  "updateRoutine",
12372
12741
  "updateSalesforceSyncConfig",
12742
+ "resyncSalesforceLinkedMembers",
12373
12743
  "updateScenario",
12374
12744
  "updateSite",
12375
12745
  "updateSiteSharing",
@@ -12589,6 +12959,8 @@ function bindDataTypesMethods(target, dataTypes) {
12589
12959
  target.getDataRecordChanges = dataTypes.getDataRecordChanges.bind(dataTypes);
12590
12960
  target.upsertDataRecord = dataTypes.upsertDataRecord.bind(dataTypes);
12591
12961
  target.toggleFieldIndex = dataTypes.toggleFieldIndex.bind(dataTypes);
12962
+ target.previewRenameFieldSlug = dataTypes.previewRenameFieldSlug.bind(dataTypes);
12963
+ target.renameFieldSlug = dataTypes.renameFieldSlug.bind(dataTypes);
12592
12964
  target.getFieldIndexStatus = dataTypes.getFieldIndexStatus.bind(dataTypes);
12593
12965
  target.validateDataTypeSlug = dataTypes.validateDataTypeSlug.bind(dataTypes);
12594
12966
  target.getMemberRecordCounts = dataTypes.getMemberRecordCounts.bind(dataTypes);
@@ -12600,9 +12972,25 @@ function bindDataTypesMethods(target, dataTypes) {
12600
12972
  target.getDataRecordFilterCount = dataTypes.getDataRecordFilterCount.bind(dataTypes);
12601
12973
  }
12602
12974
 
12975
+ // src/client/bindings/devices.ts
12976
+ function bindDevicesMethods(target, devices) {
12977
+ target.getDevices = devices.getDevices.bind(devices);
12978
+ target.getDevice = devices.getDevice.bind(devices);
12979
+ target.getDeviceKinds = devices.getDeviceKinds.bind(devices);
12980
+ target.claimDevicePairing = devices.claimDevicePairing.bind(devices);
12981
+ target.updateDevice = devices.updateDevice.bind(devices);
12982
+ target.revokeDevice = devices.revokeDevice.bind(devices);
12983
+ }
12984
+
12603
12985
  // src/client/bindings/members.ts
12604
12986
  function bindMembersMethods(target, members) {
12605
12987
  target.getCurrentMember = members.getCurrentMember.bind(members);
12988
+ target.getMyDataTypes = members.getMyDataTypes.bind(members);
12989
+ target.getMyRecords = members.getMyRecords.bind(members);
12990
+ target.getMemberWorkflowVoices = members.getMemberWorkflowVoices.bind(members);
12991
+ target.previewMemberWorkflowVoice = members.previewMemberWorkflowVoice.bind(members);
12992
+ target.setMemberWorkflowVoice = members.setMemberWorkflowVoice.bind(members);
12993
+ target.clearMemberWorkflowVoice = members.clearMemberWorkflowVoice.bind(members);
12606
12994
  target.getOwnedMembers = members.getOwnedMembers.bind(members);
12607
12995
  target.switchMember = members.switchMember.bind(members);
12608
12996
  target.clearMemberSwitch = members.clearMemberSwitch.bind(members);
@@ -12695,6 +13083,7 @@ function bindWorkspacesMethods(target, workspaces, signupRequests) {
12695
13083
  target.updateProduct = workspaces.updateProduct.bind(workspaces);
12696
13084
  target.deleteProduct = workspaces.deleteProduct.bind(workspaces);
12697
13085
  target.exportWorkspace = workspaces.exportWorkspace.bind(workspaces);
13086
+ target.exportWorkspaceZip = workspaces.exportWorkspaceZip.bind(workspaces);
12698
13087
  target.previewWorkspaceImport = workspaces.previewWorkspaceImport.bind(workspaces);
12699
13088
  target.importWorkspace = workspaces.importWorkspace.bind(workspaces);
12700
13089
  target.previewImportWorkspace = workspaces.previewImportWorkspace.bind(workspaces);
@@ -12814,7 +13203,6 @@ function bindSitesMethods(target, sites) {
12814
13203
  target.siteSendEmailCode = sites.siteSendEmailCode.bind(sites);
12815
13204
  target.siteVerifyCode = sites.siteVerifyCode.bind(sites);
12816
13205
  target.siteGoogleOAuthInitiate = sites.siteGoogleOAuthInitiate.bind(sites);
12817
- target.crawlSite = sites.crawlSite.bind(sites);
12818
13206
  target.createSite = sites.createSite.bind(sites);
12819
13207
  target.updateSite = sites.updateSite.bind(sites);
12820
13208
  target.deleteSite = sites.deleteSite.bind(sites);
@@ -12877,6 +13265,15 @@ function bindFilesMethods(target, files) {
12877
13265
  target.getPublicFolderFiles = files.getPublicFolderFiles.bind(files);
12878
13266
  }
12879
13267
 
13268
+ // src/client/bindings/projects.ts
13269
+ function bindProjectsMethods(target, projects) {
13270
+ target.getProjects = projects.getProjects.bind(projects);
13271
+ target.getProject = projects.getProject.bind(projects);
13272
+ target.getPlan = projects.getPlan.bind(projects);
13273
+ target.updateProject = projects.updateProject.bind(projects);
13274
+ target.updatePlan = projects.updatePlan.bind(projects);
13275
+ }
13276
+
12880
13277
  // src/client/bindings/events.ts
12881
13278
  function bindEventsMethods(target, events) {
12882
13279
  target.getEventRules = events.getEventRules.bind(events);
@@ -13035,6 +13432,7 @@ function bindCommunicationsMethods(target, phoneNumbers, inboxes, notificationRu
13035
13432
  target.getInboxEmail = inboxes.getInboxEmail.bind(inboxes);
13036
13433
  target.markEmailAsRead = inboxes.markEmailAsRead.bind(inboxes);
13037
13434
  target.markEmailAsUnread = inboxes.markEmailAsUnread.bind(inboxes);
13435
+ target.addEmailSenderAsMember = inboxes.addEmailSenderAsMember.bind(inboxes);
13038
13436
  target.convertEmail = inboxes.convertEmail.bind(inboxes);
13039
13437
  target.downloadEmailAttachment = inboxes.downloadEmailAttachment.bind(inboxes);
13040
13438
  target.getInboxThreads = inboxes.getInboxThreads.bind(inboxes);
@@ -13104,6 +13502,12 @@ function bindBillingMethods(target, apiKeys, subscriptions, reports) {
13104
13502
  target.addWorkspaceToSubscription = subscriptions.addWorkspaceToSubscription.bind(subscriptions);
13105
13503
  target.purchaseCredits = subscriptions.purchaseCredits.bind(subscriptions);
13106
13504
  target.createCheckoutSession = subscriptions.createCheckoutSession.bind(subscriptions);
13505
+ target.createMemberCheckoutSession = subscriptions.createMemberCheckoutSession.bind(subscriptions);
13506
+ target.createMemberPortalSession = subscriptions.createMemberPortalSession.bind(subscriptions);
13507
+ target.getMemberSubscriptionStatus = subscriptions.getMemberSubscriptionStatus.bind(subscriptions);
13508
+ target.createDeviceOrderCheckoutSession = subscriptions.createDeviceOrderCheckoutSession.bind(subscriptions);
13509
+ target.listDeviceOrders = subscriptions.listDeviceOrders.bind(subscriptions);
13510
+ target.getCheckoutAttemptStatus = subscriptions.getCheckoutAttemptStatus.bind(subscriptions);
13107
13511
  target.listSelfServeProducts = subscriptions.listSelfServeProducts.bind(subscriptions);
13108
13512
  target.getAIUsageReport = reports.getAIUsageReport.bind(reports);
13109
13513
  target.getSMSUsageReport = reports.getSMSUsageReport.bind(reports);
@@ -13281,6 +13685,7 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
13281
13685
  target.getLinkedSalesforceMembers = salesforce.getLinkedSalesforceMembers.bind(salesforce);
13282
13686
  target.getSalesforceSyncConfig = salesforce.getSalesforceSyncConfig.bind(salesforce);
13283
13687
  target.updateSalesforceSyncConfig = salesforce.updateSalesforceSyncConfig.bind(salesforce);
13688
+ target.resyncSalesforceLinkedMembers = salesforce.resyncSalesforceLinkedMembers.bind(salesforce);
13284
13689
  target.listSalesforceObjects = salesforce.listSalesforceObjects.bind(salesforce);
13285
13690
  target.describeSalesforceObject = salesforce.describeSalesforceObject.bind(salesforce);
13286
13691
  target.searchSalesforceRecords = salesforce.searchSalesforceRecords.bind(salesforce);
@@ -13352,6 +13757,7 @@ function bindOrgMethods(target, org) {
13352
13757
  target.disableOrgDomainEmail = org.disableOrgDomainEmail.bind(org);
13353
13758
  target.enableOrgDomainSite = org.enableOrgDomainSite.bind(org);
13354
13759
  target.getOrgDomainSite = org.getOrgDomainSite.bind(org);
13760
+ target.preflightOrgDomainSite = org.preflightOrgDomainSite.bind(org);
13355
13761
  target.verifyOrgDomainSite = org.verifyOrgDomainSite.bind(org);
13356
13762
  target.disableOrgDomainSite = org.disableOrgDomainSite.bind(org);
13357
13763
  target.getBusinessProfile = org.getBusinessProfile.bind(org);
@@ -13365,6 +13771,7 @@ function bindOrgMethods(target, org) {
13365
13771
  target.syncVoiceTrustProducts = org.syncVoiceTrustProducts.bind(org);
13366
13772
  target.createOrganizationWorkspace = org.createOrganizationWorkspace.bind(org);
13367
13773
  target.getOrgBillingCustomer = org.getOrgBillingCustomer.bind(org);
13774
+ target.getOrgWorkspaceUsage = org.getOrgWorkspaceUsage.bind(org);
13368
13775
  }
13369
13776
 
13370
13777
  // src/client/bindings/pronunciations.ts
@@ -13621,6 +14028,8 @@ var GravityRailClient = class {
13621
14028
  getDataRecordChanges;
13622
14029
  upsertDataRecord;
13623
14030
  toggleFieldIndex;
14031
+ previewRenameFieldSlug;
14032
+ renameFieldSlug;
13624
14033
  getFieldIndexStatus;
13625
14034
  validateDataTypeSlug;
13626
14035
  getMemberRecordCounts;
@@ -13632,6 +14041,12 @@ var GravityRailClient = class {
13632
14041
  getDataRecordFilterCount;
13633
14042
  // Members API
13634
14043
  getCurrentMember;
14044
+ getMyDataTypes;
14045
+ getMyRecords;
14046
+ getMemberWorkflowVoices;
14047
+ previewMemberWorkflowVoice;
14048
+ setMemberWorkflowVoice;
14049
+ clearMemberWorkflowVoice;
13635
14050
  getOwnedMembers;
13636
14051
  switchMember;
13637
14052
  clearMemberSwitch;
@@ -13866,11 +14281,13 @@ var GravityRailClient = class {
13866
14281
  getWorkspaceProduct;
13867
14282
  getPublicProducts;
13868
14283
  previewPromoCode;
14284
+ startPromoPlanTrial;
13869
14285
  getPublicProduct;
13870
14286
  createProduct;
13871
14287
  updateProduct;
13872
14288
  deleteProduct;
13873
14289
  exportWorkspace;
14290
+ exportWorkspaceZip;
13874
14291
  previewWorkspaceImport;
13875
14292
  importWorkspace;
13876
14293
  previewImportWorkspace;
@@ -13897,6 +14314,7 @@ var GravityRailClient = class {
13897
14314
  disableOrgDomainEmail;
13898
14315
  enableOrgDomainSite;
13899
14316
  getOrgDomainSite;
14317
+ preflightOrgDomainSite;
13900
14318
  verifyOrgDomainSite;
13901
14319
  disableOrgDomainSite;
13902
14320
  getBusinessProfile;
@@ -13910,6 +14328,7 @@ var GravityRailClient = class {
13910
14328
  syncVoiceTrustProducts;
13911
14329
  createOrganizationWorkspace;
13912
14330
  getOrgBillingCustomer;
14331
+ getOrgWorkspaceUsage;
13913
14332
  getVapidPublicKey;
13914
14333
  registerPushSubscription;
13915
14334
  unregisterPushSubscription;
@@ -14009,7 +14428,6 @@ var GravityRailClient = class {
14009
14428
  siteSendEmailCode;
14010
14429
  siteVerifyCode;
14011
14430
  siteGoogleOAuthInitiate;
14012
- crawlSite;
14013
14431
  createSite;
14014
14432
  updateSite;
14015
14433
  deleteSite;
@@ -14030,6 +14448,11 @@ var GravityRailClient = class {
14030
14448
  // Files API
14031
14449
  getFiles;
14032
14450
  getFile;
14451
+ getProjects;
14452
+ getProject;
14453
+ getPlan;
14454
+ updateProject;
14455
+ updatePlan;
14033
14456
  resolveFilePath;
14034
14457
  downloadFilesZip;
14035
14458
  createFile;
@@ -14200,6 +14623,7 @@ var GravityRailClient = class {
14200
14623
  getInboxEmail;
14201
14624
  markEmailAsRead;
14202
14625
  markEmailAsUnread;
14626
+ addEmailSenderAsMember;
14203
14627
  convertEmail;
14204
14628
  downloadEmailAttachment;
14205
14629
  getInboxThreads;
@@ -14248,6 +14672,13 @@ var GravityRailClient = class {
14248
14672
  getFeatureRegistry;
14249
14673
  getPublicFeatureRegistry;
14250
14674
  getFeatureBySlug;
14675
+ // Devices API
14676
+ getDevices;
14677
+ getDevice;
14678
+ getDeviceKinds;
14679
+ claimDevicePairing;
14680
+ updateDevice;
14681
+ revokeDevice;
14251
14682
  // Billing API
14252
14683
  getApiKeys;
14253
14684
  createApiKey;
@@ -14263,6 +14694,12 @@ var GravityRailClient = class {
14263
14694
  addWorkspaceToSubscription;
14264
14695
  purchaseCredits;
14265
14696
  createCheckoutSession;
14697
+ createMemberCheckoutSession;
14698
+ createMemberPortalSession;
14699
+ getMemberSubscriptionStatus;
14700
+ createDeviceOrderCheckoutSession;
14701
+ listDeviceOrders;
14702
+ getCheckoutAttemptStatus;
14266
14703
  listSelfServeProducts;
14267
14704
  getAIUsageReport;
14268
14705
  getSMSUsageReport;
@@ -14442,6 +14879,7 @@ var GravityRailClient = class {
14442
14879
  getLinkedSalesforceMembers;
14443
14880
  getSalesforceSyncConfig;
14444
14881
  updateSalesforceSyncConfig;
14882
+ resyncSalesforceLinkedMembers;
14445
14883
  listSalesforceObjects;
14446
14884
  describeSalesforceObject;
14447
14885
  searchSalesforceRecords;
@@ -14544,6 +14982,7 @@ var GravityRailClient = class {
14544
14982
  bindChatsMethods(this, apis.chats);
14545
14983
  bindCallsMethods(this, apis.calls, apis.cel);
14546
14984
  bindDataTypesMethods(this, apis.dataTypes);
14985
+ bindDevicesMethods(this, apis.devices);
14547
14986
  bindMembersMethods(this, apis.members);
14548
14987
  bindAgentTasksMethods(this, apis.agentTasks);
14549
14988
  bindAgentsMethods(this, apis.agents);
@@ -14565,6 +15004,7 @@ var GravityRailClient = class {
14565
15004
  bindAuthMethods(this, apis.auth, apis.assignments);
14566
15005
  bindSitesMethods(this, apis.sites);
14567
15006
  bindFilesMethods(this, apis.files);
15007
+ bindProjectsMethods(this, apis.projects);
14568
15008
  bindEventsMethods(this, apis.events);
14569
15009
  bindWorkflowsMethods(this, apis.workflows, apis.workflowNotes, apis.voice, apis.supervisors);
14570
15010
  bindCalendarsMethods(this, apis.calendars);
@@ -14736,6 +15176,7 @@ var GravityRailClient = class {
14736
15176
  ActivityEventTypePreset,
14737
15177
  ActivityGoalImpact,
14738
15178
  ActivityTimelineProjection,
15179
+ AddonMutationResponseScope,
14739
15180
  AgentTasksApi,
14740
15181
  AgentsApi,
14741
15182
  ApiError,
@@ -14813,8 +15254,9 @@ var GravityRailClient = class {
14813
15254
  InvitationStatus,
14814
15255
  JobPosition,
14815
15256
  JourneysApi,
14816
- LIMIT_ONLY_RESOURCES,
14817
15257
  MASKED_SECRET_SENTINEL,
15258
+ MEMBER_ENTITLEMENT_STATUSES,
15259
+ MEMBER_SUBSCRIPTION_STATUSES,
14818
15260
  McpServerState,
14819
15261
  McpServersApi,
14820
15262
  MemberFeature,
@@ -14843,6 +15285,7 @@ var GravityRailClient = class {
14843
15285
  OperatorApi,
14844
15286
  OrgApi,
14845
15287
  OrgFeature,
15288
+ OrganizationAddonResponseScope,
14846
15289
  PERMISSION_ADMIN,
14847
15290
  PERMISSION_CREATE,
14848
15291
  PERMISSION_DELETE,
@@ -14875,7 +15318,6 @@ var GravityRailClient = class {
14875
15318
  REALTIME_MODEL_CUSTOM,
14876
15319
  REALTIME_MODEL_GEMINI,
14877
15320
  REALTIME_MODEL_GEMINI_VERTEX,
14878
- REALTIME_MODEL_NOVA_SONIC,
14879
15321
  REALTIME_MODEL_OPENAI,
14880
15322
  REALTIME_MODEL_OPENAI_2,
14881
15323
  REALTIME_MODEL_OPENAI_MINI,
@@ -14943,6 +15385,7 @@ var GravityRailClient = class {
14943
15385
  bindCustomersMethods,
14944
15386
  bindDashboardsMethods,
14945
15387
  bindDataTypesMethods,
15388
+ bindDevicesMethods,
14946
15389
  bindEventsMethods,
14947
15390
  bindExperimentsMethods,
14948
15391
  bindFilesMethods,
@@ -14954,6 +15397,7 @@ var GravityRailClient = class {
14954
15397
  bindOperatorMethods,
14955
15398
  bindOrgMethods,
14956
15399
  bindPersonasMethods,
15400
+ bindProjectsMethods,
14957
15401
  bindPromptsMethods,
14958
15402
  bindPronunciationsMethods,
14959
15403
  bindQualificationsMethods,
@@ -14976,8 +15420,6 @@ var GravityRailClient = class {
14976
15420
  formatAppContextAsMarkdown,
14977
15421
  getAllFeatures,
14978
15422
  getAllResourceSlugs,
14979
- getApplicableResourceSlugs,
14980
- getApplicableResources,
14981
15423
  getAvailableFeaturesForUpgrade,
14982
15424
  getCookieValue,
14983
15425
  getFeature,
@@ -14986,7 +15428,6 @@ var GravityRailClient = class {
14986
15428
  getMissingDependencies,
14987
15429
  getResourceMetadata,
14988
15430
  getRevisionState,
14989
- getScopeFromProductType,
14990
15431
  getTTSProvider,
14991
15432
  getVoiceModelId,
14992
15433
  initializeFeatures,