memory-journal-mcp 4.4.2 → 5.0.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/.github/workflows/codeql.yml +1 -6
- package/.github/workflows/docker-publish.yml +15 -49
- package/.github/workflows/lint-and-test.yml +1 -1
- package/.github/workflows/secrets-scanning.yml +4 -3
- package/.github/workflows/security-update.yml +3 -3
- package/CHANGELOG.md +213 -0
- package/CONTRIBUTING.md +132 -97
- package/DOCKER_README.md +184 -235
- package/Dockerfile +27 -24
- package/README.md +218 -190
- package/SECURITY.md +27 -35
- package/dist/cli.js +16 -1
- package/dist/cli.js.map +1 -1
- package/dist/constants/ServerInstructions.d.ts +5 -1
- package/dist/constants/ServerInstructions.d.ts.map +1 -1
- package/dist/constants/ServerInstructions.js +133 -73
- package/dist/constants/ServerInstructions.js.map +1 -1
- package/dist/constants/icons.d.ts +2 -2
- package/dist/constants/icons.d.ts.map +1 -1
- package/dist/constants/icons.js +7 -6
- package/dist/constants/icons.js.map +1 -1
- package/dist/database/SqliteAdapter.d.ts +37 -24
- package/dist/database/SqliteAdapter.d.ts.map +1 -1
- package/dist/database/SqliteAdapter.js +319 -157
- package/dist/database/SqliteAdapter.js.map +1 -1
- package/dist/database/schema.d.ts +45 -0
- package/dist/database/schema.d.ts.map +1 -0
- package/dist/database/schema.js +92 -0
- package/dist/database/schema.js.map +1 -0
- package/dist/filtering/ToolFilter.d.ts +1 -1
- package/dist/filtering/ToolFilter.d.ts.map +1 -1
- package/dist/filtering/ToolFilter.js +13 -2
- package/dist/filtering/ToolFilter.js.map +1 -1
- package/dist/github/GitHubIntegration.d.ts.map +1 -1
- package/dist/github/GitHubIntegration.js +1 -3
- package/dist/github/GitHubIntegration.js.map +1 -1
- package/dist/handlers/prompts/github.d.ts +12 -0
- package/dist/handlers/prompts/github.d.ts.map +1 -0
- package/dist/handlers/prompts/github.js +178 -0
- package/dist/handlers/prompts/github.js.map +1 -0
- package/dist/handlers/prompts/index.d.ts +23 -2
- package/dist/handlers/prompts/index.d.ts.map +1 -1
- package/dist/handlers/prompts/index.js +7 -432
- package/dist/handlers/prompts/index.js.map +1 -1
- package/dist/handlers/prompts/workflow.d.ts +12 -0
- package/dist/handlers/prompts/workflow.d.ts.map +1 -0
- package/dist/handlers/prompts/workflow.js +277 -0
- package/dist/handlers/prompts/workflow.js.map +1 -0
- package/dist/handlers/resources/core.d.ts +11 -0
- package/dist/handlers/resources/core.d.ts.map +1 -0
- package/dist/handlers/resources/core.js +433 -0
- package/dist/handlers/resources/core.js.map +1 -0
- package/dist/handlers/resources/github.d.ts +11 -0
- package/dist/handlers/resources/github.d.ts.map +1 -0
- package/dist/handlers/resources/github.js +314 -0
- package/dist/handlers/resources/github.js.map +1 -0
- package/dist/handlers/resources/graph.d.ts +11 -0
- package/dist/handlers/resources/graph.d.ts.map +1 -0
- package/dist/handlers/resources/graph.js +204 -0
- package/dist/handlers/resources/graph.js.map +1 -0
- package/dist/handlers/resources/index.d.ts +5 -20
- package/dist/handlers/resources/index.d.ts.map +1 -1
- package/dist/handlers/resources/index.js +16 -1278
- package/dist/handlers/resources/index.js.map +1 -1
- package/dist/handlers/resources/shared.d.ts +60 -0
- package/dist/handlers/resources/shared.d.ts.map +1 -0
- package/dist/handlers/resources/shared.js +49 -0
- package/dist/handlers/resources/shared.js.map +1 -0
- package/dist/handlers/resources/team.d.ts +13 -0
- package/dist/handlers/resources/team.d.ts.map +1 -0
- package/dist/handlers/resources/team.js +119 -0
- package/dist/handlers/resources/team.js.map +1 -0
- package/dist/handlers/resources/templates.d.ts +13 -0
- package/dist/handlers/resources/templates.d.ts.map +1 -0
- package/dist/handlers/resources/templates.js +310 -0
- package/dist/handlers/resources/templates.js.map +1 -0
- package/dist/handlers/tools/admin.d.ts +8 -0
- package/dist/handlers/tools/admin.d.ts.map +1 -0
- package/dist/handlers/tools/admin.js +270 -0
- package/dist/handlers/tools/admin.js.map +1 -0
- package/dist/handlers/tools/analytics.d.ts +8 -0
- package/dist/handlers/tools/analytics.d.ts.map +1 -0
- package/dist/handlers/tools/analytics.js +256 -0
- package/dist/handlers/tools/analytics.js.map +1 -0
- package/dist/handlers/tools/backup.d.ts +8 -0
- package/dist/handlers/tools/backup.d.ts.map +1 -0
- package/dist/handlers/tools/backup.js +224 -0
- package/dist/handlers/tools/backup.js.map +1 -0
- package/dist/handlers/tools/core.d.ts +9 -0
- package/dist/handlers/tools/core.d.ts.map +1 -0
- package/dist/handlers/tools/core.js +326 -0
- package/dist/handlers/tools/core.js.map +1 -0
- package/dist/handlers/tools/export.d.ts +8 -0
- package/dist/handlers/tools/export.d.ts.map +1 -0
- package/dist/handlers/tools/export.js +89 -0
- package/dist/handlers/tools/export.js.map +1 -0
- package/dist/handlers/tools/github/helpers.d.ts +34 -0
- package/dist/handlers/tools/github/helpers.d.ts.map +1 -0
- package/dist/handlers/tools/github/helpers.js +52 -0
- package/dist/handlers/tools/github/helpers.js.map +1 -0
- package/dist/handlers/tools/github/insights-tools.d.ts +8 -0
- package/dist/handlers/tools/github/insights-tools.d.ts.map +1 -0
- package/dist/handlers/tools/github/insights-tools.js +104 -0
- package/dist/handlers/tools/github/insights-tools.js.map +1 -0
- package/dist/handlers/tools/github/issue-tools.d.ts +8 -0
- package/dist/handlers/tools/github/issue-tools.d.ts.map +1 -0
- package/dist/handlers/tools/github/issue-tools.js +359 -0
- package/dist/handlers/tools/github/issue-tools.js.map +1 -0
- package/dist/handlers/tools/github/kanban-tools.d.ts +8 -0
- package/dist/handlers/tools/github/kanban-tools.d.ts.map +1 -0
- package/dist/handlers/tools/github/kanban-tools.js +108 -0
- package/dist/handlers/tools/github/kanban-tools.js.map +1 -0
- package/dist/handlers/tools/github/milestone-tools.d.ts +9 -0
- package/dist/handlers/tools/github/milestone-tools.d.ts.map +1 -0
- package/dist/handlers/tools/github/milestone-tools.js +302 -0
- package/dist/handlers/tools/github/milestone-tools.js.map +1 -0
- package/dist/handlers/tools/github/mutation-tools.d.ts +12 -0
- package/dist/handlers/tools/github/mutation-tools.d.ts.map +1 -0
- package/dist/handlers/tools/github/mutation-tools.js +15 -0
- package/dist/handlers/tools/github/mutation-tools.js.map +1 -0
- package/dist/handlers/tools/github/read-tools.d.ts +8 -0
- package/dist/handlers/tools/github/read-tools.d.ts.map +1 -0
- package/dist/handlers/tools/github/read-tools.js +260 -0
- package/dist/handlers/tools/github/read-tools.js.map +1 -0
- package/dist/handlers/tools/github/schemas.d.ts +467 -0
- package/dist/handlers/tools/github/schemas.d.ts.map +1 -0
- package/dist/handlers/tools/github/schemas.js +335 -0
- package/dist/handlers/tools/github/schemas.js.map +1 -0
- package/dist/handlers/tools/github.d.ts +14 -0
- package/dist/handlers/tools/github.d.ts.map +1 -0
- package/dist/handlers/tools/github.js +28 -0
- package/dist/handlers/tools/github.js.map +1 -0
- package/dist/handlers/tools/index.d.ts +15 -20
- package/dist/handlers/tools/index.d.ts.map +1 -1
- package/dist/handlers/tools/index.js +117 -2909
- package/dist/handlers/tools/index.js.map +1 -1
- package/dist/handlers/tools/relationships.d.ts +8 -0
- package/dist/handlers/tools/relationships.d.ts.map +1 -0
- package/dist/handlers/tools/relationships.js +308 -0
- package/dist/handlers/tools/relationships.js.map +1 -0
- package/dist/handlers/tools/schemas.d.ts +108 -0
- package/dist/handlers/tools/schemas.d.ts.map +1 -0
- package/dist/handlers/tools/schemas.js +122 -0
- package/dist/handlers/tools/schemas.js.map +1 -0
- package/dist/handlers/tools/search.d.ts +8 -0
- package/dist/handlers/tools/search.d.ts.map +1 -0
- package/dist/handlers/tools/search.js +282 -0
- package/dist/handlers/tools/search.js.map +1 -0
- package/dist/handlers/tools/team.d.ts +11 -0
- package/dist/handlers/tools/team.d.ts.map +1 -0
- package/dist/handlers/tools/team.js +239 -0
- package/dist/handlers/tools/team.js.map +1 -0
- package/dist/server/McpServer.d.ts +4 -0
- package/dist/server/McpServer.d.ts.map +1 -1
- package/dist/server/McpServer.js +48 -297
- package/dist/server/McpServer.js.map +1 -1
- package/dist/server/Scheduler.d.ts +91 -0
- package/dist/server/Scheduler.d.ts.map +1 -0
- package/dist/server/Scheduler.js +201 -0
- package/dist/server/Scheduler.js.map +1 -0
- package/dist/transports/http.d.ts +66 -0
- package/dist/transports/http.d.ts.map +1 -0
- package/dist/transports/http.js +519 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/types/entities.d.ts +101 -0
- package/dist/types/entities.d.ts.map +1 -0
- package/dist/types/entities.js +5 -0
- package/dist/types/entities.js.map +1 -0
- package/dist/types/filtering.d.ts +34 -0
- package/dist/types/filtering.d.ts.map +1 -0
- package/dist/types/filtering.js +5 -0
- package/dist/types/filtering.js.map +1 -0
- package/dist/types/github.d.ts +166 -0
- package/dist/types/github.d.ts.map +1 -0
- package/dist/types/github.js +5 -0
- package/dist/types/github.js.map +1 -0
- package/dist/types/index.d.ts +35 -292
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -2
- package/dist/types/index.js.map +1 -1
- package/dist/utils/error-helpers.d.ts +37 -0
- package/dist/utils/error-helpers.d.ts.map +1 -0
- package/dist/utils/error-helpers.js +47 -0
- package/dist/utils/error-helpers.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +6 -3
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/security-utils.d.ts +0 -21
- package/dist/utils/security-utils.d.ts.map +1 -1
- package/dist/utils/security-utils.js +0 -47
- package/dist/utils/security-utils.js.map +1 -1
- package/dist/vector/VectorSearchManager.d.ts.map +1 -1
- package/dist/vector/VectorSearchManager.js +9 -32
- package/dist/vector/VectorSearchManager.js.map +1 -1
- package/docker-compose.yml +11 -2
- package/hooks/README.md +107 -0
- package/hooks/cursor/hooks.json +10 -0
- package/hooks/cursor/memory-journal.mdc +22 -0
- package/hooks/cursor/session-end.sh +19 -0
- package/hooks/kilo-code/session-end-mode.json +11 -0
- package/hooks/kiro/session-end.md +13 -0
- package/mcp-config-example.json +1 -0
- package/package.json +11 -9
- package/playwright.config.ts +29 -0
- package/releases/v4.5.0.md +116 -0
- package/releases/v5.0.0.md +105 -0
- package/scripts/generate-server-instructions.ts +176 -0
- package/scripts/server-instructions-function-body.ts +77 -0
- package/server.json +3 -3
- package/src/cli.ts +45 -1
- package/src/constants/ServerInstructions.ts +133 -73
- package/src/constants/icons.ts +8 -7
- package/src/constants/server-instructions.md +268 -0
- package/src/database/SqliteAdapter.ts +358 -192
- package/src/database/schema.ts +125 -0
- package/src/filtering/ToolFilter.ts +13 -2
- package/src/github/GitHubIntegration.ts +1 -3
- package/src/handlers/prompts/github.ts +209 -0
- package/src/handlers/prompts/index.ts +10 -499
- package/src/handlers/prompts/workflow.ts +314 -0
- package/src/handlers/resources/core.ts +528 -0
- package/src/handlers/resources/github.ts +358 -0
- package/src/handlers/resources/graph.ts +254 -0
- package/src/handlers/resources/index.ts +23 -1570
- package/src/handlers/resources/shared.ts +103 -0
- package/src/handlers/resources/team.ts +133 -0
- package/src/handlers/resources/templates.ts +374 -0
- package/src/handlers/tools/admin.ts +285 -0
- package/src/handlers/tools/analytics.ts +301 -0
- package/src/handlers/tools/backup.ts +242 -0
- package/src/handlers/tools/core.ts +350 -0
- package/src/handlers/tools/export.ts +115 -0
- package/src/handlers/tools/github/helpers.ts +86 -0
- package/src/handlers/tools/github/insights-tools.ts +119 -0
- package/src/handlers/tools/github/issue-tools.ts +439 -0
- package/src/handlers/tools/github/kanban-tools.ts +134 -0
- package/src/handlers/tools/github/milestone-tools.ts +392 -0
- package/src/handlers/tools/github/mutation-tools.ts +17 -0
- package/src/handlers/tools/github/read-tools.ts +328 -0
- package/src/handlers/tools/github/schemas.ts +369 -0
- package/src/handlers/tools/github.ts +36 -0
- package/src/handlers/tools/index.ts +144 -3325
- package/src/handlers/tools/relationships.ts +358 -0
- package/src/handlers/tools/schemas.ts +132 -0
- package/src/handlers/tools/search.ts +343 -0
- package/src/handlers/tools/team.ts +273 -0
- package/src/server/McpServer.ts +63 -358
- package/src/server/Scheduler.ts +278 -0
- package/src/transports/http.ts +635 -0
- package/src/types/entities.ts +145 -0
- package/src/types/filtering.ts +54 -0
- package/src/types/github.ts +180 -0
- package/src/types/index.ts +67 -375
- package/src/utils/error-helpers.ts +52 -0
- package/src/utils/logger.ts +6 -3
- package/src/utils/security-utils.ts +0 -52
- package/src/vector/VectorSearchManager.ts +9 -33
- package/tests/constants/icons.test.ts +1 -2
- package/tests/constants/server-instructions.test.ts +30 -4
- package/tests/database/sqlite-adapter.test.ts +91 -7
- package/tests/e2e/auth.spec.ts +154 -0
- package/tests/e2e/health.spec.ts +63 -0
- package/tests/e2e/protocols.spec.ts +134 -0
- package/tests/e2e/resources.spec.ts +103 -0
- package/tests/e2e/scheduler.spec.ts +79 -0
- package/tests/e2e/security.spec.ts +91 -0
- package/tests/e2e/sessions.spec.ts +95 -0
- package/tests/e2e/stateless.spec.ts +121 -0
- package/tests/e2e/tools.spec.ts +111 -0
- package/tests/filtering/tool-filter.test.ts +46 -0
- package/tests/handlers/error-path-coverage.test.ts +324 -0
- package/tests/handlers/github-resource-handlers.test.ts +453 -0
- package/tests/handlers/github-tool-handlers.test.ts +899 -0
- package/tests/handlers/prompt-handler-coverage.test.ts +106 -0
- package/tests/handlers/prompt-handlers.test.ts +40 -0
- package/tests/handlers/resource-handler-coverage.test.ts +181 -0
- package/tests/handlers/resource-handlers.test.ts +33 -9
- package/tests/handlers/search-tool-handlers.test.ts +272 -0
- package/tests/handlers/targeted-gap-closure.test.ts +387 -0
- package/tests/handlers/team-resource-handlers.test.ts +156 -0
- package/tests/handlers/team-tool-handlers.test.ts +301 -0
- package/tests/handlers/tool-handler-coverage.test.ts +469 -0
- package/tests/handlers/tool-handlers.test.ts +2 -2
- package/tests/security/sql-injection.test.ts +3 -54
- package/tests/server/mcp-server.test.ts +503 -8
- package/tests/server/scheduler.test.ts +400 -0
- package/tests/transports/http-transport.test.ts +620 -0
- package/tests/vector/vector-search-manager.test.ts +60 -0
- package/vitest.config.ts +4 -1
- package/.memory-journal-team.db +0 -0
- package/.vscode/settings.json +0 -84
package/dist/server/McpServer.js
CHANGED
|
@@ -5,10 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
7
7
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
8
|
-
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
9
|
-
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
10
|
-
import { randomUUID } from 'node:crypto';
|
|
11
|
-
import express from 'express';
|
|
12
8
|
import { z } from 'zod';
|
|
13
9
|
import { SqliteAdapter } from '../database/SqliteAdapter.js';
|
|
14
10
|
import { VectorSearchManager } from '../vector/VectorSearchManager.js';
|
|
@@ -19,20 +15,26 @@ import { getTools, callTool } from '../handlers/tools/index.js';
|
|
|
19
15
|
import { getResources, readResource } from '../handlers/resources/index.js';
|
|
20
16
|
import { getPrompts, getPrompt } from '../handlers/prompts/index.js';
|
|
21
17
|
import { generateInstructions } from '../constants/ServerInstructions.js';
|
|
18
|
+
import { Scheduler } from './Scheduler.js';
|
|
19
|
+
import { HttpTransport } from '../transports/http.js';
|
|
22
20
|
import pkg from '../../package.json' with { type: 'json' };
|
|
23
|
-
/** Session timeout for stateful HTTP mode (30 minutes) */
|
|
24
|
-
const SESSION_TIMEOUT_MS = 30 * 60 * 1000;
|
|
25
|
-
/** Session timeout sweep interval (5 minutes) */
|
|
26
|
-
const SESSION_SWEEP_INTERVAL_MS = 5 * 60 * 1000;
|
|
27
21
|
/**
|
|
28
22
|
* Create and start the MCP server
|
|
29
23
|
*/
|
|
30
24
|
export async function createServer(options) {
|
|
31
|
-
const { transport, dbPath, toolFilter, defaultProjectNumber } = options;
|
|
25
|
+
const { transport, dbPath, teamDbPath, toolFilter, defaultProjectNumber } = options;
|
|
32
26
|
// Initialize database (async for sql.js)
|
|
33
27
|
const db = new SqliteAdapter(dbPath);
|
|
34
28
|
await db.initialize();
|
|
35
29
|
logger.info('Database initialized', { module: 'McpServer', dbPath });
|
|
30
|
+
// Initialize team database if configured
|
|
31
|
+
let teamDb;
|
|
32
|
+
if (teamDbPath) {
|
|
33
|
+
teamDb = new SqliteAdapter(teamDbPath);
|
|
34
|
+
await teamDb.initialize();
|
|
35
|
+
teamDb.applyTeamSchema();
|
|
36
|
+
logger.info('Team database initialized', { module: 'McpServer', teamDbPath });
|
|
37
|
+
}
|
|
36
38
|
// Initialize vector search manager (lazy loading - model loads on first use)
|
|
37
39
|
const vectorManager = new VectorSearchManager(dbPath);
|
|
38
40
|
logger.info('Vector search manager created (lazy initialization)', { module: 'McpServer' });
|
|
@@ -84,7 +86,7 @@ export async function createServer(options) {
|
|
|
84
86
|
}
|
|
85
87
|
: undefined;
|
|
86
88
|
// Get all tools once (unfiltered) for both instruction generation and registration
|
|
87
|
-
const allTools = getTools(db, null, vectorManager, github, { defaultProjectNumber });
|
|
89
|
+
const allTools = getTools(db, null, vectorManager, github, { defaultProjectNumber }, teamDb);
|
|
88
90
|
const allToolNames = new Set(allTools.map((t) => t.name));
|
|
89
91
|
// Generate dynamic instructions based on enabled tools, resources, prompts, and latest entry
|
|
90
92
|
const instructions = generateInstructions(filterConfig?.enabledTools ?? allToolNames, resources.map((r) => {
|
|
@@ -106,7 +108,7 @@ export async function createServer(options) {
|
|
|
106
108
|
});
|
|
107
109
|
// Apply filter to get the set of tools to register
|
|
108
110
|
const tools = filterConfig
|
|
109
|
-
? getTools(db, filterConfig, vectorManager, github, { defaultProjectNumber })
|
|
111
|
+
? getTools(db, filterConfig, vectorManager, github, { defaultProjectNumber }, teamDb)
|
|
110
112
|
: allTools;
|
|
111
113
|
for (const tool of tools) {
|
|
112
114
|
const toolDef = tool;
|
|
@@ -139,7 +141,7 @@ export async function createServer(options) {
|
|
|
139
141
|
const progressContext = progressToken !== undefined
|
|
140
142
|
? { server: server.server, progressToken }
|
|
141
143
|
: undefined;
|
|
142
|
-
const result = await callTool(toolDef.name, args, db, vectorManager, github, { defaultProjectNumber }, progressContext);
|
|
144
|
+
const result = await callTool(toolDef.name, args, db, vectorManager, github, { defaultProjectNumber }, progressContext, teamDb);
|
|
143
145
|
// MCP 2025-11-25: If tool has outputSchema, return both:
|
|
144
146
|
// - structuredContent: validated JSON for clients that support it
|
|
145
147
|
// - content: formatted text fallback for clients that don't (e.g., AntiGravity)
|
|
@@ -193,7 +195,7 @@ export async function createServer(options) {
|
|
|
193
195
|
mimeType: resDef.mimeType ?? 'application/json',
|
|
194
196
|
...(resDef.icons ? { icons: resDef.icons } : {}),
|
|
195
197
|
}, async (uri, _variables) => {
|
|
196
|
-
const result = await readResource(uri.href, db, vectorManager, filterConfig, github);
|
|
198
|
+
const result = await readResource(uri.href, db, vectorManager, filterConfig, github, scheduler, teamDb);
|
|
197
199
|
const dataStr = typeof result.data === 'string'
|
|
198
200
|
? result.data
|
|
199
201
|
: JSON.stringify(result.data, null, 2);
|
|
@@ -216,7 +218,7 @@ export async function createServer(options) {
|
|
|
216
218
|
mimeType: resDef.mimeType ?? 'application/json',
|
|
217
219
|
...(resDef.icons ? { icons: resDef.icons } : {}),
|
|
218
220
|
}, async (uri) => {
|
|
219
|
-
const result = await readResource(uri.href, db, vectorManager, filterConfig, github);
|
|
221
|
+
const result = await readResource(uri.href, db, vectorManager, filterConfig, github, scheduler, teamDb);
|
|
220
222
|
const dataStr = typeof result.data === 'string'
|
|
221
223
|
? result.data
|
|
222
224
|
: JSON.stringify(result.data, null, 2);
|
|
@@ -264,6 +266,20 @@ export async function createServer(options) {
|
|
|
264
266
|
return Promise.resolve(result);
|
|
265
267
|
});
|
|
266
268
|
}
|
|
269
|
+
// Initialize scheduler (HTTP/SSE only)
|
|
270
|
+
let scheduler = null;
|
|
271
|
+
if (options.scheduler) {
|
|
272
|
+
const hasAnyJob = options.scheduler.backupIntervalMinutes > 0 ||
|
|
273
|
+
options.scheduler.vacuumIntervalMinutes > 0 ||
|
|
274
|
+
options.scheduler.rebuildIndexIntervalMinutes > 0;
|
|
275
|
+
if (hasAnyJob && transport === 'stdio') {
|
|
276
|
+
logger.warning('Scheduler options ignored for stdio transport (session is ephemeral). ' +
|
|
277
|
+
'Use HTTP/SSE transport for automated scheduling.', { module: 'Scheduler' });
|
|
278
|
+
}
|
|
279
|
+
else if (hasAnyJob) {
|
|
280
|
+
scheduler = new Scheduler(options.scheduler, db, vectorManager);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
267
283
|
// Start server based on transport
|
|
268
284
|
if (transport === 'stdio') {
|
|
269
285
|
const stdioTransport = new StdioServerTransport();
|
|
@@ -273,298 +289,33 @@ export async function createServer(options) {
|
|
|
273
289
|
process.on('SIGINT', () => {
|
|
274
290
|
logger.info('Shutting down...', { module: 'McpServer' });
|
|
275
291
|
db.close();
|
|
292
|
+
teamDb?.close();
|
|
276
293
|
process.exit(0);
|
|
277
294
|
});
|
|
278
295
|
}
|
|
279
296
|
else {
|
|
280
|
-
// HTTP transport
|
|
297
|
+
// HTTP transport
|
|
281
298
|
const port = options.port ?? 3000;
|
|
282
299
|
const host = options.host ?? 'localhost';
|
|
283
300
|
const corsOrigin = options.corsOrigin ?? process.env['MCP_CORS_ORIGIN'] ?? '*';
|
|
284
|
-
const
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
301
|
+
const authToken = options.authToken ?? process.env['MCP_AUTH_TOKEN'] ?? undefined;
|
|
302
|
+
const httpTransport = new HttpTransport({
|
|
303
|
+
port,
|
|
304
|
+
host,
|
|
305
|
+
corsOrigin,
|
|
306
|
+
stateless: options.statelessHttp === true,
|
|
307
|
+
authToken,
|
|
290
308
|
});
|
|
291
|
-
|
|
292
|
-
//
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
res.status(204).end();
|
|
301
|
-
return;
|
|
302
|
-
}
|
|
303
|
-
next();
|
|
304
|
-
});
|
|
305
|
-
// JSON body parser with size limit to prevent memory exhaustion (DoS)
|
|
306
|
-
app.use(express.json({ limit: '1mb' }));
|
|
307
|
-
// Explicit OPTIONS handler for /mcp - MUST be before other /mcp routes
|
|
308
|
-
// Using app.all to intercept before Express 5's auto-OPTIONS
|
|
309
|
-
app.all('/mcp', (req, res, next) => {
|
|
310
|
-
// CORS headers are already set by the middleware above.
|
|
311
|
-
// For OPTIONS, respond immediately.
|
|
312
|
-
if (req.method === 'OPTIONS') {
|
|
313
|
-
res.status(204).end();
|
|
314
|
-
return;
|
|
315
|
-
}
|
|
316
|
-
// For other methods, continue to next handler
|
|
317
|
-
next();
|
|
309
|
+
await httpTransport.start(server, scheduler);
|
|
310
|
+
// Handle shutdown
|
|
311
|
+
process.on('SIGINT', () => {
|
|
312
|
+
void (async () => {
|
|
313
|
+
await httpTransport.stop(scheduler);
|
|
314
|
+
db.close();
|
|
315
|
+
teamDb?.close();
|
|
316
|
+
process.exit(0);
|
|
317
|
+
})();
|
|
318
318
|
});
|
|
319
|
-
if (options.statelessHttp) {
|
|
320
|
-
// === STATELESS MODE ===
|
|
321
|
-
// Single transport, no session management - ideal for serverless deployments
|
|
322
|
-
const statelessTransport = new StreamableHTTPServerTransport({
|
|
323
|
-
sessionIdGenerator: undefined,
|
|
324
|
-
enableJsonResponse: true,
|
|
325
|
-
});
|
|
326
|
-
await server.connect(statelessTransport);
|
|
327
|
-
logger.info('Stateless transport connected', { module: 'McpServer' });
|
|
328
|
-
// POST /mcp - All requests go to the same transport (no session validation)
|
|
329
|
-
app.post('/mcp', (req, res) => {
|
|
330
|
-
void statelessTransport.handleRequest(req, res, req.body);
|
|
331
|
-
});
|
|
332
|
-
// GET /mcp - SSE not available in stateless mode
|
|
333
|
-
app.get('/mcp', (_req, res) => {
|
|
334
|
-
res.status(405).json({
|
|
335
|
-
jsonrpc: '2.0',
|
|
336
|
-
error: {
|
|
337
|
-
code: -32000,
|
|
338
|
-
message: 'SSE streaming not available in stateless mode',
|
|
339
|
-
},
|
|
340
|
-
id: null,
|
|
341
|
-
});
|
|
342
|
-
});
|
|
343
|
-
// DELETE /mcp - No-op in stateless mode (no sessions to terminate)
|
|
344
|
-
app.delete('/mcp', (_req, res) => {
|
|
345
|
-
res.status(204).end();
|
|
346
|
-
});
|
|
347
|
-
// Start HTTP server
|
|
348
|
-
const httpServer = app.listen(port, host, () => {
|
|
349
|
-
logger.info('MCP server started on HTTP (stateless)', {
|
|
350
|
-
module: 'McpServer',
|
|
351
|
-
port,
|
|
352
|
-
host,
|
|
353
|
-
endpoint: `http://${host}:${port}/mcp`,
|
|
354
|
-
});
|
|
355
|
-
});
|
|
356
|
-
httpServer.on('close', () => {
|
|
357
|
-
logger.info('HTTP server closed', { module: 'McpServer' });
|
|
358
|
-
});
|
|
359
|
-
// Handle shutdown
|
|
360
|
-
process.on('SIGINT', () => {
|
|
361
|
-
logger.info('Shutting down HTTP server...', { module: 'McpServer' });
|
|
362
|
-
void (async () => {
|
|
363
|
-
try {
|
|
364
|
-
await statelessTransport.close();
|
|
365
|
-
}
|
|
366
|
-
catch (error) {
|
|
367
|
-
logger.error('Error closing transport', {
|
|
368
|
-
module: 'McpServer',
|
|
369
|
-
error: error instanceof Error ? error.message : String(error),
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
httpServer.close();
|
|
373
|
-
db.close();
|
|
374
|
-
logger.info('Shutdown complete', { module: 'McpServer' });
|
|
375
|
-
process.exit(0);
|
|
376
|
-
})();
|
|
377
|
-
});
|
|
378
|
-
// Keep process alive
|
|
379
|
-
setInterval(() => {
|
|
380
|
-
// Heartbeat - keeps event loop active
|
|
381
|
-
}, 1000 * 60 * 60);
|
|
382
|
-
}
|
|
383
|
-
else {
|
|
384
|
-
// === STATEFUL MODE ===
|
|
385
|
-
// Session-based transport with SSE support for notifications
|
|
386
|
-
// Session transport storage with last-activity timestamps
|
|
387
|
-
const transports = new Map();
|
|
388
|
-
const sessionLastActivity = new Map();
|
|
389
|
-
/** Update the last-activity timestamp for a session */
|
|
390
|
-
const touchSession = (sid) => {
|
|
391
|
-
sessionLastActivity.set(sid, Date.now());
|
|
392
|
-
};
|
|
393
|
-
/** Sweep expired sessions (called periodically) */
|
|
394
|
-
const sweepExpiredSessions = () => {
|
|
395
|
-
const now = Date.now();
|
|
396
|
-
for (const [sid, lastActivity] of sessionLastActivity) {
|
|
397
|
-
if (now - lastActivity > SESSION_TIMEOUT_MS && transports.has(sid)) {
|
|
398
|
-
logger.info('Expiring idle HTTP session', {
|
|
399
|
-
module: 'McpServer',
|
|
400
|
-
sessionId: sid,
|
|
401
|
-
idleMinutes: Math.round((now - lastActivity) / 60_000),
|
|
402
|
-
});
|
|
403
|
-
const t = transports.get(sid);
|
|
404
|
-
if (t) {
|
|
405
|
-
void t.close();
|
|
406
|
-
}
|
|
407
|
-
transports.delete(sid);
|
|
408
|
-
sessionLastActivity.delete(sid);
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
};
|
|
412
|
-
// Start session timeout sweep (runs every 5 minutes)
|
|
413
|
-
const sessionSweepTimer = setInterval(sweepExpiredSessions, SESSION_SWEEP_INTERVAL_MS);
|
|
414
|
-
// POST /mcp - Handle JSON-RPC requests
|
|
415
|
-
app.post('/mcp', (req, res) => {
|
|
416
|
-
const sessionId = req.headers['mcp-session-id'];
|
|
417
|
-
void (async () => {
|
|
418
|
-
try {
|
|
419
|
-
let httpTransport;
|
|
420
|
-
if (sessionId && transports.has(sessionId)) {
|
|
421
|
-
// Reuse existing transport and refresh session activity
|
|
422
|
-
touchSession(sessionId);
|
|
423
|
-
httpTransport = transports.get(sessionId);
|
|
424
|
-
}
|
|
425
|
-
else if (sessionId === undefined && isInitializeRequest(req.body)) {
|
|
426
|
-
// New initialization request - create transport
|
|
427
|
-
const newTransport = new StreamableHTTPServerTransport({
|
|
428
|
-
sessionIdGenerator: () => randomUUID(),
|
|
429
|
-
onsessioninitialized: (sid) => {
|
|
430
|
-
logger.info('HTTP session initialized', {
|
|
431
|
-
module: 'McpServer',
|
|
432
|
-
sessionId: sid,
|
|
433
|
-
});
|
|
434
|
-
transports.set(sid, newTransport);
|
|
435
|
-
touchSession(sid);
|
|
436
|
-
},
|
|
437
|
-
});
|
|
438
|
-
// Clean up on transport close
|
|
439
|
-
newTransport.onclose = () => {
|
|
440
|
-
const sid = newTransport.sessionId;
|
|
441
|
-
if (sid !== undefined && transports.has(sid)) {
|
|
442
|
-
logger.info('HTTP transport closed', {
|
|
443
|
-
module: 'McpServer',
|
|
444
|
-
sessionId: sid,
|
|
445
|
-
});
|
|
446
|
-
transports.delete(sid);
|
|
447
|
-
sessionLastActivity.delete(sid);
|
|
448
|
-
}
|
|
449
|
-
};
|
|
450
|
-
// Connect transport to server before handling request
|
|
451
|
-
await server.connect(newTransport);
|
|
452
|
-
await newTransport.handleRequest(req, res, req.body);
|
|
453
|
-
return;
|
|
454
|
-
}
|
|
455
|
-
else {
|
|
456
|
-
// Invalid request - no session ID or not initialization
|
|
457
|
-
res.status(400).json({
|
|
458
|
-
jsonrpc: '2.0',
|
|
459
|
-
error: {
|
|
460
|
-
code: -32000,
|
|
461
|
-
message: 'Bad Request: No valid session ID provided',
|
|
462
|
-
},
|
|
463
|
-
id: null,
|
|
464
|
-
});
|
|
465
|
-
return;
|
|
466
|
-
}
|
|
467
|
-
// Handle request with existing transport
|
|
468
|
-
if (httpTransport !== undefined) {
|
|
469
|
-
await httpTransport.handleRequest(req, res, req.body);
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
catch (error) {
|
|
473
|
-
logger.error('Error handling MCP request', {
|
|
474
|
-
module: 'McpServer',
|
|
475
|
-
error: error instanceof Error ? error.message : String(error),
|
|
476
|
-
});
|
|
477
|
-
if (!res.headersSent) {
|
|
478
|
-
res.status(500).json({
|
|
479
|
-
jsonrpc: '2.0',
|
|
480
|
-
error: { code: -32603, message: 'Internal server error' },
|
|
481
|
-
id: null,
|
|
482
|
-
});
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
})();
|
|
486
|
-
});
|
|
487
|
-
// GET /mcp - SSE stream for server-to-client notifications
|
|
488
|
-
app.get('/mcp', (req, res) => {
|
|
489
|
-
const sessionId = req.headers['mcp-session-id'];
|
|
490
|
-
if (sessionId === undefined || !transports.has(sessionId)) {
|
|
491
|
-
res.status(400).send('Invalid or missing session ID');
|
|
492
|
-
return;
|
|
493
|
-
}
|
|
494
|
-
// Refresh session activity on SSE reconnect
|
|
495
|
-
touchSession(sessionId);
|
|
496
|
-
const lastEventId = req.headers['last-event-id'];
|
|
497
|
-
if (lastEventId !== undefined) {
|
|
498
|
-
logger.debug('Client reconnecting with Last-Event-ID', {
|
|
499
|
-
module: 'McpServer',
|
|
500
|
-
sessionId,
|
|
501
|
-
lastEventId,
|
|
502
|
-
});
|
|
503
|
-
}
|
|
504
|
-
const httpTransport = transports.get(sessionId);
|
|
505
|
-
if (httpTransport !== undefined) {
|
|
506
|
-
void httpTransport.handleRequest(req, res);
|
|
507
|
-
}
|
|
508
|
-
});
|
|
509
|
-
// DELETE /mcp - Session termination
|
|
510
|
-
app.delete('/mcp', (req, res) => {
|
|
511
|
-
const sessionId = req.headers['mcp-session-id'];
|
|
512
|
-
if (sessionId === undefined || !transports.has(sessionId)) {
|
|
513
|
-
res.status(400).send('Invalid or missing session ID');
|
|
514
|
-
return;
|
|
515
|
-
}
|
|
516
|
-
logger.info('Session termination requested', {
|
|
517
|
-
module: 'McpServer',
|
|
518
|
-
sessionId,
|
|
519
|
-
});
|
|
520
|
-
const httpTransport = transports.get(sessionId);
|
|
521
|
-
if (httpTransport !== undefined) {
|
|
522
|
-
void httpTransport.handleRequest(req, res);
|
|
523
|
-
}
|
|
524
|
-
});
|
|
525
|
-
// Start HTTP server
|
|
526
|
-
const httpServer = app.listen(port, host, () => {
|
|
527
|
-
logger.info('MCP server started on HTTP (stateful)', {
|
|
528
|
-
module: 'McpServer',
|
|
529
|
-
port,
|
|
530
|
-
host,
|
|
531
|
-
endpoint: `http://${host}:${port}/mcp`,
|
|
532
|
-
});
|
|
533
|
-
});
|
|
534
|
-
// Keep process alive - httpServer keeps the event loop active
|
|
535
|
-
// but we also ensure it doesn't close prematurely
|
|
536
|
-
httpServer.on('close', () => {
|
|
537
|
-
logger.info('HTTP server closed', { module: 'McpServer' });
|
|
538
|
-
});
|
|
539
|
-
// Handle shutdown for HTTP - must be registered before blocking await
|
|
540
|
-
process.on('SIGINT', () => {
|
|
541
|
-
logger.info('Shutting down HTTP server...', { module: 'McpServer' });
|
|
542
|
-
void (async () => {
|
|
543
|
-
// Close all active transports
|
|
544
|
-
for (const [sessionId, httpTransport] of transports) {
|
|
545
|
-
try {
|
|
546
|
-
logger.debug('Closing transport', { module: 'McpServer', sessionId });
|
|
547
|
-
await httpTransport.close();
|
|
548
|
-
}
|
|
549
|
-
catch (error) {
|
|
550
|
-
logger.error('Error closing transport', {
|
|
551
|
-
module: 'McpServer',
|
|
552
|
-
sessionId,
|
|
553
|
-
error: error instanceof Error ? error.message : String(error),
|
|
554
|
-
});
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
transports.clear();
|
|
558
|
-
sessionLastActivity.clear();
|
|
559
|
-
clearInterval(sessionSweepTimer);
|
|
560
|
-
httpServer.close();
|
|
561
|
-
db.close();
|
|
562
|
-
logger.info('Shutdown complete', { module: 'McpServer' });
|
|
563
|
-
process.exit(0);
|
|
564
|
-
})();
|
|
565
|
-
});
|
|
566
|
-
// sessionSweepTimer keeps the event loop active (no additional heartbeat needed)
|
|
567
|
-
}
|
|
568
319
|
}
|
|
569
320
|
}
|
|
570
321
|
export { SqliteAdapter };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpServer.js","sourceRoot":"","sources":["../../src/server/McpServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AAErF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAA;AAClG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EACH,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GAEnB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAE1D,0DAA0D;AAC1D,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAEzC,iDAAiD;AACjD,MAAM,yBAAyB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAc/C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAsB;IACrD,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAA;IAEvE,yCAAyC;IACzC,MAAM,EAAE,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;IACpC,MAAM,EAAE,CAAC,UAAU,EAAE,CAAA;IACrB,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;IAEpE,6EAA6E;IAC7E,MAAM,aAAa,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAA;IACrD,MAAM,CAAC,IAAI,CAAC,qDAAqD,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;IAE3F,uCAAuC;IACvC,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;QAClF,MAAM,aAAa,CAAC,UAAU,EAAE,CAAA;QAChC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QAClD,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;YAC3C,MAAM,EAAE,WAAW;YACnB,cAAc,EAAE,KAAK;SACxB,CAAC,CAAA;IACN,CAAC;IAED,gCAAgC;IAChC,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAA;IACtC,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE;QAC1C,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE;KACpC,CAAC,CAAA;IAEF,oBAAoB;IACpB,IAAI,YAAY,GAA4B,IAAI,CAAA;IAChD,IAAI,UAAU,EAAE,CAAC;QACb,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;QAC1C,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC/B,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC;SAC1C,CAAC,CAAA;IACN,CAAC;SAAM,CAAC;QACJ,YAAY,GAAG,oBAAoB,EAAE,CAAA;QACrC,IAAI,YAAY,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAChC,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC;aAC1C,CAAC,CAAA;QACN,CAAC;IACL,CAAC;IAED,uDAAuD;IACvD,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAChC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAE5B,kDAAkD;IAClD,MAAM,aAAa,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAC5C,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC;YACI,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;YACvB,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;YACrC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;YACrC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;SACpC;QACH,CAAC,CAAC,SAAS,CAAA;IAEf,mFAAmF;IACnF,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAA;IACpF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAsB,CAAC,IAAI,CAAC,CAAC,CAAA;IAE/E,6FAA6F;IAC7F,MAAM,YAAY,GAAG,oBAAoB,CACrC,YAAY,EAAE,YAAY,IAAI,YAAY,EAC1C,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAChB,MAAM,GAAG,GAAG,CAAwD,CAAA;QACpE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAA;IACzE,CAAC,CAAC,EACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACd,MAAM,MAAM,GAAG,CAA2C,CAAA;QAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAA;IACjE,CAAC,CAAC,EACF,WAAW,CACd,CAAA;IAED,uDAAuD;IACvD,MAAM,MAAM,GAAG,IAAI,SAAS,CACxB;QACI,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;KACvB,EACD;QACI,YAAY,EAAE;YACV,OAAO,EAAE,EAAE;SACd;QACD,YAAY;KACf,CACJ,CAAA;IAED,mDAAmD;IACnD,MAAM,KAAK,GAAG,YAAY;QACtB,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,oBAAoB,EAAE,CAAC;QAC7E,CAAC,CAAC,QAAQ,CAAA;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,IAOf,CAAA;QAED,mDAAmD;QACnD,MAAM,WAAW,GAA4B;YACzC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;SACzC,CAAA;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACtB,WAAW,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,WAAW,CAAA;QACpD,CAAC;QAED,6DAA6D;QAC7D,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACvB,WAAW,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,YAAY,CAAA;QACtD,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACtB,WAAW,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,WAAW,CAAA;QACpD,CAAC;QAED,uDAAuD;QACvD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,WAAW,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAA;QACxC,CAAC;QAED,mEAAmE;QACnE,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAErD,MAAM,CAAC,YAAY,CACf,OAAO,CAAC,IAAI,EACZ,WAIC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAClB,IAAI,CAAC;gBACD,oDAAoD;gBACpD,0EAA0E;gBAC1E,MAAM,SAAS,GAAG,KAAwD,CAAA;gBAC1E,MAAM,aAAa,GAAG,SAAS,EAAE,KAAK,EAAE,aAAa,CAAA;gBACrD,MAAM,eAAe,GACjB,aAAa,KAAK,SAAS;oBACvB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE;oBAC1C,CAAC,CAAC,SAAS,CAAA;gBAEnB,MAAM,MAAM,GAAG,MAAM,QAAQ,CACzB,OAAO,CAAC,IAAI,EACZ,IAA+B,EAC/B,EAAE,EACF,aAAa,EACb,MAAM,EACN,EAAE,oBAAoB,EAAE,EACxB,eAAe,CAClB,CAAA;gBAED,yDAAyD;gBACzD,kEAAkE;gBAClE,gFAAgF;gBAChF,IAAI,eAAe,EAAE,CAAC;oBAClB,OAAO;wBACH,OAAO,EAAE;4BACL;gCACI,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;6BACxC;yBACJ;wBACD,iBAAiB,EAAE,MAAiC;qBACvD,CAAA;gBACL,CAAC;gBAED,iCAAiC;gBACjC,OAAO;oBACH,OAAO,EAAE;wBACL;4BACI,IAAI,EAAE,MAAe;4BACrB,IAAI,EACA,OAAO,MAAM,KAAK,QAAQ;gCACtB,CAAC,CAAC,MAAM;gCACR,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;yBAC5C;qBACJ;iBACJ,CAAA;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO;oBACH,OAAO,EAAE;wBACL;4BACI,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;yBAC3E;qBACJ;oBACD,OAAO,EAAE,IAAI;iBAChB,CAAA;YACL,CAAC;QACL,CAAC,CACJ,CAAA;IACL,CAAC;IAED,qEAAqE;IACrE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,QAMd,CAAA;QAED,iEAAiE;QACjE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QAE3C,IAAI,UAAU,EAAE,CAAC;YACb,6CAA6C;YAC7C,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACjC,MAAM,CAAC,GAAG,EACV,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,gCAAgC;aACvD,CAAA;YACD,MAAM,CAAC,gBAAgB,CACnB,MAAM,CAAC,IAAI,EACX,QAAQ,EACR;gBACI,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;gBACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,kBAAkB;gBAC/C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnD,EACD,KAAK,EAAE,GAAQ,EAAE,UAAqB,EAAE,EAAE;gBACtC,MAAM,MAAM,GAAG,MAAM,YAAY,CAC7B,GAAG,CAAC,IAAI,EACR,EAAE,EACF,aAAa,EACb,YAAY,EACZ,MAAM,CACT,CAAA;gBACD,MAAM,OAAO,GACT,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;oBAC3B,CAAC,CAAC,MAAM,CAAC,IAAI;oBACb,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBAC9C,OAAO;oBACH,QAAQ,EAAE;wBACN;4BACI,GAAG,EAAE,GAAG,CAAC,IAAI;4BACb,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,kBAAkB;4BAC/C,IAAI,EAAE,OAAO;4BACb,iDAAiD;4BACjD,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACrE;qBACJ;iBACJ,CAAA;YACL,CAAC,CACJ,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,gBAAgB,CACnB,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,GAAG,EACV;gBACI,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;gBACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,kBAAkB;gBAC/C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnD,EACD,KAAK,EAAE,GAAQ,EAAE,EAAE;gBACf,MAAM,MAAM,GAAG,MAAM,YAAY,CAC7B,GAAG,CAAC,IAAI,EACR,EAAE,EACF,aAAa,EACb,YAAY,EACZ,MAAM,CACT,CAAA;gBACD,MAAM,OAAO,GACT,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;oBAC3B,CAAC,CAAC,MAAM,CAAC,IAAI;oBACb,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBAC9C,OAAO;oBACH,QAAQ,EAAE;wBACN;4BACI,GAAG,EAAE,GAAG,CAAC,IAAI;4BACb,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,kBAAkB;4BAC/C,IAAI,EAAE,OAAO;4BACb,iDAAiD;4BACjD,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACrE;qBACJ;iBACJ,CAAA;YACL,CAAC,CACJ,CAAA;QACL,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,MAKjB,CAAA;QAED,qDAAqD;QACrD,MAAM,QAAQ,GAA8B,EAAE,CAAA;QAC9C,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YACtB,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gBACpC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;oBACd,GAAG,CAAC,QAAQ,KAAK,IAAI;wBACjB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;wBACtC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YAC7D,CAAC;QACL,CAAC;QAED,MAAM,CAAC,cAAc,CACjB,SAAS,CAAC,IAAI,EACd;YACI,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,EAAE;YACxC,UAAU,EAAE,QAAQ;YACpB,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,EACD,CAAC,YAAY,EAAE,EAAE;YACb,MAAM,IAAI,GAAG,YAAsC,CAAA;YACnD,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;YACxD,iCAAiC;YACjC,MAAM,MAAM,GAAG;gBACX,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACxC,IAAI,EAAE,CAAC,CAAC,IAA4B;oBACpC,OAAO,EAAE,CAAC,CAAC,OAAyC;iBACvD,CAAC,CAAC;aACN,CAAA;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAClC,CAAC,CACJ,CAAA;IACL,CAAC;IAED,kCAAkC;IAClC,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,cAAc,GAAG,IAAI,oBAAoB,EAAE,CAAA;QACjD,MAAM,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QACpC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;QAEnE,4BAA4B;QAC5B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;YACxD,EAAE,CAAC,KAAK,EAAE,CAAA;YACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;IACN,CAAC;SAAM,CAAC;QACJ,kCAAkC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAA;QACjC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAA;QACxC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAA;QAC9E,MAAM,GAAG,GAAY,OAAO,EAAE,CAAA;QAE9B,8BAA8B;QAC9B,GAAG,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,GAAa,EAAE,IAAgB,EAAE,EAAE;YACvD,GAAG,CAAC,SAAS,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAA;YAClD,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;YACxC,IAAI,EAAE,CAAA;QACV,CAAC,CAAC,CAAA;QAEF,kEAAkE;QAClE,2EAA2E;QAC3E,GAAG,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,IAAgB,EAAE,EAAE;YACtD,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAA;YACxD,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,4BAA4B,CAAC,CAAA;YAC3E,GAAG,CAAC,SAAS,CACT,8BAA8B,EAC9B,2EAA2E,CAC9E,CAAA;YACD,GAAG,CAAC,SAAS,CAAC,+BAA+B,EAAE,gBAAgB,CAAC,CAAA;YAEhE,oCAAoC;YACpC,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;gBACrB,OAAM;YACV,CAAC;YAED,IAAI,EAAE,CAAA;QACV,CAAC,CAAC,CAAA;QAEF,sEAAsE;QACtE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QAEvC,uEAAuE;QACvE,6DAA6D;QAC7D,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,IAAgB,EAAE,EAAE;YAC9D,wDAAwD;YACxD,oCAAoC;YACpC,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;gBACrB,OAAM;YACV,CAAC;YAED,8CAA8C;YAC9C,IAAI,EAAE,CAAA;QACV,CAAC,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,yBAAyB;YACzB,6EAA6E;YAC7E,MAAM,kBAAkB,GAAG,IAAI,6BAA6B,CAAC;gBACzD,kBAAkB,EAAE,SAAS;gBAC7B,kBAAkB,EAAE,IAAI;aAC3B,CAAC,CAAA;YAEF,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;YACxC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;YAErE,4EAA4E;YAC5E,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;gBACnD,KAAK,kBAAkB,CAAC,aAAa,CACjC,GAAiC,EACjC,GAAgC,EAChC,GAAG,CAAC,IAAe,CACtB,CAAA;YACL,CAAC,CAAC,CAAA;YAEF,iDAAiD;YACjD,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAa,EAAE,GAAa,EAAQ,EAAE;gBACnD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACH,IAAI,EAAE,CAAC,KAAK;wBACZ,OAAO,EAAE,+CAA+C;qBAC3D;oBACD,EAAE,EAAE,IAAI;iBACX,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;YAEF,mEAAmE;YACnE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAa,EAAE,GAAa,EAAQ,EAAE;gBACtD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;YACzB,CAAC,CAAC,CAAA;YAEF,oBAAoB;YACpB,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;gBAC3C,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE;oBAClD,MAAM,EAAE,WAAW;oBACnB,IAAI;oBACJ,IAAI;oBACJ,QAAQ,EAAE,UAAU,IAAI,IAAI,IAAI,MAAM;iBACzC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;YAEF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACxB,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;YAC9D,CAAC,CAAC,CAAA;YAEF,kBAAkB;YAClB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACtB,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;gBACpE,KAAK,CAAC,KAAK,IAAI,EAAE;oBACb,IAAI,CAAC;wBACD,MAAM,kBAAkB,CAAC,KAAK,EAAE,CAAA;oBACpC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;4BACpC,MAAM,EAAE,WAAW;4BACnB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;yBAChE,CAAC,CAAA;oBACN,CAAC;oBACD,UAAU,CAAC,KAAK,EAAE,CAAA;oBAClB,EAAE,CAAC,KAAK,EAAE,CAAA;oBACV,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;oBACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnB,CAAC,CAAC,EAAE,CAAA;YACR,CAAC,CAAC,CAAA;YAEF,qBAAqB;YACrB,WAAW,CACP,GAAG,EAAE;gBACD,sCAAsC;YAC1C,CAAC,EACD,IAAI,GAAG,EAAE,GAAG,EAAE,CACjB,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,wBAAwB;YACxB,6DAA6D;YAE7D,0DAA0D;YAC1D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyC,CAAA;YACnE,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAA;YAErD,uDAAuD;YACvD,MAAM,YAAY,GAAG,CAAC,GAAW,EAAQ,EAAE;gBACvC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YAC5C,CAAC,CAAA;YAED,mDAAmD;YACnD,MAAM,oBAAoB,GAAG,GAAS,EAAE;gBACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBACtB,KAAK,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,mBAAmB,EAAE,CAAC;oBACpD,IAAI,GAAG,GAAG,YAAY,GAAG,kBAAkB,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACjE,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;4BACtC,MAAM,EAAE,WAAW;4BACnB,SAAS,EAAE,GAAG;4BACd,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,MAAM,CAAC;yBACzD,CAAC,CAAA;wBACF,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;wBAC7B,IAAI,CAAC,EAAE,CAAC;4BACJ,KAAK,CAAC,CAAC,KAAK,EAAE,CAAA;wBAClB,CAAC;wBACD,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;wBACtB,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBACnC,CAAC;gBACL,CAAC;YACL,CAAC,CAAA;YAED,qDAAqD;YACrD,MAAM,iBAAiB,GAAG,WAAW,CAAC,oBAAoB,EAAE,yBAAyB,CAAC,CAAA;YAEtF,uCAAuC;YACvC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;gBACnD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAA;gBAErE,KAAK,CAAC,KAAK,IAAI,EAAE;oBACb,IAAI,CAAC;wBACD,IAAI,aAAwD,CAAA;wBAE5D,IAAI,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;4BACzC,wDAAwD;4BACxD,YAAY,CAAC,SAAS,CAAC,CAAA;4BACvB,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;wBAC7C,CAAC;6BAAM,IAAI,SAAS,KAAK,SAAS,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;4BAClE,gDAAgD;4BAChD,MAAM,YAAY,GAAG,IAAI,6BAA6B,CAAC;gCACnD,kBAAkB,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;gCACtC,oBAAoB,EAAE,CAAC,GAAW,EAAE,EAAE;oCAClC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;wCACpC,MAAM,EAAE,WAAW;wCACnB,SAAS,EAAE,GAAG;qCACjB,CAAC,CAAA;oCACF,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;oCACjC,YAAY,CAAC,GAAG,CAAC,CAAA;gCACrB,CAAC;6BACJ,CAAC,CAAA;4BAEF,8BAA8B;4BAC9B,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE;gCACxB,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAA;gCAClC,IAAI,GAAG,KAAK,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oCAC3C,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;wCACjC,MAAM,EAAE,WAAW;wCACnB,SAAS,EAAE,GAAG;qCACjB,CAAC,CAAA;oCACF,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oCACtB,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gCACnC,CAAC;4BACL,CAAC,CAAA;4BAED,sDAAsD;4BACtD,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;4BAClC,MAAM,YAAY,CAAC,aAAa,CAC5B,GAAiC,EACjC,GAAgC,EAChC,GAAG,CAAC,IAAe,CACtB,CAAA;4BACD,OAAM;wBACV,CAAC;6BAAM,CAAC;4BACJ,wDAAwD;4BACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCACjB,OAAO,EAAE,KAAK;gCACd,KAAK,EAAE;oCACH,IAAI,EAAE,CAAC,KAAK;oCACZ,OAAO,EAAE,2CAA2C;iCACvD;gCACD,EAAE,EAAE,IAAI;6BACX,CAAC,CAAA;4BACF,OAAM;wBACV,CAAC;wBAED,yCAAyC;wBACzC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;4BAC9B,MAAM,aAAa,CAAC,aAAa,CAC7B,GAAiC,EACjC,GAAgC,EAChC,GAAG,CAAC,IAAe,CACtB,CAAA;wBACL,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE;4BACvC,MAAM,EAAE,WAAW;4BACnB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;yBAChE,CAAC,CAAA;wBACF,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;4BACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCACjB,OAAO,EAAE,KAAK;gCACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE;gCACzD,EAAE,EAAE,IAAI;6BACX,CAAC,CAAA;wBACN,CAAC;oBACL,CAAC;gBACL,CAAC,CAAC,EAAE,CAAA;YACR,CAAC,CAAC,CAAA;YAEF,2DAA2D;YAC3D,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;gBAClD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAA;gBAErE,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;oBACrD,OAAM;gBACV,CAAC;gBAED,4CAA4C;gBAC5C,YAAY,CAAC,SAAS,CAAC,CAAA;gBAEvB,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;gBAChD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE;wBACnD,MAAM,EAAE,WAAW;wBACnB,SAAS;wBACT,WAAW;qBACd,CAAC,CAAA;gBACN,CAAC;gBAED,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBAC/C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBAC9B,KAAK,aAAa,CAAC,aAAa,CAC5B,GAAiC,EACjC,GAAgC,CACnC,CAAA;gBACL,CAAC;YACL,CAAC,CAAC,CAAA;YAEF,oCAAoC;YACpC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;gBACrD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAA;gBAErE,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;oBACrD,OAAM;gBACV,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;oBACzC,MAAM,EAAE,WAAW;oBACnB,SAAS;iBACZ,CAAC,CAAA;gBAEF,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBAC/C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBAC9B,KAAK,aAAa,CAAC,aAAa,CAC5B,GAAiC,EACjC,GAAgC,CACnC,CAAA;gBACL,CAAC;YACL,CAAC,CAAC,CAAA;YAEF,oBAAoB;YACpB,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;gBAC3C,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE;oBACjD,MAAM,EAAE,WAAW;oBACnB,IAAI;oBACJ,IAAI;oBACJ,QAAQ,EAAE,UAAU,IAAI,IAAI,IAAI,MAAM;iBACzC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;YAEF,8DAA8D;YAC9D,kDAAkD;YAClD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACxB,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;YAC9D,CAAC,CAAC,CAAA;YAEF,sEAAsE;YACtE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACtB,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;gBAEpE,KAAK,CAAC,KAAK,IAAI,EAAE;oBACb,8BAA8B;oBAC9B,KAAK,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,UAAU,EAAE,CAAC;wBAClD,IAAI,CAAC;4BACD,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAA;4BACrE,MAAM,aAAa,CAAC,KAAK,EAAE,CAAA;wBAC/B,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACb,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;gCACpC,MAAM,EAAE,WAAW;gCACnB,SAAS;gCACT,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;6BAChE,CAAC,CAAA;wBACN,CAAC;oBACL,CAAC;oBACD,UAAU,CAAC,KAAK,EAAE,CAAA;oBAClB,mBAAmB,CAAC,KAAK,EAAE,CAAA;oBAC3B,aAAa,CAAC,iBAAiB,CAAC,CAAA;oBAEhC,UAAU,CAAC,KAAK,EAAE,CAAA;oBAClB,EAAE,CAAC,KAAK,EAAE,CAAA;oBACV,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;oBACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnB,CAAC,CAAC,EAAE,CAAA;YACR,CAAC,CAAC,CAAA;YAEF,iFAAiF;QACrF,CAAC;IACL,CAAC;AACL,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"McpServer.js","sourceRoot":"","sources":["../../src/server/McpServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Journal MCP Server - Scheduler
|
|
3
|
+
*
|
|
4
|
+
* Lightweight in-process scheduler for periodic maintenance jobs.
|
|
5
|
+
* Only meaningful for HTTP/SSE transport (long-lived server processes).
|
|
6
|
+
* Uses setInterval for simplicity — no external dependencies.
|
|
7
|
+
*/
|
|
8
|
+
import type { SqliteAdapter } from '../database/SqliteAdapter.js';
|
|
9
|
+
import type { VectorSearchManager } from '../vector/VectorSearchManager.js';
|
|
10
|
+
/** Scheduler configuration options */
|
|
11
|
+
export interface SchedulerOptions {
|
|
12
|
+
/** Automated backup interval in minutes (0 = disabled) */
|
|
13
|
+
backupIntervalMinutes: number;
|
|
14
|
+
/** Max backups to retain during automated cleanup */
|
|
15
|
+
keepBackups: number;
|
|
16
|
+
/** Database optimize interval in minutes (0 = disabled) */
|
|
17
|
+
vacuumIntervalMinutes: number;
|
|
18
|
+
/** Vector index rebuild interval in minutes (0 = disabled) */
|
|
19
|
+
rebuildIndexIntervalMinutes: number;
|
|
20
|
+
}
|
|
21
|
+
/** Status of a single scheduled job */
|
|
22
|
+
export interface JobStatus {
|
|
23
|
+
name: string;
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
intervalMinutes: number;
|
|
26
|
+
lastRun: string | null;
|
|
27
|
+
lastResult: 'success' | 'error' | null;
|
|
28
|
+
lastError: string | null;
|
|
29
|
+
nextRun: string | null;
|
|
30
|
+
runCount: number;
|
|
31
|
+
}
|
|
32
|
+
/** Overall scheduler status */
|
|
33
|
+
export interface SchedulerStatus {
|
|
34
|
+
active: boolean;
|
|
35
|
+
jobs: JobStatus[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Scheduler — runs periodic maintenance jobs for long-lived server processes.
|
|
39
|
+
*
|
|
40
|
+
* Jobs:
|
|
41
|
+
* - **backup**: Exports database to timestamped file, then prunes old backups.
|
|
42
|
+
* - **vacuum**: Runs `PRAGMA optimize` and flushes database to disk.
|
|
43
|
+
* - **rebuild-index**: Rebuilds vector search index from all entries.
|
|
44
|
+
*/
|
|
45
|
+
export declare class Scheduler {
|
|
46
|
+
private readonly options;
|
|
47
|
+
private readonly db;
|
|
48
|
+
private readonly vectorManager;
|
|
49
|
+
private readonly timers;
|
|
50
|
+
private started;
|
|
51
|
+
constructor(options: SchedulerOptions, db: SqliteAdapter, vectorManager?: VectorSearchManager);
|
|
52
|
+
/**
|
|
53
|
+
* Start all enabled scheduled jobs.
|
|
54
|
+
* Each job runs on its own interval and failures are isolated.
|
|
55
|
+
*/
|
|
56
|
+
start(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Stop all scheduled jobs and clear timers.
|
|
59
|
+
* Safe to call multiple times.
|
|
60
|
+
*/
|
|
61
|
+
stop(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Get the current status of all scheduled jobs.
|
|
64
|
+
*/
|
|
65
|
+
getStatus(): SchedulerStatus;
|
|
66
|
+
/**
|
|
67
|
+
* Schedule a recurring job.
|
|
68
|
+
*/
|
|
69
|
+
private scheduleJob;
|
|
70
|
+
/**
|
|
71
|
+
* Execute a job with error isolation and status tracking.
|
|
72
|
+
*/
|
|
73
|
+
private executeJob;
|
|
74
|
+
/**
|
|
75
|
+
* Backup job: export database to file, then cleanup old backups.
|
|
76
|
+
*/
|
|
77
|
+
private runBackup;
|
|
78
|
+
/**
|
|
79
|
+
* Vacuum/optimize job: run PRAGMA optimize and flush to disk.
|
|
80
|
+
*
|
|
81
|
+
* Note: sql.js uses an in-memory database. PRAGMA optimize updates
|
|
82
|
+
* internal statistics, and flushSave() ensures the disk file is current.
|
|
83
|
+
* A full VACUUM on sql.js only compacts the in-memory representation.
|
|
84
|
+
*/
|
|
85
|
+
private runVacuumOptimize;
|
|
86
|
+
/**
|
|
87
|
+
* Rebuild index job: full vector index rebuild from database entries.
|
|
88
|
+
*/
|
|
89
|
+
private runRebuildIndex;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=Scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Scheduler.d.ts","sourceRoot":"","sources":["../../src/server/Scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAO3E,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC7B,0DAA0D;IAC1D,qBAAqB,EAAE,MAAM,CAAA;IAC7B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB,2DAA2D;IAC3D,qBAAqB,EAAE,MAAM,CAAA;IAC7B,8DAA8D;IAC9D,2BAA2B,EAAE,MAAM,CAAA;CACtC;AAED,uCAAuC;AACvC,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,SAAS,GAAG,OAAO,GAAG,IAAI,CAAA;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,+BAA+B;AAC/B,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,SAAS,EAAE,CAAA;CACpB;AAiBD;;;;;;;GAOG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,mBAAmB;IAM7F;;;OAGG;IACH,KAAK,IAAI,IAAI;IAyCb;;;OAGG;IACH,IAAI,IAAI,IAAI;IAaZ;;OAEG;IACH,SAAS,IAAI,eAAe;IAsB5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAkBnB;;OAEG;YACW,UAAU;IAyBxB;;OAEG;YACW,SAAS;IAsBvB;;;;;;OAMG;YACW,iBAAiB;IAY/B;;OAEG;YACW,eAAe;CAYhC"}
|