@molroo-io/sdk 0.6.2 → 0.7.1

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 (252) hide show
  1. package/README.md +100 -194
  2. package/dist/cjs/api-client.d.ts +2 -12
  3. package/dist/cjs/api-client.d.ts.map +1 -1
  4. package/dist/cjs/api-client.js +4 -42
  5. package/dist/cjs/errors.d.ts +1 -16
  6. package/dist/cjs/errors.d.ts.map +1 -1
  7. package/dist/cjs/errors.js +2 -18
  8. package/dist/cjs/events/types.d.ts +14 -21
  9. package/dist/cjs/events/types.d.ts.map +1 -1
  10. package/dist/cjs/events/types.js +0 -11
  11. package/dist/cjs/index.d.ts +26 -48
  12. package/dist/cjs/index.d.ts.map +1 -1
  13. package/dist/cjs/index.js +29 -52
  14. package/dist/cjs/llm/resolve.d.ts +4 -22
  15. package/dist/cjs/llm/resolve.d.ts.map +1 -1
  16. package/dist/cjs/llm/resolve.js +19 -7
  17. package/dist/cjs/llm/vercel-ai/adapter.d.ts +4 -10
  18. package/dist/cjs/llm/vercel-ai/adapter.d.ts.map +1 -1
  19. package/dist/cjs/llm/vercel-ai/adapter.js +6 -152
  20. package/dist/cjs/llm/vercel-ai/config.d.ts +8 -5
  21. package/dist/cjs/llm/vercel-ai/config.d.ts.map +1 -1
  22. package/dist/cjs/memory/in-memory.d.ts +14 -37
  23. package/dist/cjs/memory/in-memory.d.ts.map +1 -1
  24. package/dist/cjs/memory/in-memory.js +22 -85
  25. package/dist/cjs/memory/recall.d.ts +10 -21
  26. package/dist/cjs/memory/recall.d.ts.map +1 -1
  27. package/dist/cjs/memory/recall.js +12 -91
  28. package/dist/cjs/memory/types.d.ts +46 -186
  29. package/dist/cjs/memory/types.d.ts.map +1 -1
  30. package/dist/cjs/memory/types.js +0 -10
  31. package/dist/cjs/persona/chat-orchestrator.d.ts +46 -0
  32. package/dist/cjs/persona/chat-orchestrator.d.ts.map +1 -0
  33. package/dist/cjs/persona/chat-orchestrator.js +240 -0
  34. package/dist/cjs/persona/event-emitter.d.ts +7 -0
  35. package/dist/cjs/persona/event-emitter.d.ts.map +1 -0
  36. package/dist/cjs/persona/event-emitter.js +53 -0
  37. package/dist/cjs/persona/memory-pipeline.d.ts +26 -0
  38. package/dist/cjs/persona/memory-pipeline.d.ts.map +1 -0
  39. package/dist/cjs/persona/memory-pipeline.js +69 -0
  40. package/dist/cjs/persona.d.ts +56 -187
  41. package/dist/cjs/persona.d.ts.map +1 -1
  42. package/dist/cjs/persona.js +62 -638
  43. package/dist/cjs/shared/appraisal.d.ts +26 -0
  44. package/dist/cjs/shared/appraisal.d.ts.map +1 -0
  45. package/dist/cjs/shared/appraisal.js +45 -0
  46. package/dist/cjs/shared/client-factory.d.ts +23 -0
  47. package/dist/cjs/shared/client-factory.d.ts.map +1 -0
  48. package/dist/cjs/shared/client-factory.js +48 -0
  49. package/dist/cjs/shared/errors.d.ts +21 -0
  50. package/dist/cjs/shared/errors.d.ts.map +1 -0
  51. package/dist/cjs/shared/errors.js +29 -0
  52. package/dist/cjs/world/client.d.ts +2 -9
  53. package/dist/cjs/world/client.d.ts.map +1 -1
  54. package/dist/cjs/world/client.js +7 -34
  55. package/dist/cjs/world/errors.d.ts +1 -8
  56. package/dist/cjs/world/errors.d.ts.map +1 -1
  57. package/dist/cjs/world/errors.js +2 -12
  58. package/dist/cjs/world/index.d.ts +2 -2
  59. package/dist/cjs/world/index.d.ts.map +1 -1
  60. package/dist/cjs/world/types.d.ts +32 -5
  61. package/dist/cjs/world/types.d.ts.map +1 -1
  62. package/dist/cjs/world/world-domain.d.ts.map +1 -1
  63. package/dist/cjs/world/world-domain.js +4 -32
  64. package/dist/cjs/world/world-persona.d.ts +17 -12
  65. package/dist/cjs/world/world-persona.d.ts.map +1 -1
  66. package/dist/cjs/world/world-persona.js +6 -18
  67. package/dist/cjs/world/world.d.ts +28 -5
  68. package/dist/cjs/world/world.d.ts.map +1 -1
  69. package/dist/cjs/world/world.js +13 -11
  70. package/dist/esm/api-client.d.ts +2 -12
  71. package/dist/esm/api-client.d.ts.map +1 -1
  72. package/dist/esm/api-client.js +3 -38
  73. package/dist/esm/errors.d.ts +1 -16
  74. package/dist/esm/errors.d.ts.map +1 -1
  75. package/dist/esm/errors.js +1 -17
  76. package/dist/esm/events/types.d.ts +14 -21
  77. package/dist/esm/events/types.d.ts.map +1 -1
  78. package/dist/esm/events/types.js +0 -11
  79. package/dist/esm/index.d.ts +26 -48
  80. package/dist/esm/index.d.ts.map +1 -1
  81. package/dist/esm/index.js +25 -38
  82. package/dist/esm/llm/resolve.d.ts +4 -22
  83. package/dist/esm/llm/resolve.d.ts.map +1 -1
  84. package/dist/esm/llm/resolve.js +20 -8
  85. package/dist/esm/llm/vercel-ai/adapter.d.ts +4 -10
  86. package/dist/esm/llm/vercel-ai/adapter.d.ts.map +1 -1
  87. package/dist/esm/llm/vercel-ai/adapter.js +6 -119
  88. package/dist/esm/llm/vercel-ai/config.d.ts +8 -5
  89. package/dist/esm/llm/vercel-ai/config.d.ts.map +1 -1
  90. package/dist/esm/memory/in-memory.d.ts +14 -37
  91. package/dist/esm/memory/in-memory.d.ts.map +1 -1
  92. package/dist/esm/memory/in-memory.js +20 -83
  93. package/dist/esm/memory/recall.d.ts +10 -21
  94. package/dist/esm/memory/recall.d.ts.map +1 -1
  95. package/dist/esm/memory/recall.js +12 -91
  96. package/dist/esm/memory/types.d.ts +46 -186
  97. package/dist/esm/memory/types.d.ts.map +1 -1
  98. package/dist/esm/memory/types.js +1 -9
  99. package/dist/esm/persona/chat-orchestrator.d.ts +46 -0
  100. package/dist/esm/persona/chat-orchestrator.d.ts.map +1 -0
  101. package/dist/esm/persona/chat-orchestrator.js +204 -0
  102. package/dist/esm/persona/event-emitter.d.ts +7 -0
  103. package/dist/esm/persona/event-emitter.d.ts.map +1 -0
  104. package/dist/esm/persona/event-emitter.js +50 -0
  105. package/dist/esm/persona/memory-pipeline.d.ts +26 -0
  106. package/dist/esm/persona/memory-pipeline.d.ts.map +1 -0
  107. package/dist/esm/persona/memory-pipeline.js +65 -0
  108. package/dist/esm/persona.d.ts +56 -187
  109. package/dist/esm/persona.d.ts.map +1 -1
  110. package/dist/esm/persona.js +62 -638
  111. package/dist/esm/shared/appraisal.d.ts +26 -0
  112. package/dist/esm/shared/appraisal.d.ts.map +1 -0
  113. package/dist/esm/shared/appraisal.js +40 -0
  114. package/dist/esm/shared/client-factory.d.ts +23 -0
  115. package/dist/esm/shared/client-factory.d.ts.map +1 -0
  116. package/dist/esm/shared/client-factory.js +41 -0
  117. package/dist/esm/shared/errors.d.ts +21 -0
  118. package/dist/esm/shared/errors.d.ts.map +1 -0
  119. package/dist/esm/shared/errors.js +24 -0
  120. package/dist/esm/world/client.d.ts +2 -9
  121. package/dist/esm/world/client.d.ts.map +1 -1
  122. package/dist/esm/world/client.js +6 -30
  123. package/dist/esm/world/errors.d.ts +1 -8
  124. package/dist/esm/world/errors.d.ts.map +1 -1
  125. package/dist/esm/world/errors.js +1 -11
  126. package/dist/esm/world/index.d.ts +2 -2
  127. package/dist/esm/world/index.d.ts.map +1 -1
  128. package/dist/esm/world/types.d.ts +32 -5
  129. package/dist/esm/world/types.d.ts.map +1 -1
  130. package/dist/esm/world/world-domain.d.ts.map +1 -1
  131. package/dist/esm/world/world-domain.js +4 -32
  132. package/dist/esm/world/world-persona.d.ts +17 -12
  133. package/dist/esm/world/world-persona.d.ts.map +1 -1
  134. package/dist/esm/world/world-persona.js +6 -18
  135. package/dist/esm/world/world.d.ts +28 -5
  136. package/dist/esm/world/world.d.ts.map +1 -1
  137. package/dist/esm/world/world.js +13 -11
  138. package/package.json +4 -101
  139. package/dist/cjs/embedding/cloudflare.d.ts +0 -15
  140. package/dist/cjs/embedding/cloudflare.d.ts.map +0 -1
  141. package/dist/cjs/embedding/cloudflare.js +0 -16
  142. package/dist/cjs/embedding/cohere.d.ts +0 -8
  143. package/dist/cjs/embedding/cohere.d.ts.map +0 -1
  144. package/dist/cjs/embedding/cohere.js +0 -31
  145. package/dist/cjs/embedding/index.d.ts +0 -9
  146. package/dist/cjs/embedding/index.d.ts.map +0 -1
  147. package/dist/cjs/embedding/index.js +0 -11
  148. package/dist/cjs/embedding/local.d.ts +0 -6
  149. package/dist/cjs/embedding/local.d.ts.map +0 -1
  150. package/dist/cjs/embedding/local.js +0 -28
  151. package/dist/cjs/embedding/openai.d.ts +0 -9
  152. package/dist/cjs/embedding/openai.d.ts.map +0 -1
  153. package/dist/cjs/embedding/openai.js +0 -26
  154. package/dist/cjs/events/console.d.ts +0 -25
  155. package/dist/cjs/events/console.d.ts.map +0 -1
  156. package/dist/cjs/events/console.js +0 -41
  157. package/dist/cjs/events/webhook.d.ts +0 -30
  158. package/dist/cjs/events/webhook.d.ts.map +0 -1
  159. package/dist/cjs/events/webhook.js +0 -79
  160. package/dist/cjs/memory/cloudflare/index.d.ts +0 -3
  161. package/dist/cjs/memory/cloudflare/index.d.ts.map +0 -1
  162. package/dist/cjs/memory/cloudflare/index.js +0 -5
  163. package/dist/cjs/memory/cloudflare/vectorize.d.ts +0 -62
  164. package/dist/cjs/memory/cloudflare/vectorize.d.ts.map +0 -1
  165. package/dist/cjs/memory/cloudflare/vectorize.js +0 -55
  166. package/dist/cjs/memory/in-memory-semantic.d.ts +0 -16
  167. package/dist/cjs/memory/in-memory-semantic.d.ts.map +0 -1
  168. package/dist/cjs/memory/in-memory-semantic.js +0 -57
  169. package/dist/cjs/memory/pinecone/index.d.ts +0 -7
  170. package/dist/cjs/memory/pinecone/index.d.ts.map +0 -1
  171. package/dist/cjs/memory/pinecone/index.js +0 -8
  172. package/dist/cjs/memory/pinecone/memory-adapter.d.ts +0 -62
  173. package/dist/cjs/memory/pinecone/memory-adapter.d.ts.map +0 -1
  174. package/dist/cjs/memory/pinecone/memory-adapter.js +0 -220
  175. package/dist/cjs/memory/pinecone/semantic.d.ts +0 -44
  176. package/dist/cjs/memory/pinecone/semantic.d.ts.map +0 -1
  177. package/dist/cjs/memory/pinecone/semantic.js +0 -90
  178. package/dist/cjs/memory/sqlite/index.d.ts +0 -3
  179. package/dist/cjs/memory/sqlite/index.d.ts.map +0 -1
  180. package/dist/cjs/memory/sqlite/index.js +0 -5
  181. package/dist/cjs/memory/sqlite/memory-adapter.d.ts +0 -58
  182. package/dist/cjs/memory/sqlite/memory-adapter.d.ts.map +0 -1
  183. package/dist/cjs/memory/sqlite/memory-adapter.js +0 -336
  184. package/dist/cjs/memory/sqlite/schema.d.ts +0 -4
  185. package/dist/cjs/memory/sqlite/schema.d.ts.map +0 -1
  186. package/dist/cjs/memory/sqlite/schema.js +0 -91
  187. package/dist/cjs/memory/supabase/index.d.ts +0 -7
  188. package/dist/cjs/memory/supabase/index.d.ts.map +0 -1
  189. package/dist/cjs/memory/supabase/index.js +0 -8
  190. package/dist/cjs/memory/supabase/memory-adapter.d.ts +0 -67
  191. package/dist/cjs/memory/supabase/memory-adapter.d.ts.map +0 -1
  192. package/dist/cjs/memory/supabase/memory-adapter.js +0 -335
  193. package/dist/cjs/memory/supabase/semantic.d.ts +0 -44
  194. package/dist/cjs/memory/supabase/semantic.d.ts.map +0 -1
  195. package/dist/cjs/memory/supabase/semantic.js +0 -72
  196. package/dist/esm/embedding/cloudflare.d.ts +0 -15
  197. package/dist/esm/embedding/cloudflare.d.ts.map +0 -1
  198. package/dist/esm/embedding/cloudflare.js +0 -13
  199. package/dist/esm/embedding/cohere.d.ts +0 -8
  200. package/dist/esm/embedding/cohere.d.ts.map +0 -1
  201. package/dist/esm/embedding/cohere.js +0 -28
  202. package/dist/esm/embedding/index.d.ts +0 -9
  203. package/dist/esm/embedding/index.d.ts.map +0 -1
  204. package/dist/esm/embedding/index.js +0 -4
  205. package/dist/esm/embedding/local.d.ts +0 -6
  206. package/dist/esm/embedding/local.d.ts.map +0 -1
  207. package/dist/esm/embedding/local.js +0 -25
  208. package/dist/esm/embedding/openai.d.ts +0 -9
  209. package/dist/esm/embedding/openai.d.ts.map +0 -1
  210. package/dist/esm/embedding/openai.js +0 -23
  211. package/dist/esm/events/console.d.ts +0 -25
  212. package/dist/esm/events/console.d.ts.map +0 -1
  213. package/dist/esm/events/console.js +0 -37
  214. package/dist/esm/events/webhook.d.ts +0 -30
  215. package/dist/esm/events/webhook.d.ts.map +0 -1
  216. package/dist/esm/events/webhook.js +0 -75
  217. package/dist/esm/memory/cloudflare/index.d.ts +0 -3
  218. package/dist/esm/memory/cloudflare/index.d.ts.map +0 -1
  219. package/dist/esm/memory/cloudflare/index.js +0 -1
  220. package/dist/esm/memory/cloudflare/vectorize.d.ts +0 -62
  221. package/dist/esm/memory/cloudflare/vectorize.d.ts.map +0 -1
  222. package/dist/esm/memory/cloudflare/vectorize.js +0 -51
  223. package/dist/esm/memory/in-memory-semantic.d.ts +0 -16
  224. package/dist/esm/memory/in-memory-semantic.d.ts.map +0 -1
  225. package/dist/esm/memory/in-memory-semantic.js +0 -53
  226. package/dist/esm/memory/pinecone/index.d.ts +0 -7
  227. package/dist/esm/memory/pinecone/index.d.ts.map +0 -1
  228. package/dist/esm/memory/pinecone/index.js +0 -3
  229. package/dist/esm/memory/pinecone/memory-adapter.d.ts +0 -62
  230. package/dist/esm/memory/pinecone/memory-adapter.d.ts.map +0 -1
  231. package/dist/esm/memory/pinecone/memory-adapter.js +0 -216
  232. package/dist/esm/memory/pinecone/semantic.d.ts +0 -44
  233. package/dist/esm/memory/pinecone/semantic.d.ts.map +0 -1
  234. package/dist/esm/memory/pinecone/semantic.js +0 -86
  235. package/dist/esm/memory/sqlite/index.d.ts +0 -3
  236. package/dist/esm/memory/sqlite/index.d.ts.map +0 -1
  237. package/dist/esm/memory/sqlite/index.js +0 -1
  238. package/dist/esm/memory/sqlite/memory-adapter.d.ts +0 -58
  239. package/dist/esm/memory/sqlite/memory-adapter.d.ts.map +0 -1
  240. package/dist/esm/memory/sqlite/memory-adapter.js +0 -296
  241. package/dist/esm/memory/sqlite/schema.d.ts +0 -4
  242. package/dist/esm/memory/sqlite/schema.d.ts.map +0 -1
  243. package/dist/esm/memory/sqlite/schema.js +0 -86
  244. package/dist/esm/memory/supabase/index.d.ts +0 -7
  245. package/dist/esm/memory/supabase/index.d.ts.map +0 -1
  246. package/dist/esm/memory/supabase/index.js +0 -3
  247. package/dist/esm/memory/supabase/memory-adapter.d.ts +0 -67
  248. package/dist/esm/memory/supabase/memory-adapter.d.ts.map +0 -1
  249. package/dist/esm/memory/supabase/memory-adapter.js +0 -331
  250. package/dist/esm/memory/supabase/semantic.d.ts +0 -44
  251. package/dist/esm/memory/supabase/semantic.d.ts.map +0 -1
  252. package/dist/esm/memory/supabase/semantic.js +0 -68
@@ -1,20 +1,18 @@
1
1
  /**
2
2
  * Shared memory recall and prompt-building utilities.
3
3
  *
4
- * Used by MolrooPersona to recall episodic/semantic memories and
5
- * format them for LLM system prompts. Supports both:
6
- * - Single MemoryAdapter (new, preferred)
7
- * - Split EpisodeAdapter + SemanticAdapter + EmbeddingAdapter (backward compat)
4
+ * Used by Molroo to recall episodic/semantic memories and
5
+ * format them for LLM system prompts.
8
6
  */
9
7
  import type { Episode } from '../types';
10
- import type { EpisodeAdapter, SemanticAdapter, EmbeddingAdapter, MemoryAdapter, Reflection } from './types';
8
+ import type { MemoryAdapter, Reflection } from './types';
11
9
  /**
12
10
  * Strip leading `[...]` metadata tags from text before embedding.
13
11
  * These tags (channel info, scene hints, timestamps) add noise to
14
12
  * semantic similarity and should not influence vector search.
15
13
  */
16
14
  export declare function stripMetaTags(text: string): string;
17
- /** Recall tuning parameters. */
15
+ /** Recall configuration. */
18
16
  export interface RecallConfig {
19
17
  episodicLimit?: number;
20
18
  semanticLimit?: number;
@@ -30,25 +28,16 @@ export interface RecallResult {
30
28
  reflections: Reflection[];
31
29
  }
32
30
  /**
33
- * Recall episodic + semantic + reflection memories in parallel.
34
- *
35
- * Supports two paths:
36
- * 1. Single MemoryAdapter (`memoryAdapter` param) — adapter handles everything
37
- * 2. Split stores (`episodeStore` + `semanticStore` + `embeddingProvider`) — legacy
31
+ * Recall episodic + semantic + reflection memories from a MemoryAdapter.
38
32
  *
39
33
  * @param message - Current user message (used for semantic embedding).
40
- * @param opts - Stores, provider, config, and entity filter.
34
+ * @param adapter - MemoryAdapter instance.
35
+ * @param config - Recall configuration.
36
+ * @param sourceEntity - Filter episodes by source entity.
37
+ * @param reflectionEntity - Filter reflections by entity.
41
38
  * @returns Recalled memories grouped by type.
42
39
  */
43
- export declare function recallMemories(message: string, opts: {
44
- memoryAdapter?: MemoryAdapter | null;
45
- episodeStore: EpisodeAdapter | null;
46
- semanticStore: SemanticAdapter | null;
47
- embeddingProvider: EmbeddingAdapter | null;
48
- config?: RecallConfig;
49
- sourceEntity?: string;
50
- reflectionEntity?: string;
51
- }): Promise<RecallResult>;
40
+ export declare function recallMemories(message: string, adapter: MemoryAdapter, config?: RecallConfig, sourceEntity?: string, reflectionEntity?: string): Promise<RecallResult>;
52
41
  /**
53
42
  * Format recalled memories into a text block for LLM system prompt injection.
54
43
  * Groups episodic memories by type: conversations vs events.
@@ -1 +1 @@
1
- {"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../../src/memory/recall.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,UAAU,EAEX,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,gCAAgC;AAChC,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAgFD;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACJ,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,YAAY,EAAE,cAAc,GAAG,IAAI,CAAC;IACpC,aAAa,EAAE,eAAe,GAAG,IAAI,CAAC;IACtC,iBAAiB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC3C,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GACA,OAAO,CAAC,YAAY,CAAC,CA2FvB;AAcD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAC5B,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAC5B,WAAW,CAAC,EAAE,UAAU,EAAE,GACzB,MAAM,CAwCR"}
1
+ {"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../../src/memory/recall.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAgB,MAAM,SAAS,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,4BAA4B;AAC5B,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,MAAM,GAAE,YAAiB,EACzB,YAAY,CAAC,EAAE,MAAM,EACrB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,YAAY,CAAC,CAkEvB;AAcD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAC5B,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAC5B,WAAW,CAAC,EAAE,UAAU,EAAE,GACzB,MAAM,CAwCR"}
@@ -2,10 +2,8 @@
2
2
  /**
3
3
  * Shared memory recall and prompt-building utilities.
4
4
  *
5
- * Used by MolrooPersona to recall episodic/semantic memories and
6
- * format them for LLM system prompts. Supports both:
7
- * - Single MemoryAdapter (new, preferred)
8
- * - Split EpisodeAdapter + SemanticAdapter + EmbeddingAdapter (backward compat)
5
+ * Used by Molroo to recall episodic/semantic memories and
6
+ * format them for LLM system prompts.
9
7
  */
10
8
  Object.defineProperty(exports, "__esModule", { value: true });
11
9
  exports.stripMetaTags = stripMetaTags;
@@ -20,10 +18,16 @@ function stripMetaTags(text) {
20
18
  return text.replace(/^\s*(\[.*?\]\s*)+/s, '').trim();
21
19
  }
22
20
  /**
23
- * Recall from a single MemoryAdapter. The adapter handles all storage
24
- * and vector search internally.
21
+ * Recall episodic + semantic + reflection memories from a MemoryAdapter.
22
+ *
23
+ * @param message - Current user message (used for semantic embedding).
24
+ * @param adapter - MemoryAdapter instance.
25
+ * @param config - Recall configuration.
26
+ * @param sourceEntity - Filter episodes by source entity.
27
+ * @param reflectionEntity - Filter reflections by entity.
28
+ * @returns Recalled memories grouped by type.
25
29
  */
26
- async function recallFromAdapter(message, adapter, config, sourceEntity, reflectionEntity) {
30
+ async function recallMemories(message, adapter, config = {}, sourceEntity, reflectionEntity) {
27
31
  const episodicLimit = config.episodicLimit ?? 5;
28
32
  const semanticLimit = config.semanticLimit ?? 3;
29
33
  const reflectionLimit = config.reflectionLimit ?? 3;
@@ -53,7 +57,7 @@ async function recallFromAdapter(message, adapter, config, sourceEntity, reflect
53
57
  ? adapter
54
58
  .semanticRecall(stripMetaTags(message), {
55
59
  topK: semanticLimit,
56
- filter: { minImportance },
60
+ minImportance,
57
61
  })
58
62
  .catch(() => [])
59
63
  : Promise.resolve([]);
@@ -83,89 +87,6 @@ async function recallFromAdapter(message, adapter, config, sourceEntity, reflect
83
87
  episodic.splice(episodicLimit);
84
88
  return { episodic, semantic, reflections };
85
89
  }
86
- /**
87
- * Recall episodic + semantic + reflection memories in parallel.
88
- *
89
- * Supports two paths:
90
- * 1. Single MemoryAdapter (`memoryAdapter` param) — adapter handles everything
91
- * 2. Split stores (`episodeStore` + `semanticStore` + `embeddingProvider`) — legacy
92
- *
93
- * @param message - Current user message (used for semantic embedding).
94
- * @param opts - Stores, provider, config, and entity filter.
95
- * @returns Recalled memories grouped by type.
96
- */
97
- async function recallMemories(message, opts) {
98
- const config = opts.config ?? {};
99
- // Path 1: Single MemoryAdapter
100
- if (opts.memoryAdapter) {
101
- return recallFromAdapter(message, opts.memoryAdapter, config, opts.sourceEntity, opts.reflectionEntity);
102
- }
103
- // Path 2: Split stores (backward compat)
104
- const { episodeStore, semanticStore, embeddingProvider } = opts;
105
- const episodicLimit = config.episodicLimit ?? 5;
106
- const semanticLimit = config.semanticLimit ?? 3;
107
- const reflectionLimit = config.reflectionLimit ?? 3;
108
- const minImportance = config.minImportance ?? 0;
109
- // Episodic recall — conversations (filtered by sourceEntity)
110
- const conversationP = episodeStore
111
- ? episodeStore
112
- .recall({
113
- sourceEntity: opts.sourceEntity,
114
- limit: episodicLimit,
115
- minImportance,
116
- ...(config.types ? { type: config.types } : {}),
117
- })
118
- .catch(() => [])
119
- : Promise.resolve([]);
120
- // Episodic recall — non-chat events (no sourceEntity filter).
121
- // Events like attacks/gifts come from various entities and must be
122
- // recalled regardless of who the persona is currently talking to.
123
- const hasTypeFilter = config.types && config.types.length > 0;
124
- const eventP = (episodeStore && !hasTypeFilter)
125
- ? episodeStore
126
- .recall({
127
- // No sourceEntity — recall events from all sources
128
- limit: episodicLimit,
129
- minImportance,
130
- })
131
- .then((all) => all.filter((ep) => ep.type && ep.type !== 'chat_message'))
132
- .catch(() => [])
133
- : Promise.resolve([]);
134
- // Semantic recall (vector)
135
- const semanticP = semanticStore && embeddingProvider && episodeStore?.getByIds
136
- ? embeddingProvider
137
- .embed(stripMetaTags(message))
138
- .then((embedding) => semanticStore.search({ embedding, topK: semanticLimit, filter: { minImportance } }))
139
- .then((results) => results.length > 0
140
- ? episodeStore.getByIds(results.map((r) => r.id))
141
- : [])
142
- .catch(() => [])
143
- : Promise.resolve([]);
144
- // Reflection recall (RDB)
145
- const reflectionP = episodeStore
146
- ? episodeStore
147
- .getReflections(opts.reflectionEntity, reflectionLimit)
148
- .catch(() => [])
149
- : Promise.resolve([]);
150
- const [conversations, events, semantic, reflections] = await Promise.all([
151
- conversationP,
152
- eventP,
153
- semanticP,
154
- reflectionP,
155
- ]);
156
- // Merge conversations + events, deduplicate, and re-sort by recency
157
- const seenIds = new Set();
158
- const episodic = [];
159
- for (const ep of [...conversations, ...events]) {
160
- if (!seenIds.has(ep.id)) {
161
- seenIds.add(ep.id);
162
- episodic.push(ep);
163
- }
164
- }
165
- episodic.sort((a, b) => b.timestamp - a.timestamp);
166
- episodic.splice(episodicLimit);
167
- return { episodic, semantic, reflections };
168
- }
169
90
  /** Format a single episode into a display line. */
170
91
  function formatEpisodeLine(ep) {
171
92
  const v = ep.emotionSnapshot;
@@ -1,209 +1,74 @@
1
1
  import type { Episode, VAD } from '../types';
2
2
  export type { Episode, VAD };
3
3
  /**
4
- * Single-interface memory adapter for the SDK.
4
+ * Memory adapter for advanced memory features.
5
5
  *
6
- * Duck-type compatible with `@molroo-io/persona`'s `MemoryAdapter`.
7
- * Implementations (SqliteMemoryAdapter, SupabaseMemoryAdapter, etc.) provide
8
- * a single object that handles episode storage, recall, and optionally
9
- * semantic/vector search internally.
6
+ * For simple use cases, manage conversation history externally using
7
+ * the `updatedHistory` returned from `chat()`.
8
+ *
9
+ * For advanced features (semantic search, reflections, emotion-aware storage),
10
+ * implement this interface.
10
11
  *
11
12
  * @example
12
13
  * ```typescript
13
- * import { MolrooPersona } from '@molroo-io/sdk';
14
+ * class MyPostgresAdapter implements MemoryAdapter {
15
+ * async saveEpisode(episode: Episode): Promise<void> {
16
+ * await db.query('INSERT INTO episodes ...', [episode]);
17
+ * }
18
+ *
19
+ * async recall(query: RecallQuery): Promise<Episode[]> {
20
+ * return db.query('SELECT * FROM episodes WHERE ...', [query.sourceEntity]);
21
+ * }
14
22
  *
15
- * const persona = await MolrooPersona.create({
16
- * baseUrl: 'https://api.molroo.io',
17
- * apiKey: 'key',
18
- * llm,
19
- * memory: myMemoryAdapter,
20
- * });
23
+ * // Optional: semantic search with vector DB
24
+ * async semanticRecall(query: string, options?: SemanticRecallOptions): Promise<Episode[]> {
25
+ * const embedding = await openai.embed(query);
26
+ * return vectorDB.search(embedding, options?.topK ?? 5);
27
+ * }
28
+ * }
21
29
  * ```
22
30
  */
23
31
  export interface MemoryAdapter {
24
- /** Save an episode returned by the API's AgentResponse. */
32
+ /** Save an episode with emotion metadata. */
25
33
  saveEpisode(episode: Episode): Promise<void>;
26
- /**
27
- * Recall relevant episodes by structured query.
28
- * Accepts both SDK `RecallQuery` and `EpisodeQuery` shapes.
29
- */
34
+ /** Recall episodes by structured query (filters). */
30
35
  recall(query: RecallQuery): Promise<Episode[]>;
31
- /** Save a reflection generated by LLM. Optional omit for episode-only storage. */
36
+ /** Semantic similarity search (optional). Requires vector DB. */
37
+ semanticRecall?(query: string, options?: SemanticRecallOptions): Promise<Episode[]>;
38
+ /** Save a reflection (optional). */
32
39
  saveReflection?(reflection: Reflection): Promise<void>;
33
- /** Retrieve reflections for a source entity. Optional. */
40
+ /** Get reflections for a source (optional). */
34
41
  getReflections?(sourceEntity?: string): Promise<Reflection[]>;
35
- /**
36
- * Vector/semantic similarity search. Optional.
37
- * When provided, the adapter handles embedding internally — no separate
38
- * EmbeddingAdapter needed.
39
- */
40
- semanticRecall?(query: string, options?: SemanticRecallOptions): Promise<Episode[]>;
41
- /** Retrieve episodes by IDs. Optional — used for hydrating search results. */
42
+ /** Retrieve episodes by IDs (optional). */
42
43
  getByIds?(ids: string[]): Promise<Episode[]>;
43
44
  }
44
- /**
45
- * Query for recalling episodes from a MemoryAdapter.
46
- *
47
- * Compatible with both persona engine's `RecallQuery` (`context` field)
48
- * and the SDK's `EpisodeQuery` (`contextContains` field).
49
- */
45
+ /** Query for recalling episodes. */
50
46
  export interface RecallQuery {
51
47
  /** Filter by source entity name. */
52
48
  sourceEntity?: string;
53
- /** Search keyword or vector query text (persona engine compatibility). */
49
+ /** Search keyword or context text. */
54
50
  context?: string;
55
- /** Max episodes to return. Default: implementation-specific. */
51
+ /** Max episodes to return. */
56
52
  limit?: number;
57
- /** Minimum importance score to include. */
53
+ /** Minimum importance score (0-1). */
58
54
  minImportance?: number;
59
55
  /** Epoch ms range [from, to]. */
60
56
  timeRange?: [number, number];
61
- /** Filter by episode type. Single string or array (OR match). */
57
+ /** Filter by episode type. */
62
58
  type?: string | string[];
63
59
  /** Valence range [min, max]. */
64
60
  valenceRange?: [number, number];
65
61
  }
66
62
  /** Options for semantic/vector recall. */
67
63
  export interface SemanticRecallOptions {
68
- /** Number of results to return. Default: 5. */
64
+ /** Number of results. Default: 5. */
69
65
  topK?: number;
70
- /** Minimum similarity score to include. */
66
+ /** Minimum similarity score (0-1). */
71
67
  minScore?: number;
72
- /** Additional structured filters. */
73
- filter?: Partial<RecallQuery>;
74
- }
75
- /** Recall limit configuration, extracted for reuse. */
76
- export interface RecallLimits {
77
- /** Max episodic memories per recall. Default: 5. */
78
- episodicLimit?: number;
79
- /** Max semantic results per recall. Default: 3. */
80
- semanticLimit?: number;
81
- /** Max reflections per recall. Default: 3. */
82
- reflectionLimit?: number;
83
- /** Minimum importance threshold. Default: 0. */
68
+ /** Minimum importance threshold. */
84
69
  minImportance?: number;
85
70
  }
86
- /**
87
- * Type guard: returns true if the memory config is a `MemoryConfig` (split adapters),
88
- * false if it's a `MemoryAdapter` (single adapter).
89
- *
90
- * Discriminates by checking for `saveEpisode` — present on MemoryAdapter, absent on MemoryConfig.
91
- */
92
- export declare function isMemoryConfig(m: MemoryAdapter | MemoryConfig): m is MemoryConfig;
93
- /**
94
- * EpisodeAdapter — RDB-backed structured episode storage.
95
- *
96
- * Required adapter for the split `MemoryConfig` approach. Handles saving and
97
- * recalling episodic memories (conversation episodes + reflections).
98
- *
99
- * Implementations: InMemoryEpisodeAdapter (built-in), or consumer-provided
100
- * (SQLite, PostgreSQL, Supabase, etc.).
101
- */
102
- export interface EpisodeAdapter {
103
- /** Save an episode returned by the API's AgentResponse. */
104
- saveEpisode(episode: Episode): Promise<void>;
105
- /** Recall relevant episodes by structured query (time-ordered). */
106
- recall(query: EpisodeQuery): Promise<Episode[]>;
107
- /** Retrieve episodes by IDs — used for hydrating SemanticStore results. */
108
- getByIds?(ids: string[]): Promise<Episode[]>;
109
- /** Save a reflection generated by LLM. */
110
- saveReflection(reflection: Reflection): Promise<void>;
111
- /** Retrieve reflections for a source entity. */
112
- getReflections(sourceEntity?: string, limit?: number): Promise<Reflection[]>;
113
- }
114
- /** Structured query for episodic recall (RDB-style filtering). */
115
- export interface EpisodeQuery {
116
- /** Filter by source entity name. */
117
- sourceEntity?: string;
118
- /** LIKE search on episode context (not semantic). */
119
- contextContains?: string;
120
- /** Filter by episode type. Single string or array (OR match). */
121
- type?: string | string[];
122
- /** Max episodes to return. Default: 10. */
123
- limit?: number;
124
- /** Minimum importance score to include. */
125
- minImportance?: number;
126
- /** Epoch ms range [from, to]. */
127
- timeRange?: [number, number];
128
- /** Valence range [min, max]. */
129
- valenceRange?: [number, number];
130
- }
131
- /**
132
- * SemanticAdapter — Vector DB-backed semantic search.
133
- *
134
- * Optional adapter for similarity-based memory recall.
135
- * Requires an EmbeddingAdapter to be configured alongside.
136
- *
137
- * Implementations: consumer-provided (Pinecone, pgvector, ChromaDB, etc.).
138
- */
139
- export interface SemanticAdapter {
140
- /** Index a semantic entry (episode or reflection embedding). */
141
- index(entry: SemanticEntry): Promise<void>;
142
- /** Search for semantically similar entries. */
143
- search(query: SemanticQuery): Promise<SemanticResult[]>;
144
- }
145
- /** Entry to index in the vector store. */
146
- export interface SemanticEntry {
147
- id: string;
148
- embedding: number[];
149
- metadata: {
150
- type: 'episode' | 'reflection';
151
- sourceEntity?: string;
152
- timestamp: number;
153
- importance?: number;
154
- /** Episode type tag (e.g. 'chat_message', 'attack', 'gift'). */
155
- episodeType?: string;
156
- };
157
- }
158
- /** Query for semantic similarity search. */
159
- export interface SemanticQuery {
160
- embedding: number[];
161
- /** Number of results to return. Default: 5. */
162
- topK?: number;
163
- filter?: {
164
- type?: 'episode' | 'reflection';
165
- sourceEntity?: string;
166
- minImportance?: number;
167
- /** Filter by episode type tag. */
168
- episodeType?: string;
169
- };
170
- }
171
- /** Result from semantic similarity search. */
172
- export interface SemanticResult {
173
- id: string;
174
- score: number;
175
- metadata: SemanticEntry['metadata'];
176
- }
177
- /**
178
- * EmbeddingAdapter — generates vector embeddings from text.
179
- *
180
- * Required when using SemanticAdapter. Consumer provides their own
181
- * embedding model (OpenAI, Cohere, local, etc.).
182
- */
183
- export interface EmbeddingAdapter {
184
- /** Generate an embedding vector from text. */
185
- embed(text: string): Promise<number[]>;
186
- /** Dimensionality of the embedding vectors. */
187
- readonly dimension: number;
188
- }
189
- /**
190
- * MemoryConfig — split-adapter configuration for the SDK memory system.
191
- *
192
- * At minimum, provide an `episodes` adapter. Optionally add `semantic`
193
- * + `embedding` for similarity-based recall.
194
- *
195
- * For simpler setup, pass a single `MemoryAdapter` instead of `MemoryConfig`.
196
- */
197
- export interface MemoryConfig {
198
- /** Required: structured episode storage (RDB-backed). */
199
- episodes: EpisodeAdapter;
200
- /** Optional: vector similarity search. Requires `embedding` to be set. */
201
- semantic?: SemanticAdapter;
202
- /** Optional: embedding adapter. Required when `semantic` is set. */
203
- embedding?: EmbeddingAdapter;
204
- /** Optional: recall tuning parameters. */
205
- recall?: RecallLimits;
206
- }
71
+ /** Reflection data structure. */
207
72
  export interface Reflection {
208
73
  id: string;
209
74
  timestamp: number;
@@ -212,20 +77,15 @@ export interface Reflection {
212
77
  trigger: string;
213
78
  emotionSnapshot: VAD;
214
79
  }
215
- /** @deprecated Use EpisodeAdapter */
216
- export type EpisodeStore = EpisodeAdapter;
217
- /** @deprecated Use SemanticAdapter */
218
- export type SemanticStore = SemanticAdapter;
219
- /** @deprecated Use EmbeddingAdapter */
220
- export type EmbeddingProvider = EmbeddingAdapter;
221
- export interface EpisodePatch {
222
- importance?: number;
223
- intensity?: number;
224
- emotionSnapshot?: VAD;
225
- }
226
- export interface CountQuery {
227
- sourceEntity?: string;
228
- context?: string;
229
- timeRange?: [number, number];
80
+ /** Recall limit configuration. */
81
+ export interface RecallLimits {
82
+ /** Max episodic memories. Default: 5. */
83
+ episodicLimit?: number;
84
+ /** Max semantic results. Default: 3. */
85
+ semanticLimit?: number;
86
+ /** Max reflections. Default: 3. */
87
+ reflectionLimit?: number;
88
+ /** Minimum importance threshold. Default: 0. */
89
+ minImportance?: number;
230
90
  }
231
91
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/memory/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/memory/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE7C,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAE7B;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C,qDAAqD;IACrD,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAE/C,iEAAiE;IACjE,cAAc,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEpF,oCAAoC;IACpC,cAAc,CAAC,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD,+CAA+C;IAC/C,cAAc,CAAC,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAE9D,2CAA2C;IAC3C,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC9C;AAED,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,gCAAgC;IAChC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iCAAiC;AACjC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,GAAG,CAAC;CACtB;AAED,kCAAkC;AAClC,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -1,12 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isMemoryConfig = isMemoryConfig;
4
- /**
5
- * Type guard: returns true if the memory config is a `MemoryConfig` (split adapters),
6
- * false if it's a `MemoryAdapter` (single adapter).
7
- *
8
- * Discriminates by checking for `saveEpisode` — present on MemoryAdapter, absent on MemoryConfig.
9
- */
10
- function isMemoryConfig(m) {
11
- return !('saveEpisode' in m);
12
- }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Chat orchestration: 3 modes (combined / split / tool-use).
3
+ *
4
+ * Extracted from MolrooPersona to reduce god-object complexity.
5
+ * All external dependencies are injected via ChatOrchestratorDeps.
6
+ */
7
+ import type { LLMAdapter, Message } from '../llm/adapter';
8
+ import type { AgentResponse, InterlocutorContext, PerceiveOptions } from '../types';
9
+ import type { RecallLimits } from '../memory/types';
10
+ import type { MemoryAdapter } from '../memory/types';
11
+ import type { EventAdapter } from '../events/types';
12
+ type PromptContextResult = {
13
+ systemPrompt: string;
14
+ personaPrompt: Record<string, unknown>;
15
+ tools?: Array<Record<string, unknown>>;
16
+ };
17
+ export interface ChatOrchestratorDeps {
18
+ personaId: string;
19
+ llm: LLMAdapter;
20
+ engineLlm: LLMAdapter | null;
21
+ memoryAdapter: MemoryAdapter | null;
22
+ memoryRecallConfig: RecallLimits | undefined;
23
+ events: EventAdapter | null;
24
+ getPromptContext: (consumerSuffix?: string, sourceEntity?: string) => Promise<PromptContextResult>;
25
+ perceive: (message: string, options?: PerceiveOptions) => Promise<AgentResponse>;
26
+ searchMemory: (query: string) => Promise<Array<Record<string, unknown>>>;
27
+ }
28
+ export interface ChatOptions {
29
+ from?: string | InterlocutorContext;
30
+ history?: Message[];
31
+ consumerSuffix?: string;
32
+ onToolCall?: (call: {
33
+ name: string;
34
+ args: Record<string, unknown>;
35
+ result: unknown;
36
+ }) => void;
37
+ }
38
+ export interface ChatResult {
39
+ text: string;
40
+ response: AgentResponse;
41
+ /** Updated conversation history including this turn. Manage externally for simple mode. */
42
+ updatedHistory: Message[];
43
+ }
44
+ export declare function chat(deps: ChatOrchestratorDeps, message: string, options?: ChatOptions): Promise<ChatResult>;
45
+ export {};
46
+ //# sourceMappingURL=chat-orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-orchestrator.d.ts","sourceRoot":"","sources":["../../../src/persona/chat-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EACV,aAAa,EAGb,mBAAmB,EACnB,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA+BpD,KAAK,mBAAmB,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,UAAU,CAAC;IAChB,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,kBAAkB,EAAE,YAAY,GAAG,SAAS,CAAC;IAC7C,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACnG,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACjF,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/F;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,2FAA2F;IAC3F,cAAc,EAAE,OAAO,EAAE,CAAC;CAC3B;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAmJlH"}