@claudetools/cli 0.13.13 → 0.13.15
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/dist/__tests__/factories.d.ts +173 -0
- package/dist/__tests__/factories.d.ts.map +1 -0
- package/dist/__tests__/factories.js +150 -0
- package/dist/__tests__/factories.js.map +1 -0
- package/dist/__tests__/helpers.d.ts +36 -0
- package/dist/__tests__/helpers.d.ts.map +1 -0
- package/dist/__tests__/helpers.js +52 -0
- package/dist/__tests__/helpers.js.map +1 -0
- package/dist/analytics/index.d.ts +14 -0
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/index.js +259 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/session.d.ts +17 -0
- package/dist/analytics/session.d.ts.map +1 -0
- package/dist/analytics/session.js +130 -0
- package/dist/analytics/session.js.map +1 -0
- package/dist/analytics/token-tracker.d.ts +48 -0
- package/dist/analytics/token-tracker.d.ts.map +1 -0
- package/dist/analytics/token-tracker.js +269 -0
- package/dist/analytics/token-tracker.js.map +1 -0
- package/dist/analytics/tracker.d.ts +33 -0
- package/dist/analytics/tracker.d.ts.map +1 -0
- package/dist/analytics/tracker.js +210 -0
- package/dist/analytics/tracker.js.map +1 -0
- package/dist/api-keys/index.d.ts +15 -0
- package/dist/api-keys/index.d.ts.map +1 -0
- package/dist/api-keys/index.js +228 -0
- package/dist/api-keys/index.js.map +1 -0
- package/dist/auth/config.d.ts +15 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +67 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +299 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/keychain.d.ts +21 -0
- package/dist/auth/keychain.d.ts.map +1 -0
- package/dist/auth/keychain.js +256 -0
- package/dist/auth/keychain.js.map +1 -0
- package/dist/billing/index.d.ts +7 -0
- package/dist/billing/index.d.ts.map +1 -0
- package/dist/billing/index.js +233 -0
- package/dist/billing/index.js.map +1 -0
- package/dist/cli.js +291 -43
- package/dist/cli.js.map +1 -1
- package/dist/commands/hook.d.ts +12 -0
- package/dist/commands/hook.d.ts.map +1 -0
- package/dist/commands/hook.js +190 -0
- package/dist/commands/hook.js.map +1 -0
- package/dist/commands/keys.d.ts +4 -0
- package/dist/commands/keys.d.ts.map +1 -0
- package/dist/commands/keys.js +43 -0
- package/dist/commands/keys.js.map +1 -0
- package/dist/commands/mcp.d.ts +4 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +43 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/project.d.ts +4 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +68 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/skill.d.ts +4 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +37 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/stacks.d.ts +4 -0
- package/dist/commands/stacks.d.ts.map +1 -0
- package/dist/commands/stacks.js +103 -0
- package/dist/commands/stacks.js.map +1 -0
- package/dist/commands/stats.d.ts +4 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +6 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/sync.d.ts +4 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +60 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/update.d.ts +4 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +63 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/daemon/client.d.ts +107 -0
- package/dist/daemon/client.d.ts.map +1 -0
- package/dist/daemon/client.js +250 -0
- package/dist/daemon/client.js.map +1 -0
- package/dist/daemon/health.d.ts +38 -0
- package/dist/daemon/health.d.ts.map +1 -0
- package/dist/daemon/health.js +212 -0
- package/dist/daemon/health.js.map +1 -0
- package/dist/daemon/index.d.ts +34 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +197 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/protocol.d.ts +144 -0
- package/dist/daemon/protocol.d.ts.map +1 -0
- package/dist/daemon/protocol.js +5 -0
- package/dist/daemon/protocol.js.map +1 -0
- package/dist/gamification/index.d.ts +13 -0
- package/dist/gamification/index.d.ts.map +1 -0
- package/dist/gamification/index.js +120 -0
- package/dist/gamification/index.js.map +1 -0
- package/dist/gamification/types.d.ts +34 -0
- package/dist/gamification/types.d.ts.map +1 -0
- package/dist/gamification/types.js +5 -0
- package/dist/gamification/types.js.map +1 -0
- package/dist/hooks/index.d.ts +65 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +403 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/lib/api.d.ts +29 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +213 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/browser.d.ts +6 -0
- package/dist/lib/browser.d.ts.map +1 -0
- package/dist/lib/browser.js +14 -0
- package/dist/lib/browser.js.map +1 -0
- package/dist/lib/channel-config.d.ts +10 -0
- package/dist/lib/channel-config.d.ts.map +1 -0
- package/dist/lib/channel-config.js +48 -0
- package/dist/lib/channel-config.js.map +1 -0
- package/dist/lib/command-runner.d.ts +16 -0
- package/dist/lib/command-runner.d.ts.map +1 -0
- package/dist/lib/command-runner.js +59 -0
- package/dist/lib/command-runner.js.map +1 -0
- package/dist/lib/command-utils.d.ts +22 -0
- package/dist/lib/command-utils.d.ts.map +1 -0
- package/dist/lib/command-utils.js +88 -0
- package/dist/lib/command-utils.js.map +1 -0
- package/dist/lib/error-handler.d.ts +13 -0
- package/dist/lib/error-handler.d.ts.map +1 -0
- package/dist/lib/error-handler.js +70 -0
- package/dist/lib/error-handler.js.map +1 -0
- package/dist/lib/errors.d.ts +35 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +70 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/exit.d.ts +10 -0
- package/dist/lib/exit.d.ts.map +1 -0
- package/dist/lib/exit.js +21 -0
- package/dist/lib/exit.js.map +1 -0
- package/dist/lib/formatters.d.ts +65 -0
- package/dist/lib/formatters.d.ts.map +1 -0
- package/dist/lib/formatters.js +180 -0
- package/dist/lib/formatters.js.map +1 -0
- package/dist/lib/hybrid-data.d.ts +47 -0
- package/dist/lib/hybrid-data.d.ts.map +1 -0
- package/dist/lib/hybrid-data.js +326 -0
- package/dist/lib/hybrid-data.js.map +1 -0
- package/dist/lib/local-store.d.ts +113 -0
- package/dist/lib/local-store.d.ts.map +1 -0
- package/dist/lib/local-store.js +220 -0
- package/dist/lib/local-store.js.map +1 -0
- package/dist/lib/machine-id.d.ts +8 -0
- package/dist/lib/machine-id.d.ts.map +1 -0
- package/dist/lib/machine-id.js +39 -0
- package/dist/lib/machine-id.js.map +1 -0
- package/dist/lib/network.d.ts +15 -0
- package/dist/lib/network.d.ts.map +1 -0
- package/dist/lib/network.js +46 -0
- package/dist/lib/network.js.map +1 -0
- package/dist/lib/theme.d.ts +77 -0
- package/dist/lib/theme.d.ts.map +1 -0
- package/dist/lib/theme.js +137 -0
- package/dist/lib/theme.js.map +1 -0
- package/dist/lib/tool-availability.d.ts +13 -0
- package/dist/lib/tool-availability.d.ts.map +1 -0
- package/dist/lib/tool-availability.js +48 -0
- package/dist/lib/tool-availability.js.map +1 -0
- package/dist/lib/update-checker.d.ts +21 -0
- package/dist/lib/update-checker.d.ts.map +1 -0
- package/dist/lib/update-checker.js +110 -0
- package/dist/lib/update-checker.js.map +1 -0
- package/dist/lib/validation.d.ts +30 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +82 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/lib/validators.d.ts +18 -0
- package/dist/lib/validators.d.ts.map +1 -0
- package/dist/lib/validators.js +30 -0
- package/dist/lib/validators.js.map +1 -0
- package/dist/marketplace/api.d.ts +24 -0
- package/dist/marketplace/api.d.ts.map +1 -0
- package/dist/marketplace/api.js +92 -0
- package/dist/marketplace/api.js.map +1 -0
- package/dist/marketplace/index.d.ts +13 -0
- package/dist/marketplace/index.d.ts.map +1 -0
- package/dist/marketplace/index.js +155 -0
- package/dist/marketplace/index.js.map +1 -0
- package/dist/marketplace/installer.d.ts +18 -0
- package/dist/marketplace/installer.d.ts.map +1 -0
- package/dist/marketplace/installer.js +184 -0
- package/dist/marketplace/installer.js.map +1 -0
- package/dist/mcp/api.d.ts +93 -0
- package/dist/mcp/api.d.ts.map +1 -0
- package/dist/mcp/api.js +106 -0
- package/dist/mcp/api.js.map +1 -0
- package/dist/mcp/config.d.ts +72 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +156 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/index.d.ts +54 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +381 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/prompt.clean.d.ts +25 -0
- package/dist/mcp/prompt.clean.d.ts.map +1 -0
- package/dist/mcp/prompt.clean.js +206 -0
- package/dist/mcp/prompt.clean.js.map +1 -0
- package/dist/mcp/prompt.d.ts +52 -0
- package/dist/mcp/prompt.d.ts.map +1 -0
- package/dist/mcp/prompt.js +210 -0
- package/dist/mcp/prompt.js.map +1 -0
- package/dist/mcp/secrets.clean.d.ts +18 -0
- package/dist/mcp/secrets.clean.d.ts.map +1 -0
- package/dist/mcp/secrets.clean.js +357 -0
- package/dist/mcp/secrets.clean.js.map +1 -0
- package/dist/mcp/secrets.d.ts +46 -0
- package/dist/mcp/secrets.d.ts.map +1 -0
- package/dist/mcp/secrets.js +339 -0
- package/dist/mcp/secrets.js.map +1 -0
- package/dist/memory/index.d.ts +14 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +98 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/onboard/agents-md-builder.d.ts.map +1 -1
- package/dist/onboard/agents-md-builder.js +45 -0
- package/dist/onboard/agents-md-builder.js.map +1 -1
- package/dist/onboard/claude-inference.d.ts.map +1 -1
- package/dist/onboard/claude-inference.js +15 -4
- package/dist/onboard/claude-inference.js.map +1 -1
- package/dist/onboard/context7-fetcher.d.ts +1 -1
- package/dist/onboard/context7-fetcher.d.ts.map +1 -1
- package/dist/onboard/context7-fetcher.js +50 -16
- package/dist/onboard/context7-fetcher.js.map +1 -1
- package/dist/onboard/docs-builder.d.ts.map +1 -1
- package/dist/onboard/docs-builder.js +523 -50
- package/dist/onboard/docs-builder.js.map +1 -1
- package/dist/onboard/index.d.ts.map +1 -1
- package/dist/onboard/index.js +74 -25
- package/dist/onboard/index.js.map +1 -1
- package/dist/onboard/stack-detector.d.ts.map +1 -1
- package/dist/onboard/stack-detector.js +5 -55
- package/dist/onboard/stack-detector.js.map +1 -1
- package/dist/project/constants.d.ts +21 -0
- package/dist/project/constants.d.ts.map +1 -0
- package/dist/project/constants.js +21 -0
- package/dist/project/constants.js.map +1 -0
- package/dist/project/format.d.ts +16 -0
- package/dist/project/format.d.ts.map +1 -0
- package/dist/project/format.js +40 -0
- package/dist/project/format.js.map +1 -0
- package/dist/project/git.d.ts +28 -0
- package/dist/project/git.d.ts.map +1 -0
- package/dist/project/git.js +93 -0
- package/dist/project/git.js.map +1 -0
- package/dist/project/index.d.ts +36 -0
- package/dist/project/index.d.ts.map +1 -0
- package/dist/project/index.js +272 -0
- package/dist/project/index.js.map +1 -0
- package/dist/project/mapper.d.ts +27 -0
- package/dist/project/mapper.d.ts.map +1 -0
- package/dist/project/mapper.js +64 -0
- package/dist/project/mapper.js.map +1 -0
- package/dist/project/storage.d.ts +71 -0
- package/dist/project/storage.d.ts.map +1 -0
- package/dist/project/storage.js +274 -0
- package/dist/project/storage.js.map +1 -0
- package/dist/project/sync-bridge.d.ts +33 -0
- package/dist/project/sync-bridge.d.ts.map +1 -0
- package/dist/project/sync-bridge.js +155 -0
- package/dist/project/sync-bridge.js.map +1 -0
- package/dist/project/types.d.ts +107 -0
- package/dist/project/types.d.ts.map +1 -0
- package/dist/project/types.js +77 -0
- package/dist/project/types.js.map +1 -0
- package/dist/publish/index.d.ts +4 -0
- package/dist/publish/index.d.ts.map +1 -0
- package/dist/publish/index.js +92 -0
- package/dist/publish/index.js.map +1 -0
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +29 -10
- package/dist/setup.js.map +1 -1
- package/dist/skills/index.d.ts +51 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +509 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/stacks/check.d.ts +2 -0
- package/dist/stacks/check.d.ts.map +1 -0
- package/dist/stacks/check.js +144 -0
- package/dist/stacks/check.js.map +1 -0
- package/dist/stacks/diff.d.ts +11 -0
- package/dist/stacks/diff.d.ts.map +1 -0
- package/dist/stacks/diff.js +123 -0
- package/dist/stacks/diff.js.map +1 -0
- package/dist/stacks/index.d.ts +17 -0
- package/dist/stacks/index.d.ts.map +1 -0
- package/dist/stacks/index.js +525 -0
- package/dist/stacks/index.js.map +1 -0
- package/dist/stacks/index.refactored.d.ts.map +1 -0
- package/dist/stacks/index.refactored.js.map +1 -0
- package/dist/stacks/io.d.ts +11 -0
- package/dist/stacks/io.d.ts.map +1 -0
- package/dist/stacks/io.js +179 -0
- package/dist/stacks/io.js.map +1 -0
- package/dist/stacks/rollback.d.ts +5 -0
- package/dist/stacks/rollback.d.ts.map +1 -0
- package/dist/stacks/rollback.js +162 -0
- package/dist/stacks/rollback.js.map +1 -0
- package/dist/stacks/types.d.ts +70 -0
- package/dist/stacks/types.d.ts.map +1 -0
- package/dist/stacks/types.js +6 -0
- package/dist/stacks/types.js.map +1 -0
- package/dist/stacks/utils.d.ts +9 -0
- package/dist/stacks/utils.d.ts.map +1 -0
- package/dist/stacks/utils.js +11 -0
- package/dist/stacks/utils.js.map +1 -0
- package/dist/start/index.d.ts +23 -0
- package/dist/start/index.d.ts.map +1 -0
- package/dist/start/index.js +386 -0
- package/dist/start/index.js.map +1 -0
- package/dist/sync/index.d.ts +49 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +207 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync-engine/__tests__/test-helpers.d.ts +14 -0
- package/dist/sync-engine/__tests__/test-helpers.d.ts.map +1 -0
- package/dist/sync-engine/__tests__/test-helpers.js +73 -0
- package/dist/sync-engine/__tests__/test-helpers.js.map +1 -0
- package/dist/sync-engine/client.d.ts +128 -0
- package/dist/sync-engine/client.d.ts.map +1 -0
- package/dist/sync-engine/client.js +289 -0
- package/dist/sync-engine/client.js.map +1 -0
- package/dist/sync-engine/health.d.ts +38 -0
- package/dist/sync-engine/health.d.ts.map +1 -0
- package/dist/sync-engine/health.js +259 -0
- package/dist/sync-engine/health.js.map +1 -0
- package/dist/sync-engine/index.d.ts +34 -0
- package/dist/sync-engine/index.d.ts.map +1 -0
- package/dist/sync-engine/index.js +197 -0
- package/dist/sync-engine/index.js.map +1 -0
- package/dist/sync-engine/protocol.d.ts +153 -0
- package/dist/sync-engine/protocol.d.ts.map +1 -0
- package/dist/sync-engine/protocol.js +5 -0
- package/dist/sync-engine/protocol.js.map +1 -0
- package/dist/tasks/index.d.ts +14 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +109 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/team/index.d.ts +12 -0
- package/dist/team/index.d.ts.map +1 -0
- package/dist/team/index.js +151 -0
- package/dist/team/index.js.map +1 -0
- package/dist/updater.d.ts +5 -5
- package/dist/updater.d.ts.map +1 -1
- package/dist/updater.js +24 -88
- package/dist/updater.js.map +1 -1
- package/dist/usage/index.d.ts +10 -0
- package/dist/usage/index.d.ts.map +1 -0
- package/dist/usage/index.js +104 -0
- package/dist/usage/index.js.map +1 -0
- package/dist/webhooks/index.d.ts +7 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/index.js +81 -0
- package/dist/webhooks/index.js.map +1 -0
- package/package.json +26 -15
- package/scripts/postinstall.js +282 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync Engine health checks and auto-start functionality
|
|
3
|
+
*/
|
|
4
|
+
import { spawn, execSync } from 'child_process';
|
|
5
|
+
import { createRequire } from 'module';
|
|
6
|
+
import { existsSync, lstatSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
7
|
+
import { homedir } from 'os';
|
|
8
|
+
import { join, dirname } from 'path';
|
|
9
|
+
import { getSyncEngineClient, isSyncEngineRunning } from './client.js';
|
|
10
|
+
const SYNC_ENGINE_PID_FILE = join(homedir(), '.claudetools', 'sync.pid');
|
|
11
|
+
const SYNC_ENGINE_LOG_FILE = join(homedir(), '.claudetools', 'logs', 'sync.log');
|
|
12
|
+
const SYNC_ENGINE_BINARY = 'claudetools-sync';
|
|
13
|
+
/**
|
|
14
|
+
* Check if sync engine process is running via PID file
|
|
15
|
+
*/
|
|
16
|
+
export function isSyncEngineProcessRunning() {
|
|
17
|
+
if (!existsSync(SYNC_ENGINE_PID_FILE)) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const pid = parseInt(readFileSync(SYNC_ENGINE_PID_FILE, 'utf-8').trim(), 10);
|
|
22
|
+
// Check if process exists
|
|
23
|
+
process.kill(pid, 0);
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
// EPERM means process exists but we can't signal it (permissions issue)
|
|
28
|
+
if (error && typeof error === 'object' && 'code' in error && error.code === 'EPERM') {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get sync engine PID from PID file
|
|
36
|
+
*/
|
|
37
|
+
export function getSyncEnginePid() {
|
|
38
|
+
if (!existsSync(SYNC_ENGINE_PID_FILE)) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
return parseInt(readFileSync(SYNC_ENGINE_PID_FILE, 'utf-8').trim(), 10);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Start the sync engine in background mode
|
|
50
|
+
*/
|
|
51
|
+
export async function startSyncEngine() {
|
|
52
|
+
// Check if already running
|
|
53
|
+
if (await isSyncEngineRunning()) {
|
|
54
|
+
const pid = getSyncEnginePid();
|
|
55
|
+
if (pid) {
|
|
56
|
+
return { pid };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Ensure log directory exists
|
|
60
|
+
const logDir = dirname(SYNC_ENGINE_LOG_FILE);
|
|
61
|
+
if (!existsSync(logDir)) {
|
|
62
|
+
mkdirSync(logDir, { recursive: true });
|
|
63
|
+
}
|
|
64
|
+
// Find sync engine binary
|
|
65
|
+
const syncEnginePath = findSyncEngineBinary();
|
|
66
|
+
if (!syncEnginePath) {
|
|
67
|
+
throw new Error(`Sync engine binary not found. Install with: npm install -g @claudetools/sync`);
|
|
68
|
+
}
|
|
69
|
+
return new Promise((resolve, reject) => {
|
|
70
|
+
// Spawn sync engine in background
|
|
71
|
+
const child = spawn(syncEnginePath, ['socket'], {
|
|
72
|
+
detached: true,
|
|
73
|
+
stdio: 'ignore',
|
|
74
|
+
env: {
|
|
75
|
+
...process.env,
|
|
76
|
+
PWD: process.cwd(),
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
child.unref();
|
|
80
|
+
// Wait a bit for sync engine to start
|
|
81
|
+
setTimeout(async () => {
|
|
82
|
+
if (await isSyncEngineRunning()) {
|
|
83
|
+
const pid = child.pid || getSyncEnginePid();
|
|
84
|
+
if (pid) {
|
|
85
|
+
// Write PID file
|
|
86
|
+
writePidFile(pid);
|
|
87
|
+
resolve({ pid });
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
reject(new Error('Sync engine started but PID not found'));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
reject(new Error('Sync engine failed to start'));
|
|
95
|
+
}
|
|
96
|
+
}, 1000);
|
|
97
|
+
child.on('error', (error) => {
|
|
98
|
+
reject(new Error(`Failed to start sync engine: ${error.message}`));
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Stop the sync engine
|
|
104
|
+
*/
|
|
105
|
+
export async function stopSyncEngine() {
|
|
106
|
+
const pid = getSyncEnginePid();
|
|
107
|
+
if (!pid) {
|
|
108
|
+
return; // Not running
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
process.kill(pid, 'SIGTERM');
|
|
112
|
+
// Remove PID file
|
|
113
|
+
const fs = await import('fs/promises');
|
|
114
|
+
await fs.unlink(SYNC_ENGINE_PID_FILE).catch(() => { });
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// Process doesn't exist, clean up PID file
|
|
118
|
+
const fs = await import('fs/promises');
|
|
119
|
+
await fs.unlink(SYNC_ENGINE_PID_FILE).catch(() => { });
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Ensure sync engine is running, starting it if necessary
|
|
124
|
+
*/
|
|
125
|
+
export async function ensureSyncEngineRunning() {
|
|
126
|
+
if (await isSyncEngineRunning()) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
await startSyncEngine();
|
|
130
|
+
// Wait for sync engine to be responsive
|
|
131
|
+
let attempts = 0;
|
|
132
|
+
const maxAttempts = 10;
|
|
133
|
+
while (attempts < maxAttempts) {
|
|
134
|
+
if (await isSyncEngineRunning()) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
await sleep(500);
|
|
138
|
+
attempts++;
|
|
139
|
+
}
|
|
140
|
+
throw new Error('Sync engine started but not responsive');
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get sync engine status with details
|
|
144
|
+
*/
|
|
145
|
+
export async function getSyncEngineStatus() {
|
|
146
|
+
const pid = getSyncEnginePid();
|
|
147
|
+
const processRunning = isSyncEngineProcessRunning();
|
|
148
|
+
if (!processRunning) {
|
|
149
|
+
return { running: false };
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
const client = getSyncEngineClient();
|
|
153
|
+
const status = await client.getStatus();
|
|
154
|
+
return {
|
|
155
|
+
running: true,
|
|
156
|
+
pid: pid ?? undefined,
|
|
157
|
+
version: status.version,
|
|
158
|
+
uptime: status.uptime,
|
|
159
|
+
activeStack: status.activeStack ?? undefined,
|
|
160
|
+
isolationMode: status.isolationMode,
|
|
161
|
+
mcpCount: status.pool.processCount,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
// Process running but not responsive
|
|
166
|
+
return {
|
|
167
|
+
running: false,
|
|
168
|
+
pid: pid ?? undefined,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Find the sync engine binary using a cascading resolution strategy.
|
|
174
|
+
*
|
|
175
|
+
* Priority order:
|
|
176
|
+
* 1. CLAUDETOOLS_SYNC_PATH env var (escape hatch)
|
|
177
|
+
* 2. Platform-specific optionalDependency npm package
|
|
178
|
+
* 3. ~/.local/bin (desktop sidecar install location)
|
|
179
|
+
* 4. Dev builds (release then debug)
|
|
180
|
+
* 5. System paths (/usr/local/bin, /usr/bin)
|
|
181
|
+
* 6. Cargo bin (~/.cargo/bin)
|
|
182
|
+
* 7. PATH fallback via `which`
|
|
183
|
+
*/
|
|
184
|
+
function findSyncEngineBinary() {
|
|
185
|
+
const ext = process.platform === 'win32' ? '.exe' : '';
|
|
186
|
+
const binaryName = `${SYNC_ENGINE_BINARY}${ext}`;
|
|
187
|
+
// 1. Environment variable override
|
|
188
|
+
const envPath = process.env.CLAUDETOOLS_SYNC_PATH;
|
|
189
|
+
if (envPath && existsSync(envPath)) {
|
|
190
|
+
return envPath;
|
|
191
|
+
}
|
|
192
|
+
// 2. Resolve from platform-specific optionalDependency
|
|
193
|
+
const platformKey = `${process.platform}-${process.arch}`;
|
|
194
|
+
const pkgName = `@claudetools/sync-${platformKey}`;
|
|
195
|
+
try {
|
|
196
|
+
const require = createRequire(import.meta.url);
|
|
197
|
+
const resolved = require.resolve(`${pkgName}/bin/${binaryName}`);
|
|
198
|
+
if (existsSync(resolved)) {
|
|
199
|
+
return resolved;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// Package not installed — continue to next strategy
|
|
204
|
+
}
|
|
205
|
+
// 3–6. Static known paths
|
|
206
|
+
const candidatePaths = [
|
|
207
|
+
// Desktop sidecar install
|
|
208
|
+
join(homedir(), '.local', 'bin', binaryName),
|
|
209
|
+
];
|
|
210
|
+
// Development build paths - only check in dev
|
|
211
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
212
|
+
candidatePaths.push(join(process.cwd(), 'packages', 'claudetools-sync', 'target', 'release', binaryName), join(process.cwd(), 'packages', 'claudetools-sync', 'target', 'debug', binaryName));
|
|
213
|
+
}
|
|
214
|
+
candidatePaths.push(
|
|
215
|
+
// System paths
|
|
216
|
+
`/usr/local/bin/${binaryName}`, `/usr/bin/${binaryName}`,
|
|
217
|
+
// Cargo bin
|
|
218
|
+
join(homedir(), '.cargo', 'bin', binaryName));
|
|
219
|
+
for (const candidatePath of candidatePaths) {
|
|
220
|
+
if (existsSync(candidatePath)) {
|
|
221
|
+
try {
|
|
222
|
+
const stat = lstatSync(candidatePath);
|
|
223
|
+
if (stat.isSymbolicLink()) {
|
|
224
|
+
continue; // Skip symlinks for security (CWE-59)
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
return candidatePath;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
// 7. PATH fallback via `which` (or `where` on Windows)
|
|
234
|
+
try {
|
|
235
|
+
const whichCmd = process.platform === 'win32' ? 'where' : 'which';
|
|
236
|
+
const found = execSync(`${whichCmd} ${SYNC_ENGINE_BINARY}`, {
|
|
237
|
+
encoding: 'utf-8',
|
|
238
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
239
|
+
}).trim().split('\n')[0];
|
|
240
|
+
if (found && existsSync(found)) {
|
|
241
|
+
return found;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
// Not found in PATH
|
|
246
|
+
}
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
function writePidFile(pid) {
|
|
250
|
+
const dir = dirname(SYNC_ENGINE_PID_FILE);
|
|
251
|
+
if (!existsSync(dir)) {
|
|
252
|
+
mkdirSync(dir, { recursive: true });
|
|
253
|
+
}
|
|
254
|
+
writeFileSync(SYNC_ENGINE_PID_FILE, pid.toString(), 'utf-8');
|
|
255
|
+
}
|
|
256
|
+
function sleep(ms) {
|
|
257
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/sync-engine/health.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAgB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AACzE,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AACjF,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACxC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7E,0BAA0B;QAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wEAAwE;QACxE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACpF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,YAAY,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,2BAA2B;IAC3B,IAAI,MAAM,mBAAmB,EAAE,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;QAC/B,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,EAAE,GAAG,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,0BAA0B;IAC1B,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,kCAAkC;QAClC,MAAM,KAAK,GAAiB,KAAK,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,EAAE;YAC5D,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;YACf,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;aACnB;SACF,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,sCAAsC;QACtC,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,IAAI,MAAM,mBAAmB,EAAE,EAAE,CAAC;gBAChC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,gBAAgB,EAAE,CAAC;gBAC5C,IAAI,GAAG,EAAE,CAAC;oBACR,iBAAiB;oBACjB,YAAY,CAAC,GAAG,CAAC,CAAC;oBAClB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,cAAc;IACxB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC7B,kBAAkB;QAClB,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACvC,MAAM,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;QAC3C,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACvC,MAAM,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,IAAI,MAAM,mBAAmB,EAAE,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,eAAe,EAAE,CAAC;IAExB,wCAAwC;IACxC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,OAAO,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC9B,IAAI,MAAM,mBAAmB,EAAE,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QACD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QACjB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IASvC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,cAAc,GAAG,0BAA0B,EAAE,CAAC;IAEpD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QACxC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,GAAG,EAAE,GAAG,IAAI,SAAS;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;YAC5C,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY;SACnC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;QACrC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,GAAG,EAAE,GAAG,IAAI,SAAS;SACtB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,oBAAoB;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,UAAU,GAAG,GAAG,kBAAkB,GAAG,GAAG,EAAE,CAAC;IAEjD,mCAAmC;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAClD,IAAI,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,uDAAuD;IACvD,MAAM,WAAW,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,OAAO,GAAG,qBAAqB,WAAW,EAAE,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,QAAQ,UAAU,EAAE,CAAC,CAAC;QACjE,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;IACtD,CAAC;IAED,0BAA0B;IAC1B,MAAM,cAAc,GAAa;QAC/B,0BAA0B;QAC1B,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC;KAC7C,CAAC;IAEF,8CAA8C;IAC9C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC1C,cAAc,CAAC,IAAI,CACjB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,EACpF,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CACnF,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,IAAI;IACjB,eAAe;IACf,kBAAkB,UAAU,EAAE,EAC9B,YAAY,UAAU,EAAE;IACxB,YAAY;IACZ,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAC7C,CAAC;IAEF,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;gBACtC,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC1B,SAAS,CAAC,sCAAsC;gBAClD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,QAAQ,IAAI,kBAAkB,EAAE,EAAE;YAC1D,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,oBAAoB;IACtB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,aAAa,CAAC,oBAAoB,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync Engine module - public exports
|
|
3
|
+
*/
|
|
4
|
+
export { SyncEngineClient, getSyncEngineClient, isSyncEngineRunning } from './client.js';
|
|
5
|
+
export { startSyncEngine, stopSyncEngine, ensureSyncEngineRunning, getSyncEngineStatus, isSyncEngineProcessRunning, getSyncEnginePid, } from './health.js';
|
|
6
|
+
export type { SyncEngineStatus, LocalStack, StackListResult, MCPConfig, HookConfig, PoolStatus, ProcessStatus, } from './protocol.js';
|
|
7
|
+
/**
|
|
8
|
+
* Run 'sync start' command
|
|
9
|
+
*/
|
|
10
|
+
export declare function runSyncEngineStart(): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Run 'sync stop' command
|
|
13
|
+
*/
|
|
14
|
+
export declare function runSyncEngineStop(): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Run 'sync status' command
|
|
17
|
+
*/
|
|
18
|
+
export declare function runSyncEngineStatus(): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Run 'sync pool' command - show MCP process pool
|
|
21
|
+
*/
|
|
22
|
+
export declare function runSyncEnginePool(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Run 'sync reload' command - reload stack configuration
|
|
25
|
+
*/
|
|
26
|
+
export declare function runSyncEngineReload(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Run 'sync logs' command - tail sync engine logs
|
|
29
|
+
*/
|
|
30
|
+
export declare function runSyncEngineLogs(options: {
|
|
31
|
+
follow?: boolean;
|
|
32
|
+
lines?: number;
|
|
33
|
+
}): Promise<void>;
|
|
34
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync-engine/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EACL,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,SAAS,EACT,UAAU,EACV,UAAU,EACV,aAAa,GACd,MAAM,eAAe,CAAC;AAYvB;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAcxD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAcvD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCzD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA8BvD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBzD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAcpG"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync Engine module - public exports
|
|
3
|
+
*/
|
|
4
|
+
export { SyncEngineClient, getSyncEngineClient, isSyncEngineRunning } from './client.js';
|
|
5
|
+
export { startSyncEngine, stopSyncEngine, ensureSyncEngineRunning, getSyncEngineStatus, isSyncEngineProcessRunning, getSyncEnginePid, } from './health.js';
|
|
6
|
+
// CLI command handlers
|
|
7
|
+
import { getSyncEngineClient } from './client.js';
|
|
8
|
+
import { startSyncEngine, stopSyncEngine, getSyncEngineStatus, isSyncEngineProcessRunning, } from './health.js';
|
|
9
|
+
/**
|
|
10
|
+
* Run 'sync start' command
|
|
11
|
+
*/
|
|
12
|
+
export async function runSyncEngineStart() {
|
|
13
|
+
if (isSyncEngineProcessRunning()) {
|
|
14
|
+
console.log(' Sync engine is already running');
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
console.log(' Starting sync engine...');
|
|
18
|
+
try {
|
|
19
|
+
const { pid } = await startSyncEngine();
|
|
20
|
+
console.log(` Sync engine started (PID ${pid})`);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error(` Failed to start sync engine: ${error instanceof Error ? error.message : error}`);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Run 'sync stop' command
|
|
29
|
+
*/
|
|
30
|
+
export async function runSyncEngineStop() {
|
|
31
|
+
if (!isSyncEngineProcessRunning()) {
|
|
32
|
+
console.log(' Sync engine is not running');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
console.log(' Stopping sync engine...');
|
|
36
|
+
try {
|
|
37
|
+
await stopSyncEngine();
|
|
38
|
+
console.log(' Sync engine stopped');
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error(` Failed to stop sync engine: ${error instanceof Error ? error.message : error}`);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Run 'sync status' command
|
|
47
|
+
*/
|
|
48
|
+
export async function runSyncEngineStatus() {
|
|
49
|
+
console.log();
|
|
50
|
+
const status = await getSyncEngineStatus();
|
|
51
|
+
if (!status.running) {
|
|
52
|
+
console.log(' Sync Engine: Not running');
|
|
53
|
+
console.log();
|
|
54
|
+
console.log(' Start with: claudetools sync start');
|
|
55
|
+
console.log();
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
console.log(' Sync Engine: Running');
|
|
59
|
+
if (status.pid) {
|
|
60
|
+
console.log(` PID: ${status.pid}`);
|
|
61
|
+
}
|
|
62
|
+
if (status.version) {
|
|
63
|
+
console.log(` Version: ${status.version}`);
|
|
64
|
+
}
|
|
65
|
+
if (status.uptime !== undefined) {
|
|
66
|
+
console.log(` Uptime: ${formatUptime(status.uptime)}`);
|
|
67
|
+
}
|
|
68
|
+
if (status.activeStack) {
|
|
69
|
+
console.log(` Active Stack: ${status.activeStack}`);
|
|
70
|
+
}
|
|
71
|
+
if (status.isolationMode) {
|
|
72
|
+
console.log(` Isolation: ${status.isolationMode}`);
|
|
73
|
+
}
|
|
74
|
+
if (status.mcpCount !== undefined) {
|
|
75
|
+
console.log(` MCP Processes: ${status.mcpCount}`);
|
|
76
|
+
}
|
|
77
|
+
console.log();
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Run 'sync pool' command - show MCP process pool
|
|
81
|
+
*/
|
|
82
|
+
export async function runSyncEnginePool() {
|
|
83
|
+
const status = await getSyncEngineStatus();
|
|
84
|
+
if (!status.running) {
|
|
85
|
+
console.log(' Sync engine is not running');
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const client = getSyncEngineClient();
|
|
89
|
+
const pool = await client.getPoolStatus();
|
|
90
|
+
console.log();
|
|
91
|
+
console.log(` MCP Process Pool (${pool.processCount}/${pool.maxProcesses})`);
|
|
92
|
+
console.log();
|
|
93
|
+
if (pool.processes.length === 0) {
|
|
94
|
+
console.log(' No MCP processes running');
|
|
95
|
+
console.log();
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
for (const proc of pool.processes) {
|
|
99
|
+
const stateIcon = getStateIcon(proc.state);
|
|
100
|
+
console.log(` ${stateIcon} ${proc.name}`);
|
|
101
|
+
console.log(` State: ${proc.state}`);
|
|
102
|
+
console.log(` PID: ${proc.pid}`);
|
|
103
|
+
console.log(` Tools: ${proc.toolCount}`);
|
|
104
|
+
console.log(` Last Used: ${formatTimestamp(proc.lastUsed)}`);
|
|
105
|
+
console.log();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Run 'sync reload' command - reload stack configuration
|
|
110
|
+
*/
|
|
111
|
+
export async function runSyncEngineReload() {
|
|
112
|
+
const status = await getSyncEngineStatus();
|
|
113
|
+
if (!status.running) {
|
|
114
|
+
console.log(' Sync engine is not running');
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
console.log(' Reloading sync engine configuration...');
|
|
118
|
+
const client = getSyncEngineClient();
|
|
119
|
+
const result = await client.reload();
|
|
120
|
+
if (result.success) {
|
|
121
|
+
console.log(` Reloaded stack: ${result.stack}`);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
console.log(' Reload failed');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Run 'sync logs' command - tail sync engine logs
|
|
129
|
+
*/
|
|
130
|
+
export async function runSyncEngineLogs(options) {
|
|
131
|
+
const { join } = await import('path');
|
|
132
|
+
const { homedir } = await import('os');
|
|
133
|
+
const { spawn } = await import('child_process');
|
|
134
|
+
const logPath = join(homedir(), '.claudetools', 'logs', 'sync.log');
|
|
135
|
+
const lines = options.lines || 50;
|
|
136
|
+
const args = options.follow ? ['-f', '-n', lines.toString(), logPath] : ['-n', lines.toString(), logPath];
|
|
137
|
+
const tail = spawn('tail', args, { stdio: 'inherit' });
|
|
138
|
+
tail.on('error', () => {
|
|
139
|
+
console.error(' Failed to read logs. Is tail available?');
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
// Helper functions
|
|
143
|
+
/**
|
|
144
|
+
* Format seconds into human-readable uptime string
|
|
145
|
+
*/
|
|
146
|
+
function formatUptime(seconds) {
|
|
147
|
+
if (seconds < 60) {
|
|
148
|
+
return `${seconds}s`;
|
|
149
|
+
}
|
|
150
|
+
if (seconds < 3600) {
|
|
151
|
+
const mins = Math.floor(seconds / 60);
|
|
152
|
+
const secs = seconds % 60;
|
|
153
|
+
return `${mins}m ${secs}s`;
|
|
154
|
+
}
|
|
155
|
+
const hours = Math.floor(seconds / 3600);
|
|
156
|
+
const mins = Math.floor((seconds % 3600) / 60);
|
|
157
|
+
return `${hours}h ${mins}m`;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Format ISO timestamp into relative time string
|
|
161
|
+
*/
|
|
162
|
+
function formatTimestamp(isoString) {
|
|
163
|
+
try {
|
|
164
|
+
const date = new Date(isoString);
|
|
165
|
+
const now = new Date();
|
|
166
|
+
const diffMs = now.getTime() - date.getTime();
|
|
167
|
+
const diffSecs = Math.floor(diffMs / 1000);
|
|
168
|
+
if (diffSecs < 60) {
|
|
169
|
+
return `${diffSecs}s ago`;
|
|
170
|
+
}
|
|
171
|
+
if (diffSecs < 3600) {
|
|
172
|
+
return `${Math.floor(diffSecs / 60)}m ago`;
|
|
173
|
+
}
|
|
174
|
+
return `${Math.floor(diffSecs / 3600)}h ago`;
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return isoString;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get visual icon for process state
|
|
182
|
+
*/
|
|
183
|
+
function getStateIcon(state) {
|
|
184
|
+
switch (state) {
|
|
185
|
+
case 'warm':
|
|
186
|
+
return '●'; // Green dot
|
|
187
|
+
case 'idle':
|
|
188
|
+
return '○'; // Empty dot
|
|
189
|
+
case 'spawning':
|
|
190
|
+
return '◐'; // Half dot
|
|
191
|
+
case 'cold':
|
|
192
|
+
return '◌'; // Dashed dot
|
|
193
|
+
default:
|
|
194
|
+
return '?';
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync-engine/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON-RPC 2.0 and sync engine protocol types
|
|
3
|
+
*/
|
|
4
|
+
export interface JsonRpcRequest {
|
|
5
|
+
jsonrpc: '2.0';
|
|
6
|
+
id: number | string;
|
|
7
|
+
method: string;
|
|
8
|
+
params?: unknown;
|
|
9
|
+
}
|
|
10
|
+
export interface JsonRpcResponse<T = unknown> {
|
|
11
|
+
jsonrpc: '2.0';
|
|
12
|
+
id: number | string | null;
|
|
13
|
+
result?: T;
|
|
14
|
+
error?: JsonRpcError;
|
|
15
|
+
}
|
|
16
|
+
export interface JsonRpcError {
|
|
17
|
+
code: number;
|
|
18
|
+
message: string;
|
|
19
|
+
data?: unknown;
|
|
20
|
+
}
|
|
21
|
+
export interface SyncEngineStatus {
|
|
22
|
+
running: boolean;
|
|
23
|
+
version: string;
|
|
24
|
+
uptime: number;
|
|
25
|
+
pid: number;
|
|
26
|
+
activeStack: string | null;
|
|
27
|
+
isolationMode: 'global' | 'project' | 'session';
|
|
28
|
+
pool: PoolStatus;
|
|
29
|
+
}
|
|
30
|
+
export interface PoolStatus {
|
|
31
|
+
processCount: number;
|
|
32
|
+
maxProcesses: number;
|
|
33
|
+
processes: ProcessStatus[];
|
|
34
|
+
}
|
|
35
|
+
export interface ProcessStatus {
|
|
36
|
+
name: string;
|
|
37
|
+
state: 'cold' | 'spawning' | 'warm' | 'idle';
|
|
38
|
+
pid: number;
|
|
39
|
+
startedAt: string;
|
|
40
|
+
lastUsed: string;
|
|
41
|
+
toolCount: number;
|
|
42
|
+
}
|
|
43
|
+
export interface LocalStack {
|
|
44
|
+
name: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
extends?: string[];
|
|
47
|
+
blocks?: string[];
|
|
48
|
+
mcps: MCPConfig[];
|
|
49
|
+
skills: string[];
|
|
50
|
+
hooks: HookConfig[];
|
|
51
|
+
instructions: string[];
|
|
52
|
+
}
|
|
53
|
+
export interface MCPConfig {
|
|
54
|
+
name: string;
|
|
55
|
+
version?: string;
|
|
56
|
+
command: string;
|
|
57
|
+
args?: string[];
|
|
58
|
+
env?: Record<string, string>;
|
|
59
|
+
category?: string;
|
|
60
|
+
}
|
|
61
|
+
export interface HookConfig {
|
|
62
|
+
name: string;
|
|
63
|
+
event: string;
|
|
64
|
+
matcher?: string;
|
|
65
|
+
command: string;
|
|
66
|
+
condition?: string;
|
|
67
|
+
priority?: number;
|
|
68
|
+
async?: boolean;
|
|
69
|
+
onFailure?: 'block' | 'warn' | 'ignore';
|
|
70
|
+
timeout?: number;
|
|
71
|
+
}
|
|
72
|
+
export interface CloudStack {
|
|
73
|
+
id: string;
|
|
74
|
+
name: string;
|
|
75
|
+
slug: string;
|
|
76
|
+
description?: string;
|
|
77
|
+
extensions: ExtensionRef[];
|
|
78
|
+
synced: boolean;
|
|
79
|
+
}
|
|
80
|
+
export interface ExtensionRef {
|
|
81
|
+
type: string;
|
|
82
|
+
slug: string;
|
|
83
|
+
version?: string;
|
|
84
|
+
}
|
|
85
|
+
export interface StackListResult {
|
|
86
|
+
local: LocalStack[];
|
|
87
|
+
cloud: CloudStack[];
|
|
88
|
+
}
|
|
89
|
+
export interface SyncStack {
|
|
90
|
+
id: string;
|
|
91
|
+
user_id: string;
|
|
92
|
+
team_id: string | null;
|
|
93
|
+
owner_type: string;
|
|
94
|
+
visibility: string;
|
|
95
|
+
extends: string[];
|
|
96
|
+
name: string;
|
|
97
|
+
slug: string;
|
|
98
|
+
description: string | null;
|
|
99
|
+
status: string;
|
|
100
|
+
is_official: boolean;
|
|
101
|
+
is_synced: boolean;
|
|
102
|
+
version: number;
|
|
103
|
+
extensions: Array<{
|
|
104
|
+
type: string;
|
|
105
|
+
slug: string;
|
|
106
|
+
version: string | null;
|
|
107
|
+
}>;
|
|
108
|
+
created_at: string;
|
|
109
|
+
updated_at: string;
|
|
110
|
+
}
|
|
111
|
+
export interface SyncProject {
|
|
112
|
+
id: string;
|
|
113
|
+
user_id: string;
|
|
114
|
+
team_id: string | null;
|
|
115
|
+
name: string;
|
|
116
|
+
slug: string;
|
|
117
|
+
description: string | null;
|
|
118
|
+
path: string | null;
|
|
119
|
+
repository_url: string | null;
|
|
120
|
+
default_branch: string;
|
|
121
|
+
icon: string | null;
|
|
122
|
+
color: string | null;
|
|
123
|
+
archived_at: string | null;
|
|
124
|
+
version: number;
|
|
125
|
+
created_at: string;
|
|
126
|
+
updated_at: string;
|
|
127
|
+
}
|
|
128
|
+
export interface SyncStateCounts {
|
|
129
|
+
created: number;
|
|
130
|
+
queued: number;
|
|
131
|
+
executing: number;
|
|
132
|
+
completed: number;
|
|
133
|
+
failed: number;
|
|
134
|
+
}
|
|
135
|
+
export interface SyncEngineHealthResult {
|
|
136
|
+
healthy: boolean;
|
|
137
|
+
version: string;
|
|
138
|
+
uptime: number;
|
|
139
|
+
}
|
|
140
|
+
export interface SyncEngineReloadResult {
|
|
141
|
+
success: boolean;
|
|
142
|
+
stack: string;
|
|
143
|
+
}
|
|
144
|
+
export interface JsonRpcNotification {
|
|
145
|
+
jsonrpc: '2.0';
|
|
146
|
+
method: string;
|
|
147
|
+
params?: unknown;
|
|
148
|
+
}
|
|
149
|
+
export interface StackChangeNotification {
|
|
150
|
+
action: 'inserted' | 'updated' | 'deleted';
|
|
151
|
+
id: string;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/sync-engine/protocol.ts"],"names":[],"mappings":"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"}
|