sensorium-mcp 2.17.28 → 3.0.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/Install-Sensorium.ps1 +327 -0
- package/README.md +14 -0
- package/dist/config.d.ts +16 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +39 -2
- package/dist/config.js.map +1 -1
- package/dist/daily-session.d.ts +2 -1
- package/dist/daily-session.d.ts.map +1 -1
- package/dist/daily-session.js +23 -26
- package/dist/daily-session.js.map +1 -1
- package/dist/dashboard/routes/settings.d.ts +4 -0
- package/dist/dashboard/routes/settings.d.ts.map +1 -1
- package/dist/dashboard/routes/settings.js +57 -1
- package/dist/dashboard/routes/settings.js.map +1 -1
- package/dist/dashboard/routes/threads.d.ts +1 -0
- package/dist/dashboard/routes/threads.d.ts.map +1 -1
- package/dist/dashboard/routes/threads.js +23 -25
- package/dist/dashboard/routes/threads.js.map +1 -1
- package/dist/dashboard/routes.d.ts.map +1 -1
- package/dist/dashboard/routes.js +7 -2
- package/dist/dashboard/routes.js.map +1 -1
- package/dist/dashboard/spa.html +11 -11
- package/dist/data/interfaces.d.ts +36 -0
- package/dist/data/interfaces.d.ts.map +1 -0
- package/dist/data/interfaces.js +2 -0
- package/dist/data/interfaces.js.map +1 -0
- package/dist/data/memory/bootstrap.d.ts +36 -16
- package/dist/data/memory/bootstrap.d.ts.map +1 -1
- package/dist/data/memory/bootstrap.js +71 -217
- package/dist/data/memory/bootstrap.js.map +1 -1
- package/dist/data/memory/consolidation.d.ts +35 -34
- package/dist/data/memory/consolidation.d.ts.map +1 -1
- package/dist/data/memory/consolidation.js +43 -554
- package/dist/data/memory/consolidation.js.map +1 -1
- package/dist/data/memory/migration-runner.d.ts +5 -0
- package/dist/data/memory/migration-runner.d.ts.map +1 -0
- package/dist/data/memory/migration-runner.js +403 -0
- package/dist/data/memory/migration-runner.js.map +1 -0
- package/dist/data/memory/reflection.js +1 -1
- package/dist/data/memory/schema-ddl.d.ts +4 -0
- package/dist/data/memory/schema-ddl.d.ts.map +1 -0
- package/dist/data/memory/schema-ddl.js +194 -0
- package/dist/data/memory/schema-ddl.js.map +1 -0
- package/dist/data/memory/schema-guard.d.ts +3 -0
- package/dist/data/memory/schema-guard.d.ts.map +1 -0
- package/dist/data/memory/schema-guard.js +184 -0
- package/dist/data/memory/schema-guard.js.map +1 -0
- package/dist/data/memory/schema.d.ts +2 -5
- package/dist/data/memory/schema.d.ts.map +1 -1
- package/dist/data/memory/schema.js +6 -834
- package/dist/data/memory/schema.js.map +1 -1
- package/dist/data/memory/synthesis.js +2 -2
- package/dist/data/memory/synthesis.js.map +1 -1
- package/dist/data/memory/thread-registry.d.ts +18 -4
- package/dist/data/memory/thread-registry.d.ts.map +1 -1
- package/dist/data/memory/thread-registry.js +25 -0
- package/dist/data/memory/thread-registry.js.map +1 -1
- package/dist/data/sent-message.repository.d.ts +12 -0
- package/dist/data/sent-message.repository.d.ts.map +1 -0
- package/dist/data/sent-message.repository.js +31 -0
- package/dist/data/sent-message.repository.js.map +1 -0
- package/dist/http-server.d.ts.map +1 -1
- package/dist/http-server.js +23 -2
- package/dist/http-server.js.map +1 -1
- package/dist/index.js +27 -48
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +7 -2
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +89 -12
- package/dist/logger.js.map +1 -1
- package/dist/scheduler.d.ts +8 -0
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +15 -0
- package/dist/scheduler.js.map +1 -1
- package/dist/server/factory.d.ts +2 -1
- package/dist/server/factory.d.ts.map +1 -1
- package/dist/server/factory.js +11 -4
- package/dist/server/factory.js.map +1 -1
- package/dist/services/agent-spawn.service.d.ts +39 -0
- package/dist/services/agent-spawn.service.d.ts.map +1 -0
- package/dist/services/agent-spawn.service.js +348 -0
- package/dist/services/agent-spawn.service.js.map +1 -0
- package/dist/services/background-runner.d.ts +26 -0
- package/dist/services/background-runner.d.ts.map +1 -0
- package/dist/services/background-runner.js +71 -0
- package/dist/services/background-runner.js.map +1 -0
- package/dist/services/consolidation.service.d.ts +16 -0
- package/dist/services/consolidation.service.d.ts.map +1 -0
- package/dist/services/consolidation.service.js +508 -0
- package/dist/services/consolidation.service.js.map +1 -0
- package/dist/services/dispatcher/broker.d.ts +2 -0
- package/dist/services/dispatcher/broker.d.ts.map +1 -1
- package/dist/services/dispatcher/broker.js +5 -10
- package/dist/services/dispatcher/broker.js.map +1 -1
- package/dist/services/dispatcher/index.d.ts +1 -1
- package/dist/services/dispatcher/index.d.ts.map +1 -1
- package/dist/services/dispatcher/index.js +1 -1
- package/dist/services/dispatcher/index.js.map +1 -1
- package/dist/services/dispatcher/lock.d.ts.map +1 -1
- package/dist/services/dispatcher/lock.js +7 -11
- package/dist/services/dispatcher/lock.js.map +1 -1
- package/dist/services/maintenance-signal.d.ts +18 -0
- package/dist/services/maintenance-signal.d.ts.map +1 -0
- package/dist/services/maintenance-signal.js +48 -0
- package/dist/services/maintenance-signal.js.map +1 -0
- package/dist/services/memory-briefing.service.d.ts +4 -0
- package/dist/services/memory-briefing.service.d.ts.map +1 -0
- package/dist/services/memory-briefing.service.js +143 -0
- package/dist/services/memory-briefing.service.js.map +1 -0
- package/dist/services/process.service.d.ts +31 -0
- package/dist/services/process.service.d.ts.map +1 -0
- package/dist/services/process.service.js +100 -0
- package/dist/services/process.service.js.map +1 -0
- package/dist/services/thread-health.service.d.ts +18 -0
- package/dist/services/thread-health.service.d.ts.map +1 -0
- package/dist/services/thread-health.service.js +118 -0
- package/dist/services/thread-health.service.js.map +1 -0
- package/dist/services/thread-lifecycle.service.d.ts +52 -0
- package/dist/services/thread-lifecycle.service.d.ts.map +1 -0
- package/dist/services/thread-lifecycle.service.js +174 -0
- package/dist/services/thread-lifecycle.service.js.map +1 -0
- package/dist/services/topic.service.d.ts +25 -0
- package/dist/services/topic.service.d.ts.map +1 -0
- package/dist/services/topic.service.js +65 -0
- package/dist/services/topic.service.js.map +1 -0
- package/dist/services/worker-cleanup.service.d.ts +8 -0
- package/dist/services/worker-cleanup.service.d.ts.map +1 -0
- package/dist/services/worker-cleanup.service.js +82 -0
- package/dist/services/worker-cleanup.service.js.map +1 -0
- package/dist/sessions.d.ts +14 -0
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js +55 -0
- package/dist/sessions.js.map +1 -1
- package/dist/telegram.d.ts +13 -6
- package/dist/telegram.d.ts.map +1 -1
- package/dist/telegram.js +43 -14
- package/dist/telegram.js.map +1 -1
- package/dist/tools/delegate-tool.d.ts +4 -0
- package/dist/tools/delegate-tool.d.ts.map +1 -1
- package/dist/tools/delegate-tool.js +48 -109
- package/dist/tools/delegate-tool.js.map +1 -1
- package/dist/tools/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory-tools.js +1 -1
- package/dist/tools/memory-tools.js.map +1 -1
- package/dist/tools/shared-agent-utils.d.ts +9 -1
- package/dist/tools/shared-agent-utils.d.ts.map +1 -1
- package/dist/tools/shared-agent-utils.js +21 -38
- package/dist/tools/shared-agent-utils.js.map +1 -1
- package/dist/tools/start-session-tool.d.ts +2 -0
- package/dist/tools/start-session-tool.d.ts.map +1 -1
- package/dist/tools/start-session-tool.js +66 -106
- package/dist/tools/start-session-tool.js.map +1 -1
- package/dist/tools/thread-lifecycle.d.ts +5 -127
- package/dist/tools/thread-lifecycle.d.ts.map +1 -1
- package/dist/tools/thread-lifecycle.js +5 -1167
- package/dist/tools/thread-lifecycle.js.map +1 -1
- package/dist/tools/utility-tools.js +5 -2
- package/dist/tools/utility-tools.js.map +1 -1
- package/dist/tools/wait/drive-handler.d.ts +0 -1
- package/dist/tools/wait/drive-handler.d.ts.map +1 -1
- package/dist/tools/wait/drive-handler.js +5 -22
- package/dist/tools/wait/drive-handler.js.map +1 -1
- package/dist/tools/wait/message-delivery.js +1 -1
- package/dist/tools/wait/message-delivery.js.map +1 -1
- package/dist/tools/wait/message-processing.d.ts.map +1 -1
- package/dist/tools/wait/message-processing.js +9 -8
- package/dist/tools/wait/message-processing.js.map +1 -1
- package/dist/tools/wait/poll-loop.d.ts +2 -0
- package/dist/tools/wait/poll-loop.d.ts.map +1 -1
- package/dist/tools/wait/poll-loop.js +27 -29
- package/dist/tools/wait/poll-loop.js.map +1 -1
- package/dist/tools/wait/task-handler.d.ts +0 -3
- package/dist/tools/wait/task-handler.d.ts.map +1 -1
- package/dist/tools/wait/task-handler.js +3 -2
- package/dist/tools/wait/task-handler.js.map +1 -1
- package/dist/types.d.ts +0 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -8
- package/supervisor/config.go +182 -69
- package/supervisor/config_test.go +78 -0
- package/supervisor/go.mod +12 -0
- package/supervisor/go.sum +20 -0
- package/supervisor/health.go +56 -6
- package/supervisor/health_test.go +29 -0
- package/supervisor/keeper.go +15 -10
- package/supervisor/log.go +109 -28
- package/supervisor/log_test.go +86 -6
- package/supervisor/main.go +150 -19
- package/supervisor/main_test.go +130 -0
- package/supervisor/process.go +47 -4
- package/supervisor/process_test.go +14 -0
- package/supervisor/secrets.go +95 -0
- package/supervisor/secrets_securevault_test.go +98 -0
- package/supervisor/secrets_test.go +119 -0
- package/supervisor/self_update.go +282 -0
- package/supervisor/self_update_test.go +177 -0
- package/supervisor/service_restart_stub.go +9 -0
- package/supervisor/service_restart_windows.go +63 -0
- package/supervisor/service_stub.go +15 -0
- package/supervisor/service_windows.go +216 -0
- package/supervisor/update_state.go +264 -0
- package/supervisor/update_state_test.go +306 -0
- package/supervisor/updater.go +311 -10
- package/supervisor/updater_test.go +64 -0
- package/scripts/install-supervisor.ps1 +0 -67
- package/scripts/install-supervisor.sh +0 -43
- package/scripts/start-supervisor.ps1 +0 -46
- package/scripts/start-supervisor.sh +0 -20
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Database } from "./memory/schema.js";
|
|
2
|
+
import type { ThreadRegistryEntry } from "./memory/thread-registry.js";
|
|
3
|
+
import type { ScheduledTask } from "../scheduler.js";
|
|
4
|
+
export interface IThreadRepository {
|
|
5
|
+
registerThread(db: Database, entry: {
|
|
6
|
+
threadId: number;
|
|
7
|
+
name: string;
|
|
8
|
+
type: ThreadRegistryEntry["type"];
|
|
9
|
+
rootThreadId?: number;
|
|
10
|
+
badge?: string;
|
|
11
|
+
client?: string;
|
|
12
|
+
maxRetries?: number;
|
|
13
|
+
cooldownMs?: number;
|
|
14
|
+
keepAlive?: boolean;
|
|
15
|
+
workingDirectory?: string;
|
|
16
|
+
}): ThreadRegistryEntry;
|
|
17
|
+
updateThread(db: Database, threadId: number, updates: Partial<Pick<ThreadRegistryEntry, "name" | "status" | "lastActiveAt" | "keepAlive" | "dailyRotation" | "autonomousMode" | "client" | "maxRetries" | "cooldownMs" | "badge" | "telegramTopicId" | "identityPrompt" | "workingDirectory">>): boolean;
|
|
18
|
+
archiveThread(db: Database, threadId: number): boolean;
|
|
19
|
+
getThread(db: Database, threadId: number): ThreadRegistryEntry | null;
|
|
20
|
+
getAllThreads(db: Database): ThreadRegistryEntry[];
|
|
21
|
+
getRootThreads(db: Database): ThreadRegistryEntry[];
|
|
22
|
+
}
|
|
23
|
+
export interface ISessionRepository {
|
|
24
|
+
getSession(chatId: string, name: string): number | undefined;
|
|
25
|
+
setSession(chatId: string, name: string, threadId: number): void;
|
|
26
|
+
deleteSession(chatId: string, name: string): void;
|
|
27
|
+
lookupTopicRegistry(chatId: string, name: string): number | undefined;
|
|
28
|
+
registerTopicRegistry(chatId: string, name: string, threadId: number): void;
|
|
29
|
+
}
|
|
30
|
+
export interface IScheduleRepository {
|
|
31
|
+
loadSchedule(threadId: number): ScheduledTask[];
|
|
32
|
+
saveSchedule(threadId: number, tasks: ScheduledTask[]): void;
|
|
33
|
+
deleteSchedule(threadId: number): void;
|
|
34
|
+
listSchedules(threadId: number): ScheduledTask[];
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/data/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,cAAc,CACZ,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAClC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GACA,mBAAmB,CAAC;IACvB,YAAY,CACV,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,CACd,IAAI,CACF,mBAAmB,EACjB,MAAM,GACN,QAAQ,GACR,cAAc,GACd,WAAW,GACX,eAAe,GACf,gBAAgB,GAChB,QAAQ,GACR,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,iBAAiB,GACjB,gBAAgB,GAChB,kBAAkB,CACrB,CACF,GACA,OAAO,CAAC;IACX,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACvD,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;IACtE,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACnD,cAAc,CAAC,EAAE,EAAE,QAAQ,GAAG,mBAAmB,EAAE,CAAC;CACrD;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACtE,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7E;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC;IAChD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC7D,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC;CAClD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/data/interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session memory bootstrap / briefing assembly.
|
|
3
|
-
*
|
|
4
|
-
* Extracted from memory.ts — assembles the memory briefing injected at
|
|
5
|
-
* session start, provides memory status, topic index, forget, and
|
|
6
|
-
* compact refresh helpers.
|
|
7
|
-
*/
|
|
8
1
|
import type { Database } from "./schema.js";
|
|
9
|
-
|
|
2
|
+
import { type Episode } from "./episodes.js";
|
|
3
|
+
import { type SemanticNote } from "./semantic.js";
|
|
4
|
+
import { type Procedure } from "./procedures.js";
|
|
5
|
+
import { getVoiceBaseline } from "./voice-sig.js";
|
|
6
|
+
export declare const MAX_BOOTSTRAP_CONVERSATION_CHARS = 100000;
|
|
7
|
+
export declare const MAX_MESSAGE_CONTENT_CHARS = 500;
|
|
8
|
+
export interface TopicEntry {
|
|
10
9
|
topic: string;
|
|
11
10
|
semanticCount: number;
|
|
12
11
|
proceduralCount: number;
|
|
@@ -14,7 +13,7 @@ interface TopicEntry {
|
|
|
14
13
|
avgConfidence: number;
|
|
15
14
|
totalAccesses: number;
|
|
16
15
|
}
|
|
17
|
-
interface MemoryStatus {
|
|
16
|
+
export interface MemoryStatus {
|
|
18
17
|
totalEpisodes: number;
|
|
19
18
|
unconsolidatedEpisodes: number;
|
|
20
19
|
totalSemanticNotes: number;
|
|
@@ -24,17 +23,38 @@ interface MemoryStatus {
|
|
|
24
23
|
topTopics: TopicEntry[];
|
|
25
24
|
dbSizeBytes: number;
|
|
26
25
|
}
|
|
26
|
+
export interface BootstrapNarratives {
|
|
27
|
+
half_year?: string;
|
|
28
|
+
quarter?: string;
|
|
29
|
+
month?: string;
|
|
30
|
+
week?: string;
|
|
31
|
+
day?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface BootstrapReflection {
|
|
34
|
+
content: string;
|
|
35
|
+
confidence: number;
|
|
36
|
+
createdAt: string;
|
|
37
|
+
}
|
|
38
|
+
export interface BootstrapContext {
|
|
39
|
+
identityPrompt?: string;
|
|
40
|
+
threadId: number;
|
|
41
|
+
queryThreadId: number;
|
|
42
|
+
memorySourceThreadId?: number;
|
|
43
|
+
recentEpisodes: Episode[];
|
|
44
|
+
guardrails: SemanticNote[];
|
|
45
|
+
pinnedNotes: SemanticNote[];
|
|
46
|
+
keyKnowledge: SemanticNote[];
|
|
47
|
+
procedures: Procedure[];
|
|
48
|
+
baseline: ReturnType<typeof getVoiceBaseline>;
|
|
49
|
+
narratives: BootstrapNarratives | null;
|
|
50
|
+
reflections: BootstrapReflection[];
|
|
51
|
+
}
|
|
27
52
|
export declare function getMemoryStatus(db: Database, threadId: number): MemoryStatus;
|
|
28
53
|
export declare function getTopicIndex(db: Database): TopicEntry[];
|
|
29
|
-
export declare function
|
|
30
|
-
|
|
31
|
-
* Compact memory refresh — a condensed briefing for injection during long sessions.
|
|
32
|
-
* Much shorter than full bootstrap. Designed to re-ground the agent after context compaction.
|
|
33
|
-
*/
|
|
34
|
-
export declare function assembleCompactRefresh(db: Database, threadId: number): string;
|
|
54
|
+
export declare function getBootstrapContext(db: Database, threadId: number, memorySourceThreadId?: number): BootstrapContext;
|
|
55
|
+
export declare function getCompactRefreshNotes(db: Database, threadId: number): SemanticNote[];
|
|
35
56
|
export declare function forgetMemory(db: Database, memoryId: string, _reason: string): {
|
|
36
57
|
layer: string;
|
|
37
58
|
deleted: boolean;
|
|
38
59
|
};
|
|
39
|
-
export {};
|
|
40
60
|
//# sourceMappingURL=bootstrap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../src/data/memory/bootstrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../src/data/memory/bootstrap.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAQlD,eAAO,MAAM,gCAAgC,SAAU,CAAC;AACxD,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAC9C,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACvC,WAAW,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAmBD,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CA8B5E;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,UAAU,EAAE,CAKxD;AAED,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,MAAM,EAChB,oBAAoB,CAAC,EAAE,MAAM,GAC5B,gBAAgB,CA0ElB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAMrF;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAiErC"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session memory bootstrap / briefing assembly.
|
|
3
|
-
*
|
|
4
|
-
* Extracted from memory.ts — assembles the memory briefing injected at
|
|
5
|
-
* session start, provides memory status, topic index, forget, and
|
|
6
|
-
* compact refresh helpers.
|
|
7
|
-
*/
|
|
8
1
|
import { statSync } from "node:fs";
|
|
9
2
|
import { homedir } from "node:os";
|
|
10
3
|
import { join } from "node:path";
|
|
@@ -16,11 +9,10 @@ import { parseJsonArray } from "./utils.js";
|
|
|
16
9
|
import { getNarrativesForBootstrap } from "./narrative.js";
|
|
17
10
|
import { getThread } from "./thread-registry.js";
|
|
18
11
|
import { getGuardrailsEnabled, getBootstrapMessageCount, resolveKnowledgeThreadId } from "../../config.js";
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const MAX_MESSAGE_CONTENT_CHARS = 500;
|
|
23
|
-
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
12
|
+
import { log } from "../../logger.js";
|
|
13
|
+
import { errorMessage } from "../../utils.js";
|
|
14
|
+
export const MAX_BOOTSTRAP_CONVERSATION_CHARS = 100_000;
|
|
15
|
+
export const MAX_MESSAGE_CONTENT_CHARS = 500;
|
|
24
16
|
function rowToTopicEntry(row) {
|
|
25
17
|
return {
|
|
26
18
|
topic: row.topic,
|
|
@@ -31,20 +23,15 @@ function rowToTopicEntry(row) {
|
|
|
31
23
|
totalAccesses: row.total_accesses,
|
|
32
24
|
};
|
|
33
25
|
}
|
|
34
|
-
// ─── Memory Status ───────────────────────────────────────────────────────────
|
|
35
26
|
export function getMemoryStatus(db, threadId) {
|
|
36
27
|
const totalEpisodes = db.prepare(`SELECT COUNT(*) as cnt FROM episodes`).get().cnt;
|
|
37
|
-
const unconsolidatedEpisodes = db
|
|
38
|
-
.prepare(`SELECT COUNT(*) as cnt FROM episodes WHERE consolidated = 0`)
|
|
39
|
-
.get().cnt;
|
|
28
|
+
const unconsolidatedEpisodes = db.prepare(`SELECT COUNT(*) as cnt FROM episodes WHERE consolidated = 0`).get().cnt;
|
|
40
29
|
const totalSemanticNotes = db.prepare(`SELECT COUNT(*) as cnt FROM semantic_notes WHERE valid_to IS NULL AND superseded_by IS NULL AND thread_id = ?`).get(threadId).cnt;
|
|
41
30
|
const totalProcedures = db.prepare(`SELECT COUNT(*) as cnt FROM procedures`).get().cnt;
|
|
42
31
|
const totalVoiceSignatures = db.prepare(`SELECT COUNT(*) as cnt FROM voice_signatures`).get().cnt;
|
|
43
32
|
const lastConsolidationRow = db
|
|
44
33
|
.prepare(`SELECT run_at FROM meta_consolidation_log ORDER BY run_at DESC LIMIT 1`)
|
|
45
34
|
.get();
|
|
46
|
-
const topTopics = getTopicIndex(db).slice(0, 5);
|
|
47
|
-
// Database file size
|
|
48
35
|
const dbPath = join(homedir(), ".remote-copilot-mcp", "memory.db");
|
|
49
36
|
let dbSizeBytes = 0;
|
|
50
37
|
try {
|
|
@@ -60,227 +47,95 @@ export function getMemoryStatus(db, threadId) {
|
|
|
60
47
|
totalProcedures,
|
|
61
48
|
totalVoiceSignatures,
|
|
62
49
|
lastConsolidation: lastConsolidationRow?.run_at ?? null,
|
|
63
|
-
topTopics,
|
|
50
|
+
topTopics: getTopicIndex(db).slice(0, 5),
|
|
64
51
|
dbSizeBytes,
|
|
65
52
|
};
|
|
66
53
|
}
|
|
67
|
-
// ─── Topic Index ─────────────────────────────────────────────────────────────
|
|
68
54
|
export function getTopicIndex(db) {
|
|
69
55
|
const rows = db
|
|
70
56
|
.prepare(`SELECT * FROM meta_topic_index ORDER BY total_accesses DESC, semantic_count DESC LIMIT 50`)
|
|
71
57
|
.all();
|
|
72
58
|
return rows.map(rowToTopicEntry);
|
|
73
59
|
}
|
|
74
|
-
|
|
75
|
-
export function assembleBootstrap(db, threadId, memorySourceThreadId) {
|
|
76
|
-
// Ghost threads: use the parent's thread ID for memory queries
|
|
60
|
+
export function getBootstrapContext(db, threadId, memorySourceThreadId) {
|
|
77
61
|
const queryThreadId = memorySourceThreadId ?? threadId;
|
|
78
62
|
const knowledgeThreadId = resolveKnowledgeThreadId(queryThreadId);
|
|
79
63
|
const bootstrapMessageCount = getBootstrapMessageCount();
|
|
80
64
|
const threadEntry = getThread(db, queryThreadId);
|
|
81
65
|
const sessionResetAt = threadEntry?.sessionResetAt ?? undefined;
|
|
82
|
-
const
|
|
83
|
-
const recentEpisodes = [...recentEpisodesDesc].reverse(); // chronological order (oldest first)
|
|
66
|
+
const recentEpisodes = [...getRecentEpisodes(db, queryThreadId, bootstrapMessageCount, sessionResetAt ? { since: sessionResetAt } : undefined)].reverse();
|
|
84
67
|
const topNotes = getTopSemanticNotes(db, { limit: 20, sortBy: "access_count", threadId: knowledgeThreadId });
|
|
85
|
-
|
|
86
|
-
const
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
const
|
|
68
|
+
const preferences = topNotes.filter((note) => note.type === "preference");
|
|
69
|
+
const otherNotes = topNotes.filter((note) => note.type !== "preference");
|
|
70
|
+
const pinnedNotes = getPinnedNotes(db, knowledgeThreadId);
|
|
71
|
+
const pinnedIds = new Set(pinnedNotes.map((note) => note.noteId));
|
|
72
|
+
const procedures = db
|
|
90
73
|
.prepare(`SELECT * FROM procedures ORDER BY times_executed DESC, confidence DESC LIMIT 5`)
|
|
91
74
|
.all();
|
|
92
|
-
|
|
93
|
-
const baseline = getVoiceBaseline(db);
|
|
94
|
-
const lines = [];
|
|
95
|
-
// ── 1. Identity Anchor ─────────────────────────────────────────────
|
|
96
|
-
// First-person identity preamble — the most critical section for
|
|
97
|
-
// personality continuity across ephemeral sessions.
|
|
98
|
-
const identityPrompt = threadEntry?.identityPrompt;
|
|
99
|
-
if (identityPrompt) {
|
|
100
|
-
lines.push(identityPrompt);
|
|
101
|
-
lines.push("");
|
|
102
|
-
}
|
|
103
|
-
lines.push("# Memory Briefing");
|
|
104
|
-
if (memorySourceThreadId !== undefined) {
|
|
105
|
-
lines.push(`> **Ghost thread** — memory sourced from parent thread ${memorySourceThreadId}. Runtime memory ops use thread ${threadId}.`);
|
|
106
|
-
if (recentEpisodes.length === 0 && sortedNotes.length === 0 && procedures.length === 0) {
|
|
107
|
-
lines.push(`> ⚠️ No memory found for source thread ${memorySourceThreadId}. The ghost thread will start without parent context.`);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
lines.push("");
|
|
111
|
-
// ── 2. Recent Conversation (highest priority for continuity) ───────
|
|
112
|
-
if (recentEpisodes.length > 0) {
|
|
113
|
-
lines.push("## Recent Conversation");
|
|
114
|
-
const conversationLines = [];
|
|
115
|
-
let totalChars = 0;
|
|
116
|
-
for (const ep of recentEpisodes) {
|
|
117
|
-
const raw = typeof ep.content === "object" && ep.content !== null
|
|
118
|
-
? (ep.content.text ?? ep.content.caption ?? null)
|
|
119
|
-
: null;
|
|
120
|
-
const fullText = typeof raw === "string" ? raw : JSON.stringify(ep.content);
|
|
121
|
-
const textContent = fullText.length > MAX_MESSAGE_CONTENT_CHARS
|
|
122
|
-
? fullText.slice(0, MAX_MESSAGE_CONTENT_CHARS) + "…"
|
|
123
|
-
: fullText;
|
|
124
|
-
let line;
|
|
125
|
-
if (ep.type === "operator_message") {
|
|
126
|
-
line = `**Operator** (${ep.timestamp}): ${textContent}`;
|
|
127
|
-
}
|
|
128
|
-
else if (ep.type === "agent_action") {
|
|
129
|
-
line = `**You** (${ep.timestamp}): ${textContent}`;
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
// system_event, operator_reaction, etc.
|
|
133
|
-
line = `[${ep.type}] ${textContent} (${ep.timestamp})`;
|
|
134
|
-
}
|
|
135
|
-
totalChars += line.length;
|
|
136
|
-
conversationLines.push(line);
|
|
137
|
-
}
|
|
138
|
-
// Truncate from oldest if exceeds max chars
|
|
139
|
-
while (totalChars > MAX_BOOTSTRAP_CONVERSATION_CHARS && conversationLines.length > 1) {
|
|
140
|
-
const removed = conversationLines.shift();
|
|
141
|
-
totalChars -= removed.length;
|
|
142
|
-
}
|
|
143
|
-
for (const cl of conversationLines) {
|
|
144
|
-
lines.push(cl);
|
|
145
|
-
}
|
|
146
|
-
lines.push("");
|
|
147
|
-
}
|
|
148
|
-
// ── 3. Active Decisions (guardrails) ───────────────────────────────
|
|
149
|
-
if (getGuardrailsEnabled()) {
|
|
150
|
-
const guardrails = getGuardrailNotes(db);
|
|
151
|
-
if (guardrails.length > 0) {
|
|
152
|
-
lines.push("## Active Decisions (always enforced)");
|
|
153
|
-
for (const g of guardrails) {
|
|
154
|
-
const line = g.content.length > 120 ? g.content.slice(0, 117) + "..." : g.content;
|
|
155
|
-
lines.push(`- ${line}`);
|
|
156
|
-
}
|
|
157
|
-
lines.push("");
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
// ── 4. Temporal Context ────────────────────────────────────────────
|
|
75
|
+
let narratives = null;
|
|
161
76
|
try {
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
if (narratives.quarter) {
|
|
172
|
-
lines.push("### This Quarter");
|
|
173
|
-
lines.push(narratives.quarter);
|
|
174
|
-
lines.push("");
|
|
175
|
-
}
|
|
176
|
-
if (narratives.month) {
|
|
177
|
-
lines.push("### This Month");
|
|
178
|
-
lines.push(narratives.month);
|
|
179
|
-
lines.push("");
|
|
180
|
-
}
|
|
181
|
-
if (narratives.week) {
|
|
182
|
-
lines.push("### This Week");
|
|
183
|
-
lines.push(narratives.week);
|
|
184
|
-
lines.push("");
|
|
185
|
-
}
|
|
186
|
-
if (narratives.day) {
|
|
187
|
-
lines.push("### Today");
|
|
188
|
-
lines.push(narratives.day);
|
|
189
|
-
lines.push("");
|
|
190
|
-
}
|
|
77
|
+
const fetched = getNarrativesForBootstrap(db, knowledgeThreadId);
|
|
78
|
+
if (fetched.half_year || fetched.quarter || fetched.month || fetched.week || fetched.day) {
|
|
79
|
+
narratives = {
|
|
80
|
+
half_year: fetched.half_year ?? undefined,
|
|
81
|
+
quarter: fetched.quarter ?? undefined,
|
|
82
|
+
month: fetched.month ?? undefined,
|
|
83
|
+
week: fetched.week ?? undefined,
|
|
84
|
+
day: fetched.day ?? undefined,
|
|
85
|
+
};
|
|
191
86
|
}
|
|
192
87
|
}
|
|
193
|
-
catch {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
// Pinned notes — always shown, represent long-term invariants
|
|
197
|
-
const pinned = getPinnedNotes(db, knowledgeThreadId);
|
|
198
|
-
const pinnedIds = new Set(pinned.map(p => p.noteId));
|
|
199
|
-
if (pinned.length > 0) {
|
|
200
|
-
lines.push("## Pinned (Long-Term Context)");
|
|
201
|
-
for (const p of pinned) {
|
|
202
|
-
lines.push(`- **[${p.type}]** ${p.content} _(conf: ${p.confidence.toFixed(2)})_`);
|
|
203
|
-
}
|
|
204
|
-
lines.push("");
|
|
205
|
-
}
|
|
206
|
-
// Filter out pinned notes from key knowledge to avoid duplicates
|
|
207
|
-
const filtered = sortedNotes.filter(n => !pinnedIds.has(n.noteId));
|
|
208
|
-
if (filtered.length > 0) {
|
|
209
|
-
lines.push("## Key Knowledge");
|
|
210
|
-
for (const note of filtered) {
|
|
211
|
-
lines.push(`- **[${note.type}]** ${note.content} (conf: ${note.confidence.toFixed(2)}, accessed: ${note.accessCount}x)`);
|
|
212
|
-
}
|
|
213
|
-
lines.push("");
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
// ── 6. Active Procedures ──────────────────────────────────────────
|
|
217
|
-
if (procedures.length > 0) {
|
|
218
|
-
lines.push("## Active Procedures");
|
|
219
|
-
for (const proc of procedures) {
|
|
220
|
-
lines.push(`- **${proc.name}** (${proc.type}) — success: ${(proc.successRate * 100).toFixed(0)}%, used ${proc.timesExecuted}x`);
|
|
221
|
-
if (proc.steps.length > 0) {
|
|
222
|
-
lines.push(` Steps: ${proc.steps.join(" → ")}`);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
lines.push("");
|
|
88
|
+
catch (err) {
|
|
89
|
+
log.warn(`[bootstrap] Failed to load narratives for thread ${knowledgeThreadId}: ${errorMessage(err)}`);
|
|
90
|
+
narratives = null;
|
|
226
91
|
}
|
|
227
|
-
|
|
228
|
-
if (baseline && baseline.sampleCount > 0) {
|
|
229
|
-
lines.push("## Operator Voice Profile");
|
|
230
|
-
const parts = [`${baseline.sampleCount} samples`];
|
|
231
|
-
if (baseline.avgValence !== null)
|
|
232
|
-
parts.push(`valence ${baseline.avgValence.toFixed(2)}`);
|
|
233
|
-
if (baseline.avgArousal !== null)
|
|
234
|
-
parts.push(`arousal ${baseline.avgArousal.toFixed(2)}`);
|
|
235
|
-
if (baseline.avgSpeechRate !== null)
|
|
236
|
-
parts.push(`speech rate ${baseline.avgSpeechRate.toFixed(1)}`);
|
|
237
|
-
lines.push(parts.join(" · "));
|
|
238
|
-
lines.push("");
|
|
239
|
-
}
|
|
240
|
-
// ── 8. Recent Reflections ─────────────────────────────────────────
|
|
92
|
+
let reflections = [];
|
|
241
93
|
try {
|
|
242
|
-
const
|
|
94
|
+
const rows = db
|
|
243
95
|
.prepare(`SELECT content, confidence, created_at FROM semantic_notes
|
|
244
96
|
WHERE content LIKE '[REFLECTION]%'
|
|
245
97
|
AND valid_to IS NULL AND superseded_by IS NULL AND thread_id = ?
|
|
246
98
|
ORDER BY created_at DESC LIMIT 5`)
|
|
247
99
|
.all(knowledgeThreadId);
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
lines.push("");
|
|
254
|
-
}
|
|
100
|
+
reflections = rows.map((row) => ({
|
|
101
|
+
content: row.content,
|
|
102
|
+
confidence: row.confidence,
|
|
103
|
+
createdAt: row.created_at,
|
|
104
|
+
}));
|
|
255
105
|
}
|
|
256
|
-
catch {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
/**
|
|
260
|
-
* Compact memory refresh — a condensed briefing for injection during long sessions.
|
|
261
|
-
* Much shorter than full bootstrap. Designed to re-ground the agent after context compaction.
|
|
262
|
-
*/
|
|
263
|
-
export function assembleCompactRefresh(db, threadId) {
|
|
264
|
-
const topNotes = getTopSemanticNotes(db, { limit: 12, sortBy: "access_count", threadId: resolveKnowledgeThreadId(threadId) });
|
|
265
|
-
if (topNotes.length === 0)
|
|
266
|
-
return "";
|
|
267
|
-
const lines = [];
|
|
268
|
-
lines.push("## Memory Refresh");
|
|
269
|
-
for (const note of topNotes) {
|
|
270
|
-
lines.push(`- **[${note.type}]** ${note.content}`);
|
|
106
|
+
catch (err) {
|
|
107
|
+
log.warn(`[bootstrap] Failed to load reflections for thread ${knowledgeThreadId}: ${errorMessage(err)}`);
|
|
108
|
+
reflections = [];
|
|
271
109
|
}
|
|
272
|
-
return
|
|
110
|
+
return {
|
|
111
|
+
identityPrompt: threadEntry?.identityPrompt ?? undefined,
|
|
112
|
+
threadId,
|
|
113
|
+
queryThreadId,
|
|
114
|
+
memorySourceThreadId,
|
|
115
|
+
recentEpisodes,
|
|
116
|
+
guardrails: getGuardrailsEnabled() ? getGuardrailNotes(db) : [],
|
|
117
|
+
pinnedNotes,
|
|
118
|
+
keyKnowledge: [...preferences, ...otherNotes].slice(0, 20).filter((note) => !pinnedIds.has(note.noteId)),
|
|
119
|
+
procedures: procedures.map(rowToProcedure),
|
|
120
|
+
baseline: getVoiceBaseline(db),
|
|
121
|
+
narratives,
|
|
122
|
+
reflections,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
export function getCompactRefreshNotes(db, threadId) {
|
|
126
|
+
return getTopSemanticNotes(db, {
|
|
127
|
+
limit: 12,
|
|
128
|
+
sortBy: "access_count",
|
|
129
|
+
threadId: resolveKnowledgeThreadId(threadId),
|
|
130
|
+
});
|
|
273
131
|
}
|
|
274
|
-
// ─── Forget ──────────────────────────────────────────────────────────────────
|
|
275
132
|
export function forgetMemory(db, memoryId, _reason) {
|
|
276
|
-
// Determine layer by prefix
|
|
277
133
|
if (memoryId.startsWith("ep_")) {
|
|
278
134
|
const existing = db.prepare(`SELECT episode_id FROM episodes WHERE episode_id = ?`).get(memoryId);
|
|
279
135
|
if (!existing)
|
|
280
136
|
return { layer: "episodic", deleted: false };
|
|
281
137
|
db.transaction(() => {
|
|
282
138
|
db.prepare(`DELETE FROM episodes WHERE episode_id = ?`).run(memoryId);
|
|
283
|
-
// Also delete associated voice signature
|
|
284
139
|
db.prepare(`DELETE FROM voice_signatures WHERE episode_id = ?`).run(memoryId);
|
|
285
140
|
})();
|
|
286
141
|
return { layer: "episodic", deleted: true };
|
|
@@ -289,11 +144,11 @@ export function forgetMemory(db, memoryId, _reason) {
|
|
|
289
144
|
const existing = db.prepare(`SELECT note_id, keywords FROM semantic_notes WHERE note_id = ?`).get(memoryId);
|
|
290
145
|
if (!existing)
|
|
291
146
|
return { layer: "semantic", deleted: false };
|
|
292
|
-
const
|
|
147
|
+
const keywords = parseJsonArray(existing.keywords);
|
|
293
148
|
db.transaction(() => {
|
|
294
149
|
db.prepare(`DELETE FROM semantic_notes WHERE note_id = ?`).run(memoryId);
|
|
295
150
|
db.prepare(`DELETE FROM note_embeddings WHERE note_id = ?`).run(memoryId);
|
|
296
|
-
decrementTopicIndexForKeywords(db,
|
|
151
|
+
decrementTopicIndexForKeywords(db, keywords, "semantic");
|
|
297
152
|
})();
|
|
298
153
|
return { layer: "semantic", deleted: true };
|
|
299
154
|
}
|
|
@@ -301,38 +156,37 @@ export function forgetMemory(db, memoryId, _reason) {
|
|
|
301
156
|
const existing = db.prepare(`SELECT procedure_id, name FROM procedures WHERE procedure_id = ?`).get(memoryId);
|
|
302
157
|
if (!existing)
|
|
303
158
|
return { layer: "procedural", deleted: false };
|
|
304
|
-
const
|
|
159
|
+
const keywords = existing.name.toLowerCase().split(/\s+/).filter((word) => word.length > 2);
|
|
305
160
|
db.transaction(() => {
|
|
306
161
|
db.prepare(`DELETE FROM procedures WHERE procedure_id = ?`).run(memoryId);
|
|
307
|
-
decrementTopicIndexForKeywords(db,
|
|
162
|
+
decrementTopicIndexForKeywords(db, keywords, "procedural");
|
|
308
163
|
})();
|
|
309
164
|
return { layer: "procedural", deleted: true };
|
|
310
165
|
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
if (row) {
|
|
166
|
+
const episodeRow = db.prepare(`SELECT episode_id FROM episodes WHERE episode_id = ?`).get(memoryId);
|
|
167
|
+
if (episodeRow) {
|
|
314
168
|
db.transaction(() => {
|
|
315
169
|
db.prepare(`DELETE FROM episodes WHERE episode_id = ?`).run(memoryId);
|
|
316
170
|
db.prepare(`DELETE FROM voice_signatures WHERE episode_id = ?`).run(memoryId);
|
|
317
171
|
})();
|
|
318
172
|
return { layer: "episodic", deleted: true };
|
|
319
173
|
}
|
|
320
|
-
|
|
321
|
-
if (
|
|
322
|
-
const
|
|
174
|
+
const noteRow = db.prepare(`SELECT note_id, keywords FROM semantic_notes WHERE note_id = ?`).get(memoryId);
|
|
175
|
+
if (noteRow) {
|
|
176
|
+
const keywords = parseJsonArray(noteRow.keywords);
|
|
323
177
|
db.transaction(() => {
|
|
324
178
|
db.prepare(`DELETE FROM semantic_notes WHERE note_id = ?`).run(memoryId);
|
|
325
179
|
db.prepare(`DELETE FROM note_embeddings WHERE note_id = ?`).run(memoryId);
|
|
326
|
-
decrementTopicIndexForKeywords(db,
|
|
180
|
+
decrementTopicIndexForKeywords(db, keywords, "semantic");
|
|
327
181
|
})();
|
|
328
182
|
return { layer: "semantic", deleted: true };
|
|
329
183
|
}
|
|
330
|
-
|
|
331
|
-
if (
|
|
332
|
-
const
|
|
184
|
+
const procRow = db.prepare(`SELECT procedure_id, name FROM procedures WHERE procedure_id = ?`).get(memoryId);
|
|
185
|
+
if (procRow) {
|
|
186
|
+
const keywords = procRow.name.toLowerCase().split(/\s+/).filter((word) => word.length > 2);
|
|
333
187
|
db.transaction(() => {
|
|
334
188
|
db.prepare(`DELETE FROM procedures WHERE procedure_id = ?`).run(memoryId);
|
|
335
|
-
decrementTopicIndexForKeywords(db,
|
|
189
|
+
decrementTopicIndexForKeywords(db, keywords, "procedural");
|
|
336
190
|
})();
|
|
337
191
|
return { layer: "procedural", deleted: true };
|
|
338
192
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/data/memory/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/data/memory/bootstrap.ts"],"names":[],"mappings":"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"}
|