@gravity-rail/sdk 0.10.1 → 0.12.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 (44) hide show
  1. package/README.md +7 -8
  2. package/dist/{chunk-2BJG4GYM.js → chunk-LODUVCW6.js} +884 -210
  3. package/dist/chunk-LODUVCW6.js.map +1 -0
  4. package/dist/{chunk-TJT7A4CO.js → chunk-V7ZKEH4V.js} +1 -1
  5. package/dist/chunk-V7ZKEH4V.js.map +1 -0
  6. package/dist/{client-BffM3KcA.d.cts → client-CYQ_N681.d.ts} +2794 -1123
  7. package/dist/{client-DfjAYbt8.d.ts → client-DSFqUxvN.d.cts} +2794 -1123
  8. package/dist/helpers.cjs +6 -18
  9. package/dist/helpers.cjs.map +1 -1
  10. package/dist/helpers.d.cts +2 -2
  11. package/dist/helpers.d.ts +2 -2
  12. package/dist/helpers.js +6 -18
  13. package/dist/helpers.js.map +1 -1
  14. package/dist/index.cjs +914 -298
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.d.cts +23 -21
  17. package/dist/index.d.ts +23 -21
  18. package/dist/index.js +51 -95
  19. package/dist/index.js.map +1 -1
  20. package/dist/internal.cjs +1040 -297
  21. package/dist/internal.cjs.map +1 -1
  22. package/dist/internal.d.cts +446 -74
  23. package/dist/internal.d.ts +446 -74
  24. package/dist/internal.js +75 -3
  25. package/dist/internal.js.map +1 -1
  26. package/dist/realtime.cjs +42 -0
  27. package/dist/realtime.cjs.map +1 -1
  28. package/dist/realtime.d.cts +26 -0
  29. package/dist/realtime.d.ts +26 -0
  30. package/dist/realtime.js +42 -0
  31. package/dist/realtime.js.map +1 -1
  32. package/dist/{scopes-CmNKWrzb.d.ts → revision-state-C0VW3vDJ.d.cts} +221 -19
  33. package/dist/{scopes-CjSvITpL.d.cts → revision-state-CIRkBy-k.d.ts} +221 -19
  34. package/dist/schemas.cjs +55 -111
  35. package/dist/schemas.cjs.map +1 -1
  36. package/dist/schemas.d.cts +48 -466
  37. package/dist/schemas.d.ts +48 -466
  38. package/dist/schemas.js +55 -108
  39. package/dist/schemas.js.map +1 -1
  40. package/dist/{inquiries-UcWNYo-Q.d.cts → tasks-DcxMysiR.d.cts} +483 -143
  41. package/dist/{inquiries-UcWNYo-Q.d.ts → tasks-DcxMysiR.d.ts} +483 -143
  42. package/package.json +1 -1
  43. package/dist/chunk-2BJG4GYM.js.map +0 -1
  44. package/dist/chunk-TJT7A4CO.js.map +0 -1
@@ -1,4 +1,5 @@
1
1
  import {
2
+ ApiError,
2
3
  BaseApiClient
3
4
  } from "./chunk-FSSXKQR5.js";
4
5
 
@@ -16,20 +17,22 @@ var AbilitiesApi = class extends BaseApiClient {
16
17
  }
17
18
  /** Get the full spec for a single ability type by slug. */
18
19
  async getAbilityType(wid, slug) {
19
- return this.fetch(
20
- `w/${wid}/abilities/types/${encodeURIComponent(slug)}`
21
- );
20
+ return this.fetch(`w/${wid}/abilities/types/${encodeURIComponent(slug)}`);
22
21
  }
23
22
  /**
24
23
  * List configured ability instances for a workflow or task scope.
25
- * Exactly one of workflowId / taskId must be provided.
24
+ * Provide exactly one of:
25
+ * - workflow scope: workflowId (stable root → draft revision) and/or
26
+ * workflowRevisionId (explicit pin)
27
+ * - taskId for task-scoped abilities
26
28
  */
27
29
  async listAbilities(wid, options) {
28
30
  const params = new URLSearchParams();
29
31
  if (options.workflowId !== void 0)
30
32
  params.append("workflowId", options.workflowId.toString());
31
- if (options.taskId !== void 0)
32
- params.append("taskId", options.taskId.toString());
33
+ if (options.workflowRevisionId !== void 0)
34
+ params.append("workflowRevisionId", options.workflowRevisionId.toString());
35
+ if (options.taskId !== void 0) params.append("taskId", options.taskId.toString());
33
36
  return this.fetch(`w/${wid}/abilities?${params}`);
34
37
  }
35
38
  /** Create (enable) a configured ability on a workflow or task scope. */
@@ -52,6 +55,20 @@ var AbilitiesApi = class extends BaseApiClient {
52
55
  method: "DELETE"
53
56
  });
54
57
  }
58
+ /**
59
+ * List recipient-directory rows approved for Charleston PMD test delivery
60
+ * (CS-150). Returns only {recipientKey, displayLabel} for active,
61
+ * test-delivery-allowed rows with a device id — never the PatientSync
62
+ * recipient_id. Scoped to agents:write + the charleston_nephrology_pmd_paging
63
+ * feature; used by the ability-config test-delivery dropdown. Kept on the
64
+ * ability-configuration API (not generic DataRecords) because the actual
65
+ * ability-editor scopes do not guarantee generic record access.
66
+ */
67
+ async getCharlestonTestDeliveryRecipients(wid) {
68
+ return this.fetch(
69
+ `w/${wid}/app-connections/charleston_nephrology/test-delivery/eligible-recipients`
70
+ );
71
+ }
55
72
  };
56
73
 
57
74
  // src/api/access-grants.ts
@@ -123,6 +140,24 @@ var AccessGrantsApi = class extends BaseApiClient {
123
140
  );
124
141
  return resp.items;
125
142
  }
143
+ /**
144
+ * List access grants *received* by a member (grantee view) — the
145
+ * "what can this agent do without asking?" list. Filter with
146
+ * status=active and/or a capabilityClass (e.g. 'tool.always_allow').
147
+ */
148
+ async getGranteeGrants(wid, memberId, params) {
149
+ const searchParams = new URLSearchParams();
150
+ if (params?.status) searchParams.set("status", params.status);
151
+ if (params?.capabilityClass) {
152
+ searchParams.set("capability_class", params.capabilityClass);
153
+ }
154
+ if (params?.page) searchParams.set("page", params.page.toString());
155
+ if (params?.pageSize) searchParams.set("page_size", params.pageSize.toString());
156
+ const qs = searchParams.toString();
157
+ return this.fetch(
158
+ `w/${wid}/access-grants/grantee/${memberId}${qs ? `?${qs}` : ""}`
159
+ );
160
+ }
126
161
  };
127
162
 
128
163
  // src/api/agent-tasks.ts
@@ -209,25 +244,6 @@ var AgentsApi = class extends BaseApiClient {
209
244
  method: "POST"
210
245
  });
211
246
  }
212
- /** Resolve runtime tools for an agent on a simulated channel. */
213
- async resolveAgentTools(wid, id, options) {
214
- const params = new URLSearchParams();
215
- params.append("channel", options.channel);
216
- if (options.taskId !== void 0) params.append("taskId", options.taskId.toString());
217
- if (options.taskUuid !== void 0) params.append("taskUuid", options.taskUuid);
218
- return this.fetch(`w/${wid}/agents/${id}/resolve-tools?${params}`);
219
- }
220
- /**
221
- * List the configured abilities effective for an agent via a task's workflow.
222
- * Requires taskId because abilities are scoped to workflows/tasks, not agents.
223
- */
224
- async listAgentAbilities(wid, id, options) {
225
- const params = new URLSearchParams();
226
- params.append("taskId", options.taskId.toString());
227
- return this.fetch(
228
- `w/${wid}/agents/${id}/abilities?${params}`
229
- );
230
- }
231
247
  };
232
248
 
233
249
  // src/api/ai-models.ts
@@ -424,8 +440,7 @@ var AssignmentsApi = class extends BaseApiClient {
424
440
  if (options.sortOrder) params.append("sortOrder", options.sortOrder);
425
441
  if (options.mine) params.append("mine", options.mine.toString());
426
442
  if (options.taskId) params.append("taskId", options.taskId.toString());
427
- if (options.memberId !== void 0)
428
- params.append("memberId", options.memberId.toString());
443
+ if (options.memberId !== void 0) params.append("memberId", options.memberId.toString());
429
444
  if (options.status) params.append("status", options.status);
430
445
  return this.fetch(
431
446
  `w/${wid}/assignments${params.toString() ? `?${params.toString()}` : ""}`
@@ -554,6 +569,20 @@ var AuthApi = class extends BaseApiClient {
554
569
  body: JSON.stringify(info)
555
570
  });
556
571
  }
572
+ /**
573
+ * Persist the account's FIRST-touch marketing attribution (write-once).
574
+ *
575
+ * Called by the browser at signup completion with its resolved UTM /
576
+ * referrer / landing-page capture. The server keeps the first write and
577
+ * ignores later posts (`recorded: false`), so calling this again is
578
+ * harmless. Marketing context only — never emails, phones, or free text.
579
+ */
580
+ async recordAcquisition(request) {
581
+ return this.fetch("account/acquisition", {
582
+ method: "POST",
583
+ body: JSON.stringify(request)
584
+ });
585
+ }
557
586
  /** Initiate SMS login by sending a verification code to the given phone number. */
558
587
  async login(phoneNumber, wid, organizationUuid) {
559
588
  const params = new URLSearchParams();
@@ -777,23 +806,29 @@ var AuthApi = class extends BaseApiClient {
777
806
  // ===== TWO-FACTOR AUTHENTICATION LOGIN METHODS =====
778
807
  /** Verify a TOTP code during login to complete two-factor authentication. */
779
808
  async verifyTOTPAuth(tempToken, code) {
780
- return this.fetch("auth/2fa/auth/totp", {
781
- method: "POST",
782
- body: JSON.stringify({
783
- temp_token: tempToken,
784
- code
785
- })
786
- });
809
+ return this.fetch(
810
+ "auth/2fa/auth/totp",
811
+ {
812
+ method: "POST",
813
+ body: JSON.stringify({
814
+ temp_token: tempToken,
815
+ code
816
+ })
817
+ }
818
+ );
787
819
  }
788
820
  /** Verify a recovery code during login to complete two-factor authentication. */
789
821
  async verifyRecoveryCodeAuth(tempToken, code) {
790
- return this.fetch("auth/2fa/auth/recovery", {
791
- method: "POST",
792
- body: JSON.stringify({
793
- temp_token: tempToken,
794
- code
795
- })
796
- });
822
+ return this.fetch(
823
+ "auth/2fa/auth/recovery",
824
+ {
825
+ method: "POST",
826
+ body: JSON.stringify({
827
+ temp_token: tempToken,
828
+ code
829
+ })
830
+ }
831
+ );
797
832
  }
798
833
  /** Get WebAuthn credential request options for two-factor login verification. */
799
834
  async getWebAuthnAuthOptions(tempToken) {
@@ -806,13 +841,16 @@ var AuthApi = class extends BaseApiClient {
806
841
  }
807
842
  /** Verify a WebAuthn assertion during login to complete two-factor authentication. */
808
843
  async verifyWebAuthnAuth(tempToken, assertionResponse) {
809
- return this.fetch("auth/2fa/webauthn", {
810
- method: "POST",
811
- body: JSON.stringify({
812
- temp_token: tempToken,
813
- assertion_response: assertionResponse
814
- })
815
- });
844
+ return this.fetch(
845
+ "auth/2fa/webauthn",
846
+ {
847
+ method: "POST",
848
+ body: JSON.stringify({
849
+ temp_token: tempToken,
850
+ assertion_response: assertionResponse
851
+ })
852
+ }
853
+ );
816
854
  }
817
855
  // ===== ORGANIZATION MEMBERSHIP METHODS =====
818
856
  /** List all organizations the current account belongs to. */
@@ -1194,6 +1232,15 @@ var CallsApi = class extends BaseApiClient {
1194
1232
  async getMessageTiming(wid, chatId) {
1195
1233
  return this.fetch(`w/${wid}/recordings/chat/${chatId}/message-timing`);
1196
1234
  }
1235
+ /**
1236
+ * Get PHI-safe provenance metadata for the recording served by
1237
+ * `/audio.wav` — source, encryption, channels, duration, status, etc.
1238
+ * Staff-only Twilio SIDs are present only for superusers. Returns 404
1239
+ * when the chat has no native recording row (legacy chunk-only playback).
1240
+ */
1241
+ async getRecordingInfo(wid, chatId) {
1242
+ return this.fetch(`w/${wid}/recordings/chat/${chatId}/info`);
1243
+ }
1197
1244
  /** List the recorded audio chunks for a chat (metadata only). */
1198
1245
  async listChatRecordings(wid, chatId, options = {}) {
1199
1246
  const params = new URLSearchParams();
@@ -1252,8 +1299,7 @@ var ChatsApi = class extends BaseApiClient {
1252
1299
  if (options.paused !== void 0) params.append("paused", options.paused.toString());
1253
1300
  if (options.archived !== void 0) params.append("archived", options.archived.toString());
1254
1301
  if (options.channel) params.append("channel", options.channel);
1255
- const chatType = options.chatType ?? "assignment";
1256
- params.append("chatType", chatType);
1302
+ if (options.chatType) params.append("chatType", options.chatType);
1257
1303
  if (options.memberId !== void 0) params.append("memberId", options.memberId.toString());
1258
1304
  if (options.assistantMemberId !== void 0)
1259
1305
  params.append("assistantMemberId", options.assistantMemberId.toString());
@@ -1264,6 +1310,11 @@ var ChatsApi = class extends BaseApiClient {
1264
1310
  if (options.filters && options.filters.length > 0) {
1265
1311
  params.append("filters", JSON.stringify(options.filters));
1266
1312
  }
1313
+ if (options.query) params.append("query", JSON.stringify(options.query));
1314
+ if (options.workflowId !== void 0)
1315
+ params.append("workflowId", options.workflowId.toString());
1316
+ if (options.workflowRevisionId !== void 0)
1317
+ params.append("workflowRevisionId", options.workflowRevisionId.toString());
1267
1318
  if (options.createdAfter) params.append("createdAfter", options.createdAfter);
1268
1319
  if (options.createdBefore) params.append("createdBefore", options.createdBefore);
1269
1320
  return params;
@@ -1384,6 +1435,25 @@ var ChatsApi = class extends BaseApiClient {
1384
1435
  body: JSON.stringify(chat)
1385
1436
  });
1386
1437
  }
1438
+ /**
1439
+ * Get per-chat model provenance for the Chat sidebar's model summary area:
1440
+ * the effective chat + realtime models, the agent's current default (the
1441
+ * reset/inherit target), and pinned/matches flags.
1442
+ */
1443
+ async getChatModelOverride(wid, id) {
1444
+ return this.fetch(`w/${wid}/chats/${id}/model-override`);
1445
+ }
1446
+ /**
1447
+ * Pin or reset the per-chat chat/realtime model snapshot. A concrete model id
1448
+ * pins that model; an empty/null id resets it to the agent's current default.
1449
+ * Only fields present in the payload are touched.
1450
+ */
1451
+ async updateChatModelOverride(wid, id, override) {
1452
+ return this.fetch(`w/${wid}/chats/${id}/model-override`, {
1453
+ method: "PUT",
1454
+ body: JSON.stringify(override)
1455
+ });
1456
+ }
1387
1457
  /** Update the mute status of a chat. */
1388
1458
  async updateChatMute(wid, id, muted) {
1389
1459
  return this.fetch(`w/${wid}/chats/${id}/mute`, {
@@ -1454,13 +1524,35 @@ var ChatsApi = class extends BaseApiClient {
1454
1524
  })
1455
1525
  });
1456
1526
  }
1457
- /** Rate a chat message by its UUID. */
1458
- async rateMessage(wid, chatId, messageUuid, rating) {
1527
+ /**
1528
+ * List durable feedback rows for a chat (thumbs, explicit, supervisor, extracted).
1529
+ */
1530
+ async getChatFeedback(wid, chatId, options = {}) {
1531
+ const params = new URLSearchParams();
1532
+ if (options.page != null) params.set("page", String(options.page));
1533
+ if (options.pageSize != null) params.set("pageSize", String(options.pageSize));
1534
+ if (options.source) params.set("source", options.source);
1535
+ if (options.rating) params.set("rating", options.rating);
1536
+ if (options.authorKind) params.set("authorKind", options.authorKind);
1537
+ const qs = params.toString();
1538
+ return this.fetch(
1539
+ `w/${wid}/chats/${chatId}/feedback${qs ? `?${qs}` : ""}`
1540
+ );
1541
+ }
1542
+ /**
1543
+ * Rate a chat message by its UUID.
1544
+ * Optional ``comment`` updates free-text details on the same durable rating row.
1545
+ */
1546
+ async rateMessage(wid, chatId, messageUuid, rating, comment) {
1547
+ const body = { rating };
1548
+ if (comment !== void 0) {
1549
+ body.comment = comment;
1550
+ }
1459
1551
  return this.fetch(
1460
1552
  `w/${wid}/chats/${chatId}/messages/${messageUuid}/rate`,
1461
1553
  {
1462
1554
  method: "POST",
1463
- body: JSON.stringify({ rating })
1555
+ body: JSON.stringify(body)
1464
1556
  }
1465
1557
  );
1466
1558
  }
@@ -1798,12 +1890,58 @@ var DataTypesApi = class extends BaseApiClient {
1798
1890
  if (options?.memberIds?.length) params.append("member_ids", options.memberIds.join(","));
1799
1891
  if (options?.search) params.append("search", options.search);
1800
1892
  if (options?.searchField) params.append("search_field", options.searchField);
1893
+ if (options?.dataRecordFilterId != null) {
1894
+ params.append("dataRecordFilterId", options.dataRecordFilterId.toString());
1895
+ }
1896
+ if (options?.query != null) params.append("query", JSON.stringify(options.query));
1801
1897
  if (options?.page) params.append("page", options.page.toString());
1802
1898
  if (options?.pageSize) params.append("page_size", options.pageSize.toString());
1803
1899
  return this.fetch(
1804
1900
  `w/${wid}/data-types/${dataTypeId}/records${params?.toString() ? `?${params.toString()}` : ""}`
1805
1901
  );
1806
1902
  }
1903
+ // Data-record filter APIs (saved Query IR predicates per form)
1904
+ /** List saved data-record filters, optionally scoped to one DataType. */
1905
+ async getDataRecordFilters(wid, options) {
1906
+ const params = new URLSearchParams();
1907
+ if (options?.dataTypeId != null) {
1908
+ params.append("dataTypeId", options.dataTypeId.toString());
1909
+ }
1910
+ const qs = params.toString();
1911
+ return this.fetch(
1912
+ `w/${wid}/data-record-filters${qs ? `?${qs}` : ""}`
1913
+ );
1914
+ }
1915
+ /** Get a single data-record filter by ID. */
1916
+ async getDataRecordFilter(wid, filterId) {
1917
+ return this.fetch(`w/${wid}/data-record-filters/${filterId}`);
1918
+ }
1919
+ /** Create a new saved data-record filter. */
1920
+ async createDataRecordFilter(wid, data) {
1921
+ return this.fetch(`w/${wid}/data-record-filters`, {
1922
+ method: "POST",
1923
+ body: JSON.stringify(data)
1924
+ });
1925
+ }
1926
+ /** Update a saved data-record filter. */
1927
+ async updateDataRecordFilter(wid, filterId, data) {
1928
+ return this.fetch(`w/${wid}/data-record-filters/${filterId}`, {
1929
+ method: "PUT",
1930
+ body: JSON.stringify(data)
1931
+ });
1932
+ }
1933
+ /** Delete a saved data-record filter. */
1934
+ async deleteDataRecordFilter(wid, filterId) {
1935
+ return this.fetch(`w/${wid}/data-record-filters/${filterId}`, {
1936
+ method: "DELETE"
1937
+ });
1938
+ }
1939
+ /** Get the count of records matching a saved filter. */
1940
+ async getDataRecordFilterCount(wid, filterId) {
1941
+ return this.fetch(
1942
+ `w/${wid}/data-record-filters/${filterId}/count`
1943
+ );
1944
+ }
1807
1945
  /** Get a single data record by ID. */
1808
1946
  async getDataRecord(wid, recordId) {
1809
1947
  return this.fetch(`w/${wid}/data-types/records/${recordId}`);
@@ -1916,6 +2054,38 @@ var DiscordBotsApi = class extends BaseApiClient {
1916
2054
  body: JSON.stringify(data)
1917
2055
  });
1918
2056
  }
2057
+ /**
2058
+ * Step-up preflight for the Discord account-link flow (GH #20196).
2059
+ *
2060
+ * A no-side-effect GET enforcing the same authenticated, stepped-up
2061
+ * `apps:write` session as authorize/complete-link. Call this through the
2062
+ * client *before* the full-page navigation to `/oauth/authorize`: a 401
2063
+ * `insufficient_user_authentication` triggers the SDK's enhanced-auth
2064
+ * (step-up) modal + retry, so a below-assurance session is prompted here
2065
+ * rather than hitting a raw 401 on a top-level browser navigation.
2066
+ * Resolves (204) once the session is sufficiently assured.
2067
+ */
2068
+ async discordLinkPreflight(wid) {
2069
+ return this.fetch(`w/${wid}/app-connections/discord/oauth/link/preflight`);
2070
+ }
2071
+ /**
2072
+ * Complete an authenticated Discord account link (GH #20196).
2073
+ *
2074
+ * POST-only. Exchanges the one-time opaque handle (issued by the OAuth
2075
+ * callback and carried in the `?discord_link_handle=` return param) for a
2076
+ * persisted MemberCredential. Requires an authenticated, step-up-protected
2077
+ * session with `apps:write`; a 401 `insufficient_user_authentication`
2078
+ * triggers the SDK's enhanced-auth (step-up) retry automatically.
2079
+ */
2080
+ async completeDiscordLink(wid, data) {
2081
+ return this.fetch(
2082
+ `w/${wid}/app-connections/discord/oauth/complete-link`,
2083
+ {
2084
+ method: "POST",
2085
+ body: JSON.stringify(data)
2086
+ }
2087
+ );
2088
+ }
1919
2089
  /**
1920
2090
  * Update an existing Discord bot configuration.
1921
2091
  */
@@ -2108,7 +2278,8 @@ var EventsApi = class extends BaseApiClient {
2108
2278
  if (params.taskId) searchParams.append("taskId", params.taskId.toString());
2109
2279
  if (params.dataTypeId) searchParams.append("dataTypeId", params.dataTypeId.toString());
2110
2280
  if (params.routineId) searchParams.append("routineId", params.routineId.toString());
2111
- if (params.workflowId) searchParams.append("workflowId", params.workflowId.toString());
2281
+ if (params.workflowRevisionId)
2282
+ searchParams.append("workflowRevisionId", params.workflowRevisionId.toString());
2112
2283
  if (params.journeyStepId)
2113
2284
  searchParams.append("journeyStepId", params.journeyStepId.toString());
2114
2285
  if (params.includeDisabled) searchParams.append("includeDisabled", "true");
@@ -2179,7 +2350,8 @@ var EventsApi = class extends BaseApiClient {
2179
2350
  if (options.objectType) params.append("objectType", options.objectType);
2180
2351
  if (options.eventType) params.append("eventType", options.eventType);
2181
2352
  if (options.actionType) params.append("actionType", options.actionType);
2182
- if (options.workflowId) params.append("workflowId", options.workflowId.toString());
2353
+ if (options.workflowRevisionId)
2354
+ params.append("workflowRevisionId", options.workflowRevisionId.toString());
2183
2355
  return this.fetch(
2184
2356
  `w/${wid}/event-rules/executions${params.toString() ? `?${params.toString()}` : ""}`
2185
2357
  );
@@ -2191,6 +2363,20 @@ var EventsApi = class extends BaseApiClient {
2191
2363
  body: JSON.stringify(request)
2192
2364
  });
2193
2365
  }
2366
+ /**
2367
+ * Preview which target-audience roles lack Workflow USE for the Workflows a
2368
+ * draft Routine would start. Non-persisting, non-blocking authoring assist —
2369
+ * returns warnings only (role/Workflow names + IDs; no Member data).
2370
+ */
2371
+ async previewRoutineWorkflowAccess(wid, request) {
2372
+ return this.fetch(
2373
+ `w/${wid}/routines/preview-workflow-access`,
2374
+ {
2375
+ method: "POST",
2376
+ body: JSON.stringify(request)
2377
+ }
2378
+ );
2379
+ }
2194
2380
  /** List routines with optional pagination and active status filtering. */
2195
2381
  async getRoutines(wid, options = {}) {
2196
2382
  const params = new URLSearchParams();
@@ -2649,6 +2835,17 @@ var FilesApi = class extends BaseApiClient {
2649
2835
  async getFile(wid, id) {
2650
2836
  return this.fetch(`w/${wid}/files/${id}`);
2651
2837
  }
2838
+ /**
2839
+ * Resolve a wiki-style relative path (as authored in a markdown link or
2840
+ * image) to a file. `folderId` is the linking document's folder; omit it
2841
+ * to resolve from the workspace root. Handles `.`/`..` segments and an
2842
+ * omitted `.md` extension server-side.
2843
+ */
2844
+ async resolveFilePath(wid, path, folderId) {
2845
+ const params = new URLSearchParams({ path });
2846
+ if (folderId != null) params.append("folderId", String(folderId));
2847
+ return this.fetch(`w/${wid}/files/resolve-path?${params.toString()}`);
2848
+ }
2652
2849
  /**
2653
2850
  * Download the given files + folders (folders recursively) as a single ZIP.
2654
2851
  * Returns the raw archive bytes for the caller to save.
@@ -2702,6 +2899,36 @@ var FilesApi = class extends BaseApiClient {
2702
2899
  method: "DELETE"
2703
2900
  });
2704
2901
  }
2902
+ /** List a file's version history (newest first). */
2903
+ async listFileVersions(wid, fileId) {
2904
+ return this.fetch(`w/${wid}/files/${fileId}/versions`);
2905
+ }
2906
+ /** Compare two versions of a file. For text files both raw contents are returned. */
2907
+ async getFileVersionDiff(wid, fileId, fromVersion, toVersion) {
2908
+ return this.fetch(
2909
+ `w/${wid}/files/${fileId}/versions/diff?fromVersion=${fromVersion}&toVersion=${toVersion}`
2910
+ );
2911
+ }
2912
+ /** Restore an earlier version as the file's current contents. */
2913
+ async restoreFileVersion(wid, fileId, versionNumber, changeNote) {
2914
+ return this.fetch(
2915
+ `w/${wid}/files/${fileId}/versions/${versionNumber}/restore`,
2916
+ {
2917
+ method: "POST",
2918
+ // Required JSON body: keeps this cookie-auth POST non-forgeable
2919
+ // by cross-site HTML forms (backend rejects bodyless requests).
2920
+ body: JSON.stringify(changeNote ? { changeNote } : {})
2921
+ }
2922
+ );
2923
+ }
2924
+ /**
2925
+ * Same-origin proxy URL for a version's raw contents. Mirrors the shape of
2926
+ * `FileResponse.cdnUrl`: an app-relative Next.js route that authenticates
2927
+ * via session cookies and forwards to the versioned contents endpoint.
2928
+ */
2929
+ getFileVersionContentsUrl(wid, fileId, versionNumber) {
2930
+ return `/api/w/${wid}/files/${fileId}/versions/${versionNumber}/contents`;
2931
+ }
2705
2932
  /** Convert a file to the specified format (text, markdown, or PDF). */
2706
2933
  async convertFile(wid, fileId, format = "pdf") {
2707
2934
  return this.fetch(
@@ -3342,7 +3569,7 @@ var MembersApi = class extends BaseApiClient {
3342
3569
  });
3343
3570
  }
3344
3571
  /** List workspace members with pagination, filtering, and sorting. */
3345
- async getWorkspaceMembers(wid, page = 1, pageSize = 10, filters, search, role, sortBy, sortOrder, memberType, isArchived = false, isManager, memberTypes, hasAccount, excludeIds, memberFilterId, query) {
3572
+ async getWorkspaceMembers(wid, page = 1, pageSize = 10, search, role, sortBy, sortOrder, memberType, isArchived = false, isManager, memberTypes, hasAccount, excludeIds, memberFilterId, query) {
3346
3573
  const params = new URLSearchParams();
3347
3574
  if (memberFilterId != null) params.append("memberFilterId", memberFilterId.toString());
3348
3575
  if (query != null) params.append("query", JSON.stringify(query));
@@ -3350,13 +3577,6 @@ var MembersApi = class extends BaseApiClient {
3350
3577
  if (pageSize) params.append("pageSize", pageSize.toString());
3351
3578
  if (sortBy) params.append("sortBy", sortBy);
3352
3579
  if (sortOrder) params.append("sortOrder", sortOrder);
3353
- if (filters) {
3354
- if (Array.isArray(filters)) {
3355
- params.append("filters", JSON.stringify(filters));
3356
- } else {
3357
- params.append("filters", JSON.stringify(filters));
3358
- }
3359
- }
3360
3580
  if (search) params.append("search", search);
3361
3581
  if (role) params.append("role", role);
3362
3582
  if (memberTypes && memberTypes.length > 0) {
@@ -3452,22 +3672,6 @@ var MembersApi = class extends BaseApiClient {
3452
3672
  body: JSON.stringify(data)
3453
3673
  });
3454
3674
  }
3455
- /**
3456
- * Convert a legacy rules filter to a query-engine predicate. One-way and
3457
- * transactional: on success the filter's legacy rules are gone and
3458
- * `query` holds the equivalent IR predicate. 409 if already query-format;
3459
- * 422 when rules have no engine equivalent.
3460
- *
3461
- * With `dryRun: true` the same validation runs but nothing persists: the
3462
- * response previews the normalized predicate in `query` while `rules`
3463
- * stay intact on the filter.
3464
- */
3465
- async convertMemberFilterToQuery(wid, filterId, opts) {
3466
- const suffix = opts?.dryRun ? "?dryRun=true" : "";
3467
- return this.fetch(`w/${wid}/member-filters/${filterId}/convert${suffix}`, {
3468
- method: "PUT"
3469
- });
3470
- }
3471
3675
  /** Delete a saved member filter. */
3472
3676
  async deleteMemberFilter(wid, filterId) {
3473
3677
  return this.fetch(`w/${wid}/member-filters/${filterId}`, {
@@ -3813,6 +4017,11 @@ var MembersApi = class extends BaseApiClient {
3813
4017
  `w/${wid}/members/${memberId}/memories${qs ? `?${qs}` : ""}`
3814
4018
  );
3815
4019
  }
4020
+ async getMemberMemory(wid, memberId, key) {
4021
+ return this.fetch(
4022
+ `w/${wid}/members/${memberId}/memories/${encodeURIComponent(key)}`
4023
+ );
4024
+ }
3816
4025
  async createMemberMemory(wid, memberId, body) {
3817
4026
  return this.fetch(`w/${wid}/members/${memberId}/memories`, {
3818
4027
  method: "POST",
@@ -3917,6 +4126,20 @@ var MondayIntegrationApi = class extends BaseApiClient {
3917
4126
  // -----------------------------------------------------------------------
3918
4127
  // Monday.com Connection management (OAuth, status, sync, reconciliation)
3919
4128
  // -----------------------------------------------------------------------
4129
+ /**
4130
+ * Create the Monday.com connection shell (no credentials yet).
4131
+ *
4132
+ * First step of the guided setup flow: provisions the connection row so
4133
+ * the admin lands on the detail page where the OAuth callback URL is
4134
+ * shown — which they need to register their Monday.com app before they
4135
+ * have a Client ID / Secret to enter. Idempotent.
4136
+ */
4137
+ async installMondayConnection(wid) {
4138
+ return this.fetch(`w/${wid}/app-connections/monday/install`, {
4139
+ method: "POST",
4140
+ body: JSON.stringify({})
4141
+ });
4142
+ }
3920
4143
  async configureMondayConnection(wid, data) {
3921
4144
  return this.fetch(`w/${wid}/app-connections/monday/configure`, {
3922
4145
  method: "POST",
@@ -4501,24 +4724,24 @@ var OrgApi = class extends BaseApiClient {
4501
4724
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/status`);
4502
4725
  }
4503
4726
  /**
4504
- * Start org-level A2P brand registration.
4727
+ * Start A2P brand registration under a legal entity. `legalEntityUuid`
4728
+ * is required — brands register per legal entity (Customer Profile);
4729
+ * there is no primary-entity fallback.
4505
4730
  */
4506
- async startA2PRegistration(orgUuid, brandName, brandDescription) {
4507
- return this.fetch(
4508
- `o/${orgUuid}/phone-numbers/a2p/start`,
4509
- {
4510
- method: "POST",
4511
- body: JSON.stringify({ brandName, brandDescription })
4512
- }
4513
- );
4731
+ async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandDescription) {
4732
+ return this.fetch(`o/${orgUuid}/phone-numbers/a2p/start`, {
4733
+ method: "POST",
4734
+ body: JSON.stringify({ legalEntityUuid, brandName, brandDescription })
4735
+ });
4514
4736
  }
4515
4737
  /**
4516
- * Approve sample messages for the org's A2P campaign.
4738
+ * Approve sample messages for one brand's A2P campaign. Signals the
4739
+ * brand's registration workflow to create the TCR campaign.
4517
4740
  */
4518
- async approveA2PMessages(orgUuid, sampleMessages) {
4741
+ async approveA2PMessages(orgUuid, brandUuid, sampleMessages) {
4519
4742
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/approve-messages`, {
4520
4743
  method: "POST",
4521
- body: JSON.stringify({ sampleMessages })
4744
+ body: JSON.stringify({ brandUuid, sampleMessages })
4522
4745
  });
4523
4746
  }
4524
4747
  // ============================================================================
@@ -4534,8 +4757,8 @@ var OrgApi = class extends BaseApiClient {
4534
4757
  * which is impossible (lifecycle status is one of `draft` /
4535
4758
  * `pending-review` / `in-review` / `twilio-approved` / `twilio-rejected`).
4536
4759
  */
4537
- async getBusinessProfile(orgUuid) {
4538
- return this.fetch(`o/${orgUuid}/business-profile`);
4760
+ async getBusinessProfile(orgUuid, legalEntityUuid) {
4761
+ return this.fetch(businessProfilePath(orgUuid, legalEntityUuid));
4539
4762
  }
4540
4763
  /**
4541
4764
  * Upsert the org's business profile. Idempotent via cached SIDs.
@@ -4543,8 +4766,8 @@ var OrgApi = class extends BaseApiClient {
4543
4766
  * compliance evaluation result so the frontend can immediately enable
4544
4767
  * Submit without a second round-trip.
4545
4768
  */
4546
- async updateBusinessProfile(orgUuid, data) {
4547
- return this.fetch(`o/${orgUuid}/business-profile`, {
4769
+ async updateBusinessProfile(orgUuid, data, legalEntityUuid) {
4770
+ return this.fetch(businessProfilePath(orgUuid, legalEntityUuid), {
4548
4771
  method: "PUT",
4549
4772
  body: JSON.stringify(data)
4550
4773
  });
@@ -4554,20 +4777,46 @@ var OrgApi = class extends BaseApiClient {
4554
4777
  * compliance live and returns 412 if the profile is not currently
4555
4778
  * `compliant`; returns 409 if a review is already in flight.
4556
4779
  */
4557
- async submitBusinessProfile(orgUuid) {
4558
- return this.fetch(`o/${orgUuid}/business-profile/submit`, {
4559
- method: "POST"
4560
- });
4780
+ async submitBusinessProfile(orgUuid, legalEntityUuid) {
4781
+ return this.fetch(
4782
+ `${businessProfilePath(orgUuid, legalEntityUuid)}/submit`,
4783
+ { method: "POST" }
4784
+ );
4561
4785
  }
4562
4786
  /**
4563
4787
  * Cancel an in-flight Twilio review. Resets the cached profile state
4564
4788
  * to `draft` so the user can edit and resubmit.
4565
4789
  */
4566
- async cancelBusinessProfile(orgUuid) {
4567
- return this.fetch(`o/${orgUuid}/business-profile/cancel`, {
4568
- method: "POST"
4790
+ async cancelBusinessProfile(orgUuid, legalEntityUuid) {
4791
+ return this.fetch(
4792
+ `${businessProfilePath(orgUuid, legalEntityUuid)}/cancel`,
4793
+ { method: "POST" }
4794
+ );
4795
+ }
4796
+ // ============================================================================
4797
+ // Legal entities (Twilio Secondary Customer Profiles)
4798
+ // ============================================================================
4799
+ /** List the org's legal entities (one Customer Profile each). */
4800
+ async listLegalEntities(orgUuid) {
4801
+ return this.fetch(`o/${orgUuid}/legal-entities`);
4802
+ }
4803
+ /** Create a legal entity. Its business profile is edited via the entity-scoped business-profile methods. */
4804
+ async createLegalEntity(orgUuid, data) {
4805
+ return this.fetch(`o/${orgUuid}/legal-entities`, {
4806
+ method: "POST",
4807
+ body: JSON.stringify(data)
4569
4808
  });
4570
4809
  }
4810
+ async getLegalEntity(orgUuid, legalEntityUuid) {
4811
+ return this.fetch(`o/${orgUuid}/legal-entities/${legalEntityUuid}`);
4812
+ }
4813
+ /**
4814
+ * Brand detail with live registration-workflow state (`workflowStatus`,
4815
+ * `pendingSampleMessages`) for the sample-approval step.
4816
+ */
4817
+ async getA2PBrand(orgUuid, brandUuid) {
4818
+ return this.fetch(`o/${orgUuid}/a2p-brands/${brandUuid}`);
4819
+ }
4571
4820
  /**
4572
4821
  * List the org's A2P brands (broker resources). The SMS-consent editor uses
4573
4822
  * this to pick which brand's consent config to edit.
@@ -4671,6 +4920,9 @@ var OrgApi = class extends BaseApiClient {
4671
4920
  );
4672
4921
  }
4673
4922
  };
4923
+ function businessProfilePath(orgUuid, legalEntityUuid) {
4924
+ return legalEntityUuid ? `o/${orgUuid}/legal-entities/${legalEntityUuid}/business-profile` : `o/${orgUuid}/business-profile`;
4925
+ }
4674
4926
 
4675
4927
  // src/api/oauth.ts
4676
4928
  function getOAuthPath(providerSlug, action) {
@@ -4743,6 +4995,14 @@ var OAuthApi = class extends BaseApiClient {
4743
4995
  };
4744
4996
 
4745
4997
  // src/api/phone-numbers.ts
4998
+ function appendAnalyticsFilters(params, filters) {
4999
+ if (!filters) return;
5000
+ if (filters.dateFrom) params.set("dateFrom", filters.dateFrom);
5001
+ if (filters.dateTo) params.set("dateTo", filters.dateTo);
5002
+ filters.terminationReason?.forEach((v) => params.append("terminationReason", v));
5003
+ filters.answeredBy?.forEach((v) => params.append("answeredBy", v));
5004
+ filters.memberLabel?.forEach((v) => params.append("memberLabel", v));
5005
+ }
4746
5006
  var PhoneNumbersApi = class extends BaseApiClient {
4747
5007
  /** List phone numbers in a workspace, optionally including archived. */
4748
5008
  async getPhoneNumbers(wid, options) {
@@ -4866,6 +5126,62 @@ var PhoneNumbersApi = class extends BaseApiClient {
4866
5126
  method: "POST"
4867
5127
  });
4868
5128
  }
5129
+ /**
5130
+ * Always-anonymized outbound-call analytics summary for one phone number.
5131
+ * No `analyticsSessionId` is sent — the summary carries no row-level PHI.
5132
+ */
5133
+ async getPhoneNumberOutboundAnalyticsSummary(wid, id, filters) {
5134
+ const params = new URLSearchParams();
5135
+ appendAnalyticsFilters(params, filters);
5136
+ const query = params.toString();
5137
+ return this.fetch(
5138
+ `w/${wid}/phone-numbers/${id}/analytics/summary${query ? `?${query}` : ""}`
5139
+ );
5140
+ }
5141
+ /**
5142
+ * One paginated page of outbound-call analytics detail rows. Anonymized by
5143
+ * default; `raw: true` requires the `export:admin` scope server-side and is
5144
+ * audited per response. `analyticsSessionId` keeps the callee pseudonyms
5145
+ * stable across pagination/sort within one browser session.
5146
+ */
5147
+ async getPhoneNumberOutboundAnalyticsCalls(wid, id, options) {
5148
+ const params = new URLSearchParams({
5149
+ analyticsSessionId: options.analyticsSessionId,
5150
+ page: String(options.page ?? 1),
5151
+ pageSize: String(options.pageSize ?? 50)
5152
+ });
5153
+ if (options.sort) params.set("sort", options.sort);
5154
+ if (options.sortDirection) params.set("sortDirection", options.sortDirection);
5155
+ if (options.raw) params.set("raw", "true");
5156
+ appendAnalyticsFilters(params, options.filters);
5157
+ return this.fetch(
5158
+ `w/${wid}/phone-numbers/${id}/analytics/calls?${params}`
5159
+ );
5160
+ }
5161
+ /**
5162
+ * Export outbound-call analytics as a CSV blob (respecting the current
5163
+ * filters + raw state). The server returns HTTP 400 when the result set
5164
+ * exceeds its export cap; that message is surfaced to the caller via
5165
+ * `ApiError` so the UI can toast it.
5166
+ */
5167
+ async exportPhoneNumberOutboundAnalyticsCsv(wid, id, options) {
5168
+ const params = new URLSearchParams({ analyticsSessionId: options.analyticsSessionId });
5169
+ if (options.sort) params.set("sort", options.sort);
5170
+ if (options.sortDirection) params.set("sortDirection", options.sortDirection);
5171
+ if (options.raw) params.set("raw", "true");
5172
+ appendAnalyticsFilters(params, options.filters);
5173
+ const response = await this.fetchRaw(
5174
+ `w/${wid}/phone-numbers/${id}/analytics/export?${params}`,
5175
+ {},
5176
+ [400]
5177
+ );
5178
+ if (!response.ok) {
5179
+ const data = await response.json().catch(() => ({}));
5180
+ const message = typeof data?.detail === "string" ? data.detail : "Failed to export analytics";
5181
+ throw new ApiError(message, response.status);
5182
+ }
5183
+ return response.blob();
5184
+ }
4869
5185
  };
4870
5186
 
4871
5187
  // src/api/pronunciations.ts
@@ -5204,6 +5520,20 @@ var ReportsApi = class extends BaseApiClient {
5204
5520
 
5205
5521
  // src/api/salesforce.ts
5206
5522
  var SalesforceApi = class extends BaseApiClient {
5523
+ /**
5524
+ * Create the Salesforce connection shell (no credentials yet).
5525
+ *
5526
+ * First step of the guided setup flow: provisions the connection row so
5527
+ * the admin lands on the detail page where the OAuth callback URL is
5528
+ * shown — which they need to register their Salesforce Connected App
5529
+ * before they have a Client ID / Secret to enter. Idempotent.
5530
+ */
5531
+ async installSalesforce(wid, data) {
5532
+ return this.fetch(`w/${wid}/app-connections/salesforce/install`, {
5533
+ method: "POST",
5534
+ body: JSON.stringify(data ?? {})
5535
+ });
5536
+ }
5207
5537
  async configureSalesforce(wid, data) {
5208
5538
  return this.fetch(
5209
5539
  `w/${wid}/app-connections/salesforce/configure`,
@@ -5405,6 +5735,20 @@ var ConnectionSyncApi = class extends BaseApiClient {
5405
5735
 
5406
5736
  // src/api/hubspot.ts
5407
5737
  var HubspotApi = class extends BaseApiClient {
5738
+ /**
5739
+ * Create the HubSpot connection shell (no credentials yet).
5740
+ *
5741
+ * First step of the guided setup flow: provisions the connection row so
5742
+ * the admin lands on the detail page where the OAuth callback URL is
5743
+ * shown — which they need to register their HubSpot app before they have
5744
+ * a Client ID / Secret to enter. Idempotent.
5745
+ */
5746
+ async installHubspot(wid) {
5747
+ return this.fetch(`w/${wid}/app-connections/hubspot/install`, {
5748
+ method: "POST",
5749
+ body: JSON.stringify({})
5750
+ });
5751
+ }
5408
5752
  async configureHubspot(wid, data) {
5409
5753
  return this.fetch(`w/${wid}/app-connections/hubspot/configure`, {
5410
5754
  method: "POST",
@@ -5679,19 +6023,28 @@ var SitesApi = class extends BaseApiClient {
5679
6023
  }
5680
6024
  );
5681
6025
  }
5682
- /** Verify a phone or email code and complete site authentication. */
6026
+ /**
6027
+ * Verify a phone or email code and complete site authentication.
6028
+ *
6029
+ * When the account has 2FA enrolled, the backend returns a temporary token
6030
+ * with ``requiresTwoFactor: true`` and this method does **not** mint full
6031
+ * session cookies — the caller must complete the 2FA challenge (same handoff
6032
+ * as public-site Google OAuth).
6033
+ */
5683
6034
  async siteVerifyCode(wid, siteUuid, code, phoneNumber, email) {
5684
6035
  const verifyResponse = await this.fetch(`s/${wid}/${siteUuid}/auth/verify`, {
5685
6036
  method: "POST",
5686
6037
  body: JSON.stringify({ code, phoneNumber, email })
5687
6038
  });
5688
- const completeResponse = await fetch(`/api/auth/complete`, {
5689
- method: "POST",
5690
- headers: { "Content-Type": "application/json" },
5691
- body: JSON.stringify({ token: verifyResponse.token })
5692
- });
5693
- if (!completeResponse.ok) {
5694
- throw new Error("Failed to complete authentication");
6039
+ if (!verifyResponse.requiresTwoFactor && verifyResponse.token) {
6040
+ const completeResponse = await fetch(`/api/auth/complete`, {
6041
+ method: "POST",
6042
+ headers: { "Content-Type": "application/json" },
6043
+ body: JSON.stringify({ token: verifyResponse.token })
6044
+ });
6045
+ if (!completeResponse.ok) {
6046
+ throw new Error("Failed to complete authentication");
6047
+ }
5695
6048
  }
5696
6049
  return verifyResponse;
5697
6050
  }
@@ -5862,11 +6215,11 @@ var SubscriptionsApi = class extends BaseApiClient {
5862
6215
  * customer, and subscription are created on payment by the checkout
5863
6216
  * completion handler.
5864
6217
  */
5865
- async createCheckoutSession(productId, planPeriod = "month") {
6218
+ async createCheckoutSession(productId, planPeriod = "month", options = {}) {
5866
6219
  return this.fetch(`subscriptions/checkout-session`, {
5867
6220
  method: "POST",
5868
6221
  credentials: "include",
5869
- body: JSON.stringify({ productId, planPeriod }),
6222
+ body: JSON.stringify({ productId, planPeriod, ...options }),
5870
6223
  headers: { "Content-Type": "application/json" }
5871
6224
  });
5872
6225
  }
@@ -5923,12 +6276,15 @@ var SubscriptionsApi = class extends BaseApiClient {
5923
6276
  return this.fetch(`subscriptions/${subscriptionId}/items`);
5924
6277
  }
5925
6278
  /** Purchase extra credits on a subscription (org-level). */
5926
- async purchaseCredits(subscriptionId, amountCents) {
6279
+ async purchaseCredits(subscriptionId, amountCents, idempotencyKey = crypto.randomUUID()) {
5927
6280
  return this.fetch(`subscriptions/${subscriptionId}/purchase-credits`, {
5928
6281
  method: "POST",
5929
6282
  credentials: "include",
5930
6283
  body: JSON.stringify({ amount_cents: amountCents }),
5931
- headers: { "Content-Type": "application/json" }
6284
+ headers: {
6285
+ "Content-Type": "application/json",
6286
+ "Idempotency-Key": idempotencyKey
6287
+ }
5932
6288
  });
5933
6289
  }
5934
6290
  };
@@ -6071,6 +6427,13 @@ var CustomersApi = class extends BaseApiClient {
6071
6427
  async getMyCustomerInvoices(uuid) {
6072
6428
  return this.fetch(`customers/${uuid}/invoices`);
6073
6429
  }
6430
+ async createMyCustomerPortalSession(uuid, returnUrl) {
6431
+ return this.fetch(`customers/${uuid}/stripe/portal-session`, {
6432
+ method: "POST",
6433
+ body: JSON.stringify({ returnUrl }),
6434
+ headers: { "Content-Type": "application/json" }
6435
+ });
6436
+ }
6074
6437
  async updateMyCustomer(uuid, data) {
6075
6438
  return this.fetch(`customers/${uuid}`, {
6076
6439
  method: "PUT",
@@ -6088,7 +6451,8 @@ var CustomersApi = class extends BaseApiClient {
6088
6451
  async attachMyCustomerPaymentMethod(uuid, paymentMethodId, setAsDefault = false) {
6089
6452
  return this.fetch(`customers/${uuid}/stripe/payment-methods/${paymentMethodId}/attach`, {
6090
6453
  method: "POST",
6091
- body: JSON.stringify({ setAsDefault })
6454
+ body: JSON.stringify({ setAsDefault }),
6455
+ headers: { "Content-Type": "application/json" }
6092
6456
  });
6093
6457
  }
6094
6458
  async detachMyCustomerPaymentMethod(uuid, paymentMethodId) {
@@ -6178,7 +6542,15 @@ var SupervisorsApi = class extends BaseApiClient {
6178
6542
 
6179
6543
  // src/api/tasks.ts
6180
6544
  var TasksApi = class extends BaseApiClient {
6181
- /** List all tasks in a workspace, optionally filtering by workflow or including archived. */
6545
+ /**
6546
+ * List all tasks in a workspace, optionally filtering by workflow or
6547
+ * including archived.
6548
+ *
6549
+ * `workflowId` is the STABLE workflow root id — the server resolves it to
6550
+ * that workflow's draft revision's tasks. `workflowRevisionId` filters an
6551
+ * explicit revision (the read-only published-revision view). Pass at most
6552
+ * one; passing both that disagree is a 400.
6553
+ */
6182
6554
  async getTasks(wid, options = {}) {
6183
6555
  const params = new URLSearchParams();
6184
6556
  if (options.includeArchived) {
@@ -6187,6 +6559,9 @@ var TasksApi = class extends BaseApiClient {
6187
6559
  if (options.workflowId) {
6188
6560
  params.append("workflow_id", options.workflowId.toString());
6189
6561
  }
6562
+ if (options.workflowRevisionId) {
6563
+ params.append("workflow_revision_id", options.workflowRevisionId.toString());
6564
+ }
6190
6565
  if (options.sortBy) {
6191
6566
  params.append("sortBy", options.sortBy);
6192
6567
  }
@@ -6541,11 +6916,18 @@ var JourneysApi = class extends BaseApiClient {
6541
6916
  // src/api/workflows.ts
6542
6917
  var WorkflowsApi = class extends BaseApiClient {
6543
6918
  /** List all workflows in a workspace, optionally including archived ones. */
6544
- async getWorkflows(wid, archived = false) {
6545
- const url = archived ? `w/${wid}/workflows?archived=true` : `w/${wid}/workflows`;
6546
- return this.fetch(url);
6919
+ async getWorkflows(wid, options = {}) {
6920
+ const params = new URLSearchParams();
6921
+ if (options.archived) params.set("archived", "true");
6922
+ if (options.page) params.set("page", String(options.page));
6923
+ if (options.pageSize) params.set("pageSize", String(options.pageSize));
6924
+ if (options.sortBy) params.set("sortBy", options.sortBy);
6925
+ if (options.sortOrder) params.set("sortOrder", options.sortOrder);
6926
+ if (options.search) params.set("search", options.search);
6927
+ const qs = params.toString();
6928
+ return this.fetch(`w/${wid}/workflows${qs ? `?${qs}` : ""}`);
6547
6929
  }
6548
- /** Get a single workflow by ID. */
6930
+ /** Get a single workflow by ID (root + draft + active-revision summary). */
6549
6931
  async getWorkflow(wid, id) {
6550
6932
  return this.fetch(`w/${wid}/workflows/${id}`);
6551
6933
  }
@@ -6593,7 +6975,7 @@ var WorkflowsApi = class extends BaseApiClient {
6593
6975
  body: JSON.stringify(workflow)
6594
6976
  });
6595
6977
  }
6596
- /** Update an existing workflow. */
6978
+ /** Update an existing workflow's draft revision. */
6597
6979
  async updateWorkflow(wid, id, workflow) {
6598
6980
  return this.fetch(`w/${wid}/workflows/${id}`, {
6599
6981
  method: "PUT",
@@ -6614,13 +6996,15 @@ var WorkflowsApi = class extends BaseApiClient {
6614
6996
  /** Archive a workflow. */
6615
6997
  async archiveWorkflow(wid, id) {
6616
6998
  return this.fetch(`w/${wid}/workflows/${id}/archive`, {
6617
- method: "POST"
6999
+ method: "POST",
7000
+ body: JSON.stringify({})
6618
7001
  });
6619
7002
  }
6620
7003
  /** Unarchive a previously archived workflow. */
6621
7004
  async unarchiveWorkflow(wid, id) {
6622
7005
  return this.fetch(`w/${wid}/workflows/${id}/unarchive`, {
6623
- method: "POST"
7006
+ method: "POST",
7007
+ body: JSON.stringify({})
6624
7008
  });
6625
7009
  }
6626
7010
  /** Clone a workflow with a new name. */
@@ -6636,16 +7020,20 @@ var WorkflowsApi = class extends BaseApiClient {
6636
7020
  }
6637
7021
  /** Create a new workflow from a template. */
6638
7022
  async createWorkflowFromTemplate(wid, templateUuid, data) {
6639
- return this.fetch(`w/${wid}/workflows/templates/${templateUuid}/create-workflow`, {
6640
- method: "POST",
6641
- body: JSON.stringify(data)
6642
- });
7023
+ return this.fetch(
7024
+ `w/${wid}/workflows/templates/${templateUuid}/create-workflow`,
7025
+ {
7026
+ method: "POST",
7027
+ body: JSON.stringify(data)
7028
+ }
7029
+ );
6643
7030
  }
6644
7031
  /** Get task assignment statistics for a workflow within an optional date range. */
6645
- async getWorkflowTaskAssignmentStats(wid, id, fromDate, toDate) {
7032
+ async getWorkflowTaskAssignmentStats(wid, id, fromDate, toDate, workflowRevisionId) {
6646
7033
  const params = new URLSearchParams();
6647
7034
  if (fromDate) params.append("from_date", fromDate);
6648
7035
  if (toDate) params.append("to_date", toDate);
7036
+ if (workflowRevisionId) params.append("workflowRevisionId", String(workflowRevisionId));
6649
7037
  return this.fetch(
6650
7038
  `w/${wid}/workflows/${id}/task-assignment-stats?${params.toString()}`
6651
7039
  );
@@ -6695,6 +7083,24 @@ var WorkflowsApi = class extends BaseApiClient {
6695
7083
  `w/${wid}/workflows/${workflowId}/route-dry-run?${params.toString()}`
6696
7084
  );
6697
7085
  }
7086
+ // Workflow Feedback API
7087
+ /**
7088
+ * List chat feedback for a workflow (thumbs ratings + explicit/extracted rows).
7089
+ * First consumer of the workspace-plane chat_feedback table.
7090
+ */
7091
+ async getWorkflowFeedback(wid, workflowId, options = {}) {
7092
+ const params = new URLSearchParams();
7093
+ if (options.page != null) params.set("page", String(options.page));
7094
+ if (options.pageSize != null) params.set("pageSize", String(options.pageSize));
7095
+ if (options.source) params.set("source", options.source);
7096
+ if (options.rating) params.set("rating", options.rating);
7097
+ if (options.authorKind) params.set("authorKind", options.authorKind);
7098
+ if (options.includeTest != null) params.set("includeTest", String(options.includeTest));
7099
+ const qs = params.toString();
7100
+ return this.fetch(
7101
+ `w/${wid}/workflows/${workflowId}/feedback${qs ? `?${qs}` : ""}`
7102
+ );
7103
+ }
6698
7104
  // Workflow Contributors API
6699
7105
  /** List all contributors for a workflow. */
6700
7106
  async getWorkflowContributors(wid, workflowId) {
@@ -6760,58 +7166,80 @@ var WorkflowsApi = class extends BaseApiClient {
6760
7166
  body: JSON.stringify({ name })
6761
7167
  });
6762
7168
  }
6763
- // Workflow Versions API
6764
- /** List all versions of a workflow. */
6765
- async getWorkflowVersions(wid, workflowUuid) {
6766
- return this.fetch(`w/${wid}/workflows/${workflowUuid}/versions`);
7169
+ /** List relational revisions for a workflow. */
7170
+ async getWorkflowRevisions(wid, workflowId) {
7171
+ return this.fetch(`w/${wid}/workflows/${workflowId}/revisions`);
6767
7172
  }
6768
- /** Get the active version of a workflow. */
6769
- async getWorkflowVersionActive(wid, workflowUuid) {
7173
+ /** Get full workflow details for one relational workflow revision. */
7174
+ async getWorkflowRevision(wid, workflowId, revisionId) {
6770
7175
  return this.fetch(
6771
- `w/${wid}/workflows/${workflowUuid}/versions/active`
7176
+ `w/${wid}/workflows/${workflowId}/revisions/${revisionId}`
6772
7177
  );
6773
7178
  }
6774
- /** Get a specific version of a workflow by version number. */
6775
- async getWorkflowVersion(wid, workflowUuid, versionNumber) {
6776
- return this.fetch(
6777
- `w/${wid}/workflows/${workflowUuid}/versions/${versionNumber}`
6778
- );
6779
- }
6780
- /** Publish the live workflow as a new immutable version. */
6781
- async publishWorkflowVersion(wid, workflowUuid, data) {
6782
- return this.fetch(`w/${wid}/workflows/${workflowUuid}/versions`, {
7179
+ /** Freeze the workflow's draft as a published revision and clone a fresh draft.
7180
+ *
7181
+ * By default the just-published revision becomes the active revision —
7182
+ * live traffic flips to it immediately. Pass `setActive: false` to
7183
+ * publish without flipping live traffic (advanced flow).
7184
+ */
7185
+ async publishWorkflowRevision(wid, workflowId, data = {}) {
7186
+ return this.fetch(`w/${wid}/workflows/${workflowId}/publish`, {
6783
7187
  method: "POST",
6784
7188
  body: JSON.stringify(data)
6785
7189
  });
6786
7190
  }
6787
- async updateWorkflowVersion(wid, workflowUuid, versionNumber, data) {
7191
+ /** Point the workflow's active pointer at a chosen revision (pointer flip only).
7192
+ *
7193
+ * The target may be any of the workflow's published revisions.
7194
+ * Activating the draft requires `allowDraft: true` and a UI warning
7195
+ * confirmation.
7196
+ */
7197
+ async activateWorkflowRevision(wid, workflowId, revisionId, data = {}) {
6788
7198
  return this.fetch(
6789
- `w/${wid}/workflows/${workflowUuid}/versions/${versionNumber}`,
6790
- { method: "PATCH", body: JSON.stringify(data) }
7199
+ `w/${wid}/workflows/${workflowId}/revisions/${revisionId}/activate`,
7200
+ {
7201
+ method: "POST",
7202
+ body: JSON.stringify(data)
7203
+ }
6791
7204
  );
6792
7205
  }
6793
- /** Activate a published version. */
6794
- async activateWorkflowVersion(wid, workflowUuid, versionNumber) {
7206
+ /** Update a revision's curation metadata (label + publish notes).
7207
+ *
7208
+ * Applies to both the draft and published revisions; it is not a graph
7209
+ * change, so it never marks the draft dirty.
7210
+ */
7211
+ async updateWorkflowRevisionMetadata(wid, workflowId, revisionId, data) {
6795
7212
  return this.fetch(
6796
- `w/${wid}/workflows/${workflowUuid}/versions/${versionNumber}/activate`,
7213
+ `w/${wid}/workflows/${workflowId}/revisions/${revisionId}`,
6797
7214
  {
6798
- method: "POST"
7215
+ method: "PATCH",
7216
+ body: JSON.stringify(data)
6799
7217
  }
6800
7218
  );
6801
7219
  }
6802
- /** Deactivate a published version. */
6803
- async deactivateWorkflowVersion(wid, workflowUuid, versionNumber) {
7220
+ /** Compare two revisions of the same workflow.
7221
+ *
7222
+ * `against` is a revision id or UUID; when omitted the diff compares the
7223
+ * named revision against the workflow's draft. Tasks are matched by
7224
+ * stable lineage, so a rename reads as a changed `name` field.
7225
+ */
7226
+ async diffWorkflowRevisions(wid, workflowId, revisionId, against) {
7227
+ const qs = against !== void 0 ? `?against=${encodeURIComponent(String(against))}` : "";
6804
7228
  return this.fetch(
6805
- `w/${wid}/workflows/${workflowUuid}/versions/${versionNumber}/deactivate`,
6806
- {
6807
- method: "POST"
6808
- }
7229
+ `w/${wid}/workflows/${workflowId}/revisions/${revisionId}/diff${qs}`
6809
7230
  );
6810
7231
  }
6811
- /** Compare two workflow versions (0 = draft). */
6812
- async diffWorkflowVersions(wid, workflowUuid, fromVersion, toVersion) {
7232
+ /** Branch a published revision into the workflow's draft ("edit this
7233
+ * revision"): the draft becomes a fresh clone of the named published
7234
+ * revision. Pass `discardDraftChanges` to replace a dirty draft.
7235
+ */
7236
+ async editWorkflowRevisionAsDraft(wid, workflowId, revisionId, data = {}) {
6813
7237
  return this.fetch(
6814
- `w/${wid}/workflows/${workflowUuid}/versions/diff?from=${fromVersion}&to=${toVersion}`
7238
+ `w/${wid}/workflows/${workflowId}/revisions/${revisionId}/edit`,
7239
+ {
7240
+ method: "POST",
7241
+ body: JSON.stringify(data)
7242
+ }
6815
7243
  );
6816
7244
  }
6817
7245
  };
@@ -6952,11 +7380,14 @@ var Scope = /* @__PURE__ */ ((Scope2) => {
6952
7380
  Scope2["ANALYTICS_READ"] = "analytics:read";
6953
7381
  Scope2["OPERATOR_READ"] = "operator:read";
6954
7382
  Scope2["OPERATOR_WRITE"] = "operator:write";
7383
+ Scope2["EXPORT_READ"] = "export:read";
7384
+ Scope2["EXPORT_WRITE"] = "export:write";
7385
+ Scope2["EXPORT_ADMIN"] = "export:admin";
6955
7386
  Scope2["ORG_INFO"] = "org:info";
6956
7387
  Scope2["ORG_READ"] = "org:read";
6957
7388
  Scope2["ORG_WRITE"] = "org:write";
6958
7389
  Scope2["ORG_ADMIN"] = "org:admin";
6959
- Scope2["ORG_BILLING"] = "org:billing";
7390
+ Scope2["ORG_MANAGE_ADMINS"] = "org:manage_admins";
6960
7391
  Scope2["ORG_DELETE"] = "org:delete";
6961
7392
  return Scope2;
6962
7393
  })(Scope || {});
@@ -7020,6 +7451,7 @@ var EventRuleObjectType = /* @__PURE__ */ ((EventRuleObjectType2) => {
7020
7451
  EventRuleObjectType2["CALENDAR_EVENT_TYPE"] = "calendar_event_type";
7021
7452
  EventRuleObjectType2["JOURNEY"] = "journey";
7022
7453
  EventRuleObjectType2["CALL"] = "call";
7454
+ EventRuleObjectType2["VOICEMAIL"] = "voicemail";
7023
7455
  return EventRuleObjectType2;
7024
7456
  })(EventRuleObjectType || {});
7025
7457
  var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
@@ -7031,6 +7463,7 @@ var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
7031
7463
  EventRuleEventType2["MEMBER_LEFT"] = "workspace:member_left";
7032
7464
  EventRuleEventType2["DATA_RECORD_CREATED"] = "data_record:created";
7033
7465
  EventRuleEventType2["DATA_RECORD_UPDATED"] = "data_record:updated";
7466
+ EventRuleEventType2["DATA_RECORD_CHANGED"] = "data_record:changed";
7034
7467
  EventRuleEventType2["CHAT_CREATED"] = "chat:created";
7035
7468
  EventRuleEventType2["CHAT_CALLBACK"] = "chat:callback";
7036
7469
  EventRuleEventType2["MEMBER_UPDATED"] = "member:updated";
@@ -7050,6 +7483,7 @@ var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
7050
7483
  EventRuleEventType2["CALL_STARTED"] = "call:started";
7051
7484
  EventRuleEventType2["CALL_COMPLETED"] = "call:completed";
7052
7485
  EventRuleEventType2["CALL_SUMMARY"] = "call:summary";
7486
+ EventRuleEventType2["VOICEMAIL_RECEIVED"] = "voicemail:received";
7053
7487
  return EventRuleEventType2;
7054
7488
  })(EventRuleEventType || {});
7055
7489
  var EventRuleActionType = /* @__PURE__ */ ((EventRuleActionType2) => {
@@ -7100,16 +7534,13 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
7100
7534
  WorkspaceFeature2["BROWSER"] = "browser";
7101
7535
  WorkspaceFeature2["WEB_SEARCH"] = "web_search";
7102
7536
  WorkspaceFeature2["CALENDAR"] = "calendar";
7103
- WorkspaceFeature2["DIRECT_MESSAGES"] = "direct_messages";
7104
7537
  WorkspaceFeature2["JOURNEYS"] = "journeys";
7105
7538
  WorkspaceFeature2["EXPERIMENTS"] = "experiments";
7106
7539
  WorkspaceFeature2["OPERATOR"] = "operator";
7107
- WorkspaceFeature2["PRESENCE"] = "presence";
7108
7540
  WorkspaceFeature2["GMAIL"] = "gmail";
7109
7541
  WorkspaceFeature2["GCALENDAR"] = "gcalendar";
7110
7542
  WorkspaceFeature2["MONDAY"] = "monday";
7111
7543
  WorkspaceFeature2["RESELL_PRODUCTS"] = "resell_products";
7112
- WorkspaceFeature2["HIPAA_COMPLIANCE"] = "hipaa_compliance";
7113
7544
  WorkspaceFeature2["SOC2_COMPLIANCE"] = "soc2_compliance";
7114
7545
  WorkspaceFeature2["EHR_FHIR"] = "ehr_fhir";
7115
7546
  WorkspaceFeature2["EHR_ECLINICALWORKS"] = "ehr_eclinicalworks";
@@ -7119,7 +7550,6 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
7119
7550
  WorkspaceFeature2["CONFLUENCE"] = "confluence";
7120
7551
  WorkspaceFeature2["AGENT_MEMORY"] = "agent_memory";
7121
7552
  WorkspaceFeature2["IMAGE_GENERATION"] = "image_generation";
7122
- WorkspaceFeature2["WORKFLOW_VERSIONING"] = "workflow_versioning";
7123
7553
  return WorkspaceFeature2;
7124
7554
  })(WorkspaceFeature || {});
7125
7555
  var MemberFeature = /* @__PURE__ */ ((MemberFeature2) => {
@@ -7133,7 +7563,6 @@ var MemberFeature = /* @__PURE__ */ ((MemberFeature2) => {
7133
7563
  var OrgFeature = /* @__PURE__ */ ((OrgFeature2) => {
7134
7564
  OrgFeature2["SSO"] = "sso";
7135
7565
  OrgFeature2["AUDIT_LOGS"] = "audit_logs";
7136
- OrgFeature2["HIPAA_COMPLIANCE"] = "hipaa_compliance";
7137
7566
  OrgFeature2["SOC2_COMPLIANCE"] = "soc2_compliance";
7138
7567
  OrgFeature2["CUSTOM_BRANDING"] = "custom_branding";
7139
7568
  OrgFeature2["PRIORITY_SUPPORT"] = "priority_support";
@@ -7288,8 +7717,15 @@ var AccessGrantResourceType = /* @__PURE__ */ ((AccessGrantResourceType2) => {
7288
7717
  AccessGrantResourceType2["SITE"] = "site";
7289
7718
  AccessGrantResourceType2["ASSIGNMENT"] = "assignment";
7290
7719
  AccessGrantResourceType2["APP_CONNECTION"] = "app_connection";
7720
+ AccessGrantResourceType2["CAPABILITY"] = "capability";
7291
7721
  return AccessGrantResourceType2;
7292
7722
  })(AccessGrantResourceType || {});
7723
+ var CapabilityClass = /* @__PURE__ */ ((CapabilityClass2) => {
7724
+ CapabilityClass2["TOOL_ALWAYS_ALLOW"] = "tool.always_allow";
7725
+ CapabilityClass2["SELF_MODIFICATION_SCHEDULE"] = "self_modification.schedule";
7726
+ CapabilityClass2["ATTENTION_INTERRUPT_RUNG"] = "attention.interrupt_rung";
7727
+ return CapabilityClass2;
7728
+ })(CapabilityClass || {});
7293
7729
  var AccessGrantStatus = /* @__PURE__ */ ((AccessGrantStatus2) => {
7294
7730
  AccessGrantStatus2["PENDING"] = "pending";
7295
7731
  AccessGrantStatus2["ACTIVE"] = "active";
@@ -7613,6 +8049,35 @@ var WorkspacesApi = class extends BaseApiClient {
7613
8049
  async getWorkspaceSiteDomains(wid) {
7614
8050
  return this.fetch(`w/${wid}/domains/for-site`);
7615
8051
  }
8052
+ /**
8053
+ * List org domains available for enabling embeddable widgets. Widgets ride
8054
+ * on domain-ownership verification only, so the consumer gates selection on
8055
+ * `ownershipStatus === 'verified'`.
8056
+ */
8057
+ async getWorkspaceWidgetDomains(wid) {
8058
+ return this.fetch(`w/${wid}/domains/for-widget`);
8059
+ }
8060
+ /** List this workspace's widget-domain enablement entries. */
8061
+ async listWidgetDomains(wid) {
8062
+ return this.fetch(`w/${wid}/widget-domains`);
8063
+ }
8064
+ /**
8065
+ * Enable/replace the set of widgets on one verified org domain. Idempotent
8066
+ * upsert keyed by `orgDomainUuid`; the server rejects unverified domains
8067
+ * (400) and cross-org domains (404).
8068
+ */
8069
+ async upsertWidgetDomain(wid, orgDomainUuid, body) {
8070
+ return this.fetch(`w/${wid}/widget-domains/${orgDomainUuid}`, {
8071
+ method: "PUT",
8072
+ body: JSON.stringify(body)
8073
+ });
8074
+ }
8075
+ /** Remove this workspace's widget entry for a domain (disables all widgets). */
8076
+ async deleteWidgetDomain(wid, orgDomainUuid) {
8077
+ await this.fetch(`w/${wid}/widget-domains/${orgDomainUuid}`, {
8078
+ method: "DELETE"
8079
+ });
8080
+ }
7616
8081
  /** List client workspaces managed by this reseller workspace, paginated. */
7617
8082
  async getResellerWorkspaces(wid, params) {
7618
8083
  const query = new URLSearchParams();
@@ -7772,7 +8237,7 @@ var WorkspacesApi = class extends BaseApiClient {
7772
8237
  /**
7773
8238
  * Get billing dashboard data for a workspace.
7774
8239
  *
7775
- * This endpoint is available to organization owners (with org:billing scope).
8240
+ * This endpoint is available to organization owners (with org:info scope).
7776
8241
  * Superusers should use the admin endpoint via getWorkspaceUsageDashboard.
7777
8242
  *
7778
8243
  * Returns comprehensive billing information including:
@@ -7786,6 +8251,51 @@ var WorkspacesApi = class extends BaseApiClient {
7786
8251
  }
7787
8252
  };
7788
8253
 
8254
+ // src/api/dashboards.ts
8255
+ var DashboardsApi = class extends BaseApiClient {
8256
+ /** List all dashboards for the workspace, in tab order. */
8257
+ async getDashboards(wid) {
8258
+ return this.fetch(`w/${wid}/dashboards`);
8259
+ }
8260
+ /** Get a dashboard by ID. */
8261
+ async getDashboard(wid, id) {
8262
+ return this.fetch(`w/${wid}/dashboards/${id}`);
8263
+ }
8264
+ /** Create a named dashboard, optionally with an initial widget list. */
8265
+ async createDashboard(wid, body) {
8266
+ return this.fetch(`w/${wid}/dashboards`, {
8267
+ method: "POST",
8268
+ body: JSON.stringify(body)
8269
+ });
8270
+ }
8271
+ /** Update a dashboard's name, position, or widget list (full replace). */
8272
+ async updateDashboard(wid, id, body) {
8273
+ return this.fetch(`w/${wid}/dashboards/${id}`, {
8274
+ method: "PATCH",
8275
+ body: JSON.stringify(body)
8276
+ });
8277
+ }
8278
+ /** Delete a dashboard. */
8279
+ async deleteDashboard(wid, id) {
8280
+ await this.fetch(`w/${wid}/dashboards/${id}`, { method: "DELETE" });
8281
+ }
8282
+ /** Per-channel chat volume in the window + live needs-response backlog. */
8283
+ async getDashboardChannelStats(wid, options) {
8284
+ const params = new URLSearchParams();
8285
+ if (options?.hours !== void 0) params.append("hours", options.hours.toString());
8286
+ const query = params.toString();
8287
+ return this.fetch(
8288
+ `w/${wid}/dashboards/stats/channels${query ? `?${query}` : ""}`
8289
+ );
8290
+ }
8291
+ /** Assignment status rollup per root workflow. */
8292
+ async getDashboardWorkflowAssignmentStats(wid) {
8293
+ return this.fetch(
8294
+ `w/${wid}/dashboards/stats/workflow-assignments`
8295
+ );
8296
+ }
8297
+ };
8298
+
7789
8299
  // src/api/teams-apps.ts
7790
8300
  var TeamsAppsApi = class extends BaseApiClient {
7791
8301
  /**
@@ -7960,6 +8470,25 @@ var PatientSyncConnectionsApi = class extends BaseApiClient {
7960
8470
  }
7961
8471
  };
7962
8472
 
8473
+ // src/api/motd.ts
8474
+ var MotdApi = class extends BaseApiClient {
8475
+ /**
8476
+ * The Message-of-the-Day tip for the workspace on a given date.
8477
+ *
8478
+ * `date` is an ISO `YYYY-MM-DD` string (defaults to today, UTC, when
8479
+ * omitted); `offset` advances the rotation ("show another"). Selection is
8480
+ * deterministic — same date + workspace + offset always returns the same
8481
+ * tip — and cycles through the tip list.
8482
+ */
8483
+ async getMotd(wid, options) {
8484
+ const params = new URLSearchParams();
8485
+ if (options?.date !== void 0) params.append("date", options.date);
8486
+ if (options?.offset !== void 0) params.append("offset", options.offset.toString());
8487
+ const query = params.toString();
8488
+ return this.fetch(`w/${wid}/motd${query ? `?${query}` : ""}`);
8489
+ }
8490
+ };
8491
+
7963
8492
  // src/app-context.ts
7964
8493
  function formatAppContextAsMarkdown(context) {
7965
8494
  if (!context) {
@@ -8043,6 +8572,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
8043
8572
  customers: new CustomersApi(apiKey, baseUrl, customFetch),
8044
8573
  resellers: new ResellersApi(apiKey, baseUrl, customFetch),
8045
8574
  customToolkits: new CustomToolkitsApi(apiKey, baseUrl, customFetch),
8575
+ dashboards: new DashboardsApi(apiKey, baseUrl, customFetch),
8046
8576
  dataTypes: new DataTypesApi(apiKey, baseUrl, customFetch),
8047
8577
  discordBots: new DiscordBotsApi(apiKey, baseUrl, customFetch),
8048
8578
  slackApps: new SlackAppsApi(apiKey, baseUrl, customFetch),
@@ -8063,6 +8593,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
8063
8593
  mcpServers: new McpServersApi(apiKey, baseUrl, customFetch),
8064
8594
  members: new MembersApi(apiKey, baseUrl, customFetch),
8065
8595
  milestones: new MilestonesApi(apiKey, baseUrl, customFetch),
8596
+ motd: new MotdApi(apiKey, baseUrl, customFetch),
8066
8597
  confluence: new ConfluenceApi(apiKey, baseUrl, customFetch),
8067
8598
  mondayIntegration: new MondayIntegrationApi(apiKey, baseUrl, customFetch),
8068
8599
  notificationRules: new NotificationRulesApi(apiKey, baseUrl, customFetch),
@@ -8095,7 +8626,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
8095
8626
 
8096
8627
  // src/client/workspace-client.ts
8097
8628
  var WORKSPACE_METHOD_NAMES = [
8098
- "activateWorkflowVersion",
8629
+ "activateWorkflowRevision",
8099
8630
  "addGroupMember",
8100
8631
  "advanceStep",
8101
8632
  "approveWorkspaceInvitation",
@@ -8158,6 +8689,7 @@ var WORKSPACE_METHOD_NAMES = [
8158
8689
  "createCustomTool",
8159
8690
  "createCustomToolkit",
8160
8691
  "createDataRecord",
8692
+ "createDataRecordFilter",
8161
8693
  "createDataType",
8162
8694
  "createDiscordBot",
8163
8695
  "createEventRule",
@@ -8165,7 +8697,6 @@ var WORKSPACE_METHOD_NAMES = [
8165
8697
  "createExperiment",
8166
8698
  "createExperimentAssignment",
8167
8699
  "createExperimentGroup",
8168
- "convertMemberFilterToQuery",
8169
8700
  "createFhirConnection",
8170
8701
  "createFile",
8171
8702
  "createFileLabel",
@@ -8205,7 +8736,6 @@ var WORKSPACE_METHOD_NAMES = [
8205
8736
  "createWorkflowOutboundVoiceChat",
8206
8737
  "createWorkspaceMember",
8207
8738
  "createWorkspaceSupportRequest",
8208
- "deactivateWorkflowVersion",
8209
8739
  "deleteAbility",
8210
8740
  "deleteAgent",
8211
8741
  "deleteAssignment",
@@ -8221,6 +8751,7 @@ var WORKSPACE_METHOD_NAMES = [
8221
8751
  "deleteCustomTool",
8222
8752
  "deleteCustomToolkit",
8223
8753
  "deleteDataRecord",
8754
+ "deleteDataRecordFilter",
8224
8755
  "deleteDataType",
8225
8756
  "deleteDiscordBot",
8226
8757
  "deleteEnrollment",
@@ -8263,6 +8794,7 @@ var WORKSPACE_METHOD_NAMES = [
8263
8794
  "deleteSupervisor",
8264
8795
  "deleteTask",
8265
8796
  "deleteTeamsApp",
8797
+ "deleteWidgetDomain",
8266
8798
  "deleteWorkflow",
8267
8799
  "deleteWorkflowContributor",
8268
8800
  "deleteWorkflowNote",
@@ -8270,7 +8802,7 @@ var WORKSPACE_METHOD_NAMES = [
8270
8802
  "deleteWorkspaceInvitationAdmin",
8271
8803
  "denyWorkspaceInvitation",
8272
8804
  "describeSalesforceObject",
8273
- "diffWorkflowVersions",
8805
+ "diffWorkflowRevisions",
8274
8806
  "disableConfluence",
8275
8807
  "disableCustomToolkit",
8276
8808
  "disableHubspot",
@@ -8286,6 +8818,7 @@ var WORKSPACE_METHOD_NAMES = [
8286
8818
  "dismissAllNotifications",
8287
8819
  "dismissNotification",
8288
8820
  "downloadEmailAttachment",
8821
+ "editWorkflowRevisionAsDraft",
8289
8822
  "enableConfluence",
8290
8823
  "enableCustomToolkit",
8291
8824
  "enableHubspot",
@@ -8364,6 +8897,7 @@ var WORKSPACE_METHOD_NAMES = [
8364
8897
  "getCalendarSchedules",
8365
8898
  "getCalendars",
8366
8899
  "getCelContext",
8900
+ "getCharlestonTestDeliveryRecipients",
8367
8901
  "getChat",
8368
8902
  "getChatAssignmentTasks",
8369
8903
  "getChatCallbacks",
@@ -8397,6 +8931,9 @@ var WORKSPACE_METHOD_NAMES = [
8397
8931
  "getCustomToolkits",
8398
8932
  "getDataRecord",
8399
8933
  "getDataRecordChanges",
8934
+ "getDataRecordFilter",
8935
+ "getDataRecordFilterCount",
8936
+ "getDataRecordFilters",
8400
8937
  "getDataRecords",
8401
8938
  "getDataType",
8402
8939
  "getDataTypeByUuid",
@@ -8420,16 +8957,20 @@ var WORKSPACE_METHOD_NAMES = [
8420
8957
  "getFhirConnections",
8421
8958
  "getFieldIndexStatus",
8422
8959
  "getFile",
8960
+ "resolveFilePath",
8423
8961
  "getFileLabel",
8424
8962
  "getFileLabelByUuid",
8425
8963
  "getFileLabels",
8426
8964
  "getFileSharing",
8965
+ "getFileVersionContentsUrl",
8966
+ "getFileVersionDiff",
8427
8967
  "getFiles",
8428
8968
  "getFirstRunState",
8429
8969
  "getFolder",
8430
8970
  "getFolderSharing",
8431
8971
  "getFolders",
8432
8972
  "getGoogleCalendarStatus",
8973
+ "getGranteeGrants",
8433
8974
  "getHealthieAvailableSlots",
8434
8975
  "getHealthieReconciliationMatches",
8435
8976
  "getHealthieStatus",
@@ -8475,6 +9016,7 @@ var WORKSPACE_METHOD_NAMES = [
8475
9016
  "getMemberLabelByUuid",
8476
9017
  "getMemberLabels",
8477
9018
  "getMemberMemories",
9019
+ "getMemberMemory",
8478
9020
  "getMemberRecordCounts",
8479
9021
  "getMemberRole",
8480
9022
  "getMemberRoleByUuid",
@@ -8523,6 +9065,7 @@ var WORKSPACE_METHOD_NAMES = [
8523
9065
  "getPublicProducts",
8524
9066
  "getQualification",
8525
9067
  "getQualifications",
9068
+ "getRecordingInfo",
8526
9069
  "getResellerWorkspaces",
8527
9070
  "getRoutine",
8528
9071
  "getRoutineRuns",
@@ -8577,17 +9120,17 @@ var WORKSPACE_METHOD_NAMES = [
8577
9120
  "getWorkflowAccessValidation",
8578
9121
  "getWorkflowActivity",
8579
9122
  "getWorkflowConfigValidation",
9123
+ "getWorkflowFeedback",
8580
9124
  "getWorkflowContributors",
8581
9125
  "getWorkflowDeletionPreview",
8582
9126
  "getWorkflowDiagram",
8583
9127
  "getWorkflowNotes",
9128
+ "getWorkflowRevision",
9129
+ "getWorkflowRevisions",
8584
9130
  "getWorkflowRouteDryRun",
8585
9131
  "getWorkflowTaskAssignmentStats",
8586
9132
  "getWorkflowTemplates",
8587
9133
  "getWorkflowThumbnailUrl",
8588
- "getWorkflowVersion",
8589
- "getWorkflowVersionActive",
8590
- "getWorkflowVersions",
8591
9134
  "getWorkflows",
8592
9135
  "getWorkflowsActivityBatch",
8593
9136
  "getWorkspace",
@@ -8601,6 +9144,7 @@ var WORKSPACE_METHOD_NAMES = [
8601
9144
  "getWorkspaceNotices",
8602
9145
  "getWorkspaceProduct",
8603
9146
  "getWorkspaceSiteDomains",
9147
+ "getWorkspaceWidgetDomains",
8604
9148
  "getWorkspaceSubscriptions",
8605
9149
  "getWorkspaceSupportRequest",
8606
9150
  "getWorkspaceThemes",
@@ -8612,6 +9156,9 @@ var WORKSPACE_METHOD_NAMES = [
8612
9156
  "initiateCall",
8613
9157
  "initiateOutboundCall",
8614
9158
  "inspectPrompt",
9159
+ "installHubspot",
9160
+ "installMondayConnection",
9161
+ "installSalesforce",
8615
9162
  "inviteMemberCredentialUpdate",
8616
9163
  "inviteToWorkspace",
8617
9164
  "leaveWorkspace",
@@ -8623,13 +9170,13 @@ var WORKSPACE_METHOD_NAMES = [
8623
9170
  "linkMemberToSalesforce",
8624
9171
  "linkPhoneNumber",
8625
9172
  "listAbilities",
8626
- "listAgentAbilities",
8627
9173
  "listAppConnections",
8628
9174
  "listAvailableAppConnections",
8629
9175
  "listConfluencePages",
8630
9176
  "listConfluenceSpaces",
8631
9177
  "listConnectionMemberFieldKeys",
8632
9178
  "setDefaultGooglePlatformAccount",
9179
+ "listFileVersions",
8633
9180
  "listGoogleCalendars",
8634
9181
  "listHealthieAppointmentTypes",
8635
9182
  "listHealthiePatients",
@@ -8639,6 +9186,7 @@ var WORKSPACE_METHOD_NAMES = [
8639
9186
  "listScenarios",
8640
9187
  "listSnippets",
8641
9188
  "listTestChatRuns",
9189
+ "listWidgetDomains",
8642
9190
  "listWorkspaceInvitationsAdmin",
8643
9191
  "listWorkspaceSupportRequests",
8644
9192
  "markEmailAsRead",
@@ -8646,14 +9194,16 @@ var WORKSPACE_METHOD_NAMES = [
8646
9194
  "markNotificationAsRead",
8647
9195
  "previewImportMembers",
8648
9196
  "previewImportWorkspace",
9197
+ "previewRoutineWorkflowAccess",
8649
9198
  "previewSchedule",
8650
9199
  "previewTTS",
8651
9200
  "previewTemplate",
8652
9201
  "previewThinkingSound",
8653
9202
  "previewWorkspaceImport",
8654
9203
  "provisionClientWorkspace",
8655
- "publishWorkflowVersion",
9204
+ "publishWorkflowRevision",
8656
9205
  "rateMessage",
9206
+ "getChatFeedback",
8657
9207
  "reenrollMember",
8658
9208
  "registerLinkedRolesMetadata",
8659
9209
  "registerPushSubscription",
@@ -8670,8 +9220,8 @@ var WORKSPACE_METHOD_NAMES = [
8670
9220
  "requestWorkspaceMembership",
8671
9221
  "resetRoutineRuns",
8672
9222
  "resolveAccessGrant",
8673
- "resolveAgentTools",
8674
9223
  "resolveAnonymousMember",
9224
+ "restoreFileVersion",
8675
9225
  "revokeAccessGrant",
8676
9226
  "revokeApiKey",
8677
9227
  "revokeICalToken",
@@ -8737,6 +9287,7 @@ var WORKSPACE_METHOD_NAMES = [
8737
9287
  "updateCustomTool",
8738
9288
  "updateCustomToolkit",
8739
9289
  "updateDataRecord",
9290
+ "updateDataRecordFilter",
8740
9291
  "updateDataType",
8741
9292
  "updateDiscordBot",
8742
9293
  "updateEventAttendee",
@@ -8789,12 +9340,13 @@ var WORKSPACE_METHOD_NAMES = [
8789
9340
  "updateWorkflow",
8790
9341
  "updateWorkflowContributor",
8791
9342
  "updateWorkflowNote",
8792
- "updateWorkflowVersion",
9343
+ "updateWorkflowRevisionMetadata",
8793
9344
  "updateWorkspace",
8794
9345
  "updateWorkspaceDefaults",
8795
9346
  "updateWorkspaceInvitationAdmin",
8796
9347
  "updateWorkspaceThemes",
8797
9348
  "upsertDataRecord",
9349
+ "upsertWidgetDomain",
8798
9350
  "validateDataTypeSlug",
8799
9351
  "validateWorkflowName"
8800
9352
  ];
@@ -8826,6 +9378,7 @@ function bindAccessGrantsMethods(target, accessGrants) {
8826
9378
  target.revokeAccessGrant = accessGrants.revokeAccessGrant.bind(accessGrants);
8827
9379
  target.getAccessGrants = accessGrants.getAccessGrants.bind(accessGrants);
8828
9380
  target.getMemberGrants = accessGrants.getMemberGrants.bind(accessGrants);
9381
+ target.getGranteeGrants = accessGrants.getGranteeGrants.bind(accessGrants);
8829
9382
  }
8830
9383
 
8831
9384
  // src/client/bindings/agent-tasks.ts
@@ -8845,8 +9398,6 @@ function bindAgentsMethods(target, agents) {
8845
9398
  target.deleteAgent = agents.deleteAgent.bind(agents);
8846
9399
  target.archiveAgent = agents.archiveAgent.bind(agents);
8847
9400
  target.unarchiveAgent = agents.unarchiveAgent.bind(agents);
8848
- target.resolveAgentTools = agents.resolveAgentTools.bind(agents);
8849
- target.listAgentAbilities = agents.listAgentAbilities.bind(agents);
8850
9401
  }
8851
9402
 
8852
9403
  // src/client/bindings/tasks.ts
@@ -8865,6 +9416,7 @@ function bindTasksMethods(target, tasks, abilities) {
8865
9416
  target.createAbility = abilities.createAbility.bind(abilities);
8866
9417
  target.updateAbility = abilities.updateAbility.bind(abilities);
8867
9418
  target.deleteAbility = abilities.deleteAbility.bind(abilities);
9419
+ target.getCharlestonTestDeliveryRecipients = abilities.getCharlestonTestDeliveryRecipients.bind(abilities);
8868
9420
  }
8869
9421
 
8870
9422
  // src/client/bindings/chats.ts
@@ -8885,6 +9437,8 @@ function bindChatsMethods(target, chats) {
8885
9437
  target.createWorkflowOutboundVoiceChat = chats.createWorkflowOutboundVoiceChat.bind(chats);
8886
9438
  target.deleteChat = chats.deleteChat.bind(chats);
8887
9439
  target.updateChat = chats.updateChat.bind(chats);
9440
+ target.getChatModelOverride = chats.getChatModelOverride.bind(chats);
9441
+ target.updateChatModelOverride = chats.updateChatModelOverride.bind(chats);
8888
9442
  target.updateChatMute = chats.updateChatMute.bind(chats);
8889
9443
  target.updateChatNeedsResponse = chats.updateChatNeedsResponse.bind(chats);
8890
9444
  target.summarizeChat = chats.summarizeChat.bind(chats);
@@ -8894,6 +9448,7 @@ function bindChatsMethods(target, chats) {
8894
9448
  target.initiateOutboundCall = chats.initiateOutboundCall.bind(chats);
8895
9449
  target.sendAssistantMessage = chats.sendAssistantMessage.bind(chats);
8896
9450
  target.rateMessage = chats.rateMessage.bind(chats);
9451
+ target.getChatFeedback = chats.getChatFeedback.bind(chats);
8897
9452
  target.getChatAssignmentTasks = chats.getChatAssignmentTasks.bind(chats);
8898
9453
  target.createChatCompletion = chats.createChatCompletion.bind(chats);
8899
9454
  target.exportChats = chats.exportChats.bind(chats);
@@ -8922,11 +9477,28 @@ function bindCallsMethods(target, calls, cel) {
8922
9477
  target.initiateCall = calls.initiateCall.bind(calls);
8923
9478
  target.getVoiceToken = calls.getVoiceToken.bind(calls);
8924
9479
  target.getMessageTiming = calls.getMessageTiming.bind(calls);
9480
+ target.getRecordingInfo = calls.getRecordingInfo.bind(calls);
8925
9481
  target.listChatRecordings = calls.listChatRecordings.bind(calls);
8926
9482
  target.getCallRecordingDownloadUrl = calls.getCallRecordingDownloadUrl.bind(calls);
8927
9483
  target.getCelContext = cel.getCelContext.bind(cel);
8928
9484
  }
8929
9485
 
9486
+ // src/client/bindings/dashboards.ts
9487
+ function bindDashboardsMethods(target, dashboards) {
9488
+ target.getDashboards = dashboards.getDashboards.bind(dashboards);
9489
+ target.getDashboard = dashboards.getDashboard.bind(dashboards);
9490
+ target.createDashboard = dashboards.createDashboard.bind(dashboards);
9491
+ target.updateDashboard = dashboards.updateDashboard.bind(dashboards);
9492
+ target.deleteDashboard = dashboards.deleteDashboard.bind(dashboards);
9493
+ target.getDashboardChannelStats = dashboards.getDashboardChannelStats.bind(dashboards);
9494
+ target.getDashboardWorkflowAssignmentStats = dashboards.getDashboardWorkflowAssignmentStats.bind(dashboards);
9495
+ }
9496
+
9497
+ // src/client/bindings/motd.ts
9498
+ function bindMotdMethods(target, motd) {
9499
+ target.getMotd = motd.getMotd.bind(motd);
9500
+ }
9501
+
8930
9502
  // src/client/bindings/data-types.ts
8931
9503
  function bindDataTypesMethods(target, dataTypes) {
8932
9504
  target.getDataTypes = dataTypes.getDataTypes.bind(dataTypes);
@@ -8950,6 +9522,12 @@ function bindDataTypesMethods(target, dataTypes) {
8950
9522
  target.getFieldIndexStatus = dataTypes.getFieldIndexStatus.bind(dataTypes);
8951
9523
  target.validateDataTypeSlug = dataTypes.validateDataTypeSlug.bind(dataTypes);
8952
9524
  target.getMemberRecordCounts = dataTypes.getMemberRecordCounts.bind(dataTypes);
9525
+ target.getDataRecordFilters = dataTypes.getDataRecordFilters.bind(dataTypes);
9526
+ target.getDataRecordFilter = dataTypes.getDataRecordFilter.bind(dataTypes);
9527
+ target.createDataRecordFilter = dataTypes.createDataRecordFilter.bind(dataTypes);
9528
+ target.updateDataRecordFilter = dataTypes.updateDataRecordFilter.bind(dataTypes);
9529
+ target.deleteDataRecordFilter = dataTypes.deleteDataRecordFilter.bind(dataTypes);
9530
+ target.getDataRecordFilterCount = dataTypes.getDataRecordFilterCount.bind(dataTypes);
8953
9531
  }
8954
9532
 
8955
9533
  // src/client/bindings/members.ts
@@ -8976,7 +9554,6 @@ function bindMembersMethods(target, members) {
8976
9554
  target.getMemberFilter = members.getMemberFilter.bind(members);
8977
9555
  target.createMemberFilter = members.createMemberFilter.bind(members);
8978
9556
  target.updateMemberFilter = members.updateMemberFilter.bind(members);
8979
- target.convertMemberFilterToQuery = members.convertMemberFilterToQuery.bind(members);
8980
9557
  target.deleteMemberFilter = members.deleteMemberFilter.bind(members);
8981
9558
  target.getMemberFilterCount = members.getMemberFilterCount.bind(members);
8982
9559
  target.getMemberLabels = members.getMemberLabels.bind(members);
@@ -9004,6 +9581,7 @@ function bindMembersMethods(target, members) {
9004
9581
  target.resolveAnonymousMember = members.resolveAnonymousMember.bind(members);
9005
9582
  target.expireAnonymousMember = members.expireAnonymousMember.bind(members);
9006
9583
  target.getMemberMemories = members.getMemberMemories.bind(members);
9584
+ target.getMemberMemory = members.getMemberMemory.bind(members);
9007
9585
  target.createMemberMemory = members.createMemberMemory.bind(members);
9008
9586
  target.deleteMemberMemory = members.deleteMemberMemory.bind(members);
9009
9587
  target.getMemberSyncLinks = members.getMemberSyncLinks.bind(members);
@@ -9061,6 +9639,10 @@ function bindWorkspacesMethods(target, workspaces, signupRequests) {
9061
9639
  target.listPushSubscriptions = workspaces.listPushSubscriptions.bind(workspaces);
9062
9640
  target.getWorkspaceEmailDomains = workspaces.getWorkspaceEmailDomains.bind(workspaces);
9063
9641
  target.getWorkspaceSiteDomains = workspaces.getWorkspaceSiteDomains.bind(workspaces);
9642
+ target.getWorkspaceWidgetDomains = workspaces.getWorkspaceWidgetDomains.bind(workspaces);
9643
+ target.listWidgetDomains = workspaces.listWidgetDomains.bind(workspaces);
9644
+ target.upsertWidgetDomain = workspaces.upsertWidgetDomain.bind(workspaces);
9645
+ target.deleteWidgetDomain = workspaces.deleteWidgetDomain.bind(workspaces);
9064
9646
  target.listWorkspaceInvitations = signupRequests.listWorkspaceInvitations.bind(signupRequests);
9065
9647
  target.listWorkspaceInvitationsAdmin = signupRequests.listWorkspaceInvitationsAdmin.bind(signupRequests);
9066
9648
  target.getWorkspaceInvitation = signupRequests.getWorkspaceInvitation.bind(signupRequests);
@@ -9080,6 +9662,7 @@ function bindWorkspacesMethods(target, workspaces, signupRequests) {
9080
9662
  function bindAuthMethods(target, auth, assignments) {
9081
9663
  target.getUserAccount = auth.getUserAccount.bind(auth);
9082
9664
  target.updateUserAccount = auth.updateUserAccount.bind(auth);
9665
+ target.recordAcquisition = auth.recordAcquisition.bind(auth);
9083
9666
  target.login = auth.login.bind(auth);
9084
9667
  target.resendCode = auth.resendCode.bind(auth);
9085
9668
  target.verifyCodeWith2FA = auth.verifyCodeWith2FA.bind(auth);
@@ -9190,6 +9773,11 @@ function bindFilesMethods(target, files) {
9190
9773
  target.uploadFile = files.uploadFile.bind(files);
9191
9774
  target.updateFile = files.updateFile.bind(files);
9192
9775
  target.deleteFile = files.deleteFile.bind(files);
9776
+ target.resolveFilePath = files.resolveFilePath.bind(files);
9777
+ target.listFileVersions = files.listFileVersions.bind(files);
9778
+ target.getFileVersionDiff = files.getFileVersionDiff.bind(files);
9779
+ target.restoreFileVersion = files.restoreFileVersion.bind(files);
9780
+ target.getFileVersionContentsUrl = files.getFileVersionContentsUrl.bind(files);
9193
9781
  target.convertFile = files.convertFile.bind(files);
9194
9782
  target.generateFileUploadUrl = files.generateFileUploadUrl.bind(files);
9195
9783
  target.getFolders = files.getFolders.bind(files);
@@ -9240,6 +9828,7 @@ function bindEventsMethods(target, events) {
9240
9828
  target.getRoutineRuns = events.getRoutineRuns.bind(events);
9241
9829
  target.resetRoutineRuns = events.resetRoutineRuns.bind(events);
9242
9830
  target.previewSchedule = events.previewSchedule.bind(events);
9831
+ target.previewRoutineWorkflowAccess = events.previewRoutineWorkflowAccess.bind(events);
9243
9832
  }
9244
9833
 
9245
9834
  // src/client/bindings/experiments.ts
@@ -9284,18 +9873,18 @@ function bindWorkflowsMethods(target, workflows, workflowNotes, voice, superviso
9284
9873
  target.createWorkflowNote = workflowNotes.createWorkflowNote.bind(workflowNotes);
9285
9874
  target.updateWorkflowNote = workflowNotes.updateWorkflowNote.bind(workflowNotes);
9286
9875
  target.deleteWorkflowNote = workflowNotes.deleteWorkflowNote.bind(workflowNotes);
9876
+ target.getWorkflowFeedback = workflows.getWorkflowFeedback.bind(workflows);
9287
9877
  target.getWorkflowContributors = workflows.getWorkflowContributors.bind(workflows);
9288
9878
  target.createWorkflowContributor = workflows.createWorkflowContributor.bind(workflows);
9289
9879
  target.updateWorkflowContributor = workflows.updateWorkflowContributor.bind(workflows);
9290
9880
  target.deleteWorkflowContributor = workflows.deleteWorkflowContributor.bind(workflows);
9291
- target.getWorkflowVersions = workflows.getWorkflowVersions.bind(workflows);
9292
- target.getWorkflowVersionActive = workflows.getWorkflowVersionActive.bind(workflows);
9293
- target.getWorkflowVersion = workflows.getWorkflowVersion.bind(workflows);
9294
- target.publishWorkflowVersion = workflows.publishWorkflowVersion.bind(workflows);
9295
- target.updateWorkflowVersion = workflows.updateWorkflowVersion.bind(workflows);
9296
- target.activateWorkflowVersion = workflows.activateWorkflowVersion.bind(workflows);
9297
- target.deactivateWorkflowVersion = workflows.deactivateWorkflowVersion.bind(workflows);
9298
- target.diffWorkflowVersions = workflows.diffWorkflowVersions.bind(workflows);
9881
+ target.getWorkflowRevisions = workflows.getWorkflowRevisions.bind(workflows);
9882
+ target.getWorkflowRevision = workflows.getWorkflowRevision.bind(workflows);
9883
+ target.publishWorkflowRevision = workflows.publishWorkflowRevision.bind(workflows);
9884
+ target.activateWorkflowRevision = workflows.activateWorkflowRevision.bind(workflows);
9885
+ target.updateWorkflowRevisionMetadata = workflows.updateWorkflowRevisionMetadata.bind(workflows);
9886
+ target.diffWorkflowRevisions = workflows.diffWorkflowRevisions.bind(workflows);
9887
+ target.editWorkflowRevisionAsDraft = workflows.editWorkflowRevisionAsDraft.bind(workflows);
9299
9888
  target.getWorkspaceBuilders = workflows.getWorkspaceBuilders.bind(workflows);
9300
9889
  target.getWorkspaceBuilder = workflows.getWorkspaceBuilder.bind(workflows);
9301
9890
  target.buildWorkspace = workflows.buildWorkspace.bind(workflows);
@@ -9360,6 +9949,9 @@ function bindCommunicationsMethods(target, phoneNumbers, inboxes, notificationRu
9360
9949
  target.getArchiveBlockers = phoneNumbers.getArchiveBlockers.bind(phoneNumbers);
9361
9950
  target.archivePhoneNumber = phoneNumbers.archivePhoneNumber.bind(phoneNumbers);
9362
9951
  target.getPhoneNumberCalls = phoneNumbers.getPhoneNumberCalls.bind(phoneNumbers);
9952
+ target.getPhoneNumberOutboundAnalyticsSummary = phoneNumbers.getPhoneNumberOutboundAnalyticsSummary.bind(phoneNumbers);
9953
+ target.getPhoneNumberOutboundAnalyticsCalls = phoneNumbers.getPhoneNumberOutboundAnalyticsCalls.bind(phoneNumbers);
9954
+ target.exportPhoneNumberOutboundAnalyticsCsv = phoneNumbers.exportPhoneNumberOutboundAnalyticsCsv.bind(phoneNumbers);
9363
9955
  target.getPhoneNumberMessages = phoneNumbers.getPhoneNumberMessages.bind(phoneNumbers);
9364
9956
  target.getPhoneNumberVoicemails = phoneNumbers.getPhoneNumberVoicemails.bind(phoneNumbers);
9365
9957
  target.fetchVoicemailAudio = phoneNumbers.fetchVoicemailAudio.bind(phoneNumbers);
@@ -9489,6 +10081,7 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
9489
10081
  target.getMondayBoardColumns = mondayIntegration.getBoardColumns.bind(mondayIntegration);
9490
10082
  target.getMondayBoardGroups = mondayIntegration.getBoardGroups.bind(mondayIntegration);
9491
10083
  target.getMondayCurrentUserInfo = mondayIntegration.getCurrentUserInfo.bind(mondayIntegration);
10084
+ target.installMondayConnection = mondayIntegration.installMondayConnection.bind(mondayIntegration);
9492
10085
  target.configureMondayConnection = mondayIntegration.configureMondayConnection.bind(mondayIntegration);
9493
10086
  target.getMondayConnectionStatus = mondayIntegration.getMondayConnectionStatus.bind(mondayIntegration);
9494
10087
  target.authorizeMondayConnection = mondayIntegration.authorizeMondayConnection.bind(mondayIntegration);
@@ -9523,6 +10116,8 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
9523
10116
  target.getDiscordBotAccounts = discordBots.getDiscordBotAccounts.bind(discordBots);
9524
10117
  target.getMyCredentials = discordBots.getMyCredentials.bind(discordBots);
9525
10118
  target.unlinkCredential = discordBots.unlinkCredential.bind(discordBots);
10119
+ target.completeDiscordLink = discordBots.completeDiscordLink.bind(discordBots);
10120
+ target.discordLinkPreflight = discordBots.discordLinkPreflight.bind(discordBots);
9526
10121
  target.getSlackApps = slackApps.getSlackApps.bind(slackApps);
9527
10122
  target.getSlackApp = slackApps.getSlackApp.bind(slackApps);
9528
10123
  target.createSlackApp = slackApps.createSlackApp.bind(slackApps);
@@ -9595,6 +10190,7 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
9595
10190
  target.deleteConfluence = confluence.deleteConfluence.bind(confluence);
9596
10191
  target.listConfluenceSpaces = confluence.listConfluenceSpaces.bind(confluence);
9597
10192
  target.listConfluencePages = confluence.listConfluencePages.bind(confluence);
10193
+ target.installSalesforce = salesforce.installSalesforce.bind(salesforce);
9598
10194
  target.configureSalesforce = salesforce.configureSalesforce.bind(salesforce);
9599
10195
  target.startSalesforceOAuth = salesforce.startSalesforceOAuth.bind(salesforce);
9600
10196
  target.getSalesforceStatus = salesforce.getSalesforceStatus.bind(salesforce);
@@ -9612,6 +10208,7 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
9612
10208
  target.describeSalesforceObject = salesforce.describeSalesforceObject.bind(salesforce);
9613
10209
  target.searchSalesforceRecords = salesforce.searchSalesforceRecords.bind(salesforce);
9614
10210
  target.importSalesforceMembers = salesforce.importSalesforceMembers.bind(salesforce);
10211
+ target.installHubspot = hubspot.installHubspot.bind(hubspot);
9615
10212
  target.configureHubspot = hubspot.configureHubspot.bind(hubspot);
9616
10213
  target.startHubspotOAuth = hubspot.startHubspotOAuth.bind(hubspot);
9617
10214
  target.getHubspotStatus = hubspot.getHubspotStatus.bind(hubspot);
@@ -9780,6 +10377,7 @@ function bindCustomersMethods(target, customers) {
9780
10377
  target.getMyCustomerAccounts = customers.getMyCustomerAccounts.bind(customers);
9781
10378
  target.getMyCustomerSubscriptions = customers.getMyCustomerSubscriptions.bind(customers);
9782
10379
  target.getMyCustomerInvoices = customers.getMyCustomerInvoices.bind(customers);
10380
+ target.createMyCustomerPortalSession = customers.createMyCustomerPortalSession.bind(customers);
9783
10381
  target.updateMyCustomer = customers.updateMyCustomer.bind(customers);
9784
10382
  target.createMyCustomerSetupIntent = customers.createMyCustomerSetupIntent.bind(customers);
9785
10383
  target.getMyCustomerPaymentMethods = customers.getMyCustomerPaymentMethods.bind(customers);
@@ -9844,6 +10442,7 @@ var GravityRailClient = class {
9844
10442
  createAbility;
9845
10443
  updateAbility;
9846
10444
  deleteAbility;
10445
+ getCharlestonTestDeliveryRecipients;
9847
10446
  // Chats API
9848
10447
  getChats;
9849
10448
  getChat;
@@ -9861,6 +10460,8 @@ var GravityRailClient = class {
9861
10460
  createWorkflowOutboundVoiceChat;
9862
10461
  deleteChat;
9863
10462
  updateChat;
10463
+ getChatModelOverride;
10464
+ updateChatModelOverride;
9864
10465
  updateChatMute;
9865
10466
  updateChatNeedsResponse;
9866
10467
  summarizeChat;
@@ -9870,6 +10471,7 @@ var GravityRailClient = class {
9870
10471
  initiateOutboundCall;
9871
10472
  sendAssistantMessage;
9872
10473
  rateMessage;
10474
+ getChatFeedback;
9873
10475
  getChatAssignmentTasks;
9874
10476
  createChatCompletion;
9875
10477
  exportChats;
@@ -9895,6 +10497,7 @@ var GravityRailClient = class {
9895
10497
  initiateCall;
9896
10498
  getVoiceToken;
9897
10499
  getMessageTiming;
10500
+ getRecordingInfo;
9898
10501
  listChatRecordings;
9899
10502
  getCallRecordingDownloadUrl;
9900
10503
  getCelContext;
@@ -9920,6 +10523,12 @@ var GravityRailClient = class {
9920
10523
  getFieldIndexStatus;
9921
10524
  validateDataTypeSlug;
9922
10525
  getMemberRecordCounts;
10526
+ getDataRecordFilters;
10527
+ getDataRecordFilter;
10528
+ createDataRecordFilter;
10529
+ updateDataRecordFilter;
10530
+ deleteDataRecordFilter;
10531
+ getDataRecordFilterCount;
9923
10532
  // Members API
9924
10533
  getCurrentMember;
9925
10534
  getOwnedMembers;
@@ -9943,7 +10552,6 @@ var GravityRailClient = class {
9943
10552
  getMemberFilter;
9944
10553
  createMemberFilter;
9945
10554
  updateMemberFilter;
9946
- convertMemberFilterToQuery;
9947
10555
  deleteMemberFilter;
9948
10556
  getMemberFilterCount;
9949
10557
  getMemberLabels;
@@ -9975,6 +10583,7 @@ var GravityRailClient = class {
9975
10583
  expireAnonymousMember;
9976
10584
  // Member Memories
9977
10585
  getMemberMemories;
10586
+ getMemberMemory;
9978
10587
  createMemberMemory;
9979
10588
  deleteMemberMemory;
9980
10589
  // Member Sync Links
@@ -9992,8 +10601,6 @@ var GravityRailClient = class {
9992
10601
  deleteAgent;
9993
10602
  archiveAgent;
9994
10603
  unarchiveAgent;
9995
- resolveAgentTools;
9996
- listAgentAbilities;
9997
10604
  // Qualifications API
9998
10605
  getQualifications;
9999
10606
  getQualification;
@@ -10019,6 +10626,16 @@ var GravityRailClient = class {
10019
10626
  createPersona;
10020
10627
  updatePersona;
10021
10628
  deletePersona;
10629
+ // Dashboards API
10630
+ getDashboards;
10631
+ getDashboard;
10632
+ createDashboard;
10633
+ updateDashboard;
10634
+ deleteDashboard;
10635
+ getDashboardChannelStats;
10636
+ getDashboardWorkflowAssignmentStats;
10637
+ // MOTD API
10638
+ getMotd;
10022
10639
  // Journeys API
10023
10640
  getJourneys;
10024
10641
  getJourney;
@@ -10086,6 +10703,7 @@ var GravityRailClient = class {
10086
10703
  revokeAccessGrant;
10087
10704
  getAccessGrants;
10088
10705
  getMemberGrants;
10706
+ getGranteeGrants;
10089
10707
  // Prompts API
10090
10708
  inspectPrompt;
10091
10709
  // Workspaces API
@@ -10135,6 +10753,10 @@ var GravityRailClient = class {
10135
10753
  getUsageDashboard;
10136
10754
  getWorkspaceEmailDomains;
10137
10755
  getWorkspaceSiteDomains;
10756
+ getWorkspaceWidgetDomains;
10757
+ listWidgetDomains;
10758
+ upsertWidgetDomain;
10759
+ deleteWidgetDomain;
10138
10760
  // Org API
10139
10761
  listOrgDomains;
10140
10762
  registerOrgDomain;
@@ -10175,6 +10797,7 @@ var GravityRailClient = class {
10175
10797
  // Auth API
10176
10798
  getUserAccount;
10177
10799
  updateUserAccount;
10800
+ recordAcquisition;
10178
10801
  login;
10179
10802
  resendCode;
10180
10803
  verifyCodeWith2FA;
@@ -10274,11 +10897,16 @@ var GravityRailClient = class {
10274
10897
  // Files API
10275
10898
  getFiles;
10276
10899
  getFile;
10900
+ resolveFilePath;
10277
10901
  downloadFilesZip;
10278
10902
  createFile;
10279
10903
  uploadFile;
10280
10904
  updateFile;
10281
10905
  deleteFile;
10906
+ listFileVersions;
10907
+ getFileVersionDiff;
10908
+ restoreFileVersion;
10909
+ getFileVersionContentsUrl;
10282
10910
  convertFile;
10283
10911
  generateFileUploadUrl;
10284
10912
  getFolders;
@@ -10327,6 +10955,7 @@ var GravityRailClient = class {
10327
10955
  getRoutineRuns;
10328
10956
  resetRoutineRuns;
10329
10957
  previewSchedule;
10958
+ previewRoutineWorkflowAccess;
10330
10959
  // Workflows API
10331
10960
  getWorkflows;
10332
10961
  getWorkflow;
@@ -10351,18 +10980,18 @@ var GravityRailClient = class {
10351
10980
  createWorkflowNote;
10352
10981
  updateWorkflowNote;
10353
10982
  deleteWorkflowNote;
10983
+ getWorkflowFeedback;
10354
10984
  getWorkflowContributors;
10355
10985
  createWorkflowContributor;
10356
10986
  updateWorkflowContributor;
10357
10987
  deleteWorkflowContributor;
10358
- getWorkflowVersions;
10359
- getWorkflowVersionActive;
10360
- getWorkflowVersion;
10361
- publishWorkflowVersion;
10362
- updateWorkflowVersion;
10363
- activateWorkflowVersion;
10364
- deactivateWorkflowVersion;
10365
- diffWorkflowVersions;
10988
+ getWorkflowRevisions;
10989
+ getWorkflowRevision;
10990
+ publishWorkflowRevision;
10991
+ activateWorkflowRevision;
10992
+ updateWorkflowRevisionMetadata;
10993
+ diffWorkflowRevisions;
10994
+ editWorkflowRevisionAsDraft;
10366
10995
  getWorkspaceBuilders;
10367
10996
  getWorkspaceBuilder;
10368
10997
  buildWorkspace;
@@ -10421,6 +11050,9 @@ var GravityRailClient = class {
10421
11050
  getArchiveBlockers;
10422
11051
  archivePhoneNumber;
10423
11052
  getPhoneNumberCalls;
11053
+ getPhoneNumberOutboundAnalyticsSummary;
11054
+ getPhoneNumberOutboundAnalyticsCalls;
11055
+ exportPhoneNumberOutboundAnalyticsCsv;
10424
11056
  getPhoneNumberMessages;
10425
11057
  getPhoneNumberVoicemails;
10426
11058
  fetchVoicemailAudio;
@@ -10539,6 +11171,7 @@ var GravityRailClient = class {
10539
11171
  getMondayBoardGroups;
10540
11172
  getMondayCurrentUserInfo;
10541
11173
  // Monday.com Connection API
11174
+ installMondayConnection;
10542
11175
  configureMondayConnection;
10543
11176
  getMondayConnectionStatus;
10544
11177
  authorizeMondayConnection;
@@ -10574,6 +11207,8 @@ var GravityRailClient = class {
10574
11207
  getDiscordBotAccounts;
10575
11208
  getMyCredentials;
10576
11209
  unlinkCredential;
11210
+ completeDiscordLink;
11211
+ discordLinkPreflight;
10577
11212
  // Slack Apps API
10578
11213
  getSlackApps;
10579
11214
  getSlackApp;
@@ -10652,6 +11287,7 @@ var GravityRailClient = class {
10652
11287
  listConfluenceSpaces;
10653
11288
  listConfluencePages;
10654
11289
  // Salesforce API
11290
+ installSalesforce;
10655
11291
  configureSalesforce;
10656
11292
  startSalesforceOAuth;
10657
11293
  getSalesforceStatus;
@@ -10670,6 +11306,7 @@ var GravityRailClient = class {
10670
11306
  searchSalesforceRecords;
10671
11307
  importSalesforceMembers;
10672
11308
  // HubSpot API
11309
+ installHubspot;
10673
11310
  configureHubspot;
10674
11311
  startHubspotOAuth;
10675
11312
  getHubspotStatus;
@@ -10727,6 +11364,7 @@ var GravityRailClient = class {
10727
11364
  getMyCustomerAccounts;
10728
11365
  getMyCustomerSubscriptions;
10729
11366
  getMyCustomerInvoices;
11367
+ createMyCustomerPortalSession;
10730
11368
  updateMyCustomer;
10731
11369
  createMyCustomerSetupIntent;
10732
11370
  getMyCustomerPaymentMethods;
@@ -10771,6 +11409,8 @@ var GravityRailClient = class {
10771
11409
  bindQualificationsMethods(this, apis.qualifications);
10772
11410
  bindPersonasMethods(this, apis.personas);
10773
11411
  bindQueriesMethods(this, apis.queries);
11412
+ bindDashboardsMethods(this, apis.dashboards);
11413
+ bindMotdMethods(this, apis.motd);
10774
11414
  bindJourneysMethods(this, apis.journeys);
10775
11415
  bindExperimentsMethods(this, apis.experiments);
10776
11416
  bindOperatorMethods(this, apis.operatorGroups);
@@ -10927,11 +11567,6 @@ var GravityRailClient = class {
10927
11567
  }
10928
11568
  };
10929
11569
 
10930
- // src/constants/models.ts
10931
- var DEFAULT_CHAT_MODEL = "aws:bedrock:claude-4-5-haiku";
10932
- var DEFAULT_VOICE_INFERENCE_MODEL = "google:vertex:gemini-3-flash";
10933
- var DEFAULT_CUSTOM_VOICE_MODEL = "elevenlabs:voice:river";
10934
-
10935
11570
  // src/types/ability-types.ts
10936
11571
  var AbilityTypeSlugs = {
10937
11572
  // Tools
@@ -11016,6 +11651,10 @@ var SMS_DELIVERY_FAILURE_STATUSES = /* @__PURE__ */ new Set([
11016
11651
  function isSMSDeliveryFailureStatus(status) {
11017
11652
  return status != null && SMS_DELIVERY_FAILURE_STATUSES.has(status);
11018
11653
  }
11654
+ var POSITIVE_RATING_THRESHOLD = 0.5;
11655
+ function isPositiveRating(rating) {
11656
+ return rating != null && rating >= POSITIVE_RATING_THRESHOLD;
11657
+ }
11019
11658
 
11020
11659
  // src/types/generated/organization.ts
11021
11660
  var BusinessIndustry = {
@@ -11059,6 +11698,11 @@ var BusinessType = {
11059
11698
  "Non-profit_Corporation": "Non-profit Corporation",
11060
11699
  Corporation: "Corporation"
11061
11700
  };
11701
+ var DeclaredDataUse = {
11702
+ unclassified: "unclassified",
11703
+ non_phi_only: "non_phi_only",
11704
+ phi_expected: "phi_expected"
11705
+ };
11062
11706
  var EmailDnsRecordType = {
11063
11707
  TXT: "TXT",
11064
11708
  CNAME: "CNAME",
@@ -11118,6 +11762,7 @@ var AbilityConfigIssueCode = {
11118
11762
  missing_resource: "missing_resource",
11119
11763
  invalid_state: "invalid_state",
11120
11764
  feature_disabled: "feature_disabled",
11765
+ missing_connection: "missing_connection",
11121
11766
  external_drift: "external_drift"
11122
11767
  };
11123
11768
  var AbilityConfigIssueSeverity = {
@@ -11131,6 +11776,9 @@ var WorkflowAccessWarningResourceType = {
11131
11776
  calendar: "calendar"
11132
11777
  };
11133
11778
 
11779
+ // src/types/widget-domain-types.ts
11780
+ var WIDGET_SLUGS = ["chat", "operator", "operator-tools", "chat-app"];
11781
+
11134
11782
  // src/features/registry.ts
11135
11783
  var FeatureCategory = /* @__PURE__ */ ((FeatureCategory2) => {
11136
11784
  FeatureCategory2["COMMUNICATION"] = "communication";
@@ -11254,6 +11902,11 @@ function isChatType(value) {
11254
11902
  return Object.values(CHAT_TYPES).includes(value);
11255
11903
  }
11256
11904
 
11905
+ // src/constants/models.ts
11906
+ var DEFAULT_CHAT_MODEL = "aws:bedrock:claude-4-5-haiku";
11907
+ var DEFAULT_VOICE_INFERENCE_MODEL = "google:vertex:gemini-3-flash";
11908
+ var DEFAULT_CUSTOM_VOICE_MODEL = "elevenlabs:voice:river";
11909
+
11257
11910
  // src/types/resource-metadata.ts
11258
11911
  var RESOURCE_METADATA = {
11259
11912
  ["credit" /* CREDIT */]: {
@@ -12034,6 +12687,19 @@ var SCOPE_PRESETS = {
12034
12687
  ALL: Object.keys(SCOPES)
12035
12688
  };
12036
12689
 
12690
+ // src/utils/revision-state.ts
12691
+ function getRevisionState(workflow, revision) {
12692
+ const draftIsLive = workflow.activeRevisionId === workflow.draftRevisionId;
12693
+ const hasUnpublishedChanges = workflow.draftModifiedAt != null;
12694
+ return {
12695
+ isActive: revision != null && revision.id === workflow.activeRevisionId,
12696
+ isDraft: revision != null && revision.id === workflow.draftRevisionId,
12697
+ draftIsLive,
12698
+ hasUnpublishedChanges,
12699
+ state: revision?.publishedAt != null ? "published" : "draft"
12700
+ };
12701
+ }
12702
+
12037
12703
  export {
12038
12704
  AbilitiesApi,
12039
12705
  AccessGrantsApi,
@@ -12156,6 +12822,7 @@ export {
12156
12822
  CriterionType,
12157
12823
  DriverMode,
12158
12824
  AccessGrantResourceType,
12825
+ CapabilityClass,
12159
12826
  AccessGrantStatus,
12160
12827
  AccessGrantTrigger,
12161
12828
  ConsentMethod,
@@ -12172,6 +12839,8 @@ export {
12172
12839
  bindTasksMethods,
12173
12840
  bindChatsMethods,
12174
12841
  bindCallsMethods,
12842
+ bindDashboardsMethods,
12843
+ bindMotdMethods,
12175
12844
  bindDataTypesMethods,
12176
12845
  bindMembersMethods,
12177
12846
  bindWorkspacesMethods,
@@ -12199,9 +12868,6 @@ export {
12199
12868
  bindPromptsMethods,
12200
12869
  bindSupportRequestMethods,
12201
12870
  GravityRailClient,
12202
- DEFAULT_CHAT_MODEL,
12203
- DEFAULT_VOICE_INFERENCE_MODEL,
12204
- DEFAULT_CUSTOM_VOICE_MODEL,
12205
12871
  AbilityTypeSlugs,
12206
12872
  DEFAULT_THINKING_SPEECH_PHRASES,
12207
12873
  getTTSProvider,
@@ -12211,8 +12877,11 @@ export {
12211
12877
  QUERY_VALUELESS_OPS,
12212
12878
  SMS_DELIVERY_FAILURE_STATUSES,
12213
12879
  isSMSDeliveryFailureStatus,
12880
+ POSITIVE_RATING_THRESHOLD,
12881
+ isPositiveRating,
12214
12882
  BusinessIndustry,
12215
12883
  BusinessType,
12884
+ DeclaredDataUse,
12216
12885
  EmailDnsRecordType,
12217
12886
  JobPosition,
12218
12887
  OIDCAdminConfigViewProviderType,
@@ -12223,6 +12892,7 @@ export {
12223
12892
  AbilityConfigIssueCode,
12224
12893
  AbilityConfigIssueSeverity,
12225
12894
  WorkflowAccessWarningResourceType,
12895
+ WIDGET_SLUGS,
12226
12896
  FeatureCategory,
12227
12897
  FeatureVisibility,
12228
12898
  initializeFeatures,
@@ -12243,6 +12913,9 @@ export {
12243
12913
  usesBuiltinAssistant,
12244
12914
  requiresAssistantParticipant,
12245
12915
  isChatType,
12916
+ DEFAULT_CHAT_MODEL,
12917
+ DEFAULT_VOICE_INFERENCE_MODEL,
12918
+ DEFAULT_CUSTOM_VOICE_MODEL,
12246
12919
  getResourceMetadata,
12247
12920
  getAllResourceSlugs,
12248
12921
  getScopeFromProductType,
@@ -12251,6 +12924,7 @@ export {
12251
12924
  ScopeCategory,
12252
12925
  SCOPES,
12253
12926
  ScopeManager,
12254
- SCOPE_PRESETS
12927
+ SCOPE_PRESETS,
12928
+ getRevisionState
12255
12929
  };
12256
- //# sourceMappingURL=chunk-2BJG4GYM.js.map
12930
+ //# sourceMappingURL=chunk-LODUVCW6.js.map