@ctchealth/plato-sdk 0.0.10 → 0.0.12

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 CHANGED
@@ -6,6 +6,16 @@ A TypeScript SDK for interacting with the Plato API to create and manage AI-powe
6
6
 
7
7
  The Plato SDK provides a simple and type-safe way to integrate with the Plato platform, allowing you to create medical training simulations with AI personas and manage voice-based interactions.
8
8
 
9
+ ## Authentication
10
+
11
+ All API requests require authentication using a Bearer token. Include your JWT token in the `API-AUTH` header:
12
+
13
+ ```
14
+ API-AUTH: Bearer <your-jwt-token>
15
+ ```
16
+
17
+ Requests without a valid JWT token will be rejected with a `401 Unauthorized` response.
18
+
9
19
  ## Features
10
20
 
11
21
  - Create AI personas with customizable professional profiles and personalities
@@ -24,7 +34,7 @@ npm install plato-sdk
24
34
  ## Quick Start
25
35
 
26
36
  ```typescript
27
- import { PlatoApiClient } from 'plato-sdk';
37
+ import { PlatoApiClient, AvatarLanguage } from 'plato-sdk';
28
38
 
29
39
  // Initialize the client
30
40
  const client = new PlatoApiClient({
@@ -33,6 +43,9 @@ const client = new PlatoApiClient({
33
43
  user: 'test@test.test',
34
44
  });
35
45
 
46
+ // Get available assistant images
47
+ const images = await client.getAssistantImages();
48
+
36
49
  // Create a simulation
37
50
  const simulation = await client.createSimulation({
38
51
  persona: {
@@ -69,6 +82,8 @@ const simulation = await client.createSimulation({
69
82
  'Demonstrate efficacy of Ibuprofen in pain management Highlight safety profile and contraindications Encourage patient adherence',
70
83
  anticipatedObjections:
71
84
  'Concerns about gastrointestinal side effects Preference for lower-cost generic alternatives Potential interactions with other medications',
85
+ imageId: images[0]._id,
86
+ avatarLanguage: AvatarLanguage.English,
72
87
  });
73
88
 
74
89
  // Check the simulation status - If simulation creation phase is equals to FINISHED, the simulation is ready to use
@@ -217,6 +232,153 @@ const recordingUrl = await client.getCallRecording(call._id);
217
232
  console.log('Recording URL:', recordingUrl);
218
233
  ```
219
234
 
235
+ ##### uploadPdfSlides(file: File | Blob)
236
+
237
+ Uploads a PDF file for slide analysis. The file will be uploaded to S3 and analyzed asynchronously.
238
+
239
+ **Parameters:**
240
+
241
+ - `file` (File | Blob): The PDF file to upload
242
+
243
+ **Returns:** `Promise<string>` — A success message if the upload was successful.
244
+
245
+ **Example:**
246
+
247
+ ```typescript
248
+ // Upload a PDF file from an input element
249
+ const fileInput = document.querySelector('input[type="file"]') as HTMLInputElement;
250
+ const file = fileInput.files?.[0];
251
+
252
+ if (file) {
253
+ const result = await client.uploadPdfSlides(file);
254
+ console.log('PDF upload initiated');
255
+ }
256
+ ```
257
+
258
+ ##### getSlidesAnalysis(queryParams: PdfSlidesAnalysisQueryDto)
259
+
260
+ Retrieves a paginated and sorted list of PDF slide analysis records.
261
+
262
+ **Parameters:**
263
+
264
+ - `queryParams` (PdfSlidesAnalysisQueryDto):
265
+ - `limit` (optional): Number of records per page
266
+ - `page` (optional): Page number
267
+ - `sort` (optional): Sort order (`'asc'` or `'desc'`)
268
+ - `sortBy` (optional): Field to sort by (`'createdAt'`, `'originalFilename'`, or `'totalSlides'`)
269
+
270
+ **Returns:** `Promise<PdfSlidesDto[]>`
271
+
272
+ **Example:**
273
+
274
+ ```typescript
275
+ const analysisList = await client.getSlidesAnalysis({
276
+ limit: 10,
277
+ page: 0,
278
+ sort: 'desc',
279
+ sortBy: 'createdAt',
280
+ });
281
+ ```
282
+
283
+ ##### getSlideAnalysis(id: string)
284
+
285
+ Retrieves the detailed analysis data for a specific PDF slide record, including the overview and individual slide analysis.
286
+
287
+ **Parameters:**
288
+
289
+ - `id` (string): The unique ID of the PDF slide record
290
+
291
+ **Returns:** `Promise<PdfSlideDto>`
292
+
293
+ **Example:**
294
+
295
+ ```typescript
296
+ const details = await client.getSlideAnalysis('pdf-slide-id');
297
+ console.log('Lesson Overview:', details.lessonOverview);
298
+ ```
299
+
300
+ ##### deleteSlideAnalysis(id: string)
301
+
302
+ Deletes a PDF slide analysis record from the database and removes the corresponding file from S3 storage.
303
+
304
+ **Parameters:**
305
+
306
+ - `id` (string): The unique ID of the PDF slide record to delete
307
+
308
+ **Returns:** `Promise<void>`
309
+
310
+ **Example:**
311
+
312
+ ```typescript
313
+ await client.deleteSlideAnalysis('pdf-slide-id');
314
+ console.log('Analysis deleted successfully');
315
+ ```
316
+
317
+ ##### getAssistantImages()
318
+
319
+ Retrieves all available assistant images that can be used when creating a simulation.
320
+
321
+ **Returns:** `Promise<AssistantImageDto[]>` — An array of assistant image objects, each containing:
322
+
323
+ - `_id`: Unique identifier for the image
324
+ - `imageUrl`: URL of the assistant image
325
+
326
+ **Example:**
327
+
328
+ ```typescript
329
+ // Get all available assistant images
330
+ const images = await client.getAssistantImages();
331
+ ```
332
+
333
+ ##### getRecommendations()
334
+
335
+ Retrieves recommendations based on the user's recent call performance. Analyzes up to 10 of the most recent calls to identify patterns and provide actionable insights.
336
+
337
+ **Returns:** `Promise<RecommendationsResponseDto>` — An object containing:
338
+
339
+ - `recommendations`: Array of recommendation objects, each with:
340
+ - `title`: Brief title of the recommendation
341
+ - `description`: Detailed, actionable description
342
+ - `priority`: Priority level (`'high'`, `'medium'`, or `'low'`)
343
+ - `strengths`: Array of identified strengths, each with:
344
+ - `strength`: Description of the strength
345
+ - `frequency`: Number of calls where this strength appeared
346
+ - `improvementAreas`: Array of areas needing improvement, each with:
347
+ - `area`: Description of the improvement area
348
+ - `frequency`: Number of calls where this weakness appeared
349
+ - `summary`: A 2-3 sentence overall summary of performance trends
350
+ - `callsAnalyzed`: Number of calls that were analyzed
351
+ - `generatedAt`: Timestamp when the recommendations were generated
352
+
353
+ **Example:**
354
+
355
+ ```typescript
356
+ // Get personalized recommendations based on call history
357
+ const recommendations = await client.getRecommendations();
358
+
359
+ console.log(`Analyzed ${recommendations.callsAnalyzed} calls`);
360
+ console.log('Summary:', recommendations.summary);
361
+
362
+ // Display high-priority recommendations
363
+ recommendations.recommendations
364
+ .filter(rec => rec.priority === 'high')
365
+ .forEach(rec => {
366
+ console.log(`[HIGH] ${rec.title}: ${rec.description}`);
367
+ });
368
+
369
+ // Show recurring strengths
370
+ recommendations.strengths.forEach(s => {
371
+ console.log(`Strength (${s.frequency} calls): ${s.strength}`);
372
+ });
373
+
374
+ // Show areas for improvement
375
+ recommendations.improvementAreas.forEach(area => {
376
+ console.log(`Needs work (${area.frequency} calls): ${area.area}`);
377
+ });
378
+ ```
379
+
380
+ **Note:** This method requires the user to have at least one completed call. If no calls are found, a `BadRequestException` will be thrown.
381
+
220
382
  ## Checking Simulation Status
221
383
 
222
384
  You can check the current phase/status of a simulation using the `checkSimulationStatus` method. This is useful for polling the simulation creation process until it is ready or has failed.
@@ -330,6 +492,8 @@ interface CreateSimulationDto {
330
492
  objectives?: string;
331
493
  anticipatedObjections?: string;
332
494
  trainingConfiguration: TrainingConfigurationDto;
495
+ imageId: string;
496
+ avatarLanguage: AvatarLanguage;
333
497
  }
334
498
  ```
335
499
 
@@ -380,6 +544,110 @@ enum CreationPhase {
380
544
  }
381
545
  ```
382
546
 
547
+ ### RecommendationsResponseDto
548
+
549
+ Response object from `getRecommendations()`:
550
+
551
+ ```typescript
552
+ interface RecommendationsResponseDto {
553
+ recommendations: RecommendationItemDto[];
554
+ strengths: PerformancePatternDto[];
555
+ improvementAreas: ImprovementAreaDto[];
556
+ summary: string;
557
+ callsAnalyzed: number;
558
+ generatedAt: Date;
559
+ }
560
+
561
+ interface RecommendationItemDto {
562
+ title: string;
563
+ description: string;
564
+ priority: 'high' | 'medium' | 'low';
565
+ }
566
+
567
+ interface PerformancePatternDto {
568
+ strength: string;
569
+ frequency: number;
570
+ }
571
+
572
+ interface ImprovementAreaDto {
573
+ area: string;
574
+ frequency: number;
575
+ }
576
+ ```
577
+
578
+ ### PdfSlidesDto
579
+
580
+ Simplified data structure for PDF slide records (used in lists):
581
+
582
+ ```typescript
583
+ interface PdfSlidesDto {
584
+ _id: string;
585
+ originalFilename: string;
586
+ totalSlides?: number;
587
+ lessonOverview?: string;
588
+ createdAt: Date;
589
+ updatedAt: Date;
590
+ }
591
+ ```
592
+
593
+ ### PdfSlideDto
594
+
595
+ Detailed data structure for a single PDF slide analysis:
596
+
597
+ ```typescript
598
+ interface PdfSlideDto {
599
+ _id: string;
600
+ originalFilename: string;
601
+ totalSlides?: number;
602
+ lessonOverview?: string;
603
+ slideAnalysis?: Array<{
604
+ slideNumber: number;
605
+ title: string;
606
+ textExtraction: string;
607
+ }>;
608
+ createdAt: Date;
609
+ updatedAt: Date;
610
+ }
611
+ ```
612
+
613
+ ### PdfSlidesAnalysisQueryDto
614
+
615
+ Query parameters for retrieving slide analysis records:
616
+
617
+ ```typescript
618
+ interface PdfSlidesAnalysisQueryDto {
619
+ limit?: 5 | 10 | 25;
620
+ page?: number;
621
+ sort?: 'asc' | 'desc';
622
+ sortBy?: 'createdAt' | 'originalFilename' | 'totalSlides';
623
+ }
624
+ ```
625
+
626
+ ### AssistantImageDto
627
+
628
+ Data structure for assistant images:
629
+
630
+ ```typescript
631
+ interface AssistantImageDto {
632
+ _id: string;
633
+ imageUrl: string;
634
+ }
635
+ ```
636
+
637
+ ### AvatarLanguage
638
+
639
+ Enum representing available avatar languages:
640
+
641
+ ```typescript
642
+ enum AvatarLanguage {
643
+ English = 'en',
644
+ German = 'de',
645
+ Spanish = 'es',
646
+ Italian = 'it',
647
+ French = 'fr',
648
+ }
649
+ ```
650
+
383
651
  ## Error Handling
384
652
 
385
653
  The SDK throws errors for invalid configurations and API failures:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ctchealth/plato-sdk",
3
- "version": "0.0.10",
3
+ "version": "0.0.12",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.0",
6
6
  "@vapi-ai/web": "2.1.8",
@@ -0,0 +1,15 @@
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
+ export declare const MAX_PDF_FILE_SIZE: number;
15
+ export declare const ALLOWED_PDF_MIME_TYPES: string[];
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ALLOWED_PDF_MIME_TYPES = exports.MAX_PDF_FILE_SIZE = void 0;
4
+ /**
5
+ * Copyright (c) 2025 ctcHealth. All rights reserved.
6
+ *
7
+ * This file is part of the ctcHealth Plato Platform, a proprietary software system developed by ctcHealth.
8
+ *
9
+ * This source code and all related materials are confidential and proprietary to ctcHealth.
10
+ * Unauthorized access, use, copying, modification, distribution, or disclosure is strictly prohibited
11
+ * and may result in disciplinary action and civil and/or criminal penalties.
12
+ *
13
+ * This software is intended solely for authorized use within ctcHealth and its designated partners.
14
+ *
15
+ * For internal use only.
16
+ */
17
+ exports.MAX_PDF_FILE_SIZE = 20 * 1024 * 1024; // 20MB
18
+ exports.ALLOWED_PDF_MIME_TYPES = ['application/pdf'];
19
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACU,QAAA,iBAAiB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAC7C,QAAA,sBAAsB,GAAG,CAAC,iBAAiB,CAAC,CAAC"}
@@ -35,6 +35,13 @@ export declare enum AssistantVoiceGender {
35
35
  Male = "Male",
36
36
  Female = "Female"
37
37
  }
38
+ export declare enum AvatarLanguage {
39
+ English = "en",
40
+ German = "de",
41
+ Spanish = "es",
42
+ Italian = "it",
43
+ French = "fr"
44
+ }
38
45
  export declare class PersonalityAndBehaviourDto {
39
46
  riskTolerance: number;
40
47
  researchOrientation: number;
@@ -72,6 +79,8 @@ export declare class CreateSimulationDto {
72
79
  scenario: string;
73
80
  objectives?: string;
74
81
  anticipatedObjections?: string;
82
+ imageId: string;
83
+ avatarLanguage: AvatarLanguage;
75
84
  }
76
85
  export type RecordingsLimit = 5 | 10 | 25;
77
86
  export declare class SimulationRecordingsQueryDto {
@@ -213,25 +222,18 @@ export declare enum CreationPhase {
213
222
  ERROR = "ERROR"
214
223
  }
215
224
  /**
216
- * Response DTO for PDF file upload.
225
+ * Presigned POST data for S3 upload.
217
226
  */
218
- export interface UploadPdfSlidesResponseDto {
219
- /**
220
- * The S3 object key where the PDF was saved
221
- */
227
+ export interface PresignedPost {
228
+ url: string;
229
+ fields: Record<string, string>;
230
+ }
231
+ /**
232
+ * Response for requesting a PDF upload.
233
+ */
234
+ export interface RequestPdfUploadResponse {
235
+ presignedPost: PresignedPost;
222
236
  objectKey: string;
223
- /**
224
- * The original filename
225
- */
226
- filename: string;
227
- /**
228
- * The file size in bytes
229
- */
230
- size: number;
231
- /**
232
- * The content type of the file
233
- */
234
- contentType: string;
235
237
  }
236
238
  export interface SimulationDetailsDto {
237
239
  simulationId: string;
@@ -241,3 +243,67 @@ export interface SimulationDetailsDto {
241
243
  createdAt: Date;
242
244
  updatedAt: Date;
243
245
  }
246
+ export declare enum RecommendationPriority {
247
+ HIGH = "high",
248
+ MEDIUM = "medium",
249
+ LOW = "low"
250
+ }
251
+ export interface RecommendationItemDto {
252
+ title: string;
253
+ description: string;
254
+ priority: RecommendationPriority;
255
+ }
256
+ export interface PerformancePatternDto {
257
+ strength: string;
258
+ frequency: number;
259
+ }
260
+ export interface ImprovementAreaDto {
261
+ area: string;
262
+ frequency: number;
263
+ }
264
+ export interface RecommendationsResponseDto {
265
+ recommendations: RecommendationItemDto[];
266
+ strengths: PerformancePatternDto[];
267
+ improvementAreas: ImprovementAreaDto[];
268
+ summary: string;
269
+ callsAnalyzed: number;
270
+ generatedAt: Date;
271
+ }
272
+ export declare enum PdfSlidesSortField {
273
+ CREATED_AT = "createdAt",
274
+ FILENAME = "originalFilename",
275
+ TOTAL_SLIDES = "totalSlides"
276
+ }
277
+ export declare class PdfSlidesAnalysisQueryDto {
278
+ limit?: RecordingsLimit;
279
+ page?: number;
280
+ sort?: SortOrder;
281
+ sortBy?: PdfSlidesSortField;
282
+ }
283
+ export interface SlideAnalysis {
284
+ slideNumber: number;
285
+ title?: string;
286
+ textExtraction?: string;
287
+ visualDescription?: string;
288
+ }
289
+ export interface PdfSlidesDto {
290
+ _id: string;
291
+ originalFilename: string;
292
+ totalSlides?: number;
293
+ lessonOverview?: string;
294
+ createdAt: Date;
295
+ updatedAt: Date;
296
+ }
297
+ export interface PdfSlideDto {
298
+ _id: string;
299
+ originalFilename: string;
300
+ totalSlides?: number;
301
+ lessonOverview?: string;
302
+ slideAnalysis?: SlideAnalysis[];
303
+ createdAt: Date;
304
+ updatedAt: Date;
305
+ }
306
+ export interface AssistantImageDto {
307
+ _id: string;
308
+ imageUrl: string;
309
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CreationPhase = exports.SimulationRecordingsDto = exports.RecordingStatus = exports.SortOrder = exports.SimulationRecordingsQueryDto = exports.CreateSimulationDto = exports.ProductConfig = exports.CharacterCreateDto = exports.ContextDto = exports.ProfessionalProfileDto = exports.PersonalityAndBehaviourDto = exports.AssistantVoiceGender = exports.SegmentType = exports.PracticeType = exports.YearOfExperience = void 0;
3
+ exports.PdfSlidesAnalysisQueryDto = exports.PdfSlidesSortField = exports.RecommendationPriority = exports.CreationPhase = exports.SimulationRecordingsDto = exports.RecordingStatus = exports.SortOrder = exports.SimulationRecordingsQueryDto = exports.CreateSimulationDto = exports.ProductConfig = exports.CharacterCreateDto = exports.ContextDto = exports.ProfessionalProfileDto = exports.PersonalityAndBehaviourDto = exports.AvatarLanguage = exports.AssistantVoiceGender = exports.SegmentType = exports.PracticeType = exports.YearOfExperience = void 0;
4
4
  /**
5
5
  * Copyright (c) 2025 ctcHealth. All rights reserved.
6
6
  *
@@ -42,6 +42,14 @@ var AssistantVoiceGender;
42
42
  AssistantVoiceGender["Male"] = "Male";
43
43
  AssistantVoiceGender["Female"] = "Female";
44
44
  })(AssistantVoiceGender || (exports.AssistantVoiceGender = AssistantVoiceGender = {}));
45
+ var AvatarLanguage;
46
+ (function (AvatarLanguage) {
47
+ AvatarLanguage["English"] = "en";
48
+ AvatarLanguage["German"] = "de";
49
+ AvatarLanguage["Spanish"] = "es";
50
+ AvatarLanguage["Italian"] = "it";
51
+ AvatarLanguage["French"] = "fr";
52
+ })(AvatarLanguage || (exports.AvatarLanguage = AvatarLanguage = {}));
45
53
  class PersonalityAndBehaviourDto {
46
54
  riskTolerance;
47
55
  researchOrientation;
@@ -84,6 +92,8 @@ class CreateSimulationDto {
84
92
  scenario;
85
93
  objectives;
86
94
  anticipatedObjections;
95
+ imageId;
96
+ avatarLanguage;
87
97
  }
88
98
  exports.CreateSimulationDto = CreateSimulationDto;
89
99
  class SimulationRecordingsQueryDto {
@@ -121,4 +131,23 @@ var CreationPhase;
121
131
  CreationPhase["FINISHED"] = "FINISHED";
122
132
  CreationPhase["ERROR"] = "ERROR";
123
133
  })(CreationPhase || (exports.CreationPhase = CreationPhase = {}));
134
+ var RecommendationPriority;
135
+ (function (RecommendationPriority) {
136
+ RecommendationPriority["HIGH"] = "high";
137
+ RecommendationPriority["MEDIUM"] = "medium";
138
+ RecommendationPriority["LOW"] = "low";
139
+ })(RecommendationPriority || (exports.RecommendationPriority = RecommendationPriority = {}));
140
+ var PdfSlidesSortField;
141
+ (function (PdfSlidesSortField) {
142
+ PdfSlidesSortField["CREATED_AT"] = "createdAt";
143
+ PdfSlidesSortField["FILENAME"] = "originalFilename";
144
+ PdfSlidesSortField["TOTAL_SLIDES"] = "totalSlides";
145
+ })(PdfSlidesSortField || (exports.PdfSlidesSortField = PdfSlidesSortField = {}));
146
+ class PdfSlidesAnalysisQueryDto {
147
+ limit;
148
+ page;
149
+ sort;
150
+ sortBy;
151
+ }
152
+ exports.PdfSlidesAnalysisQueryDto = PdfSlidesAnalysisQueryDto;
124
153
  //# sourceMappingURL=plato-intefaces.js.map
@@ -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,MAAa,0BAA0B;IACrC,aAAa,CAAU;IACvB,mBAAmB,CAAU;IAC7B,eAAe,CAAU;IACzB,YAAY,CAAU;IACtB,cAAc,CAAU;CACzB;AAND,gEAMC;AAED,MAAa,sBAAsB;IACjC,gBAAgB,CAAU;IAC1B,gBAAgB,CAAU;IAC1B,uBAAuB,CAAU;IACjC,QAAQ,CAAU;CACnB;AALD,wDAKC;AAED,MAAa,UAAU;IACrB,2BAA2B,CAAU;IACrC,iBAAiB,CAAU;IAC3B,kBAAkB,CAAU;CAC7B;AAJD,gCAIC;AAED,MAAa,kBAAkB;IAC7B,IAAI,CAAU;IACd,mBAAmB,CAA0B;IAC7C,OAAO,CAAe;IACtB,uBAAuB,CAA8B;IACrD,OAAO,CAAc;IACrB,eAAe,CAAwB;CACxC;AAPD,gDAOC;AAED,MAAa,aAAa;IACxB,IAAI,CAAU;IACd,WAAW,CAAU;CACtB;AAHD,sCAGC;AAED,MAAa,mBAAmB;IAC9B,OAAO,CAAsB;IAC7B,OAAO,CAAiB;IACxB,YAAY,CAAU;IACtB,QAAQ,CAAU;IAClB,UAAU,CAAU;IACpB,qBAAqB,CAAU;CAChC;AAPD,kDAOC;AAID,MAAa,4BAA4B;IACvC,KAAK,CAAmB;IACxB,IAAI,CAAU;IACd,IAAI,CAAa;CAClB;AAJD,oEAIC;AAED,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,0BAAa,CAAA;AACf,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAED,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,4CAAyB,CAAA;IACzB,wCAAqB,CAAA;IACrB,oCAAiB,CAAA;AACnB,CAAC,EALW,eAAe,+BAAf,eAAe,QAK1B;AAED,MAAa,uBAAuB;IAClC,GAAG,CAAU;IACb,SAAS,CAAQ;IACjB,eAAe,CAAmB;CACnC;AAJD,0DAIC;AAiHD,IAAY,aASX;AATD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,8BAAa,CAAA;IACb,0CAAyB,CAAA;IACzB,0DAAyC,CAAA;IACzC,kEAAiD,CAAA;IACjD,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;IACrB,gCAAe,CAAA;AACjB,CAAC,EATW,aAAa,6BAAb,aAAa,QASxB"}
1
+ {"version":3,"file":"plato-intefaces.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/plato-intefaces.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { CallDTO, CreateSimulationDto, CreationPhase, SimulationRecordingsDto, SimulationRecordingsQueryDto, UploadPdfSlidesResponseDto, SimulationDetailsDto } from './plato-intefaces';
1
+ import { CallDTO, CreateSimulationDto, CreationPhase, SimulationRecordingsDto, SimulationRecordingsQueryDto, SimulationDetailsDto, RecommendationsResponseDto, PdfSlidesDto, PdfSlideDto, PdfSlidesAnalysisQueryDto, AssistantImageDto } from './plato-intefaces';
2
2
  export interface ApiClientConfig {
3
3
  baseUrl: string;
4
4
  token?: string;
@@ -98,5 +98,10 @@ export declare class PlatoApiClient {
98
98
  off: <K extends CallEventNames>(event: K, listener: CallEventListener<K>) => void;
99
99
  }>;
100
100
  private createCall;
101
- uploadPdfSlides(file: File | Blob): Promise<UploadPdfSlidesResponseDto>;
101
+ uploadPdfSlides(file: File | Blob): Promise<string>;
102
+ getRecommendations(): Promise<RecommendationsResponseDto>;
103
+ getSlidesAnalysis(queryParams: PdfSlidesAnalysisQueryDto): Promise<PdfSlidesDto[]>;
104
+ getSlideAnalysis(id: string): Promise<PdfSlideDto>;
105
+ deleteSlideAnalysis(id: string): Promise<void>;
106
+ getAssistantImages(): Promise<AssistantImageDto[]>;
102
107
  }
@@ -17,6 +17,8 @@ const tslib_1 = require("tslib");
17
17
  */
18
18
  const axios_1 = tslib_1.__importDefault(require("axios"));
19
19
  const web_1 = tslib_1.__importDefault(require("@vapi-ai/web"));
20
+ const utils_1 = require("./utils");
21
+ const constants_1 = require("./constants");
20
22
  class PlatoApiClient {
21
23
  config;
22
24
  http;
@@ -247,10 +249,112 @@ class PlatoApiClient {
247
249
  return response.data;
248
250
  }
249
251
  async uploadPdfSlides(file) {
250
- const formData = new FormData();
251
- formData.append('file', file);
252
- const response = await this.http.post('/api/v1/pdfSlides/upload', formData);
253
- return response.data;
252
+ try {
253
+ const checkResult = (0, utils_1.checkFile)(file, constants_1.MAX_PDF_FILE_SIZE, constants_1.ALLOWED_PDF_MIME_TYPES);
254
+ if (checkResult !== true) {
255
+ throw new Error(checkResult);
256
+ }
257
+ const contentHash = await (0, utils_1.calculateHash)(file);
258
+ const filename = file instanceof File ? file.name : file.filename;
259
+ if (!filename) {
260
+ throw new Error('Invalid input: could not extract filename from the provided file or blob.');
261
+ }
262
+ if (/[^a-zA-Z0-9._ -]/.test(filename)) {
263
+ throw new Error('Filename contains invalid characters. Only English letters, numbers, dots, hyphens, and underscores are allowed.');
264
+ }
265
+ const { presignedPost } = (await this.http.post('/api/v1/pdfSlides/request-upload', {
266
+ contentHash,
267
+ filename,
268
+ })).data;
269
+ const formData = new FormData();
270
+ Object.entries(presignedPost.fields).forEach(([key, value]) => {
271
+ formData.append(key, value);
272
+ });
273
+ formData.append('file', file);
274
+ await axios_1.default.post(presignedPost.url, formData, {
275
+ headers: {
276
+ 'Content-Type': 'multipart/form-data',
277
+ },
278
+ });
279
+ /*
280
+ // replace const { presignedPost } with const { presignedPost, objectKey }
281
+ // Uncomment this block if you are testing locally without AWS EventBridge
282
+ await this.http.post('/api/v1/pdfSlides/test-event-bridge', {
283
+ s3Name: objectKey,
284
+ });
285
+ */
286
+ return 'PDF upload successful';
287
+ }
288
+ catch (e) {
289
+ if (axios_1.default.isAxiosError(e)) {
290
+ console.error('Error uploading PDF slides:', e.response?.data?.message || e.message);
291
+ }
292
+ else {
293
+ console.error('Error uploading PDF slides:', e instanceof Error ? e.message : 'Unknown error');
294
+ }
295
+ throw e;
296
+ }
297
+ }
298
+ async getRecommendations() {
299
+ try {
300
+ const res = await this.http.get('/api/v1/recommendations');
301
+ return res.data;
302
+ }
303
+ catch (e) {
304
+ if (axios_1.default.isAxiosError(e)) {
305
+ console.error('Error getting recommendations:', e.response?.data.message);
306
+ }
307
+ throw e;
308
+ }
309
+ }
310
+ async getSlidesAnalysis(queryParams) {
311
+ try {
312
+ const res = await this.http.get('/api/v1/pdfSlides', {
313
+ params: queryParams,
314
+ });
315
+ return res.data;
316
+ }
317
+ catch (e) {
318
+ if (axios_1.default.isAxiosError(e)) {
319
+ console.error('Error getting PDF slides analysis:', e.response?.data.message);
320
+ }
321
+ throw e;
322
+ }
323
+ }
324
+ async getSlideAnalysis(id) {
325
+ try {
326
+ const res = await this.http.get(`/api/v1/pdfSlides/${id}`);
327
+ return res.data;
328
+ }
329
+ catch (e) {
330
+ if (axios_1.default.isAxiosError(e)) {
331
+ console.error('Error getting PDF slide analysis by ID:', e.response?.data.message);
332
+ }
333
+ throw e;
334
+ }
335
+ }
336
+ async deleteSlideAnalysis(id) {
337
+ try {
338
+ await this.http.delete(`/api/v1/pdfSlides/${id}`);
339
+ }
340
+ catch (e) {
341
+ if (axios_1.default.isAxiosError(e)) {
342
+ console.error('Error deleting PDF slide analysis:', e.response?.data.message);
343
+ }
344
+ throw e;
345
+ }
346
+ }
347
+ async getAssistantImages() {
348
+ try {
349
+ const res = await this.http.get('/api/v1/assistant-images');
350
+ return res.data;
351
+ }
352
+ catch (e) {
353
+ if (axios_1.default.isAxiosError(e)) {
354
+ console.error('Error getting assistant images:', e.response?.data.message);
355
+ }
356
+ throw e;
357
+ }
254
358
  }
255
359
  }
256
360
  exports.PlatoApiClient = PlatoApiClient;
@@ -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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"}
@@ -0,0 +1,29 @@
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
+ /**
15
+ * Validates a file against size and type constraints.
16
+ *
17
+ * @param file - The file to check.
18
+ * @param maxFileSize - The maximum allowed file size in bytes.
19
+ * @param allowedMimeTypes - An array of allowed MIME types.
20
+ * @returns true if valid, or a descriptive error message if invalid.
21
+ */
22
+ export declare function checkFile(file: File | Blob, maxFileSize: number, allowedMimeTypes: string[]): true | string;
23
+ /**
24
+ * Calculates the SHA-256 hash of a file or blob.
25
+ *
26
+ * @param file - The file or blob to hash.
27
+ * @returns A promise that resolves to the hexadecimal SHA-256 hash.
28
+ */
29
+ export declare function calculateHash(file: File | Blob): Promise<string>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkFile = checkFile;
4
+ exports.calculateHash = calculateHash;
5
+ /**
6
+ * Copyright (c) 2025 ctcHealth. All rights reserved.
7
+ *
8
+ * This file is part of the ctcHealth Plato Platform, a proprietary software system developed by ctcHealth.
9
+ *
10
+ * This source code and all related materials are confidential and proprietary to ctcHealth.
11
+ * Unauthorized access, use, copying, modification, distribution, or disclosure is strictly prohibited
12
+ * and may result in disciplinary action and civil and/or criminal penalties.
13
+ *
14
+ * This software is intended solely for authorized use within ctcHealth and its designated partners.
15
+ *
16
+ * For internal use only.
17
+ */
18
+ /**
19
+ * Validates a file against size and type constraints.
20
+ *
21
+ * @param file - The file to check.
22
+ * @param maxFileSize - The maximum allowed file size in bytes.
23
+ * @param allowedMimeTypes - An array of allowed MIME types.
24
+ * @returns true if valid, or a descriptive error message if invalid.
25
+ */
26
+ function checkFile(file, maxFileSize, allowedMimeTypes) {
27
+ if (file.size > maxFileSize) {
28
+ const uploadedSizeMB = (file.size / (1024 * 1024)).toFixed(2);
29
+ const maxSizeMB = (maxFileSize / (1024 * 1024)).toFixed(2);
30
+ return `File size (${uploadedSizeMB} MB) exceeds the maximum allowed size of ${maxSizeMB} MB.`;
31
+ }
32
+ if (!allowedMimeTypes.includes(file.type)) {
33
+ return `Invalid file type: ${file.type}. Allowed types are: ${allowedMimeTypes.join(', ')}.`;
34
+ }
35
+ return true;
36
+ }
37
+ /**
38
+ * Calculates the SHA-256 hash of a file or blob.
39
+ *
40
+ * @param file - The file or blob to hash.
41
+ * @returns A promise that resolves to the hexadecimal SHA-256 hash.
42
+ */
43
+ async function calculateHash(file) {
44
+ const arrayBuffer = await file.arrayBuffer();
45
+ const hashBuffer = await crypto.subtle.digest('SHA-256', arrayBuffer);
46
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
47
+ const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
48
+ return hashHex;
49
+ }
50
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/utils.ts"],"names":[],"mappings":";;AAqBA,8BAgBC;AAQD,sCAMC;AAnDD;;;;;;;;;;;;GAYG;AACH;;;;;;;GAOG;AACH,SAAgB,SAAS,CACvB,IAAiB,EACjB,WAAmB,EACnB,gBAA0B;IAE1B,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,cAAc,cAAc,4CAA4C,SAAS,MAAM,CAAC;IACjG,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,sBAAsB,IAAI,CAAC,IAAI,wBAAwB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/F,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,aAAa,CAAC,IAAiB;IACnD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC;AACjB,CAAC"}