@gramatr/mcp 0.8.10 → 0.8.11

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.
@@ -113,7 +113,7 @@ export function printHelp() {
113
113
  gramatr-mcp clear-creds Remove all stored local credentials
114
114
  gramatr-mcp setup claude Configure Claude Code to use this server
115
115
  gramatr-mcp setup claude --clean-install
116
- Remove legacy Claude + PAI/Fabric/AIOS artifacts first
116
+ Remove legacy pre-rebrand artifacts first
117
117
  gramatr-mcp setup codex Configure Codex hook wiring
118
118
  gramatr-mcp setup claude-desktop Configure Claude Desktop to use this server
119
119
  gramatr-mcp setup chatgpt-desktop Configure ChatGPT Desktop to use this server
@@ -0,0 +1,26 @@
1
+ /**
2
+ * setup-config-io — Config file reading/writing, path resolution, managed block helpers.
3
+ *
4
+ * Extracted from setup.ts for SRP: pure I/O utilities with no setup orchestration.
5
+ */
6
+ declare const HOME: string;
7
+ export declare function getClaudeConfigPath(): string;
8
+ export declare function getClaudeSettingsPath(): string;
9
+ export declare function getCodexHooksPath(): string;
10
+ export declare function getCodexConfigPath(): string;
11
+ export declare function getClaudeMarkdownPath(): string;
12
+ export declare function getCodexAgentsPath(): string;
13
+ export declare function getGramatrSettingsPath(): string;
14
+ export declare function readJsonFile<T>(path: string, fallback: T): T;
15
+ /**
16
+ * Read existing Claude config or return empty.
17
+ */
18
+ export declare function readClaudeConfig(configPath: string): Record<string, unknown>;
19
+ export declare function escapeRegExp(text: string): string;
20
+ export declare function upsertManagedBlock(existing: string, content: string, startMarker: string, endMarker: string): string;
21
+ export declare function parseJson(path: string): Record<string, unknown> | null;
22
+ export declare function readManagedBlock(path: string, startMarker: string, endMarker: string): string | null;
23
+ export declare function ensureLocalSettings(): void;
24
+ export declare function hasHookCommand(config: Record<string, unknown> | null, eventName: string, needle: string): boolean;
25
+ export { HOME };
26
+ //# sourceMappingURL=setup-config-io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-config-io.d.ts","sourceRoot":"","sources":["../../src/bin/setup-config-io.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,QAAA,MAAM,IAAI,QAAoD,CAAC;AAE/D,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAG/C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAM5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAO5E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAapH;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAMtE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASpG;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CA0B1C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAkBjH;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * setup-config-io — Config file reading/writing, path resolution, managed block helpers.
3
+ *
4
+ * Extracted from setup.ts for SRP: pure I/O utilities with no setup orchestration.
5
+ */
6
+ import { readFileSync, writeFileSync, existsSync, mkdirSync, } from 'node:fs';
7
+ import { join, dirname } from 'node:path';
8
+ import { getGramatrDirFromEnv } from '../config-runtime.js';
9
+ // gramatr-allow: C1 — CLI entry point, reads HOME for config path
10
+ const HOME = process.env.HOME || process.env.USERPROFILE || '';
11
+ export function getClaudeConfigPath() {
12
+ return join(HOME, '.claude.json');
13
+ }
14
+ export function getClaudeSettingsPath() {
15
+ return join(HOME, '.claude', 'settings.json');
16
+ }
17
+ export function getCodexHooksPath() {
18
+ return join(HOME, '.codex', 'hooks.json');
19
+ }
20
+ export function getCodexConfigPath() {
21
+ return join(HOME, '.codex', 'config.toml');
22
+ }
23
+ export function getClaudeMarkdownPath() {
24
+ return join(HOME, '.claude', 'CLAUDE.md');
25
+ }
26
+ export function getCodexAgentsPath() {
27
+ return join(HOME, '.codex', 'AGENTS.md');
28
+ }
29
+ export function getGramatrSettingsPath() {
30
+ const gramatrDir = getGramatrDirFromEnv() || join(HOME, '.gramatr');
31
+ return join(gramatrDir, 'settings.json');
32
+ }
33
+ export function readJsonFile(path, fallback) {
34
+ try {
35
+ return JSON.parse(readFileSync(path, 'utf8'));
36
+ }
37
+ catch {
38
+ return fallback;
39
+ }
40
+ }
41
+ /**
42
+ * Read existing Claude config or return empty.
43
+ */
44
+ export function readClaudeConfig(configPath) {
45
+ try {
46
+ const raw = readFileSync(configPath, 'utf8');
47
+ return JSON.parse(raw);
48
+ }
49
+ catch {
50
+ return {};
51
+ }
52
+ }
53
+ export function escapeRegExp(text) {
54
+ return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
55
+ }
56
+ export function upsertManagedBlock(existing, content, startMarker, endMarker) {
57
+ const block = content.trim();
58
+ const pattern = new RegExp(`${escapeRegExp(startMarker)}[\\s\\S]*?${escapeRegExp(endMarker)}`, 'm');
59
+ if (pattern.test(existing)) {
60
+ return existing.replace(pattern, block);
61
+ }
62
+ const trimmed = existing.trim();
63
+ return trimmed ? `${trimmed}\n\n${block}\n` : `${block}\n`;
64
+ }
65
+ export function parseJson(path) {
66
+ try {
67
+ return JSON.parse(readFileSync(path, 'utf8'));
68
+ }
69
+ catch {
70
+ return null;
71
+ }
72
+ }
73
+ export function readManagedBlock(path, startMarker, endMarker) {
74
+ if (!existsSync(path))
75
+ return null;
76
+ const body = readFileSync(path, 'utf8');
77
+ const pattern = new RegExp(`${escapeRegExp(startMarker)}[\\s\\S]*?${escapeRegExp(endMarker)}`, 'm');
78
+ const match = body.match(pattern);
79
+ return match ? match[0] : null;
80
+ }
81
+ export function ensureLocalSettings() {
82
+ const settingsPath = getGramatrSettingsPath();
83
+ const settingsDir = dirname(settingsPath);
84
+ const current = existsSync(settingsPath)
85
+ ? readClaudeConfig(settingsPath)
86
+ : {};
87
+ const principalName = process.env.GRAMATR_PRINCIPAL_NAME || current.principal?.name || 'User';
88
+ const principalTimezone = process.env.GRAMATR_PRINCIPAL_TIMEZONE || current.principal?.timezone || 'UTC';
89
+ const next = {
90
+ ...current,
91
+ daidentity: current.daidentity || {
92
+ name: 'gramatr',
93
+ fullName: 'gramatr — Personal AI',
94
+ displayName: 'gramatr',
95
+ color: '#3B82F6',
96
+ },
97
+ principal: {
98
+ ...(current.principal || {}),
99
+ name: principalName,
100
+ timezone: principalTimezone,
101
+ },
102
+ };
103
+ mkdirSync(settingsDir, { recursive: true });
104
+ writeFileSync(settingsPath, JSON.stringify(next, null, 2) + '\n', 'utf8');
105
+ }
106
+ export function hasHookCommand(config, eventName, needle) {
107
+ if (!config || typeof config !== 'object')
108
+ return false;
109
+ const hooksRoot = config.hooks;
110
+ if (!hooksRoot || typeof hooksRoot !== 'object')
111
+ return false;
112
+ const entries = hooksRoot[eventName];
113
+ if (!Array.isArray(entries))
114
+ return false;
115
+ for (const entry of entries) {
116
+ if (!entry || typeof entry !== 'object')
117
+ continue;
118
+ const commands = entry.hooks;
119
+ if (!Array.isArray(commands))
120
+ continue;
121
+ for (const command of commands) {
122
+ const value = command?.command;
123
+ if (typeof value === 'string' && value.includes(needle)) {
124
+ return true;
125
+ }
126
+ }
127
+ }
128
+ return false;
129
+ }
130
+ export { HOME };
131
+ //# sourceMappingURL=setup-config-io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-config-io.js","sourceRoot":"","sources":["../../src/bin/setup-config-io.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * setup-legacy — Legacy migration: cleanup of pre-rebrand artifacts.
3
+ *
4
+ * Extracted from setup.ts for SRP: all legacy detection, sanitization,
5
+ * managed-block stripping, and clean-install logic.
6
+ */
7
+ export declare function cleanLegacyClaudeArtifacts(dryRun: boolean): void;
8
+ export declare function runCleanInstall(dryRun: boolean): void;
9
+ //# sourceMappingURL=setup-legacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-legacy.d.ts","sourceRoot":"","sources":["../../src/bin/setup-legacy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoJH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAmDhE;AA4GD,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAKrD"}
@@ -0,0 +1,289 @@
1
+ /**
2
+ * setup-legacy — Legacy migration: cleanup of pre-rebrand artifacts.
3
+ *
4
+ * Extracted from setup.ts for SRP: all legacy detection, sanitization,
5
+ * managed-block stripping, and clean-install logic.
6
+ */
7
+ import { readFileSync, writeFileSync, existsSync, mkdirSync, rmSync, readdirSync, statSync, lstatSync, readlinkSync, unlinkSync, } from 'node:fs';
8
+ import { join, dirname } from 'node:path';
9
+ import { getClaudeDesktopConfigPath, getChatgptDesktopConfigPath, getCursorConfigPath, getGeminiHooksPath, getGeminiManifestPath, getVscodeConfigPath, getWindsurfConfigPath, } from '../setup/targets.js';
10
+ import { readJsonFile, escapeRegExp, getClaudeConfigPath, getClaudeMarkdownPath, getClaudeSettingsPath, getCodexAgentsPath, getCodexHooksPath, HOME, } from './setup-config-io.js';
11
+ const LEGACY_HOOK_BASENAMES = [
12
+ 'LoadContext.hook.ts',
13
+ 'SecurityValidator.hook.ts',
14
+ 'RatingCapture.hook.ts',
15
+ 'VoiceGate.hook.ts',
16
+ 'AutoWorkCreation.hook.ts',
17
+ 'WorkCompletionLearning.hook.ts',
18
+ 'RelationshipMemory.hook.ts',
19
+ 'SessionSummary.hook.ts',
20
+ 'UpdateCounts.hook.ts',
21
+ 'IntegrityCheck.hook.ts',
22
+ ];
23
+ const LEGACY_MCP_KEY_PATTERNS = [/^aios/i, /^pai$/i, /^pai[-_]/i, /^fabric/i];
24
+ const LEGACY_CLAUDE_ARTIFACT_PATTERNS = [
25
+ /^pai[-_]/i,
26
+ /^pai$/i,
27
+ /^fabric[-_]/i,
28
+ /^fabric$/i,
29
+ /^aios[-_]/i,
30
+ /^aios$/i,
31
+ /^extract[-_]?wisdom/i,
32
+ /^pattern[-_]/i,
33
+ /^official[-_]?pattern/i,
34
+ /^becreative$/i,
35
+ /^beexpert$/i,
36
+ ];
37
+ const LEGACY_MANAGED_BLOCK_MARKERS = [
38
+ { start: '<!-- AIOS-START -->', end: '<!-- AIOS-END -->' },
39
+ { start: '<!-- PAI-START -->', end: '<!-- PAI-END -->' },
40
+ { start: '<!-- FABRIC-START -->', end: '<!-- FABRIC-END -->' },
41
+ { start: '<!-- GMTR-START -->', end: '<!-- GMTR-END -->' },
42
+ ];
43
+ function matchesLegacyClaudeArtifact(name) {
44
+ const stem = name.replace(/\.md$/i, '');
45
+ return LEGACY_CLAUDE_ARTIFACT_PATTERNS.some((pattern) => pattern.test(stem));
46
+ }
47
+ function sanitizeLegacyMcpServers(raw) {
48
+ if (!raw.mcpServers || typeof raw.mcpServers !== 'object')
49
+ return raw;
50
+ const servers = raw.mcpServers;
51
+ const next = {};
52
+ for (const [key, value] of Object.entries(servers)) {
53
+ if (LEGACY_MCP_KEY_PATTERNS.some((pattern) => pattern.test(key)))
54
+ continue;
55
+ next[key] = value;
56
+ }
57
+ return { ...raw, mcpServers: next };
58
+ }
59
+ function stripManagedBlock(content, startMarker, endMarker) {
60
+ const pattern = new RegExp(`${escapeRegExp(startMarker)}[\\s\\S]*?${escapeRegExp(endMarker)}\\n?`, 'gm');
61
+ return content.replace(pattern, '').trimEnd() + '\n';
62
+ }
63
+ function isLegacyHookCommand(command) {
64
+ if (command.includes('/.claude/hooks/'))
65
+ return true;
66
+ if (command.includes('/aios-v2-client/'))
67
+ return true;
68
+ if (command.includes('/fabric/'))
69
+ return true;
70
+ if (command.includes('/pai/'))
71
+ return true;
72
+ return LEGACY_HOOK_BASENAMES.some((basename) => command.includes(`/${basename}`));
73
+ }
74
+ function sanitizeHookEventArray(value) {
75
+ if (!Array.isArray(value))
76
+ return value;
77
+ return value
78
+ .map((entry) => {
79
+ if (!entry || typeof entry !== 'object')
80
+ return entry;
81
+ const commands = entry.hooks;
82
+ if (!Array.isArray(commands))
83
+ return entry;
84
+ const filtered = commands.filter((cmd) => {
85
+ const command = typeof cmd?.command === 'string' ? cmd.command : '';
86
+ return !command || !isLegacyHookCommand(command);
87
+ });
88
+ if (filtered.length === 0)
89
+ return null;
90
+ return { ...entry, hooks: filtered };
91
+ })
92
+ .filter(Boolean);
93
+ }
94
+ function sanitizeHookFile(hookFile) {
95
+ const hooksRoot = hookFile.hooks;
96
+ if (!hooksRoot || typeof hooksRoot !== 'object')
97
+ return hookFile;
98
+ const nextHooks = { ...hooksRoot };
99
+ for (const [eventName, value] of Object.entries(nextHooks)) {
100
+ nextHooks[eventName] = sanitizeHookEventArray(value);
101
+ }
102
+ return { ...hookFile, hooks: nextHooks };
103
+ }
104
+ function removeDirectoryIfExists(path, dryRun) {
105
+ if (!existsSync(path))
106
+ return;
107
+ if (dryRun) {
108
+ process.stderr.write(`[gramatr-mcp] clean-install dry-run: would remove ${path}\n`);
109
+ return;
110
+ }
111
+ rmSync(path, { recursive: true, force: true });
112
+ process.stderr.write(`[gramatr-mcp] clean-install: removed ${path}\n`);
113
+ }
114
+ function removeFileIfExists(path, dryRun) {
115
+ if (!existsSync(path))
116
+ return;
117
+ if (dryRun) {
118
+ process.stderr.write(`[gramatr-mcp] clean-install dry-run: would remove ${path}\n`);
119
+ return;
120
+ }
121
+ rmSync(path, { force: true });
122
+ process.stderr.write(`[gramatr-mcp] clean-install: removed ${path}\n`);
123
+ }
124
+ export function cleanLegacyClaudeArtifacts(dryRun) {
125
+ process.stderr.write('[gramatr-mcp] clean-install: removing legacy pre-rebrand artifacts\n');
126
+ const legacyDirs = [
127
+ join(HOME, 'aios-v2-client'),
128
+ join(HOME, '.claude', 'hooks'),
129
+ ];
130
+ for (const dir of legacyDirs)
131
+ removeDirectoryIfExists(dir, dryRun);
132
+ const commandsDir = join(HOME, '.claude', 'commands');
133
+ if (existsSync(commandsDir)) {
134
+ try {
135
+ for (const entry of readdirSync(commandsDir)) {
136
+ if (!entry.endsWith('.md'))
137
+ continue;
138
+ if (!matchesLegacyClaudeArtifact(entry))
139
+ continue;
140
+ removeFileIfExists(join(commandsDir, entry), dryRun);
141
+ }
142
+ }
143
+ catch {
144
+ // non-critical
145
+ }
146
+ }
147
+ const skillsDir = join(HOME, '.claude', 'skills');
148
+ if (existsSync(skillsDir)) {
149
+ try {
150
+ for (const entry of readdirSync(skillsDir)) {
151
+ const path = join(skillsDir, entry);
152
+ if (!statSync(path).isDirectory())
153
+ continue;
154
+ if (!matchesLegacyClaudeArtifact(entry))
155
+ continue;
156
+ removeDirectoryIfExists(path, dryRun);
157
+ }
158
+ }
159
+ catch {
160
+ // non-critical
161
+ }
162
+ }
163
+ const clientHooksDir = join(HOME, '.gramatr', 'hooks');
164
+ if (existsSync(clientHooksDir)) {
165
+ for (const basename of LEGACY_HOOK_BASENAMES) {
166
+ removeFileIfExists(join(clientHooksDir, basename), dryRun);
167
+ }
168
+ try {
169
+ for (const entry of readdirSync(clientHooksDir)) {
170
+ if (!entry.endsWith('.sh'))
171
+ continue;
172
+ removeFileIfExists(join(clientHooksDir, entry), dryRun);
173
+ }
174
+ }
175
+ catch {
176
+ // non-critical
177
+ }
178
+ }
179
+ }
180
+ function sanitizeLegacyMcpServersInFile(path, dryRun) {
181
+ const current = readJsonFile(path, {});
182
+ const next = sanitizeLegacyMcpServers(current);
183
+ if (JSON.stringify(next) === JSON.stringify(current))
184
+ return;
185
+ if (dryRun) {
186
+ process.stderr.write(`[gramatr-mcp] clean-install dry-run: would sanitize legacy mcpServers in ${path}\n`);
187
+ return;
188
+ }
189
+ mkdirSync(dirname(path), { recursive: true });
190
+ writeFileSync(path, JSON.stringify(next, null, 2) + '\n', 'utf8');
191
+ process.stderr.write(`[gramatr-mcp] clean-install: sanitized legacy mcpServers in ${path}\n`);
192
+ }
193
+ function sanitizeHookFileAtPath(path, dryRun, label) {
194
+ const current = readJsonFile(path, {});
195
+ const next = sanitizeHookFile(current);
196
+ if (JSON.stringify(next) === JSON.stringify(current))
197
+ return;
198
+ if (dryRun) {
199
+ process.stderr.write(`[gramatr-mcp] clean-install dry-run: would sanitize legacy hooks in ${path}\n`);
200
+ return;
201
+ }
202
+ mkdirSync(dirname(path), { recursive: true });
203
+ writeFileSync(path, JSON.stringify(next, null, 2) + '\n', 'utf8');
204
+ process.stderr.write(`[gramatr-mcp] clean-install: sanitized legacy hooks (${label}) in ${path}\n`);
205
+ }
206
+ function stripLegacyManagedBlocks(path, dryRun) {
207
+ if (!existsSync(path))
208
+ return;
209
+ const current = readFileSync(path, 'utf8');
210
+ let next = current;
211
+ for (const marker of LEGACY_MANAGED_BLOCK_MARKERS) {
212
+ next = stripManagedBlock(next, marker.start, marker.end);
213
+ }
214
+ if (next === current)
215
+ return;
216
+ if (dryRun) {
217
+ process.stderr.write(`[gramatr-mcp] clean-install dry-run: would strip legacy managed blocks in ${path}\n`);
218
+ return;
219
+ }
220
+ writeFileSync(path, next, 'utf8');
221
+ process.stderr.write(`[gramatr-mcp] clean-install: stripped legacy managed blocks in ${path}\n`);
222
+ }
223
+ function cleanAllInstallTargets(dryRun) {
224
+ sanitizeLegacyMcpServersInFile(getClaudeConfigPath(), dryRun);
225
+ sanitizeLegacyMcpServersInFile(join(HOME, '.claude', 'mcp.json'), dryRun);
226
+ sanitizeLegacyMcpServersInFile(getClaudeDesktopConfigPath(HOME), dryRun);
227
+ sanitizeLegacyMcpServersInFile(getChatgptDesktopConfigPath(HOME), dryRun);
228
+ sanitizeLegacyMcpServersInFile(getCursorConfigPath(HOME), dryRun);
229
+ sanitizeLegacyMcpServersInFile(getWindsurfConfigPath(HOME), dryRun);
230
+ sanitizeLegacyMcpServersInFile(getVscodeConfigPath(HOME), dryRun);
231
+ sanitizeLegacyMcpServersInFile(getGeminiManifestPath(HOME), dryRun);
232
+ sanitizeHookFileAtPath(getClaudeSettingsPath(), dryRun, 'claude');
233
+ sanitizeHookFileAtPath(getCodexHooksPath(), dryRun, 'codex');
234
+ sanitizeHookFileAtPath(getGeminiHooksPath(HOME), dryRun, 'gemini');
235
+ stripLegacyManagedBlocks(getClaudeMarkdownPath(), dryRun);
236
+ stripLegacyManagedBlocks(getCodexAgentsPath(), dryRun);
237
+ }
238
+ function cleanLegacyHomeNodeShims(dryRun) {
239
+ const candidates = new Set();
240
+ candidates.add(join(HOME, '.local', 'bin', 'gramatr-mcp'));
241
+ candidates.add(join(HOME, '.local', 'bin', 'gramatr'));
242
+ candidates.add(join(HOME, 'bin', 'gramatr-mcp'));
243
+ candidates.add(join(HOME, 'bin', 'gramatr'));
244
+ candidates.add(join(HOME, 'bin', 'gramatr-mac'));
245
+ for (const shimPath of candidates) {
246
+ if (!existsSync(shimPath))
247
+ continue;
248
+ try {
249
+ let stale = false;
250
+ if (lstatSync(shimPath).isSymbolicLink()) {
251
+ const target = readlinkSync(shimPath);
252
+ if (target.includes('aios-v2-client')
253
+ || target.includes('/packages/client/bin/gramatr')
254
+ || target.includes('/fabric/')
255
+ || target.includes('/pai/')) {
256
+ stale = true;
257
+ }
258
+ }
259
+ else {
260
+ const body = readFileSync(shimPath, 'utf8');
261
+ if (body.includes('aios-v2-client')
262
+ || body.includes('/packages/client/bin/gramatr')
263
+ || body.includes('/fabric/')
264
+ || body.includes('/pai/')) {
265
+ stale = true;
266
+ }
267
+ }
268
+ if (!stale)
269
+ continue;
270
+ if (dryRun) {
271
+ process.stderr.write(`[gramatr-mcp] clean-install dry-run: would remove stale shim ${shimPath}\n`);
272
+ }
273
+ else {
274
+ unlinkSync(shimPath);
275
+ process.stderr.write(`[gramatr-mcp] clean-install: removed stale shim ${shimPath}\n`);
276
+ }
277
+ }
278
+ catch {
279
+ // non-critical
280
+ }
281
+ }
282
+ }
283
+ export function runCleanInstall(dryRun) {
284
+ process.stderr.write('[gramatr-mcp] clean-install: running global legacy cleanup across known install targets\n');
285
+ cleanAllInstallTargets(dryRun);
286
+ cleanLegacyClaudeArtifacts(dryRun);
287
+ cleanLegacyHomeNodeShims(dryRun);
288
+ }
289
+ //# sourceMappingURL=setup-legacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-legacy.js","sourceRoot":"","sources":["../../src/bin/setup-legacy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * setup-platforms — Platform-specific setup functions.
3
+ *
4
+ * Extracted from setup.ts for SRP: each target's setup logic
5
+ * (Codex, Gemini, OpenCode, web connectors, generic MCP targets).
6
+ */
7
+ import { buildInstallPromptSuggestion } from '../setup/instructions.js';
8
+ export declare function ensureCodexMcpServerConfig(configToml: string): string;
9
+ export declare function emitInstallPromptSuggestion(target: Parameters<typeof buildInstallPromptSuggestion>[0]): void;
10
+ export declare function setupCodex(dryRun?: boolean, showPrompts?: boolean): void;
11
+ /**
12
+ * Generic MCP-only target setup — merges the gramatr MCP server entry into
13
+ * the target's JSON config file. Used by all platforms that support MCP via
14
+ * a JSON config (Claude Desktop, ChatGPT Desktop, Cursor, Windsurf, VS Code).
15
+ */
16
+ export declare function setupMcpTarget(targetName: string, configPath: string, dryRun: boolean): void;
17
+ export declare function setupGemini(dryRun?: boolean, showPrompts?: boolean): void;
18
+ export declare function setupOpenCode(dryRun?: boolean, showPrompts?: boolean): void;
19
+ export declare function setupWeb(target?: 'claude-web' | 'chatgpt-web' | 'gemini-web'): Promise<void>;
20
+ //# sourceMappingURL=setup-platforms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-platforms.d.ts","sourceRoot":"","sources":["../../src/bin/setup-platforms.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,OAAO,EAIL,4BAA4B,EAC7B,MAAM,0BAA0B,CAAC;AA0ClC,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAmBrE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAM5G;AAED,wBAAgB,UAAU,CAAC,MAAM,UAAQ,EAAE,WAAW,UAAQ,GAAG,IAAI,CAuCpE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAkB5F;AAED,wBAAgB,WAAW,CAAC,MAAM,UAAQ,EAAE,WAAW,UAAQ,GAAG,IAAI,CA2BrE;AAED,wBAAgB,aAAa,CAAC,MAAM,UAAQ,EAAE,WAAW,UAAQ,GAAG,IAAI,CAyBvE;AAED,wBAAsB,QAAQ,CAAC,MAAM,GAAE,YAAY,GAAG,aAAa,GAAG,YAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAmChH"}