@ctchealth/plato-sdk 0.0.23 → 0.0.25
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/README.md +8 -3
- package/package.json +1 -1
- package/src/lib/call-helpers.d.ts +23 -0
- package/src/lib/call-helpers.js +94 -0
- package/src/lib/call-helpers.js.map +1 -0
- package/src/lib/plato-intefaces.d.ts +37 -1
- package/src/lib/plato-intefaces.js +1 -0
- package/src/lib/plato-intefaces.js.map +1 -1
- package/src/lib/plato-sdk.d.ts +12 -47
- package/src/lib/plato-sdk.js +49 -429
- package/src/lib/plato-sdk.js.map +1 -1
- package/src/lib/utils.d.ts +1 -0
- package/src/lib/utils.js +22 -0
- package/src/lib/utils.js.map +1 -1
package/README.md
CHANGED
|
@@ -486,10 +486,14 @@ await client.deleteSimulation('507f1f77bcf86cd799439011');
|
|
|
486
486
|
|
|
487
487
|
**Note:** This action is irreversible. All calls and recordings linked to the simulation will also be deleted.
|
|
488
488
|
|
|
489
|
-
##### getRecommendations()
|
|
489
|
+
##### getRecommendations(language?)
|
|
490
490
|
|
|
491
491
|
Retrieves recommendations based on the user's recent call performance. Analyzes the 5 most recent calls using a sliding window of 3 calls to identify patterns and provide actionable insights. Calls shorter than 2 minutes are excluded from analysis, as are calls made against learning-mode simulations (`isLearning: true`). No new recommendations are generated if fewer than 3 eligible calls are available.
|
|
492
492
|
|
|
493
|
+
**Parameters:**
|
|
494
|
+
|
|
495
|
+
- `language` (optional): `AvatarLanguage` — the user's language. All recommendation text is written in this language. Defaults to the language of the user's most recent simulation. Changing the language regenerates the recommendations.
|
|
496
|
+
|
|
493
497
|
**Returns:** `Promise<RecommendationsResponseDto>` — An object containing:
|
|
494
498
|
|
|
495
499
|
- `recommendations`: Array of recommendation objects, each with:
|
|
@@ -509,8 +513,8 @@ Retrieves recommendations based on the user's recent call performance. Analyzes
|
|
|
509
513
|
**Example:**
|
|
510
514
|
|
|
511
515
|
```typescript
|
|
512
|
-
// Get personalized recommendations based on call history
|
|
513
|
-
const recommendations = await client.getRecommendations();
|
|
516
|
+
// Get personalized recommendations based on call history, in the user's language
|
|
517
|
+
const recommendations = await client.getRecommendations(AvatarLanguage.German);
|
|
514
518
|
|
|
515
519
|
console.log(`Analyzed ${recommendations.callsAnalyzed} calls`);
|
|
516
520
|
console.log('Summary:', recommendations.summary);
|
|
@@ -1497,6 +1501,7 @@ enum AvatarLanguage {
|
|
|
1497
1501
|
French = 'fr',
|
|
1498
1502
|
Arabic = 'ar',
|
|
1499
1503
|
Russian = 'ru',
|
|
1504
|
+
Ukrainian = 'uk',
|
|
1500
1505
|
}
|
|
1501
1506
|
```
|
|
1502
1507
|
|
package/package.json
CHANGED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 ctcHealth. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* This file is part of the ctcHealth Plato Platform, a proprietary software system developed by ctcHealth.
|
|
5
|
+
*
|
|
6
|
+
* This source code and all related materials are confidential and proprietary to ctcHealth.
|
|
7
|
+
* Unauthorized access, use, copying, modification, distribution, or disclosure is strictly prohibited
|
|
8
|
+
* and may result in disciplinary action and civil and/or criminal penalties.
|
|
9
|
+
*
|
|
10
|
+
* This software is intended solely for authorized use within ctcHealth and its designated partners.
|
|
11
|
+
*
|
|
12
|
+
* For internal use only.
|
|
13
|
+
*/
|
|
14
|
+
import { AxiosInstance } from 'axios';
|
|
15
|
+
import { CallCreateDto, CallDTO, CallEventMap, CallEventNames } from './plato-intefaces';
|
|
16
|
+
export type EmitFn = <K extends CallEventNames>(event: K, payload: CallEventMap[K]) => void;
|
|
17
|
+
export declare function createCall(http: AxiosInstance, payload: CallCreateDto): Promise<CallDTO>;
|
|
18
|
+
export declare function setPostCallEligibility(http: AxiosInstance, callId: string, eligible: boolean): Promise<void>;
|
|
19
|
+
export declare function triggerPostcallFallback(http: AxiosInstance, callId: string, emit: EmitFn, removeAllEventListeners: () => void): Promise<void>;
|
|
20
|
+
export declare function fetchAndEmitCallDetails(http: AxiosInstance, callId: string, emit: EmitFn, removeAllEventListeners: () => void): Promise<void>;
|
|
21
|
+
export declare function startPolling(http: AxiosInstance, callId: string, emit: EmitFn, removeAllEventListeners: () => void): {
|
|
22
|
+
stopPolling: () => void;
|
|
23
|
+
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createCall = createCall;
|
|
4
|
+
exports.setPostCallEligibility = setPostCallEligibility;
|
|
5
|
+
exports.triggerPostcallFallback = triggerPostcallFallback;
|
|
6
|
+
exports.fetchAndEmitCallDetails = fetchAndEmitCallDetails;
|
|
7
|
+
exports.startPolling = startPolling;
|
|
8
|
+
async function createCall(http, payload) {
|
|
9
|
+
const response = await http.post('/api/v1/simulation/call', { ...payload });
|
|
10
|
+
return response.data;
|
|
11
|
+
}
|
|
12
|
+
async function setPostCallEligibility(http, callId, eligible) {
|
|
13
|
+
try {
|
|
14
|
+
await http.patch(`/api/v1/simulation/call/${callId}/eligibility`, {
|
|
15
|
+
postCallEligibility: eligible,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// ignore — eligibility flag is best-effort
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async function triggerPostcallFallback(http, callId, emit, removeAllEventListeners) {
|
|
23
|
+
const maxAttempts = 2;
|
|
24
|
+
const retryDelayMs = 4000;
|
|
25
|
+
let lastError;
|
|
26
|
+
try {
|
|
27
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
28
|
+
try {
|
|
29
|
+
await http.post('/api/v1/postcall/call-ended', { callId });
|
|
30
|
+
const { data } = await http.get(`/api/v1/simulation/call/${callId}`);
|
|
31
|
+
emit('call-details-ready', data);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
lastError = e;
|
|
36
|
+
if (attempt < maxAttempts) {
|
|
37
|
+
await new Promise(resolve => setTimeout(resolve, retryDelayMs));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
emit('error', lastError instanceof Error ? lastError : new Error('Failed to process call details'));
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
removeAllEventListeners();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async function fetchAndEmitCallDetails(http, callId, emit, removeAllEventListeners) {
|
|
48
|
+
try {
|
|
49
|
+
const { data } = await http.get(`/api/v1/simulation/call/${callId}`);
|
|
50
|
+
emit('call-details-ready', data);
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
emit('error', e instanceof Error ? e : new Error('Failed to fetch call details'));
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
removeAllEventListeners();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function startPolling(http, callId, emit, removeAllEventListeners) {
|
|
60
|
+
let stopped = false;
|
|
61
|
+
let nextPollTimer;
|
|
62
|
+
const poll = async () => {
|
|
63
|
+
if (stopped)
|
|
64
|
+
return;
|
|
65
|
+
try {
|
|
66
|
+
const { data } = await http.get(`/api/v1/simulation/call/${callId}`);
|
|
67
|
+
if (data.transcript) {
|
|
68
|
+
stopped = true;
|
|
69
|
+
clearTimeout(globalTimer);
|
|
70
|
+
emit('call-details-ready', data);
|
|
71
|
+
removeAllEventListeners();
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// ignore transient errors, keep polling
|
|
77
|
+
}
|
|
78
|
+
nextPollTimer = setTimeout(() => void poll(), 3000);
|
|
79
|
+
};
|
|
80
|
+
nextPollTimer = setTimeout(() => void poll(), 3000);
|
|
81
|
+
const globalTimer = setTimeout(() => {
|
|
82
|
+
stopped = true;
|
|
83
|
+
clearTimeout(nextPollTimer);
|
|
84
|
+
void triggerPostcallFallback(http, callId, emit, removeAllEventListeners);
|
|
85
|
+
}, 60000);
|
|
86
|
+
return {
|
|
87
|
+
stopPolling: () => {
|
|
88
|
+
stopped = true;
|
|
89
|
+
clearTimeout(nextPollTimer);
|
|
90
|
+
clearTimeout(globalTimer);
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=call-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-helpers.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/call-helpers.ts"],"names":[],"mappings":";;AAkBA,gCAGC;AAED,wDAYC;AAED,0DA+BC;AAED,0DAcC;AAED,oCAyCC;AA7GM,KAAK,UAAU,UAAU,CAAC,IAAmB,EAAE,OAAsB;IAC1E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC5E,OAAO,QAAQ,CAAC,IAAe,CAAC;AAClC,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,IAAmB,EACnB,MAAc,EACd,QAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,CAAC,2BAA2B,MAAM,cAAc,EAAE;YAChE,mBAAmB,EAAE,QAAQ;SAC9B,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,IAAmB,EACnB,MAAc,EACd,IAAY,EACZ,uBAAmC;IAEnC,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,MAAM,YAAY,GAAG,IAAI,CAAC;IAC1B,IAAI,SAAkB,CAAC;IAEvB,IAAI,CAAC;QACH,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC3D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAU,2BAA2B,MAAM,EAAE,CAAC,CAAC;gBAC9E,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;gBACjC,OAAO;YACT,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,SAAS,GAAG,CAAC,CAAC;gBACd,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;oBAC1B,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CACF,OAAO,EACP,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CACrF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,uBAAuB,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,IAAmB,EACnB,MAAc,EACd,IAAY,EACZ,uBAAmC;IAEnC,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAU,2BAA2B,MAAM,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;IACpF,CAAC;YAAS,CAAC;QACT,uBAAuB,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAC1B,IAAmB,EACnB,MAAc,EACd,IAAY,EACZ,uBAAmC;IAEnC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,aAAwD,CAAC;IAE7D,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;QACrC,IAAI,OAAO;YAAE,OAAO;QACpB,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAU,2BAA2B,MAAM,EAAE,CAAC,CAAC;YAC9E,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,WAAW,CAAC,CAAC;gBAC1B,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;gBACjC,uBAAuB,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;QACD,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;QAClC,OAAO,GAAG,IAAI,CAAC;QACf,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5B,KAAK,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,CAAC,CAAC;IAC5E,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,OAAO;QACL,WAAW,EAAE,GAAS,EAAE;YACtB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,YAAY,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -42,7 +42,8 @@ export declare enum AvatarLanguage {
|
|
|
42
42
|
Italian = "it",
|
|
43
43
|
French = "fr",
|
|
44
44
|
Arabic = "ar",
|
|
45
|
-
Russian = "ru"
|
|
45
|
+
Russian = "ru",
|
|
46
|
+
Ukrainian = "uk"
|
|
46
47
|
}
|
|
47
48
|
export declare class PersonalityAndBehaviourDto {
|
|
48
49
|
riskTolerance: number;
|
|
@@ -353,6 +354,41 @@ export interface AssistantImageDto {
|
|
|
353
354
|
_id: string;
|
|
354
355
|
imageUrl: string;
|
|
355
356
|
}
|
|
357
|
+
export interface ToolCall {
|
|
358
|
+
function: {
|
|
359
|
+
name: string;
|
|
360
|
+
arguments: {
|
|
361
|
+
slideNumber?: number;
|
|
362
|
+
progressObjectiveNumber?: number;
|
|
363
|
+
[key: string]: unknown;
|
|
364
|
+
};
|
|
365
|
+
};
|
|
366
|
+
id: string;
|
|
367
|
+
}
|
|
368
|
+
export interface CallEventMap {
|
|
369
|
+
'call-start': undefined;
|
|
370
|
+
'call-end': undefined;
|
|
371
|
+
'speech-start': undefined;
|
|
372
|
+
'speech-end': undefined;
|
|
373
|
+
error: Error;
|
|
374
|
+
message: {
|
|
375
|
+
type: string;
|
|
376
|
+
role: string;
|
|
377
|
+
transcript?: string;
|
|
378
|
+
transcriptType: 'final' | 'partial';
|
|
379
|
+
toolCallList?: ToolCall[];
|
|
380
|
+
toolCalls?: ToolCall[];
|
|
381
|
+
[key: string]: unknown;
|
|
382
|
+
};
|
|
383
|
+
'volume-level': number;
|
|
384
|
+
'call-details-ready': CallDTO;
|
|
385
|
+
'call-ended-reason': {
|
|
386
|
+
reason: string;
|
|
387
|
+
isInactivity: boolean;
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
export type CallEventNames = keyof CallEventMap;
|
|
391
|
+
export type CallEventListener<K extends CallEventNames> = (payload: CallEventMap[K]) => void;
|
|
356
392
|
/**
|
|
357
393
|
* Represents the state of an active call stored in localStorage for recovery purposes.
|
|
358
394
|
* Used to detect and recover abandoned calls after page refresh.
|
|
@@ -51,6 +51,7 @@ var AvatarLanguage;
|
|
|
51
51
|
AvatarLanguage["French"] = "fr";
|
|
52
52
|
AvatarLanguage["Arabic"] = "ar";
|
|
53
53
|
AvatarLanguage["Russian"] = "ru";
|
|
54
|
+
AvatarLanguage["Ukrainian"] = "uk";
|
|
54
55
|
})(AvatarLanguage || (exports.AvatarLanguage = AvatarLanguage = {}));
|
|
55
56
|
class PersonalityAndBehaviourDto {
|
|
56
57
|
riskTolerance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plato-intefaces.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/plato-intefaces.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACH,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,qCAAmB,CAAA;IACnB,uCAAqB,CAAA;IACrB,yCAAuB,CAAA;IACvB,qCAAmB,CAAA;AACrB,CAAC,EALW,gBAAgB,gCAAhB,gBAAgB,QAK3B;AAED,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,4CAA4B,CAAA;IAC5B,qCAAqB,CAAA;IACrB,iEAAiD,CAAA;IACjD,iCAAiB,CAAA;AACnB,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB;AACD,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,oDAAqC,CAAA;IACrC,0CAA2B,CAAA;IAC3B,0EAA2D,CAAA;IAC3D,gFAAiE,CAAA;IACjE,qDAAsC,CAAA;IACtC,wEAAyD,CAAA;AAC3D,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB;AAED,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,qCAAa,CAAA;IACb,yCAAiB,CAAA;AACnB,CAAC,EAHW,oBAAoB,oCAApB,oBAAoB,QAG/B;AAED,IAAY,
|
|
1
|
+
{"version":3,"file":"plato-intefaces.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/plato-intefaces.ts"],"names":[],"mappings":"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"}
|
package/src/lib/plato-sdk.d.ts
CHANGED
|
@@ -1,48 +1,11 @@
|
|
|
1
|
-
import { CallDTO, CreateSimulationDto, CreationPhase, SimulationRecordingsDto, SimulationRecordingsQueryDto, SimulationDetailsDto, RecommendationsResponseDto, PdfSlideDto, CheckPdfStatusResponse, AssistantImageDto } from './plato-intefaces';
|
|
1
|
+
import { CallDTO, CreateSimulationDto, CreationPhase, SimulationRecordingsDto, SimulationRecordingsQueryDto, SimulationDetailsDto, RecommendationsResponseDto, PdfSlideDto, CheckPdfStatusResponse, AssistantImageDto, CallEventMap, CallEventNames, CallEventListener, AvatarLanguage } from './plato-intefaces';
|
|
2
|
+
export type { CallEventMap, CallEventNames, CallEventListener };
|
|
3
|
+
export type { ToolCall } from './plato-intefaces';
|
|
2
4
|
export interface ApiClientConfig {
|
|
3
5
|
baseUrl: string;
|
|
4
6
|
jwtToken: string;
|
|
5
7
|
publicKey: string;
|
|
6
8
|
}
|
|
7
|
-
export interface ToolCall {
|
|
8
|
-
function: {
|
|
9
|
-
name: string;
|
|
10
|
-
arguments: {
|
|
11
|
-
slideNumber?: number;
|
|
12
|
-
progressObjectiveNumber?: number;
|
|
13
|
-
[key: string]: unknown;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
id: string;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Event map for call events, providing strict typing for each event's payload.
|
|
20
|
-
* There are no inputs for the events and all of them return void.
|
|
21
|
-
*/
|
|
22
|
-
export interface CallEventMap {
|
|
23
|
-
'call-start': undefined;
|
|
24
|
-
'call-end': undefined;
|
|
25
|
-
'speech-start': undefined;
|
|
26
|
-
'speech-end': undefined;
|
|
27
|
-
error: Error;
|
|
28
|
-
message: {
|
|
29
|
-
type: string;
|
|
30
|
-
role: string;
|
|
31
|
-
transcript?: string;
|
|
32
|
-
transcriptType: 'final' | 'partial';
|
|
33
|
-
toolCallList?: ToolCall[];
|
|
34
|
-
toolCalls?: ToolCall[];
|
|
35
|
-
[key: string]: unknown;
|
|
36
|
-
};
|
|
37
|
-
'volume-level': number;
|
|
38
|
-
'call-details-ready': CallDTO;
|
|
39
|
-
'call-ended-reason': {
|
|
40
|
-
reason: string;
|
|
41
|
-
isInactivity: boolean;
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
export type CallEventNames = keyof CallEventMap;
|
|
45
|
-
export type CallEventListener<K extends CallEventNames> = (payload: CallEventMap[K]) => void;
|
|
46
9
|
export declare class PlatoApiClient {
|
|
47
10
|
private config;
|
|
48
11
|
private http;
|
|
@@ -81,6 +44,10 @@ export declare class PlatoApiClient {
|
|
|
81
44
|
* Internal: Emit SDK-specific events that are not part of Vapi.
|
|
82
45
|
*/
|
|
83
46
|
private emit;
|
|
47
|
+
/**
|
|
48
|
+
* Remove all listeners for all call events.
|
|
49
|
+
*/
|
|
50
|
+
private removeAllEventListeners;
|
|
84
51
|
createSimulation(createSimulationParams: CreateSimulationDto): Promise<{
|
|
85
52
|
simulationId: string;
|
|
86
53
|
phase: CreationPhase;
|
|
@@ -102,10 +69,6 @@ export declare class PlatoApiClient {
|
|
|
102
69
|
getCallDetails(callId: string): Promise<CallDTO>;
|
|
103
70
|
getCallRecordings(queryParams: SimulationRecordingsQueryDto): Promise<SimulationRecordingsDto[]>;
|
|
104
71
|
getCallRecording(callId: string): Promise<string>;
|
|
105
|
-
/**
|
|
106
|
-
* Remove all listeners for all call events.
|
|
107
|
-
*/
|
|
108
|
-
private removeAllEventListeners;
|
|
109
72
|
/**
|
|
110
73
|
* Starts a call for the given simulation.
|
|
111
74
|
* Polls the backend after call-end until the call is finalized, then emits 'call-details-ready'.
|
|
@@ -117,10 +80,12 @@ export declare class PlatoApiClient {
|
|
|
117
80
|
on: <K extends CallEventNames>(event: K, listener: CallEventListener<K>) => void;
|
|
118
81
|
off: <K extends CallEventNames>(event: K, listener: CallEventListener<K>) => void;
|
|
119
82
|
}>;
|
|
120
|
-
private setPostCallEligibility;
|
|
121
|
-
private createCall;
|
|
122
83
|
uploadPdfSlides(file: File | Blob): Promise<string>;
|
|
123
|
-
|
|
84
|
+
/**
|
|
85
|
+
* @param language - The user's language; recommendations are written in it.
|
|
86
|
+
* Defaults to the language of the user's most recent simulation.
|
|
87
|
+
*/
|
|
88
|
+
getRecommendations(language?: AvatarLanguage): Promise<RecommendationsResponseDto>;
|
|
124
89
|
getSlideAnalysis(id: string): Promise<PdfSlideDto>;
|
|
125
90
|
deleteSlideAnalysis(id: string): Promise<void>;
|
|
126
91
|
checkPdfStatus(id: string): Promise<CheckPdfStatusResponse>;
|
package/src/lib/plato-sdk.js
CHANGED
|
@@ -19,16 +19,14 @@ const axios_1 = tslib_1.__importDefault(require("axios"));
|
|
|
19
19
|
const web_1 = tslib_1.__importDefault(require("@vapi-ai/web"));
|
|
20
20
|
const utils_1 = require("./utils");
|
|
21
21
|
const constants_1 = require("./constants");
|
|
22
|
+
const call_helpers_1 = require("./call-helpers");
|
|
22
23
|
class PlatoApiClient {
|
|
23
24
|
config;
|
|
24
|
-
// private static readonly ACTIVE_CALL_STORAGE_KEY = 'plato_active_call';
|
|
25
25
|
http;
|
|
26
26
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
27
27
|
eventListeners = {};
|
|
28
28
|
callControllerInstance;
|
|
29
29
|
eventsAttached = false;
|
|
30
|
-
// private currentCallId?: string;
|
|
31
|
-
// private receivedAnyTranscript = false;
|
|
32
30
|
// Vapi-native events (events that Vapi SDK supports)
|
|
33
31
|
// Exclude our custom SDK events from this list
|
|
34
32
|
vapiEventNames = [
|
|
@@ -132,125 +130,22 @@ class PlatoApiClient {
|
|
|
132
130
|
listeners.forEach(listener => listener(payload));
|
|
133
131
|
}
|
|
134
132
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
// */
|
|
152
|
-
// private getStoredCallState(): ActiveCallState | null {
|
|
153
|
-
// try {
|
|
154
|
-
// const stored = localStorage.getItem(PlatoApiClient.ACTIVE_CALL_STORAGE_KEY);
|
|
155
|
-
// if (!stored) {
|
|
156
|
-
// return null;
|
|
157
|
-
// }
|
|
158
|
-
// const parsed = JSON.parse(stored) as ActiveCallState;
|
|
159
|
-
// // Validate required fields
|
|
160
|
-
// if (!parsed.callId || !parsed.externalCallId || !parsed.simulationId || !parsed.startedAt) {
|
|
161
|
-
// this.clearCallState();
|
|
162
|
-
// return null;
|
|
163
|
-
// }
|
|
164
|
-
// return parsed;
|
|
165
|
-
// } catch {
|
|
166
|
-
// return null;
|
|
167
|
-
// }
|
|
168
|
-
// }
|
|
169
|
-
// /**
|
|
170
|
-
// * Clear active call state from localStorage.
|
|
171
|
-
// * @private
|
|
172
|
-
// */
|
|
173
|
-
// private clearCallState(): void {
|
|
174
|
-
// try {
|
|
175
|
-
// localStorage.removeItem(PlatoApiClient.ACTIVE_CALL_STORAGE_KEY);
|
|
176
|
-
// } catch {
|
|
177
|
-
// // ignore
|
|
178
|
-
// }
|
|
179
|
-
// }
|
|
180
|
-
// /**
|
|
181
|
-
// * Check if a stored call is considered abandoned based on age.
|
|
182
|
-
// * Calls older than 5 minutes are considered abandoned.
|
|
183
|
-
// * @private
|
|
184
|
-
// * @param state The call state to check
|
|
185
|
-
// * @returns true if the call is abandoned, false otherwise
|
|
186
|
-
// */
|
|
187
|
-
// private isCallAbandoned(state: ActiveCallState): boolean {
|
|
188
|
-
// const ABANDONMENT_THRESHOLD_MS = 5 * 60 * 1000; // 5 minutes
|
|
189
|
-
// const startedAt = new Date(state.startedAt).getTime();
|
|
190
|
-
// const now = Date.now();
|
|
191
|
-
// const age = now - startedAt;
|
|
192
|
-
// return age > ABANDONMENT_THRESHOLD_MS;
|
|
193
|
-
// }
|
|
194
|
-
// /**
|
|
195
|
-
// * Recover and clean up any abandoned calls from previous sessions.
|
|
196
|
-
// *
|
|
197
|
-
// * This method should be called during application initialization,
|
|
198
|
-
// * typically in ngOnInit() or useEffect(). It detects calls that were
|
|
199
|
-
// * active when the page was last refreshed and notifies the backend
|
|
200
|
-
// * to process them if they're older than 5 minutes.
|
|
201
|
-
// *
|
|
202
|
-
// * The backend endpoint is idempotent, so calling this method multiple
|
|
203
|
-
// * times for the same call is safe.
|
|
204
|
-
// *
|
|
205
|
-
// * @returns Promise<boolean> - true if an abandoned call was recovered and processed
|
|
206
|
-
// *
|
|
207
|
-
// * @example
|
|
208
|
-
// * // In Angular component
|
|
209
|
-
// * async ngOnInit(): Promise<void> {
|
|
210
|
-
// * const recovered = await this.platoClient.recoverAbandonedCall();
|
|
211
|
-
// * if (recovered) {
|
|
212
|
-
// * console.log('Recovered abandoned call from previous session');
|
|
213
|
-
// * }
|
|
214
|
-
// * }
|
|
215
|
-
// *
|
|
216
|
-
// * @example
|
|
217
|
-
// * // In React component
|
|
218
|
-
// * useEffect(() => {
|
|
219
|
-
// * platoClient.recoverAbandonedCall()
|
|
220
|
-
// * .then(recovered => {
|
|
221
|
-
// * if (recovered) {
|
|
222
|
-
// * console.log('Recovered abandoned call');
|
|
223
|
-
// * }
|
|
224
|
-
// * })
|
|
225
|
-
// * .catch(console.error);
|
|
226
|
-
// * }, []);
|
|
227
|
-
// */
|
|
228
|
-
// async recoverAbandonedCall(): Promise<boolean> {
|
|
229
|
-
// try {
|
|
230
|
-
// const storedState = this.getStoredCallState();
|
|
231
|
-
// if (!storedState) {
|
|
232
|
-
// return false;
|
|
233
|
-
// }
|
|
234
|
-
// if (!this.isCallAbandoned(storedState)) {
|
|
235
|
-
// return false;
|
|
236
|
-
// }
|
|
237
|
-
// console.log('Detected abandoned call, notifying backend:', storedState.callId);
|
|
238
|
-
// try {
|
|
239
|
-
// const response = await this.http.post('/api/v1/postcall/call-ended', {
|
|
240
|
-
// callId: storedState.callId,
|
|
241
|
-
// });
|
|
242
|
-
// console.log('Backend notified of abandoned call:', response.data);
|
|
243
|
-
// } catch (error) {
|
|
244
|
-
// console.error('Failed to notify backend of abandoned call:', error);
|
|
245
|
-
// }
|
|
246
|
-
// this.clearCallState();
|
|
247
|
-
// return true;
|
|
248
|
-
// } catch (error) {
|
|
249
|
-
// console.error('Error during call recovery:', error);
|
|
250
|
-
// this.clearCallState();
|
|
251
|
-
// return false;
|
|
252
|
-
// }
|
|
253
|
-
// }
|
|
133
|
+
/**
|
|
134
|
+
* Remove all listeners for all call events.
|
|
135
|
+
*/
|
|
136
|
+
removeAllEventListeners() {
|
|
137
|
+
if (!this.callControllerInstance)
|
|
138
|
+
return;
|
|
139
|
+
this.eventNames.forEach(event => {
|
|
140
|
+
(this.eventListeners[event] || []).forEach(listener => {
|
|
141
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
142
|
+
// @ts-expect-error
|
|
143
|
+
this.callControllerInstance?.off(event, listener);
|
|
144
|
+
});
|
|
145
|
+
this.eventListeners[event] = [];
|
|
146
|
+
});
|
|
147
|
+
this.eventsAttached = false;
|
|
148
|
+
}
|
|
254
149
|
async createSimulation(createSimulationParams) {
|
|
255
150
|
try {
|
|
256
151
|
const res = await this.http.post('/api/v1/simulation', {
|
|
@@ -262,10 +157,7 @@ class PlatoApiClient {
|
|
|
262
157
|
};
|
|
263
158
|
}
|
|
264
159
|
catch (e) {
|
|
265
|
-
|
|
266
|
-
// console.error('Error creating simulation:', e.response?.data.message);
|
|
267
|
-
// }
|
|
268
|
-
throw e;
|
|
160
|
+
(0, utils_1.wrapApiError)(e, 'Failed to create simulation');
|
|
269
161
|
}
|
|
270
162
|
}
|
|
271
163
|
async checkSimulationStatus(simulationId) {
|
|
@@ -278,10 +170,7 @@ class PlatoApiClient {
|
|
|
278
170
|
return res.data;
|
|
279
171
|
}
|
|
280
172
|
catch (e) {
|
|
281
|
-
|
|
282
|
-
// console.error('Error getting user simulations:', e.response?.data.message);
|
|
283
|
-
// }
|
|
284
|
-
throw e;
|
|
173
|
+
(0, utils_1.wrapApiError)(e, 'Failed to fetch simulations');
|
|
285
174
|
}
|
|
286
175
|
}
|
|
287
176
|
async getSimulationDetails(simulationId) {
|
|
@@ -290,10 +179,7 @@ class PlatoApiClient {
|
|
|
290
179
|
return res.data;
|
|
291
180
|
}
|
|
292
181
|
catch (e) {
|
|
293
|
-
|
|
294
|
-
// console.error('Error getting simulation details:', e.response?.data.message);
|
|
295
|
-
// }
|
|
296
|
-
throw e;
|
|
182
|
+
(0, utils_1.wrapApiError)(e, 'Failed to fetch simulation details');
|
|
297
183
|
}
|
|
298
184
|
}
|
|
299
185
|
/**
|
|
@@ -306,10 +192,7 @@ class PlatoApiClient {
|
|
|
306
192
|
await this.http.delete(`/api/v1/simulation/${simulationId}`);
|
|
307
193
|
}
|
|
308
194
|
catch (e) {
|
|
309
|
-
|
|
310
|
-
// console.error('Error deleting simulation:', e.response?.data.message);
|
|
311
|
-
// }
|
|
312
|
-
throw e;
|
|
195
|
+
(0, utils_1.wrapApiError)(e, 'Failed to delete simulation');
|
|
313
196
|
}
|
|
314
197
|
}
|
|
315
198
|
async getCallDetails(callId) {
|
|
@@ -318,10 +201,7 @@ class PlatoApiClient {
|
|
|
318
201
|
return res.data;
|
|
319
202
|
}
|
|
320
203
|
catch (e) {
|
|
321
|
-
|
|
322
|
-
// console.error('Error getting call details:', e.response?.data.message);
|
|
323
|
-
// }
|
|
324
|
-
throw e;
|
|
204
|
+
(0, utils_1.wrapApiError)(e, 'Failed to fetch call details');
|
|
325
205
|
}
|
|
326
206
|
}
|
|
327
207
|
async getCallRecordings(queryParams) {
|
|
@@ -332,10 +212,7 @@ class PlatoApiClient {
|
|
|
332
212
|
return res.data;
|
|
333
213
|
}
|
|
334
214
|
catch (e) {
|
|
335
|
-
|
|
336
|
-
// console.error('Error getting call recordings:', e.response?.data.message);
|
|
337
|
-
// }
|
|
338
|
-
throw e;
|
|
215
|
+
(0, utils_1.wrapApiError)(e, 'Failed to fetch call recordings');
|
|
339
216
|
}
|
|
340
217
|
}
|
|
341
218
|
async getCallRecording(callId) {
|
|
@@ -344,139 +221,9 @@ class PlatoApiClient {
|
|
|
344
221
|
return res.data;
|
|
345
222
|
}
|
|
346
223
|
catch (e) {
|
|
347
|
-
|
|
348
|
-
// console.error('Error getting call recording:', e.response?.data.message);
|
|
349
|
-
// }
|
|
350
|
-
throw e;
|
|
224
|
+
(0, utils_1.wrapApiError)(e, 'Failed to fetch call recording');
|
|
351
225
|
}
|
|
352
226
|
}
|
|
353
|
-
/**
|
|
354
|
-
* Remove all listeners for all call events.
|
|
355
|
-
*/
|
|
356
|
-
removeAllEventListeners() {
|
|
357
|
-
if (!this.callControllerInstance)
|
|
358
|
-
return;
|
|
359
|
-
this.eventNames.forEach(event => {
|
|
360
|
-
(this.eventListeners[event] || []).forEach(listener => {
|
|
361
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
362
|
-
// @ts-expect-error
|
|
363
|
-
this.callControllerInstance?.off(event, listener);
|
|
364
|
-
});
|
|
365
|
-
this.eventListeners[event] = [];
|
|
366
|
-
});
|
|
367
|
-
this.eventsAttached = false;
|
|
368
|
-
}
|
|
369
|
-
// async startCall(simulationId: string) {
|
|
370
|
-
// // Check for any previous call state before starting new call
|
|
371
|
-
// // If found, notify backend to ensure it gets processed
|
|
372
|
-
// const storedState = this.getStoredCallState();
|
|
373
|
-
// if (storedState) {
|
|
374
|
-
// try {
|
|
375
|
-
// await this.http.post('/api/v1/postcall/call-ended', {
|
|
376
|
-
// callId: storedState.callId,
|
|
377
|
-
// });
|
|
378
|
-
// } catch {
|
|
379
|
-
// // ignore
|
|
380
|
-
// }
|
|
381
|
-
// }
|
|
382
|
-
//
|
|
383
|
-
// // Now clear the state before starting new call
|
|
384
|
-
// this.clearCallState();
|
|
385
|
-
//
|
|
386
|
-
// this.callControllerInstance = new Vapi(
|
|
387
|
-
// this.config.publicKey,
|
|
388
|
-
// 'https://db41aykk1gw9e.cloudfront.net' // base url
|
|
389
|
-
// );
|
|
390
|
-
// if (!this.eventsAttached) {
|
|
391
|
-
// this.attachEvents();
|
|
392
|
-
// }
|
|
393
|
-
//
|
|
394
|
-
// this.receivedAnyTranscript = false;
|
|
395
|
-
// this.callControllerInstance.on(
|
|
396
|
-
// 'message',
|
|
397
|
-
// (msg: { transcript?: string; type?: string; status?: string; endedReason?: string }) => {
|
|
398
|
-
// if (msg.transcript && msg.transcript.trim().length > 0) {
|
|
399
|
-
// this.receivedAnyTranscript = true;
|
|
400
|
-
// }
|
|
401
|
-
// if (msg.type === 'status-update' && msg.status === 'ended' && msg.endedReason) {
|
|
402
|
-
// const reason = msg.endedReason;
|
|
403
|
-
// const isInactivity = /silence|inactivity/i.test(reason);
|
|
404
|
-
// this.emit('call-ended-reason', { reason, isInactivity });
|
|
405
|
-
// }
|
|
406
|
-
// }
|
|
407
|
-
// );
|
|
408
|
-
//
|
|
409
|
-
// // Internal call-end listener
|
|
410
|
-
// this.callControllerInstance.on('call-end', () => {
|
|
411
|
-
// this.onCallEnded().catch(() => {
|
|
412
|
-
// // ignore
|
|
413
|
-
// });
|
|
414
|
-
// });
|
|
415
|
-
//
|
|
416
|
-
// const { data } = await this.http.get(`/api/v1/simulation/${simulationId}`);
|
|
417
|
-
// const assistantId = data as string;
|
|
418
|
-
//
|
|
419
|
-
// let capturedVapiError: unknown;
|
|
420
|
-
// const vapiErrorCapture = (error: unknown) => {
|
|
421
|
-
// capturedVapiError = error;
|
|
422
|
-
// };
|
|
423
|
-
// this.callControllerInstance.on('error', vapiErrorCapture);
|
|
424
|
-
//
|
|
425
|
-
// let call: Call | null;
|
|
426
|
-
// try {
|
|
427
|
-
// call = await this.callControllerInstance.start(assistantId);
|
|
428
|
-
// } catch (e) {
|
|
429
|
-
// this.callControllerInstance.off('error', vapiErrorCapture);
|
|
430
|
-
// this.callControllerInstance?.stop();
|
|
431
|
-
// this.removeAllEventListeners();
|
|
432
|
-
// this.clearCallState();
|
|
433
|
-
// throw e;
|
|
434
|
-
// }
|
|
435
|
-
//
|
|
436
|
-
// this.callControllerInstance.off('error', vapiErrorCapture);
|
|
437
|
-
//
|
|
438
|
-
// if (!call || !call.assistantId) {
|
|
439
|
-
// this.callControllerInstance?.stop();
|
|
440
|
-
// this.removeAllEventListeners();
|
|
441
|
-
// this.clearCallState();
|
|
442
|
-
// if (isCallConcurrencyError(capturedVapiError)) {
|
|
443
|
-
// throw new CallConcurrencyLimitError();
|
|
444
|
-
// }
|
|
445
|
-
// throw new Error('Cannot start a call, please try again later');
|
|
446
|
-
// }
|
|
447
|
-
// try {
|
|
448
|
-
// const apiCall = await this.createCall({
|
|
449
|
-
// callId: call.id,
|
|
450
|
-
// assistantId: call.assistantId,
|
|
451
|
-
// });
|
|
452
|
-
//
|
|
453
|
-
// this.currentCallId = apiCall._id;
|
|
454
|
-
//
|
|
455
|
-
// this.storeCallState({
|
|
456
|
-
// callId: apiCall._id,
|
|
457
|
-
// externalCallId: call.id,
|
|
458
|
-
// simulationId: simulationId,
|
|
459
|
-
// startedAt: new Date().toISOString(),
|
|
460
|
-
// version: 1,
|
|
461
|
-
// });
|
|
462
|
-
//
|
|
463
|
-
// return {
|
|
464
|
-
// stopCall: () => {
|
|
465
|
-
// this.callControllerInstance?.stop();
|
|
466
|
-
// },
|
|
467
|
-
// callId: apiCall._id,
|
|
468
|
-
// on: <K extends CallEventNames>(event: K, listener: CallEventListener<K>) =>
|
|
469
|
-
// this.on(event, listener),
|
|
470
|
-
// off: <K extends CallEventNames>(event: K, listener: CallEventListener<K>) =>
|
|
471
|
-
// this.off(event, listener),
|
|
472
|
-
// };
|
|
473
|
-
// } catch (e) {
|
|
474
|
-
// this.callControllerInstance?.stop();
|
|
475
|
-
// this.removeAllEventListeners();
|
|
476
|
-
// this.clearCallState();
|
|
477
|
-
// throw e;
|
|
478
|
-
// }
|
|
479
|
-
// }
|
|
480
227
|
/**
|
|
481
228
|
* Starts a call for the given simulation.
|
|
482
229
|
* Polls the backend after call-end until the call is finalized, then emits 'call-details-ready'.
|
|
@@ -499,62 +246,17 @@ class PlatoApiClient {
|
|
|
499
246
|
if (!callId)
|
|
500
247
|
return;
|
|
501
248
|
const callAge = Date.now() - callStartedAt;
|
|
502
|
-
|
|
249
|
+
const resolvedCallId = callId;
|
|
250
|
+
const emit = (event, payload) => this.emit(event, payload);
|
|
251
|
+
const removeAll = () => this.removeAllEventListeners();
|
|
503
252
|
if (callAge < 20000) {
|
|
504
253
|
// Call ended within 20s — return whatever is in the DB without requiring a transcript
|
|
505
|
-
|
|
506
|
-
void this.
|
|
507
|
-
const fetchAndEmit = async () => {
|
|
508
|
-
try {
|
|
509
|
-
// console.log('[PlatoSDK] Early end (<20s) — fetching call details immediately (no transcript check)');
|
|
510
|
-
const { data } = await this.http.get(`/api/v1/simulation/call/${resolvedCallId}`);
|
|
511
|
-
this.emit('call-details-ready', data);
|
|
512
|
-
}
|
|
513
|
-
catch (e) {
|
|
514
|
-
this.emit('error', e instanceof Error ? e : new Error('Failed to fetch call details'));
|
|
515
|
-
}
|
|
516
|
-
finally {
|
|
517
|
-
this.removeAllEventListeners();
|
|
518
|
-
}
|
|
519
|
-
};
|
|
520
|
-
void fetchAndEmit();
|
|
254
|
+
void (0, call_helpers_1.setPostCallEligibility)(this.http, resolvedCallId, false);
|
|
255
|
+
void (0, call_helpers_1.fetchAndEmitCallDetails)(this.http, resolvedCallId, emit, removeAll);
|
|
521
256
|
return;
|
|
522
257
|
}
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
let stopped = false;
|
|
526
|
-
let nextPollTimer;
|
|
527
|
-
const poll = async () => {
|
|
528
|
-
if (stopped)
|
|
529
|
-
return;
|
|
530
|
-
try {
|
|
531
|
-
// console.log('[PlatoSDK] Polling for call details (waiting for transcript)...');
|
|
532
|
-
const { data } = await this.http.get(`/api/v1/simulation/call/${resolvedCallId}`);
|
|
533
|
-
if (data.transcript) {
|
|
534
|
-
stopped = true;
|
|
535
|
-
clearTimeout(globalTimer);
|
|
536
|
-
// console.log('[PlatoSDK] Transcript ready — emitting call-details-ready');
|
|
537
|
-
this.emit('call-details-ready', data);
|
|
538
|
-
this.removeAllEventListeners();
|
|
539
|
-
return;
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
catch {
|
|
543
|
-
// ignore transient errors, keep polling
|
|
544
|
-
}
|
|
545
|
-
nextPollTimer = setTimeout(() => void poll(), 3000);
|
|
546
|
-
};
|
|
547
|
-
nextPollTimer = setTimeout(() => void poll(), 3000);
|
|
548
|
-
const globalTimer = setTimeout(() => {
|
|
549
|
-
stopped = true;
|
|
550
|
-
clearTimeout(nextPollTimer);
|
|
551
|
-
this.removeAllEventListeners();
|
|
552
|
-
}, 60000);
|
|
553
|
-
stopPolling = () => {
|
|
554
|
-
stopped = true;
|
|
555
|
-
clearTimeout(nextPollTimer);
|
|
556
|
-
clearTimeout(globalTimer);
|
|
557
|
-
};
|
|
258
|
+
void (0, call_helpers_1.setPostCallEligibility)(this.http, resolvedCallId, true);
|
|
259
|
+
({ stopPolling } = (0, call_helpers_1.startPolling)(this.http, resolvedCallId, emit, removeAll));
|
|
558
260
|
});
|
|
559
261
|
const { data } = await this.http.get(`/api/v1/simulation/${simulationId}`);
|
|
560
262
|
const assistantId = data;
|
|
@@ -564,7 +266,6 @@ class PlatoApiClient {
|
|
|
564
266
|
};
|
|
565
267
|
this.callControllerInstance.on('error', vapiErrorCapture);
|
|
566
268
|
const callStartedAt = Date.now();
|
|
567
|
-
// console.log('[PlatoSDK] Call start initiated at:', new Date(callStartedAt).toISOString());
|
|
568
269
|
let call;
|
|
569
270
|
try {
|
|
570
271
|
call = await this.callControllerInstance.start(assistantId);
|
|
@@ -585,7 +286,7 @@ class PlatoApiClient {
|
|
|
585
286
|
throw new Error('Cannot start a call, please try again later');
|
|
586
287
|
}
|
|
587
288
|
try {
|
|
588
|
-
const apiCall = await
|
|
289
|
+
const apiCall = await (0, call_helpers_1.createCall)(this.http, {
|
|
589
290
|
callId: call.id,
|
|
590
291
|
assistantId: call.assistantId,
|
|
591
292
|
});
|
|
@@ -627,62 +328,6 @@ class PlatoApiClient {
|
|
|
627
328
|
throw e;
|
|
628
329
|
}
|
|
629
330
|
}
|
|
630
|
-
// private async onCallEnded(): Promise<void> {
|
|
631
|
-
// let callIdForRetry: string | undefined;
|
|
632
|
-
// try {
|
|
633
|
-
// if (!this.currentCallId) {
|
|
634
|
-
// return;
|
|
635
|
-
// }
|
|
636
|
-
//
|
|
637
|
-
// if (!this.receivedAnyTranscript) {
|
|
638
|
-
// return;
|
|
639
|
-
// }
|
|
640
|
-
//
|
|
641
|
-
// callIdForRetry = this.currentCallId;
|
|
642
|
-
//
|
|
643
|
-
// // First attempt
|
|
644
|
-
// let response = await this.http.post('/api/v1/postcall/call-ended', {
|
|
645
|
-
// callId: callIdForRetry,
|
|
646
|
-
// });
|
|
647
|
-
//
|
|
648
|
-
// // If status is "processing", retry once immediately
|
|
649
|
-
// if (response.data?.status === 'processing') {
|
|
650
|
-
// response = await this.http.post('/api/v1/postcall/call-ended', {
|
|
651
|
-
// callId: callIdForRetry,
|
|
652
|
-
// });
|
|
653
|
-
// }
|
|
654
|
-
//
|
|
655
|
-
// try {
|
|
656
|
-
// const callDetails = await this.getCallDetails(callIdForRetry);
|
|
657
|
-
// this.emit('call-details-ready', callDetails);
|
|
658
|
-
// } catch {
|
|
659
|
-
// // ignore
|
|
660
|
-
// }
|
|
661
|
-
// } catch {
|
|
662
|
-
// // ignore
|
|
663
|
-
// } finally {
|
|
664
|
-
// this.currentCallId = undefined;
|
|
665
|
-
// this.clearCallState();
|
|
666
|
-
// this.removeAllEventListeners();
|
|
667
|
-
// }
|
|
668
|
-
// }
|
|
669
|
-
async setPostCallEligibility(callId, eligible) {
|
|
670
|
-
try {
|
|
671
|
-
await this.http.patch(`/api/v1/simulation/call/${callId}/eligibility`, {
|
|
672
|
-
postCallEligibility: eligible,
|
|
673
|
-
});
|
|
674
|
-
}
|
|
675
|
-
catch {
|
|
676
|
-
// ignore — eligibility flag is best-effort
|
|
677
|
-
//console.warn('[PlatoSDK] Failed to set postCallEligibility:', e);
|
|
678
|
-
}
|
|
679
|
-
}
|
|
680
|
-
async createCall(payload) {
|
|
681
|
-
const response = await this.http.post('/api/v1/simulation/call', {
|
|
682
|
-
...payload,
|
|
683
|
-
});
|
|
684
|
-
return response.data;
|
|
685
|
-
}
|
|
686
331
|
async uploadPdfSlides(file) {
|
|
687
332
|
try {
|
|
688
333
|
const checkResult = (0, utils_1.checkFile)(file, constants_1.MAX_PDF_FILE_SIZE, constants_1.ALLOWED_PDF_MIME_TYPES);
|
|
@@ -726,13 +371,8 @@ class PlatoApiClient {
|
|
|
726
371
|
}
|
|
727
372
|
catch (uploadError) {
|
|
728
373
|
// S3 upload failed - clean up the MongoDB record created during request-upload
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
}
|
|
732
|
-
catch {
|
|
733
|
-
// console.error('Failed to clean up PDF record after upload failure:', deleteError);
|
|
734
|
-
}
|
|
735
|
-
throw uploadError;
|
|
374
|
+
await this.deleteSlideAnalysis(pdfId).catch(() => undefined);
|
|
375
|
+
(0, utils_1.wrapApiError)(uploadError, 'Failed to upload PDF to storage');
|
|
736
376
|
}
|
|
737
377
|
/*
|
|
738
378
|
// replace const { presignedPost, pdfId } with const { presignedPost, objectKey, pdfId }
|
|
@@ -744,27 +384,22 @@ class PlatoApiClient {
|
|
|
744
384
|
return pdfId;
|
|
745
385
|
}
|
|
746
386
|
catch (e) {
|
|
747
|
-
|
|
748
|
-
// console.error('Error uploading PDF slides:', e.response?.data?.message || e.message);
|
|
749
|
-
// } else {
|
|
750
|
-
// console.error(
|
|
751
|
-
// 'Error uploading PDF slides:',
|
|
752
|
-
// e instanceof Error ? e.message : 'Unknown error'
|
|
753
|
-
// );
|
|
754
|
-
// }
|
|
755
|
-
throw e;
|
|
387
|
+
(0, utils_1.wrapApiError)(e, 'Failed to upload PDF');
|
|
756
388
|
}
|
|
757
389
|
}
|
|
758
|
-
|
|
390
|
+
/**
|
|
391
|
+
* @param language - The user's language; recommendations are written in it.
|
|
392
|
+
* Defaults to the language of the user's most recent simulation.
|
|
393
|
+
*/
|
|
394
|
+
async getRecommendations(language) {
|
|
759
395
|
try {
|
|
760
|
-
const res = await this.http.get('/api/v1/recommendations'
|
|
396
|
+
const res = await this.http.get('/api/v1/recommendations', {
|
|
397
|
+
params: language ? { language } : undefined,
|
|
398
|
+
});
|
|
761
399
|
return res.data;
|
|
762
400
|
}
|
|
763
401
|
catch (e) {
|
|
764
|
-
|
|
765
|
-
// console.error('Error getting recommendations:', e.response?.data.message);
|
|
766
|
-
// }
|
|
767
|
-
throw e;
|
|
402
|
+
(0, utils_1.wrapApiError)(e, 'Failed to fetch recommendations');
|
|
768
403
|
}
|
|
769
404
|
}
|
|
770
405
|
async getSlideAnalysis(id) {
|
|
@@ -773,10 +408,7 @@ class PlatoApiClient {
|
|
|
773
408
|
return res.data;
|
|
774
409
|
}
|
|
775
410
|
catch (e) {
|
|
776
|
-
|
|
777
|
-
// console.error('Error getting PDF slide analysis by ID:', e.response?.data.message);
|
|
778
|
-
// }
|
|
779
|
-
throw e;
|
|
411
|
+
(0, utils_1.wrapApiError)(e, 'Failed to fetch slide analysis');
|
|
780
412
|
}
|
|
781
413
|
}
|
|
782
414
|
async deleteSlideAnalysis(id) {
|
|
@@ -784,10 +416,7 @@ class PlatoApiClient {
|
|
|
784
416
|
await this.http.delete(`/api/v1/pdfSlides/${id}`);
|
|
785
417
|
}
|
|
786
418
|
catch (e) {
|
|
787
|
-
|
|
788
|
-
// console.error('Error deleting PDF slide analysis:', e.response?.data.message);
|
|
789
|
-
// }
|
|
790
|
-
throw e;
|
|
419
|
+
(0, utils_1.wrapApiError)(e, 'Failed to delete slide analysis');
|
|
791
420
|
}
|
|
792
421
|
}
|
|
793
422
|
async checkPdfStatus(id) {
|
|
@@ -796,10 +425,7 @@ class PlatoApiClient {
|
|
|
796
425
|
return res.data;
|
|
797
426
|
}
|
|
798
427
|
catch (e) {
|
|
799
|
-
|
|
800
|
-
// console.error('Error checking PDF status:', e.response?.data.message);
|
|
801
|
-
// }
|
|
802
|
-
throw e;
|
|
428
|
+
(0, utils_1.wrapApiError)(e, 'Failed to check PDF status');
|
|
803
429
|
}
|
|
804
430
|
}
|
|
805
431
|
async getAssistantImages() {
|
|
@@ -808,10 +434,7 @@ class PlatoApiClient {
|
|
|
808
434
|
return res.data;
|
|
809
435
|
}
|
|
810
436
|
catch (e) {
|
|
811
|
-
|
|
812
|
-
// console.error('Error getting assistant images:', e.response?.data.message);
|
|
813
|
-
// }
|
|
814
|
-
throw e;
|
|
437
|
+
(0, utils_1.wrapApiError)(e, 'Failed to fetch assistant images');
|
|
815
438
|
}
|
|
816
439
|
}
|
|
817
440
|
/**
|
|
@@ -826,10 +449,7 @@ class PlatoApiClient {
|
|
|
826
449
|
await this.http.delete(`/api/v1/simulation/call/${callId}`);
|
|
827
450
|
}
|
|
828
451
|
catch (e) {
|
|
829
|
-
|
|
830
|
-
// console.error('Error deleting call:', e.response?.data.message);
|
|
831
|
-
// }
|
|
832
|
-
throw e;
|
|
452
|
+
(0, utils_1.wrapApiError)(e, 'Failed to delete call');
|
|
833
453
|
}
|
|
834
454
|
}
|
|
835
455
|
}
|
package/src/lib/plato-sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plato-sdk.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/plato-sdk.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plato-sdk.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/plato-sdk.ts"],"names":[],"mappings":"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"}
|
package/src/lib/utils.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare class PdfAlreadyExistsError extends Error {
|
|
|
5
5
|
readonly pdfId: string;
|
|
6
6
|
constructor(pdfId: string);
|
|
7
7
|
}
|
|
8
|
+
export declare function wrapApiError(e: unknown, operation: string): never;
|
|
8
9
|
export declare function isCallConcurrencyError(err: unknown): boolean;
|
|
9
10
|
/**
|
|
10
11
|
* Validates a file against size and type constraints.
|
package/src/lib/utils.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PdfAlreadyExistsError = exports.CallConcurrencyLimitError = void 0;
|
|
4
|
+
exports.wrapApiError = wrapApiError;
|
|
4
5
|
exports.isCallConcurrencyError = isCallConcurrencyError;
|
|
5
6
|
exports.checkFile = checkFile;
|
|
6
7
|
exports.calculateHash = calculateHash;
|
|
7
8
|
exports.getPdfPageCount = getPdfPageCount;
|
|
9
|
+
const tslib_1 = require("tslib");
|
|
8
10
|
/**
|
|
9
11
|
* Copyright (c) 2025 ctcHealth. All rights reserved.
|
|
10
12
|
*
|
|
@@ -18,6 +20,7 @@ exports.getPdfPageCount = getPdfPageCount;
|
|
|
18
20
|
*
|
|
19
21
|
* For internal use only.
|
|
20
22
|
*/
|
|
23
|
+
const axios_1 = tslib_1.__importDefault(require("axios"));
|
|
21
24
|
const pdf_lib_1 = require("pdf-lib");
|
|
22
25
|
class CallConcurrencyLimitError extends Error {
|
|
23
26
|
constructor() {
|
|
@@ -35,6 +38,25 @@ class PdfAlreadyExistsError extends Error {
|
|
|
35
38
|
}
|
|
36
39
|
}
|
|
37
40
|
exports.PdfAlreadyExistsError = PdfAlreadyExistsError;
|
|
41
|
+
const HTTP_STATUS_REASONS = {
|
|
42
|
+
401: 'authentication required',
|
|
43
|
+
403: 'permission denied',
|
|
44
|
+
404: 'not found',
|
|
45
|
+
409: 'conflict',
|
|
46
|
+
};
|
|
47
|
+
function wrapApiError(e, operation) {
|
|
48
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
49
|
+
const status = e.response?.status;
|
|
50
|
+
const reason = !e.response
|
|
51
|
+
? 'network error, please check your connection'
|
|
52
|
+
: (status && HTTP_STATUS_REASONS[status]) ??
|
|
53
|
+
(status && status >= 500 ? 'server error, please try again' : 'request failed');
|
|
54
|
+
throw new Error(`${operation}: ${reason}.`, { cause: e });
|
|
55
|
+
}
|
|
56
|
+
if (e instanceof Error)
|
|
57
|
+
throw e;
|
|
58
|
+
throw new Error(`${operation}: unexpected error.`);
|
|
59
|
+
}
|
|
38
60
|
function isCallConcurrencyError(err) {
|
|
39
61
|
if (!err || typeof err !== 'object')
|
|
40
62
|
return false;
|
package/src/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/utils.ts"],"names":[],"mappings":"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"}
|