@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.
Files changed (368) hide show
  1. package/dist/__tests__/factories.d.ts +173 -0
  2. package/dist/__tests__/factories.d.ts.map +1 -0
  3. package/dist/__tests__/factories.js +150 -0
  4. package/dist/__tests__/factories.js.map +1 -0
  5. package/dist/__tests__/helpers.d.ts +36 -0
  6. package/dist/__tests__/helpers.d.ts.map +1 -0
  7. package/dist/__tests__/helpers.js +52 -0
  8. package/dist/__tests__/helpers.js.map +1 -0
  9. package/dist/analytics/index.d.ts +14 -0
  10. package/dist/analytics/index.d.ts.map +1 -0
  11. package/dist/analytics/index.js +259 -0
  12. package/dist/analytics/index.js.map +1 -0
  13. package/dist/analytics/session.d.ts +17 -0
  14. package/dist/analytics/session.d.ts.map +1 -0
  15. package/dist/analytics/session.js +130 -0
  16. package/dist/analytics/session.js.map +1 -0
  17. package/dist/analytics/token-tracker.d.ts +48 -0
  18. package/dist/analytics/token-tracker.d.ts.map +1 -0
  19. package/dist/analytics/token-tracker.js +269 -0
  20. package/dist/analytics/token-tracker.js.map +1 -0
  21. package/dist/analytics/tracker.d.ts +33 -0
  22. package/dist/analytics/tracker.d.ts.map +1 -0
  23. package/dist/analytics/tracker.js +210 -0
  24. package/dist/analytics/tracker.js.map +1 -0
  25. package/dist/api-keys/index.d.ts +15 -0
  26. package/dist/api-keys/index.d.ts.map +1 -0
  27. package/dist/api-keys/index.js +228 -0
  28. package/dist/api-keys/index.js.map +1 -0
  29. package/dist/auth/config.d.ts +15 -0
  30. package/dist/auth/config.d.ts.map +1 -0
  31. package/dist/auth/config.js +67 -0
  32. package/dist/auth/config.js.map +1 -0
  33. package/dist/auth/index.d.ts +8 -0
  34. package/dist/auth/index.d.ts.map +1 -0
  35. package/dist/auth/index.js +299 -0
  36. package/dist/auth/index.js.map +1 -0
  37. package/dist/auth/keychain.d.ts +21 -0
  38. package/dist/auth/keychain.d.ts.map +1 -0
  39. package/dist/auth/keychain.js +256 -0
  40. package/dist/auth/keychain.js.map +1 -0
  41. package/dist/billing/index.d.ts +7 -0
  42. package/dist/billing/index.d.ts.map +1 -0
  43. package/dist/billing/index.js +233 -0
  44. package/dist/billing/index.js.map +1 -0
  45. package/dist/cli.js +291 -43
  46. package/dist/cli.js.map +1 -1
  47. package/dist/commands/hook.d.ts +12 -0
  48. package/dist/commands/hook.d.ts.map +1 -0
  49. package/dist/commands/hook.js +190 -0
  50. package/dist/commands/hook.js.map +1 -0
  51. package/dist/commands/keys.d.ts +4 -0
  52. package/dist/commands/keys.d.ts.map +1 -0
  53. package/dist/commands/keys.js +43 -0
  54. package/dist/commands/keys.js.map +1 -0
  55. package/dist/commands/mcp.d.ts +4 -0
  56. package/dist/commands/mcp.d.ts.map +1 -0
  57. package/dist/commands/mcp.js +43 -0
  58. package/dist/commands/mcp.js.map +1 -0
  59. package/dist/commands/project.d.ts +4 -0
  60. package/dist/commands/project.d.ts.map +1 -0
  61. package/dist/commands/project.js +68 -0
  62. package/dist/commands/project.js.map +1 -0
  63. package/dist/commands/skill.d.ts +4 -0
  64. package/dist/commands/skill.d.ts.map +1 -0
  65. package/dist/commands/skill.js +37 -0
  66. package/dist/commands/skill.js.map +1 -0
  67. package/dist/commands/stacks.d.ts +4 -0
  68. package/dist/commands/stacks.d.ts.map +1 -0
  69. package/dist/commands/stacks.js +103 -0
  70. package/dist/commands/stacks.js.map +1 -0
  71. package/dist/commands/stats.d.ts +4 -0
  72. package/dist/commands/stats.d.ts.map +1 -0
  73. package/dist/commands/stats.js +6 -0
  74. package/dist/commands/stats.js.map +1 -0
  75. package/dist/commands/sync.d.ts +4 -0
  76. package/dist/commands/sync.d.ts.map +1 -0
  77. package/dist/commands/sync.js +60 -0
  78. package/dist/commands/sync.js.map +1 -0
  79. package/dist/commands/update.d.ts +4 -0
  80. package/dist/commands/update.d.ts.map +1 -0
  81. package/dist/commands/update.js +63 -0
  82. package/dist/commands/update.js.map +1 -0
  83. package/dist/daemon/client.d.ts +107 -0
  84. package/dist/daemon/client.d.ts.map +1 -0
  85. package/dist/daemon/client.js +250 -0
  86. package/dist/daemon/client.js.map +1 -0
  87. package/dist/daemon/health.d.ts +38 -0
  88. package/dist/daemon/health.d.ts.map +1 -0
  89. package/dist/daemon/health.js +212 -0
  90. package/dist/daemon/health.js.map +1 -0
  91. package/dist/daemon/index.d.ts +34 -0
  92. package/dist/daemon/index.d.ts.map +1 -0
  93. package/dist/daemon/index.js +197 -0
  94. package/dist/daemon/index.js.map +1 -0
  95. package/dist/daemon/protocol.d.ts +144 -0
  96. package/dist/daemon/protocol.d.ts.map +1 -0
  97. package/dist/daemon/protocol.js +5 -0
  98. package/dist/daemon/protocol.js.map +1 -0
  99. package/dist/gamification/index.d.ts +13 -0
  100. package/dist/gamification/index.d.ts.map +1 -0
  101. package/dist/gamification/index.js +120 -0
  102. package/dist/gamification/index.js.map +1 -0
  103. package/dist/gamification/types.d.ts +34 -0
  104. package/dist/gamification/types.d.ts.map +1 -0
  105. package/dist/gamification/types.js +5 -0
  106. package/dist/gamification/types.js.map +1 -0
  107. package/dist/hooks/index.d.ts +65 -0
  108. package/dist/hooks/index.d.ts.map +1 -0
  109. package/dist/hooks/index.js +403 -0
  110. package/dist/hooks/index.js.map +1 -0
  111. package/dist/lib/api.d.ts +29 -0
  112. package/dist/lib/api.d.ts.map +1 -0
  113. package/dist/lib/api.js +213 -0
  114. package/dist/lib/api.js.map +1 -0
  115. package/dist/lib/browser.d.ts +6 -0
  116. package/dist/lib/browser.d.ts.map +1 -0
  117. package/dist/lib/browser.js +14 -0
  118. package/dist/lib/browser.js.map +1 -0
  119. package/dist/lib/channel-config.d.ts +10 -0
  120. package/dist/lib/channel-config.d.ts.map +1 -0
  121. package/dist/lib/channel-config.js +48 -0
  122. package/dist/lib/channel-config.js.map +1 -0
  123. package/dist/lib/command-runner.d.ts +16 -0
  124. package/dist/lib/command-runner.d.ts.map +1 -0
  125. package/dist/lib/command-runner.js +59 -0
  126. package/dist/lib/command-runner.js.map +1 -0
  127. package/dist/lib/command-utils.d.ts +22 -0
  128. package/dist/lib/command-utils.d.ts.map +1 -0
  129. package/dist/lib/command-utils.js +88 -0
  130. package/dist/lib/command-utils.js.map +1 -0
  131. package/dist/lib/error-handler.d.ts +13 -0
  132. package/dist/lib/error-handler.d.ts.map +1 -0
  133. package/dist/lib/error-handler.js +70 -0
  134. package/dist/lib/error-handler.js.map +1 -0
  135. package/dist/lib/errors.d.ts +35 -0
  136. package/dist/lib/errors.d.ts.map +1 -0
  137. package/dist/lib/errors.js +70 -0
  138. package/dist/lib/errors.js.map +1 -0
  139. package/dist/lib/exit.d.ts +10 -0
  140. package/dist/lib/exit.d.ts.map +1 -0
  141. package/dist/lib/exit.js +21 -0
  142. package/dist/lib/exit.js.map +1 -0
  143. package/dist/lib/formatters.d.ts +65 -0
  144. package/dist/lib/formatters.d.ts.map +1 -0
  145. package/dist/lib/formatters.js +180 -0
  146. package/dist/lib/formatters.js.map +1 -0
  147. package/dist/lib/hybrid-data.d.ts +47 -0
  148. package/dist/lib/hybrid-data.d.ts.map +1 -0
  149. package/dist/lib/hybrid-data.js +326 -0
  150. package/dist/lib/hybrid-data.js.map +1 -0
  151. package/dist/lib/local-store.d.ts +113 -0
  152. package/dist/lib/local-store.d.ts.map +1 -0
  153. package/dist/lib/local-store.js +220 -0
  154. package/dist/lib/local-store.js.map +1 -0
  155. package/dist/lib/machine-id.d.ts +8 -0
  156. package/dist/lib/machine-id.d.ts.map +1 -0
  157. package/dist/lib/machine-id.js +39 -0
  158. package/dist/lib/machine-id.js.map +1 -0
  159. package/dist/lib/network.d.ts +15 -0
  160. package/dist/lib/network.d.ts.map +1 -0
  161. package/dist/lib/network.js +46 -0
  162. package/dist/lib/network.js.map +1 -0
  163. package/dist/lib/theme.d.ts +77 -0
  164. package/dist/lib/theme.d.ts.map +1 -0
  165. package/dist/lib/theme.js +137 -0
  166. package/dist/lib/theme.js.map +1 -0
  167. package/dist/lib/tool-availability.d.ts +13 -0
  168. package/dist/lib/tool-availability.d.ts.map +1 -0
  169. package/dist/lib/tool-availability.js +48 -0
  170. package/dist/lib/tool-availability.js.map +1 -0
  171. package/dist/lib/update-checker.d.ts +21 -0
  172. package/dist/lib/update-checker.d.ts.map +1 -0
  173. package/dist/lib/update-checker.js +110 -0
  174. package/dist/lib/update-checker.js.map +1 -0
  175. package/dist/lib/validation.d.ts +30 -0
  176. package/dist/lib/validation.d.ts.map +1 -0
  177. package/dist/lib/validation.js +82 -0
  178. package/dist/lib/validation.js.map +1 -0
  179. package/dist/lib/validators.d.ts +18 -0
  180. package/dist/lib/validators.d.ts.map +1 -0
  181. package/dist/lib/validators.js +30 -0
  182. package/dist/lib/validators.js.map +1 -0
  183. package/dist/marketplace/api.d.ts +24 -0
  184. package/dist/marketplace/api.d.ts.map +1 -0
  185. package/dist/marketplace/api.js +92 -0
  186. package/dist/marketplace/api.js.map +1 -0
  187. package/dist/marketplace/index.d.ts +13 -0
  188. package/dist/marketplace/index.d.ts.map +1 -0
  189. package/dist/marketplace/index.js +155 -0
  190. package/dist/marketplace/index.js.map +1 -0
  191. package/dist/marketplace/installer.d.ts +18 -0
  192. package/dist/marketplace/installer.d.ts.map +1 -0
  193. package/dist/marketplace/installer.js +184 -0
  194. package/dist/marketplace/installer.js.map +1 -0
  195. package/dist/mcp/api.d.ts +93 -0
  196. package/dist/mcp/api.d.ts.map +1 -0
  197. package/dist/mcp/api.js +106 -0
  198. package/dist/mcp/api.js.map +1 -0
  199. package/dist/mcp/config.d.ts +72 -0
  200. package/dist/mcp/config.d.ts.map +1 -0
  201. package/dist/mcp/config.js +156 -0
  202. package/dist/mcp/config.js.map +1 -0
  203. package/dist/mcp/index.d.ts +54 -0
  204. package/dist/mcp/index.d.ts.map +1 -0
  205. package/dist/mcp/index.js +381 -0
  206. package/dist/mcp/index.js.map +1 -0
  207. package/dist/mcp/prompt.clean.d.ts +25 -0
  208. package/dist/mcp/prompt.clean.d.ts.map +1 -0
  209. package/dist/mcp/prompt.clean.js +206 -0
  210. package/dist/mcp/prompt.clean.js.map +1 -0
  211. package/dist/mcp/prompt.d.ts +52 -0
  212. package/dist/mcp/prompt.d.ts.map +1 -0
  213. package/dist/mcp/prompt.js +210 -0
  214. package/dist/mcp/prompt.js.map +1 -0
  215. package/dist/mcp/secrets.clean.d.ts +18 -0
  216. package/dist/mcp/secrets.clean.d.ts.map +1 -0
  217. package/dist/mcp/secrets.clean.js +357 -0
  218. package/dist/mcp/secrets.clean.js.map +1 -0
  219. package/dist/mcp/secrets.d.ts +46 -0
  220. package/dist/mcp/secrets.d.ts.map +1 -0
  221. package/dist/mcp/secrets.js +339 -0
  222. package/dist/mcp/secrets.js.map +1 -0
  223. package/dist/memory/index.d.ts +14 -0
  224. package/dist/memory/index.d.ts.map +1 -0
  225. package/dist/memory/index.js +98 -0
  226. package/dist/memory/index.js.map +1 -0
  227. package/dist/onboard/agents-md-builder.d.ts.map +1 -1
  228. package/dist/onboard/agents-md-builder.js +45 -0
  229. package/dist/onboard/agents-md-builder.js.map +1 -1
  230. package/dist/onboard/claude-inference.d.ts.map +1 -1
  231. package/dist/onboard/claude-inference.js +15 -4
  232. package/dist/onboard/claude-inference.js.map +1 -1
  233. package/dist/onboard/context7-fetcher.d.ts +1 -1
  234. package/dist/onboard/context7-fetcher.d.ts.map +1 -1
  235. package/dist/onboard/context7-fetcher.js +50 -16
  236. package/dist/onboard/context7-fetcher.js.map +1 -1
  237. package/dist/onboard/docs-builder.d.ts.map +1 -1
  238. package/dist/onboard/docs-builder.js +523 -50
  239. package/dist/onboard/docs-builder.js.map +1 -1
  240. package/dist/onboard/index.d.ts.map +1 -1
  241. package/dist/onboard/index.js +74 -25
  242. package/dist/onboard/index.js.map +1 -1
  243. package/dist/onboard/stack-detector.d.ts.map +1 -1
  244. package/dist/onboard/stack-detector.js +5 -55
  245. package/dist/onboard/stack-detector.js.map +1 -1
  246. package/dist/project/constants.d.ts +21 -0
  247. package/dist/project/constants.d.ts.map +1 -0
  248. package/dist/project/constants.js +21 -0
  249. package/dist/project/constants.js.map +1 -0
  250. package/dist/project/format.d.ts +16 -0
  251. package/dist/project/format.d.ts.map +1 -0
  252. package/dist/project/format.js +40 -0
  253. package/dist/project/format.js.map +1 -0
  254. package/dist/project/git.d.ts +28 -0
  255. package/dist/project/git.d.ts.map +1 -0
  256. package/dist/project/git.js +93 -0
  257. package/dist/project/git.js.map +1 -0
  258. package/dist/project/index.d.ts +36 -0
  259. package/dist/project/index.d.ts.map +1 -0
  260. package/dist/project/index.js +272 -0
  261. package/dist/project/index.js.map +1 -0
  262. package/dist/project/mapper.d.ts +27 -0
  263. package/dist/project/mapper.d.ts.map +1 -0
  264. package/dist/project/mapper.js +64 -0
  265. package/dist/project/mapper.js.map +1 -0
  266. package/dist/project/storage.d.ts +71 -0
  267. package/dist/project/storage.d.ts.map +1 -0
  268. package/dist/project/storage.js +274 -0
  269. package/dist/project/storage.js.map +1 -0
  270. package/dist/project/sync-bridge.d.ts +33 -0
  271. package/dist/project/sync-bridge.d.ts.map +1 -0
  272. package/dist/project/sync-bridge.js +155 -0
  273. package/dist/project/sync-bridge.js.map +1 -0
  274. package/dist/project/types.d.ts +107 -0
  275. package/dist/project/types.d.ts.map +1 -0
  276. package/dist/project/types.js +77 -0
  277. package/dist/project/types.js.map +1 -0
  278. package/dist/publish/index.d.ts +4 -0
  279. package/dist/publish/index.d.ts.map +1 -0
  280. package/dist/publish/index.js +92 -0
  281. package/dist/publish/index.js.map +1 -0
  282. package/dist/setup.d.ts.map +1 -1
  283. package/dist/setup.js +29 -10
  284. package/dist/setup.js.map +1 -1
  285. package/dist/skills/index.d.ts +51 -0
  286. package/dist/skills/index.d.ts.map +1 -0
  287. package/dist/skills/index.js +509 -0
  288. package/dist/skills/index.js.map +1 -0
  289. package/dist/stacks/check.d.ts +2 -0
  290. package/dist/stacks/check.d.ts.map +1 -0
  291. package/dist/stacks/check.js +144 -0
  292. package/dist/stacks/check.js.map +1 -0
  293. package/dist/stacks/diff.d.ts +11 -0
  294. package/dist/stacks/diff.d.ts.map +1 -0
  295. package/dist/stacks/diff.js +123 -0
  296. package/dist/stacks/diff.js.map +1 -0
  297. package/dist/stacks/index.d.ts +17 -0
  298. package/dist/stacks/index.d.ts.map +1 -0
  299. package/dist/stacks/index.js +525 -0
  300. package/dist/stacks/index.js.map +1 -0
  301. package/dist/stacks/index.refactored.d.ts.map +1 -0
  302. package/dist/stacks/index.refactored.js.map +1 -0
  303. package/dist/stacks/io.d.ts +11 -0
  304. package/dist/stacks/io.d.ts.map +1 -0
  305. package/dist/stacks/io.js +179 -0
  306. package/dist/stacks/io.js.map +1 -0
  307. package/dist/stacks/rollback.d.ts +5 -0
  308. package/dist/stacks/rollback.d.ts.map +1 -0
  309. package/dist/stacks/rollback.js +162 -0
  310. package/dist/stacks/rollback.js.map +1 -0
  311. package/dist/stacks/types.d.ts +70 -0
  312. package/dist/stacks/types.d.ts.map +1 -0
  313. package/dist/stacks/types.js +6 -0
  314. package/dist/stacks/types.js.map +1 -0
  315. package/dist/stacks/utils.d.ts +9 -0
  316. package/dist/stacks/utils.d.ts.map +1 -0
  317. package/dist/stacks/utils.js +11 -0
  318. package/dist/stacks/utils.js.map +1 -0
  319. package/dist/start/index.d.ts +23 -0
  320. package/dist/start/index.d.ts.map +1 -0
  321. package/dist/start/index.js +386 -0
  322. package/dist/start/index.js.map +1 -0
  323. package/dist/sync/index.d.ts +49 -0
  324. package/dist/sync/index.d.ts.map +1 -0
  325. package/dist/sync/index.js +207 -0
  326. package/dist/sync/index.js.map +1 -0
  327. package/dist/sync-engine/__tests__/test-helpers.d.ts +14 -0
  328. package/dist/sync-engine/__tests__/test-helpers.d.ts.map +1 -0
  329. package/dist/sync-engine/__tests__/test-helpers.js +73 -0
  330. package/dist/sync-engine/__tests__/test-helpers.js.map +1 -0
  331. package/dist/sync-engine/client.d.ts +128 -0
  332. package/dist/sync-engine/client.d.ts.map +1 -0
  333. package/dist/sync-engine/client.js +289 -0
  334. package/dist/sync-engine/client.js.map +1 -0
  335. package/dist/sync-engine/health.d.ts +38 -0
  336. package/dist/sync-engine/health.d.ts.map +1 -0
  337. package/dist/sync-engine/health.js +259 -0
  338. package/dist/sync-engine/health.js.map +1 -0
  339. package/dist/sync-engine/index.d.ts +34 -0
  340. package/dist/sync-engine/index.d.ts.map +1 -0
  341. package/dist/sync-engine/index.js +197 -0
  342. package/dist/sync-engine/index.js.map +1 -0
  343. package/dist/sync-engine/protocol.d.ts +153 -0
  344. package/dist/sync-engine/protocol.d.ts.map +1 -0
  345. package/dist/sync-engine/protocol.js +5 -0
  346. package/dist/sync-engine/protocol.js.map +1 -0
  347. package/dist/tasks/index.d.ts +14 -0
  348. package/dist/tasks/index.d.ts.map +1 -0
  349. package/dist/tasks/index.js +109 -0
  350. package/dist/tasks/index.js.map +1 -0
  351. package/dist/team/index.d.ts +12 -0
  352. package/dist/team/index.d.ts.map +1 -0
  353. package/dist/team/index.js +151 -0
  354. package/dist/team/index.js.map +1 -0
  355. package/dist/updater.d.ts +5 -5
  356. package/dist/updater.d.ts.map +1 -1
  357. package/dist/updater.js +24 -88
  358. package/dist/updater.js.map +1 -1
  359. package/dist/usage/index.d.ts +10 -0
  360. package/dist/usage/index.d.ts.map +1 -0
  361. package/dist/usage/index.js +104 -0
  362. package/dist/usage/index.js.map +1 -0
  363. package/dist/webhooks/index.d.ts +7 -0
  364. package/dist/webhooks/index.d.ts.map +1 -0
  365. package/dist/webhooks/index.js +81 -0
  366. package/dist/webhooks/index.js.map +1 -0
  367. package/package.json +26 -15
  368. 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":"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"}
@@ -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"}