@sudosandwich/limps 2.5.0 → 2.6.1

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.
@@ -5,6 +5,7 @@
5
5
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
6
6
  import { dirname, join } from 'path';
7
7
  import { homedir } from 'os';
8
+ import * as toml from '@iarna/toml';
8
9
  /**
9
10
  * Claude Desktop adapter
10
11
  * Uses: mcpServers key, npx command, ~/Library/Application Support/Claude/claude_desktop_config.json
@@ -191,7 +192,157 @@ export class ClaudeCodeAdapter {
191
192
  }
192
193
  }
193
194
  /**
194
- * Get adapter for a client type
195
+ * OpenAI Codex adapter
196
+ * Uses: mcp_servers key, TOML config at ~/.codex/config.toml
197
+ */
198
+ export class CodexAdapter {
199
+ getConfigPath() {
200
+ const home = homedir();
201
+ return join(home, '.codex', 'config.toml');
202
+ }
203
+ getServersKey() {
204
+ return 'mcp_servers';
205
+ }
206
+ readConfig() {
207
+ const configPath = this.getConfigPath();
208
+ const configDir = dirname(configPath);
209
+ if (!existsSync(configDir)) {
210
+ mkdirSync(configDir, { recursive: true });
211
+ }
212
+ if (existsSync(configPath)) {
213
+ try {
214
+ const content = readFileSync(configPath, 'utf-8');
215
+ return toml.parse(content);
216
+ }
217
+ catch (error) {
218
+ throw new Error(`Failed to parse Codex config: ${error instanceof Error ? error.message : 'unknown error'}`);
219
+ }
220
+ }
221
+ return {};
222
+ }
223
+ writeConfig(config) {
224
+ const configPath = this.getConfigPath();
225
+ const configDir = dirname(configPath);
226
+ if (!existsSync(configDir)) {
227
+ mkdirSync(configDir, { recursive: true });
228
+ }
229
+ try {
230
+ const content = toml.stringify(config);
231
+ writeFileSync(configPath, content, 'utf-8');
232
+ }
233
+ catch (error) {
234
+ throw new Error(`Failed to write Codex config: ${error instanceof Error ? error.message : 'unknown error'}`);
235
+ }
236
+ }
237
+ createServerConfig(configPath) {
238
+ return {
239
+ command: 'limps',
240
+ args: ['serve', '--config', configPath],
241
+ };
242
+ }
243
+ getDisplayName() {
244
+ return 'OpenAI Codex';
245
+ }
246
+ }
247
+ /**
248
+ * Get the default local config path for a given client type
249
+ */
250
+ export function getLocalConfigPath(clientType, customPath) {
251
+ if (customPath) {
252
+ return customPath;
253
+ }
254
+ switch (clientType) {
255
+ case 'cursor':
256
+ return join(process.cwd(), '.cursor', 'mcp.json');
257
+ case 'claude-code':
258
+ return join(process.cwd(), '.mcp.json');
259
+ case 'custom':
260
+ return join(process.cwd(), '.mcp.json');
261
+ default:
262
+ return join(process.cwd(), '.mcp.json');
263
+ }
264
+ }
265
+ /**
266
+ * Get the display name for a local config client type
267
+ */
268
+ export function getLocalConfigDisplayName(clientType) {
269
+ switch (clientType) {
270
+ case 'cursor':
271
+ return 'Cursor Local (.cursor/mcp.json)';
272
+ case 'claude-code':
273
+ return 'Claude Code Local (.mcp.json)';
274
+ case 'custom':
275
+ return 'Local MCP Config';
276
+ default:
277
+ return 'Local MCP Config';
278
+ }
279
+ }
280
+ /**
281
+ * Local workspace MCP config adapter
282
+ * Uses: mcpServers key, limps command, client-specific local config paths
283
+ *
284
+ * Default paths by client:
285
+ * - Cursor: .cursor/mcp.json
286
+ * - Claude Code: .mcp.json
287
+ * - Custom: user-specified path
288
+ */
289
+ export class LocalMcpAdapter {
290
+ configPath;
291
+ clientType;
292
+ constructor(clientType = 'claude-code', customPath) {
293
+ this.clientType = clientType;
294
+ this.configPath = getLocalConfigPath(clientType, customPath);
295
+ }
296
+ getConfigPath() {
297
+ return this.configPath;
298
+ }
299
+ getServersKey() {
300
+ return 'mcpServers';
301
+ }
302
+ readConfig() {
303
+ const configPath = this.getConfigPath();
304
+ // Read existing config or return empty
305
+ if (existsSync(configPath)) {
306
+ try {
307
+ const content = readFileSync(configPath, 'utf-8');
308
+ return JSON.parse(content);
309
+ }
310
+ catch (error) {
311
+ throw new Error(`Failed to parse ${this.getDisplayName()}: ${error instanceof Error ? error.message : 'unknown error'}`);
312
+ }
313
+ }
314
+ return {};
315
+ }
316
+ writeConfig(config) {
317
+ const configPath = this.getConfigPath();
318
+ const configDir = dirname(configPath);
319
+ // Ensure directory exists
320
+ if (!existsSync(configDir)) {
321
+ mkdirSync(configDir, { recursive: true });
322
+ }
323
+ try {
324
+ writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
325
+ }
326
+ catch (error) {
327
+ throw new Error(`Failed to write ${this.getDisplayName()}: ${error instanceof Error ? error.message : 'unknown error'}`);
328
+ }
329
+ }
330
+ createServerConfig(configPath) {
331
+ // Local configs can use the global limps command
332
+ return {
333
+ command: 'limps',
334
+ args: ['serve', '--config', configPath],
335
+ };
336
+ }
337
+ getDisplayName() {
338
+ return getLocalConfigDisplayName(this.clientType);
339
+ }
340
+ getClientType() {
341
+ return this.clientType;
342
+ }
343
+ }
344
+ /**
345
+ * Get adapter for a global client type
195
346
  */
196
347
  export function getAdapter(clientType) {
197
348
  switch (clientType) {
@@ -201,8 +352,22 @@ export function getAdapter(clientType) {
201
352
  return new CursorAdapter();
202
353
  case 'claude-code':
203
354
  return new ClaudeCodeAdapter();
355
+ case 'codex':
356
+ return new CodexAdapter();
204
357
  default:
205
358
  throw new Error(`Unknown client type: ${clientType}`);
206
359
  }
207
360
  }
361
+ /**
362
+ * Get a local adapter for a specific client type
363
+ */
364
+ export function getLocalAdapter(clientType, customPath) {
365
+ return new LocalMcpAdapter(clientType, customPath);
366
+ }
367
+ /**
368
+ * Check if a client type supports local workspace configs
369
+ */
370
+ export function supportsLocalConfig(clientType) {
371
+ return clientType === 'cursor' || clientType === 'claude-code';
372
+ }
208
373
  //# sourceMappingURL=mcp-client-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-client-adapter.js","sourceRoot":"","sources":["../../src/cli/mcp-client-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-client-adapter.js","sourceRoot":"","sources":["../../src/cli/mcp-client-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { getLocalAdapter, type LocalMcpClientType } from './mcp-client-adapter.js';
2
+ export type { LocalMcpClientType } from './mcp-client-adapter.js';
3
+ export type McpSyncClientId = 'claude' | 'cursor' | 'claude-code' | 'codex' | 'chatgpt';
4
+ export type McpAdapterId = Exclude<McpSyncClientId, 'chatgpt'>;
5
+ export interface PreviewResult {
6
+ hasChanges: boolean;
7
+ diffText: string;
8
+ configPath: string;
9
+ addedServers: string[];
10
+ updatedServers: string[];
11
+ }
12
+ export interface McpSyncClient {
13
+ id: McpSyncClientId;
14
+ displayName: string;
15
+ adapterId?: McpAdapterId;
16
+ supportsPreview: boolean;
17
+ supportsWrite: boolean;
18
+ supportsPrint: boolean;
19
+ printOnly?: boolean;
20
+ /** Whether this client supports local workspace configs */
21
+ supportsLocalConfig: boolean;
22
+ runPreview?: (projectFilter?: string[]) => PreviewResult;
23
+ runWrite?: (projectFilter?: string[]) => string;
24
+ runPrint?: (projectFilter?: string[]) => string;
25
+ }
26
+ /**
27
+ * Get all available global sync clients.
28
+ * These write to global/user-level config files.
29
+ */
30
+ export declare function getSyncClients(): McpSyncClient[];
31
+ /**
32
+ * Create a local config client for a specific MCP client type.
33
+ * This writes to workspace-level config files (e.g., .cursor/mcp.json, .mcp.json).
34
+ *
35
+ * @param clientType - The client type to create a local adapter for
36
+ * @param customPath - Optional custom path for the config file
37
+ */
38
+ export declare function createLocalClient(clientType: LocalMcpClientType, customPath?: string): {
39
+ adapter: ReturnType<typeof getLocalAdapter>;
40
+ displayName: string;
41
+ runPreview: (projectFilter?: string[]) => PreviewResult;
42
+ runWrite: (projectFilter?: string[]) => string;
43
+ runPrint: (projectFilter?: string[]) => string;
44
+ };
45
+ /**
46
+ * Map sync client ID to local client type (for clients that support local configs)
47
+ */
48
+ export declare function getLocalClientType(clientId: McpSyncClientId): LocalMcpClientType | null;
49
+ //# sourceMappingURL=mcp-clients.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-clients.d.ts","sourceRoot":"","sources":["../../src/cli/mcp-clients.ts"],"names":[],"mappings":"AAUA,OAAO,EAEL,eAAe,EAEf,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AACxF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,eAAe,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2DAA2D;IAC3D,mBAAmB,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,aAAa,CAAC;IACzD,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IAChD,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;CACjD;AA8BD;;;GAGG;AACH,wBAAgB,cAAc,IAAI,aAAa,EAAE,CAoChD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,kBAAkB,EAC9B,UAAU,CAAC,EAAE,MAAM,GAClB;IACD,OAAO,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,aAAa,CAAC;IACxD,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IAC/C,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;CAChD,CAiBA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,kBAAkB,GAAG,IAAI,CASvF"}
@@ -0,0 +1,101 @@
1
+ import { configAddClaude, configAddClaudeCode, configAddCodex, configAddCursor, configAddLocalMcp, generateChatGptInstructions, generateConfigForPrint, previewMcpClientConfig, } from './config-cmd.js';
2
+ import { getAdapter, getLocalAdapter, supportsLocalConfig, } from './mcp-client-adapter.js';
3
+ import { resolveConfigPath } from '../utils/config-resolver.js';
4
+ function createFileClient(params) {
5
+ const { id, displayName, writeFn } = params;
6
+ return {
7
+ id,
8
+ displayName,
9
+ adapterId: id,
10
+ supportsPreview: true,
11
+ supportsWrite: true,
12
+ supportsPrint: true,
13
+ supportsLocalConfig: supportsLocalConfig(id),
14
+ runPreview: (projectFilter) => {
15
+ const adapter = getAdapter(id);
16
+ return previewMcpClientConfig(adapter, () => resolveConfigPath(), projectFilter);
17
+ },
18
+ runWrite: (projectFilter) => writeFn(() => resolveConfigPath(), projectFilter),
19
+ runPrint: (projectFilter) => {
20
+ const adapter = getAdapter(id);
21
+ return generateConfigForPrint(adapter, () => resolveConfigPath(), projectFilter);
22
+ },
23
+ };
24
+ }
25
+ /**
26
+ * Get all available global sync clients.
27
+ * These write to global/user-level config files.
28
+ */
29
+ export function getSyncClients() {
30
+ const clients = [
31
+ createFileClient({
32
+ id: 'claude',
33
+ displayName: 'Claude Desktop',
34
+ writeFn: configAddClaude,
35
+ }),
36
+ createFileClient({
37
+ id: 'cursor',
38
+ displayName: 'Cursor',
39
+ writeFn: configAddCursor,
40
+ }),
41
+ createFileClient({
42
+ id: 'claude-code',
43
+ displayName: 'Claude Code',
44
+ writeFn: configAddClaudeCode,
45
+ }),
46
+ createFileClient({
47
+ id: 'codex',
48
+ displayName: 'OpenAI Codex',
49
+ writeFn: configAddCodex,
50
+ }),
51
+ {
52
+ id: 'chatgpt',
53
+ displayName: 'ChatGPT',
54
+ supportsPreview: false,
55
+ supportsWrite: false,
56
+ supportsPrint: true,
57
+ supportsLocalConfig: false,
58
+ printOnly: true,
59
+ runPrint: (projectFilter) => generateChatGptInstructions(() => resolveConfigPath(), projectFilter),
60
+ },
61
+ ];
62
+ return clients;
63
+ }
64
+ /**
65
+ * Create a local config client for a specific MCP client type.
66
+ * This writes to workspace-level config files (e.g., .cursor/mcp.json, .mcp.json).
67
+ *
68
+ * @param clientType - The client type to create a local adapter for
69
+ * @param customPath - Optional custom path for the config file
70
+ */
71
+ export function createLocalClient(clientType, customPath) {
72
+ const adapter = getLocalAdapter(clientType, customPath);
73
+ return {
74
+ adapter,
75
+ displayName: adapter.getDisplayName(),
76
+ runPreview: (projectFilter) => {
77
+ return previewMcpClientConfig(adapter, () => resolveConfigPath(), projectFilter);
78
+ },
79
+ runWrite: (projectFilter) => {
80
+ // Pass the adapter directly to preserve display name and settings
81
+ return configAddLocalMcp(() => resolveConfigPath(), projectFilter, adapter);
82
+ },
83
+ runPrint: (projectFilter) => {
84
+ return generateConfigForPrint(adapter, () => resolveConfigPath(), projectFilter);
85
+ },
86
+ };
87
+ }
88
+ /**
89
+ * Map sync client ID to local client type (for clients that support local configs)
90
+ */
91
+ export function getLocalClientType(clientId) {
92
+ switch (clientId) {
93
+ case 'cursor':
94
+ return 'cursor';
95
+ case 'claude-code':
96
+ return 'claude-code';
97
+ default:
98
+ return null;
99
+ }
100
+ }
101
+ //# sourceMappingURL=mcp-clients.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-clients.js","sourceRoot":"","sources":["../../src/cli/mcp-clients.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- export declare const description = "Register an existing config file";
2
+ export declare const description = "Register a config file or directory";
3
3
  export declare const args: z.ZodTuple<[z.ZodString, z.ZodString], null>;
4
4
  interface Props {
5
5
  args: z.infer<typeof args>;
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/commands/config/add.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW,qCAAqC,CAAC;AAE9D,eAAO,MAAM,IAAI,8CAGf,CAAC;AAEH,UAAU,KAAK;IACb,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;CAC5B;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CASzE"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/commands/config/add.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW,wCAAwC,CAAC;AAEjE,eAAO,MAAM,IAAI,8CAGf,CAAC;AAEH,UAAU,KAAK;IACb,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;CAC5B;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CASzE"}
@@ -2,10 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Text } from 'ink';
3
3
  import { z } from 'zod';
4
4
  import { configAdd } from '../../cli/config-cmd.js';
5
- export const description = 'Register an existing config file';
5
+ export const description = 'Register a config file or directory';
6
6
  export const args = z.tuple([
7
7
  z.string().describe('Project name'),
8
- z.string().describe('Path to config file'),
8
+ z.string().describe('Path to config file or directory'),
9
9
  ]);
10
10
  export default function ConfigAddCommand({ args }) {
11
11
  const [name, configPath] = args;
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/commands/config/add.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,kCAAkC,CAAC;AAE9D,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;IAC1B,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IACnC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CAC3C,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAS;IACtD,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3C,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,MAAM,GAAQ,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAU,KAAe,CAAC,OAAO,IAAQ,CAAC;IACpE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/commands/config/add.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,qCAAqC,CAAC;AAEjE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;IAC1B,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IACnC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;CACxD,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAS;IACtD,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3C,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,MAAM,GAAQ,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAU,KAAe,CAAC,OAAO,IAAQ,CAAC;IACpE,CAAC;AACH,CAAC"}
@@ -2,6 +2,6 @@ import { jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Text } from 'ink';
3
3
  export const description = 'Manage project configuration';
4
4
  export default function ConfigCommand() {
5
- return (_jsxs(Text, { children: ["Usage: limps config ", '<command>', '\n', '\n', "Commands:", '\n', ' ', "list Show all registered projects", '\n', ' ', "use ", '<name>', " Set the current/default project", '\n', ' ', "show Display resolved configuration values", '\n', ' ', "path Print the resolved config file path", '\n', ' ', "add ", '<name>', " ", '<path>', " Register an existing config file", '\n', ' ', "sync-mcp [project] [--projects ", '<names>', "] [--client", ' ', '<claude|cursor|claude-code|all>', "] [--print] [-f] Add/update limps projects in MCP client configs (default: all)", '\n', ' ', "update ", '<name>', " [--plans-path ", '<path>', "] [--docs-path ", '<path>', "] Update project paths", '\n', ' ', "remove ", '<name>', " Unregister a project (keeps files)", '\n', ' ', "set ", '<path>', " Set current from config path (auto-registers)", '\n', ' ', "discover Find and register configs in default locations", '\n', '\n', "Run `limps config ", '<command>', " --help` for more information."] }));
5
+ return (_jsxs(Text, { children: ["Usage: limps config ", '<command>', '\n', '\n', "Commands:", '\n', ' ', "list Show all registered projects", '\n', ' ', "use ", '<name>', " Set the current/default project", '\n', ' ', "show Display resolved configuration values", '\n', ' ', "path Print the resolved config file path", '\n', ' ', "add ", '<name>', " ", '<path>', " Register an existing config file", '\n', ' ', "sync-mcp [project] [--projects ", '<names>', "] [--client", ' ', '<claude|cursor|claude-code|codex|chatgpt|all>', "] [--global] [--path ", '<path>', "] [--print] [-f] Add/update limps in MCP configs (default: local project config)", '\n', ' ', "update ", '<name>', " [--plans-path ", '<path>', "] [--docs-path ", '<path>', "] Update project paths", '\n', ' ', "remove ", '<name>', " Unregister a project (keeps files)", '\n', ' ', "set ", '<path>', " Set current from config path (auto-registers)", '\n', ' ', "discover Find and register configs in default locations", '\n', '\n', "Run `limps config ", '<command>', " --help` for more information."] }));
6
6
  }
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/config/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,MAAM,CAAC,MAAM,WAAW,GAAG,8BAA8B,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,aAAa;IACnC,OAAO,CACL,MAAC,IAAI,uCACkB,WAAW,EAC/B,IAAI,EACJ,IAAI,eACK,IAAI,EACb,IAAI,uCAAmC,IAAI,EAC3C,IAAI,UAAM,QAAQ,sCAAkC,IAAI,EACxD,IAAI,gDAA4C,IAAI,EACpD,IAAI,8CAA0C,IAAI,EAClD,IAAI,UAAM,QAAQ,OAAG,QAAQ,uCAAmC,IAAI,EACpE,IAAI,qCAAiC,SAAS,iBAAa,GAAG,EAC9D,iCAAiC,qFACX,IAAI,EAC1B,IAAI,aAAS,QAAQ,qBAAiB,QAAQ,qBAAiB,QAAQ,4BAClE,IAAI,EACT,IAAI,aAAS,QAAQ,yCAAqC,IAAI,EAC9D,IAAI,UAAM,QAAQ,oDAAgD,IAAI,EACtE,IAAI,6DAAyD,IAAI,EACjE,IAAI,wBACc,WAAW,sCACzB,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/config/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,MAAM,CAAC,MAAM,WAAW,GAAG,8BAA8B,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,aAAa;IACnC,OAAO,CACL,MAAC,IAAI,uCACkB,WAAW,EAC/B,IAAI,EACJ,IAAI,eACK,IAAI,EACb,IAAI,uCAAmC,IAAI,EAC3C,IAAI,UAAM,QAAQ,sCAAkC,IAAI,EACxD,IAAI,gDAA4C,IAAI,EACpD,IAAI,8CAA0C,IAAI,EAClD,IAAI,UAAM,QAAQ,OAAG,QAAQ,uCAAmC,IAAI,EACpE,IAAI,qCAAiC,SAAS,iBAAa,GAAG,EAC9D,+CAA+C,2BAAuB,QAAQ,sFACV,IAAI,EACxE,IAAI,aAAS,QAAQ,qBAAiB,QAAQ,qBAAiB,QAAQ,4BAClE,IAAI,EACT,IAAI,aAAS,QAAQ,yCAAqC,IAAI,EAC9D,IAAI,UAAM,QAAQ,oDAAgD,IAAI,EACtE,IAAI,6DAAyD,IAAI,EACjE,IAAI,wBACc,WAAW,sCACzB,CACR,CAAC;AACJ,CAAC"}
@@ -1,14 +1,18 @@
1
1
  import { z } from 'zod';
2
- export declare const description = "Add or update all registered limps projects in MCP client configs (default: all projects, all clients)";
2
+ export declare const description = "Add or update limps projects in MCP client configs (default: local/project config)";
3
3
  export declare const args: z.ZodTuple<[z.ZodOptional<z.ZodString>], null>;
4
4
  export declare const options: z.ZodObject<{
5
5
  projects: z.ZodOptional<z.ZodString>;
6
6
  client: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
7
7
  cursor: "cursor";
8
8
  all: "all";
9
- claude: "claude";
10
9
  "claude-code": "claude-code";
10
+ claude: "claude";
11
+ codex: "codex";
12
+ chatgpt: "chatgpt";
11
13
  }>>>;
14
+ global: z.ZodOptional<z.ZodBoolean>;
15
+ path: z.ZodOptional<z.ZodString>;
12
16
  print: z.ZodOptional<z.ZodBoolean>;
13
17
  force: z.ZodOptional<z.ZodBoolean>;
14
18
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"sync-mcp.d.ts","sourceRoot":"","sources":["../../../src/commands/config/sync-mcp.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,WAAW,2GACkF,CAAC;AAE3G,eAAO,MAAM,IAAI,gDAEf,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;;;iBAelB,CAAC;AAEH,UAAU,KAAK;IACb,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAgMtF"}
1
+ {"version":3,"file":"sync-mcp.d.ts","sourceRoot":"","sources":["../../../src/commands/config/sync-mcp.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,WAAW,uFAC8D,CAAC;AAEvF,eAAO,MAAM,IAAI,gDAEf,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;iBAyBlB,CAAC;AAEH,UAAU,KAAK;IACb,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAmQtF"}