@or-sdk/knowledge-models 0.12.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 (40) hide show
  1. package/dist/cjs/KnowledgeModels.js +1244 -0
  2. package/dist/cjs/KnowledgeModels.js.map +1 -0
  3. package/dist/cjs/constants.js +5 -0
  4. package/dist/cjs/constants.js.map +1 -0
  5. package/dist/cjs/index.js +17 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/types.js +3 -0
  8. package/dist/cjs/types.js.map +1 -0
  9. package/dist/cjs/utils/getEntityBody.js +40 -0
  10. package/dist/cjs/utils/getEntityBody.js.map +1 -0
  11. package/dist/cjs/utils/index.js +9 -0
  12. package/dist/cjs/utils/index.js.map +1 -0
  13. package/dist/esm/KnowledgeModels.js +860 -0
  14. package/dist/esm/KnowledgeModels.js.map +1 -0
  15. package/dist/esm/constants.js +2 -0
  16. package/dist/esm/constants.js.map +1 -0
  17. package/dist/esm/index.js +3 -0
  18. package/dist/esm/index.js.map +1 -0
  19. package/dist/esm/types.js +2 -0
  20. package/dist/esm/types.js.map +1 -0
  21. package/dist/esm/utils/getEntityBody.js +27 -0
  22. package/dist/esm/utils/getEntityBody.js.map +1 -0
  23. package/dist/esm/utils/index.js +2 -0
  24. package/dist/esm/utils/index.js.map +1 -0
  25. package/dist/types/KnowledgeModels.d.ts +331 -0
  26. package/dist/types/constants.d.ts +1 -0
  27. package/dist/types/index.d.ts +2 -0
  28. package/dist/types/types.d.ts +306 -0
  29. package/dist/types/utils/getEntityBody.d.ts +6 -0
  30. package/dist/types/utils/index.d.ts +1 -0
  31. package/package.json +29 -0
  32. package/src/KnowledgeModels.ts +1302 -0
  33. package/src/constants.ts +1 -0
  34. package/src/index.ts +2 -0
  35. package/src/types.ts +347 -0
  36. package/src/utils/getEntityBody.ts +37 -0
  37. package/src/utils/index.ts +4 -0
  38. package/tsconfig.esm.json +9 -0
  39. package/tsconfig.json +7 -0
  40. package/tsconfig.types.json +9 -0
@@ -0,0 +1,1302 @@
1
+ import { Base, List, makeList, CalApiParams } from '@or-sdk/base';
2
+ import {
3
+ KnowledgeModelsConfig,
4
+ KnowledgeModel,
5
+ KnowledgeModelOptionalFields,
6
+ PartialListResponse,
7
+ KnowledgeModelCreateParams,
8
+ LimitsResponse,
9
+ Entity,
10
+ PrebuiltEntity,
11
+ Feature,
12
+ Application,
13
+ IntentLabelsResponse,
14
+ Utterance,
15
+ Pattern,
16
+ PrebuiltModel,
17
+ PrebuiltModelDetails,
18
+ Intent,
19
+ UtteranceEntity,
20
+ PatternEntity,
21
+ Pair,
22
+ CreatePairsResponse,
23
+ UpdatedPairsResponse,
24
+ TrainStatusResponse,
25
+ TrainResponse,
26
+ PublishResponse,
27
+ ImportResponse,
28
+ MeaningResponse,
29
+ CloneResponse,
30
+ } from './types';
31
+ import { getEntityBody } from './utils';
32
+ import { SERVICE_KEY } from './constants';
33
+
34
+ /**
35
+ * OneReach KnowledgeModels service client
36
+ * ## Installation:
37
+ * ```
38
+ * $ npm i @or-sdk/knowledge-models
39
+ * ```
40
+ */
41
+ export class KnowledgeModels extends Base {
42
+ /**
43
+ * ```typescript
44
+ * import { KnowledgeModels } from '@or-sdk/knowledge-models'
45
+ * const knowledgeModels = new KnowledgeModels({token: 'my-account-token-string', discoveryUrl: 'http://example.nlu/endpoint'});
46
+ * ```
47
+ */
48
+ constructor(params: KnowledgeModelsConfig) {
49
+ const { token, discoveryUrl } = params;
50
+
51
+ super({
52
+ token,
53
+ discoveryUrl,
54
+ serviceKey: SERVICE_KEY,
55
+ });
56
+ }
57
+
58
+ private async getFullList<T>(method: CalApiParams['method'], route: string, queryParams: { [key: string]: unknown; } = {}): Promise<List<T>> {
59
+ const params = {
60
+ ...queryParams,
61
+ last: undefined as unknown,
62
+ };
63
+
64
+ let result: PartialListResponse<T>;
65
+ let list: T[] = [];
66
+
67
+ do {
68
+ result = await this.callApi<PartialListResponse<T>>({
69
+ method,
70
+ route,
71
+ params,
72
+ });
73
+
74
+ list = [...list, ...result.items];
75
+ params.last = result.last;
76
+
77
+ } while (result.last && result.items.length);
78
+
79
+ return makeList<T>(list);
80
+ }
81
+
82
+ /**
83
+ * List knowledge models
84
+ * ```typescript
85
+ * const knowledgeModels = await knowledgeModels.listKnowledgeModels();
86
+ * ```
87
+ */
88
+ public async listKnowledgeModels(): Promise<List<KnowledgeModel>> {
89
+ return this.getFullList<KnowledgeModel>('GET', '/knowledge-base');
90
+ }
91
+
92
+ /**
93
+ * Get knowledge model
94
+ * ```typescript
95
+ * const knowledgeModel = await knowledgeModels.getKnowledgeModel('km-id');
96
+ * ```
97
+ */
98
+ public async getKnowledgeModel(id: string): Promise<KnowledgeModel> {
99
+ const list = await this.listKnowledgeModels();
100
+
101
+ return list.rows.find(km => km.id === id) as KnowledgeModel;
102
+ }
103
+
104
+ /**
105
+ * Create knowledge model
106
+ * ```typescript
107
+ * const knowledgeModel = await knowledgeModels.createKnowledgeModel({
108
+ * name: 'km_name',
109
+ * desc: 'km_desc',
110
+ * imageSrc: 'http://img.png',
111
+ * config: {},
112
+ * culture: 'en-us',
113
+ * extensions: ['luis']
114
+ * });
115
+ * ```
116
+ */
117
+ public async createKnowledgeModel({ name, desc, imageSrc, config, culture, extensions }: KnowledgeModelCreateParams): Promise<KnowledgeModel> {
118
+ const params = {
119
+ name,
120
+ desc,
121
+ imageSrc,
122
+ culture,
123
+ config,
124
+ extensions,
125
+ };
126
+
127
+ return this.callApi<KnowledgeModel>({
128
+ method: 'POST',
129
+ route: '/knowledge-base',
130
+ params,
131
+ });
132
+ }
133
+
134
+ /**
135
+ * Update knowledge model
136
+ * ```typescript
137
+ * const knowledgeModel = await knowledgeModels.updateKnowledgeModel({ id: 'km-id', name: 'updated_name' });
138
+ * ```
139
+ */
140
+ public async updateKnowledgeModel(knowledgeModel: KnowledgeModelOptionalFields): Promise<KnowledgeModel> {
141
+ return this.callApi<KnowledgeModel>({
142
+ method: 'PUT',
143
+ route: '/knowledge-base',
144
+ data: knowledgeModel,
145
+ });
146
+ }
147
+
148
+ /**
149
+ * Get limits index
150
+ * ```typescript
151
+ * const result = await knowledgeModels.getLimitsIndex();
152
+ * ```
153
+ */
154
+ public async getLimitsIndex(): Promise<LimitsResponse> {
155
+ return this.callApi<LimitsResponse>({
156
+ method: 'GET',
157
+ route: '/administration/limits/index',
158
+ });
159
+ }
160
+
161
+ /**
162
+ * Get limits
163
+ * ```typescript
164
+ * const result = await knowledgeModels.getLimits('limits-path');
165
+ * ```
166
+ */
167
+ public async getLimits(path: string): Promise<number> {
168
+ const params = {
169
+ path,
170
+ };
171
+
172
+ return this.callApi<number>({
173
+ method: 'GET',
174
+ route: '/administration/limits',
175
+ params,
176
+ });
177
+ }
178
+
179
+ /**
180
+ * Post limits
181
+ * ```typescript
182
+ * const result = await knowledgeModels.postLimits({ accountId: 'acc-id', limits: { metric: '', number: 0 } });
183
+ * ```
184
+ */
185
+ public async postLimits({ accountId, limits }: { accountId: string; limits: { metric: string; number: number; }; }): Promise<void> {
186
+ const data = {
187
+ accountId,
188
+ limits,
189
+ };
190
+
191
+ await this.callApi<void>({
192
+ method: 'POST',
193
+ route: '/administration/limits',
194
+ data,
195
+ });
196
+ }
197
+
198
+ /**
199
+ * List prebuilt entities
200
+ * ```typescript
201
+ * const result = await knowledgeModels.listPrebuiltEntities({ language: 'lang' });
202
+ * ```
203
+ */
204
+ public async listPrebuiltEntities({ language }: { language?: string; } = {}): Promise<List<PrebuiltEntity>> {
205
+ const params = {
206
+ language,
207
+ };
208
+
209
+ const result = await this.callApi<PrebuiltEntity[]>({
210
+ method: 'GET',
211
+ route: '/kb/entities/prebuilt/all',
212
+ params,
213
+ });
214
+
215
+ return makeList<PrebuiltEntity>(result);
216
+ }
217
+
218
+ /**
219
+ * List entities
220
+ * ```typescript
221
+ * const result = await knowledgeModels.listEntities({ type: 'type', kbId: 'kb-id', versionId: 'version-id', limit: 30 });
222
+ * ```
223
+ */
224
+ public async listEntities({ type, kbId, versionId, limit }: { type: string; kbId?: string; versionId?: string; limit?: number; }): Promise<List<Entity>> {
225
+ const params = {
226
+ kbId,
227
+ versionId,
228
+ limit,
229
+ };
230
+
231
+ return this.getFullList<Entity>('GET', `/kb/entities/${type}`, params);
232
+ }
233
+
234
+ /**
235
+ * List features
236
+ * ```typescript
237
+ * const result = await knowledgeModels.listFeatures({ type: 'type', kbId: 'kb-id', versionId: 'version-id', limit: 30 });
238
+ * ```
239
+ */
240
+ public async listFeatures({ kbId, versionId, limit }: { kbId: string; versionId?: string; limit?: number; }): Promise<List<Feature>> {
241
+ const params = {
242
+ kbId,
243
+ versionId,
244
+ limit,
245
+ };
246
+
247
+ return this.getFullList<Feature>('GET', '/phraselists', params);
248
+ }
249
+
250
+ /**
251
+ * List applications
252
+ * ```typescript
253
+ * const result = await knowledgeModels.listApplications({ kbId: 'kb-id', text: 'text', pattern: 'pattern', versionId: 'version-id', limit: 30, projection: ['fieldName'] });
254
+ * ```
255
+ */
256
+ public async listApplications({ kbId, text, pattern, versionId, limit, projection }: { kbId: string; text?: string; pattern?: string; versionId?: string; limit?: number; projection?: string[]; }): Promise<List<Application>> {
257
+ const params = {
258
+ kbId,
259
+ limit,
260
+ text,
261
+ pattern,
262
+ versionId,
263
+ projection,
264
+ };
265
+
266
+ return this.getFullList<Application>('GET', '/applications', params);
267
+ }
268
+
269
+ /**
270
+ * List intents labels
271
+ * ```typescript
272
+ * const result = await knowledgeModels.listIntentsLabels({ appId: 'app-id', kbId: 'kb-id' });
273
+ * ```
274
+ */
275
+ public async listIntentsLabels({ appId, kbId }: { appId: string; kbId: string; }): Promise<IntentLabelsResponse> {
276
+ const params = {
277
+ appId,
278
+ kbId,
279
+ };
280
+
281
+ return this.callApi<IntentLabelsResponse>({
282
+ method: 'GET',
283
+ route: '/intents/labels',
284
+ params,
285
+ });
286
+ }
287
+
288
+ /**
289
+ * List utterances
290
+ * ```typescript
291
+ * const result = await knowledgeModels.listUtterances({ kbId: 'kb-id', limit: 30 });
292
+ * ```
293
+ */
294
+ public async listUtterances({ kbId, limit, ...query }: { kbId: string; limit?: number; query?: { [key: string]: unknown; }; }): Promise<List<Utterance>> {
295
+ const params = {
296
+ kbId,
297
+ limit,
298
+ ...query,
299
+ };
300
+
301
+ return this.getFullList<Utterance>('GET', '/utterances', params);
302
+ }
303
+
304
+ /**
305
+ * List patterns
306
+ * ```typescript
307
+ * const result = await knowledgeModels.listPatterns({ kbId: 'kb-id', limit: 30 });
308
+ * ```
309
+ */
310
+ public async listPatterns({ kbId, limit, ...query }: { kbId: string; limit?: number; query?: { [key: string]: unknown; }; }): Promise<List<Pattern>> {
311
+ const params = {
312
+ kbId,
313
+ limit,
314
+ ...query,
315
+ };
316
+
317
+ return this.getFullList<Pattern>('GET', '/patterns', params);
318
+ }
319
+
320
+ /**
321
+ * List prebuilt models
322
+ * ```typescript
323
+ * const result = await knowledgeModels.listPrebuiltModels({ limit: 30 });
324
+ * ```
325
+ */
326
+ public async listPrebuiltModels({ limit, ...query }: { limit?: number; query?: { [key: string]: unknown; }; } = {}): Promise<List<PrebuiltModel>> {
327
+ const params = {
328
+ limit,
329
+ ...query,
330
+ };
331
+
332
+ return this.getFullList<PrebuiltModel>('GET', '/prebuilt-models', params);
333
+ }
334
+
335
+ /**
336
+ * Remove prebuilt model from knowledge model
337
+ * ```typescript
338
+ * await knowledgeModels.listPrebuiltModels({ prebuiltModelId: 'prebuilt-model-id', kbId: 'kb-id' });
339
+ * ```
340
+ */
341
+ public async removePrebuiltModelFromKM({ prebuiltModelId, kbId }: { prebuiltModelId: string; kbId: string; }): Promise<void> {
342
+ const params = {
343
+ prebuiltModelId,
344
+ kbId,
345
+ };
346
+
347
+ await this.callApi({
348
+ method: 'DELETE',
349
+ route: '/knowledge-base/prebuilt-model',
350
+ params,
351
+ });
352
+ }
353
+
354
+ /**
355
+ * Add prebuilt model to knowledge model
356
+ * ```typescript
357
+ * const result = await knowledgeModels.addPrebuiltModelToKM({
358
+ * kbId: 'kb-id',
359
+ * prebuiltModelId: 'prebuilt-model-id',
360
+ * appId: 'app-id',
361
+ * appName: 'App Name',
362
+ * shouldCreateNewApplication: false,
363
+ * responses: ['response'],
364
+ * entities: ['entity name'],
365
+ * });
366
+ * ```
367
+ */
368
+ public async addPrebuiltModelToKM({
369
+ kbId,
370
+ prebuiltModelId,
371
+ appId,
372
+ appName,
373
+ shouldCreateNewApplication,
374
+ responses,
375
+ entities,
376
+ }: {
377
+ kbId: string;
378
+ prebuiltModelId: string;
379
+ appId: string;
380
+ appName: string;
381
+ shouldCreateNewApplication: boolean;
382
+ responses: string[];
383
+ entities: string[];
384
+ }): Promise<Application> {
385
+ const data = {
386
+ kbId,
387
+ appId,
388
+ prebuiltModelId,
389
+ appName,
390
+ shouldCreateNewApplication,
391
+ responses,
392
+ entities,
393
+ };
394
+
395
+ return this.callApi<Application>({
396
+ method: 'POST',
397
+ route: '/knowledge-base/prebuilt-model',
398
+ data,
399
+ });
400
+ }
401
+
402
+ /**
403
+ * Get prebuilt models details
404
+ * ```typescript
405
+ * const result = await knowledgeModels.getPrebuiltModelDetails({ kbId: 'kb-id', prebuiltModelId: 'prebuilt-model-id' });
406
+ * ```
407
+ */
408
+ public async getPrebuiltModelDetails({ kbId, prebuiltModelId }: { kbId: string; prebuiltModelId: string; }): Promise<PrebuiltModelDetails> {
409
+ const params = {
410
+ kbId,
411
+ prebuiltModelId,
412
+ };
413
+
414
+ return this.callApi<PrebuiltModelDetails>({
415
+ method: 'GET',
416
+ route: '/knowledge-base/prebuilt-model',
417
+ params,
418
+ });
419
+ }
420
+
421
+ /**
422
+ * Create application
423
+ * ```typescript
424
+ * const result = await knowledgeModels.createApplication({ kbId: 'kb-id', name: 'Name', desc: 'Description', culture: 'en-us', model_features: ['feat-id'] });
425
+ * ```
426
+ */
427
+ public async createApplication({ kbId, name, desc, culture, model_features }: { kbId: string; name: string; desc: string; culture: string; model_features: string[]; }): Promise<Application> {
428
+ const data = {
429
+ kbId,
430
+ name,
431
+ desc,
432
+ culture,
433
+ model_features,
434
+ };
435
+
436
+ return this.callApi<Application>({
437
+ method: 'POST',
438
+ route: '/applications',
439
+ data,
440
+ });
441
+ }
442
+
443
+ /**
444
+ * Create intent
445
+ * ```typescript
446
+ * const result = await knowledgeModels.createIntent({ name: 'Name', type: 'type', kbId: 'kb-id', appId: 'app-id', postprocessFlows: ['flows-id'], customData: {}, features: ['feat-id']});
447
+ * ```
448
+ */
449
+ public async createIntent({ name, type, kbId, appId, postprocessFlows, customData, features }: { name: string; type: string; kbId: string; appId: string; postprocessFlows: string[]; customData?: { [key: string]: unknown; }; features: string[]; }): Promise<Intent> {
450
+ const data = {
451
+ name,
452
+ type,
453
+ postprocessFlows,
454
+ customData,
455
+ features,
456
+ };
457
+
458
+ const params = {
459
+ kbId,
460
+ appId,
461
+ };
462
+
463
+ return this.callApi<Intent>({
464
+ method: 'POST',
465
+ route: '/intents',
466
+ data,
467
+ params,
468
+ });
469
+ }
470
+
471
+ /**
472
+ * Create utterance
473
+ * ```typescript
474
+ * const result = await knowledgeModels.createUtterance({ appId: 'app-id', kbId: 'kb-id', autoGenerated: false, text: 'text', intent: 'intent-id', entities: [] });
475
+ * ```
476
+ */
477
+ public async createUtterance({ appId, kbId, autoGenerated, text, intent, entities }: { appId: string; kbId: string; autoGenerated?: boolean; text: string; intent: string; entities: UtteranceEntity[]; }): Promise<Utterance> {
478
+ const data = {
479
+ autoGenerated,
480
+ text,
481
+ intent,
482
+ entities,
483
+ };
484
+
485
+ const params = {
486
+ kbId,
487
+ appId,
488
+ };
489
+
490
+ return this.callApi<Utterance>({
491
+ method: 'POST',
492
+ route: '/utterances',
493
+ data,
494
+ params,
495
+ });
496
+ }
497
+
498
+ /**
499
+ * Create pattern
500
+ * ```typescript
501
+ * const result = await knowledgeModels.createPattern({ appId: 'app-id', kbId: 'kb-id', pattern: 'pattern', intent: 'intent-id', entities: [] });
502
+ * ```
503
+ */
504
+ public async createPattern({ appId, kbId, pattern, intent, entities }: { appId: string; kbId: string; pattern: string; intent: string; entities: PatternEntity[]; }): Promise<Pattern> {
505
+ const data = {
506
+ pattern,
507
+ intent,
508
+ entities,
509
+ };
510
+
511
+ const params = {
512
+ kbId,
513
+ appId,
514
+ };
515
+
516
+ return this.callApi<Pattern>({
517
+ method: 'POST',
518
+ route: '/patterns',
519
+ data,
520
+ params,
521
+ });
522
+ }
523
+
524
+ /**
525
+ * Create pair
526
+ * ```typescript
527
+ * const result = await knowledgeModels.createPair({ kbId: 'kb-id', applicationName: 'App name', intentName: 'Intent name', intentType: 'type', utteranceText: 'text' });
528
+ * ```
529
+ */
530
+ public async createPair({ kbId, applicationName, intentName, intentType, utteranceText }: { kbId: string; applicationName: string; intentName: string; intentType: string; utteranceText: string; }): Promise<Pair> {
531
+ const data = {
532
+ kbId,
533
+ applicationName,
534
+ intentName,
535
+ intentType,
536
+ utteranceText,
537
+ };
538
+
539
+ return this.callApi<Pair>({
540
+ method: 'POST',
541
+ route: '/knowledge-base/pair',
542
+ data,
543
+ });
544
+ }
545
+
546
+ /**
547
+ * Batch create pairs
548
+ * ```typescript
549
+ * const result = await knowledgeModels.batchCreatePairs({ kbId: 'kb-id', utterances: [] });
550
+ * ```
551
+ */
552
+ public async batchCreatePairs({ kbId, utterances }: { kbId: string; utterances: { text: string; intent: string; intentType: string; application: string; }[]; }): Promise<CreatePairsResponse> {
553
+ const data = {
554
+ kbId,
555
+ utterances,
556
+ };
557
+
558
+ return this.callApi<CreatePairsResponse>({
559
+ method: 'POST',
560
+ route: '/knowledge-base/pairs',
561
+ data,
562
+ });
563
+ }
564
+
565
+ /**
566
+ * Batch create pairs from file
567
+ * ```typescript
568
+ * const result = await knowledgeModels.batchCreatePairsFile({ kbId: 'kb-id', fileUrl: 'http://file.url' });
569
+ * ```
570
+ */
571
+ public async batchCreatePairsFile({ kbId, fileUrl }: { kbId: string; fileUrl: string; }): Promise<CreatePairsResponse> {
572
+ const data = {
573
+ kbId,
574
+ fileUrl,
575
+ };
576
+
577
+ return this.callApi<CreatePairsResponse>({
578
+ method: 'POST',
579
+ route: '/knowledge-base/pairs/file',
580
+ data,
581
+ });
582
+ }
583
+
584
+ /**
585
+ * Create pattern pair
586
+ * ```typescript
587
+ * const result = await knowledgeModels.createPatternPair({ kbId: 'kb-id', applicationName: 'App name', intentName: 'Intent name', intentType: 'type', patternText: 'text', patternEntities: [] });
588
+ * ```
589
+ */
590
+ public async createPatternPair({ kbId, applicationName, intentName, intentType, patternText, patternEntities }: { kbId: string; applicationName: string; intentName: string; intentType: string; patternText: string; patternEntities: PatternEntity[]; }): Promise<Pair> {
591
+ const data = {
592
+ kbId,
593
+ applicationName,
594
+ intentName,
595
+ intentType,
596
+ patternText,
597
+ patternEntities,
598
+ };
599
+
600
+ return this.callApi<Pair>({
601
+ method: 'POST',
602
+ route: '/knowledge-base/patterns/pair',
603
+ data,
604
+ });
605
+ }
606
+
607
+ /**
608
+ * Create pairs from csv
609
+ * ```typescript
610
+ * const result = await knowledgeModels.createPairsCsv({ kbId: 'kb-id', fileUrl: 'http://file.url', applicationName: 'App name', delimiter: 'delimiter' });
611
+ * ```
612
+ */
613
+ public async createPairsCsv({ kbId, fileUrl, applicationName, delimiter }: { kbId: string; fileUrl: string; applicationName: string; delimiter: string; }): Promise<CreatePairsResponse> {
614
+ const data = {
615
+ kbId,
616
+ applicationName,
617
+ fileUrl,
618
+ delimiter,
619
+ };
620
+
621
+ return this.callApi<CreatePairsResponse>({
622
+ method: 'POST',
623
+ route: '/knowledge-base/pair/csv',
624
+ data,
625
+ });
626
+ }
627
+
628
+ /**
629
+ * Create entity
630
+ * ```typescript
631
+ * const result = await knowledgeModels.createEntity({ type: 'type', kbId: 'kb-id', name: 'Name', roles: ['role'] });
632
+ * ```
633
+ */
634
+ public async createEntity({ type, kbId, name, roles, ...rest }: { type: string; kbId: string; name: string; roles: unknown[]; rest?: { [key: string]: unknown; }; }): Promise<Entity> {
635
+ const data = getEntityBody(type, {
636
+ name,
637
+ roles,
638
+ ...rest,
639
+ });
640
+
641
+ const params = {
642
+ kbId,
643
+ };
644
+
645
+ return this.callApi<Entity>({
646
+ method: 'POST',
647
+ route: `/kb/entities/${type}`,
648
+ data,
649
+ params,
650
+ });
651
+ }
652
+
653
+ /**
654
+ * Create feature
655
+ * ```typescript
656
+ * const result = await knowledgeModels.createFeature({ kbId: 'kb-id', name: 'Name', mode: false, words: ['word'], enabledForAllModels: true });
657
+ * ```
658
+ */
659
+ public async createFeature({ kbId, name, mode, words, enabledForAllModels }: { kbId: string; name: string; mode: boolean; words: string[]; enabledForAllModels: boolean; }): Promise<Feature> {
660
+ const data = {
661
+ name,
662
+ mode,
663
+ words,
664
+ enabledForAllModels,
665
+ };
666
+
667
+ const params = {
668
+ kbId,
669
+ };
670
+
671
+ return this.callApi<Feature>({
672
+ method: 'POST',
673
+ route: '/phraselists',
674
+ data,
675
+ params,
676
+ });
677
+ }
678
+
679
+ /**
680
+ * Update application
681
+ * ```typescript
682
+ * const result = await knowledgeModels.updateApplication({ kbId: 'kb-id', id: 'app-id', name: 'New name', desc: 'New desc', model_features: [] });
683
+ * ```
684
+ */
685
+ public async updateApplication({ kbId, id, name, desc, model_features }: { kbId: string; id: string; name?: string; desc?: string; model_features?: string[]; }): Promise<Application> {
686
+ const data = {
687
+ kbId,
688
+ id,
689
+ name,
690
+ desc,
691
+ model_features,
692
+ };
693
+
694
+ return this.callApi<Application>({
695
+ method: 'PUT',
696
+ route: '/applications',
697
+ data: data,
698
+ });
699
+ }
700
+
701
+ /**
702
+ * Update intent
703
+ * ```typescript
704
+ * const result = await knowledgeModels.updateIntent({ name: 'name', type: 'type', id: 'intent-id', appId: 'app-id', kbId: 'kb-id', postprocessFlows: [], customData: {}, features: [] });
705
+ * ```
706
+ */
707
+ public async updateIntent({ name, type, id, appId, kbId, postprocessFlows, customData, features }: { name?: string; type?: string; id: string; appId: string; kbId: string; postprocessFlows?: string[]; customData?: { [key: string]: unknown; }; features?: string[]; }): Promise<Intent> {
708
+ const data = {
709
+ name,
710
+ type,
711
+ postprocessFlows,
712
+ customData,
713
+ features,
714
+ };
715
+
716
+ const params = {
717
+ id,
718
+ kbId,
719
+ appId,
720
+ };
721
+
722
+ return this.callApi<Intent>({
723
+ method: 'PUT',
724
+ route: '/intents',
725
+ data,
726
+ params,
727
+ });
728
+ }
729
+
730
+ /**
731
+ * Update utterance
732
+ * ```typescript
733
+ * const result = await knowledgeModels.updateUtterance({ appId: 'app-id', kbId: 'kb-id', utterance });
734
+ * ```
735
+ */
736
+ public async updateUtterance({ appId, kbId, utterance }: { appId: string; kbId: string; utterance: Utterance; }): Promise<Utterance> {
737
+ const params = {
738
+ kbId,
739
+ appId,
740
+ };
741
+
742
+ return this.callApi<Utterance>({
743
+ method: 'PUT',
744
+ route: '/utterances',
745
+ data: utterance,
746
+ params,
747
+ });
748
+ }
749
+
750
+ /**
751
+ * Update pattern
752
+ * ```typescript
753
+ * const result = await knowledgeModels.updatePattern({ appId: 'app-id', kbId: 'kb-id', pattern });
754
+ * ```
755
+ */
756
+ public async updatePattern({ appId, kbId, pattern }: { appId: string; kbId: string; pattern: Pattern; }): Promise<Pattern> {
757
+ const params = {
758
+ kbId,
759
+ appId,
760
+ };
761
+
762
+ return this.callApi<Pattern>({
763
+ method: 'PUT',
764
+ route: '/patterns',
765
+ data: pattern,
766
+ params,
767
+ });
768
+ }
769
+
770
+ /**
771
+ * Update pair
772
+ * ```typescript
773
+ * const result = await knowledgeModels.updatePair({ kbId: 'kb-id', applicationName: 'appName', intentName: 'intName', intentType: 'type', utterance });
774
+ * ```
775
+ */
776
+ public async updatePair({ kbId, applicationName, intentName, intentType, utterance }: { kbId: string; applicationName: string; intentName: string; intentType: string; utterance: Utterance; }): Promise<void> {
777
+ const data = {
778
+ kbId,
779
+ applicationName,
780
+ intentName,
781
+ intentType,
782
+ utterance,
783
+ };
784
+
785
+ await this.callApi<void>({
786
+ method: 'PUT',
787
+ route: '/knowledge-base/pair',
788
+ data,
789
+ });
790
+ }
791
+
792
+ /**
793
+ * Batch update pairs
794
+ * ```typescript
795
+ * const result = await knowledgeModels.batchUpdatePairs({ kbId: 'kb-id', utterances: [utterance] });
796
+ * ```
797
+ */
798
+ public async batchUpdatePairs({ kbId, utterances }: { kbId: string; utterances: Utterance[]; }): Promise<UpdatedPairsResponse> {
799
+ const params = {
800
+ kbId,
801
+ };
802
+
803
+ return this.callApi<UpdatedPairsResponse>({
804
+ method: 'PUT',
805
+ route: '/knowledge-base/pairs',
806
+ data: utterances,
807
+ params,
808
+ });
809
+ }
810
+
811
+ /**
812
+ * Update entity
813
+ * ```typescript
814
+ * const result = await knowledgeModels.updateEntity({ type: 'type', id: 'id', kbId: 'kb-id', name: 'Name', roles: [] });
815
+ * ```
816
+ */
817
+ public async updateEntity({ type, id, kbId, name, roles, ...rest }: { type: string; id: string; kbId: string; name?: string; roles?: string[]; rest?: { [key: string]: unknown; }; }): Promise<Entity> {
818
+ const data = getEntityBody(type, {
819
+ name,
820
+ roles,
821
+ ...rest,
822
+ });
823
+
824
+ const params = {
825
+ id,
826
+ kbId,
827
+ };
828
+
829
+ return this.callApi<Entity>({
830
+ method: 'PUT',
831
+ route: `/kb/entities/${type}`,
832
+ data,
833
+ params,
834
+ });
835
+ }
836
+
837
+ /**
838
+ * Update feature
839
+ * ```typescript
840
+ * const result = await knowledgeModels.updateFeature({ kbId: 'kb-id', id: 'id', name: 'Name', mode: false, words: [], enabledForAllModels: true, activated: true });
841
+ * ```
842
+ */
843
+ public async updateFeature({ kbId, id, name, mode, words, enabledForAllModels, activated = true }: { kbId: string; id: string; name: string; mode: boolean; words: string[]; enabledForAllModels: boolean; activated: boolean; }): Promise<Feature> {
844
+ const data = {
845
+ name,
846
+ mode,
847
+ words,
848
+ enabledForAllModels,
849
+ activated,
850
+ };
851
+
852
+ const params = {
853
+ id,
854
+ kbId,
855
+ };
856
+
857
+ return this.callApi<Feature>({
858
+ method: 'PUT',
859
+ route: '/phraselists',
860
+ data,
861
+ params,
862
+ });
863
+ }
864
+
865
+ /**
866
+ * Update prebuilt entities
867
+ * ```typescript
868
+ * const result = await knowledgeModels.updatePrebuiltEntities({ kbId: 'kb-id', entity: { name: '', roles: [] } });
869
+ * ```
870
+ */
871
+ public async updatePrebuiltEntities({ kbId, id, entity }: { kbId: string; id: string; entity: { name: string; roles: string[]; }; }): Promise<Entity> {
872
+ const params = {
873
+ kbId,
874
+ id,
875
+ };
876
+
877
+ return this.callApi<Entity>({
878
+ method: 'PUT',
879
+ route: '/kb/entities/prebuilt',
880
+ data: entity,
881
+ params,
882
+ });
883
+ }
884
+
885
+ /**
886
+ * Delete knowledge base
887
+ * ```typescript
888
+ * await knowledgeModels.deleteKnowledgeBase({ id: 'id' });
889
+ * ```
890
+ */
891
+ public async deleteKnowledgeBase({ id }: { id: string; }): Promise<void> {
892
+ const params = {
893
+ id,
894
+ };
895
+
896
+ await this.callApi<void>({
897
+ method: 'DELETE',
898
+ route: '/knowledge-base',
899
+ params,
900
+ });
901
+ }
902
+
903
+ /**
904
+ * Delete application
905
+ * ```typescript
906
+ * await knowledgeModels.deleteApplication({ kbId: 'kb-id', appId: 'app-id' });
907
+ * ```
908
+ */
909
+ public async deleteApplication({ kbId, appId }: { kbId: string; appId: string; }): Promise<void> {
910
+ const params = {
911
+ kbId,
912
+ appId,
913
+ };
914
+
915
+ await this.callApi<void>({
916
+ method: 'DELETE',
917
+ route: '/applications',
918
+ params,
919
+ });
920
+ }
921
+
922
+ /**
923
+ * Delete intent
924
+ * ```typescript
925
+ * await knowledgeModels.deleteIntent({ id: 'id', kbId: 'kb-id', appId: 'app-id' });
926
+ * ```
927
+ */
928
+ public async deleteIntent({ id, appId, kbId }: { id: string; appId: string; kbId: string; }): Promise<void> {
929
+ const params = {
930
+ id,
931
+ kbId,
932
+ appId,
933
+ deleteUtterances: true,
934
+ };
935
+
936
+ await this.callApi<void>({
937
+ method: 'DELETE',
938
+ route: '/intents',
939
+ params,
940
+ });
941
+ }
942
+
943
+ /**
944
+ * Delete utterance
945
+ * ```typescript
946
+ * await knowledgeModels.deleteUtterance({ id: 'id', kbId: 'kb-id' });
947
+ * ```
948
+ */
949
+ public async deleteUtterance({ id, kbId }: { id: string; kbId: string; }): Promise<void> {
950
+ const params = {
951
+ id,
952
+ kbId,
953
+ };
954
+
955
+ await this.callApi<void>({
956
+ method: 'DELETE',
957
+ route: '/utterances',
958
+ params,
959
+ });
960
+ }
961
+
962
+ /**
963
+ * Batch delete utterances
964
+ * ```typescript
965
+ * await knowledgeModels.batchDeleteUtterances({ ids: ['id'], kbId: 'kb-id' });
966
+ * ```
967
+ */
968
+ public async batchDeleteUtterances({ ids, kbId }: { ids: string[]; kbId: string; }): Promise<void> {
969
+ const params = {
970
+ kbId,
971
+ };
972
+
973
+ await this.callApi<void>({
974
+ method: 'POST',
975
+ route: '/utterances/bulk/delete',
976
+ params,
977
+ data: ids,
978
+ });
979
+ }
980
+
981
+ /**
982
+ * Delete pattern
983
+ * ```typescript
984
+ * await knowledgeModels.deletePattern({ id: 'id', kbId: 'kb-id' });
985
+ * ```
986
+ */
987
+ public async deletePattern({ id, kbId }: { id: string; kbId: string; }): Promise<void> {
988
+ const params = {
989
+ id,
990
+ kbId,
991
+ };
992
+
993
+ await this.callApi<void>({
994
+ method: 'DELETE',
995
+ route: '/patterns',
996
+ params,
997
+ });
998
+ }
999
+
1000
+ /**
1001
+ * Delete entity
1002
+ * ```typescript
1003
+ * await knowledgeModels.deleteEntity({ type: 'type', id: 'id', kbId: 'kb-id' });
1004
+ * ```
1005
+ */
1006
+ public async deleteEntity({ type, id, kbId }: { type: string; id: string; kbId: string; }): Promise<void> {
1007
+ const params = {
1008
+ id,
1009
+ kbId,
1010
+ };
1011
+
1012
+ await this.callApi<void>({
1013
+ method: 'DELETE',
1014
+ route: `/kb/entities/${type}`,
1015
+ params,
1016
+ });
1017
+ }
1018
+
1019
+ /**
1020
+ * Delete feature
1021
+ * ```typescript
1022
+ * await knowledgeModels.deleteFeature({ id: 'id', kbId: 'kb-id' });
1023
+ * ```
1024
+ */
1025
+ public async deleteFeature({ id, kbId }: { id: string; kbId: string; }): Promise<void> {
1026
+ const params = {
1027
+ id,
1028
+ kbId,
1029
+ };
1030
+
1031
+ await this.callApi<void>({
1032
+ method: 'DELETE',
1033
+ route: '/phraselists',
1034
+ params,
1035
+ });
1036
+ }
1037
+
1038
+ /**
1039
+ * Get training status
1040
+ * ```typescript
1041
+ * const result = await knowledgeModels.getTrainStatus({ kbId: 'kb-id' });
1042
+ * ```
1043
+ */
1044
+ public async getTrainStatus({ kbId, versionId = null }: { kbId: string; versionId: string | null; }): Promise<TrainStatusResponse> {
1045
+ const params = {
1046
+ kbId,
1047
+ versionId,
1048
+ };
1049
+
1050
+ return this.callApi<TrainStatusResponse>({
1051
+ method: 'GET',
1052
+ route: '/train/status',
1053
+ params,
1054
+ });
1055
+ }
1056
+
1057
+ /**
1058
+ * Start training
1059
+ * ```typescript
1060
+ * const result = await knowledgeModels.train({ kbId: 'kb-id', flowId: 'flow-id', phraseId: 'phrase-id', sessionId: 'session-id', autoPublish: true });
1061
+ * ```
1062
+ */
1063
+ public async train({ kbId, flowId, phraseId, sessionId, autoPublish }: { kbId: string; flowId?: string; phraseId?: string; sessionId?: string; autoPublish: boolean; }): Promise<TrainResponse> {
1064
+ const params = {
1065
+ kbId,
1066
+ flowId,
1067
+ phraseId,
1068
+ sessionId,
1069
+ autoPublish,
1070
+ };
1071
+
1072
+ return this.callApi<TrainResponse>({
1073
+ method: 'POST',
1074
+ route: '/kb/train',
1075
+ params,
1076
+ data: null,
1077
+ });
1078
+ }
1079
+
1080
+ /**
1081
+ * Start training for test
1082
+ * ```typescript
1083
+ * const result = await knowledgeModels.trainForTest({ kbId: 'kb-id', flowId: 'flow-id', phraseId: 'phrase-id', sessionId: 'session-id' });
1084
+ * ```
1085
+ */
1086
+ public async trainForTest({ kbId, flowId, phraseId, sessionId }: { kbId: string; flowId?: string; phraseId?: string; sessionId?: string; }): Promise<TrainResponse> {
1087
+ const params = {
1088
+ kbId,
1089
+ flowId,
1090
+ phraseId,
1091
+ sessionId,
1092
+ };
1093
+
1094
+ return this.callApi<TrainResponse>({
1095
+ method: 'POST',
1096
+ route: '/kb/train/test',
1097
+ params,
1098
+ data: null,
1099
+ });
1100
+ }
1101
+
1102
+ /**
1103
+ * Publish knowledge model
1104
+ * ```typescript
1105
+ * const result = await knowledgeModels.publish({ kbId: 'kb-id' });
1106
+ * ```
1107
+ */
1108
+ public async publish({ kbId, versionId = null }: { kbId: string; versionId?: string | null; }): Promise<PublishResponse> {
1109
+ const params = {
1110
+ kbId,
1111
+ versionId,
1112
+ };
1113
+
1114
+ return this.callApi<PublishResponse>({
1115
+ method: 'POST',
1116
+ route: '/kb/publish',
1117
+ params,
1118
+ data: null,
1119
+ });
1120
+ }
1121
+
1122
+ /**
1123
+ * Recover knowledge model version
1124
+ * ```typescript
1125
+ * const result = await knowledgeModels.recover({ kbId: 'kb-id', versionId: 'version-id' });
1126
+ * ```
1127
+ */
1128
+ public async recover({ kbId, versionId }: { kbId: string; versionId: string; }): Promise<void> {
1129
+ const params = {
1130
+ kbId,
1131
+ versionId,
1132
+ };
1133
+
1134
+ await this.callApi<void>({
1135
+ method: 'POST',
1136
+ route: '/kb/recover',
1137
+ params,
1138
+ data: null,
1139
+ });
1140
+ }
1141
+
1142
+ /**
1143
+ * Delete knowledge model version
1144
+ * ```typescript
1145
+ * const result = await knowledgeModels.recover({ kbId: 'kb-id', versionId: 'version-id' });
1146
+ * ```
1147
+ */
1148
+ public async deleteVersion({ kbId, versionId }: { kbId: string; versionId: string; }): Promise<void> {
1149
+ const params = {
1150
+ kbId,
1151
+ versionId,
1152
+ };
1153
+
1154
+ await this.callApi<void>({
1155
+ method: 'DELETE',
1156
+ route: '/kb/versions',
1157
+ params,
1158
+ });
1159
+ }
1160
+
1161
+ /**
1162
+ * Clone knowledge model
1163
+ * ```typescript
1164
+ * const result = await knowledgeModels.clone({ kbId: 'kb-id', newName: 'New name' });
1165
+ * ```
1166
+ */
1167
+ public async clone({ kbId, newName }: { kbId: string; newName: string; }): Promise<CloneResponse> {
1168
+ const data = {
1169
+ newName,
1170
+ };
1171
+
1172
+ const params = {
1173
+ id: kbId,
1174
+ };
1175
+
1176
+ return this.callApi<CloneResponse>({
1177
+ method: 'POST',
1178
+ route: '/knowledge-base/clone',
1179
+ params,
1180
+ data,
1181
+ });
1182
+ }
1183
+
1184
+ /**
1185
+ * Export knowledge model
1186
+ * ```typescript
1187
+ * const file = await knowledgeModels.export({ kbId: 'kb-id', isPublic: true });
1188
+ * ```
1189
+ */
1190
+ public async export({ kbId, isPublic }: { kbId: string; isPublic?: boolean; }): Promise<string> {
1191
+ const params = {
1192
+ id: kbId,
1193
+ isPublic,
1194
+ };
1195
+
1196
+ return this.callApi<string>({
1197
+ method: 'GET',
1198
+ route: '/knowledge-base/export',
1199
+ params,
1200
+ });
1201
+ }
1202
+
1203
+ /**
1204
+ * Import knowledge model
1205
+ * ```typescript
1206
+ * const result = await knowledgeModels.import({ fileUrl: 'http://file.url', knowledgeBase: {} });
1207
+ * ```
1208
+ */
1209
+ public async import({ fileUrl, knowledgeBase }: { fileUrl: string; knowledgeBase: KnowledgeModelCreateParams; }): Promise<ImportResponse> {
1210
+ const data = {
1211
+ fileUrl,
1212
+ knowledgeBase,
1213
+ };
1214
+
1215
+ return this.callApi<ImportResponse>({
1216
+ method: 'POST',
1217
+ route: '/knowledge-base/import',
1218
+ data,
1219
+ });
1220
+ }
1221
+
1222
+ /**
1223
+ * Import knowledge model from JSON
1224
+ * ```typescript
1225
+ * const result = await knowledgeModels.importJson(jsonString);
1226
+ * ```
1227
+ */
1228
+ public async importJson(data: string): Promise<ImportResponse> {
1229
+ return this.callApi<ImportResponse>({
1230
+ method: 'POST',
1231
+ route: '/knowledge-base/import/json',
1232
+ data,
1233
+ });
1234
+ }
1235
+
1236
+ /**
1237
+ * Import knowledge model from csv
1238
+ * ```typescript
1239
+ * const result = await knowledgeModels.importCsv({ fileUrl: 'http://file.url', knowledgeBase: {}, applicationName: 'appName', delimiter: 'delimiter' });
1240
+ * ```
1241
+ */
1242
+ public async importCsv({ fileUrl, knowledgeBase, applicationName, delimiter }: { fileUrl: string; knowledgeBase: KnowledgeModelCreateParams; applicationName?: string; delimiter?: string; }): Promise<ImportResponse> {
1243
+ const data = {
1244
+ fileUrl,
1245
+ knowledgeBase,
1246
+ applicationName,
1247
+ delimiter,
1248
+ };
1249
+
1250
+ return this.callApi<ImportResponse>({
1251
+ method: 'POST',
1252
+ route: '/knowledge-base/import/csv',
1253
+ data,
1254
+ });
1255
+ }
1256
+
1257
+ /**
1258
+ * meaning
1259
+ * ```typescript
1260
+ * const result = await knowledgeModels.meaning(???);
1261
+ * ```
1262
+ */
1263
+ public async meaning(data: {
1264
+ q: string;
1265
+ appId: string;
1266
+ kbId: string;
1267
+ suggestedConfidenceRange?: [number, number];
1268
+ unrecognizedConfidenceRange?: [number, number];
1269
+ allowSuggested: boolean;
1270
+ allowUnrecognized: boolean;
1271
+ spellCheckEnabled?: boolean;
1272
+ phraseId: string;
1273
+ sessionId: string;
1274
+ flowId: string;
1275
+ }): Promise<MeaningResponse> {
1276
+ return this.callApi<MeaningResponse>({
1277
+ method: 'POST',
1278
+ route: '/meaning',
1279
+ data,
1280
+ });
1281
+ }
1282
+
1283
+ /**
1284
+ * Test meaning
1285
+ * ```typescript
1286
+ * const result = await knowledgeModels.testMeaning({ q: 'text', appId: 'app-id', kbId: 'kb-id' });
1287
+ * ```
1288
+ */
1289
+ public async testMeaning({ q, appId, kbId }: { q: string; appId: string; kbId: string; }): Promise<MeaningResponse> {
1290
+ const data = {
1291
+ q,
1292
+ appId,
1293
+ kbId,
1294
+ };
1295
+
1296
+ return this.callApi<MeaningResponse>({
1297
+ method: 'POST',
1298
+ route: '/meaning/test',
1299
+ data,
1300
+ });
1301
+ }
1302
+ }