@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.
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 +31 -5
  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,113 @@
1
+ /**
2
+ * Local-First Data Access Layer
3
+ *
4
+ * Routes all data access through the ClaudeTools sync engine via Unix socket JSON-RPC.
5
+ * All reads go through the sync engine's local store. All writes go through the sync engine's
6
+ * transaction queue for optimistic updates with background sync.
7
+ *
8
+ * Offline Mode:
9
+ * - Reads: Return cached data from sync engine's local store
10
+ * - Writes: Queue mutations via sync engine, sync when online
11
+ * - Graceful degradation with clear offline indicators
12
+ */
13
+ export interface LocalStack {
14
+ id: string;
15
+ user_id: string;
16
+ team_id?: string;
17
+ owner_type: 'user' | 'team';
18
+ visibility: 'private' | 'team' | 'public';
19
+ extends: string[];
20
+ name: string;
21
+ slug: string;
22
+ description?: string;
23
+ status: string;
24
+ is_official: boolean;
25
+ is_synced: boolean;
26
+ version: number;
27
+ extensions: Array<{
28
+ extension_type: 'skill' | 'agent' | 'hook' | 'mcp-server';
29
+ slug: string;
30
+ version?: string;
31
+ }>;
32
+ created_at: string;
33
+ updated_at: string;
34
+ }
35
+ export interface LocalProject {
36
+ id: string;
37
+ user_id: string;
38
+ team_id?: string;
39
+ name: string;
40
+ slug: string;
41
+ description?: string;
42
+ path?: string;
43
+ repository_url?: string;
44
+ default_branch: string;
45
+ icon?: string;
46
+ color?: string;
47
+ archived_at?: string;
48
+ version: number;
49
+ created_at: string;
50
+ updated_at: string;
51
+ }
52
+ export interface SyncStatus {
53
+ pending: number;
54
+ created: number;
55
+ queued: number;
56
+ executing: number;
57
+ completed: number;
58
+ failed: number;
59
+ }
60
+ /**
61
+ * Check if we're running offline (no network connectivity)
62
+ * Re-exported from network.ts for convenience
63
+ */
64
+ export declare function isOffline(): Promise<boolean>;
65
+ /**
66
+ * Get all stacks from local store
67
+ */
68
+ export declare function getLocalStacks(): Promise<LocalStack[]>;
69
+ /**
70
+ * Get a single stack by ID from local store
71
+ */
72
+ export declare function getLocalStack(id: string): Promise<LocalStack | null>;
73
+ /**
74
+ * Create a new stack (optimistic update + background sync)
75
+ */
76
+ export declare function createLocalStack(stack: LocalStack): Promise<void>;
77
+ /**
78
+ * Update an existing stack (optimistic update + background sync)
79
+ */
80
+ export declare function updateLocalStack(stack: LocalStack): Promise<void>;
81
+ /**
82
+ * Delete a stack (optimistic update + background sync)
83
+ */
84
+ export declare function deleteLocalStack(id: string): Promise<void>;
85
+ /**
86
+ * Get all projects from local store
87
+ */
88
+ export declare function getLocalProjects(): Promise<LocalProject[]>;
89
+ /**
90
+ * Get a single project by ID from local store
91
+ */
92
+ export declare function getLocalProject(id: string): Promise<LocalProject | null>;
93
+ /**
94
+ * Create a new project (optimistic update + background sync)
95
+ */
96
+ export declare function createLocalProject(project: LocalProject): Promise<void>;
97
+ /**
98
+ * Update an existing project (optimistic update + background sync)
99
+ */
100
+ export declare function updateLocalProject(project: LocalProject): Promise<void>;
101
+ /**
102
+ * Delete a project (optimistic update + background sync)
103
+ */
104
+ export declare function deleteLocalProject(id: string): Promise<void>;
105
+ /**
106
+ * Get sync queue status (pending, executing, completed, failed)
107
+ */
108
+ export declare function getSyncStatus(): Promise<SyncStatus>;
109
+ /**
110
+ * Get failed transactions (for conflict resolution UI)
111
+ */
112
+ export declare function getFailedTransactions(): Promise<string[]>;
113
+ //# sourceMappingURL=local-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../../src/lib/local-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Local-First Data Access Layer
3
+ *
4
+ * Routes all data access through the ClaudeTools sync engine via Unix socket JSON-RPC.
5
+ * All reads go through the sync engine's local store. All writes go through the sync engine's
6
+ * transaction queue for optimistic updates with background sync.
7
+ *
8
+ * Offline Mode:
9
+ * - Reads: Return cached data from sync engine's local store
10
+ * - Writes: Queue mutations via sync engine, sync when online
11
+ * - Graceful degradation with clear offline indicators
12
+ */
13
+ import { getSyncEngineClient } from '../sync-engine/client.js';
14
+ // ============================================
15
+ // Mapping: Sync Engine wire format <-> LocalStack
16
+ // ============================================
17
+ /**
18
+ * Sync Engine JSON uses `type` (Rust serde rename), local interface uses `extension_type`
19
+ */
20
+ function syncEngineStackToLocal(ds) {
21
+ return {
22
+ id: ds.id,
23
+ user_id: ds.user_id,
24
+ team_id: ds.team_id ?? undefined,
25
+ owner_type: ds.owner_type,
26
+ visibility: ds.visibility,
27
+ extends: ds.extends,
28
+ name: ds.name,
29
+ slug: ds.slug,
30
+ description: ds.description ?? undefined,
31
+ status: ds.status,
32
+ is_official: ds.is_official,
33
+ is_synced: ds.is_synced,
34
+ version: ds.version,
35
+ extensions: ds.extensions.map((ext) => ({
36
+ extension_type: ext.type,
37
+ slug: ext.slug,
38
+ version: ext.version ?? undefined,
39
+ })),
40
+ created_at: ds.created_at,
41
+ updated_at: ds.updated_at,
42
+ };
43
+ }
44
+ function localStackToSyncEngine(ls) {
45
+ return {
46
+ id: ls.id,
47
+ user_id: ls.user_id,
48
+ team_id: ls.team_id ?? null,
49
+ owner_type: ls.owner_type,
50
+ visibility: ls.visibility,
51
+ extends: ls.extends,
52
+ name: ls.name,
53
+ slug: ls.slug,
54
+ description: ls.description ?? null,
55
+ status: ls.status,
56
+ is_official: ls.is_official,
57
+ is_synced: ls.is_synced,
58
+ version: ls.version,
59
+ extensions: ls.extensions.map((ext) => ({
60
+ type: ext.extension_type,
61
+ slug: ext.slug,
62
+ version: ext.version ?? null,
63
+ })),
64
+ created_at: ls.created_at,
65
+ updated_at: ls.updated_at,
66
+ };
67
+ }
68
+ function syncEngineProjectToLocal(dp) {
69
+ return {
70
+ id: dp.id,
71
+ user_id: dp.user_id,
72
+ team_id: dp.team_id ?? undefined,
73
+ name: dp.name,
74
+ slug: dp.slug,
75
+ description: dp.description ?? undefined,
76
+ path: dp.path ?? undefined,
77
+ repository_url: dp.repository_url ?? undefined,
78
+ default_branch: dp.default_branch,
79
+ icon: dp.icon ?? undefined,
80
+ color: dp.color ?? undefined,
81
+ archived_at: dp.archived_at ?? undefined,
82
+ version: dp.version,
83
+ created_at: dp.created_at,
84
+ updated_at: dp.updated_at,
85
+ };
86
+ }
87
+ function localProjectToSyncEngine(lp) {
88
+ return {
89
+ id: lp.id,
90
+ user_id: lp.user_id,
91
+ team_id: lp.team_id ?? null,
92
+ name: lp.name,
93
+ slug: lp.slug,
94
+ description: lp.description ?? null,
95
+ path: lp.path ?? null,
96
+ repository_url: lp.repository_url ?? null,
97
+ default_branch: lp.default_branch,
98
+ icon: lp.icon ?? null,
99
+ color: lp.color ?? null,
100
+ archived_at: lp.archived_at ?? null,
101
+ version: lp.version,
102
+ created_at: lp.created_at,
103
+ updated_at: lp.updated_at,
104
+ };
105
+ }
106
+ /**
107
+ * Check if we're running offline (no network connectivity)
108
+ * Re-exported from network.ts for convenience
109
+ */
110
+ export async function isOffline() {
111
+ const { isOnlineCached } = await import('./network.js');
112
+ const online = await isOnlineCached();
113
+ return !online;
114
+ }
115
+ // ============================================
116
+ // Stack Operations (Local-First)
117
+ // ============================================
118
+ /**
119
+ * Get all stacks from local store
120
+ */
121
+ export async function getLocalStacks() {
122
+ const client = getSyncEngineClient();
123
+ const stacks = await client.syncPullStacks();
124
+ return stacks.map(syncEngineStackToLocal);
125
+ }
126
+ /**
127
+ * Get a single stack by ID from local store
128
+ */
129
+ export async function getLocalStack(id) {
130
+ const client = getSyncEngineClient();
131
+ const stack = await client.syncGetStack(id);
132
+ return stack ? syncEngineStackToLocal(stack) : null;
133
+ }
134
+ /**
135
+ * Create a new stack (optimistic update + background sync)
136
+ */
137
+ export async function createLocalStack(stack) {
138
+ const client = getSyncEngineClient();
139
+ await client.syncPushStack(localStackToSyncEngine(stack), 'insert');
140
+ }
141
+ /**
142
+ * Update an existing stack (optimistic update + background sync)
143
+ */
144
+ export async function updateLocalStack(stack) {
145
+ const client = getSyncEngineClient();
146
+ await client.syncPushStack(localStackToSyncEngine(stack), 'update');
147
+ }
148
+ /**
149
+ * Delete a stack (optimistic update + background sync)
150
+ */
151
+ export async function deleteLocalStack(id) {
152
+ const client = getSyncEngineClient();
153
+ await client.syncDeleteStack(id);
154
+ }
155
+ // ============================================
156
+ // Project Operations (Local-First)
157
+ // ============================================
158
+ /**
159
+ * Get all projects from local store
160
+ */
161
+ export async function getLocalProjects() {
162
+ const client = getSyncEngineClient();
163
+ const projects = await client.syncPullProjects();
164
+ return projects.map(syncEngineProjectToLocal);
165
+ }
166
+ /**
167
+ * Get a single project by ID from local store
168
+ */
169
+ export async function getLocalProject(id) {
170
+ const client = getSyncEngineClient();
171
+ const project = await client.syncGetProject(id);
172
+ return project ? syncEngineProjectToLocal(project) : null;
173
+ }
174
+ /**
175
+ * Create a new project (optimistic update + background sync)
176
+ */
177
+ export async function createLocalProject(project) {
178
+ const client = getSyncEngineClient();
179
+ await client.syncPushProject(localProjectToSyncEngine(project), 'insert');
180
+ }
181
+ /**
182
+ * Update an existing project (optimistic update + background sync)
183
+ */
184
+ export async function updateLocalProject(project) {
185
+ const client = getSyncEngineClient();
186
+ await client.syncPushProject(localProjectToSyncEngine(project), 'update');
187
+ }
188
+ /**
189
+ * Delete a project (optimistic update + background sync)
190
+ */
191
+ export async function deleteLocalProject(id) {
192
+ const client = getSyncEngineClient();
193
+ await client.syncDeleteProject(id);
194
+ }
195
+ // ============================================
196
+ // Sync Queue Status
197
+ // ============================================
198
+ /**
199
+ * Get sync queue status (pending, executing, completed, failed)
200
+ */
201
+ export async function getSyncStatus() {
202
+ const client = getSyncEngineClient();
203
+ const counts = await client.syncState();
204
+ return {
205
+ pending: counts.created + counts.queued + counts.executing,
206
+ created: counts.created,
207
+ queued: counts.queued,
208
+ executing: counts.executing,
209
+ completed: counts.completed,
210
+ failed: counts.failed,
211
+ };
212
+ }
213
+ /**
214
+ * Get failed transactions (for conflict resolution UI)
215
+ */
216
+ export async function getFailedTransactions() {
217
+ const client = getSyncEngineClient();
218
+ return client.syncFailed();
219
+ }
220
+ //# sourceMappingURL=local-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-store.js","sourceRoot":"","sources":["../../src/lib/local-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Platform-specific machine ID retrieval.
3
+ *
4
+ * Returns the OS-level machine identifier (IOPlatformUUID on macOS,
5
+ * /etc/machine-id on Linux, MachineGuid on Windows) or null if unavailable.
6
+ */
7
+ export declare function getMachineId(): string | null;
8
+ //# sourceMappingURL=machine-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-id.d.ts","sourceRoot":"","sources":["../../src/lib/machine-id.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAuC5C"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Platform-specific machine ID retrieval.
3
+ *
4
+ * Returns the OS-level machine identifier (IOPlatformUUID on macOS,
5
+ * /etc/machine-id on Linux, MachineGuid on Windows) or null if unavailable.
6
+ */
7
+ import { existsSync, readFileSync } from 'fs';
8
+ import { execFileSync } from 'child_process';
9
+ export function getMachineId() {
10
+ try {
11
+ switch (process.platform) {
12
+ case 'darwin': {
13
+ const output = execFileSync('ioreg', ['-rd1', '-c', 'IOPlatformExpertDevice'], { encoding: 'utf-8', timeout: 5000 });
14
+ const match = output.match(/"IOPlatformUUID"\s*=\s*"([a-fA-F0-9-]+)"/);
15
+ return match?.[1] || null;
16
+ }
17
+ case 'linux': {
18
+ if (existsSync('/etc/machine-id')) {
19
+ return readFileSync('/etc/machine-id', 'utf-8').trim();
20
+ }
21
+ if (existsSync('/var/lib/dbus/machine-id')) {
22
+ return readFileSync('/var/lib/dbus/machine-id', 'utf-8').trim();
23
+ }
24
+ return null;
25
+ }
26
+ case 'win32': {
27
+ const output = execFileSync('reg', ['query', 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography', '/v', 'MachineGuid'], { encoding: 'utf-8', timeout: 5000 });
28
+ const match = output.match(/MachineGuid\s+REG_SZ\s+(\S+)/);
29
+ return match?.[1] || null;
30
+ }
31
+ default:
32
+ return null;
33
+ }
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ }
39
+ //# sourceMappingURL=machine-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-id.js","sourceRoot":"","sources":["../../src/lib/machine-id.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC;QACH,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;YACzB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,YAAY,CACzB,OAAO,EACP,CAAC,MAAM,EAAE,IAAI,EAAE,wBAAwB,CAAC,EACxC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CACrC,CAAC;gBACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBACvE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;YAC5B,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAClC,OAAO,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzD,CAAC;gBACD,IAAI,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC;oBAC3C,OAAO,YAAY,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClE,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,MAAM,GAAG,YAAY,CACzB,KAAK,EACL,CAAC,OAAO,EAAE,uDAAuD,EAAE,IAAI,EAAE,aAAa,CAAC,EACvF,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CACrC,CAAC;gBACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAC3D,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;YAC5B,CAAC;YAED;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Network connectivity detection
3
+ *
4
+ * Detects whether the CLI is online or offline to enable graceful degradation.
5
+ * Used by hybrid-data layer to determine when to fallback to cached data.
6
+ */
7
+ /**
8
+ * Check if we have network connectivity
9
+ *
10
+ * Uses a quick health check endpoint to verify connectivity.
11
+ * Falls back gracefully on any network error.
12
+ */
13
+ export declare function isOnline(): Promise<boolean>;
14
+ export declare function isOnlineCached(): Promise<boolean>;
15
+ //# sourceMappingURL=network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/lib/network.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;;GAKG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAgBjD;AASD,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAWvD"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Network connectivity detection
3
+ *
4
+ * Detects whether the CLI is online or offline to enable graceful degradation.
5
+ * Used by hybrid-data layer to determine when to fallback to cached data.
6
+ */
7
+ const HEALTH_CHECK_URL = 'https://claudetools.com/api/health';
8
+ const TIMEOUT_MS = 3000;
9
+ /**
10
+ * Check if we have network connectivity
11
+ *
12
+ * Uses a quick health check endpoint to verify connectivity.
13
+ * Falls back gracefully on any network error.
14
+ */
15
+ export async function isOnline() {
16
+ try {
17
+ const controller = new AbortController();
18
+ const timeoutId = setTimeout(() => controller.abort(), TIMEOUT_MS);
19
+ const response = await fetch(HEALTH_CHECK_URL, {
20
+ signal: controller.signal,
21
+ method: 'HEAD', // HEAD is faster than GET
22
+ });
23
+ clearTimeout(timeoutId);
24
+ return response.ok;
25
+ }
26
+ catch {
27
+ // Any network error = offline
28
+ return false;
29
+ }
30
+ }
31
+ /**
32
+ * Cached online status (expires after 30 seconds)
33
+ * Prevents excessive health checks
34
+ */
35
+ let cachedStatus = null;
36
+ const CACHE_TTL_MS = 30_000; // 30 seconds
37
+ export async function isOnlineCached() {
38
+ const now = Date.now();
39
+ if (cachedStatus && (now - cachedStatus.timestamp) < CACHE_TTL_MS) {
40
+ return cachedStatus.online;
41
+ }
42
+ const online = await isOnline();
43
+ cachedStatus = { online, timestamp: now };
44
+ return online;
45
+ }
46
+ //# sourceMappingURL=network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/lib/network.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,gBAAgB,GAAG,oCAAoC,CAAC;AAC9D,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;QAEnE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE;YAC7C,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,MAAM,EAAE,MAAM,EAAE,0BAA0B;SAC3C,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,IAAI,YAAY,GAAkD,IAAI,CAAC;AACvE,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,aAAa;AAE1C,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,IAAI,YAAY,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;QAClE,OAAO,YAAY,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;IAChC,YAAY,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAE1C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,77 @@
1
+ export declare const theme: {
2
+ success: import("chalk").ChalkInstance;
3
+ error: import("chalk").ChalkInstance;
4
+ warning: import("chalk").ChalkInstance;
5
+ info: import("chalk").ChalkInstance;
6
+ muted: import("chalk").ChalkInstance;
7
+ highlight: import("chalk").ChalkInstance;
8
+ brand: import("chalk").ChalkInstance;
9
+ bold: import("chalk").ChalkInstance;
10
+ dim: import("chalk").ChalkInstance;
11
+ header: import("chalk").ChalkInstance;
12
+ subheader: import("chalk").ChalkInstance;
13
+ command: import("chalk").ChalkInstance;
14
+ placeholder: import("chalk").ChalkInstance;
15
+ code: import("chalk").ChalkInstance;
16
+ symbols: {
17
+ success: string;
18
+ error: string;
19
+ warning: string;
20
+ info: string;
21
+ pending: string;
22
+ arrow: string;
23
+ dot: string;
24
+ bullet: string;
25
+ };
26
+ ok: (msg: string) => string;
27
+ fail: (msg: string) => string;
28
+ warn: (msg: string) => string;
29
+ step: (msg: string) => string;
30
+ colorSupport: boolean;
31
+ termWidth: number;
32
+ };
33
+ /**
34
+ * Format a header with consistent styling
35
+ */
36
+ export declare function formatHeader(text: string): string;
37
+ /**
38
+ * Format a subheader with consistent styling
39
+ */
40
+ export declare function formatSubheader(text: string): string;
41
+ /**
42
+ * Format a command example
43
+ */
44
+ export declare function formatCommand(cmd: string): string;
45
+ /**
46
+ * Format a placeholder (e.g., <name>, [options])
47
+ */
48
+ export declare function formatPlaceholder(text: string): string;
49
+ /**
50
+ * Format an error message with symbol
51
+ */
52
+ export declare function formatError(msg: string, code?: string): string;
53
+ /**
54
+ * Format a success message with symbol
55
+ */
56
+ export declare function formatSuccess(msg: string): string;
57
+ /**
58
+ * Format a warning message with symbol
59
+ */
60
+ export declare function formatWarning(msg: string): string;
61
+ /**
62
+ * Format an info message with symbol
63
+ */
64
+ export declare function formatInfo(msg: string): string;
65
+ /**
66
+ * Format a step/progress message with arrow
67
+ */
68
+ export declare function formatStep(msg: string): string;
69
+ /**
70
+ * Get terminal width for responsive output
71
+ */
72
+ export declare function getTermWidth(): number;
73
+ /**
74
+ * Truncate text to fit terminal width
75
+ */
76
+ export declare function truncate(text: string, maxWidth?: number): string;
77
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/lib/theme.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;cAkCN,MAAM,KAAG,MAAM;gBACb,MAAM,KAAG,MAAM;gBACf,MAAM,KAAG,MAAM;gBACf,MAAM,KAAG,MAAM;;;CAK5B,CAAC;AAMF;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAI9D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAIhE"}