@birdmichael/ccsync 1.0.11 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/commands/config.d.ts.map +1 -1
  2. package/dist/commands/config.js +15 -3
  3. package/dist/commands/config.js.map +1 -1
  4. package/dist/commands/daemon.d.ts +9 -0
  5. package/dist/commands/daemon.d.ts.map +1 -0
  6. package/dist/commands/daemon.js +44 -0
  7. package/dist/commands/daemon.js.map +1 -0
  8. package/dist/commands/dashboard.d.ts.map +1 -1
  9. package/dist/commands/dashboard.js +26 -18
  10. package/dist/commands/dashboard.js.map +1 -1
  11. package/dist/commands/setup.d.ts.map +1 -1
  12. package/dist/commands/setup.js +18 -4
  13. package/dist/commands/setup.js.map +1 -1
  14. package/dist/commands/status.d.ts.map +1 -1
  15. package/dist/commands/status.js +7 -5
  16. package/dist/commands/status.js.map +1 -1
  17. package/dist/core/config-manager.d.ts +2 -0
  18. package/dist/core/config-manager.d.ts.map +1 -1
  19. package/dist/core/config-manager.js +77 -51
  20. package/dist/core/config-manager.js.map +1 -1
  21. package/dist/core/launch-agent.d.ts +1 -0
  22. package/dist/core/launch-agent.d.ts.map +1 -1
  23. package/dist/core/launch-agent.js +15 -6
  24. package/dist/core/launch-agent.js.map +1 -1
  25. package/dist/core/service-manager.d.ts +1 -3
  26. package/dist/core/service-manager.d.ts.map +1 -1
  27. package/dist/core/service-manager.js +94 -22
  28. package/dist/core/service-manager.js.map +1 -1
  29. package/dist/core/sync-service.d.ts +7 -0
  30. package/dist/core/sync-service.d.ts.map +1 -1
  31. package/dist/core/sync-service.js +70 -18
  32. package/dist/core/sync-service.js.map +1 -1
  33. package/dist/syncers/mcp-syncer.d.ts +1 -0
  34. package/dist/syncers/mcp-syncer.d.ts.map +1 -1
  35. package/dist/syncers/mcp-syncer.js +50 -17
  36. package/dist/syncers/mcp-syncer.js.map +1 -1
  37. package/dist/types/config.d.ts +1 -0
  38. package/dist/types/config.d.ts.map +1 -1
  39. package/dist/types/config.js.map +1 -1
  40. package/dist/types/mcp.d.ts +1 -1
  41. package/dist/utils/file-watcher.d.ts.map +1 -1
  42. package/dist/utils/file-watcher.js +6 -2
  43. package/dist/utils/file-watcher.js.map +1 -1
  44. package/dist/utils/logger.d.ts.map +1 -1
  45. package/dist/utils/logger.js +15 -4
  46. package/dist/utils/logger.js.map +1 -1
  47. package/dist/utils/process-helper.d.ts +3 -0
  48. package/dist/utils/process-helper.d.ts.map +1 -0
  49. package/dist/utils/process-helper.js +22 -0
  50. package/dist/utils/process-helper.js.map +1 -0
  51. package/package.json +1 -1
  52. package/scripts/test-compiled.sh +18 -0
@@ -1,7 +1,11 @@
1
1
  import fs from 'fs-extra';
2
+ import { execFile } from 'node:child_process';
3
+ import path from 'node:path';
4
+ import { promisify } from 'node:util';
2
5
  import { logger } from '../utils/logger.js';
3
6
  import { TEXTS } from '../utils/texts.js';
4
- import { formatDuration } from '../utils/time-helper.js';
7
+ import { expandPath, formatDuration } from '../utils/time-helper.js';
8
+ const execFileAsync = promisify(execFile);
5
9
  class McpSyncer {
6
10
  cachedMcpServers = [];
7
11
  dbPath;
@@ -9,16 +13,19 @@ class McpSyncer {
9
13
  selectedPlatforms;
10
14
  targetPath;
11
15
  constructor(dbPath, targetPath, selectedPlatforms) {
12
- this.dbPath = dbPath;
13
- this.targetPath = targetPath;
16
+ this.dbPath = expandPath(dbPath);
17
+ this.targetPath = expandPath(targetPath);
14
18
  this.selectedPlatforms = selectedPlatforms;
15
19
  }
16
20
  async sync() {
17
21
  const startTime = Date.now();
18
22
  try {
19
23
  logger.info(TEXTS.logs.messages.checkingDb);
24
+ if (!await fs.pathExists(this.dbPath)) {
25
+ throw new Error(`无法找到数据库文件:${this.dbPath}`);
26
+ }
20
27
  const currentMtime = await this.getDbMtime();
21
- if (currentMtime === this.lastDbMtime) {
28
+ if (currentMtime === this.lastDbMtime && this.cachedMcpServers.length > 0) {
22
29
  logger.info(TEXTS.logs.messages.dbNotChanged);
23
30
  return {
24
31
  cached: true,
@@ -27,7 +34,8 @@ class McpSyncer {
27
34
  };
28
35
  }
29
36
  logger.info(TEXTS.logs.messages.dbChanged);
30
- const mcpServers = this.cachedMcpServers;
37
+ const mcpServers = await this.loadMcpServersFromDb();
38
+ this.cachedMcpServers = mcpServers;
31
39
  this.lastDbMtime = currentMtime;
32
40
  const filteredServers = this.filterServersByPlatform(mcpServers);
33
41
  const openCodeMcpConfig = this.transformConfig(filteredServers);
@@ -65,26 +73,50 @@ class McpSyncer {
65
73
  });
66
74
  }
67
75
  async getDbMtime() {
68
- try {
69
- const stats = await fs.stat(this.dbPath);
70
- return stats.mtimeMs;
76
+ const stats = await fs.stat(this.dbPath);
77
+ return stats.mtimeMs;
78
+ }
79
+ async loadMcpServersFromDb() {
80
+ const query = [
81
+ 'SELECT id, name, server_config, enabled_claude, enabled_codex, enabled_gemini',
82
+ 'FROM mcp_servers;',
83
+ ].join(' ');
84
+ const { stdout } = await execFileAsync('sqlite3', ['-json', this.dbPath, query], {
85
+ maxBuffer: 10 * 1024 * 1024,
86
+ });
87
+ if (!stdout.trim()) {
88
+ return [];
71
89
  }
72
- catch (error) {
73
- logger.warn(`无法获取数据库文件修改时间:${error.message}`);
74
- return 0;
90
+ const rows = JSON.parse(stdout);
91
+ const servers = [];
92
+ for (const row of rows) {
93
+ let config = { command: 'echo' };
94
+ try {
95
+ config = JSON.parse(row.server_config);
96
+ }
97
+ catch (error) {
98
+ logger.warn(`解析 MCP server_config 失败 (${row.id}):${error instanceof Error ? error.message : String(error)}`);
99
+ }
100
+ servers.push({
101
+ config,
102
+ enabledClaude: Boolean(row.enabled_claude),
103
+ enabledCodex: Boolean(row.enabled_codex),
104
+ enabledGemini: Boolean(row.enabled_gemini),
105
+ id: row.id,
106
+ name: row.name,
107
+ });
75
108
  }
109
+ return servers;
76
110
  }
77
111
  transformConfig(servers) {
78
112
  const config = {};
79
113
  for (const server of servers) {
80
- const serverConfig = server.config || {
81
- args: [],
82
- command: 'echo',
83
- };
84
- const { args = [], command } = serverConfig;
114
+ const serverConfig = server.config || { command: 'echo' };
115
+ const { args = [], command, env } = serverConfig;
85
116
  config[server.name] = {
86
- command: [command, ...args],
117
+ command: [command || 'echo', ...args],
87
118
  enabled: true,
119
+ ...(env ? { environment: env } : {}),
88
120
  type: 'local',
89
121
  };
90
122
  }
@@ -93,6 +125,7 @@ class McpSyncer {
93
125
  }
94
126
  async updateOpenCodeConfig(mcpConfig) {
95
127
  try {
128
+ await fs.ensureDir(path.dirname(this.targetPath));
96
129
  let existingConfig = {};
97
130
  try {
98
131
  const content = await fs.readFile(this.targetPath, 'utf8');
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-syncer.js","sourceRoot":"","sources":["../../src/syncers/mcp-syncer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-syncer.js","sourceRoot":"","sources":["../../src/syncers/mcp-syncer.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export interface ServiceConfig {
22
22
  logLevel: 'debug' | 'error' | 'info' | 'warn';
23
23
  pid?: number;
24
24
  running?: boolean;
25
+ startedAt?: number;
25
26
  uptime?: number;
26
27
  }
27
28
  export interface SyncConfigDetails {
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;SAAE,CAAC,CAAC;KAClE,CAAC;IACF,OAAO,EAAE,aAAa,CAAC;IAEvB,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAE5B,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAEhC,GAAG,EAAE,SAAS,CAAC;IAEf,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAE3B,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAEF,OAAO,EAAE;QACP,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IAEF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IAExB,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,EAAE,OAAO,CAAC;IAIjB,SAAS,EAAE,CAAC,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC;IAErD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAE9B,OAAO,EAAE,OAAO,CAAC;IAEjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAGD,eAAO,MAAM,cAAc,EAAE,UAqC5B,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;SAAE,CAAC,CAAC;KAClE,CAAC;IACF,OAAO,EAAE,aAAa,CAAC;IAEvB,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAE5B,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAEhC,GAAG,EAAE,SAAS,CAAC;IAEf,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAE3B,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAEF,OAAO,EAAE;QACP,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IAEF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IAExB,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,EAAE,OAAO,CAAC;IAIjB,SAAS,EAAE,CAAC,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC;IAErD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAE9B,OAAO,EAAE,OAAO,CAAC;IAEjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAGD,eAAO,MAAM,cAAc,EAAE,UAqC5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,WAAW;AA0EX,OAAO;AACP,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,SAAS,EAAE;QACT,OAAO,EAAE,KAAK;QACd,eAAe,EAAE,8CAA8C;KAChE;IACD,MAAM,EAAE,CAAC;IACT,GAAG,EAAE;QACH,KAAK,EAAE,CAAC;KACT;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,uCAAuC;QAChD,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,KAAK;KACf;IACD,MAAM,EAAE;QACN,KAAK,EAAE,CAAC;KACT;IACD,IAAI,EAAE;QACJ,GAAG,EAAE;YACH,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,MAAM,EAAE,kCAAkC;SAC3C;QACD,MAAM,EAAE;YACN,KAAK,EAAE;gBACL,MAAM,EAAE,iEAAiE;gBACzE,KAAK,EAAE,kBAAkB;aAC1B;YACD,OAAO,EAAE;gBACP,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,KAAK;aACb;YACD,MAAM,EAAE,mBAAmB;SAC5B;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,WAAW;AA2EX,OAAO;AACP,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,SAAS,EAAE;QACT,OAAO,EAAE,KAAK;QACd,eAAe,EAAE,8CAA8C;KAChE;IACD,MAAM,EAAE,CAAC;IACT,GAAG,EAAE;QACH,KAAK,EAAE,CAAC;KACT;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,uCAAuC;QAChD,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,KAAK;KACf;IACD,MAAM,EAAE;QACN,KAAK,EAAE,CAAC;KACT;IACD,IAAI,EAAE;QACJ,GAAG,EAAE;YACH,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,MAAM,EAAE,kCAAkC;SAC3C;QACD,MAAM,EAAE;YACN,KAAK,EAAE;gBACL,MAAM,EAAE,iEAAiE;gBACzE,KAAK,EAAE,kBAAkB;aAC1B;YACD,OAAO,EAAE;gBACP,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,KAAK;aACb;YACD,MAAM,EAAE,mBAAmB;SAC5B;KACF;CACF,CAAC"}
@@ -2,7 +2,7 @@ export interface McpServer {
2
2
  enabledClaude: boolean;
3
3
  enabledCodex: boolean;
4
4
  enabledGemini: boolean;
5
- id: number;
5
+ id: string;
6
6
  name: string;
7
7
  serverConfig: McpServerConfig;
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"file-watcher.d.ts","sourceRoot":"","sources":["../../src/utils/file-watcher.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,cAAM,WAAW;IACf,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,cAAc,CAAa;gBAEvB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;IAKjD,IAAI,IAAI,IAAI;IAmBZ,KAAK,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAQtC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IA4BxD,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;CAsChE;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"file-watcher.d.ts","sourceRoot":"","sources":["../../src/utils/file-watcher.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,cAAM,WAAW;IACf,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,cAAc,CAAa;gBAEvB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;IAKjD,IAAI,IAAI,IAAI;IAmBZ,KAAK,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAQtC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IA4BxD,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;CA4ChE;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -65,11 +65,15 @@ class FileWatcher {
65
65
  continue;
66
66
  }
67
67
  const watcher = chokidar.watch(skillsPath, {
68
- ignoreInitial: false,
68
+ ignoreInitial: true,
69
69
  persistent: true,
70
70
  });
71
71
  watcher.on('all', (eventName, path) => {
72
- if (eventName === 'add' || eventName === 'unlink') {
72
+ if (eventName === 'add'
73
+ || eventName === 'addDir'
74
+ || eventName === 'change'
75
+ || eventName === 'unlink'
76
+ || eventName === 'unlinkDir') {
73
77
  logger.debug(`Skills 目录变化:${eventName} ${path}`);
74
78
  if (events.onSkillsChange) {
75
79
  events.onSkillsChange();
@@ -1 +1 @@
1
- {"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../../src/utils/file-watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../../src/utils/file-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,UAAU,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAOlC,MAAM,WAAW;IACP,MAAM,CAAS;IACf,SAAS,GAAQ,IAAI,CAAC;IACtB,WAAW,CAAW;IACtB,cAAc,GAAU,EAAE,CAAC;IAEnC,YAAY,MAAc,EAAE,WAAqB;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,IAAI;QACF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzB,UAAU;QACV,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QAED,iBAAiB;QACjB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAEzB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAyB;QAC7B,UAAU;QACV,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE3B,eAAe;QACf,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAES,aAAa,CAAC,MAAyB;QAC/C,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAAE,OAAO;QAErC,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAE5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC3C,aAAa,EAAE,KAAK;gBACpB,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE;gBAC3C,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;gBACjC,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAC5B,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAU,EAAE,EAAE;gBACxC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAES,oBAAoB,CAAC,MAAyB;QACtD,IAAI,CAAC,MAAM,CAAC,cAAc;YAAE,OAAO;QAEnC,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAEjC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;oBAC7C,SAAS;gBACX,CAAC;gBAED,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE;oBACzC,aAAa,EAAE,IAAI;oBACnB,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;gBAEH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,SAAiB,EAAE,IAAY,EAAE,EAAE;oBACpD,IACE,SAAS,KAAK,KAAK;2BAChB,SAAS,KAAK,QAAQ;2BACtB,SAAS,KAAK,QAAQ;2BACtB,SAAS,KAAK,QAAQ;2BACtB,SAAS,KAAK,WAAW,EAC5B,CAAC;wBACD,MAAM,CAAC,KAAK,CAAC,eAAe,SAAS,IAAI,IAAI,EAAE,CAAC,CAAC;wBACjD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;4BAC1B,MAAM,CAAC,cAAc,EAAE,CAAC;wBAC1B,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAU,EAAE,EAAE;oBACjC,MAAM,CAAC,KAAK,CAAC,kBAAkB,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1E,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;YAED,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAOA,cAAM,MAAM;IACV,OAAO,CAAC,MAAM,CAAiB;gBAEnB,QAAQ,GAAE,MAAe;IA6CrC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAIxD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAIxD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAIvD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAIvD,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;CASrB;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AASA,cAAM,MAAM;IACV,OAAO,CAAC,MAAM,CAAiB;gBAEnB,QAAQ,GAAE,MAAe;IAqDrC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAIxD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAIxD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAIvD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAIvD,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;CASrB;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
@@ -2,12 +2,23 @@ import fs from 'fs-extra';
2
2
  import path from 'node:path';
3
3
  import winston from 'winston';
4
4
  import DailyRotateFile from 'winston-daily-rotate-file';
5
- const LOG_DIR = path.join(process.env.HOME || '', '.local', 'share', 'ccsync', 'logs');
5
+ const DEFAULT_LOG_DIR = path.join(process.env.HOME || '', '.local', 'share', 'ccsync', 'logs');
6
+ const FALLBACK_LOG_DIR = path.join(process.cwd(), 'tmp', 'logs');
7
+ const LOG_DIR = process.env.CCSYNC_LOG_DIR || DEFAULT_LOG_DIR;
6
8
  class Logger {
7
9
  logger;
8
10
  constructor(logLevel = 'info') {
9
- // 确保日志目录存在
10
- fs.ensureDirSync(LOG_DIR);
11
+ // 确保日志目录存在(测试/沙箱环境可能无法写入 HOME)
12
+ let logDir = LOG_DIR;
13
+ try {
14
+ fs.ensureDirSync(logDir);
15
+ fs.accessSync(logDir, fs.constants.W_OK);
16
+ }
17
+ catch {
18
+ logDir = FALLBACK_LOG_DIR;
19
+ fs.ensureDirSync(logDir);
20
+ fs.accessSync(logDir, fs.constants.W_OK);
21
+ }
11
22
  this.logger = winston.createLogger({
12
23
  format: winston.format.combine(winston.format.timestamp({ format: 'HH:mm:ss' }), winston.format.printf(({ level, message, timestamp }) => {
13
24
  const color = this.getLevelColor(level);
@@ -27,7 +38,7 @@ class Logger {
27
38
  // 文件输出(每日轮转)
28
39
  new DailyRotateFile({
29
40
  datePattern: 'YYYY-MM-DD',
30
- dirname: LOG_DIR,
41
+ dirname: logDir,
31
42
  filename: 'ccsync-%DATE%.log',
32
43
  format: winston.format.combine(winston.format.timestamp({ format: 'HH:mm:ss' }), winston.format.printf(({ level, message, timestamp }) => {
33
44
  const icon = this.getLevelIcon(level);
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function isProcessRunning(pid: number): boolean;
2
+ export declare function waitForProcessExit(pid: number, timeoutMs: number, pollIntervalMs?: number): Promise<boolean>;
3
+ //# sourceMappingURL=process-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-helper.d.ts","sourceRoot":"","sources":["../../src/utils/process-helper.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASrD;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,MAAY,GAC3B,OAAO,CAAC,OAAO,CAAC,CASlB"}
@@ -0,0 +1,22 @@
1
+ import { sleep } from './time-helper.js';
2
+ export function isProcessRunning(pid) {
3
+ if (!Number.isFinite(pid) || pid <= 0)
4
+ return false;
5
+ try {
6
+ process.kill(pid, 0);
7
+ return true;
8
+ }
9
+ catch {
10
+ return false;
11
+ }
12
+ }
13
+ export async function waitForProcessExit(pid, timeoutMs, pollIntervalMs = 200) {
14
+ const deadline = Date.now() + timeoutMs;
15
+ while (Date.now() < deadline) {
16
+ if (!isProcessRunning(pid))
17
+ return true;
18
+ await sleep(pollIntervalMs);
19
+ }
20
+ return !isProcessRunning(pid);
21
+ }
22
+ //# sourceMappingURL=process-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-helper.js","sourceRoot":"","sources":["../../src/utils/process-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,SAAiB,EACjB,iBAAyB,GAAG;IAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAExC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@birdmichael/ccsync",
3
3
  "description": "A new CLI generated with oclif",
4
- "version": "1.0.11",
4
+ "version": "1.0.12",
5
5
  "bin": "./bin/run.js",
6
6
  "main": "dist/index.js",
7
7
  "type": "module",
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+
3
+ echo "Testing compiled package..."
4
+
5
+ # Temporarily link the compiled version
6
+ npm unlink -g 2>/dev/null || true
7
+ npm link
8
+
9
+ echo "Testing ccsync --version..."
10
+ ccsync --version
11
+
12
+ echo "Testing ccsync status..."
13
+ ccsync status || echo "status command may not work without config"
14
+
15
+ echo "Testing ccsync --help..."
16
+ ccsync --help | head -5
17
+
18
+ echo "✅ Compiled package tests passed!"