@j0hanz/cortex-mcp 1.1.0 → 1.1.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/README.md +39 -44
- package/dist/engine/config.d.ts +18 -2
- package/dist/engine/config.d.ts.map +1 -1
- package/dist/engine/config.js.map +1 -1
- package/dist/engine/reasoner.d.ts +1 -0
- package/dist/engine/reasoner.d.ts.map +1 -1
- package/dist/engine/reasoner.js +26 -124
- package/dist/engine/reasoner.js.map +1 -1
- package/dist/engine/session-store.d.ts +9 -4
- package/dist/engine/session-store.d.ts.map +1 -1
- package/dist/engine/session-store.js +72 -30
- package/dist/engine/session-store.js.map +1 -1
- package/dist/instructions.md +33 -13
- package/dist/lib/types.d.ts +13 -12
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +32 -9
- package/dist/prompts/index.js.map +1 -1
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +65 -25
- package/dist/resources/index.js.map +1 -1
- package/dist/schemas/inputs.d.ts +7 -1
- package/dist/schemas/inputs.d.ts.map +1 -1
- package/dist/schemas/inputs.js +41 -0
- package/dist/schemas/inputs.js.map +1 -1
- package/dist/tools/reasoning-think.d.ts.map +1 -1
- package/dist/tools/reasoning-think.js +188 -36
- package/dist/tools/reasoning-think.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# Cortex MCP
|
|
2
2
|
|
|
3
|
-
<!-- mcp-name: io.github.j0hanz/cortex-mcp -->
|
|
4
|
-
|
|
5
3
|
[](https://www.npmjs.com/package/@j0hanz/cortex-mcp) [](https://github.com/j0hanz/cortex-mcp/actions/workflows/release.yml) [](https://nodejs.org) [](https://www.typescriptlang.org) [](https://modelcontextprotocol.io) [](https://opensource.org/licenses/MIT)
|
|
6
4
|
|
|
7
5
|
[](https://insiders.vscode.dev/redirect/mcp/install?name=cortex-mcp&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40j0hanz%2Fcortex-mcp%40latest%22%5D%7D) [](https://insiders.vscode.dev/redirect/mcp/install?name=cortex-mcp&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40j0hanz%2Fcortex-mcp%40latest%22%5D%7D&quality=insiders)
|
|
@@ -10,13 +8,15 @@
|
|
|
10
8
|
|
|
11
9
|
Multi-level reasoning MCP server with configurable depth levels.
|
|
12
10
|
|
|
13
|
-
Cortex MCP exposes a single `reasoning.think` tool over stdio, providing structured
|
|
11
|
+
Cortex MCP exposes a single `reasoning.think` tool over stdio, providing structured reasoning with session continuity, resource views, prompt/resource completions, and task execution for multi-step runs.
|
|
14
12
|
|
|
15
13
|
## Key Features
|
|
16
14
|
|
|
17
15
|
- Multi-level reasoning (`basic`, `normal`, `high`) with configurable thought counts and token budgets.
|
|
18
|
-
- Optional task execution with progress notifications for
|
|
19
|
-
-
|
|
16
|
+
- Optional task execution with progress notifications for multi-step requests.
|
|
17
|
+
- Dual execution modes: `step` (single thought) and `run_to_completion` (batched thoughts).
|
|
18
|
+
- Resource endpoints for session lists, session detail, markdown traces, and thought files.
|
|
19
|
+
- Prompt/resource argument completion for session IDs, levels, and thought names.
|
|
20
20
|
- Prompt helpers for building correct tool calls.
|
|
21
21
|
|
|
22
22
|
## Requirements
|
|
@@ -39,9 +39,6 @@ Standard config (works in most MCP clients):
|
|
|
39
39
|
}
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
> [!TIP]
|
|
43
|
-
> Use the standard config first, then add per-client configuration below if needed.
|
|
44
|
-
|
|
45
42
|
## Client Configuration
|
|
46
43
|
|
|
47
44
|
<details>
|
|
@@ -64,9 +61,6 @@ Add to your user `settings.json`:
|
|
|
64
61
|
}
|
|
65
62
|
```
|
|
66
63
|
|
|
67
|
-
> [!NOTE]
|
|
68
|
-
> Missing info: official VS Code MCP docs URL is not referenced in this repo.
|
|
69
|
-
|
|
70
64
|
</details>
|
|
71
65
|
|
|
72
66
|
<details>
|
|
@@ -89,9 +83,6 @@ Add to your user `settings.json`:
|
|
|
89
83
|
}
|
|
90
84
|
```
|
|
91
85
|
|
|
92
|
-
> [!NOTE]
|
|
93
|
-
> Missing info: official VS Code Insiders MCP docs URL is not referenced in this repo.
|
|
94
|
-
|
|
95
86
|
</details>
|
|
96
87
|
|
|
97
88
|
<details>
|
|
@@ -112,9 +103,6 @@ Add to `~/.cursor/mcp.json`:
|
|
|
112
103
|
}
|
|
113
104
|
```
|
|
114
105
|
|
|
115
|
-
> [!NOTE]
|
|
116
|
-
> Missing info: official Cursor MCP docs URL is not referenced in this repo.
|
|
117
|
-
|
|
118
106
|
</details>
|
|
119
107
|
|
|
120
108
|
<details>
|
|
@@ -133,9 +121,6 @@ Add to `claude_desktop_config.json`:
|
|
|
133
121
|
}
|
|
134
122
|
```
|
|
135
123
|
|
|
136
|
-
> [!NOTE]
|
|
137
|
-
> Missing info: official Claude Desktop MCP docs URL is not referenced in this repo.
|
|
138
|
-
|
|
139
124
|
</details>
|
|
140
125
|
|
|
141
126
|
## MCP Surface
|
|
@@ -146,12 +131,15 @@ Add to `claude_desktop_config.json`:
|
|
|
146
131
|
|
|
147
132
|
Perform multi-step reasoning on a query with a selected depth level.
|
|
148
133
|
|
|
149
|
-
| Name | Type | Required | Default | Description
|
|
150
|
-
| -------------- | ------ | -------- | ------- |
|
|
151
|
-
| query | string |
|
|
152
|
-
| level | enum | Yes | - | Reasoning depth level: `basic`, `normal`, `high`.
|
|
153
|
-
|
|
|
154
|
-
|
|
|
134
|
+
| Name | Type | Required | Default | Description |
|
|
135
|
+
| -------------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------- |
|
|
136
|
+
| query | string | No | - | Required for new sessions; optional when `sessionId` is provided. |
|
|
137
|
+
| level | enum | Yes | - | Reasoning depth level: `basic`, `normal`, `high`. |
|
|
138
|
+
| runMode | enum | No | `step` | `step` appends one thought; `run_to_completion` consumes `thought` + `thoughts[]`. |
|
|
139
|
+
| thought | string | Yes | - | Reasoning content for the next step (stored verbatim). |
|
|
140
|
+
| thoughts | array | No | - | Additional thought inputs consumed in order when `runMode=run_to_completion`. |
|
|
141
|
+
| targetThoughts | number | No | - | Optional explicit thought count within the selected level range. |
|
|
142
|
+
| sessionId | string | No | - | Session ID to continue a previous reasoning session. |
|
|
155
143
|
|
|
156
144
|
Returns a structured result with session metadata, thoughts, and token usage:
|
|
157
145
|
|
|
@@ -179,24 +167,24 @@ Returns a structured result with session metadata, thoughts, and token usage:
|
|
|
179
167
|
|
|
180
168
|
### Resources
|
|
181
169
|
|
|
182
|
-
| URI Pattern | Description
|
|
183
|
-
| ---------------------------------------------------- |
|
|
184
|
-
| internal://instructions | Usage instructions for the MCP server.
|
|
185
|
-
| reasoning://sessions | List of active reasoning sessions with summaries.
|
|
186
|
-
| reasoning://sessions/{sessionId} | Detailed view of a reasoning session.
|
|
187
|
-
| file:///cortex/sessions/{sessionId}/trace.md | Markdown trace of a reasoning session.
|
|
188
|
-
| file:///cortex/sessions/{sessionId}/{thoughtName}.md | Markdown content of a single thought.
|
|
170
|
+
| URI Pattern | Description | MIME Type |
|
|
171
|
+
| ---------------------------------------------------- | ------------------------------------------------------------------------------ | ---------------- |
|
|
172
|
+
| internal://instructions | Usage instructions for the MCP server. | text/markdown |
|
|
173
|
+
| reasoning://sessions | List of active reasoning sessions with summaries. | application/json |
|
|
174
|
+
| reasoning://sessions/{sessionId} | Detailed view of a reasoning session. | application/json |
|
|
175
|
+
| file:///cortex/sessions/{sessionId}/trace.md | Markdown trace of a reasoning session (`sessionId` completion). | text/markdown |
|
|
176
|
+
| file:///cortex/sessions/{sessionId}/{thoughtName}.md | Markdown content of a single thought (`sessionId` + `thoughtName` completion). | text/markdown |
|
|
189
177
|
|
|
190
178
|
### Prompts
|
|
191
179
|
|
|
192
|
-
| Name | Arguments
|
|
193
|
-
| ------------------ |
|
|
194
|
-
| reasoning.basic | query, targetThoughts
|
|
195
|
-
| reasoning.normal | query, targetThoughts
|
|
196
|
-
| reasoning.high | query, targetThoughts
|
|
197
|
-
| reasoning.retry | query, level, targetThoughts
|
|
198
|
-
| reasoning.continue | sessionId, query
|
|
199
|
-
| get-help | -
|
|
180
|
+
| Name | Arguments | Description |
|
|
181
|
+
| ------------------ | ---------------------------------------- | ------------------------------------------------------- |
|
|
182
|
+
| reasoning.basic | query, targetThoughts | Prepare a basic-depth reasoning request. |
|
|
183
|
+
| reasoning.normal | query, targetThoughts | Prepare a normal-depth reasoning request. |
|
|
184
|
+
| reasoning.high | query, targetThoughts | Prepare a high-depth reasoning request. |
|
|
185
|
+
| reasoning.retry | query, level, targetThoughts | Retry a failed reasoning task with modified parameters. |
|
|
186
|
+
| reasoning.continue | sessionId, query?, level, targetThoughts | Continue an existing reasoning session. |
|
|
187
|
+
| get-help | - | Return server usage instructions. |
|
|
200
188
|
|
|
201
189
|
### Tasks
|
|
202
190
|
|
|
@@ -205,6 +193,7 @@ Task-augmented tool calls are supported for `reasoning.think` with `taskSupport:
|
|
|
205
193
|
- Call the tool as a task to receive a task id.
|
|
206
194
|
- Poll `tasks/get` and read results via `tasks/result`.
|
|
207
195
|
- Cancel with `tasks/cancel`.
|
|
196
|
+
- Use `runMode: "run_to_completion"` to consume multiple thought inputs in one task.
|
|
208
197
|
|
|
209
198
|
## Configuration
|
|
210
199
|
|
|
@@ -214,10 +203,16 @@ Task-augmented tool calls are supported for `reasoning.think` with `taskSupport:
|
|
|
214
203
|
| ----- | ----------------------------- |
|
|
215
204
|
| stdio | The only supported transport. |
|
|
216
205
|
|
|
217
|
-
###
|
|
206
|
+
### Session Store Limits
|
|
207
|
+
|
|
208
|
+
Environment variables:
|
|
218
209
|
|
|
219
|
-
|
|
220
|
-
|
|
210
|
+
| Variable | Default | Description |
|
|
211
|
+
| ----------------------------------- | --------- | -------------------------------------------------------------- |
|
|
212
|
+
| `CORTEX_SESSION_TTL_MS` | `1800000` | Session TTL in milliseconds. |
|
|
213
|
+
| `CORTEX_MAX_SESSIONS` | `100` | Maximum in-memory sessions before LRU-style eviction. |
|
|
214
|
+
| `CORTEX_MAX_TOTAL_TOKENS` | `500000` | Maximum aggregate approximate token footprint across sessions. |
|
|
215
|
+
| `CORTEX_MAX_ACTIVE_REASONING_TASKS` | `32` | Maximum concurrently running background reasoning tasks. |
|
|
221
216
|
|
|
222
217
|
## Development
|
|
223
218
|
|
package/dist/engine/config.d.ts
CHANGED
|
@@ -1,4 +1,20 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const LEVEL_CONFIGS:
|
|
1
|
+
import type { ReasoningLevel } from '../lib/types.js';
|
|
2
|
+
export declare const LEVEL_CONFIGS: {
|
|
3
|
+
readonly basic: {
|
|
4
|
+
readonly minThoughts: 3;
|
|
5
|
+
readonly maxThoughts: 5;
|
|
6
|
+
readonly tokenBudget: 2048;
|
|
7
|
+
};
|
|
8
|
+
readonly normal: {
|
|
9
|
+
readonly minThoughts: 6;
|
|
10
|
+
readonly maxThoughts: 10;
|
|
11
|
+
readonly tokenBudget: 8192;
|
|
12
|
+
};
|
|
13
|
+
readonly high: {
|
|
14
|
+
readonly minThoughts: 15;
|
|
15
|
+
readonly maxThoughts: 25;
|
|
16
|
+
readonly tokenBudget: 32768;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
3
19
|
export declare function assertTargetThoughtsInRange(level: ReasoningLevel, targetThoughts: number): void;
|
|
4
20
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/engine/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/engine/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;CAI8B,CAAC;AAEzD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,cAAc,EACrB,cAAc,EAAE,MAAM,GACrB,IAAI,CAKN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/engine/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,CAAC,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/engine/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;IAC5D,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;IAC9D,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;CACR,CAAC;AAEzD,MAAM,UAAU,2BAA2B,CACzC,KAAqB,EACrB,cAAsB;IAEtB,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC5D,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reasoner.d.ts","sourceRoot":"","sources":["../../src/engine/reasoner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"reasoner.d.ts","sourceRoot":"","sources":["../../src/engine/reasoner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsBlD,QAAA,MAAM,YAAY,cAIjB,CAAC;AAKF,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE;AAQD,wBAAsB,MAAM,CAC1B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAwE5B"}
|
package/dist/engine/reasoner.js
CHANGED
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
import { Buffer } from 'node:buffer';
|
|
2
|
-
import { createSegmenter
|
|
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
|
|
8
|
-
const
|
|
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
|
-
|
|
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 =
|
|
35
|
-
|
|
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:
|
|
42
|
-
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,7 +60,7 @@ export async function reason(query, level, options) {
|
|
|
47
60
|
sessionId: session.id,
|
|
48
61
|
tokensUsed: updated.tokensUsed,
|
|
49
62
|
tokenBudget: config.tokenBudget,
|
|
50
|
-
generatedThoughts:
|
|
63
|
+
generatedThoughts: addedThought.index + 1,
|
|
51
64
|
requestedThoughts: totalThoughts,
|
|
52
65
|
});
|
|
53
66
|
}
|
|
@@ -55,7 +68,7 @@ export async function reason(query, level, options) {
|
|
|
55
68
|
sessionStore.markCompleted(session.id);
|
|
56
69
|
}
|
|
57
70
|
if (onProgress) {
|
|
58
|
-
await onProgress(
|
|
71
|
+
await onProgress(addedThought.index + 1, totalThoughts);
|
|
59
72
|
throwIfReasoningAborted(abortSignal);
|
|
60
73
|
}
|
|
61
74
|
return getSessionOrThrow(session.id);
|
|
@@ -162,115 +175,4 @@ function throwIfReasoningAborted(signal) {
|
|
|
162
175
|
throw new Error('Reasoning aborted');
|
|
163
176
|
}
|
|
164
177
|
}
|
|
165
|
-
const OPENING_TEMPLATE = 'Parsing the query and identifying the core problem';
|
|
166
|
-
const CONCLUSION_TEMPLATE = 'Synthesizing the final answer with supporting evidence';
|
|
167
|
-
const CRITIQUE_TEMPLATES = [
|
|
168
|
-
'Critiquing the proposed solution for potential weaknesses',
|
|
169
|
-
'Checking for missed edge cases or logical gaps',
|
|
170
|
-
'Verifying alignment with original constraints',
|
|
171
|
-
'Reviewing the reasoning path for redundant steps',
|
|
172
|
-
'Assessing the robustness of the solution',
|
|
173
|
-
'Identifying assumptions that require further verification',
|
|
174
|
-
'Evaluating the solution against counter-arguments',
|
|
175
|
-
];
|
|
176
|
-
const DOMAIN_TEMPLATES = {
|
|
177
|
-
CODE: [
|
|
178
|
-
'Analyzing implementation details and logic',
|
|
179
|
-
'Reviewing type safety and error handling',
|
|
180
|
-
'Tracing data flow through the system',
|
|
181
|
-
'Considering edge cases in input validation',
|
|
182
|
-
'Checking for performance bottlenecks',
|
|
183
|
-
'Validating against coding standards',
|
|
184
|
-
'Reviewing dependencies and external interactions',
|
|
185
|
-
'Assessing testability and maintainability',
|
|
186
|
-
'Checking for concurrency or race conditions',
|
|
187
|
-
'Verifying API contract compliance',
|
|
188
|
-
],
|
|
189
|
-
DESIGN: [
|
|
190
|
-
'Mapping component interactions and dependencies',
|
|
191
|
-
'Evaluating architectural trade-offs',
|
|
192
|
-
'Considering scalability and maintainability',
|
|
193
|
-
'Checking system boundaries and interfaces',
|
|
194
|
-
'Reviewing data models and schema',
|
|
195
|
-
'Assessing failure modes and recovery',
|
|
196
|
-
'Analyzing security implications',
|
|
197
|
-
'Evaluating technology choices',
|
|
198
|
-
'Considering future extensibility',
|
|
199
|
-
'Reviewing compliance with design patterns',
|
|
200
|
-
],
|
|
201
|
-
ANALYSIS: [
|
|
202
|
-
'Identifying key metrics and indicators',
|
|
203
|
-
'Comparing alternative approaches',
|
|
204
|
-
'Checking for bias or gaps in data',
|
|
205
|
-
'Validating assumptions against evidence',
|
|
206
|
-
'Exploring causal relationships',
|
|
207
|
-
'Synthesizing insights from multiple sources',
|
|
208
|
-
'Weighing short-term vs long-term impacts',
|
|
209
|
-
'Evaluating risks and mitigations',
|
|
210
|
-
'Contextualizing findings within the broader scope',
|
|
211
|
-
'Cross-checking conclusions for consistency',
|
|
212
|
-
],
|
|
213
|
-
GENERAL: [
|
|
214
|
-
'Identifying key components and constraints',
|
|
215
|
-
'Breaking down the problem into sub-problems',
|
|
216
|
-
'Mapping relationships between identified components',
|
|
217
|
-
'Considering edge cases and boundary conditions',
|
|
218
|
-
'Surveying the problem space for hidden assumptions',
|
|
219
|
-
'Clarifying ambiguous terms and scoping the question',
|
|
220
|
-
'Evaluating potential approaches and methodologies',
|
|
221
|
-
'Selecting the most promising approach based on trade-offs',
|
|
222
|
-
'Developing the solution framework step by step',
|
|
223
|
-
'Checking logical consistency of intermediate conclusions',
|
|
224
|
-
'Exploring alternative perspectives on the problem',
|
|
225
|
-
'Assessing confidence levels in preliminary findings',
|
|
226
|
-
'Weighing trade-offs between competing solutions',
|
|
227
|
-
'Examining second-order effects and implications',
|
|
228
|
-
'Refining the analysis with additional considerations',
|
|
229
|
-
'Documenting key insights and decision points',
|
|
230
|
-
],
|
|
231
|
-
};
|
|
232
|
-
function detectDomain(query) {
|
|
233
|
-
const text = query.toLowerCase();
|
|
234
|
-
if (/\b(code|function|bug|error|impl|script|typescript|python|js|ts|java|c\+\+|rust|api|endpoint)\b/.test(text)) {
|
|
235
|
-
return 'CODE';
|
|
236
|
-
}
|
|
237
|
-
if (/\b(design|architect|structure|pattern|system|component|module|interface|schema)\b/.test(text)) {
|
|
238
|
-
return 'DESIGN';
|
|
239
|
-
}
|
|
240
|
-
if (/\b(analy|compare|evaluate|assess|review|audit|investigate|study|research)\b/.test(text)) {
|
|
241
|
-
return 'ANALYSIS';
|
|
242
|
-
}
|
|
243
|
-
return 'GENERAL';
|
|
244
|
-
}
|
|
245
|
-
function generateReasoningStep(query, index, total) {
|
|
246
|
-
if (total <= 0) {
|
|
247
|
-
return '';
|
|
248
|
-
}
|
|
249
|
-
const step = index + 1;
|
|
250
|
-
// Phase 1: Understanding (First Step)
|
|
251
|
-
if (step === 1) {
|
|
252
|
-
const truncatedQuery = truncate(query, 200, graphemeSegmenter);
|
|
253
|
-
return formatStep(step, total, `${OPENING_TEMPLATE}: "${truncatedQuery}"`);
|
|
254
|
-
}
|
|
255
|
-
// Phase 4: Conclusion (Last Step)
|
|
256
|
-
if (step === total) {
|
|
257
|
-
return formatStep(step, total, CONCLUSION_TEMPLATE);
|
|
258
|
-
}
|
|
259
|
-
// Phase 3: Critique (Second-to-Last Step)
|
|
260
|
-
if (total >= 4 && step === total - 1) {
|
|
261
|
-
const critique = CRITIQUE_TEMPLATES[step % CRITIQUE_TEMPLATES.length] ??
|
|
262
|
-
'Critiquing the proposed solution for potential weaknesses';
|
|
263
|
-
return formatStep(step, total, critique);
|
|
264
|
-
}
|
|
265
|
-
// Phase 2: Domain-Specific Analysis (Middle Steps)
|
|
266
|
-
const domain = detectDomain(query);
|
|
267
|
-
const templates = DOMAIN_TEMPLATES[domain];
|
|
268
|
-
const template = templates[(step - 2) % templates.length] ??
|
|
269
|
-
templates[0] ??
|
|
270
|
-
'Analyzing the problem';
|
|
271
|
-
return formatStep(step, total, template);
|
|
272
|
-
}
|
|
273
|
-
function formatStep(step, total, description) {
|
|
274
|
-
return `Step ${String(step)}/${String(total)}: ${description}`;
|
|
275
|
-
}
|
|
276
178
|
//# sourceMappingURL=reasoner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reasoner.js","sourceRoot":"","sources":["../../src/engine/reasoner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"reasoner.js","sourceRoot":"","sources":["../../src/engine/reasoner.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,16 +4,16 @@ export declare class SessionStore {
|
|
|
4
4
|
private readonly sessionOrder;
|
|
5
5
|
private oldestSessionId;
|
|
6
6
|
private newestSessionId;
|
|
7
|
-
private
|
|
7
|
+
private sortedSessionIdsCache;
|
|
8
8
|
private readonly cleanupInterval;
|
|
9
9
|
private readonly ttlMs;
|
|
10
10
|
private readonly maxSessions;
|
|
11
11
|
private readonly maxTotalTokens;
|
|
12
12
|
private totalTokens;
|
|
13
13
|
constructor(ttlMs?: number, maxSessions?: number, maxTotalTokens?: number);
|
|
14
|
-
create(level: ReasoningLevel, totalThoughts?: number): Session
|
|
14
|
+
create(level: ReasoningLevel, totalThoughts?: number): Readonly<Session>;
|
|
15
15
|
get(id: string): Readonly<Session> | undefined;
|
|
16
|
-
list(): Session[];
|
|
16
|
+
list(): Readonly<Session>[];
|
|
17
17
|
getTtlMs(): number;
|
|
18
18
|
getExpiresAt(sessionId: string): number | undefined;
|
|
19
19
|
getTotalTokensUsed(): number;
|
|
@@ -26,10 +26,15 @@ export declare class SessionStore {
|
|
|
26
26
|
private evictForTokenHeadroom;
|
|
27
27
|
private findOldestSession;
|
|
28
28
|
private sweep;
|
|
29
|
-
private
|
|
29
|
+
private buildSortedSessionIdsCache;
|
|
30
30
|
private addToOrder;
|
|
31
31
|
private touchOrder;
|
|
32
32
|
private removeFromOrder;
|
|
33
33
|
private deleteSessionInternal;
|
|
34
|
+
private snapshotThought;
|
|
35
|
+
private snapshotSession;
|
|
36
|
+
private emitSessionsListChanged;
|
|
37
|
+
private emitSessionsResourceUpdated;
|
|
38
|
+
private emitSessionResourcesUpdated;
|
|
34
39
|
}
|
|
35
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;
|
|
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"}
|