@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.
@@ -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,CAoOnD,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"}
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"}
@@ -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 computer-control-mcp to \`~/.gemini/antigravity/mcp_config.json\` manually. Requires \`uvx\` (uv) or \`pip install computer-control-mcp\`.
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
 
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/cli/adapters.ts"],"names":[],"mappings":"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"}
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,CAWrF;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"}
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"}
@@ -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.some((p) => existsSync(join(projectRoot, p)));
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: "computer-control-mcp",
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":"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"}
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;AAexE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAuPjE"}
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":"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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@radix-ai/ai-memory",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "Persistent AI memory for any project. MCP server, compound protocol, governance enforcement.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -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 computer-control-mcp to `~/.gemini/antigravity/mcp_config.json` manually. Requires `uvx` (uv) or `pip install computer-control-mcp`.
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 computer-control-mcp to ~/.gemini/antigravity/mcp_config.json. Config: { \"command\": \"uvx\", \"args\": [\"computer-control-mcp@latest\"] }"
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
  }