memory-journal-mcp 6.2.1 → 7.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/README.md +157 -95
- package/dist/{chunk-BI4ZNSKA.js → chunk-2BJHLTYP.js} +1406 -446
- package/dist/chunk-ARLH46WS.js +1659 -0
- package/dist/{chunk-N6EBIDN7.js → chunk-SBNQ7MXZ.js} +631 -1793
- package/dist/cli.js +40 -3
- package/dist/github-integration-PDRLXKGM.js +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +3 -2
- package/dist/tools-FFFGXIKN.js +3 -0
- package/package.json +15 -14
- package/dist/tools-WPRY5MJ6.js +0 -2
package/dist/cli.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { VERSION, createServer } from './chunk-
|
|
2
|
-
import {
|
|
1
|
+
import { VERSION, createServer } from './chunk-SBNQ7MXZ.js';
|
|
2
|
+
import { DEFAULT_AUDIT_LOG_MAX_SIZE_BYTES } from './chunk-2BJHLTYP.js';
|
|
3
3
|
import './chunk-OKOVZ5QE.js';
|
|
4
|
+
import { logger } from './chunk-ARLH46WS.js';
|
|
4
5
|
import { Command } from 'commander';
|
|
5
6
|
import * as fs from 'fs';
|
|
6
7
|
|
|
@@ -42,6 +43,16 @@ program.name("memory-journal-mcp").description("Project context management for A
|
|
|
42
43
|
"--oauth-clock-tolerance <seconds>",
|
|
43
44
|
"OAuth clock tolerance in seconds (default: 60)",
|
|
44
45
|
"60"
|
|
46
|
+
).option(
|
|
47
|
+
"--audit-log <path>",
|
|
48
|
+
'Enable audit logging to the specified JSONL file path, or "stderr" for container mode (env: AUDIT_LOG_PATH)'
|
|
49
|
+
).option("--audit-redact", "Redact tool arguments from audit entries (env: AUDIT_REDACT)").option(
|
|
50
|
+
"--audit-reads",
|
|
51
|
+
"Enable audit logging for read-scoped tool calls (default: off, env: AUDIT_READS)"
|
|
52
|
+
).option(
|
|
53
|
+
"--audit-log-max-size <bytes>",
|
|
54
|
+
"Maximum audit log file size in bytes before rotation (default: 10485760 / 10MB, env: AUDIT_LOG_MAX_SIZE)",
|
|
55
|
+
String(DEFAULT_AUDIT_LOG_MAX_SIZE_BYTES)
|
|
45
56
|
).option(
|
|
46
57
|
"--instruction-level <level>",
|
|
47
58
|
"Briefing depth: essential, standard, full (env: INSTRUCTION_LEVEL)",
|
|
@@ -96,6 +107,17 @@ program.name("memory-journal-mcp").description("Project context management for A
|
|
|
96
107
|
...host ? { host } : {}
|
|
97
108
|
});
|
|
98
109
|
try {
|
|
110
|
+
const auditLogPath = options.auditLog ?? process.env["AUDIT_LOG_PATH"];
|
|
111
|
+
const auditConfig = auditLogPath ? {
|
|
112
|
+
enabled: true,
|
|
113
|
+
logPath: auditLogPath,
|
|
114
|
+
redact: options.auditRedact ?? process.env["AUDIT_REDACT"] === "true",
|
|
115
|
+
auditReads: options.auditReads ?? process.env["AUDIT_READS"] === "true",
|
|
116
|
+
maxSizeBytes: parseInt(
|
|
117
|
+
process.env["AUDIT_LOG_MAX_SIZE"] ?? options.auditLogMaxSize,
|
|
118
|
+
10
|
|
119
|
+
)
|
|
120
|
+
} : void 0;
|
|
99
121
|
await createServer({
|
|
100
122
|
transport: options.transport,
|
|
101
123
|
port: parseInt(options.port, 10),
|
|
@@ -122,6 +144,20 @@ program.name("memory-journal-mcp").description("Project context management for A
|
|
|
122
144
|
oauthAudience: options.oauthAudience ?? process.env["OAUTH_AUDIENCE"],
|
|
123
145
|
oauthJwksUri: options.oauthJwksUri ?? process.env["OAUTH_JWKS_URI"],
|
|
124
146
|
oauthClockTolerance: parseInt(options.oauthClockTolerance, 10),
|
|
147
|
+
// Project Registry
|
|
148
|
+
projectRegistry: (() => {
|
|
149
|
+
const raw = process.env["PROJECT_REGISTRY"];
|
|
150
|
+
if (!raw) return void 0;
|
|
151
|
+
try {
|
|
152
|
+
return JSON.parse(raw);
|
|
153
|
+
} catch (e) {
|
|
154
|
+
const errName = e instanceof Error ? e.message : String(e);
|
|
155
|
+
throw new Error(
|
|
156
|
+
`Failed to parse PROJECT_REGISTRY environment variable. Must be valid JSON: ${errName}`,
|
|
157
|
+
{ cause: e }
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
})(),
|
|
125
161
|
// Briefing configuration
|
|
126
162
|
briefingConfig: {
|
|
127
163
|
entryCount: parseInt(
|
|
@@ -149,7 +185,8 @@ program.name("memory-journal-mcp").description("Project context management for A
|
|
|
149
185
|
workflowSummary: options.workflowSummary ?? process.env["MEMORY_JOURNAL_WORKFLOW_SUMMARY"] ?? void 0,
|
|
150
186
|
defaultProjectNumber: options.defaultProject ? parseInt(options.defaultProject, 10) : process.env["DEFAULT_PROJECT_NUMBER"] ? parseInt(process.env["DEFAULT_PROJECT_NUMBER"], 10) : void 0
|
|
151
187
|
},
|
|
152
|
-
instructionLevel: options.instructionLevel !== "standard" ? options.instructionLevel : process.env["INSTRUCTION_LEVEL"] ?? "standard"
|
|
188
|
+
instructionLevel: options.instructionLevel !== "standard" ? options.instructionLevel : process.env["INSTRUCTION_LEVEL"] ?? "standard",
|
|
189
|
+
auditConfig
|
|
153
190
|
});
|
|
154
191
|
} catch (error) {
|
|
155
192
|
logger.error("Failed to start server", {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { GitHubIntegration } from './chunk-ARLH46WS.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -266,6 +266,10 @@ interface ToolDefinition {
|
|
|
266
266
|
/** Tool handler function */
|
|
267
267
|
handler: (params: unknown) => unknown;
|
|
268
268
|
}
|
|
269
|
+
interface ProjectRegistryEntry {
|
|
270
|
+
path: string;
|
|
271
|
+
project_number?: number;
|
|
272
|
+
}
|
|
269
273
|
/**
|
|
270
274
|
* Resource definition for MCP
|
|
271
275
|
*/
|
|
@@ -318,6 +322,8 @@ interface ServerConfig {
|
|
|
318
322
|
toolFilter?: string;
|
|
319
323
|
/** Default GitHub Project number for auto-assignment */
|
|
320
324
|
defaultProjectNumber?: number;
|
|
325
|
+
/** Project registry mapping dynamic repo IDs to local paths and kanban boards */
|
|
326
|
+
projectRegistry?: Record<string, ProjectRegistryEntry>;
|
|
321
327
|
/** Enable semantic search */
|
|
322
328
|
enableSemanticSearch: boolean;
|
|
323
329
|
/** Sentence transformer model name */
|
|
@@ -395,6 +401,10 @@ interface IDatabaseAdapter {
|
|
|
395
401
|
prNumber?: number;
|
|
396
402
|
prStatus?: string;
|
|
397
403
|
workflowRunId?: number;
|
|
404
|
+
tags?: string[];
|
|
405
|
+
entryType?: EntryType;
|
|
406
|
+
startDate?: string;
|
|
407
|
+
endDate?: string;
|
|
398
408
|
}): JournalEntry[];
|
|
399
409
|
searchByDateRange(startDate: string, endDate: string, options?: {
|
|
400
410
|
entryType?: EntryType;
|
|
@@ -587,6 +597,22 @@ interface BriefingConfig {
|
|
|
587
597
|
workflowSummary?: string;
|
|
588
598
|
/** Default GitHub Project number for Kanban resources and issue tools (env: DEFAULT_PROJECT_NUMBER) */
|
|
589
599
|
defaultProjectNumber?: number;
|
|
600
|
+
/** Project registry mapping dynamic repo IDs to local paths and kanban boards */
|
|
601
|
+
projectRegistry?: Record<string, ProjectRegistryEntry>;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
/** Audit log configuration */
|
|
605
|
+
interface AuditConfig {
|
|
606
|
+
/** Master switch — false means no interceptor is created */
|
|
607
|
+
enabled: boolean;
|
|
608
|
+
/** Absolute path to the JSONL output file, or "stderr" for container mode */
|
|
609
|
+
logPath: string;
|
|
610
|
+
/** When true, tool arguments are omitted from entries */
|
|
611
|
+
redact: boolean;
|
|
612
|
+
/** When true, read-scoped tools are also logged (default: false) */
|
|
613
|
+
auditReads: boolean;
|
|
614
|
+
/** Maximum log file size in bytes before rotation (default: 10MB). 0 = no rotation. */
|
|
615
|
+
maxSizeBytes: number;
|
|
590
616
|
}
|
|
591
617
|
|
|
592
618
|
/**
|
|
@@ -616,7 +642,9 @@ interface ServerOptions {
|
|
|
616
642
|
oauthJwksUri?: string;
|
|
617
643
|
oauthClockTolerance?: number;
|
|
618
644
|
briefingConfig?: BriefingConfig;
|
|
645
|
+
projectRegistry?: Record<string, ProjectRegistryEntry>;
|
|
619
646
|
instructionLevel?: 'essential' | 'standard' | 'full';
|
|
647
|
+
auditConfig?: AuditConfig;
|
|
620
648
|
}
|
|
621
649
|
/**
|
|
622
650
|
* Create and start the MCP server
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { VERSION, createServer } from './chunk-SBNQ7MXZ.js';
|
|
2
|
+
export { META_GROUPS, TOOL_GROUPS, calculateTokenSavings, filterTools, getAllToolNames, getFilterSummary, getToolFilterFromEnv, getToolGroup, isToolEnabled, parseToolFilter } from './chunk-2BJHLTYP.js';
|
|
3
3
|
import './chunk-OKOVZ5QE.js';
|
|
4
|
+
export { logger } from './chunk-ARLH46WS.js';
|
|
4
5
|
|
|
5
6
|
// src/types/index.ts
|
|
6
7
|
var DEFAULT_CONFIG = {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memory-journal-mcp",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"description": "Project context management for AI-assisted development - Persistent knowledge graphs and intelligent context recall across fragmented AI threads",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"check": "npm run lint && npm run typecheck",
|
|
24
24
|
"test": "vitest run",
|
|
25
25
|
"test:watch": "vitest",
|
|
26
|
-
"test:coverage": "vitest run --coverage",
|
|
26
|
+
"test:coverage": "vitest run --coverage && npx tsx scripts/update-badges.ts",
|
|
27
27
|
"bench": "vitest bench --run",
|
|
28
28
|
"test:e2e": "playwright test",
|
|
29
29
|
"generate:instructions": "node scripts/generate-server-instructions.ts"
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"node": ">=24.0.0"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@huggingface/transformers": "^
|
|
61
|
+
"@huggingface/transformers": "^4.0.1",
|
|
62
62
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
63
63
|
"@octokit/graphql": "^9.0.3",
|
|
64
64
|
"@octokit/rest": "^22.0.1",
|
|
@@ -66,24 +66,24 @@
|
|
|
66
66
|
"commander": "^14.0.3",
|
|
67
67
|
"express": "^5.2.1",
|
|
68
68
|
"jose": "^6.2.1",
|
|
69
|
-
"simple-git": "^3.
|
|
69
|
+
"simple-git": "^3.35.2",
|
|
70
70
|
"sqlite-vec": "^0.1.7-alpha.2",
|
|
71
71
|
"zod": "^4.3.6"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
74
|
"@eslint/js": "^10.0.1",
|
|
75
|
-
"esbuild": "^0.
|
|
76
|
-
"@playwright/test": "^1.
|
|
75
|
+
"esbuild": "^0.28.0",
|
|
76
|
+
"@playwright/test": "^1.59.1",
|
|
77
77
|
"@types/better-sqlite3": "^7.6.13",
|
|
78
78
|
"@types/express": "^5.0.6",
|
|
79
|
-
"@types/node": "^25.
|
|
80
|
-
"@vitest/coverage-v8": "^4.
|
|
81
|
-
"eslint": "^10.0
|
|
79
|
+
"@types/node": "^25.5.2",
|
|
80
|
+
"@vitest/coverage-v8": "^4.1.3",
|
|
81
|
+
"eslint": "^10.2.0",
|
|
82
82
|
"globals": "^17.4.0",
|
|
83
83
|
"tsup": "^8.5.1",
|
|
84
|
-
"typescript": "^
|
|
84
|
+
"typescript": "^6.0.2",
|
|
85
85
|
"typescript-eslint": "^8.57.0",
|
|
86
|
-
"vitest": "^4.
|
|
86
|
+
"vitest": "^4.1.3"
|
|
87
87
|
},
|
|
88
88
|
"overrides": {
|
|
89
89
|
"axios": "^1.13.6",
|
|
@@ -92,8 +92,9 @@
|
|
|
92
92
|
"onnxruntime-web": "npm:empty-npm-package@1.0.0",
|
|
93
93
|
"sharp": "npm:empty-npm-package@1.0.0",
|
|
94
94
|
"zod": "$zod",
|
|
95
|
-
"minimatch": "10.2.
|
|
96
|
-
"tar": "7.5.
|
|
97
|
-
"tmp": "^0.2.5"
|
|
95
|
+
"minimatch": "10.2.5",
|
|
96
|
+
"tar": "7.5.13",
|
|
97
|
+
"tmp": "^0.2.5",
|
|
98
|
+
"vite": "^8.0.5"
|
|
98
99
|
}
|
|
99
100
|
}
|
package/dist/tools-WPRY5MJ6.js
DELETED