centient 3.2.3 → 3.4.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/CHANGELOG.md +25 -0
- package/README.md +7 -8
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/postinstall.js +54 -1
- package/dist/postinstall.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/knowledge/promoteDecision.js +2 -2
- package/dist/tools/knowledge/promoteDecision.js.map +1 -1
- package/dist/tools/knowledge/promoteLearning.js +2 -2
- package/dist/tools/knowledge/promoteLearning.js.map +1 -1
- package/dist/tools/knowledge/searchMetaKnowledge.js +1 -1
- package/dist/tools/knowledge/searchMetaKnowledge.js.map +1 -1
- package/dist/tools/session/getSessionDrift.d.ts +9 -0
- package/dist/tools/session/getSessionDrift.d.ts.map +1 -0
- package/dist/tools/session/getSessionDrift.js +180 -0
- package/dist/tools/session/getSessionDrift.js.map +1 -0
- package/dist/tools/session/saveSessionNote.d.ts.map +1 -1
- package/dist/tools/session/saveSessionNote.js +15 -1
- package/dist/tools/session/saveSessionNote.js.map +1 -1
- package/dist/tools/session/startSessionCoordination.d.ts +2 -0
- package/dist/tools/session/startSessionCoordination.d.ts.map +1 -1
- package/dist/tools/session/startSessionCoordination.js +17 -0
- package/dist/tools/session/startSessionCoordination.js.map +1 -1
- package/dist/utils/StreamingSessionCoordinator.d.ts +86 -0
- package/dist/utils/StreamingSessionCoordinator.d.ts.map +1 -0
- package/dist/utils/StreamingSessionCoordinator.js +200 -0
- package/dist/utils/StreamingSessionCoordinator.js.map +1 -0
- package/dist/utils/StreamingSessionEmbedding.d.ts +82 -0
- package/dist/utils/StreamingSessionEmbedding.d.ts.map +1 -0
- package/dist/utils/StreamingSessionEmbedding.js +274 -0
- package/dist/utils/StreamingSessionEmbedding.js.map +1 -0
- package/dist/utils/__tests__/StreamingSessionEmbedding.test.d.ts +2 -0
- package/dist/utils/__tests__/StreamingSessionEmbedding.test.d.ts.map +1 -0
- package/dist/utils/__tests__/StreamingSessionEmbedding.test.js +176 -0
- package/dist/utils/__tests__/StreamingSessionEmbedding.test.js.map +1 -0
- package/dist/utils/config.js +2 -2
- package/dist/utils/config.js.map +1 -1
- package/package.json +1 -1
- package/templates/claude/commands/promote.md +2 -2
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { getActiveStreamingEmbedding } from "./startSessionCoordination.js";
|
|
2
|
+
import { estimateTokensFromJSON } from "../../utils/tokenEstimator.js";
|
|
3
|
+
export const getSessionDriftTool = {
|
|
4
|
+
name: "get_session_drift",
|
|
5
|
+
description: "Get TTT-inspired drift analysis for the current session. Returns streaming embedding stats, drift history, and per-type analysis. Use during checkpoint or finalize to understand session coherence.",
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: "object",
|
|
8
|
+
properties: {
|
|
9
|
+
includeHistory: {
|
|
10
|
+
type: "boolean",
|
|
11
|
+
description: "Include full drift history for each note (default: true). Set false for summary only.",
|
|
12
|
+
},
|
|
13
|
+
includePerTypeAnalysis: {
|
|
14
|
+
type: "boolean",
|
|
15
|
+
description: "Include per-type embedding analysis (default: true). Shows how each note type aligns with session theme.",
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
required: [],
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
export async function getSessionDriftHandler(args) {
|
|
22
|
+
const startTime = Date.now();
|
|
23
|
+
try {
|
|
24
|
+
const input = args ?? {};
|
|
25
|
+
const result = await getSessionDrift(input);
|
|
26
|
+
const responseText = JSON.stringify(result, null, 2);
|
|
27
|
+
return {
|
|
28
|
+
content: [
|
|
29
|
+
{
|
|
30
|
+
type: "text",
|
|
31
|
+
text: responseText,
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const duration = Date.now() - startTime;
|
|
38
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
39
|
+
const errorResult = {
|
|
40
|
+
success: false,
|
|
41
|
+
error: {
|
|
42
|
+
code: "GET_SESSION_DRIFT_ERROR",
|
|
43
|
+
message: errorMessage,
|
|
44
|
+
},
|
|
45
|
+
metadata: {
|
|
46
|
+
tokensUsed: 0,
|
|
47
|
+
duration,
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
return {
|
|
51
|
+
content: [
|
|
52
|
+
{
|
|
53
|
+
type: "text",
|
|
54
|
+
text: JSON.stringify(errorResult, null, 2),
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async function getSessionDrift(input) {
|
|
61
|
+
const startTime = Date.now();
|
|
62
|
+
const includeHistory = input.includeHistory ?? true;
|
|
63
|
+
const includePerTypeAnalysis = input.includePerTypeAnalysis ?? true;
|
|
64
|
+
try {
|
|
65
|
+
const streamingEmbedding = getActiveStreamingEmbedding();
|
|
66
|
+
if (!streamingEmbedding) {
|
|
67
|
+
return {
|
|
68
|
+
success: true,
|
|
69
|
+
data: {
|
|
70
|
+
sessionId: "unknown",
|
|
71
|
+
hasEmbedding: false,
|
|
72
|
+
stats: {
|
|
73
|
+
noteCount: 0,
|
|
74
|
+
totalWeight: 0,
|
|
75
|
+
averageSimilarity: 1.0,
|
|
76
|
+
createdAt: new Date().toISOString(),
|
|
77
|
+
lastUpdatedAt: null,
|
|
78
|
+
noteCountByType: {},
|
|
79
|
+
},
|
|
80
|
+
coherence: {
|
|
81
|
+
level: "none",
|
|
82
|
+
description: "No streaming embedding active. Session drift tracking not enabled.",
|
|
83
|
+
},
|
|
84
|
+
alerts: ["⚠️ Streaming embedding not initialized. Call start_session_coordination first."],
|
|
85
|
+
},
|
|
86
|
+
metadata: {
|
|
87
|
+
tokensUsed: 50,
|
|
88
|
+
duration: Date.now() - startTime,
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const stats = streamingEmbedding.getStats();
|
|
93
|
+
const coherence = determineCoherence(stats.averageSimilarity, stats.noteCount);
|
|
94
|
+
const result = {
|
|
95
|
+
success: true,
|
|
96
|
+
data: {
|
|
97
|
+
sessionId: stats.sessionId,
|
|
98
|
+
hasEmbedding: stats.hasEmbedding,
|
|
99
|
+
stats: {
|
|
100
|
+
noteCount: stats.noteCount,
|
|
101
|
+
totalWeight: stats.totalWeight,
|
|
102
|
+
averageSimilarity: stats.averageSimilarity,
|
|
103
|
+
createdAt: stats.createdAt,
|
|
104
|
+
lastUpdatedAt: stats.lastUpdatedAt,
|
|
105
|
+
noteCountByType: stats.noteCountByType,
|
|
106
|
+
},
|
|
107
|
+
coherence,
|
|
108
|
+
alerts: [],
|
|
109
|
+
},
|
|
110
|
+
metadata: {
|
|
111
|
+
tokensUsed: 0,
|
|
112
|
+
duration: 0,
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
if (includeHistory) {
|
|
116
|
+
result.data.driftHistory = streamingEmbedding.getDriftHistory();
|
|
117
|
+
}
|
|
118
|
+
if (includePerTypeAnalysis) {
|
|
119
|
+
result.data.perTypeAnalysis = streamingEmbedding.getPerTypeAnalysis();
|
|
120
|
+
}
|
|
121
|
+
const alerts = [];
|
|
122
|
+
if (coherence.level === "low") {
|
|
123
|
+
alerts.push("⚠️ Session coherence is low. Consider whether this session should be split into multiple sessions.");
|
|
124
|
+
}
|
|
125
|
+
if (stats.noteCount > 30) {
|
|
126
|
+
alerts.push("💡 Session has many notes. Consider running /checkpoint to persist current state.");
|
|
127
|
+
}
|
|
128
|
+
if (includeHistory && result.data.driftHistory) {
|
|
129
|
+
const recentHistory = result.data.driftHistory.slice(-5);
|
|
130
|
+
const extremeDrifts = recentHistory.filter((h) => h.similarity < 0.55);
|
|
131
|
+
if (extremeDrifts.length >= 2) {
|
|
132
|
+
alerts.push("🔴 Multiple recent notes show extreme drift. Session may be covering too many topics.");
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
result.data.alerts = alerts;
|
|
136
|
+
result.metadata.tokensUsed = estimateTokensFromJSON(result.data);
|
|
137
|
+
result.metadata.duration = Date.now() - startTime;
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
const duration = Date.now() - startTime;
|
|
142
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
143
|
+
return {
|
|
144
|
+
success: false,
|
|
145
|
+
error: {
|
|
146
|
+
code: "GET_SESSION_DRIFT_ERROR",
|
|
147
|
+
message: errorMessage,
|
|
148
|
+
},
|
|
149
|
+
metadata: {
|
|
150
|
+
tokensUsed: 0,
|
|
151
|
+
duration,
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function determineCoherence(averageSimilarity, noteCount) {
|
|
157
|
+
if (noteCount < 3) {
|
|
158
|
+
return {
|
|
159
|
+
level: "none",
|
|
160
|
+
description: "Not enough notes for coherence analysis (need at least 3).",
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
if (averageSimilarity >= 0.85) {
|
|
164
|
+
return {
|
|
165
|
+
level: "high",
|
|
166
|
+
description: "Session is highly coherent. Notes are closely related to the session theme.",
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
if (averageSimilarity >= 0.70) {
|
|
170
|
+
return {
|
|
171
|
+
level: "medium",
|
|
172
|
+
description: "Session has moderate coherence. Some topic variation but generally focused.",
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
level: "low",
|
|
177
|
+
description: "Session coherence is low. Notes cover diverse topics that may belong in separate sessions.",
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=getSessionDrift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSessionDrift.js","sourceRoot":"","sources":["../../../src/tools/session/getSessionDrift.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveSessionNote.d.ts","sourceRoot":"","sources":["../../../src/tools/session/saveSessionNote.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"saveSessionNote.d.ts","sourceRoot":"","sources":["../../../src/tools/session/saveSessionNote.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAY1D,eAAO,MAAM,mBAAmB,EAAE,IAkIjC,CAAC;AAwCF,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAmD7D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getActiveCoordinator } from "./startSessionCoordination.js";
|
|
1
|
+
import { getActiveCoordinator, getActiveStreamingEmbedding, } from "./startSessionCoordination.js";
|
|
2
2
|
import { estimateTokensFromJSON } from "../../utils/tokenEstimator.js";
|
|
3
3
|
export const saveSessionNoteTool = {
|
|
4
4
|
name: "save_session_note",
|
|
@@ -178,6 +178,18 @@ async function saveNote(input) {
|
|
|
178
178
|
metadata: input.metadata,
|
|
179
179
|
};
|
|
180
180
|
const pointId = await coordinator.saveNoteWithId(note, input.relationships);
|
|
181
|
+
let drift = null;
|
|
182
|
+
let sessionStats;
|
|
183
|
+
const streamingEmbedding = getActiveStreamingEmbedding();
|
|
184
|
+
if (streamingEmbedding) {
|
|
185
|
+
const embeddingResult = await streamingEmbedding.addNote(input.type, input.content);
|
|
186
|
+
drift = embeddingResult.drift;
|
|
187
|
+
const stats = streamingEmbedding.getStats();
|
|
188
|
+
sessionStats = {
|
|
189
|
+
noteCount: stats.noteCount,
|
|
190
|
+
averageSimilarity: stats.averageSimilarity,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
181
193
|
const tokensUsed = estimateTokensFromJSON({ input });
|
|
182
194
|
const duration = Date.now() - startTime;
|
|
183
195
|
return {
|
|
@@ -187,6 +199,8 @@ async function saveNote(input) {
|
|
|
187
199
|
content: input.content,
|
|
188
200
|
saved: true,
|
|
189
201
|
point_id: pointId,
|
|
202
|
+
drift,
|
|
203
|
+
sessionStats,
|
|
190
204
|
},
|
|
191
205
|
metadata: {
|
|
192
206
|
tokensUsed,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveSessionNote.js","sourceRoot":"","sources":["../../../src/tools/session/saveSessionNote.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"saveSessionNote.js","sourceRoot":"","sources":["../../../src/tools/session/saveSessionNote.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
2
|
import { SessionCoordinator } from "../../utils/SessionCoordinator.js";
|
|
3
|
+
import { StreamingSessionEmbedding } from "../../utils/StreamingSessionEmbedding.js";
|
|
3
4
|
export declare const startSessionCoordinationTool: Tool;
|
|
4
5
|
export declare function startSessionCoordinationHandler(args: unknown): Promise<{
|
|
5
6
|
content: Array<{
|
|
@@ -8,6 +9,7 @@ export declare function startSessionCoordinationHandler(args: unknown): Promise<
|
|
|
8
9
|
}>;
|
|
9
10
|
}>;
|
|
10
11
|
export declare function getActiveCoordinator(): SessionCoordinator;
|
|
12
|
+
export declare function getActiveStreamingEmbedding(): StreamingSessionEmbedding | null;
|
|
11
13
|
export declare function clearActiveCoordinator(): void;
|
|
12
14
|
export declare function hasActiveSession(): boolean;
|
|
13
15
|
//# sourceMappingURL=startSessionCoordination.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startSessionCoordination.d.ts","sourceRoot":"","sources":["../../../src/tools/session/startSessionCoordination.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"startSessionCoordination.d.ts","sourceRoot":"","sources":["../../../src/tools/session/startSessionCoordination.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,EACL,yBAAyB,EAE1B,MAAM,0CAA0C,CAAC;AAWlD,eAAO,MAAM,4BAA4B,EAAE,IA8B1C,CAAC;AAqCF,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAmD7D;AAkFD,wBAAgB,oBAAoB,IAAI,kBAAkB,CAOzD;AAMD,wBAAgB,2BAA2B,IAAI,yBAAyB,GAAG,IAAI,CAE9E;AAKD,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C;AAKD,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { SessionCoordinator } from "../../utils/SessionCoordinator.js";
|
|
2
2
|
import { estimateTokensFromJSON } from "../../utils/tokenEstimator.js";
|
|
3
|
+
import { createStreamingEmbedding, } from "../../utils/StreamingSessionEmbedding.js";
|
|
3
4
|
let activeCoordinator = null;
|
|
5
|
+
let activeStreamingEmbedding = null;
|
|
4
6
|
export const startSessionCoordinationTool = {
|
|
5
7
|
name: "start_session_coordination",
|
|
6
8
|
description: "Initialize Qdrant session memory for real-time coordination. Call this at the start of a session to enable fast semantic search and duplicate detection. Optionally seeds session with relevant prior knowledge from Memory Bank.",
|
|
@@ -19,6 +21,11 @@ export const startSessionCoordinationTool = {
|
|
|
19
21
|
type: "string",
|
|
20
22
|
description: 'Optional topic to seed session with relevant Memory Bank knowledge (e.g., "authentication", "database migrations"). If provided, searches Memory Bank and injects matching memories as prior_knowledge.',
|
|
21
23
|
},
|
|
24
|
+
embeddingPreset: {
|
|
25
|
+
type: "string",
|
|
26
|
+
enum: ["stable", "responsive", "balanced"],
|
|
27
|
+
description: 'TTT-inspired streaming embedding preset. "stable" = slow to change (0.95 decay), "responsive" = quickly adapts (0.7 decay), "balanced" = default (0.85 decay). Affects drift detection sensitivity.',
|
|
28
|
+
},
|
|
22
29
|
},
|
|
23
30
|
required: ["sessionId", "projectPath"],
|
|
24
31
|
},
|
|
@@ -77,6 +84,8 @@ async function startSession(input) {
|
|
|
77
84
|
const coordinator = new SessionCoordinator(input.sessionId, input.projectPath);
|
|
78
85
|
const seedResult = await coordinator.initialize(input.seedTopic);
|
|
79
86
|
activeCoordinator = coordinator;
|
|
87
|
+
const embeddingPreset = input.embeddingPreset ?? "balanced";
|
|
88
|
+
activeStreamingEmbedding = createStreamingEmbedding(input.sessionId, embeddingPreset);
|
|
80
89
|
const projectName = input.projectPath.split("/").pop() || "default";
|
|
81
90
|
const collectionName = `session-${projectName}-${input.sessionId}`;
|
|
82
91
|
const tokensUsed = estimateTokensFromJSON({ input, collectionName });
|
|
@@ -88,6 +97,10 @@ async function startSession(input) {
|
|
|
88
97
|
projectPath: input.projectPath,
|
|
89
98
|
collectionName,
|
|
90
99
|
seededFromMemoryBank: seedResult?.memoryBankSeeding,
|
|
100
|
+
streamingEmbedding: {
|
|
101
|
+
preset: embeddingPreset,
|
|
102
|
+
enabled: true,
|
|
103
|
+
},
|
|
91
104
|
},
|
|
92
105
|
metadata: {
|
|
93
106
|
tokensUsed,
|
|
@@ -117,8 +130,12 @@ export function getActiveCoordinator() {
|
|
|
117
130
|
}
|
|
118
131
|
return activeCoordinator;
|
|
119
132
|
}
|
|
133
|
+
export function getActiveStreamingEmbedding() {
|
|
134
|
+
return activeStreamingEmbedding;
|
|
135
|
+
}
|
|
120
136
|
export function clearActiveCoordinator() {
|
|
121
137
|
activeCoordinator = null;
|
|
138
|
+
activeStreamingEmbedding = null;
|
|
122
139
|
}
|
|
123
140
|
export function hasActiveSession() {
|
|
124
141
|
return activeCoordinator !== null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startSessionCoordination.js","sourceRoot":"","sources":["../../../src/tools/session/startSessionCoordination.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"startSessionCoordination.js","sourceRoot":"","sources":["../../../src/tools/session/startSessionCoordination.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { StreamingSessionEmbedding, DriftAnalysis, SessionEmbeddingSnapshot } from "./StreamingSessionEmbedding.js";
|
|
2
|
+
export interface StreamingCoordinatorConfig {
|
|
3
|
+
driftAlertThreshold: "low" | "medium" | "high";
|
|
4
|
+
autoSuggestBranch: boolean;
|
|
5
|
+
persistSessionEmbedding: boolean;
|
|
6
|
+
embeddingPreset: "stable" | "responsive" | "balanced";
|
|
7
|
+
}
|
|
8
|
+
export interface EnhancedSaveResult {
|
|
9
|
+
pointId: number;
|
|
10
|
+
drift: DriftAnalysis | null;
|
|
11
|
+
sessionStats: {
|
|
12
|
+
noteCount: number;
|
|
13
|
+
averageSimilarity: number;
|
|
14
|
+
dominantTypes: string[];
|
|
15
|
+
};
|
|
16
|
+
alerts: string[];
|
|
17
|
+
}
|
|
18
|
+
export declare class StreamingSessionCoordinator {
|
|
19
|
+
private coordinator;
|
|
20
|
+
private streamingEmbedding;
|
|
21
|
+
private config;
|
|
22
|
+
private sessionId;
|
|
23
|
+
private alertsEmitted;
|
|
24
|
+
constructor(sessionId: string, projectPath: string, config?: Partial<StreamingCoordinatorConfig>);
|
|
25
|
+
initialize(options?: {
|
|
26
|
+
seedTopic?: string;
|
|
27
|
+
archetype?: string;
|
|
28
|
+
}): Promise<{
|
|
29
|
+
memoryBankSeeding?: {
|
|
30
|
+
query: string;
|
|
31
|
+
count: number;
|
|
32
|
+
};
|
|
33
|
+
archiveSeeding?: {
|
|
34
|
+
sessionCount: number;
|
|
35
|
+
insightCount: number;
|
|
36
|
+
};
|
|
37
|
+
matchedArchetype?: string;
|
|
38
|
+
archetypeSimilarity?: number;
|
|
39
|
+
}>;
|
|
40
|
+
saveNoteWithStreaming(note: {
|
|
41
|
+
type: string;
|
|
42
|
+
content: string;
|
|
43
|
+
metadata?: Record<string, unknown>;
|
|
44
|
+
}, relationships?: {
|
|
45
|
+
preceded_by?: number[];
|
|
46
|
+
caused_by?: number[];
|
|
47
|
+
validated_by?: number[];
|
|
48
|
+
related_to?: number[];
|
|
49
|
+
}): Promise<EnhancedSaveResult>;
|
|
50
|
+
private shouldAlertForDrift;
|
|
51
|
+
private matchArchetype;
|
|
52
|
+
searchWithContextBoost(query: string, options?: {
|
|
53
|
+
limit?: number;
|
|
54
|
+
boostFactor?: number;
|
|
55
|
+
}): Promise<Array<{
|
|
56
|
+
score: number;
|
|
57
|
+
boostedScore: number;
|
|
58
|
+
content: string;
|
|
59
|
+
type: string;
|
|
60
|
+
sessionAlignment: number;
|
|
61
|
+
}>>;
|
|
62
|
+
compareToSession(otherSessionEmbedding: number[]): Promise<{
|
|
63
|
+
similarity: number;
|
|
64
|
+
interpretation: string;
|
|
65
|
+
}>;
|
|
66
|
+
getSessionEmbedding(): SessionEmbeddingSnapshot | null;
|
|
67
|
+
getDriftAnalysis(): {
|
|
68
|
+
history: Array<{
|
|
69
|
+
timestamp: string;
|
|
70
|
+
noteType: string;
|
|
71
|
+
similarity: number;
|
|
72
|
+
}>;
|
|
73
|
+
perTypeAnalysis: Array<{
|
|
74
|
+
type: string;
|
|
75
|
+
count: number;
|
|
76
|
+
similarityToSession: number;
|
|
77
|
+
}>;
|
|
78
|
+
stats: ReturnType<StreamingSessionEmbedding["getStats"]>;
|
|
79
|
+
};
|
|
80
|
+
persistSessionEmbedding(): Promise<void>;
|
|
81
|
+
cleanup(): Promise<void>;
|
|
82
|
+
private cosineSimilarity;
|
|
83
|
+
search(query: string, limit?: number): Promise<import("./SessionCoordinator.js").SearchResult[]>;
|
|
84
|
+
checkDuplicateWork(description: string, threshold?: number): Promise<import("./SessionCoordinator.js").SearchResult[]>;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=StreamingSessionCoordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamingSessionCoordinator.d.ts","sourceRoot":"","sources":["../../src/utils/StreamingSessionCoordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { SessionCoordinator } from "./SessionCoordinator.js";
|
|
2
|
+
import { createStreamingEmbedding, } from "./StreamingSessionEmbedding.js";
|
|
3
|
+
import { getEmbeddingService } from "./GeminiEmbeddingService.js";
|
|
4
|
+
const SESSION_ARCHETYPES = [];
|
|
5
|
+
export class StreamingSessionCoordinator {
|
|
6
|
+
coordinator;
|
|
7
|
+
streamingEmbedding;
|
|
8
|
+
config;
|
|
9
|
+
sessionId;
|
|
10
|
+
alertsEmitted = new Set();
|
|
11
|
+
constructor(sessionId, projectPath, config = {}) {
|
|
12
|
+
this.sessionId = sessionId;
|
|
13
|
+
this.config = {
|
|
14
|
+
driftAlertThreshold: config.driftAlertThreshold ?? "medium",
|
|
15
|
+
autoSuggestBranch: config.autoSuggestBranch ?? true,
|
|
16
|
+
persistSessionEmbedding: config.persistSessionEmbedding ?? true,
|
|
17
|
+
embeddingPreset: config.embeddingPreset ?? "balanced",
|
|
18
|
+
};
|
|
19
|
+
this.coordinator = new SessionCoordinator(sessionId, projectPath);
|
|
20
|
+
this.streamingEmbedding = createStreamingEmbedding(sessionId, this.config.embeddingPreset);
|
|
21
|
+
}
|
|
22
|
+
async initialize(options = {}) {
|
|
23
|
+
const result = await this.coordinator.initialize(options.seedTopic);
|
|
24
|
+
if (options.archetype) {
|
|
25
|
+
const archetypeMatch = await this.matchArchetype(options.archetype);
|
|
26
|
+
if (archetypeMatch) {
|
|
27
|
+
return {
|
|
28
|
+
...result,
|
|
29
|
+
matchedArchetype: archetypeMatch.name,
|
|
30
|
+
archetypeSimilarity: archetypeMatch.similarity,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
async saveNoteWithStreaming(note, relationships) {
|
|
37
|
+
const alerts = [];
|
|
38
|
+
const embeddingResult = await this.streamingEmbedding.addNote(note.type, note.content);
|
|
39
|
+
if (embeddingResult.drift) {
|
|
40
|
+
const shouldAlert = this.shouldAlertForDrift(embeddingResult.drift);
|
|
41
|
+
if (shouldAlert) {
|
|
42
|
+
const alertKey = `drift-${embeddingResult.drift.driftLevel}`;
|
|
43
|
+
if (!this.alertsEmitted.has(alertKey)) {
|
|
44
|
+
alerts.push(`⚠️ Session drift detected (${embeddingResult.drift.driftLevel}): ${embeddingResult.drift.suggestion}`);
|
|
45
|
+
this.alertsEmitted.add(alertKey);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (this.config.autoSuggestBranch &&
|
|
49
|
+
embeddingResult.drift.isAnomalous) {
|
|
50
|
+
alerts.push(`💡 Consider creating a branch: This note significantly diverges from session theme. Use mark_decision_point + create_branch to explore this tangent.`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const pointId = await this.coordinator.saveNoteWithId({
|
|
54
|
+
type: note.type,
|
|
55
|
+
content: note.content,
|
|
56
|
+
metadata: {
|
|
57
|
+
...note.metadata,
|
|
58
|
+
_streamingMeta: {
|
|
59
|
+
similarity: embeddingResult.drift?.similarity ?? 1.0,
|
|
60
|
+
driftLevel: embeddingResult.drift?.driftLevel ?? "none",
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
}, relationships);
|
|
64
|
+
const snapshot = this.streamingEmbedding.getSnapshot();
|
|
65
|
+
return {
|
|
66
|
+
pointId,
|
|
67
|
+
drift: embeddingResult.drift,
|
|
68
|
+
sessionStats: {
|
|
69
|
+
noteCount: snapshot?.noteCount ?? 0,
|
|
70
|
+
averageSimilarity: this.streamingEmbedding.getStats().averageSimilarity,
|
|
71
|
+
dominantTypes: snapshot?.dominantTypes ?? [],
|
|
72
|
+
},
|
|
73
|
+
alerts,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
shouldAlertForDrift(drift) {
|
|
77
|
+
const thresholdOrder = ["none", "low", "medium", "high", "extreme"];
|
|
78
|
+
const configThresholdIndex = thresholdOrder.indexOf(this.config.driftAlertThreshold);
|
|
79
|
+
const driftIndex = thresholdOrder.indexOf(drift.driftLevel);
|
|
80
|
+
return driftIndex >= configThresholdIndex;
|
|
81
|
+
}
|
|
82
|
+
async matchArchetype(archetypeName) {
|
|
83
|
+
const archetype = SESSION_ARCHETYPES.find((a) => a.name === archetypeName);
|
|
84
|
+
if (!archetype) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
name: archetype.name,
|
|
89
|
+
similarity: 1.0,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
async searchWithContextBoost(query, options = {}) {
|
|
93
|
+
const limit = options.limit ?? 5;
|
|
94
|
+
const boostFactor = options.boostFactor ?? 0.2;
|
|
95
|
+
const results = await this.coordinator.search(query, limit * 2);
|
|
96
|
+
const sessionEmbedding = this.streamingEmbedding.getSessionEmbedding();
|
|
97
|
+
if (!sessionEmbedding) {
|
|
98
|
+
return results.slice(0, limit).map((r) => ({
|
|
99
|
+
score: r.score,
|
|
100
|
+
boostedScore: r.score,
|
|
101
|
+
content: r.content,
|
|
102
|
+
type: r.type,
|
|
103
|
+
sessionAlignment: 1.0,
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
const boostedResults = await Promise.all(results.map(async (r) => {
|
|
107
|
+
const embResult = await getEmbeddingService().generateEmbedding(r.content, "session");
|
|
108
|
+
const alignment = this.cosineSimilarity(embResult.embedding, sessionEmbedding);
|
|
109
|
+
const boostedScore = r.score * (1 + boostFactor * alignment);
|
|
110
|
+
return {
|
|
111
|
+
score: r.score,
|
|
112
|
+
boostedScore,
|
|
113
|
+
content: r.content,
|
|
114
|
+
type: r.type,
|
|
115
|
+
sessionAlignment: alignment,
|
|
116
|
+
};
|
|
117
|
+
}));
|
|
118
|
+
return boostedResults
|
|
119
|
+
.sort((a, b) => b.boostedScore - a.boostedScore)
|
|
120
|
+
.slice(0, limit);
|
|
121
|
+
}
|
|
122
|
+
async compareToSession(otherSessionEmbedding) {
|
|
123
|
+
const similarity = this.streamingEmbedding.compareTo(otherSessionEmbedding);
|
|
124
|
+
let interpretation;
|
|
125
|
+
if (similarity > 0.85) {
|
|
126
|
+
interpretation = "Highly similar - likely same work stream";
|
|
127
|
+
}
|
|
128
|
+
else if (similarity > 0.7) {
|
|
129
|
+
interpretation = "Related - overlapping topics";
|
|
130
|
+
}
|
|
131
|
+
else if (similarity > 0.5) {
|
|
132
|
+
interpretation = "Somewhat related - tangential connection";
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
interpretation = "Different - distinct work streams";
|
|
136
|
+
}
|
|
137
|
+
return { similarity, interpretation };
|
|
138
|
+
}
|
|
139
|
+
getSessionEmbedding() {
|
|
140
|
+
return this.streamingEmbedding.getSnapshot();
|
|
141
|
+
}
|
|
142
|
+
getDriftAnalysis() {
|
|
143
|
+
return {
|
|
144
|
+
history: this.streamingEmbedding.getDriftHistory(),
|
|
145
|
+
perTypeAnalysis: this.streamingEmbedding
|
|
146
|
+
.getPerTypeAnalysis()
|
|
147
|
+
.map((a) => ({
|
|
148
|
+
type: a.type,
|
|
149
|
+
count: a.count,
|
|
150
|
+
similarityToSession: a.similarityToSession,
|
|
151
|
+
})),
|
|
152
|
+
stats: this.streamingEmbedding.getStats(),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
async persistSessionEmbedding() {
|
|
156
|
+
if (!this.config.persistSessionEmbedding) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const snapshot = this.streamingEmbedding.getSnapshot();
|
|
160
|
+
if (!snapshot) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
await this.coordinator.saveNoteWithId({
|
|
164
|
+
type: "finding",
|
|
165
|
+
content: `Session summary embedding for ${this.sessionId}`,
|
|
166
|
+
metadata: {
|
|
167
|
+
isSessionEmbedding: true,
|
|
168
|
+
noteCount: snapshot.noteCount,
|
|
169
|
+
dominantTypes: snapshot.dominantTypes,
|
|
170
|
+
totalWeight: snapshot.totalWeight,
|
|
171
|
+
serializedEmbedding: this.streamingEmbedding.serialize(),
|
|
172
|
+
},
|
|
173
|
+
}, undefined);
|
|
174
|
+
}
|
|
175
|
+
async cleanup() {
|
|
176
|
+
await this.persistSessionEmbedding();
|
|
177
|
+
await this.coordinator.cleanup();
|
|
178
|
+
}
|
|
179
|
+
cosineSimilarity(a, b) {
|
|
180
|
+
let dotProduct = 0;
|
|
181
|
+
let magnitudeA = 0;
|
|
182
|
+
let magnitudeB = 0;
|
|
183
|
+
for (let i = 0; i < a.length; i++) {
|
|
184
|
+
const aVal = a[i] ?? 0;
|
|
185
|
+
const bVal = b[i] ?? 0;
|
|
186
|
+
dotProduct += aVal * bVal;
|
|
187
|
+
magnitudeA += aVal * aVal;
|
|
188
|
+
magnitudeB += bVal * bVal;
|
|
189
|
+
}
|
|
190
|
+
const magnitude = Math.sqrt(magnitudeA) * Math.sqrt(magnitudeB);
|
|
191
|
+
return magnitude === 0 ? 0 : dotProduct / magnitude;
|
|
192
|
+
}
|
|
193
|
+
async search(query, limit) {
|
|
194
|
+
return this.coordinator.search(query, limit);
|
|
195
|
+
}
|
|
196
|
+
async checkDuplicateWork(description, threshold) {
|
|
197
|
+
return this.coordinator.checkDuplicate(description, threshold);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=StreamingSessionCoordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamingSessionCoordinator.js","sourceRoot":"","sources":["../../src/utils/StreamingSessionCoordinator.ts"],"names":[],"mappings":"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"}
|