fastrmemory 0.3.0 → 0.4.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.
Files changed (67) hide show
  1. package/.claude-plugin/marketplace.json +14 -14
  2. package/.claude-plugin/plugin.json +18 -18
  3. package/.cursor/mcp.json +3 -1
  4. package/.cursor/skills/fastr-compress/SKILL.md +33 -33
  5. package/.cursor/skills/fastr-curate/SKILL.md +62 -62
  6. package/.cursor/skills/fastr-dag/SKILL.md +47 -47
  7. package/.cursor/skills/fastr-doctor/SKILL.md +39 -39
  8. package/.cursor/skills/fastr-memory/SKILL.md +51 -51
  9. package/.cursor/skills/fastr-plan-estimate/SKILL.md +45 -45
  10. package/.cursor/skills/fastr-session-commit/SKILL.md +49 -49
  11. package/.cursor/skills/fastr-setup/SKILL.md +45 -45
  12. package/.cursor/skills/fastr-trap-log/SKILL.md +39 -39
  13. package/.cursor/skills/fastr-vision/SKILL.md +35 -35
  14. package/.cursor/skills/skills.json +65 -65
  15. package/README.md +642 -729
  16. package/bin/fastr-guard.mjs +61 -0
  17. package/dist/bin/fastr.js +68 -10
  18. package/dist/bin/fastr.js.map +1 -1
  19. package/dist/src/bench/benchmark.js +13 -13
  20. package/dist/src/bench/harness.js +17 -17
  21. package/dist/src/bench/public-harness.js +5 -5
  22. package/dist/src/branch/manager.js +31 -31
  23. package/dist/src/ci/guardian.js +9 -9
  24. package/dist/src/db/doctor.js +25 -25
  25. package/dist/src/db/hygiene.js +23 -23
  26. package/dist/src/db/repository.js +283 -283
  27. package/dist/src/db/schema.js +268 -268
  28. package/dist/src/db/spool.js +4 -4
  29. package/dist/src/export/obsidian.js +15 -15
  30. package/dist/src/import/local.js +4 -4
  31. package/dist/src/installer/mcp-init.d.ts +65 -0
  32. package/dist/src/installer/mcp-init.d.ts.map +1 -0
  33. package/dist/src/installer/mcp-init.js +293 -0
  34. package/dist/src/installer/mcp-init.js.map +1 -0
  35. package/dist/src/installer/setup.d.ts +2 -0
  36. package/dist/src/installer/setup.d.ts.map +1 -1
  37. package/dist/src/installer/setup.js +24 -18
  38. package/dist/src/installer/setup.js.map +1 -1
  39. package/dist/src/mcp/server.js +25 -25
  40. package/dist/src/mirror/markdown-pages.js +22 -22
  41. package/dist/src/search/backfill.js +6 -6
  42. package/dist/src/search/hybrid-rrf.js +60 -60
  43. package/dist/src/ui/server.js +1259 -1259
  44. package/dist/src/vision/assets.js +6 -6
  45. package/dist-ui/assets/ActionsPage-B3quzFNF.js +11 -11
  46. package/dist-ui/assets/GraphPage-DetiATmC.js +1 -1
  47. package/dist-ui/assets/ObservatoryPage-QIGMwENf.js +16 -16
  48. package/dist-ui/assets/TreemapPage-C7uLZd37.js +2 -2
  49. package/dist-ui/assets/index-BJnPINTu.css +1 -1
  50. package/dist-ui/assets/index-DWAH--Fu.js +329 -329
  51. package/dist-ui/assets/maximize-2-BebkGbZA.js +6 -6
  52. package/dist-ui/build-manifest.json +95 -95
  53. package/dist-ui/index.html +26 -26
  54. package/llms-install.md +77 -69
  55. package/package.json +108 -107
  56. package/server.json +28 -28
  57. package/skills/fastr-compress/SKILL.md +33 -33
  58. package/skills/fastr-curate/SKILL.md +62 -62
  59. package/skills/fastr-dag/SKILL.md +47 -47
  60. package/skills/fastr-doctor/SKILL.md +39 -39
  61. package/skills/fastr-memory/SKILL.md +51 -51
  62. package/skills/fastr-plan-estimate/SKILL.md +45 -45
  63. package/skills/fastr-session-commit/SKILL.md +49 -49
  64. package/skills/fastr-setup/SKILL.md +45 -45
  65. package/skills/fastr-trap-log/SKILL.md +39 -39
  66. package/skills/fastr-vision/SKILL.md +35 -35
  67. package/skills/skills.json +65 -65
@@ -0,0 +1,65 @@
1
+ import { McpServerEntry } from './json-config.js';
2
+ export declare const MCP_CLIENTS: readonly ["claude", "cursor", "vscode", "opencode", "gemini", "copilot", "windsurf", "antigravity", "claude-desktop", "codex"];
3
+ export type McpClientId = (typeof MCP_CLIENTS)[number];
4
+ export type McpScope = 'project' | 'user';
5
+ export type McpChannel = 'latest' | 'pinned';
6
+ export type McpRunner = 'npx' | 'pnpm' | 'yarn' | 'bunx';
7
+ export interface McpInitOptions {
8
+ clients: McpClientId[];
9
+ scope?: McpScope;
10
+ projectRoot?: string;
11
+ homeDir?: string;
12
+ channel?: McpChannel;
13
+ runner?: McpRunner;
14
+ profile?: 'full' | 'core';
15
+ dryRun?: boolean;
16
+ platform?: NodeJS.Platform;
17
+ }
18
+ export interface McpInitResult {
19
+ client: McpClientId;
20
+ label: string;
21
+ scope: McpScope;
22
+ filePath: string;
23
+ entry: McpServerEntry;
24
+ changed: boolean;
25
+ created: boolean;
26
+ backupPath?: string;
27
+ dryRun: boolean;
28
+ manual?: string;
29
+ skipped?: string;
30
+ }
31
+ export declare const PROJECT_ALL_CLIENTS: McpClientId[];
32
+ export declare const USER_ALL_CLIENTS: McpClientId[];
33
+ export declare class McpInitError extends Error {
34
+ constructor(message: string);
35
+ }
36
+ export declare function parseMcpClients(value: string, scope?: McpScope): McpClientId[];
37
+ export declare function parseMcpScope(value: string): McpScope;
38
+ export declare function parseMcpChannel(value: string): McpChannel;
39
+ export declare function parseMcpRunner(value: string): McpRunner;
40
+ export declare function parseMcpProfile(value: string): 'full' | 'core';
41
+ /**
42
+ * Build a portable MCP entry. The generated config names the package instead of embedding an
43
+ * absolute CLI path, so a project config can be committed and shared across machines.
44
+ */
45
+ export declare function buildRegistryMcpEntry(options?: {
46
+ channel?: McpChannel;
47
+ runner?: McpRunner;
48
+ profile?: 'full' | 'core';
49
+ platform?: NodeJS.Platform;
50
+ packageVersion?: string;
51
+ }): McpServerEntry;
52
+ /**
53
+ * Configure one or more MCP clients. Existing JSON is merged, backed up once, and never
54
+ * overwritten when it cannot be parsed. Codex is printed as TOML because a safe rewrite of a
55
+ * user-owned TOML file needs a dedicated parser.
56
+ */
57
+ export declare function initMcpClients(options: McpInitOptions): McpInitResult[];
58
+ export declare function formatMcpInitResult(result: McpInitResult): string;
59
+ /** Ensure a client id is usable in generated docs/tests without importing the CLI command tree. */
60
+ export declare function isMcpClient(value: string): value is McpClientId;
61
+ /** Small helper for tests and dry-run output. */
62
+ export declare function mcpEntryCommand(entry: McpServerEntry): string;
63
+ /** True when the generated entry points at the package registry rather than a local checkout. */
64
+ export declare function isPortableRegistryEntry(entry: McpServerEntry): boolean;
65
+ //# sourceMappingURL=mcp-init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-init.d.ts","sourceRoot":"","sources":["../../../src/installer/mcp-init.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,cAAc,EAGf,MAAM,kBAAkB,CAAC;AAI1B,eAAO,MAAM,WAAW,gIAWd,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AACvD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAC1C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC7C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAoBD,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAO5C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,WAAW,EASzC,CAAC;AAEF,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,QAAoB,GAAG,WAAW,EAAE,CAqBzF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAGrD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAGzD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAGvD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAG9D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE;IAC7C,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,cAAc,CAiCtB;AAwFD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,EAAE,CA4DvE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAcjE;AAED,mGAAmG;AACnG,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,WAAW,CAE/D;AAED,iDAAiD;AACjD,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAE7D;AAED,iGAAiG;AACjG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAEtE"}
@@ -0,0 +1,293 @@
1
+ import * as os from 'node:os';
2
+ import * as path from 'node:path';
3
+ import { PACKAGE_VERSION } from '../version.js';
4
+ import { updateJsonConfig, upsertMcpServer, } from './json-config.js';
5
+ import { resolveOpenCodeConfigPath, upsertOpenCodeMcpServer } from './opencode.js';
6
+ import { getAntigravityConfigPath, getClaudeDesktopConfigPath } from './setup.js';
7
+ export const MCP_CLIENTS = [
8
+ 'claude',
9
+ 'cursor',
10
+ 'vscode',
11
+ 'opencode',
12
+ 'gemini',
13
+ 'copilot',
14
+ 'windsurf',
15
+ 'antigravity',
16
+ 'claude-desktop',
17
+ 'codex',
18
+ ];
19
+ const CLIENT_SPECS = {
20
+ claude: { label: 'Claude Code', scopes: ['project', 'user'] },
21
+ cursor: { label: 'Cursor', scopes: ['project', 'user'] },
22
+ vscode: { label: 'VS Code', scopes: ['project', 'user'] },
23
+ opencode: { label: 'OpenCode', scopes: ['project'] },
24
+ gemini: { label: 'Gemini CLI', scopes: ['project', 'user'] },
25
+ copilot: { label: 'GitHub Copilot CLI', scopes: ['project'] },
26
+ windsurf: { label: 'Windsurf', scopes: ['user'] },
27
+ antigravity: { label: 'Antigravity', scopes: ['user'] },
28
+ 'claude-desktop': { label: 'Claude Desktop', scopes: ['user'] },
29
+ codex: { label: 'Codex', scopes: ['user'] },
30
+ };
31
+ export const PROJECT_ALL_CLIENTS = [
32
+ 'claude',
33
+ 'cursor',
34
+ 'vscode',
35
+ 'opencode',
36
+ 'gemini',
37
+ 'copilot',
38
+ ];
39
+ export const USER_ALL_CLIENTS = [
40
+ 'claude',
41
+ 'cursor',
42
+ 'vscode',
43
+ 'gemini',
44
+ 'windsurf',
45
+ 'antigravity',
46
+ 'claude-desktop',
47
+ 'codex',
48
+ ];
49
+ export class McpInitError extends Error {
50
+ constructor(message) {
51
+ super(message);
52
+ this.name = 'McpInitError';
53
+ }
54
+ }
55
+ export function parseMcpClients(value, scope = 'project') {
56
+ const requested = value
57
+ .split(',')
58
+ .map((item) => item.trim().toLowerCase())
59
+ .filter(Boolean);
60
+ if (requested.length === 0) {
61
+ throw new McpInitError(`Choose a client: ${MCP_CLIENTS.join(', ')}, or all.`);
62
+ }
63
+ const expanded = requested.flatMap((item) => {
64
+ if (item === 'all')
65
+ return scope === 'user' ? USER_ALL_CLIENTS : PROJECT_ALL_CLIENTS;
66
+ if (!MCP_CLIENTS.includes(item)) {
67
+ throw new McpInitError(`Unknown client "${item}". Choose from: ${MCP_CLIENTS.join(', ')}, or all.`);
68
+ }
69
+ return [item];
70
+ });
71
+ return [...new Set(expanded)];
72
+ }
73
+ export function parseMcpScope(value) {
74
+ if (value === 'project' || value === 'user')
75
+ return value;
76
+ throw new McpInitError('Scope must be "project" or "user".');
77
+ }
78
+ export function parseMcpChannel(value) {
79
+ if (value === 'latest' || value === 'pinned')
80
+ return value;
81
+ throw new McpInitError('Channel must be "latest" or "pinned".');
82
+ }
83
+ export function parseMcpRunner(value) {
84
+ if (value === 'npx' || value === 'pnpm' || value === 'yarn' || value === 'bunx')
85
+ return value;
86
+ throw new McpInitError('Runner must be "npx", "pnpm", "yarn", or "bunx".');
87
+ }
88
+ export function parseMcpProfile(value) {
89
+ if (value === 'full' || value === 'core')
90
+ return value;
91
+ throw new McpInitError('Profile must be "full" or "core".');
92
+ }
93
+ /**
94
+ * Build a portable MCP entry. The generated config names the package instead of embedding an
95
+ * absolute CLI path, so a project config can be committed and shared across machines.
96
+ */
97
+ export function buildRegistryMcpEntry(options = {}) {
98
+ const channel = options.channel ?? 'latest';
99
+ const runner = options.runner ?? 'npx';
100
+ const profile = options.profile ?? 'full';
101
+ const packageSpec = channel === 'pinned'
102
+ ? `fastrmemory@${options.packageVersion ?? PACKAGE_VERSION}`
103
+ : 'fastrmemory@latest';
104
+ let args;
105
+ switch (runner) {
106
+ case 'npx':
107
+ args = ['-y', packageSpec, 'mcp'];
108
+ break;
109
+ case 'pnpm':
110
+ args = ['dlx', packageSpec, 'mcp'];
111
+ break;
112
+ case 'yarn':
113
+ args = ['dlx', packageSpec, 'mcp'];
114
+ break;
115
+ case 'bunx':
116
+ // `bunx` honors the package's Node shebang; `--bun` would force Bun, which
117
+ // does not provide `node:sqlite`, the engine FastrMemory depends on.
118
+ args = [packageSpec, 'mcp'];
119
+ break;
120
+ }
121
+ if (profile === 'core')
122
+ args.push('--profile', 'core');
123
+ if ((options.platform ?? process.platform) === 'win32') {
124
+ // MCP clients spawn servers without a shell; npm/pnpm/yarn/bunx shims are .cmd files.
125
+ return { command: 'cmd', args: ['/c', runner, ...args] };
126
+ }
127
+ return { command: runner, args };
128
+ }
129
+ function resolveVsCodeUserConfig(homeDir, platform) {
130
+ if (platform === 'win32') {
131
+ const appData = homeDir === os.homedir() && process.env.APPDATA
132
+ ? process.env.APPDATA
133
+ : path.join(homeDir, 'AppData', 'Roaming');
134
+ return path.join(appData, 'Code', 'User', 'mcp.json');
135
+ }
136
+ if (platform === 'darwin') {
137
+ return path.join(homeDir, 'Library', 'Application Support', 'Code', 'User', 'mcp.json');
138
+ }
139
+ return path.join(homeDir, '.config', 'Code', 'User', 'mcp.json');
140
+ }
141
+ function resolveClientPath(client, scope, projectRoot, homeDir, platform) {
142
+ switch (client) {
143
+ case 'claude':
144
+ return scope === 'project'
145
+ ? path.join(projectRoot, '.mcp.json')
146
+ : path.join(homeDir, '.claude.json');
147
+ case 'cursor':
148
+ return scope === 'project'
149
+ ? path.join(projectRoot, '.cursor', 'mcp.json')
150
+ : path.join(homeDir, '.cursor', 'mcp.json');
151
+ case 'vscode':
152
+ return scope === 'project'
153
+ ? path.join(projectRoot, '.vscode', 'mcp.json')
154
+ : resolveVsCodeUserConfig(homeDir, platform);
155
+ case 'opencode':
156
+ return resolveOpenCodeConfigPath(projectRoot).filePath;
157
+ case 'gemini':
158
+ return scope === 'project'
159
+ ? path.join(projectRoot, '.gemini', 'settings.json')
160
+ : path.join(homeDir, '.gemini', 'settings.json');
161
+ case 'copilot':
162
+ return path.join(projectRoot, '.github', 'mcp.json');
163
+ case 'windsurf':
164
+ return path.join(homeDir, '.codeium', 'windsurf', 'mcp_config.json');
165
+ case 'antigravity':
166
+ return getAntigravityConfigPath(homeDir);
167
+ case 'claude-desktop':
168
+ return getClaudeDesktopConfigPath(homeDir);
169
+ case 'codex':
170
+ return path.join(homeDir, '.codex', 'config.toml');
171
+ }
172
+ }
173
+ function withProjectRoot(entry, projectRoot) {
174
+ return { ...entry, args: [...entry.args, '--project', path.resolve(projectRoot)] };
175
+ }
176
+ function buildCodexToml(entry) {
177
+ const args = entry.args.map((arg) => JSON.stringify(arg)).join(', ');
178
+ return [
179
+ '[mcp_servers.fastrmemory]',
180
+ `command = ${JSON.stringify(entry.command)}`,
181
+ `args = [${args}]`,
182
+ '',
183
+ ].join('\n');
184
+ }
185
+ function applyClientConfig(client, filePath, entry) {
186
+ if (client === 'vscode') {
187
+ return updateJsonConfig(filePath, (config) => {
188
+ if (!config.servers || typeof config.servers !== 'object' || Array.isArray(config.servers)) {
189
+ config.servers = {};
190
+ }
191
+ config.servers.fastrmemory = entry;
192
+ });
193
+ }
194
+ if (client === 'opencode') {
195
+ return updateJsonConfig(filePath, (config) => upsertOpenCodeMcpServer(config, entry));
196
+ }
197
+ if (client === 'copilot') {
198
+ return updateJsonConfig(filePath, (config) => {
199
+ upsertMcpServer(config, 'fastrmemory', { type: 'local', ...entry });
200
+ });
201
+ }
202
+ return updateJsonConfig(filePath, (config) => upsertMcpServer(config, 'fastrmemory', entry));
203
+ }
204
+ /**
205
+ * Configure one or more MCP clients. Existing JSON is merged, backed up once, and never
206
+ * overwritten when it cannot be parsed. Codex is printed as TOML because a safe rewrite of a
207
+ * user-owned TOML file needs a dedicated parser.
208
+ */
209
+ export function initMcpClients(options) {
210
+ const scope = options.scope ?? 'project';
211
+ const projectRoot = path.resolve(options.projectRoot ?? process.cwd());
212
+ const homeDir = options.homeDir ?? os.homedir();
213
+ const platform = options.platform ?? process.platform;
214
+ const dryRun = options.dryRun ?? false;
215
+ const baseEntry = buildRegistryMcpEntry({
216
+ channel: options.channel,
217
+ runner: options.runner,
218
+ profile: options.profile,
219
+ platform,
220
+ });
221
+ const entry = scope === 'user' ? withProjectRoot(baseEntry, projectRoot) : baseEntry;
222
+ // Validate every requested client before the first write so a bad scope cannot leave a
223
+ // half-configured set of clients behind.
224
+ const specs = options.clients.map((client) => {
225
+ const spec = CLIENT_SPECS[client];
226
+ if (!spec)
227
+ throw new McpInitError(`Unknown client "${client}".`);
228
+ if (!spec.scopes.includes(scope)) {
229
+ throw new McpInitError(`${spec.label} does not support ${scope}-scoped MCP config. Supported scope: ${spec.scopes.join(' or ')}.`);
230
+ }
231
+ return { client, spec };
232
+ });
233
+ return specs.map(({ client, spec }) => {
234
+ const filePath = resolveClientPath(client, scope, projectRoot, homeDir, platform);
235
+ const result = {
236
+ client,
237
+ label: spec.label,
238
+ scope,
239
+ filePath,
240
+ entry,
241
+ changed: false,
242
+ created: false,
243
+ dryRun,
244
+ };
245
+ if (client === 'codex') {
246
+ result.manual = buildCodexToml(entry);
247
+ return result;
248
+ }
249
+ if (client === 'opencode' && resolveOpenCodeConfigPath(projectRoot).jsonc) {
250
+ result.skipped = `OpenCode config is JSONC (${filePath}); add the fastrmemory MCP server manually`;
251
+ return result;
252
+ }
253
+ if (dryRun)
254
+ return result;
255
+ const write = applyClientConfig(client, filePath, entry);
256
+ return {
257
+ ...result,
258
+ changed: write.changed,
259
+ created: write.created,
260
+ backupPath: write.backupPath,
261
+ };
262
+ });
263
+ }
264
+ export function formatMcpInitResult(result) {
265
+ if (result.skipped)
266
+ return `${result.label}: skipped — ${result.skipped}`;
267
+ if (result.manual) {
268
+ return `${result.label}: add this to ${result.filePath}\n\n${result.manual}`;
269
+ }
270
+ if (result.dryRun) {
271
+ return `${result.label}: would write ${result.filePath}`;
272
+ }
273
+ if (result.created)
274
+ return `${result.label}: created ${result.filePath}`;
275
+ if (result.changed) {
276
+ const backup = result.backupPath ? ` (backup: ${path.basename(result.backupPath)})` : '';
277
+ return `${result.label}: updated ${result.filePath}${backup}`;
278
+ }
279
+ return `${result.label}: already up to date (${result.filePath})`;
280
+ }
281
+ /** Ensure a client id is usable in generated docs/tests without importing the CLI command tree. */
282
+ export function isMcpClient(value) {
283
+ return MCP_CLIENTS.includes(value);
284
+ }
285
+ /** Small helper for tests and dry-run output. */
286
+ export function mcpEntryCommand(entry) {
287
+ return [entry.command, ...entry.args].map((part) => (/\s/.test(part) ? JSON.stringify(part) : part)).join(' ');
288
+ }
289
+ /** True when the generated entry points at the package registry rather than a local checkout. */
290
+ export function isPortableRegistryEntry(entry) {
291
+ return entry.args.some((arg) => /^fastrmemory@(?:latest|\d+\.\d+\.\d+)/.test(arg));
292
+ }
293
+ //# sourceMappingURL=mcp-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-init.js","sourceRoot":"","sources":["../../../src/installer/mcp-init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAGL,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAElF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,SAAS;IACT,UAAU;IACV,aAAa;IACb,gBAAgB;IAChB,OAAO;CACC,CAAC;AAsCX,MAAM,YAAY,GAAoC;IACpD,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;IAC7D,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;IACxD,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;IACzD,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;IACpD,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;IAC5D,OAAO,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;IAC7D,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;IACjD,WAAW,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;IACvD,gBAAgB,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;IAC/D,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;CAC5C,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAkB;IAChD,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,SAAS;CACV,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAkB;IAC7C,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,aAAa;IACb,gBAAgB;IAChB,OAAO;CACR,CAAC;AAEF,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,QAAkB,SAAS;IACxE,MAAM,SAAS,GAAG,KAAK;SACpB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SACxC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,YAAY,CAAC,oBAAoB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1C,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC;QACrF,IAAI,CAAE,WAAiC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,YAAY,CACpB,mBAAmB,IAAI,mBAAmB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAC5E,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,IAAmB,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,IAAI,YAAY,CAAC,oCAAoC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3D,MAAM,IAAI,YAAY,CAAC,uCAAuC,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC9F,MAAM,IAAI,YAAY,CAAC,kDAAkD,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACvD,MAAM,IAAI,YAAY,CAAC,mCAAmC,CAAC,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAMlC,EAAE;IACJ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,KAAK,QAAQ;QACtC,CAAC,CAAC,eAAe,OAAO,CAAC,cAAc,IAAI,eAAe,EAAE;QAC5D,CAAC,CAAC,oBAAoB,CAAC;IAEzB,IAAI,IAAc,CAAC;IACnB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK;YACR,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,MAAM;YACT,IAAI,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,MAAM;YACT,IAAI,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,MAAM;YACT,2EAA2E;YAC3E,qEAAqE;YACrE,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC5B,MAAM;IACV,CAAC;IAED,IAAI,OAAO,KAAK,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAEvD,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,EAAE,CAAC;QACvD,sFAAsF;QACtF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAe,EAAE,QAAyB;IACzE,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,OAAO,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO;YAC7D,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;YACrB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAmB,EACnB,KAAe,EACf,WAAmB,EACnB,OAAe,EACf,QAAyB;IAEzB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,KAAK,KAAK,SAAS;gBACxB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;gBACrC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACzC,KAAK,QAAQ;YACX,OAAO,KAAK,KAAK,SAAS;gBACxB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAChD,KAAK,QAAQ;YACX,OAAO,KAAK,KAAK,SAAS;gBACxB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC;gBAC/C,CAAC,CAAC,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjD,KAAK,UAAU;YACb,OAAO,yBAAyB,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;QACzD,KAAK,QAAQ;YACX,OAAO,KAAK,KAAK,SAAS;gBACxB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,CAAC;gBACpD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QACrD,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACvD,KAAK,UAAU;YACb,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;QACvE,KAAK,aAAa;YAChB,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,gBAAgB;YACnB,OAAO,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC7C,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAqB,EAAE,WAAmB;IACjE,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,cAAc,CAAC,KAAqB;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO;QACL,2BAA2B;QAC3B,aAAa,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QAC5C,WAAW,IAAI,GAAG;QAClB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAmB,EAAE,QAAgB,EAAE,KAAqB;IACrF,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,gBAAgB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3F,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;YACtB,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,gBAAgB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,gBAAgB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3C,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,EAAoB,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,gBAAgB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAuB;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,MAAM,SAAS,GAAG,qBAAqB,CAAC;QACtC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAErF,uFAAuF;IACvF,yCAAyC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,YAAY,CAAC,mBAAmB,MAAM,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,YAAY,CACpB,GAAG,IAAI,CAAC,KAAK,qBAAqB,KAAK,wCAAwC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAC3G,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACpC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClF,MAAM,MAAM,GAAkB;YAC5B,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK;YACL,QAAQ;YACR,KAAK;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK;YACd,MAAM;SACP,CAAC;QAEF,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACtC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,MAAM,KAAK,UAAU,IAAI,yBAAyB,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;YAC1E,MAAM,CAAC,OAAO,GAAG,6BAA6B,QAAQ,4CAA4C,CAAC;YACnG,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO;YACL,GAAG,MAAM;YACT,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAqB;IACvD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,GAAG,MAAM,CAAC,KAAK,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC;IAC1E,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,GAAG,MAAM,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IAC/E,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,GAAG,MAAM,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3D,CAAC;IACD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,GAAG,MAAM,CAAC,KAAK,aAAa,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,OAAO,GAAG,MAAM,CAAC,KAAK,aAAa,MAAM,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,GAAG,MAAM,CAAC,KAAK,yBAAyB,MAAM,CAAC,QAAQ,GAAG,CAAC;AACpE,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAQ,WAAiC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjH,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,uBAAuB,CAAC,KAAqB;IAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,uCAAuC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrF,CAAC"}
@@ -18,6 +18,8 @@ export declare function findOwnCliPath(): string | null;
18
18
  * copy lives in a throwaway npx cache.
19
19
  */
20
20
  export declare function resolveMcpCommand(platform?: NodeJS.Platform, cliPath?: string | null): McpServerEntry;
21
+ /** Pin a user-scoped MCP entry to a project root so the client's launch directory cannot change the database. */
22
+ export declare function withProjectRoot(entry: McpServerEntry, projectRoot: string): McpServerEntry;
21
23
  export declare function ensureAgentsDiscipline(projectRoot: string): 'added' | 'present';
22
24
  export declare function runInteractiveSetup(options?: SetupOptions): void;
23
25
  export declare function findSkillsDir(): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/installer/setup.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAqC,MAAM,kBAAkB,CAAC;AAKrF,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6GAA6G;IAC7G,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,uBAAuB,yrBASnC,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAE/E;AAED,wBAAgB,0BAA0B,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAWjF;AAED,mHAAmH;AACnH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAM9C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,OAAO,GAAE,MAAM,GAAG,IAAuB,GACxC,cAAc,CAWhB;AAuBD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAM/E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,YAAiB,GAAG,IAAI,CAqEpE;AAED,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAY7C;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,gFAAgF;AAChF,eAAO,MAAM,cAAc,UAI1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAUzD;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,mBAAwB,GAAG;IAChE,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CA8CA"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/installer/setup.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAqC,MAAM,kBAAkB,CAAC;AAKrF,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6GAA6G;IAC7G,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,uBAAuB,yrBASnC,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAE/E;AAED,wBAAgB,0BAA0B,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAWjF;AAED,mHAAmH;AACnH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAM9C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,OAAO,GAAE,MAAM,GAAG,IAAuB,GACxC,cAAc,CAWhB;AAED,iHAAiH;AACjH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,CAE1F;AAuBD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAM/E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,YAAiB,GAAG,IAAI,CAuEpE;AAED,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAY7C;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,gFAAgF;AAChF,eAAO,MAAM,cAAc,UAI1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAUzD;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,mBAAwB,GAAG;IAChE,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CA8CA"}
@@ -7,15 +7,15 @@ import { PACKAGE_VERSION } from '../version.js';
7
7
  import { updateJsonConfig, upsertMcpServer } from './json-config.js';
8
8
  const __filename = fileURLToPath(import.meta.url);
9
9
  const __dirname = path.dirname(__filename);
10
- export const AGENTS_DISCIPLINE_BLOCK = `
11
- <!-- fastrmemory:start -->
12
- ## ⚡ FastrMemory Autonomous Agent Discipline
13
-
14
- Every AI coding agent operating in this repository MUST follow these 3 cognitive rules:
15
- 1. **Pre-Edit Error Check**: Before editing or creating files, call \`fastr_trap_recall\` with your target file paths to check for active \`[TRAP]\` warnings.
16
- 2. **Immediate Trap Logging**: The moment you diagnose a test failure, syntax bug, or library incompatibility, call \`fastr_trap_log\` to save the lesson with a 2.0x recall boost.
17
- 3. **Session Verification**: When milestones are completed, call \`fastr_handoff\` with \`verifyStaging: true\` to graduate staging memories into verified rules.
18
- <!-- fastrmemory:end -->
10
+ export const AGENTS_DISCIPLINE_BLOCK = `
11
+ <!-- fastrmemory:start -->
12
+ ## ⚡ FastrMemory Autonomous Agent Discipline
13
+
14
+ Every AI coding agent operating in this repository MUST follow these 3 cognitive rules:
15
+ 1. **Pre-Edit Error Check**: Before editing or creating files, call \`fastr_trap_recall\` with your target file paths to check for active \`[TRAP]\` warnings.
16
+ 2. **Immediate Trap Logging**: The moment you diagnose a test failure, syntax bug, or library incompatibility, call \`fastr_trap_log\` to save the lesson with a 2.0x recall boost.
17
+ 3. **Session Verification**: When milestones are completed, call \`fastr_handoff\` with \`verifyStaging: true\` to graduate staging memories into verified rules.
18
+ <!-- fastrmemory:end -->
19
19
  `;
20
20
  export function getAntigravityConfigPath(homeDir = os.homedir()) {
21
21
  return path.join(homeDir, '.gemini', 'antigravity', 'mcp_config.json');
@@ -60,6 +60,10 @@ export function resolveMcpCommand(platform = process.platform, cliPath = findOwn
60
60
  ? { command: 'cmd', args: ['/c', 'npx', ...npxArgs] }
61
61
  : { command: 'npx', args: npxArgs };
62
62
  }
63
+ /** Pin a user-scoped MCP entry to a project root so the client's launch directory cannot change the database. */
64
+ export function withProjectRoot(entry, projectRoot) {
65
+ return { ...entry, args: [...entry.args, '--project', path.resolve(projectRoot)] };
66
+ }
63
67
  function wireMcpClient(target, entry) {
64
68
  if (target.requireDir && !fs.existsSync(target.requireDir)) {
65
69
  return 'Skipped (not installed)';
@@ -85,7 +89,7 @@ export function ensureAgentsDiscipline(projectRoot) {
85
89
  }
86
90
  export function runInteractiveSetup(options = {}) {
87
91
  const homeDir = options.homeDir ?? os.homedir();
88
- const projectRoot = options.projectRoot ?? process.cwd();
92
+ const projectRoot = path.resolve(options.projectRoot ?? process.cwd());
89
93
  console.log('\n=================================================');
90
94
  console.log('⚡ FastrMemory: Interactive Agent Setup Wizard');
91
95
  console.log(' High-Performance Cognitive Agent Memory Engine');
@@ -101,20 +105,22 @@ export function runInteractiveSetup(options = {}) {
101
105
  catch (err) {
102
106
  console.log(`[1/8] Project init note: ${err.message}\n`);
103
107
  }
104
- const mcpTarget = resolveMcpCommand();
108
+ const projectMcpTarget = resolveMcpCommand();
109
+ const globalMcpTarget = withProjectRoot(projectMcpTarget, projectRoot);
105
110
  const antigravityPath = getAntigravityConfigPath(homeDir);
106
111
  const claudeDesktopPath = getClaudeDesktopConfigPath(homeDir);
107
112
  // 2-6. Wire MCP clients. Existing configs are merged (never replaced), backed up once, and written atomically.
113
+ // User-scoped clients get an explicit --project so their launch directory cannot select the wrong database.
108
114
  const clients = [
109
- ['[2/8] Antigravity IDE:', { label: 'Antigravity', filePath: antigravityPath, requireDir: path.dirname(path.dirname(antigravityPath)) }],
110
- ['[3/8] Claude Desktop: ', { label: 'Claude Desktop', filePath: claudeDesktopPath, requireDir: path.dirname(claudeDesktopPath) }],
111
- ['[4/8] Cursor IDE: ', { label: 'Cursor', filePath: path.join(projectRoot, '.cursor', 'mcp.json') }],
115
+ ['[2/8] Antigravity IDE:', { label: 'Antigravity', filePath: antigravityPath, requireDir: path.dirname(path.dirname(antigravityPath)) }, globalMcpTarget],
116
+ ['[3/8] Claude Desktop: ', { label: 'Claude Desktop', filePath: claudeDesktopPath, requireDir: path.dirname(claudeDesktopPath) }, globalMcpTarget],
117
+ ['[4/8] Cursor IDE: ', { label: 'Cursor', filePath: path.join(projectRoot, '.cursor', 'mcp.json') }, projectMcpTarget],
112
118
  // Claude Code reads user-scoped MCP servers from ~/.claude.json (it ignores mcpServers in settings.json).
113
- ['[5/8] Claude Code: ', { label: 'Claude Code', filePath: path.join(homeDir, '.claude.json'), requireDir: path.join(homeDir, '.claude') }],
114
- ['[6/8] Windsurf: ', { label: 'Windsurf', filePath: path.join(homeDir, '.codeium', 'windsurf', 'mcp_config.json'), requireDir: path.join(homeDir, '.codeium', 'windsurf') }],
119
+ ['[5/8] Claude Code: ', { label: 'Claude Code', filePath: path.join(homeDir, '.claude.json'), requireDir: path.join(homeDir, '.claude') }, globalMcpTarget],
120
+ ['[6/8] Windsurf: ', { label: 'Windsurf', filePath: path.join(homeDir, '.codeium', 'windsurf', 'mcp_config.json'), requireDir: path.join(homeDir, '.codeium', 'windsurf') }, globalMcpTarget],
115
121
  ];
116
- for (const [prefix, target] of clients) {
117
- console.log(`${prefix} ${wireMcpClient(target, mcpTarget)}`);
122
+ for (const [prefix, target, entry] of clients) {
123
+ console.log(`${prefix} ${wireMcpClient(target, entry)}`);
118
124
  }
119
125
  // 7. Wire Autonomous Agent Discipline in AGENTS.md
120
126
  let agentStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/installer/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/installer/setup.ts"],"names":[],"mappings":"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"}
@@ -1345,17 +1345,17 @@ export function createFastrMcpServer(context, options = {}) {
1345
1345
  const graphTable = mem.project_id === 'global' && repo.hasGlobalDb()
1346
1346
  ? 'global_db.graph_edges'
1347
1347
  : 'graph_edges';
1348
- const graphEdges = db.prepare(`
1349
- SELECT id, source_id, target_id, edge_type, weight, created_at
1350
- FROM ${graphTable}
1351
- WHERE project_id = ? AND (source_id = ? OR target_id = ?)
1352
- ORDER BY created_at ASC
1348
+ const graphEdges = db.prepare(`
1349
+ SELECT id, source_id, target_id, edge_type, weight, created_at
1350
+ FROM ${graphTable}
1351
+ WHERE project_id = ? AND (source_id = ? OR target_id = ?)
1352
+ ORDER BY created_at ASC
1353
1353
  `).all(mem.project_id, mem.id, mem.id);
1354
- const conflictRows = db.prepare(`
1355
- SELECT *
1356
- FROM memory_conflicts
1357
- WHERE project_id = ? AND (memory_a_id = ? OR memory_b_id = ?)
1358
- ORDER BY CASE status WHEN 'open' THEN 0 ELSE 1 END, id DESC
1354
+ const conflictRows = db.prepare(`
1355
+ SELECT *
1356
+ FROM memory_conflicts
1357
+ WHERE project_id = ? AND (memory_a_id = ? OR memory_b_id = ?)
1358
+ ORDER BY CASE status WHEN 'open' THEN 0 ELSE 1 END, id DESC
1359
1359
  `).all(mem.project_id, mem.id, mem.id);
1360
1360
  const conflicts = conflictRows.map((conflict) => {
1361
1361
  const otherId = conflict.memory_a_id === mem.id ? conflict.memory_b_id : conflict.memory_a_id;
@@ -1478,12 +1478,12 @@ export function createFastrMcpServer(context, options = {}) {
1478
1478
  where.push('(created_at < ? OR (created_at = ? AND id < ?))');
1479
1479
  params.push(c.createdAt, c.createdAt, c.id);
1480
1480
  }
1481
- const rows = db.prepare(`
1482
- SELECT id, title, kind, module, status, reward_score, created_at
1483
- FROM memories
1484
- WHERE ${where.join(' AND ')}
1485
- ORDER BY created_at DESC, id DESC
1486
- LIMIT ?
1481
+ const rows = db.prepare(`
1482
+ SELECT id, title, kind, module, status, reward_score, created_at
1483
+ FROM memories
1484
+ WHERE ${where.join(' AND ')}
1485
+ ORDER BY created_at DESC, id DESC
1486
+ LIMIT ?
1487
1487
  `).all(...params, limit + 1);
1488
1488
  const page = rows.slice(0, limit);
1489
1489
  const last = page[page.length - 1];
@@ -1677,15 +1677,15 @@ export function createFastrMcpServer(context, options = {}) {
1677
1677
  // RESOURCE 2: fastr://project/traps
1678
1678
  // ==========================================
1679
1679
  server.registerResource('traps', 'fastr://project/traps', { description: 'All active [TRAP] warnings for this project', mimeType: 'text/markdown' }, async (uri) => {
1680
- const rows = db.prepare(`
1681
- SELECT id, module, title, content
1682
- FROM memories
1683
- WHERE project_id = ?
1684
- AND kind = 'error_trap'
1685
- AND valid_to IS NULL
1686
- AND status != 'superseded'
1687
- AND status != 'dormant'
1688
- ORDER BY reward_score DESC, created_at DESC
1680
+ const rows = db.prepare(`
1681
+ SELECT id, module, title, content
1682
+ FROM memories
1683
+ WHERE project_id = ?
1684
+ AND kind = 'error_trap'
1685
+ AND valid_to IS NULL
1686
+ AND status != 'superseded'
1687
+ AND status != 'dormant'
1688
+ ORDER BY reward_score DESC, created_at DESC
1689
1689
  `).all(config.projectId);
1690
1690
  const text = rows.length > 0
1691
1691
  ? rows.map((r) => `### [${r.id}] [TRAP] ${r.title} (${r.module})\n${r.content}`).join('\n\n---\n\n')