@sprucelabs/sprucebot-llm 11.1.16 → 11.1.17
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/build/bots/SprucebotLlmBotImpl.d.ts +1 -3
- package/build/bots/SprucebotLlmBotImpl.js +10 -63
- package/build/bots/TurnRequest.d.ts +22 -0
- package/build/bots/TurnRequest.js +87 -0
- package/build/esm/bots/SprucebotLlmBotImpl.d.ts +1 -3
- package/build/esm/bots/SprucebotLlmBotImpl.js +11 -70
- package/build/esm/bots/TurnRequest.d.ts +22 -0
- package/build/esm/bots/TurnRequest.js +97 -0
- package/package.json +1 -1
|
@@ -10,16 +10,14 @@ export default class SprucebotLlmBotImpl<StateSchema extends Schema = Schema, St
|
|
|
10
10
|
private isDone;
|
|
11
11
|
protected messages: LlmMessage[];
|
|
12
12
|
protected skill?: SprucebotLLmSkill;
|
|
13
|
+
private activeTurn?;
|
|
13
14
|
constructor(options: BotOptions<StateSchema, State>);
|
|
14
15
|
clearMessageHistory(): void;
|
|
15
16
|
markAsDone(): void;
|
|
16
17
|
getIsDone(): boolean;
|
|
17
18
|
serialize(): SerializedBot<StateSchema, State>;
|
|
18
19
|
sendMessage(message: SendMessage, cb?: MessageResponseCallback): Promise<string>;
|
|
19
|
-
private _sendMessageInternal;
|
|
20
20
|
private optionallyUpdateState;
|
|
21
|
-
private parseResponse;
|
|
22
|
-
private sendMessageToAdapter;
|
|
23
21
|
private trackMessage;
|
|
24
22
|
updateState(newState: Partial<State>): Promise<void>;
|
|
25
23
|
setSkill(skill: SprucebotLLmSkill<any>): void;
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const mercury_event_emitter_1 = require("@sprucelabs/mercury-event-emitter");
|
|
7
7
|
const schema_1 = require("@sprucelabs/schema");
|
|
8
8
|
const llm_types_1 = require("../llm.types");
|
|
9
|
-
const
|
|
9
|
+
const TurnRequest_1 = __importDefault(require("./TurnRequest"));
|
|
10
10
|
class SprucebotLlmBotImpl extends mercury_event_emitter_1.AbstractEventEmitter {
|
|
11
11
|
constructor(options) {
|
|
12
12
|
const { adapter, youAre, stateSchema, state, skill } = options;
|
|
@@ -56,59 +56,16 @@ class SprucebotLlmBotImpl extends mercury_event_emitter_1.AbstractEventEmitter {
|
|
|
56
56
|
llmMessage.message = message.imageDescription;
|
|
57
57
|
llmMessage.imageBase64 = message.imageBase64;
|
|
58
58
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
let state;
|
|
68
|
-
let callbackResults;
|
|
69
|
-
try {
|
|
70
|
-
const parsed = await this.parseResponse(llmResponse, callbacks);
|
|
71
|
-
parsedMessage = parsed.message;
|
|
72
|
-
isDone = parsed.isDone;
|
|
73
|
-
state = parsed.state;
|
|
74
|
-
callbackResults = parsed.callbackResults;
|
|
75
|
-
}
|
|
76
|
-
catch (err) {
|
|
77
|
-
this.trackMessage({
|
|
78
|
-
from: 'You',
|
|
79
|
-
message: llmResponse,
|
|
80
|
-
});
|
|
81
|
-
if (err.options?.code === 'INVALID_CALLBACK' ||
|
|
82
|
-
err.options?.code === 'CALLBACK_ERROR') {
|
|
83
|
-
return this._sendMessageInternal({ from: 'Api', message: `Error: ${err.message}` }, cb);
|
|
84
|
-
}
|
|
85
|
-
throw err;
|
|
86
|
-
}
|
|
87
|
-
this.isDone = isDone;
|
|
88
|
-
await this.optionallyUpdateState(state);
|
|
89
|
-
this.trackMessage({
|
|
90
|
-
from: 'You',
|
|
91
|
-
message: llmResponse,
|
|
59
|
+
this.activeTurn?.cancel();
|
|
60
|
+
this.activeTurn = new TurnRequest_1.default({
|
|
61
|
+
adapter: this.adapter,
|
|
62
|
+
bot: this,
|
|
63
|
+
optionallyUpdateState: this.optionallyUpdateState.bind(this),
|
|
64
|
+
setDone: (isDone) => (this.isDone = isDone),
|
|
65
|
+
skill: this.skill,
|
|
66
|
+
trackMessage: this.trackMessage.bind(this),
|
|
92
67
|
});
|
|
93
|
-
cb
|
|
94
|
-
if (callbackResults) {
|
|
95
|
-
let message;
|
|
96
|
-
if (typeof callbackResults === 'string') {
|
|
97
|
-
message = {
|
|
98
|
-
from: 'Api',
|
|
99
|
-
message: `API Results: ${callbackResults}`,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
message = {
|
|
104
|
-
from: 'Api',
|
|
105
|
-
imageBase64: callbackResults.imageBase64,
|
|
106
|
-
message: `API Results: ${callbackResults.imageDescription}`,
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
await this._sendMessageInternal(message, cb);
|
|
110
|
-
}
|
|
111
|
-
return parsedMessage;
|
|
68
|
+
return this.activeTurn.sendMessage(llmMessage, cb);
|
|
112
69
|
}
|
|
113
70
|
async optionallyUpdateState(state) {
|
|
114
71
|
if (this.stateSchema && state) {
|
|
@@ -118,16 +75,6 @@ class SprucebotLlmBotImpl extends mercury_event_emitter_1.AbstractEventEmitter {
|
|
|
118
75
|
await this.skill?.updateState(state);
|
|
119
76
|
}
|
|
120
77
|
}
|
|
121
|
-
async parseResponse(response, callbacks) {
|
|
122
|
-
const parser = ResponseParser_1.default.getInstance();
|
|
123
|
-
const parsed = await parser.parse(response, callbacks);
|
|
124
|
-
return parsed;
|
|
125
|
-
}
|
|
126
|
-
async sendMessageToAdapter(model) {
|
|
127
|
-
return await this.adapter.sendMessage(this, {
|
|
128
|
-
model,
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
78
|
trackMessage(m) {
|
|
132
79
|
if (this.messages.length === SprucebotLlmBotImpl.messageMemoryLimit) {
|
|
133
80
|
this.messages.shift();
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { LlmAdapter, LlmMessage, MessageResponseCallback, SprucebotLlmBot, SprucebotLLmSkill } from '../llm.types';
|
|
2
|
+
export default class TurnRequest {
|
|
3
|
+
private trackMessage;
|
|
4
|
+
private skill?;
|
|
5
|
+
private adapter;
|
|
6
|
+
private setDone;
|
|
7
|
+
private optionallyUpdateState;
|
|
8
|
+
private bot;
|
|
9
|
+
private isCancelled;
|
|
10
|
+
constructor(options: {
|
|
11
|
+
trackMessage: (message: LlmMessage) => void;
|
|
12
|
+
setDone: (isDone: boolean) => void;
|
|
13
|
+
bot: SprucebotLlmBot;
|
|
14
|
+
skill?: SprucebotLLmSkill;
|
|
15
|
+
adapter: LlmAdapter;
|
|
16
|
+
optionallyUpdateState: (state?: Record<string, any>) => Promise<void>;
|
|
17
|
+
});
|
|
18
|
+
cancel(): void;
|
|
19
|
+
sendMessage(llmMessage: LlmMessage, cb?: MessageResponseCallback): Promise<string>;
|
|
20
|
+
private sendMessageToAdapter;
|
|
21
|
+
private parseResponse;
|
|
22
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const ResponseParser_1 = __importDefault(require("../parsingResponses/ResponseParser"));
|
|
7
|
+
class TurnRequest {
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this.isCancelled = false;
|
|
10
|
+
const { trackMessage, skill, bot, adapter, setDone, optionallyUpdateState, } = options;
|
|
11
|
+
this.trackMessage = trackMessage;
|
|
12
|
+
this.skill = skill;
|
|
13
|
+
this.adapter = adapter;
|
|
14
|
+
this.setDone = setDone;
|
|
15
|
+
this.bot = bot;
|
|
16
|
+
this.optionallyUpdateState = optionallyUpdateState;
|
|
17
|
+
}
|
|
18
|
+
cancel() {
|
|
19
|
+
this.isCancelled = true;
|
|
20
|
+
}
|
|
21
|
+
async sendMessage(llmMessage, cb) {
|
|
22
|
+
this.trackMessage(llmMessage);
|
|
23
|
+
const { model, callbacks } = this.skill?.serialize() ?? {};
|
|
24
|
+
const llmResponse = await this.sendMessageToAdapter(model);
|
|
25
|
+
if (this.isCancelled) {
|
|
26
|
+
return '';
|
|
27
|
+
}
|
|
28
|
+
let parsedMessage;
|
|
29
|
+
let isDone;
|
|
30
|
+
let state;
|
|
31
|
+
let callbackResults;
|
|
32
|
+
try {
|
|
33
|
+
const parsed = await this.parseResponse(llmResponse, callbacks);
|
|
34
|
+
parsedMessage = parsed.message;
|
|
35
|
+
isDone = parsed.isDone;
|
|
36
|
+
state = parsed.state;
|
|
37
|
+
callbackResults = parsed.callbackResults;
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
this.trackMessage({
|
|
41
|
+
from: 'You',
|
|
42
|
+
message: llmResponse,
|
|
43
|
+
});
|
|
44
|
+
if (err.options?.code === 'INVALID_CALLBACK' ||
|
|
45
|
+
err.options?.code === 'CALLBACK_ERROR') {
|
|
46
|
+
return this.sendMessage({ from: 'Api', message: `Error: ${err.message}` }, cb);
|
|
47
|
+
}
|
|
48
|
+
throw err;
|
|
49
|
+
}
|
|
50
|
+
this.setDone(isDone);
|
|
51
|
+
await this.optionallyUpdateState(state);
|
|
52
|
+
this.trackMessage({
|
|
53
|
+
from: 'You',
|
|
54
|
+
message: llmResponse,
|
|
55
|
+
});
|
|
56
|
+
cb?.(parsedMessage);
|
|
57
|
+
if (callbackResults) {
|
|
58
|
+
let message;
|
|
59
|
+
if (typeof callbackResults === 'string') {
|
|
60
|
+
message = {
|
|
61
|
+
from: 'Api',
|
|
62
|
+
message: `API Results: ${callbackResults}`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
message = {
|
|
67
|
+
from: 'Api',
|
|
68
|
+
imageBase64: callbackResults.imageBase64,
|
|
69
|
+
message: `API Results: ${callbackResults.imageDescription}`,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
await this.sendMessage(message, cb);
|
|
73
|
+
}
|
|
74
|
+
return parsedMessage;
|
|
75
|
+
}
|
|
76
|
+
async sendMessageToAdapter(model) {
|
|
77
|
+
return await this.adapter.sendMessage(this.bot, {
|
|
78
|
+
model,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
async parseResponse(response, callbacks) {
|
|
82
|
+
const parser = ResponseParser_1.default.getInstance();
|
|
83
|
+
const parsed = await parser.parse(response, callbacks);
|
|
84
|
+
return parsed;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.default = TurnRequest;
|
|
@@ -10,16 +10,14 @@ export default class SprucebotLlmBotImpl<StateSchema extends Schema = Schema, St
|
|
|
10
10
|
private isDone;
|
|
11
11
|
protected messages: LlmMessage[];
|
|
12
12
|
protected skill?: SprucebotLLmSkill;
|
|
13
|
+
private activeTurn?;
|
|
13
14
|
constructor(options: BotOptions<StateSchema, State>);
|
|
14
15
|
clearMessageHistory(): void;
|
|
15
16
|
markAsDone(): void;
|
|
16
17
|
getIsDone(): boolean;
|
|
17
18
|
serialize(): SerializedBot<StateSchema, State>;
|
|
18
19
|
sendMessage(message: SendMessage, cb?: MessageResponseCallback): Promise<string>;
|
|
19
|
-
private _sendMessageInternal;
|
|
20
20
|
private optionallyUpdateState;
|
|
21
|
-
private parseResponse;
|
|
22
|
-
private sendMessageToAdapter;
|
|
23
21
|
private trackMessage;
|
|
24
22
|
updateState(newState: Partial<State>): Promise<void>;
|
|
25
23
|
setSkill(skill: SprucebotLLmSkill<any>): void;
|
|
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { AbstractEventEmitter } from '@sprucelabs/mercury-event-emitter';
|
|
11
11
|
import { assertOptions, defaultSchemaValues, } from '@sprucelabs/schema';
|
|
12
12
|
import { llmEventContract, } from '../llm.types.js';
|
|
13
|
-
import
|
|
13
|
+
import TurnRequest from './TurnRequest.js';
|
|
14
14
|
class SprucebotLlmBotImpl extends AbstractEventEmitter {
|
|
15
15
|
constructor(options) {
|
|
16
16
|
const { adapter, youAre, stateSchema, state, skill } = options;
|
|
@@ -47,6 +47,7 @@ class SprucebotLlmBotImpl extends AbstractEventEmitter {
|
|
|
47
47
|
}
|
|
48
48
|
sendMessage(message, cb) {
|
|
49
49
|
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
var _a;
|
|
50
51
|
assertOptions({ message }, ['message']);
|
|
51
52
|
const llmMessage = {
|
|
52
53
|
from: 'Me',
|
|
@@ -59,62 +60,16 @@ class SprucebotLlmBotImpl extends AbstractEventEmitter {
|
|
|
59
60
|
llmMessage.message = message.imageDescription;
|
|
60
61
|
llmMessage.imageBase64 = message.imageBase64;
|
|
61
62
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const llmResponse = yield this.sendMessageToAdapter(model);
|
|
71
|
-
let parsedMessage;
|
|
72
|
-
let isDone;
|
|
73
|
-
let state;
|
|
74
|
-
let callbackResults;
|
|
75
|
-
try {
|
|
76
|
-
const parsed = yield this.parseResponse(llmResponse, callbacks);
|
|
77
|
-
parsedMessage = parsed.message;
|
|
78
|
-
isDone = parsed.isDone;
|
|
79
|
-
state = parsed.state;
|
|
80
|
-
callbackResults = parsed.callbackResults;
|
|
81
|
-
}
|
|
82
|
-
catch (err) {
|
|
83
|
-
this.trackMessage({
|
|
84
|
-
from: 'You',
|
|
85
|
-
message: llmResponse,
|
|
86
|
-
});
|
|
87
|
-
if (((_c = err.options) === null || _c === void 0 ? void 0 : _c.code) === 'INVALID_CALLBACK' ||
|
|
88
|
-
((_d = err.options) === null || _d === void 0 ? void 0 : _d.code) === 'CALLBACK_ERROR') {
|
|
89
|
-
return this._sendMessageInternal({ from: 'Api', message: `Error: ${err.message}` }, cb);
|
|
90
|
-
}
|
|
91
|
-
throw err;
|
|
92
|
-
}
|
|
93
|
-
this.isDone = isDone;
|
|
94
|
-
yield this.optionallyUpdateState(state);
|
|
95
|
-
this.trackMessage({
|
|
96
|
-
from: 'You',
|
|
97
|
-
message: llmResponse,
|
|
63
|
+
(_a = this.activeTurn) === null || _a === void 0 ? void 0 : _a.cancel();
|
|
64
|
+
this.activeTurn = new TurnRequest({
|
|
65
|
+
adapter: this.adapter,
|
|
66
|
+
bot: this,
|
|
67
|
+
optionallyUpdateState: this.optionallyUpdateState.bind(this),
|
|
68
|
+
setDone: (isDone) => (this.isDone = isDone),
|
|
69
|
+
skill: this.skill,
|
|
70
|
+
trackMessage: this.trackMessage.bind(this),
|
|
98
71
|
});
|
|
99
|
-
|
|
100
|
-
if (callbackResults) {
|
|
101
|
-
let message;
|
|
102
|
-
if (typeof callbackResults === 'string') {
|
|
103
|
-
message = {
|
|
104
|
-
from: 'Api',
|
|
105
|
-
message: `API Results: ${callbackResults}`,
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
message = {
|
|
110
|
-
from: 'Api',
|
|
111
|
-
imageBase64: callbackResults.imageBase64,
|
|
112
|
-
message: `API Results: ${callbackResults.imageDescription}`,
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
yield this._sendMessageInternal(message, cb);
|
|
116
|
-
}
|
|
117
|
-
return parsedMessage;
|
|
72
|
+
return this.activeTurn.sendMessage(llmMessage, cb);
|
|
118
73
|
});
|
|
119
74
|
}
|
|
120
75
|
optionallyUpdateState(state) {
|
|
@@ -128,20 +83,6 @@ class SprucebotLlmBotImpl extends AbstractEventEmitter {
|
|
|
128
83
|
}
|
|
129
84
|
});
|
|
130
85
|
}
|
|
131
|
-
parseResponse(response, callbacks) {
|
|
132
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
-
const parser = ResponseParser.getInstance();
|
|
134
|
-
const parsed = yield parser.parse(response, callbacks);
|
|
135
|
-
return parsed;
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
sendMessageToAdapter(model) {
|
|
139
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
140
|
-
return yield this.adapter.sendMessage(this, {
|
|
141
|
-
model,
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
86
|
trackMessage(m) {
|
|
146
87
|
if (this.messages.length === SprucebotLlmBotImpl.messageMemoryLimit) {
|
|
147
88
|
this.messages.shift();
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { LlmAdapter, LlmMessage, MessageResponseCallback, SprucebotLlmBot, SprucebotLLmSkill } from '../llm.types';
|
|
2
|
+
export default class TurnRequest {
|
|
3
|
+
private trackMessage;
|
|
4
|
+
private skill?;
|
|
5
|
+
private adapter;
|
|
6
|
+
private setDone;
|
|
7
|
+
private optionallyUpdateState;
|
|
8
|
+
private bot;
|
|
9
|
+
private isCancelled;
|
|
10
|
+
constructor(options: {
|
|
11
|
+
trackMessage: (message: LlmMessage) => void;
|
|
12
|
+
setDone: (isDone: boolean) => void;
|
|
13
|
+
bot: SprucebotLlmBot;
|
|
14
|
+
skill?: SprucebotLLmSkill;
|
|
15
|
+
adapter: LlmAdapter;
|
|
16
|
+
optionallyUpdateState: (state?: Record<string, any>) => Promise<void>;
|
|
17
|
+
});
|
|
18
|
+
cancel(): void;
|
|
19
|
+
sendMessage(llmMessage: LlmMessage, cb?: MessageResponseCallback): Promise<string>;
|
|
20
|
+
private sendMessageToAdapter;
|
|
21
|
+
private parseResponse;
|
|
22
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import ResponseParser from '../parsingResponses/ResponseParser.js';
|
|
11
|
+
export default class TurnRequest {
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.isCancelled = false;
|
|
14
|
+
const { trackMessage, skill, bot, adapter, setDone, optionallyUpdateState, } = options;
|
|
15
|
+
this.trackMessage = trackMessage;
|
|
16
|
+
this.skill = skill;
|
|
17
|
+
this.adapter = adapter;
|
|
18
|
+
this.setDone = setDone;
|
|
19
|
+
this.bot = bot;
|
|
20
|
+
this.optionallyUpdateState = optionallyUpdateState;
|
|
21
|
+
}
|
|
22
|
+
cancel() {
|
|
23
|
+
this.isCancelled = true;
|
|
24
|
+
}
|
|
25
|
+
sendMessage(llmMessage, cb) {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
var _a, _b, _c, _d;
|
|
28
|
+
this.trackMessage(llmMessage);
|
|
29
|
+
const { model, callbacks } = (_b = (_a = this.skill) === null || _a === void 0 ? void 0 : _a.serialize()) !== null && _b !== void 0 ? _b : {};
|
|
30
|
+
const llmResponse = yield this.sendMessageToAdapter(model);
|
|
31
|
+
if (this.isCancelled) {
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
let parsedMessage;
|
|
35
|
+
let isDone;
|
|
36
|
+
let state;
|
|
37
|
+
let callbackResults;
|
|
38
|
+
try {
|
|
39
|
+
const parsed = yield this.parseResponse(llmResponse, callbacks);
|
|
40
|
+
parsedMessage = parsed.message;
|
|
41
|
+
isDone = parsed.isDone;
|
|
42
|
+
state = parsed.state;
|
|
43
|
+
callbackResults = parsed.callbackResults;
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
this.trackMessage({
|
|
47
|
+
from: 'You',
|
|
48
|
+
message: llmResponse,
|
|
49
|
+
});
|
|
50
|
+
if (((_c = err.options) === null || _c === void 0 ? void 0 : _c.code) === 'INVALID_CALLBACK' ||
|
|
51
|
+
((_d = err.options) === null || _d === void 0 ? void 0 : _d.code) === 'CALLBACK_ERROR') {
|
|
52
|
+
return this.sendMessage({ from: 'Api', message: `Error: ${err.message}` }, cb);
|
|
53
|
+
}
|
|
54
|
+
throw err;
|
|
55
|
+
}
|
|
56
|
+
this.setDone(isDone);
|
|
57
|
+
yield this.optionallyUpdateState(state);
|
|
58
|
+
this.trackMessage({
|
|
59
|
+
from: 'You',
|
|
60
|
+
message: llmResponse,
|
|
61
|
+
});
|
|
62
|
+
cb === null || cb === void 0 ? void 0 : cb(parsedMessage);
|
|
63
|
+
if (callbackResults) {
|
|
64
|
+
let message;
|
|
65
|
+
if (typeof callbackResults === 'string') {
|
|
66
|
+
message = {
|
|
67
|
+
from: 'Api',
|
|
68
|
+
message: `API Results: ${callbackResults}`,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
message = {
|
|
73
|
+
from: 'Api',
|
|
74
|
+
imageBase64: callbackResults.imageBase64,
|
|
75
|
+
message: `API Results: ${callbackResults.imageDescription}`,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
yield this.sendMessage(message, cb);
|
|
79
|
+
}
|
|
80
|
+
return parsedMessage;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
sendMessageToAdapter(model) {
|
|
84
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
return yield this.adapter.sendMessage(this.bot, {
|
|
86
|
+
model,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
parseResponse(response, callbacks) {
|
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
const parser = ResponseParser.getInstance();
|
|
93
|
+
const parsed = yield parser.parse(response, callbacks);
|
|
94
|
+
return parsed;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|