@sprucelabs/sprucebot-llm 15.0.2 → 15.0.3
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/.spruce/settings.json +1 -1
- package/build/bots/SprucebotLlmBotImpl.d.ts +1 -1
- package/build/bots/TurnRequest.d.ts +1 -1
- package/build/bots/TurnRequest.js +1 -1
- package/build/esm/bots/SprucebotLlmBotImpl.d.ts +1 -1
- package/build/esm/bots/TurnRequest.d.ts +1 -1
- package/build/esm/bots/TurnRequest.js +1 -1
- package/build/esm/llm.types.d.ts +3 -3
- package/build/esm/parsingResponses/ResponseParserV2.js +19 -3
- package/build/llm.types.d.ts +3 -3
- package/build/parsingResponses/ResponseParserV2.js +19 -3
- package/package.json +1 -1
|
@@ -16,7 +16,7 @@ export default class SprucebotLlmBotImpl<StateSchema extends Schema = Schema, St
|
|
|
16
16
|
markAsDone(): void;
|
|
17
17
|
getIsDone(): boolean;
|
|
18
18
|
serialize(): SerializedBot<StateSchema, State>;
|
|
19
|
-
sendMessage(message: SendMessage, cb?: MessageResponseCallback): Promise<string>;
|
|
19
|
+
sendMessage(message: SendMessage, cb?: MessageResponseCallback): Promise<string | null>;
|
|
20
20
|
private optionallyUpdateState;
|
|
21
21
|
private trackMessage;
|
|
22
22
|
updateState(updates: Partial<State>): Promise<void>;
|
|
@@ -16,7 +16,7 @@ export default class TurnRequest {
|
|
|
16
16
|
optionallyUpdateState: (state?: Record<string, any>) => Promise<void>;
|
|
17
17
|
});
|
|
18
18
|
cancel(): void;
|
|
19
|
-
sendMessage(llmMessage: LlmMessage, cb?: MessageResponseCallback): Promise<string>;
|
|
19
|
+
sendMessage(llmMessage: LlmMessage, cb?: MessageResponseCallback): Promise<string | null>;
|
|
20
20
|
private sendMessageToAdapter;
|
|
21
21
|
private parseResponse;
|
|
22
22
|
}
|
|
@@ -16,7 +16,7 @@ export default class SprucebotLlmBotImpl<StateSchema extends Schema = Schema, St
|
|
|
16
16
|
markAsDone(): void;
|
|
17
17
|
getIsDone(): boolean;
|
|
18
18
|
serialize(): SerializedBot<StateSchema, State>;
|
|
19
|
-
sendMessage(message: SendMessage, cb?: MessageResponseCallback): Promise<string>;
|
|
19
|
+
sendMessage(message: SendMessage, cb?: MessageResponseCallback): Promise<string | null>;
|
|
20
20
|
private optionallyUpdateState;
|
|
21
21
|
private trackMessage;
|
|
22
22
|
updateState(updates: Partial<State>): Promise<void>;
|
|
@@ -16,7 +16,7 @@ export default class TurnRequest {
|
|
|
16
16
|
optionallyUpdateState: (state?: Record<string, any>) => Promise<void>;
|
|
17
17
|
});
|
|
18
18
|
cancel(): void;
|
|
19
|
-
sendMessage(llmMessage: LlmMessage, cb?: MessageResponseCallback): Promise<string>;
|
|
19
|
+
sendMessage(llmMessage: LlmMessage, cb?: MessageResponseCallback): Promise<string | null>;
|
|
20
20
|
private sendMessageToAdapter;
|
|
21
21
|
private parseResponse;
|
|
22
22
|
}
|
package/build/esm/llm.types.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export interface BotOptions<StateSchema extends Schema = Schema, State extends S
|
|
|
9
9
|
export interface SprucebotLlmBot<StateSchema extends Schema = Schema, State extends SchemaValues<StateSchema> = SchemaValues<StateSchema>> extends MercuryEventEmitter<LlmEventContract> {
|
|
10
10
|
markAsDone(): void;
|
|
11
11
|
getIsDone(): boolean;
|
|
12
|
-
sendMessage(message: SendMessage, responseCb?: MessageResponseCallback): Promise<string>;
|
|
12
|
+
sendMessage(message: SendMessage, responseCb?: MessageResponseCallback): Promise<string | null>;
|
|
13
13
|
serialize(): SerializedBot<StateSchema, State>;
|
|
14
14
|
updateState(state: Partial<State>): Promise<void>;
|
|
15
15
|
setSkill(skill: SprucebotLLmSkill<any>): void;
|
|
@@ -96,7 +96,7 @@ export type LlmCallbackParameter = {
|
|
|
96
96
|
name: string;
|
|
97
97
|
description?: string;
|
|
98
98
|
});
|
|
99
|
-
export type MessageResponseCallback = (message: string) => void;
|
|
99
|
+
export type MessageResponseCallback = (message: string | null) => void;
|
|
100
100
|
export type SendMessage = string | SendMessageWithImage;
|
|
101
101
|
export interface SendMessageWithImage {
|
|
102
102
|
imageDescription: string;
|
|
@@ -111,6 +111,6 @@ export interface ResponseParser {
|
|
|
111
111
|
export interface ParsedResponse {
|
|
112
112
|
isDone: boolean;
|
|
113
113
|
state?: Record<string, any>;
|
|
114
|
-
message: string;
|
|
114
|
+
message: string | null;
|
|
115
115
|
callbackResults?: SendMessage;
|
|
116
116
|
}
|
|
@@ -17,10 +17,12 @@ export default class ResponseParserV2 {
|
|
|
17
17
|
let callbackResults = undefined;
|
|
18
18
|
const hasCallbacks = message.includes('@callback');
|
|
19
19
|
if (hasCallbacks) {
|
|
20
|
-
callbackResults = yield this.invokeCallbacks(message, callbacks);
|
|
20
|
+
const { callbackResults: c, message: m } = yield this.invokeCallbacks(message, callbacks);
|
|
21
|
+
callbackResults = c;
|
|
22
|
+
message = m;
|
|
21
23
|
}
|
|
22
24
|
const hasState = response.includes('@updateState');
|
|
23
|
-
if (hasState) {
|
|
25
|
+
if (hasState && message) {
|
|
24
26
|
const stateMatch = message.match(/@updateState\s+({[\s\S]*?})\n?/);
|
|
25
27
|
if (stateMatch && stateMatch[1]) {
|
|
26
28
|
state = JSON.parse(stateMatch[1]);
|
|
@@ -37,11 +39,20 @@ export default class ResponseParserV2 {
|
|
|
37
39
|
}
|
|
38
40
|
invokeCallbacks(message, callbacks) {
|
|
39
41
|
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
let callbackStrippedMessage = message;
|
|
40
43
|
let callbackResults = '';
|
|
41
44
|
const matches = [...message.matchAll(/^@callback\s+({.*})$/gm)];
|
|
42
45
|
for (const match of matches) {
|
|
43
46
|
const callbackData = match && match[1] ? JSON.parse(match[1]) : null;
|
|
44
47
|
const { name, options } = callbackData || {};
|
|
48
|
+
debugger;
|
|
49
|
+
if (match) {
|
|
50
|
+
const parts = callbackStrippedMessage.split(match[0]);
|
|
51
|
+
callbackStrippedMessage = parts
|
|
52
|
+
.map((s) => s.trim())
|
|
53
|
+
.join('')
|
|
54
|
+
.trim();
|
|
55
|
+
}
|
|
45
56
|
try {
|
|
46
57
|
const callback = callbacks === null || callbacks === void 0 ? void 0 : callbacks[name];
|
|
47
58
|
if (callback === null || callback === void 0 ? void 0 : callback.parameters) {
|
|
@@ -61,7 +72,12 @@ export default class ResponseParserV2 {
|
|
|
61
72
|
}
|
|
62
73
|
}
|
|
63
74
|
callbackResults = callbackResults.trim();
|
|
64
|
-
return
|
|
75
|
+
return {
|
|
76
|
+
callbackResults,
|
|
77
|
+
message: callbackStrippedMessage.length > 0
|
|
78
|
+
? callbackStrippedMessage
|
|
79
|
+
: null,
|
|
80
|
+
};
|
|
65
81
|
});
|
|
66
82
|
}
|
|
67
83
|
getStateUpdateInstructions() {
|
package/build/llm.types.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export interface BotOptions<StateSchema extends Schema = Schema, State extends S
|
|
|
9
9
|
export interface SprucebotLlmBot<StateSchema extends Schema = Schema, State extends SchemaValues<StateSchema> = SchemaValues<StateSchema>> extends MercuryEventEmitter<LlmEventContract> {
|
|
10
10
|
markAsDone(): void;
|
|
11
11
|
getIsDone(): boolean;
|
|
12
|
-
sendMessage(message: SendMessage, responseCb?: MessageResponseCallback): Promise<string>;
|
|
12
|
+
sendMessage(message: SendMessage, responseCb?: MessageResponseCallback): Promise<string | null>;
|
|
13
13
|
serialize(): SerializedBot<StateSchema, State>;
|
|
14
14
|
updateState(state: Partial<State>): Promise<void>;
|
|
15
15
|
setSkill(skill: SprucebotLLmSkill<any>): void;
|
|
@@ -96,7 +96,7 @@ export type LlmCallbackParameter = {
|
|
|
96
96
|
name: string;
|
|
97
97
|
description?: string;
|
|
98
98
|
});
|
|
99
|
-
export type MessageResponseCallback = (message: string) => void;
|
|
99
|
+
export type MessageResponseCallback = (message: string | null) => void;
|
|
100
100
|
export type SendMessage = string | SendMessageWithImage;
|
|
101
101
|
export interface SendMessageWithImage {
|
|
102
102
|
imageDescription: string;
|
|
@@ -111,6 +111,6 @@ export interface ResponseParser {
|
|
|
111
111
|
export interface ParsedResponse {
|
|
112
112
|
isDone: boolean;
|
|
113
113
|
state?: Record<string, any>;
|
|
114
|
-
message: string;
|
|
114
|
+
message: string | null;
|
|
115
115
|
callbackResults?: SendMessage;
|
|
116
116
|
}
|
|
@@ -12,10 +12,12 @@ class ResponseParserV2 {
|
|
|
12
12
|
let callbackResults = undefined;
|
|
13
13
|
const hasCallbacks = message.includes('@callback');
|
|
14
14
|
if (hasCallbacks) {
|
|
15
|
-
callbackResults = await this.invokeCallbacks(message, callbacks);
|
|
15
|
+
const { callbackResults: c, message: m } = await this.invokeCallbacks(message, callbacks);
|
|
16
|
+
callbackResults = c;
|
|
17
|
+
message = m;
|
|
16
18
|
}
|
|
17
19
|
const hasState = response.includes('@updateState');
|
|
18
|
-
if (hasState) {
|
|
20
|
+
if (hasState && message) {
|
|
19
21
|
const stateMatch = message.match(/@updateState\s+({[\s\S]*?})\n?/);
|
|
20
22
|
if (stateMatch && stateMatch[1]) {
|
|
21
23
|
state = JSON.parse(stateMatch[1]);
|
|
@@ -30,11 +32,20 @@ class ResponseParserV2 {
|
|
|
30
32
|
};
|
|
31
33
|
}
|
|
32
34
|
async invokeCallbacks(message, callbacks) {
|
|
35
|
+
let callbackStrippedMessage = message;
|
|
33
36
|
let callbackResults = '';
|
|
34
37
|
const matches = [...message.matchAll(/^@callback\s+({.*})$/gm)];
|
|
35
38
|
for (const match of matches) {
|
|
36
39
|
const callbackData = match && match[1] ? JSON.parse(match[1]) : null;
|
|
37
40
|
const { name, options } = callbackData || {};
|
|
41
|
+
debugger;
|
|
42
|
+
if (match) {
|
|
43
|
+
const parts = callbackStrippedMessage.split(match[0]);
|
|
44
|
+
callbackStrippedMessage = parts
|
|
45
|
+
.map((s) => s.trim())
|
|
46
|
+
.join('')
|
|
47
|
+
.trim();
|
|
48
|
+
}
|
|
38
49
|
try {
|
|
39
50
|
const callback = callbacks?.[name];
|
|
40
51
|
if (callback?.parameters) {
|
|
@@ -54,7 +65,12 @@ class ResponseParserV2 {
|
|
|
54
65
|
}
|
|
55
66
|
}
|
|
56
67
|
callbackResults = callbackResults.trim();
|
|
57
|
-
return
|
|
68
|
+
return {
|
|
69
|
+
callbackResults,
|
|
70
|
+
message: callbackStrippedMessage.length > 0
|
|
71
|
+
? callbackStrippedMessage
|
|
72
|
+
: null,
|
|
73
|
+
};
|
|
58
74
|
}
|
|
59
75
|
getStateUpdateInstructions() {
|
|
60
76
|
return 'Updating state works similar to all function calls. Use the following syntax:\n@updateState { "updates": "here" }\n. Make sure to json encode only the fields you want to change. You can update state once and do it at the end of any messages you send.';
|