@claudetools/cli 0.13.12 → 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 +31 -5
- 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,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon client - communicates with the ClaudeTools daemon via Unix socket
|
|
3
|
+
*/
|
|
4
|
+
import type { DaemonStatus, LocalStack, StackListResult, DaemonHealthResult, DaemonReloadResult, MCPConfig, HookConfig, SyncStack, SyncProject, SyncStateCounts } from './protocol.js';
|
|
5
|
+
export declare class DaemonClient {
|
|
6
|
+
private socket;
|
|
7
|
+
private socketPath;
|
|
8
|
+
private requestId;
|
|
9
|
+
private pendingRequests;
|
|
10
|
+
private buffer;
|
|
11
|
+
constructor(socketPath?: string);
|
|
12
|
+
/**
|
|
13
|
+
* Connect to the daemon
|
|
14
|
+
*/
|
|
15
|
+
connect(): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Disconnect from the daemon
|
|
18
|
+
*/
|
|
19
|
+
disconnect(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Check if connected to daemon
|
|
22
|
+
*/
|
|
23
|
+
isConnected(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Send a JSON-RPC request to the daemon
|
|
26
|
+
*/
|
|
27
|
+
private request;
|
|
28
|
+
private handleData;
|
|
29
|
+
private handleResponse;
|
|
30
|
+
/**
|
|
31
|
+
* Get daemon status
|
|
32
|
+
*/
|
|
33
|
+
getStatus(): Promise<DaemonStatus>;
|
|
34
|
+
/**
|
|
35
|
+
* Health check
|
|
36
|
+
*/
|
|
37
|
+
health(): Promise<DaemonHealthResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Reload daemon configuration
|
|
40
|
+
*/
|
|
41
|
+
reload(): Promise<DaemonReloadResult>;
|
|
42
|
+
/**
|
|
43
|
+
* List all stacks (local + cloud merged)
|
|
44
|
+
*/
|
|
45
|
+
listStacks(): Promise<StackListResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Get a specific stack
|
|
48
|
+
*/
|
|
49
|
+
getStack(name: string): Promise<LocalStack>;
|
|
50
|
+
/**
|
|
51
|
+
* Apply a stack (make it active)
|
|
52
|
+
*/
|
|
53
|
+
applyStack(name: string, force?: boolean): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Create a new local stack
|
|
56
|
+
*/
|
|
57
|
+
createStack(params: {
|
|
58
|
+
name: string;
|
|
59
|
+
description?: string;
|
|
60
|
+
mcps?: MCPConfig[];
|
|
61
|
+
skills?: string[];
|
|
62
|
+
hooks?: HookConfig[];
|
|
63
|
+
instructions?: string[];
|
|
64
|
+
}): Promise<LocalStack>;
|
|
65
|
+
/**
|
|
66
|
+
* Delete a local stack
|
|
67
|
+
*/
|
|
68
|
+
deleteStack(name: string): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Get MCP pool status
|
|
71
|
+
*/
|
|
72
|
+
getPoolStatus(): Promise<{
|
|
73
|
+
processCount: number;
|
|
74
|
+
maxProcesses: number;
|
|
75
|
+
processes: Array<{
|
|
76
|
+
name: string;
|
|
77
|
+
state: string;
|
|
78
|
+
pid: number;
|
|
79
|
+
startedAt: string;
|
|
80
|
+
lastUsed: string;
|
|
81
|
+
toolCount: number;
|
|
82
|
+
}>;
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Set isolation mode
|
|
86
|
+
*/
|
|
87
|
+
setIsolationMode(mode: 'global' | 'project' | 'session'): Promise<void>;
|
|
88
|
+
syncPullStacks(): Promise<SyncStack[]>;
|
|
89
|
+
syncGetStack(id: string): Promise<SyncStack | null>;
|
|
90
|
+
syncPushStack(stack: SyncStack, action: 'insert' | 'update'): Promise<void>;
|
|
91
|
+
syncDeleteStack(id: string): Promise<void>;
|
|
92
|
+
syncPullProjects(): Promise<SyncProject[]>;
|
|
93
|
+
syncGetProject(id: string): Promise<SyncProject | null>;
|
|
94
|
+
syncPushProject(project: SyncProject, action: 'insert' | 'update'): Promise<void>;
|
|
95
|
+
syncDeleteProject(id: string): Promise<void>;
|
|
96
|
+
syncState(): Promise<SyncStateCounts>;
|
|
97
|
+
syncFailed(): Promise<string[]>;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get the daemon client singleton
|
|
101
|
+
*/
|
|
102
|
+
export declare function getDaemonClient(socketPath?: string): DaemonClient;
|
|
103
|
+
/**
|
|
104
|
+
* Check if daemon is running (without throwing)
|
|
105
|
+
*/
|
|
106
|
+
export declare function isDaemonRunning(): Promise<boolean>;
|
|
107
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon client - communicates with the ClaudeTools daemon via Unix socket
|
|
3
|
+
*/
|
|
4
|
+
import { createConnection } from 'net';
|
|
5
|
+
import { homedir } from 'os';
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
const SOCKET_PATH = join(homedir(), '.claudetools', 'daemon.sock');
|
|
8
|
+
const DEFAULT_TIMEOUT = 30000; // 30 seconds
|
|
9
|
+
export class DaemonClient {
|
|
10
|
+
socket = null;
|
|
11
|
+
socketPath;
|
|
12
|
+
requestId = 0;
|
|
13
|
+
pendingRequests = new Map();
|
|
14
|
+
buffer = '';
|
|
15
|
+
constructor(socketPath = SOCKET_PATH) {
|
|
16
|
+
this.socketPath = socketPath;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Connect to the daemon
|
|
20
|
+
*/
|
|
21
|
+
async connect() {
|
|
22
|
+
if (this.socket) {
|
|
23
|
+
return; // Already connected
|
|
24
|
+
}
|
|
25
|
+
return new Promise((resolve, reject) => {
|
|
26
|
+
this.socket = createConnection(this.socketPath);
|
|
27
|
+
this.socket.on('connect', () => {
|
|
28
|
+
resolve();
|
|
29
|
+
});
|
|
30
|
+
this.socket.on('error', (error) => {
|
|
31
|
+
reject(new Error(`Failed to connect to daemon: ${error.message}`));
|
|
32
|
+
});
|
|
33
|
+
this.socket.on('data', (data) => {
|
|
34
|
+
this.handleData(data.toString());
|
|
35
|
+
});
|
|
36
|
+
this.socket.on('close', () => {
|
|
37
|
+
this.socket = null;
|
|
38
|
+
// Reject all pending requests
|
|
39
|
+
for (const [, { reject }] of this.pendingRequests) {
|
|
40
|
+
reject(new Error('Connection closed'));
|
|
41
|
+
}
|
|
42
|
+
this.pendingRequests.clear();
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Disconnect from the daemon
|
|
48
|
+
*/
|
|
49
|
+
disconnect() {
|
|
50
|
+
if (this.socket) {
|
|
51
|
+
this.socket.destroy();
|
|
52
|
+
this.socket = null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if connected to daemon
|
|
57
|
+
*/
|
|
58
|
+
isConnected() {
|
|
59
|
+
return this.socket !== null && !this.socket.destroyed;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Send a JSON-RPC request to the daemon
|
|
63
|
+
*/
|
|
64
|
+
async request(method, params) {
|
|
65
|
+
if (!this.socket || this.socket.destroyed) {
|
|
66
|
+
await this.connect();
|
|
67
|
+
}
|
|
68
|
+
const id = ++this.requestId;
|
|
69
|
+
const request = {
|
|
70
|
+
jsonrpc: '2.0',
|
|
71
|
+
id,
|
|
72
|
+
method,
|
|
73
|
+
params,
|
|
74
|
+
};
|
|
75
|
+
return new Promise((resolve, reject) => {
|
|
76
|
+
const timeout = setTimeout(() => {
|
|
77
|
+
this.pendingRequests.delete(id);
|
|
78
|
+
reject(new Error(`Request timed out: ${method}`));
|
|
79
|
+
}, DEFAULT_TIMEOUT);
|
|
80
|
+
this.pendingRequests.set(id, {
|
|
81
|
+
resolve: (result) => {
|
|
82
|
+
clearTimeout(timeout);
|
|
83
|
+
resolve(result);
|
|
84
|
+
},
|
|
85
|
+
reject: (error) => {
|
|
86
|
+
clearTimeout(timeout);
|
|
87
|
+
reject(error);
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
const data = JSON.stringify(request) + '\n';
|
|
91
|
+
this.socket.write(data);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
handleData(data) {
|
|
95
|
+
this.buffer += data;
|
|
96
|
+
// Process complete lines
|
|
97
|
+
let newlineIndex;
|
|
98
|
+
while ((newlineIndex = this.buffer.indexOf('\n')) !== -1) {
|
|
99
|
+
const line = this.buffer.slice(0, newlineIndex);
|
|
100
|
+
this.buffer = this.buffer.slice(newlineIndex + 1);
|
|
101
|
+
if (line.trim()) {
|
|
102
|
+
try {
|
|
103
|
+
const response = JSON.parse(line);
|
|
104
|
+
this.handleResponse(response);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Ignore parse errors
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
handleResponse(response) {
|
|
113
|
+
if (response.id === null) {
|
|
114
|
+
return; // Notification, ignore
|
|
115
|
+
}
|
|
116
|
+
const pending = this.pendingRequests.get(response.id);
|
|
117
|
+
if (!pending) {
|
|
118
|
+
return; // No pending request
|
|
119
|
+
}
|
|
120
|
+
this.pendingRequests.delete(response.id);
|
|
121
|
+
if (response.error) {
|
|
122
|
+
pending.reject(new Error(response.error.message));
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
pending.resolve(response.result);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// === Stack management API (requires daemon route registration) ===
|
|
129
|
+
// These methods call routes not yet wired in the daemon handler.
|
|
130
|
+
// They were part of the original daemon protocol design but are
|
|
131
|
+
// superseded by the sync API methods below for data operations.
|
|
132
|
+
/**
|
|
133
|
+
* Get daemon status
|
|
134
|
+
*/
|
|
135
|
+
async getStatus() {
|
|
136
|
+
return this.request('daemon/status');
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Health check
|
|
140
|
+
*/
|
|
141
|
+
async health() {
|
|
142
|
+
return this.request('daemon/health');
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Reload daemon configuration
|
|
146
|
+
*/
|
|
147
|
+
async reload() {
|
|
148
|
+
return this.request('daemon/reload');
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* List all stacks (local + cloud merged)
|
|
152
|
+
*/
|
|
153
|
+
async listStacks() {
|
|
154
|
+
return this.request('stacks/list');
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get a specific stack
|
|
158
|
+
*/
|
|
159
|
+
async getStack(name) {
|
|
160
|
+
return this.request('stacks/get', { name });
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Apply a stack (make it active)
|
|
164
|
+
*/
|
|
165
|
+
async applyStack(name, force = false) {
|
|
166
|
+
return this.request('stacks/apply', { name, force });
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Create a new local stack
|
|
170
|
+
*/
|
|
171
|
+
async createStack(params) {
|
|
172
|
+
return this.request('stacks/create', params);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Delete a local stack
|
|
176
|
+
*/
|
|
177
|
+
async deleteStack(name) {
|
|
178
|
+
return this.request('stacks/delete', { name });
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get MCP pool status
|
|
182
|
+
*/
|
|
183
|
+
async getPoolStatus() {
|
|
184
|
+
return this.request('daemon/pool');
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Set isolation mode
|
|
188
|
+
*/
|
|
189
|
+
async setIsolationMode(mode) {
|
|
190
|
+
return this.request('daemon/isolation', { mode });
|
|
191
|
+
}
|
|
192
|
+
// Sync API — stacks
|
|
193
|
+
async syncPullStacks() {
|
|
194
|
+
return this.request('daemon/stacks/sync-pull');
|
|
195
|
+
}
|
|
196
|
+
async syncGetStack(id) {
|
|
197
|
+
return this.request('daemon/stacks/get', { id });
|
|
198
|
+
}
|
|
199
|
+
async syncPushStack(stack, action) {
|
|
200
|
+
return this.request('daemon/stacks/sync-push', { stack, action });
|
|
201
|
+
}
|
|
202
|
+
async syncDeleteStack(id) {
|
|
203
|
+
return this.request('daemon/stacks/sync-delete', { id });
|
|
204
|
+
}
|
|
205
|
+
// Sync API — projects
|
|
206
|
+
async syncPullProjects() {
|
|
207
|
+
return this.request('daemon/projects/sync-pull');
|
|
208
|
+
}
|
|
209
|
+
async syncGetProject(id) {
|
|
210
|
+
return this.request('daemon/projects/get', { id });
|
|
211
|
+
}
|
|
212
|
+
async syncPushProject(project, action) {
|
|
213
|
+
return this.request('daemon/projects/sync-push', { project, action });
|
|
214
|
+
}
|
|
215
|
+
async syncDeleteProject(id) {
|
|
216
|
+
return this.request('daemon/projects/sync-delete', { id });
|
|
217
|
+
}
|
|
218
|
+
// Sync API — queue status
|
|
219
|
+
async syncState() {
|
|
220
|
+
return this.request('daemon/stacks/sync-state');
|
|
221
|
+
}
|
|
222
|
+
async syncFailed() {
|
|
223
|
+
return this.request('daemon/stacks/sync-failed');
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Singleton instance
|
|
227
|
+
let clientInstance = null;
|
|
228
|
+
/**
|
|
229
|
+
* Get the daemon client singleton
|
|
230
|
+
*/
|
|
231
|
+
export function getDaemonClient(socketPath) {
|
|
232
|
+
if (!clientInstance || (socketPath && socketPath !== SOCKET_PATH)) {
|
|
233
|
+
clientInstance = new DaemonClient(socketPath);
|
|
234
|
+
}
|
|
235
|
+
return clientInstance;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Check if daemon is running (without throwing)
|
|
239
|
+
*/
|
|
240
|
+
export async function isDaemonRunning() {
|
|
241
|
+
try {
|
|
242
|
+
const client = getDaemonClient();
|
|
243
|
+
await client.health();
|
|
244
|
+
return true;
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAU,MAAM,KAAK,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAgB5B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;AACnE,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,aAAa;AAE5C,MAAM,OAAO,YAAY;IACf,MAAM,GAAkB,IAAI,CAAC;IAC7B,UAAU,CAAS;IACnB,SAAS,GAAG,CAAC,CAAC;IACd,eAAe,GAAG,IAAI,GAAG,EAG7B,CAAC;IACG,MAAM,GAAG,EAAE,CAAC;IAEpB,YAAY,aAAqB,WAAW;QAC1C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,oBAAoB;QAC9B,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEhD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC7B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChC,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,8BAA8B;gBAC9B,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBAClD,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACzC,CAAC;gBACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,MAAgB;QACvD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;QAC5B,MAAM,OAAO,GAAmB;YAC9B,OAAO,EAAE,KAAK;YACd,EAAE;YACF,MAAM;YACN,MAAM;SACP,CAAC;QAEF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAChC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC,EAAE,eAAe,CAAC,CAAC;YAEpB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE;gBAC3B,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;oBAClB,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,OAAO,CAAC,MAAW,CAAC,CAAC;gBACvB,CAAC;gBACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChB,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YAC5C,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,UAAU,CAAC,IAAY;QAC7B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QAEpB,yBAAyB;QACzB,IAAI,YAAoB,CAAC;QACzB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YAElD,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACnD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,sBAAsB;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,QAAyB;QAC9C,IAAI,QAAQ,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,CAAC,uBAAuB;QACjC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,qBAAqB;QAC/B,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEzC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,iEAAiE;IACjE,gEAAgE;IAChE,gEAAgE;IAEhE;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAe,eAAe,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,OAAO,CAAqB,eAAe,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,OAAO,CAAqB,eAAe,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,OAAO,CAAkB,aAAa,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,OAAO,CAAa,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,KAAK,GAAG,KAAK;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAO,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,MAOjB;QACC,OAAO,IAAI,CAAC,OAAO,CAAa,eAAe,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAO,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QAYjB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAsC;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAO,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,oBAAoB;IAEpB,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,OAAO,CAAc,yBAAyB,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAmB,mBAAmB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAgB,EAAE,MAA2B;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAO,yBAAyB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAO,2BAA2B,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,sBAAsB;IAEtB,KAAK,CAAC,gBAAgB;QACpB,OAAO,IAAI,CAAC,OAAO,CAAgB,2BAA2B,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAqB,qBAAqB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAoB,EAAE,MAA2B;QACrE,OAAO,IAAI,CAAC,OAAO,CAAO,2BAA2B,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,EAAU;QAChC,OAAO,IAAI,CAAC,OAAO,CAAO,6BAA6B,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,0BAA0B;IAE1B,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAkB,0BAA0B,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,OAAO,CAAW,2BAA2B,CAAC,CAAC;IAC7D,CAAC;CACF;AAED,qBAAqB;AACrB,IAAI,cAAc,GAAwB,IAAI,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAmB;IACjD,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,WAAW,CAAC,EAAE,CAAC;QAClE,cAAc,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon health checks and auto-start functionality
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if daemon process is running via PID file
|
|
6
|
+
*/
|
|
7
|
+
export declare function isDaemonProcessRunning(): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Get daemon PID from PID file
|
|
10
|
+
*/
|
|
11
|
+
export declare function getDaemonPid(): number | null;
|
|
12
|
+
/**
|
|
13
|
+
* Start the daemon in background mode
|
|
14
|
+
*/
|
|
15
|
+
export declare function startDaemon(): Promise<{
|
|
16
|
+
pid: number;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Stop the daemon
|
|
20
|
+
*/
|
|
21
|
+
export declare function stopDaemon(): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Ensure daemon is running, starting it if necessary
|
|
24
|
+
*/
|
|
25
|
+
export declare function ensureDaemonRunning(): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Get daemon status with details
|
|
28
|
+
*/
|
|
29
|
+
export declare function getDaemonStatus(): Promise<{
|
|
30
|
+
running: boolean;
|
|
31
|
+
pid?: number;
|
|
32
|
+
version?: string;
|
|
33
|
+
uptime?: number;
|
|
34
|
+
activeStack?: string;
|
|
35
|
+
isolationMode?: string;
|
|
36
|
+
mcpCount?: number;
|
|
37
|
+
}>;
|
|
38
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/daemon/health.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAiBhD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAU5C;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAwD5D;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBhD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBzD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC,CA2BD"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon health checks and auto-start functionality
|
|
3
|
+
*/
|
|
4
|
+
import { spawn } from 'child_process';
|
|
5
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
6
|
+
import { homedir } from 'os';
|
|
7
|
+
import { join, dirname } from 'path';
|
|
8
|
+
import { getDaemonClient, isDaemonRunning } from './client.js';
|
|
9
|
+
const DAEMON_PID_FILE = join(homedir(), '.claudetools', 'daemon.pid');
|
|
10
|
+
const DAEMON_LOG_FILE = join(homedir(), '.claudetools', 'logs', 'daemon.log');
|
|
11
|
+
const DAEMON_BINARY = 'claudetools-daemon';
|
|
12
|
+
/**
|
|
13
|
+
* Check if daemon process is running via PID file
|
|
14
|
+
*/
|
|
15
|
+
export function isDaemonProcessRunning() {
|
|
16
|
+
if (!existsSync(DAEMON_PID_FILE)) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const pid = parseInt(readFileSync(DAEMON_PID_FILE, 'utf-8').trim(), 10);
|
|
21
|
+
// Check if process exists
|
|
22
|
+
process.kill(pid, 0);
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
// EPERM means process exists but we can't signal it (permissions issue)
|
|
27
|
+
if (error && typeof error === 'object' && 'code' in error && error.code === 'EPERM') {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get daemon PID from PID file
|
|
35
|
+
*/
|
|
36
|
+
export function getDaemonPid() {
|
|
37
|
+
if (!existsSync(DAEMON_PID_FILE)) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
return parseInt(readFileSync(DAEMON_PID_FILE, 'utf-8').trim(), 10);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Start the daemon in background mode
|
|
49
|
+
*/
|
|
50
|
+
export async function startDaemon() {
|
|
51
|
+
// Check if already running
|
|
52
|
+
if (await isDaemonRunning()) {
|
|
53
|
+
const pid = getDaemonPid();
|
|
54
|
+
if (pid) {
|
|
55
|
+
return { pid };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Ensure log directory exists
|
|
59
|
+
const logDir = dirname(DAEMON_LOG_FILE);
|
|
60
|
+
if (!existsSync(logDir)) {
|
|
61
|
+
mkdirSync(logDir, { recursive: true });
|
|
62
|
+
}
|
|
63
|
+
// Find daemon binary
|
|
64
|
+
const daemonPath = findDaemonBinary();
|
|
65
|
+
if (!daemonPath) {
|
|
66
|
+
throw new Error(`Daemon binary not found. Install with: npm install -g @claudetools/daemon`);
|
|
67
|
+
}
|
|
68
|
+
return new Promise((resolve, reject) => {
|
|
69
|
+
// Spawn daemon in background
|
|
70
|
+
const child = spawn(daemonPath, ['socket'], {
|
|
71
|
+
detached: true,
|
|
72
|
+
stdio: 'ignore',
|
|
73
|
+
env: {
|
|
74
|
+
...process.env,
|
|
75
|
+
PWD: process.cwd(),
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
child.unref();
|
|
79
|
+
// Wait a bit for daemon to start
|
|
80
|
+
setTimeout(async () => {
|
|
81
|
+
if (await isDaemonRunning()) {
|
|
82
|
+
const pid = child.pid || getDaemonPid();
|
|
83
|
+
if (pid) {
|
|
84
|
+
// Write PID file
|
|
85
|
+
writePidFile(pid);
|
|
86
|
+
resolve({ pid });
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
reject(new Error('Daemon started but PID not found'));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
reject(new Error('Daemon failed to start'));
|
|
94
|
+
}
|
|
95
|
+
}, 1000);
|
|
96
|
+
child.on('error', (error) => {
|
|
97
|
+
reject(new Error(`Failed to start daemon: ${error.message}`));
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Stop the daemon
|
|
103
|
+
*/
|
|
104
|
+
export async function stopDaemon() {
|
|
105
|
+
const pid = getDaemonPid();
|
|
106
|
+
if (!pid) {
|
|
107
|
+
return; // Not running
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
process.kill(pid, 'SIGTERM');
|
|
111
|
+
// Remove PID file
|
|
112
|
+
const fs = await import('fs/promises');
|
|
113
|
+
await fs.unlink(DAEMON_PID_FILE).catch(() => { });
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// Process doesn't exist, clean up PID file
|
|
117
|
+
const fs = await import('fs/promises');
|
|
118
|
+
await fs.unlink(DAEMON_PID_FILE).catch(() => { });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Ensure daemon is running, starting it if necessary
|
|
123
|
+
*/
|
|
124
|
+
export async function ensureDaemonRunning() {
|
|
125
|
+
if (await isDaemonRunning()) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
await startDaemon();
|
|
129
|
+
// Wait for daemon to be responsive
|
|
130
|
+
let attempts = 0;
|
|
131
|
+
const maxAttempts = 10;
|
|
132
|
+
while (attempts < maxAttempts) {
|
|
133
|
+
if (await isDaemonRunning()) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
await sleep(500);
|
|
137
|
+
attempts++;
|
|
138
|
+
}
|
|
139
|
+
throw new Error('Daemon started but not responsive');
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get daemon status with details
|
|
143
|
+
*/
|
|
144
|
+
export async function getDaemonStatus() {
|
|
145
|
+
const pid = getDaemonPid();
|
|
146
|
+
const processRunning = isDaemonProcessRunning();
|
|
147
|
+
if (!processRunning) {
|
|
148
|
+
return { running: false };
|
|
149
|
+
}
|
|
150
|
+
try {
|
|
151
|
+
const client = getDaemonClient();
|
|
152
|
+
const status = await client.getStatus();
|
|
153
|
+
return {
|
|
154
|
+
running: true,
|
|
155
|
+
pid: pid ?? undefined,
|
|
156
|
+
version: status.version,
|
|
157
|
+
uptime: status.uptime,
|
|
158
|
+
activeStack: status.activeStack ?? undefined,
|
|
159
|
+
isolationMode: status.isolationMode,
|
|
160
|
+
mcpCount: status.pool.processCount,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
// Process running but not responsive
|
|
165
|
+
return {
|
|
166
|
+
running: false,
|
|
167
|
+
pid: pid ?? undefined,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Find the daemon binary in common locations
|
|
173
|
+
*/
|
|
174
|
+
function findDaemonBinary() {
|
|
175
|
+
const possiblePaths = [
|
|
176
|
+
// Local development (Rust daemon)
|
|
177
|
+
join(process.cwd(), 'packages', 'claudetools-daemon', 'target', 'debug', DAEMON_BINARY),
|
|
178
|
+
join(process.cwd(), 'packages', 'claudetools-daemon', 'target', 'release', DAEMON_BINARY),
|
|
179
|
+
// Installed globally via npm
|
|
180
|
+
join(homedir(), '.npm', 'bin', DAEMON_BINARY),
|
|
181
|
+
// System paths
|
|
182
|
+
`/usr/local/bin/${DAEMON_BINARY}`,
|
|
183
|
+
`/usr/bin/${DAEMON_BINARY}`,
|
|
184
|
+
// Cargo bin
|
|
185
|
+
join(homedir(), '.cargo', 'bin', DAEMON_BINARY),
|
|
186
|
+
// PATH search (handled by spawn)
|
|
187
|
+
];
|
|
188
|
+
for (const path of possiblePaths) {
|
|
189
|
+
try {
|
|
190
|
+
if (existsSync(path)) {
|
|
191
|
+
return path;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
// Log but continue searching
|
|
196
|
+
console.warn(`Failed to check daemon path ${path}:`, error instanceof Error ? error.message : error);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// Try PATH as final fallback
|
|
200
|
+
return DAEMON_BINARY;
|
|
201
|
+
}
|
|
202
|
+
function writePidFile(pid) {
|
|
203
|
+
const dir = dirname(DAEMON_PID_FILE);
|
|
204
|
+
if (!existsSync(dir)) {
|
|
205
|
+
mkdirSync(dir, { recursive: true });
|
|
206
|
+
}
|
|
207
|
+
writeFileSync(DAEMON_PID_FILE, pid.toString(), 'utf-8');
|
|
208
|
+
}
|
|
209
|
+
function sleep(ms) {
|
|
210
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/daemon/health.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon module - public exports
|
|
3
|
+
*/
|
|
4
|
+
export { DaemonClient, getDaemonClient, isDaemonRunning } from './client.js';
|
|
5
|
+
export { startDaemon, stopDaemon, ensureDaemonRunning, getDaemonStatus, isDaemonProcessRunning, getDaemonPid, } from './health.js';
|
|
6
|
+
export type { DaemonStatus, LocalStack, StackListResult, MCPConfig, HookConfig, PoolStatus, ProcessStatus, } from './protocol.js';
|
|
7
|
+
/**
|
|
8
|
+
* Run 'daemon start' command
|
|
9
|
+
*/
|
|
10
|
+
export declare function runDaemonStart(): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Run 'daemon stop' command
|
|
13
|
+
*/
|
|
14
|
+
export declare function runDaemonStop(): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Run 'daemon status' command
|
|
17
|
+
*/
|
|
18
|
+
export declare function runDaemonStatus(): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Run 'daemon pool' command - show MCP process pool
|
|
21
|
+
*/
|
|
22
|
+
export declare function runDaemonPool(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Run 'daemon reload' command - reload stack configuration
|
|
25
|
+
*/
|
|
26
|
+
export declare function runDaemonReload(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Run 'daemon logs' command - tail daemon logs
|
|
29
|
+
*/
|
|
30
|
+
export declare function runDaemonLogs(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/daemon/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EACL,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,sBAAsB,EACtB,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,SAAS,EACT,UAAU,EACV,UAAU,EACV,aAAa,GACd,MAAM,eAAe,CAAC;AAYvB;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAcpD;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAcnD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCrD;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA8BnD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBrD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAchG"}
|