@gravity-rail/sdk 0.5.1 → 0.7.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 (60) hide show
  1. package/dist/agui.cjs +78 -0
  2. package/dist/agui.cjs.map +1 -0
  3. package/dist/agui.d.cts +13 -0
  4. package/dist/agui.d.ts +13 -0
  5. package/dist/agui.js +48 -0
  6. package/dist/agui.js.map +1 -0
  7. package/dist/audio.cjs +223 -0
  8. package/dist/audio.cjs.map +1 -0
  9. package/dist/audio.d.cts +25 -0
  10. package/dist/audio.d.ts +25 -0
  11. package/dist/audio.js +147 -0
  12. package/dist/audio.js.map +1 -0
  13. package/dist/chunk-BSOOMHW6.js +62 -0
  14. package/dist/chunk-BSOOMHW6.js.map +1 -0
  15. package/dist/{chunk-XRKRVY46.js → chunk-PEWFZXNK.js} +194 -31
  16. package/dist/chunk-PEWFZXNK.js.map +1 -0
  17. package/dist/{index-BhUZfOAG.d.cts → client-CLxHFOeB.d.cts} +310 -1632
  18. package/dist/{index-fPswHAIF.d.ts → client-Dft3Kmkn.d.ts} +310 -1632
  19. package/dist/helpers.cjs +123 -0
  20. package/dist/helpers.cjs.map +1 -0
  21. package/dist/helpers.d.cts +28 -0
  22. package/dist/helpers.d.ts +28 -0
  23. package/dist/helpers.js +92 -0
  24. package/dist/helpers.js.map +1 -0
  25. package/dist/index-CeVDRf6l.d.cts +1607 -0
  26. package/dist/index-D1G8EKz2.d.ts +1607 -0
  27. package/dist/index.cjs +186 -30
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.cts +3 -2
  30. package/dist/index.d.ts +3 -2
  31. package/dist/index.js +1 -1
  32. package/dist/{inquiries-DiTDrTG2.d.cts → inquiries-BIlL6Obb.d.cts} +28 -3
  33. package/dist/{inquiries-DiTDrTG2.d.ts → inquiries-BIlL6Obb.d.ts} +28 -3
  34. package/dist/internal.cjs +195 -30
  35. package/dist/internal.cjs.map +1 -1
  36. package/dist/internal.d.cts +4 -3
  37. package/dist/internal.d.ts +4 -3
  38. package/dist/internal.js +5 -1
  39. package/dist/oauth-client.cjs +78 -0
  40. package/dist/oauth-client.cjs.map +1 -0
  41. package/dist/oauth-client.d.cts +15 -0
  42. package/dist/oauth-client.d.ts +15 -0
  43. package/dist/oauth-client.js +48 -0
  44. package/dist/oauth-client.js.map +1 -0
  45. package/dist/realtime.cjs +637 -0
  46. package/dist/realtime.cjs.map +1 -0
  47. package/dist/realtime.d.cts +94 -0
  48. package/dist/realtime.d.ts +94 -0
  49. package/dist/realtime.js +580 -0
  50. package/dist/realtime.js.map +1 -0
  51. package/dist/schemas.cjs +7 -3
  52. package/dist/schemas.cjs.map +1 -1
  53. package/dist/schemas.d.cts +28 -6
  54. package/dist/schemas.d.ts +28 -6
  55. package/dist/schemas.js +6 -3
  56. package/dist/schemas.js.map +1 -1
  57. package/dist/types-DkYyrvoC.d.cts +19 -0
  58. package/dist/types-DkYyrvoC.d.ts +19 -0
  59. package/package.json +26 -1
  60. package/dist/chunk-XRKRVY46.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -1854,6 +1854,22 @@ var ChatsApi = class extends BaseApiClient {
1854
1854
  body: JSON.stringify(chat)
1855
1855
  });
1856
1856
  }
1857
+ /**
1858
+ * Create a workflow assignment chat on `phone-voice` and initiate an outbound call
1859
+ * to the member (same as POST /chats with channel phone-voice + send_initial_message).
1860
+ */
1861
+ async createWorkflowOutboundVoiceChat(wid, input) {
1862
+ const { memberId, workflowId, phoneNumberId, title, chatType } = input;
1863
+ return this.createChat(wid, {
1864
+ channel: "phone-voice",
1865
+ chatType: chatType ?? "assignment",
1866
+ workflowId,
1867
+ phoneNumberId,
1868
+ memberId,
1869
+ title: title ?? `Outbound voice \u2192 member ${memberId}`,
1870
+ participants: [{ memberId, role: "user" }]
1871
+ });
1872
+ }
1857
1873
  /** Delete a chat, optionally providing a reason. */
1858
1874
  async deleteChat(wid, id, reason) {
1859
1875
  return this.fetch(`w/${wid}/chats/${id}`, {
@@ -2785,6 +2801,99 @@ var EventsApi = class extends BaseApiClient {
2785
2801
  }
2786
2802
  };
2787
2803
 
2804
+ // src/api/experiments.ts
2805
+ var ExperimentsApi = class extends BaseApiClient {
2806
+ /** List experiments with group summaries and assignment counts. */
2807
+ async getExperiments(wid, params) {
2808
+ const query = new URLSearchParams();
2809
+ if (params?.page !== void 0) query.set("page", String(params.page));
2810
+ if (params?.pageSize !== void 0) query.set("pageSize", String(params.pageSize));
2811
+ if (params?.includeArchived) query.set("includeArchived", "true");
2812
+ const qs = query.toString() ? `?${query.toString()}` : "";
2813
+ return this.fetch(`w/${wid}/experiments${qs}`);
2814
+ }
2815
+ /** Get a single experiment by ID (includes groups). */
2816
+ async getExperiment(wid, experimentId) {
2817
+ return this.fetch(`w/${wid}/experiments/${experimentId}`);
2818
+ }
2819
+ /** Create a draft experiment. */
2820
+ async createExperiment(wid, data) {
2821
+ return this.fetch(`w/${wid}/experiments`, {
2822
+ method: "POST",
2823
+ body: JSON.stringify(data)
2824
+ });
2825
+ }
2826
+ /** Update experiment metadata or lifecycle status. */
2827
+ async updateExperiment(wid, experimentId, data) {
2828
+ return this.fetch(`w/${wid}/experiments/${experimentId}`, {
2829
+ method: "PATCH",
2830
+ body: JSON.stringify(data)
2831
+ });
2832
+ }
2833
+ /** Hard-delete a draft experiment, or archive otherwise. */
2834
+ async deleteExperiment(wid, experimentId) {
2835
+ return this.fetch(`w/${wid}/experiments/${experimentId}`, {
2836
+ method: "DELETE"
2837
+ });
2838
+ }
2839
+ /** Create a group within an experiment. */
2840
+ async createExperimentGroup(wid, experimentId, data) {
2841
+ return this.fetch(`w/${wid}/experiments/${experimentId}/groups`, {
2842
+ method: "POST",
2843
+ body: JSON.stringify(data)
2844
+ });
2845
+ }
2846
+ /** Update a group within an experiment. */
2847
+ async updateExperimentGroup(wid, experimentId, groupId, data) {
2848
+ return this.fetch(`w/${wid}/experiments/${experimentId}/groups/${groupId}`, {
2849
+ method: "PATCH",
2850
+ body: JSON.stringify(data)
2851
+ });
2852
+ }
2853
+ /** Delete a group that has no member assignments. */
2854
+ async deleteExperimentGroup(wid, experimentId, groupId) {
2855
+ return this.fetch(
2856
+ `w/${wid}/experiments/${experimentId}/groups/${groupId}`,
2857
+ { method: "DELETE" }
2858
+ );
2859
+ }
2860
+ /** Aggregate assignment and exposure counts by group. */
2861
+ async getExperimentStats(wid, experimentId) {
2862
+ return this.fetch(`w/${wid}/experiments/${experimentId}/stats`);
2863
+ }
2864
+ /** List experiment assignments for a member (member profile panel). */
2865
+ async getMemberExperiments(wid, memberId) {
2866
+ return this.fetch(`w/${wid}/members/${memberId}/experiments`);
2867
+ }
2868
+ /** Manually assign a member to an experiment (optional group, or weighted random). */
2869
+ async createExperimentAssignment(wid, experimentId, data) {
2870
+ return this.fetch(
2871
+ `w/${wid}/experiments/${experimentId}/assignments`,
2872
+ {
2873
+ method: "POST",
2874
+ body: JSON.stringify(data)
2875
+ }
2876
+ );
2877
+ }
2878
+ /** Move an assigned member to a different experiment group. */
2879
+ async updateExperimentAssignment(wid, experimentId, memberId, data) {
2880
+ return this.fetch(
2881
+ `w/${wid}/experiments/${experimentId}/assignments/${memberId}`,
2882
+ {
2883
+ method: "PATCH",
2884
+ body: JSON.stringify(data)
2885
+ }
2886
+ );
2887
+ }
2888
+ /** Remove a member's assignment from an experiment. */
2889
+ async deleteExperimentAssignment(wid, experimentId, memberId) {
2890
+ return this.fetch(
2891
+ `w/${wid}/experiments/${experimentId}/assignments/${memberId}`,
2892
+ { method: "DELETE" }
2893
+ );
2894
+ }
2895
+ };
2896
+
2788
2897
  // src/api/features.ts
2789
2898
  var FeaturesApi = class extends BaseApiClient {
2790
2899
  /**
@@ -4688,7 +4797,7 @@ var OrgApi = class extends BaseApiClient {
4688
4797
  );
4689
4798
  }
4690
4799
  /**
4691
- * Purchase a phone number from Twilio for this org.
4800
+ * Purchase a phone number from Twilio for this org inventory (org admin only).
4692
4801
  */
4693
4802
  async purchasePhoneNumber(orgUuid, phoneNumber, numberType) {
4694
4803
  return this.fetch(`o/${orgUuid}/phone-numbers/purchase`, {
@@ -5115,31 +5224,6 @@ var PhoneNumbersApi = class extends BaseApiClient {
5115
5224
  body: JSON.stringify({ providerPhoneUuid })
5116
5225
  });
5117
5226
  }
5118
- async searchAvailablePhoneNumbers(wid, params) {
5119
- const searchParams = new URLSearchParams();
5120
- if (params.country) searchParams.set("country", params.country);
5121
- if (params.numberType) searchParams.set("number_type", params.numberType);
5122
- if (params.areaCode) searchParams.set("area_code", params.areaCode);
5123
- if (params.contains) searchParams.set("contains", params.contains);
5124
- if (params.city) searchParams.set("city", params.city);
5125
- if (params.state) searchParams.set("state", params.state);
5126
- if (params.limit) searchParams.set("limit", String(params.limit));
5127
- const qs = searchParams.toString();
5128
- return this.fetch(
5129
- `w/${wid}/phone-numbers/search${qs ? `?${qs}` : ""}`
5130
- );
5131
- }
5132
- async purchasePhoneNumber(wid, request, idempotencyKey) {
5133
- const headers = {};
5134
- if (idempotencyKey) {
5135
- headers["Idempotency-Key"] = idempotencyKey;
5136
- }
5137
- return this.fetch(`w/${wid}/phone-numbers/purchase`, {
5138
- method: "POST",
5139
- body: JSON.stringify(request),
5140
- headers
5141
- });
5142
- }
5143
5227
  async releasePhoneNumber(wid, id) {
5144
5228
  return this.fetch(`w/${wid}/phone-numbers/${id}/release`, {
5145
5229
  method: "POST"
@@ -6109,6 +6193,20 @@ var SupportRequestsApi = class extends BaseApiClient {
6109
6193
  body: JSON.stringify(data)
6110
6194
  });
6111
6195
  }
6196
+ /**
6197
+ * Record a click on a pushed resource (Proactive Support). For a
6198
+ * manager_prompt, pass the Manager Chat UUID it opened so the
6199
+ * resource→chat linkage is preserved.
6200
+ */
6201
+ async clickWorkspaceSupportRequestResource(workspaceUuid, uuid, resourceUuid, data = {}) {
6202
+ return this.fetch(
6203
+ `w/${workspaceUuid}/support-requests/${uuid}/resources/${resourceUuid}/click`,
6204
+ {
6205
+ method: "POST",
6206
+ body: JSON.stringify(data)
6207
+ }
6208
+ );
6209
+ }
6112
6210
  };
6113
6211
 
6114
6212
  // src/api/customers.ts
@@ -6922,6 +7020,9 @@ var Scope = /* @__PURE__ */ ((Scope2) => {
6922
7020
  Scope2["JOURNEYS_READ"] = "journeys:read";
6923
7021
  Scope2["JOURNEYS_WRITE"] = "journeys:write";
6924
7022
  Scope2["JOURNEYS_ADMIN"] = "journeys:admin";
7023
+ Scope2["EXPERIMENTS_READ"] = "experiments:read";
7024
+ Scope2["EXPERIMENTS_WRITE"] = "experiments:write";
7025
+ Scope2["EXPERIMENTS_ADMIN"] = "experiments:admin";
6925
7026
  Scope2["WORKFLOWS_READ"] = "workflows:read";
6926
7027
  Scope2["WORKFLOWS_WRITE"] = "workflows:write";
6927
7028
  Scope2["WORKFLOWS_ADMIN"] = "workflows:admin";
@@ -7099,6 +7200,7 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
7099
7200
  WorkspaceFeature2["CALENDAR"] = "calendar";
7100
7201
  WorkspaceFeature2["DIRECT_MESSAGES"] = "direct_messages";
7101
7202
  WorkspaceFeature2["JOURNEYS"] = "journeys";
7203
+ WorkspaceFeature2["EXPERIMENTS"] = "experiments";
7102
7204
  WorkspaceFeature2["OPERATOR"] = "operator";
7103
7205
  WorkspaceFeature2["PRESENCE"] = "presence";
7104
7206
  WorkspaceFeature2["GMAIL"] = "gmail";
@@ -7947,6 +8049,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
7947
8049
  slackApps: new SlackAppsApi(apiKey, baseUrl, customFetch),
7948
8050
  teamsApps: new TeamsAppsApi(apiKey, baseUrl, customFetch),
7949
8051
  events: new EventsApi(apiKey, baseUrl, customFetch),
8052
+ experiments: new ExperimentsApi(apiKey, baseUrl, customFetch),
7950
8053
  fhirConnections: new FhirConnectionsApi(apiKey, baseUrl, customFetch),
7951
8054
  healthie: new HealthieApi(apiKey, baseUrl, customFetch),
7952
8055
  hubspot: new HubspotApi(apiKey, baseUrl, customFetch),
@@ -8046,6 +8149,7 @@ function bindChatsMethods(target, chats) {
8046
8149
  target.archiveChat = chats.archiveChat.bind(chats);
8047
8150
  target.unarchiveChat = chats.unarchiveChat.bind(chats);
8048
8151
  target.createChat = chats.createChat.bind(chats);
8152
+ target.createWorkflowOutboundVoiceChat = chats.createWorkflowOutboundVoiceChat.bind(chats);
8049
8153
  target.deleteChat = chats.deleteChat.bind(chats);
8050
8154
  target.updateChat = chats.updateChat.bind(chats);
8051
8155
  target.updateChatMute = chats.updateChatMute.bind(chats);
@@ -8380,6 +8484,23 @@ function bindEventsMethods(target, events) {
8380
8484
  target.previewSchedule = events.previewSchedule.bind(events);
8381
8485
  }
8382
8486
 
8487
+ // src/client/bindings/experiments.ts
8488
+ function bindExperimentsMethods(target, experiments) {
8489
+ target.getExperiments = experiments.getExperiments.bind(experiments);
8490
+ target.getExperiment = experiments.getExperiment.bind(experiments);
8491
+ target.createExperiment = experiments.createExperiment.bind(experiments);
8492
+ target.updateExperiment = experiments.updateExperiment.bind(experiments);
8493
+ target.deleteExperiment = experiments.deleteExperiment.bind(experiments);
8494
+ target.createExperimentGroup = experiments.createExperimentGroup.bind(experiments);
8495
+ target.updateExperimentGroup = experiments.updateExperimentGroup.bind(experiments);
8496
+ target.deleteExperimentGroup = experiments.deleteExperimentGroup.bind(experiments);
8497
+ target.getExperimentStats = experiments.getExperimentStats.bind(experiments);
8498
+ target.getMemberExperiments = experiments.getMemberExperiments.bind(experiments);
8499
+ target.createExperimentAssignment = experiments.createExperimentAssignment.bind(experiments);
8500
+ target.updateExperimentAssignment = experiments.updateExperimentAssignment.bind(experiments);
8501
+ target.deleteExperimentAssignment = experiments.deleteExperimentAssignment.bind(experiments);
8502
+ }
8503
+
8383
8504
  // src/client/bindings/workflows.ts
8384
8505
  function bindWorkflowsMethods(target, workflows, workflowNotes, voice, supervisors) {
8385
8506
  target.getWorkflows = workflows.getWorkflows.bind(workflows);
@@ -8485,8 +8606,6 @@ function bindCommunicationsMethods(target, phoneNumbers, inboxes, notificationRu
8485
8606
  target.getPhoneNumberVoicemails = phoneNumbers.getPhoneNumberVoicemails.bind(phoneNumbers);
8486
8607
  target.fetchVoicemailAudio = phoneNumbers.fetchVoicemailAudio.bind(phoneNumbers);
8487
8608
  target.updateVoicemailStatus = phoneNumbers.updateVoicemailStatus.bind(phoneNumbers);
8488
- target.searchAvailablePhoneNumbers = phoneNumbers.searchAvailablePhoneNumbers.bind(phoneNumbers);
8489
- target.purchasePhoneNumber = phoneNumbers.purchasePhoneNumber.bind(phoneNumbers);
8490
8609
  target.releasePhoneNumber = phoneNumbers.releasePhoneNumber.bind(phoneNumbers);
8491
8610
  target.getLinkablePhones = phoneNumbers.getLinkablePhones.bind(phoneNumbers);
8492
8611
  target.linkPhoneNumber = phoneNumbers.linkPhoneNumber.bind(phoneNumbers);
@@ -8921,6 +9040,7 @@ function bindSupportRequestMethods(target, supportRequests) {
8921
9040
  target.createWorkspaceSupportRequest = supportRequests.createWorkspaceSupportRequest.bind(supportRequests);
8922
9041
  target.commentOnWorkspaceSupportRequest = supportRequests.commentOnWorkspaceSupportRequest.bind(supportRequests);
8923
9042
  target.closeWorkspaceSupportRequest = supportRequests.closeWorkspaceSupportRequest.bind(supportRequests);
9043
+ target.clickWorkspaceSupportRequestResource = supportRequests.clickWorkspaceSupportRequestResource.bind(supportRequests);
8924
9044
  }
8925
9045
 
8926
9046
  // src/client/client.ts
@@ -8951,6 +9071,7 @@ var GravityRailClient = class {
8951
9071
  archiveChat;
8952
9072
  unarchiveChat;
8953
9073
  createChat;
9074
+ createWorkflowOutboundVoiceChat;
8954
9075
  deleteChat;
8955
9076
  updateChat;
8956
9077
  updateChatMute;
@@ -9121,6 +9242,20 @@ var GravityRailClient = class {
9121
9242
  createJourneyNote;
9122
9243
  updateJourneyNote;
9123
9244
  deleteJourneyNote;
9245
+ // Experiments API
9246
+ getExperiments;
9247
+ getExperiment;
9248
+ createExperiment;
9249
+ updateExperiment;
9250
+ deleteExperiment;
9251
+ createExperimentGroup;
9252
+ updateExperimentGroup;
9253
+ deleteExperimentGroup;
9254
+ getExperimentStats;
9255
+ getMemberExperiments;
9256
+ createExperimentAssignment;
9257
+ updateExperimentAssignment;
9258
+ deleteExperimentAssignment;
9124
9259
  // Operator Groups API
9125
9260
  getOperatorGroups;
9126
9261
  getOperatorGroup;
@@ -9464,8 +9599,6 @@ var GravityRailClient = class {
9464
9599
  getPhoneNumberVoicemails;
9465
9600
  fetchVoicemailAudio;
9466
9601
  updateVoicemailStatus;
9467
- searchAvailablePhoneNumbers;
9468
- purchasePhoneNumber;
9469
9602
  releasePhoneNumber;
9470
9603
  getLinkablePhones;
9471
9604
  linkPhoneNumber;
@@ -9789,6 +9922,7 @@ var GravityRailClient = class {
9789
9922
  createWorkspaceSupportRequest;
9790
9923
  commentOnWorkspaceSupportRequest;
9791
9924
  closeWorkspaceSupportRequest;
9925
+ clickWorkspaceSupportRequestResource;
9792
9926
  constructor(apiKey, baseUrl, customFetch) {
9793
9927
  const apis = createApiModules(apiKey, baseUrl, customFetch);
9794
9928
  this.apis = apis;
@@ -9803,6 +9937,7 @@ var GravityRailClient = class {
9803
9937
  bindQualificationsMethods(this, apis.qualifications);
9804
9938
  bindPersonasMethods(this, apis.personas);
9805
9939
  bindJourneysMethods(this, apis.journeys);
9940
+ bindExperimentsMethods(this, apis.experiments);
9806
9941
  bindOperatorMethods(this, apis.operatorGroups);
9807
9942
  bindOrgMethods(this, apis.org);
9808
9943
  bindAccessGrantsMethods(this, apis.accessGrants);
@@ -10407,6 +10542,7 @@ var ScopeCategory = /* @__PURE__ */ ((ScopeCategory2) => {
10407
10542
  ScopeCategory2["RECORDS"] = "records";
10408
10543
  ScopeCategory2["FILES"] = "files";
10409
10544
  ScopeCategory2["JOURNEYS"] = "journeys";
10545
+ ScopeCategory2["EXPERIMENTS"] = "experiments";
10410
10546
  ScopeCategory2["SITES"] = "sites";
10411
10547
  ScopeCategory2["AGENTS"] = "agents";
10412
10548
  ScopeCategory2["CALENDARS"] = "calendars";
@@ -10666,6 +10802,26 @@ var SCOPES = {
10666
10802
  implies: ["journeys:write"]
10667
10803
  },
10668
10804
  // =========================================================================
10805
+ // EXPERIMENTS
10806
+ // =========================================================================
10807
+ "experiments:read": {
10808
+ name: "experiments:read",
10809
+ category: "experiments" /* EXPERIMENTS */,
10810
+ description: "View experiments and assignments"
10811
+ },
10812
+ "experiments:write": {
10813
+ name: "experiments:write",
10814
+ category: "experiments" /* EXPERIMENTS */,
10815
+ description: "Create and edit experiments",
10816
+ implies: ["experiments:read"]
10817
+ },
10818
+ "experiments:admin": {
10819
+ name: "experiments:admin",
10820
+ category: "experiments" /* EXPERIMENTS */,
10821
+ description: "Delete draft experiments and archive experiments",
10822
+ implies: ["experiments:write"]
10823
+ },
10824
+ // =========================================================================
10669
10825
  // SITES
10670
10826
  // =========================================================================
10671
10827
  "sites:read": {