@gravity-rail/sdk 0.14.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/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-V7ZKEH4V.js → chunk-2YLKG4TT.js} +1 -1
  8. package/dist/chunk-2YLKG4TT.js.map +1 -0
  9. package/dist/{chunk-K4MDFGMO.js → chunk-4B7T6MBH.js} +267 -8
  10. package/dist/chunk-4B7T6MBH.js.map +1 -0
  11. package/dist/{client-CKudWmUT.d.cts → client-3xYGmF3t.d.ts} +1335 -18
  12. package/dist/{client-EAvh7w0y.d.ts → client-BhO_UFFz.d.cts} +1335 -18
  13. package/dist/helpers.d.cts +2 -2
  14. package/dist/helpers.d.ts +2 -2
  15. package/dist/index.cjs +593 -28
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +164 -9
  18. package/dist/index.d.ts +164 -9
  19. package/dist/index.js +334 -23
  20. package/dist/index.js.map +1 -1
  21. package/dist/internal.cjs +296 -7
  22. package/dist/internal.cjs.map +1 -1
  23. package/dist/internal.d.cts +301 -6
  24. package/dist/internal.d.ts +301 -6
  25. package/dist/internal.js +35 -2
  26. package/dist/internal.js.map +1 -1
  27. package/dist/{revision-state-BUBt9Rir.d.ts → revision-state-Dma10N9s.d.ts} +23 -3
  28. package/dist/{revision-state-CY4LBdfa.d.cts → revision-state-Dx8gCQIj.d.cts} +23 -3
  29. package/dist/schemas.cjs +44 -21
  30. package/dist/schemas.cjs.map +1 -1
  31. package/dist/schemas.d.cts +54 -23
  32. package/dist/schemas.d.ts +54 -23
  33. package/dist/schemas.js +42 -21
  34. package/dist/schemas.js.map +1 -1
  35. package/dist/{tasks-iRrM4SaF.d.cts → tasks-vupYoJgG.d.cts} +82 -15
  36. package/dist/{tasks-iRrM4SaF.d.ts → tasks-vupYoJgG.d.ts} +82 -15
  37. package/package.json +2 -2
  38. package/dist/chunk-K4MDFGMO.js.map +0 -1
  39. package/dist/chunk-V7ZKEH4V.js.map +0 -1
@@ -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
  */
@@ -1302,6 +1314,8 @@ var ChatsApi = class extends BaseApiClient {
1302
1314
  if (options.mine !== void 0) params.append("mine", options.mine.toString());
1303
1315
  if (options.needsResponse !== void 0)
1304
1316
  params.append("needsResponse", options.needsResponse.toString());
1317
+ if (options.needsResponseFirst !== void 0)
1318
+ params.append("needsResponseFirst", options.needsResponseFirst.toString());
1305
1319
  if (options.paused !== void 0) params.append("paused", options.paused.toString());
1306
1320
  if (options.archived !== void 0) params.append("archived", options.archived.toString());
1307
1321
  if (options.channel) params.append("channel", options.channel);
@@ -1351,6 +1365,25 @@ var ChatsApi = class extends BaseApiClient {
1351
1365
  async getChat(wid, id) {
1352
1366
  return this.fetch(`w/${wid}/chats/${id}`);
1353
1367
  }
1368
+ /**
1369
+ * Create-chat preflight for SMS: is a conversation already live between this
1370
+ * workspace number and this member?
1371
+ *
1372
+ * An SMS conversation with a member is a single stream — inbound SMS resolves
1373
+ * to ONE current chat per (member phone, workspace phone) pair — so creating
1374
+ * a new SMS chat SUPERSEDES the existing one and the member's next reply
1375
+ * lands on the new chat. Callers use this to say so before committing.
1376
+ *
1377
+ * Read-only, `chats:read`, and PHI-safe by construction: status and timing
1378
+ * only, no message content and no chat title.
1379
+ */
1380
+ async getCurrentSmsChat(wid, options) {
1381
+ const params = new URLSearchParams({
1382
+ memberId: options.memberId.toString(),
1383
+ phoneNumberId: options.phoneNumberId.toString()
1384
+ });
1385
+ return this.fetch(`w/${wid}/chats/current-sms?${params}`);
1386
+ }
1354
1387
  /** Get token usage statistics for a chat. */
1355
1388
  async getChatTokenUsage(wid, chatId) {
1356
1389
  return this.fetch(`w/${wid}/chats/${chatId}/token-usage`);
@@ -1376,6 +1409,10 @@ var ChatsApi = class extends BaseApiClient {
1376
1409
  `w/${wid}/chats/${chatId}/skills`
1377
1410
  );
1378
1411
  }
1412
+ /** List built-in skills that can be selected before starting a Manager Chat. */
1413
+ async getManagerSkills(wid) {
1414
+ return this.fetch(`w/${wid}/chats/manager/skills`);
1415
+ }
1379
1416
  /** List chat IDs that need a response. */
1380
1417
  async getChatsNeedsResponse(wid) {
1381
1418
  return this.fetch(`w/${wid}/chats/needs-response`);
@@ -2784,9 +2821,9 @@ var DocumoFaxApi = class extends BaseApiClient {
2784
2821
  params?.status?.forEach((value) => query.append("status", value));
2785
2822
  if (params?.receivedAfter) query.set("receivedAfter", params.receivedAfter);
2786
2823
  if (params?.receivedBefore) query.set("receivedBefore", params.receivedBefore);
2787
- const suffix = query.toString() === "" ? "" : `?${query.toString()}`;
2824
+ const suffix2 = query.toString() === "" ? "" : `?${query.toString()}`;
2788
2825
  return this.fetch(
2789
- `w/${wid}/app-connections/documo-fax/faxes${suffix}`
2826
+ `w/${wid}/app-connections/documo-fax/faxes${suffix2}`
2790
2827
  );
2791
2828
  }
2792
2829
  /**
@@ -4841,15 +4878,19 @@ var OrgApi = class extends BaseApiClient {
4841
4878
  async getA2PStatus(orgUuid) {
4842
4879
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/status`);
4843
4880
  }
4881
+ /** Return fixed phone-number and outbound-messaging prices. */
4882
+ async getPhoneBillingPricing(orgUuid) {
4883
+ return this.fetch(`o/${orgUuid}/phone-numbers/pricing`);
4884
+ }
4844
4885
  /**
4845
4886
  * Start A2P brand registration under a legal entity. `legalEntityUuid`
4846
4887
  * is required — brands register per legal entity (Customer Profile);
4847
4888
  * there is no primary-entity fallback.
4848
4889
  */
4849
- async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandDescription) {
4890
+ async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandDescription, brandUuid = null) {
4850
4891
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/start`, {
4851
4892
  method: "POST",
4852
- body: JSON.stringify({ legalEntityUuid, brandName, brandDescription })
4893
+ body: JSON.stringify({ legalEntityUuid, brandName, brandDescription, brandUuid })
4853
4894
  });
4854
4895
  }
4855
4896
  /**
@@ -5055,14 +5096,34 @@ var OrgApi = class extends BaseApiClient {
5055
5096
  );
5056
5097
  }
5057
5098
  /**
5058
- * The brand-addressable enrollment form URL (carries `?brand=…`). Outreach
5059
- * appends each patient's `external_id`. `url` is null until a Site is linked.
5099
+ * The brand's enrollment-form template URL (carries `?brand=…`, no
5100
+ * credential). `url` is null until a Site is linked. Do not append a
5101
+ * patient identifier to this URL — use {@link mintA2PBrandEnrollmentLink}
5102
+ * to get a patient-ready link instead.
5060
5103
  */
5061
5104
  async getA2PBrandEnrollmentUrl(orgUuid, brandUuid) {
5062
5105
  return this.fetch(
5063
5106
  `o/${orgUuid}/a2p-brands/${brandUuid}/enrollment-url`
5064
5107
  );
5065
5108
  }
5109
+ /**
5110
+ * Mint a patient-ready enrollment link for one patient.
5111
+ *
5112
+ * The returned URL carries a fresh, expiring, single-use `?grant=…` bound to
5113
+ * the member that `externalId` resolves to. `externalId` (the patient's
5114
+ * CRM/EHR identifier) travels in the request body, never the query string,
5115
+ * so it stays out of access logs. When it matches no member, the
5116
+ * credential-free template URL is returned rather than an error.
5117
+ */
5118
+ async mintA2PBrandEnrollmentLink(orgUuid, brandUuid, externalId) {
5119
+ return this.fetch(
5120
+ `o/${orgUuid}/a2p-brands/${brandUuid}/enrollment-url`,
5121
+ {
5122
+ method: "POST",
5123
+ body: JSON.stringify({ externalId })
5124
+ }
5125
+ );
5126
+ }
5066
5127
  /**
5067
5128
  * List available member roles for a workspace in the organization.
5068
5129
  */
@@ -7549,6 +7610,21 @@ function encodePermissions(permissions) {
7549
7610
  if (permissions.delete) accessMode |= PERMISSION_DELETE;
7550
7611
  return accessMode;
7551
7612
  }
7613
+ var WORKFLOW_IMPLICIT_USE_SCOPE = "workflows:admin";
7614
+ function roleImplicitWorkflowUseScope(role) {
7615
+ return (role.grantedScopes ?? []).includes(WORKFLOW_IMPLICIT_USE_SCOPE) ? WORKFLOW_IMPLICIT_USE_SCOPE : null;
7616
+ }
7617
+ function roleWorkflowAccess(role, workflowId) {
7618
+ const viaScope = roleImplicitWorkflowUseScope(role);
7619
+ if (viaScope) {
7620
+ return { accessMode: PERMISSION_USE | PERMISSION_EDIT, viaScope };
7621
+ }
7622
+ const entry = (role.workflowAccess ?? []).find((wa) => wa.workflowId === workflowId);
7623
+ return { accessMode: entry?.accessMode ?? PERMISSION_NONE, viaScope: null };
7624
+ }
7625
+ function roleCanUseWorkflow(role, workflowId) {
7626
+ return (roleWorkflowAccess(role, workflowId).accessMode & PERMISSION_USE) !== 0;
7627
+ }
7552
7628
  var Scope = /* @__PURE__ */ ((Scope2) => {
7553
7629
  Scope2["WORKSPACE_READ"] = "workspace:read";
7554
7630
  Scope2["WORKSPACE_WRITE"] = "workspace:write";
@@ -7702,11 +7778,13 @@ var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
7702
7778
  EventRuleEventType2["DATA_RECORD_UPDATED"] = "data_record:updated";
7703
7779
  EventRuleEventType2["DATA_RECORD_CHANGED"] = "data_record:changed";
7704
7780
  EventRuleEventType2["CHAT_CREATED"] = "chat:created";
7781
+ EventRuleEventType2["CHAT_SUMMARY"] = "chat:summary";
7705
7782
  EventRuleEventType2["CHAT_CALLBACK"] = "chat:callback";
7706
7783
  EventRuleEventType2["MEMBER_UPDATED"] = "member:updated";
7707
7784
  EventRuleEventType2["ROUTINE_TRIGGERED"] = "routine:triggered";
7708
7785
  EventRuleEventType2["ASSISTANT_MESSAGE"] = "workflow:assistant_message";
7709
7786
  EventRuleEventType2["USER_MESSAGE"] = "workflow:user_message";
7787
+ EventRuleEventType2["WORKFLOW_EXECUTE"] = "workflow:execute";
7710
7788
  EventRuleEventType2["CALENDAR_EVENT_CREATED"] = "calendar_event:created";
7711
7789
  EventRuleEventType2["CALENDAR_EVENT_UPDATED"] = "calendar_event:updated";
7712
7790
  EventRuleEventType2["CALENDAR_EVENT_CANCELLED"] = "calendar_event:cancelled";
@@ -7776,7 +7854,6 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
7776
7854
  WorkspaceFeature2["WEB_SEARCH"] = "web_search";
7777
7855
  WorkspaceFeature2["CALENDAR"] = "calendar";
7778
7856
  WorkspaceFeature2["EXPERIMENTS"] = "experiments";
7779
- WorkspaceFeature2["OPERATOR"] = "operator";
7780
7857
  WorkspaceFeature2["GMAIL"] = "gmail";
7781
7858
  WorkspaceFeature2["GCALENDAR"] = "gcalendar";
7782
7859
  WorkspaceFeature2["GDRIVE"] = "gdrive";
@@ -8382,6 +8459,20 @@ var WorkspacesApi = class extends BaseApiClient {
8382
8459
  if (featured !== void 0) params.set("featured", String(featured));
8383
8460
  return this.fetch(`products?${params.toString()}`);
8384
8461
  }
8462
+ /**
8463
+ * Check whether a promo code is usable, without redeeming it.
8464
+ *
8465
+ * Reserves nothing, so it is safe to call as a form field settles. Redemption
8466
+ * happens server-side after checkout completes, when the organization and its
8467
+ * subscription exist.
8468
+ */
8469
+ async previewPromoCode(code, options) {
8470
+ return this.fetch("promo-codes/preview", {
8471
+ method: "POST",
8472
+ body: JSON.stringify({ code }),
8473
+ signal: options?.signal
8474
+ });
8475
+ }
8385
8476
  /** Get a publicly accessible product by ID. */
8386
8477
  async getPublicProduct(id) {
8387
8478
  return this.fetch(`products/${id}`);
@@ -8733,6 +8824,118 @@ var MotdApi = class extends BaseApiClient {
8733
8824
  }
8734
8825
  };
8735
8826
 
8827
+ // src/api/tracked-links.ts
8828
+ function withFilters(params, options) {
8829
+ if (options.dateFrom) params.append("dateFrom", options.dateFrom);
8830
+ if (options.dateTo) params.append("dateTo", options.dateTo);
8831
+ if (options.workflowId !== void 0) params.append("workflowId", String(options.workflowId));
8832
+ return params;
8833
+ }
8834
+ function suffix(params) {
8835
+ const query = params.toString();
8836
+ return query ? `?${query}` : "";
8837
+ }
8838
+ var TrackedLinksApi = class extends BaseApiClient {
8839
+ /** Header counters plus whether shortening is configured and enabled. */
8840
+ async getTrackedLinkSummary(wid, options = {}) {
8841
+ const params = withFilters(new URLSearchParams(), options);
8842
+ return this.fetch(
8843
+ `w/${wid}/tracked-links/summary${suffix(params)}`
8844
+ );
8845
+ }
8846
+ /**
8847
+ * Known destination URLs, most recent first. Powers the "Clicked link"
8848
+ * member-filter autocomplete, so it stays unaggregated and cheap.
8849
+ */
8850
+ async getTrackedLinkDestinations(wid, options = {}) {
8851
+ const params = new URLSearchParams();
8852
+ if (options.q) params.append("q", options.q);
8853
+ if (options.limit !== void 0) params.append("limit", String(options.limit));
8854
+ return this.fetch(
8855
+ `w/${wid}/tracked-links/destinations${suffix(params)}`
8856
+ );
8857
+ }
8858
+ /**
8859
+ * Register a destination an author can reference as `{{links.<key>}}`.
8860
+ *
8861
+ * The URL is deduplicated server-side, so registering one the workspace
8862
+ * already knows adopts that destination — including a row the retired
8863
+ * auto-harvest left unnamed, whose click history then carries forward
8864
+ * under the new key. Registering a URL that already has a *different* key
8865
+ * is a 409: renaming is what `updateTrackedLinkDestination` is for.
8866
+ *
8867
+ * Keys use the same grammar as snippet keys: lowercase letters, digits,
8868
+ * underscores and dots, starting with a letter (`intake_form`,
8869
+ * `docs.privacy`). No hyphens — Jinja2 reads `links.spring-2026` as
8870
+ * subtraction.
8871
+ */
8872
+ async createTrackedLinkDestination(wid, data) {
8873
+ return this.fetch(`w/${wid}/tracked-links/destinations`, {
8874
+ method: "POST",
8875
+ body: JSON.stringify(data)
8876
+ });
8877
+ }
8878
+ /**
8879
+ * Re-key or relabel a destination.
8880
+ *
8881
+ * Changing `key` breaks templates: `{{links.old}}` stops resolving and the
8882
+ * message ships without its link. Relabelling (`name`) is always safe.
8883
+ * Passing `key: null` releases the handle so another destination can take
8884
+ * it — the non-destructive alternative to deleting, which would take the
8885
+ * click history with it. The URL is not editable.
8886
+ */
8887
+ async updateTrackedLinkDestination(wid, destinationId, data) {
8888
+ return this.fetch(
8889
+ `w/${wid}/tracked-links/destinations/${destinationId}`,
8890
+ { method: "PUT", body: JSON.stringify(data) }
8891
+ );
8892
+ }
8893
+ /** Per-destination sent / clicks / unique clickers / CTR for the window. */
8894
+ async getTrackedLinkStats(wid, options = {}) {
8895
+ const params = withFilters(new URLSearchParams(), options);
8896
+ if (options.page !== void 0) params.append("page", String(options.page));
8897
+ if (options.pageSize !== void 0) params.append("pageSize", String(options.pageSize));
8898
+ if (options.q) params.append("q", options.q);
8899
+ if (options.sortBy) params.append("sortBy", options.sortBy);
8900
+ if (options.sortOrder) params.append("sortOrder", options.sortOrder);
8901
+ return this.fetch(
8902
+ `w/${wid}/tracked-links${suffix(params)}`
8903
+ );
8904
+ }
8905
+ /** Clicks over time for the current filter selection. */
8906
+ async getTrackedLinkTimeseries(wid, options = {}) {
8907
+ const params = withFilters(new URLSearchParams(), options);
8908
+ if (options.destinationId !== void 0) {
8909
+ params.append("destinationId", String(options.destinationId));
8910
+ }
8911
+ if (options.granularity) params.append("granularity", options.granularity);
8912
+ if (options.tz) params.append("tz", options.tz);
8913
+ return this.fetch(
8914
+ `w/${wid}/tracked-links/timeseries${suffix(params)}`
8915
+ );
8916
+ }
8917
+ /**
8918
+ * Delete one destination: its short links stop resolving and its recorded
8919
+ * clicks are removed.
8920
+ *
8921
+ * Turning the workspace setting off only stops NEW links being minted —
8922
+ * links already delivered to members keep working. This is the deliberate
8923
+ * way to break them.
8924
+ */
8925
+ async deleteTrackedLinkDestination(wid, destinationId) {
8926
+ return this.fetch(
8927
+ `w/${wid}/tracked-links/destinations/${destinationId}`,
8928
+ { method: "DELETE" }
8929
+ );
8930
+ }
8931
+ /** Delete every destination, its links, and its clicks. Irreversible. */
8932
+ async clearTrackedLinkDestinations(wid) {
8933
+ return this.fetch(`w/${wid}/tracked-links/destinations`, {
8934
+ method: "DELETE"
8935
+ });
8936
+ }
8937
+ };
8938
+
8736
8939
  // src/app-context.ts
8737
8940
  function formatAppContextAsMarkdown(context) {
8738
8941
  if (!context) {
@@ -8839,6 +9042,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
8839
9042
  members: new MembersApi(apiKey, baseUrl, customFetch),
8840
9043
  milestones: new MilestonesApi(apiKey, baseUrl, customFetch),
8841
9044
  motd: new MotdApi(apiKey, baseUrl, customFetch),
9045
+ trackedLinks: new TrackedLinksApi(apiKey, baseUrl, customFetch),
8842
9046
  confluence: new ConfluenceApi(apiKey, baseUrl, customFetch),
8843
9047
  mondayIntegration: new MondayIntegrationApi(apiKey, baseUrl, customFetch),
8844
9048
  notificationRules: new NotificationRulesApi(apiKey, baseUrl, customFetch),
@@ -8904,6 +9108,7 @@ var WORKSPACE_METHOD_NAMES = [
8904
9108
  "checkSiteSlugAvailability",
8905
9109
  "clearConnectionMemberExclusion",
8906
9110
  "clearMemberSwitch",
9111
+ "clearTrackedLinkDestinations",
8907
9112
  "clickWorkspaceSupportRequestResource",
8908
9113
  "cloneDataType",
8909
9114
  "cloneTask",
@@ -8979,6 +9184,7 @@ var WORKSPACE_METHOD_NAMES = [
8979
9184
  "createSupervisor",
8980
9185
  "createTask",
8981
9186
  "createTeamsApp",
9187
+ "createTrackedLinkDestination",
8982
9188
  "createWorkflow",
8983
9189
  "createWorkflowContributor",
8984
9190
  "createWorkflowFromTemplate",
@@ -9044,6 +9250,7 @@ var WORKSPACE_METHOD_NAMES = [
9044
9250
  "deleteSupervisor",
9045
9251
  "deleteTask",
9046
9252
  "deleteTeamsApp",
9253
+ "deleteTrackedLinkDestination",
9047
9254
  "deleteWidgetDomain",
9048
9255
  "deleteWorkflow",
9049
9256
  "deleteWorkflowContributor",
@@ -9168,6 +9375,7 @@ var WORKSPACE_METHOD_NAMES = [
9168
9375
  "getChatModelOverride",
9169
9376
  "getChatPhoneCalls",
9170
9377
  "getChatSkills",
9378
+ "getManagerSkills",
9171
9379
  "getChatTodos",
9172
9380
  "getChatTokenUsage",
9173
9381
  "getChatToolCallMessages",
@@ -9183,6 +9391,7 @@ var WORKSPACE_METHOD_NAMES = [
9183
9391
  "getConnectionSyncConfig",
9184
9392
  "getCredentialUpdateInvites",
9185
9393
  "getCurrentMember",
9394
+ "getCurrentSmsChat",
9186
9395
  "getCustomToolkit",
9187
9396
  "getCustomToolkits",
9188
9397
  "getDashboard",
@@ -9347,6 +9556,7 @@ var WORKSPACE_METHOD_NAMES = [
9347
9556
  "getPublicFolder",
9348
9557
  "getPublicFolderFiles",
9349
9558
  "getPublicProducts",
9559
+ "previewPromoCode",
9350
9560
  "getQualification",
9351
9561
  "getQualifications",
9352
9562
  "getRecordingInfo",
@@ -9393,6 +9603,10 @@ var WORKSPACE_METHOD_NAMES = [
9393
9603
  "getTool",
9394
9604
  "getToolCallNames",
9395
9605
  "getToolkits",
9606
+ "getTrackedLinkDestinations",
9607
+ "getTrackedLinkStats",
9608
+ "getTrackedLinkSummary",
9609
+ "getTrackedLinkTimeseries",
9396
9610
  "getUnreadNotificationCount",
9397
9611
  "getUsageDashboard",
9398
9612
  "getVariableRegistry",
@@ -9627,6 +9841,7 @@ var WORKSPACE_METHOD_NAMES = [
9627
9841
  "updateTask",
9628
9842
  "updateTeamsApp",
9629
9843
  "updateThemeSettings",
9844
+ "updateTrackedLinkDestination",
9630
9845
  "uploadFile",
9631
9846
  "updateVoicemailStatus",
9632
9847
  "updateWorkflow",
@@ -9718,11 +9933,13 @@ function bindTasksMethods(target, tasks, abilities) {
9718
9933
  function bindChatsMethods(target, chats) {
9719
9934
  target.getChats = chats.getChats.bind(chats);
9720
9935
  target.getChat = chats.getChat.bind(chats);
9936
+ target.getCurrentSmsChat = chats.getCurrentSmsChat.bind(chats);
9721
9937
  target.getChatCallbacks = chats.getChatCallbacks.bind(chats);
9722
9938
  target.cancelChatCallback = chats.cancelChatCallback.bind(chats);
9723
9939
  target.getChatTokenUsage = chats.getChatTokenUsage.bind(chats);
9724
9940
  target.getChatTodos = chats.getChatTodos.bind(chats);
9725
9941
  target.getChatSkills = chats.getChatSkills.bind(chats);
9942
+ target.getManagerSkills = chats.getManagerSkills.bind(chats);
9726
9943
  target.getChatsNeedsResponse = chats.getChatsNeedsResponse.bind(chats);
9727
9944
  target.getChatsDailyCreationStats = chats.getChatsDailyCreationStats.bind(chats);
9728
9945
  target.getToolCallNames = chats.getToolCallNames.bind(chats);
@@ -9796,6 +10013,18 @@ function bindMotdMethods(target, motd) {
9796
10013
  target.getMotd = motd.getMotd.bind(motd);
9797
10014
  }
9798
10015
 
10016
+ // src/client/bindings/tracked-links.ts
10017
+ function bindTrackedLinksMethods(target, trackedLinks) {
10018
+ target.getTrackedLinkSummary = trackedLinks.getTrackedLinkSummary.bind(trackedLinks);
10019
+ target.getTrackedLinkDestinations = trackedLinks.getTrackedLinkDestinations.bind(trackedLinks);
10020
+ target.getTrackedLinkStats = trackedLinks.getTrackedLinkStats.bind(trackedLinks);
10021
+ target.getTrackedLinkTimeseries = trackedLinks.getTrackedLinkTimeseries.bind(trackedLinks);
10022
+ target.createTrackedLinkDestination = trackedLinks.createTrackedLinkDestination.bind(trackedLinks);
10023
+ target.updateTrackedLinkDestination = trackedLinks.updateTrackedLinkDestination.bind(trackedLinks);
10024
+ target.deleteTrackedLinkDestination = trackedLinks.deleteTrackedLinkDestination.bind(trackedLinks);
10025
+ target.clearTrackedLinkDestinations = trackedLinks.clearTrackedLinkDestinations.bind(trackedLinks);
10026
+ }
10027
+
9799
10028
  // src/client/bindings/data-types.ts
9800
10029
  function bindDataTypesMethods(target, dataTypes) {
9801
10030
  target.getDataTypes = dataTypes.getDataTypes.bind(dataTypes);
@@ -10291,6 +10520,7 @@ function bindToolkitsMethods(target, toolkits, templates, aiModels, customToolki
10291
10520
  target.getSTTModels = aiModels.getSTTModels.bind(aiModels);
10292
10521
  target.getTTSModels = aiModels.getTTSModels.bind(aiModels);
10293
10522
  target.getVoiceModels = aiModels.getVoiceModels.bind(aiModels);
10523
+ target.getVoicePresets = aiModels.getVoicePresets.bind(aiModels);
10294
10524
  target.getAllModels = aiModels.getAllModels.bind(aiModels);
10295
10525
  target.getCustomToolkits = customToolkits.getCustomToolkits.bind(customToolkits);
10296
10526
  target.getCustomToolkit = customToolkits.getCustomToolkit.bind(customToolkits);
@@ -10756,11 +10986,13 @@ var GravityRailClient = class {
10756
10986
  // Chats API
10757
10987
  getChats;
10758
10988
  getChat;
10989
+ getCurrentSmsChat;
10759
10990
  getChatCallbacks;
10760
10991
  cancelChatCallback;
10761
10992
  getChatTokenUsage;
10762
10993
  getChatTodos;
10763
10994
  getChatSkills;
10995
+ getManagerSkills;
10764
10996
  getChatsNeedsResponse;
10765
10997
  getChatsDailyCreationStats;
10766
10998
  getToolCallNames;
@@ -10948,6 +11180,15 @@ var GravityRailClient = class {
10948
11180
  getDashboardWorkflowAssignmentStats;
10949
11181
  // MOTD API
10950
11182
  getMotd;
11183
+ // Tracked Links analytics (#10934)
11184
+ getTrackedLinkSummary;
11185
+ getTrackedLinkDestinations;
11186
+ getTrackedLinkStats;
11187
+ getTrackedLinkTimeseries;
11188
+ createTrackedLinkDestination;
11189
+ updateTrackedLinkDestination;
11190
+ deleteTrackedLinkDestination;
11191
+ clearTrackedLinkDestinations;
10951
11192
  // Journeys API
10952
11193
  getJourneys;
10953
11194
  getJourney;
@@ -11052,6 +11293,7 @@ var GravityRailClient = class {
11052
11293
  getProduct;
11053
11294
  getWorkspaceProduct;
11054
11295
  getPublicProducts;
11296
+ previewPromoCode;
11055
11297
  getPublicProduct;
11056
11298
  createProduct;
11057
11299
  updateProduct;
@@ -11406,6 +11648,7 @@ var GravityRailClient = class {
11406
11648
  getSTTModels;
11407
11649
  getTTSModels;
11408
11650
  getVoiceModels;
11651
+ getVoicePresets;
11409
11652
  getAllModels;
11410
11653
  getCustomToolkits;
11411
11654
  getCustomToolkit;
@@ -11736,6 +11979,7 @@ var GravityRailClient = class {
11736
11979
  bindQueriesMethods(this, apis.queries);
11737
11980
  bindDashboardsMethods(this, apis.dashboards);
11738
11981
  bindMotdMethods(this, apis.motd);
11982
+ bindTrackedLinksMethods(this, apis.trackedLinks);
11739
11983
  bindJourneysMethods(this, apis.journeys);
11740
11984
  bindExperimentsMethods(this, apis.experiments);
11741
11985
  bindOperatorMethods(this, apis.operatorGroups);
@@ -12114,6 +12358,15 @@ var WorkflowAccessWarningResourceType = {
12114
12358
  // src/types/widget-domain-types.ts
12115
12359
  var WIDGET_SLUGS = ["chat", "operator", "operator-tools", "chat-app"];
12116
12360
 
12361
+ // src/types/generated/promo_code_service.ts
12362
+ var PromoCodeStatus = {
12363
+ active: "active",
12364
+ scheduled: "scheduled",
12365
+ expired: "expired",
12366
+ inactive: "inactive",
12367
+ exhausted: "exhausted"
12368
+ };
12369
+
12117
12370
  // src/features/registry.ts
12118
12371
  var FeatureCategory = /* @__PURE__ */ ((FeatureCategory2) => {
12119
12372
  FeatureCategory2["COMMUNICATION"] = "communication";
@@ -13111,6 +13364,10 @@ export {
13111
13364
  PERMISSION_DELETE,
13112
13365
  decodePermissions,
13113
13366
  encodePermissions,
13367
+ WORKFLOW_IMPLICIT_USE_SCOPE,
13368
+ roleImplicitWorkflowUseScope,
13369
+ roleWorkflowAccess,
13370
+ roleCanUseWorkflow,
13114
13371
  Scope,
13115
13372
  BulkMemberResultStatus,
13116
13373
  MemberImportMatchInfoMatchType,
@@ -13177,6 +13434,7 @@ export {
13177
13434
  bindCallsMethods,
13178
13435
  bindDashboardsMethods,
13179
13436
  bindMotdMethods,
13437
+ bindTrackedLinksMethods,
13180
13438
  bindDataTypesMethods,
13181
13439
  bindMembersMethods,
13182
13440
  bindWorkspacesMethods,
@@ -13231,6 +13489,7 @@ export {
13231
13489
  AbilityConfigIssueSeverity,
13232
13490
  WorkflowAccessWarningResourceType,
13233
13491
  WIDGET_SLUGS,
13492
+ PromoCodeStatus,
13234
13493
  FeatureCategory,
13235
13494
  FeatureVisibility,
13236
13495
  initializeFeatures,
@@ -13265,4 +13524,4 @@ export {
13265
13524
  SCOPE_PRESETS,
13266
13525
  getRevisionState
13267
13526
  };
13268
- //# sourceMappingURL=chunk-K4MDFGMO.js.map
13527
+ //# sourceMappingURL=chunk-4B7T6MBH.js.map