@the-brain/core 0.2.10 → 0.2.11
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/dist/Brain.d.ts +13 -10
- package/dist/Brain.d.ts.map +1 -1
- package/dist/Brain.js +8 -52
- package/dist/Brain.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/plugins/MemoryPlugin.d.ts +11 -0
- package/dist/plugins/MemoryPlugin.d.ts.map +1 -0
- package/dist/plugins/MemoryPlugin.js +34 -0
- package/dist/plugins/MemoryPlugin.js.map +1 -0
- package/dist/plugins/SavingPlugin.d.ts +11 -0
- package/dist/plugins/SavingPlugin.d.ts.map +1 -0
- package/dist/plugins/SavingPlugin.js +27 -0
- package/dist/plugins/SavingPlugin.js.map +1 -0
- package/package.json +1 -1
package/dist/Brain.d.ts
CHANGED
|
@@ -4,10 +4,6 @@ import { IStorageAdapter } from "./adapters/IStorageAdapter.js";
|
|
|
4
4
|
import { IEmbeddingAdapter } from "./adapters/IEmbeddingAdapter.js";
|
|
5
5
|
export interface BrainConfig {
|
|
6
6
|
systemPrompt?: string;
|
|
7
|
-
builtInActions?: {
|
|
8
|
-
SAVE_ONLY?: string;
|
|
9
|
-
RESEARCH_BRAIN?: string;
|
|
10
|
-
};
|
|
11
7
|
llm?: {
|
|
12
8
|
responseTemperature?: number;
|
|
13
9
|
responseMaxTokens?: number;
|
|
@@ -27,6 +23,9 @@ export interface BrainConfig {
|
|
|
27
23
|
profileUpdateEveryN?: number;
|
|
28
24
|
};
|
|
29
25
|
}
|
|
26
|
+
export interface BrainPlugin {
|
|
27
|
+
register(brain: Brain): Promise<void>;
|
|
28
|
+
}
|
|
30
29
|
export type ActionHandler = (userId: string, text: string, context: {
|
|
31
30
|
synapticTree: string;
|
|
32
31
|
relevantEntries: IVaultEntry[];
|
|
@@ -41,16 +40,20 @@ export interface ProcessResult {
|
|
|
41
40
|
entryId?: unknown;
|
|
42
41
|
}
|
|
43
42
|
export declare class Brain {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
readonly llm: ILLMAdapter;
|
|
44
|
+
readonly storage: IStorageAdapter;
|
|
45
|
+
readonly embedding?: IEmbeddingAdapter | undefined;
|
|
47
46
|
private actionsCache;
|
|
48
|
-
private handlers;
|
|
47
|
+
private readonly handlers;
|
|
49
48
|
private saveCount;
|
|
50
49
|
private conversationCount;
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
readonly cfg: Required<{
|
|
51
|
+
llm: Required<NonNullable<BrainConfig["llm"]>>;
|
|
52
|
+
memory: Required<NonNullable<BrainConfig["memory"]>>;
|
|
53
|
+
chat: Required<NonNullable<BrainConfig["chat"]>>;
|
|
54
|
+
}>;
|
|
53
55
|
constructor(llm: ILLMAdapter, storage: IStorageAdapter, embedding?: IEmbeddingAdapter | undefined, config?: BrainConfig);
|
|
56
|
+
use(...plugins: BrainPlugin[]): Promise<void>;
|
|
54
57
|
loadActions(): Promise<void>;
|
|
55
58
|
registerAction(name: string, description: string, handler: ActionHandler): Promise<void>;
|
|
56
59
|
removeAction(name: string): Promise<void>;
|
package/dist/Brain.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Brain.d.ts","sourceRoot":"","sources":["../src/Brain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAc,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"Brain.d.ts","sourceRoot":"","sources":["../src/Brain.ts"],"names":[],"mappings":"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"}
|
package/dist/Brain.js
CHANGED
|
@@ -3,16 +3,8 @@ import { getBrainContext } from "./services/ai/intent.context.service.js";
|
|
|
3
3
|
import { proccessAndStore } from "./services/ingest/ingest.service.js";
|
|
4
4
|
import { runSubconsciousRoutine } from "./services/brain/subconscious.routine.js";
|
|
5
5
|
import { runConsciousProcessor } from "./services/brain/conscious.processor.js";
|
|
6
|
-
import {
|
|
7
|
-
import { SAVE_RESPONSE_PROMPT } from "./services/ai/prompts/save-response.prompt.js";
|
|
8
|
-
import { PERSONALITY_SYSTEM_PROMPT } from "./services/ai/prompts/personality.prompt.js";
|
|
9
|
-
import { USER_PROFILE_PROMPT, buildSystemPrompt } from "./services/ai/prompts/user-profile.prompt.js";
|
|
6
|
+
import { USER_PROFILE_PROMPT } from "./services/ai/prompts/user-profile.prompt.js";
|
|
10
7
|
import { LLM, CHAT, MEMORY, BRAIN } from "./config/constants.js";
|
|
11
|
-
// ─── Built-in handlers ────────────────────────────────────────────────────────
|
|
12
|
-
const BUILT_IN_ACTIONS = [
|
|
13
|
-
{ name: "SAVE_ONLY", description: "user states a fact, shares info, opinion, preference, or wants to store something" },
|
|
14
|
-
{ name: "RESEARCH_BRAIN", description: "user explicitly asks a question about past notes, memory, or stored knowledge" },
|
|
15
|
-
];
|
|
16
8
|
export class Brain {
|
|
17
9
|
llm;
|
|
18
10
|
storage;
|
|
@@ -21,7 +13,6 @@ export class Brain {
|
|
|
21
13
|
handlers = new Map();
|
|
22
14
|
saveCount = 0;
|
|
23
15
|
conversationCount = 0;
|
|
24
|
-
_config;
|
|
25
16
|
cfg;
|
|
26
17
|
constructor(llm, storage, embedding, config) {
|
|
27
18
|
this.llm = llm;
|
|
@@ -47,45 +38,15 @@ export class Brain {
|
|
|
47
38
|
profileUpdateEveryN: config?.chat?.profileUpdateEveryN ?? CHAT.PROFILE_UPDATE_EVERY_N,
|
|
48
39
|
},
|
|
49
40
|
};
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const fullContext = relevantEntries
|
|
57
|
-
.map((e, i) => `[${i + 1}] ${e.rawText.substring(0, maxCharsPerEntry)}`)
|
|
58
|
-
.join('\n\n---\n\n');
|
|
59
|
-
const prompt = hasContext
|
|
60
|
-
? RESEARCH_ANSWER_PROMPT(text, fullContext, chatHistory)
|
|
61
|
-
: `The user asked: "${text}"\n\nYou don't have anything stored about this yet. Let them know and ask if they want to tell you more.`;
|
|
62
|
-
const answer = await this.llm.complete({
|
|
63
|
-
systemPrompt,
|
|
64
|
-
userPrompt: prompt,
|
|
65
|
-
temperature: this.cfg.llm.responseTemperature,
|
|
66
|
-
maxTokens: this.cfg.llm.responseMaxTokens,
|
|
67
|
-
});
|
|
68
|
-
return answer ?? "Coś poszło nie tak z generowaniem odpowiedzi.";
|
|
69
|
-
});
|
|
70
|
-
this.handlers.set("SAVE_ONLY", async (userId, text, _context, _llm, chatHistory) => {
|
|
71
|
-
const userProfile = await this.storage.getUserProfile(userId);
|
|
72
|
-
const systemPrompt = buildSystemPrompt(basePersonality, userProfile);
|
|
73
|
-
const answer = await this.llm.complete({
|
|
74
|
-
systemPrompt,
|
|
75
|
-
userPrompt: SAVE_RESPONSE_PROMPT(text, chatHistory),
|
|
76
|
-
temperature: this.cfg.llm.saveTemperature,
|
|
77
|
-
maxTokens: this.cfg.llm.saveMaxTokens,
|
|
78
|
-
});
|
|
79
|
-
return answer ?? "Zapisałem to.";
|
|
80
|
-
});
|
|
41
|
+
}
|
|
42
|
+
// ─── Plugins ──────────────────────────────────────────────────────────────
|
|
43
|
+
async use(...plugins) {
|
|
44
|
+
for (const plugin of plugins) {
|
|
45
|
+
await plugin.register(this);
|
|
46
|
+
}
|
|
81
47
|
}
|
|
82
48
|
// ─── Actions ──────────────────────────────────────────────────────────────
|
|
83
49
|
async loadActions() {
|
|
84
|
-
// Seed built-in actions if not present
|
|
85
|
-
for (const action of BUILT_IN_ACTIONS) {
|
|
86
|
-
const description = this._config?.builtInActions?.[action.name] ?? action.description;
|
|
87
|
-
await this.storage.upsertAction(action.name, description, true);
|
|
88
|
-
}
|
|
89
50
|
this.actionsCache = await this.storage.getActions();
|
|
90
51
|
}
|
|
91
52
|
async registerAction(name, description, handler) {
|
|
@@ -100,8 +61,7 @@ export class Brain {
|
|
|
100
61
|
}
|
|
101
62
|
// ─── Process ──────────────────────────────────────────────────────────────
|
|
102
63
|
async process(userId, text) {
|
|
103
|
-
const actions = this.actionsCache
|
|
104
|
-
// Load persistent chat history from DB
|
|
64
|
+
const actions = this.actionsCache;
|
|
105
65
|
const chatHistory = await this.storage.getChatHistory(userId);
|
|
106
66
|
const intent = await classifyIntent({ userText: text, chatHistory, actions }, this.llm);
|
|
107
67
|
const context = await getBrainContext(userId, text, this.storage, this.embedding, this.cfg.memory);
|
|
@@ -113,15 +73,12 @@ export class Brain {
|
|
|
113
73
|
if (intent.action === "SAVE_ONLY") {
|
|
114
74
|
const entry = await proccessAndStore(userId, text, this.llm, this.storage, this.embedding);
|
|
115
75
|
answer = await handler(userId, text, context, this.llm, chatHistory);
|
|
116
|
-
// Trigger maintenance every N saves (fire and forget)
|
|
117
76
|
this.saveCount++;
|
|
118
77
|
if (this.saveCount % this.cfg.chat.maintenanceEveryN === 0) {
|
|
119
78
|
this.runMaintenance().catch(err => console.error('[Brain] Maintenance error:', err));
|
|
120
79
|
}
|
|
121
|
-
// Persist chat history
|
|
122
80
|
await this.storage.appendChatMessage(userId, "user", text, this.cfg.chat.historyMaxStored);
|
|
123
81
|
await this.storage.appendChatMessage(userId, "assistant", answer, this.cfg.chat.historyMaxStored);
|
|
124
|
-
// Update user profile every N conversations (fire and forget)
|
|
125
82
|
this.conversationCount++;
|
|
126
83
|
if (this.conversationCount % this.cfg.chat.profileUpdateEveryN === 0) {
|
|
127
84
|
this.updateUserProfile(userId, chatHistory).catch(err => console.error('[Brain] Profile update error:', err));
|
|
@@ -131,7 +88,6 @@ export class Brain {
|
|
|
131
88
|
answer = await handler(userId, text, context, this.llm, chatHistory);
|
|
132
89
|
await this.storage.appendChatMessage(userId, "user", text, this.cfg.chat.historyMaxStored);
|
|
133
90
|
await this.storage.appendChatMessage(userId, "assistant", answer, this.cfg.chat.historyMaxStored);
|
|
134
|
-
// Update user profile every N conversations (fire and forget)
|
|
135
91
|
this.conversationCount++;
|
|
136
92
|
if (this.conversationCount % this.cfg.chat.profileUpdateEveryN === 0) {
|
|
137
93
|
this.updateUserProfile(userId, chatHistory).catch(err => console.error('[Brain] Profile update error:', err));
|
package/dist/Brain.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Brain.js","sourceRoot":"","sources":["../src/Brain.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAe,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Brain.js","sourceRoot":"","sources":["../src/Brain.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { Brain } from "./Brain.js";
|
|
2
|
-
export type { ActionHandler, ProcessResult, BrainConfig } from "./Brain.js";
|
|
2
|
+
export type { ActionHandler, ProcessResult, BrainConfig, BrainPlugin } from "./Brain.js";
|
|
3
|
+
export { MemoryPlugin } from "./plugins/MemoryPlugin.js";
|
|
4
|
+
export { SavingPlugin } from "./plugins/SavingPlugin.js";
|
|
3
5
|
export type { ILLMAdapter, LLMRequest } from "./adapters/ILLMAdapter.js";
|
|
4
6
|
export type { IEmbeddingAdapter } from "./adapters/IEmbeddingAdapter.js";
|
|
5
7
|
export type { IStorageAdapter, ActionInfo, EntryAnalysisData, } from "./adapters/IStorageAdapter.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACzE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,YAAY,EACV,eAAe,EACf,UAAU,EACV,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,gCAAgC,EAAE,MAAM,0DAA0D,CAAC;AAG5G,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACzF,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,YAAY,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,YAAY,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAG9E,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAGhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
// ─── Main class ───────────────────────────────────────────────────────────────
|
|
2
2
|
export { Brain } from "./Brain.js";
|
|
3
|
+
// ─── Built-in plugins ─────────────────────────────────────────────────────────
|
|
4
|
+
export { MemoryPlugin } from "./plugins/MemoryPlugin.js";
|
|
5
|
+
export { SavingPlugin } from "./plugins/SavingPlugin.js";
|
|
3
6
|
// ─── Built-in LLM adapters ────────────────────────────────────────────────────
|
|
4
7
|
export { OpenAICompatibleAdapter } from "./adapters/llm/OpenAICompatibleAdapter.js";
|
|
5
8
|
export { OpenAICompatibleEmbeddingAdapter } from "./adapters/embedding/OpenAICompatibleEmbeddingAdapter.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,iFAAiF;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAWzD,iFAAiF;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,gCAAgC,EAAE,MAAM,0DAA0D,CAAC;AAU5G,iFAAiF;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGjE,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAElF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAGhF,iFAAiF;AACjF,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAEhF,iFAAiF;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Brain, BrainPlugin } from "../Brain.js";
|
|
2
|
+
export declare class MemoryPlugin implements BrainPlugin {
|
|
3
|
+
private readonly description;
|
|
4
|
+
private readonly systemPrompt;
|
|
5
|
+
constructor(options?: {
|
|
6
|
+
description?: string;
|
|
7
|
+
systemPrompt?: string;
|
|
8
|
+
});
|
|
9
|
+
register(brain: Brain): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=MemoryPlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/MemoryPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAKtD,qBAAa,YAAa,YAAW,WAAW;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;IAM/D,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CAyB5C"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { RESEARCH_ANSWER_PROMPT } from "../services/ai/prompts/research-answer.prompt.js";
|
|
2
|
+
import { PERSONALITY_SYSTEM_PROMPT } from "../services/ai/prompts/personality.prompt.js";
|
|
3
|
+
import { buildSystemPrompt } from "../services/ai/prompts/user-profile.prompt.js";
|
|
4
|
+
export class MemoryPlugin {
|
|
5
|
+
description;
|
|
6
|
+
systemPrompt;
|
|
7
|
+
constructor(options) {
|
|
8
|
+
this.description = options?.description
|
|
9
|
+
?? "user explicitly asks a question about past notes, memory, or stored knowledge";
|
|
10
|
+
this.systemPrompt = options?.systemPrompt ?? PERSONALITY_SYSTEM_PROMPT;
|
|
11
|
+
}
|
|
12
|
+
async register(brain) {
|
|
13
|
+
const systemPrompt = this.systemPrompt;
|
|
14
|
+
await brain.registerAction("RESEARCH_BRAIN", this.description, async (userId, text, { relevantEntries, hasContext }, _llm, chatHistory) => {
|
|
15
|
+
const userProfile = await brain.storage.getUserProfile(userId);
|
|
16
|
+
const sysPrompt = buildSystemPrompt(systemPrompt, userProfile);
|
|
17
|
+
const maxChars = brain.cfg.memory.contextMaxCharsPerEntry;
|
|
18
|
+
const fullContext = relevantEntries
|
|
19
|
+
.map((e, i) => `[${i + 1}] ${e.rawText.substring(0, maxChars)}`)
|
|
20
|
+
.join('\n\n---\n\n');
|
|
21
|
+
const prompt = hasContext
|
|
22
|
+
? RESEARCH_ANSWER_PROMPT(text, fullContext, chatHistory)
|
|
23
|
+
: `The user asked: "${text}"\n\nYou don't have anything stored about this yet. Let them know and ask if they want to tell you more.`;
|
|
24
|
+
const answer = await brain.llm.complete({
|
|
25
|
+
systemPrompt: sysPrompt,
|
|
26
|
+
userPrompt: prompt,
|
|
27
|
+
temperature: brain.cfg.llm.responseTemperature,
|
|
28
|
+
maxTokens: brain.cfg.llm.responseMaxTokens,
|
|
29
|
+
});
|
|
30
|
+
return answer ?? "Coś poszło nie tak z generowaniem odpowiedzi.";
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=MemoryPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryPlugin.js","sourceRoot":"","sources":["../../src/plugins/MemoryPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAElF,MAAM,OAAO,YAAY;IACN,WAAW,CAAS;IACpB,YAAY,CAAS;IAEtC,YAAY,OAAyD;QACnE,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW;eAClC,+EAA+E,CAAC;QACrF,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,yBAAyB,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAY;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,KAAK,CAAC,cAAc,CACxB,gBAAgB,EAChB,IAAI,CAAC,WAAW,EAChB,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;YACzE,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC;YAC1D,MAAM,WAAW,GAAG,eAAe;iBAChC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;iBAC/D,IAAI,CAAC,aAAa,CAAC,CAAC;YACvB,MAAM,MAAM,GAAG,UAAU;gBACvB,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC;gBACxD,CAAC,CAAC,oBAAoB,IAAI,0GAA0G,CAAC;YACvI,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACtC,YAAY,EAAE,SAAS;gBACvB,UAAU,EAAE,MAAM;gBAClB,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB;gBAC9C,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB;aAC3C,CAAC,CAAC;YACH,OAAO,MAAM,IAAI,+CAA+C,CAAC;QACnE,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Brain, BrainPlugin } from "../Brain.js";
|
|
2
|
+
export declare class SavingPlugin implements BrainPlugin {
|
|
3
|
+
private readonly description;
|
|
4
|
+
private readonly systemPrompt;
|
|
5
|
+
constructor(options?: {
|
|
6
|
+
description?: string;
|
|
7
|
+
systemPrompt?: string;
|
|
8
|
+
});
|
|
9
|
+
register(brain: Brain): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=SavingPlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SavingPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/SavingPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAKtD,qBAAa,YAAa,YAAW,WAAW;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;IAM/D,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CAkB5C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SAVE_RESPONSE_PROMPT } from "../services/ai/prompts/save-response.prompt.js";
|
|
2
|
+
import { PERSONALITY_SYSTEM_PROMPT } from "../services/ai/prompts/personality.prompt.js";
|
|
3
|
+
import { buildSystemPrompt } from "../services/ai/prompts/user-profile.prompt.js";
|
|
4
|
+
export class SavingPlugin {
|
|
5
|
+
description;
|
|
6
|
+
systemPrompt;
|
|
7
|
+
constructor(options) {
|
|
8
|
+
this.description = options?.description
|
|
9
|
+
?? "user states a fact, shares info, opinion, preference, or wants to store something";
|
|
10
|
+
this.systemPrompt = options?.systemPrompt ?? PERSONALITY_SYSTEM_PROMPT;
|
|
11
|
+
}
|
|
12
|
+
async register(brain) {
|
|
13
|
+
const systemPrompt = this.systemPrompt;
|
|
14
|
+
await brain.registerAction("SAVE_ONLY", this.description, async (userId, text, _context, _llm, chatHistory) => {
|
|
15
|
+
const userProfile = await brain.storage.getUserProfile(userId);
|
|
16
|
+
const sysPrompt = buildSystemPrompt(systemPrompt, userProfile);
|
|
17
|
+
const answer = await brain.llm.complete({
|
|
18
|
+
systemPrompt: sysPrompt,
|
|
19
|
+
userPrompt: SAVE_RESPONSE_PROMPT(text, chatHistory),
|
|
20
|
+
temperature: brain.cfg.llm.saveTemperature,
|
|
21
|
+
maxTokens: brain.cfg.llm.saveMaxTokens,
|
|
22
|
+
});
|
|
23
|
+
return answer ?? "Zapisałem to.";
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=SavingPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SavingPlugin.js","sourceRoot":"","sources":["../../src/plugins/SavingPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAElF,MAAM,OAAO,YAAY;IACN,WAAW,CAAS;IACpB,YAAY,CAAS;IAEtC,YAAY,OAAyD;QACnE,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW;eAClC,mFAAmF,CAAC;QACzF,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,yBAAyB,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAY;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,KAAK,CAAC,cAAc,CACxB,WAAW,EACX,IAAI,CAAC,WAAW,EAChB,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;YAClD,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACtC,YAAY,EAAE,SAAS;gBACvB,UAAU,EAAE,oBAAoB,CAAC,IAAI,EAAE,WAAW,CAAC;gBACnD,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe;gBAC1C,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa;aACvC,CAAC,CAAC;YACH,OAAO,MAAM,IAAI,eAAe,CAAC;QACnC,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
|