sync-agents-settings 0.1.3 → 0.2.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.
- package/README.md +70 -74
- package/dist/cli.js +75 -2
- package/dist/cli.js.map +1 -1
- package/dist/instructions.d.ts +46 -0
- package/dist/instructions.js +209 -0
- package/dist/instructions.js.map +1 -0
- package/dist/paths.d.ts +5 -0
- package/dist/paths.js +6 -0
- package/dist/paths.js.map +1 -1
- package/dist/prompt.d.ts +6 -0
- package/dist/prompt.js +28 -0
- package/dist/prompt.js.map +1 -0
- package/dist/reader.js +17 -6
- package/dist/reader.js.map +1 -1
- package/dist/writers/codex.js +2 -2
- package/dist/writers/codex.js.map +1 -1
- package/dist/writers/gemini.js +6 -1
- package/dist/writers/gemini.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://opensource.org/licenses/MIT)
|
|
4
4
|
[](https://www.npmjs.com/package/sync-agents-settings)
|
|
5
|
+
[](https://www.npmjs.com/package/sync-agents-settings)
|
|
5
6
|
[](https://www.typescriptlang.org/)
|
|
6
7
|
[](https://nodejs.org/)
|
|
7
8
|
[](https://pnpm.io/)
|
|
@@ -10,15 +11,15 @@
|
|
|
10
11
|
[](https://prettier.io/)
|
|
11
12
|
[](https://github.com/Leoyang183/sync-agents-settings/actions/workflows/ci.yml)
|
|
12
13
|
|
|
13
|
-
Sync MCP server configurations from **Claude Code** to **Gemini CLI**, **Codex CLI**, **OpenCode**, **Kiro CLI**, and **Cursor**.
|
|
14
|
+
Sync MCP server configurations and instruction files (CLAUDE.md) from **Claude Code** to **Gemini CLI**, **Codex CLI**, **OpenCode**, **Kiro CLI**, and **Cursor**.
|
|
14
15
|
|
|
15
|
-
[
|
|
16
|
+
**README translations:** [🇹🇼 繁體中文](docs/i18n/README.zh-tw.md) | [🇨🇳 简体中文](docs/i18n/README.zh-cn.md) | [🇯🇵 日本語](docs/i18n/README.ja.md) | [🇰🇷 한국어](docs/i18n/README.ko.md)
|
|
16
17
|
|
|
17
18
|
## Why
|
|
18
19
|
|
|
19
|
-
If you use Claude Code as your primary AI coding agent but also switch between other agents (Gemini CLI, Codex CLI, OpenCode, Kiro, Cursor) to take advantage of their free tiers or different models, you know the pain — every tool has its own MCP config format, and setting them up one by one is tedious.
|
|
20
|
+
If you use Claude Code as your primary AI coding agent but also switch between other agents (Gemini CLI, Codex CLI, OpenCode, Kiro, Cursor) to take advantage of their free tiers or different models, you know the pain — every tool has its own MCP config format, and setting them up one by one is tedious. Same goes for instruction files — CLAUDE.md, GEMINI.md, AGENTS.md all need the same content but in different formats.
|
|
20
21
|
|
|
21
|
-
This tool lets you configure MCP servers once in Claude Code, then sync everywhere with a single command.
|
|
22
|
+
This tool lets you configure MCP servers and write instructions once in Claude Code, then sync everywhere with a single command.
|
|
22
23
|
|
|
23
24
|
## Quick Start
|
|
24
25
|
|
|
@@ -33,6 +34,9 @@ npx sync-agents-settings sync --dry-run
|
|
|
33
34
|
|
|
34
35
|
# Sync to all targets (with automatic backup)
|
|
35
36
|
npx sync-agents-settings sync
|
|
37
|
+
|
|
38
|
+
# Sync CLAUDE.md instructions to all targets
|
|
39
|
+
npx sync-agents-settings sync-instructions
|
|
36
40
|
```
|
|
37
41
|
|
|
38
42
|
## Install (optional)
|
|
@@ -70,6 +74,24 @@ sync-agents sync --no-backup
|
|
|
70
74
|
|
|
71
75
|
# Verbose output
|
|
72
76
|
sync-agents sync -v
|
|
77
|
+
|
|
78
|
+
# Sync instruction files (CLAUDE.md → GEMINI.md / AGENTS.md / Kiro steering / Cursor rules)
|
|
79
|
+
sync-agents sync-instructions
|
|
80
|
+
|
|
81
|
+
# Sync only global instructions
|
|
82
|
+
sync-agents sync-instructions --global
|
|
83
|
+
|
|
84
|
+
# Sync only project-level instructions
|
|
85
|
+
sync-agents sync-instructions --local
|
|
86
|
+
|
|
87
|
+
# Sync to specific targets
|
|
88
|
+
sync-agents sync-instructions --target gemini codex
|
|
89
|
+
|
|
90
|
+
# Auto-overwrite without prompts (for CI)
|
|
91
|
+
sync-agents sync-instructions --on-conflict overwrite
|
|
92
|
+
|
|
93
|
+
# Preview instruction sync
|
|
94
|
+
sync-agents sync-instructions --dry-run
|
|
73
95
|
```
|
|
74
96
|
|
|
75
97
|
### Development
|
|
@@ -105,6 +127,33 @@ pnpm test # Run tests
|
|
|
105
127
|
| **Kiro Writer** | Same format as Claude, `${VAR:-default}` → expanded |
|
|
106
128
|
| **Cursor Writer** | Same format as Claude, `${VAR:-default}` → expanded |
|
|
107
129
|
|
|
130
|
+
### Instruction Sync (`sync-instructions`)
|
|
131
|
+
|
|
132
|
+
Syncs CLAUDE.md instruction files to each target's native format:
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
┌─→ ~/.gemini/GEMINI.md (plain copy)
|
|
136
|
+
├─→ ~/.codex/AGENTS.md (plain copy)
|
|
137
|
+
~/.claude/CLAUDE.md ─→ filter @imports ──┼─→ ~/.config/opencode/AGENTS.md (plain copy)
|
|
138
|
+
├─→ ~/.kiro/steering/claude-instructions.md (+ inclusion: always)
|
|
139
|
+
└─→ ⚠ Cursor global not supported (SQLite)
|
|
140
|
+
|
|
141
|
+
┌─→ ./GEMINI.md (plain copy)
|
|
142
|
+
├─→ ./AGENTS.md (Codex + OpenCode share)
|
|
143
|
+
./CLAUDE.md ──────────→ filter @imports ──┼─→ .kiro/steering/claude-instructions.md (+ inclusion: always)
|
|
144
|
+
└─→ .cursor/rules/claude-instructions.mdc (+ alwaysApply: true)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
| Target | Global | Local | Format Transform |
|
|
148
|
+
|--------|--------|-------|------------------|
|
|
149
|
+
| Gemini | `~/.gemini/GEMINI.md` | `./GEMINI.md` | Plain copy (filter `@import` lines) |
|
|
150
|
+
| Codex | `~/.codex/AGENTS.md` | `./AGENTS.md` | Plain copy (filter `@import` lines) |
|
|
151
|
+
| OpenCode | `~/.config/opencode/AGENTS.md` | `./AGENTS.md` (shared with Codex) | Plain copy (filter `@import` lines) |
|
|
152
|
+
| Kiro | `~/.kiro/steering/claude-instructions.md` | `.kiro/steering/claude-instructions.md` | Add `inclusion: always` frontmatter |
|
|
153
|
+
| Cursor | Not supported (SQLite) | `.cursor/rules/claude-instructions.mdc` | Add `alwaysApply: true` frontmatter |
|
|
154
|
+
|
|
155
|
+
When a target file already exists, you'll be prompted to choose: **overwrite**, **append** (keep existing + add CLAUDE.md below), or **skip**. Use `--on-conflict overwrite|append|skip` for non-interactive mode.
|
|
156
|
+
|
|
108
157
|
**Safety mechanisms:**
|
|
109
158
|
- Existing servers are never overwritten (idempotent, safe to re-run)
|
|
110
159
|
- Automatic backup to `~/.sync-agents-backup/` by default (`--no-backup` to skip)
|
|
@@ -265,6 +314,8 @@ Use `--no-backup` to skip. Target directories that don't exist (CLI not installe
|
|
|
265
314
|
|
|
266
315
|
## Config File Locations
|
|
267
316
|
|
|
317
|
+
### MCP Settings
|
|
318
|
+
|
|
268
319
|
| Tool | Config Path | Format |
|
|
269
320
|
|------|-----------|--------|
|
|
270
321
|
| Claude Code (user MCP) | `~/.claude.json` | JSON |
|
|
@@ -280,6 +331,17 @@ Use `--no-backup` to skip. Target directories that don't exist (CLI not installe
|
|
|
280
331
|
| Cursor (global) | `~/.cursor/mcp.json` | JSON |
|
|
281
332
|
| Cursor (project) | `.cursor/mcp.json` in project root | JSON |
|
|
282
333
|
|
|
334
|
+
### Instruction Files
|
|
335
|
+
|
|
336
|
+
| Tool | Global Path | Project Path | Format |
|
|
337
|
+
|------|------------|-------------|--------|
|
|
338
|
+
| Claude Code | `~/.claude/CLAUDE.md` | `./CLAUDE.md` | Markdown |
|
|
339
|
+
| Gemini CLI | `~/.gemini/GEMINI.md` | `./GEMINI.md` | Markdown |
|
|
340
|
+
| Codex CLI | `~/.codex/AGENTS.md` | `./AGENTS.md` | Markdown |
|
|
341
|
+
| OpenCode | `~/.config/opencode/AGENTS.md` | `./AGENTS.md` | Markdown |
|
|
342
|
+
| Kiro CLI | `~/.kiro/steering/claude-instructions.md` | `.kiro/steering/claude-instructions.md` | Markdown + frontmatter |
|
|
343
|
+
| Cursor | Not supported (SQLite) | `.cursor/rules/claude-instructions.mdc` | MDC (Markdown + frontmatter) |
|
|
344
|
+
|
|
283
345
|
## Limitations
|
|
284
346
|
|
|
285
347
|
- **OAuth servers** (e.g. Slack with `oauth.clientId`) are synced as URL-only — you'll need to authenticate manually in each CLI
|
|
@@ -289,77 +351,11 @@ Use `--no-backup` to skip. Target directories that don't exist (CLI not installe
|
|
|
289
351
|
- Codex CLI does NOT merge global and project configs — when `.codex/` exists in a project, global `~/.codex/` is ignored
|
|
290
352
|
- If target config directories don't exist, sync will skip that target (won't create directories)
|
|
291
353
|
|
|
292
|
-
##
|
|
293
|
-
|
|
294
|
-
MIT
|
|
295
|
-
|
|
296
|
-
---
|
|
297
|
-
|
|
298
|
-
## 中文說明
|
|
299
|
-
|
|
300
|
-
將 **Claude Code** 的 MCP server 設定同步到 **Gemini CLI**、**Codex CLI**、**OpenCode**、**Kiro CLI** 和 **Cursor**。
|
|
301
|
-
|
|
302
|
-
### 為什麼需要這個工具
|
|
303
|
-
|
|
304
|
-
如果你主要用 Claude Code 開發,但也會切換其他 AI agent(Gemini CLI、Codex CLI、OpenCode、Kiro、Cursor)來善用各家的免費額度或不同模型,你一定知道這個痛點 — 每個工具的 MCP 設定格式都不一樣,一個一個設定實在太累。
|
|
305
|
-
|
|
306
|
-
這個工具讓你只在 Claude Code 設定一次 MCP servers,一行指令同步到所有目標。
|
|
354
|
+
## Star History
|
|
307
355
|
|
|
308
|
-
|
|
356
|
+
[](https://star-history.com/#Leoyang183/sync-agents-settings&Date)
|
|
309
357
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
```bash
|
|
313
|
-
# 列出所有 Claude Code 的 MCP servers
|
|
314
|
-
npx sync-agents-settings list
|
|
315
|
-
|
|
316
|
-
# 預覽同步(不修改任何檔案)
|
|
317
|
-
npx sync-agents-settings sync --dry-run
|
|
318
|
-
|
|
319
|
-
# 同步到所有目標(自動備份)
|
|
320
|
-
npx sync-agents-settings sync
|
|
321
|
-
|
|
322
|
-
# 同步到特定目標
|
|
323
|
-
npx sync-agents-settings sync --target gemini
|
|
324
|
-
npx sync-agents-settings sync --target codex
|
|
325
|
-
npx sync-agents-settings sync --target opencode
|
|
326
|
-
npx sync-agents-settings sync --target kiro
|
|
327
|
-
npx sync-agents-settings sync --target cursor
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
### 運作原理
|
|
331
|
-
|
|
332
|
-
**Claude Code 是 MCP 設定的 single source of truth**,同步到所有支援的目標。
|
|
333
|
-
|
|
334
|
-
```
|
|
335
|
-
┌─→ Gemini Writer ─→ ~/.gemini/settings.json
|
|
336
|
-
├─→ Codex Writer ─→ ~/.codex/config.toml
|
|
337
|
-
~/.claude.json ─────┐ │
|
|
338
|
-
├─→ Reader ─→ UnifiedMcpServer[] ─┼─→ OpenCode Writer ─→ ~/.config/opencode/opencode.json
|
|
339
|
-
~/.claude/plugins/ ──┘ │
|
|
340
|
-
├─→ Kiro Writer ─→ ~/.kiro/settings/mcp.json
|
|
341
|
-
└─→ Cursor Writer ─→ ~/.cursor/mcp.json
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
| 階段 | 說明 |
|
|
345
|
-
|------|------|
|
|
346
|
-
| **Reader** | 從 `~/.claude.json` 和已啟用 plugin 的 `.mcp.json` 讀取,合併為統一格式 |
|
|
347
|
-
| **Gemini Writer** | JSON → JSON,`type: "http"` → `httpUrl`,`${VAR}` → `$VAR` |
|
|
348
|
-
| **Codex Writer** | JSON → TOML,`${VAR:-default}` → 展開為實際值 |
|
|
349
|
-
| **OpenCode Writer** | JSON → JSON,`command`+`args` → 合併為 `command` 陣列,`env` → `environment`,`type: "local"`/`"remote"` |
|
|
350
|
-
| **Kiro Writer** | 與 Claude 相同格式,`${VAR:-default}` → 展開 |
|
|
351
|
-
| **Cursor Writer** | 與 Claude 相同格式,`${VAR:-default}` → 展開 |
|
|
352
|
-
|
|
353
|
-
### 安全機制
|
|
354
|
-
|
|
355
|
-
- 已存在的 server 不會覆蓋(idempotent,可重複執行)
|
|
356
|
-
- 預設自動備份到 `~/.sync-agents-backup/`(`--no-backup` 跳過)
|
|
357
|
-
- `--dry-run` 預覽變更,不寫入任何檔案
|
|
358
|
+
## License
|
|
358
359
|
|
|
359
|
-
|
|
360
|
+
MIT
|
|
360
361
|
|
|
361
|
-
- **OAuth servers**(如 Slack)只會同步 URL,需要在各 CLI 手動認證
|
|
362
|
-
- **`${CLAUDE_PLUGIN_ROOT}`** 環境變數在其他 CLI 中無法解析
|
|
363
|
-
- Codex CLI 不支援 URL 中的 `${VAR:-default}` 語法,同步時會自動展開
|
|
364
|
-
- 重複執行不會覆蓋已存在的設定(安全可重複)
|
|
365
|
-
- 若目標設定目錄不存在,會跳過該目標(不會自動建立目錄)
|
package/dist/cli.js
CHANGED
|
@@ -9,11 +9,12 @@ import { writeToKiro } from "./writers/kiro.js";
|
|
|
9
9
|
import { writeToCursor } from "./writers/cursor.js";
|
|
10
10
|
import { createBackup, getFilesToBackup } from "./backup.js";
|
|
11
11
|
import { PATHS } from "./paths.js";
|
|
12
|
+
import { syncInstructions, getGlobalSyncPairs, getLocalSyncPairs, getUnsupportedGlobalTargets, } from "./instructions.js";
|
|
12
13
|
const program = new Command();
|
|
13
14
|
program
|
|
14
15
|
.name("sync-agents")
|
|
15
16
|
.description("Sync Claude Code MCP settings to Gemini CLI / Codex CLI / OpenCode / Kiro CLI")
|
|
16
|
-
.version("0.
|
|
17
|
+
.version("0.2.0");
|
|
17
18
|
program
|
|
18
19
|
.command("sync")
|
|
19
20
|
.description("Sync MCP settings from Claude Code to other CLIs")
|
|
@@ -116,13 +117,85 @@ program
|
|
|
116
117
|
if (target === "codex") {
|
|
117
118
|
console.log(` Codex: use 'codex mcp list' to view`);
|
|
118
119
|
}
|
|
119
|
-
else if (target
|
|
120
|
+
else if (Object.hasOwn(diffConfigs, target)) {
|
|
120
121
|
const { path, key } = diffConfigs[target];
|
|
121
122
|
const names = readExistingServerNames(path, key);
|
|
122
123
|
printDiff(target.charAt(0).toUpperCase() + target.slice(1), claudeNames, names);
|
|
123
124
|
}
|
|
124
125
|
}
|
|
125
126
|
});
|
|
127
|
+
program
|
|
128
|
+
.command("sync-instructions")
|
|
129
|
+
.description("Sync CLAUDE.md instruction files to other AI agent formats")
|
|
130
|
+
.option("-t, --target <targets...>", "sync targets (gemini, codex, opencode, kiro, cursor)", [
|
|
131
|
+
"gemini",
|
|
132
|
+
"codex",
|
|
133
|
+
"opencode",
|
|
134
|
+
"kiro",
|
|
135
|
+
"cursor",
|
|
136
|
+
])
|
|
137
|
+
.option("--global", "sync global config (~/.claude/CLAUDE.md)", false)
|
|
138
|
+
.option("--local", "sync project-level CLAUDE.md in current directory", false)
|
|
139
|
+
.option("--dry-run", "preview mode, no files will be written", false)
|
|
140
|
+
.option("--no-backup", "skip backup")
|
|
141
|
+
.option("--on-conflict <action>", "action when target exists: overwrite, append, skip (skips interactive prompt)")
|
|
142
|
+
.action(async (opts) => {
|
|
143
|
+
const targets = opts.target;
|
|
144
|
+
const syncGlobal = opts.global;
|
|
145
|
+
const syncLocal = opts.local;
|
|
146
|
+
const dryRun = opts.dryRun;
|
|
147
|
+
const skipBackup = !opts.backup;
|
|
148
|
+
const onConflict = opts.onConflict;
|
|
149
|
+
// Default: sync both if neither flag is set
|
|
150
|
+
const doGlobal = syncGlobal || (!syncGlobal && !syncLocal);
|
|
151
|
+
const doLocal = syncLocal || (!syncGlobal && !syncLocal);
|
|
152
|
+
if (dryRun) {
|
|
153
|
+
console.log("🔍 Dry-run mode — no files will be written\n");
|
|
154
|
+
}
|
|
155
|
+
// Global sync
|
|
156
|
+
if (doGlobal) {
|
|
157
|
+
console.log("📋 Syncing global instructions (~/.claude/CLAUDE.md)...\n");
|
|
158
|
+
const unsupported = getUnsupportedGlobalTargets(targets);
|
|
159
|
+
for (const msg of unsupported) {
|
|
160
|
+
console.log(` ⚠ ${msg}`);
|
|
161
|
+
}
|
|
162
|
+
const pairs = getGlobalSyncPairs(targets);
|
|
163
|
+
backupTargets(pairs, skipBackup, dryRun);
|
|
164
|
+
const result = await syncInstructions(pairs, { dryRun, force: onConflict });
|
|
165
|
+
printInstructionsResult(result);
|
|
166
|
+
}
|
|
167
|
+
// Local sync
|
|
168
|
+
if (doLocal) {
|
|
169
|
+
console.log("📋 Syncing local instructions (./CLAUDE.md)...\n");
|
|
170
|
+
const pairs = getLocalSyncPairs(targets, process.cwd());
|
|
171
|
+
backupTargets(pairs, skipBackup, dryRun);
|
|
172
|
+
const result = await syncInstructions(pairs, { dryRun, force: onConflict });
|
|
173
|
+
printInstructionsResult(result);
|
|
174
|
+
}
|
|
175
|
+
console.log("✅ Instructions sync complete!");
|
|
176
|
+
});
|
|
177
|
+
function backupTargets(pairs, skipBackup, dryRun) {
|
|
178
|
+
if (skipBackup || dryRun)
|
|
179
|
+
return;
|
|
180
|
+
const filesToBackup = pairs.map((p) => p.target).filter((f) => existsSync(f));
|
|
181
|
+
if (filesToBackup.length > 0) {
|
|
182
|
+
console.log("💾 Backing up existing files...");
|
|
183
|
+
const backupDir = createBackup(filesToBackup);
|
|
184
|
+
console.log(` Backup directory: ${backupDir}\n`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function printInstructionsResult(result) {
|
|
188
|
+
if (result.synced.length > 0) {
|
|
189
|
+
console.log(` ✅ Synced: ${result.synced.join(", ")}`);
|
|
190
|
+
}
|
|
191
|
+
if (result.appended.length > 0) {
|
|
192
|
+
console.log(` 📎 Appended: ${result.appended.join(", ")}`);
|
|
193
|
+
}
|
|
194
|
+
if (result.skipped.length > 0) {
|
|
195
|
+
console.log(` ⏭ Skipped: ${result.skipped.join(", ")}`);
|
|
196
|
+
}
|
|
197
|
+
console.log();
|
|
198
|
+
}
|
|
126
199
|
function readExistingServerNames(configPath, key = "mcpServers") {
|
|
127
200
|
try {
|
|
128
201
|
if (!existsSync(configPath)) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type ConflictAction } from "./prompt.js";
|
|
2
|
+
export type InstructionsTarget = "gemini" | "codex" | "opencode" | "kiro" | "cursor";
|
|
3
|
+
interface SyncPair {
|
|
4
|
+
source: string;
|
|
5
|
+
target: string;
|
|
6
|
+
targetLabel: string;
|
|
7
|
+
/** Optional content transform before writing (e.g. Kiro frontmatter injection) */
|
|
8
|
+
transform?: (content: string) => string;
|
|
9
|
+
}
|
|
10
|
+
/** Wrap content with Kiro steering frontmatter (inclusion: always). */
|
|
11
|
+
export declare function wrapForKiro(content: string): string;
|
|
12
|
+
/** Wrap content with Cursor .mdc frontmatter (alwaysApply: true). */
|
|
13
|
+
export declare function wrapForCursor(content: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Build source→target pairs for global instruction sync.
|
|
16
|
+
* Note: Cursor global rules are stored in SQLite — not supported.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getGlobalSyncPairs(targets: InstructionsTarget[]): SyncPair[];
|
|
19
|
+
/**
|
|
20
|
+
* Returns targets that don't support global instruction sync.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getUnsupportedGlobalTargets(targets: InstructionsTarget[]): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Build source→target pairs for local (project-level) instruction sync.
|
|
25
|
+
* Looks for CLAUDE.md in the current working directory.
|
|
26
|
+
*/
|
|
27
|
+
export declare function getLocalSyncPairs(targets: InstructionsTarget[], cwd: string): SyncPair[];
|
|
28
|
+
/**
|
|
29
|
+
* Filter out Claude-specific syntax that other tools won't understand.
|
|
30
|
+
* - Removes `@filepath` import lines (lines that are just `@some/path.md`)
|
|
31
|
+
* - Keeps `@mentions` inside sentences (those are fine as plain text)
|
|
32
|
+
*/
|
|
33
|
+
export declare function filterClaudeSpecificSyntax(content: string): string;
|
|
34
|
+
export interface SyncInstructionsResult {
|
|
35
|
+
synced: string[];
|
|
36
|
+
skipped: string[];
|
|
37
|
+
appended: string[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Sync instruction files from CLAUDE.md to target agent files.
|
|
41
|
+
*/
|
|
42
|
+
export declare function syncInstructions(pairs: SyncPair[], options: {
|
|
43
|
+
dryRun: boolean;
|
|
44
|
+
force?: ConflictAction;
|
|
45
|
+
}): Promise<SyncInstructionsResult>;
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { PATHS } from "./paths.js";
|
|
4
|
+
import { askConflictAction } from "./prompt.js";
|
|
5
|
+
/**
|
|
6
|
+
* Strip existing YAML frontmatter (--- ... ---) from content.
|
|
7
|
+
* Returns the body without the frontmatter block.
|
|
8
|
+
*/
|
|
9
|
+
function stripExistingFrontmatter(content) {
|
|
10
|
+
if (content.trimStart().startsWith("---")) {
|
|
11
|
+
const lines = content.trimStart().split("\n");
|
|
12
|
+
const endIdx = lines.indexOf("---", 1);
|
|
13
|
+
if (endIdx !== -1) {
|
|
14
|
+
return lines
|
|
15
|
+
.slice(endIdx + 1)
|
|
16
|
+
.join("\n")
|
|
17
|
+
.trimStart();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return content;
|
|
21
|
+
}
|
|
22
|
+
/** Wrap content with Kiro steering frontmatter (inclusion: always). */
|
|
23
|
+
export function wrapForKiro(content) {
|
|
24
|
+
return "---\ninclusion: always\n---\n\n" + stripExistingFrontmatter(content);
|
|
25
|
+
}
|
|
26
|
+
/** Wrap content with Cursor .mdc frontmatter (alwaysApply: true). */
|
|
27
|
+
export function wrapForCursor(content) {
|
|
28
|
+
return ('---\ndescription: "Project instructions synced from CLAUDE.md"\nalwaysApply: true\n---\n\n' +
|
|
29
|
+
stripExistingFrontmatter(content));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Build source→target pairs for global instruction sync.
|
|
33
|
+
* Note: Cursor global rules are stored in SQLite — not supported.
|
|
34
|
+
*/
|
|
35
|
+
export function getGlobalSyncPairs(targets) {
|
|
36
|
+
const pairs = [];
|
|
37
|
+
for (const target of targets) {
|
|
38
|
+
if (target === "gemini") {
|
|
39
|
+
pairs.push({
|
|
40
|
+
source: PATHS.claudeMdGlobal,
|
|
41
|
+
target: PATHS.geminiMdGlobal,
|
|
42
|
+
targetLabel: "Gemini CLI (~/.gemini/GEMINI.md)",
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
else if (target === "codex") {
|
|
46
|
+
pairs.push({
|
|
47
|
+
source: PATHS.claudeMdGlobal,
|
|
48
|
+
target: PATHS.codexMdGlobal,
|
|
49
|
+
targetLabel: "Codex CLI (~/.codex/AGENTS.md)",
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
else if (target === "opencode") {
|
|
53
|
+
pairs.push({
|
|
54
|
+
source: PATHS.claudeMdGlobal,
|
|
55
|
+
target: PATHS.openCodeMdGlobal,
|
|
56
|
+
targetLabel: "OpenCode (~/.config/opencode/AGENTS.md)",
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
else if (target === "kiro") {
|
|
60
|
+
pairs.push({
|
|
61
|
+
source: PATHS.claudeMdGlobal,
|
|
62
|
+
target: PATHS.kiroSteeringGlobal,
|
|
63
|
+
targetLabel: "Kiro CLI (~/.kiro/steering/claude-instructions.md)",
|
|
64
|
+
transform: wrapForKiro,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
// Cursor global rules are stored in SQLite, not supported for global sync
|
|
68
|
+
}
|
|
69
|
+
return pairs;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Returns targets that don't support global instruction sync.
|
|
73
|
+
*/
|
|
74
|
+
export function getUnsupportedGlobalTargets(targets) {
|
|
75
|
+
const unsupported = [];
|
|
76
|
+
if (targets.includes("cursor")) {
|
|
77
|
+
unsupported.push("Cursor (global rules stored in SQLite, use Cursor Settings UI instead)");
|
|
78
|
+
}
|
|
79
|
+
return unsupported;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Build source→target pairs for local (project-level) instruction sync.
|
|
83
|
+
* Looks for CLAUDE.md in the current working directory.
|
|
84
|
+
*/
|
|
85
|
+
export function getLocalSyncPairs(targets, cwd) {
|
|
86
|
+
const pairs = [];
|
|
87
|
+
const source = resolve(cwd, "CLAUDE.md");
|
|
88
|
+
// Track targets that share the same output path to avoid duplicate writes
|
|
89
|
+
const seenPaths = new Set();
|
|
90
|
+
for (const target of targets) {
|
|
91
|
+
if (target === "gemini") {
|
|
92
|
+
const targetPath = resolve(cwd, "GEMINI.md");
|
|
93
|
+
pairs.push({ source, target: targetPath, targetLabel: "Gemini CLI (./GEMINI.md)" });
|
|
94
|
+
seenPaths.add(targetPath);
|
|
95
|
+
}
|
|
96
|
+
else if (target === "codex") {
|
|
97
|
+
const targetPath = resolve(cwd, "AGENTS.md");
|
|
98
|
+
if (!seenPaths.has(targetPath)) {
|
|
99
|
+
pairs.push({ source, target: targetPath, targetLabel: "Codex CLI (./AGENTS.md)" });
|
|
100
|
+
seenPaths.add(targetPath);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else if (target === "opencode") {
|
|
104
|
+
// OpenCode reads ./AGENTS.md — same path as Codex, skip if already added
|
|
105
|
+
const targetPath = resolve(cwd, "AGENTS.md");
|
|
106
|
+
if (!seenPaths.has(targetPath)) {
|
|
107
|
+
pairs.push({ source, target: targetPath, targetLabel: "OpenCode (./AGENTS.md)" });
|
|
108
|
+
seenPaths.add(targetPath);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else if (target === "kiro") {
|
|
112
|
+
pairs.push({
|
|
113
|
+
source,
|
|
114
|
+
target: resolve(cwd, ".kiro", "steering", "claude-instructions.md"),
|
|
115
|
+
targetLabel: "Kiro CLI (.kiro/steering/claude-instructions.md)",
|
|
116
|
+
transform: wrapForKiro,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
else if (target === "cursor") {
|
|
120
|
+
pairs.push({
|
|
121
|
+
source,
|
|
122
|
+
target: resolve(cwd, ".cursor", "rules", "claude-instructions.mdc"),
|
|
123
|
+
targetLabel: "Cursor (.cursor/rules/claude-instructions.mdc)",
|
|
124
|
+
transform: wrapForCursor,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return pairs;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Filter out Claude-specific syntax that other tools won't understand.
|
|
132
|
+
* - Removes `@filepath` import lines (lines that are just `@some/path.md`)
|
|
133
|
+
* - Keeps `@mentions` inside sentences (those are fine as plain text)
|
|
134
|
+
*/
|
|
135
|
+
export function filterClaudeSpecificSyntax(content) {
|
|
136
|
+
return content
|
|
137
|
+
.split("\n")
|
|
138
|
+
.filter((line) => {
|
|
139
|
+
const trimmed = line.trim();
|
|
140
|
+
// Remove standalone @import lines: lines that are just "@path/to/file.md"
|
|
141
|
+
if (/^@[\w.~\-/\\]+\.md\s*$/.test(trimmed)) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
return true;
|
|
145
|
+
})
|
|
146
|
+
.join("\n");
|
|
147
|
+
}
|
|
148
|
+
const APPEND_SEPARATOR = "\n\n---\n\n<!-- Synced from CLAUDE.md by sync-agents-settings -->\n\n";
|
|
149
|
+
/**
|
|
150
|
+
* Sync instruction files from CLAUDE.md to target agent files.
|
|
151
|
+
*/
|
|
152
|
+
export async function syncInstructions(pairs, options) {
|
|
153
|
+
const result = { synced: [], skipped: [], appended: [] };
|
|
154
|
+
// Cache filtered source content to avoid re-reading the same file per target
|
|
155
|
+
const sourceCache = new Map();
|
|
156
|
+
for (const pair of pairs) {
|
|
157
|
+
if (!sourceCache.has(pair.source)) {
|
|
158
|
+
if (!existsSync(pair.source)) {
|
|
159
|
+
sourceCache.set(pair.source, null);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
const raw = readFileSync(pair.source, "utf-8");
|
|
163
|
+
sourceCache.set(pair.source, raw.trim() ? filterClaudeSpecificSyntax(raw) : null);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
const filtered = sourceCache.get(pair.source);
|
|
167
|
+
if (filtered === null || filtered === undefined) {
|
|
168
|
+
const reason = !existsSync(pair.source) ? "source not found" : "source is empty";
|
|
169
|
+
result.skipped.push(`${pair.targetLabel} (${reason}: ${pair.source})`);
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
let content = pair.transform ? pair.transform(filtered) : filtered;
|
|
173
|
+
let action = "overwrite";
|
|
174
|
+
if (existsSync(pair.target)) {
|
|
175
|
+
if (options.force) {
|
|
176
|
+
action = options.force;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
action = await askConflictAction(pair.target);
|
|
180
|
+
}
|
|
181
|
+
if (action === "skip") {
|
|
182
|
+
result.skipped.push(`${pair.targetLabel} (skipped by user)`);
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (!options.dryRun) {
|
|
187
|
+
mkdirSync(dirname(pair.target), { recursive: true });
|
|
188
|
+
if (action === "append") {
|
|
189
|
+
const existing = readFileSync(pair.target, "utf-8");
|
|
190
|
+
writeFileSync(pair.target, existing + APPEND_SEPARATOR + content + "\n");
|
|
191
|
+
result.appended.push(pair.targetLabel);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
writeFileSync(pair.target, content + "\n");
|
|
195
|
+
result.synced.push(pair.targetLabel);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
if (action === "append") {
|
|
200
|
+
result.appended.push(pair.targetLabel);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
result.synced.push(pair.targetLabel);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return result;
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=instructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"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"}
|
package/dist/paths.d.ts
CHANGED
|
@@ -8,5 +8,10 @@ export declare const PATHS: {
|
|
|
8
8
|
readonly openCodeConfig: string;
|
|
9
9
|
readonly kiroMcpConfig: string;
|
|
10
10
|
readonly cursorMcpConfig: string;
|
|
11
|
+
readonly claudeMdGlobal: string;
|
|
12
|
+
readonly geminiMdGlobal: string;
|
|
13
|
+
readonly codexMdGlobal: string;
|
|
14
|
+
readonly openCodeMdGlobal: string;
|
|
15
|
+
readonly kiroSteeringGlobal: string;
|
|
11
16
|
readonly backupDir: string;
|
|
12
17
|
};
|
package/dist/paths.js
CHANGED
|
@@ -17,6 +17,12 @@ export const PATHS = {
|
|
|
17
17
|
kiroMcpConfig: join(HOME, ".kiro", "settings", "mcp.json"),
|
|
18
18
|
// Cursor
|
|
19
19
|
cursorMcpConfig: join(HOME, ".cursor", "mcp.json"),
|
|
20
|
+
// Instructions (global)
|
|
21
|
+
claudeMdGlobal: join(HOME, ".claude", "CLAUDE.md"),
|
|
22
|
+
geminiMdGlobal: join(HOME, ".gemini", "GEMINI.md"),
|
|
23
|
+
codexMdGlobal: join(HOME, ".codex", "AGENTS.md"),
|
|
24
|
+
openCodeMdGlobal: join(HOME, ".config", "opencode", "AGENTS.md"),
|
|
25
|
+
kiroSteeringGlobal: join(HOME, ".kiro", "steering", "claude-instructions.md"),
|
|
20
26
|
// Backups
|
|
21
27
|
backupDir: join(HOME, ".sync-agents-backup"),
|
|
22
28
|
};
|
package/dist/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;AAEvB,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,cAAc;IACd,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;IACtC,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC;IACtD,iBAAiB,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;IAE5D,aAAa;IACb,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC;IAEtD,YAAY;IACZ,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC9B,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC;IAEhD,WAAW;IACX,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,CAAC;IAElE,WAAW;IACX,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC;IAE1D,SAAS;IACT,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC;IAElD,UAAU;IACV,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC;CACpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;AAEvB,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,cAAc;IACd,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;IACtC,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC;IACtD,iBAAiB,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;IAE5D,aAAa;IACb,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC;IAEtD,YAAY;IACZ,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC9B,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC;IAEhD,WAAW;IACX,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,CAAC;IAElE,WAAW;IACX,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC;IAE1D,SAAS;IACT,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC;IAElD,wBAAwB;IACxB,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC;IAClD,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC;IAClD,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC;IAChD,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC;IAChE,kBAAkB,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,wBAAwB,CAAC;IAE7E,UAAU;IACV,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC;CACpC,CAAC"}
|
package/dist/prompt.d.ts
ADDED
package/dist/prompt.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createInterface } from "node:readline";
|
|
2
|
+
/**
|
|
3
|
+
* Ask user how to handle an existing target file.
|
|
4
|
+
* Returns the chosen action.
|
|
5
|
+
*/
|
|
6
|
+
export async function askConflictAction(targetPath) {
|
|
7
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
8
|
+
return new Promise((resolve) => {
|
|
9
|
+
console.log(`\n⚠️ Target file already exists: ${targetPath}`);
|
|
10
|
+
console.log(" [o] Overwrite — replace with CLAUDE.md content");
|
|
11
|
+
console.log(" [a] Append — keep existing content + add CLAUDE.md below");
|
|
12
|
+
console.log(" [s] Skip — do nothing");
|
|
13
|
+
rl.question(" Choose action (o/a/s): ", (answer) => {
|
|
14
|
+
rl.close();
|
|
15
|
+
const normalized = answer.trim().toLowerCase();
|
|
16
|
+
if (normalized === "o" || normalized === "overwrite") {
|
|
17
|
+
resolve("overwrite");
|
|
18
|
+
}
|
|
19
|
+
else if (normalized === "a" || normalized === "append") {
|
|
20
|
+
resolve("append");
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
resolve("skip");
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAIhD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACxD,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,OAAO,CAAC,GAAG,CAAC,qCAAqC,UAAU,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAE5C,EAAE,CAAC,QAAQ,CAAC,4BAA4B,EAAE,CAAC,MAAM,EAAE,EAAE;YACnD,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBACrD,OAAO,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACzD,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/reader.js
CHANGED
|
@@ -25,10 +25,15 @@ function readFromClaudeJson() {
|
|
|
25
25
|
console.log(" ⚠ ~/.claude.json not found");
|
|
26
26
|
return servers;
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
try {
|
|
29
|
+
const raw = JSON.parse(readFileSync(PATHS.claudeJson, "utf-8"));
|
|
30
|
+
const mcpServers = raw.mcpServers ?? {};
|
|
31
|
+
for (const [name, config] of Object.entries(mcpServers)) {
|
|
32
|
+
servers.push(toUnified(name, config, "claude-config"));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
console.log(" ⚠ Failed to parse ~/.claude.json");
|
|
32
37
|
}
|
|
33
38
|
return servers;
|
|
34
39
|
}
|
|
@@ -38,8 +43,14 @@ function readFromPlugins(seenNames) {
|
|
|
38
43
|
if (!existsSync(PATHS.claudeSettings)) {
|
|
39
44
|
return servers;
|
|
40
45
|
}
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
let enabledPlugins = {};
|
|
47
|
+
try {
|
|
48
|
+
const settings = JSON.parse(readFileSync(PATHS.claudeSettings, "utf-8"));
|
|
49
|
+
enabledPlugins = settings.enabledPlugins ?? {};
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return servers;
|
|
53
|
+
}
|
|
43
54
|
// Walk plugin cache to find .mcp.json files for enabled plugins
|
|
44
55
|
if (!existsSync(PATHS.claudePluginCache)) {
|
|
45
56
|
return servers;
|
package/dist/reader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,8BAA8B;IAC9B,MAAM,aAAa,GAAG,kBAAkB,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAE/B,+BAA+B;IAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;IAE5C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"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"}
|
package/dist/writers/codex.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync, existsSync } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
|
-
import { join, dirname } from "node:path";
|
|
3
|
+
import { join, dirname, resolve } from "node:path";
|
|
4
4
|
import TOML from "@iarna/toml";
|
|
5
5
|
import { expandEnvVars } from "../env.js";
|
|
6
6
|
const DEFAULT_CODEX_HOME = join(homedir(), ".codex");
|
|
7
7
|
export function resolveCodexConfigPath(codexHome) {
|
|
8
|
-
const dir = codexHome ?? DEFAULT_CODEX_HOME;
|
|
8
|
+
const dir = resolve(codexHome ?? DEFAULT_CODEX_HOME);
|
|
9
9
|
return join(dir, "config.toml");
|
|
10
10
|
}
|
|
11
11
|
export function writeToCodex(servers, dryRun, codexHome) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/writers/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/writers/codex.ts"],"names":[],"mappings":"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"}
|
package/dist/writers/gemini.js
CHANGED
|
@@ -17,7 +17,12 @@ export function writeToGemini(servers, dryRun) {
|
|
|
17
17
|
// Read existing Gemini settings
|
|
18
18
|
let settings = {};
|
|
19
19
|
if (existsSync(PATHS.geminiSettings)) {
|
|
20
|
-
|
|
20
|
+
try {
|
|
21
|
+
settings = JSON.parse(readFileSync(PATHS.geminiSettings, "utf-8"));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// skip malformed settings
|
|
25
|
+
}
|
|
21
26
|
}
|
|
22
27
|
const existing = settings.mcpServers ?? {};
|
|
23
28
|
for (const server of servers) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/writers/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,MAAM,UAAU,aAAa,CAC3B,OAA2B,EAC3B,MAAe;IAEf,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,uCAAuC;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,KAAK,EAAE,EAAE;YACT,OAAO,EAAE;gBACP,OAAO,OAAO,CAAC,MAAM,eAAe,SAAS,mDAAmD;aACjG;SACF,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,IAAI,QAAQ,GAAmB,EAAE,CAAC;IAClC,IAAI,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/writers/gemini.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sync-agents-settings",
|
|
3
3
|
"packageManager": "pnpm@10.32.1",
|
|
4
|
-
"version": "0.
|
|
5
|
-
"description": "Sync MCP server configurations from Claude Code to Gemini CLI
|
|
4
|
+
"version": "0.2.0",
|
|
5
|
+
"description": "Sync MCP server configurations and instruction files from Claude Code to Gemini CLI, Codex CLI, OpenCode, Kiro CLI, and Cursor",
|
|
6
6
|
"main": "dist/cli.js",
|
|
7
7
|
"bin": {
|
|
8
8
|
"sync-agents-settings": "bin/sync-agents.cjs",
|