@mingxy/cerebro 1.10.12 → 1.11.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/cerebro.example.jsonc +1 -0
- package/dist/client.d.ts +7 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -1
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +38 -4
- package/dist/config.js.map +1 -1
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +141 -47
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -8
- package/dist/index.js.map +1 -1
- package/dist/tools.d.ts +1 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +4 -1
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
- package/schema.json +163 -0
- package/src/client.ts +9 -0
- package/src/hooks.ts +73 -22
package/cerebro.example.jsonc
CHANGED
package/dist/client.d.ts
CHANGED
|
@@ -50,6 +50,11 @@ export interface SessionRecallRecord {
|
|
|
50
50
|
export interface SessionRecallListResponse {
|
|
51
51
|
recalls: SessionRecallRecord[];
|
|
52
52
|
}
|
|
53
|
+
export interface MemoryRelation {
|
|
54
|
+
relation_type: string;
|
|
55
|
+
target_id: string;
|
|
56
|
+
context_label?: string;
|
|
57
|
+
}
|
|
53
58
|
export interface MemoryDto {
|
|
54
59
|
id: string;
|
|
55
60
|
content: string;
|
|
@@ -58,6 +63,7 @@ export interface MemoryDto {
|
|
|
58
63
|
memory_type: string;
|
|
59
64
|
state: string;
|
|
60
65
|
tags: string[];
|
|
66
|
+
relations?: MemoryRelation[];
|
|
61
67
|
source?: string;
|
|
62
68
|
tenant_id: string;
|
|
63
69
|
agent_id?: string;
|
|
@@ -96,7 +102,7 @@ export declare class CerebroClient {
|
|
|
96
102
|
shareMemory(memoryId: string, targetSpace: string): Promise<unknown>;
|
|
97
103
|
pullMemory(memoryId: string, sourceSpace: string, visibility?: string): Promise<unknown>;
|
|
98
104
|
reshareMemory(memoryId: string, targetSpace?: string): Promise<unknown>;
|
|
99
|
-
shouldRecall(query_text: string, last_query_text: string | undefined, session_id: string, similarity_threshold?: number, max_results?: number, project_tags?: string[]): Promise<ShouldRecallResponse | null>;
|
|
105
|
+
shouldRecall(query_text: string, last_query_text: string | undefined, session_id: string, similarity_threshold?: number, max_results?: number, project_tags?: string[], conversation_context?: string[]): Promise<ShouldRecallResponse | null>;
|
|
100
106
|
recordSessionRecall(session_id: string, memory_ids: string[], recall_type: string, query_text?: string, similarity_score?: number, llm_confidence?: number): Promise<unknown | null>;
|
|
101
107
|
listSessionRecalls(session_id: string): Promise<SessionRecallRecord[]>;
|
|
102
108
|
sessionIngest(messages: Array<{
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAepD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,SAAS,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,EAAE,cAAc,EAAE,CAAC;IACpC,mBAAmB,EAAE,SAAS,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,qBAAqB,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa;IAEtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM,CAAC;gBAFP,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,YAAA;IAK5C,OAAO,CAAC,MAAM;YAOA,OAAO;IA6CrB,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,GAAG;IAOX,OAAO,CAAC,GAAG;IAIL,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IActB,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,KAAK,SAAK,EACV,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,YAAY,EAAE,CAAC;IAapB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAIhD,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAOtB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,cAAc,CAClB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EAClD,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,OAAO,CAAC;IAgBb,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7C,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAI5B,UAAU,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAO5C,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GACjD,OAAO,CAAC,OAAO,CAAC;IAIb,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAKhC,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC;IAOb,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC;IAOb,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC;IAOb,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC;IAOb,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,UAAU,EAAE,MAAM,EAClB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -154,7 +154,7 @@ export class CerebroClient {
|
|
|
154
154
|
async reshareMemory(memoryId, targetSpace) {
|
|
155
155
|
return this.post(`/v1/memories/${encodeURIComponent(memoryId)}/reshare`, { target_space: targetSpace });
|
|
156
156
|
}
|
|
157
|
-
async shouldRecall(query_text, last_query_text, session_id, similarity_threshold, max_results, project_tags) {
|
|
157
|
+
async shouldRecall(query_text, last_query_text, session_id, similarity_threshold, max_results, project_tags, conversation_context) {
|
|
158
158
|
const res = await this.post("/v1/should-recall", {
|
|
159
159
|
query_text,
|
|
160
160
|
last_query_text,
|
|
@@ -162,6 +162,7 @@ export class CerebroClient {
|
|
|
162
162
|
similarity_threshold,
|
|
163
163
|
max_results,
|
|
164
164
|
project_tags,
|
|
165
|
+
conversation_context,
|
|
165
166
|
}, 20_000);
|
|
166
167
|
return res;
|
|
167
168
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGhD,SAAS,eAAe,CAAC,IAAY,EAAE,MAAc;IACnD,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC;IACjE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAC9C,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,cAAc,CAAC;AACjD,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,MAAc;IAClD,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,OAAO,EAAE;QACP,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,MAAM,EAAE;QACN,oBAAoB,EAAE,MAAM,CAAC;QAC7B,UAAU,EAAE,OAAO,GAAG,KAAK,CAAC;KAC7B,CAAC;IACF,MAAM,EAAE;QACN,mBAAmB,EAAE,MAAM,CAAC;QAC5B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,OAAO,EAAE;QACP,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAC9C,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,EAAE,EAAE;QACF,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;CACnD;AAID,QAAA,MAAM,QAAQ,EAAE,gBA2Bf,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,OAAO,EAAE;QACP,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,MAAM,EAAE;QACN,oBAAoB,EAAE,MAAM,CAAC;QAC7B,UAAU,EAAE,OAAO,GAAG,KAAK,CAAC;KAC7B,CAAC;IACF,MAAM,EAAE;QACN,mBAAmB,EAAE,MAAM,CAAC;QAC5B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,OAAO,EAAE;QACP,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAC9C,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,EAAE,EAAE;QACF,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;CACnD;AAID,QAAA,MAAM,QAAQ,EAAE,gBA2Bf,CAAC;AAmGF,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CA+CxF;AAID,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AAE5D,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAChC,WAAW,CAeb;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
1
|
+
import { readFileSync, appendFileSync, mkdirSync } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
// ── Defaults ─────────────────────────────────────────────────────────
|
|
@@ -80,6 +80,25 @@ function deepMerge(base, overrides) {
|
|
|
80
80
|
return result;
|
|
81
81
|
}
|
|
82
82
|
// ── Load config ──────────────────────────────────────────────────────
|
|
83
|
+
/** File-only logger for config.ts (cannot import logger.ts due to circular dependency). */
|
|
84
|
+
function configLog(message, fields, level = "WARN") {
|
|
85
|
+
try {
|
|
86
|
+
const logDir = join(homedir(), ".config", "cerebro", "logs");
|
|
87
|
+
const logPath = join(logDir, "plugin.log");
|
|
88
|
+
const ts = new Date().toISOString().replace("T", " ").replace(/\.\d+Z$/, "");
|
|
89
|
+
const parts = [`${level.padEnd(5)} ${ts} service=cerebro ${message}`];
|
|
90
|
+
if (fields) {
|
|
91
|
+
for (const [k, v] of Object.entries(fields)) {
|
|
92
|
+
parts.push(`${k}=${typeof v === "string" ? v : JSON.stringify(v)}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
mkdirSync(logDir, { recursive: true });
|
|
96
|
+
appendFileSync(logPath, parts.join(" ") + "\n");
|
|
97
|
+
}
|
|
98
|
+
catch (writeErr) {
|
|
99
|
+
process.stderr.write(`[cerebro] configLog write failed: ${writeErr instanceof Error ? writeErr.message : String(writeErr)}\n`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
83
102
|
export function loadPluginConfig(overrides) {
|
|
84
103
|
let config = structuredClone(DEFAULTS);
|
|
85
104
|
// Try loading from config file
|
|
@@ -91,8 +110,8 @@ export function loadPluginConfig(overrides) {
|
|
|
91
110
|
// Merge nested groups with defaults for safety
|
|
92
111
|
config = deepMerge(config, parsed);
|
|
93
112
|
}
|
|
94
|
-
catch {
|
|
95
|
-
|
|
113
|
+
catch (e) {
|
|
114
|
+
configLog("config.json load failed, using defaults", { error: String(e) });
|
|
96
115
|
}
|
|
97
116
|
// Apply environment variable overrides (flat OMEM_* → nested paths)
|
|
98
117
|
if (process.env.OMEM_API_URL)
|
|
@@ -125,7 +144,22 @@ export function loadPluginConfig(overrides) {
|
|
|
125
144
|
return config;
|
|
126
145
|
}
|
|
127
146
|
export function resolveAgentPolicy(agentName, config) {
|
|
128
|
-
|
|
147
|
+
const policies = config.agentMemoryPolicy;
|
|
148
|
+
if (policies) {
|
|
149
|
+
const exact = policies[agentName];
|
|
150
|
+
if (exact)
|
|
151
|
+
return exact;
|
|
152
|
+
const lower = agentName.toLowerCase();
|
|
153
|
+
for (const [key, policy] of Object.entries(policies)) {
|
|
154
|
+
if (lower.startsWith(key.toLowerCase()) || key.toLowerCase().startsWith(lower)) {
|
|
155
|
+
return policy;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (config.defaultPolicy)
|
|
160
|
+
return config.defaultPolicy;
|
|
161
|
+
configLog("resolveAgentPolicy: defaulting to readwrite", { agentName }, "DEBUG");
|
|
162
|
+
return "readwrite";
|
|
129
163
|
}
|
|
130
164
|
export { DEFAULTS };
|
|
131
165
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Model, UserMessage, Part } from "@opencode-ai/sdk";
|
|
2
2
|
import type { CerebroClient } from "./client.js";
|
|
3
3
|
import { type OmemPluginConfig } from "./config.js";
|
|
4
|
-
export declare function autoRecallHook(client: CerebroClient, containerTags: string[], tui: any, config?: Partial<OmemPluginConfig
|
|
4
|
+
export declare function autoRecallHook(client: CerebroClient, containerTags: string[], tui: any, config?: Partial<OmemPluginConfig>, getAgentName?: () => string): (input: {
|
|
5
5
|
sessionID?: string;
|
|
6
6
|
model: Model;
|
|
7
7
|
}, output: {
|
|
@@ -20,7 +20,7 @@ export declare function compactingHook(client: CerebroClient, containerTags: str
|
|
|
20
20
|
context: string[];
|
|
21
21
|
prompt?: string;
|
|
22
22
|
}) => Promise<void>;
|
|
23
|
-
export declare function sessionIdleHook(cerebroClient: CerebroClient, _containerTags: string[], tui: any, sdkClient: any, _ingestMode?: "smart" | "raw", threshold?: number, getMainSessionId?: () => string | undefined, isAutoStoreEnabled?: (sessionId: string | undefined) => boolean, agentId?: string, config?: Partial<OmemPluginConfig
|
|
23
|
+
export declare function sessionIdleHook(cerebroClient: CerebroClient, _containerTags: string[], tui: any, sdkClient: any, _ingestMode?: "smart" | "raw", threshold?: number, getMainSessionId?: () => string | undefined, isAutoStoreEnabled?: (sessionId: string | undefined) => boolean, agentId?: string, config?: Partial<OmemPluginConfig>, onAgentResolved?: (name: string) => void): (input: {
|
|
24
24
|
event: {
|
|
25
25
|
type: string;
|
|
26
26
|
properties?: any;
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,gBAAgB,EAAsB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,gBAAgB,EAAsB,MAAM,aAAa,CAAC;AAyQxE,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAAE,YAAY,CAAC,EAAE,MAAM,MAAM,IAQxJ,OAAO;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,EAC3C,QAAQ;IAAE,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,mBA4L/B;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,GAAE,OAAO,GAAG,KAAe,EAAE,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAAE,OAAO,CAAC,EAAE,MAAM,IAGjN,OAAO;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,QAAQ;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,mBAoClD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,GAAE,OAAO,GAAG,KAAe,EAAE,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,EAAE,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAAE,OAAO,CAAC,EAAE,MAAM,IAGnT,OAAO;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7B,QAAQ;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,mBAwFjD;AAKD,wBAAgB,eAAe,CAC7B,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,MAAM,EAAE,EACxB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,GAAG,EACd,WAAW,GAAE,OAAO,GAAG,KAAe,EACtC,SAAS,GAAE,MAAU,EACrB,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,EAC3C,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,EAC/D,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,EACtC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,IAK1B,OAAO;IAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,GAAG,CAAA;KAAE,CAAA;CAAE,mBA0GnE"}
|
package/dist/hooks.js
CHANGED
|
@@ -2,6 +2,11 @@ import { resolveAgentPolicy } from "./config.js";
|
|
|
2
2
|
import { detectKeyword, KEYWORD_NUDGE } from "./keywords.js";
|
|
3
3
|
import { logDebug, logInfo, logError as logErr } from "./logger.js";
|
|
4
4
|
import { readFile } from "node:fs/promises";
|
|
5
|
+
import { stripPrivateContent } from "./privacy.js";
|
|
6
|
+
const BOUNDARY_SEARCH_RATIO = 0.6;
|
|
7
|
+
const MIN_ITEM_CONTENT_CHARS = 100;
|
|
8
|
+
const MIN_CONTENT_CHARS = 1000;
|
|
9
|
+
const MIN_CONTENT_LENGTH = 50;
|
|
5
10
|
const projectNameCache = new Map();
|
|
6
11
|
async function detectProjectName(rootPath) {
|
|
7
12
|
const cached = projectNameCache.get(rootPath);
|
|
@@ -123,7 +128,7 @@ const keywordDetectedSessions = new Set();
|
|
|
123
128
|
const injectedMemoryIds = new Map();
|
|
124
129
|
const firstMessages = new Map();
|
|
125
130
|
const sessionMessages = new Map();
|
|
126
|
-
const profileInjectedSessions = new
|
|
131
|
+
const profileInjectedSessions = new Map();
|
|
127
132
|
function formatRelativeAge(isoDate) {
|
|
128
133
|
const diffMs = Date.now() - new Date(isoDate).getTime();
|
|
129
134
|
const minutes = Math.floor(diffMs / 60_000);
|
|
@@ -138,10 +143,24 @@ function formatRelativeAge(isoDate) {
|
|
|
138
143
|
const months = Math.floor(days / 30);
|
|
139
144
|
return `${months}mo ago`;
|
|
140
145
|
}
|
|
141
|
-
function truncate(text,
|
|
142
|
-
if (text.length <=
|
|
146
|
+
function truncate(text, maxLength) {
|
|
147
|
+
if (text.length <= maxLength)
|
|
143
148
|
return text;
|
|
144
|
-
|
|
149
|
+
// Sentence boundary characters: period, exclamation, question (Latin + CJK)
|
|
150
|
+
// Also treat newline as a boundary
|
|
151
|
+
const boundaries = /[.!?。!?\n]/;
|
|
152
|
+
// Search backwards from maxLength for a boundary
|
|
153
|
+
const searchEnd = Math.min(maxLength, text.length);
|
|
154
|
+
for (let i = searchEnd - 1; i >= Math.floor(searchEnd * BOUNDARY_SEARCH_RATIO); i--) {
|
|
155
|
+
if (boundaries.test(text[i])) {
|
|
156
|
+
return text.slice(0, i + 1).trimEnd() + "…";
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
let truncated = text.slice(0, maxLength);
|
|
160
|
+
const lastCode = truncated.charCodeAt(truncated.length - 1);
|
|
161
|
+
if (lastCode >= 0xD800 && lastCode <= 0xDBFF)
|
|
162
|
+
truncated = truncated.slice(0, -1);
|
|
163
|
+
return truncated + "…";
|
|
145
164
|
}
|
|
146
165
|
function categorize(results) {
|
|
147
166
|
const groups = new Map();
|
|
@@ -158,24 +177,29 @@ function categorize(results) {
|
|
|
158
177
|
}
|
|
159
178
|
return groups;
|
|
160
179
|
}
|
|
180
|
+
function formatMemoryLine(r, maxContentLength) {
|
|
181
|
+
const age = formatRelativeAge(r.memory.created_at);
|
|
182
|
+
const tags = r.memory.tags.length > 0 ? ` [${r.memory.tags.join(", ")}]` : "";
|
|
183
|
+
const idTag = ` [id:${r.memory.id}]`;
|
|
184
|
+
const relTag = r.memory.relations && r.memory.relations.length > 0
|
|
185
|
+
? ` [rel:${r.memory.relations.map((rel) => rel.target_id).join(",")}]`
|
|
186
|
+
: "";
|
|
187
|
+
const content = truncate(r.memory.content, maxContentLength);
|
|
188
|
+
return ` - (${age}${idTag}${relTag}${tags}) ${content}`;
|
|
189
|
+
}
|
|
161
190
|
function buildContextBlock(results, maxContentLength = 500) {
|
|
162
191
|
if (results.length === 0)
|
|
163
192
|
return "";
|
|
164
193
|
const grouped = categorize(results);
|
|
165
194
|
const sections = [];
|
|
166
195
|
for (const [label, items] of grouped) {
|
|
167
|
-
const lines = items.map((r) =>
|
|
168
|
-
const tags = r.memory.tags.length > 0 ? ` [${r.memory.tags.join(", ")}]` : "";
|
|
169
|
-
const age = formatRelativeAge(r.memory.created_at);
|
|
170
|
-
const content = truncate(r.memory.content, maxContentLength);
|
|
171
|
-
return ` - (${age}${tags}) ${content}`;
|
|
172
|
-
});
|
|
196
|
+
const lines = items.map((r) => formatMemoryLine(r, maxContentLength));
|
|
173
197
|
sections.push(`[${label}]\n${lines.join("\n")}`);
|
|
174
198
|
}
|
|
175
199
|
return [
|
|
176
200
|
"<cerebro-context>",
|
|
177
|
-
"
|
|
178
|
-
"
|
|
201
|
+
"You may use memory_get(<id>) to fetch the full content of any memory above if the summary seems incomplete but relevant.",
|
|
202
|
+
"Related memories listed in [rel:<id>,...] can also be fetched if they may add useful context.",
|
|
179
203
|
"",
|
|
180
204
|
...sections,
|
|
181
205
|
"</cerebro-context>",
|
|
@@ -192,9 +216,13 @@ function buildClusteredContextBlock(clustered, maxContentLength = 500) {
|
|
|
192
216
|
if (cs.key_memories.length > 0) {
|
|
193
217
|
sections.push("**核心要点:**");
|
|
194
218
|
for (const mem of cs.key_memories) {
|
|
195
|
-
const
|
|
219
|
+
const idTag = mem.id ? ` [id:${mem.id}]` : "";
|
|
220
|
+
const relTag = mem.relations && mem.relations.length > 0
|
|
221
|
+
? ` [rel:${mem.relations.map((rel) => rel.target_id).join(",")}]`
|
|
222
|
+
: "";
|
|
196
223
|
const importanceBar = mem.importance >= 0.7 ? "●" : mem.importance >= 0.4 ? "◐" : "○";
|
|
197
|
-
|
|
224
|
+
const content = truncate(mem.content, maxContentLength);
|
|
225
|
+
sections.push(`- ${importanceBar}${idTag}${relTag} ${content}`);
|
|
198
226
|
}
|
|
199
227
|
}
|
|
200
228
|
}
|
|
@@ -202,29 +230,34 @@ function buildClusteredContextBlock(clustered, maxContentLength = 500) {
|
|
|
202
230
|
if (clustered.standalone_memories.length > 0) {
|
|
203
231
|
sections.push("\n## 📌 补充信息");
|
|
204
232
|
for (const mem of clustered.standalone_memories) {
|
|
233
|
+
const idTag = mem.id ? ` [id:${mem.id}]` : "";
|
|
234
|
+
const relTag = mem.relations && mem.relations.length > 0
|
|
235
|
+
? ` [rel:${mem.relations.map((rel) => rel.target_id).join(",")}]`
|
|
236
|
+
: "";
|
|
205
237
|
const content = truncate(mem.content, maxContentLength);
|
|
206
|
-
sections.push(
|
|
238
|
+
sections.push(`-${idTag}${relTag} ${content}`);
|
|
207
239
|
}
|
|
208
240
|
}
|
|
209
241
|
return [
|
|
210
242
|
"<cerebro-context>",
|
|
211
|
-
"
|
|
212
|
-
"
|
|
243
|
+
"You may use memory_get(<id>) to fetch the full content of any memory above if the summary seems incomplete but relevant.",
|
|
244
|
+
"Related memories listed in [rel:<id>,...] can also be fetched if they may add useful context.",
|
|
213
245
|
"",
|
|
214
246
|
...sections,
|
|
215
247
|
"</cerebro-context>",
|
|
216
248
|
].join("\n");
|
|
217
249
|
}
|
|
218
|
-
export function autoRecallHook(client, containerTags, tui, config = {}) {
|
|
219
|
-
const similarityThreshold = config.recall?.similarityThreshold ?? 0.
|
|
250
|
+
export function autoRecallHook(client, containerTags, tui, config = {}, getAgentName) {
|
|
251
|
+
const similarityThreshold = config.recall?.similarityThreshold ?? 0.4;
|
|
220
252
|
const maxRecallResults = config.recall?.maxRecallResults ?? 10;
|
|
221
|
-
const maxContentLength = config.content?.maxContentLength ?? 500;
|
|
253
|
+
const maxContentLength = Math.max(MIN_CONTENT_LENGTH, config.content?.maxContentLength ?? 500);
|
|
254
|
+
const maxContentChars = Math.max(MIN_CONTENT_CHARS, config.content?.maxContentChars ?? 30000);
|
|
222
255
|
const toastDelayMs = config.ui?.toastDelayMs ?? 7000;
|
|
223
256
|
return async (input, output) => {
|
|
224
257
|
if (!input.sessionID)
|
|
225
258
|
return;
|
|
226
259
|
// 5a: agent memory policy check — skip recall entirely for 'none' agents
|
|
227
|
-
const agentId = process.env.OMEM_AGENT_ID || "opencode";
|
|
260
|
+
const agentId = getAgentName?.() || process.env.OMEM_AGENT_ID || "opencode";
|
|
228
261
|
const policy = resolveAgentPolicy(agentId, config);
|
|
229
262
|
if (policy === "none")
|
|
230
263
|
return;
|
|
@@ -236,7 +269,13 @@ export function autoRecallHook(client, containerTags, tui, config = {}) {
|
|
|
236
269
|
const query_text = extractUserRequest(rawQuery);
|
|
237
270
|
const last_query_text = userMessages.length >= 2 ? userMessages[userMessages.length - 2].content : undefined;
|
|
238
271
|
const projectTags = containerTags.filter(t => t.startsWith("omem_project_"));
|
|
239
|
-
const
|
|
272
|
+
const conversationContext = userMessages.length >= 2
|
|
273
|
+
? userMessages.slice(-4, -1).map((m) => {
|
|
274
|
+
const stripped = stripPrivateContent(m.content);
|
|
275
|
+
return stripped.length > 200 ? stripped.slice(0, 200) : stripped;
|
|
276
|
+
})
|
|
277
|
+
: undefined;
|
|
278
|
+
const shouldRecallRes = await client.shouldRecall(query_text, last_query_text, input.sessionID, similarityThreshold, maxRecallResults, projectTags.length > 0 ? projectTags : undefined, conversationContext && conversationContext.length > 0 ? conversationContext : undefined);
|
|
240
279
|
if (!shouldRecallRes) {
|
|
241
280
|
showToast(tui, "🧠 Cerebro Service Unavailable", "Unable to reach memory API · check connection", "error", toastDelayMs);
|
|
242
281
|
return;
|
|
@@ -245,23 +284,38 @@ export function autoRecallHook(client, containerTags, tui, config = {}) {
|
|
|
245
284
|
const profile = await client.getProfile();
|
|
246
285
|
let profileInjected = false;
|
|
247
286
|
let profileCountText = "";
|
|
248
|
-
|
|
249
|
-
|
|
287
|
+
let profileBlock = "";
|
|
288
|
+
const lastInjected = profileInjectedSessions.get(input.sessionID);
|
|
289
|
+
const ttlExpired = !lastInjected || (Date.now() - lastInjected > 5 * 60 * 1000);
|
|
290
|
+
const isFirstInjection = !lastInjected;
|
|
291
|
+
if (profile && ttlExpired) {
|
|
292
|
+
profileBlock = [
|
|
250
293
|
"<cerebro-profile>",
|
|
251
|
-
JSON.stringify(profile
|
|
294
|
+
JSON.stringify(profile),
|
|
252
295
|
"</cerebro-profile>",
|
|
253
296
|
].join("\n");
|
|
254
|
-
output.system.
|
|
297
|
+
const existingIdx = output.system.findIndex((s) => s.includes("<cerebro-profile>"));
|
|
298
|
+
if (existingIdx >= 0) {
|
|
299
|
+
output.system[existingIdx] = profileBlock;
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
output.system.push(profileBlock);
|
|
303
|
+
}
|
|
255
304
|
profileInjected = true;
|
|
256
|
-
profileInjectedSessions.
|
|
305
|
+
profileInjectedSessions.set(input.sessionID, Date.now());
|
|
257
306
|
const p = profile;
|
|
258
307
|
const dynamicCount = p?.dynamic_context?.length ?? 0;
|
|
259
308
|
const staticCount = p?.static_facts?.length ?? 0;
|
|
260
309
|
profileCountText = `Dynamic(${dynamicCount}) · Static(${staticCount})`;
|
|
261
|
-
|
|
310
|
+
if (isFirstInjection) {
|
|
311
|
+
logDebug("autoRecallHook profile injected (first)", { dynamicCount, staticCount });
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
logDebug("autoRecallHook profile refreshed (TTL)", { dynamicCount, staticCount });
|
|
315
|
+
}
|
|
262
316
|
}
|
|
263
317
|
if (!shouldRecallRes.should_recall) {
|
|
264
|
-
if (profileInjected) {
|
|
318
|
+
if (profileInjected && isFirstInjection) {
|
|
265
319
|
showToast(tui, "👨 Profile Injected", `${profileCountText} · no memory recall needed`, "success", toastDelayMs);
|
|
266
320
|
}
|
|
267
321
|
return;
|
|
@@ -272,14 +326,30 @@ export function autoRecallHook(client, containerTags, tui, config = {}) {
|
|
|
272
326
|
const newResults = results.filter((r) => !existingIds.has(r.memory.id));
|
|
273
327
|
logDebug("autoRecallHook dedup", { totalResults: results.length, existingCount: existingIds.size, newCount: newResults.length });
|
|
274
328
|
if (newResults.length === 0) {
|
|
275
|
-
if (profileInjected) {
|
|
329
|
+
if (profileInjected && isFirstInjection) {
|
|
276
330
|
showToast(tui, "👨 Profile Injected", `${profileCountText} · all memories already injected`, "success", toastDelayMs);
|
|
277
331
|
}
|
|
278
332
|
return;
|
|
279
333
|
}
|
|
334
|
+
// --- Token Budget Calculation ---
|
|
335
|
+
const profileChars = profileInjected ? profileBlock.length : 0;
|
|
336
|
+
const budgetRemaining = maxContentChars - profileChars;
|
|
337
|
+
if (budgetRemaining < 0) {
|
|
338
|
+
logDebug("autoRecallHook budget overflow", { profileChars, maxContentChars, deficit: -budgetRemaining });
|
|
339
|
+
}
|
|
340
|
+
const itemCount = clustered
|
|
341
|
+
? (clustered.cluster_summaries.length + clustered.standalone_memories.length)
|
|
342
|
+
: newResults.length;
|
|
343
|
+
const dynamicMaxContentLength = itemCount > 0
|
|
344
|
+
? Math.min(maxContentLength, Math.max(MIN_ITEM_CONTENT_CHARS, Math.floor(budgetRemaining / itemCount)))
|
|
345
|
+
: maxContentLength;
|
|
346
|
+
logDebug("autoRecallHook budget", {
|
|
347
|
+
maxContentChars, profileChars, budgetRemaining, itemCount,
|
|
348
|
+
configuredMax: maxContentLength, dynamicMax: dynamicMaxContentLength
|
|
349
|
+
});
|
|
280
350
|
const block = clustered
|
|
281
|
-
? buildClusteredContextBlock(clustered,
|
|
282
|
-
: buildContextBlock(newResults,
|
|
351
|
+
? buildClusteredContextBlock(clustered, dynamicMaxContentLength)
|
|
352
|
+
: buildContextBlock(newResults, dynamicMaxContentLength);
|
|
283
353
|
if (block) {
|
|
284
354
|
output.system.push(block);
|
|
285
355
|
}
|
|
@@ -396,17 +466,32 @@ export function compactingHook(client, containerTags, tui, ingestMode = "smart",
|
|
|
396
466
|
}
|
|
397
467
|
catch {
|
|
398
468
|
}
|
|
469
|
+
// Main session gate: sub-agents must not write memories via compacting
|
|
470
|
+
if (getMainSessionId) {
|
|
471
|
+
const mainId = getMainSessionId();
|
|
472
|
+
if (mainId && input.sessionID && input.sessionID !== mainId) {
|
|
473
|
+
logInfo("compactingHook: non-main session skipped", { sessionID: input.sessionID, mainSessionId: mainId });
|
|
474
|
+
return;
|
|
475
|
+
}
|
|
476
|
+
}
|
|
399
477
|
// Policy gate: only readwrite agents can write memories
|
|
400
478
|
const policy = resolveAgentPolicy(effectiveAgentId, config);
|
|
401
479
|
if (policy !== "readwrite") {
|
|
402
480
|
logInfo("compactingHook blocked by policy", { agentId: effectiveAgentId, policy });
|
|
403
|
-
if (input.sessionID)
|
|
481
|
+
if (input.sessionID) {
|
|
404
482
|
sessionMessages.delete(input.sessionID);
|
|
483
|
+
profileInjectedSessions.delete(input.sessionID);
|
|
484
|
+
injectedMemoryIds.delete(input.sessionID);
|
|
485
|
+
firstMessages.delete(input.sessionID);
|
|
486
|
+
}
|
|
405
487
|
return;
|
|
406
488
|
}
|
|
407
489
|
if (input.sessionID && sessionMessages.has(input.sessionID)) {
|
|
408
490
|
if (isAutoStoreEnabled && !isAutoStoreEnabled(input.sessionID)) {
|
|
409
491
|
sessionMessages.delete(input.sessionID);
|
|
492
|
+
profileInjectedSessions.delete(input.sessionID);
|
|
493
|
+
injectedMemoryIds.delete(input.sessionID);
|
|
494
|
+
firstMessages.delete(input.sessionID);
|
|
410
495
|
}
|
|
411
496
|
else {
|
|
412
497
|
const messages = sessionMessages.get(input.sessionID);
|
|
@@ -428,12 +513,13 @@ export function compactingHook(client, containerTags, tui, ingestMode = "smart",
|
|
|
428
513
|
logErr("compactingHook detectProjectName failed", { error: String(e) });
|
|
429
514
|
}
|
|
430
515
|
try {
|
|
431
|
-
logInfo("compactingHook ingestMessages called", { msgCount: messages.length, sessionId: effectiveSessionId });
|
|
516
|
+
logInfo("compactingHook ingestMessages called", { msgCount: messages.length, sessionId: effectiveSessionId, agentId: effectiveAgentId });
|
|
432
517
|
const result = await client.ingestMessages(messages, {
|
|
433
518
|
mode: ingestMode,
|
|
434
519
|
tags: [...containerTags, "auto-capture"],
|
|
435
520
|
sessionId: effectiveSessionId,
|
|
436
521
|
projectName: projectName,
|
|
522
|
+
agentId: effectiveAgentId,
|
|
437
523
|
});
|
|
438
524
|
logInfo("compactingHook ingestMessages result", { result: result === null ? "null(blocked)" : "ok" });
|
|
439
525
|
if (result === null) {
|
|
@@ -448,6 +534,9 @@ export function compactingHook(client, containerTags, tui, ingestMode = "smart",
|
|
|
448
534
|
showToast(tui, "🔴 Archive Failed", "Session archive blocked · spiritual pulse anomaly", "error");
|
|
449
535
|
}
|
|
450
536
|
sessionMessages.delete(input.sessionID);
|
|
537
|
+
profileInjectedSessions.delete(input.sessionID);
|
|
538
|
+
injectedMemoryIds.delete(input.sessionID);
|
|
539
|
+
firstMessages.delete(input.sessionID);
|
|
451
540
|
}
|
|
452
541
|
}
|
|
453
542
|
}
|
|
@@ -455,12 +544,13 @@ export function compactingHook(client, containerTags, tui, ingestMode = "smart",
|
|
|
455
544
|
}
|
|
456
545
|
const processedMessageIds = new Set();
|
|
457
546
|
const pluginStartTime = Date.now();
|
|
458
|
-
export function sessionIdleHook(cerebroClient, _containerTags, tui, sdkClient, _ingestMode = "smart", threshold = 0, getMainSessionId, isAutoStoreEnabled, agentId, config = {}) {
|
|
547
|
+
export function sessionIdleHook(cerebroClient, _containerTags, tui, sdkClient, _ingestMode = "smart", threshold = 0, getMainSessionId, isAutoStoreEnabled, agentId, config = {}, onAgentResolved) {
|
|
459
548
|
let idleTimeout = null;
|
|
460
549
|
let isCapturing = false;
|
|
461
550
|
return async (input) => {
|
|
462
551
|
if (input.event.type !== "session.idle")
|
|
463
552
|
return;
|
|
553
|
+
logDebug("sessionIdleHook event.properties dump", { keys: Object.keys(input.event.properties || {}), raw: JSON.stringify(input.event.properties).substring(0, 2000) });
|
|
464
554
|
const sessionID = input.event.properties?.sessionID;
|
|
465
555
|
if (!sessionID)
|
|
466
556
|
return;
|
|
@@ -468,8 +558,10 @@ export function sessionIdleHook(cerebroClient, _containerTags, tui, sdkClient, _
|
|
|
468
558
|
return;
|
|
469
559
|
if (getMainSessionId) {
|
|
470
560
|
const mainId = getMainSessionId();
|
|
471
|
-
if (mainId && sessionID !== mainId)
|
|
561
|
+
if (mainId && sessionID !== mainId) {
|
|
562
|
+
logInfo("sessionIdleHook: non-main session skipped", { sessionID, mainSessionId: mainId });
|
|
472
563
|
return;
|
|
564
|
+
}
|
|
473
565
|
}
|
|
474
566
|
if (idleTimeout)
|
|
475
567
|
clearTimeout(idleTimeout);
|
|
@@ -489,8 +581,6 @@ export function sessionIdleHook(cerebroClient, _containerTags, tui, sdkClient, _
|
|
|
489
581
|
const msgId = msg.info?.id;
|
|
490
582
|
if (!msgId || processedMessageIds.has(msgId))
|
|
491
583
|
continue;
|
|
492
|
-
// Skip messages created before this plugin instance started
|
|
493
|
-
// (prevents replaying entire session history on restart)
|
|
494
584
|
const msgTime = msg.info?.createdAt ? new Date(msg.info.createdAt).getTime() : 0;
|
|
495
585
|
if (msgTime > 0 && msgTime < pluginStartTime)
|
|
496
586
|
continue;
|
|
@@ -512,17 +602,15 @@ export function sessionIdleHook(cerebroClient, _containerTags, tui, sdkClient, _
|
|
|
512
602
|
if (threshold > 1 && conversationMessages.length < threshold) {
|
|
513
603
|
return;
|
|
514
604
|
}
|
|
515
|
-
// Policy gate: only readwrite agents can write memories
|
|
516
|
-
const policy = resolveAgentPolicy(agentId || "", config);
|
|
517
|
-
if (policy !== "readwrite") {
|
|
518
|
-
logInfo("sessionIdleHook blocked by policy", { agentId: agentId || "", policy });
|
|
519
|
-
return;
|
|
520
|
-
}
|
|
521
605
|
let sessionTitle;
|
|
522
606
|
let projectName;
|
|
607
|
+
let effectiveAgentId = agentId || "opencode";
|
|
523
608
|
try {
|
|
524
609
|
const sessionInfo = await sdkClient.session.get({ path: { id: sessionID } });
|
|
525
|
-
|
|
610
|
+
if (sessionInfo?.data?.agent) {
|
|
611
|
+
effectiveAgentId = sessionInfo.data.agent;
|
|
612
|
+
onAgentResolved?.(effectiveAgentId);
|
|
613
|
+
}
|
|
526
614
|
sessionTitle = sessionInfo?.data?.title;
|
|
527
615
|
projectName = sessionInfo?.data?.directory
|
|
528
616
|
? await detectProjectName(sessionInfo.data.directory)
|
|
@@ -531,9 +619,15 @@ export function sessionIdleHook(cerebroClient, _containerTags, tui, sdkClient, _
|
|
|
531
619
|
catch (e) {
|
|
532
620
|
logErr("sessionIdleHook detectProjectName failed", { error: String(e) });
|
|
533
621
|
}
|
|
622
|
+
logDebug("sessionIdleHook resolved agentId", { effectiveAgentId, fallbackAgentId: agentId });
|
|
623
|
+
const policy = resolveAgentPolicy(effectiveAgentId, config);
|
|
624
|
+
if (policy !== "readwrite") {
|
|
625
|
+
logInfo("sessionIdleHook blocked by policy", { agentId: effectiveAgentId, policy, defaultPolicy: String(config.defaultPolicy ?? "undefined") });
|
|
626
|
+
return;
|
|
627
|
+
}
|
|
534
628
|
try {
|
|
535
|
-
logInfo("sessionIdleHook sessionIngest called", { msgCount: conversationMessages.length, sessionId: sessionID, title: String(sessionTitle) });
|
|
536
|
-
await cerebroClient.sessionIngest(conversationMessages, sessionID,
|
|
629
|
+
logInfo("sessionIdleHook sessionIngest called", { msgCount: conversationMessages.length, sessionId: sessionID, agentId: effectiveAgentId, title: String(sessionTitle) });
|
|
630
|
+
await cerebroClient.sessionIngest(conversationMessages, sessionID, effectiveAgentId, sessionTitle, projectName);
|
|
537
631
|
logInfo("sessionIdleHook sessionIngest ok");
|
|
538
632
|
for (const id of newMessageIds) {
|
|
539
633
|
processedMessageIds.add(id);
|