opencode-fractal-memory 0.6.12 → 0.6.14
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/plugin/hooks.js +25 -13
- package/dist/plugin/index.js +3 -9
- package/package.json +1 -1
package/dist/plugin/hooks.js
CHANGED
|
@@ -2,7 +2,8 @@ import { memLog, memLogSimple, setSessionId } from "../logging";
|
|
|
2
2
|
import { generateFileSummary, generateFileLabel, SOURCE_FILE_EXTENSIONS } from "../file-summary";
|
|
3
3
|
import { distillRules, predictiveRateToolCall, applyScoreDecay } from "../hooks";
|
|
4
4
|
import * as fs from "node:fs";
|
|
5
|
-
|
|
5
|
+
let activeSessionCount = 0;
|
|
6
|
+
export function createHookHandlers(store, client, memConfig, ruleCache, ruleCacheDirty, sessionInjectionLock, latestUserMessage, managementServer) {
|
|
6
7
|
return {
|
|
7
8
|
"experimental.chat.system.transform": async (input, output) => {
|
|
8
9
|
const sessionId = input.sessionID ?? `session-${Date.now()}`;
|
|
@@ -149,19 +150,30 @@ export function createHookHandlers(store, client, memConfig, ruleCache, ruleCach
|
|
|
149
150
|
memLog("warn", "file-summary", "Failed to store file memory", { error: String(err) });
|
|
150
151
|
}
|
|
151
152
|
},
|
|
152
|
-
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
153
|
+
event: async (input) => {
|
|
154
|
+
const { type, properties } = input.event;
|
|
155
|
+
if (type === "session.created") {
|
|
156
|
+
const sessionId = properties.info?.id ?? "unknown";
|
|
157
|
+
await store.createSessionMetrics(sessionId);
|
|
158
|
+
setSessionId(sessionId);
|
|
159
|
+
activeSessionCount++;
|
|
160
|
+
managementServer.start();
|
|
161
|
+
}
|
|
162
|
+
else if (type === "session.idle") {
|
|
163
|
+
const sessionId = properties.sessionID ?? "unknown";
|
|
164
|
+
await store.updateSessionMetrics(sessionId, { endedAt: Date.now(), status: "completed" });
|
|
165
|
+
if (memConfig?.autoDistill?.enabled) {
|
|
166
|
+
distillRules(store, memConfig.autoDistill, sessionId, client).then(msg => memLog("info", "auto-distill", msg)).catch(err => memLog("error", "auto-distill", "Failed", { error: String(err) }));
|
|
167
|
+
}
|
|
168
|
+
if (memConfig?.predictiveRating?.enabled) {
|
|
169
|
+
applyScoreDecay(store, memConfig.predictiveRating).then(msg => memLog("info", "predictive-rating", msg)).catch(err => memLog("error", "predictive-rating", "Decay failed", { error: String(err) }));
|
|
170
|
+
}
|
|
162
171
|
}
|
|
163
|
-
if (
|
|
164
|
-
|
|
172
|
+
else if (type === "session.deleted") {
|
|
173
|
+
activeSessionCount = Math.max(0, activeSessionCount - 1);
|
|
174
|
+
if (activeSessionCount === 0) {
|
|
175
|
+
managementServer.stop();
|
|
176
|
+
}
|
|
165
177
|
}
|
|
166
178
|
},
|
|
167
179
|
};
|
package/dist/plugin/index.js
CHANGED
|
@@ -33,22 +33,16 @@ export const MemoryPlugin = async (ctx) => {
|
|
|
33
33
|
const sessionInjectionLock = new Map();
|
|
34
34
|
const latestUserMessage = { value: "" };
|
|
35
35
|
const autoRetrieveHook = createAutoRetrieveIfEnabled(store, memConfig);
|
|
36
|
-
const handlers = createHookHandlers(store, client, memConfig, ruleCache, ruleCacheDirty, sessionInjectionLock, latestUserMessage);
|
|
36
|
+
const handlers = createHookHandlers(store, client, memConfig, ruleCache, ruleCacheDirty, sessionInjectionLock, latestUserMessage, { start: ensureManagementServer, stop: stopManagementServer });
|
|
37
37
|
const toolMap = createToolMap(store, journalTools, client);
|
|
38
38
|
memLog("info", "init", "Plugin initialization completed", { totalDurationMs: perfNow() - t0 });
|
|
39
39
|
return {
|
|
40
40
|
...handlers,
|
|
41
41
|
...(autoRetrieveHook || {}),
|
|
42
42
|
tool: toolMap,
|
|
43
|
-
|
|
44
|
-
const existing = handlers["session.created"];
|
|
45
|
-
if (existing) {
|
|
46
|
-
await existing(event);
|
|
47
|
-
}
|
|
48
|
-
ensureManagementServer();
|
|
49
|
-
},
|
|
50
|
-
"session.deleted": async () => {
|
|
43
|
+
dispose: async () => {
|
|
51
44
|
stopManagementServer();
|
|
45
|
+
await store.close();
|
|
52
46
|
},
|
|
53
47
|
};
|
|
54
48
|
};
|