@opvs-ai/mcp 2.9.0 → 2.11.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/dist/memory.d.ts CHANGED
@@ -9,6 +9,7 @@ type SearchArgs = {
9
9
  };
10
10
  type ContextDependencies = {
11
11
  repoRoot: (cwd: string) => string;
12
+ repoName: (root: string) => string | undefined;
12
13
  readServices: (root: string) => string;
13
14
  isFile: (path: string) => boolean;
14
15
  getMemory: (path: string) => Promise<unknown>;
@@ -47,8 +48,20 @@ export declare const MEMORY_TOOLS: ({
47
48
  char_budget?: undefined;
48
49
  entry_id?: undefined;
49
50
  reason?: undefined;
51
+ project_id?: undefined;
52
+ node_ids?: undefined;
53
+ paths?: undefined;
54
+ depth?: undefined;
55
+ kinds?: undefined;
56
+ direction?: undefined;
57
+ hub_cap?: undefined;
58
+ limit?: undefined;
59
+ text?: undefined;
60
+ k?: undefined;
61
+ threshold?: undefined;
50
62
  };
51
63
  required?: undefined;
64
+ additionalProperties?: undefined;
52
65
  };
53
66
  } | {
54
67
  name: string;
@@ -87,8 +100,20 @@ export declare const MEMORY_TOOLS: ({
87
100
  pinned_first?: undefined;
88
101
  entry_id?: undefined;
89
102
  reason?: undefined;
103
+ project_id?: undefined;
104
+ node_ids?: undefined;
105
+ paths?: undefined;
106
+ depth?: undefined;
107
+ kinds?: undefined;
108
+ direction?: undefined;
109
+ hub_cap?: undefined;
110
+ limit?: undefined;
111
+ text?: undefined;
112
+ k?: undefined;
113
+ threshold?: undefined;
90
114
  };
91
115
  required: string[];
116
+ additionalProperties?: undefined;
92
117
  };
93
118
  } | {
94
119
  name: string;
@@ -112,10 +137,186 @@ export declare const MEMORY_TOOLS: ({
112
137
  include_retired?: undefined;
113
138
  cwd?: undefined;
114
139
  char_budget?: undefined;
140
+ project_id?: undefined;
141
+ node_ids?: undefined;
142
+ paths?: undefined;
143
+ depth?: undefined;
144
+ kinds?: undefined;
145
+ direction?: undefined;
146
+ hub_cap?: undefined;
147
+ limit?: undefined;
148
+ text?: undefined;
149
+ k?: undefined;
150
+ threshold?: undefined;
115
151
  };
116
152
  required: string[];
153
+ additionalProperties?: undefined;
154
+ };
155
+ } | {
156
+ name: string;
157
+ description: string;
158
+ inputSchema: {
159
+ type: string;
160
+ properties: {
161
+ project_id: {
162
+ type: string;
163
+ description: string;
164
+ };
165
+ node_ids: {
166
+ type: string;
167
+ items: {
168
+ type: string;
169
+ };
170
+ maxItems: number;
171
+ description: string;
172
+ };
173
+ paths: {
174
+ type: string;
175
+ items: {
176
+ type: string;
177
+ };
178
+ maxItems: number;
179
+ description: string;
180
+ };
181
+ depth: {
182
+ type: string;
183
+ minimum: number;
184
+ maximum: number;
185
+ description: string;
186
+ };
187
+ kinds: {
188
+ type: string;
189
+ items: {
190
+ type: string;
191
+ enum: string[];
192
+ };
193
+ description: string;
194
+ };
195
+ direction: {
196
+ type: string;
197
+ enum: string[];
198
+ description: string;
199
+ };
200
+ hub_cap: {
201
+ type: string;
202
+ minimum: number;
203
+ maximum: number;
204
+ description: string;
205
+ };
206
+ limit: {
207
+ type: string;
208
+ minimum: number;
209
+ maximum: number;
210
+ description: string;
211
+ };
212
+ q?: undefined;
213
+ scope?: undefined;
214
+ type?: undefined;
215
+ anchor?: undefined;
216
+ pinned_first?: undefined;
217
+ include_retired?: undefined;
218
+ cwd?: undefined;
219
+ char_budget?: undefined;
220
+ entry_id?: undefined;
221
+ reason?: undefined;
222
+ text?: undefined;
223
+ k?: undefined;
224
+ threshold?: undefined;
225
+ };
226
+ required: string[];
227
+ additionalProperties: boolean;
228
+ };
229
+ } | {
230
+ name: string;
231
+ description: string;
232
+ inputSchema: {
233
+ type: string;
234
+ properties: {
235
+ text: {
236
+ type: string;
237
+ minLength: number;
238
+ description: string;
239
+ };
240
+ type: {
241
+ type: string;
242
+ description: string;
243
+ };
244
+ k: {
245
+ type: string;
246
+ minimum: number;
247
+ maximum: number;
248
+ description: string;
249
+ };
250
+ threshold: {
251
+ type: string;
252
+ minimum: number;
253
+ maximum: number;
254
+ description: string;
255
+ };
256
+ q?: undefined;
257
+ scope?: undefined;
258
+ anchor?: undefined;
259
+ pinned_first?: undefined;
260
+ include_retired?: undefined;
261
+ cwd?: undefined;
262
+ char_budget?: undefined;
263
+ entry_id?: undefined;
264
+ reason?: undefined;
265
+ project_id?: undefined;
266
+ node_ids?: undefined;
267
+ paths?: undefined;
268
+ depth?: undefined;
269
+ kinds?: undefined;
270
+ direction?: undefined;
271
+ hub_cap?: undefined;
272
+ limit?: undefined;
273
+ };
274
+ required: string[];
275
+ additionalProperties: boolean;
276
+ };
277
+ } | {
278
+ name: string;
279
+ description: string;
280
+ inputSchema: {
281
+ type: string;
282
+ properties: {
283
+ project_id: {
284
+ type: string;
285
+ description: string;
286
+ };
287
+ node_ids: {
288
+ type: string;
289
+ items: {
290
+ type: string;
291
+ };
292
+ maxItems: number;
293
+ description: string;
294
+ };
295
+ q?: undefined;
296
+ scope?: undefined;
297
+ type?: undefined;
298
+ anchor?: undefined;
299
+ pinned_first?: undefined;
300
+ include_retired?: undefined;
301
+ cwd?: undefined;
302
+ char_budget?: undefined;
303
+ entry_id?: undefined;
304
+ reason?: undefined;
305
+ paths?: undefined;
306
+ depth?: undefined;
307
+ kinds?: undefined;
308
+ direction?: undefined;
309
+ hub_cap?: undefined;
310
+ limit?: undefined;
311
+ text?: undefined;
312
+ k?: undefined;
313
+ threshold?: undefined;
314
+ };
315
+ required: string[];
316
+ additionalProperties: boolean;
117
317
  };
118
318
  })[];
319
+ type MemoryPost = (path: string, body?: unknown) => Promise<unknown>;
119
320
  export declare function handleMemorySearch(args: SearchArgs): Promise<ToolResult>;
120
321
  export declare function handleMemoryContext(args: {
121
322
  cwd: string;
@@ -129,5 +330,8 @@ export declare function handleMemoryContext(args: {
129
330
  export declare function handleMemoryRequestPin(args: {
130
331
  entry_id: string;
131
332
  reason: string;
132
- }): Promise<ToolResult>;
333
+ }, getMemory?: (path: string) => Promise<unknown>): Promise<ToolResult>;
334
+ export declare function handleMemoryNear(args: Record<string, unknown>, postMemory?: MemoryPost): Promise<ToolResult>;
335
+ export declare function handleMemorySimilar(args: Record<string, unknown>, postMemory?: MemoryPost): Promise<ToolResult>;
336
+ export declare function handleMemoryAnchors(args: Record<string, unknown>, postMemory?: MemoryPost): Promise<ToolResult>;
133
337
  export {};
package/dist/memory.js CHANGED
@@ -2,13 +2,20 @@
2
2
  import { execFileSync } from "node:child_process";
3
3
  import { readFileSync, statSync } from "node:fs";
4
4
  import { isAbsolute, relative, resolve } from "node:path";
5
- import { err, getJson, ok } from "./http.js";
5
+ import { OPVS_MEMORY_REPOSITORY, parseServicePatterns, repositoryNameFromRemote, serviceForPath, } from "@opvs-ai/cli/memory-services.js";
6
+ import { brandScopeMismatch } from "./brand-scope.js";
7
+ import { err, getJson, ok, postJson, readFailure } from "./http.js";
6
8
  const DEFAULT_CONTEXT_DEPENDENCIES = {
7
9
  repoRoot: (cwd) => execFileSync("git", ["rev-parse", "--show-toplevel"], {
8
10
  cwd,
9
11
  encoding: "utf8",
10
12
  stdio: ["ignore", "pipe", "ignore"],
11
13
  }).trim(),
14
+ repoName: (root) => repositoryNameFromRemote(execFileSync("git", ["remote", "get-url", "origin"], {
15
+ cwd: root,
16
+ encoding: "utf8",
17
+ stdio: ["ignore", "pipe", "ignore"],
18
+ })),
12
19
  readServices: (root) => readFileSync(resolve(root, "memory", "services.yaml"), "utf8"),
13
20
  isFile: (path) => statSync(path).isFile(),
14
21
  getMemory: getJson,
@@ -55,7 +62,7 @@ export const MEMORY_TOOLS = [
55
62
  {
56
63
  name: "memory_request_pin",
57
64
  description: "Prepare a human-curator pin request for an existing typed-memory entry. Read-only: " +
58
- "this verifies the entry through search and returns a proposal; it never sets a pin, " +
65
+ "this verifies the entry by exact ID and returns a proposal; it never sets a pin, " +
59
66
  "because pins require an authenticated human dashboard session.",
60
67
  inputSchema: {
61
68
  type: "object",
@@ -66,7 +73,66 @@ export const MEMORY_TOOLS = [
66
73
  required: ["entry_id", "reason"],
67
74
  },
68
75
  },
76
+ {
77
+ name: "memory_near",
78
+ description: "Use before changing code to read lessons on seed files or nodes and their nearby code graph.",
79
+ inputSchema: {
80
+ type: "object",
81
+ properties: {
82
+ project_id: { type: "string", description: "Project whose code graph is being walked." },
83
+ node_ids: { type: "array", items: { type: "string" }, maxItems: 50, description: "Stable code-node UUID seeds." },
84
+ paths: { type: "array", items: { type: "string" }, maxItems: 50, description: "Repository-relative file seeds." },
85
+ depth: { type: "integer", minimum: 0, maximum: 3, description: "Maximum hops from a seed; defaults to 2." },
86
+ kinds: { type: "array", items: { type: "string", enum: ["import", "call", "contains"] }, description: "Allowed edge kinds." },
87
+ direction: { type: "string", enum: ["in", "out", "both"], description: "Edge direction to walk." },
88
+ hub_cap: { type: "integer", minimum: 1, maximum: 200, description: "Neighbour count at which a hub is damped." },
89
+ limit: { type: "integer", minimum: 1, maximum: 100, description: "Maximum lessons returned." },
90
+ },
91
+ required: ["project_id"],
92
+ additionalProperties: false,
93
+ },
94
+ },
95
+ {
96
+ name: "memory_similar",
97
+ description: "Use before writing a lesson to find existing near-duplicate typed-memory entries.",
98
+ inputSchema: {
99
+ type: "object",
100
+ properties: {
101
+ text: { type: "string", minLength: 1, description: "Lesson draft to compare." },
102
+ type: { type: "string", description: "Optional typed-entry kind filter." },
103
+ k: { type: "integer", minimum: 1, maximum: 10, description: "Maximum matches; defaults to 3." },
104
+ threshold: { type: "number", minimum: -1, maximum: 1, description: "Optional cosine-similarity floor." },
105
+ },
106
+ required: ["text"],
107
+ additionalProperties: false,
108
+ },
109
+ },
110
+ {
111
+ name: "memory_anchors",
112
+ description: "Use when you already hold stable code-node ids to read the lessons attached to those nodes.",
113
+ inputSchema: {
114
+ type: "object",
115
+ properties: {
116
+ project_id: { type: "string", description: "Project whose code nodes are being looked up." },
117
+ node_ids: { type: "array", items: { type: "string" }, maxItems: 1000, description: "Stable code-node UUIDs." },
118
+ },
119
+ required: ["project_id", "node_ids"],
120
+ additionalProperties: false,
121
+ },
122
+ },
69
123
  ];
124
+ function memoryBody(args, fields) {
125
+ const body = {};
126
+ for (const field of fields) {
127
+ if (args[field] !== undefined)
128
+ body[field] = args[field];
129
+ }
130
+ return body;
131
+ }
132
+ function memoryScopeError(tool, args) {
133
+ const mismatch = brandScopeMismatch("@opvs-ai", args);
134
+ return mismatch ? err(`${tool} refused: ${mismatch}`) : undefined;
135
+ }
70
136
  function searchPath(args) {
71
137
  const query = new URLSearchParams();
72
138
  for (const key of ["q", "scope", "type", "anchor"]) {
@@ -80,84 +146,6 @@ function searchPath(args) {
80
146
  }
81
147
  return `/api/v1/memory/entries/search?${query.toString()}`;
82
148
  }
83
- function unquote(value) {
84
- const trimmed = value.trim();
85
- if (trimmed.length >= 2
86
- && ((trimmed.startsWith('"') && trimmed.endsWith('"'))
87
- || (trimmed.startsWith("'") && trimmed.endsWith("'")))) {
88
- return trimmed.slice(1, -1);
89
- }
90
- return trimmed;
91
- }
92
- function parseServicePatterns(registry) {
93
- const patterns = [];
94
- let service;
95
- let inCodePaths = false;
96
- for (const line of registry.split(/\r?\n/)) {
97
- const serviceMatch = line.match(/^ {2}- name:\s*(\S+)\s*$/);
98
- if (serviceMatch) {
99
- service = unquote(serviceMatch[1]);
100
- inCodePaths = false;
101
- continue;
102
- }
103
- if (!service)
104
- continue;
105
- const planningMatch = line.match(/^ {4}planning_dir:\s*(.+?)\s*$/);
106
- if (planningMatch) {
107
- const planningDir = unquote(planningMatch[1].replace(/\s+#.*$/, ""));
108
- if (planningDir !== "null")
109
- patterns.push({ service, pattern: planningDir });
110
- continue;
111
- }
112
- if (/^ {4}code_paths:\s*$/.test(line)) {
113
- inCodePaths = true;
114
- continue;
115
- }
116
- if (/^ {4}\S/.test(line)) {
117
- inCodePaths = false;
118
- continue;
119
- }
120
- if (inCodePaths) {
121
- const pathMatch = line.match(/^ {6}-\s+(.+?)\s*$/);
122
- if (pathMatch) {
123
- const pattern = unquote(pathMatch[1].replace(/\s+#.*$/, ""));
124
- if (pattern)
125
- patterns.push({ service, pattern });
126
- }
127
- }
128
- }
129
- return patterns;
130
- }
131
- function globRegex(pattern) {
132
- const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*+/g, ".*");
133
- return new RegExp(`^${escaped}${pattern.endsWith("/") ? "" : "$"}`);
134
- }
135
- function serviceForPath(path, patterns) {
136
- const normalized = path.replace(/\\/g, "/").replace(/^\.\//, "");
137
- let best;
138
- for (const candidate of patterns) {
139
- const matches = candidate.pattern.includes("*")
140
- ? globRegex(candidate.pattern).test(normalized)
141
- : candidate.pattern.endsWith("/")
142
- ? normalized.startsWith(candidate.pattern)
143
- : normalized === candidate.pattern;
144
- if (!matches)
145
- continue;
146
- if (!best) {
147
- best = candidate;
148
- continue;
149
- }
150
- const candidateWildcard = candidate.pattern.indexOf("*");
151
- const bestWildcard = best.pattern.indexOf("*");
152
- const candidatePrefix = candidateWildcard === -1 ? candidate.pattern.length : candidateWildcard;
153
- const bestPrefix = bestWildcard === -1 ? best.pattern.length : bestWildcard;
154
- if (candidatePrefix > bestPrefix
155
- || (candidatePrefix === bestPrefix && candidate.pattern.length > best.pattern.length)) {
156
- best = candidate;
157
- }
158
- }
159
- return best?.service;
160
- }
161
149
  function entries(payload) {
162
150
  if (Array.isArray(payload))
163
151
  return payload;
@@ -207,8 +195,14 @@ function normalizeAnchor(anchor, root, deps) {
207
195
  }
208
196
  function contextSearchArgs(args, deps) {
209
197
  let root;
198
+ let repo;
199
+ let patterns;
210
200
  try {
211
201
  root = deps.repoRoot(args.cwd);
202
+ repo = deps.repoName(root)?.toLowerCase() ?? "";
203
+ if (repo !== OPVS_MEMORY_REPOSITORY)
204
+ return undefined;
205
+ patterns = parseServicePatterns(deps.readServices(root));
212
206
  }
213
207
  catch {
214
208
  return undefined;
@@ -225,22 +219,20 @@ function contextSearchArgs(args, deps) {
225
219
  if (!result.scope) {
226
220
  const rel = relative(root, args.cwd).replace(/\\/g, "/");
227
221
  if (rel) {
228
- const patterns = parseServicePatterns(deps.readServices(root));
229
222
  const service = serviceForPath(`${rel.replace(/\/$/, "")}/`, patterns)
230
223
  ?? serviceForPath(rel, patterns);
231
224
  if (service)
232
225
  result.scope = `service:${service}`;
233
226
  }
234
227
  }
235
- return result;
228
+ return { searchArgs: result, repo };
236
229
  }
237
230
  export async function handleMemorySearch(args) {
238
231
  try {
239
232
  return ok(await getJson(searchPath(args)));
240
233
  }
241
234
  catch (e) {
242
- const error = e;
243
- return err(`memory_search failed: ${error.status ?? "?"} ${error.detail ?? "unknown"}`);
235
+ return readFailure("memory", "memory_search", e);
244
236
  }
245
237
  }
246
238
  export async function handleMemoryContext(args, dependencies = {}) {
@@ -252,25 +244,28 @@ export async function handleMemoryContext(args, dependencies = {}) {
252
244
  }
253
245
  const deps = { ...DEFAULT_CONTEXT_DEPENDENCIES, ...dependencies };
254
246
  try {
255
- const searchArgs = contextSearchArgs(args, deps);
256
- if (!searchArgs)
247
+ const context = contextSearchArgs(args, deps);
248
+ if (!context)
257
249
  return ok("");
258
- const payload = await deps.getMemory(searchPath(searchArgs));
259
- return ok(boundedContext(entries(payload), budget));
250
+ const payload = await deps.getMemory(searchPath(context.searchArgs));
251
+ const matchingEntries = entries(payload).filter((entry) => typeof entry.repo === "string"
252
+ && repositoryNameFromRemote(entry.repo) === context.repo);
253
+ return ok(boundedContext(matchingEntries, budget));
260
254
  }
261
255
  catch (e) {
262
- const error = e;
263
- return err(`memory_context failed: ${error.status ?? "?"} ${error.detail ?? error.message ?? "unknown"}`);
256
+ return readFailure("memory", "memory_context", e);
264
257
  }
265
258
  }
266
- export async function handleMemoryRequestPin(args) {
259
+ export async function handleMemoryRequestPin(args, getMemory = getJson) {
267
260
  if (!args.entry_id || !args.reason)
268
261
  return err("entry_id and reason are required");
269
262
  try {
270
- const payload = await getJson(searchPath({ q: args.entry_id, pinned_first: true }));
271
- const match = entries(payload).find((entry) => entry.id === args.entry_id || entry.path === args.entry_id);
272
- if (!match)
263
+ const encodedId = args.entry_id.split("/").map(encodeURIComponent).join("/");
264
+ const payload = await getMemory(`/api/v1/memory/entries/${encodedId}`);
265
+ const entry = payload && typeof payload === "object" ? payload : undefined;
266
+ if (!entry || (entry.id !== args.entry_id && entry.path !== args.entry_id)) {
273
267
  return err(`memory entry '${args.entry_id}' was not found`);
268
+ }
274
269
  return ok({
275
270
  request: { entry_id: args.entry_id, reason: args.reason },
276
271
  persisted: false,
@@ -279,8 +274,47 @@ export async function handleMemoryRequestPin(args) {
279
274
  });
280
275
  }
281
276
  catch (e) {
282
- const error = e;
283
- return err(`memory_request_pin failed: ${error.status ?? "?"} ${error.detail ?? "unknown"}`);
277
+ return readFailure("memory", "memory_request_pin", e);
278
+ }
279
+ }
280
+ export async function handleMemoryNear(args, postMemory = postJson) {
281
+ if (!args.project_id)
282
+ return err("project_id is required");
283
+ const scoped = memoryScopeError("memory_near", args);
284
+ if (scoped)
285
+ return scoped;
286
+ try {
287
+ return ok(await postMemory("/api/v1/memory/entries:near", memoryBody(args, ["project_id", "node_ids", "paths", "depth", "kinds", "direction", "hub_cap", "limit"])));
288
+ }
289
+ catch (error) {
290
+ return readFailure("memory", "memory_near", error);
291
+ }
292
+ }
293
+ export async function handleMemorySimilar(args, postMemory = postJson) {
294
+ if (!args.text)
295
+ return err("text is required");
296
+ const scoped = memoryScopeError("memory_similar", args);
297
+ if (scoped)
298
+ return scoped;
299
+ try {
300
+ return ok(await postMemory("/api/v1/memory/entries:similar", memoryBody(args, ["text", "type", "k", "threshold"])));
301
+ }
302
+ catch (error) {
303
+ return readFailure("memory", "memory_similar", error);
304
+ }
305
+ }
306
+ export async function handleMemoryAnchors(args, postMemory = postJson) {
307
+ if (!args.project_id || !Array.isArray(args.node_ids)) {
308
+ return err("project_id and node_ids are required");
309
+ }
310
+ const scoped = memoryScopeError("memory_anchors", args);
311
+ if (scoped)
312
+ return scoped;
313
+ try {
314
+ return ok(await postMemory("/api/v1/memory/anchors:lookup", memoryBody(args, ["project_id", "node_ids"])));
315
+ }
316
+ catch (error) {
317
+ return readFailure("memory", "memory_anchors", error);
284
318
  }
285
319
  }
286
320
  //# sourceMappingURL=memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@opvs-ai/mcp",
3
- "version": "2.9.0",
4
- "description": "OPVS MCP server \u2014 16 tools \u2014 10 always-on (tool_search, tool_help, tool_read, tool_call, tool_pin, tool_list_installed, tool_install, tool_uninstall, whoami, board_as_markdown), sandbox_chat, and the 5 fleet tools (fleet_list, slot_get, slot_health, fleet_logins, slot_order) for the on-demand model. Fits under the ~100-tool cap every MCP client enforces. Routes everything else through tool_call indirection.",
3
+ "version": "2.11.0",
4
+ "description": "OPVS MCP server \u2014 31 tools, including native read-only code-index and lessons-near-code access plus the on-demand marketplace and fleet surfaces. Fits under the ~100-tool cap every MCP client enforces.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "opvs-mcp": "dist/index.js"
@@ -17,6 +17,7 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "@modelcontextprotocol/sdk": "^1.27.1",
20
+ "@opvs-ai/cli": "^0.26.0",
20
21
  "@opvs-ai/core": "^0.4.8",
21
22
  "zod": "^3.23.0"
22
23
  },
@@ -24,7 +25,7 @@
24
25
  "@types/node": "^20.14.0",
25
26
  "tsx": "^4.15.0",
26
27
  "typescript": "^5.5.0",
27
- "vitest": "^3.2.4"
28
+ "vitest": "^4.1.11"
28
29
  },
29
30
  "engines": {
30
31
  "node": ">=18.0.0"