@sprucelabs/sprucebot-llm 11.1.14 → 11.1.15

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.
Files changed (207) hide show
  1. package/build/.spruce/errors/errors.types.js +0 -1
  2. package/build/.spruce/errors/options.types.js +0 -1
  3. package/build/.spruce/errors/sprucebotLlm/callbackError.schema.js +0 -1
  4. package/build/.spruce/errors/sprucebotLlm/invalidCallback.schema.js +0 -1
  5. package/build/.spruce/errors/sprucebotLlm/noBotInstanceSet.schema.js +0 -1
  6. package/build/.spruce/schemas/fields/fieldClassMap.js +0 -1
  7. package/build/.spruce/schemas/fields/fields.types.js +0 -1
  8. package/build/bots/PromptGenerator.js +0 -1
  9. package/build/bots/SprucebotLlmBotImpl.js +0 -1
  10. package/build/bots/SprucebotLlmFactory.js +0 -1
  11. package/build/bots/SprucebotLlmSkillImpl.js +0 -1
  12. package/build/bots/adapters/OpenAi.js +0 -1
  13. package/build/bots/adapters/OpenAiMessageBuilder.js +0 -1
  14. package/build/bots/adapters/SpyOpenAiApi.js +0 -1
  15. package/build/bots/templates.js +0 -1
  16. package/build/chat.js +0 -1
  17. package/build/chatWithImages.js +0 -1
  18. package/build/errors/SpruceError.js +0 -1
  19. package/build/errors/callbackError.builder.js +0 -1
  20. package/build/errors/invalidCallback.builder.js +0 -1
  21. package/build/errors/noBotInstanceSet.builder.js +0 -1
  22. package/build/esm/.spruce/errors/errors.types.d.ts +52 -0
  23. package/build/esm/.spruce/errors/errors.types.js +1 -0
  24. package/build/esm/.spruce/errors/options.types.d.ts +13 -0
  25. package/build/esm/.spruce/errors/options.types.js +1 -0
  26. package/build/esm/.spruce/errors/sprucebotLlm/callbackError.schema.d.ts +3 -0
  27. package/build/esm/.spruce/errors/sprucebotLlm/callbackError.schema.js +12 -0
  28. package/build/esm/.spruce/errors/sprucebotLlm/invalidCallback.schema.d.ts +3 -0
  29. package/build/esm/.spruce/errors/sprucebotLlm/invalidCallback.schema.js +27 -0
  30. package/build/esm/.spruce/errors/sprucebotLlm/noBotInstanceSet.schema.d.ts +3 -0
  31. package/build/esm/.spruce/errors/sprucebotLlm/noBotInstanceSet.schema.js +12 -0
  32. package/build/esm/.spruce/event-cache.json +1 -0
  33. package/build/esm/.spruce/schemas/fields/fieldClassMap.d.ts +2 -0
  34. package/build/esm/.spruce/schemas/fields/fieldClassMap.js +5 -0
  35. package/build/esm/.spruce/schemas/fields/fields.types.d.ts +1 -0
  36. package/build/esm/.spruce/schemas/fields/fields.types.js +3 -0
  37. package/build/esm/.spruce/settings.json +13 -0
  38. package/build/esm/bots/PromptGenerator.d.ts +22 -0
  39. package/build/esm/bots/PromptGenerator.js +74 -0
  40. package/build/esm/bots/SprucebotLlmBotImpl.d.ts +26 -0
  41. package/build/esm/bots/SprucebotLlmBotImpl.js +163 -0
  42. package/build/esm/bots/SprucebotLlmFactory.d.ts +15 -0
  43. package/build/esm/bots/SprucebotLlmFactory.js +41 -0
  44. package/build/esm/bots/SprucebotLlmSkillImpl.d.ts +12 -0
  45. package/build/esm/bots/SprucebotLlmSkillImpl.js +47 -0
  46. package/build/esm/bots/adapters/OpenAi.d.ts +11 -0
  47. package/build/esm/bots/adapters/OpenAi.js +46 -0
  48. package/build/esm/bots/adapters/OpenAiMessageBuilder.d.ts +18 -0
  49. package/build/esm/bots/adapters/OpenAiMessageBuilder.js +153 -0
  50. package/build/esm/bots/adapters/SpyOpenAiApi.d.ts +19 -0
  51. package/build/esm/bots/adapters/SpyOpenAiApi.js +49 -0
  52. package/build/esm/bots/templates.d.ts +4 -0
  53. package/build/esm/bots/templates.js +68 -0
  54. package/build/esm/chat.d.ts +1 -0
  55. package/build/esm/chat.js +53 -0
  56. package/build/esm/chatWithImages.d.ts +1 -0
  57. package/build/esm/chatWithImages.js +46 -0
  58. package/build/esm/errors/SpruceError.d.ts +6 -0
  59. package/build/esm/errors/SpruceError.js +25 -0
  60. package/build/esm/errors/callbackError.builder.d.ts +6 -0
  61. package/build/esm/errors/callbackError.builder.js +6 -0
  62. package/build/esm/errors/invalidCallback.builder.d.ts +17 -0
  63. package/build/esm/errors/invalidCallback.builder.js +17 -0
  64. package/build/esm/errors/noBotInstanceSet.builder.d.ts +6 -0
  65. package/build/esm/errors/noBotInstanceSet.builder.js +6 -0
  66. package/build/esm/examples/buildCallbackSkill.d.ts +2 -0
  67. package/build/esm/examples/buildCallbackSkill.js +57 -0
  68. package/build/esm/examples/buildFileTransformerSkill.d.ts +2 -0
  69. package/build/esm/examples/buildFileTransformerSkill.js +25 -0
  70. package/build/esm/examples/buildJokeSkill.d.ts +2 -0
  71. package/build/esm/examples/buildJokeSkill.js +12 -0
  72. package/build/esm/examples/buildProfileSkill.d.ts +2 -0
  73. package/build/esm/examples/buildProfileSkill.js +30 -0
  74. package/build/esm/examples/buildReceptionistSkill.d.ts +2 -0
  75. package/build/esm/examples/buildReceptionistSkill.js +16 -0
  76. package/build/esm/examples/images/image1.png +0 -0
  77. package/build/esm/examples/images/image2.png +0 -0
  78. package/build/esm/fineTuningSprucebot/constants/DIRECTORY_SHARES.d.ts +1 -0
  79. package/build/esm/fineTuningSprucebot/constants/DIRECTORY_SHARES.js +7 -0
  80. package/build/esm/fineTuningSprucebot/constants/FIRST_MESSAGES.d.ts +1 -0
  81. package/build/esm/fineTuningSprucebot/constants/FIRST_MESSAGES.js +17 -0
  82. package/build/esm/fineTuningSprucebot/constants/GREETINGS.d.ts +1 -0
  83. package/build/esm/fineTuningSprucebot/constants/GREETINGS.js +22 -0
  84. package/build/esm/fineTuningSprucebot/constants/OFF_THE_RAILS_CONVERSATIONS.d.ts +2 -0
  85. package/build/esm/fineTuningSprucebot/constants/OFF_THE_RAILS_CONVERSATIONS.js +32 -0
  86. package/build/esm/fineTuningSprucebot/constants/TOPICS.d.ts +2 -0
  87. package/build/esm/fineTuningSprucebot/constants/TOPICS.js +314 -0
  88. package/build/esm/fineTuningSprucebot/generateSamples.d.ts +1 -0
  89. package/build/esm/fineTuningSprucebot/generateSamples.js +41 -0
  90. package/build/esm/fineTuningSprucebot/promptTemplate.txt +9 -0
  91. package/build/esm/fineTuningSprucebot/promptTemplateNoTopics.txt +6 -0
  92. package/build/esm/fineTuningSprucebot/support.d.ts +12 -0
  93. package/build/esm/fineTuningSprucebot/support.js +60 -0
  94. package/build/esm/fineTuningSprucebot/types.d.ts +15 -0
  95. package/build/esm/fineTuningSprucebot/types.js +1 -0
  96. package/build/esm/index.d.ts +10 -0
  97. package/build/esm/index.js +10 -0
  98. package/build/esm/llm.types.d.ts +84 -0
  99. package/build/esm/llm.types.js +6 -0
  100. package/build/esm/parsingResponses/ResponseParser.d.ts +18 -0
  101. package/build/esm/parsingResponses/ResponseParser.js +115 -0
  102. package/build/esm/parsingResponses/renderPlaceholder.d.ts +1 -0
  103. package/build/esm/parsingResponses/renderPlaceholder.js +4 -0
  104. package/build/esm/tests/MockLlmSkill.d.ts +14 -0
  105. package/build/esm/tests/MockLlmSkill.js +60 -0
  106. package/build/esm/tests/SpyAdapter.d.ts +8 -0
  107. package/build/esm/tests/SpyAdapter.js +21 -0
  108. package/build/esm/tests/SpyLlmBot.d.ts +12 -0
  109. package/build/esm/tests/SpyLlmBot.js +20 -0
  110. package/build/examples/buildCallbackSkill.js +0 -1
  111. package/build/examples/buildFileTransformerSkill.js +0 -1
  112. package/build/examples/buildJokeSkill.js +0 -1
  113. package/build/examples/buildProfileSkill.js +0 -1
  114. package/build/examples/buildReceptionistSkill.js +0 -1
  115. package/build/fineTuningSprucebot/constants/DIRECTORY_SHARES.js +0 -1
  116. package/build/fineTuningSprucebot/constants/FIRST_MESSAGES.js +0 -1
  117. package/build/fineTuningSprucebot/constants/GREETINGS.js +0 -1
  118. package/build/fineTuningSprucebot/constants/OFF_THE_RAILS_CONVERSATIONS.js +0 -1
  119. package/build/fineTuningSprucebot/constants/TOPICS.js +0 -1
  120. package/build/fineTuningSprucebot/generateSamples.js +0 -1
  121. package/build/fineTuningSprucebot/support.js +0 -1
  122. package/build/fineTuningSprucebot/types.js +0 -1
  123. package/build/index.js +0 -1
  124. package/build/llm.types.js +0 -1
  125. package/build/parsingResponses/ResponseParser.js +0 -1
  126. package/build/parsingResponses/renderPlaceholder.js +0 -1
  127. package/build/tests/MockLlmSkill.js +0 -1
  128. package/build/tests/SpyAdapter.js +0 -1
  129. package/build/tests/SpyLlmBot.js +0 -1
  130. package/package.json +1 -1
  131. package/build/__tests__/behavioral/LlmBot.test.d.ts +0 -55
  132. package/build/__tests__/behavioral/LlmBot.test.js +0 -607
  133. package/build/__tests__/behavioral/LlmBot.test.js.map +0 -1
  134. package/build/__tests__/behavioral/SprucebotLlmFactory.test.d.ts +0 -16
  135. package/build/__tests__/behavioral/SprucebotLlmFactory.test.js +0 -132
  136. package/build/__tests__/behavioral/SprucebotLlmFactory.test.js.map +0 -1
  137. package/build/__tests__/behavioral/adapters/OpenAi.test.d.ts +0 -52
  138. package/build/__tests__/behavioral/adapters/OpenAi.test.js +0 -699
  139. package/build/__tests__/behavioral/adapters/OpenAi.test.js.map +0 -1
  140. package/build/__tests__/behavioral/prompts/PromptGenerator.test.d.ts +0 -20
  141. package/build/__tests__/behavioral/prompts/PromptGenerator.test.js +0 -211
  142. package/build/__tests__/behavioral/prompts/PromptGenerator.test.js.map +0 -1
  143. package/build/__tests__/behavioral/prompts/ResponseParser.test.d.ts +0 -35
  144. package/build/__tests__/behavioral/prompts/ResponseParser.test.js +0 -312
  145. package/build/__tests__/behavioral/prompts/ResponseParser.test.js.map +0 -1
  146. package/build/__tests__/behavioral/skills/Skill.test.d.ts +0 -19
  147. package/build/__tests__/behavioral/skills/Skill.test.js +0 -188
  148. package/build/__tests__/behavioral/skills/Skill.test.js.map +0 -1
  149. package/build/__tests__/behavioral/testing/MockLlmSkill.test.d.ts +0 -37
  150. package/build/__tests__/behavioral/testing/MockLlmSkill.test.js +0 -340
  151. package/build/__tests__/behavioral/testing/MockLlmSkill.test.js.map +0 -1
  152. package/build/__tests__/behavioral/testing/SpyLlmBot.test.d.ts +0 -4
  153. package/build/__tests__/behavioral/testing/SpyLlmBot.test.js +0 -34
  154. package/build/__tests__/behavioral/testing/SpyLlmBot.test.js.map +0 -1
  155. package/build/__tests__/support/AbstractLlmTest.d.ts +0 -14
  156. package/build/__tests__/support/AbstractLlmTest.js +0 -67
  157. package/build/__tests__/support/AbstractLlmTest.js.map +0 -1
  158. package/build/__tests__/support/schemas/carSchema.d.ts +0 -16
  159. package/build/__tests__/support/schemas/carSchema.js +0 -19
  160. package/build/__tests__/support/schemas/carSchema.js.map +0 -1
  161. package/build/__tests__/support/schemas/personSchema.d.ts +0 -23
  162. package/build/__tests__/support/schemas/personSchema.js +0 -37
  163. package/build/__tests__/support/schemas/personSchema.js.map +0 -1
  164. package/build/__tests__/support/schemas/personWithDefaultsSchema.d.ts +0 -13
  165. package/build/__tests__/support/schemas/personWithDefaultsSchema.js +0 -18
  166. package/build/__tests__/support/schemas/personWithDefaultsSchema.js.map +0 -1
  167. /package/build/{.spruce → esm/.spruce}/errors/errors.types.js.map +0 -0
  168. /package/build/{.spruce → esm/.spruce}/errors/options.types.js.map +0 -0
  169. /package/build/{.spruce → esm/.spruce}/errors/sprucebotLlm/callbackError.schema.js.map +0 -0
  170. /package/build/{.spruce → esm/.spruce}/errors/sprucebotLlm/invalidCallback.schema.js.map +0 -0
  171. /package/build/{.spruce → esm/.spruce}/errors/sprucebotLlm/noBotInstanceSet.schema.js.map +0 -0
  172. /package/build/{.spruce → esm/.spruce}/schemas/fields/fieldClassMap.js.map +0 -0
  173. /package/build/{.spruce → esm/.spruce}/schemas/fields/fields.types.js.map +0 -0
  174. /package/build/{bots → esm/bots}/PromptGenerator.js.map +0 -0
  175. /package/build/{bots → esm/bots}/SprucebotLlmBotImpl.js.map +0 -0
  176. /package/build/{bots → esm/bots}/SprucebotLlmFactory.js.map +0 -0
  177. /package/build/{bots → esm/bots}/SprucebotLlmSkillImpl.js.map +0 -0
  178. /package/build/{bots → esm/bots}/adapters/OpenAi.js.map +0 -0
  179. /package/build/{bots → esm/bots}/adapters/OpenAiMessageBuilder.js.map +0 -0
  180. /package/build/{bots → esm/bots}/adapters/SpyOpenAiApi.js.map +0 -0
  181. /package/build/{bots → esm/bots}/templates.js.map +0 -0
  182. /package/build/{chat.js.map → esm/chat.js.map} +0 -0
  183. /package/build/{chatWithImages.js.map → esm/chatWithImages.js.map} +0 -0
  184. /package/build/{errors → esm/errors}/SpruceError.js.map +0 -0
  185. /package/build/{errors → esm/errors}/callbackError.builder.js.map +0 -0
  186. /package/build/{errors → esm/errors}/invalidCallback.builder.js.map +0 -0
  187. /package/build/{errors → esm/errors}/noBotInstanceSet.builder.js.map +0 -0
  188. /package/build/{examples → esm/examples}/buildCallbackSkill.js.map +0 -0
  189. /package/build/{examples → esm/examples}/buildFileTransformerSkill.js.map +0 -0
  190. /package/build/{examples → esm/examples}/buildJokeSkill.js.map +0 -0
  191. /package/build/{examples → esm/examples}/buildProfileSkill.js.map +0 -0
  192. /package/build/{examples → esm/examples}/buildReceptionistSkill.js.map +0 -0
  193. /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/constants/DIRECTORY_SHARES.js.map +0 -0
  194. /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/constants/FIRST_MESSAGES.js.map +0 -0
  195. /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/constants/GREETINGS.js.map +0 -0
  196. /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/constants/OFF_THE_RAILS_CONVERSATIONS.js.map +0 -0
  197. /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/constants/TOPICS.js.map +0 -0
  198. /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/generateSamples.js.map +0 -0
  199. /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/support.js.map +0 -0
  200. /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/types.js.map +0 -0
  201. /package/build/{index.js.map → esm/index.js.map} +0 -0
  202. /package/build/{llm.types.js.map → esm/llm.types.js.map} +0 -0
  203. /package/build/{parsingResponses → esm/parsingResponses}/ResponseParser.js.map +0 -0
  204. /package/build/{parsingResponses → esm/parsingResponses}/renderPlaceholder.js.map +0 -0
  205. /package/build/{tests → esm/tests}/MockLlmSkill.js.map +0 -0
  206. /package/build/{tests → esm/tests}/SpyAdapter.js.map +0 -0
  207. /package/build/{tests → esm/tests}/SpyLlmBot.js.map +0 -0
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=errors.types.js.map
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=options.types.js.map
@@ -9,4 +9,3 @@ const callbackErrorSchema = {
9
9
  };
10
10
  schema_1.SchemaRegistry.getInstance().trackSchema(callbackErrorSchema);
11
11
  exports.default = callbackErrorSchema;
12
- //# sourceMappingURL=callbackError.schema.js.map
@@ -24,4 +24,3 @@ const invalidCallbackSchema = {
24
24
  };
25
25
  schema_1.SchemaRegistry.getInstance().trackSchema(invalidCallbackSchema);
26
26
  exports.default = invalidCallbackSchema;
27
- //# sourceMappingURL=invalidCallback.schema.js.map
@@ -9,4 +9,3 @@ const noBotInstanceSetSchema = {
9
9
  };
10
10
  schema_1.SchemaRegistry.getInstance().trackSchema(noBotInstanceSetSchema);
11
11
  exports.default = noBotInstanceSetSchema;
12
- //# sourceMappingURL=noBotInstanceSet.schema.js.map
@@ -2,4 +2,3 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const schema_1 = require("@sprucelabs/schema");
4
4
  exports.default = schema_1.fieldClassMap;
5
- //# sourceMappingURL=fieldClassMap.js.map
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=fields.types.js.map
@@ -55,4 +55,3 @@ function setUndefinedToNull(obj) {
55
55
  }
56
56
  }
57
57
  }
58
- //# sourceMappingURL=PromptGenerator.js.map
@@ -145,4 +145,3 @@ class SprucebotLlmBotImpl extends mercury_event_emitter_1.AbstractEventEmitter {
145
145
  }
146
146
  SprucebotLlmBotImpl.messageMemoryLimit = 10;
147
147
  exports.default = SprucebotLlmBotImpl;
148
- //# sourceMappingURL=SprucebotLlmBotImpl.js.map
@@ -46,4 +46,3 @@ class SprucebotLlmFactory {
46
46
  }
47
47
  }
48
48
  exports.default = SprucebotLlmFactory;
49
- //# sourceMappingURL=SprucebotLlmFactory.js.map
@@ -33,4 +33,3 @@ class SprucebotLlmSkillImpl extends mercury_event_emitter_1.AbstractEventEmitter
33
33
  }
34
34
  }
35
35
  exports.default = SprucebotLlmSkillImpl;
36
- //# sourceMappingURL=SprucebotLlmSkillImpl.js.map
@@ -39,4 +39,3 @@ class OpenAiAdapter {
39
39
  OpenAiAdapter.OpenAI = openai_1.default;
40
40
  exports.default = OpenAiAdapter;
41
41
  exports.MESSAGE_RESPONSE_ERROR_MESSAGE = "Oh no! Something went wrong and I can't talk right now!";
42
- //# sourceMappingURL=OpenAi.js.map
@@ -153,4 +153,3 @@ class OpenAiMessageBuilder {
153
153
  }
154
154
  }
155
155
  exports.default = OpenAiMessageBuilder;
156
- //# sourceMappingURL=OpenAiMessageBuilder.js.map
@@ -41,4 +41,3 @@ class SpyOpenAiApi extends openai_1.default {
41
41
  }
42
42
  SpyOpenAiApi.responseMessage = 'hello!';
43
43
  exports.default = SpyOpenAiApi;
44
- //# sourceMappingURL=SpyOpenAiApi.js.map
@@ -72,4 +72,3 @@ __<%= message.from %>__: <%= message.message %>
72
72
 
73
73
  <% }) %>
74
74
  __You__:`;
75
- //# sourceMappingURL=templates.js.map
package/build/chat.js CHANGED
@@ -80,4 +80,3 @@ void (async () => {
80
80
  console.log('Signing off...');
81
81
  rl.close();
82
82
  })();
83
- //# sourceMappingURL=chat.js.map
@@ -40,4 +40,3 @@ void (async () => {
40
40
  imageDescription: 'The first image',
41
41
  }, (message) => console.log('>', message));
42
42
  })();
43
- //# sourceMappingURL=chatWithImages.js.map
@@ -29,4 +29,3 @@ class SpruceError extends error_1.default {
29
29
  }
30
30
  }
31
31
  exports.default = SpruceError;
32
- //# sourceMappingURL=SpruceError.js.map
@@ -6,4 +6,3 @@ exports.default = (0, schema_1.buildErrorSchema)({
6
6
  name: 'Callback error',
7
7
  fields: {},
8
8
  });
9
- //# sourceMappingURL=callbackError.builder.js.map
@@ -17,4 +17,3 @@ exports.default = (0, schema_1.buildErrorSchema)({
17
17
  },
18
18
  },
19
19
  });
20
- //# sourceMappingURL=invalidCallback.builder.js.map
@@ -6,4 +6,3 @@ exports.default = (0, schema_1.buildErrorSchema)({
6
6
  name: 'No bot instance set',
7
7
  fields: {},
8
8
  });
9
- //# sourceMappingURL=noBotInstanceSet.builder.js.map
@@ -0,0 +1,52 @@
1
+ import { default as SchemaEntity } from '@sprucelabs/schema';
2
+ import * as SpruceSchema from '@sprucelabs/schema';
3
+ export declare namespace SpruceErrors.SprucebotLlm {
4
+ interface NoBotInstanceSet {
5
+ }
6
+ interface NoBotInstanceSetSchema extends SpruceSchema.Schema {
7
+ id: 'noBotInstanceSet';
8
+ namespace: 'SprucebotLlm';
9
+ name: 'No bot instance set';
10
+ fields: {};
11
+ }
12
+ type NoBotInstanceSetEntity = SchemaEntity<SpruceErrors.SprucebotLlm.NoBotInstanceSetSchema>;
13
+ }
14
+ export declare namespace SpruceErrors.SprucebotLlm {
15
+ interface InvalidCallback {
16
+ 'validCallbacks': string[];
17
+ 'matchedCallback': string;
18
+ }
19
+ interface InvalidCallbackSchema extends SpruceSchema.Schema {
20
+ id: 'invalidCallback';
21
+ namespace: 'SprucebotLlm';
22
+ name: 'Invalid callback';
23
+ fields: {
24
+ /** . */
25
+ 'validCallbacks': {
26
+ type: 'text';
27
+ isRequired: true;
28
+ isArray: true;
29
+ minArrayLength: 0;
30
+ options: undefined;
31
+ };
32
+ /** . */
33
+ 'matchedCallback': {
34
+ type: 'text';
35
+ isRequired: true;
36
+ options: undefined;
37
+ };
38
+ };
39
+ }
40
+ type InvalidCallbackEntity = SchemaEntity<SpruceErrors.SprucebotLlm.InvalidCallbackSchema>;
41
+ }
42
+ export declare namespace SpruceErrors.SprucebotLlm {
43
+ interface CallbackError {
44
+ }
45
+ interface CallbackErrorSchema extends SpruceSchema.Schema {
46
+ id: 'callbackError';
47
+ namespace: 'SprucebotLlm';
48
+ name: 'Callback error';
49
+ fields: {};
50
+ }
51
+ type CallbackErrorEntity = SchemaEntity<SpruceErrors.SprucebotLlm.CallbackErrorSchema>;
52
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import { SpruceErrors } from "./errors.types";
2
+ import { ErrorOptions as ISpruceErrorOptions } from "@sprucelabs/error";
3
+ export interface NoBotInstanceSetErrorOptions extends SpruceErrors.SprucebotLlm.NoBotInstanceSet, ISpruceErrorOptions {
4
+ code: 'NO_BOT_INSTANCE_SET';
5
+ }
6
+ export interface InvalidCallbackErrorOptions extends SpruceErrors.SprucebotLlm.InvalidCallback, ISpruceErrorOptions {
7
+ code: 'INVALID_CALLBACK';
8
+ }
9
+ export interface CallbackErrorErrorOptions extends SpruceErrors.SprucebotLlm.CallbackError, ISpruceErrorOptions {
10
+ code: 'CALLBACK_ERROR';
11
+ }
12
+ type ErrorOptions = NoBotInstanceSetErrorOptions | InvalidCallbackErrorOptions | CallbackErrorErrorOptions;
13
+ export default ErrorOptions;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import { SpruceErrors } from '../errors.types';
2
+ declare const callbackErrorSchema: SpruceErrors.SprucebotLlm.CallbackErrorSchema;
3
+ export default callbackErrorSchema;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schema_1 = require('@sprucelabs/schema');
4
+ const callbackErrorSchema = {
5
+ id: 'callbackError',
6
+ namespace: 'SprucebotLlm',
7
+ name: 'Callback error',
8
+ fields: {}
9
+ };
10
+ schema_1.SchemaRegistry.getInstance().trackSchema(callbackErrorSchema);
11
+ exports.default = callbackErrorSchema;
12
+ //# sourceMappingURL=callbackError.schema.js.map
@@ -0,0 +1,3 @@
1
+ import { SpruceErrors } from '../errors.types';
2
+ declare const invalidCallbackSchema: SpruceErrors.SprucebotLlm.InvalidCallbackSchema;
3
+ export default invalidCallbackSchema;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schema_1 = require('@sprucelabs/schema');
4
+ const invalidCallbackSchema = {
5
+ id: 'invalidCallback',
6
+ namespace: 'SprucebotLlm',
7
+ name: 'Invalid callback',
8
+ fields: {
9
+ /** . */
10
+ 'validCallbacks': {
11
+ type: 'text',
12
+ isRequired: true,
13
+ isArray: true,
14
+ minArrayLength: 0,
15
+ options: undefined
16
+ },
17
+ /** . */
18
+ 'matchedCallback': {
19
+ type: 'text',
20
+ isRequired: true,
21
+ options: undefined
22
+ },
23
+ }
24
+ };
25
+ schema_1.SchemaRegistry.getInstance().trackSchema(invalidCallbackSchema);
26
+ exports.default = invalidCallbackSchema;
27
+ //# sourceMappingURL=invalidCallback.schema.js.map
@@ -0,0 +1,3 @@
1
+ import { SpruceErrors } from '../errors.types';
2
+ declare const noBotInstanceSetSchema: SpruceErrors.SprucebotLlm.NoBotInstanceSetSchema;
3
+ export default noBotInstanceSetSchema;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schema_1 = require('@sprucelabs/schema');
4
+ const noBotInstanceSetSchema = {
5
+ id: 'noBotInstanceSet',
6
+ namespace: 'SprucebotLlm',
7
+ name: 'No bot instance set',
8
+ fields: {}
9
+ };
10
+ schema_1.SchemaRegistry.getInstance().trackSchema(noBotInstanceSetSchema);
11
+ exports.default = noBotInstanceSetSchema;
12
+ //# sourceMappingURL=noBotInstanceSet.schema.js.map
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,2 @@
1
+ import { fieldClassMap } from '@sprucelabs/schema';
2
+ export default fieldClassMap;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schema_1 = require('@sprucelabs/schema');
4
+ exports.default = schema_1.fieldClassMap;
5
+ //# sourceMappingURL=fieldClassMap.js.map
@@ -0,0 +1 @@
1
+ export { FieldDefinitions, FieldDefinitionMap, FieldValueTypeGeneratorMap, FieldMap } from '@sprucelabs/schema';
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=fields.types.js.map
@@ -0,0 +1,13 @@
1
+ {
2
+ "scriptUpdater": {
3
+ "skipped": []
4
+ },
5
+ "skipped": [
6
+ "skill"
7
+ ],
8
+ "installed": [
9
+ "test",
10
+ "schema",
11
+ "error"
12
+ ]
13
+ }
@@ -0,0 +1,22 @@
1
+ import { LlmMessage, SprucebotLlmBot } from '../llm.types';
2
+ export default class PromptGenerator {
3
+ private bot;
4
+ private eta;
5
+ private log;
6
+ static Class?: typeof PromptGenerator;
7
+ private promptTemplate;
8
+ protected constructor(bot: SprucebotLlmBot, options?: PromptGeneratorOptions);
9
+ static Generator(bot: SprucebotLlmBot, options?: PromptGeneratorOptions): PromptGenerator;
10
+ generate(): Promise<string>;
11
+ private stringifyState;
12
+ }
13
+ export declare function setUndefinedToNull(obj: Record<string, any>): void;
14
+ export interface TemplateContext {
15
+ youAre: string;
16
+ messages: LlmMessage[];
17
+ stateSchemaJson?: string;
18
+ stateJson?: string;
19
+ }
20
+ export interface PromptGeneratorOptions {
21
+ promptTemplate?: string;
22
+ }
@@ -0,0 +1,74 @@
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
+ var __rest = (this && this.__rest) || function (s, e) {
11
+ var t = {};
12
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
13
+ t[p] = s[p];
14
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
15
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
16
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
17
+ t[p[i]] = s[p[i]];
18
+ }
19
+ return t;
20
+ };
21
+ import { assertOptions, normalizeSchemaValues, } from '@sprucelabs/schema';
22
+ import { Eta } from 'eta';
23
+ import { PROMPT_TEMPLATE } from './templates.js';
24
+ export default class PromptGenerator {
25
+ constructor(bot, options) {
26
+ var _a;
27
+ this.eta = new Eta();
28
+ this.log = process.env.SHOULD_LOG_GENERATED_PROMPTS === 'true'
29
+ ? console.info
30
+ : () => { };
31
+ assertOptions({ bot }, ['bot']);
32
+ this.bot = bot;
33
+ this.promptTemplate = (_a = options === null || options === void 0 ? void 0 : options.promptTemplate) !== null && _a !== void 0 ? _a : PROMPT_TEMPLATE;
34
+ }
35
+ static Generator(bot, options) {
36
+ var _a;
37
+ return new ((_a = this.Class) !== null && _a !== void 0 ? _a : PromptGenerator)(bot, options);
38
+ }
39
+ generate() {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ const _a = this.bot.serialize(), { stateSchema, state } = _a, rest = __rest(_a, ["stateSchema", "state"]);
42
+ const { stateSchemaJson, stateJson } = this.stringifyState(stateSchema, state);
43
+ const rendered = yield this.eta.renderStringAsync(this.promptTemplate, Object.assign({ stateSchemaJson,
44
+ stateJson }, rest));
45
+ this.log('Generated prompt:', rendered);
46
+ return rendered;
47
+ });
48
+ }
49
+ stringifyState(stateSchema, state) {
50
+ if (!stateSchema) {
51
+ return {
52
+ stateSchemaJson: null,
53
+ stateJson: null,
54
+ };
55
+ }
56
+ const normalizedState = normalizeSchemaValues(stateSchema, state !== null && state !== void 0 ? state : {}, {});
57
+ setUndefinedToNull(normalizedState);
58
+ const stateSchemaJson = JSON.stringify(stateSchema);
59
+ const stateJson = JSON.stringify(normalizedState);
60
+ return { stateSchemaJson, stateJson };
61
+ }
62
+ }
63
+ export function setUndefinedToNull(obj) {
64
+ for (const key in obj) {
65
+ if (obj.hasOwnProperty(key)) {
66
+ if (obj[key] === undefined) {
67
+ obj[key] = null;
68
+ }
69
+ else if (typeof obj[key] === 'object') {
70
+ setUndefinedToNull(obj[key]);
71
+ }
72
+ }
73
+ }
74
+ }
@@ -0,0 +1,26 @@
1
+ import { AbstractEventEmitter } from '@sprucelabs/mercury-event-emitter';
2
+ import { Schema, SchemaValues } from '@sprucelabs/schema';
3
+ import { BotOptions, LlmAdapter, LlmEventContract, LlmMessage, MessageResponseCallback, SendMessage, SerializedBot, SprucebotLlmBot, SprucebotLLmSkill } from '../llm.types';
4
+ export default class SprucebotLlmBotImpl<StateSchema extends Schema = Schema, State extends SchemaValues<StateSchema> = SchemaValues<StateSchema>> extends AbstractEventEmitter<LlmEventContract> implements SprucebotLlmBot<StateSchema, State> {
5
+ static messageMemoryLimit: number;
6
+ protected adapter: LlmAdapter;
7
+ private youAre;
8
+ private stateSchema?;
9
+ protected state?: Partial<State>;
10
+ private isDone;
11
+ protected messages: LlmMessage[];
12
+ protected skill?: SprucebotLLmSkill;
13
+ constructor(options: BotOptions<StateSchema, State>);
14
+ clearMessageHistory(): void;
15
+ markAsDone(): void;
16
+ getIsDone(): boolean;
17
+ serialize(): SerializedBot<StateSchema, State>;
18
+ sendMessage(message: SendMessage, cb?: MessageResponseCallback): Promise<string>;
19
+ private _sendMessageInternal;
20
+ private optionallyUpdateState;
21
+ private parseResponse;
22
+ private sendMessageToAdapter;
23
+ private trackMessage;
24
+ updateState(newState: Partial<State>): Promise<void>;
25
+ setSkill(skill: SprucebotLLmSkill<any>): void;
26
+ }
@@ -0,0 +1,163 @@
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 { AbstractEventEmitter } from '@sprucelabs/mercury-event-emitter';
11
+ import { assertOptions, defaultSchemaValues, } from '@sprucelabs/schema';
12
+ import { llmEventContract, } from '../llm.types.js';
13
+ import ResponseParser from '../parsingResponses/ResponseParser.js';
14
+ class SprucebotLlmBotImpl extends AbstractEventEmitter {
15
+ constructor(options) {
16
+ const { adapter, youAre, stateSchema, state, skill } = options;
17
+ super(llmEventContract);
18
+ this.isDone = false;
19
+ this.messages = [];
20
+ this.adapter = adapter;
21
+ this.youAre = youAre;
22
+ this.stateSchema = stateSchema;
23
+ this.skill = skill;
24
+ this.state = stateSchema
25
+ ? Object.assign(Object.assign({}, defaultSchemaValues(stateSchema)), state)
26
+ : undefined;
27
+ }
28
+ clearMessageHistory() {
29
+ this.messages = [];
30
+ }
31
+ markAsDone() {
32
+ this.isDone = true;
33
+ }
34
+ getIsDone() {
35
+ return this.isDone;
36
+ }
37
+ serialize() {
38
+ var _a, _b, _c;
39
+ const skill = (_a = this.skill) === null || _a === void 0 ? void 0 : _a.serialize();
40
+ return {
41
+ youAre: this.youAre,
42
+ stateSchema: (_b = this.stateSchema) !== null && _b !== void 0 ? _b : skill === null || skill === void 0 ? void 0 : skill.stateSchema,
43
+ state: (_c = this.state) !== null && _c !== void 0 ? _c : skill === null || skill === void 0 ? void 0 : skill.state,
44
+ messages: this.messages,
45
+ skill,
46
+ };
47
+ }
48
+ sendMessage(message, cb) {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ assertOptions({ message }, ['message']);
51
+ const llmMessage = {
52
+ from: 'Me',
53
+ message: '',
54
+ };
55
+ if (typeof message === 'string') {
56
+ llmMessage.message = message;
57
+ }
58
+ else {
59
+ llmMessage.message = message.imageDescription;
60
+ llmMessage.imageBase64 = message.imageBase64;
61
+ }
62
+ return this._sendMessageInternal(llmMessage, cb);
63
+ });
64
+ }
65
+ _sendMessageInternal(llmMessage, cb) {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ var _a, _b, _c, _d;
68
+ this.trackMessage(llmMessage);
69
+ const { model, callbacks } = (_b = (_a = this.skill) === null || _a === void 0 ? void 0 : _a.serialize()) !== null && _b !== void 0 ? _b : {};
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,
98
+ });
99
+ cb === null || cb === void 0 ? void 0 : cb(parsedMessage);
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;
118
+ });
119
+ }
120
+ optionallyUpdateState(state) {
121
+ return __awaiter(this, void 0, void 0, function* () {
122
+ var _a;
123
+ if (this.stateSchema && state) {
124
+ yield this.updateState(state);
125
+ }
126
+ else if (state) {
127
+ yield ((_a = this.skill) === null || _a === void 0 ? void 0 : _a.updateState(state));
128
+ }
129
+ });
130
+ }
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
+ trackMessage(m) {
146
+ if (this.messages.length === SprucebotLlmBotImpl.messageMemoryLimit) {
147
+ this.messages.shift();
148
+ }
149
+ this.messages.push(m);
150
+ }
151
+ updateState(newState) {
152
+ return __awaiter(this, void 0, void 0, function* () {
153
+ this.state = Object.assign(Object.assign({}, this.state), newState);
154
+ yield this.emit('did-update-state');
155
+ });
156
+ }
157
+ setSkill(skill) {
158
+ this.skill = skill;
159
+ this.isDone = false;
160
+ }
161
+ }
162
+ SprucebotLlmBotImpl.messageMemoryLimit = 10;
163
+ export default SprucebotLlmBotImpl;
@@ -0,0 +1,15 @@
1
+ import { BotOptions, LlmAdapter, SkillOptions, SprucebotLlmBot, SprucebotLLmSkill } from '../llm.types';
2
+ export default class SprucebotLlmFactory {
3
+ protected adapter: LlmAdapter;
4
+ private instance?;
5
+ static FactoryClass?: typeof SprucebotLlmFactory;
6
+ static BotClass?: new (options: any) => SprucebotLlmBot;
7
+ static SkillClass?: new (options: any) => SprucebotLLmSkill;
8
+ protected constructor(adapter: LlmAdapter);
9
+ Bot(options: Omit<BotOptions, 'adapter'>): SprucebotLlmBot;
10
+ Skill(options: SkillOptions): SprucebotLLmSkill;
11
+ getBotInstance(): SprucebotLlmBot<import("@sprucelabs/schema").Schema, Pick<import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/schema").Schema, false, never, import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/schema").Schema, false>>, never>>;
12
+ setBotInstance(bot: SprucebotLlmBot): void;
13
+ static Factory(adapter: LlmAdapter): SprucebotLlmFactory;
14
+ static reset(): void;
15
+ }