@molroo-io/sdk 0.5.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -210
- package/dist/cjs/api-client.d.ts +2 -12
- package/dist/cjs/api-client.d.ts.map +1 -1
- package/dist/cjs/api-client.js +4 -42
- package/dist/cjs/errors.d.ts +1 -16
- package/dist/cjs/errors.d.ts.map +1 -1
- package/dist/cjs/errors.js +2 -18
- package/dist/cjs/events/types.d.ts +14 -21
- package/dist/cjs/events/types.d.ts.map +1 -1
- package/dist/cjs/events/types.js +0 -11
- package/dist/cjs/index.d.ts +28 -48
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +31 -52
- package/dist/cjs/llm/resolve.d.ts +4 -22
- package/dist/cjs/llm/resolve.d.ts.map +1 -1
- package/dist/cjs/llm/resolve.js +19 -7
- package/dist/cjs/llm/vercel-ai/adapter.d.ts +4 -10
- package/dist/cjs/llm/vercel-ai/adapter.d.ts.map +1 -1
- package/dist/cjs/llm/vercel-ai/adapter.js +6 -152
- package/dist/cjs/llm/vercel-ai/config.d.ts +8 -5
- package/dist/cjs/llm/vercel-ai/config.d.ts.map +1 -1
- package/dist/cjs/memory/in-memory.d.ts +14 -37
- package/dist/cjs/memory/in-memory.d.ts.map +1 -1
- package/dist/cjs/memory/in-memory.js +22 -85
- package/dist/cjs/memory/recall.d.ts +10 -21
- package/dist/cjs/memory/recall.d.ts.map +1 -1
- package/dist/cjs/memory/recall.js +12 -91
- package/dist/cjs/memory/types.d.ts +46 -186
- package/dist/cjs/memory/types.d.ts.map +1 -1
- package/dist/cjs/memory/types.js +0 -10
- package/dist/cjs/persona/chat-orchestrator.d.ts +46 -0
- package/dist/cjs/persona/chat-orchestrator.d.ts.map +1 -0
- package/dist/cjs/persona/chat-orchestrator.js +240 -0
- package/dist/cjs/persona/event-emitter.d.ts +7 -0
- package/dist/cjs/persona/event-emitter.d.ts.map +1 -0
- package/dist/cjs/persona/event-emitter.js +53 -0
- package/dist/cjs/persona/memory-pipeline.d.ts +26 -0
- package/dist/cjs/persona/memory-pipeline.d.ts.map +1 -0
- package/dist/cjs/persona/memory-pipeline.js +69 -0
- package/dist/cjs/persona.d.ts +66 -171
- package/dist/cjs/persona.d.ts.map +1 -1
- package/dist/cjs/persona.js +64 -617
- package/dist/cjs/shared/appraisal.d.ts +26 -0
- package/dist/cjs/shared/appraisal.d.ts.map +1 -0
- package/dist/cjs/shared/appraisal.js +45 -0
- package/dist/cjs/shared/client-factory.d.ts +23 -0
- package/dist/cjs/shared/client-factory.d.ts.map +1 -0
- package/dist/cjs/shared/client-factory.js +48 -0
- package/dist/cjs/shared/errors.d.ts +21 -0
- package/dist/cjs/shared/errors.d.ts.map +1 -0
- package/dist/cjs/shared/errors.js +29 -0
- package/dist/cjs/world/client.d.ts +5 -12
- package/dist/cjs/world/client.d.ts.map +1 -1
- package/dist/cjs/world/client.js +10 -37
- package/dist/cjs/world/errors.d.ts +1 -8
- package/dist/cjs/world/errors.d.ts.map +1 -1
- package/dist/cjs/world/errors.js +2 -12
- package/dist/cjs/world/index.d.ts +5 -5
- package/dist/cjs/world/index.d.ts.map +1 -1
- package/dist/cjs/world/index.js +4 -4
- package/dist/cjs/world/types.d.ts +10 -8
- package/dist/cjs/world/types.d.ts.map +1 -1
- package/dist/{esm/world/village.d.ts → cjs/world/world-domain.d.ts} +25 -25
- package/dist/cjs/world/world-domain.d.ts.map +1 -0
- package/dist/cjs/world/{village.js → world-domain.js} +40 -68
- package/dist/cjs/world/world-persona.d.ts +12 -10
- package/dist/cjs/world/world-persona.d.ts.map +1 -1
- package/dist/cjs/world/world-persona.js +16 -31
- package/dist/cjs/world/world.d.ts +84 -17
- package/dist/cjs/world/world.d.ts.map +1 -1
- package/dist/cjs/world/world.js +72 -27
- package/dist/esm/api-client.d.ts +2 -12
- package/dist/esm/api-client.d.ts.map +1 -1
- package/dist/esm/api-client.js +3 -38
- package/dist/esm/errors.d.ts +1 -16
- package/dist/esm/errors.d.ts.map +1 -1
- package/dist/esm/errors.js +1 -17
- package/dist/esm/events/types.d.ts +14 -21
- package/dist/esm/events/types.d.ts.map +1 -1
- package/dist/esm/events/types.js +0 -11
- package/dist/esm/index.d.ts +28 -48
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +26 -38
- package/dist/esm/llm/resolve.d.ts +4 -22
- package/dist/esm/llm/resolve.d.ts.map +1 -1
- package/dist/esm/llm/resolve.js +20 -8
- package/dist/esm/llm/vercel-ai/adapter.d.ts +4 -10
- package/dist/esm/llm/vercel-ai/adapter.d.ts.map +1 -1
- package/dist/esm/llm/vercel-ai/adapter.js +6 -119
- package/dist/esm/llm/vercel-ai/config.d.ts +8 -5
- package/dist/esm/llm/vercel-ai/config.d.ts.map +1 -1
- package/dist/esm/memory/in-memory.d.ts +14 -37
- package/dist/esm/memory/in-memory.d.ts.map +1 -1
- package/dist/esm/memory/in-memory.js +20 -83
- package/dist/esm/memory/recall.d.ts +10 -21
- package/dist/esm/memory/recall.d.ts.map +1 -1
- package/dist/esm/memory/recall.js +12 -91
- package/dist/esm/memory/types.d.ts +46 -186
- package/dist/esm/memory/types.d.ts.map +1 -1
- package/dist/esm/memory/types.js +1 -9
- package/dist/esm/persona/chat-orchestrator.d.ts +46 -0
- package/dist/esm/persona/chat-orchestrator.d.ts.map +1 -0
- package/dist/esm/persona/chat-orchestrator.js +204 -0
- package/dist/esm/persona/event-emitter.d.ts +7 -0
- package/dist/esm/persona/event-emitter.d.ts.map +1 -0
- package/dist/esm/persona/event-emitter.js +50 -0
- package/dist/esm/persona/memory-pipeline.d.ts +26 -0
- package/dist/esm/persona/memory-pipeline.d.ts.map +1 -0
- package/dist/esm/persona/memory-pipeline.js +65 -0
- package/dist/esm/persona.d.ts +66 -171
- package/dist/esm/persona.d.ts.map +1 -1
- package/dist/esm/persona.js +64 -617
- package/dist/esm/shared/appraisal.d.ts +26 -0
- package/dist/esm/shared/appraisal.d.ts.map +1 -0
- package/dist/esm/shared/appraisal.js +40 -0
- package/dist/esm/shared/client-factory.d.ts +23 -0
- package/dist/esm/shared/client-factory.d.ts.map +1 -0
- package/dist/esm/shared/client-factory.js +41 -0
- package/dist/esm/shared/errors.d.ts +21 -0
- package/dist/esm/shared/errors.d.ts.map +1 -0
- package/dist/esm/shared/errors.js +24 -0
- package/dist/esm/world/client.d.ts +5 -12
- package/dist/esm/world/client.d.ts.map +1 -1
- package/dist/esm/world/client.js +9 -33
- package/dist/esm/world/errors.d.ts +1 -8
- package/dist/esm/world/errors.d.ts.map +1 -1
- package/dist/esm/world/errors.js +1 -11
- package/dist/esm/world/index.d.ts +5 -5
- package/dist/esm/world/index.d.ts.map +1 -1
- package/dist/esm/world/index.js +2 -2
- package/dist/esm/world/types.d.ts +10 -8
- package/dist/esm/world/types.d.ts.map +1 -1
- package/dist/{cjs/world/village.d.ts → esm/world/world-domain.d.ts} +25 -25
- package/dist/esm/world/world-domain.d.ts.map +1 -0
- package/dist/esm/world/{village.js → world-domain.js} +38 -66
- package/dist/esm/world/world-persona.d.ts +12 -10
- package/dist/esm/world/world-persona.d.ts.map +1 -1
- package/dist/esm/world/world-persona.js +16 -31
- package/dist/esm/world/world.d.ts +84 -17
- package/dist/esm/world/world.d.ts.map +1 -1
- package/dist/esm/world/world.js +70 -25
- package/package.json +4 -101
- package/dist/cjs/embedding/cloudflare.d.ts +0 -15
- package/dist/cjs/embedding/cloudflare.d.ts.map +0 -1
- package/dist/cjs/embedding/cloudflare.js +0 -16
- package/dist/cjs/embedding/cohere.d.ts +0 -8
- package/dist/cjs/embedding/cohere.d.ts.map +0 -1
- package/dist/cjs/embedding/cohere.js +0 -31
- package/dist/cjs/embedding/index.d.ts +0 -9
- package/dist/cjs/embedding/index.d.ts.map +0 -1
- package/dist/cjs/embedding/index.js +0 -11
- package/dist/cjs/embedding/local.d.ts +0 -6
- package/dist/cjs/embedding/local.d.ts.map +0 -1
- package/dist/cjs/embedding/local.js +0 -28
- package/dist/cjs/embedding/openai.d.ts +0 -9
- package/dist/cjs/embedding/openai.d.ts.map +0 -1
- package/dist/cjs/embedding/openai.js +0 -26
- package/dist/cjs/events/console.d.ts +0 -25
- package/dist/cjs/events/console.d.ts.map +0 -1
- package/dist/cjs/events/console.js +0 -41
- package/dist/cjs/events/webhook.d.ts +0 -30
- package/dist/cjs/events/webhook.d.ts.map +0 -1
- package/dist/cjs/events/webhook.js +0 -79
- package/dist/cjs/memory/cloudflare/index.d.ts +0 -3
- package/dist/cjs/memory/cloudflare/index.d.ts.map +0 -1
- package/dist/cjs/memory/cloudflare/index.js +0 -5
- package/dist/cjs/memory/cloudflare/vectorize.d.ts +0 -62
- package/dist/cjs/memory/cloudflare/vectorize.d.ts.map +0 -1
- package/dist/cjs/memory/cloudflare/vectorize.js +0 -55
- package/dist/cjs/memory/in-memory-semantic.d.ts +0 -16
- package/dist/cjs/memory/in-memory-semantic.d.ts.map +0 -1
- package/dist/cjs/memory/in-memory-semantic.js +0 -57
- package/dist/cjs/memory/pinecone/index.d.ts +0 -7
- package/dist/cjs/memory/pinecone/index.d.ts.map +0 -1
- package/dist/cjs/memory/pinecone/index.js +0 -8
- package/dist/cjs/memory/pinecone/memory-adapter.d.ts +0 -62
- package/dist/cjs/memory/pinecone/memory-adapter.d.ts.map +0 -1
- package/dist/cjs/memory/pinecone/memory-adapter.js +0 -220
- package/dist/cjs/memory/pinecone/semantic.d.ts +0 -44
- package/dist/cjs/memory/pinecone/semantic.d.ts.map +0 -1
- package/dist/cjs/memory/pinecone/semantic.js +0 -90
- package/dist/cjs/memory/sqlite/index.d.ts +0 -3
- package/dist/cjs/memory/sqlite/index.d.ts.map +0 -1
- package/dist/cjs/memory/sqlite/index.js +0 -5
- package/dist/cjs/memory/sqlite/memory-adapter.d.ts +0 -58
- package/dist/cjs/memory/sqlite/memory-adapter.d.ts.map +0 -1
- package/dist/cjs/memory/sqlite/memory-adapter.js +0 -336
- package/dist/cjs/memory/sqlite/schema.d.ts +0 -4
- package/dist/cjs/memory/sqlite/schema.d.ts.map +0 -1
- package/dist/cjs/memory/sqlite/schema.js +0 -91
- package/dist/cjs/memory/supabase/index.d.ts +0 -7
- package/dist/cjs/memory/supabase/index.d.ts.map +0 -1
- package/dist/cjs/memory/supabase/index.js +0 -8
- package/dist/cjs/memory/supabase/memory-adapter.d.ts +0 -67
- package/dist/cjs/memory/supabase/memory-adapter.d.ts.map +0 -1
- package/dist/cjs/memory/supabase/memory-adapter.js +0 -335
- package/dist/cjs/memory/supabase/semantic.d.ts +0 -44
- package/dist/cjs/memory/supabase/semantic.d.ts.map +0 -1
- package/dist/cjs/memory/supabase/semantic.js +0 -72
- package/dist/cjs/world/village.d.ts.map +0 -1
- package/dist/esm/embedding/cloudflare.d.ts +0 -15
- package/dist/esm/embedding/cloudflare.d.ts.map +0 -1
- package/dist/esm/embedding/cloudflare.js +0 -13
- package/dist/esm/embedding/cohere.d.ts +0 -8
- package/dist/esm/embedding/cohere.d.ts.map +0 -1
- package/dist/esm/embedding/cohere.js +0 -28
- package/dist/esm/embedding/index.d.ts +0 -9
- package/dist/esm/embedding/index.d.ts.map +0 -1
- package/dist/esm/embedding/index.js +0 -4
- package/dist/esm/embedding/local.d.ts +0 -6
- package/dist/esm/embedding/local.d.ts.map +0 -1
- package/dist/esm/embedding/local.js +0 -25
- package/dist/esm/embedding/openai.d.ts +0 -9
- package/dist/esm/embedding/openai.d.ts.map +0 -1
- package/dist/esm/embedding/openai.js +0 -23
- package/dist/esm/events/console.d.ts +0 -25
- package/dist/esm/events/console.d.ts.map +0 -1
- package/dist/esm/events/console.js +0 -37
- package/dist/esm/events/webhook.d.ts +0 -30
- package/dist/esm/events/webhook.d.ts.map +0 -1
- package/dist/esm/events/webhook.js +0 -75
- package/dist/esm/memory/cloudflare/index.d.ts +0 -3
- package/dist/esm/memory/cloudflare/index.d.ts.map +0 -1
- package/dist/esm/memory/cloudflare/index.js +0 -1
- package/dist/esm/memory/cloudflare/vectorize.d.ts +0 -62
- package/dist/esm/memory/cloudflare/vectorize.d.ts.map +0 -1
- package/dist/esm/memory/cloudflare/vectorize.js +0 -51
- package/dist/esm/memory/in-memory-semantic.d.ts +0 -16
- package/dist/esm/memory/in-memory-semantic.d.ts.map +0 -1
- package/dist/esm/memory/in-memory-semantic.js +0 -53
- package/dist/esm/memory/pinecone/index.d.ts +0 -7
- package/dist/esm/memory/pinecone/index.d.ts.map +0 -1
- package/dist/esm/memory/pinecone/index.js +0 -3
- package/dist/esm/memory/pinecone/memory-adapter.d.ts +0 -62
- package/dist/esm/memory/pinecone/memory-adapter.d.ts.map +0 -1
- package/dist/esm/memory/pinecone/memory-adapter.js +0 -216
- package/dist/esm/memory/pinecone/semantic.d.ts +0 -44
- package/dist/esm/memory/pinecone/semantic.d.ts.map +0 -1
- package/dist/esm/memory/pinecone/semantic.js +0 -86
- package/dist/esm/memory/sqlite/index.d.ts +0 -3
- package/dist/esm/memory/sqlite/index.d.ts.map +0 -1
- package/dist/esm/memory/sqlite/index.js +0 -1
- package/dist/esm/memory/sqlite/memory-adapter.d.ts +0 -58
- package/dist/esm/memory/sqlite/memory-adapter.d.ts.map +0 -1
- package/dist/esm/memory/sqlite/memory-adapter.js +0 -296
- package/dist/esm/memory/sqlite/schema.d.ts +0 -4
- package/dist/esm/memory/sqlite/schema.d.ts.map +0 -1
- package/dist/esm/memory/sqlite/schema.js +0 -86
- package/dist/esm/memory/supabase/index.d.ts +0 -7
- package/dist/esm/memory/supabase/index.d.ts.map +0 -1
- package/dist/esm/memory/supabase/index.js +0 -3
- package/dist/esm/memory/supabase/memory-adapter.d.ts +0 -67
- package/dist/esm/memory/supabase/memory-adapter.d.ts.map +0 -1
- package/dist/esm/memory/supabase/memory-adapter.js +0 -331
- package/dist/esm/memory/supabase/semantic.d.ts +0 -44
- package/dist/esm/memory/supabase/semantic.d.ts.map +0 -1
- package/dist/esm/memory/supabase/semantic.js +0 -68
- package/dist/esm/world/village.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -1,242 +1,134 @@
|
|
|
1
1
|
# @molroo-io/sdk
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[](LICENSE)
|
|
5
|
-
[](tsconfig.json)
|
|
6
|
-
[](src/__tests__)
|
|
3
|
+
**Thin Client SDK for molroo emotion engine**
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
## Install
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
npm install @molroo-io/sdk
|
|
14
|
-
```
|
|
5
|
+
Simplified API client with LLM integration for the molroo emotion engine.
|
|
15
6
|
|
|
16
7
|
## Quick Start
|
|
17
8
|
|
|
18
|
-
```
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
const llm = createVercelAIAdapter({
|
|
23
|
-
provider: 'openai',
|
|
24
|
-
apiKey: process.env.OPENAI_API_KEY!,
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
const persona = await MolrooPersona.create({
|
|
28
|
-
baseUrl: 'https://api.molroo.io',
|
|
29
|
-
apiKey: 'mol_sk_your_api_key',
|
|
30
|
-
llm,
|
|
31
|
-
}, {
|
|
32
|
-
identity: { name: 'Sera', coreValues: ['honesty', 'warmth'] },
|
|
33
|
-
personality: { O: 0.7, C: 0.6, E: 0.8, A: 0.5, N: 0.3, H: 0.6 },
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
const result = await persona.chat('Hello!');
|
|
37
|
-
console.log(result.text); // "Hey! It's great to meet you..."
|
|
38
|
-
console.log(result.response.emotion); // { V: 0.4, A: 0.5, D: 0.2 }
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## How It Works
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
Your App SDK API (PersonaDO)
|
|
45
|
-
| | |
|
|
46
|
-
| persona.chat(msg) | |
|
|
47
|
-
|------------------------>| |
|
|
48
|
-
| | POST /personas/:id/prompt-context
|
|
49
|
-
| |------------------------------>|
|
|
50
|
-
| | { systemPrompt, tools } |
|
|
51
|
-
| |<------------------------------|
|
|
52
|
-
| | |
|
|
53
|
-
| | LLM call (your API key) |
|
|
54
|
-
| | system: systemPrompt |
|
|
55
|
-
| | -> { response, appraisal } |
|
|
56
|
-
| | |
|
|
57
|
-
| | POST /personas/:id/perceive |
|
|
58
|
-
| | { appraisal } |
|
|
59
|
-
| |------------------------------>|
|
|
60
|
-
| | { emotion, state } |
|
|
61
|
-
| |<------------------------------|
|
|
62
|
-
| | |
|
|
63
|
-
| { text, response } | |
|
|
64
|
-
|<------------------------| |
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
1. **Get prompt context** — API builds system prompt from live emotional state (identity + personality + mood + somatic + narrative + memory)
|
|
68
|
-
2. **LLM call** — SDK calls your LLM with assembled prompt. Returns response text + appraisal vector.
|
|
69
|
-
3. **Perceive** — SDK sends appraisal to API. Engine processes emotion pipeline -> new VAD state.
|
|
70
|
-
4. **Post-chat** — Episode saved, reflection triggered if needed, events emitted.
|
|
71
|
-
|
|
72
|
-
The API does all emotion computation. The SDK just connects it to your LLM.
|
|
73
|
-
|
|
74
|
-
## Two LLM Modes
|
|
75
|
-
|
|
76
|
-
### Combined Mode (default)
|
|
77
|
-
|
|
78
|
-
Single LLM call returns both response text and appraisal in one `generateObject()` call:
|
|
79
|
-
|
|
80
|
-
```ts
|
|
81
|
-
const persona = await MolrooPersona.create({
|
|
82
|
-
baseUrl, apiKey,
|
|
83
|
-
llm, // one LLM handles everything
|
|
84
|
-
}, personaConfig);
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### Split Mode
|
|
9
|
+
```typescript
|
|
10
|
+
import { Molroo } from '@molroo-io/sdk';
|
|
11
|
+
import { createOpenAI } from '@ai-sdk/openai';
|
|
88
12
|
|
|
89
|
-
|
|
13
|
+
const molroo = new Molroo({ apiKey: 'mk_live_...' });
|
|
90
14
|
|
|
91
|
-
|
|
92
|
-
const persona = await MolrooPersona.create({
|
|
93
|
-
baseUrl, apiKey,
|
|
94
|
-
llm: responseModel, // quality model for response text
|
|
95
|
-
engineLlm: appraisalModel, // cheap model for appraisal vector
|
|
96
|
-
}, personaConfig);
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## MolrooPersona API
|
|
100
|
-
|
|
101
|
-
### Static Methods
|
|
102
|
-
|
|
103
|
-
| Method | Description |
|
|
104
|
-
|--------|-------------|
|
|
105
|
-
| `MolrooPersona.create(config, personaConfig)` | Create a new persona |
|
|
106
|
-
| `MolrooPersona.connect(config, personaId)` | Connect to an existing persona |
|
|
107
|
-
| `MolrooPersona.listPersonas(config)` | List all personas |
|
|
108
|
-
|
|
109
|
-
### Instance Methods
|
|
110
|
-
|
|
111
|
-
| Method | Description |
|
|
112
|
-
|--------|-------------|
|
|
113
|
-
| `chat(message, options?)` | Full LLM orchestration: prompt -> LLM -> perceive -> result |
|
|
114
|
-
| `perceive(message, options?)` | Send event to emotion engine (no LLM call) |
|
|
115
|
-
| `tick(seconds)` | Advance time (mood decay, body recovery) |
|
|
116
|
-
| `getState()` | Get current emotional state |
|
|
117
|
-
| `setEmotion(vad)` | Direct VAD override |
|
|
118
|
-
| `getPromptContext(suffix?, source?)` | Get server-assembled system prompt |
|
|
119
|
-
| `searchMemory(query, options?)` | Search episodic memory |
|
|
120
|
-
| `getSnapshot()` | Get full persona snapshot |
|
|
121
|
-
| `putSnapshot(snapshot)` | Load persona snapshot |
|
|
122
|
-
| `patch(config)` | Update persona config |
|
|
123
|
-
| `destroy()` | Soft-delete the persona |
|
|
124
|
-
| `restore()` | Restore a soft-deleted persona |
|
|
125
|
-
|
|
126
|
-
### Config
|
|
127
|
-
|
|
128
|
-
```ts
|
|
129
|
-
interface MolrooPersonaConfig {
|
|
130
|
-
baseUrl: string; // API URL (e.g. 'https://api.molroo.io')
|
|
131
|
-
apiKey: string; // API key
|
|
132
|
-
llm?: LLMAdapter; // LLM for chat (optional - emotion-only without)
|
|
133
|
-
engineLlm?: LLMAdapter; // Separate LLM for appraisal (split mode)
|
|
134
|
-
memory?: MemoryAdapter | MemoryConfig; // Single adapter or split config (optional)
|
|
135
|
-
recall?: RecallLimits; // Recall limits for single adapter mode
|
|
136
|
-
events?: EventAdapter; // Event emission (optional)
|
|
137
|
-
}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Adapters
|
|
141
|
-
|
|
142
|
-
### LLM Adapter
|
|
15
|
+
const openai = createOpenAI({ apiKey: process.env.OPENAI_API_KEY! });
|
|
143
16
|
|
|
144
|
-
|
|
17
|
+
// Create persona from description
|
|
18
|
+
const sera = await molroo.createPersona(
|
|
19
|
+
'A kind and curious barista named Sera who remembers customer names',
|
|
20
|
+
{ llm: openai }
|
|
21
|
+
);
|
|
145
22
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
apiKey: process.env.OPENAI_API_KEY!,
|
|
152
|
-
model: 'gpt-4o-mini', // optional
|
|
153
|
-
});
|
|
23
|
+
// Chat
|
|
24
|
+
let history: Message[] = [];
|
|
25
|
+
const result = await sera.chat('Hello!', { history });
|
|
26
|
+
console.log(result.text); // "Hello! Welcome to our cafe."
|
|
27
|
+
history = result.updatedHistory; // Manage externally
|
|
154
28
|
```
|
|
155
29
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
Client-side memory for episodic recall and semantic search. Optional — when not provided, memory recall is skipped.
|
|
30
|
+
## Installation
|
|
159
31
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
import { SqliteMemoryAdapter } from '@molroo-io/sdk/memory/sqlite';
|
|
164
|
-
|
|
165
|
-
const persona = await MolrooPersona.create({
|
|
166
|
-
baseUrl, apiKey, llm,
|
|
167
|
-
memory: new SqliteMemoryAdapter({ dbPath: './memory.db' }),
|
|
168
|
-
recall: { episodicLimit: 5, semanticLimit: 3 }, // optional limits
|
|
169
|
-
}, personaConfig);
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
Built-in `InMemoryEpisodeAdapter` also works as a single adapter (for demos/testing):
|
|
173
|
-
|
|
174
|
-
```ts
|
|
175
|
-
import { InMemoryEpisodeAdapter } from '@molroo-io/sdk';
|
|
176
|
-
|
|
177
|
-
const persona = await MolrooPersona.create({
|
|
178
|
-
baseUrl, apiKey, llm,
|
|
179
|
-
memory: new InMemoryEpisodeAdapter(),
|
|
180
|
-
}, personaConfig);
|
|
32
|
+
```bash
|
|
33
|
+
npm install @molroo-io/sdk
|
|
34
|
+
npm install ai @ai-sdk/openai # or @ai-sdk/anthropic, @ai-sdk/google-vertex
|
|
181
35
|
```
|
|
182
36
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
```ts
|
|
186
|
-
const persona = await MolrooPersona.create({
|
|
187
|
-
baseUrl, apiKey, llm,
|
|
188
|
-
memory: {
|
|
189
|
-
episodes: episodeStore,
|
|
190
|
-
semantic: vectorStore,
|
|
191
|
-
embedding: embeddingProvider,
|
|
192
|
-
recall: { episodicLimit: 5, semanticLimit: 3 },
|
|
193
|
-
},
|
|
194
|
-
}, personaConfig);
|
|
195
|
-
```
|
|
37
|
+
## Features
|
|
196
38
|
|
|
197
|
-
|
|
39
|
+
- **Unified API** — `Molroo` class for persona and world management
|
|
40
|
+
- **Vercel AI SDK Integration** — Use any LLM provider (OpenAI, Anthropic, Google, etc.)
|
|
41
|
+
- **External History Management** — Simple mode: manage conversation history yourself
|
|
42
|
+
- **Advanced Memory (Optional)** — Implement `MemoryAdapter` for semantic search, reflections
|
|
43
|
+
- **World Simulation** — Multi-agent environments with channels and interactions
|
|
198
44
|
|
|
199
|
-
|
|
45
|
+
## Usage Modes
|
|
200
46
|
|
|
201
|
-
|
|
202
|
-
import { ConsoleEventAdapter, WebhookEventAdapter } from '@molroo-io/sdk';
|
|
47
|
+
### 1. Simple Mode (External History)
|
|
203
48
|
|
|
204
|
-
|
|
205
|
-
const
|
|
49
|
+
```typescript
|
|
50
|
+
const molroo = new Molroo({ apiKey: 'mk_...' });
|
|
51
|
+
const sera = await molroo.createPersona('...', { llm: openai });
|
|
206
52
|
|
|
207
|
-
|
|
208
|
-
const
|
|
53
|
+
let history = [];
|
|
54
|
+
const result = await sera.chat('Hello', { history });
|
|
55
|
+
history = result.updatedHistory;
|
|
209
56
|
```
|
|
210
57
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
58
|
+
### 2. Advanced Mode (MemoryAdapter)
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
class MyPostgresAdapter implements MemoryAdapter {
|
|
62
|
+
async saveEpisode(episode: Episode): Promise<void> {
|
|
63
|
+
// Save to PostgreSQL
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async recall(query: RecallQuery): Promise<Episode[]> {
|
|
67
|
+
// Query by filters
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
async semanticRecall(query: string): Promise<Episode[]> {
|
|
71
|
+
// Vector similarity search
|
|
72
|
+
}
|
|
73
|
+
}
|
|
217
74
|
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
|
|
75
|
+
const sera = await molroo.createPersona('...', {
|
|
76
|
+
llm: openai,
|
|
77
|
+
memory: new MyPostgresAdapter()
|
|
221
78
|
});
|
|
222
|
-
// result.config -> full PersonaConfigData
|
|
223
79
|
```
|
|
224
80
|
|
|
225
|
-
##
|
|
81
|
+
## World Simulation
|
|
226
82
|
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
npm run gen:types # openapi-typescript -> src/generated/api.d.ts
|
|
232
|
-
npm run docs # TypeDoc -> SDK API reference
|
|
83
|
+
```typescript
|
|
84
|
+
const world = await molroo.createWorld({ name: 'Cafe' });
|
|
85
|
+
const sera = await molroo.createPersona('Barista Sera', { llm: openai });
|
|
86
|
+
await world.addPersona({ personaConfigId: sera.id, config: {...} });
|
|
233
87
|
```
|
|
234
88
|
|
|
235
|
-
##
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
89
|
+
## Migration from v0.5.x
|
|
90
|
+
|
|
91
|
+
### Breaking Changes
|
|
92
|
+
|
|
93
|
+
1. **Unified `create()` method**
|
|
94
|
+
```typescript
|
|
95
|
+
// Before
|
|
96
|
+
await MolrooPersona.create({...}, {personality: {...}});
|
|
97
|
+
await MolrooPersona.generate({...}, "description");
|
|
98
|
+
|
|
99
|
+
// After
|
|
100
|
+
await molroo.createPersona({personality: {...}}, {llm});
|
|
101
|
+
await molroo.createPersona("description", {llm});
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
2. **External history management**
|
|
105
|
+
```typescript
|
|
106
|
+
// Before
|
|
107
|
+
await persona.chat("Hello"); // MemoryAdapter required
|
|
108
|
+
|
|
109
|
+
// After
|
|
110
|
+
let history = [];
|
|
111
|
+
const result = await persona.chat("Hello", {history});
|
|
112
|
+
history = result.updatedHistory;
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
3. **Vercel AI SDK directly**
|
|
116
|
+
```typescript
|
|
117
|
+
// Before
|
|
118
|
+
createVercelAIAdapter({provider: 'openai', ...})
|
|
119
|
+
|
|
120
|
+
// After
|
|
121
|
+
createOpenAI({...}) // Pass directly
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
4. **Removed adapter implementations**
|
|
125
|
+
- SQLite, Supabase, Pinecone adapters removed
|
|
126
|
+
- Implement `MemoryAdapter` interface yourself
|
|
127
|
+
- Or wait for API-hosted memory (coming soon)
|
|
128
|
+
|
|
129
|
+
## API Reference
|
|
130
|
+
|
|
131
|
+
See [API documentation](https://docs.molroo.io/sdk) for full reference.
|
|
240
132
|
|
|
241
133
|
## License
|
|
242
134
|
|
package/dist/cjs/api-client.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|
package/dist/cjs/api-client.js
CHANGED
|
@@ -1,28 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.unwrap = void 0;
|
|
6
4
|
exports.createApiClient = createApiClient;
|
|
7
|
-
exports.unwrap = unwrap;
|
|
8
|
-
const openapi_fetch_1 = __importDefault(require("openapi-fetch"));
|
|
9
5
|
const errors_1 = require("./errors");
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*
|
|
13
|
-
* Reads the error body `{ error: { code, message } }` and converts it
|
|
14
|
-
* into a typed MolrooApiError before openapi-fetch processes the response.
|
|
15
|
-
*/
|
|
16
|
-
const errorMiddleware = {
|
|
17
|
-
async onResponse({ response }) {
|
|
18
|
-
if (!response.ok) {
|
|
19
|
-
const body = await response.clone().json().catch(() => ({}));
|
|
20
|
-
const err = body;
|
|
21
|
-
throw new errors_1.MolrooApiError(err.error?.message ?? `API error ${response.status}`, err.error?.code ?? 'UNKNOWN', response.status);
|
|
22
|
-
}
|
|
23
|
-
// Return undefined to let openapi-fetch handle the response unchanged
|
|
24
|
-
},
|
|
25
|
-
};
|
|
6
|
+
const client_factory_1 = require("./shared/client-factory");
|
|
7
|
+
Object.defineProperty(exports, "unwrap", { enumerable: true, get: function () { return client_factory_1.unwrap; } });
|
|
26
8
|
/**
|
|
27
9
|
* Create a typed openapi-fetch client for the molroo API.
|
|
28
10
|
*
|
|
@@ -31,25 +13,5 @@ const errorMiddleware = {
|
|
|
31
13
|
* @returns A fully-typed openapi-fetch client instance.
|
|
32
14
|
*/
|
|
33
15
|
function createApiClient(baseUrl, apiKey) {
|
|
34
|
-
|
|
35
|
-
baseUrl: baseUrl.replace(/\/$/, ''),
|
|
36
|
-
headers: {
|
|
37
|
-
'Content-Type': 'application/json',
|
|
38
|
-
'X-API-Key': apiKey,
|
|
39
|
-
},
|
|
40
|
-
});
|
|
41
|
-
client.use(errorMiddleware);
|
|
42
|
-
return client;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Unwrap the `{ result: T }` envelope from API responses.
|
|
46
|
-
*
|
|
47
|
-
* Many API endpoints return `ResultWrapper` (typed as `{ result?: unknown }`)
|
|
48
|
-
* in the OpenAPI spec. This helper extracts the `result` field and casts it
|
|
49
|
-
* to the expected type.
|
|
50
|
-
*
|
|
51
|
-
* For endpoints with properly-typed response schemas, use `data.result` directly.
|
|
52
|
-
*/
|
|
53
|
-
function unwrap(data) {
|
|
54
|
-
return (data?.result ?? {});
|
|
16
|
+
return (0, client_factory_1.createTypedClient)({ baseUrl, apiKey, ErrorClass: errors_1.MolrooApiError });
|
|
55
17
|
}
|
package/dist/cjs/errors.d.ts
CHANGED
|
@@ -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
|
package/dist/cjs/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/cjs/errors.js
CHANGED
|
@@ -1,21 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MolrooApiError = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
* Contains the API error code and HTTP status for programmatic handling.
|
|
8
|
-
*/
|
|
9
|
-
class MolrooApiError extends Error {
|
|
10
|
-
constructor(message,
|
|
11
|
-
/** Machine-readable error code (e.g., 'ENTITY_NOT_FOUND', 'UNAUTHORIZED'). */
|
|
12
|
-
code,
|
|
13
|
-
/** HTTP status code. */
|
|
14
|
-
status) {
|
|
15
|
-
super(message);
|
|
16
|
-
this.code = code;
|
|
17
|
-
this.status = status;
|
|
18
|
-
this.name = 'MolrooApiError';
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.MolrooApiError = MolrooApiError;
|
|
4
|
+
var errors_1 = require("./shared/errors");
|
|
5
|
+
Object.defineProperty(exports, "MolrooApiError", { enumerable: true, get: function () { return errors_1.MolrooApiError; } });
|
|
@@ -1,28 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Event
|
|
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
|
-
/**
|
|
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
|
|
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"}
|
package/dist/cjs/events/types.js
CHANGED
|
@@ -1,13 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Event Adapter interface for molroo SDK.
|
|
4
|
-
*
|
|
5
|
-
* Abstracts event emission so consumers can:
|
|
6
|
-
* - Log emotion changes, relationship updates, stage transitions
|
|
7
|
-
* - Send webhooks, push notifications, analytics events
|
|
8
|
-
* - Build reactive UIs that respond to persona state changes
|
|
9
|
-
*
|
|
10
|
-
* Events are derived from API response data (AgentResponse fields).
|
|
11
|
-
* Implementations are provided by the consumer — SDK only defines the interface.
|
|
12
|
-
*/
|
|
13
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,66 +1,46 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @molroo-io/sdk - Thin Client SDK for molroo emotion engine
|
|
3
3
|
*
|
|
4
|
-
* ##
|
|
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 {
|
|
15
|
-
* import {
|
|
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
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
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
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
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
|
-
*
|
|
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
|
-
export {
|
|
34
|
-
export {
|
|
31
|
+
export { Molroo } from './world/world';
|
|
32
|
+
export type { MolrooOptions, PersonaOptions } from './world/world';
|
|
33
|
+
export { MolrooApiError, WorldApiError } from './shared/errors';
|
|
34
|
+
export { NEUTRAL_APPRAISAL, toWireAppraisal, fromWireAppraisal } from './shared/appraisal';
|
|
35
|
+
export type { Appraisal } from './shared/appraisal';
|
|
35
36
|
export type { LLMAdapter, Message, GenerateTextOptions, GenerateObjectOptions, } from './llm/adapter';
|
|
36
|
-
export type {
|
|
37
|
-
export {
|
|
38
|
-
export type {
|
|
39
|
-
export type { MemoryAdapter, RecallQuery, SemanticRecallOptions, RecallLimits, } from './memory/types';
|
|
40
|
-
export { isMemoryConfig } from './memory/types';
|
|
41
|
-
export type { EpisodeAdapter, EpisodeQuery, SemanticAdapter, SemanticEntry, SemanticQuery, SemanticResult, EmbeddingAdapter, MemoryConfig, Reflection, } from './memory/types';
|
|
42
|
-
export { InMemoryEpisodeAdapter } from './memory/in-memory';
|
|
43
|
-
export type { RecallConfig } from './memory/recall';
|
|
44
|
-
export type { SemanticMemory, SearchOptions, SearchResult } from './memory/semantic';
|
|
45
|
-
export { InMemorySemanticMemory } from './memory/in-memory-semantic';
|
|
46
|
-
export type { EpisodeStore, SemanticStore, EmbeddingProvider } from './memory/types';
|
|
47
|
-
export { InMemoryEpisodeStore } from './memory/in-memory';
|
|
48
|
-
export type { EventAdapter, SDKEvent, SDKEventType, PersonaEventType } from './events/types';
|
|
49
|
-
export { ConsoleEventAdapter } from './events/console';
|
|
50
|
-
export type { ConsoleEventAdapterOptions } from './events/console';
|
|
51
|
-
export { WebhookEventAdapter } from './events/webhook';
|
|
52
|
-
export type { WebhookEventAdapterOptions } from './events/webhook';
|
|
53
|
-
export { generatePersona } from './generate/persona';
|
|
54
|
-
export { GeneratePersonaSchema } from './generate/schema';
|
|
55
|
-
export type { GeneratePersonaSchemaOutput } from './generate/schema';
|
|
56
|
-
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';
|
|
57
40
|
export type { InterlocutorContext, PerceiveOptions, PerceiveEvent, PerceiveContext, } from './types';
|
|
58
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';
|
|
59
42
|
export type { PersonaSnapshot, PersonaConfigData, PersonalityTraits, Identity, Goal, MotivationContext, } from './types';
|
|
60
43
|
export type { ApiResponse, ApiErrorResponse, PersonaDynamicState, } from './types';
|
|
61
|
-
export { AppraisalVectorSchema, LLMResponseSchema, LLMResponseWithToolsSchema, } from './llm/schema';
|
|
62
|
-
export type { LLMResponseOutput, LLMResponseWithToolsOutput } from './llm/schema';
|
|
63
44
|
export type { LLMPrompt, LLMResponse, } from './llm/types';
|
|
64
|
-
export type { ChatMessage } from './llm/types';
|
|
65
45
|
export { DEFAULT_PERSONA, withDefaults } from './defaults';
|
|
66
46
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
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"}
|