@proteos/sdk 0.57.1 → 0.58.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/{chunk-2EB3P4AR.cjs → chunk-25PD6TYH.cjs} +4 -3
- package/dist/chunk-25PD6TYH.cjs.map +1 -0
- package/dist/{chunk-U3FT5KAH.js → chunk-OOOTPEJK.js} +4 -3
- package/dist/chunk-OOOTPEJK.js.map +1 -0
- package/dist/index.cjs +279 -119
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +615 -3
- package/dist/index.d.ts +615 -3
- package/dist/index.js +162 -2
- package/dist/index.js.map +1 -1
- package/dist/meta/index.cjs +89 -89
- package/dist/meta/index.d.cts +1 -1
- package/dist/meta/index.d.ts +1 -1
- package/dist/meta/index.js +1 -1
- package/dist/{types-mC4i_Wk3.d.cts → types-DQmqR_G8.d.cts} +8 -0
- package/dist/{types-mC4i_Wk3.d.ts → types-DQmqR_G8.d.ts} +8 -0
- package/package.json +1 -1
- package/src/auth/platform-entities.ts +6 -0
- package/src/conversation/index.ts +286 -0
- package/src/conversation/types.ts +580 -0
- package/src/index.ts +36 -0
- package/src/meta/types.ts +6 -0
- package/dist/chunk-2EB3P4AR.cjs.map +0 -1
- package/dist/chunk-U3FT5KAH.js.map +0 -1
|
@@ -21,7 +21,13 @@ import type {
|
|
|
21
21
|
ConversationBrief,
|
|
22
22
|
ConversationFilter,
|
|
23
23
|
ConversationFilterEvent,
|
|
24
|
+
ConversationTag,
|
|
25
|
+
ConversationTagDefinition,
|
|
26
|
+
ConversationTagEvaluation,
|
|
27
|
+
ConversationTagSet,
|
|
24
28
|
ConversationType,
|
|
29
|
+
CountConversationTagsQuery,
|
|
30
|
+
CountConversationTagsResponse,
|
|
25
31
|
CreateAgentListenerRequest,
|
|
26
32
|
CreateConnectionRequest,
|
|
27
33
|
CreateContactGroupRequest,
|
|
@@ -29,6 +35,9 @@ import type {
|
|
|
29
35
|
CreateContactRequest,
|
|
30
36
|
CreateConversationBriefRequest,
|
|
31
37
|
CreateConversationFilterRequest,
|
|
38
|
+
CreateConversationTagDefinitionRequest,
|
|
39
|
+
CreateConversationTagRequest,
|
|
40
|
+
CreateConversationTagSetRequest,
|
|
32
41
|
CreateConversationTypeRequest,
|
|
33
42
|
CreateGlossaryTermRequest,
|
|
34
43
|
CreateSendingRuleRequest,
|
|
@@ -42,6 +51,7 @@ import type {
|
|
|
42
51
|
EmailSender,
|
|
43
52
|
EmailSuppression,
|
|
44
53
|
EmailSuppressionKind,
|
|
54
|
+
EvaluateConversationTagsRequest,
|
|
45
55
|
GetConnectionHealthQuery,
|
|
46
56
|
GlossaryTerm,
|
|
47
57
|
InstallConnectionRequest,
|
|
@@ -59,6 +69,10 @@ import type {
|
|
|
59
69
|
ListConversationFilterEventsQuery,
|
|
60
70
|
ListConversationFiltersQuery,
|
|
61
71
|
ListConversationsQuery,
|
|
72
|
+
ListConversationTagDefinitionsQuery,
|
|
73
|
+
ListConversationTagEvaluationsQuery,
|
|
74
|
+
ListConversationTagSetsQuery,
|
|
75
|
+
ListConversationTagsQuery,
|
|
62
76
|
ListConversationTypesQuery,
|
|
63
77
|
ListGlossaryTermsQuery,
|
|
64
78
|
ListMessagesQuery,
|
|
@@ -101,6 +115,9 @@ import type {
|
|
|
101
115
|
UpdateConversationBriefRequest,
|
|
102
116
|
UpdateConversationFilterRequest,
|
|
103
117
|
UpdateConversationRequest,
|
|
118
|
+
UpdateConversationTagDefinitionRequest,
|
|
119
|
+
UpdateConversationTagRequest,
|
|
120
|
+
UpdateConversationTagSetRequest,
|
|
104
121
|
UpdateConversationTypeRequest,
|
|
105
122
|
UpdateDraftRequest,
|
|
106
123
|
UpdateGlossaryTermRequest,
|
|
@@ -144,6 +161,12 @@ export class ConversationClient {
|
|
|
144
161
|
readonly glossaryTerms: GlossaryTermService
|
|
145
162
|
/** Conversation taxonomy: the types the pre-summary classifier assigns. */
|
|
146
163
|
readonly conversationTypes: ConversationTypeService
|
|
164
|
+
/** Conversation intelligence: WHAT to look for — typed questions asked of conversations. */
|
|
165
|
+
readonly conversationTagDefinitions: ConversationTagDefinitionService
|
|
166
|
+
/** Conversation intelligence: WHERE and WHEN definitions are evaluated. */
|
|
167
|
+
readonly conversationTagSets: ConversationTagSetService
|
|
168
|
+
/** Conversation intelligence: the observations produced + their evaluation history. */
|
|
169
|
+
readonly conversationTags: ConversationTagService
|
|
147
170
|
/** Generic audience taxonomy; membership lives on the contact. */
|
|
148
171
|
readonly contactGroups: ContactGroupService
|
|
149
172
|
/** Tone-of-voice synthesis: per-user setups + the generated profiles. */
|
|
@@ -171,6 +194,9 @@ export class ConversationClient {
|
|
|
171
194
|
this.channelEvents = new ChannelEventServiceImpl(client)
|
|
172
195
|
this.glossaryTerms = new GlossaryTermServiceImpl(client)
|
|
173
196
|
this.conversationTypes = new ConversationTypeServiceImpl(client)
|
|
197
|
+
this.conversationTagDefinitions = new ConversationTagDefinitionServiceImpl(client)
|
|
198
|
+
this.conversationTagSets = new ConversationTagSetServiceImpl(client)
|
|
199
|
+
this.conversationTags = new ConversationTagServiceImpl(client)
|
|
174
200
|
this.contactGroups = new ContactGroupServiceImpl(client)
|
|
175
201
|
this.toneProfiles = new ToneProfileServiceImpl(client)
|
|
176
202
|
this.transcriptions = new TranscriptionServiceImpl(client)
|
|
@@ -1044,6 +1070,266 @@ class ConversationTypeServiceImpl implements ConversationTypeService {
|
|
|
1044
1070
|
}
|
|
1045
1071
|
}
|
|
1046
1072
|
|
|
1073
|
+
/**
|
|
1074
|
+
* Conversation tag definitions: WHAT to look for in a conversation — one
|
|
1075
|
+
* typed question (boolean / choice / score) plus where its answers anchor
|
|
1076
|
+
* (`scope`) and which model path answers (`evaluator`). A definition is only
|
|
1077
|
+
* evaluated through the tag sets that reference it. Keyed by `key` (not id);
|
|
1078
|
+
* `upsert` is the idempotent module-deploy door.
|
|
1079
|
+
*/
|
|
1080
|
+
export interface ConversationTagDefinitionService {
|
|
1081
|
+
list(
|
|
1082
|
+
query?: ListConversationTagDefinitionsQuery,
|
|
1083
|
+
): Promise<ListResponse<ConversationTagDefinition>>
|
|
1084
|
+
get(key: string): Promise<ConversationTagDefinition>
|
|
1085
|
+
create(request: CreateConversationTagDefinitionRequest): Promise<ConversationTagDefinition>
|
|
1086
|
+
update(
|
|
1087
|
+
key: string,
|
|
1088
|
+
request: UpdateConversationTagDefinitionRequest,
|
|
1089
|
+
): Promise<ConversationTagDefinition>
|
|
1090
|
+
/** Idempotent create-or-update by key (PUT) — what `pro module deploy` calls. */
|
|
1091
|
+
upsert(
|
|
1092
|
+
key: string,
|
|
1093
|
+
request: CreateConversationTagDefinitionRequest,
|
|
1094
|
+
): Promise<ConversationTagDefinition>
|
|
1095
|
+
delete(key: string): Promise<void>
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
class ConversationTagDefinitionServiceImpl implements ConversationTagDefinitionService {
|
|
1099
|
+
constructor(private readonly client: ProteosClient) {}
|
|
1100
|
+
|
|
1101
|
+
list(
|
|
1102
|
+
query: ListConversationTagDefinitionsQuery = {},
|
|
1103
|
+
): Promise<ListResponse<ConversationTagDefinition>> {
|
|
1104
|
+
return this.client.requestWithQuery(
|
|
1105
|
+
'GET',
|
|
1106
|
+
`${CONVERSATION_BASE_PATH}/conversation-tag-definitions`,
|
|
1107
|
+
query,
|
|
1108
|
+
)
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
get(key: string): Promise<ConversationTagDefinition> {
|
|
1112
|
+
return this.client.request(
|
|
1113
|
+
'GET',
|
|
1114
|
+
`${CONVERSATION_BASE_PATH}/conversation-tag-definitions/${encodeURIComponent(key)}`,
|
|
1115
|
+
)
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
create(request: CreateConversationTagDefinitionRequest): Promise<ConversationTagDefinition> {
|
|
1119
|
+
return this.client.request(
|
|
1120
|
+
'POST',
|
|
1121
|
+
`${CONVERSATION_BASE_PATH}/conversation-tag-definitions`,
|
|
1122
|
+
request,
|
|
1123
|
+
)
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
update(
|
|
1127
|
+
key: string,
|
|
1128
|
+
request: UpdateConversationTagDefinitionRequest,
|
|
1129
|
+
): Promise<ConversationTagDefinition> {
|
|
1130
|
+
return this.client.request(
|
|
1131
|
+
'PATCH',
|
|
1132
|
+
`${CONVERSATION_BASE_PATH}/conversation-tag-definitions/${encodeURIComponent(key)}`,
|
|
1133
|
+
request,
|
|
1134
|
+
)
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
upsert(
|
|
1138
|
+
key: string,
|
|
1139
|
+
request: CreateConversationTagDefinitionRequest,
|
|
1140
|
+
): Promise<ConversationTagDefinition> {
|
|
1141
|
+
return this.client.request(
|
|
1142
|
+
'PUT',
|
|
1143
|
+
`${CONVERSATION_BASE_PATH}/conversation-tag-definitions/${encodeURIComponent(key)}`,
|
|
1144
|
+
{ ...request, key },
|
|
1145
|
+
)
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
async delete(key: string): Promise<void> {
|
|
1149
|
+
await this.client.request(
|
|
1150
|
+
'DELETE',
|
|
1151
|
+
`${CONVERSATION_BASE_PATH}/conversation-tag-definitions/${encodeURIComponent(key)}`,
|
|
1152
|
+
)
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
/**
|
|
1157
|
+
* Conversation tag sets: WHERE and WHEN a group of definitions is evaluated.
|
|
1158
|
+
* A set needs at least one conversation selector (`channels`,
|
|
1159
|
+
* `connection_ids`, `type_keys`) — tagging is opt-in, never org-wide by
|
|
1160
|
+
* accident — and `evaluate_on` is a non-empty subset of realtime|completion.
|
|
1161
|
+
* Keyed by `key` (not id); `upsert` is the idempotent module-deploy door.
|
|
1162
|
+
*/
|
|
1163
|
+
export interface ConversationTagSetService {
|
|
1164
|
+
list(query?: ListConversationTagSetsQuery): Promise<ListResponse<ConversationTagSet>>
|
|
1165
|
+
get(key: string): Promise<ConversationTagSet>
|
|
1166
|
+
create(request: CreateConversationTagSetRequest): Promise<ConversationTagSet>
|
|
1167
|
+
update(key: string, request: UpdateConversationTagSetRequest): Promise<ConversationTagSet>
|
|
1168
|
+
/** Idempotent create-or-update by key (PUT) — what `pro module deploy` calls. */
|
|
1169
|
+
upsert(key: string, request: CreateConversationTagSetRequest): Promise<ConversationTagSet>
|
|
1170
|
+
delete(key: string): Promise<void>
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
class ConversationTagSetServiceImpl implements ConversationTagSetService {
|
|
1174
|
+
constructor(private readonly client: ProteosClient) {}
|
|
1175
|
+
|
|
1176
|
+
list(query: ListConversationTagSetsQuery = {}): Promise<ListResponse<ConversationTagSet>> {
|
|
1177
|
+
return this.client.requestWithQuery(
|
|
1178
|
+
'GET',
|
|
1179
|
+
`${CONVERSATION_BASE_PATH}/conversation-tag-sets`,
|
|
1180
|
+
query,
|
|
1181
|
+
)
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
get(key: string): Promise<ConversationTagSet> {
|
|
1185
|
+
return this.client.request(
|
|
1186
|
+
'GET',
|
|
1187
|
+
`${CONVERSATION_BASE_PATH}/conversation-tag-sets/${encodeURIComponent(key)}`,
|
|
1188
|
+
)
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
create(request: CreateConversationTagSetRequest): Promise<ConversationTagSet> {
|
|
1192
|
+
return this.client.request('POST', `${CONVERSATION_BASE_PATH}/conversation-tag-sets`, request)
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1195
|
+
update(key: string, request: UpdateConversationTagSetRequest): Promise<ConversationTagSet> {
|
|
1196
|
+
return this.client.request(
|
|
1197
|
+
'PATCH',
|
|
1198
|
+
`${CONVERSATION_BASE_PATH}/conversation-tag-sets/${encodeURIComponent(key)}`,
|
|
1199
|
+
request,
|
|
1200
|
+
)
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
upsert(key: string, request: CreateConversationTagSetRequest): Promise<ConversationTagSet> {
|
|
1204
|
+
return this.client.request(
|
|
1205
|
+
'PUT',
|
|
1206
|
+
`${CONVERSATION_BASE_PATH}/conversation-tag-sets/${encodeURIComponent(key)}`,
|
|
1207
|
+
{ ...request, key },
|
|
1208
|
+
)
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
async delete(key: string): Promise<void> {
|
|
1212
|
+
await this.client.request(
|
|
1213
|
+
'DELETE',
|
|
1214
|
+
`${CONVERSATION_BASE_PATH}/conversation-tag-sets/${encodeURIComponent(key)}`,
|
|
1215
|
+
)
|
|
1216
|
+
}
|
|
1217
|
+
}
|
|
1218
|
+
|
|
1219
|
+
/**
|
|
1220
|
+
* Conversation tags: the observations definitions make on conversations,
|
|
1221
|
+
* plus the evaluations that produced them. Per-conversation reads/writes
|
|
1222
|
+
* hang off the conversation; `update`/`delete` address a tag by id; `list`
|
|
1223
|
+
* and `counts` are the org-wide streams. Span offsets are UNICODE CODE POINT
|
|
1224
|
+
* indexes (end exclusive) — convert to/from UTF-16 before slicing JS strings.
|
|
1225
|
+
*/
|
|
1226
|
+
export interface ConversationTagService {
|
|
1227
|
+
/** Tags on one conversation (pending, active and dismissed unless `status` filters). */
|
|
1228
|
+
listByConversation(
|
|
1229
|
+
conversationId: string,
|
|
1230
|
+
query?: ListConversationTagsQuery,
|
|
1231
|
+
): Promise<ListResponse<ConversationTag>>
|
|
1232
|
+
/** A person tags a conversation, a message or a span (source = user, confidence 1). */
|
|
1233
|
+
create(conversationId: string, request: CreateConversationTagRequest): Promise<ConversationTag>
|
|
1234
|
+
/**
|
|
1235
|
+
* Start a manual evaluation (202). Resolves with the PENDING evaluation as
|
|
1236
|
+
* soon as it is accepted — the tagger runs server-side beyond this request.
|
|
1237
|
+
* Poll `listEvaluations(conversationId)` until that evaluation's status is
|
|
1238
|
+
* `done` | `failed`, then re-read the tags. 409
|
|
1239
|
+
* `conversation_tag_set_not_matched` when no enabled set matches the
|
|
1240
|
+
* conversation; 409 `conversation_tag_evaluation_in_progress` while another
|
|
1241
|
+
* evaluation is still running.
|
|
1242
|
+
*/
|
|
1243
|
+
evaluate(
|
|
1244
|
+
conversationId: string,
|
|
1245
|
+
request?: EvaluateConversationTagsRequest,
|
|
1246
|
+
): Promise<ConversationTagEvaluation>
|
|
1247
|
+
/** The evaluation history of one conversation (newest first by default). */
|
|
1248
|
+
listEvaluations(
|
|
1249
|
+
conversationId: string,
|
|
1250
|
+
query?: ListConversationTagEvaluationsQuery,
|
|
1251
|
+
): Promise<ListResponse<ConversationTagEvaluation>>
|
|
1252
|
+
/** Flip a tag between active and dismissed (the feedback loop) and/or annotate why. */
|
|
1253
|
+
update(id: string, request: UpdateConversationTagRequest): Promise<ConversationTag>
|
|
1254
|
+
delete(id: string): Promise<void>
|
|
1255
|
+
/** Org-wide tag stream (filter by definition, value, channel, contact, time window). */
|
|
1256
|
+
list(query?: ListConversationTagsQuery): Promise<ListResponse<ConversationTag>>
|
|
1257
|
+
/** Grouped counts for dashboards — `group_by` is a comma-joined string. */
|
|
1258
|
+
counts(query?: CountConversationTagsQuery): Promise<CountConversationTagsResponse>
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
class ConversationTagServiceImpl implements ConversationTagService {
|
|
1262
|
+
constructor(private readonly client: ProteosClient) {}
|
|
1263
|
+
|
|
1264
|
+
listByConversation(
|
|
1265
|
+
conversationId: string,
|
|
1266
|
+
query: ListConversationTagsQuery = {},
|
|
1267
|
+
): Promise<ListResponse<ConversationTag>> {
|
|
1268
|
+
return this.client.requestWithQuery(
|
|
1269
|
+
'GET',
|
|
1270
|
+
`${CONVERSATION_BASE_PATH}/conversations/${encodeURIComponent(conversationId)}/tags`,
|
|
1271
|
+
query,
|
|
1272
|
+
)
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
create(conversationId: string, request: CreateConversationTagRequest): Promise<ConversationTag> {
|
|
1276
|
+
return this.client.request(
|
|
1277
|
+
'POST',
|
|
1278
|
+
`${CONVERSATION_BASE_PATH}/conversations/${encodeURIComponent(conversationId)}/tags`,
|
|
1279
|
+
request,
|
|
1280
|
+
)
|
|
1281
|
+
}
|
|
1282
|
+
|
|
1283
|
+
evaluate(
|
|
1284
|
+
conversationId: string,
|
|
1285
|
+
request: EvaluateConversationTagsRequest = {},
|
|
1286
|
+
): Promise<ConversationTagEvaluation> {
|
|
1287
|
+
return this.client.request(
|
|
1288
|
+
'POST',
|
|
1289
|
+
`${CONVERSATION_BASE_PATH}/conversations/${encodeURIComponent(conversationId)}/tags/evaluate`,
|
|
1290
|
+
request,
|
|
1291
|
+
)
|
|
1292
|
+
}
|
|
1293
|
+
|
|
1294
|
+
listEvaluations(
|
|
1295
|
+
conversationId: string,
|
|
1296
|
+
query: ListConversationTagEvaluationsQuery = {},
|
|
1297
|
+
): Promise<ListResponse<ConversationTagEvaluation>> {
|
|
1298
|
+
return this.client.requestWithQuery(
|
|
1299
|
+
'GET',
|
|
1300
|
+
`${CONVERSATION_BASE_PATH}/conversations/${encodeURIComponent(conversationId)}/tag-evaluations`,
|
|
1301
|
+
query,
|
|
1302
|
+
)
|
|
1303
|
+
}
|
|
1304
|
+
|
|
1305
|
+
update(id: string, request: UpdateConversationTagRequest): Promise<ConversationTag> {
|
|
1306
|
+
return this.client.request(
|
|
1307
|
+
'PATCH',
|
|
1308
|
+
`${CONVERSATION_BASE_PATH}/conversation-tags/${encodeURIComponent(id)}`,
|
|
1309
|
+
request,
|
|
1310
|
+
)
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
async delete(id: string): Promise<void> {
|
|
1314
|
+
await this.client.request(
|
|
1315
|
+
'DELETE',
|
|
1316
|
+
`${CONVERSATION_BASE_PATH}/conversation-tags/${encodeURIComponent(id)}`,
|
|
1317
|
+
)
|
|
1318
|
+
}
|
|
1319
|
+
|
|
1320
|
+
list(query: ListConversationTagsQuery = {}): Promise<ListResponse<ConversationTag>> {
|
|
1321
|
+
return this.client.requestWithQuery('GET', `${CONVERSATION_BASE_PATH}/conversation-tags`, query)
|
|
1322
|
+
}
|
|
1323
|
+
|
|
1324
|
+
counts(query: CountConversationTagsQuery = {}): Promise<CountConversationTagsResponse> {
|
|
1325
|
+
return this.client.requestWithQuery(
|
|
1326
|
+
'GET',
|
|
1327
|
+
`${CONVERSATION_BASE_PATH}/conversation-tags/counts`,
|
|
1328
|
+
query,
|
|
1329
|
+
)
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1047
1333
|
/**
|
|
1048
1334
|
* Contact groups: the generic org-shared audience taxonomy. Membership lives
|
|
1049
1335
|
* on the contact (`Contact.group_key`, one group per contact — assign via
|