@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
@@ -11,22 +11,7 @@ exports.WorldPersona = void 0;
11
11
  * 제공하되, 내부적으로 World API 엔드포인트를 사용한다.
12
12
  */
13
13
  const client_1 = require("./client");
14
- // ---------------------------------------------------------------------------
15
- // Internal helpers
16
- // ---------------------------------------------------------------------------
17
- function toApiAppraisal(v) {
18
- return {
19
- goal_relevance: v.goalRelevance,
20
- goal_congruence: v.goalCongruence,
21
- expectedness: v.expectedness,
22
- controllability: v.controllability,
23
- agency: v.agency,
24
- norm_compatibility: v.normCompatibility,
25
- internal_standards: v.internalStandards,
26
- adjustment_potential: v.adjustmentPotential,
27
- urgency: v.urgency,
28
- };
29
- }
14
+ const appraisal_1 = require("../shared/appraisal");
30
15
  class WorldPersona {
31
16
  /** @internal — use World.persona() instead. */
32
17
  constructor(client, worldId, personaId, options) {
@@ -62,7 +47,10 @@ class WorldPersona {
62
47
  /** Get current emotion/mood/somatic state. */
63
48
  async getState() {
64
49
  const detail = await this.getDetail();
65
- return detail.state ?? { emotion: { vad: { V: 0, A: 0.5, D: 0 } } };
50
+ return detail.state ?? {
51
+ emotion: { vad: { V: 0, A: 0.5, D: 0 }, label: 'calm', secondary_label: null, intensity: 0 },
52
+ somatic: [],
53
+ };
66
54
  }
67
55
  /** Get speaking style from persona config (identity.speakingStyle). */
68
56
  async getSpeakingStyle() {
@@ -91,7 +79,7 @@ class WorldPersona {
91
79
  action_name: action || undefined,
92
80
  action_label: action || undefined,
93
81
  stimulus_description: options?.stimulusDescription,
94
- appraisal_vector: options?.appraisal ? toApiAppraisal(options.appraisal) : undefined,
82
+ appraisal_vector: options?.appraisal ? (0, appraisal_1.toWireAppraisal)(options.appraisal) : undefined,
95
83
  actor_id: options?.actor,
96
84
  actor_type: options?.actorType,
97
85
  },
@@ -4,7 +4,7 @@ import { MolrooPersona } from '../persona';
4
4
  import type { PersonaSummary } from '../persona';
5
5
  import type { PersonaConfigData } from '../types';
6
6
  import type { LLMInput } from '../llm/resolve';
7
- import type { MemoryAdapter, MemoryConfig, RecallLimits } from '../memory/types';
7
+ import type { MemoryAdapter, RecallLimits } from '../memory/types';
8
8
  import type { EventAdapter } from '../events/types';
9
9
  import type { WorldData, CreateWorldOptions, PaginationOptions } from './types';
10
10
  export interface MolrooOptions {
@@ -15,7 +15,7 @@ export interface MolrooOptions {
15
15
  export interface PersonaOptions {
16
16
  llm?: LLMInput;
17
17
  engineLlm?: LLMInput;
18
- memory?: MemoryAdapter | MemoryConfig;
18
+ memory?: MemoryAdapter;
19
19
  recall?: RecallLimits;
20
20
  events?: EventAdapter;
21
21
  }
@@ -44,7 +44,30 @@ export declare class Molroo {
44
44
  private readonly _apiKey;
45
45
  constructor(options: MolrooOptions);
46
46
  /**
47
- * Create a new persona and return a connected {@link MolrooPersona} instance.
47
+ * Create a new persona from a natural language description.
48
+ * Uses LLM to generate HEXACO personality configuration.
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * const sera = await molroo.createPersona(
53
+ * 'A kind and curious barista who remembers customer names',
54
+ * { llm: openaiAdapter }
55
+ * );
56
+ * ```
57
+ */
58
+ createPersona(description: string, options: PersonaOptions & {
59
+ llm: LLMInput;
60
+ }): Promise<MolrooPersona>;
61
+ /**
62
+ * Create a new persona with explicit configuration.
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * const sera = await molroo.createPersona(
67
+ * { identity: { name: 'Sera' }, personality: { O: 0.8, C: 0.6, E: 0.7, A: 0.5, N: 0.3, H: 0.6 } },
68
+ * { llm: openaiAdapter }
69
+ * );
70
+ * ```
48
71
  */
49
72
  createPersona(personaConfig: PersonaConfigData, options?: PersonaOptions): Promise<MolrooPersona>;
50
73
  /**
@@ -52,8 +75,8 @@ export declare class Molroo {
52
75
  */
53
76
  connectPersona(personaId: string, options?: PersonaOptions): Promise<MolrooPersona>;
54
77
  /**
55
- * Generate a persona from a natural-language description, create it on the API,
56
- * and return a connected {@link MolrooPersona} instance.
78
+ * Generate a persona from a natural-language description.
79
+ * @deprecated Use `createPersona(description, options)` instead.
57
80
  */
58
81
  generatePersona(description: string, options: PersonaOptions & {
59
82
  llm: LLMInput;
@@ -1 +1 @@
1
- {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../../src/world/world.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAiCjB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IACtC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAQD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,MAAM;IACjB,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,aAAa;IAalC;;OAEG;IACG,aAAa,CACjB,aAAa,EAAE,iBAAiB,EAChC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC;IAOzB;;OAEG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC;IAOzB;;;OAGG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,GAAG;QAAE,GAAG,EAAE,QAAQ,CAAA;KAAE,GAC1C,OAAO,CAAC,aAAa,CAAC;IAOzB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAWlF;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAwB9D;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAmB1C;;;OAGG;IACG,UAAU,CACd,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC;QAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CA6B/D"}
1
+ {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../../src/world/world.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAiCjB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAQD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,MAAM;IACjB,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,aAAa;IAalC;;;;;;;;;;;OAWG;IACG,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,GAAG;QAAE,GAAG,EAAE,QAAQ,CAAA;KAAE,GAC1C,OAAO,CAAC,aAAa,CAAC;IAEzB;;;;;;;;;;OAUG;IACG,aAAa,CACjB,aAAa,EAAE,iBAAiB,EAChC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC;IAuBzB;;OAEG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC;IAOzB;;;OAGG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,GAAG;QAAE,GAAG,EAAE,QAAQ,CAAA;KAAE,GAC1C,OAAO,CAAC,aAAa,CAAC;IAIzB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAWlF;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAwB9D;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAmB1C;;;OAGG;IACG,UAAU,CACd,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC;QAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CA6B/D"}
@@ -52,14 +52,16 @@ class Molroo {
52
52
  apiKey: this._apiKey,
53
53
  });
54
54
  }
55
- // ---------------------------------------------------------------------------
56
- // Persona
57
- // ---------------------------------------------------------------------------
58
- /**
59
- * Create a new persona and return a connected {@link MolrooPersona} instance.
60
- */
61
- async createPersona(personaConfig, options) {
62
- return persona_1.MolrooPersona.create({ baseUrl: this._baseUrl, apiKey: this._apiKey, ...options }, personaConfig);
55
+ async createPersona(input, options) {
56
+ if (typeof input === 'string') {
57
+ // Description path - requires llm
58
+ if (!options?.llm) {
59
+ throw new Error('LLM adapter is required when using description string');
60
+ }
61
+ return persona_1.MolrooPersona.create({ baseUrl: this._baseUrl, apiKey: this._apiKey, ...options, llm: options.llm }, input);
62
+ }
63
+ // Config path
64
+ return persona_1.MolrooPersona.create({ baseUrl: this._baseUrl, apiKey: this._apiKey, ...options }, input);
63
65
  }
64
66
  /**
65
67
  * Connect to an existing persona by ID.
@@ -68,11 +70,11 @@ class Molroo {
68
70
  return persona_1.MolrooPersona.connect({ baseUrl: this._baseUrl, apiKey: this._apiKey, ...options }, personaId);
69
71
  }
70
72
  /**
71
- * Generate a persona from a natural-language description, create it on the API,
72
- * and return a connected {@link MolrooPersona} instance.
73
+ * Generate a persona from a natural-language description.
74
+ * @deprecated Use `createPersona(description, options)` instead.
73
75
  */
74
76
  async generatePersona(description, options) {
75
- return persona_1.MolrooPersona.generate({ baseUrl: this._baseUrl, apiKey: this._apiKey, ...options }, description);
77
+ return this.createPersona(description, options);
76
78
  }
77
79
  /**
78
80
  * List all personas for the authenticated tenant.
@@ -1,4 +1,5 @@
1
1
  import type { paths } from './generated/api';
2
+ import { unwrap } from './shared/client-factory';
2
3
  /**
3
4
  * Create a typed openapi-fetch client for the molroo API.
4
5
  *
@@ -8,16 +9,5 @@ import type { paths } from './generated/api';
8
9
  */
9
10
  export declare function createApiClient(baseUrl: string, apiKey: string): import("openapi-fetch").Client<paths, `${string}/${string}`>;
10
11
  export type ApiClient = ReturnType<typeof createApiClient>;
11
- /**
12
- * Unwrap the `{ result: T }` envelope from API responses.
13
- *
14
- * Many API endpoints return `ResultWrapper` (typed as `{ result?: unknown }`)
15
- * in the OpenAPI spec. This helper extracts the `result` field and casts it
16
- * to the expected type.
17
- *
18
- * For endpoints with properly-typed response schemas, use `data.result` directly.
19
- */
20
- export declare function unwrap<T>(data: {
21
- result?: unknown;
22
- } | undefined): T;
12
+ export { unwrap };
23
13
  //# sourceMappingURL=api-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/api-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAwB7C;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gEAU9D;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAE3D;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GAAG,CAAC,CAEnE"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAqB,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEpE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gEAE9D;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -1,21 +1,5 @@
1
- import createClient from 'openapi-fetch';
2
1
  import { MolrooApiError } from './errors';
3
- /**
4
- * Middleware: throw MolrooApiError on non-OK responses.
5
- *
6
- * Reads the error body `{ error: { code, message } }` and converts it
7
- * into a typed MolrooApiError before openapi-fetch processes the response.
8
- */
9
- const errorMiddleware = {
10
- async onResponse({ response }) {
11
- if (!response.ok) {
12
- const body = await response.clone().json().catch(() => ({}));
13
- const err = body;
14
- throw new MolrooApiError(err.error?.message ?? `API error ${response.status}`, err.error?.code ?? 'UNKNOWN', response.status);
15
- }
16
- // Return undefined to let openapi-fetch handle the response unchanged
17
- },
18
- };
2
+ import { createTypedClient, unwrap } from './shared/client-factory';
19
3
  /**
20
4
  * Create a typed openapi-fetch client for the molroo API.
21
5
  *
@@ -24,25 +8,6 @@ const errorMiddleware = {
24
8
  * @returns A fully-typed openapi-fetch client instance.
25
9
  */
26
10
  export function createApiClient(baseUrl, apiKey) {
27
- const client = createClient({
28
- baseUrl: baseUrl.replace(/\/$/, ''),
29
- headers: {
30
- 'Content-Type': 'application/json',
31
- 'X-API-Key': apiKey,
32
- },
33
- });
34
- client.use(errorMiddleware);
35
- return client;
36
- }
37
- /**
38
- * Unwrap the `{ result: T }` envelope from API responses.
39
- *
40
- * Many API endpoints return `ResultWrapper` (typed as `{ result?: unknown }`)
41
- * in the OpenAPI spec. This helper extracts the `result` field and casts it
42
- * to the expected type.
43
- *
44
- * For endpoints with properly-typed response schemas, use `data.result` directly.
45
- */
46
- export function unwrap(data) {
47
- return (data?.result ?? {});
11
+ return createTypedClient({ baseUrl, apiKey, ErrorClass: MolrooApiError });
48
12
  }
13
+ export { unwrap };
@@ -1,17 +1,2 @@
1
- /**
2
- * Error thrown when the molroo API returns a non-OK response.
3
- *
4
- * Contains the API error code and HTTP status for programmatic handling.
5
- */
6
- export declare class MolrooApiError extends Error {
7
- /** Machine-readable error code (e.g., 'ENTITY_NOT_FOUND', 'UNAUTHORIZED'). */
8
- code: string;
9
- /** HTTP status code. */
10
- status: number;
11
- constructor(message: string,
12
- /** Machine-readable error code (e.g., 'ENTITY_NOT_FOUND', 'UNAUTHORIZED'). */
13
- code: string,
14
- /** HTTP status code. */
15
- status: number);
16
- }
1
+ export { MolrooApiError } from './shared/errors';
17
2
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,KAAK;IAGrC,8EAA8E;IACvE,IAAI,EAAE,MAAM;IACnB,wBAAwB;IACjB,MAAM,EAAE,MAAM;gBAJrB,OAAO,EAAE,MAAM;IACf,8EAA8E;IACvE,IAAI,EAAE,MAAM;IACnB,wBAAwB;IACjB,MAAM,EAAE,MAAM;CAKxB"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,17 +1 @@
1
- /**
2
- * Error thrown when the molroo API returns a non-OK response.
3
- *
4
- * Contains the API error code and HTTP status for programmatic handling.
5
- */
6
- export class MolrooApiError extends Error {
7
- constructor(message,
8
- /** Machine-readable error code (e.g., 'ENTITY_NOT_FOUND', 'UNAUTHORIZED'). */
9
- code,
10
- /** HTTP status code. */
11
- status) {
12
- super(message);
13
- this.code = code;
14
- this.status = status;
15
- this.name = 'MolrooApiError';
16
- }
17
- }
1
+ export { MolrooApiError } from './shared/errors';
@@ -1,28 +1,21 @@
1
1
  /**
2
- * Event Adapter interface for molroo SDK.
3
- *
4
- * Abstracts event emission so consumers can:
5
- * - Log emotion changes, relationship updates, stage transitions
6
- * - Send webhooks, push notifications, analytics events
7
- * - Build reactive UIs that respond to persona state changes
8
- *
9
- * Events are derived from API response data (AgentResponse fields).
10
- * Implementations are provided by the consumer — SDK only defines the interface.
2
+ * Event adapter interface for emitting persona-scoped events.
3
+ * Consumers can implement this to react to emotion changes, memory events, etc.
11
4
  */
12
- /** Persona-scoped event types — emitted from persona state changes. */
13
- export type PersonaEventType = 'emotion_changed' | 'relationship_changed' | 'memory_consolidated' | 'reflection_generated' | 'stage_transition' | 'mask_exposure' | 'goal_changed';
14
- export type SDKEventType = PersonaEventType;
15
- export interface SDKEvent {
16
- type: SDKEventType;
17
- /** Present for persona-scoped events. Absent for world-scoped events. */
18
- personaId?: string;
19
- timestamp: number;
20
- payload: Record<string, unknown>;
21
- }
22
5
  export interface EventAdapter {
23
- /** Emit a single event. */
24
6
  emit(event: SDKEvent): Promise<void>;
25
- /** Emit multiple events in batch. Optional — falls back to sequential emit(). */
7
+ /** Optional batch emit for efficiency. Falls back to individual emit() if not provided. */
26
8
  emitBatch?(events: SDKEvent[]): Promise<void>;
27
9
  }
10
+ /** Base event shape. */
11
+ export interface SDKEvent {
12
+ type: string;
13
+ personaId?: string;
14
+ timestamp: number;
15
+ payload?: Record<string, unknown>;
16
+ }
17
+ /** Event type categories. */
18
+ export type SDKEventType = 'emotion_changed' | 'memory_consolidated' | 'reflection_generated' | PersonaEventType;
19
+ /** Persona-specific event types. */
20
+ export type PersonaEventType = 'chat' | 'perceive' | 'emotion_update' | 'state_change' | 'memory_created' | 'reflection_created';
28
21
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/events/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,uEAAuE;AACvE,MAAM,MAAM,gBAAgB,GACxB,iBAAiB,GACjB,sBAAsB,GACtB,qBAAqB,GACrB,sBAAsB,GACtB,kBAAkB,GAClB,eAAe,GACf,cAAc,CAAC;AAEnB,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC,iFAAiF;IACjF,SAAS,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/events/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,2FAA2F;IAC3F,SAAS,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED,wBAAwB;AACxB,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,6BAA6B;AAC7B,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,qBAAqB,GAAG,sBAAsB,GAAG,gBAAgB,CAAC;AAEjH,oCAAoC;AACpC,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,UAAU,GACV,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,oBAAoB,CAAC"}
@@ -1,12 +1 @@
1
- /**
2
- * Event Adapter interface for molroo SDK.
3
- *
4
- * Abstracts event emission so consumers can:
5
- * - Log emotion changes, relationship updates, stage transitions
6
- * - Send webhooks, push notifications, analytics events
7
- * - Build reactive UIs that respond to persona state changes
8
- *
9
- * Events are derived from API response data (AgentResponse fields).
10
- * Implementations are provided by the consumer — SDK only defines the interface.
11
- */
12
1
  export {};
@@ -1,68 +1,46 @@
1
1
  /**
2
2
  * @molroo-io/sdk - Thin Client SDK for molroo emotion engine
3
3
  *
4
- * ## Boundary — this is where LLM orchestration lives:
5
- * - **LLM calls happen HERE** — consumer's API key, consumer's model.
6
- * - **Appraisal generation happens HERE** — LLM produces appraisal, SDK sends to API.
7
- * - **Memory recall happens HERE** — episodic/semantic/reflections from client stores.
8
- * - **Prompt composition**: API returns persona fragment → SDK adds memory context.
4
+ * ## Quick Start
9
5
  *
10
- * The API/engine never call LLM. This SDK is the bridge.
11
- *
12
- * @example
13
6
  * ```typescript
14
- * import { MolrooPersona } from '@molroo-io/sdk';
15
- * import { createVercelAIAdapter } from '@molroo-io/sdk';
7
+ * import { Molroo } from '@molroo-io/sdk';
8
+ * import { createOpenAI } from '@ai-sdk/openai';
9
+ *
10
+ * const molroo = new Molroo({ apiKey: 'mk_live_...' });
11
+ *
12
+ * const openai = createOpenAI({ apiKey: process.env.OPENAI_API_KEY! });
16
13
  *
17
- * const llm = createVercelAIAdapter({
18
- * provider: 'openai',
19
- * apiKey: process.env.OPENAI_API_KEY!,
20
- * });
14
+ * // Create persona from description
15
+ * const sera = await molroo.createPersona(
16
+ * 'A kind and curious barista named Sera',
17
+ * { llm: openai }
18
+ * );
21
19
  *
22
- * const persona = await MolrooPersona.create({
23
- * baseUrl: 'https://api.molroo.io',
24
- * apiKey: 'your_api_key',
25
- * llm,
26
- * }, {
27
- * config: { identity: { name: 'Sera' }, personality: { O: 0.7, C: 0.6, E: 0.8, A: 0.5, N: 0.3, H: 0.6 } },
28
- * });
20
+ * const result = await sera.chat('Hello!');
21
+ * ```
22
+ *
23
+ * ## Advanced: World Simulation
29
24
  *
30
- * const result = await persona.chat('Hello!');
25
+ * ```typescript
26
+ * const world = await molroo.createWorld({ name: 'Cafe' });
27
+ * const sera = await molroo.createPersona('Barista Sera', { llm: openai });
28
+ * await world.addPersona({ personaConfigId: sera.id, config: {...} });
31
29
  * ```
32
30
  */
33
31
  export { Molroo } from './world/world';
34
32
  export type { MolrooOptions, PersonaOptions } from './world/world';
35
- export { MolrooPersona } from './persona';
36
- export { MolrooApiError } from './types';
33
+ export { MolrooApiError, WorldApiError } from './shared/errors';
34
+ export { NEUTRAL_APPRAISAL, toWireAppraisal, fromWireAppraisal } from './shared/appraisal';
35
+ export type { Appraisal } from './shared/appraisal';
37
36
  export type { LLMAdapter, Message, GenerateTextOptions, GenerateObjectOptions, } from './llm/adapter';
38
- export type { LLMShorthand, LLMInput } from './llm/resolve';
39
- export { VercelAIAdapter, createVercelAIAdapter } from './llm/vercel-ai';
40
- export type { VercelAIConfig } from './llm/vercel-ai';
41
- export type { MemoryAdapter, RecallQuery, SemanticRecallOptions, RecallLimits, } from './memory/types';
42
- export { isMemoryConfig } from './memory/types';
43
- export type { EpisodeAdapter, EpisodeQuery, SemanticAdapter, SemanticEntry, SemanticQuery, SemanticResult, EmbeddingAdapter, MemoryConfig, Reflection, } from './memory/types';
44
- export { InMemoryEpisodeAdapter } from './memory/in-memory';
45
- export type { RecallConfig } from './memory/recall';
46
- export type { SemanticMemory, SearchOptions, SearchResult } from './memory/semantic';
47
- export { InMemorySemanticMemory } from './memory/in-memory-semantic';
48
- export type { EpisodeStore, SemanticStore, EmbeddingProvider } from './memory/types';
49
- export { InMemoryEpisodeStore } from './memory/in-memory';
50
- export type { EventAdapter, SDKEvent, SDKEventType, PersonaEventType } from './events/types';
51
- export { ConsoleEventAdapter } from './events/console';
52
- export type { ConsoleEventAdapterOptions } from './events/console';
53
- export { WebhookEventAdapter } from './events/webhook';
54
- export type { WebhookEventAdapterOptions } from './events/webhook';
55
- export { generatePersona } from './generate/persona';
56
- export { GeneratePersonaSchema } from './generate/schema';
57
- export type { GeneratePersonaSchemaOutput } from './generate/schema';
58
- export type { MolrooPersonaConfig, PersonaSummary, PersonaState, PersonaChatResult, } from './persona';
37
+ export type { LLMInput } from './llm/resolve';
38
+ export type { MemoryAdapter, RecallQuery, SemanticRecallOptions, RecallLimits, Reflection, } from './memory/types';
39
+ export type { PersonaSummary, PersonaState, PersonaChatResult, } from './persona';
59
40
  export type { InterlocutorContext, PerceiveOptions, PerceiveEvent, PerceiveContext, } from './types';
60
41
  export type { AgentResponse, VAD, Velocity, AppraisalVector, State, SoulStage, CatastropheState, MetacogState, AffectDynamicsState, InterpersonalState, RegulationState, RegulationStrategy, RegulationPhase, ActiveRegulation, RegulationRecord, EffectivenessRecord, NeedState, Episode, SocialUpdate, ReflectionPrompt, } from './types';
61
42
  export type { PersonaSnapshot, PersonaConfigData, PersonalityTraits, Identity, Goal, MotivationContext, } from './types';
62
43
  export type { ApiResponse, ApiErrorResponse, PersonaDynamicState, } from './types';
63
- export { AppraisalVectorSchema, LLMResponseSchema, LLMResponseWithToolsSchema, } from './llm/schema';
64
- export type { LLMResponseOutput, LLMResponseWithToolsOutput } from './llm/schema';
65
44
  export type { LLMPrompt, LLMResponse, } from './llm/types';
66
- export type { ChatMessage } from './llm/types';
67
45
  export { DEFAULT_PERSONA, withDefaults } from './defaults';
68
46
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3F,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,YAAY,EACV,UAAU,EACV,OAAO,EACP,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,YAAY,EACV,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,YAAY,EACZ,UAAU,GACX,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,eAAe,GAChB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,aAAa,EACb,GAAG,EACH,QAAQ,EACR,eAAe,EACf,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,OAAO,EACP,YAAY,EACZ,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,EACR,IAAI,EACJ,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,SAAS,EACT,WAAW,GACZ,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,50 +1,37 @@
1
1
  /**
2
2
  * @molroo-io/sdk - Thin Client SDK for molroo emotion engine
3
3
  *
4
- * ## Boundary — this is where LLM orchestration lives:
5
- * - **LLM calls happen HERE** — consumer's API key, consumer's model.
6
- * - **Appraisal generation happens HERE** — LLM produces appraisal, SDK sends to API.
7
- * - **Memory recall happens HERE** — episodic/semantic/reflections from client stores.
8
- * - **Prompt composition**: API returns persona fragment → SDK adds memory context.
4
+ * ## Quick Start
9
5
  *
10
- * The API/engine never call LLM. This SDK is the bridge.
6
+ * ```typescript
7
+ * import { Molroo } from '@molroo-io/sdk';
8
+ * import { createOpenAI } from '@ai-sdk/openai';
9
+ *
10
+ * const molroo = new Molroo({ apiKey: 'mk_live_...' });
11
+ *
12
+ * const openai = createOpenAI({ apiKey: process.env.OPENAI_API_KEY! });
13
+ *
14
+ * // Create persona from description
15
+ * const sera = await molroo.createPersona(
16
+ * 'A kind and curious barista named Sera',
17
+ * { llm: openai }
18
+ * );
19
+ *
20
+ * const result = await sera.chat('Hello!');
21
+ * ```
22
+ *
23
+ * ## Advanced: World Simulation
11
24
  *
12
- * @example
13
25
  * ```typescript
14
- * import { MolrooPersona } from '@molroo-io/sdk';
15
- * import { createVercelAIAdapter } from '@molroo-io/sdk';
16
- *
17
- * const llm = createVercelAIAdapter({
18
- * provider: 'openai',
19
- * apiKey: process.env.OPENAI_API_KEY!,
20
- * });
21
- *
22
- * const persona = await MolrooPersona.create({
23
- * baseUrl: 'https://api.molroo.io',
24
- * apiKey: 'your_api_key',
25
- * llm,
26
- * }, {
27
- * config: { identity: { name: 'Sera' }, personality: { O: 0.7, C: 0.6, E: 0.8, A: 0.5, N: 0.3, H: 0.6 } },
28
- * });
29
- *
30
- * const result = await persona.chat('Hello!');
26
+ * const world = await molroo.createWorld({ name: 'Cafe' });
27
+ * const sera = await molroo.createPersona('Barista Sera', { llm: openai });
28
+ * await world.addPersona({ personaConfigId: sera.id, config: {...} });
31
29
  * ```
32
30
  */
33
31
  // ── Main exports ──
34
32
  export { Molroo } from './world/world';
35
- export { MolrooPersona } from './persona';
36
- export { MolrooApiError } from './types';
37
- export { VercelAIAdapter, createVercelAIAdapter } from './llm/vercel-ai';
38
- export { isMemoryConfig } from './memory/types';
39
- export { InMemoryEpisodeAdapter } from './memory/in-memory';
40
- export { InMemorySemanticMemory } from './memory/in-memory-semantic';
41
- export { InMemoryEpisodeStore } from './memory/in-memory';
42
- export { ConsoleEventAdapter } from './events/console';
43
- export { WebhookEventAdapter } from './events/webhook';
44
- // ── Generate ──
45
- export { generatePersona } from './generate/persona';
46
- export { GeneratePersonaSchema } from './generate/schema';
47
- // ── LLM types & schemas ──
48
- export { AppraisalVectorSchema, LLMResponseSchema, LLMResponseWithToolsSchema, } from './llm/schema';
33
+ export { MolrooApiError, WorldApiError } from './shared/errors';
34
+ // ── Shared utilities ──
35
+ export { NEUTRAL_APPRAISAL, toWireAppraisal, fromWireAppraisal } from './shared/appraisal';
49
36
  // ── Defaults ──
50
37
  export { DEFAULT_PERSONA, withDefaults } from './defaults';
@@ -1,28 +1,10 @@
1
1
  import type { LLMAdapter } from './adapter';
2
- /**
3
- * Shorthand config for creating an LLM adapter without importing a separate package.
4
- *
5
- * @example
6
- * ```typescript
7
- * const persona = await MolrooPersona.create({
8
- * baseUrl, apiKey,
9
- * llm: { provider: 'openai', apiKey: '...' },
10
- * }, config);
11
- * ```
12
- */
13
- export interface LLMShorthand {
14
- provider: 'openai' | 'anthropic' | 'vertex' | 'openrouter';
15
- apiKey: string;
16
- model?: string;
17
- baseUrl?: string;
18
- projectId?: string;
19
- location?: string;
20
- }
21
- /** LLM adapter or shorthand config. */
22
- export type LLMInput = LLMAdapter | LLMShorthand;
2
+ import type { LanguageModel } from 'ai';
3
+ /** LLM adapter or Vercel AI SDK provider instance. */
4
+ export type LLMInput = LLMAdapter | LanguageModel;
23
5
  /**
24
6
  * Resolve an LLMInput to an LLMAdapter.
25
- * If a shorthand config is given, creates a VercelAIAdapter directly.
7
+ * If a Vercel AI SDK provider is given, wraps it in VercelAIAdapter.
26
8
  */
27
9
  export declare function resolveLLM(input: LLMInput): Promise<LLMAdapter>;
28
10
  //# sourceMappingURL=resolve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/llm/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,uCAAuC;AACvC,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;AAYjD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAGrE"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/llm/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC,sDAAsD;AACtD,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;AAelD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAmBrE"}
@@ -1,17 +1,29 @@
1
- import { createVercelAIAdapter } from './vercel-ai';
2
- function isShorthand(input) {
1
+ import { VercelAIAdapter } from './vercel-ai';
2
+ /**
3
+ * Check if input is a Vercel AI SDK provider instance.
4
+ * Provider instances have a `doGenerate` method.
5
+ */
6
+ function isVercelProvider(input) {
3
7
  return (input != null &&
4
8
  typeof input === 'object' &&
5
- 'provider' in input &&
6
- 'apiKey' in input &&
7
- !('generateText' in input));
9
+ 'doGenerate' in input &&
10
+ typeof input.doGenerate === 'function');
8
11
  }
9
12
  /**
10
13
  * Resolve an LLMInput to an LLMAdapter.
11
- * If a shorthand config is given, creates a VercelAIAdapter directly.
14
+ * If a Vercel AI SDK provider is given, wraps it in VercelAIAdapter.
12
15
  */
13
16
  export async function resolveLLM(input) {
14
- if (!isShorthand(input))
17
+ // Check if it's an adapter first
18
+ if (input != null &&
19
+ typeof input === 'object' &&
20
+ 'generateText' in input &&
21
+ 'generateObject' in input) {
15
22
  return input;
16
- return createVercelAIAdapter(input);
23
+ }
24
+ // Vercel AI SDK provider instance - wrap it
25
+ if (isVercelProvider(input)) {
26
+ return new VercelAIAdapter({ provider: input });
27
+ }
28
+ throw new Error('Invalid LLM input. Expected LLMAdapter or Vercel AI SDK provider instance.');
17
29
  }