@j0hanz/cortex-mcp 0.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 +269 -0
- package/dist/assets/logo.svg +49 -0
- package/dist/engine/config.d.ts +9 -0
- package/dist/engine/config.d.ts.map +1 -0
- package/dist/engine/config.js +26 -0
- package/dist/engine/config.js.map +1 -0
- package/dist/engine/context.d.ts +7 -0
- package/dist/engine/context.d.ts.map +1 -0
- package/dist/engine/context.js +6 -0
- package/dist/engine/context.js.map +1 -0
- package/dist/engine/events.d.ts +51 -0
- package/dist/engine/events.d.ts.map +1 -0
- package/dist/engine/events.js +9 -0
- package/dist/engine/events.js.map +1 -0
- package/dist/engine/index.d.ts +6 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +6 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/reasoner.d.ts +12 -0
- package/dist/engine/reasoner.d.ts.map +1 -0
- package/dist/engine/reasoner.js +208 -0
- package/dist/engine/reasoner.js.map +1 -0
- package/dist/engine/session-store.d.ts +17 -0
- package/dist/engine/session-store.d.ts.map +1 -0
- package/dist/engine/session-store.js +120 -0
- package/dist/engine/session-store.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/instructions.md +131 -0
- package/dist/lib/errors.d.ts +19 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +41 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/instructions.d.ts +5 -0
- package/dist/lib/instructions.d.ts.map +1 -0
- package/dist/lib/instructions.js +14 -0
- package/dist/lib/instructions.js.map +1 -0
- package/dist/lib/text.d.ts +20 -0
- package/dist/lib/text.d.ts.map +1 -0
- package/dist/lib/text.js +74 -0
- package/dist/lib/text.js.map +1 -0
- package/dist/lib/tool-response.d.ts +6 -0
- package/dist/lib/tool-response.d.ts.map +1 -0
- package/dist/lib/tool-response.js +13 -0
- package/dist/lib/tool-response.js.map +1 -0
- package/dist/lib/types.d.ts +27 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/prompts/index.d.ts +4 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +156 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/index.d.ts +4 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +248 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/schemas/inputs.d.ts +13 -0
- package/dist/schemas/inputs.d.ts.map +1 -0
- package/dist/schemas/inputs.js +39 -0
- package/dist/schemas/inputs.js.map +1 -0
- package/dist/schemas/outputs.d.ts +76 -0
- package/dist/schemas/outputs.d.ts.map +1 -0
- package/dist/schemas/outputs.js +59 -0
- package/dist/schemas/outputs.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +169 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/reasoning-think.d.ts +9 -0
- package/dist/tools/reasoning-think.d.ts.map +1 -0
- package/dist/tools/reasoning-think.js +298 -0
- package/dist/tools/reasoning-think.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import { reason, sessionStore } from '../engine/reasoner.js';
|
|
2
|
+
import { ReasoningThinkInputSchema, } from '../schemas/inputs.js';
|
|
3
|
+
import { ReasoningThinkToolOutputSchema } from '../schemas/outputs.js';
|
|
4
|
+
import { createErrorResponse, getErrorMessage } from '../lib/errors.js';
|
|
5
|
+
import { createToolResponse } from '../lib/tool-response.js';
|
|
6
|
+
function mapReasoningErrorCode(message) {
|
|
7
|
+
if (message === 'Reasoning aborted' ||
|
|
8
|
+
message === 'Reasoning task cancelled') {
|
|
9
|
+
return 'E_ABORTED';
|
|
10
|
+
}
|
|
11
|
+
if (message.startsWith('targetThoughts must be')) {
|
|
12
|
+
return 'E_INVALID_THOUGHT_COUNT';
|
|
13
|
+
}
|
|
14
|
+
if (message.startsWith('Session not found:')) {
|
|
15
|
+
return 'E_SESSION_NOT_FOUND';
|
|
16
|
+
}
|
|
17
|
+
if (message.startsWith('Session level mismatch:')) {
|
|
18
|
+
return 'E_SESSION_LEVEL_MISMATCH';
|
|
19
|
+
}
|
|
20
|
+
return 'E_REASONING';
|
|
21
|
+
}
|
|
22
|
+
function shouldEmitProgress(progress, total, level) {
|
|
23
|
+
if (progress <= 1 || progress >= total || level !== 'high') {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
return progress % 2 === 0;
|
|
27
|
+
}
|
|
28
|
+
function formatThoughtHeading(thought) {
|
|
29
|
+
const thoughtNumber = thought.index + 1;
|
|
30
|
+
const suffix = thought.revision > 0 ? ' [Revised]' : '';
|
|
31
|
+
return `𖦹 Thought [${String(thoughtNumber)}]${suffix}`;
|
|
32
|
+
}
|
|
33
|
+
export function formatThoughtsToMarkdown(session, range) {
|
|
34
|
+
const { thoughts: allThoughts } = session;
|
|
35
|
+
const isFullTrace = range === undefined;
|
|
36
|
+
let thoughts;
|
|
37
|
+
if (range) {
|
|
38
|
+
const startIndex = Math.max(0, range.start - 1);
|
|
39
|
+
const endIndex = Math.min(allThoughts.length, range.end);
|
|
40
|
+
thoughts = allThoughts.slice(startIndex, endIndex);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
thoughts = allThoughts;
|
|
44
|
+
}
|
|
45
|
+
const sections = [];
|
|
46
|
+
if (isFullTrace && thoughts.length > 0) {
|
|
47
|
+
sections.push(`# Reasoning Trace — [${session.level}]\n` +
|
|
48
|
+
`> Session [${session.id}] · [${String(allThoughts.length)}] thoughts`);
|
|
49
|
+
}
|
|
50
|
+
for (const thought of thoughts) {
|
|
51
|
+
const heading = formatThoughtHeading(thought);
|
|
52
|
+
sections.push(`${heading}\n\n${thought.content}`);
|
|
53
|
+
}
|
|
54
|
+
return sections.join('\n\n---\n\n');
|
|
55
|
+
}
|
|
56
|
+
function buildStructuredResult(session, generatedThoughts, targetThoughts) {
|
|
57
|
+
const ttlMs = sessionStore.getTtlMs();
|
|
58
|
+
const expiresAt = sessionStore.getExpiresAt(session.id) ?? session.updatedAt + ttlMs;
|
|
59
|
+
const requestedThoughts = targetThoughts ?? session.totalThoughts;
|
|
60
|
+
return {
|
|
61
|
+
ok: true,
|
|
62
|
+
result: {
|
|
63
|
+
sessionId: session.id,
|
|
64
|
+
level: session.level,
|
|
65
|
+
thoughts: session.thoughts.map((thought) => ({
|
|
66
|
+
index: thought.index,
|
|
67
|
+
content: thought.content,
|
|
68
|
+
revision: thought.revision,
|
|
69
|
+
})),
|
|
70
|
+
generatedThoughts,
|
|
71
|
+
requestedThoughts,
|
|
72
|
+
totalThoughts: session.totalThoughts,
|
|
73
|
+
tokenBudget: session.tokenBudget,
|
|
74
|
+
tokensUsed: session.tokensUsed,
|
|
75
|
+
ttlMs,
|
|
76
|
+
expiresAt,
|
|
77
|
+
createdAt: session.createdAt,
|
|
78
|
+
updatedAt: session.updatedAt,
|
|
79
|
+
summary: `Session [${session.id}] at level [${session.level}] with [${session.thoughts.length}] thoughts.`,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
async function emitLog(server, level, data, sessionId) {
|
|
84
|
+
try {
|
|
85
|
+
await server.sendLoggingMessage({
|
|
86
|
+
level,
|
|
87
|
+
logger: TOOL_NAME,
|
|
88
|
+
data,
|
|
89
|
+
}, sessionId);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Logging should never fail a tool call.
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function createCancellationController(signal) {
|
|
96
|
+
const controller = new AbortController();
|
|
97
|
+
if (signal.aborted) {
|
|
98
|
+
controller.abort();
|
|
99
|
+
return controller;
|
|
100
|
+
}
|
|
101
|
+
signal.addEventListener('abort', () => {
|
|
102
|
+
controller.abort();
|
|
103
|
+
}, { once: true });
|
|
104
|
+
return controller;
|
|
105
|
+
}
|
|
106
|
+
async function isTaskCancelled(taskStore, taskId) {
|
|
107
|
+
try {
|
|
108
|
+
const task = await taskStore.getTask(taskId);
|
|
109
|
+
return task.status === 'cancelled';
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async function ensureTaskIsActive(taskStore, taskId, controller) {
|
|
116
|
+
if (await isTaskCancelled(taskStore, taskId)) {
|
|
117
|
+
controller.abort();
|
|
118
|
+
throw new Error('Reasoning task cancelled');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function createProgressHandler(args) {
|
|
122
|
+
const { server, taskStore, taskId, level, progressToken, controller } = args;
|
|
123
|
+
return async (progress, total) => {
|
|
124
|
+
await ensureTaskIsActive(taskStore, taskId, controller);
|
|
125
|
+
if (progressToken === undefined ||
|
|
126
|
+
!shouldEmitProgress(progress, total, level)) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
await server.server.notification({
|
|
130
|
+
method: 'notifications/progress',
|
|
131
|
+
params: {
|
|
132
|
+
progressToken,
|
|
133
|
+
progress,
|
|
134
|
+
total,
|
|
135
|
+
message: `𖦹 Thought [${String(progress)}/${String(total)}]`,
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
async function storeTaskFailure(taskStore, taskId, response) {
|
|
141
|
+
try {
|
|
142
|
+
await taskStore.storeTaskResult(taskId, 'failed', response);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// No-op if the task has already reached a terminal state.
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
async function handleTaskFailure(args) {
|
|
149
|
+
const { server, taskStore, taskId, sessionId, error } = args;
|
|
150
|
+
const message = getErrorMessage(error);
|
|
151
|
+
const errorCode = mapReasoningErrorCode(message);
|
|
152
|
+
if (await isTaskCancelled(taskStore, taskId)) {
|
|
153
|
+
await emitLog(server, 'notice', { event: 'task_cancelled', taskId, reason: message }, sessionId);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (errorCode === 'E_ABORTED') {
|
|
157
|
+
await storeTaskFailure(taskStore, taskId, createErrorResponse(errorCode, message));
|
|
158
|
+
try {
|
|
159
|
+
await taskStore.updateTaskStatus(taskId, 'cancelled', 'Task cancelled by request.');
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
// No-op if already terminal.
|
|
163
|
+
}
|
|
164
|
+
await emitLog(server, 'notice', { event: 'task_cancelled', taskId, reason: message }, sessionId);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
await storeTaskFailure(taskStore, taskId, createErrorResponse(errorCode, message));
|
|
168
|
+
await emitLog(server, 'error', { event: 'task_failed', taskId, code: errorCode, message }, sessionId);
|
|
169
|
+
}
|
|
170
|
+
async function runReasoningTask(args) {
|
|
171
|
+
const { server, taskStore, taskId, params, progressToken, controller, sessionId, } = args;
|
|
172
|
+
const { query, level, targetThoughts } = params;
|
|
173
|
+
await emitLog(server, 'info', {
|
|
174
|
+
event: 'task_started',
|
|
175
|
+
taskId,
|
|
176
|
+
level,
|
|
177
|
+
hasSessionId: params.sessionId !== undefined,
|
|
178
|
+
targetThoughts: targetThoughts ?? null,
|
|
179
|
+
}, sessionId);
|
|
180
|
+
try {
|
|
181
|
+
const startingCount = params.sessionId !== undefined
|
|
182
|
+
? (sessionStore.get(params.sessionId)?.thoughts.length ?? 0)
|
|
183
|
+
: 0;
|
|
184
|
+
const progressArgs = {
|
|
185
|
+
server,
|
|
186
|
+
taskStore,
|
|
187
|
+
taskId,
|
|
188
|
+
level,
|
|
189
|
+
controller,
|
|
190
|
+
...(progressToken !== undefined ? { progressToken } : {}),
|
|
191
|
+
};
|
|
192
|
+
const session = await reason(query, level, {
|
|
193
|
+
...(params.sessionId ? { sessionId: params.sessionId } : {}),
|
|
194
|
+
...(targetThoughts !== undefined ? { targetThoughts } : {}),
|
|
195
|
+
abortSignal: controller.signal,
|
|
196
|
+
onProgress: createProgressHandler(progressArgs),
|
|
197
|
+
});
|
|
198
|
+
if (await isTaskCancelled(taskStore, taskId)) {
|
|
199
|
+
await emitLog(server, 'notice', { event: 'task_cancelled_before_result', taskId }, sessionId);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
const generatedThoughts = Math.max(0, session.thoughts.length - startingCount);
|
|
203
|
+
const result = buildStructuredResult(session, generatedThoughts, targetThoughts);
|
|
204
|
+
const markdownTrace = formatThoughtsToMarkdown(session);
|
|
205
|
+
const embeddedResource = {
|
|
206
|
+
uri: `file:///cortex/sessions/${session.id}/trace.md`,
|
|
207
|
+
mimeType: 'text/markdown',
|
|
208
|
+
text: markdownTrace,
|
|
209
|
+
};
|
|
210
|
+
await taskStore.storeTaskResult(taskId, 'completed', createToolResponse(result, embeddedResource));
|
|
211
|
+
await emitLog(server, 'info', {
|
|
212
|
+
event: 'task_completed',
|
|
213
|
+
taskId,
|
|
214
|
+
sessionId: session.id,
|
|
215
|
+
generatedThoughts,
|
|
216
|
+
totalThoughts: session.thoughts.length,
|
|
217
|
+
}, sessionId);
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
const failureArgs = {
|
|
221
|
+
server,
|
|
222
|
+
taskStore,
|
|
223
|
+
taskId,
|
|
224
|
+
error,
|
|
225
|
+
...(sessionId !== undefined ? { sessionId } : {}),
|
|
226
|
+
};
|
|
227
|
+
await handleTaskFailure(failureArgs);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
function getTaskId(extra) {
|
|
231
|
+
if (typeof extra.taskId !== 'string' || extra.taskId.length === 0) {
|
|
232
|
+
throw new Error('Task ID missing in request context.');
|
|
233
|
+
}
|
|
234
|
+
return extra.taskId;
|
|
235
|
+
}
|
|
236
|
+
export const TOOL_NAME = 'reasoning.think';
|
|
237
|
+
export function registerReasoningThinkTool(server, iconMeta) {
|
|
238
|
+
server.experimental.tasks.registerToolTask(TOOL_NAME, {
|
|
239
|
+
title: 'Reasoning Think',
|
|
240
|
+
description: 'Perform multi-level reasoning on a query. Use this tool when you need to break down complex problems into structured thought chains. ' +
|
|
241
|
+
'Supports three depth levels: basic (3–5 thoughts, 2K token budget), normal (6–10 thoughts, 8K budget), and high (15–25 thoughts, 32K budget). ' +
|
|
242
|
+
'Returns a session with accumulated thoughts, token usage, and TTL metadata. ' +
|
|
243
|
+
'Continue an existing session by providing sessionId. Supports task-augmented execution for long-running high-level reasoning.',
|
|
244
|
+
inputSchema: ReasoningThinkInputSchema,
|
|
245
|
+
outputSchema: ReasoningThinkToolOutputSchema,
|
|
246
|
+
annotations: {
|
|
247
|
+
readOnlyHint: false,
|
|
248
|
+
idempotentHint: false,
|
|
249
|
+
},
|
|
250
|
+
execution: { taskSupport: 'optional' },
|
|
251
|
+
...(iconMeta
|
|
252
|
+
? {
|
|
253
|
+
icons: [
|
|
254
|
+
{
|
|
255
|
+
src: iconMeta.src,
|
|
256
|
+
mimeType: iconMeta.mimeType,
|
|
257
|
+
},
|
|
258
|
+
],
|
|
259
|
+
}
|
|
260
|
+
: {}),
|
|
261
|
+
}, {
|
|
262
|
+
async createTask(rawParams, rawExtra) {
|
|
263
|
+
const params = rawParams;
|
|
264
|
+
const extra = rawExtra;
|
|
265
|
+
const task = await extra.taskStore.createTask({
|
|
266
|
+
ttl: extra.taskRequestedTtl ?? null,
|
|
267
|
+
pollInterval: 500,
|
|
268
|
+
});
|
|
269
|
+
const controller = createCancellationController(extra.signal);
|
|
270
|
+
const taskArgs = {
|
|
271
|
+
server,
|
|
272
|
+
taskStore: extra.taskStore,
|
|
273
|
+
taskId: task.taskId,
|
|
274
|
+
params,
|
|
275
|
+
controller,
|
|
276
|
+
...(extra._meta?.progressToken !== undefined
|
|
277
|
+
? { progressToken: extra._meta.progressToken }
|
|
278
|
+
: {}),
|
|
279
|
+
...(extra.sessionId !== undefined
|
|
280
|
+
? { sessionId: extra.sessionId }
|
|
281
|
+
: {}),
|
|
282
|
+
};
|
|
283
|
+
void runReasoningTask(taskArgs);
|
|
284
|
+
return { task };
|
|
285
|
+
},
|
|
286
|
+
getTask(_params, rawExtra) {
|
|
287
|
+
const extra = rawExtra;
|
|
288
|
+
return extra.taskStore.getTask(getTaskId(extra));
|
|
289
|
+
},
|
|
290
|
+
getTaskResult(_params, rawExtra) {
|
|
291
|
+
const extra = rawExtra;
|
|
292
|
+
return extra.taskStore
|
|
293
|
+
.getTaskResult(getTaskId(extra))
|
|
294
|
+
.then((result) => result);
|
|
295
|
+
},
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=reasoning-think.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasoning-think.js","sourceRoot":"","sources":["../../src/tools/reasoning-think.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@j0hanz/cortex-mcp",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"mcpName": "io.github.j0hanz/cortex-mcp",
|
|
5
|
+
"author": "Johanz",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/j0hanz/cortex-mcp.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/j0hanz/cortex-mcp#readme",
|
|
12
|
+
"description": "Multi-level reasoning MCP server with configurable depth levels",
|
|
13
|
+
"type": "module",
|
|
14
|
+
"main": "dist/index.js",
|
|
15
|
+
"types": "dist/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"default": "./dist/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./package.json": "./package.json"
|
|
22
|
+
},
|
|
23
|
+
"bin": {
|
|
24
|
+
"cortex-mcp": "dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist",
|
|
28
|
+
"README.md"
|
|
29
|
+
],
|
|
30
|
+
"scripts": {
|
|
31
|
+
"clean": "node scripts/tasks.mjs clean",
|
|
32
|
+
"validate:instructions": "node scripts/tasks.mjs validate:instructions",
|
|
33
|
+
"build": "node scripts/tasks.mjs build",
|
|
34
|
+
"copy:assets": "node scripts/tasks.mjs copy:assets",
|
|
35
|
+
"prepare": "npm run build",
|
|
36
|
+
"dev": "tsc --watch --preserveWatchOutput",
|
|
37
|
+
"dev:run": "node --env-file=.env --watch dist/index.js",
|
|
38
|
+
"start": "node dist/index.js",
|
|
39
|
+
"format": "prettier --write .",
|
|
40
|
+
"type-check": "node scripts/tasks.mjs type-check",
|
|
41
|
+
"type-check:diagnostics": "tsc --noEmit --extendedDiagnostics",
|
|
42
|
+
"type-check:trace": "node -e \"require('fs').rmSync('.ts-trace',{recursive:true,force:true})\" && tsc --noEmit --generateTrace .ts-trace",
|
|
43
|
+
"lint": "eslint .",
|
|
44
|
+
"lint:fix": "eslint . --fix",
|
|
45
|
+
"test": "node scripts/tasks.mjs test",
|
|
46
|
+
"test:fast": "node --test --import tsx/esm src/__tests__/**/*.test.ts",
|
|
47
|
+
"test:coverage": "node scripts/tasks.mjs test --coverage",
|
|
48
|
+
"knip": "knip",
|
|
49
|
+
"knip:fix": "knip --fix",
|
|
50
|
+
"inspector": "npm run build && npx -y @modelcontextprotocol/inspector node dist/index.js ${workspaceFolder}",
|
|
51
|
+
"prepublishOnly": "npm run lint && npm run type-check && npm run build"
|
|
52
|
+
},
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
55
|
+
"zod": "^4.3.6"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@eslint/js": "^9.23.2",
|
|
59
|
+
"@trivago/prettier-plugin-sort-imports": "^6.0.2",
|
|
60
|
+
"@types/node": "^24",
|
|
61
|
+
"eslint-config-prettier": "^10.1.8",
|
|
62
|
+
"eslint-plugin-de-morgan": "^2.0.0",
|
|
63
|
+
"eslint-plugin-depend": "^1.4.0",
|
|
64
|
+
"eslint-plugin-sonarjs": "^3.0.6",
|
|
65
|
+
"eslint-plugin-unused-imports": "^4.3.0",
|
|
66
|
+
"knip": "^5.83.1",
|
|
67
|
+
"prettier": "^3.8.1",
|
|
68
|
+
"tsx": "^4.19.0",
|
|
69
|
+
"typescript": "^5.9.3",
|
|
70
|
+
"typescript-eslint": "^8.54.0"
|
|
71
|
+
},
|
|
72
|
+
"engines": {
|
|
73
|
+
"node": ">=24"
|
|
74
|
+
}
|
|
75
|
+
}
|