wangchuan 5.5.0 → 5.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.
- package/README.md +2 -2
- package/README.zh-CN.md +2 -2
- package/dist/bin/wangchuan.js +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +67 -22
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/core/config.js +1 -1
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/crypto.d.ts.map +1 -1
- package/dist/src/core/crypto.js +3 -2
- package/dist/src/core/crypto.js.map +1 -1
- package/dist/src/core/migrate.d.ts.map +1 -1
- package/dist/src/core/migrate.js +1 -0
- package/dist/src/core/migrate.js.map +1 -1
- package/dist/src/core/sync-restore.d.ts +19 -0
- package/dist/src/core/sync-restore.d.ts.map +1 -0
- package/dist/src/core/sync-restore.js +339 -0
- package/dist/src/core/sync-restore.js.map +1 -0
- package/dist/src/core/sync-shared.d.ts +30 -0
- package/dist/src/core/sync-shared.d.ts.map +1 -0
- package/dist/src/core/sync-shared.js +397 -0
- package/dist/src/core/sync-shared.js.map +1 -0
- package/dist/src/core/sync-stage.d.ts +57 -0
- package/dist/src/core/sync-stage.d.ts.map +1 -0
- package/dist/src/core/sync-stage.js +429 -0
- package/dist/src/core/sync-stage.js.map +1 -0
- package/dist/src/core/sync.d.ts +22 -46
- package/dist/src/core/sync.d.ts.map +1 -1
- package/dist/src/core/sync.js +64 -1267
- package/dist/src/core/sync.js.map +1 -1
- package/dist/src/i18n.d.ts.map +1 -1
- package/dist/src/i18n.js +27 -2
- package/dist/src/i18n.js.map +1 -1
- package/dist/test/crypto.test.js +2 -2
- package/dist/test/crypto.test.js.map +1 -1
- package/dist/test/git.test.d.ts +5 -0
- package/dist/test/git.test.d.ts.map +1 -0
- package/dist/test/git.test.js +90 -0
- package/dist/test/git.test.js.map +1 -0
- package/dist/test/migrate.test.d.ts +9 -0
- package/dist/test/migrate.test.d.ts.map +1 -0
- package/dist/test/migrate.test.js +133 -0
- package/dist/test/migrate.test.js.map +1 -0
- package/dist/test/sync-lock.test.d.ts +5 -0
- package/dist/test/sync-lock.test.d.ts.map +1 -0
- package/dist/test/sync-lock.test.js +94 -0
- package/dist/test/sync-lock.test.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sync-restore.ts — Pull direction: local repo directory → workspace
|
|
3
|
+
*
|
|
4
|
+
* Handles file restoration, backup management, conflict detection,
|
|
5
|
+
* three-way merge, and shared content distribution on pull.
|
|
6
|
+
*/
|
|
7
|
+
import fs from 'fs';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
import os from 'os';
|
|
10
|
+
import { cryptoEngine } from './crypto.js';
|
|
11
|
+
import { jsonField } from './json-field.js';
|
|
12
|
+
import { logger } from '../utils/logger.js';
|
|
13
|
+
import { askConflict } from '../utils/prompt.js';
|
|
14
|
+
import { threeWayMerge } from './merge.js';
|
|
15
|
+
import { gitEngine } from './git.js';
|
|
16
|
+
import { t } from '../i18n.js';
|
|
17
|
+
import { expandHome, buildFileEntries } from './sync.js';
|
|
18
|
+
import { logProgress } from './sync-stage.js';
|
|
19
|
+
import { verifyIntegrity, readSyncMeta, verifyKeyFingerprint } from './sync-stage.js';
|
|
20
|
+
import { AGENT_NAMES } from '../types.js';
|
|
21
|
+
// ── Backup before destructive pull ─────────────────────────────────
|
|
22
|
+
const WANGCHUAN_DIR = path.join(os.homedir(), '.wangchuan');
|
|
23
|
+
const BACKUPS_DIR = path.join(WANGCHUAN_DIR, 'backups');
|
|
24
|
+
const MAX_BACKUPS = 5;
|
|
25
|
+
/**
|
|
26
|
+
* Create a timestamped backup of local files that would be overwritten by restore.
|
|
27
|
+
* Returns the backup directory path, or null if no files needed backup.
|
|
28
|
+
*/
|
|
29
|
+
export function backupBeforeRestore(entries, repoPath) {
|
|
30
|
+
const filesToBackup = [];
|
|
31
|
+
for (const entry of entries) {
|
|
32
|
+
const srcRepo = path.join(repoPath, entry.repoRel);
|
|
33
|
+
if (!fs.existsSync(srcRepo) || !fs.existsSync(entry.srcAbs))
|
|
34
|
+
continue;
|
|
35
|
+
const localPath = entry.jsonExtract ? entry.jsonExtract.originalPath : entry.srcAbs;
|
|
36
|
+
if (!fs.existsSync(localPath))
|
|
37
|
+
continue;
|
|
38
|
+
const localBuf = fs.readFileSync(localPath);
|
|
39
|
+
const repoBuf = fs.readFileSync(srcRepo);
|
|
40
|
+
if (!localBuf.equals(repoBuf)) {
|
|
41
|
+
filesToBackup.push({ srcAbs: localPath, repoRel: entry.repoRel });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (filesToBackup.length === 0)
|
|
45
|
+
return null;
|
|
46
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
47
|
+
const backupDir = path.join(BACKUPS_DIR, timestamp);
|
|
48
|
+
fs.mkdirSync(backupDir, { recursive: true, mode: 0o700 });
|
|
49
|
+
logger.info(t('backup.creating', { count: filesToBackup.length }));
|
|
50
|
+
const seen = new Set();
|
|
51
|
+
for (const { srcAbs, repoRel } of filesToBackup) {
|
|
52
|
+
if (seen.has(srcAbs))
|
|
53
|
+
continue;
|
|
54
|
+
seen.add(srcAbs);
|
|
55
|
+
const dest = path.join(backupDir, repoRel);
|
|
56
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
57
|
+
fs.copyFileSync(srcAbs, dest);
|
|
58
|
+
}
|
|
59
|
+
logger.info(t('backup.created', { path: backupDir }));
|
|
60
|
+
return backupDir;
|
|
61
|
+
}
|
|
62
|
+
/** Keep only the N most recent backup directories, delete the rest */
|
|
63
|
+
export function rotateBackups() {
|
|
64
|
+
if (!fs.existsSync(BACKUPS_DIR))
|
|
65
|
+
return;
|
|
66
|
+
const dirs = fs.readdirSync(BACKUPS_DIR)
|
|
67
|
+
.filter(d => fs.statSync(path.join(BACKUPS_DIR, d)).isDirectory())
|
|
68
|
+
.sort()
|
|
69
|
+
.reverse();
|
|
70
|
+
if (dirs.length <= MAX_BACKUPS)
|
|
71
|
+
return;
|
|
72
|
+
const toRemove = dirs.slice(MAX_BACKUPS);
|
|
73
|
+
for (const dir of toRemove) {
|
|
74
|
+
fs.rmSync(path.join(BACKUPS_DIR, dir), { recursive: true, force: true });
|
|
75
|
+
}
|
|
76
|
+
logger.debug(t('backup.rotated', { kept: MAX_BACKUPS, removed: toRemove.length }));
|
|
77
|
+
}
|
|
78
|
+
// ── Main pull function ─────────────────────────────────────────────
|
|
79
|
+
/**
|
|
80
|
+
* Pull: restore files from local repo to workspace.
|
|
81
|
+
*/
|
|
82
|
+
export async function restoreFromRepo(cfg, agent, filter) {
|
|
83
|
+
const repoPath = expandHome(cfg.localRepoPath);
|
|
84
|
+
const keyPath = expandHome(cfg.keyPath);
|
|
85
|
+
// Verify key fingerprint before pulling
|
|
86
|
+
verifyKeyFingerprint(repoPath, keyPath);
|
|
87
|
+
const entries = buildFileEntries(cfg, repoPath, agent, filter);
|
|
88
|
+
const result = { synced: [], skipped: [], decrypted: [], conflicts: [], localOnly: [], skippedAgents: [] };
|
|
89
|
+
let restoreIdx = 0;
|
|
90
|
+
const restoreTotal = entries.length;
|
|
91
|
+
// Detect skipped agents (workspace dir doesn't exist)
|
|
92
|
+
const profiles = cfg.profiles.default;
|
|
93
|
+
for (const name of AGENT_NAMES) {
|
|
94
|
+
const p = profiles[name];
|
|
95
|
+
if (p.enabled || (agent && agent !== name))
|
|
96
|
+
continue;
|
|
97
|
+
const wsPath = expandHome(p.workspacePath);
|
|
98
|
+
if (!fs.existsSync(wsPath)) {
|
|
99
|
+
result.skippedAgents.push(name);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (cfg.customAgents) {
|
|
103
|
+
for (const [name, profile] of Object.entries(cfg.customAgents)) {
|
|
104
|
+
if (agent && agent !== name)
|
|
105
|
+
continue;
|
|
106
|
+
const wsPath = expandHome(profile.workspacePath);
|
|
107
|
+
if (!fs.existsSync(wsPath)) {
|
|
108
|
+
result.skippedAgents.push(name);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Verify integrity checksums before restore
|
|
113
|
+
verifyIntegrity(repoPath);
|
|
114
|
+
// Backup local files before overwriting
|
|
115
|
+
backupBeforeRestore(entries, repoPath);
|
|
116
|
+
rotateBackups();
|
|
117
|
+
let batchDecision;
|
|
118
|
+
for (const entry of entries) {
|
|
119
|
+
const srcRepo = path.join(repoPath, entry.repoRel);
|
|
120
|
+
if (!fs.existsSync(srcRepo)) {
|
|
121
|
+
if (entry.jsonExtract) {
|
|
122
|
+
try {
|
|
123
|
+
const fullJson = JSON.parse(fs.readFileSync(entry.srcAbs, 'utf-8'));
|
|
124
|
+
const extracted = jsonField.extractFields(fullJson, entry.jsonExtract.fields);
|
|
125
|
+
if (Object.keys(extracted).length > 0) {
|
|
126
|
+
result.localOnly.push(entry.repoRel);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch { /* ignore JSON parse failures */ }
|
|
130
|
+
}
|
|
131
|
+
else if (fs.existsSync(entry.srcAbs)) {
|
|
132
|
+
result.localOnly.push(entry.repoRel);
|
|
133
|
+
}
|
|
134
|
+
logger.debug(t('sync.skipNotInRepo', { file: entry.repoRel }));
|
|
135
|
+
result.skipped.push(entry.repoRel);
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
// ── JSON field-level merge-back ────────────────────────────
|
|
139
|
+
if (entry.jsonExtract) {
|
|
140
|
+
let partialContent;
|
|
141
|
+
if (entry.encrypt) {
|
|
142
|
+
partialContent = cryptoEngine.decryptString(fs.readFileSync(srcRepo, 'utf-8').trim(), keyPath);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
partialContent = fs.readFileSync(srcRepo, 'utf-8');
|
|
146
|
+
}
|
|
147
|
+
const partial = JSON.parse(partialContent);
|
|
148
|
+
const targetPath = entry.jsonExtract.originalPath;
|
|
149
|
+
let fullJson = {};
|
|
150
|
+
if (fs.existsSync(targetPath)) {
|
|
151
|
+
fullJson = JSON.parse(fs.readFileSync(targetPath, 'utf-8'));
|
|
152
|
+
}
|
|
153
|
+
const merged = jsonField.mergeFields(fullJson, partial);
|
|
154
|
+
fs.mkdirSync(path.dirname(targetPath), { recursive: true });
|
|
155
|
+
fs.writeFileSync(targetPath, JSON.stringify(merged, null, 2), 'utf-8');
|
|
156
|
+
// shared MCP entry: also distribute to all other agents
|
|
157
|
+
if (entry.agentName === 'shared' && cfg.shared) {
|
|
158
|
+
for (const source of cfg.shared.mcp.sources) {
|
|
159
|
+
const p = cfg.profiles.default[source.agent];
|
|
160
|
+
if (!p.enabled)
|
|
161
|
+
continue;
|
|
162
|
+
const otherPath = path.join(expandHome(p.workspacePath), source.src);
|
|
163
|
+
if (otherPath === targetPath)
|
|
164
|
+
continue;
|
|
165
|
+
let otherJson = {};
|
|
166
|
+
if (fs.existsSync(otherPath)) {
|
|
167
|
+
try {
|
|
168
|
+
otherJson = JSON.parse(fs.readFileSync(otherPath, 'utf-8'));
|
|
169
|
+
}
|
|
170
|
+
catch { /* */ }
|
|
171
|
+
}
|
|
172
|
+
const otherMerged = jsonField.mergeFields(otherJson, partial);
|
|
173
|
+
fs.mkdirSync(path.dirname(otherPath), { recursive: true });
|
|
174
|
+
fs.writeFileSync(otherPath, JSON.stringify(otherMerged, null, 2), 'utf-8');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
result.synced.push(entry.repoRel);
|
|
178
|
+
if (entry.encrypt)
|
|
179
|
+
result.decrypted.push(entry.repoRel);
|
|
180
|
+
restoreIdx++;
|
|
181
|
+
logProgress(restoreIdx, restoreTotal, entry.encrypt ? 'decrypted' : 'field', entry.repoRel);
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
// ── Distribute shared skills to all agents ─────────────────
|
|
185
|
+
if (entry.agentName === 'shared' && entry.repoRel.startsWith('shared/skills/')) {
|
|
186
|
+
const relInSkills = entry.repoRel.slice('shared/skills/'.length);
|
|
187
|
+
const shared = cfg.shared;
|
|
188
|
+
if (shared) {
|
|
189
|
+
for (const source of shared.skills.sources) {
|
|
190
|
+
const p = cfg.profiles.default[source.agent];
|
|
191
|
+
if (!p.enabled)
|
|
192
|
+
continue;
|
|
193
|
+
const dest = path.join(expandHome(p.workspacePath), source.dir, relInSkills);
|
|
194
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
195
|
+
fs.copyFileSync(srcRepo, dest);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
result.synced.push(entry.repoRel);
|
|
199
|
+
restoreIdx++;
|
|
200
|
+
logProgress(restoreIdx, restoreTotal, 'copy', entry.repoRel);
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
// ── Distribute shared custom agents to all agents ──────────
|
|
204
|
+
if (entry.agentName === 'shared' && entry.repoRel.startsWith('shared/agents/')) {
|
|
205
|
+
const relInAgents = entry.repoRel.slice('shared/agents/'.length);
|
|
206
|
+
const shared = cfg.shared;
|
|
207
|
+
if (shared?.agents) {
|
|
208
|
+
for (const source of shared.agents.sources) {
|
|
209
|
+
const p = cfg.profiles.default[source.agent];
|
|
210
|
+
if (!p.enabled)
|
|
211
|
+
continue;
|
|
212
|
+
const dest = path.join(expandHome(p.workspacePath), source.dir, relInAgents);
|
|
213
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
214
|
+
fs.copyFileSync(srcRepo, dest);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
result.synced.push(entry.repoRel);
|
|
218
|
+
restoreIdx++;
|
|
219
|
+
logProgress(restoreIdx, restoreTotal, 'copy', entry.repoRel);
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
// ── Conflict detection (whole-file sync) ──────────────────
|
|
223
|
+
if (fs.existsSync(entry.srcAbs)) {
|
|
224
|
+
let isDiff = false;
|
|
225
|
+
const localBuf = fs.readFileSync(entry.srcAbs);
|
|
226
|
+
let remoteContent;
|
|
227
|
+
if (entry.encrypt) {
|
|
228
|
+
try {
|
|
229
|
+
const decrypted = cryptoEngine.decryptString(fs.readFileSync(srcRepo, 'utf-8').trim(), keyPath);
|
|
230
|
+
isDiff = localBuf.toString('utf-8') !== decrypted;
|
|
231
|
+
remoteContent = decrypted;
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
isDiff = true;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
const repoBuf = fs.readFileSync(srcRepo);
|
|
239
|
+
isDiff = !localBuf.equals(repoBuf);
|
|
240
|
+
remoteContent = repoBuf.toString('utf-8');
|
|
241
|
+
}
|
|
242
|
+
if (isDiff) {
|
|
243
|
+
const ext = path.extname(entry.repoRel).toLowerCase();
|
|
244
|
+
const MERGEABLE_EXTS = new Set(['.md', '.txt', '.json', '.yaml', '.yml']);
|
|
245
|
+
const isTextMergeable = !entry.encrypt && MERGEABLE_EXTS.has(ext);
|
|
246
|
+
if (isTextMergeable && remoteContent !== undefined) {
|
|
247
|
+
const baseContent = await gitEngine.showFile(repoPath, 'HEAD~1', entry.repoRel);
|
|
248
|
+
if (baseContent !== null) {
|
|
249
|
+
const localContent = localBuf.toString('utf-8');
|
|
250
|
+
const mergeResult = threeWayMerge(baseContent, localContent, remoteContent);
|
|
251
|
+
if (!mergeResult.hasConflicts) {
|
|
252
|
+
fs.mkdirSync(path.dirname(entry.srcAbs), { recursive: true });
|
|
253
|
+
fs.writeFileSync(entry.srcAbs, mergeResult.merged, 'utf-8');
|
|
254
|
+
logger.info(` ${t('merge.autoResolved', { file: entry.repoRel })}`);
|
|
255
|
+
result.synced.push(entry.repoRel);
|
|
256
|
+
restoreIdx++;
|
|
257
|
+
logProgress(restoreIdx, restoreTotal, 'copy', entry.repoRel);
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
fs.mkdirSync(path.dirname(entry.srcAbs), { recursive: true });
|
|
261
|
+
fs.writeFileSync(entry.srcAbs, mergeResult.merged, 'utf-8');
|
|
262
|
+
logger.warn(` ${t('merge.conflictsFound', { file: entry.repoRel })}`);
|
|
263
|
+
result.conflicts.push(entry.repoRel);
|
|
264
|
+
result.synced.push(entry.repoRel);
|
|
265
|
+
restoreIdx++;
|
|
266
|
+
logProgress(restoreIdx, restoreTotal, 'copy', entry.repoRel);
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
// Fallback: interactive overwrite/skip/merge prompt
|
|
271
|
+
result.conflicts.push(entry.repoRel);
|
|
272
|
+
if (batchDecision === 'skip_all') {
|
|
273
|
+
logger.info(` \u21b7 ${t('sync.skippedKeepLocal', { file: entry.repoRel })}`);
|
|
274
|
+
result.skipped.push(entry.repoRel);
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
if (batchDecision !== 'overwrite_all') {
|
|
278
|
+
const localStr = localBuf.toString('utf-8');
|
|
279
|
+
const canMerge = isTextMergeable && remoteContent !== undefined;
|
|
280
|
+
const ans = await askConflict(entry.repoRel, localStr, remoteContent, canMerge);
|
|
281
|
+
if (ans === 'skip' || ans === 'skip_all') {
|
|
282
|
+
if (ans === 'skip_all')
|
|
283
|
+
batchDecision = 'skip_all';
|
|
284
|
+
logger.info(` \u21b7 ${t('sync.skippedKeepLocal', { file: entry.repoRel })}`);
|
|
285
|
+
result.skipped.push(entry.repoRel);
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
if (ans === 'overwrite_all')
|
|
289
|
+
batchDecision = 'overwrite_all';
|
|
290
|
+
if (ans === 'merge' && canMerge) {
|
|
291
|
+
const baseContent = await gitEngine.showFile(repoPath, 'HEAD~1', entry.repoRel);
|
|
292
|
+
const base = baseContent ?? '';
|
|
293
|
+
const mergeResult = threeWayMerge(base, localStr, remoteContent);
|
|
294
|
+
fs.mkdirSync(path.dirname(entry.srcAbs), { recursive: true });
|
|
295
|
+
fs.writeFileSync(entry.srcAbs, mergeResult.merged, 'utf-8');
|
|
296
|
+
if (mergeResult.hasConflicts) {
|
|
297
|
+
logger.warn(` ${t('merge.conflictsFound', { file: entry.repoRel })}`);
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
logger.info(` ${t('merge.autoResolved', { file: entry.repoRel })}`);
|
|
301
|
+
}
|
|
302
|
+
result.synced.push(entry.repoRel);
|
|
303
|
+
restoreIdx++;
|
|
304
|
+
logProgress(restoreIdx, restoreTotal, 'copy', entry.repoRel);
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// ── Write file ───────────────────────────────────────────
|
|
311
|
+
fs.mkdirSync(path.dirname(entry.srcAbs), { recursive: true });
|
|
312
|
+
if (entry.encrypt) {
|
|
313
|
+
cryptoEngine.decryptFile(srcRepo, entry.srcAbs, keyPath);
|
|
314
|
+
result.decrypted.push(entry.repoRel);
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
fs.copyFileSync(srcRepo, entry.srcAbs);
|
|
318
|
+
}
|
|
319
|
+
result.synced.push(entry.repoRel);
|
|
320
|
+
restoreIdx++;
|
|
321
|
+
logProgress(restoreIdx, restoreTotal, entry.encrypt ? 'decrypted' : 'copy', entry.repoRel);
|
|
322
|
+
}
|
|
323
|
+
// Log sync-meta freshness info
|
|
324
|
+
const meta = readSyncMeta(repoPath);
|
|
325
|
+
if (meta) {
|
|
326
|
+
logger.info(t('sync.meta.lastSync', {
|
|
327
|
+
time: meta.lastSyncAt,
|
|
328
|
+
hostname: meta.hostname,
|
|
329
|
+
env: meta.environment,
|
|
330
|
+
}));
|
|
331
|
+
const ageMs = Date.now() - new Date(meta.lastSyncAt).getTime();
|
|
332
|
+
const ageDays = Math.floor(ageMs / (1000 * 60 * 60 * 24));
|
|
333
|
+
if (ageDays >= 3) {
|
|
334
|
+
logger.warn(t('sync.meta.staleDays', { days: ageDays }));
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return result;
|
|
338
|
+
}
|
|
339
|
+
//# sourceMappingURL=sync-restore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-restore.js","sourceRoot":"","sources":["../../../src/core/sync-restore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sync-shared.ts — Cross-agent sharing distribution logic
|
|
3
|
+
*
|
|
4
|
+
* Handles distribution of skills, MCP configs, and custom agents between agents.
|
|
5
|
+
* Manages pending distributions and deletions for user confirmation.
|
|
6
|
+
*/
|
|
7
|
+
import type { WangchuanConfig, PendingDistribution } from '../types.js';
|
|
8
|
+
/** Save pending deletions for later user confirmation */
|
|
9
|
+
export declare function savePendingDeletions(files: string[]): void;
|
|
10
|
+
/** Load pending deletions */
|
|
11
|
+
export declare function loadPendingDeletions(): string[];
|
|
12
|
+
/** Clear pending deletions after confirmation */
|
|
13
|
+
export declare function clearPendingDeletions(): void;
|
|
14
|
+
/** Load pending distributions */
|
|
15
|
+
export declare function loadPendingDistributions(): PendingDistribution[];
|
|
16
|
+
/** Clear pending distributions after processing */
|
|
17
|
+
export declare function clearPendingDistributions(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Distribute shared content (skills, MCP configs, custom agents) to each agent's local directory.
|
|
20
|
+
* Skills and custom agents: collect pending distributions for user confirmation (no files written).
|
|
21
|
+
* MCP configs: distributed automatically (low-risk config merges).
|
|
22
|
+
* Called before push to prepare cross-agent sharing.
|
|
23
|
+
*/
|
|
24
|
+
export declare function distributeShared(cfg: WangchuanConfig): void;
|
|
25
|
+
/**
|
|
26
|
+
* Process pending distributions interactively.
|
|
27
|
+
* Groups by relFile, prompts user for each, executes the chosen actions.
|
|
28
|
+
*/
|
|
29
|
+
export declare function processPendingDistributions(cfg: WangchuanConfig): Promise<void>;
|
|
30
|
+
//# sourceMappingURL=sync-shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-shared.d.ts","sourceRoot":"","sources":["../../../src/core/sync-shared.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EACV,eAAe,EAGf,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAOrB,yDAAyD;AACzD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAK1D;AAED,6BAA6B;AAC7B,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAK/C;AAED,iDAAiD;AACjD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AA2BD,iCAAiC;AACjC,wBAAgB,wBAAwB,IAAI,mBAAmB,EAAE,CAKhE;AAED,mDAAmD;AACnD,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AA8HD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAwE3D;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAwErF"}
|