@gravity-rail/sdk 0.43.0 → 0.44.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.
package/dist/internal.cjs CHANGED
@@ -211,6 +211,7 @@ __export(internal_exports, {
211
211
  REALTIME_MODEL_OPENAI: () => REALTIME_MODEL_OPENAI,
212
212
  REALTIME_MODEL_OPENAI_2: () => REALTIME_MODEL_OPENAI_2,
213
213
  REALTIME_MODEL_OPENAI_MINI: () => REALTIME_MODEL_OPENAI_MINI,
214
+ RecordChangeKind: () => RecordChangeKind,
214
215
  RefResolutionStatus: () => RefResolutionStatus,
215
216
  Region: () => Region,
216
217
  RegistrationIdentifier: () => RegistrationIdentifier,
@@ -297,7 +298,6 @@ __export(internal_exports, {
297
298
  bindCustomersMethods: () => bindCustomersMethods,
298
299
  bindDashboardsMethods: () => bindDashboardsMethods,
299
300
  bindDataTypesMethods: () => bindDataTypesMethods,
300
- bindDemosMethods: () => bindDemosMethods,
301
301
  bindDevicesMethods: () => bindDevicesMethods,
302
302
  bindEventsMethods: () => bindEventsMethods,
303
303
  bindExperimentsMethods: () => bindExperimentsMethods,
@@ -1115,18 +1115,22 @@ var InboundRefusal = {
1115
1115
  sender_not_synthetic: "sender_not_synthetic",
1116
1116
  sender_is_anonymous: "sender_is_anonymous",
1117
1117
  sender_has_no_phone: "sender_has_no_phone",
1118
- sender_has_no_email: "sender_has_no_email",
1119
- destination_not_in_workspace: "destination_not_in_workspace",
1120
- reply_target_not_test: "reply_target_not_test"
1118
+ destination_not_in_workspace: "destination_not_in_workspace"
1121
1119
  };
1122
1120
  var PhoneRunRefusal = {
1123
1121
  call_not_answered: "call_not_answered",
1124
1122
  number_routes_to_other_workflow: "number_routes_to_other_workflow",
1125
1123
  phone_run_needs_a_person: "phone_run_needs_a_person",
1126
- phone_run_needs_a_number: "phone_run_needs_a_number",
1127
1124
  number_needs_the_phone_channel: "number_needs_the_phone_channel"
1128
1125
  };
1129
1126
 
1127
+ // src/types/generated/record_change.ts
1128
+ var RecordChangeKind = {
1129
+ created: "created",
1130
+ updated: "updated",
1131
+ deleted: "deleted"
1132
+ };
1133
+
1130
1134
  // src/types/generated/qualification_health_service.ts
1131
1135
  var ScenarioHealthCaption = {
1132
1136
  recent_passes: "recent_passes",
@@ -2059,7 +2063,6 @@ var AbilityConfigIssueCode = {
2059
2063
  feature_disabled: "feature_disabled",
2060
2064
  missing_connection: "missing_connection",
2061
2065
  external_drift: "external_drift",
2062
- missing_task_instructions: "missing_task_instructions",
2063
2066
  no_qualification_scenarios: "no_qualification_scenarios"
2064
2067
  };
2065
2068
  var AbilityConfigIssueSeverity = {
@@ -3761,116 +3764,6 @@ var BundlesApi = class extends BaseApiClient {
3761
3764
  }
3762
3765
  };
3763
3766
 
3764
- // src/types/generated/demo.ts
3765
- var DemoRefusalCode = {
3766
- session_expired: "session_expired",
3767
- session_capped: "session_capped",
3768
- calls_capped: "calls_capped",
3769
- session_ended: "session_ended",
3770
- destination_not_allowed: "destination_not_allowed",
3771
- sender_cannot_send: "sender_cannot_send",
3772
- demo_not_available: "demo_not_available"
3773
- };
3774
-
3775
- // src/api/demos.ts
3776
- var REFUSAL_CODES = Object.values(DemoRefusalCode);
3777
- var DemoRequestError = class extends ApiError {
3778
- code;
3779
- constructor(message, statusCode, code) {
3780
- super(message, statusCode);
3781
- this.name = "DemoRequestError";
3782
- this.code = code;
3783
- }
3784
- };
3785
- function refusalCode(value) {
3786
- return typeof value === "string" && REFUSAL_CODES.includes(value) ? value : void 0;
3787
- }
3788
- var DemosApi = class extends BaseApiClient {
3789
- /** Whether a Bundle has a Demo, and what a visitor may contact in it. Needs no session. */
3790
- async getDemo(bundleUuid) {
3791
- return this.anonymous(`demos/${encodeURIComponent(bundleUuid)}`, {
3792
- method: "GET"
3793
- });
3794
- }
3795
- /** Start a Demo session. Needs no session; `recaptchaToken` is required where reCAPTCHA is enforced. */
3796
- async startDemoSession(bundleUuid, data = {}) {
3797
- return this.anonymous(
3798
- `demos/${encodeURIComponent(bundleUuid)}/sessions`,
3799
- { method: "POST", body: JSON.stringify(data) }
3800
- );
3801
- }
3802
- /** Text one of the Demo's numbers as the session's Persona. */
3803
- async sendDemoSessionSms(sessionToken, data) {
3804
- return this.anonymous(
3805
- "demos/sessions/sms",
3806
- { method: "POST", body: JSON.stringify(data) },
3807
- sessionToken
3808
- );
3809
- }
3810
- /** Email one of the Demo's inboxes as the session's Persona. Returns after the Agent's turn. */
3811
- async sendDemoSessionEmail(sessionToken, data) {
3812
- return this.anonymous(
3813
- "demos/sessions/email",
3814
- { method: "POST", body: JSON.stringify(data) },
3815
- sessionToken
3816
- );
3817
- }
3818
- /**
3819
- * Call one of the Demo's numbers as the session's Persona.
3820
- *
3821
- * For an `answered` call, `join` holds what a browser opens the call with:
3822
- * the web voice socket `url`, a single-use login `token` for this call's
3823
- * Chat, and `chatId`. Send them in `voice.login`. For a `not_answered`
3824
- * call, `notAnsweredBranch` says what the number does and nothing connects.
3825
- */
3826
- async placeDemoSessionCall(sessionToken, data) {
3827
- return this.anonymous(
3828
- "demos/sessions/call",
3829
- { method: "POST", body: JSON.stringify(data) },
3830
- sessionToken
3831
- );
3832
- }
3833
- /**
3834
- * The session's own messages, oldest first, and its state. `after` returns
3835
- * only the rows after that row id, so a poll reads what is new.
3836
- */
3837
- async getDemoSessionTimeline(sessionToken, params) {
3838
- const query = params?.after !== void 0 ? `?after=${encodeURIComponent(params.after)}` : "";
3839
- return this.anonymous(
3840
- `demos/sessions/timeline${query}`,
3841
- { method: "GET" },
3842
- sessionToken
3843
- );
3844
- }
3845
- /** End the session. Nothing further is captured on it. */
3846
- async endDemoSession(sessionToken) {
3847
- return this.anonymous(
3848
- "demos/sessions/end",
3849
- { method: "POST" },
3850
- sessionToken
3851
- );
3852
- }
3853
- /**
3854
- * A request that carries the Demo session token, or no credential at all.
3855
- * It never sends this client's API key or the browser's cookies.
3856
- */
3857
- async anonymous(endpoint, init, sessionToken) {
3858
- const headers = new Headers({ "Content-Type": "application/json" });
3859
- if (sessionToken) headers.set("Authorization", `Bearer ${sessionToken}`);
3860
- const response = await this.fetchFunction(`${this.baseUrl}/api/v2/${endpoint}`, {
3861
- ...init,
3862
- headers,
3863
- credentials: "omit"
3864
- });
3865
- if (!response.ok) {
3866
- const body = await response.json().catch(() => ({}));
3867
- const detail = typeof body.detail === "string" ? body.detail : `Request failed (${response.status})`;
3868
- throw new DemoRequestError(detail, response.status, refusalCode(body.code));
3869
- }
3870
- return await response.json();
3871
- }
3872
- };
3873
-
3874
3767
  // src/api/installations.ts
3875
3768
  function installationsPath(wid, ...segments) {
3876
3769
  const tail = segments.map((segment) => encodeURIComponent(String(segment))).join("/");
@@ -3897,9 +3790,18 @@ var InstallationsApi = class extends BaseApiClient {
3897
3790
  { method: "POST", body: JSON.stringify(data) }
3898
3791
  );
3899
3792
  }
3900
- /** Every installation this workspace holds, oldest first. */
3901
- async listInstallations(wid) {
3902
- return this.fetch(installationsPath(wid));
3793
+ /**
3794
+ * Every attached installation this workspace holds, oldest first.
3795
+ *
3796
+ * With `includeDetached`, detached installations are listed too
3797
+ * (`subscribed: false`). A detached Bundle cannot be installed again at the
3798
+ * version its row holds.
3799
+ */
3800
+ async listInstallations(wid, options = {}) {
3801
+ const path = installationsPath(wid);
3802
+ return this.fetch(
3803
+ options.includeDetached ? `${path}?includeDetached=true` : path
3804
+ );
3903
3805
  }
3904
3806
  async getInstallation(wid, installationUuid) {
3905
3807
  return this.fetch(installationsPath(wid, installationUuid));
@@ -11091,34 +10993,34 @@ var QualificationsApi = class extends BaseApiClient {
11091
10993
  return this.fetch(`w/${wid}/qualifications/test-chat-runs/${runId}`);
11092
10994
  }
11093
10995
  /**
11094
- * What a test run would have sent: the SMS, WhatsApp, email, call,
11095
- * notification and escalation it prepared, with content, oldest first.
11096
- * One entry per Member reached, naming the Member and the workspace phone
11097
- * number or inbox used. Nothing in the list was delivered. `truncated` means the list is
11098
- * incomplete.
10996
+ * What a test run sent and received on other channels: each SMS, WhatsApp
10997
+ * message, email, call, notification and escalation it prepared, and each
10998
+ * message its Persona sent to the workspace, with content, oldest first.
10999
+ * `chatId` is the run's Chat. The list covers the whole run, including the
11000
+ * other Chats it produced. One entry per Member reached, naming the Member
11001
+ * and the workspace phone number or inbox used. Nothing in the list was
11002
+ * delivered. `truncated` means the list is incomplete. A Chat that is not
11003
+ * a test run's Chat has an empty list. Read access is the Chat's own.
11099
11004
  */
11100
- async listTestChatRunCapturedEffects(wid, runId) {
11101
- return this.fetch(
11102
- `w/${wid}/qualifications/test-chat-runs/${runId}/captured-effects`
11103
- );
11104
- }
11105
- async startTestChatRun(wid, workflowId, data = {}) {
11106
- return this.fetch(
11107
- `w/${wid}/qualifications/workflows/${workflowId}/test-chat-runs`,
11108
- {
11109
- method: "POST",
11110
- body: JSON.stringify(data)
11111
- }
11112
- );
11005
+ async listChatCapturedEffects(wid, chatId) {
11006
+ return this.fetch(`w/${wid}/chats/${chatId}/captured-effects`);
11113
11007
  }
11114
11008
  /**
11115
- * Text a workspace phone number as the run's Persona. The text enters the
11116
- * inbound SMS pipeline; the Agent's reply is captured on the run and never
11117
- * sent. `chatId` is the Chat the text landed in.
11009
+ * What a test run did to its test Member's records: each record created,
11010
+ * each update and each deletion from the run's start, oldest first, with
11011
+ * the fields touched and their values before and after. `chatId` is the
11012
+ * run's Chat. A scenario's seeded records are the first changes. One entry
11013
+ * per operation on one record, naming the Form and the Member who acted.
11014
+ * `truncated` means the list is incomplete. A Chat that is not a test
11015
+ * run's Chat has an empty list. Requires `records:read` and read access to
11016
+ * the Chat; a Form, record or field the caller may not read is left out.
11118
11017
  */
11119
- async deliverTestChatRunSms(wid, runId, data) {
11018
+ async listChatRecordChanges(wid, chatId) {
11019
+ return this.fetch(`w/${wid}/chats/${chatId}/record-changes`);
11020
+ }
11021
+ async startTestChatRun(wid, workflowId, data = {}) {
11120
11022
  return this.fetch(
11121
- `w/${wid}/qualifications/test-chat-runs/${runId}/inbound/sms`,
11023
+ `w/${wid}/qualifications/workflows/${workflowId}/test-chat-runs`,
11122
11024
  {
11123
11025
  method: "POST",
11124
11026
  body: JSON.stringify(data)
@@ -11126,13 +11028,14 @@ var QualificationsApi = class extends BaseApiClient {
11126
11028
  );
11127
11029
  }
11128
11030
  /**
11129
- * Email a workspace inbox as the run's Persona. The email enters the
11130
- * inbound email pipeline; the call returns after the Agent's turn, and the
11131
- * reply is captured on the run and never sent.
11031
+ * Take an email turn in the run's own Chat as its Persona. The email is a
11032
+ * Message of that Chat and the email Agent turn runs on it; no Inbox and no
11033
+ * routing is involved. The call returns after the Agent's turn with the
11034
+ * reply the run captured, which is never sent.
11132
11035
  */
11133
- async deliverTestChatRunEmail(wid, runId, data) {
11036
+ async takeTestChatRunEmailTurn(wid, runId, data) {
11134
11037
  return this.fetch(
11135
- `w/${wid}/qualifications/test-chat-runs/${runId}/inbound/email`,
11038
+ `w/${wid}/qualifications/test-chat-runs/${runId}/persona-turn/email`,
11136
11039
  {
11137
11040
  method: "POST",
11138
11041
  body: JSON.stringify(data)
@@ -11140,15 +11043,14 @@ var QualificationsApi = class extends BaseApiClient {
11140
11043
  );
11141
11044
  }
11142
11045
  /**
11143
- * Call a workspace phone number as the run's Persona. When the Agent
11144
- * answers (`answered: true`), `chatId` is the test Chat a browser joins
11145
- * over the web voice socket (`voice.login` with that Chat id). Otherwise
11146
- * `notAnsweredBranch` names what the number does with the call, and
11147
- * nothing is run. No carrier is dialed.
11046
+ * Take a text turn in the run's own Chat as its Persona. The text is a
11047
+ * Message of that Chat and the SMS turn runs on it; no workspace phone
11048
+ * number and no routing is involved. The call returns after the Agent's
11049
+ * turn with the reply the run captured, which is never sent.
11148
11050
  */
11149
- async placeTestChatRunCall(wid, runId, data) {
11051
+ async takeTestChatRunSmsTurn(wid, runId, data) {
11150
11052
  return this.fetch(
11151
- `w/${wid}/qualifications/test-chat-runs/${runId}/inbound/call`,
11053
+ `w/${wid}/qualifications/test-chat-runs/${runId}/persona-turn/sms`,
11152
11054
  {
11153
11055
  method: "POST",
11154
11056
  body: JSON.stringify(data)
@@ -13244,6 +13146,17 @@ var WorkflowsApi = class extends BaseApiClient {
13244
13146
  `w/${wid}/workflows/${workflowId}/validate-config`
13245
13147
  );
13246
13148
  }
13149
+ /**
13150
+ * Classify the prompts of a Workflow's draft revision.
13151
+ *
13152
+ * A decision model reads each Task that has a prompt and reports which
13153
+ * prompt classifications probably apply. Each call asks the model again.
13154
+ */
13155
+ async getWorkflowPromptClassifications(wid, workflowId) {
13156
+ return this.fetch(
13157
+ `w/${wid}/workflows/${workflowId}/prompt-classifications`
13158
+ );
13159
+ }
13247
13160
  /**
13248
13161
  * Replay automatic routing for a Chat without performing the transition.
13249
13162
  *
@@ -14174,7 +14087,6 @@ function createApiModules(apiKey, baseUrl, customFetch) {
14174
14087
  auth: new AuthApi(apiKey, baseUrl, customFetch),
14175
14088
  builders: new BuildersApi(apiKey, baseUrl, customFetch),
14176
14089
  bundles: new BundlesApi(apiKey, baseUrl, customFetch),
14177
- demos: new DemosApi(apiKey, baseUrl, customFetch),
14178
14090
  installations: new InstallationsApi(apiKey, baseUrl, customFetch),
14179
14091
  calendars: new CalendarsApi(apiKey, baseUrl, customFetch),
14180
14092
  calls: new CallsApi(apiKey, baseUrl, customFetch),
@@ -14851,6 +14763,7 @@ var WORKSPACE_METHOD_NAMES = [
14851
14763
  "getWorkflowActivity",
14852
14764
  "getWorkflowConfigValidation",
14853
14765
  "getWorkflowFeedback",
14766
+ "getWorkflowPromptClassifications",
14854
14767
  "getWorkflowContributors",
14855
14768
  "getWorkflowDeletionPreview",
14856
14769
  "getWorkflowDiagram",
@@ -14946,10 +14859,10 @@ var WORKSPACE_METHOD_NAMES = [
14946
14859
  "listSalesforceObjects",
14947
14860
  "listScenarioHealthSummaries",
14948
14861
  "listScenarios",
14949
- "listTestChatRunCapturedEffects",
14950
- "deliverTestChatRunSms",
14951
- "deliverTestChatRunEmail",
14952
- "placeTestChatRunCall",
14862
+ "listChatCapturedEffects",
14863
+ "listChatRecordChanges",
14864
+ "takeTestChatRunEmailTurn",
14865
+ "takeTestChatRunSmsTurn",
14953
14866
  "listTestChatRuns",
14954
14867
  "listWidgetDomains",
14955
14868
  "listWorkspaceInvitationsAdmin",
@@ -15781,6 +15694,7 @@ function bindWorkflowsMethods(target, workflows, workflowNotes, voice, superviso
15781
15694
  target.getWorkflowTaskAssignmentStats = workflows.getWorkflowTaskAssignmentStats.bind(workflows);
15782
15695
  target.getTaskChats = workflows.getTaskChats.bind(workflows);
15783
15696
  target.getWorkflowConfigValidation = workflows.getWorkflowConfigValidation.bind(workflows);
15697
+ target.getWorkflowPromptClassifications = workflows.getWorkflowPromptClassifications.bind(workflows);
15784
15698
  target.getWorkflowNotes = workflowNotes.getWorkflowNotes.bind(workflowNotes);
15785
15699
  target.createWorkflowNote = workflowNotes.createWorkflowNote.bind(workflowNotes);
15786
15700
  target.updateWorkflowNote = workflowNotes.updateWorkflowNote.bind(workflowNotes);
@@ -16282,17 +16196,6 @@ function bindBundlesMethods(target, bundles, resourceWorkflows) {
16282
16196
  target.listResourceWorkflows = resourceWorkflows.listResourceWorkflows.bind(resourceWorkflows);
16283
16197
  }
16284
16198
 
16285
- // src/client/bindings/demos.ts
16286
- function bindDemosMethods(target, demos) {
16287
- target.getDemo = demos.getDemo.bind(demos);
16288
- target.startDemoSession = demos.startDemoSession.bind(demos);
16289
- target.sendDemoSessionSms = demos.sendDemoSessionSms.bind(demos);
16290
- target.sendDemoSessionEmail = demos.sendDemoSessionEmail.bind(demos);
16291
- target.placeDemoSessionCall = demos.placeDemoSessionCall.bind(demos);
16292
- target.getDemoSessionTimeline = demos.getDemoSessionTimeline.bind(demos);
16293
- target.endDemoSession = demos.endDemoSession.bind(demos);
16294
- }
16295
-
16296
16199
  // src/client/bindings/installations.ts
16297
16200
  function bindInstallationsMethods(target, installations) {
16298
16201
  target.preflightBundleInstallation = installations.preflightBundleInstallation.bind(installations);
@@ -16367,10 +16270,10 @@ function bindQualificationsMethods(target, qualifications) {
16367
16270
  target.listTestChatRuns = qualifications.listTestChatRuns.bind(qualifications);
16368
16271
  target.listScenarioHealthSummaries = qualifications.listScenarioHealthSummaries.bind(qualifications);
16369
16272
  target.getTestChatRun = qualifications.getTestChatRun.bind(qualifications);
16370
- target.listTestChatRunCapturedEffects = qualifications.listTestChatRunCapturedEffects.bind(qualifications);
16371
- target.deliverTestChatRunSms = qualifications.deliverTestChatRunSms.bind(qualifications);
16372
- target.deliverTestChatRunEmail = qualifications.deliverTestChatRunEmail.bind(qualifications);
16373
- target.placeTestChatRunCall = qualifications.placeTestChatRunCall.bind(qualifications);
16273
+ target.listChatCapturedEffects = qualifications.listChatCapturedEffects.bind(qualifications);
16274
+ target.listChatRecordChanges = qualifications.listChatRecordChanges.bind(qualifications);
16275
+ target.takeTestChatRunEmailTurn = qualifications.takeTestChatRunEmailTurn.bind(qualifications);
16276
+ target.takeTestChatRunSmsTurn = qualifications.takeTestChatRunSmsTurn.bind(qualifications);
16374
16277
  target.startTestChatRun = qualifications.startTestChatRun.bind(qualifications);
16375
16278
  target.evaluateTestChatRun = qualifications.evaluateTestChatRun.bind(qualifications);
16376
16279
  target.endTestChatRun = qualifications.endTestChatRun.bind(qualifications);
@@ -16699,10 +16602,10 @@ var GravityRailClient = class {
16699
16602
  listTestChatRuns;
16700
16603
  listScenarioHealthSummaries;
16701
16604
  getTestChatRun;
16702
- listTestChatRunCapturedEffects;
16703
- deliverTestChatRunSms;
16704
- deliverTestChatRunEmail;
16705
- placeTestChatRunCall;
16605
+ listChatCapturedEffects;
16606
+ listChatRecordChanges;
16607
+ takeTestChatRunEmailTurn;
16608
+ takeTestChatRunSmsTurn;
16706
16609
  startTestChatRun;
16707
16610
  evaluateTestChatRun;
16708
16611
  endTestChatRun;
@@ -16814,14 +16717,6 @@ var GravityRailClient = class {
16814
16717
  createJourneyNote;
16815
16718
  updateJourneyNote;
16816
16719
  deleteJourneyNote;
16817
- // Demos API
16818
- getDemo;
16819
- startDemoSession;
16820
- sendDemoSessionSms;
16821
- sendDemoSessionEmail;
16822
- placeDemoSessionCall;
16823
- getDemoSessionTimeline;
16824
- endDemoSession;
16825
16720
  updateBundle;
16826
16721
  listBundleInstallations;
16827
16722
  // Bundles API
@@ -17207,6 +17102,7 @@ var GravityRailClient = class {
17207
17102
  getWorkflowTaskAssignmentStats;
17208
17103
  getTaskChats;
17209
17104
  getWorkflowConfigValidation;
17105
+ getWorkflowPromptClassifications;
17210
17106
  getWorkflowNotes;
17211
17107
  createWorkflowNote;
17212
17108
  updateWorkflowNote;
@@ -17684,7 +17580,6 @@ var GravityRailClient = class {
17684
17580
  bindTrackedLinksMethods(this, apis.trackedLinks);
17685
17581
  bindJourneysMethods(this, apis.journeys);
17686
17582
  bindBundlesMethods(this, apis.bundles, apis.resourceWorkflows);
17687
- bindDemosMethods(this, apis.demos);
17688
17583
  bindInstallationsMethods(this, apis.installations);
17689
17584
  bindExperimentsMethods(this, apis.experiments);
17690
17585
  bindOperatorMethods(this, apis.operatorGroups);
@@ -18055,6 +17950,7 @@ var ChatInteractionController = class {
18055
17950
  REALTIME_MODEL_OPENAI,
18056
17951
  REALTIME_MODEL_OPENAI_2,
18057
17952
  REALTIME_MODEL_OPENAI_MINI,
17953
+ RecordChangeKind,
18058
17954
  RefResolutionStatus,
18059
17955
  Region,
18060
17956
  RegistrationIdentifier,
@@ -18141,7 +18037,6 @@ var ChatInteractionController = class {
18141
18037
  bindCustomersMethods,
18142
18038
  bindDashboardsMethods,
18143
18039
  bindDataTypesMethods,
18144
- bindDemosMethods,
18145
18040
  bindDevicesMethods,
18146
18041
  bindEventsMethods,
18147
18042
  bindExperimentsMethods,