@vheins/local-memory-mcp 0.9.15 → 0.9.17

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.
@@ -8,8 +8,8 @@
8
8
  <link rel="preconnect" href="https://fonts.googleapis.com">
9
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
10
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
11
- <script type="module" crossorigin src="/assets/index-RrbRzO3W.js"></script>
12
- <link rel="stylesheet" crossorigin href="/assets/index-IqveMUDr.css">
11
+ <script type="module" crossorigin src="/assets/index-sf-Fpcw9.js"></script>
12
+ <link rel="stylesheet" crossorigin href="/assets/index-CLpwNtkR.css">
13
13
  </head>
14
14
  <body>
15
15
  <div id="app"></div>
@@ -10,7 +10,7 @@ import {
10
10
  createFileSink,
11
11
  listResources,
12
12
  logger
13
- } from "../chunk-67MYUFAJ.js";
13
+ } from "../chunk-M7JX3RQI.js";
14
14
 
15
15
  // src/dashboard/server.ts
16
16
  import express from "express";
@@ -531,7 +531,9 @@ var MemoriesController = class {
531
531
  };
532
532
  await db.withWrite(() => {
533
533
  db.memories.update(id, updates);
534
- db.actions.logAction("update", existing.scope?.repo || attributes.repo || "", { memoryId: id });
534
+ db.actions.logAction("update", existing.scope?.repo || attributes.repo || "", {
535
+ memoryId: id
536
+ });
535
537
  });
536
538
  res.json(jsonApiRes({ message: "Updated" }, "status"));
537
539
  } catch (err) {
@@ -590,10 +592,7 @@ var MemoriesController = class {
590
592
  if (action === "delete") {
591
593
  n = db.memories.bulkDeleteMemories(ids);
592
594
  } else if (action === "update" || action === "archive") {
593
- n = db.memories.bulkUpdateMemories(
594
- ids,
595
- updates || { status: action === "archive" ? "archived" : "active" }
596
- );
595
+ n = db.memories.bulkUpdateMemories(ids, updates || { status: action === "archive" ? "archived" : "active" });
597
596
  } else {
598
597
  throw new Error("Invalid action");
599
598
  }
@@ -977,7 +976,8 @@ var StandardsController = class {
977
976
  const updates = {};
978
977
  if (attributes.title !== void 0) updates.title = attributes.title;
979
978
  if (attributes.content !== void 0) updates.content = attributes.content;
980
- if (attributes.parent_id !== void 0) updates.parent_id = attributes.parent_id === null ? null : attributes.parent_id;
979
+ if (attributes.parent_id !== void 0)
980
+ updates.parent_id = attributes.parent_id === null ? null : attributes.parent_id;
981
981
  if (attributes.context !== void 0) updates.context = attributes.context;
982
982
  if (attributes.version !== void 0) updates.version = attributes.version;
983
983
  if (attributes.language !== void 0) updates.language = attributes.language || null;
@@ -1200,7 +1200,9 @@ function startServer() {
1200
1200
  });
1201
1201
  server.on("error", (err) => {
1202
1202
  if (err.code === "EADDRINUSE") {
1203
- console.log(`${(/* @__PURE__ */ new Date()).toISOString()} DASHBOARD_ALREADY_RUNNING Dashboard already running on port ${PORT}. Exiting.`);
1203
+ console.log(
1204
+ `${(/* @__PURE__ */ new Date()).toISOString()} DASHBOARD_ALREADY_RUNNING Dashboard already running on port ${PORT}. Exiting.`
1205
+ );
1204
1206
  process.exit(0);
1205
1207
  }
1206
1208
  throw err;
@@ -57,7 +57,7 @@ import {
57
57
  toContextSlug,
58
58
  updateSessionFromInitialize,
59
59
  updateSessionRoots
60
- } from "../chunk-67MYUFAJ.js";
60
+ } from "../chunk-M7JX3RQI.js";
61
61
 
62
62
  // src/mcp/server.ts
63
63
  import readline from "readline";
@@ -217,11 +217,7 @@ var McpContentSchema = z.discriminatedUnion("type", [
217
217
  })
218
218
  ]);
219
219
  function createMcpResponse(data, summary, options) {
220
- const {
221
- structuredContentPathHint,
222
- contentSummary,
223
- includeSerializedStructuredContent = false
224
- } = options || {};
220
+ const { structuredContentPathHint, contentSummary, includeSerializedStructuredContent = false } = options || {};
225
221
  void includeSerializedStructuredContent;
226
222
  let finalData = data;
227
223
  if (data && typeof data === "object") {
@@ -521,7 +517,8 @@ async function handleMemorySearch(params, db2, vectors2) {
521
517
  candidates = candidates.map((c) => {
522
518
  let boost = 0;
523
519
  if (currentBranch && c.memory.scope.branch === currentBranch) boost += 0.1;
524
- if (currentPath && c.memory.scope.folder && currentPath.includes(c.memory.scope.folder.toLowerCase())) boost += 0.15;
520
+ if (currentPath && c.memory.scope.folder && currentPath.includes(c.memory.scope.folder.toLowerCase()))
521
+ boost += 0.15;
525
522
  if (currentPath && c.memory.scope.language) {
526
523
  const ext = currentPath.split(".").pop();
527
524
  if (ext && ext.includes(c.memory.scope.language.toLowerCase())) boost += 0.1;
@@ -2163,7 +2160,19 @@ async function handleStandardSearch(params, db2, vectors2) {
2163
2160
  version: validated.version,
2164
2161
  topConfidence: paginatedResults[0]?.confidence
2165
2162
  });
2166
- const COLUMNS = ["code", "id", "title", "context", "language", "scope", "tags", "confidence", "score", "matched_terms", "updated_at"];
2163
+ const COLUMNS = [
2164
+ "code",
2165
+ "id",
2166
+ "title",
2167
+ "context",
2168
+ "language",
2169
+ "scope",
2170
+ "tags",
2171
+ "confidence",
2172
+ "score",
2173
+ "matched_terms",
2174
+ "updated_at"
2175
+ ];
2167
2176
  const rows = paginatedResults.map(({ standard, confidence, finalScore, matchedTerms }) => [
2168
2177
  standard.code ?? "-",
2169
2178
  standard.id,
@@ -2440,7 +2449,12 @@ function createRouter(db2, vectors2, options) {
2440
2449
  };
2441
2450
  }
2442
2451
  case "prompts/get": {
2443
- return getPrompt(params?.name, params?.arguments || {}, db2, getSessionContext?.());
2452
+ return getPrompt(
2453
+ params?.name,
2454
+ params?.arguments || {},
2455
+ db2,
2456
+ getSessionContext?.()
2457
+ );
2444
2458
  }
2445
2459
  case "completion/complete":
2446
2460
  return complete(params, db2, getSessionContext?.());
@@ -27,7 +27,7 @@ agent: Task Executor
27
27
  3. **Claim**: Use `task-claim` with `task_code` or `task_id` before implementation.
28
28
  4. **Start**: `task-update` status to `in_progress` (MUST transition: `pending` → `in_progress`). Add agent/role metadata.
29
29
  5. **Research**: Call `memory-search` (Hybrid Search) and hydrate relevant results with `memory-detail`.
30
- 6. **Standards**: Call `standard-search` for language/stack/repo conventions and apply only relevant standards.
30
+ 6. **Standards (MANDATORY PER TASK)**: Call `standard-search` for every task inside the execution loop before implementation, using the task intent plus inferred language/stack/repo as filters. This is required even for decomposed tasks and sub-agent assignments, so each task execution remains aligned with current standards. Apply only relevant standards and hydrate details when needed.
31
31
  7. **Execute**:
32
32
  - **Trace**: Inspect logic, call sites, and docs. DO NOT infer from file presence.
33
33
  - **Logic**: Implement per description/intent.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vheins/local-memory-mcp",
3
- "version": "0.9.15",
3
+ "version": "0.9.17",
4
4
  "description": "MCP Local Memory Service for coding copilot agents",
5
5
  "mcpName": "io.github.vheins/local-memory-mcp",
6
6
  "type": "module",