@j0hanz/cortex-mcp 1.0.0 → 1.1.1

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.
Files changed (57) hide show
  1. package/README.md +143 -245
  2. package/dist/engine/config.d.ts +17 -6
  3. package/dist/engine/config.d.ts.map +1 -1
  4. package/dist/engine/config.js +1 -14
  5. package/dist/engine/config.js.map +1 -1
  6. package/dist/engine/events.d.ts +4 -0
  7. package/dist/engine/events.d.ts.map +1 -1
  8. package/dist/engine/events.js.map +1 -1
  9. package/dist/engine/reasoner.d.ts +1 -0
  10. package/dist/engine/reasoner.d.ts.map +1 -1
  11. package/dist/engine/reasoner.js +31 -61
  12. package/dist/engine/reasoner.js.map +1 -1
  13. package/dist/engine/session-store.d.ts +26 -3
  14. package/dist/engine/session-store.d.ts.map +1 -1
  15. package/dist/engine/session-store.js +267 -26
  16. package/dist/engine/session-store.js.map +1 -1
  17. package/dist/instructions.md +33 -13
  18. package/dist/lib/formatting.d.ts +6 -0
  19. package/dist/lib/formatting.d.ts.map +1 -0
  20. package/dist/lib/formatting.js +29 -0
  21. package/dist/lib/formatting.js.map +1 -0
  22. package/dist/lib/text.d.ts +1 -6
  23. package/dist/lib/text.d.ts.map +1 -1
  24. package/dist/lib/text.js +1 -6
  25. package/dist/lib/text.js.map +1 -1
  26. package/dist/lib/types.d.ts +14 -11
  27. package/dist/lib/types.d.ts.map +1 -1
  28. package/dist/lib/validators.d.ts +7 -0
  29. package/dist/lib/validators.d.ts.map +1 -0
  30. package/dist/lib/validators.js +21 -0
  31. package/dist/lib/validators.js.map +1 -0
  32. package/dist/prompts/index.d.ts.map +1 -1
  33. package/dist/prompts/index.js +32 -9
  34. package/dist/prompts/index.js.map +1 -1
  35. package/dist/resources/index.d.ts.map +1 -1
  36. package/dist/resources/index.js +83 -19
  37. package/dist/resources/index.js.map +1 -1
  38. package/dist/schemas/inputs.d.ts +7 -1
  39. package/dist/schemas/inputs.d.ts.map +1 -1
  40. package/dist/schemas/inputs.js +42 -1
  41. package/dist/schemas/inputs.js.map +1 -1
  42. package/dist/schemas/outputs.d.ts +10 -0
  43. package/dist/schemas/outputs.d.ts.map +1 -1
  44. package/dist/schemas/outputs.js +7 -2
  45. package/dist/schemas/outputs.js.map +1 -1
  46. package/dist/server.d.ts.map +1 -1
  47. package/dist/server.js +10 -3
  48. package/dist/server.js.map +1 -1
  49. package/dist/tools/reasoning-think.d.ts +1 -6
  50. package/dist/tools/reasoning-think.d.ts.map +1 -1
  51. package/dist/tools/reasoning-think.js +268 -71
  52. package/dist/tools/reasoning-think.js.map +1 -1
  53. package/package.json +10 -1
  54. package/dist/engine/index.d.ts +0 -6
  55. package/dist/engine/index.d.ts.map +0 -1
  56. package/dist/engine/index.js +0 -6
  57. package/dist/engine/index.js.map +0 -1
@@ -1,16 +1,32 @@
1
1
  import { Buffer } from 'node:buffer';
2
- import { createSegmenter, truncate } from '../lib/text.js';
2
+ import { createSegmenter } from '../lib/text.js';
3
3
  import { assertTargetThoughtsInRange, LEVEL_CONFIGS } from './config.js';
4
4
  import { runWithContext } from './context.js';
5
5
  import { engineEvents } from './events.js';
6
6
  import { SessionStore } from './session-store.js';
7
- const sessionStore = new SessionStore();
8
- const graphemeSegmenter = createSegmenter('grapheme');
7
+ const DEFAULT_SESSION_TTL_MS = 30 * 60 * 1000;
8
+ const DEFAULT_MAX_SESSIONS = 100;
9
+ const DEFAULT_MAX_TOTAL_TOKENS = 500_000;
10
+ function parsePositiveIntEnv(name, fallback, minimum = 1) {
11
+ const raw = process.env[name];
12
+ if (raw === undefined) {
13
+ return fallback;
14
+ }
15
+ const parsed = Number.parseInt(raw, 10);
16
+ if (!Number.isInteger(parsed) || parsed < minimum) {
17
+ return fallback;
18
+ }
19
+ return parsed;
20
+ }
21
+ const sessionStore = new SessionStore(parsePositiveIntEnv('CORTEX_SESSION_TTL_MS', DEFAULT_SESSION_TTL_MS), parsePositiveIntEnv('CORTEX_MAX_SESSIONS', DEFAULT_MAX_SESSIONS), parsePositiveIntEnv('CORTEX_MAX_TOTAL_TOKENS', DEFAULT_MAX_TOTAL_TOKENS));
9
22
  const sentenceSegmenter = createSegmenter('sentence');
10
23
  const sessionLocks = new Map();
11
24
  export { sessionStore };
12
25
  export async function reason(query, level, options) {
13
- const { sessionId, targetThoughts, abortSignal, onProgress } = options ?? {};
26
+ if (!options?.thought) {
27
+ throw new Error('thought is required: provide your reasoning content');
28
+ }
29
+ const { sessionId, targetThoughts, thought, abortSignal, onProgress } = options;
14
30
  const config = LEVEL_CONFIGS[level];
15
31
  const session = resolveSession(level, sessionId, query, config, targetThoughts);
16
32
  const { totalThoughts } = session;
@@ -31,15 +47,12 @@ export async function reason(query, level, options) {
31
47
  if (nextIndex >= totalThoughts) {
32
48
  return current;
33
49
  }
34
- const stepContent = generateReasoningStep(query, nextIndex, totalThoughts);
35
- if (!stepContent) {
36
- throw new Error(`Step content missing at index ${String(nextIndex)}/${String(totalThoughts)}`);
37
- }
38
- const thought = sessionStore.addThought(session.id, stepContent);
50
+ const stepContent = thought;
51
+ const addedThought = sessionStore.addThought(session.id, stepContent);
39
52
  engineEvents.emit('thought:added', {
40
53
  sessionId: session.id,
41
- index: thought.index,
42
- content: thought.content,
54
+ index: addedThought.index,
55
+ content: addedThought.content,
43
56
  });
44
57
  const updated = getSessionOrThrow(session.id);
45
58
  if (updated.tokensUsed >= config.tokenBudget) {
@@ -47,12 +60,15 @@ export async function reason(query, level, options) {
47
60
  sessionId: session.id,
48
61
  tokensUsed: updated.tokensUsed,
49
62
  tokenBudget: config.tokenBudget,
50
- generatedThoughts: thought.index + 1,
63
+ generatedThoughts: addedThought.index + 1,
51
64
  requestedThoughts: totalThoughts,
52
65
  });
53
66
  }
67
+ if (updated.thoughts.length >= totalThoughts) {
68
+ sessionStore.markCompleted(session.id);
69
+ }
54
70
  if (onProgress) {
55
- await onProgress(thought.index + 1, totalThoughts);
71
+ await onProgress(addedThought.index + 1, totalThoughts);
56
72
  throwIfReasoningAborted(abortSignal);
57
73
  }
58
74
  return getSessionOrThrow(session.id);
@@ -123,9 +139,8 @@ function resolveThoughtCount(level, query, config, targetThoughts) {
123
139
  const queryByteLength = Buffer.byteLength(queryText, 'utf8');
124
140
  const lengthScore = Math.min(1, queryByteLength / 400);
125
141
  const structureScore = Math.min(0.4, getStructureDensityScore(queryText));
126
- const keywordScore = /\b(compare|analy[sz]e|trade[- ]?off|design|plan)\b/i.test(queryText)
127
- ? 0.15
128
- : 0;
142
+ const keywords = /\b(compare|analy[sz]e|trade[- ]?off|design|plan|critique|evaluate|review|architecture)\b/i;
143
+ const keywordScore = keywords.test(queryText) ? 0.25 : 0;
129
144
  const score = Math.min(1, lengthScore + structureScore + keywordScore);
130
145
  return config.minThoughts + Math.round(span * score);
131
146
  }
@@ -160,49 +175,4 @@ function throwIfReasoningAborted(signal) {
160
175
  throw new Error('Reasoning aborted');
161
176
  }
162
177
  }
163
- const OPENING_TEMPLATE = 'Parsing the query and identifying the core problem';
164
- const MIDDLE_TEMPLATES = [
165
- 'Identifying key components and constraints',
166
- 'Breaking down the problem into sub-problems',
167
- 'Mapping relationships between identified components',
168
- 'Considering edge cases and boundary conditions',
169
- 'Surveying the problem space for hidden assumptions',
170
- 'Clarifying ambiguous terms and scoping the question',
171
- 'Evaluating potential approaches and methodologies',
172
- 'Selecting the most promising approach based on trade-offs',
173
- 'Developing the solution framework step by step',
174
- 'Checking logical consistency of intermediate conclusions',
175
- 'Exploring alternative perspectives on the problem',
176
- 'Assessing confidence levels in preliminary findings',
177
- 'Identifying assumptions that require verification',
178
- 'Weighing trade-offs between competing solutions',
179
- 'Testing preliminary results against known constraints',
180
- 'Examining second-order effects and implications',
181
- 'Synthesizing findings from multiple angles of analysis',
182
- 'Cross-referencing conclusions with initial premises',
183
- 'Refining the analysis with additional considerations',
184
- 'Validating the complete reasoning chain for coherence',
185
- 'Optimizing the reasoning path for gaps or redundancies',
186
- 'Reviewing the logical flow from premises to conclusion',
187
- 'Documenting key insights and decision points',
188
- ];
189
- const CONCLUSION_TEMPLATE = 'Consolidating the final answer with supporting evidence';
190
- function generateReasoningStep(query, index, total) {
191
- if (total <= 0) {
192
- return '';
193
- }
194
- const step = index + 1;
195
- if (step === 1) {
196
- const truncatedQuery = truncate(query, 200, graphemeSegmenter);
197
- return formatStep(step, total, `${OPENING_TEMPLATE}: "${truncatedQuery}"`);
198
- }
199
- if (step === total) {
200
- return formatStep(step, total, CONCLUSION_TEMPLATE);
201
- }
202
- const template = MIDDLE_TEMPLATES[(step - 2) % MIDDLE_TEMPLATES.length] ?? '';
203
- return formatStep(step, total, template);
204
- }
205
- function formatStep(step, total, description) {
206
- return `Step ${String(step)}/${String(total)}: ${description}`;
207
- }
208
178
  //# sourceMappingURL=reasoner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reasoner.js","sourceRoot":"","sources":["../../src/engine/reasoner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reasoner.js","sourceRoot":"","sources":["../../src/engine/reasoner.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,40 @@
1
1
  import type { ReasoningLevel, Session, Thought } from '../lib/types.js';
2
2
  export declare class SessionStore {
3
3
  private readonly sessions;
4
+ private readonly sessionOrder;
5
+ private oldestSessionId;
6
+ private newestSessionId;
7
+ private sortedSessionIdsCache;
4
8
  private readonly cleanupInterval;
5
9
  private readonly ttlMs;
6
- constructor(ttlMs?: number);
7
- create(level: ReasoningLevel, totalThoughts: number): Session;
10
+ private readonly maxSessions;
11
+ private readonly maxTotalTokens;
12
+ private totalTokens;
13
+ constructor(ttlMs?: number, maxSessions?: number, maxTotalTokens?: number);
14
+ create(level: ReasoningLevel, totalThoughts?: number): Readonly<Session>;
8
15
  get(id: string): Readonly<Session> | undefined;
9
- list(): Session[];
16
+ list(): Readonly<Session>[];
10
17
  getTtlMs(): number;
11
18
  getExpiresAt(sessionId: string): number | undefined;
19
+ getTotalTokensUsed(): number;
12
20
  delete(id: string): boolean;
13
21
  addThought(sessionId: string, content: string): Thought;
14
22
  reviseThought(sessionId: string, thoughtIndex: number, content: string): Thought;
23
+ markCompleted(sessionId: string): void;
24
+ markCancelled(sessionId: string): void;
25
+ private evictIfAtCapacity;
26
+ private evictForTokenHeadroom;
27
+ private findOldestSession;
15
28
  private sweep;
29
+ private buildSortedSessionIdsCache;
30
+ private addToOrder;
31
+ private touchOrder;
32
+ private removeFromOrder;
33
+ private deleteSessionInternal;
34
+ private snapshotThought;
35
+ private snapshotSession;
36
+ private emitSessionsListChanged;
37
+ private emitSessionsResourceUpdated;
38
+ private emitSessionResourcesUpdated;
16
39
  }
17
40
  //# sourceMappingURL=session-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/engine/session-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,cAAc,EACd,OAAO,EACP,OAAO,EACR,MAAM,iBAAiB,CAAC;AAYzB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,KAAK,GAAE,MAAuB;IAS1C,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO;IAkB7D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS;IAI9C,IAAI,IAAI,OAAO,EAAE;IAMjB,QAAQ,IAAI,MAAM;IAIlB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQnD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAS3B,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAmBvD,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO;IA2BV,OAAO,CAAC,KAAK;CAcd"}
1
+ {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/engine/session-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,cAAc,EACd,OAAO,EACP,OAAO,EACR,MAAM,iBAAiB,CAAC;AA4BzB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IACpE,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,qBAAqB,CAAyB;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,WAAW,CAAK;gBAGtB,KAAK,GAAE,MAAuB,EAC9B,WAAW,GAAE,MAA6B,EAC1C,cAAc,GAAE,MAAiC;IAYnD,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC;IAuBxE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS;IAK9C,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;IAY3B,QAAQ,IAAI,MAAM;IAIlB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQnD,kBAAkB,IAAI,MAAM;IAI5B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAW3B,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAsBvD,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO;IAgCV,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAWtC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAWtC,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,KAAK;IAsBb,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,UAAU;IA2ClB,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,2BAA2B;CAMpC"}
@@ -3,16 +3,27 @@ import { randomUUID } from 'node:crypto';
3
3
  import { LEVEL_CONFIGS } from './config.js';
4
4
  import { engineEvents } from './events.js';
5
5
  const DEFAULT_TTL_MS = 30 * 60 * 1000; // 30 minutes
6
+ const DEFAULT_MAX_SESSIONS = 100;
7
+ const DEFAULT_MAX_TOTAL_TOKENS = 500_000;
6
8
  function estimateTokens(text) {
7
9
  const byteLength = Buffer.byteLength(text, 'utf8');
8
10
  return Math.max(1, Math.ceil(byteLength / 4));
9
11
  }
10
12
  export class SessionStore {
11
13
  sessions = new Map();
14
+ sessionOrder = new Map();
15
+ oldestSessionId;
16
+ newestSessionId;
17
+ sortedSessionIdsCache = null;
12
18
  cleanupInterval;
13
19
  ttlMs;
14
- constructor(ttlMs = DEFAULT_TTL_MS) {
20
+ maxSessions;
21
+ maxTotalTokens;
22
+ totalTokens = 0;
23
+ constructor(ttlMs = DEFAULT_TTL_MS, maxSessions = DEFAULT_MAX_SESSIONS, maxTotalTokens = DEFAULT_MAX_TOTAL_TOKENS) {
15
24
  this.ttlMs = ttlMs;
25
+ this.maxSessions = maxSessions;
26
+ this.maxTotalTokens = maxTotalTokens;
16
27
  const sweepInterval = Math.max(10, Math.min(60_000, ttlMs));
17
28
  this.cleanupInterval = setInterval(() => {
18
29
  this.sweep();
@@ -20,27 +31,41 @@ export class SessionStore {
20
31
  this.cleanupInterval.unref();
21
32
  }
22
33
  create(level, totalThoughts) {
34
+ this.evictIfAtCapacity();
23
35
  const config = LEVEL_CONFIGS[level];
24
36
  const now = Date.now();
25
37
  const session = {
26
38
  id: randomUUID(),
27
39
  level,
40
+ status: 'active',
28
41
  thoughts: [],
29
- totalThoughts,
42
+ totalThoughts: totalThoughts ?? config.minThoughts,
30
43
  tokenBudget: config.tokenBudget,
31
44
  tokensUsed: 0,
32
45
  createdAt: now,
33
46
  updatedAt: now,
34
47
  };
35
48
  this.sessions.set(session.id, session);
36
- engineEvents.emit('resources:changed', { uri: 'reasoning://sessions' });
37
- return session;
49
+ this.addToOrder(session.id);
50
+ this.sortedSessionIdsCache = null;
51
+ this.emitSessionsListChanged();
52
+ this.emitSessionsResourceUpdated();
53
+ return this.snapshotSession(session);
38
54
  }
39
55
  get(id) {
40
- return this.sessions.get(id);
56
+ const session = this.sessions.get(id);
57
+ return session ? this.snapshotSession(session) : undefined;
41
58
  }
42
59
  list() {
43
- return [...this.sessions.values()].sort((a, b) => b.updatedAt - a.updatedAt);
60
+ this.sortedSessionIdsCache ??= this.buildSortedSessionIdsCache();
61
+ const sessions = [];
62
+ for (const sessionId of this.sortedSessionIdsCache) {
63
+ const session = this.sessions.get(sessionId);
64
+ if (session) {
65
+ sessions.push(this.snapshotSession(session));
66
+ }
67
+ }
68
+ return sessions;
44
69
  }
45
70
  getTtlMs() {
46
71
  return this.ttlMs;
@@ -52,31 +77,39 @@ export class SessionStore {
52
77
  }
53
78
  return session.updatedAt + this.ttlMs;
54
79
  }
80
+ getTotalTokensUsed() {
81
+ return this.totalTokens;
82
+ }
55
83
  delete(id) {
56
- const deleted = this.sessions.delete(id);
57
- if (deleted) {
58
- engineEvents.emit('session:deleted', { sessionId: id });
59
- engineEvents.emit('resources:changed', { uri: 'reasoning://sessions' });
84
+ const session = this.deleteSessionInternal(id);
85
+ if (!session) {
86
+ return false;
60
87
  }
61
- return deleted;
88
+ engineEvents.emit('session:deleted', { sessionId: id });
89
+ this.emitSessionsListChanged();
90
+ this.emitSessionsResourceUpdated();
91
+ return true;
62
92
  }
63
93
  addThought(sessionId, content) {
64
94
  const session = this.sessions.get(sessionId);
65
95
  if (!session) {
66
96
  throw new Error(`Session not found: ${sessionId}`);
67
97
  }
98
+ const tokens = estimateTokens(content);
99
+ this.evictForTokenHeadroom(tokens, sessionId);
68
100
  const thought = {
69
101
  index: session.thoughts.length,
70
102
  content,
71
103
  revision: 0,
72
104
  };
73
105
  session.thoughts.push(thought);
74
- session.tokensUsed += estimateTokens(content);
106
+ session.tokensUsed += tokens;
107
+ this.totalTokens += tokens;
75
108
  session.updatedAt = Date.now();
76
- engineEvents.emit('resource:updated', {
77
- uri: `reasoning://sessions/${sessionId}`,
78
- });
79
- return thought;
109
+ this.touchOrder(session.id);
110
+ this.sortedSessionIdsCache = null;
111
+ this.emitSessionResourcesUpdated(sessionId);
112
+ return this.snapshotThought(thought);
80
113
  }
81
114
  reviseThought(sessionId, thoughtIndex, content) {
82
115
  const session = this.sessions.get(sessionId);
@@ -88,33 +121,241 @@ export class SessionStore {
88
121
  throw new Error(`Thought index ${String(thoughtIndex)} not found in session ${sessionId}`);
89
122
  }
90
123
  const oldTokens = estimateTokens(existing.content);
124
+ const newTokens = estimateTokens(content);
125
+ const delta = newTokens - oldTokens;
126
+ if (delta > 0) {
127
+ this.evictForTokenHeadroom(delta, sessionId);
128
+ }
91
129
  const revised = {
92
130
  index: thoughtIndex,
93
131
  content,
94
132
  revision: existing.revision + 1,
95
133
  };
96
134
  session.thoughts[thoughtIndex] = revised;
97
- session.tokensUsed =
98
- session.tokensUsed - oldTokens + estimateTokens(content);
135
+ session.tokensUsed = session.tokensUsed - oldTokens + newTokens;
136
+ this.totalTokens += delta;
99
137
  session.updatedAt = Date.now();
100
- engineEvents.emit('resource:updated', {
101
- uri: `reasoning://sessions/${sessionId}`,
102
- });
103
- return revised;
138
+ this.touchOrder(session.id);
139
+ this.sortedSessionIdsCache = null;
140
+ this.emitSessionResourcesUpdated(sessionId);
141
+ return this.snapshotThought(revised);
142
+ }
143
+ markCompleted(sessionId) {
144
+ const session = this.sessions.get(sessionId);
145
+ if (session?.status === 'active') {
146
+ session.status = 'completed';
147
+ session.updatedAt = Date.now();
148
+ this.touchOrder(session.id);
149
+ this.sortedSessionIdsCache = null;
150
+ this.emitSessionResourcesUpdated(sessionId);
151
+ }
152
+ }
153
+ markCancelled(sessionId) {
154
+ const session = this.sessions.get(sessionId);
155
+ if (session?.status === 'active') {
156
+ session.status = 'cancelled';
157
+ session.updatedAt = Date.now();
158
+ this.touchOrder(session.id);
159
+ this.sortedSessionIdsCache = null;
160
+ this.emitSessionResourcesUpdated(sessionId);
161
+ }
162
+ }
163
+ evictIfAtCapacity() {
164
+ while (this.sessions.size >= this.maxSessions) {
165
+ const oldest = this.findOldestSession();
166
+ if (!oldest)
167
+ break;
168
+ this.deleteSessionInternal(oldest.id);
169
+ engineEvents.emit('session:evicted', {
170
+ sessionId: oldest.id,
171
+ reason: 'max_sessions',
172
+ });
173
+ this.emitSessionsListChanged();
174
+ this.emitSessionsResourceUpdated();
175
+ }
176
+ }
177
+ evictForTokenHeadroom(neededTokens, protectedSessionId) {
178
+ while (this.totalTokens + neededTokens > this.maxTotalTokens &&
179
+ this.sessions.size > (protectedSessionId ? 1 : 0)) {
180
+ const oldest = this.findOldestSession(protectedSessionId);
181
+ if (!oldest)
182
+ break;
183
+ this.deleteSessionInternal(oldest.id);
184
+ engineEvents.emit('session:evicted', {
185
+ sessionId: oldest.id,
186
+ reason: 'max_total_tokens',
187
+ });
188
+ this.emitSessionsListChanged();
189
+ this.emitSessionsResourceUpdated();
190
+ }
191
+ }
192
+ findOldestSession(excludeId) {
193
+ let currentId = this.oldestSessionId;
194
+ while (currentId) {
195
+ if (currentId !== excludeId) {
196
+ return this.sessions.get(currentId);
197
+ }
198
+ currentId = this.sessionOrder.get(currentId)?.nextId;
199
+ }
200
+ return undefined;
104
201
  }
105
202
  sweep() {
106
203
  const now = Date.now();
204
+ const expiredSessionIds = [];
107
205
  let changed = false;
108
206
  for (const session of this.sessions.values()) {
109
207
  if (session.updatedAt + this.ttlMs < now) {
110
- this.sessions.delete(session.id);
111
- engineEvents.emit('session:expired', { sessionId: session.id });
112
- changed = true;
208
+ expiredSessionIds.push(session.id);
209
+ }
210
+ }
211
+ for (const sessionId of expiredSessionIds) {
212
+ if (!this.deleteSessionInternal(sessionId)) {
213
+ continue;
113
214
  }
215
+ engineEvents.emit('session:expired', { sessionId });
216
+ changed = true;
114
217
  }
115
218
  if (changed) {
116
- engineEvents.emit('resources:changed', { uri: 'reasoning://sessions' });
219
+ this.emitSessionsListChanged();
220
+ this.emitSessionsResourceUpdated();
221
+ }
222
+ }
223
+ buildSortedSessionIdsCache() {
224
+ const sortedSessionIds = [];
225
+ let currentId = this.newestSessionId;
226
+ while (currentId) {
227
+ if (this.sessions.has(currentId)) {
228
+ sortedSessionIds.push(currentId);
229
+ }
230
+ currentId = this.sessionOrder.get(currentId)?.prevId;
231
+ }
232
+ return sortedSessionIds;
233
+ }
234
+ addToOrder(sessionId) {
235
+ if (this.sessionOrder.has(sessionId)) {
236
+ this.touchOrder(sessionId);
237
+ return;
238
+ }
239
+ const node = { prevId: undefined, nextId: undefined };
240
+ if (this.newestSessionId) {
241
+ const newest = this.sessionOrder.get(this.newestSessionId);
242
+ if (newest) {
243
+ newest.nextId = sessionId;
244
+ }
245
+ node.prevId = this.newestSessionId;
246
+ }
247
+ else {
248
+ this.oldestSessionId = sessionId;
117
249
  }
250
+ this.newestSessionId = sessionId;
251
+ this.sessionOrder.set(sessionId, node);
252
+ }
253
+ touchOrder(sessionId) {
254
+ if (this.newestSessionId === sessionId) {
255
+ return;
256
+ }
257
+ const node = this.sessionOrder.get(sessionId);
258
+ if (!node) {
259
+ this.addToOrder(sessionId);
260
+ return;
261
+ }
262
+ const { prevId, nextId } = node;
263
+ if (prevId) {
264
+ const previous = this.sessionOrder.get(prevId);
265
+ if (previous) {
266
+ previous.nextId = nextId;
267
+ }
268
+ }
269
+ else {
270
+ this.oldestSessionId = nextId;
271
+ }
272
+ if (nextId) {
273
+ const next = this.sessionOrder.get(nextId);
274
+ if (next) {
275
+ next.prevId = prevId;
276
+ }
277
+ }
278
+ node.prevId = this.newestSessionId;
279
+ node.nextId = undefined;
280
+ if (this.newestSessionId) {
281
+ const newest = this.sessionOrder.get(this.newestSessionId);
282
+ if (newest) {
283
+ newest.nextId = sessionId;
284
+ }
285
+ }
286
+ else {
287
+ this.oldestSessionId = sessionId;
288
+ }
289
+ this.newestSessionId = sessionId;
290
+ }
291
+ removeFromOrder(sessionId) {
292
+ const node = this.sessionOrder.get(sessionId);
293
+ if (!node) {
294
+ return;
295
+ }
296
+ const { prevId, nextId } = node;
297
+ if (prevId) {
298
+ const previous = this.sessionOrder.get(prevId);
299
+ if (previous) {
300
+ previous.nextId = nextId;
301
+ }
302
+ }
303
+ else {
304
+ this.oldestSessionId = nextId;
305
+ }
306
+ if (nextId) {
307
+ const next = this.sessionOrder.get(nextId);
308
+ if (next) {
309
+ next.prevId = prevId;
310
+ }
311
+ }
312
+ else {
313
+ this.newestSessionId = prevId;
314
+ }
315
+ this.sessionOrder.delete(sessionId);
316
+ }
317
+ deleteSessionInternal(id) {
318
+ const session = this.sessions.get(id);
319
+ if (!session) {
320
+ return undefined;
321
+ }
322
+ this.totalTokens -= session.tokensUsed;
323
+ this.sessions.delete(id);
324
+ this.removeFromOrder(id);
325
+ this.sortedSessionIdsCache = null;
326
+ return session;
327
+ }
328
+ snapshotThought(thought) {
329
+ return {
330
+ index: thought.index,
331
+ content: thought.content,
332
+ revision: thought.revision,
333
+ };
334
+ }
335
+ snapshotSession(session) {
336
+ return {
337
+ id: session.id,
338
+ level: session.level,
339
+ status: session.status,
340
+ thoughts: session.thoughts.map((thought) => this.snapshotThought(thought)),
341
+ totalThoughts: session.totalThoughts,
342
+ tokenBudget: session.tokenBudget,
343
+ tokensUsed: session.tokensUsed,
344
+ createdAt: session.createdAt,
345
+ updatedAt: session.updatedAt,
346
+ };
347
+ }
348
+ emitSessionsListChanged() {
349
+ engineEvents.emit('resources:changed', { uri: 'reasoning://sessions' });
350
+ }
351
+ emitSessionsResourceUpdated() {
352
+ engineEvents.emit('resource:updated', { uri: 'reasoning://sessions' });
353
+ }
354
+ emitSessionResourcesUpdated(sessionId) {
355
+ engineEvents.emit('resource:updated', {
356
+ uri: `reasoning://sessions/${sessionId}`,
357
+ });
358
+ this.emitSessionsResourceUpdated();
118
359
  }
119
360
  }
120
361
  //# sourceMappingURL=session-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/engine/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/engine/session-store.ts"],"names":[],"mappings":"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"}