@gravity-rail/sdk 0.6.0 → 0.7.1
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/{chunk-DX42AMVM.js → chunk-PEWFZXNK.js} +193 -1
- package/dist/chunk-PEWFZXNK.js.map +1 -0
- package/dist/{client-BKGhDv14.d.cts → client-CLxHFOeB.d.cts} +276 -7
- package/dist/{client-dP29995A.d.ts → client-Dft3Kmkn.d.ts} +276 -7
- package/dist/helpers.d.cts +2 -2
- package/dist/helpers.d.ts +2 -2
- package/dist/{index-Q5qU2JFt.d.ts → index-CeVDRf6l.d.cts} +20 -2
- package/dist/{index-CBfaxd3y.d.cts → index-D1G8EKz2.d.ts} +20 -2
- package/dist/index.cjs +185 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/{inquiries-BH6I8-SF.d.cts → inquiries-BIlL6Obb.d.cts} +27 -2
- package/dist/{inquiries-BH6I8-SF.d.ts → inquiries-BIlL6Obb.d.ts} +27 -2
- package/dist/internal.cjs +194 -0
- package/dist/internal.cjs.map +1 -1
- package/dist/internal.d.cts +4 -4
- package/dist/internal.d.ts +4 -4
- package/dist/internal.js +5 -1
- package/dist/schemas.cjs +7 -3
- package/dist/schemas.cjs.map +1 -1
- package/dist/schemas.d.cts +28 -6
- package/dist/schemas.d.ts +28 -6
- package/dist/schemas.js +6 -3
- package/dist/schemas.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-DX42AMVM.js.map +0 -1
package/dist/internal.cjs
CHANGED
|
@@ -198,6 +198,7 @@ __export(internal_exports, {
|
|
|
198
198
|
bindCustomersMethods: () => bindCustomersMethods,
|
|
199
199
|
bindDataTypesMethods: () => bindDataTypesMethods,
|
|
200
200
|
bindEventsMethods: () => bindEventsMethods,
|
|
201
|
+
bindExperimentsMethods: () => bindExperimentsMethods,
|
|
201
202
|
bindFilesMethods: () => bindFilesMethods,
|
|
202
203
|
bindIntegrationsMethods: () => bindIntegrationsMethods,
|
|
203
204
|
bindJourneysMethods: () => bindJourneysMethods,
|
|
@@ -241,6 +242,7 @@ __export(internal_exports, {
|
|
|
241
242
|
isFeatureAvailable: () => isFeatureAvailable,
|
|
242
243
|
isRegistryInitialized: () => isRegistryInitialized,
|
|
243
244
|
isSMSDeliveryFailureStatus: () => isSMSDeliveryFailureStatus,
|
|
245
|
+
parseExperimentStatCount: () => parseExperimentStatCount,
|
|
244
246
|
requiresAssistantParticipant: () => requiresAssistantParticipant,
|
|
245
247
|
usesBuiltinAssistant: () => usesBuiltinAssistant,
|
|
246
248
|
validateFeatureDependencies: () => validateFeatureDependencies
|
|
@@ -307,6 +309,9 @@ var Scope = /* @__PURE__ */ ((Scope2) => {
|
|
|
307
309
|
Scope2["JOURNEYS_READ"] = "journeys:read";
|
|
308
310
|
Scope2["JOURNEYS_WRITE"] = "journeys:write";
|
|
309
311
|
Scope2["JOURNEYS_ADMIN"] = "journeys:admin";
|
|
312
|
+
Scope2["EXPERIMENTS_READ"] = "experiments:read";
|
|
313
|
+
Scope2["EXPERIMENTS_WRITE"] = "experiments:write";
|
|
314
|
+
Scope2["EXPERIMENTS_ADMIN"] = "experiments:admin";
|
|
310
315
|
Scope2["WORKFLOWS_READ"] = "workflows:read";
|
|
311
316
|
Scope2["WORKFLOWS_WRITE"] = "workflows:write";
|
|
312
317
|
Scope2["WORKFLOWS_ADMIN"] = "workflows:admin";
|
|
@@ -484,6 +489,7 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
|
|
|
484
489
|
WorkspaceFeature2["CALENDAR"] = "calendar";
|
|
485
490
|
WorkspaceFeature2["DIRECT_MESSAGES"] = "direct_messages";
|
|
486
491
|
WorkspaceFeature2["JOURNEYS"] = "journeys";
|
|
492
|
+
WorkspaceFeature2["EXPERIMENTS"] = "experiments";
|
|
487
493
|
WorkspaceFeature2["OPERATOR"] = "operator";
|
|
488
494
|
WorkspaceFeature2["PRESENCE"] = "presence";
|
|
489
495
|
WorkspaceFeature2["GMAIL"] = "gmail";
|
|
@@ -795,6 +801,11 @@ var ConsentMethod = /* @__PURE__ */ ((ConsentMethod2) => {
|
|
|
795
801
|
return ConsentMethod2;
|
|
796
802
|
})(ConsentMethod || {});
|
|
797
803
|
|
|
804
|
+
// src/types/experiment-types.ts
|
|
805
|
+
function parseExperimentStatCount(value) {
|
|
806
|
+
return typeof value === "number" ? value : null;
|
|
807
|
+
}
|
|
808
|
+
|
|
798
809
|
// src/types/agent-task-types.ts
|
|
799
810
|
var TERMINAL_TASK_STATES = [
|
|
800
811
|
"TASK_STATE_COMPLETED",
|
|
@@ -1338,6 +1349,7 @@ var ScopeCategory = /* @__PURE__ */ ((ScopeCategory2) => {
|
|
|
1338
1349
|
ScopeCategory2["RECORDS"] = "records";
|
|
1339
1350
|
ScopeCategory2["FILES"] = "files";
|
|
1340
1351
|
ScopeCategory2["JOURNEYS"] = "journeys";
|
|
1352
|
+
ScopeCategory2["EXPERIMENTS"] = "experiments";
|
|
1341
1353
|
ScopeCategory2["SITES"] = "sites";
|
|
1342
1354
|
ScopeCategory2["AGENTS"] = "agents";
|
|
1343
1355
|
ScopeCategory2["CALENDARS"] = "calendars";
|
|
@@ -1597,6 +1609,26 @@ var SCOPES = {
|
|
|
1597
1609
|
implies: ["journeys:write"]
|
|
1598
1610
|
},
|
|
1599
1611
|
// =========================================================================
|
|
1612
|
+
// EXPERIMENTS
|
|
1613
|
+
// =========================================================================
|
|
1614
|
+
"experiments:read": {
|
|
1615
|
+
name: "experiments:read",
|
|
1616
|
+
category: "experiments" /* EXPERIMENTS */,
|
|
1617
|
+
description: "View experiments and assignments"
|
|
1618
|
+
},
|
|
1619
|
+
"experiments:write": {
|
|
1620
|
+
name: "experiments:write",
|
|
1621
|
+
category: "experiments" /* EXPERIMENTS */,
|
|
1622
|
+
description: "Create and edit experiments",
|
|
1623
|
+
implies: ["experiments:read"]
|
|
1624
|
+
},
|
|
1625
|
+
"experiments:admin": {
|
|
1626
|
+
name: "experiments:admin",
|
|
1627
|
+
category: "experiments" /* EXPERIMENTS */,
|
|
1628
|
+
description: "Delete draft experiments and archive experiments",
|
|
1629
|
+
implies: ["experiments:write"]
|
|
1630
|
+
},
|
|
1631
|
+
// =========================================================================
|
|
1600
1632
|
// SITES
|
|
1601
1633
|
// =========================================================================
|
|
1602
1634
|
"sites:read": {
|
|
@@ -3635,6 +3667,22 @@ var ChatsApi = class extends BaseApiClient {
|
|
|
3635
3667
|
body: JSON.stringify(chat)
|
|
3636
3668
|
});
|
|
3637
3669
|
}
|
|
3670
|
+
/**
|
|
3671
|
+
* Create a workflow assignment chat on `phone-voice` and initiate an outbound call
|
|
3672
|
+
* to the member (same as POST /chats with channel phone-voice + send_initial_message).
|
|
3673
|
+
*/
|
|
3674
|
+
async createWorkflowOutboundVoiceChat(wid, input) {
|
|
3675
|
+
const { memberId, workflowId, phoneNumberId, title, chatType } = input;
|
|
3676
|
+
return this.createChat(wid, {
|
|
3677
|
+
channel: "phone-voice",
|
|
3678
|
+
chatType: chatType ?? "assignment",
|
|
3679
|
+
workflowId,
|
|
3680
|
+
phoneNumberId,
|
|
3681
|
+
memberId,
|
|
3682
|
+
title: title ?? `Outbound voice \u2192 member ${memberId}`,
|
|
3683
|
+
participants: [{ memberId, role: "user" }]
|
|
3684
|
+
});
|
|
3685
|
+
}
|
|
3638
3686
|
/** Delete a chat, optionally providing a reason. */
|
|
3639
3687
|
async deleteChat(wid, id, reason) {
|
|
3640
3688
|
return this.fetch(`w/${wid}/chats/${id}`, {
|
|
@@ -4566,6 +4614,99 @@ var EventsApi = class extends BaseApiClient {
|
|
|
4566
4614
|
}
|
|
4567
4615
|
};
|
|
4568
4616
|
|
|
4617
|
+
// src/api/experiments.ts
|
|
4618
|
+
var ExperimentsApi = class extends BaseApiClient {
|
|
4619
|
+
/** List experiments with group summaries and assignment counts. */
|
|
4620
|
+
async getExperiments(wid, params) {
|
|
4621
|
+
const query = new URLSearchParams();
|
|
4622
|
+
if (params?.page !== void 0) query.set("page", String(params.page));
|
|
4623
|
+
if (params?.pageSize !== void 0) query.set("pageSize", String(params.pageSize));
|
|
4624
|
+
if (params?.includeArchived) query.set("includeArchived", "true");
|
|
4625
|
+
const qs = query.toString() ? `?${query.toString()}` : "";
|
|
4626
|
+
return this.fetch(`w/${wid}/experiments${qs}`);
|
|
4627
|
+
}
|
|
4628
|
+
/** Get a single experiment by ID (includes groups). */
|
|
4629
|
+
async getExperiment(wid, experimentId) {
|
|
4630
|
+
return this.fetch(`w/${wid}/experiments/${experimentId}`);
|
|
4631
|
+
}
|
|
4632
|
+
/** Create a draft experiment. */
|
|
4633
|
+
async createExperiment(wid, data) {
|
|
4634
|
+
return this.fetch(`w/${wid}/experiments`, {
|
|
4635
|
+
method: "POST",
|
|
4636
|
+
body: JSON.stringify(data)
|
|
4637
|
+
});
|
|
4638
|
+
}
|
|
4639
|
+
/** Update experiment metadata or lifecycle status. */
|
|
4640
|
+
async updateExperiment(wid, experimentId, data) {
|
|
4641
|
+
return this.fetch(`w/${wid}/experiments/${experimentId}`, {
|
|
4642
|
+
method: "PATCH",
|
|
4643
|
+
body: JSON.stringify(data)
|
|
4644
|
+
});
|
|
4645
|
+
}
|
|
4646
|
+
/** Hard-delete a draft experiment, or archive otherwise. */
|
|
4647
|
+
async deleteExperiment(wid, experimentId) {
|
|
4648
|
+
return this.fetch(`w/${wid}/experiments/${experimentId}`, {
|
|
4649
|
+
method: "DELETE"
|
|
4650
|
+
});
|
|
4651
|
+
}
|
|
4652
|
+
/** Create a group within an experiment. */
|
|
4653
|
+
async createExperimentGroup(wid, experimentId, data) {
|
|
4654
|
+
return this.fetch(`w/${wid}/experiments/${experimentId}/groups`, {
|
|
4655
|
+
method: "POST",
|
|
4656
|
+
body: JSON.stringify(data)
|
|
4657
|
+
});
|
|
4658
|
+
}
|
|
4659
|
+
/** Update a group within an experiment. */
|
|
4660
|
+
async updateExperimentGroup(wid, experimentId, groupId, data) {
|
|
4661
|
+
return this.fetch(`w/${wid}/experiments/${experimentId}/groups/${groupId}`, {
|
|
4662
|
+
method: "PATCH",
|
|
4663
|
+
body: JSON.stringify(data)
|
|
4664
|
+
});
|
|
4665
|
+
}
|
|
4666
|
+
/** Delete a group that has no member assignments. */
|
|
4667
|
+
async deleteExperimentGroup(wid, experimentId, groupId) {
|
|
4668
|
+
return this.fetch(
|
|
4669
|
+
`w/${wid}/experiments/${experimentId}/groups/${groupId}`,
|
|
4670
|
+
{ method: "DELETE" }
|
|
4671
|
+
);
|
|
4672
|
+
}
|
|
4673
|
+
/** Aggregate assignment and exposure counts by group. */
|
|
4674
|
+
async getExperimentStats(wid, experimentId) {
|
|
4675
|
+
return this.fetch(`w/${wid}/experiments/${experimentId}/stats`);
|
|
4676
|
+
}
|
|
4677
|
+
/** List experiment assignments for a member (member profile panel). */
|
|
4678
|
+
async getMemberExperiments(wid, memberId) {
|
|
4679
|
+
return this.fetch(`w/${wid}/members/${memberId}/experiments`);
|
|
4680
|
+
}
|
|
4681
|
+
/** Manually assign a member to an experiment (optional group, or weighted random). */
|
|
4682
|
+
async createExperimentAssignment(wid, experimentId, data) {
|
|
4683
|
+
return this.fetch(
|
|
4684
|
+
`w/${wid}/experiments/${experimentId}/assignments`,
|
|
4685
|
+
{
|
|
4686
|
+
method: "POST",
|
|
4687
|
+
body: JSON.stringify(data)
|
|
4688
|
+
}
|
|
4689
|
+
);
|
|
4690
|
+
}
|
|
4691
|
+
/** Move an assigned member to a different experiment group. */
|
|
4692
|
+
async updateExperimentAssignment(wid, experimentId, memberId, data) {
|
|
4693
|
+
return this.fetch(
|
|
4694
|
+
`w/${wid}/experiments/${experimentId}/assignments/${memberId}`,
|
|
4695
|
+
{
|
|
4696
|
+
method: "PATCH",
|
|
4697
|
+
body: JSON.stringify(data)
|
|
4698
|
+
}
|
|
4699
|
+
);
|
|
4700
|
+
}
|
|
4701
|
+
/** Remove a member's assignment from an experiment. */
|
|
4702
|
+
async deleteExperimentAssignment(wid, experimentId, memberId) {
|
|
4703
|
+
return this.fetch(
|
|
4704
|
+
`w/${wid}/experiments/${experimentId}/assignments/${memberId}`,
|
|
4705
|
+
{ method: "DELETE" }
|
|
4706
|
+
);
|
|
4707
|
+
}
|
|
4708
|
+
};
|
|
4709
|
+
|
|
4569
4710
|
// src/api/features.ts
|
|
4570
4711
|
var FeaturesApi = class extends BaseApiClient {
|
|
4571
4712
|
/**
|
|
@@ -7892,6 +8033,20 @@ var SupportRequestsApi = class extends BaseApiClient {
|
|
|
7892
8033
|
body: JSON.stringify(data)
|
|
7893
8034
|
});
|
|
7894
8035
|
}
|
|
8036
|
+
/**
|
|
8037
|
+
* Record a click on a pushed resource (Proactive Support). For a
|
|
8038
|
+
* manager_prompt, pass the Manager Chat UUID it opened so the
|
|
8039
|
+
* resource→chat linkage is preserved.
|
|
8040
|
+
*/
|
|
8041
|
+
async clickWorkspaceSupportRequestResource(workspaceUuid, uuid, resourceUuid, data = {}) {
|
|
8042
|
+
return this.fetch(
|
|
8043
|
+
`w/${workspaceUuid}/support-requests/${uuid}/resources/${resourceUuid}/click`,
|
|
8044
|
+
{
|
|
8045
|
+
method: "POST",
|
|
8046
|
+
body: JSON.stringify(data)
|
|
8047
|
+
}
|
|
8048
|
+
);
|
|
8049
|
+
}
|
|
7895
8050
|
};
|
|
7896
8051
|
|
|
7897
8052
|
// src/api/customers.ts
|
|
@@ -9128,6 +9283,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
|
|
|
9128
9283
|
slackApps: new SlackAppsApi(apiKey, baseUrl, customFetch),
|
|
9129
9284
|
teamsApps: new TeamsAppsApi(apiKey, baseUrl, customFetch),
|
|
9130
9285
|
events: new EventsApi(apiKey, baseUrl, customFetch),
|
|
9286
|
+
experiments: new ExperimentsApi(apiKey, baseUrl, customFetch),
|
|
9131
9287
|
fhirConnections: new FhirConnectionsApi(apiKey, baseUrl, customFetch),
|
|
9132
9288
|
healthie: new HealthieApi(apiKey, baseUrl, customFetch),
|
|
9133
9289
|
hubspot: new HubspotApi(apiKey, baseUrl, customFetch),
|
|
@@ -9227,6 +9383,7 @@ function bindChatsMethods(target, chats) {
|
|
|
9227
9383
|
target.archiveChat = chats.archiveChat.bind(chats);
|
|
9228
9384
|
target.unarchiveChat = chats.unarchiveChat.bind(chats);
|
|
9229
9385
|
target.createChat = chats.createChat.bind(chats);
|
|
9386
|
+
target.createWorkflowOutboundVoiceChat = chats.createWorkflowOutboundVoiceChat.bind(chats);
|
|
9230
9387
|
target.deleteChat = chats.deleteChat.bind(chats);
|
|
9231
9388
|
target.updateChat = chats.updateChat.bind(chats);
|
|
9232
9389
|
target.updateChatMute = chats.updateChatMute.bind(chats);
|
|
@@ -9561,6 +9718,23 @@ function bindEventsMethods(target, events) {
|
|
|
9561
9718
|
target.previewSchedule = events.previewSchedule.bind(events);
|
|
9562
9719
|
}
|
|
9563
9720
|
|
|
9721
|
+
// src/client/bindings/experiments.ts
|
|
9722
|
+
function bindExperimentsMethods(target, experiments) {
|
|
9723
|
+
target.getExperiments = experiments.getExperiments.bind(experiments);
|
|
9724
|
+
target.getExperiment = experiments.getExperiment.bind(experiments);
|
|
9725
|
+
target.createExperiment = experiments.createExperiment.bind(experiments);
|
|
9726
|
+
target.updateExperiment = experiments.updateExperiment.bind(experiments);
|
|
9727
|
+
target.deleteExperiment = experiments.deleteExperiment.bind(experiments);
|
|
9728
|
+
target.createExperimentGroup = experiments.createExperimentGroup.bind(experiments);
|
|
9729
|
+
target.updateExperimentGroup = experiments.updateExperimentGroup.bind(experiments);
|
|
9730
|
+
target.deleteExperimentGroup = experiments.deleteExperimentGroup.bind(experiments);
|
|
9731
|
+
target.getExperimentStats = experiments.getExperimentStats.bind(experiments);
|
|
9732
|
+
target.getMemberExperiments = experiments.getMemberExperiments.bind(experiments);
|
|
9733
|
+
target.createExperimentAssignment = experiments.createExperimentAssignment.bind(experiments);
|
|
9734
|
+
target.updateExperimentAssignment = experiments.updateExperimentAssignment.bind(experiments);
|
|
9735
|
+
target.deleteExperimentAssignment = experiments.deleteExperimentAssignment.bind(experiments);
|
|
9736
|
+
}
|
|
9737
|
+
|
|
9564
9738
|
// src/client/bindings/workflows.ts
|
|
9565
9739
|
function bindWorkflowsMethods(target, workflows, workflowNotes, voice, supervisors) {
|
|
9566
9740
|
target.getWorkflows = workflows.getWorkflows.bind(workflows);
|
|
@@ -10100,6 +10274,7 @@ function bindSupportRequestMethods(target, supportRequests) {
|
|
|
10100
10274
|
target.createWorkspaceSupportRequest = supportRequests.createWorkspaceSupportRequest.bind(supportRequests);
|
|
10101
10275
|
target.commentOnWorkspaceSupportRequest = supportRequests.commentOnWorkspaceSupportRequest.bind(supportRequests);
|
|
10102
10276
|
target.closeWorkspaceSupportRequest = supportRequests.closeWorkspaceSupportRequest.bind(supportRequests);
|
|
10277
|
+
target.clickWorkspaceSupportRequestResource = supportRequests.clickWorkspaceSupportRequestResource.bind(supportRequests);
|
|
10103
10278
|
}
|
|
10104
10279
|
|
|
10105
10280
|
// src/client/client.ts
|
|
@@ -10130,6 +10305,7 @@ var GravityRailClient = class {
|
|
|
10130
10305
|
archiveChat;
|
|
10131
10306
|
unarchiveChat;
|
|
10132
10307
|
createChat;
|
|
10308
|
+
createWorkflowOutboundVoiceChat;
|
|
10133
10309
|
deleteChat;
|
|
10134
10310
|
updateChat;
|
|
10135
10311
|
updateChatMute;
|
|
@@ -10300,6 +10476,20 @@ var GravityRailClient = class {
|
|
|
10300
10476
|
createJourneyNote;
|
|
10301
10477
|
updateJourneyNote;
|
|
10302
10478
|
deleteJourneyNote;
|
|
10479
|
+
// Experiments API
|
|
10480
|
+
getExperiments;
|
|
10481
|
+
getExperiment;
|
|
10482
|
+
createExperiment;
|
|
10483
|
+
updateExperiment;
|
|
10484
|
+
deleteExperiment;
|
|
10485
|
+
createExperimentGroup;
|
|
10486
|
+
updateExperimentGroup;
|
|
10487
|
+
deleteExperimentGroup;
|
|
10488
|
+
getExperimentStats;
|
|
10489
|
+
getMemberExperiments;
|
|
10490
|
+
createExperimentAssignment;
|
|
10491
|
+
updateExperimentAssignment;
|
|
10492
|
+
deleteExperimentAssignment;
|
|
10303
10493
|
// Operator Groups API
|
|
10304
10494
|
getOperatorGroups;
|
|
10305
10495
|
getOperatorGroup;
|
|
@@ -10966,6 +11156,7 @@ var GravityRailClient = class {
|
|
|
10966
11156
|
createWorkspaceSupportRequest;
|
|
10967
11157
|
commentOnWorkspaceSupportRequest;
|
|
10968
11158
|
closeWorkspaceSupportRequest;
|
|
11159
|
+
clickWorkspaceSupportRequestResource;
|
|
10969
11160
|
constructor(apiKey, baseUrl, customFetch) {
|
|
10970
11161
|
const apis = createApiModules(apiKey, baseUrl, customFetch);
|
|
10971
11162
|
this.apis = apis;
|
|
@@ -10980,6 +11171,7 @@ var GravityRailClient = class {
|
|
|
10980
11171
|
bindQualificationsMethods(this, apis.qualifications);
|
|
10981
11172
|
bindPersonasMethods(this, apis.personas);
|
|
10982
11173
|
bindJourneysMethods(this, apis.journeys);
|
|
11174
|
+
bindExperimentsMethods(this, apis.experiments);
|
|
10983
11175
|
bindOperatorMethods(this, apis.operatorGroups);
|
|
10984
11176
|
bindOrgMethods(this, apis.org);
|
|
10985
11177
|
bindAccessGrantsMethods(this, apis.accessGrants);
|
|
@@ -11291,6 +11483,7 @@ var GravityRailClient = class {
|
|
|
11291
11483
|
bindCustomersMethods,
|
|
11292
11484
|
bindDataTypesMethods,
|
|
11293
11485
|
bindEventsMethods,
|
|
11486
|
+
bindExperimentsMethods,
|
|
11294
11487
|
bindFilesMethods,
|
|
11295
11488
|
bindIntegrationsMethods,
|
|
11296
11489
|
bindJourneysMethods,
|
|
@@ -11334,6 +11527,7 @@ var GravityRailClient = class {
|
|
|
11334
11527
|
isFeatureAvailable,
|
|
11335
11528
|
isRegistryInitialized,
|
|
11336
11529
|
isSMSDeliveryFailureStatus,
|
|
11530
|
+
parseExperimentStatCount,
|
|
11337
11531
|
requiresAssistantParticipant,
|
|
11338
11532
|
usesBuiltinAssistant,
|
|
11339
11533
|
validateFeatureDependencies
|