@molroo-io/sdk 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +251 -0
- package/dist/cjs/api-client.d.ts +23 -0
- package/dist/cjs/api-client.d.ts.map +1 -0
- package/dist/cjs/api-client.js +55 -0
- package/dist/cjs/defaults/index.d.ts +8 -0
- package/dist/cjs/defaults/index.d.ts.map +1 -0
- package/dist/cjs/defaults/index.js +30 -0
- package/dist/cjs/defaults/persona.json +17 -0
- package/dist/cjs/embedding/cloudflare.d.ts +15 -0
- package/dist/cjs/embedding/cloudflare.d.ts.map +1 -0
- package/dist/cjs/embedding/cloudflare.js +16 -0
- package/dist/cjs/embedding/cohere.d.ts +8 -0
- package/dist/cjs/embedding/cohere.d.ts.map +1 -0
- package/dist/cjs/embedding/cohere.js +31 -0
- package/dist/cjs/embedding/index.d.ts +9 -0
- package/dist/cjs/embedding/index.d.ts.map +1 -0
- package/dist/cjs/embedding/index.js +11 -0
- package/dist/cjs/embedding/local.d.ts +6 -0
- package/dist/cjs/embedding/local.d.ts.map +1 -0
- package/dist/cjs/embedding/local.js +28 -0
- package/dist/cjs/embedding/openai.d.ts +9 -0
- package/dist/cjs/embedding/openai.d.ts.map +1 -0
- package/dist/cjs/embedding/openai.js +26 -0
- package/dist/cjs/errors.d.ts +17 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +21 -0
- package/dist/cjs/events/console.d.ts +25 -0
- package/dist/cjs/events/console.d.ts.map +1 -0
- package/dist/cjs/events/console.js +41 -0
- package/dist/cjs/events/types.d.ts +28 -0
- package/dist/cjs/events/types.d.ts.map +1 -0
- package/dist/cjs/events/types.js +13 -0
- package/dist/cjs/events/webhook.d.ts +30 -0
- package/dist/cjs/events/webhook.d.ts.map +1 -0
- package/dist/cjs/events/webhook.js +79 -0
- package/dist/cjs/generate/persona.d.ts +16 -0
- package/dist/cjs/generate/persona.d.ts.map +1 -0
- package/dist/cjs/generate/persona.js +42 -0
- package/dist/cjs/generate/prompt.d.ts +7 -0
- package/dist/cjs/generate/prompt.d.ts.map +1 -0
- package/dist/cjs/generate/prompt.js +41 -0
- package/dist/cjs/generate/schema.d.ts +32 -0
- package/dist/cjs/generate/schema.d.ts.map +1 -0
- package/dist/cjs/generate/schema.js +54 -0
- package/dist/cjs/generated/index.d.ts +2 -0
- package/dist/cjs/generated/index.d.ts.map +1 -0
- package/dist/cjs/generated/index.js +2 -0
- package/dist/cjs/index.d.ts +66 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +69 -0
- package/dist/cjs/llm/adapter.d.ts +61 -0
- package/dist/cjs/llm/adapter.d.ts.map +1 -0
- package/dist/cjs/llm/adapter.js +2 -0
- package/dist/cjs/llm/resolve.d.ts +28 -0
- package/dist/cjs/llm/resolve.d.ts.map +1 -0
- package/dist/cjs/llm/resolve.js +20 -0
- package/dist/cjs/llm/schema.d.ts +60 -0
- package/dist/cjs/llm/schema.d.ts.map +1 -0
- package/dist/cjs/llm/schema.js +72 -0
- package/dist/cjs/llm/types.d.ts +24 -0
- package/dist/cjs/llm/types.d.ts.map +1 -0
- package/dist/cjs/llm/types.js +2 -0
- package/dist/cjs/llm/vercel-ai/adapter.d.ts +29 -0
- package/dist/cjs/llm/vercel-ai/adapter.d.ts.map +1 -0
- package/dist/cjs/llm/vercel-ai/adapter.js +234 -0
- package/dist/cjs/llm/vercel-ai/config.d.ts +9 -0
- package/dist/cjs/llm/vercel-ai/config.d.ts.map +1 -0
- package/dist/cjs/llm/vercel-ai/config.js +2 -0
- package/dist/cjs/llm/vercel-ai/index.d.ts +9 -0
- package/dist/cjs/llm/vercel-ai/index.d.ts.map +1 -0
- package/dist/cjs/llm/vercel-ai/index.js +13 -0
- package/dist/cjs/memory/cloudflare/index.d.ts +3 -0
- package/dist/cjs/memory/cloudflare/index.d.ts.map +1 -0
- package/dist/cjs/memory/cloudflare/index.js +5 -0
- package/dist/cjs/memory/cloudflare/vectorize.d.ts +62 -0
- package/dist/cjs/memory/cloudflare/vectorize.d.ts.map +1 -0
- package/dist/cjs/memory/cloudflare/vectorize.js +55 -0
- package/dist/cjs/memory/in-memory-semantic.d.ts +16 -0
- package/dist/cjs/memory/in-memory-semantic.d.ts.map +1 -0
- package/dist/cjs/memory/in-memory-semantic.js +57 -0
- package/dist/cjs/memory/in-memory.d.ts +46 -0
- package/dist/cjs/memory/in-memory.d.ts.map +1 -0
- package/dist/cjs/memory/in-memory.js +115 -0
- package/dist/cjs/memory/pinecone/index.d.ts +7 -0
- package/dist/cjs/memory/pinecone/index.d.ts.map +1 -0
- package/dist/cjs/memory/pinecone/index.js +8 -0
- package/dist/cjs/memory/pinecone/memory-adapter.d.ts +62 -0
- package/dist/cjs/memory/pinecone/memory-adapter.d.ts.map +1 -0
- package/dist/cjs/memory/pinecone/memory-adapter.js +220 -0
- package/dist/cjs/memory/pinecone/semantic.d.ts +44 -0
- package/dist/cjs/memory/pinecone/semantic.d.ts.map +1 -0
- package/dist/cjs/memory/pinecone/semantic.js +90 -0
- package/dist/cjs/memory/recall.d.ts +58 -0
- package/dist/cjs/memory/recall.d.ts.map +1 -0
- package/dist/cjs/memory/recall.js +220 -0
- package/dist/cjs/memory/semantic.d.ts +24 -0
- package/dist/cjs/memory/semantic.d.ts.map +1 -0
- package/dist/cjs/memory/semantic.js +2 -0
- package/dist/cjs/memory/sqlite/index.d.ts +3 -0
- package/dist/cjs/memory/sqlite/index.d.ts.map +1 -0
- package/dist/cjs/memory/sqlite/index.js +5 -0
- package/dist/cjs/memory/sqlite/memory-adapter.d.ts +58 -0
- package/dist/cjs/memory/sqlite/memory-adapter.d.ts.map +1 -0
- package/dist/cjs/memory/sqlite/memory-adapter.js +336 -0
- package/dist/cjs/memory/sqlite/schema.d.ts +4 -0
- package/dist/cjs/memory/sqlite/schema.d.ts.map +1 -0
- package/dist/cjs/memory/sqlite/schema.js +91 -0
- package/dist/cjs/memory/supabase/index.d.ts +7 -0
- package/dist/cjs/memory/supabase/index.d.ts.map +1 -0
- package/dist/cjs/memory/supabase/index.js +8 -0
- package/dist/cjs/memory/supabase/memory-adapter.d.ts +67 -0
- package/dist/cjs/memory/supabase/memory-adapter.d.ts.map +1 -0
- package/dist/cjs/memory/supabase/memory-adapter.js +335 -0
- package/dist/cjs/memory/supabase/semantic.d.ts +44 -0
- package/dist/cjs/memory/supabase/semantic.d.ts.map +1 -0
- package/dist/cjs/memory/supabase/semantic.js +72 -0
- package/dist/cjs/memory/types.d.ts +231 -0
- package/dist/cjs/memory/types.d.ts.map +1 -0
- package/dist/cjs/memory/types.js +12 -0
- package/dist/cjs/persona.d.ts +326 -0
- package/dist/cjs/persona.d.ts.map +1 -0
- package/dist/cjs/persona.js +824 -0
- package/dist/cjs/types.d.ts +263 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +15 -0
- package/dist/cjs/world/client.d.ts +36 -0
- package/dist/cjs/world/client.d.ts.map +1 -0
- package/dist/cjs/world/client.js +59 -0
- package/dist/cjs/world/errors.d.ts +9 -0
- package/dist/cjs/world/errors.d.ts.map +1 -0
- package/dist/cjs/world/errors.js +15 -0
- package/dist/cjs/world/index.d.ts +10 -0
- package/dist/cjs/world/index.d.ts.map +1 -0
- package/dist/cjs/world/index.js +16 -0
- package/dist/cjs/world/types.d.ts +101 -0
- package/dist/cjs/world/types.d.ts.map +1 -0
- package/dist/cjs/world/types.js +8 -0
- package/dist/cjs/world/village.d.ts +75 -0
- package/dist/cjs/world/village.d.ts.map +1 -0
- package/dist/cjs/world/village.js +278 -0
- package/dist/cjs/world/world-persona.d.ts +182 -0
- package/dist/cjs/world/world-persona.d.ts.map +1 -0
- package/dist/cjs/world/world-persona.js +192 -0
- package/dist/cjs/world/world.d.ts +41 -0
- package/dist/cjs/world/world.d.ts.map +1 -0
- package/dist/cjs/world/world.js +91 -0
- package/dist/esm/api-client.d.ts +23 -0
- package/dist/esm/api-client.d.ts.map +1 -0
- package/dist/esm/api-client.js +48 -0
- package/dist/esm/defaults/index.d.ts +8 -0
- package/dist/esm/defaults/index.d.ts.map +1 -0
- package/dist/esm/defaults/index.js +23 -0
- package/dist/esm/defaults/persona.json +17 -0
- package/dist/esm/embedding/cloudflare.d.ts +15 -0
- package/dist/esm/embedding/cloudflare.d.ts.map +1 -0
- package/dist/esm/embedding/cloudflare.js +13 -0
- package/dist/esm/embedding/cohere.d.ts +8 -0
- package/dist/esm/embedding/cohere.d.ts.map +1 -0
- package/dist/esm/embedding/cohere.js +28 -0
- package/dist/esm/embedding/index.d.ts +9 -0
- package/dist/esm/embedding/index.d.ts.map +1 -0
- package/dist/esm/embedding/index.js +4 -0
- package/dist/esm/embedding/local.d.ts +6 -0
- package/dist/esm/embedding/local.d.ts.map +1 -0
- package/dist/esm/embedding/local.js +25 -0
- package/dist/esm/embedding/openai.d.ts +9 -0
- package/dist/esm/embedding/openai.d.ts.map +1 -0
- package/dist/esm/embedding/openai.js +23 -0
- package/dist/esm/errors.d.ts +17 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +17 -0
- package/dist/esm/events/console.d.ts +25 -0
- package/dist/esm/events/console.d.ts.map +1 -0
- package/dist/esm/events/console.js +37 -0
- package/dist/esm/events/types.d.ts +28 -0
- package/dist/esm/events/types.d.ts.map +1 -0
- package/dist/esm/events/types.js +12 -0
- package/dist/esm/events/webhook.d.ts +30 -0
- package/dist/esm/events/webhook.d.ts.map +1 -0
- package/dist/esm/events/webhook.js +75 -0
- package/dist/esm/generate/persona.d.ts +16 -0
- package/dist/esm/generate/persona.d.ts.map +1 -0
- package/dist/esm/generate/persona.js +39 -0
- package/dist/esm/generate/prompt.d.ts +7 -0
- package/dist/esm/generate/prompt.d.ts.map +1 -0
- package/dist/esm/generate/prompt.js +38 -0
- package/dist/esm/generate/schema.d.ts +32 -0
- package/dist/esm/generate/schema.d.ts.map +1 -0
- package/dist/esm/generate/schema.js +51 -0
- package/dist/esm/generated/index.d.ts +2 -0
- package/dist/esm/generated/index.d.ts.map +1 -0
- package/dist/esm/generated/index.js +1 -0
- package/dist/esm/index.d.ts +66 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +49 -0
- package/dist/esm/llm/adapter.d.ts +61 -0
- package/dist/esm/llm/adapter.d.ts.map +1 -0
- package/dist/esm/llm/adapter.js +1 -0
- package/dist/esm/llm/resolve.d.ts +28 -0
- package/dist/esm/llm/resolve.d.ts.map +1 -0
- package/dist/esm/llm/resolve.js +17 -0
- package/dist/esm/llm/schema.d.ts +60 -0
- package/dist/esm/llm/schema.d.ts.map +1 -0
- package/dist/esm/llm/schema.js +69 -0
- package/dist/esm/llm/types.d.ts +24 -0
- package/dist/esm/llm/types.d.ts.map +1 -0
- package/dist/esm/llm/types.js +1 -0
- package/dist/esm/llm/vercel-ai/adapter.d.ts +29 -0
- package/dist/esm/llm/vercel-ai/adapter.d.ts.map +1 -0
- package/dist/esm/llm/vercel-ai/adapter.js +196 -0
- package/dist/esm/llm/vercel-ai/config.d.ts +9 -0
- package/dist/esm/llm/vercel-ai/config.d.ts.map +1 -0
- package/dist/esm/llm/vercel-ai/config.js +1 -0
- package/dist/esm/llm/vercel-ai/index.d.ts +9 -0
- package/dist/esm/llm/vercel-ai/index.d.ts.map +1 -0
- package/dist/esm/llm/vercel-ai/index.js +8 -0
- package/dist/esm/memory/cloudflare/index.d.ts +3 -0
- package/dist/esm/memory/cloudflare/index.d.ts.map +1 -0
- package/dist/esm/memory/cloudflare/index.js +1 -0
- package/dist/esm/memory/cloudflare/vectorize.d.ts +62 -0
- package/dist/esm/memory/cloudflare/vectorize.d.ts.map +1 -0
- package/dist/esm/memory/cloudflare/vectorize.js +51 -0
- package/dist/esm/memory/in-memory-semantic.d.ts +16 -0
- package/dist/esm/memory/in-memory-semantic.d.ts.map +1 -0
- package/dist/esm/memory/in-memory-semantic.js +53 -0
- package/dist/esm/memory/in-memory.d.ts +46 -0
- package/dist/esm/memory/in-memory.d.ts.map +1 -0
- package/dist/esm/memory/in-memory.js +111 -0
- package/dist/esm/memory/pinecone/index.d.ts +7 -0
- package/dist/esm/memory/pinecone/index.d.ts.map +1 -0
- package/dist/esm/memory/pinecone/index.js +3 -0
- package/dist/esm/memory/pinecone/memory-adapter.d.ts +62 -0
- package/dist/esm/memory/pinecone/memory-adapter.d.ts.map +1 -0
- package/dist/esm/memory/pinecone/memory-adapter.js +216 -0
- package/dist/esm/memory/pinecone/semantic.d.ts +44 -0
- package/dist/esm/memory/pinecone/semantic.d.ts.map +1 -0
- package/dist/esm/memory/pinecone/semantic.js +86 -0
- package/dist/esm/memory/recall.d.ts +58 -0
- package/dist/esm/memory/recall.d.ts.map +1 -0
- package/dist/esm/memory/recall.js +215 -0
- package/dist/esm/memory/semantic.d.ts +24 -0
- package/dist/esm/memory/semantic.d.ts.map +1 -0
- package/dist/esm/memory/semantic.js +1 -0
- package/dist/esm/memory/sqlite/index.d.ts +3 -0
- package/dist/esm/memory/sqlite/index.d.ts.map +1 -0
- package/dist/esm/memory/sqlite/index.js +1 -0
- package/dist/esm/memory/sqlite/memory-adapter.d.ts +58 -0
- package/dist/esm/memory/sqlite/memory-adapter.d.ts.map +1 -0
- package/dist/esm/memory/sqlite/memory-adapter.js +296 -0
- package/dist/esm/memory/sqlite/schema.d.ts +4 -0
- package/dist/esm/memory/sqlite/schema.d.ts.map +1 -0
- package/dist/esm/memory/sqlite/schema.js +86 -0
- package/dist/esm/memory/supabase/index.d.ts +7 -0
- package/dist/esm/memory/supabase/index.d.ts.map +1 -0
- package/dist/esm/memory/supabase/index.js +3 -0
- package/dist/esm/memory/supabase/memory-adapter.d.ts +67 -0
- package/dist/esm/memory/supabase/memory-adapter.d.ts.map +1 -0
- package/dist/esm/memory/supabase/memory-adapter.js +331 -0
- package/dist/esm/memory/supabase/semantic.d.ts +44 -0
- package/dist/esm/memory/supabase/semantic.d.ts.map +1 -0
- package/dist/esm/memory/supabase/semantic.js +68 -0
- package/dist/esm/memory/types.d.ts +231 -0
- package/dist/esm/memory/types.d.ts.map +1 -0
- package/dist/esm/memory/types.js +9 -0
- package/dist/esm/persona.d.ts +326 -0
- package/dist/esm/persona.d.ts.map +1 -0
- package/dist/esm/persona.js +787 -0
- package/dist/esm/types.d.ts +263 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +11 -0
- package/dist/esm/world/client.d.ts +36 -0
- package/dist/esm/world/client.d.ts.map +1 -0
- package/dist/esm/world/client.js +52 -0
- package/dist/esm/world/errors.d.ts +9 -0
- package/dist/esm/world/errors.d.ts.map +1 -0
- package/dist/esm/world/errors.js +11 -0
- package/dist/esm/world/index.d.ts +10 -0
- package/dist/esm/world/index.d.ts.map +1 -0
- package/dist/esm/world/index.js +8 -0
- package/dist/esm/world/types.d.ts +101 -0
- package/dist/esm/world/types.d.ts.map +1 -0
- package/dist/esm/world/types.js +7 -0
- package/dist/esm/world/village.d.ts +75 -0
- package/dist/esm/world/village.d.ts.map +1 -0
- package/dist/esm/world/village.js +274 -0
- package/dist/esm/world/world-persona.d.ts +182 -0
- package/dist/esm/world/world-persona.d.ts.map +1 -0
- package/dist/esm/world/world-persona.js +188 -0
- package/dist/esm/world/world.d.ts +41 -0
- package/dist/esm/world/world.d.ts.map +1 -0
- package/dist/esm/world/world.js +87 -0
- package/package.json +207 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { EventAdapter, SDKEvent } from './types';
|
|
2
|
+
export interface ConsoleEventAdapterOptions {
|
|
3
|
+
/** Prefix for log lines. Default: '[molroo]'. */
|
|
4
|
+
prefix?: string;
|
|
5
|
+
/** Only emit these event types. Empty = all. */
|
|
6
|
+
filter?: string[];
|
|
7
|
+
/** Output format. Default: 'human'. */
|
|
8
|
+
format?: 'human' | 'json';
|
|
9
|
+
/** Custom logger function. Default: console.log. */
|
|
10
|
+
logger?: (message: string) => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Console-based EventAdapter for development/debugging.
|
|
14
|
+
* Logs events to console (or a custom logger function).
|
|
15
|
+
*/
|
|
16
|
+
export declare class ConsoleEventAdapter implements EventAdapter {
|
|
17
|
+
private prefix;
|
|
18
|
+
private filter;
|
|
19
|
+
private format;
|
|
20
|
+
private logger;
|
|
21
|
+
constructor(options?: ConsoleEventAdapterOptions);
|
|
22
|
+
emit(event: SDKEvent): Promise<void>;
|
|
23
|
+
emitBatch(events: SDKEvent[]): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=console.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../src/events/console.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,WAAW,0BAA0B;IACzC,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,oDAAoD;IACpD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IACtD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAA4B;gBAE9B,OAAO,CAAC,EAAE,0BAA0B;IAO1C,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAapC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAKnD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConsoleEventAdapter = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Console-based EventAdapter for development/debugging.
|
|
6
|
+
* Logs events to console (or a custom logger function).
|
|
7
|
+
*/
|
|
8
|
+
class ConsoleEventAdapter {
|
|
9
|
+
constructor(options) {
|
|
10
|
+
this.prefix = options?.prefix ?? '[molroo]';
|
|
11
|
+
this.filter = new Set(options?.filter ?? []);
|
|
12
|
+
this.format = options?.format ?? 'human';
|
|
13
|
+
this.logger = options?.logger ?? console.log;
|
|
14
|
+
}
|
|
15
|
+
async emit(event) {
|
|
16
|
+
if (this.filter.size > 0 && !this.filter.has(event.type)) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (this.format === 'json') {
|
|
20
|
+
this.logger(`${this.prefix} ${JSON.stringify(event)}`);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const time = new Date(event.timestamp).toISOString();
|
|
24
|
+
this.logger(`${this.prefix} ${time} ${event.type}: ${summarize(event.payload)}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async emitBatch(events) {
|
|
28
|
+
for (const event of events) {
|
|
29
|
+
await this.emit(event);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.ConsoleEventAdapter = ConsoleEventAdapter;
|
|
34
|
+
function summarize(payload) {
|
|
35
|
+
const keys = Object.keys(payload);
|
|
36
|
+
if (keys.length === 0)
|
|
37
|
+
return '{}';
|
|
38
|
+
if (keys.length <= 3)
|
|
39
|
+
return JSON.stringify(payload);
|
|
40
|
+
return `{${keys.slice(0, 3).join(', ')} + ${keys.length - 3} more}`;
|
|
41
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
/** 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
|
+
export interface EventAdapter {
|
|
23
|
+
/** Emit a single event. */
|
|
24
|
+
emit(event: SDKEvent): Promise<void>;
|
|
25
|
+
/** Emit multiple events in batch. Optional — falls back to sequential emit(). */
|
|
26
|
+
emitBatch?(events: SDKEvent[]): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { EventAdapter, SDKEvent } from './types';
|
|
2
|
+
export interface WebhookEventAdapterOptions {
|
|
3
|
+
/** Webhook endpoint URL. */
|
|
4
|
+
url: string;
|
|
5
|
+
/** HMAC secret for signing payloads. Optional. */
|
|
6
|
+
secret?: string;
|
|
7
|
+
/** Max retry attempts on server errors. Default: 2. */
|
|
8
|
+
maxRetries?: number;
|
|
9
|
+
/** Request timeout in ms. Default: 5000. */
|
|
10
|
+
timeoutMs?: number;
|
|
11
|
+
/** Additional HTTP headers. */
|
|
12
|
+
headers?: Record<string, string>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Webhook-based EventAdapter for production event delivery.
|
|
16
|
+
* Sends events as POST requests with optional HMAC signing and retry.
|
|
17
|
+
*/
|
|
18
|
+
export declare class WebhookEventAdapter implements EventAdapter {
|
|
19
|
+
private url;
|
|
20
|
+
private secret?;
|
|
21
|
+
private maxRetries;
|
|
22
|
+
private timeoutMs;
|
|
23
|
+
private headers;
|
|
24
|
+
constructor(options: WebhookEventAdapterOptions);
|
|
25
|
+
emit(event: SDKEvent): Promise<void>;
|
|
26
|
+
emitBatch(events: SDKEvent[]): Promise<void>;
|
|
27
|
+
private post;
|
|
28
|
+
private sign;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=webhook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../src/events/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGtD,MAAM,WAAW,0BAA0B;IACzC,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IACtD,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAyB;gBAE5B,OAAO,EAAE,0BAA0B;IAQzC,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAIpC,IAAI;IAwDlB,OAAO,CAAC,IAAI;CAIb"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebhookEventAdapter = void 0;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
/**
|
|
6
|
+
* Webhook-based EventAdapter for production event delivery.
|
|
7
|
+
* Sends events as POST requests with optional HMAC signing and retry.
|
|
8
|
+
*/
|
|
9
|
+
class WebhookEventAdapter {
|
|
10
|
+
constructor(options) {
|
|
11
|
+
this.url = options.url;
|
|
12
|
+
this.secret = options.secret;
|
|
13
|
+
this.maxRetries = options.maxRetries ?? 2;
|
|
14
|
+
this.timeoutMs = options.timeoutMs ?? 5000;
|
|
15
|
+
this.headers = options.headers ?? {};
|
|
16
|
+
}
|
|
17
|
+
async emit(event) {
|
|
18
|
+
await this.post(event);
|
|
19
|
+
}
|
|
20
|
+
async emitBatch(events) {
|
|
21
|
+
await this.post(events);
|
|
22
|
+
}
|
|
23
|
+
async post(body) {
|
|
24
|
+
const jsonBody = JSON.stringify(body);
|
|
25
|
+
const timestamp = Math.floor(Date.now() / 1000);
|
|
26
|
+
const headers = {
|
|
27
|
+
'Content-Type': 'application/json',
|
|
28
|
+
...this.headers,
|
|
29
|
+
};
|
|
30
|
+
if (this.secret) {
|
|
31
|
+
const signature = this.sign(timestamp, jsonBody);
|
|
32
|
+
headers['X-Molroo-Signature'] = `t=${timestamp},v1=${signature}`;
|
|
33
|
+
}
|
|
34
|
+
let lastError;
|
|
35
|
+
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
36
|
+
if (attempt > 0) {
|
|
37
|
+
await sleep(200 * Math.pow(2, attempt - 1));
|
|
38
|
+
}
|
|
39
|
+
const controller = new AbortController();
|
|
40
|
+
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
41
|
+
try {
|
|
42
|
+
const response = await fetch(this.url, {
|
|
43
|
+
method: 'POST',
|
|
44
|
+
headers,
|
|
45
|
+
body: jsonBody,
|
|
46
|
+
signal: controller.signal,
|
|
47
|
+
});
|
|
48
|
+
clearTimeout(timer);
|
|
49
|
+
if (response.ok)
|
|
50
|
+
return;
|
|
51
|
+
if (response.status >= 400 && response.status < 500) {
|
|
52
|
+
throw new Error(`Webhook rejected: ${response.status} ${response.statusText}`);
|
|
53
|
+
}
|
|
54
|
+
lastError = new Error(`Webhook failed: ${response.status} ${response.statusText}`);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
clearTimeout(timer);
|
|
58
|
+
if (err.name === 'AbortError') {
|
|
59
|
+
lastError = new Error(`Webhook timeout after ${this.timeoutMs}ms`);
|
|
60
|
+
}
|
|
61
|
+
else if (err.message?.startsWith('Webhook rejected')) {
|
|
62
|
+
throw err;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
lastError = err;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
throw lastError ?? new Error('Webhook delivery failed');
|
|
70
|
+
}
|
|
71
|
+
sign(timestamp, body) {
|
|
72
|
+
const payload = `${timestamp}.${body}`;
|
|
73
|
+
return (0, node_crypto_1.createHmac)('sha256', this.secret).update(payload).digest('hex');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.WebhookEventAdapter = WebhookEventAdapter;
|
|
77
|
+
function sleep(ms) {
|
|
78
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
79
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { LLMAdapter } from '../llm/adapter';
|
|
2
|
+
import type { PersonaConfigData } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Generate a structured persona from a natural language character description.
|
|
5
|
+
*
|
|
6
|
+
* Uses LLM structured output to extract HEXACO personality traits, identity,
|
|
7
|
+
* goals, and narrative fields from free-form text.
|
|
8
|
+
*
|
|
9
|
+
* Returns a `PersonaConfigData` that can be passed directly to `MolrooPersona.create()`.
|
|
10
|
+
*
|
|
11
|
+
* @param llm - LLMAdapter instance (built-in or custom)
|
|
12
|
+
* @param description - Free-form character description (markdown accepted)
|
|
13
|
+
* @returns Persona config ready for MolrooPersona.create()
|
|
14
|
+
*/
|
|
15
|
+
export declare function generatePersona(llm: LLMAdapter, description: string): Promise<PersonaConfigData>;
|
|
16
|
+
//# sourceMappingURL=persona.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../../src/generate/persona.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAY,MAAM,UAAU,CAAC;AAI5D;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,UAAU,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CA6B5B"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generatePersona = generatePersona;
|
|
4
|
+
const schema_1 = require("./schema");
|
|
5
|
+
const prompt_1 = require("./prompt");
|
|
6
|
+
/**
|
|
7
|
+
* Generate a structured persona from a natural language character description.
|
|
8
|
+
*
|
|
9
|
+
* Uses LLM structured output to extract HEXACO personality traits, identity,
|
|
10
|
+
* goals, and narrative fields from free-form text.
|
|
11
|
+
*
|
|
12
|
+
* Returns a `PersonaConfigData` that can be passed directly to `MolrooPersona.create()`.
|
|
13
|
+
*
|
|
14
|
+
* @param llm - LLMAdapter instance (built-in or custom)
|
|
15
|
+
* @param description - Free-form character description (markdown accepted)
|
|
16
|
+
* @returns Persona config ready for MolrooPersona.create()
|
|
17
|
+
*/
|
|
18
|
+
async function generatePersona(llm, description) {
|
|
19
|
+
const system = (0, prompt_1.buildSystemPrompt)();
|
|
20
|
+
const { object: raw } = await llm.generateObject({
|
|
21
|
+
system,
|
|
22
|
+
messages: [{ role: 'user', content: description }],
|
|
23
|
+
schema: schema_1.GeneratePersonaSchema,
|
|
24
|
+
});
|
|
25
|
+
const identity = {
|
|
26
|
+
name: raw.persona.identity.name,
|
|
27
|
+
role: raw.persona.identity.role,
|
|
28
|
+
speakingStyle: raw.persona.identity.speaking_style,
|
|
29
|
+
coreValues: raw.persona.identity.core_values,
|
|
30
|
+
};
|
|
31
|
+
if (raw.character_backstory) {
|
|
32
|
+
identity.description = raw.character_backstory;
|
|
33
|
+
}
|
|
34
|
+
if (raw.behavior_rules) {
|
|
35
|
+
identity.extensions = { 'Behavior Rules': raw.behavior_rules };
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
identity,
|
|
39
|
+
personality: raw.persona.personality,
|
|
40
|
+
goals: raw.persona.goals,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System prompt for generatePersona() LLM call.
|
|
3
|
+
* Based on packages/api/src/presets/guide-data.ts — embedded as static text
|
|
4
|
+
* to avoid runtime dependency on the API package.
|
|
5
|
+
*/
|
|
6
|
+
export declare function buildSystemPrompt(): string;
|
|
7
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/generate/prompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,wBAAgB,iBAAiB,IAAI,MAAM,CAgB1C"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* System prompt for generatePersona() LLM call.
|
|
4
|
+
* Based on packages/api/src/presets/guide-data.ts — embedded as static text
|
|
5
|
+
* to avoid runtime dependency on the API package.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.buildSystemPrompt = buildSystemPrompt;
|
|
9
|
+
const HEXACO_GUIDE = `Personality traits (HEXACO model, each 0.0 to 1.0):
|
|
10
|
+
- O (Openness to Experience): 0.0=prefers familiar routines, practical, concrete → 1.0=highly creative, seeks novel experiences, abstract thinker
|
|
11
|
+
- C (Conscientiousness): 0.0=spontaneous, impulsive, dislikes rigid schedules → 1.0=extremely organized, reliable, self-disciplined
|
|
12
|
+
- E (Extraversion): 0.0=prefers solitude, reserved, finds social interaction draining → 1.0=sociable, energized by crowds, talkative, assertive
|
|
13
|
+
- A (Agreeableness): 0.0=competitive, skeptical of others, blunt and critical → 1.0=warm, trusting, helpful, empathetic, avoids conflict
|
|
14
|
+
- N (Emotionality): 0.0=emotionally stable, handles stress well, calm under pressure → 1.0=emotionally reactive, sensitive to stress, prone to anxiety
|
|
15
|
+
- H (Honesty-Humility): 0.0=strategic with truth, values status, self-promoting → 1.0=sincere, fair, humble, avoids manipulation`;
|
|
16
|
+
const GUIDELINES = `Guidelines:
|
|
17
|
+
- Infer personality values from the character's described behavior, backstory, and temperament.
|
|
18
|
+
- speaking_style must be specific: include tone, speech patterns, verbal habits, language level.
|
|
19
|
+
- core_values: 3-5 abstract values that drive the character's decisions.
|
|
20
|
+
- goals: 0-5 goals the character pursues. priority 0.0-1.0, mutable=false for core goals, true for flexible ones. An empty array is valid for goalless/apathetic characters.
|
|
21
|
+
- character_backstory: background narrative that shapes the character. Expand if sparse, but don't invent contradictions. Max 4000 chars. Omit if not relevant.
|
|
22
|
+
- behavior_rules: explicit behavioral constraints. Max 2000 chars. Omit if not relevant.
|
|
23
|
+
- Keep all text faithful to the original description.
|
|
24
|
+
- Return ONLY the JSON object. No markdown fences, no explanation.`;
|
|
25
|
+
function buildSystemPrompt() {
|
|
26
|
+
return `You are a character design assistant for an emotion simulation engine.
|
|
27
|
+
Given a character description, extract structured data and return a valid JSON object.
|
|
28
|
+
|
|
29
|
+
The personality values you assign will directly drive a psychological simulation model.
|
|
30
|
+
These are not labels — they are numeric parameters that determine how the character:
|
|
31
|
+
- Processes emotions (reactivity, stability, recovery speed)
|
|
32
|
+
- Pursues goals (persistence, adaptability, reactance to control)
|
|
33
|
+
- Forms relationships (trust speed, attachment style, social energy)
|
|
34
|
+
- Narrates their life (redemption vs contamination arcs, agency, coherence)
|
|
35
|
+
|
|
36
|
+
Be precise and intentional with each value.
|
|
37
|
+
|
|
38
|
+
${HEXACO_GUIDE}
|
|
39
|
+
|
|
40
|
+
${GUIDELINES}`;
|
|
41
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for LLM-generated persona output.
|
|
4
|
+
* Used with LLMProvider.generate() for structured extraction.
|
|
5
|
+
*/
|
|
6
|
+
export declare const GeneratePersonaSchema: z.ZodObject<{
|
|
7
|
+
persona: z.ZodObject<{
|
|
8
|
+
identity: z.ZodObject<{
|
|
9
|
+
name: z.ZodString;
|
|
10
|
+
role: z.ZodOptional<z.ZodString>;
|
|
11
|
+
core_values: z.ZodArray<z.ZodString>;
|
|
12
|
+
speaking_style: z.ZodString;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
personality: z.ZodObject<{
|
|
15
|
+
O: z.ZodNumber;
|
|
16
|
+
C: z.ZodNumber;
|
|
17
|
+
E: z.ZodNumber;
|
|
18
|
+
A: z.ZodNumber;
|
|
19
|
+
N: z.ZodNumber;
|
|
20
|
+
H: z.ZodNumber;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
goals: z.ZodArray<z.ZodObject<{
|
|
23
|
+
content: z.ZodString;
|
|
24
|
+
priority: z.ZodNumber;
|
|
25
|
+
mutable: z.ZodBoolean;
|
|
26
|
+
}, z.core.$strip>>;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
character_backstory: z.ZodOptional<z.ZodString>;
|
|
29
|
+
behavior_rules: z.ZodOptional<z.ZodString>;
|
|
30
|
+
}, z.core.$strip>;
|
|
31
|
+
export type GeneratePersonaSchemaOutput = z.infer<typeof GeneratePersonaSchema>;
|
|
32
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/generate/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;iBA+ChC,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GeneratePersonaSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
/**
|
|
6
|
+
* Zod schema for LLM-generated persona output.
|
|
7
|
+
* Used with LLMProvider.generate() for structured extraction.
|
|
8
|
+
*/
|
|
9
|
+
exports.GeneratePersonaSchema = zod_1.z.object({
|
|
10
|
+
persona: zod_1.z.object({
|
|
11
|
+
identity: zod_1.z.object({
|
|
12
|
+
name: zod_1.z.string().describe('Character name'),
|
|
13
|
+
role: zod_1.z
|
|
14
|
+
.string()
|
|
15
|
+
.optional()
|
|
16
|
+
.describe('One-line role or title'),
|
|
17
|
+
core_values: zod_1.z
|
|
18
|
+
.array(zod_1.z.string())
|
|
19
|
+
.min(3)
|
|
20
|
+
.max(5)
|
|
21
|
+
.describe('Abstract values that drive the character (3-5)'),
|
|
22
|
+
speaking_style: zod_1.z
|
|
23
|
+
.string()
|
|
24
|
+
.describe('Specific speech patterns: tone, mannerisms, verbal habits, language level'),
|
|
25
|
+
}),
|
|
26
|
+
personality: zod_1.z.object({
|
|
27
|
+
O: zod_1.z.number().min(0).max(1).describe('Openness to Experience: 0=conventional → 1=creative'),
|
|
28
|
+
C: zod_1.z.number().min(0).max(1).describe('Conscientiousness: 0=spontaneous → 1=organized'),
|
|
29
|
+
E: zod_1.z.number().min(0).max(1).describe('Extraversion: 0=introverted → 1=sociable'),
|
|
30
|
+
A: zod_1.z.number().min(0).max(1).describe('Agreeableness: 0=competitive → 1=cooperative'),
|
|
31
|
+
N: zod_1.z.number().min(0).max(1).describe('Emotionality: 0=stable → 1=reactive'),
|
|
32
|
+
H: zod_1.z.number().min(0).max(1).describe('Honesty-Humility: 0=manipulative → 1=sincere'),
|
|
33
|
+
}),
|
|
34
|
+
goals: zod_1.z
|
|
35
|
+
.array(zod_1.z.object({
|
|
36
|
+
content: zod_1.z.string().describe('What the character wants to achieve'),
|
|
37
|
+
priority: zod_1.z.number().min(0).max(1).describe('Goal importance (0-1)'),
|
|
38
|
+
mutable: zod_1.z.boolean().describe('false for core identity goals, true for flexible ones'),
|
|
39
|
+
}))
|
|
40
|
+
.min(0)
|
|
41
|
+
.max(5)
|
|
42
|
+
.describe('Character goals (0-5). Empty array for goalless characters.'),
|
|
43
|
+
}),
|
|
44
|
+
character_backstory: zod_1.z
|
|
45
|
+
.string()
|
|
46
|
+
.max(4000)
|
|
47
|
+
.optional()
|
|
48
|
+
.describe('Background narrative shaping worldview and behavior (max 4000 chars)'),
|
|
49
|
+
behavior_rules: zod_1.z
|
|
50
|
+
.string()
|
|
51
|
+
.max(2000)
|
|
52
|
+
.optional()
|
|
53
|
+
.describe('Explicit behavior rules and constraints (max 2000 chars)'),
|
|
54
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @molroo-io/sdk - Thin Client SDK for molroo emotion engine
|
|
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.
|
|
9
|
+
*
|
|
10
|
+
* The API/engine never call LLM. This SDK is the bridge.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```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!');
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export { MolrooPersona } from './persona';
|
|
34
|
+
export { MolrooApiError } from './types';
|
|
35
|
+
export type { LLMAdapter, Message, GenerateTextOptions, GenerateObjectOptions, } from './llm/adapter';
|
|
36
|
+
export type { LLMShorthand, LLMInput } from './llm/resolve';
|
|
37
|
+
export { VercelAIAdapter, createVercelAIAdapter } from './llm/vercel-ai';
|
|
38
|
+
export type { VercelAIConfig } from './llm/vercel-ai';
|
|
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';
|
|
57
|
+
export type { InterlocutorContext, PerceiveOptions, PerceiveEvent, PerceiveContext, } from './types';
|
|
58
|
+
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
|
+
export type { PersonaSnapshot, PersonaConfigData, PersonalityTraits, Identity, Goal, MotivationContext, } from './types';
|
|
60
|
+
export type { ApiResponse, ApiErrorResponse, PersonaDynamicState, } from './types';
|
|
61
|
+
export { AppraisalVectorSchema, LLMResponseSchema, LLMResponseWithToolsSchema, } from './llm/schema';
|
|
62
|
+
export type { LLMResponseOutput, LLMResponseWithToolsOutput } from './llm/schema';
|
|
63
|
+
export type { LLMPrompt, LLMResponse, } from './llm/types';
|
|
64
|
+
export type { ChatMessage } from './llm/types';
|
|
65
|
+
export { DEFAULT_PERSONA, withDefaults } from './defaults';
|
|
66
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @molroo-io/sdk - Thin Client SDK for molroo emotion engine
|
|
4
|
+
*
|
|
5
|
+
* ## Boundary — this is where LLM orchestration lives:
|
|
6
|
+
* - **LLM calls happen HERE** — consumer's API key, consumer's model.
|
|
7
|
+
* - **Appraisal generation happens HERE** — LLM produces appraisal, SDK sends to API.
|
|
8
|
+
* - **Memory recall happens HERE** — episodic/semantic/reflections from client stores.
|
|
9
|
+
* - **Prompt composition**: API returns persona fragment → SDK adds memory context.
|
|
10
|
+
*
|
|
11
|
+
* The API/engine never call LLM. This SDK is the bridge.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { MolrooPersona } from '@molroo-io/sdk';
|
|
16
|
+
* import { createVercelAIAdapter } from '@molroo-io/sdk';
|
|
17
|
+
*
|
|
18
|
+
* const llm = createVercelAIAdapter({
|
|
19
|
+
* provider: 'openai',
|
|
20
|
+
* apiKey: process.env.OPENAI_API_KEY!,
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* const persona = await MolrooPersona.create({
|
|
24
|
+
* baseUrl: 'https://api.molroo.io',
|
|
25
|
+
* apiKey: 'your_api_key',
|
|
26
|
+
* llm,
|
|
27
|
+
* }, {
|
|
28
|
+
* config: { identity: { name: 'Sera' }, personality: { O: 0.7, C: 0.6, E: 0.8, A: 0.5, N: 0.3, H: 0.6 } },
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* const result = await persona.chat('Hello!');
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.withDefaults = exports.DEFAULT_PERSONA = exports.LLMResponseWithToolsSchema = exports.LLMResponseSchema = exports.AppraisalVectorSchema = exports.GeneratePersonaSchema = exports.generatePersona = exports.WebhookEventAdapter = exports.ConsoleEventAdapter = exports.InMemoryEpisodeStore = exports.InMemorySemanticMemory = exports.InMemoryEpisodeAdapter = exports.isMemoryConfig = exports.createVercelAIAdapter = exports.VercelAIAdapter = exports.MolrooApiError = exports.MolrooPersona = void 0;
|
|
36
|
+
// ── Main exports ──
|
|
37
|
+
var persona_1 = require("./persona");
|
|
38
|
+
Object.defineProperty(exports, "MolrooPersona", { enumerable: true, get: function () { return persona_1.MolrooPersona; } });
|
|
39
|
+
var types_1 = require("./types");
|
|
40
|
+
Object.defineProperty(exports, "MolrooApiError", { enumerable: true, get: function () { return types_1.MolrooApiError; } });
|
|
41
|
+
var vercel_ai_1 = require("./llm/vercel-ai");
|
|
42
|
+
Object.defineProperty(exports, "VercelAIAdapter", { enumerable: true, get: function () { return vercel_ai_1.VercelAIAdapter; } });
|
|
43
|
+
Object.defineProperty(exports, "createVercelAIAdapter", { enumerable: true, get: function () { return vercel_ai_1.createVercelAIAdapter; } });
|
|
44
|
+
var types_2 = require("./memory/types");
|
|
45
|
+
Object.defineProperty(exports, "isMemoryConfig", { enumerable: true, get: function () { return types_2.isMemoryConfig; } });
|
|
46
|
+
var in_memory_1 = require("./memory/in-memory");
|
|
47
|
+
Object.defineProperty(exports, "InMemoryEpisodeAdapter", { enumerable: true, get: function () { return in_memory_1.InMemoryEpisodeAdapter; } });
|
|
48
|
+
var in_memory_semantic_1 = require("./memory/in-memory-semantic");
|
|
49
|
+
Object.defineProperty(exports, "InMemorySemanticMemory", { enumerable: true, get: function () { return in_memory_semantic_1.InMemorySemanticMemory; } });
|
|
50
|
+
var in_memory_2 = require("./memory/in-memory");
|
|
51
|
+
Object.defineProperty(exports, "InMemoryEpisodeStore", { enumerable: true, get: function () { return in_memory_2.InMemoryEpisodeStore; } });
|
|
52
|
+
var console_1 = require("./events/console");
|
|
53
|
+
Object.defineProperty(exports, "ConsoleEventAdapter", { enumerable: true, get: function () { return console_1.ConsoleEventAdapter; } });
|
|
54
|
+
var webhook_1 = require("./events/webhook");
|
|
55
|
+
Object.defineProperty(exports, "WebhookEventAdapter", { enumerable: true, get: function () { return webhook_1.WebhookEventAdapter; } });
|
|
56
|
+
// ── Generate ──
|
|
57
|
+
var persona_2 = require("./generate/persona");
|
|
58
|
+
Object.defineProperty(exports, "generatePersona", { enumerable: true, get: function () { return persona_2.generatePersona; } });
|
|
59
|
+
var schema_1 = require("./generate/schema");
|
|
60
|
+
Object.defineProperty(exports, "GeneratePersonaSchema", { enumerable: true, get: function () { return schema_1.GeneratePersonaSchema; } });
|
|
61
|
+
// ── LLM types & schemas ──
|
|
62
|
+
var schema_2 = require("./llm/schema");
|
|
63
|
+
Object.defineProperty(exports, "AppraisalVectorSchema", { enumerable: true, get: function () { return schema_2.AppraisalVectorSchema; } });
|
|
64
|
+
Object.defineProperty(exports, "LLMResponseSchema", { enumerable: true, get: function () { return schema_2.LLMResponseSchema; } });
|
|
65
|
+
Object.defineProperty(exports, "LLMResponseWithToolsSchema", { enumerable: true, get: function () { return schema_2.LLMResponseWithToolsSchema; } });
|
|
66
|
+
// ── Defaults ──
|
|
67
|
+
var defaults_1 = require("./defaults");
|
|
68
|
+
Object.defineProperty(exports, "DEFAULT_PERSONA", { enumerable: true, get: function () { return defaults_1.DEFAULT_PERSONA; } });
|
|
69
|
+
Object.defineProperty(exports, "withDefaults", { enumerable: true, get: function () { return defaults_1.withDefaults; } });
|