memorix 1.8.3 → 1.8.4
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/CHANGELOG.md +19 -0
- package/dist/cli/index.js +5 -12
- package/dist/index.js +3 -5
- package/dist/memcode-runtime/CHANGELOG.md +19 -0
- package/dist/sdk.js +1 -3
- package/docs/1.8.0-RELEASE-CANDIDATE-SPEC.md +1 -1
- package/docs/API_REFERENCE.md +1 -1
- package/docs/DEVELOPMENT.md +2 -2
- package/docs/README.md +3 -3
- package/package.json +1 -1
- package/plugins/antigravity/memorix/plugin.json +1 -1
- package/plugins/claude/memorix/.claude-plugin/plugin.json +1 -1
- package/plugins/codebuddy/memorix/.codebuddy-plugin/plugin.json +1 -1
- package/plugins/codex/memorix/.codex-plugin/plugin.json +1 -1
- package/plugins/copilot/memorix/plugin.json +1 -1
- package/plugins/gemini/memorix/gemini-extension.json +1 -1
- package/plugins/hermes/memorix/plugin.yaml +1 -1
- package/plugins/omp/memorix/package.json +1 -1
- package/plugins/openclaw/memorix/.codex-plugin/plugin.json +1 -1
- package/plugins/pi/memorix/package.json +1 -1
- package/server.json +2 -2
- package/src/cli/commands/serve-http.ts +2 -7
- package/src/server/mcp-discovery.ts +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [1.8.4] - 2026-08-27
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- **Stateless HTTP MCP requests (#255)** -- clients such as Claude Code that
|
|
11
|
+
send the current protocol header on every request can list and call tools
|
|
12
|
+
without echoing a custom project handle. Durable handles are still created
|
|
13
|
+
on `initialize` and remain available when a client opts into them.
|
|
14
|
+
- **MCP protocol self-description (#257)** -- discovery and HTTP response
|
|
15
|
+
headers now advertise the legacy revisions implemented by the pinned SDK,
|
|
16
|
+
instead of claiming complete support for the newer 2026 revision.
|
|
17
|
+
- **MCP stdio smoke contract** -- the release smoke script now checks the
|
|
18
|
+
truthful advertised revision set after the compatibility fix.
|
|
19
|
+
|
|
20
|
+
### MCP Compatibility
|
|
21
|
+
- The 1.8.4 line supports legacy stateful MCP, versionless stdio tool calls,
|
|
22
|
+
pre-initialize discovery, and the narrow stateless HTTP compatibility path.
|
|
23
|
+
It does not claim full 2026 result metadata, Tasks, subscriptions, or list
|
|
24
|
+
caching support.
|
|
25
|
+
|
|
7
26
|
## [1.8.3] - 2026-08-25
|
|
8
27
|
|
|
9
28
|
### Fixed
|
package/dist/cli/index.js
CHANGED
|
@@ -3232,7 +3232,7 @@ ${import_picocolors.default.gray(m3)} ${s4}
|
|
|
3232
3232
|
|
|
3233
3233
|
// src/cli/version.ts
|
|
3234
3234
|
function getCliVersion() {
|
|
3235
|
-
return true ? "1.8.
|
|
3235
|
+
return true ? "1.8.4" : pkg.version;
|
|
3236
3236
|
}
|
|
3237
3237
|
var init_version = __esm({
|
|
3238
3238
|
"src/cli/version.ts"() {
|
|
@@ -205768,14 +205768,13 @@ var init_tool_profile = __esm({
|
|
|
205768
205768
|
function getMcpServerInfo() {
|
|
205769
205769
|
return {
|
|
205770
205770
|
name: "memorix",
|
|
205771
|
-
version: true ? "1.8.
|
|
205771
|
+
version: true ? "1.8.4" : "1.0.1"
|
|
205772
205772
|
};
|
|
205773
205773
|
}
|
|
205774
205774
|
function createMcpDiscoverResult(capabilities, serverInfo) {
|
|
205775
205775
|
return {
|
|
205776
205776
|
resultType: "complete",
|
|
205777
205777
|
supportedVersions: [
|
|
205778
|
-
MCP_MODERN_PROTOCOL_VERSION,
|
|
205779
205778
|
MCP_LEGACY_PROTOCOL_VERSION,
|
|
205780
205779
|
MCP_OLDEST_LEGACY_PROTOCOL_VERSION
|
|
205781
205780
|
],
|
|
@@ -205792,12 +205791,11 @@ function createMcpDiscoverResult(capabilities, serverInfo) {
|
|
|
205792
205791
|
function createMcpStartupDiscoverResult(serverInfo) {
|
|
205793
205792
|
return createMcpDiscoverResult({ tools: { listChanged: true } }, serverInfo);
|
|
205794
205793
|
}
|
|
205795
|
-
var
|
|
205794
|
+
var MCP_LEGACY_PROTOCOL_VERSION, MCP_OLDEST_LEGACY_PROTOCOL_VERSION, MCP_SERVER_DISCOVER_METHOD, MCP_SERVER_INFO_META_KEY;
|
|
205796
205795
|
var init_mcp_discovery = __esm({
|
|
205797
205796
|
"src/server/mcp-discovery.ts"() {
|
|
205798
205797
|
"use strict";
|
|
205799
205798
|
init_esm_shims();
|
|
205800
|
-
MCP_MODERN_PROTOCOL_VERSION = "2026-07-28";
|
|
205801
205799
|
MCP_LEGACY_PROTOCOL_VERSION = "2025-11-25";
|
|
205802
205800
|
MCP_OLDEST_LEGACY_PROTOCOL_VERSION = "2024-11-05";
|
|
205803
205801
|
MCP_SERVER_DISCOVER_METHOD = "server/discover";
|
|
@@ -269281,7 +269279,7 @@ var init_serve_http = __esm({
|
|
|
269281
269279
|
res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS");
|
|
269282
269280
|
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Mcp-Session-Id, Mcp-Project-Handle, Mcp-Project-Root, Mcp-Stateless, Last-Event-Id");
|
|
269283
269281
|
res.setHeader("Access-Control-Expose-Headers", "Mcp-Session-Id, Mcp-Project-Handle, Mcp-Protocol-Version, Mcp-Method, Mcp-Name");
|
|
269284
|
-
res.setHeader("Mcp-Protocol-Version",
|
|
269282
|
+
res.setHeader("Mcp-Protocol-Version", MCP_SDK_COMPAT_PROTOCOL_VERSION);
|
|
269285
269283
|
res.setHeader("Mcp-Method", req.method || "UNKNOWN");
|
|
269286
269284
|
res.setHeader("Mcp-Name", MCP_SERVER_NAME);
|
|
269287
269285
|
}
|
|
@@ -269295,11 +269293,6 @@ var init_serve_http = __esm({
|
|
|
269295
269293
|
}
|
|
269296
269294
|
const requestedRoot = typeof req.headers["mcp-project-root"] === "string" ? req.headers["mcp-project-root"] : void 0;
|
|
269297
269295
|
const root = persisted?.projectRoot ?? requestedRoot ?? projectRoot;
|
|
269298
|
-
if (!persisted && !isInitializeRequest2(body) && !isServerDiscoverRequest(body)) {
|
|
269299
|
-
res.writeHead(400, { "Content-Type": "application/json" });
|
|
269300
|
-
res.end(JSON.stringify({ jsonrpc: "2.0", error: { code: -32e3, message: "Stateless MCP requests require Mcp-Project-Handle; initialize first." }, id: null }));
|
|
269301
|
-
return;
|
|
269302
|
-
}
|
|
269303
269296
|
const { createMemorixServer: createMemorixServer3 } = await Promise.resolve().then(() => (init_server4(), server_exports2));
|
|
269304
269297
|
const { createProjectBindingController: createProjectBindingController3 } = await Promise.resolve().then(() => (init_request_context(), request_context_exports));
|
|
269305
269298
|
const binding = createProjectBindingController3(root);
|
|
@@ -269326,7 +269319,7 @@ var init_serve_http = __esm({
|
|
|
269326
269319
|
try {
|
|
269327
269320
|
await server.connect(transport);
|
|
269328
269321
|
let effectiveHandle = persisted;
|
|
269329
|
-
if (!effectiveHandle && projectId !== "__unresolved__") {
|
|
269322
|
+
if (!effectiveHandle && projectId !== "__unresolved__" && isInitializeRequest2(body)) {
|
|
269330
269323
|
effectiveHandle = statelessBindingStore.create({
|
|
269331
269324
|
projectId,
|
|
269332
269325
|
projectRoot: root,
|
package/dist/index.js
CHANGED
|
@@ -158121,14 +158121,13 @@ var init_request_context = __esm({
|
|
|
158121
158121
|
function getMcpServerInfo() {
|
|
158122
158122
|
return {
|
|
158123
158123
|
name: "memorix",
|
|
158124
|
-
version: true ? "1.8.
|
|
158124
|
+
version: true ? "1.8.4" : "1.0.1"
|
|
158125
158125
|
};
|
|
158126
158126
|
}
|
|
158127
158127
|
function createMcpDiscoverResult(capabilities, serverInfo) {
|
|
158128
158128
|
return {
|
|
158129
158129
|
resultType: "complete",
|
|
158130
158130
|
supportedVersions: [
|
|
158131
|
-
MCP_MODERN_PROTOCOL_VERSION,
|
|
158132
158131
|
MCP_LEGACY_PROTOCOL_VERSION,
|
|
158133
158132
|
MCP_OLDEST_LEGACY_PROTOCOL_VERSION
|
|
158134
158133
|
],
|
|
@@ -158145,12 +158144,11 @@ function createMcpDiscoverResult(capabilities, serverInfo) {
|
|
|
158145
158144
|
function createMcpStartupDiscoverResult(serverInfo) {
|
|
158146
158145
|
return createMcpDiscoverResult({ tools: { listChanged: true } }, serverInfo);
|
|
158147
158146
|
}
|
|
158148
|
-
var
|
|
158147
|
+
var MCP_LEGACY_PROTOCOL_VERSION, MCP_OLDEST_LEGACY_PROTOCOL_VERSION, MCP_SERVER_DISCOVER_METHOD, MCP_SERVER_INFO_META_KEY;
|
|
158149
158148
|
var init_mcp_discovery = __esm({
|
|
158150
158149
|
"src/server/mcp-discovery.ts"() {
|
|
158151
158150
|
"use strict";
|
|
158152
158151
|
init_esm_shims();
|
|
158153
|
-
MCP_MODERN_PROTOCOL_VERSION = "2026-07-28";
|
|
158154
158152
|
MCP_LEGACY_PROTOCOL_VERSION = "2025-11-25";
|
|
158155
158153
|
MCP_OLDEST_LEGACY_PROTOCOL_VERSION = "2024-11-05";
|
|
158156
158154
|
MCP_SERVER_DISCOVER_METHOD = "server/discover";
|
|
@@ -173233,7 +173231,7 @@ var init_serve_shared = __esm({
|
|
|
173233
173231
|
|
|
173234
173232
|
// src/cli/version.ts
|
|
173235
173233
|
function getCliVersion() {
|
|
173236
|
-
return true ? "1.8.
|
|
173234
|
+
return true ? "1.8.4" : pkg.version;
|
|
173237
173235
|
}
|
|
173238
173236
|
var init_version3 = __esm({
|
|
173239
173237
|
"src/cli/version.ts"() {
|
|
@@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [1.8.4] - 2026-08-27
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- **Stateless HTTP MCP requests (#255)** -- clients such as Claude Code that
|
|
11
|
+
send the current protocol header on every request can list and call tools
|
|
12
|
+
without echoing a custom project handle. Durable handles are still created
|
|
13
|
+
on `initialize` and remain available when a client opts into them.
|
|
14
|
+
- **MCP protocol self-description (#257)** -- discovery and HTTP response
|
|
15
|
+
headers now advertise the legacy revisions implemented by the pinned SDK,
|
|
16
|
+
instead of claiming complete support for the newer 2026 revision.
|
|
17
|
+
- **MCP stdio smoke contract** -- the release smoke script now checks the
|
|
18
|
+
truthful advertised revision set after the compatibility fix.
|
|
19
|
+
|
|
20
|
+
### MCP Compatibility
|
|
21
|
+
- The 1.8.4 line supports legacy stateful MCP, versionless stdio tool calls,
|
|
22
|
+
pre-initialize discovery, and the narrow stateless HTTP compatibility path.
|
|
23
|
+
It does not claim full 2026 result metadata, Tasks, subscriptions, or list
|
|
24
|
+
caching support.
|
|
25
|
+
|
|
7
26
|
## [1.8.3] - 2026-08-25
|
|
8
27
|
|
|
9
28
|
### Fixed
|
package/dist/sdk.js
CHANGED
|
@@ -167809,7 +167809,6 @@ import { z as z625 } from "zod/v4";
|
|
|
167809
167809
|
|
|
167810
167810
|
// src/server/mcp-discovery.ts
|
|
167811
167811
|
init_esm_shims();
|
|
167812
|
-
var MCP_MODERN_PROTOCOL_VERSION = "2026-07-28";
|
|
167813
167812
|
var MCP_LEGACY_PROTOCOL_VERSION = "2025-11-25";
|
|
167814
167813
|
var MCP_OLDEST_LEGACY_PROTOCOL_VERSION = "2024-11-05";
|
|
167815
167814
|
var MCP_SERVER_DISCOVER_METHOD = "server/discover";
|
|
@@ -167817,14 +167816,13 @@ var MCP_SERVER_INFO_META_KEY = "io.modelcontextprotocol/serverInfo";
|
|
|
167817
167816
|
function getMcpServerInfo() {
|
|
167818
167817
|
return {
|
|
167819
167818
|
name: "memorix",
|
|
167820
|
-
version: true ? "1.8.
|
|
167819
|
+
version: true ? "1.8.4" : "1.0.1"
|
|
167821
167820
|
};
|
|
167822
167821
|
}
|
|
167823
167822
|
function createMcpDiscoverResult(capabilities, serverInfo) {
|
|
167824
167823
|
return {
|
|
167825
167824
|
resultType: "complete",
|
|
167826
167825
|
supportedVersions: [
|
|
167827
|
-
MCP_MODERN_PROTOCOL_VERSION,
|
|
167828
167826
|
MCP_LEGACY_PROTOCOL_VERSION,
|
|
167829
167827
|
MCP_OLDEST_LEGACY_PROTOCOL_VERSION
|
|
167830
167828
|
],
|
|
@@ -18,7 +18,7 @@ Status: accepted implementation contract for Memorix 1.8.0.
|
|
|
18
18
|
## Compatibility Contract
|
|
19
19
|
|
|
20
20
|
Memorix preserves the legacy 2025-era initialize contract, including stdio and
|
|
21
|
-
stateful Streamable HTTP with `Mcp-Session-Id`. Memorix 1.8.
|
|
21
|
+
stateful Streamable HTTP with `Mcp-Session-Id`. Memorix 1.8.4 also registers a
|
|
22
22
|
low-level `server/discover` compatibility adapter for the 2026-07-28 request.
|
|
23
23
|
Its `DiscoverResult` is complete for the required identity, versions,
|
|
24
24
|
capabilities, and private zero-TTL cache hint. Versionless `tools/list` and
|
package/docs/API_REFERENCE.md
CHANGED
|
@@ -150,7 +150,7 @@ feedback projection.
|
|
|
150
150
|
### MCP Compatibility
|
|
151
151
|
|
|
152
152
|
Legacy clients use stateful Streamable HTTP with `Mcp-Session-Id` and the
|
|
153
|
-
2025-era `initialize` handshake. The 1.8.
|
|
153
|
+
2025-era `initialize` handshake. The 1.8.4 stdio server starts a bounded
|
|
154
154
|
newline-delimited JSON-RPC gate before project initialization: it answers the
|
|
155
155
|
2026-07-28 `server/discover` request before `initialize`, then replays other
|
|
156
156
|
requests, notifications, and responses in order into the pinned SDK transport.
|
package/docs/DEVELOPMENT.md
CHANGED
|
@@ -13,8 +13,8 @@ Memorix is a TypeScript project built around:
|
|
|
13
13
|
|
|
14
14
|
## Current Development Baseline
|
|
15
15
|
|
|
16
|
-
The current release work targets the **1.8.
|
|
17
|
-
is kept at `1.8.
|
|
16
|
+
The current release work targets the **1.8.4 release line** and package metadata
|
|
17
|
+
is kept at `1.8.4` for this release commit.
|
|
18
18
|
|
|
19
19
|
Contributors should assume the following areas are part of the current release line:
|
|
20
20
|
|
package/docs/README.md
CHANGED
|
@@ -94,7 +94,7 @@ The public docs are organized by user intent:
|
|
|
94
94
|
| 1.2 honest Lite and optional semantic CodeGraph provider contract | [1.2 Provider Quality](1.2.0-PROVIDER-QUALITY.md) |
|
|
95
95
|
| 1.3 long-term memory model, source boundary, and lifecycle | [1.3 Memory Architecture](1.3-MEMORY-ARCHITECTURE.md) |
|
|
96
96
|
| Active context-control work | [1.2.2 Memory Control Plane](1.2.2-MEMORY-CONTROL-PLANE.md) |
|
|
97
|
-
| 1.8.
|
|
97
|
+
| 1.8.4 MCP compatibility acceptance contract | [1.8.0 Release Specification](1.8.0-RELEASE-CANDIDATE-SPEC.md) |
|
|
98
98
|
| Historical cloud sync and multi-agent research | [CLOUD_SYNC_AND_MULTI_AGENT_RESEARCH.md](CLOUD_SYNC_AND_MULTI_AGENT_RESEARCH.md) |
|
|
99
99
|
| Known issues and old roadmap notes | [KNOWN_ISSUES_AND_ROADMAP.md](KNOWN_ISSUES_AND_ROADMAP.md) |
|
|
100
100
|
|
|
@@ -122,7 +122,7 @@ Historical/deep-reference documents may describe older designs. If they conflict
|
|
|
122
122
|
|
|
123
123
|
## Current Product Line
|
|
124
124
|
|
|
125
|
-
The current product line is **1.8.
|
|
125
|
+
The current product line is **1.8.4**. The authoritative acceptance contract is
|
|
126
126
|
[1.8.0 Release Specification](1.8.0-RELEASE-CANDIDATE-SPEC.md).
|
|
127
127
|
The current baseline has:
|
|
128
128
|
|
|
@@ -141,7 +141,7 @@ The current baseline has:
|
|
|
141
141
|
- `~/.memorix/config.toml` and project `memorix.toml` are the user-facing configuration model
|
|
142
142
|
- legacy `memorix.yml`, `.env`, and `config.json` files are still read for compatibility, but new setups should use TOML
|
|
143
143
|
|
|
144
|
-
For MCP compatibility, 1.8.
|
|
144
|
+
For MCP compatibility, 1.8.4 preserves legacy 2025-era initialize and
|
|
145
145
|
stateful Streamable HTTP behavior. `memorix serve` starts a bounded stdio
|
|
146
146
|
startup gate: pre-initialize 2026-07-28 `server/discover` is answered with a
|
|
147
147
|
complete discovery result, and other early JSON-RPC messages replay in order
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memorix",
|
|
3
3
|
"mcpName": "io.github.AVIDS2/memorix",
|
|
4
|
-
"version": "1.8.
|
|
4
|
+
"version": "1.8.4",
|
|
5
5
|
"description": "Local-first shared memory layer for AI coding agents across MCP clients, Git history, reasoning context, and project sessions.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"sideEffects": false,
|
package/server.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"url": "https://github.com/AVIDS2/memorix",
|
|
8
8
|
"source": "github"
|
|
9
9
|
},
|
|
10
|
-
"version": "1.8.
|
|
10
|
+
"version": "1.8.4",
|
|
11
11
|
"websiteUrl": "https://github.com/AVIDS2/memorix#readme",
|
|
12
12
|
"icons": [
|
|
13
13
|
{
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
{
|
|
23
23
|
"registryType": "npm",
|
|
24
24
|
"identifier": "memorix",
|
|
25
|
-
"version": "1.8.
|
|
25
|
+
"version": "1.8.4",
|
|
26
26
|
"runtimeHint": "npx",
|
|
27
27
|
"packageArguments": [
|
|
28
28
|
{
|
|
@@ -413,7 +413,7 @@ export default defineCommand({
|
|
|
413
413
|
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, DELETE, OPTIONS');
|
|
414
414
|
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Accept, Mcp-Session-Id, Mcp-Project-Handle, Mcp-Project-Root, Mcp-Stateless, Last-Event-Id');
|
|
415
415
|
res.setHeader('Access-Control-Expose-Headers', 'Mcp-Session-Id, Mcp-Project-Handle, Mcp-Protocol-Version, Mcp-Method, Mcp-Name');
|
|
416
|
-
res.setHeader('Mcp-Protocol-Version',
|
|
416
|
+
res.setHeader('Mcp-Protocol-Version', MCP_SDK_COMPAT_PROTOCOL_VERSION);
|
|
417
417
|
res.setHeader('Mcp-Method', req.method || 'UNKNOWN');
|
|
418
418
|
res.setHeader('Mcp-Name', MCP_SERVER_NAME);
|
|
419
419
|
}
|
|
@@ -433,11 +433,6 @@ export default defineCommand({
|
|
|
433
433
|
? req.headers['mcp-project-root']
|
|
434
434
|
: undefined;
|
|
435
435
|
const root = persisted?.projectRoot ?? requestedRoot ?? projectRoot;
|
|
436
|
-
if (!persisted && !isInitializeRequest(body) && !isServerDiscoverRequest(body)) {
|
|
437
|
-
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
438
|
-
res.end(JSON.stringify({ jsonrpc: '2.0', error: { code: -32000, message: 'Stateless MCP requests require Mcp-Project-Handle; initialize first.' }, id: null }));
|
|
439
|
-
return;
|
|
440
|
-
}
|
|
441
436
|
|
|
442
437
|
const { createMemorixServer } = await import('../../server.js');
|
|
443
438
|
const { createProjectBindingController } = await import('../../server/request-context.js');
|
|
@@ -465,7 +460,7 @@ export default defineCommand({
|
|
|
465
460
|
try {
|
|
466
461
|
await server.connect(transport);
|
|
467
462
|
let effectiveHandle = persisted;
|
|
468
|
-
if (!effectiveHandle && projectId !== '__unresolved__') {
|
|
463
|
+
if (!effectiveHandle && projectId !== '__unresolved__' && isInitializeRequest(body)) {
|
|
469
464
|
effectiveHandle = statelessBindingStore.create({
|
|
470
465
|
projectId,
|
|
471
466
|
projectRoot: root,
|