centient 3.3.0 → 3.5.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 +50 -1
- package/README.md +6 -7
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -0
- package/dist/server.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 +202 -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 +130 -0
- package/dist/utils/StreamingSessionEmbedding.d.ts.map +1 -0
- package/dist/utils/StreamingSessionEmbedding.js +531 -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/package.json +1 -1
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
+
import { StreamingSessionEmbedding, createStreamingEmbedding, } from "../StreamingSessionEmbedding.js";
|
|
3
|
+
vi.mock("../GeminiEmbeddingService.js", () => ({
|
|
4
|
+
getEmbeddingService: () => ({
|
|
5
|
+
generateEmbedding: vi.fn().mockImplementation(async (text) => {
|
|
6
|
+
const embedding = new Array(3072).fill(0);
|
|
7
|
+
if (text.toLowerCase().includes("auth") || text.toLowerCase().includes("jwt")) {
|
|
8
|
+
for (let i = 0; i < 100; i++)
|
|
9
|
+
embedding[i] = 0.8 + Math.random() * 0.2;
|
|
10
|
+
}
|
|
11
|
+
if (text.toLowerCase().includes("database") || text.toLowerCase().includes("sql")) {
|
|
12
|
+
for (let i = 100; i < 200; i++)
|
|
13
|
+
embedding[i] = 0.8 + Math.random() * 0.2;
|
|
14
|
+
}
|
|
15
|
+
if (text.toLowerCase().includes("ui") || text.toLowerCase().includes("frontend")) {
|
|
16
|
+
for (let i = 200; i < 300; i++)
|
|
17
|
+
embedding[i] = 0.8 + Math.random() * 0.2;
|
|
18
|
+
}
|
|
19
|
+
for (let i = 0; i < 3072; i++) {
|
|
20
|
+
embedding[i] += Math.random() * 0.1;
|
|
21
|
+
}
|
|
22
|
+
const magnitude = Math.sqrt(embedding.reduce((s, v) => s + v * v, 0));
|
|
23
|
+
for (let i = 0; i < 3072; i++)
|
|
24
|
+
embedding[i] /= magnitude;
|
|
25
|
+
return { embedding, cached: false, dimensions: 3072 };
|
|
26
|
+
}),
|
|
27
|
+
}),
|
|
28
|
+
}));
|
|
29
|
+
describe("StreamingSessionEmbedding", () => {
|
|
30
|
+
let streaming;
|
|
31
|
+
beforeEach(() => {
|
|
32
|
+
streaming = new StreamingSessionEmbedding("test-session", {
|
|
33
|
+
decayFactor: 0.9,
|
|
34
|
+
minNotesForDrift: 2,
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe("initialization", () => {
|
|
38
|
+
it("should start with no embedding", () => {
|
|
39
|
+
expect(streaming.getSessionEmbedding()).toBeNull();
|
|
40
|
+
expect(streaming.getStats().noteCount).toBe(0);
|
|
41
|
+
});
|
|
42
|
+
it("should create embedding after first note", async () => {
|
|
43
|
+
await streaming.addNote("decision", "Using JWT for authentication");
|
|
44
|
+
expect(streaming.getSessionEmbedding()).not.toBeNull();
|
|
45
|
+
expect(streaming.getStats().noteCount).toBe(1);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe("weighted averaging", () => {
|
|
49
|
+
it("should weight decisions higher than blockers", async () => {
|
|
50
|
+
await streaming.addNote("decision", "Auth architecture decision");
|
|
51
|
+
const snapshot1 = streaming.getSnapshot();
|
|
52
|
+
const streaming2 = new StreamingSessionEmbedding("test-2");
|
|
53
|
+
await streaming2.addNote("blocker", "Auth architecture blocker");
|
|
54
|
+
const snapshot2 = streaming2.getSnapshot();
|
|
55
|
+
expect(snapshot1.totalWeight).toBeGreaterThan(snapshot2.totalWeight);
|
|
56
|
+
});
|
|
57
|
+
it("should apply decay to older notes", async () => {
|
|
58
|
+
await streaming.addNote("decision", "First decision");
|
|
59
|
+
const weight1 = streaming.getStats().totalWeight;
|
|
60
|
+
await streaming.addNote("decision", "Second decision");
|
|
61
|
+
const weight2 = streaming.getStats().totalWeight;
|
|
62
|
+
expect(weight2).toBeLessThan(weight1 * 2);
|
|
63
|
+
expect(weight2).toBeGreaterThan(weight1);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe("drift detection", () => {
|
|
67
|
+
it("should not detect drift on first few notes", async () => {
|
|
68
|
+
const result = await streaming.addNote("decision", "Auth decision");
|
|
69
|
+
expect(result.drift).toBeNull();
|
|
70
|
+
});
|
|
71
|
+
it("should detect low/no drift for related notes", async () => {
|
|
72
|
+
await streaming.addNote("decision", "Using JWT for auth", { skipDriftCheck: true });
|
|
73
|
+
await streaming.addNote("hypothesis", "JWT refresh tokens work", { skipDriftCheck: true });
|
|
74
|
+
const result = await streaming.addNote("finding", "JWT auth verified working");
|
|
75
|
+
expect(result.drift).not.toBeNull();
|
|
76
|
+
expect(["none", "low"]).toContain(result.drift.driftLevel);
|
|
77
|
+
});
|
|
78
|
+
it("should detect high drift for unrelated notes", async () => {
|
|
79
|
+
await streaming.addNote("decision", "Using JWT for authentication", { skipDriftCheck: true });
|
|
80
|
+
await streaming.addNote("decision", "Auth tokens expire in 15 minutes", { skipDriftCheck: true });
|
|
81
|
+
await streaming.addNote("finding", "JWT auth is secure", { skipDriftCheck: true });
|
|
82
|
+
const result = await streaming.addNote("decision", "Using React frontend with Material UI components for the dashboard");
|
|
83
|
+
expect(result.drift).not.toBeNull();
|
|
84
|
+
expect(["medium", "high", "extreme"]).toContain(result.drift.driftLevel);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
describe("per-type tracking", () => {
|
|
88
|
+
it("should track embeddings per note type", async () => {
|
|
89
|
+
await streaming.addNote("decision", "Auth decision one");
|
|
90
|
+
await streaming.addNote("decision", "Auth decision two");
|
|
91
|
+
await streaming.addNote("hypothesis", "Auth hypothesis");
|
|
92
|
+
const analysis = streaming.getPerTypeAnalysis();
|
|
93
|
+
expect(analysis.length).toBe(2);
|
|
94
|
+
expect(analysis.find((a) => a.type === "decision")?.count).toBe(2);
|
|
95
|
+
expect(analysis.find((a) => a.type === "hypothesis")?.count).toBe(1);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe("serialization", () => {
|
|
99
|
+
it("should serialize and deserialize correctly", async () => {
|
|
100
|
+
await streaming.addNote("decision", "Test decision");
|
|
101
|
+
await streaming.addNote("hypothesis", "Test hypothesis");
|
|
102
|
+
const serialized = streaming.serialize();
|
|
103
|
+
const restored = StreamingSessionEmbedding.deserialize(serialized);
|
|
104
|
+
expect(restored.getStats().noteCount).toBe(2);
|
|
105
|
+
expect(restored.getSessionEmbedding()).not.toBeNull();
|
|
106
|
+
const original = streaming.getSessionEmbedding();
|
|
107
|
+
const restoredEmb = restored.getSessionEmbedding();
|
|
108
|
+
expect(restoredEmb).toEqual(original);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
describe("factory presets", () => {
|
|
112
|
+
it("should create stable preset with high decay factor", () => {
|
|
113
|
+
const stable = createStreamingEmbedding("test", "stable");
|
|
114
|
+
expect(stable.getStats().sessionId).toBe("test");
|
|
115
|
+
});
|
|
116
|
+
it("should create responsive preset", () => {
|
|
117
|
+
const responsive = createStreamingEmbedding("test", "responsive");
|
|
118
|
+
expect(responsive.getStats().sessionId).toBe("test");
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
describe("drift history", () => {
|
|
122
|
+
it("should track drift history for each note", async () => {
|
|
123
|
+
await streaming.addNote("decision", "Note 1", { skipDriftCheck: true });
|
|
124
|
+
await streaming.addNote("decision", "Note 2", { skipDriftCheck: true });
|
|
125
|
+
await streaming.addNote("decision", "Note 3");
|
|
126
|
+
const history = streaming.getDriftHistory();
|
|
127
|
+
expect(history.length).toBe(3);
|
|
128
|
+
expect(history[0].noteType).toBe("decision");
|
|
129
|
+
expect(history[2].similarity).toBeDefined();
|
|
130
|
+
});
|
|
131
|
+
it("should respect max history size", async () => {
|
|
132
|
+
const small = new StreamingSessionEmbedding("test", { maxHistorySize: 3 });
|
|
133
|
+
for (let i = 0; i < 5; i++) {
|
|
134
|
+
await small.addNote("decision", `Note ${i}`, { skipDriftCheck: true });
|
|
135
|
+
}
|
|
136
|
+
const history = small.getDriftHistory();
|
|
137
|
+
expect(history.length).toBe(3);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
describe("Integration scenario: Auth session with drift", () => {
|
|
142
|
+
it("should simulate a realistic session with drift detection", async () => {
|
|
143
|
+
const session = createStreamingEmbedding("auth-implementation", "balanced");
|
|
144
|
+
console.log("\n--- Phase 1: Auth Implementation ---");
|
|
145
|
+
const note1 = await session.addNote("decision", "Implementing JWT-based authentication with refresh tokens");
|
|
146
|
+
console.log(`Note 1: ${note1.drift?.driftLevel ?? "no drift"}`);
|
|
147
|
+
const note2 = await session.addNote("hypothesis", "Storing refresh tokens in httpOnly cookies will prevent XSS attacks");
|
|
148
|
+
console.log(`Note 2: ${note2.drift?.driftLevel ?? "no drift"}`);
|
|
149
|
+
const note3 = await session.addNote("finding", "JWT signature verification adds 2ms latency per request");
|
|
150
|
+
console.log(`Note 3 drift: ${note3.drift?.driftLevel ?? "none"}, similarity: ${note3.drift?.similarity?.toFixed(3)}`);
|
|
151
|
+
console.log("\n--- Phase 2: Auth Tangent ---");
|
|
152
|
+
const note4 = await session.addNote("decision", "Using bcrypt with cost factor 12 for password hashing");
|
|
153
|
+
console.log(`Note 4 drift: ${note4.drift?.driftLevel ?? "none"}, similarity: ${note4.drift?.similarity?.toFixed(3)}`);
|
|
154
|
+
console.log("\n--- Phase 3: Unrelated Topic ---");
|
|
155
|
+
const note5 = await session.addNote("decision", "PostgreSQL full-text search with GIN indexes for article search");
|
|
156
|
+
console.log(`Note 5 drift: ${note5.drift?.driftLevel ?? "none"}, similarity: ${note5.drift?.similarity?.toFixed(3)}`);
|
|
157
|
+
if (note5.drift?.suggestion) {
|
|
158
|
+
console.log(` Suggestion: ${note5.drift.suggestion}`);
|
|
159
|
+
}
|
|
160
|
+
console.log("\n--- Session Stats ---");
|
|
161
|
+
const stats = session.getStats();
|
|
162
|
+
console.log(`Notes: ${stats.noteCount}`);
|
|
163
|
+
console.log(`Average similarity: ${stats.averageSimilarity.toFixed(3)}`);
|
|
164
|
+
console.log(`Types: ${JSON.stringify(stats.noteCountByType)}`);
|
|
165
|
+
console.log("\n--- Per-Type Analysis ---");
|
|
166
|
+
const perType = session.getPerTypeAnalysis();
|
|
167
|
+
perType.forEach((t) => {
|
|
168
|
+
console.log(` ${t.type}: ${t.count} notes, session alignment: ${t.similarityToSession.toFixed(3)}`);
|
|
169
|
+
});
|
|
170
|
+
expect(stats.noteCount).toBe(5);
|
|
171
|
+
expect(stats.noteCountByType.decision).toBe(3);
|
|
172
|
+
expect(note5.drift).not.toBeNull();
|
|
173
|
+
expect(note5.drift.similarity).toBeLessThan(note3.drift?.similarity ?? 1);
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
//# sourceMappingURL=StreamingSessionEmbedding.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamingSessionEmbedding.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/StreamingSessionEmbedding.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "centient",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"description": "MCP server for context engineering operations with handoff protocol, health monitoring, session branching with visualization, and query-based artifact loading",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|