@radix-ai/ai-memory 0.1.4 → 0.1.5
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/cli/adapters.d.ts.map +1 -1
- package/dist/cli/adapters.js +2 -1
- package/dist/cli/adapters.js.map +1 -1
- package/dist/cli/environment.d.ts +10 -0
- package/dist/cli/environment.d.ts.map +1 -1
- package/dist/cli/environment.js +12 -4
- package/dist/cli/environment.js.map +1 -1
- package/dist/mcp-server/tools/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/index.js +68 -0
- package/dist/mcp-server/tools/index.js.map +1 -1
- package/dist/mcp-server/tools/tool-inspect.d.ts +57 -0
- package/dist/mcp-server/tools/tool-inspect.d.ts.map +1 -0
- package/dist/mcp-server/tools/tool-inspect.js +173 -0
- package/dist/mcp-server/tools/tool-inspect.js.map +1 -0
- package/package.json +1 -1
- package/plugins/ai-memory/skills/desktop-automation/SKILL.md +2 -1
- package/templates/.ai/reference/capability-specs.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/cli/adapters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,qBAAqB,6/BAkBjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,21CAoCxB,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD,qFAAqF;AACrF,wBAAgB,UAAU,IAAI,MAAM,CAoBnC;AA4BD,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/cli/adapters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,qBAAqB,6/BAkBjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,21CAoCxB,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD,qFAAqF;AACrF,wBAAgB,UAAU,IAAI,MAAM,CAoBnC;AA4BD,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqOnD,CAAC;AAIF,eAAO,MAAM,kBAAkB,0vCAwC9B,CAAC;AAGF,eAAO,MAAM,gBAAgB,orBAa5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAiBrB,CAAC;AAIZ,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CA4CrD,CAAC"}
|
package/dist/cli/adapters.js
CHANGED
|
@@ -294,7 +294,8 @@ Only request the permission the task requires.
|
|
|
294
294
|
## Setup
|
|
295
295
|
|
|
296
296
|
- **Cursor/Claude Code/Windsurf/Cline:** Run \`ai-memory install --capability desktop_automation\`
|
|
297
|
-
- **Antigravity:** Add
|
|
297
|
+
- **Antigravity:** Add ai-memory-desktop-automation to \`~/.gemini/antigravity/mcp_config.json\` manually. Config: \`{ "command": "uvx", "args": ["--python", "3.13", "computer-control-mcp@latest"] }\`
|
|
298
|
+
- **Python 3.14 users:** onnxruntime has no wheels for 3.14 yet. The config pins \`--python 3.13\` so uv uses a compatible version. If you see "No solution found when resolving tool dependencies", ensure uv can access Python 3.13 (\`uv python install 3.13\`).
|
|
298
299
|
|
|
299
300
|
## Usage
|
|
300
301
|
|
package/dist/cli/adapters.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/cli/adapters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;CAkBpC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC3B,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;AAExD,qFAAqF;AACrF,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,CAAC,iBAAiB,CAAC;gBACzB,GAAG,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE;aAC1C;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,8BAA8B;gBACnC,OAAO,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE;aAClD;SACF;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E,SAAS,SAAS,CAAC,IAAY,EAAE,WAAmB;IAClD,OAAO,cAAc,IAAI,kBAAkB,WAAW,cAAc,IAAI,0CAA0C,IAAI,iEAAiE,CAAC;AAC1L,CAAC;AAED,MAAM,WAAW,GAA4B;IAC3C,CAAC,cAAc,EAAE,oDAAoD,CAAC;IACtE,CAAC,mBAAmB,EAAE,2DAA2D,CAAC;IAClF,CAAC,cAAc,EAAE,oEAAoE,CAAC;IACtF,CAAC,UAAU,EAAE,wCAAwC,CAAC;IACtD,CAAC,SAAS,EAAE,uDAAuD,CAAC;IACpE,CAAC,gBAAgB,EAAE,oDAAoD,CAAC;IACxE,CAAC,oBAAoB,EAAE,wFAAwF,CAAC;IAChH,CAAC,iBAAiB,EAAE,uDAAuD,CAAC;CAC7E,CAAC;AAEF,2EAA2E;AAC3E,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC;QACvC,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,WAAW,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,cAAc,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCjB;IACC,mBAAmB,EAAE;;;;;;;;;;;;;;;;;;CAkBtB;IACC,cAAc,EAAE;;;;;;;;;;;;;;;;;;CAkBjB;IACC,UAAU,EAAE;;;;;;;;;;;;;;;;;;;;;;CAsBb;IACC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BV;IACC,gBAAgB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;CAyBnB;IACC,oBAAoB,EAAE
|
|
1
|
+
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/cli/adapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,16 @@ export interface CapabilitySpec {
|
|
|
20
20
|
* Checks detect.paths for each env in environment-specs.json.
|
|
21
21
|
*/
|
|
22
22
|
export declare function detectEnvironments(projectRoot: string, packageRoot: string): string[];
|
|
23
|
+
/** Detected tool with paths that triggered detection. Used by tool-inspect MCP. */
|
|
24
|
+
export interface DetectedToolWithPaths {
|
|
25
|
+
id: string;
|
|
26
|
+
name: string;
|
|
27
|
+
paths: string[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Detect which environments are present and which paths triggered detection.
|
|
31
|
+
*/
|
|
32
|
+
export declare function getDetectedToolsWithPaths(projectRoot: string, packageRoot: string): DetectedToolWithPaths[];
|
|
23
33
|
/**
|
|
24
34
|
* Get capability config for a given capability and environment.
|
|
25
35
|
* Reads from capability-specs.json → environments[envId].
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/cli/environment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAoBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/cli/environment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAoBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAGrF;AAED,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,qBAAqB,EAAE,CAazB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAOT;AAED,0FAA0F;AAC1F,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAKf;AAWD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAcT"}
|
package/dist/cli/environment.js
CHANGED
|
@@ -28,15 +28,23 @@ function loadSpec(path) {
|
|
|
28
28
|
* Checks detect.paths for each env in environment-specs.json.
|
|
29
29
|
*/
|
|
30
30
|
export function detectEnvironments(projectRoot, packageRoot) {
|
|
31
|
+
const tools = getDetectedToolsWithPaths(projectRoot, packageRoot);
|
|
32
|
+
return tools.map((t) => t.id);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Detect which environments are present and which paths triggered detection.
|
|
36
|
+
*/
|
|
37
|
+
export function getDetectedToolsWithPaths(projectRoot, packageRoot) {
|
|
31
38
|
const envPath = getSpecsPath(projectRoot, packageRoot, "environment-specs.json");
|
|
32
39
|
const spec = loadSpec(envPath);
|
|
33
40
|
const envs = spec?.environments ?? [];
|
|
34
41
|
const found = [];
|
|
35
42
|
for (const env of envs) {
|
|
36
43
|
const paths = env.detect?.paths ?? [];
|
|
37
|
-
const present = paths.
|
|
38
|
-
if (present)
|
|
39
|
-
found.push(env.id);
|
|
44
|
+
const present = paths.filter((p) => existsSync(join(projectRoot, p)));
|
|
45
|
+
if (present.length > 0) {
|
|
46
|
+
found.push({ id: env.id, name: env.name, paths: present });
|
|
47
|
+
}
|
|
40
48
|
}
|
|
41
49
|
return found;
|
|
42
50
|
}
|
|
@@ -122,7 +130,7 @@ function mcpEntryFromCapConfig(capability, config) {
|
|
|
122
130
|
}
|
|
123
131
|
const CAPABILITY_MCP_KEYS = {
|
|
124
132
|
browser: "cursor-ide-browser",
|
|
125
|
-
desktop_automation: "
|
|
133
|
+
desktop_automation: "ai-memory-desktop-automation",
|
|
126
134
|
};
|
|
127
135
|
function mergeMcpConfig(existing, capability, entry) {
|
|
128
136
|
const servers = { ...(existing.mcpServers ?? {}) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/cli/environment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAerC,2FAA2F;AAC3F,SAAS,YAAY,CAAC,WAAmB,EAAE,WAAmB,EAAE,QAAgB;IAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACnE,IAAI,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAC9C,OAAO,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACtE,CAAC;AAED,yEAAyE;AACzE,SAAS,QAAQ,CAAI,IAAY;IAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB,EAAE,WAAmB;IACzE,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,QAAQ,CAAuC,OAAO,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,IAAI,EAAE,YAAY,IAAI,EAAE,CAAC;IACtC,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/cli/environment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAgBxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CA6TjE"}
|
|
@@ -5,6 +5,7 @@ import { handleSearchMemory, handleGetMemory, handleCommitMemory, handlePruneMem
|
|
|
5
5
|
import { handleValidateContext, handleValidateSchema, handleGenerateHarness } from "./governance.js";
|
|
6
6
|
import { handleClaimTask, handlePublishResult, handleSyncMemory } from "./collaboration.js";
|
|
7
7
|
import { handleGetDocPath, handleValidateDocPlacement, handleListDocTypes } from "./docs.js";
|
|
8
|
+
import { detectTools, readToolConfig, syncTools } from "./tool-inspect.js";
|
|
8
9
|
export function registerTools(server, aiDir) {
|
|
9
10
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
10
11
|
tools: [
|
|
@@ -200,6 +201,46 @@ export function registerTools(server, aiDir) {
|
|
|
200
201
|
"Use to discover available types before get_doc_path. Returns empty if schema missing.",
|
|
201
202
|
inputSchema: { type: "object", properties: {} },
|
|
202
203
|
},
|
|
204
|
+
// ─── Tool inspection (cross-tool orchestration) ────────────────────────
|
|
205
|
+
{
|
|
206
|
+
name: "detect_tools",
|
|
207
|
+
description: "Detects which AI tools are configured in the project. Scans for .cursor/, .claude/, .agents/, etc. " +
|
|
208
|
+
"Returns list of tools with id, name, and paths that triggered detection. " +
|
|
209
|
+
"Use before read_tool_config or sync_tools to know which tools are present.",
|
|
210
|
+
inputSchema: {
|
|
211
|
+
type: "object",
|
|
212
|
+
properties: {
|
|
213
|
+
project_root: { type: "string", description: "Project root (default: parent of .ai/)" },
|
|
214
|
+
},
|
|
215
|
+
},
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
name: "read_tool_config",
|
|
219
|
+
description: "Reads rules, skills, and MCP servers for a specific tool. " +
|
|
220
|
+
"Returns rules (file names), skills (subdir names with SKILL.md), mcpServers (from mcp.json). " +
|
|
221
|
+
"Use after detect_tools to inspect a tool's configuration.",
|
|
222
|
+
inputSchema: {
|
|
223
|
+
type: "object",
|
|
224
|
+
properties: {
|
|
225
|
+
tool_id: { type: "string", description: "Tool ID (cursor, claude-code, antigravity, windsurf, cline)" },
|
|
226
|
+
project_root: { type: "string", description: "Project root (default: parent of .ai/)" },
|
|
227
|
+
},
|
|
228
|
+
required: ["tool_id"],
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
name: "sync_tools",
|
|
233
|
+
description: "Compares .ai/skills/ against each detected tool's skills dir. Reports drift (missing skills). " +
|
|
234
|
+
"If write: true, copies missing skill stubs from .ai/skills/ to tool dirs (e.g. .cursor/skills/). " +
|
|
235
|
+
"Writes only to tool dirs, never to .ai/ immutable paths.",
|
|
236
|
+
inputSchema: {
|
|
237
|
+
type: "object",
|
|
238
|
+
properties: {
|
|
239
|
+
write: { type: "boolean", description: "If true, write missing skills to tool dirs. Default: false." },
|
|
240
|
+
project_root: { type: "string", description: "Project root (default: parent of .ai/)" },
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
},
|
|
203
244
|
],
|
|
204
245
|
}));
|
|
205
246
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
@@ -220,6 +261,33 @@ export function registerTools(server, aiDir) {
|
|
|
220
261
|
case "get_doc_path": return handleGetDocPath(aiDir, args);
|
|
221
262
|
case "validate_doc_placement": return handleValidateDocPlacement(aiDir, args);
|
|
222
263
|
case "list_doc_types": return handleListDocTypes(aiDir);
|
|
264
|
+
case "detect_tools": {
|
|
265
|
+
const projectRoot = args.project_root
|
|
266
|
+
? String(args.project_root)
|
|
267
|
+
: resolve(aiDir, "..");
|
|
268
|
+
const tools = detectTools(projectRoot);
|
|
269
|
+
return textResponse(JSON.stringify({ tools }, null, 2));
|
|
270
|
+
}
|
|
271
|
+
case "read_tool_config": {
|
|
272
|
+
const toolId = args.tool_id;
|
|
273
|
+
if (typeof toolId !== "string" || !toolId.trim()) {
|
|
274
|
+
throw new McpError(ErrorCode.InvalidParams, "tool_id is required.");
|
|
275
|
+
}
|
|
276
|
+
const projectRoot = args.project_root
|
|
277
|
+
? String(args.project_root)
|
|
278
|
+
: resolve(aiDir, "..");
|
|
279
|
+
const config = await readToolConfig(projectRoot, toolId);
|
|
280
|
+
if (!config)
|
|
281
|
+
return textResponse(`Unknown tool or no config: ${toolId}`);
|
|
282
|
+
return textResponse(JSON.stringify(config, null, 2));
|
|
283
|
+
}
|
|
284
|
+
case "sync_tools": {
|
|
285
|
+
const projectRoot = args.project_root
|
|
286
|
+
? String(args.project_root)
|
|
287
|
+
: resolve(aiDir, "..");
|
|
288
|
+
const write = args.write ?? false;
|
|
289
|
+
return syncTools(projectRoot, aiDir, { write });
|
|
290
|
+
}
|
|
223
291
|
case "get_repo_root": {
|
|
224
292
|
const cwd = resolve(aiDir, "..");
|
|
225
293
|
const root = getRepoRoot(cwd);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,SAAS,EACT,QAAQ,GACT,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7I,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool inspection and sync for ai-memory install targets.
|
|
3
|
+
* Detects installed tools, reads their config, and syncs rules/skills/MCP.
|
|
4
|
+
*/
|
|
5
|
+
import { type McpResponse } from "./shared.js";
|
|
6
|
+
export interface ToolConfig {
|
|
7
|
+
rules: string[];
|
|
8
|
+
skills: string[];
|
|
9
|
+
mcpServers: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export interface DetectedTool {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
paths: string[];
|
|
15
|
+
}
|
|
16
|
+
export declare const TOOL_PATH_MAPPINGS: Record<string, {
|
|
17
|
+
rulesDir: string | null;
|
|
18
|
+
rulesPath?: string;
|
|
19
|
+
skillsDir: string | null;
|
|
20
|
+
mcpPath: string;
|
|
21
|
+
}>;
|
|
22
|
+
/**
|
|
23
|
+
* Detects which AI tools are installed in the project.
|
|
24
|
+
*/
|
|
25
|
+
export declare function detectTools(projectRoot: string): DetectedTool[];
|
|
26
|
+
/**
|
|
27
|
+
* Reads skills directory for a tool. Returns subdir names that contain SKILL.md.
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseSkillsDir(toolId: string, projectRoot: string): Promise<string[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Reads MCP config for a tool. Returns mcpServers object or {} if missing.
|
|
32
|
+
*/
|
|
33
|
+
export declare function parseMcpConfig(toolId: string, projectRoot: string): Promise<Record<string, unknown>>;
|
|
34
|
+
/**
|
|
35
|
+
* Diffs canonical skills vs tool skills.
|
|
36
|
+
* missing = skills in canonical but not in tool
|
|
37
|
+
* outdated = [] for now (simplified)
|
|
38
|
+
*/
|
|
39
|
+
export declare function diffSkills(canonicalSkills: string[], toolSkills: string[]): {
|
|
40
|
+
missing: string[];
|
|
41
|
+
outdated: string[];
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Reads tool config (rules, skills, mcpServers) for a given tool.
|
|
45
|
+
*/
|
|
46
|
+
export declare function readToolConfig(projectRoot: string, toolId: string): Promise<ToolConfig | null>;
|
|
47
|
+
export interface SyncToolsOptions {
|
|
48
|
+
write?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Syncs ai-memory skills to detected tools.
|
|
52
|
+
* Reads canonical skills from .ai/skills/, diffs against each tool's skills,
|
|
53
|
+
* and optionally writes missing skills to tool dirs (e.g. .cursor/skills/).
|
|
54
|
+
* Writes ONLY to tool dirs, never to .ai/ immutable paths.
|
|
55
|
+
*/
|
|
56
|
+
export declare function syncTools(projectRoot: string, aiDir: string, options?: SyncToolsOptions): Promise<McpResponse>;
|
|
57
|
+
//# sourceMappingURL=tool-inspect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-inspect.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/tool-inspect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAI7D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAKD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CACrC,MAAM,EACN;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA6B3F,CAAC;AAmBF;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE,CAG/D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAU3F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAalC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,eAAe,EAAE,MAAM,EAAE,EACzB,UAAU,EAAE,MAAM,EAAE,GACnB;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAG3C;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAS5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,WAAW,CAAC,CA+CtB"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool inspection and sync for ai-memory install targets.
|
|
3
|
+
* Detects installed tools, reads their config, and syncs rules/skills/MCP.
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync } from "fs";
|
|
6
|
+
import { mkdir, readdir, readFile, writeFile } from "fs/promises";
|
|
7
|
+
import { dirname, join } from "path";
|
|
8
|
+
import { fileURLToPath } from "url";
|
|
9
|
+
import { getDetectedToolsWithPaths } from "../../cli/environment.js";
|
|
10
|
+
import { textResponse } from "./shared.js";
|
|
11
|
+
// ─── Tool path mappings ───────────────────────────────────────────────────
|
|
12
|
+
// Matches TOOL_ADAPTERS (adapters.ts) and ENV_MCP_PATHS (environment.ts)
|
|
13
|
+
export const TOOL_PATH_MAPPINGS = {
|
|
14
|
+
cursor: {
|
|
15
|
+
rulesDir: ".cursor/rules",
|
|
16
|
+
skillsDir: ".cursor/skills",
|
|
17
|
+
mcpPath: ".cursor/mcp.json",
|
|
18
|
+
},
|
|
19
|
+
"claude-code": {
|
|
20
|
+
rulesDir: null,
|
|
21
|
+
skillsDir: ".claude/skills",
|
|
22
|
+
mcpPath: ".mcp.json",
|
|
23
|
+
},
|
|
24
|
+
antigravity: {
|
|
25
|
+
rulesDir: ".agents/rules",
|
|
26
|
+
skillsDir: ".agents/skills",
|
|
27
|
+
mcpPath: ".mcp.json",
|
|
28
|
+
},
|
|
29
|
+
windsurf: {
|
|
30
|
+
rulesDir: null,
|
|
31
|
+
rulesPath: ".windsurfrules",
|
|
32
|
+
skillsDir: null,
|
|
33
|
+
mcpPath: ".mcp.json",
|
|
34
|
+
},
|
|
35
|
+
cline: {
|
|
36
|
+
rulesDir: null,
|
|
37
|
+
rulesPath: ".clinerules",
|
|
38
|
+
skillsDir: null,
|
|
39
|
+
mcpPath: ".mcp.json",
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
// ─── Internal helpers ─────────────────────────────────────────────────────
|
|
43
|
+
/**
|
|
44
|
+
* Reads rules directory for a tool. Returns .mdc and .md file names.
|
|
45
|
+
*/
|
|
46
|
+
async function parseRulesDir(toolId, projectRoot) {
|
|
47
|
+
const mapping = TOOL_PATH_MAPPINGS[toolId];
|
|
48
|
+
const rulesDir = mapping?.rulesDir;
|
|
49
|
+
if (rulesDir == null)
|
|
50
|
+
return [];
|
|
51
|
+
const absPath = join(projectRoot, rulesDir);
|
|
52
|
+
if (!existsSync(absPath))
|
|
53
|
+
return [];
|
|
54
|
+
const entries = await readdir(absPath, { withFileTypes: true });
|
|
55
|
+
return entries
|
|
56
|
+
.filter((e) => e.isFile() && (e.name.endsWith(".mdc") || e.name.endsWith(".md")))
|
|
57
|
+
.map((e) => e.name);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Detects which AI tools are installed in the project.
|
|
61
|
+
*/
|
|
62
|
+
export function detectTools(projectRoot) {
|
|
63
|
+
const packageRoot = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "..");
|
|
64
|
+
return getDetectedToolsWithPaths(projectRoot, packageRoot);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Reads skills directory for a tool. Returns subdir names that contain SKILL.md.
|
|
68
|
+
*/
|
|
69
|
+
export async function parseSkillsDir(toolId, projectRoot) {
|
|
70
|
+
const mapping = TOOL_PATH_MAPPINGS[toolId];
|
|
71
|
+
const skillsDir = mapping?.skillsDir;
|
|
72
|
+
if (skillsDir == null)
|
|
73
|
+
return [];
|
|
74
|
+
const absPath = join(projectRoot, skillsDir);
|
|
75
|
+
if (!existsSync(absPath))
|
|
76
|
+
return [];
|
|
77
|
+
const entries = await readdir(absPath, { withFileTypes: true });
|
|
78
|
+
return entries
|
|
79
|
+
.filter((e) => e.isDirectory() && existsSync(join(absPath, e.name, "SKILL.md")))
|
|
80
|
+
.map((e) => e.name);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Reads MCP config for a tool. Returns mcpServers object or {} if missing.
|
|
84
|
+
*/
|
|
85
|
+
export async function parseMcpConfig(toolId, projectRoot) {
|
|
86
|
+
const mapping = TOOL_PATH_MAPPINGS[toolId];
|
|
87
|
+
const mcpPath = mapping?.mcpPath;
|
|
88
|
+
if (mcpPath == null)
|
|
89
|
+
return {};
|
|
90
|
+
const absPath = join(projectRoot, mcpPath);
|
|
91
|
+
if (!existsSync(absPath))
|
|
92
|
+
return {};
|
|
93
|
+
try {
|
|
94
|
+
const raw = await readFile(absPath, "utf-8");
|
|
95
|
+
const parsed = JSON.parse(raw);
|
|
96
|
+
return parsed.mcpServers ?? {};
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return {};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Diffs canonical skills vs tool skills.
|
|
104
|
+
* missing = skills in canonical but not in tool
|
|
105
|
+
* outdated = [] for now (simplified)
|
|
106
|
+
*/
|
|
107
|
+
export function diffSkills(canonicalSkills, toolSkills) {
|
|
108
|
+
const missing = canonicalSkills.filter((s) => !toolSkills.includes(s));
|
|
109
|
+
return { missing, outdated: [] };
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Reads tool config (rules, skills, mcpServers) for a given tool.
|
|
113
|
+
*/
|
|
114
|
+
export async function readToolConfig(projectRoot, toolId) {
|
|
115
|
+
const mapping = TOOL_PATH_MAPPINGS[toolId];
|
|
116
|
+
if (!mapping)
|
|
117
|
+
return null;
|
|
118
|
+
const [rules, skills, mcpServers] = await Promise.all([
|
|
119
|
+
parseRulesDir(toolId, projectRoot),
|
|
120
|
+
parseSkillsDir(toolId, projectRoot),
|
|
121
|
+
parseMcpConfig(toolId, projectRoot),
|
|
122
|
+
]);
|
|
123
|
+
return { rules, skills, mcpServers };
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Syncs ai-memory skills to detected tools.
|
|
127
|
+
* Reads canonical skills from .ai/skills/, diffs against each tool's skills,
|
|
128
|
+
* and optionally writes missing skills to tool dirs (e.g. .cursor/skills/).
|
|
129
|
+
* Writes ONLY to tool dirs, never to .ai/ immutable paths.
|
|
130
|
+
*/
|
|
131
|
+
export async function syncTools(projectRoot, aiDir, options = {}) {
|
|
132
|
+
const { write = false } = options;
|
|
133
|
+
const tools = detectTools(projectRoot);
|
|
134
|
+
const skillsRoot = join(aiDir, "skills");
|
|
135
|
+
if (!existsSync(skillsRoot)) {
|
|
136
|
+
return textResponse("No .ai/skills/ directory found.");
|
|
137
|
+
}
|
|
138
|
+
const entries = await readdir(skillsRoot, { withFileTypes: true });
|
|
139
|
+
const canonicalSkills = entries
|
|
140
|
+
.filter((e) => e.isDirectory() && existsSync(join(skillsRoot, e.name, "SKILL.md")))
|
|
141
|
+
.map((e) => e.name);
|
|
142
|
+
const lines = [];
|
|
143
|
+
for (const tool of tools) {
|
|
144
|
+
const mapping = TOOL_PATH_MAPPINGS[tool.id];
|
|
145
|
+
const skillsDir = mapping?.skillsDir;
|
|
146
|
+
if (skillsDir == null)
|
|
147
|
+
continue;
|
|
148
|
+
const config = await readToolConfig(projectRoot, tool.id);
|
|
149
|
+
if (!config)
|
|
150
|
+
continue;
|
|
151
|
+
const { missing } = diffSkills(canonicalSkills, config.skills);
|
|
152
|
+
const toolSkillsPath = join(projectRoot, skillsDir);
|
|
153
|
+
if (missing.length === 0) {
|
|
154
|
+
lines.push(`${tool.name}: up to date`);
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
lines.push(`${tool.name}: missing ${missing.length} skill(s): ${missing.join(", ")}`);
|
|
158
|
+
if (write) {
|
|
159
|
+
for (const name of missing) {
|
|
160
|
+
const srcPath = join(skillsRoot, name, "SKILL.md");
|
|
161
|
+
if (!existsSync(srcPath))
|
|
162
|
+
continue;
|
|
163
|
+
const content = await readFile(srcPath, "utf-8");
|
|
164
|
+
const destDir = join(toolSkillsPath, name);
|
|
165
|
+
await mkdir(destDir, { recursive: true });
|
|
166
|
+
await writeFile(join(destDir, "SKILL.md"), content, "utf-8");
|
|
167
|
+
}
|
|
168
|
+
lines.push(` → wrote ${missing.length} skill(s) to ${skillsDir}`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return textResponse(lines.length > 0 ? lines.join("\n") : "No tools with skillsDir detected.");
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=tool-inspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-inspect.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/tool-inspect.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -27,7 +27,8 @@ Only request the permission the task requires.
|
|
|
27
27
|
## Setup
|
|
28
28
|
|
|
29
29
|
- **Cursor/Claude Code/Windsurf/Cline:** Run `ai-memory install --capability desktop_automation`
|
|
30
|
-
- **Antigravity:** Add
|
|
30
|
+
- **Antigravity:** Add ai-memory-desktop-automation to `~/.gemini/antigravity/mcp_config.json` manually. Config: `{ "command": "uvx", "args": ["--python", "3.13", "computer-control-mcp@latest"] }`
|
|
31
|
+
- **Python 3.14 users:** onnxruntime has no wheels for 3.14 yet. The config pins `--python 3.13` so uv uses a compatible version. If you see "No solution found when resolving tool dependencies", ensure uv can access Python 3.13 (`uv python install 3.13`).
|
|
31
32
|
|
|
32
33
|
## Usage
|
|
33
34
|
|
|
@@ -53,32 +53,32 @@
|
|
|
53
53
|
"mcp": {
|
|
54
54
|
"type": "stdio",
|
|
55
55
|
"command": "uvx",
|
|
56
|
-
"args": ["computer-control-mcp@latest"]
|
|
56
|
+
"args": ["--python", "3.13", "computer-control-mcp@latest"]
|
|
57
57
|
}
|
|
58
58
|
},
|
|
59
59
|
"claude-code": {
|
|
60
60
|
"mcp": {
|
|
61
61
|
"type": "stdio",
|
|
62
62
|
"command": "uvx",
|
|
63
|
-
"args": ["computer-control-mcp@latest"]
|
|
63
|
+
"args": ["--python", "3.13", "computer-control-mcp@latest"]
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
"windsurf": {
|
|
67
67
|
"mcp": {
|
|
68
68
|
"type": "stdio",
|
|
69
69
|
"command": "uvx",
|
|
70
|
-
"args": ["computer-control-mcp@latest"]
|
|
70
|
+
"args": ["--python", "3.13", "computer-control-mcp@latest"]
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
73
|
"cline": {
|
|
74
74
|
"mcp": {
|
|
75
75
|
"type": "stdio",
|
|
76
76
|
"command": "uvx",
|
|
77
|
-
"args": ["computer-control-mcp@latest"]
|
|
77
|
+
"args": ["--python", "3.13", "computer-control-mcp@latest"]
|
|
78
78
|
}
|
|
79
79
|
},
|
|
80
80
|
"antigravity": {
|
|
81
|
-
"manual": "Add
|
|
81
|
+
"manual": "Add ai-memory-desktop-automation to ~/.gemini/antigravity/mcp_config.json. Config: { \"command\": \"uvx\", \"args\": [\"--python\", \"3.13\", \"computer-control-mcp@latest\"] }"
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
}
|