@gravity-rail/sdk 0.15.0 → 0.17.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 (42) hide show
  1. package/dist/agui.cjs +13 -1
  2. package/dist/agui.cjs.map +1 -1
  3. package/dist/agui.d.cts +5 -1
  4. package/dist/agui.d.ts +5 -1
  5. package/dist/agui.js +12 -1
  6. package/dist/agui.js.map +1 -1
  7. package/dist/{chunk-QTJQTTIR.js → chunk-CEFOCGYO.js} +521 -69
  8. package/dist/chunk-CEFOCGYO.js.map +1 -0
  9. package/dist/{chunk-GP6ICMWF.js → chunk-PJFEGUHM.js} +8 -1
  10. package/dist/chunk-PJFEGUHM.js.map +1 -0
  11. package/dist/{client-BLuz00Qr.d.cts → client-8xakCsVs.d.cts} +2245 -232
  12. package/dist/{client-CefA5Mxe.d.ts → client-ASnNEN1U.d.ts} +2245 -232
  13. package/dist/helpers.cjs +7 -0
  14. package/dist/helpers.cjs.map +1 -1
  15. package/dist/helpers.d.cts +2 -2
  16. package/dist/helpers.d.ts +2 -2
  17. package/dist/helpers.js +1 -1
  18. package/dist/index.cjs +898 -87
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.cts +182 -9
  21. package/dist/index.d.ts +182 -9
  22. package/dist/index.js +397 -23
  23. package/dist/index.js.map +1 -1
  24. package/dist/internal.cjs +607 -68
  25. package/dist/internal.cjs.map +1 -1
  26. package/dist/internal.d.cts +328 -7
  27. package/dist/internal.d.ts +328 -7
  28. package/dist/internal.js +86 -4
  29. package/dist/internal.js.map +1 -1
  30. package/dist/{revision-state-axZ62kJk.d.cts → revision-state-BDsQo_xD.d.cts} +4 -2
  31. package/dist/{revision-state-DL1ViZ57.d.ts → revision-state-Cz3mcUHc.d.ts} +4 -2
  32. package/dist/schemas.cjs +179 -217
  33. package/dist/schemas.cjs.map +1 -1
  34. package/dist/schemas.d.cts +2 -2
  35. package/dist/schemas.d.ts +2 -2
  36. package/dist/schemas.js +179 -210
  37. package/dist/schemas.js.map +1 -1
  38. package/dist/{tasks-Boi6AxGp.d.cts → tasks-Z4GcIqgO.d.cts} +200 -81
  39. package/dist/{tasks-Boi6AxGp.d.ts → tasks-Z4GcIqgO.d.ts} +200 -81
  40. package/package.json +3 -3
  41. package/dist/chunk-GP6ICMWF.js.map +0 -1
  42. package/dist/chunk-QTJQTTIR.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ApiError,
3
3
  BaseApiClient
4
- } from "./chunk-GP6ICMWF.js";
4
+ } from "./chunk-PJFEGUHM.js";
5
5
 
6
6
  // src/api/abilities.ts
7
7
  var AbilitiesApi = class extends BaseApiClient {
@@ -268,6 +268,18 @@ var AIModelsApi = class extends BaseApiClient {
268
268
  const url = queryString ? `ai-models/realtime?${queryString}` : "ai-models/realtime";
269
269
  return this.fetch(url);
270
270
  }
271
+ /**
272
+ * Get the voice presets offered by the simplified voice picker.
273
+ *
274
+ * A preset bundles a realtime speech-to-speech model with one of its native
275
+ * voices and the settings recommended alongside it, so choosing a voice is
276
+ * a single decision. Apply one by assigning its `config` wholesale; compare
277
+ * against it to tell a preset selection from a customised ("Custom") one.
278
+ * The full engine/voice/settings matrix lives on `getRealtimeModels`.
279
+ */
280
+ async getVoicePresets() {
281
+ return this.fetch("ai-models/voice-presets");
282
+ }
271
283
  /**
272
284
  * Get available voice models with metadata
273
285
  */
@@ -1397,6 +1409,10 @@ var ChatsApi = class extends BaseApiClient {
1397
1409
  `w/${wid}/chats/${chatId}/skills`
1398
1410
  );
1399
1411
  }
1412
+ /** List built-in skills selectable before a Manager Chat (and on Routine manager tasks). */
1413
+ async getManagerSkills(wid) {
1414
+ return this.fetch(`w/${wid}/chats/manager/skills`);
1415
+ }
1400
1416
  /** List chat IDs that need a response. */
1401
1417
  async getChatsNeedsResponse(wid) {
1402
1418
  return this.fetch(`w/${wid}/chats/needs-response`);
@@ -2805,9 +2821,9 @@ var DocumoFaxApi = class extends BaseApiClient {
2805
2821
  params?.status?.forEach((value) => query.append("status", value));
2806
2822
  if (params?.receivedAfter) query.set("receivedAfter", params.receivedAfter);
2807
2823
  if (params?.receivedBefore) query.set("receivedBefore", params.receivedBefore);
2808
- const suffix = query.toString() === "" ? "" : `?${query.toString()}`;
2824
+ const suffix2 = query.toString() === "" ? "" : `?${query.toString()}`;
2809
2825
  return this.fetch(
2810
- `w/${wid}/app-connections/documo-fax/faxes${suffix}`
2826
+ `w/${wid}/app-connections/documo-fax/faxes${suffix2}`
2811
2827
  );
2812
2828
  }
2813
2829
  /**
@@ -3881,12 +3897,34 @@ var MembersApi = class extends BaseApiClient {
3881
3897
  body: JSON.stringify(memberRole)
3882
3898
  });
3883
3899
  }
3884
- /** Delete a member role. */
3900
+ /** Delete a member role. Default roles (``systemKey`` set) return 403. */
3885
3901
  async deleteMemberRole(wid, id) {
3886
3902
  return this.fetch(`w/${wid}/member-roles/${id}`, {
3887
3903
  method: "DELETE"
3888
3904
  });
3889
3905
  }
3906
+ /**
3907
+ * Describe legacy duplicate default roles in this workspace. Read-only.
3908
+ *
3909
+ * Workspaces seeded by older versions of the product can carry the same
3910
+ * default role under several spellings ("manager" next to "Manager"). This
3911
+ * reports which ones should be merged and exactly how many members and
3912
+ * references each merge would move.
3913
+ */
3914
+ async getMemberRoleCleanupPlan(wid) {
3915
+ return this.fetch(`w/${wid}/member-roles/cleanup-plan`);
3916
+ }
3917
+ /**
3918
+ * Move every member and reference from one role to another, then delete the
3919
+ * source role. Requires `member_roles:admin`. The source cannot be a default
3920
+ * role.
3921
+ */
3922
+ async mergeMemberRoles(wid, request) {
3923
+ return this.fetch(`w/${wid}/member-roles/cleanup/merge`, {
3924
+ method: "POST",
3925
+ body: JSON.stringify(request)
3926
+ });
3927
+ }
3890
3928
  // Import/Export Members API
3891
3929
  /**
3892
3930
  * Read-only preview classifying each CSV row before any write (GRA-5545).
@@ -4189,46 +4227,6 @@ var MembersApi = class extends BaseApiClient {
4189
4227
  }
4190
4228
  };
4191
4229
 
4192
- // src/api/milestones.ts
4193
- var MilestonesApi = class extends BaseApiClient {
4194
- /** List milestones in a workspace with optional pagination and sorting. */
4195
- async getMilestones(wid, options = {}) {
4196
- const params = new URLSearchParams();
4197
- if (options.page) params.append("page", options.page.toString());
4198
- if (options.pageSize) params.append("pageSize", options.pageSize.toString());
4199
- if (options.sortBy) params.append("sortBy", options.sortBy);
4200
- if (options.sortOrder) params.append("sortOrder", options.sortOrder);
4201
- if (options.search) params.append("search", options.search);
4202
- return this.fetch(
4203
- `w/${wid}/milestones${params.toString() ? `?${params.toString()}` : ""}`
4204
- );
4205
- }
4206
- /** Get a single milestone by ID. */
4207
- async getMilestone(wid, id) {
4208
- return this.fetch(`w/${wid}/milestones/${id}`);
4209
- }
4210
- /** Create a new milestone in a workspace. */
4211
- async createMilestone(wid, milestone) {
4212
- return this.fetch(`w/${wid}/milestones`, {
4213
- method: "POST",
4214
- body: JSON.stringify(milestone)
4215
- });
4216
- }
4217
- /** Update an existing milestone with partial data. */
4218
- async updateMilestone(wid, id, milestone) {
4219
- return this.fetch(`w/${wid}/milestones/${id}`, {
4220
- method: "PUT",
4221
- body: JSON.stringify(milestone)
4222
- });
4223
- }
4224
- /** Delete a milestone by ID. */
4225
- async deleteMilestone(wid, id) {
4226
- return this.fetch(`w/${wid}/milestones/${id}`, {
4227
- method: "DELETE"
4228
- });
4229
- }
4230
- };
4231
-
4232
4230
  // src/api/monday.ts
4233
4231
  var MondayIntegrationApi = class extends BaseApiClient {
4234
4232
  /**
@@ -4518,6 +4516,41 @@ var OrgApi = class extends BaseApiClient {
4518
4516
  async getCurrentOrgMember(orgIdOrUuid) {
4519
4517
  return this.fetch(`o/${orgIdOrUuid}/me`);
4520
4518
  }
4519
+ /**
4520
+ * Update the settings an org admin owns: name, slug and contact details.
4521
+ *
4522
+ * Deliberately NOT the admin organization update — `primary` and
4523
+ * `enforceCreditLimit` are superuser-only and are not fields on this
4524
+ * endpoint's request model at all.
4525
+ */
4526
+ async updateOrganizationSettings(orgIdOrUuid, data) {
4527
+ return this.fetch(`o/${orgIdOrUuid}`, {
4528
+ method: "PATCH",
4529
+ body: JSON.stringify(data)
4530
+ });
4531
+ }
4532
+ /**
4533
+ * Read this organization's SSO configuration.
4534
+ *
4535
+ * Org-scoped (`org:admin`), unlike the SSO fields on the superuser admin
4536
+ * organization update — an org admin owns their own identity provider.
4537
+ */
4538
+ async getOrgSsoConfig(orgIdOrUuid) {
4539
+ return this.fetch(`o/${orgIdOrUuid}/sso`);
4540
+ }
4541
+ /** Configure this organization's SSO. Requires `org:admin`. */
4542
+ async updateOrgSsoConfig(orgIdOrUuid, data) {
4543
+ return this.fetch(`o/${orgIdOrUuid}/sso`, {
4544
+ method: "PUT",
4545
+ body: JSON.stringify(data)
4546
+ });
4547
+ }
4548
+ /** Remove this organization's SSO configuration. Requires `org:admin`. */
4549
+ async deleteOrgSsoConfig(orgIdOrUuid) {
4550
+ return this.fetch(`o/${orgIdOrUuid}/sso`, {
4551
+ method: "DELETE"
4552
+ });
4553
+ }
4521
4554
  /**
4522
4555
  * Get the billing customer UUID for an organization.
4523
4556
  */
@@ -4638,6 +4671,22 @@ var OrgApi = class extends BaseApiClient {
4638
4671
  async getOrganizationWorkspace(orgIdOrUuid, workspaceUuid) {
4639
4672
  return this.fetch(`o/${orgIdOrUuid}/workspaces/${workspaceUuid}`);
4640
4673
  }
4674
+ /**
4675
+ * Workspace cards for the organization page: identity plus the GLB-side
4676
+ * counts. Any org member may call it — members get the workspaces they
4677
+ * belong to, org:read holders get all of them.
4678
+ */
4679
+ async getOrganizationWorkspaceSummaries(orgIdOrUuid) {
4680
+ return this.fetch(`o/${orgIdOrUuid}/workspaces/summary`);
4681
+ }
4682
+ /**
4683
+ * Workspace-schema aggregates for one card, plus the caller's own member
4684
+ * role. Separate from the list because it opens a session against the
4685
+ * workspace's own schema — each card fetches its own.
4686
+ */
4687
+ async getOrganizationWorkspaceStats(orgIdOrUuid, workspaceUuid) {
4688
+ return this.fetch(`o/${orgIdOrUuid}/workspaces/${workspaceUuid}/stats`);
4689
+ }
4641
4690
  /**
4642
4691
  * Create a workspace in an organization.
4643
4692
  */
@@ -4862,15 +4911,19 @@ var OrgApi = class extends BaseApiClient {
4862
4911
  async getA2PStatus(orgUuid) {
4863
4912
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/status`);
4864
4913
  }
4914
+ /** Return fixed phone-number and outbound-messaging prices. */
4915
+ async getPhoneBillingPricing(orgUuid) {
4916
+ return this.fetch(`o/${orgUuid}/phone-numbers/pricing`);
4917
+ }
4865
4918
  /**
4866
4919
  * Start A2P brand registration under a legal entity. `legalEntityUuid`
4867
4920
  * is required — brands register per legal entity (Customer Profile);
4868
4921
  * there is no primary-entity fallback.
4869
4922
  */
4870
- async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandDescription) {
4923
+ async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandDescription, brandUuid = null) {
4871
4924
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/start`, {
4872
4925
  method: "POST",
4873
- body: JSON.stringify({ legalEntityUuid, brandName, brandDescription })
4926
+ body: JSON.stringify({ legalEntityUuid, brandName, brandDescription, brandUuid })
4874
4927
  });
4875
4928
  }
4876
4929
  /**
@@ -5076,14 +5129,34 @@ var OrgApi = class extends BaseApiClient {
5076
5129
  );
5077
5130
  }
5078
5131
  /**
5079
- * The brand-addressable enrollment form URL (carries `?brand=…`). Outreach
5080
- * appends each patient's `external_id`. `url` is null until a Site is linked.
5132
+ * The brand's enrollment-form template URL (carries `?brand=…`, no
5133
+ * credential). `url` is null until a Site is linked. Do not append a
5134
+ * patient identifier to this URL — use {@link mintA2PBrandEnrollmentLink}
5135
+ * to get a patient-ready link instead.
5081
5136
  */
5082
5137
  async getA2PBrandEnrollmentUrl(orgUuid, brandUuid) {
5083
5138
  return this.fetch(
5084
5139
  `o/${orgUuid}/a2p-brands/${brandUuid}/enrollment-url`
5085
5140
  );
5086
5141
  }
5142
+ /**
5143
+ * Mint a patient-ready enrollment link for one patient.
5144
+ *
5145
+ * The returned URL carries a fresh, expiring, single-use `?grant=…` bound to
5146
+ * the member that `externalId` resolves to. `externalId` (the patient's
5147
+ * CRM/EHR identifier) travels in the request body, never the query string,
5148
+ * so it stays out of access logs. When it matches no member, the
5149
+ * credential-free template URL is returned rather than an error.
5150
+ */
5151
+ async mintA2PBrandEnrollmentLink(orgUuid, brandUuid, externalId) {
5152
+ return this.fetch(
5153
+ `o/${orgUuid}/a2p-brands/${brandUuid}/enrollment-url`,
5154
+ {
5155
+ method: "POST",
5156
+ body: JSON.stringify({ externalId })
5157
+ }
5158
+ );
5159
+ }
5087
5160
  /**
5088
5161
  * List available member roles for a workspace in the organization.
5089
5162
  */
@@ -7685,6 +7758,12 @@ var MemberImportPreviewRowAction = {
7685
7758
  error: "error"
7686
7759
  };
7687
7760
 
7761
+ // src/types/generated/member_role.ts
7762
+ var MergeMemberRolesRequestAccessStrategy = {
7763
+ union: "union",
7764
+ target_only: "target_only"
7765
+ };
7766
+
7688
7767
  // src/types/member-types.ts
7689
7768
  var MemberType = /* @__PURE__ */ ((MemberType2) => {
7690
7769
  MemberType2["ANONYMOUS"] = "anonymous";
@@ -7693,6 +7772,37 @@ var MemberType = /* @__PURE__ */ ((MemberType2) => {
7693
7772
  MemberType2["AGENT"] = "agent";
7694
7773
  return MemberType2;
7695
7774
  })(MemberType || {});
7775
+ function structuredErrorDetail(error) {
7776
+ if (!error || typeof error !== "object") return null;
7777
+ const detail = error.errorData;
7778
+ if (!detail || typeof detail !== "object") return null;
7779
+ return detail;
7780
+ }
7781
+ function isMemberContactConflict(error) {
7782
+ const d = structuredErrorDetail(error);
7783
+ if (!d || d.code !== "MEMBER_CONTACT_CONFLICT") return null;
7784
+ if (d.conflictingMemberId !== null && typeof d.conflictingMemberId !== "number") {
7785
+ return null;
7786
+ }
7787
+ return d;
7788
+ }
7789
+ function isAccountContactConflict(error) {
7790
+ const d = structuredErrorDetail(error);
7791
+ if (!d || d.code !== "ACCOUNT_CONTACT_CONFLICT") return null;
7792
+ return d;
7793
+ }
7794
+ function archivedMemberConflictId(error) {
7795
+ const d = structuredErrorDetail(error);
7796
+ if (!d || d.code !== "ARCHIVED_MEMBER_CONFLICT") return null;
7797
+ return typeof d.archivedMemberId === "number" ? d.archivedMemberId : null;
7798
+ }
7799
+ function isIdentifiedMemberContactConflict(conflict) {
7800
+ return !!conflict && conflict.conflictingMemberId !== null;
7801
+ }
7802
+ function asIdentifiedMemberContactConflict(error) {
7803
+ const conflict = isMemberContactConflict(error);
7804
+ return isIdentifiedMemberContactConflict(conflict) ? conflict : null;
7805
+ }
7696
7806
 
7697
7807
  // src/types/mcp-server-types.ts
7698
7808
  var McpServerState = /* @__PURE__ */ ((McpServerState2) => {
@@ -7738,6 +7848,7 @@ var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
7738
7848
  EventRuleEventType2["DATA_RECORD_UPDATED"] = "data_record:updated";
7739
7849
  EventRuleEventType2["DATA_RECORD_CHANGED"] = "data_record:changed";
7740
7850
  EventRuleEventType2["CHAT_CREATED"] = "chat:created";
7851
+ EventRuleEventType2["CHAT_SUMMARY"] = "chat:summary";
7741
7852
  EventRuleEventType2["CHAT_CALLBACK"] = "chat:callback";
7742
7853
  EventRuleEventType2["MEMBER_UPDATED"] = "member:updated";
7743
7854
  EventRuleEventType2["ROUTINE_TRIGGERED"] = "routine:triggered";
@@ -8031,6 +8142,18 @@ var ConsentMethod = /* @__PURE__ */ ((ConsentMethod2) => {
8031
8142
  return ConsentMethod2;
8032
8143
  })(ConsentMethod || {});
8033
8144
 
8145
+ // src/types/config-health-types.ts
8146
+ var CONFIG_HEALTH_FACADE_CHECK_SLUGS = [
8147
+ "workflow.config",
8148
+ "journey.authoring",
8149
+ "workflow.access",
8150
+ "routine.workflow_access",
8151
+ "workspace.validation"
8152
+ ];
8153
+ function isConfigHealthFacadeCheckSlug(value) {
8154
+ return CONFIG_HEALTH_FACADE_CHECK_SLUGS.includes(value);
8155
+ }
8156
+
8034
8157
  // src/types/experiment-types.ts
8035
8158
  function parseExperimentStatCount(value) {
8036
8159
  return typeof value === "number" ? value : null;
@@ -8418,6 +8541,20 @@ var WorkspacesApi = class extends BaseApiClient {
8418
8541
  if (featured !== void 0) params.set("featured", String(featured));
8419
8542
  return this.fetch(`products?${params.toString()}`);
8420
8543
  }
8544
+ /**
8545
+ * Check whether a promo code is usable, without redeeming it.
8546
+ *
8547
+ * Reserves nothing, so it is safe to call as a form field settles. Redemption
8548
+ * happens server-side after checkout completes, when the organization and its
8549
+ * subscription exist.
8550
+ */
8551
+ async previewPromoCode(code, options) {
8552
+ return this.fetch("promo-codes/preview", {
8553
+ method: "POST",
8554
+ body: JSON.stringify({ code }),
8555
+ signal: options?.signal
8556
+ });
8557
+ }
8421
8558
  /** Get a publicly accessible product by ID. */
8422
8559
  async getPublicProduct(id) {
8423
8560
  return this.fetch(`products/${id}`);
@@ -8574,6 +8711,32 @@ var DashboardsApi = class extends BaseApiClient {
8574
8711
  `w/${wid}/dashboards/stats/workflow-assignments`
8575
8712
  );
8576
8713
  }
8714
+ /**
8715
+ * Current saved-configuration health across every family (Workflow
8716
+ * configuration, Journey authoring, Workflow access, Routine → Workflow
8717
+ * access, and the workspace lint).
8718
+ *
8719
+ * Requires ALL of `workflows:read`, `journeys:read`, `automations:read`,
8720
+ * `datatypes:read`, `members:read`, and `member_roles:read` — a pruned
8721
+ * subset would render as "all configuration is healthy".
8722
+ *
8723
+ * `page`/`pageSize` bound the response only; every family is evaluated in
8724
+ * full before the issue list is sliced. `check`/`severity` narrow the issue
8725
+ * list server-side, before pagination — filtering a single page in the
8726
+ * client cannot find a match that lives on a later one. `summary` and
8727
+ * `checks` are always workspace-global.
8728
+ */
8729
+ async getConfigurationHealth(wid, options) {
8730
+ const params = new URLSearchParams();
8731
+ if (options?.page !== void 0) params.append("page", options.page.toString());
8732
+ if (options?.pageSize !== void 0) params.append("pageSize", options.pageSize.toString());
8733
+ if (options?.check !== void 0) params.append("check", options.check);
8734
+ if (options?.severity !== void 0) params.append("severity", options.severity);
8735
+ const query = params.toString();
8736
+ return this.fetch(
8737
+ `w/${wid}/configuration-health${query ? `?${query}` : ""}`
8738
+ );
8739
+ }
8577
8740
  };
8578
8741
 
8579
8742
  // src/api/teams-apps.ts
@@ -8769,6 +8932,196 @@ var MotdApi = class extends BaseApiClient {
8769
8932
  }
8770
8933
  };
8771
8934
 
8935
+ // src/api/intervention-requests.ts
8936
+ var InterventionRequestsApi = class extends BaseApiClient {
8937
+ /** List intervention requests in a workspace, newest first. */
8938
+ async getInterventionRequests(wid, params = {}) {
8939
+ const query = new URLSearchParams();
8940
+ if (params.kind) query.set("kind", params.kind);
8941
+ if (params.openOnly) query.set("openOnly", "true");
8942
+ if (params.chatId !== void 0) query.set("chatId", String(params.chatId));
8943
+ if (params.unroutedOnly) query.set("unroutedOnly", "true");
8944
+ if (params.limit !== void 0) query.set("limit", String(params.limit));
8945
+ const qs = query.toString();
8946
+ return this.fetch(
8947
+ `w/${wid}/intervention-requests${qs ? `?${qs}` : ""}`
8948
+ );
8949
+ }
8950
+ };
8951
+
8952
+ // src/api/metrics.ts
8953
+ var MetricsApi = class extends BaseApiClient {
8954
+ /** List metric definitions in the workspace, paginated. */
8955
+ async listMetrics(wid, params) {
8956
+ const q = new URLSearchParams();
8957
+ if (params?.page !== void 0) q.set("page", String(params.page));
8958
+ if (params?.pageSize !== void 0) q.set("pageSize", String(params.pageSize));
8959
+ if (params?.includeArchived !== void 0)
8960
+ q.set("includeArchived", String(params.includeArchived));
8961
+ if (params?.source) q.set("source", params.source);
8962
+ const qs = q.toString() ? `?${q.toString()}` : "";
8963
+ return this.fetch(`w/${wid}/metrics${qs}`);
8964
+ }
8965
+ async getMetric(wid, id) {
8966
+ return this.fetch(`w/${wid}/metrics/${id}`);
8967
+ }
8968
+ async createMetric(wid, data) {
8969
+ return this.fetch(`w/${wid}/metrics`, {
8970
+ method: "POST",
8971
+ body: JSON.stringify(data)
8972
+ });
8973
+ }
8974
+ async updateMetric(wid, id, data) {
8975
+ return this.fetch(`w/${wid}/metrics/${id}`, {
8976
+ method: "PUT",
8977
+ body: JSON.stringify(data)
8978
+ });
8979
+ }
8980
+ /** Soft-archive a metric (observations retained). */
8981
+ async deleteMetric(wid, id) {
8982
+ return this.fetch(`w/${wid}/metrics/${id}`, { method: "DELETE" });
8983
+ }
8984
+ async listMetricObservations(wid, metricId, params) {
8985
+ const q = new URLSearchParams();
8986
+ q.set("start", params.start);
8987
+ q.set("end", params.end);
8988
+ if (params.page !== void 0) q.set("page", String(params.page));
8989
+ if (params.pageSize !== void 0) q.set("pageSize", String(params.pageSize));
8990
+ return this.fetch(
8991
+ `w/${wid}/metrics/${metricId}/observations?${q.toString()}`
8992
+ );
8993
+ }
8994
+ async getMetricSeries(wid, metricId, params) {
8995
+ const q = new URLSearchParams();
8996
+ q.set("start", params.start);
8997
+ q.set("end", params.end);
8998
+ if (params.bucket) q.set("bucket", params.bucket);
8999
+ if (params.aggregation) q.set("aggregation", params.aggregation);
9000
+ return this.fetch(
9001
+ `w/${wid}/metrics/${metricId}/series?${q.toString()}`
9002
+ );
9003
+ }
9004
+ /** On-demand compute of enabled chat-source metrics for one chat. */
9005
+ async computeChatMetrics(wid, data) {
9006
+ return this.fetch(`w/${wid}/metrics/compute-for-chat`, {
9007
+ method: "POST",
9008
+ body: JSON.stringify(data)
9009
+ });
9010
+ }
9011
+ };
9012
+
9013
+ // src/api/tracked-links.ts
9014
+ function withFilters(params, options) {
9015
+ if (options.dateFrom) params.append("dateFrom", options.dateFrom);
9016
+ if (options.dateTo) params.append("dateTo", options.dateTo);
9017
+ if (options.workflowId !== void 0) params.append("workflowId", String(options.workflowId));
9018
+ return params;
9019
+ }
9020
+ function suffix(params) {
9021
+ const query = params.toString();
9022
+ return query ? `?${query}` : "";
9023
+ }
9024
+ var TrackedLinksApi = class extends BaseApiClient {
9025
+ /** Header counters plus whether shortening is configured and enabled. */
9026
+ async getTrackedLinkSummary(wid, options = {}) {
9027
+ const params = withFilters(new URLSearchParams(), options);
9028
+ return this.fetch(
9029
+ `w/${wid}/tracked-links/summary${suffix(params)}`
9030
+ );
9031
+ }
9032
+ /**
9033
+ * Known destination URLs, most recent first. Powers the "Clicked link"
9034
+ * member-filter autocomplete, so it stays unaggregated and cheap.
9035
+ */
9036
+ async getTrackedLinkDestinations(wid, options = {}) {
9037
+ const params = new URLSearchParams();
9038
+ if (options.q) params.append("q", options.q);
9039
+ if (options.limit !== void 0) params.append("limit", String(options.limit));
9040
+ return this.fetch(
9041
+ `w/${wid}/tracked-links/destinations${suffix(params)}`
9042
+ );
9043
+ }
9044
+ /**
9045
+ * Register a destination an author can reference as `{{links.<key>}}`.
9046
+ *
9047
+ * The URL is deduplicated server-side, so registering one the workspace
9048
+ * already knows adopts that destination — including a row the retired
9049
+ * auto-harvest left unnamed, whose click history then carries forward
9050
+ * under the new key. Registering a URL that already has a *different* key
9051
+ * is a 409: renaming is what `updateTrackedLinkDestination` is for.
9052
+ *
9053
+ * Keys use the same grammar as snippet keys: lowercase letters, digits,
9054
+ * underscores and dots, starting with a letter (`intake_form`,
9055
+ * `docs.privacy`). No hyphens — Jinja2 reads `links.spring-2026` as
9056
+ * subtraction.
9057
+ */
9058
+ async createTrackedLinkDestination(wid, data) {
9059
+ return this.fetch(`w/${wid}/tracked-links/destinations`, {
9060
+ method: "POST",
9061
+ body: JSON.stringify(data)
9062
+ });
9063
+ }
9064
+ /**
9065
+ * Re-key or relabel a destination.
9066
+ *
9067
+ * Changing `key` breaks templates: `{{links.old}}` stops resolving and the
9068
+ * message ships without its link. Relabelling (`name`) is always safe.
9069
+ * Passing `key: null` releases the handle so another destination can take
9070
+ * it — the non-destructive alternative to deleting, which would take the
9071
+ * click history with it. The URL is not editable.
9072
+ */
9073
+ async updateTrackedLinkDestination(wid, destinationId, data) {
9074
+ return this.fetch(
9075
+ `w/${wid}/tracked-links/destinations/${destinationId}`,
9076
+ { method: "PUT", body: JSON.stringify(data) }
9077
+ );
9078
+ }
9079
+ /** Per-destination sent / clicks / unique clickers / CTR for the window. */
9080
+ async getTrackedLinkStats(wid, options = {}) {
9081
+ const params = withFilters(new URLSearchParams(), options);
9082
+ if (options.page !== void 0) params.append("page", String(options.page));
9083
+ if (options.pageSize !== void 0) params.append("pageSize", String(options.pageSize));
9084
+ if (options.q) params.append("q", options.q);
9085
+ if (options.sortBy) params.append("sortBy", options.sortBy);
9086
+ if (options.sortOrder) params.append("sortOrder", options.sortOrder);
9087
+ return this.fetch(
9088
+ `w/${wid}/tracked-links${suffix(params)}`
9089
+ );
9090
+ }
9091
+ /** Clicks over time for the current filter selection. */
9092
+ async getTrackedLinkTimeseries(wid, options = {}) {
9093
+ const params = withFilters(new URLSearchParams(), options);
9094
+ if (options.destinationId !== void 0) {
9095
+ params.append("destinationId", String(options.destinationId));
9096
+ }
9097
+ if (options.granularity) params.append("granularity", options.granularity);
9098
+ if (options.tz) params.append("tz", options.tz);
9099
+ return this.fetch(
9100
+ `w/${wid}/tracked-links/timeseries${suffix(params)}`
9101
+ );
9102
+ }
9103
+ /**
9104
+ * Delete one destination: its short links stop resolving and its recorded
9105
+ * clicks are removed.
9106
+ *
9107
+ * Turning the workspace setting off only stops NEW links being minted —
9108
+ * links already delivered to members keep working. This is the deliberate
9109
+ * way to break them.
9110
+ */
9111
+ async deleteTrackedLinkDestination(wid, destinationId) {
9112
+ return this.fetch(
9113
+ `w/${wid}/tracked-links/destinations/${destinationId}`,
9114
+ { method: "DELETE" }
9115
+ );
9116
+ }
9117
+ /** Delete every destination, its links, and its clicks. Irreversible. */
9118
+ async clearTrackedLinkDestinations(wid) {
9119
+ return this.fetch(`w/${wid}/tracked-links/destinations`, {
9120
+ method: "DELETE"
9121
+ });
9122
+ }
9123
+ };
9124
+
8772
9125
  // src/app-context.ts
8773
9126
  function formatAppContextAsMarkdown(context) {
8774
9127
  if (!context) {
@@ -8873,10 +9226,11 @@ function createApiModules(apiKey, baseUrl, customFetch) {
8873
9226
  connectionSync: new ConnectionSyncApi(apiKey, baseUrl, customFetch),
8874
9227
  mcpServers: new McpServersApi(apiKey, baseUrl, customFetch),
8875
9228
  members: new MembersApi(apiKey, baseUrl, customFetch),
8876
- milestones: new MilestonesApi(apiKey, baseUrl, customFetch),
8877
9229
  motd: new MotdApi(apiKey, baseUrl, customFetch),
9230
+ trackedLinks: new TrackedLinksApi(apiKey, baseUrl, customFetch),
8878
9231
  confluence: new ConfluenceApi(apiKey, baseUrl, customFetch),
8879
9232
  mondayIntegration: new MondayIntegrationApi(apiKey, baseUrl, customFetch),
9233
+ interventionRequests: new InterventionRequestsApi(apiKey, baseUrl, customFetch),
8880
9234
  notificationRules: new NotificationRulesApi(apiKey, baseUrl, customFetch),
8881
9235
  oauth: new OAuthApi(apiKey, baseUrl, customFetch),
8882
9236
  operatorGroups: new OperatorApi(apiKey, baseUrl, customFetch),
@@ -8886,6 +9240,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
8886
9240
  pronunciations: new PronunciationsApi(apiKey, baseUrl, customFetch),
8887
9241
  qualifications: new QualificationsApi(apiKey, baseUrl, customFetch),
8888
9242
  personas: new PersonasApi(apiKey, baseUrl, customFetch),
9243
+ metrics: new MetricsApi(apiKey, baseUrl, customFetch),
8889
9244
  queries: new QueriesApi(apiKey, baseUrl, customFetch),
8890
9245
  reports: new ReportsApi(apiKey, baseUrl, customFetch),
8891
9246
  salesforce: new SalesforceApi(apiKey, baseUrl, customFetch),
@@ -8940,6 +9295,7 @@ var WORKSPACE_METHOD_NAMES = [
8940
9295
  "checkSiteSlugAvailability",
8941
9296
  "clearConnectionMemberExclusion",
8942
9297
  "clearMemberSwitch",
9298
+ "clearTrackedLinkDestinations",
8943
9299
  "clickWorkspaceSupportRequestResource",
8944
9300
  "cloneDataType",
8945
9301
  "cloneTask",
@@ -8998,7 +9354,6 @@ var WORKSPACE_METHOD_NAMES = [
8998
9354
  "createMemberMemory",
8999
9355
  "createMemberRole",
9000
9356
  "createMenuItem",
9001
- "createMilestone",
9002
9357
  "createNotificationRule",
9003
9358
  "createOperatorGroup",
9004
9359
  "createPage",
@@ -9015,6 +9370,7 @@ var WORKSPACE_METHOD_NAMES = [
9015
9370
  "createSupervisor",
9016
9371
  "createTask",
9017
9372
  "createTeamsApp",
9373
+ "createTrackedLinkDestination",
9018
9374
  "createWorkflow",
9019
9375
  "createWorkflowContributor",
9020
9376
  "createWorkflowFromTemplate",
@@ -9064,7 +9420,6 @@ var WORKSPACE_METHOD_NAMES = [
9064
9420
  "deleteMemberMemory",
9065
9421
  "deleteMemberRole",
9066
9422
  "deleteMenuItem",
9067
- "deleteMilestone",
9068
9423
  "deleteMondayConnection",
9069
9424
  "deleteNotificationRule",
9070
9425
  "deleteOperatorGroup",
@@ -9080,6 +9435,7 @@ var WORKSPACE_METHOD_NAMES = [
9080
9435
  "deleteSupervisor",
9081
9436
  "deleteTask",
9082
9437
  "deleteTeamsApp",
9438
+ "deleteTrackedLinkDestination",
9083
9439
  "deleteWidgetDomain",
9084
9440
  "deleteWorkflow",
9085
9441
  "deleteWorkflowContributor",
@@ -9204,6 +9560,7 @@ var WORKSPACE_METHOD_NAMES = [
9204
9560
  "getChatModelOverride",
9205
9561
  "getChatPhoneCalls",
9206
9562
  "getChatSkills",
9563
+ "getManagerSkills",
9207
9564
  "getChatTodos",
9208
9565
  "getChatTokenUsage",
9209
9566
  "getChatToolCallMessages",
@@ -9213,6 +9570,7 @@ var WORKSPACE_METHOD_NAMES = [
9213
9570
  "getChatsNeedsResponse",
9214
9571
  "getChildThreadMessages",
9215
9572
  "getClientWorkspace",
9573
+ "getConfigurationHealth",
9216
9574
  "getConfluenceStatus",
9217
9575
  "getConnectionSyncCapabilities",
9218
9576
  "getConnectionSyncCheckpoint",
@@ -9339,6 +9697,7 @@ var WORKSPACE_METHOD_NAMES = [
9339
9697
  "getMemberMemory",
9340
9698
  "getMemberRecordCounts",
9341
9699
  "getMemberRole",
9700
+ "getMemberRoleCleanupPlan",
9342
9701
  "getMemberRoleByUuid",
9343
9702
  "getMemberRoles",
9344
9703
  "getMemberSyncLinks",
@@ -9347,8 +9706,6 @@ var WORKSPACE_METHOD_NAMES = [
9347
9706
  "getMembersMessageActivity",
9348
9707
  "getMenuItems",
9349
9708
  "getMessageTiming",
9350
- "getMilestone",
9351
- "getMilestones",
9352
9709
  "getMondayConnectionBoardColumns",
9353
9710
  "getMondayConnectionBoardGroups",
9354
9711
  "getMondayConnectionBoards",
@@ -9384,6 +9741,7 @@ var WORKSPACE_METHOD_NAMES = [
9384
9741
  "getPublicFolder",
9385
9742
  "getPublicFolderFiles",
9386
9743
  "getPublicProducts",
9744
+ "previewPromoCode",
9387
9745
  "getQualification",
9388
9746
  "getQualifications",
9389
9747
  "getRecordingInfo",
@@ -9430,6 +9788,10 @@ var WORKSPACE_METHOD_NAMES = [
9430
9788
  "getTool",
9431
9789
  "getToolCallNames",
9432
9790
  "getToolkits",
9791
+ "getTrackedLinkDestinations",
9792
+ "getTrackedLinkStats",
9793
+ "getTrackedLinkSummary",
9794
+ "getTrackedLinkTimeseries",
9433
9795
  "getUnreadNotificationCount",
9434
9796
  "getUsageDashboard",
9435
9797
  "getVariableRegistry",
@@ -9506,6 +9868,14 @@ var WORKSPACE_METHOD_NAMES = [
9506
9868
  "listHealthiePatients",
9507
9869
  "listHealthieProviders",
9508
9870
  "listPersonas",
9871
+ "listMetrics",
9872
+ "getMetric",
9873
+ "createMetric",
9874
+ "updateMetric",
9875
+ "deleteMetric",
9876
+ "listMetricObservations",
9877
+ "getMetricSeries",
9878
+ "computeChatMetrics",
9509
9879
  "listPushSubscriptions",
9510
9880
  "listSalesforceObjects",
9511
9881
  "listScenarios",
@@ -9516,6 +9886,7 @@ var WORKSPACE_METHOD_NAMES = [
9516
9886
  "markEmailAsRead",
9517
9887
  "markEmailAsUnread",
9518
9888
  "markNotificationAsRead",
9889
+ "mergeMemberRoles",
9519
9890
  "previewImportMembers",
9520
9891
  "previewImportWorkspace",
9521
9892
  "previewRoutineWorkflowAccess",
@@ -9644,7 +10015,6 @@ var WORKSPACE_METHOD_NAMES = [
9644
10015
  "updateMemberLabel",
9645
10016
  "updateMemberRole",
9646
10017
  "updateMenuItem",
9647
- "updateMilestone",
9648
10018
  "updateMondaySyncConfig",
9649
10019
  "updateNotificationRule",
9650
10020
  "updateOperatorGroup",
@@ -9664,6 +10034,7 @@ var WORKSPACE_METHOD_NAMES = [
9664
10034
  "updateTask",
9665
10035
  "updateTeamsApp",
9666
10036
  "updateThemeSettings",
10037
+ "updateTrackedLinkDestination",
9667
10038
  "uploadFile",
9668
10039
  "updateVoicemailStatus",
9669
10040
  "updateWorkflow",
@@ -9761,6 +10132,7 @@ function bindChatsMethods(target, chats) {
9761
10132
  target.getChatTokenUsage = chats.getChatTokenUsage.bind(chats);
9762
10133
  target.getChatTodos = chats.getChatTodos.bind(chats);
9763
10134
  target.getChatSkills = chats.getChatSkills.bind(chats);
10135
+ target.getManagerSkills = chats.getManagerSkills.bind(chats);
9764
10136
  target.getChatsNeedsResponse = chats.getChatsNeedsResponse.bind(chats);
9765
10137
  target.getChatsDailyCreationStats = chats.getChatsDailyCreationStats.bind(chats);
9766
10138
  target.getToolCallNames = chats.getToolCallNames.bind(chats);
@@ -9827,6 +10199,7 @@ function bindDashboardsMethods(target, dashboards) {
9827
10199
  target.deleteDashboard = dashboards.deleteDashboard.bind(dashboards);
9828
10200
  target.getDashboardChannelStats = dashboards.getDashboardChannelStats.bind(dashboards);
9829
10201
  target.getDashboardWorkflowAssignmentStats = dashboards.getDashboardWorkflowAssignmentStats.bind(dashboards);
10202
+ target.getConfigurationHealth = dashboards.getConfigurationHealth.bind(dashboards);
9830
10203
  }
9831
10204
 
9832
10205
  // src/client/bindings/motd.ts
@@ -9834,6 +10207,18 @@ function bindMotdMethods(target, motd) {
9834
10207
  target.getMotd = motd.getMotd.bind(motd);
9835
10208
  }
9836
10209
 
10210
+ // src/client/bindings/tracked-links.ts
10211
+ function bindTrackedLinksMethods(target, trackedLinks) {
10212
+ target.getTrackedLinkSummary = trackedLinks.getTrackedLinkSummary.bind(trackedLinks);
10213
+ target.getTrackedLinkDestinations = trackedLinks.getTrackedLinkDestinations.bind(trackedLinks);
10214
+ target.getTrackedLinkStats = trackedLinks.getTrackedLinkStats.bind(trackedLinks);
10215
+ target.getTrackedLinkTimeseries = trackedLinks.getTrackedLinkTimeseries.bind(trackedLinks);
10216
+ target.createTrackedLinkDestination = trackedLinks.createTrackedLinkDestination.bind(trackedLinks);
10217
+ target.updateTrackedLinkDestination = trackedLinks.updateTrackedLinkDestination.bind(trackedLinks);
10218
+ target.deleteTrackedLinkDestination = trackedLinks.deleteTrackedLinkDestination.bind(trackedLinks);
10219
+ target.clearTrackedLinkDestinations = trackedLinks.clearTrackedLinkDestinations.bind(trackedLinks);
10220
+ }
10221
+
9837
10222
  // src/client/bindings/data-types.ts
9838
10223
  function bindDataTypesMethods(target, dataTypes) {
9839
10224
  target.getDataTypes = dataTypes.getDataTypes.bind(dataTypes);
@@ -10235,7 +10620,7 @@ function bindWorkflowsMethods(target, workflows, workflowNotes, voice, superviso
10235
10620
  }
10236
10621
 
10237
10622
  // src/client/bindings/calendars.ts
10238
- function bindCalendarsMethods(target, calendars, milestones) {
10623
+ function bindCalendarsMethods(target, calendars) {
10239
10624
  target.getCalendars = calendars.getCalendars.bind(calendars);
10240
10625
  target.getCalendar = calendars.getCalendar.bind(calendars);
10241
10626
  target.createCalendar = calendars.createCalendar.bind(calendars);
@@ -10267,11 +10652,6 @@ function bindCalendarsMethods(target, calendars, milestones) {
10267
10652
  target.linkCalendarToGoogle = calendars.linkCalendarToGoogle.bind(calendars);
10268
10653
  target.unlinkCalendarFromGoogle = calendars.unlinkCalendarFromGoogle.bind(calendars);
10269
10654
  target.syncCalendarWithGoogle = calendars.syncCalendarWithGoogle.bind(calendars);
10270
- target.getMilestones = milestones.getMilestones.bind(milestones);
10271
- target.getMilestone = milestones.getMilestone.bind(milestones);
10272
- target.createMilestone = milestones.createMilestone.bind(milestones);
10273
- target.updateMilestone = milestones.updateMilestone.bind(milestones);
10274
- target.deleteMilestone = milestones.deleteMilestone.bind(milestones);
10275
10655
  }
10276
10656
 
10277
10657
  // src/client/bindings/communications.ts
@@ -10329,6 +10709,7 @@ function bindToolkitsMethods(target, toolkits, templates, aiModels, customToolki
10329
10709
  target.getSTTModels = aiModels.getSTTModels.bind(aiModels);
10330
10710
  target.getTTSModels = aiModels.getTTSModels.bind(aiModels);
10331
10711
  target.getVoiceModels = aiModels.getVoiceModels.bind(aiModels);
10712
+ target.getVoicePresets = aiModels.getVoicePresets.bind(aiModels);
10332
10713
  target.getAllModels = aiModels.getAllModels.bind(aiModels);
10333
10714
  target.getCustomToolkits = customToolkits.getCustomToolkits.bind(customToolkits);
10334
10715
  target.getCustomToolkit = customToolkits.getCustomToolkit.bind(customToolkits);
@@ -10627,6 +11008,11 @@ function bindOrgMethods(target, org) {
10627
11008
  target.updateBusinessProfile = org.updateBusinessProfile.bind(org);
10628
11009
  target.submitBusinessProfile = org.submitBusinessProfile.bind(org);
10629
11010
  target.cancelBusinessProfile = org.cancelBusinessProfile.bind(org);
11011
+ target.listLegalEntities = org.listLegalEntities.bind(org);
11012
+ target.getLegalEntity = org.getLegalEntity.bind(org);
11013
+ target.createLegalEntity = org.createLegalEntity.bind(org);
11014
+ target.getVoiceTrustProducts = org.getVoiceTrustProducts.bind(org);
11015
+ target.syncVoiceTrustProducts = org.syncVoiceTrustProducts.bind(org);
10630
11016
  target.createOrganizationWorkspace = org.createOrganizationWorkspace.bind(org);
10631
11017
  target.getOrgBillingCustomer = org.getOrgBillingCustomer.bind(org);
10632
11018
  }
@@ -10710,6 +11096,18 @@ function bindPersonasMethods(target, personas) {
10710
11096
  target.deletePersona = personas.deletePersona.bind(personas);
10711
11097
  }
10712
11098
 
11099
+ // src/client/bindings/metrics.ts
11100
+ function bindMetricsMethods(target, metrics) {
11101
+ target.listMetrics = metrics.listMetrics.bind(metrics);
11102
+ target.getMetric = metrics.getMetric.bind(metrics);
11103
+ target.createMetric = metrics.createMetric.bind(metrics);
11104
+ target.updateMetric = metrics.updateMetric.bind(metrics);
11105
+ target.deleteMetric = metrics.deleteMetric.bind(metrics);
11106
+ target.listMetricObservations = metrics.listMetricObservations.bind(metrics);
11107
+ target.getMetricSeries = metrics.getMetricSeries.bind(metrics);
11108
+ target.computeChatMetrics = metrics.computeChatMetrics.bind(metrics);
11109
+ }
11110
+
10713
11111
  // src/client/bindings/queries.ts
10714
11112
  function bindQueriesMethods(target, queries) {
10715
11113
  target.getQueryFields = queries.getQueryFields.bind(queries);
@@ -10800,6 +11198,7 @@ var GravityRailClient = class {
10800
11198
  getChatTokenUsage;
10801
11199
  getChatTodos;
10802
11200
  getChatSkills;
11201
+ getManagerSkills;
10803
11202
  getChatsNeedsResponse;
10804
11203
  getChatsDailyCreationStats;
10805
11204
  getToolCallNames;
@@ -10917,6 +11316,8 @@ var GravityRailClient = class {
10917
11316
  createMemberRole;
10918
11317
  updateMemberRole;
10919
11318
  deleteMemberRole;
11319
+ getMemberRoleCleanupPlan;
11320
+ mergeMemberRoles;
10920
11321
  // Member Fields
10921
11322
  getMemberFields;
10922
11323
  getMemberFieldDefinitions;
@@ -10977,6 +11378,15 @@ var GravityRailClient = class {
10977
11378
  createPersona;
10978
11379
  updatePersona;
10979
11380
  deletePersona;
11381
+ // Metrics API (customer-defined outcome metrics)
11382
+ listMetrics;
11383
+ getMetric;
11384
+ createMetric;
11385
+ updateMetric;
11386
+ deleteMetric;
11387
+ listMetricObservations;
11388
+ getMetricSeries;
11389
+ computeChatMetrics;
10980
11390
  // Dashboards API
10981
11391
  getDashboards;
10982
11392
  getDashboard;
@@ -10985,8 +11395,18 @@ var GravityRailClient = class {
10985
11395
  deleteDashboard;
10986
11396
  getDashboardChannelStats;
10987
11397
  getDashboardWorkflowAssignmentStats;
11398
+ getConfigurationHealth;
10988
11399
  // MOTD API
10989
11400
  getMotd;
11401
+ // Tracked Links analytics (#10934)
11402
+ getTrackedLinkSummary;
11403
+ getTrackedLinkDestinations;
11404
+ getTrackedLinkStats;
11405
+ getTrackedLinkTimeseries;
11406
+ createTrackedLinkDestination;
11407
+ updateTrackedLinkDestination;
11408
+ deleteTrackedLinkDestination;
11409
+ clearTrackedLinkDestinations;
10990
11410
  // Journeys API
10991
11411
  getJourneys;
10992
11412
  getJourney;
@@ -11091,6 +11511,7 @@ var GravityRailClient = class {
11091
11511
  getProduct;
11092
11512
  getWorkspaceProduct;
11093
11513
  getPublicProducts;
11514
+ previewPromoCode;
11094
11515
  getPublicProduct;
11095
11516
  createProduct;
11096
11517
  updateProduct;
@@ -11128,6 +11549,11 @@ var GravityRailClient = class {
11128
11549
  updateBusinessProfile;
11129
11550
  submitBusinessProfile;
11130
11551
  cancelBusinessProfile;
11552
+ listLegalEntities;
11553
+ getLegalEntity;
11554
+ createLegalEntity;
11555
+ getVoiceTrustProducts;
11556
+ syncVoiceTrustProducts;
11131
11557
  createOrganizationWorkspace;
11132
11558
  getOrgBillingCustomer;
11133
11559
  getVapidPublicKey;
@@ -11389,11 +11815,6 @@ var GravityRailClient = class {
11389
11815
  linkCalendarToGoogle;
11390
11816
  unlinkCalendarFromGoogle;
11391
11817
  syncCalendarWithGoogle;
11392
- getMilestones;
11393
- getMilestone;
11394
- createMilestone;
11395
- updateMilestone;
11396
- deleteMilestone;
11397
11818
  // Communications API
11398
11819
  getPhoneNumbers;
11399
11820
  getAvailablePhoneNumbers;
@@ -11445,6 +11866,7 @@ var GravityRailClient = class {
11445
11866
  getSTTModels;
11446
11867
  getTTSModels;
11447
11868
  getVoiceModels;
11869
+ getVoicePresets;
11448
11870
  getAllModels;
11449
11871
  getCustomToolkits;
11450
11872
  getCustomToolkit;
@@ -11772,9 +12194,11 @@ var GravityRailClient = class {
11772
12194
  bindAgentsMethods(this, apis.agents);
11773
12195
  bindQualificationsMethods(this, apis.qualifications);
11774
12196
  bindPersonasMethods(this, apis.personas);
12197
+ bindMetricsMethods(this, apis.metrics);
11775
12198
  bindQueriesMethods(this, apis.queries);
11776
12199
  bindDashboardsMethods(this, apis.dashboards);
11777
12200
  bindMotdMethods(this, apis.motd);
12201
+ bindTrackedLinksMethods(this, apis.trackedLinks);
11778
12202
  bindJourneysMethods(this, apis.journeys);
11779
12203
  bindExperimentsMethods(this, apis.experiments);
11780
12204
  bindOperatorMethods(this, apis.operatorGroups);
@@ -11787,7 +12211,7 @@ var GravityRailClient = class {
11787
12211
  bindFilesMethods(this, apis.files);
11788
12212
  bindEventsMethods(this, apis.events);
11789
12213
  bindWorkflowsMethods(this, apis.workflows, apis.workflowNotes, apis.voice, apis.supervisors);
11790
- bindCalendarsMethods(this, apis.calendars, apis.milestones);
12214
+ bindCalendarsMethods(this, apis.calendars);
11791
12215
  bindCommunicationsMethods(this, apis.phoneNumbers, apis.inboxes, apis.notificationRules);
11792
12216
  bindToolkitsMethods(
11793
12217
  this,
@@ -12137,7 +12561,9 @@ var AbilityConfigIssueCode = {
12137
12561
  invalid_state: "invalid_state",
12138
12562
  feature_disabled: "feature_disabled",
12139
12563
  missing_connection: "missing_connection",
12140
- external_drift: "external_drift"
12564
+ external_drift: "external_drift",
12565
+ missing_task_instructions: "missing_task_instructions",
12566
+ no_qualification_scenarios: "no_qualification_scenarios"
12141
12567
  };
12142
12568
  var AbilityConfigIssueSeverity = {
12143
12569
  warning: "warning",
@@ -12150,9 +12576,24 @@ var WorkflowAccessWarningResourceType = {
12150
12576
  calendar: "calendar"
12151
12577
  };
12152
12578
 
12579
+ // src/types/generated/workflow.ts
12580
+ var WorkflowRoutingMode = {
12581
+ open_world: "open_world",
12582
+ strict: "strict"
12583
+ };
12584
+
12153
12585
  // src/types/widget-domain-types.ts
12154
12586
  var WIDGET_SLUGS = ["chat", "operator", "operator-tools", "chat-app"];
12155
12587
 
12588
+ // src/types/generated/promo_code_service.ts
12589
+ var PromoCodeStatus = {
12590
+ active: "active",
12591
+ scheduled: "scheduled",
12592
+ expired: "expired",
12593
+ inactive: "inactive",
12594
+ exhausted: "exhausted"
12595
+ };
12596
+
12156
12597
  // src/features/registry.ts
12157
12598
  var FeatureCategory = /* @__PURE__ */ ((FeatureCategory2) => {
12158
12599
  FeatureCategory2["COMMUNICATION"] = "communication";
@@ -13107,7 +13548,6 @@ export {
13107
13548
  McpServersApi,
13108
13549
  MemberImportValidationError,
13109
13550
  MembersApi,
13110
- MilestonesApi,
13111
13551
  MondayIntegrationApi,
13112
13552
  NotificationRulesApi,
13113
13553
  OperatorApi,
@@ -13158,7 +13598,13 @@ export {
13158
13598
  BulkMemberResultStatus,
13159
13599
  MemberImportMatchInfoMatchType,
13160
13600
  MemberImportPreviewRowAction,
13601
+ MergeMemberRolesRequestAccessStrategy,
13161
13602
  MemberType,
13603
+ isMemberContactConflict,
13604
+ isAccountContactConflict,
13605
+ archivedMemberConflictId,
13606
+ isIdentifiedMemberContactConflict,
13607
+ asIdentifiedMemberContactConflict,
13162
13608
  McpServerState,
13163
13609
  ToolkitState,
13164
13610
  EventRuleObjectType,
@@ -13205,6 +13651,8 @@ export {
13205
13651
  AccessGrantStatus,
13206
13652
  AccessGrantTrigger,
13207
13653
  ConsentMethod,
13654
+ CONFIG_HEALTH_FACADE_CHECK_SLUGS,
13655
+ isConfigHealthFacadeCheckSlug,
13208
13656
  parseExperimentStatCount,
13209
13657
  TERMINAL_TASK_STATES,
13210
13658
  WorkspaceInvitationsApi,
@@ -13220,6 +13668,7 @@ export {
13220
13668
  bindCallsMethods,
13221
13669
  bindDashboardsMethods,
13222
13670
  bindMotdMethods,
13671
+ bindTrackedLinksMethods,
13223
13672
  bindDataTypesMethods,
13224
13673
  bindMembersMethods,
13225
13674
  bindWorkspacesMethods,
@@ -13241,6 +13690,7 @@ export {
13241
13690
  bindJourneysMethods,
13242
13691
  bindQualificationsMethods,
13243
13692
  bindPersonasMethods,
13693
+ bindMetricsMethods,
13244
13694
  bindQueriesMethods,
13245
13695
  bindCustomersMethods,
13246
13696
  bindResellersMethods,
@@ -13273,7 +13723,9 @@ export {
13273
13723
  AbilityConfigIssueCode,
13274
13724
  AbilityConfigIssueSeverity,
13275
13725
  WorkflowAccessWarningResourceType,
13726
+ WorkflowRoutingMode,
13276
13727
  WIDGET_SLUGS,
13728
+ PromoCodeStatus,
13277
13729
  FeatureCategory,
13278
13730
  FeatureVisibility,
13279
13731
  initializeFeatures,
@@ -13308,4 +13760,4 @@ export {
13308
13760
  SCOPE_PRESETS,
13309
13761
  getRevisionState
13310
13762
  };
13311
- //# sourceMappingURL=chunk-QTJQTTIR.js.map
13763
+ //# sourceMappingURL=chunk-CEFOCGYO.js.map