@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
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { emitResponseEvents } from './event-emitter';
|
|
2
|
+
/** Save episode (shared between perceive and chat pipelines). */
|
|
3
|
+
function saveEpisode(deps, response) {
|
|
4
|
+
if (!response.memoryEpisode)
|
|
5
|
+
return;
|
|
6
|
+
if (deps.memoryAdapter) {
|
|
7
|
+
deps.memoryAdapter.saveEpisode(response.memoryEpisode).catch(() => { });
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/** Handle reflection generation (LLM call + save). */
|
|
11
|
+
async function handleReflection(deps, prompt, emotionVad) {
|
|
12
|
+
const reflectionLlm = deps.engineLlm ?? deps.llm;
|
|
13
|
+
if (!reflectionLlm)
|
|
14
|
+
return;
|
|
15
|
+
if (!deps.memoryAdapter)
|
|
16
|
+
return;
|
|
17
|
+
const { text } = await reflectionLlm.generateText({
|
|
18
|
+
system: prompt.system,
|
|
19
|
+
messages: [{ role: 'user', content: prompt.user }],
|
|
20
|
+
});
|
|
21
|
+
const reflection = {
|
|
22
|
+
id: `ref-${Date.now()}`,
|
|
23
|
+
timestamp: Date.now(),
|
|
24
|
+
sourceEntity: deps.personaId,
|
|
25
|
+
content: text,
|
|
26
|
+
trigger: 'interaction',
|
|
27
|
+
emotionSnapshot: emotionVad ?? { V: 0, A: 0, D: 0 },
|
|
28
|
+
};
|
|
29
|
+
if (deps.memoryAdapter.saveReflection) {
|
|
30
|
+
await deps.memoryAdapter.saveReflection(reflection);
|
|
31
|
+
}
|
|
32
|
+
await deps.events?.emit({
|
|
33
|
+
type: 'reflection_generated',
|
|
34
|
+
personaId: deps.personaId,
|
|
35
|
+
timestamp: Date.now(),
|
|
36
|
+
payload: { trigger: 'interaction' },
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Post-perceive pipeline: save episode + emit events (no reflection).
|
|
41
|
+
*/
|
|
42
|
+
export function postPerceive(deps, response) {
|
|
43
|
+
if (!response.memoryEpisode)
|
|
44
|
+
return;
|
|
45
|
+
saveEpisode(deps, response);
|
|
46
|
+
if (deps.events) {
|
|
47
|
+
emitResponseEvents(deps.events, deps.personaId, response, Date.now()).catch(() => { });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Post-chat pipeline: save episode + reflection + emit events.
|
|
52
|
+
*/
|
|
53
|
+
export function postChat(deps, response) {
|
|
54
|
+
const now = Date.now();
|
|
55
|
+
saveEpisode(deps, response);
|
|
56
|
+
// Reflection generation (requires LLM)
|
|
57
|
+
const hasLlm = deps.engineLlm || deps.llm;
|
|
58
|
+
const hasMemory = deps.memoryAdapter;
|
|
59
|
+
if (hasLlm && hasMemory && response.reflectionPrompt) {
|
|
60
|
+
handleReflection(deps, response.reflectionPrompt, response.emotion.vad).catch(() => { });
|
|
61
|
+
}
|
|
62
|
+
if (deps.events) {
|
|
63
|
+
emitResponseEvents(deps.events, deps.personaId, response, now).catch(() => { });
|
|
64
|
+
}
|
|
65
|
+
}
|
package/dist/esm/persona.d.ts
CHANGED
|
@@ -1,34 +1,28 @@
|
|
|
1
|
-
import type { LLMAdapter } from './llm/adapter';
|
|
2
|
-
import type { Message } from './llm/adapter';
|
|
1
|
+
import type { LLMAdapter, Message } from './llm/adapter';
|
|
3
2
|
import { type LLMInput } from './llm/resolve';
|
|
4
|
-
import type {
|
|
3
|
+
import type { MemoryAdapter, RecallLimits } from './memory/types';
|
|
5
4
|
import type { EventAdapter } from './events/types';
|
|
6
5
|
import type { AgentResponse, AppraisalVector, InterlocutorContext, PersonaSnapshot, PersonaConfigData, PerceiveOptions } from './types';
|
|
7
6
|
/** Configuration for connecting to a standalone persona instance. */
|
|
8
7
|
export interface MolrooPersonaConfig {
|
|
9
|
-
/** Base URL of the molroo API
|
|
10
|
-
baseUrl
|
|
8
|
+
/** Base URL of the molroo API. Defaults to 'https://api.molroo.io'. */
|
|
9
|
+
baseUrl?: string;
|
|
11
10
|
/** API key for authentication. */
|
|
12
11
|
apiKey: string;
|
|
13
12
|
/** Persona instance ID. Set automatically by {@link MolrooPersona.create}. */
|
|
14
13
|
personaId?: string;
|
|
15
14
|
/**
|
|
16
|
-
* Memory
|
|
15
|
+
* Memory adapter for advanced memory features.
|
|
17
16
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* memory: new SqliteMemoryAdapter({ dbPath: './memory.db' })
|
|
21
|
-
* ```
|
|
17
|
+
* For simple use cases, manage conversation history externally using
|
|
18
|
+
* the `updatedHistory` returned from `chat()`.
|
|
22
19
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* memory: { episodes: adapter, semantic: vectorStore, embedding: embeddingProvider }
|
|
26
|
-
* ```
|
|
20
|
+
* For advanced features (semantic search, reflections, emotion-aware storage),
|
|
21
|
+
* implement MemoryAdapter and pass it here.
|
|
27
22
|
*/
|
|
28
|
-
memory?: MemoryAdapter
|
|
23
|
+
memory?: MemoryAdapter;
|
|
29
24
|
/**
|
|
30
|
-
* Recall limits when using a
|
|
31
|
-
* Ignored when memory is a MemoryConfig (use `memory.recall` instead).
|
|
25
|
+
* Recall limits when using a MemoryAdapter.
|
|
32
26
|
*/
|
|
33
27
|
recall?: RecallLimits;
|
|
34
28
|
/**
|
|
@@ -85,35 +79,19 @@ export interface PersonaChatResult {
|
|
|
85
79
|
response: AgentResponse;
|
|
86
80
|
/** Persona state at the time of interaction (if available). */
|
|
87
81
|
state?: PersonaState;
|
|
82
|
+
/** Updated conversation history including this turn. Manage externally for simple mode. */
|
|
83
|
+
updatedHistory: Message[];
|
|
88
84
|
}
|
|
89
85
|
/**
|
|
90
86
|
* SDK client for interacting with a standalone molroo persona instance.
|
|
91
87
|
*
|
|
92
|
-
* @
|
|
93
|
-
* ```typescript
|
|
94
|
-
* // Single adapter (recommended)
|
|
95
|
-
* const persona = await MolrooPersona.create(
|
|
96
|
-
* { baseUrl: 'https://api.molroo.io', apiKey: 'key', llm,
|
|
97
|
-
* memory: new SqliteMemoryAdapter({ dbPath: './memory.db' }) },
|
|
98
|
-
* { identity: { name: 'Sera' }, personality: { O: 0.8, C: 0.6, E: 0.7 } },
|
|
99
|
-
* );
|
|
100
|
-
*
|
|
101
|
-
* // Split adapters (advanced)
|
|
102
|
-
* const persona = await MolrooPersona.create(
|
|
103
|
-
* { baseUrl: 'https://api.molroo.io', apiKey: 'key', llm,
|
|
104
|
-
* memory: { episodes: episodeStore, semantic: vectorStore, embedding: embedProvider } },
|
|
105
|
-
* { identity: { name: 'Sera' }, personality: { O: 0.8, C: 0.6, E: 0.7 } },
|
|
106
|
-
* );
|
|
107
|
-
* ```
|
|
88
|
+
* @deprecated Use {@link Molroo} from './world/world' instead.
|
|
108
89
|
*/
|
|
109
90
|
export declare class MolrooPersona {
|
|
110
91
|
private client;
|
|
111
92
|
private llm;
|
|
112
93
|
private engineLlm;
|
|
113
94
|
private memoryAdapter;
|
|
114
|
-
private episodeStore;
|
|
115
|
-
private semanticStore;
|
|
116
|
-
private embeddingProvider;
|
|
117
95
|
private memoryRecallConfig;
|
|
118
96
|
private events;
|
|
119
97
|
private _personaId;
|
|
@@ -121,206 +99,123 @@ export declare class MolrooPersona {
|
|
|
121
99
|
llm?: LLMAdapter;
|
|
122
100
|
engineLlm?: LLMAdapter;
|
|
123
101
|
});
|
|
124
|
-
/** Unique identifier for this persona instance. */
|
|
125
102
|
get id(): string;
|
|
126
|
-
/** Unique identifier for this persona instance (alias for {@link id}). */
|
|
127
103
|
get personaId(): string;
|
|
128
104
|
/**
|
|
129
|
-
* Create a new persona
|
|
105
|
+
* Create a new persona from a natural language description.
|
|
106
|
+
* Uses LLM to generate HEXACO personality configuration.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* const sera = await MolrooPersona.create(
|
|
111
|
+
* { apiKey: 'mk_...', llm: openaiAdapter },
|
|
112
|
+
* 'A kind and curious barista who remembers customer names'
|
|
113
|
+
* );
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
static create(config: {
|
|
117
|
+
baseUrl?: string;
|
|
118
|
+
apiKey: string;
|
|
119
|
+
llm: LLMInput;
|
|
120
|
+
engineLlm?: LLMInput;
|
|
121
|
+
memory?: MemoryAdapter;
|
|
122
|
+
recall?: RecallLimits;
|
|
123
|
+
events?: EventAdapter;
|
|
124
|
+
}, description: string): Promise<MolrooPersona>;
|
|
125
|
+
/**
|
|
126
|
+
* Create a new persona with explicit configuration.
|
|
130
127
|
*
|
|
131
|
-
* @
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* const sera = await MolrooPersona.create(
|
|
131
|
+
* { apiKey: 'mk_...' },
|
|
132
|
+
* { identity: { name: 'Sera' }, personality: { O: 0.8, C: 0.6, E: 0.7, A: 0.5, N: 0.3, H: 0.6 } }
|
|
133
|
+
* );
|
|
134
|
+
* ```
|
|
138
135
|
*/
|
|
139
136
|
static create(config: {
|
|
140
|
-
baseUrl
|
|
137
|
+
baseUrl?: string;
|
|
141
138
|
apiKey: string;
|
|
142
139
|
llm?: LLMInput;
|
|
143
140
|
engineLlm?: LLMInput;
|
|
144
|
-
memory?: MemoryAdapter
|
|
141
|
+
memory?: MemoryAdapter;
|
|
145
142
|
recall?: RecallLimits;
|
|
146
143
|
events?: EventAdapter;
|
|
147
144
|
}, personaConfig: PersonaConfigData): Promise<MolrooPersona>;
|
|
148
145
|
/**
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
* llm: { provider: 'openai', apiKey: '...' }
|
|
157
|
-
* ```
|
|
158
|
-
* @param personaId - The ID of the persona to connect to.
|
|
159
|
-
* @returns A connected MolrooPersona instance.
|
|
146
|
+
* Internal implementation for creating persona with resolved config.
|
|
147
|
+
* @internal
|
|
148
|
+
*/
|
|
149
|
+
private static createWithConfig;
|
|
150
|
+
/**
|
|
151
|
+
* Generate a persona from description and create it.
|
|
152
|
+
* @deprecated Use `create(config, description)` instead.
|
|
160
153
|
*/
|
|
154
|
+
static generate(config: {
|
|
155
|
+
baseUrl?: string;
|
|
156
|
+
apiKey: string;
|
|
157
|
+
llm: LLMInput;
|
|
158
|
+
engineLlm?: LLMInput;
|
|
159
|
+
memory?: MemoryAdapter;
|
|
160
|
+
recall?: RecallLimits;
|
|
161
|
+
events?: EventAdapter;
|
|
162
|
+
}, description: string): Promise<MolrooPersona>;
|
|
161
163
|
static connect(config: {
|
|
162
|
-
baseUrl
|
|
164
|
+
baseUrl?: string;
|
|
163
165
|
apiKey: string;
|
|
164
166
|
llm?: LLMInput;
|
|
165
167
|
engineLlm?: LLMInput;
|
|
166
|
-
memory?: MemoryAdapter
|
|
168
|
+
memory?: MemoryAdapter;
|
|
167
169
|
recall?: RecallLimits;
|
|
168
170
|
events?: EventAdapter;
|
|
169
171
|
}, personaId: string): Promise<MolrooPersona>;
|
|
170
|
-
/**
|
|
171
|
-
* List all personas for the authenticated tenant.
|
|
172
|
-
*
|
|
173
|
-
* @param config - API connection config (baseUrl + apiKey).
|
|
174
|
-
* @returns List of persona summaries with optional pagination cursor.
|
|
175
|
-
*/
|
|
176
172
|
static listPersonas(config: {
|
|
177
|
-
baseUrl
|
|
173
|
+
baseUrl?: string;
|
|
178
174
|
apiKey: string;
|
|
179
175
|
}): Promise<{
|
|
180
176
|
personas: PersonaSummary[];
|
|
181
177
|
nextCursor?: string;
|
|
182
178
|
}>;
|
|
183
|
-
/**
|
|
184
|
-
* Send a message to the persona and get an emotion-processed response.
|
|
185
|
-
*
|
|
186
|
-
* Internally converts the SDK-friendly options into the API wire format
|
|
187
|
-
* (`{ event: PerceiveEvent, context?: PerceiveContext }`).
|
|
188
|
-
*/
|
|
189
179
|
perceive(message: string, options?: PerceiveOptions): Promise<AgentResponse>;
|
|
190
|
-
/**
|
|
191
|
-
* Fire a non-chat event and process through the emotion engine.
|
|
192
|
-
*
|
|
193
|
-
* Unlike chat(), this does not involve LLM generation — it directly
|
|
194
|
-
* sends an event to the perceive endpoint with a required appraisal vector.
|
|
195
|
-
* The resulting episode is saved to memory and can be recalled during chat().
|
|
196
|
-
*
|
|
197
|
-
* @param type - Event type identifier (e.g. 'attack', 'gift', 'rest').
|
|
198
|
-
* @param description - Human-readable event description (used as message context).
|
|
199
|
-
* @param options - Must include `appraisal`. Optionally `from`, `stimulus`, `payload`.
|
|
200
|
-
* @returns Emotion engine response.
|
|
201
|
-
*
|
|
202
|
-
* @example
|
|
203
|
-
* ```typescript
|
|
204
|
-
* await persona.event('attack', 'goblin attacks with sword', {
|
|
205
|
-
* from: 'goblin',
|
|
206
|
-
* appraisal: {
|
|
207
|
-
* goal_relevance: 0.8,
|
|
208
|
-
* goal_congruence: -0.9,
|
|
209
|
-
* expectedness: 0.3,
|
|
210
|
-
* controllability: 0.4,
|
|
211
|
-
* agency: -0.6,
|
|
212
|
-
* norm_compatibility: -0.5,
|
|
213
|
-
* },
|
|
214
|
-
* });
|
|
215
|
-
* ```
|
|
216
|
-
*/
|
|
217
180
|
event(type: string, description: string, options: Omit<PerceiveOptions, 'type'> & {
|
|
218
181
|
appraisal: AppraisalVector;
|
|
219
182
|
}): Promise<AgentResponse>;
|
|
220
|
-
/**
|
|
221
|
-
* High-level chat: getState → LLM generate → perceive with appraisal.
|
|
222
|
-
*
|
|
223
|
-
* 1. Calls `getPromptContext()` for the server-assembled system prompt
|
|
224
|
-
* 2. Recalls episodic + semantic memories from client-side stores
|
|
225
|
-
* 3. Sends to LLM adapter for text generation + appraisal
|
|
226
|
-
* 4. Sends the appraisal to the API via `perceive()` for emotion computation
|
|
227
|
-
* 5. Runs post-chat pipeline (episode save, reflection, events)
|
|
228
|
-
*
|
|
229
|
-
* Requires {@link LLMAdapter}. Without one, use {@link perceive} directly
|
|
230
|
-
* for emotion-only interaction.
|
|
231
|
-
*/
|
|
232
183
|
chat(message: string, options?: {
|
|
233
|
-
/** Source entity — a name string or structured {@link InterlocutorContext} with description/extensions injected into the system prompt. Default: `'user'`. */
|
|
234
184
|
from?: string | InterlocutorContext;
|
|
235
185
|
history?: Message[];
|
|
236
186
|
consumerSuffix?: string;
|
|
237
|
-
/** Optional callback invoked when the LLM requests a tool call during generation. */
|
|
238
187
|
onToolCall?: (call: {
|
|
239
188
|
name: string;
|
|
240
189
|
args: Record<string, unknown>;
|
|
241
190
|
result: unknown;
|
|
242
191
|
}) => void;
|
|
243
192
|
}): Promise<PersonaChatResult>;
|
|
244
|
-
/**
|
|
245
|
-
* Advance persona time by the specified number of seconds.
|
|
246
|
-
*
|
|
247
|
-
* @param seconds - Number of seconds to advance.
|
|
248
|
-
* @returns Any pending events that were processed.
|
|
249
|
-
*/
|
|
250
193
|
tick(seconds: number): Promise<{
|
|
251
194
|
pendingEvents?: unknown[];
|
|
252
195
|
}>;
|
|
253
|
-
/**
|
|
254
|
-
* Directly set the persona's emotion state in VAD space.
|
|
255
|
-
*
|
|
256
|
-
* @param vad - Partial VAD values to set (V: -1..1, A: 0..1, D: -1..1).
|
|
257
|
-
*/
|
|
258
196
|
setEmotion(vad: Partial<{
|
|
259
197
|
V: number;
|
|
260
198
|
A: number;
|
|
261
199
|
D: number;
|
|
262
200
|
}>): Promise<void>;
|
|
263
|
-
/**
|
|
264
|
-
* Get the current emotional and psychological state of the persona.
|
|
265
|
-
*
|
|
266
|
-
* @returns Current emotion, mood, somatic, and narrative state.
|
|
267
|
-
*/
|
|
268
201
|
getState(): Promise<PersonaState>;
|
|
269
|
-
/**
|
|
270
|
-
* Get a full snapshot of the persona's internal state.
|
|
271
|
-
*
|
|
272
|
-
* @returns Complete persona snapshot for backup/restore.
|
|
273
|
-
*/
|
|
274
202
|
getSnapshot(): Promise<PersonaSnapshot>;
|
|
275
|
-
/**
|
|
276
|
-
* Restore the persona's internal state from a snapshot.
|
|
277
|
-
*
|
|
278
|
-
* @param snapshot - The snapshot to restore.
|
|
279
|
-
*/
|
|
280
203
|
putSnapshot(snapshot: PersonaSnapshot): Promise<void>;
|
|
281
|
-
/**
|
|
282
|
-
* Patch the persona's configuration (identity, personality, goals).
|
|
283
|
-
*
|
|
284
|
-
* @param updates - Configuration updates to apply.
|
|
285
|
-
*/
|
|
286
204
|
patch(updates: {
|
|
287
205
|
config?: PersonaConfigData;
|
|
288
206
|
}): Promise<void>;
|
|
289
|
-
/** Soft-delete this persona. Can be restored with {@link restore}. */
|
|
290
207
|
destroy(): Promise<void>;
|
|
291
|
-
/** Restore a previously soft-deleted persona. */
|
|
292
208
|
restore(): Promise<void>;
|
|
293
|
-
/** Whether memory is available (either single adapter or split stores). */
|
|
294
|
-
private get hasMemory();
|
|
295
|
-
/**
|
|
296
|
-
* Lightweight pipeline for perceive()-only interactions (non-chat events).
|
|
297
|
-
* Saves the episode and emits events, but skips LLM reflection.
|
|
298
|
-
*/
|
|
299
|
-
private postPerceivePipeline;
|
|
300
|
-
private postChatPipeline;
|
|
301
|
-
private handleReflection;
|
|
302
|
-
private emitResponseEvents;
|
|
303
|
-
private buildAppraisalHint;
|
|
304
|
-
private requireLLM;
|
|
305
209
|
getPromptContext(consumerSuffix?: string, sourceEntity?: string): Promise<{
|
|
306
210
|
systemPrompt: string;
|
|
307
211
|
personaPrompt: Record<string, unknown>;
|
|
308
212
|
tools?: Array<Record<string, unknown>>;
|
|
309
213
|
}>;
|
|
310
|
-
/**
|
|
311
|
-
* Search persona's episodic memory via the API.
|
|
312
|
-
* Used internally by the tool-use loop.
|
|
313
|
-
*/
|
|
314
214
|
searchMemory(query: string, options?: {
|
|
315
215
|
topK?: number;
|
|
316
216
|
minImportance?: number;
|
|
317
217
|
}): Promise<Array<Record<string, unknown>>>;
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
* Uses LLMResponseWithToolsSchema which allows the LLM to request
|
|
321
|
-
* memory searches via the search_memory field. Capped at 3 iterations.
|
|
322
|
-
*/
|
|
323
|
-
private generateWithToolLoop;
|
|
324
|
-
private buildContextBlock;
|
|
218
|
+
private get memoryPipelineDeps();
|
|
219
|
+
private requireLLM;
|
|
325
220
|
}
|
|
326
221
|
//# sourceMappingURL=persona.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../src/persona.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../src/persona.ts"],"names":[],"mappings":"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"}
|