From 1de170221740a6c31176409039429329ca8cd0f3 Mon Sep 17 00:00:00 2001 From: codemakerai-dev Date: Mon, 8 Jul 2024 16:22:18 -0700 Subject: [PATCH] Added streaming API --- package-lock.json | 18 +++++++++--------- package.json | 2 +- src/assistant/speechServer.ts | 17 ++++++++++------- src/service/codemakerService.ts | 10 ++++++++++ 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index adfd4bc..3ee7d75 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,14 @@ { "name": "codemakerai", - "version": "1.52.0", + "version": "1.53.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codemakerai", - "version": "1.52.0", + "version": "1.53.0", "dependencies": { - "codemaker-sdk": "^2.24.0" + "codemaker-sdk": "^2.25.0" }, "devDependencies": { "@types/glob": "^8.1.0", @@ -1316,9 +1316,9 @@ } }, "node_modules/codemaker-sdk": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/codemaker-sdk/-/codemaker-sdk-2.24.0.tgz", - "integrity": "sha512-K8uSYiyoV246FhH+iVUlWgGuD7rr3q4OBD+qIJBOEDv/s9vgw+hd9WmTtoPme+hOcxJO12TmVU/P5unrEe+t1g==", + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/codemaker-sdk/-/codemaker-sdk-2.25.0.tgz", + "integrity": "sha512-Wl3KfBYdGiKzk0Oabkt78HV9opSpBFhuWyyVO3BGEfnVF986cqZCXxCQPgUDV+yzgbcW/+KXDbz7B91ayJTOBQ==", "license": "MIT", "dependencies": { "@grpc/grpc-js": "^1.10.9", @@ -1327,9 +1327,9 @@ } }, "node_modules/codemaker-sdk/node_modules/typescript": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", - "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", diff --git a/package.json b/package.json index a903293..1513fb1 100644 --- a/package.json +++ b/package.json @@ -338,7 +338,7 @@ "test": "node ./out/test/runTest.js" }, "dependencies": { - "codemaker-sdk": "^2.24.0" + "codemaker-sdk": "^2.25.0" }, "devDependencies": { "@types/glob": "^8.1.0", diff --git a/src/assistant/speechServer.ts b/src/assistant/speechServer.ts index 76cd942..0f27b99 100644 --- a/src/assistant/speechServer.ts +++ b/src/assistant/speechServer.ts @@ -22,13 +22,16 @@ export default class SpeechServer { const url = parse(req.url!, true); const input = Buffer.from(url.query['input'] as string, 'base64url').toString('utf-8'); - this.codemakerSerivce.assistantSpeech(input).then((result) => { - res.setHeader('Content-Type', 'audio/mp3'); - res.writeHead(200); - res.write(result.audio); - res.end(); - }).catch((err) => { - res.writeHead(500); + res.setHeader('Content-Type', 'audio/mp3'); + + const stream = this.codemakerSerivce.assistantSpeechStream(input); + stream.on('data', (data) => { + res.write(data.audio); + }); + stream.on('error', (e) => { + res.statusCode = 500; + }); + stream.on('end', () => { res.end(); }); }; diff --git a/src/service/codemakerService.ts b/src/service/codemakerService.ts index c19baaa..2849104 100644 --- a/src/service/codemakerService.ts +++ b/src/service/codemakerService.ts @@ -137,6 +137,16 @@ class CodemakerService { return this.getClient().assistantSpeech(this.createAssistantSpeechRequest(message)); } + /** + * Streams Assistant speech. + * + * @param message chat message + * @returns + */ + public assistantSpeechStream(message: string) { + return this.getClient().assistantSpeechStream(this.createAssistantSpeechRequest(message)); + } + /** * Registers assistant feedback. *