Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions src/memory/__tests__/server-version.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { describe, it, expect } from 'vitest';
import { createRequire } from 'node:module';
import path from 'path';
import { fileURLToPath } from 'url';
import { resolvePackageVersion, SERVER_VERSION } from '../version.js';

const packageJson = createRequire(import.meta.url)('../package.json') as { version: string };

describe('server version', () => {
it('uses package.json version for serverInfo', () => {
expect(SERVER_VERSION).toBe(packageJson.version);
expect(resolvePackageVersion()).toBe(packageJson.version);
});

it('resolves package.json from the dist layout', () => {
const distDir = path.join(path.dirname(fileURLToPath(import.meta.url)), '..', 'dist');
const distVersionPath = path.join(distDir, 'version.js');

expect(() => createRequire(distVersionPath)('./version.js')).not.toThrow();
const distModule = createRequire(distVersionPath)('./version.js') as {
SERVER_VERSION: string;
};
expect(distModule.SERVER_VERSION).toBe(packageJson.version);
});
});
4 changes: 2 additions & 2 deletions src/memory/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { z } from "zod";
import { promises as fs } from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
import { SERVER_VERSION } from './version.js';

// Define memory file path using environment variable with fallback
export const defaultMemoryPath = path.join(path.dirname(fileURLToPath(import.meta.url)), 'memory.jsonl');
Expand Down Expand Up @@ -253,10 +254,9 @@ const RelationSchema = z.object({
relationType: z.string().describe("The type of the relation")
});

// The server instance and tools exposed to Claude
const server = new McpServer({
name: "memory-server",
version: "0.6.3",
version: SERVER_VERSION,
});

const RESOURCE_URI = "memory://knowledge-graph";
Expand Down
27 changes: 27 additions & 0 deletions src/memory/version.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { createRequire } from 'node:module';
import path from 'path';
import { fileURLToPath } from 'url';

export function resolvePackageVersion(): string {
const require = createRequire(import.meta.url);
const moduleDir = path.dirname(fileURLToPath(import.meta.url));
const candidates = [
path.join(moduleDir, 'package.json'),
path.join(moduleDir, '..', 'package.json'),
];

for (const candidate of candidates) {
try {
const pkg = require(candidate) as { version?: string };
if (pkg.version) {
return pkg.version;
}
} catch {
// Try the next candidate when running from dist/ or source.
}
}

throw new Error('Could not locate package.json for server version');
}

export const SERVER_VERSION = resolvePackageVersion();
Loading