@molroo-io/sdk 0.5.2

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 (293) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +251 -0
  3. package/dist/cjs/api-client.d.ts +23 -0
  4. package/dist/cjs/api-client.d.ts.map +1 -0
  5. package/dist/cjs/api-client.js +55 -0
  6. package/dist/cjs/defaults/index.d.ts +8 -0
  7. package/dist/cjs/defaults/index.d.ts.map +1 -0
  8. package/dist/cjs/defaults/index.js +30 -0
  9. package/dist/cjs/defaults/persona.json +17 -0
  10. package/dist/cjs/embedding/cloudflare.d.ts +15 -0
  11. package/dist/cjs/embedding/cloudflare.d.ts.map +1 -0
  12. package/dist/cjs/embedding/cloudflare.js +16 -0
  13. package/dist/cjs/embedding/cohere.d.ts +8 -0
  14. package/dist/cjs/embedding/cohere.d.ts.map +1 -0
  15. package/dist/cjs/embedding/cohere.js +31 -0
  16. package/dist/cjs/embedding/index.d.ts +9 -0
  17. package/dist/cjs/embedding/index.d.ts.map +1 -0
  18. package/dist/cjs/embedding/index.js +11 -0
  19. package/dist/cjs/embedding/local.d.ts +6 -0
  20. package/dist/cjs/embedding/local.d.ts.map +1 -0
  21. package/dist/cjs/embedding/local.js +28 -0
  22. package/dist/cjs/embedding/openai.d.ts +9 -0
  23. package/dist/cjs/embedding/openai.d.ts.map +1 -0
  24. package/dist/cjs/embedding/openai.js +26 -0
  25. package/dist/cjs/errors.d.ts +17 -0
  26. package/dist/cjs/errors.d.ts.map +1 -0
  27. package/dist/cjs/errors.js +21 -0
  28. package/dist/cjs/events/console.d.ts +25 -0
  29. package/dist/cjs/events/console.d.ts.map +1 -0
  30. package/dist/cjs/events/console.js +41 -0
  31. package/dist/cjs/events/types.d.ts +28 -0
  32. package/dist/cjs/events/types.d.ts.map +1 -0
  33. package/dist/cjs/events/types.js +13 -0
  34. package/dist/cjs/events/webhook.d.ts +30 -0
  35. package/dist/cjs/events/webhook.d.ts.map +1 -0
  36. package/dist/cjs/events/webhook.js +79 -0
  37. package/dist/cjs/generate/persona.d.ts +16 -0
  38. package/dist/cjs/generate/persona.d.ts.map +1 -0
  39. package/dist/cjs/generate/persona.js +42 -0
  40. package/dist/cjs/generate/prompt.d.ts +7 -0
  41. package/dist/cjs/generate/prompt.d.ts.map +1 -0
  42. package/dist/cjs/generate/prompt.js +41 -0
  43. package/dist/cjs/generate/schema.d.ts +32 -0
  44. package/dist/cjs/generate/schema.d.ts.map +1 -0
  45. package/dist/cjs/generate/schema.js +54 -0
  46. package/dist/cjs/generated/index.d.ts +2 -0
  47. package/dist/cjs/generated/index.d.ts.map +1 -0
  48. package/dist/cjs/generated/index.js +2 -0
  49. package/dist/cjs/index.d.ts +66 -0
  50. package/dist/cjs/index.d.ts.map +1 -0
  51. package/dist/cjs/index.js +69 -0
  52. package/dist/cjs/llm/adapter.d.ts +61 -0
  53. package/dist/cjs/llm/adapter.d.ts.map +1 -0
  54. package/dist/cjs/llm/adapter.js +2 -0
  55. package/dist/cjs/llm/resolve.d.ts +28 -0
  56. package/dist/cjs/llm/resolve.d.ts.map +1 -0
  57. package/dist/cjs/llm/resolve.js +20 -0
  58. package/dist/cjs/llm/schema.d.ts +60 -0
  59. package/dist/cjs/llm/schema.d.ts.map +1 -0
  60. package/dist/cjs/llm/schema.js +72 -0
  61. package/dist/cjs/llm/types.d.ts +24 -0
  62. package/dist/cjs/llm/types.d.ts.map +1 -0
  63. package/dist/cjs/llm/types.js +2 -0
  64. package/dist/cjs/llm/vercel-ai/adapter.d.ts +29 -0
  65. package/dist/cjs/llm/vercel-ai/adapter.d.ts.map +1 -0
  66. package/dist/cjs/llm/vercel-ai/adapter.js +234 -0
  67. package/dist/cjs/llm/vercel-ai/config.d.ts +9 -0
  68. package/dist/cjs/llm/vercel-ai/config.d.ts.map +1 -0
  69. package/dist/cjs/llm/vercel-ai/config.js +2 -0
  70. package/dist/cjs/llm/vercel-ai/index.d.ts +9 -0
  71. package/dist/cjs/llm/vercel-ai/index.d.ts.map +1 -0
  72. package/dist/cjs/llm/vercel-ai/index.js +13 -0
  73. package/dist/cjs/memory/cloudflare/index.d.ts +3 -0
  74. package/dist/cjs/memory/cloudflare/index.d.ts.map +1 -0
  75. package/dist/cjs/memory/cloudflare/index.js +5 -0
  76. package/dist/cjs/memory/cloudflare/vectorize.d.ts +62 -0
  77. package/dist/cjs/memory/cloudflare/vectorize.d.ts.map +1 -0
  78. package/dist/cjs/memory/cloudflare/vectorize.js +55 -0
  79. package/dist/cjs/memory/in-memory-semantic.d.ts +16 -0
  80. package/dist/cjs/memory/in-memory-semantic.d.ts.map +1 -0
  81. package/dist/cjs/memory/in-memory-semantic.js +57 -0
  82. package/dist/cjs/memory/in-memory.d.ts +46 -0
  83. package/dist/cjs/memory/in-memory.d.ts.map +1 -0
  84. package/dist/cjs/memory/in-memory.js +115 -0
  85. package/dist/cjs/memory/pinecone/index.d.ts +7 -0
  86. package/dist/cjs/memory/pinecone/index.d.ts.map +1 -0
  87. package/dist/cjs/memory/pinecone/index.js +8 -0
  88. package/dist/cjs/memory/pinecone/memory-adapter.d.ts +62 -0
  89. package/dist/cjs/memory/pinecone/memory-adapter.d.ts.map +1 -0
  90. package/dist/cjs/memory/pinecone/memory-adapter.js +220 -0
  91. package/dist/cjs/memory/pinecone/semantic.d.ts +44 -0
  92. package/dist/cjs/memory/pinecone/semantic.d.ts.map +1 -0
  93. package/dist/cjs/memory/pinecone/semantic.js +90 -0
  94. package/dist/cjs/memory/recall.d.ts +58 -0
  95. package/dist/cjs/memory/recall.d.ts.map +1 -0
  96. package/dist/cjs/memory/recall.js +220 -0
  97. package/dist/cjs/memory/semantic.d.ts +24 -0
  98. package/dist/cjs/memory/semantic.d.ts.map +1 -0
  99. package/dist/cjs/memory/semantic.js +2 -0
  100. package/dist/cjs/memory/sqlite/index.d.ts +3 -0
  101. package/dist/cjs/memory/sqlite/index.d.ts.map +1 -0
  102. package/dist/cjs/memory/sqlite/index.js +5 -0
  103. package/dist/cjs/memory/sqlite/memory-adapter.d.ts +58 -0
  104. package/dist/cjs/memory/sqlite/memory-adapter.d.ts.map +1 -0
  105. package/dist/cjs/memory/sqlite/memory-adapter.js +336 -0
  106. package/dist/cjs/memory/sqlite/schema.d.ts +4 -0
  107. package/dist/cjs/memory/sqlite/schema.d.ts.map +1 -0
  108. package/dist/cjs/memory/sqlite/schema.js +91 -0
  109. package/dist/cjs/memory/supabase/index.d.ts +7 -0
  110. package/dist/cjs/memory/supabase/index.d.ts.map +1 -0
  111. package/dist/cjs/memory/supabase/index.js +8 -0
  112. package/dist/cjs/memory/supabase/memory-adapter.d.ts +67 -0
  113. package/dist/cjs/memory/supabase/memory-adapter.d.ts.map +1 -0
  114. package/dist/cjs/memory/supabase/memory-adapter.js +335 -0
  115. package/dist/cjs/memory/supabase/semantic.d.ts +44 -0
  116. package/dist/cjs/memory/supabase/semantic.d.ts.map +1 -0
  117. package/dist/cjs/memory/supabase/semantic.js +72 -0
  118. package/dist/cjs/memory/types.d.ts +231 -0
  119. package/dist/cjs/memory/types.d.ts.map +1 -0
  120. package/dist/cjs/memory/types.js +12 -0
  121. package/dist/cjs/persona.d.ts +326 -0
  122. package/dist/cjs/persona.d.ts.map +1 -0
  123. package/dist/cjs/persona.js +824 -0
  124. package/dist/cjs/types.d.ts +263 -0
  125. package/dist/cjs/types.d.ts.map +1 -0
  126. package/dist/cjs/types.js +15 -0
  127. package/dist/cjs/world/client.d.ts +36 -0
  128. package/dist/cjs/world/client.d.ts.map +1 -0
  129. package/dist/cjs/world/client.js +59 -0
  130. package/dist/cjs/world/errors.d.ts +9 -0
  131. package/dist/cjs/world/errors.d.ts.map +1 -0
  132. package/dist/cjs/world/errors.js +15 -0
  133. package/dist/cjs/world/index.d.ts +10 -0
  134. package/dist/cjs/world/index.d.ts.map +1 -0
  135. package/dist/cjs/world/index.js +16 -0
  136. package/dist/cjs/world/types.d.ts +101 -0
  137. package/dist/cjs/world/types.d.ts.map +1 -0
  138. package/dist/cjs/world/types.js +8 -0
  139. package/dist/cjs/world/village.d.ts +75 -0
  140. package/dist/cjs/world/village.d.ts.map +1 -0
  141. package/dist/cjs/world/village.js +278 -0
  142. package/dist/cjs/world/world-persona.d.ts +182 -0
  143. package/dist/cjs/world/world-persona.d.ts.map +1 -0
  144. package/dist/cjs/world/world-persona.js +192 -0
  145. package/dist/cjs/world/world.d.ts +41 -0
  146. package/dist/cjs/world/world.d.ts.map +1 -0
  147. package/dist/cjs/world/world.js +91 -0
  148. package/dist/esm/api-client.d.ts +23 -0
  149. package/dist/esm/api-client.d.ts.map +1 -0
  150. package/dist/esm/api-client.js +48 -0
  151. package/dist/esm/defaults/index.d.ts +8 -0
  152. package/dist/esm/defaults/index.d.ts.map +1 -0
  153. package/dist/esm/defaults/index.js +23 -0
  154. package/dist/esm/defaults/persona.json +17 -0
  155. package/dist/esm/embedding/cloudflare.d.ts +15 -0
  156. package/dist/esm/embedding/cloudflare.d.ts.map +1 -0
  157. package/dist/esm/embedding/cloudflare.js +13 -0
  158. package/dist/esm/embedding/cohere.d.ts +8 -0
  159. package/dist/esm/embedding/cohere.d.ts.map +1 -0
  160. package/dist/esm/embedding/cohere.js +28 -0
  161. package/dist/esm/embedding/index.d.ts +9 -0
  162. package/dist/esm/embedding/index.d.ts.map +1 -0
  163. package/dist/esm/embedding/index.js +4 -0
  164. package/dist/esm/embedding/local.d.ts +6 -0
  165. package/dist/esm/embedding/local.d.ts.map +1 -0
  166. package/dist/esm/embedding/local.js +25 -0
  167. package/dist/esm/embedding/openai.d.ts +9 -0
  168. package/dist/esm/embedding/openai.d.ts.map +1 -0
  169. package/dist/esm/embedding/openai.js +23 -0
  170. package/dist/esm/errors.d.ts +17 -0
  171. package/dist/esm/errors.d.ts.map +1 -0
  172. package/dist/esm/errors.js +17 -0
  173. package/dist/esm/events/console.d.ts +25 -0
  174. package/dist/esm/events/console.d.ts.map +1 -0
  175. package/dist/esm/events/console.js +37 -0
  176. package/dist/esm/events/types.d.ts +28 -0
  177. package/dist/esm/events/types.d.ts.map +1 -0
  178. package/dist/esm/events/types.js +12 -0
  179. package/dist/esm/events/webhook.d.ts +30 -0
  180. package/dist/esm/events/webhook.d.ts.map +1 -0
  181. package/dist/esm/events/webhook.js +75 -0
  182. package/dist/esm/generate/persona.d.ts +16 -0
  183. package/dist/esm/generate/persona.d.ts.map +1 -0
  184. package/dist/esm/generate/persona.js +39 -0
  185. package/dist/esm/generate/prompt.d.ts +7 -0
  186. package/dist/esm/generate/prompt.d.ts.map +1 -0
  187. package/dist/esm/generate/prompt.js +38 -0
  188. package/dist/esm/generate/schema.d.ts +32 -0
  189. package/dist/esm/generate/schema.d.ts.map +1 -0
  190. package/dist/esm/generate/schema.js +51 -0
  191. package/dist/esm/generated/index.d.ts +2 -0
  192. package/dist/esm/generated/index.d.ts.map +1 -0
  193. package/dist/esm/generated/index.js +1 -0
  194. package/dist/esm/index.d.ts +66 -0
  195. package/dist/esm/index.d.ts.map +1 -0
  196. package/dist/esm/index.js +49 -0
  197. package/dist/esm/llm/adapter.d.ts +61 -0
  198. package/dist/esm/llm/adapter.d.ts.map +1 -0
  199. package/dist/esm/llm/adapter.js +1 -0
  200. package/dist/esm/llm/resolve.d.ts +28 -0
  201. package/dist/esm/llm/resolve.d.ts.map +1 -0
  202. package/dist/esm/llm/resolve.js +17 -0
  203. package/dist/esm/llm/schema.d.ts +60 -0
  204. package/dist/esm/llm/schema.d.ts.map +1 -0
  205. package/dist/esm/llm/schema.js +69 -0
  206. package/dist/esm/llm/types.d.ts +24 -0
  207. package/dist/esm/llm/types.d.ts.map +1 -0
  208. package/dist/esm/llm/types.js +1 -0
  209. package/dist/esm/llm/vercel-ai/adapter.d.ts +29 -0
  210. package/dist/esm/llm/vercel-ai/adapter.d.ts.map +1 -0
  211. package/dist/esm/llm/vercel-ai/adapter.js +196 -0
  212. package/dist/esm/llm/vercel-ai/config.d.ts +9 -0
  213. package/dist/esm/llm/vercel-ai/config.d.ts.map +1 -0
  214. package/dist/esm/llm/vercel-ai/config.js +1 -0
  215. package/dist/esm/llm/vercel-ai/index.d.ts +9 -0
  216. package/dist/esm/llm/vercel-ai/index.d.ts.map +1 -0
  217. package/dist/esm/llm/vercel-ai/index.js +8 -0
  218. package/dist/esm/memory/cloudflare/index.d.ts +3 -0
  219. package/dist/esm/memory/cloudflare/index.d.ts.map +1 -0
  220. package/dist/esm/memory/cloudflare/index.js +1 -0
  221. package/dist/esm/memory/cloudflare/vectorize.d.ts +62 -0
  222. package/dist/esm/memory/cloudflare/vectorize.d.ts.map +1 -0
  223. package/dist/esm/memory/cloudflare/vectorize.js +51 -0
  224. package/dist/esm/memory/in-memory-semantic.d.ts +16 -0
  225. package/dist/esm/memory/in-memory-semantic.d.ts.map +1 -0
  226. package/dist/esm/memory/in-memory-semantic.js +53 -0
  227. package/dist/esm/memory/in-memory.d.ts +46 -0
  228. package/dist/esm/memory/in-memory.d.ts.map +1 -0
  229. package/dist/esm/memory/in-memory.js +111 -0
  230. package/dist/esm/memory/pinecone/index.d.ts +7 -0
  231. package/dist/esm/memory/pinecone/index.d.ts.map +1 -0
  232. package/dist/esm/memory/pinecone/index.js +3 -0
  233. package/dist/esm/memory/pinecone/memory-adapter.d.ts +62 -0
  234. package/dist/esm/memory/pinecone/memory-adapter.d.ts.map +1 -0
  235. package/dist/esm/memory/pinecone/memory-adapter.js +216 -0
  236. package/dist/esm/memory/pinecone/semantic.d.ts +44 -0
  237. package/dist/esm/memory/pinecone/semantic.d.ts.map +1 -0
  238. package/dist/esm/memory/pinecone/semantic.js +86 -0
  239. package/dist/esm/memory/recall.d.ts +58 -0
  240. package/dist/esm/memory/recall.d.ts.map +1 -0
  241. package/dist/esm/memory/recall.js +215 -0
  242. package/dist/esm/memory/semantic.d.ts +24 -0
  243. package/dist/esm/memory/semantic.d.ts.map +1 -0
  244. package/dist/esm/memory/semantic.js +1 -0
  245. package/dist/esm/memory/sqlite/index.d.ts +3 -0
  246. package/dist/esm/memory/sqlite/index.d.ts.map +1 -0
  247. package/dist/esm/memory/sqlite/index.js +1 -0
  248. package/dist/esm/memory/sqlite/memory-adapter.d.ts +58 -0
  249. package/dist/esm/memory/sqlite/memory-adapter.d.ts.map +1 -0
  250. package/dist/esm/memory/sqlite/memory-adapter.js +296 -0
  251. package/dist/esm/memory/sqlite/schema.d.ts +4 -0
  252. package/dist/esm/memory/sqlite/schema.d.ts.map +1 -0
  253. package/dist/esm/memory/sqlite/schema.js +86 -0
  254. package/dist/esm/memory/supabase/index.d.ts +7 -0
  255. package/dist/esm/memory/supabase/index.d.ts.map +1 -0
  256. package/dist/esm/memory/supabase/index.js +3 -0
  257. package/dist/esm/memory/supabase/memory-adapter.d.ts +67 -0
  258. package/dist/esm/memory/supabase/memory-adapter.d.ts.map +1 -0
  259. package/dist/esm/memory/supabase/memory-adapter.js +331 -0
  260. package/dist/esm/memory/supabase/semantic.d.ts +44 -0
  261. package/dist/esm/memory/supabase/semantic.d.ts.map +1 -0
  262. package/dist/esm/memory/supabase/semantic.js +68 -0
  263. package/dist/esm/memory/types.d.ts +231 -0
  264. package/dist/esm/memory/types.d.ts.map +1 -0
  265. package/dist/esm/memory/types.js +9 -0
  266. package/dist/esm/persona.d.ts +326 -0
  267. package/dist/esm/persona.d.ts.map +1 -0
  268. package/dist/esm/persona.js +787 -0
  269. package/dist/esm/types.d.ts +263 -0
  270. package/dist/esm/types.d.ts.map +1 -0
  271. package/dist/esm/types.js +11 -0
  272. package/dist/esm/world/client.d.ts +36 -0
  273. package/dist/esm/world/client.d.ts.map +1 -0
  274. package/dist/esm/world/client.js +52 -0
  275. package/dist/esm/world/errors.d.ts +9 -0
  276. package/dist/esm/world/errors.d.ts.map +1 -0
  277. package/dist/esm/world/errors.js +11 -0
  278. package/dist/esm/world/index.d.ts +10 -0
  279. package/dist/esm/world/index.d.ts.map +1 -0
  280. package/dist/esm/world/index.js +8 -0
  281. package/dist/esm/world/types.d.ts +101 -0
  282. package/dist/esm/world/types.d.ts.map +1 -0
  283. package/dist/esm/world/types.js +7 -0
  284. package/dist/esm/world/village.d.ts +75 -0
  285. package/dist/esm/world/village.d.ts.map +1 -0
  286. package/dist/esm/world/village.js +274 -0
  287. package/dist/esm/world/world-persona.d.ts +182 -0
  288. package/dist/esm/world/world-persona.d.ts.map +1 -0
  289. package/dist/esm/world/world-persona.js +188 -0
  290. package/dist/esm/world/world.d.ts +41 -0
  291. package/dist/esm/world/world.d.ts.map +1 -0
  292. package/dist/esm/world/world.js +87 -0
  293. package/package.json +207 -0
@@ -0,0 +1,62 @@
1
+ import type { EmbeddingAdapter } from '../types';
2
+ import type { SemanticMemory, SearchOptions, SearchResult } from '../semantic';
3
+ /**
4
+ * Minimal Cloudflare Vectorize binding types.
5
+ * Avoids requiring @cloudflare/workers-types at compile time.
6
+ */
7
+ export interface VectorizeIndex {
8
+ upsert(vectors: VectorizeVector[]): Promise<{
9
+ count: number;
10
+ }>;
11
+ query(vector: number[], options: {
12
+ topK: number;
13
+ returnMetadata?: 'all' | 'indexed' | 'none';
14
+ filter?: Record<string, unknown>;
15
+ }): Promise<{
16
+ matches: VectorizeMatch[];
17
+ }>;
18
+ deleteByIds(ids: string[]): Promise<{
19
+ count: number;
20
+ }>;
21
+ }
22
+ export interface VectorizeVector {
23
+ id: string;
24
+ values: number[];
25
+ metadata?: Record<string, unknown>;
26
+ }
27
+ export interface VectorizeMatch {
28
+ id: string;
29
+ score: number;
30
+ metadata?: Record<string, unknown>;
31
+ }
32
+ export interface CloudflareVectorizeMemoryOptions {
33
+ /** Cloudflare Vectorize index binding. */
34
+ index: VectorizeIndex;
35
+ /** Embedding provider (embed function + dimension). */
36
+ embedding: EmbeddingAdapter;
37
+ }
38
+ /**
39
+ * Cloudflare Vectorize-backed SemanticMemory.
40
+ *
41
+ * Stores original text in Vectorize metadata (10KB limit per vector,
42
+ * more than enough for chat messages).
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const memory = new CloudflareVectorizeMemory({
47
+ * index: env.VECTORIZE_INDEX,
48
+ * embedding: cloudflareAIEmbedding({ ai: env.AI }),
49
+ * });
50
+ * await memory.store('The user likes coffee', { userId: '123' });
51
+ * const results = await memory.search('beverage preferences');
52
+ * ```
53
+ */
54
+ export declare class CloudflareVectorizeMemory implements SemanticMemory {
55
+ private index;
56
+ private embedding;
57
+ constructor(options: CloudflareVectorizeMemoryOptions);
58
+ store(text: string, metadata?: Record<string, unknown>): Promise<string>;
59
+ search(query: string, options?: SearchOptions): Promise<SearchResult[]>;
60
+ delete(ids: string[]): Promise<void>;
61
+ }
62
+ //# sourceMappingURL=vectorize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectorize.d.ts","sourceRoot":"","sources":["../../../../src/memory/cloudflare/vectorize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,KAAK,CACH,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;QAC5C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,GACA,OAAO,CAAC;QAAE,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC,CAAC;IAC1C,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,gCAAgC;IAC/C,0CAA0C;IAC1C,KAAK,EAAE,cAAc,CAAC;IACtB,uDAAuD;IACvD,SAAS,EAAE,gBAAgB,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,yBAA0B,YAAW,cAAc;IAC9D,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,SAAS,CAAmB;gBAExB,OAAO,EAAE,gCAAgC;IAK/C,KAAK,CACT,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,OAAO,CAAC,MAAM,CAAC;IAOZ,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAqBpB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3C"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CloudflareVectorizeMemory = void 0;
4
+ /**
5
+ * Cloudflare Vectorize-backed SemanticMemory.
6
+ *
7
+ * Stores original text in Vectorize metadata (10KB limit per vector,
8
+ * more than enough for chat messages).
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const memory = new CloudflareVectorizeMemory({
13
+ * index: env.VECTORIZE_INDEX,
14
+ * embedding: cloudflareAIEmbedding({ ai: env.AI }),
15
+ * });
16
+ * await memory.store('The user likes coffee', { userId: '123' });
17
+ * const results = await memory.search('beverage preferences');
18
+ * ```
19
+ */
20
+ class CloudflareVectorizeMemory {
21
+ constructor(options) {
22
+ this.index = options.index;
23
+ this.embedding = options.embedding;
24
+ }
25
+ async store(text, metadata = {}) {
26
+ const id = crypto.randomUUID();
27
+ const values = await this.embedding.embed(text);
28
+ await this.index.upsert([{ id, values, metadata: { text, ...metadata } }]);
29
+ return id;
30
+ }
31
+ async search(query, options = {}) {
32
+ const topK = options.topK ?? 5;
33
+ const threshold = options.scoreThreshold ?? 0;
34
+ const vector = await this.embedding.embed(query);
35
+ const { matches } = await this.index.query(vector, {
36
+ topK,
37
+ returnMetadata: 'all',
38
+ filter: options.filter,
39
+ });
40
+ return matches
41
+ .filter((m) => m.score >= threshold)
42
+ .map((m) => ({
43
+ id: m.id,
44
+ text: m.metadata?.text ?? '',
45
+ score: m.score,
46
+ metadata: m.metadata ?? {},
47
+ }));
48
+ }
49
+ async delete(ids) {
50
+ if (ids.length > 0) {
51
+ await this.index.deleteByIds(ids);
52
+ }
53
+ }
54
+ }
55
+ exports.CloudflareVectorizeMemory = CloudflareVectorizeMemory;
@@ -0,0 +1,16 @@
1
+ import type { EmbeddingAdapter } from './types';
2
+ import type { SemanticMemory, SearchOptions, SearchResult } from './semantic';
3
+ /**
4
+ * In-memory SemanticMemory for local development and testing.
5
+ * Stores embeddings in a Map and performs brute-force cosine similarity search.
6
+ */
7
+ export declare class InMemorySemanticMemory implements SemanticMemory {
8
+ private embedding;
9
+ private entries;
10
+ private counter;
11
+ constructor(embedding: EmbeddingAdapter);
12
+ store(text: string, metadata?: Record<string, unknown>): Promise<string>;
13
+ search(query: string, options?: SearchOptions): Promise<SearchResult[]>;
14
+ delete(ids: string[]): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=in-memory-semantic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-semantic.d.ts","sourceRoot":"","sources":["../../../src/memory/in-memory-semantic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsB9E;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,cAAc;IAI/C,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,OAAO,CAAK;gBAEA,SAAS,EAAE,gBAAgB;IAEzC,KAAK,CACT,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,OAAO,CAAC,MAAM,CAAC;IAOZ,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAsBpB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3C"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InMemorySemanticMemory = void 0;
4
+ function cosineSimilarity(a, b) {
5
+ let dot = 0;
6
+ let normA = 0;
7
+ let normB = 0;
8
+ for (let i = 0; i < a.length; i++) {
9
+ dot += a[i] * b[i];
10
+ normA += a[i] * a[i];
11
+ normB += b[i] * b[i];
12
+ }
13
+ const denom = Math.sqrt(normA) * Math.sqrt(normB);
14
+ return denom === 0 ? 0 : dot / denom;
15
+ }
16
+ /**
17
+ * In-memory SemanticMemory for local development and testing.
18
+ * Stores embeddings in a Map and performs brute-force cosine similarity search.
19
+ */
20
+ class InMemorySemanticMemory {
21
+ constructor(embedding) {
22
+ this.embedding = embedding;
23
+ this.entries = new Map();
24
+ this.counter = 0;
25
+ }
26
+ async store(text, metadata = {}) {
27
+ const id = `mem_${++this.counter}`;
28
+ const vector = await this.embedding.embed(text);
29
+ this.entries.set(id, { id, text, embedding: vector, metadata });
30
+ return id;
31
+ }
32
+ async search(query, options = {}) {
33
+ const topK = options.topK ?? 5;
34
+ const threshold = options.scoreThreshold ?? 0;
35
+ const queryVec = await this.embedding.embed(query);
36
+ const scored = [];
37
+ for (const entry of this.entries.values()) {
38
+ const score = cosineSimilarity(queryVec, entry.embedding);
39
+ if (score >= threshold) {
40
+ scored.push({
41
+ id: entry.id,
42
+ text: entry.text,
43
+ score,
44
+ metadata: entry.metadata,
45
+ });
46
+ }
47
+ }
48
+ scored.sort((a, b) => b.score - a.score);
49
+ return scored.slice(0, topK);
50
+ }
51
+ async delete(ids) {
52
+ for (const id of ids) {
53
+ this.entries.delete(id);
54
+ }
55
+ }
56
+ }
57
+ exports.InMemorySemanticMemory = InMemorySemanticMemory;
@@ -0,0 +1,46 @@
1
+ import type { Episode } from '../types';
2
+ import type { EpisodeAdapter, EpisodeQuery, MemoryAdapter, RecallQuery, Reflection } from './types';
3
+ /**
4
+ * In-memory implementation of both EpisodeAdapter and MemoryAdapter.
5
+ *
6
+ * Useful for demos, testing, and prototyping. Data is lost on process exit
7
+ * unless explicitly serialized via `toJSON()` / `fromJSON()`.
8
+ *
9
+ * Can be used as:
10
+ * - `memory: { episodes: new InMemoryEpisodeAdapter() }` (split config)
11
+ * - `memory: new InMemoryEpisodeAdapter()` (single adapter)
12
+ */
13
+ export declare class InMemoryEpisodeAdapter implements EpisodeAdapter, MemoryAdapter {
14
+ private episodes;
15
+ private reflections;
16
+ saveEpisode(episode: Episode): Promise<void>;
17
+ /**
18
+ * Recall episodes by query.
19
+ * Accepts both `EpisodeQuery` (with `contextContains`) and `RecallQuery` (with `context`).
20
+ */
21
+ recall(query: EpisodeQuery | RecallQuery): Promise<Episode[]>;
22
+ getByIds(ids: string[]): Promise<Episode[]>;
23
+ saveReflection(reflection: Reflection): Promise<void>;
24
+ getReflections(sourceEntity?: string, limit?: number): Promise<Reflection[]>;
25
+ /** Export all data for persistence (save slots, etc.). */
26
+ toJSON(): {
27
+ episodes: Episode[];
28
+ reflections: Reflection[];
29
+ };
30
+ /** Restore data from a previous export. */
31
+ fromJSON(data: {
32
+ episodes?: Episode[];
33
+ reflections?: Reflection[];
34
+ }): void;
35
+ /** Number of stored episodes. */
36
+ get episodeCount(): number;
37
+ /** Number of stored reflections. */
38
+ get reflectionCount(): number;
39
+ /** Clear all data. */
40
+ clear(): void;
41
+ }
42
+ /** @deprecated Use InMemoryEpisodeAdapter */
43
+ export declare const InMemoryEpisodeStore: typeof InMemoryEpisodeAdapter;
44
+ /** @deprecated Use InMemoryEpisodeAdapter */
45
+ export type InMemoryEpisodeStore = InMemoryEpisodeAdapter;
46
+ //# sourceMappingURL=in-memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory.d.ts","sourceRoot":"","sources":["../../../src/memory/in-memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpG;;;;;;;;;GASG;AACH,qBAAa,sBAAuB,YAAW,cAAc,EAAE,aAAa;IAC1E,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,WAAW,CAAoB;IAEjC,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IASlD;;;OAGG;IACG,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA0C7D,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAK3C,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAelF,0DAA0D;IAC1D,MAAM,IAAI;QAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAAC,WAAW,EAAE,UAAU,EAAE,CAAA;KAAE;IAO5D,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;KAAE,GAAG,IAAI;IAK1E,iCAAiC;IACjC,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,oCAAoC;IACpC,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,sBAAsB;IACtB,KAAK,IAAI,IAAI;CAId;AAED,6CAA6C;AAC7C,eAAO,MAAM,oBAAoB,+BAAyB,CAAC;AAC3D,6CAA6C;AAC7C,MAAM,MAAM,oBAAoB,GAAG,sBAAsB,CAAC"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InMemoryEpisodeStore = exports.InMemoryEpisodeAdapter = void 0;
4
+ /**
5
+ * In-memory implementation of both EpisodeAdapter and MemoryAdapter.
6
+ *
7
+ * Useful for demos, testing, and prototyping. Data is lost on process exit
8
+ * unless explicitly serialized via `toJSON()` / `fromJSON()`.
9
+ *
10
+ * Can be used as:
11
+ * - `memory: { episodes: new InMemoryEpisodeAdapter() }` (split config)
12
+ * - `memory: new InMemoryEpisodeAdapter()` (single adapter)
13
+ */
14
+ class InMemoryEpisodeAdapter {
15
+ constructor() {
16
+ this.episodes = [];
17
+ this.reflections = [];
18
+ }
19
+ async saveEpisode(episode) {
20
+ const idx = this.episodes.findIndex(e => e.id === episode.id);
21
+ if (idx >= 0) {
22
+ this.episodes[idx] = episode;
23
+ }
24
+ else {
25
+ this.episodes.push(episode);
26
+ }
27
+ }
28
+ /**
29
+ * Recall episodes by query.
30
+ * Accepts both `EpisodeQuery` (with `contextContains`) and `RecallQuery` (with `context`).
31
+ */
32
+ async recall(query) {
33
+ let results = [...this.episodes];
34
+ if (query.sourceEntity) {
35
+ results = results.filter(e => e.sourceEntity === query.sourceEntity);
36
+ }
37
+ // Support both EpisodeQuery.contextContains and RecallQuery.context
38
+ const contextSearch = ('contextContains' in query ? query.contextContains : undefined)
39
+ ?? ('context' in query ? query.context : undefined);
40
+ if (contextSearch) {
41
+ const lower = contextSearch.toLowerCase();
42
+ results = results.filter(e => e.context?.toLowerCase().includes(lower));
43
+ }
44
+ if (query.type !== undefined) {
45
+ const types = Array.isArray(query.type) ? query.type : [query.type];
46
+ results = results.filter(e => e.type !== undefined && types.includes(e.type));
47
+ }
48
+ if (query.minImportance !== undefined) {
49
+ results = results.filter(e => e.importance >= query.minImportance);
50
+ }
51
+ if (query.timeRange) {
52
+ const [from, to] = query.timeRange;
53
+ results = results.filter(e => e.timestamp >= from && e.timestamp <= to);
54
+ }
55
+ if ('valenceRange' in query && query.valenceRange) {
56
+ const [min, max] = query.valenceRange;
57
+ results = results.filter(e => e.emotionSnapshot.V >= min && e.emotionSnapshot.V <= max);
58
+ }
59
+ // Sort by timestamp descending (most recent first)
60
+ results.sort((a, b) => b.timestamp - a.timestamp);
61
+ const limit = query.limit ?? 10;
62
+ return results.slice(0, limit);
63
+ }
64
+ async getByIds(ids) {
65
+ const idSet = new Set(ids);
66
+ return this.episodes.filter(e => idSet.has(e.id));
67
+ }
68
+ async saveReflection(reflection) {
69
+ const idx = this.reflections.findIndex(r => r.id === reflection.id);
70
+ if (idx >= 0) {
71
+ this.reflections[idx] = reflection;
72
+ }
73
+ else {
74
+ this.reflections.push(reflection);
75
+ }
76
+ }
77
+ async getReflections(sourceEntity, limit) {
78
+ let results = [...this.reflections];
79
+ if (sourceEntity) {
80
+ results = results.filter(r => r.sourceEntity === sourceEntity);
81
+ }
82
+ // Sort by timestamp descending
83
+ results.sort((a, b) => b.timestamp - a.timestamp);
84
+ return results.slice(0, limit ?? 10);
85
+ }
86
+ // ── Serialization helpers ──
87
+ /** Export all data for persistence (save slots, etc.). */
88
+ toJSON() {
89
+ return {
90
+ episodes: [...this.episodes],
91
+ reflections: [...this.reflections],
92
+ };
93
+ }
94
+ /** Restore data from a previous export. */
95
+ fromJSON(data) {
96
+ this.episodes = data.episodes ? [...data.episodes] : [];
97
+ this.reflections = data.reflections ? [...data.reflections] : [];
98
+ }
99
+ /** Number of stored episodes. */
100
+ get episodeCount() {
101
+ return this.episodes.length;
102
+ }
103
+ /** Number of stored reflections. */
104
+ get reflectionCount() {
105
+ return this.reflections.length;
106
+ }
107
+ /** Clear all data. */
108
+ clear() {
109
+ this.episodes = [];
110
+ this.reflections = [];
111
+ }
112
+ }
113
+ exports.InMemoryEpisodeAdapter = InMemoryEpisodeAdapter;
114
+ /** @deprecated Use InMemoryEpisodeAdapter */
115
+ exports.InMemoryEpisodeStore = InMemoryEpisodeAdapter;
@@ -0,0 +1,7 @@
1
+ export { PineconeSemanticMemory } from './semantic';
2
+ export type { PineconeSemanticMemoryOptions } from './semantic';
3
+ /** @deprecated Use PineconeSemanticMemory */
4
+ export { PineconeMemoryAdapter } from './memory-adapter';
5
+ /** @deprecated Use PineconeSemanticMemoryOptions */
6
+ export type { PineconeMemoryAdapterOptions } from './memory-adapter';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/memory/pinecone/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAEhE,6CAA6C;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,oDAAoD;AACpD,YAAY,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PineconeMemoryAdapter = exports.PineconeSemanticMemory = void 0;
4
+ var semantic_1 = require("./semantic");
5
+ Object.defineProperty(exports, "PineconeSemanticMemory", { enumerable: true, get: function () { return semantic_1.PineconeSemanticMemory; } });
6
+ /** @deprecated Use PineconeSemanticMemory */
7
+ var memory_adapter_1 = require("./memory-adapter");
8
+ Object.defineProperty(exports, "PineconeMemoryAdapter", { enumerable: true, get: function () { return memory_adapter_1.PineconeMemoryAdapter; } });
@@ -0,0 +1,62 @@
1
+ import type { MemoryAdapter, Episode, Reflection, RecallQuery, SemanticRecallOptions, EpisodePatch, CountQuery, EmbeddingAdapter } from '../types';
2
+ export interface PineconeMemoryAdapterOptions {
3
+ /** Pinecone API key. */
4
+ apiKey: string;
5
+ /** Pinecone index name. */
6
+ indexName: string;
7
+ /** Pinecone namespace. Default: 'default'. */
8
+ namespace?: string;
9
+ /** Embedding provider (embed function + dimension). */
10
+ embedding: EmbeddingAdapter;
11
+ }
12
+ /**
13
+ * Pinecone-backed MemoryAdapter combining in-memory arrays (RDB) with
14
+ * Pinecone vector search (semanticRecall).
15
+ *
16
+ * RDB operations (saveEpisode, recall, saveReflection, getReflections,
17
+ * getByIds, countEpisodes, updateEpisode, deleteEpisode, expireEpisodes)
18
+ * all operate on in-memory arrays, identical to InMemoryAdapter.
19
+ *
20
+ * Vector search (semanticRecall) delegates to Pinecone after embedding
21
+ * the query text via the provided EmbeddingAdapter.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const memory = new PineconeMemoryAdapter({
26
+ * apiKey: process.env.PINECONE_API_KEY!,
27
+ * indexName: 'molroo-memory',
28
+ * namespace: 'world-123',
29
+ * embedding: openaiEmbedding({ apiKey: '...' }),
30
+ * });
31
+ * await memory.init();
32
+ * ```
33
+ */
34
+ export declare class PineconeMemoryAdapter implements MemoryAdapter {
35
+ private client;
36
+ private pcIndex;
37
+ private namespace;
38
+ private indexName;
39
+ private embedding;
40
+ private initialized;
41
+ private episodes;
42
+ private reflections;
43
+ constructor(options: PineconeMemoryAdapterOptions);
44
+ /**
45
+ * Initialize the adapter. Must be called before use.
46
+ * Validates embedding dimension against Pinecone index.
47
+ */
48
+ init(): Promise<void>;
49
+ private ensureInitialized;
50
+ private ns;
51
+ saveEpisode(episode: Episode): Promise<void>;
52
+ recall(query: RecallQuery): Promise<Episode[]>;
53
+ saveReflection(reflection: Reflection): Promise<void>;
54
+ getReflections(sourceEntity?: string): Promise<Reflection[]>;
55
+ semanticRecall(query: string, options?: SemanticRecallOptions): Promise<Episode[]>;
56
+ getByIds(ids: string[]): Promise<Episode[]>;
57
+ countEpisodes(query: CountQuery): Promise<number>;
58
+ updateEpisode(id: string, patch: EpisodePatch): Promise<void>;
59
+ deleteEpisode(id: string): Promise<void>;
60
+ expireEpisodes(before: number, minImportance?: number): Promise<number>;
61
+ }
62
+ //# sourceMappingURL=memory-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-adapter.d.ts","sourceRoot":"","sources":["../../../../src/memory/pinecone/memory-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,OAAO,EACP,UAAU,EACV,WAAW,EACX,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,4BAA4B;IAC3C,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,SAAS,EAAE,gBAAgB,CAAC;CAC7B;AASD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,qBAAsB,YAAW,aAAa;IACzD,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,WAAW,CAAoB;gBAE3B,OAAO,EAAE,4BAA4B;IAOjD;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,EAAE;IAMJ,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB5C,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAuC9C,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAU5D,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,OAAO,EAAE,CAAC;IAqCf,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAM3C,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBjD,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxC,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC;CA2BnB"}