@jacques-ai/core 0.0.7-alpha.1

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 (341) hide show
  1. package/dist/archive/archive-store.d.ts +166 -0
  2. package/dist/archive/archive-store.d.ts.map +1 -0
  3. package/dist/archive/archive-store.js +612 -0
  4. package/dist/archive/archive-store.js.map +1 -0
  5. package/dist/archive/bulk-archive.d.ts +63 -0
  6. package/dist/archive/bulk-archive.d.ts.map +1 -0
  7. package/dist/archive/bulk-archive.js +315 -0
  8. package/dist/archive/bulk-archive.js.map +1 -0
  9. package/dist/archive/filename-utils.d.ts +39 -0
  10. package/dist/archive/filename-utils.d.ts.map +1 -0
  11. package/dist/archive/filename-utils.js +78 -0
  12. package/dist/archive/filename-utils.js.map +1 -0
  13. package/dist/archive/index.d.ts +21 -0
  14. package/dist/archive/index.d.ts.map +1 -0
  15. package/dist/archive/index.js +45 -0
  16. package/dist/archive/index.js.map +1 -0
  17. package/dist/archive/manifest-extractor.d.ts +40 -0
  18. package/dist/archive/manifest-extractor.d.ts.map +1 -0
  19. package/dist/archive/manifest-extractor.js +456 -0
  20. package/dist/archive/manifest-extractor.js.map +1 -0
  21. package/dist/archive/migration.d.ts +59 -0
  22. package/dist/archive/migration.d.ts.map +1 -0
  23. package/dist/archive/migration.js +172 -0
  24. package/dist/archive/migration.js.map +1 -0
  25. package/dist/archive/plan-cataloger.d.ts +24 -0
  26. package/dist/archive/plan-cataloger.d.ts.map +1 -0
  27. package/dist/archive/plan-cataloger.js +100 -0
  28. package/dist/archive/plan-cataloger.js.map +1 -0
  29. package/dist/archive/plan-extractor.d.ts +84 -0
  30. package/dist/archive/plan-extractor.d.ts.map +1 -0
  31. package/dist/archive/plan-extractor.js +371 -0
  32. package/dist/archive/plan-extractor.js.map +1 -0
  33. package/dist/archive/search-indexer.d.ts +50 -0
  34. package/dist/archive/search-indexer.d.ts.map +1 -0
  35. package/dist/archive/search-indexer.js +294 -0
  36. package/dist/archive/search-indexer.js.map +1 -0
  37. package/dist/archive/subagent-store.d.ts +113 -0
  38. package/dist/archive/subagent-store.d.ts.map +1 -0
  39. package/dist/archive/subagent-store.js +173 -0
  40. package/dist/archive/subagent-store.js.map +1 -0
  41. package/dist/archive/types.d.ts +236 -0
  42. package/dist/archive/types.d.ts.map +1 -0
  43. package/dist/archive/types.js +30 -0
  44. package/dist/archive/types.js.map +1 -0
  45. package/dist/branding.d.ts +9 -0
  46. package/dist/branding.d.ts.map +1 -0
  47. package/dist/branding.js +50 -0
  48. package/dist/branding.js.map +1 -0
  49. package/dist/cache/git-utils.d.ts +36 -0
  50. package/dist/cache/git-utils.d.ts.map +1 -0
  51. package/dist/cache/git-utils.js +160 -0
  52. package/dist/cache/git-utils.js.map +1 -0
  53. package/dist/cache/hidden-projects.d.ts +19 -0
  54. package/dist/cache/hidden-projects.d.ts.map +1 -0
  55. package/dist/cache/hidden-projects.js +48 -0
  56. package/dist/cache/hidden-projects.js.map +1 -0
  57. package/dist/cache/index.d.ts +15 -0
  58. package/dist/cache/index.d.ts.map +1 -0
  59. package/dist/cache/index.js +20 -0
  60. package/dist/cache/index.js.map +1 -0
  61. package/dist/cache/metadata-extractor.d.ts +62 -0
  62. package/dist/cache/metadata-extractor.d.ts.map +1 -0
  63. package/dist/cache/metadata-extractor.js +574 -0
  64. package/dist/cache/metadata-extractor.js.map +1 -0
  65. package/dist/cache/mode-detector.d.ts +19 -0
  66. package/dist/cache/mode-detector.d.ts.map +1 -0
  67. package/dist/cache/mode-detector.js +161 -0
  68. package/dist/cache/mode-detector.js.map +1 -0
  69. package/dist/cache/persistence.d.ts +39 -0
  70. package/dist/cache/persistence.d.ts.map +1 -0
  71. package/dist/cache/persistence.js +98 -0
  72. package/dist/cache/persistence.js.map +1 -0
  73. package/dist/cache/project-discovery.d.ts +41 -0
  74. package/dist/cache/project-discovery.d.ts.map +1 -0
  75. package/dist/cache/project-discovery.js +212 -0
  76. package/dist/cache/project-discovery.js.map +1 -0
  77. package/dist/cache/session-index.d.ts +258 -0
  78. package/dist/cache/session-index.d.ts.map +1 -0
  79. package/dist/cache/session-index.js +1030 -0
  80. package/dist/cache/session-index.js.map +1 -0
  81. package/dist/cache/types.d.ts +159 -0
  82. package/dist/cache/types.d.ts.map +1 -0
  83. package/dist/cache/types.js +29 -0
  84. package/dist/cache/types.js.map +1 -0
  85. package/dist/catalog/bulk-extractor.d.ts +18 -0
  86. package/dist/catalog/bulk-extractor.d.ts.map +1 -0
  87. package/dist/catalog/bulk-extractor.js +150 -0
  88. package/dist/catalog/bulk-extractor.js.map +1 -0
  89. package/dist/catalog/extractor.d.ts +53 -0
  90. package/dist/catalog/extractor.d.ts.map +1 -0
  91. package/dist/catalog/extractor.js +522 -0
  92. package/dist/catalog/extractor.js.map +1 -0
  93. package/dist/catalog/index.d.ts +10 -0
  94. package/dist/catalog/index.d.ts.map +1 -0
  95. package/dist/catalog/index.js +11 -0
  96. package/dist/catalog/index.js.map +1 -0
  97. package/dist/catalog/types.d.ts +134 -0
  98. package/dist/catalog/types.d.ts.map +1 -0
  99. package/dist/catalog/types.js +8 -0
  100. package/dist/catalog/types.js.map +1 -0
  101. package/dist/client/index.d.ts +6 -0
  102. package/dist/client/index.d.ts.map +1 -0
  103. package/dist/client/index.js +5 -0
  104. package/dist/client/index.js.map +1 -0
  105. package/dist/client/websocket-client.d.ts +96 -0
  106. package/dist/client/websocket-client.d.ts.map +1 -0
  107. package/dist/client/websocket-client.js +222 -0
  108. package/dist/client/websocket-client.js.map +1 -0
  109. package/dist/context/index.d.ts +13 -0
  110. package/dist/context/index.d.ts.map +1 -0
  111. package/dist/context/index.js +26 -0
  112. package/dist/context/index.js.map +1 -0
  113. package/dist/context/indexer.d.ts +73 -0
  114. package/dist/context/indexer.d.ts.map +1 -0
  115. package/dist/context/indexer.js +233 -0
  116. package/dist/context/indexer.js.map +1 -0
  117. package/dist/context/manager.d.ts +66 -0
  118. package/dist/context/manager.d.ts.map +1 -0
  119. package/dist/context/manager.js +310 -0
  120. package/dist/context/manager.js.map +1 -0
  121. package/dist/context/types.d.ts +149 -0
  122. package/dist/context/types.d.ts.map +1 -0
  123. package/dist/context/types.js +36 -0
  124. package/dist/context/types.js.map +1 -0
  125. package/dist/handoff/catalog.d.ts +54 -0
  126. package/dist/handoff/catalog.d.ts.map +1 -0
  127. package/dist/handoff/catalog.js +121 -0
  128. package/dist/handoff/catalog.js.map +1 -0
  129. package/dist/handoff/generator.d.ts +107 -0
  130. package/dist/handoff/generator.d.ts.map +1 -0
  131. package/dist/handoff/generator.js +603 -0
  132. package/dist/handoff/generator.js.map +1 -0
  133. package/dist/handoff/index.d.ts +13 -0
  134. package/dist/handoff/index.d.ts.map +1 -0
  135. package/dist/handoff/index.js +12 -0
  136. package/dist/handoff/index.js.map +1 -0
  137. package/dist/handoff/llm-generator.d.ts +77 -0
  138. package/dist/handoff/llm-generator.d.ts.map +1 -0
  139. package/dist/handoff/llm-generator.js +513 -0
  140. package/dist/handoff/llm-generator.js.map +1 -0
  141. package/dist/handoff/prompts.d.ts +18 -0
  142. package/dist/handoff/prompts.d.ts.map +1 -0
  143. package/dist/handoff/prompts.js +22 -0
  144. package/dist/handoff/prompts.js.map +1 -0
  145. package/dist/handoff/types.d.ts +28 -0
  146. package/dist/handoff/types.d.ts.map +1 -0
  147. package/dist/handoff/types.js +7 -0
  148. package/dist/handoff/types.js.map +1 -0
  149. package/dist/index.d.ts +56 -0
  150. package/dist/index.d.ts.map +1 -0
  151. package/dist/index.js +132 -0
  152. package/dist/index.js.map +1 -0
  153. package/dist/logging/claude-operations.d.ts +111 -0
  154. package/dist/logging/claude-operations.d.ts.map +1 -0
  155. package/dist/logging/claude-operations.js +132 -0
  156. package/dist/logging/claude-operations.js.map +1 -0
  157. package/dist/logging/error-utils.d.ts +18 -0
  158. package/dist/logging/error-utils.d.ts.map +1 -0
  159. package/dist/logging/error-utils.js +37 -0
  160. package/dist/logging/error-utils.js.map +1 -0
  161. package/dist/logging/index.d.ts +11 -0
  162. package/dist/logging/index.d.ts.map +1 -0
  163. package/dist/logging/index.js +10 -0
  164. package/dist/logging/index.js.map +1 -0
  165. package/dist/logging/logger.d.ts +25 -0
  166. package/dist/logging/logger.d.ts.map +1 -0
  167. package/dist/logging/logger.js +39 -0
  168. package/dist/logging/logger.js.map +1 -0
  169. package/dist/notifications/constants.d.ts +16 -0
  170. package/dist/notifications/constants.d.ts.map +1 -0
  171. package/dist/notifications/constants.js +49 -0
  172. package/dist/notifications/constants.js.map +1 -0
  173. package/dist/notifications/index.d.ts +9 -0
  174. package/dist/notifications/index.d.ts.map +1 -0
  175. package/dist/notifications/index.js +8 -0
  176. package/dist/notifications/index.js.map +1 -0
  177. package/dist/notifications/types.d.ts +28 -0
  178. package/dist/notifications/types.d.ts.map +1 -0
  179. package/dist/notifications/types.js +7 -0
  180. package/dist/notifications/types.js.map +1 -0
  181. package/dist/notifications/utils.d.ts +20 -0
  182. package/dist/notifications/utils.d.ts.map +1 -0
  183. package/dist/notifications/utils.js +37 -0
  184. package/dist/notifications/utils.js.map +1 -0
  185. package/dist/plan/index.d.ts +12 -0
  186. package/dist/plan/index.d.ts.map +1 -0
  187. package/dist/plan/index.js +15 -0
  188. package/dist/plan/index.js.map +1 -0
  189. package/dist/plan/plan-parser.d.ts +33 -0
  190. package/dist/plan/plan-parser.d.ts.map +1 -0
  191. package/dist/plan/plan-parser.js +189 -0
  192. package/dist/plan/plan-parser.js.map +1 -0
  193. package/dist/plan/progress-computer.d.ts +34 -0
  194. package/dist/plan/progress-computer.d.ts.map +1 -0
  195. package/dist/plan/progress-computer.js +211 -0
  196. package/dist/plan/progress-computer.js.map +1 -0
  197. package/dist/plan/progress-matcher.d.ts +34 -0
  198. package/dist/plan/progress-matcher.d.ts.map +1 -0
  199. package/dist/plan/progress-matcher.js +297 -0
  200. package/dist/plan/progress-matcher.js.map +1 -0
  201. package/dist/plan/task-extractor.d.ts +30 -0
  202. package/dist/plan/task-extractor.d.ts.map +1 -0
  203. package/dist/plan/task-extractor.js +435 -0
  204. package/dist/plan/task-extractor.js.map +1 -0
  205. package/dist/plan/types.d.ts +131 -0
  206. package/dist/plan/types.d.ts.map +1 -0
  207. package/dist/plan/types.js +8 -0
  208. package/dist/plan/types.js.map +1 -0
  209. package/dist/project/aggregator.d.ts +43 -0
  210. package/dist/project/aggregator.d.ts.map +1 -0
  211. package/dist/project/aggregator.js +218 -0
  212. package/dist/project/aggregator.js.map +1 -0
  213. package/dist/project/index.d.ts +9 -0
  214. package/dist/project/index.d.ts.map +1 -0
  215. package/dist/project/index.js +9 -0
  216. package/dist/project/index.js.map +1 -0
  217. package/dist/project/types.d.ts +65 -0
  218. package/dist/project/types.d.ts.map +1 -0
  219. package/dist/project/types.js +27 -0
  220. package/dist/project/types.js.map +1 -0
  221. package/dist/session/detector.d.ts +113 -0
  222. package/dist/session/detector.d.ts.map +1 -0
  223. package/dist/session/detector.js +333 -0
  224. package/dist/session/detector.js.map +1 -0
  225. package/dist/session/filters.d.ts +32 -0
  226. package/dist/session/filters.d.ts.map +1 -0
  227. package/dist/session/filters.js +100 -0
  228. package/dist/session/filters.js.map +1 -0
  229. package/dist/session/format-title.d.ts +16 -0
  230. package/dist/session/format-title.d.ts.map +1 -0
  231. package/dist/session/format-title.js +54 -0
  232. package/dist/session/format-title.js.map +1 -0
  233. package/dist/session/index.d.ts +16 -0
  234. package/dist/session/index.d.ts.map +1 -0
  235. package/dist/session/index.js +10 -0
  236. package/dist/session/index.js.map +1 -0
  237. package/dist/session/parser.d.ts +264 -0
  238. package/dist/session/parser.d.ts.map +1 -0
  239. package/dist/session/parser.js +588 -0
  240. package/dist/session/parser.js.map +1 -0
  241. package/dist/session/token-estimator.d.ts +32 -0
  242. package/dist/session/token-estimator.d.ts.map +1 -0
  243. package/dist/session/token-estimator.js +139 -0
  244. package/dist/session/token-estimator.js.map +1 -0
  245. package/dist/session/transformer.d.ts +126 -0
  246. package/dist/session/transformer.d.ts.map +1 -0
  247. package/dist/session/transformer.js +158 -0
  248. package/dist/session/transformer.js.map +1 -0
  249. package/dist/setup/hooks-config.d.ts +35 -0
  250. package/dist/setup/hooks-config.d.ts.map +1 -0
  251. package/dist/setup/hooks-config.js +107 -0
  252. package/dist/setup/hooks-config.js.map +1 -0
  253. package/dist/setup/hooks-symlink.d.ts +17 -0
  254. package/dist/setup/hooks-symlink.d.ts.map +1 -0
  255. package/dist/setup/hooks-symlink.js +89 -0
  256. package/dist/setup/hooks-symlink.js.map +1 -0
  257. package/dist/setup/index.d.ts +13 -0
  258. package/dist/setup/index.d.ts.map +1 -0
  259. package/dist/setup/index.js +12 -0
  260. package/dist/setup/index.js.map +1 -0
  261. package/dist/setup/prerequisites.d.ts +11 -0
  262. package/dist/setup/prerequisites.d.ts.map +1 -0
  263. package/dist/setup/prerequisites.js +72 -0
  264. package/dist/setup/prerequisites.js.map +1 -0
  265. package/dist/setup/settings-merge.d.ts +33 -0
  266. package/dist/setup/settings-merge.d.ts.map +1 -0
  267. package/dist/setup/settings-merge.js +131 -0
  268. package/dist/setup/settings-merge.js.map +1 -0
  269. package/dist/setup/skills-install.d.ts +17 -0
  270. package/dist/setup/skills-install.d.ts.map +1 -0
  271. package/dist/setup/skills-install.js +60 -0
  272. package/dist/setup/skills-install.js.map +1 -0
  273. package/dist/setup/types.d.ts +39 -0
  274. package/dist/setup/types.d.ts.map +1 -0
  275. package/dist/setup/types.js +7 -0
  276. package/dist/setup/types.js.map +1 -0
  277. package/dist/setup/verification.d.ts +9 -0
  278. package/dist/setup/verification.d.ts.map +1 -0
  279. package/dist/setup/verification.js +91 -0
  280. package/dist/setup/verification.js.map +1 -0
  281. package/dist/shortcuts/index.d.ts +8 -0
  282. package/dist/shortcuts/index.d.ts.map +1 -0
  283. package/dist/shortcuts/index.js +6 -0
  284. package/dist/shortcuts/index.js.map +1 -0
  285. package/dist/shortcuts/key-utils.d.ts +54 -0
  286. package/dist/shortcuts/key-utils.d.ts.map +1 -0
  287. package/dist/shortcuts/key-utils.js +129 -0
  288. package/dist/shortcuts/key-utils.js.map +1 -0
  289. package/dist/shortcuts/shortcut-registry.d.ts +37 -0
  290. package/dist/shortcuts/shortcut-registry.d.ts.map +1 -0
  291. package/dist/shortcuts/shortcut-registry.js +322 -0
  292. package/dist/shortcuts/shortcut-registry.js.map +1 -0
  293. package/dist/sources/config.d.ts +91 -0
  294. package/dist/sources/config.d.ts.map +1 -0
  295. package/dist/sources/config.js +229 -0
  296. package/dist/sources/config.js.map +1 -0
  297. package/dist/sources/googledocs.d.ts +43 -0
  298. package/dist/sources/googledocs.d.ts.map +1 -0
  299. package/dist/sources/googledocs.js +298 -0
  300. package/dist/sources/googledocs.js.map +1 -0
  301. package/dist/sources/index.d.ts +14 -0
  302. package/dist/sources/index.d.ts.map +1 -0
  303. package/dist/sources/index.js +19 -0
  304. package/dist/sources/index.js.map +1 -0
  305. package/dist/sources/notion.d.ts +35 -0
  306. package/dist/sources/notion.d.ts.map +1 -0
  307. package/dist/sources/notion.js +352 -0
  308. package/dist/sources/notion.js.map +1 -0
  309. package/dist/sources/obsidian.d.ts +38 -0
  310. package/dist/sources/obsidian.d.ts.map +1 -0
  311. package/dist/sources/obsidian.js +228 -0
  312. package/dist/sources/obsidian.js.map +1 -0
  313. package/dist/sources/types.d.ts +133 -0
  314. package/dist/sources/types.d.ts.map +1 -0
  315. package/dist/sources/types.js +19 -0
  316. package/dist/sources/types.js.map +1 -0
  317. package/dist/storage/index.d.ts +6 -0
  318. package/dist/storage/index.d.ts.map +1 -0
  319. package/dist/storage/index.js +5 -0
  320. package/dist/storage/index.js.map +1 -0
  321. package/dist/storage/writer.d.ts +86 -0
  322. package/dist/storage/writer.d.ts.map +1 -0
  323. package/dist/storage/writer.js +137 -0
  324. package/dist/storage/writer.js.map +1 -0
  325. package/dist/types.d.ts +203 -0
  326. package/dist/types.d.ts.map +1 -0
  327. package/dist/types.js +8 -0
  328. package/dist/types.js.map +1 -0
  329. package/dist/utils/claude-token.d.ts +49 -0
  330. package/dist/utils/claude-token.d.ts.map +1 -0
  331. package/dist/utils/claude-token.js +169 -0
  332. package/dist/utils/claude-token.js.map +1 -0
  333. package/dist/utils/index.d.ts +7 -0
  334. package/dist/utils/index.d.ts.map +1 -0
  335. package/dist/utils/index.js +13 -0
  336. package/dist/utils/index.js.map +1 -0
  337. package/dist/utils/settings.d.ts +100 -0
  338. package/dist/utils/settings.d.ts.map +1 -0
  339. package/dist/utils/settings.js +206 -0
  340. package/dist/utils/settings.js.map +1 -0
  341. package/package.json +54 -0
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Core Types
3
+ *
4
+ * Shared types for the Jacques ecosystem.
5
+ * These are the canonical types used by both CLI dashboard and GUI.
6
+ */
7
+ /**
8
+ * Auto-compact status for Claude Code sessions
9
+ *
10
+ * Known Bug (Issue #18264): Even with autoCompact: false, compaction
11
+ * still triggers at ~78% context usage.
12
+ */
13
+ export interface AutoCompactStatus {
14
+ enabled: boolean;
15
+ threshold: number;
16
+ bug_threshold: number | null;
17
+ }
18
+ export interface TerminalIdentity {
19
+ tty: string | null;
20
+ terminal_pid: number;
21
+ term_program: string | null;
22
+ iterm_session_id: string | null;
23
+ term_session_id: string | null;
24
+ kitty_window_id: string | null;
25
+ wezterm_pane: string | null;
26
+ vscode_injection: string | null;
27
+ windowid: string | null;
28
+ term: string | null;
29
+ }
30
+ export interface ContextMetrics {
31
+ used_percentage: number;
32
+ remaining_percentage: number;
33
+ total_input_tokens: number;
34
+ total_output_tokens: number;
35
+ context_window_size: number;
36
+ total_cost_usd?: number;
37
+ total_duration_ms?: number;
38
+ /** True if this is an estimate (not actual from preCompact) */
39
+ is_estimate?: boolean;
40
+ }
41
+ export interface ModelInfo {
42
+ id: string;
43
+ display_name: string;
44
+ }
45
+ export interface WorkspaceInfo {
46
+ current_dir: string;
47
+ project_dir: string;
48
+ }
49
+ export type SessionStatus = "active" | "working" | "idle" | "tool_use" | "waiting" | "awaiting";
50
+ export type SessionSource = "claude_code" | "cursor" | string;
51
+ export interface Session {
52
+ session_id: string;
53
+ session_title: string | null;
54
+ transcript_path: string | null;
55
+ cwd: string;
56
+ project: string;
57
+ model: ModelInfo | null;
58
+ workspace: WorkspaceInfo | null;
59
+ terminal: TerminalIdentity | null;
60
+ terminal_key: string;
61
+ status: SessionStatus;
62
+ last_activity: number;
63
+ registered_at: number;
64
+ context_metrics: ContextMetrics | null;
65
+ source?: SessionSource | "startup" | "resume" | "clear" | "compact";
66
+ autocompact: AutoCompactStatus | null;
67
+ git_branch?: string | null;
68
+ git_worktree?: string | null;
69
+ /** Canonical git repo root path (main worktree root, shared across all worktrees) */
70
+ git_repo_root?: string | null;
71
+ /** Commits ahead of default branch */
72
+ git_ahead?: number | null;
73
+ /** Commits behind default branch */
74
+ git_behind?: number | null;
75
+ /** Whether worktree has uncommitted changes */
76
+ git_dirty?: boolean | null;
77
+ /** Last tool used (from PostToolUse hook) */
78
+ last_tool_name?: string | null;
79
+ /** Whether the session was launched with --dangerously-skip-permissions */
80
+ is_bypass?: boolean;
81
+ /** Current permission mode (default, plan, acceptEdits, etc.) */
82
+ mode?: string | null;
83
+ }
84
+ export interface InitialStateMessage {
85
+ type: "initial_state";
86
+ sessions: Session[];
87
+ focused_session_id: string | null;
88
+ scanning?: boolean;
89
+ }
90
+ export interface SessionUpdateMessage {
91
+ type: "session_update";
92
+ session: Session;
93
+ }
94
+ export interface SessionRemovedMessage {
95
+ type: "session_removed";
96
+ session_id: string;
97
+ }
98
+ export interface FocusChangedMessage {
99
+ type: "focus_changed";
100
+ session_id: string | null;
101
+ session: Session | null;
102
+ }
103
+ export interface ServerStatusMessage {
104
+ type: "server_status";
105
+ status: "connected" | "disconnected";
106
+ session_count: number;
107
+ scanning?: boolean;
108
+ }
109
+ export interface AutoCompactToggledMessage {
110
+ type: "autocompact_toggled";
111
+ enabled: boolean;
112
+ warning?: string;
113
+ }
114
+ export interface HandoffReadyMessage {
115
+ type: "handoff_ready";
116
+ session_id: string;
117
+ path: string;
118
+ }
119
+ export interface FocusTerminalResultMessage {
120
+ type: "focus_terminal_result";
121
+ session_id: string;
122
+ success: boolean;
123
+ method: string;
124
+ error?: string;
125
+ }
126
+ export interface NotificationFiredMessage {
127
+ type: "notification_fired";
128
+ notification: {
129
+ id: string;
130
+ category: string;
131
+ title: string;
132
+ body: string;
133
+ priority: string;
134
+ timestamp: number;
135
+ sessionId?: string;
136
+ };
137
+ }
138
+ export type ServerMessage = InitialStateMessage | SessionUpdateMessage | SessionRemovedMessage | FocusChangedMessage | ServerStatusMessage | AutoCompactToggledMessage | HandoffReadyMessage | FocusTerminalResultMessage | NotificationFiredMessage;
139
+ export interface SelectSessionRequest {
140
+ type: "select_session";
141
+ session_id: string;
142
+ }
143
+ export interface TriggerActionRequest {
144
+ type: "trigger_action";
145
+ session_id: string;
146
+ action: "smart_compact" | "new_session" | "save_snapshot";
147
+ options?: Record<string, unknown>;
148
+ }
149
+ export interface ToggleAutoCompactRequest {
150
+ type: "toggle_autocompact";
151
+ session_id?: string;
152
+ }
153
+ export interface FocusTerminalRequest {
154
+ type: "focus_terminal";
155
+ session_id: string;
156
+ }
157
+ export interface TileWindowsRequest {
158
+ type: "tile_windows";
159
+ session_ids: string[];
160
+ layout?: "side-by-side" | "thirds" | "2x2" | "smart";
161
+ display_id?: string;
162
+ }
163
+ export interface MaximizeWindowRequest {
164
+ type: "maximize_window";
165
+ session_id: string;
166
+ }
167
+ export interface LaunchSessionRequest {
168
+ type: "launch_session";
169
+ cwd: string;
170
+ preferred_terminal?: string;
171
+ dangerously_skip_permissions?: boolean;
172
+ }
173
+ export interface CreateWorktreeRequest {
174
+ type: "create_worktree";
175
+ repo_root: string;
176
+ name: string;
177
+ base_branch?: string;
178
+ launch_session?: boolean;
179
+ dangerously_skip_permissions?: boolean;
180
+ }
181
+ export interface ListWorktreesRequest {
182
+ type: "list_worktrees";
183
+ repo_root: string;
184
+ }
185
+ export interface RemoveWorktreeRequest {
186
+ type: "remove_worktree";
187
+ repo_root: string;
188
+ worktree_path: string;
189
+ force?: boolean;
190
+ delete_branch?: boolean;
191
+ }
192
+ export interface WorktreeWithStatus {
193
+ name: string;
194
+ path: string;
195
+ branch: string | null;
196
+ isMain: boolean;
197
+ status: {
198
+ hasUncommittedChanges: boolean;
199
+ isMergedToMain: boolean;
200
+ };
201
+ }
202
+ export type ClientMessage = SelectSessionRequest | TriggerActionRequest | ToggleAutoCompactRequest | FocusTerminalRequest | TileWindowsRequest | MaximizeWindowRequest | LaunchSessionRequest | CreateWorktreeRequest | ListWorktreesRequest | RemoveWorktreeRequest;
203
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Core Types
3
+ *
4
+ * Shared types for the Jacques ecosystem.
5
+ * These are the canonical types used by both CLI dashboard and GUI.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Claude Token Management
3
+ *
4
+ * Validates, stores, and retrieves Claude OAuth tokens.
5
+ * Tokens are stored in ~/.jacques/config.json (user's home, NOT in git).
6
+ */
7
+ /**
8
+ * Validate OAuth token format
9
+ * Valid tokens start with: sk-ant-oat01- (OAuth) or sk-ant-api03- (API key)
10
+ */
11
+ export declare function validateToken(token: string): {
12
+ valid: boolean;
13
+ error?: string;
14
+ };
15
+ /**
16
+ * Save Claude token to Jacques config
17
+ * Stored in ~/.jacques/config.json (in user's home directory, NOT in git)
18
+ */
19
+ export declare function saveClaudeToken(token: string): void;
20
+ /**
21
+ * Get stored Claude token
22
+ */
23
+ export declare function getClaudeToken(): string | null;
24
+ /**
25
+ * Check if Claude token is configured and valid
26
+ */
27
+ export declare function isClaudeConnected(): boolean;
28
+ /**
29
+ * Mask token for display (show first 10 and last 4 chars)
30
+ * sk-ant-oat01-abc...xyz9
31
+ */
32
+ export declare function maskToken(token: string): string;
33
+ /**
34
+ * Remove Claude token from config
35
+ */
36
+ export declare function disconnectClaude(): void;
37
+ /**
38
+ * Verify token is valid by making a minimal API call to Anthropic
39
+ * Returns { valid: true } if token works, { valid: false, error: string } if not
40
+ *
41
+ * Note: OAuth tokens (sk-ant-oat01-) from `claude setup-token` cannot be verified
42
+ * via the public API - they're for Claude Code's internal use. We accept them
43
+ * based on format validation only.
44
+ */
45
+ export declare function verifyToken(token: string): Promise<{
46
+ valid: boolean;
47
+ error?: string;
48
+ }>;
49
+ //# sourceMappingURL=claude-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-token.d.ts","sourceRoot":"","sources":["../../src/utils/claude-token.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAgB/E;AA4BD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CASnD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAO9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAI3C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA+D5F"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Claude Token Management
3
+ *
4
+ * Validates, stores, and retrieves Claude OAuth tokens.
5
+ * Tokens are stored in ~/.jacques/config.json (user's home, NOT in git).
6
+ */
7
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
8
+ import { homedir } from "os";
9
+ import { join, dirname } from "path";
10
+ const JACQUES_CONFIG_PATH = join(homedir(), ".jacques", "config.json");
11
+ /**
12
+ * Validate OAuth token format
13
+ * Valid tokens start with: sk-ant-oat01- (OAuth) or sk-ant-api03- (API key)
14
+ */
15
+ export function validateToken(token) {
16
+ if (!token || token.trim().length === 0) {
17
+ return { valid: false, error: "Token is required" };
18
+ }
19
+ const trimmed = token.trim();
20
+ if (!trimmed.startsWith("sk-")) {
21
+ return { valid: false, error: "Not a valid token (must start with sk-)" };
22
+ }
23
+ if (trimmed.length < 20) {
24
+ return { valid: false, error: "Token is too short" };
25
+ }
26
+ return { valid: true };
27
+ }
28
+ /**
29
+ * Read Jacques config (synchronous)
30
+ */
31
+ function readConfig() {
32
+ try {
33
+ if (!existsSync(JACQUES_CONFIG_PATH)) {
34
+ return {};
35
+ }
36
+ const content = readFileSync(JACQUES_CONFIG_PATH, "utf-8");
37
+ return JSON.parse(content);
38
+ }
39
+ catch {
40
+ return {};
41
+ }
42
+ }
43
+ /**
44
+ * Write Jacques config (synchronous)
45
+ */
46
+ function writeConfig(config) {
47
+ const dir = dirname(JACQUES_CONFIG_PATH);
48
+ if (!existsSync(dir)) {
49
+ mkdirSync(dir, { recursive: true });
50
+ }
51
+ writeFileSync(JACQUES_CONFIG_PATH, JSON.stringify(config, null, 2), "utf-8");
52
+ }
53
+ /**
54
+ * Save Claude token to Jacques config
55
+ * Stored in ~/.jacques/config.json (in user's home directory, NOT in git)
56
+ */
57
+ export function saveClaudeToken(token) {
58
+ const validation = validateToken(token);
59
+ if (!validation.valid) {
60
+ throw new Error(validation.error);
61
+ }
62
+ const config = readConfig();
63
+ config.claudeToken = token.trim();
64
+ writeConfig(config);
65
+ }
66
+ /**
67
+ * Get stored Claude token
68
+ */
69
+ export function getClaudeToken() {
70
+ const config = readConfig();
71
+ const token = config.claudeToken;
72
+ if (typeof token === "string" && token.length > 0) {
73
+ return token;
74
+ }
75
+ return null;
76
+ }
77
+ /**
78
+ * Check if Claude token is configured and valid
79
+ */
80
+ export function isClaudeConnected() {
81
+ const token = getClaudeToken();
82
+ if (!token)
83
+ return false;
84
+ return validateToken(token).valid;
85
+ }
86
+ /**
87
+ * Mask token for display (show first 10 and last 4 chars)
88
+ * sk-ant-oat01-abc...xyz9
89
+ */
90
+ export function maskToken(token) {
91
+ if (token.length <= 15)
92
+ return "***";
93
+ return `${token.substring(0, 10)}...${token.substring(token.length - 4)}`;
94
+ }
95
+ /**
96
+ * Remove Claude token from config
97
+ */
98
+ export function disconnectClaude() {
99
+ const config = readConfig();
100
+ delete config.claudeToken;
101
+ writeConfig(config);
102
+ }
103
+ /**
104
+ * Verify token is valid by making a minimal API call to Anthropic
105
+ * Returns { valid: true } if token works, { valid: false, error: string } if not
106
+ *
107
+ * Note: OAuth tokens (sk-ant-oat01-) from `claude setup-token` cannot be verified
108
+ * via the public API - they're for Claude Code's internal use. We accept them
109
+ * based on format validation only.
110
+ */
111
+ export async function verifyToken(token) {
112
+ // First check format
113
+ const formatCheck = validateToken(token);
114
+ if (!formatCheck.valid) {
115
+ return formatCheck;
116
+ }
117
+ const trimmedToken = token.trim();
118
+ // OAuth tokens (sk-ant-oat01-) cannot be verified via the public API
119
+ // They use a different auth mechanism specific to Claude Code
120
+ // Accept them based on format validation only
121
+ if (trimmedToken.startsWith("sk-ant-oat01-")) {
122
+ return { valid: true };
123
+ }
124
+ // For API keys, verify via the API
125
+ try {
126
+ // Make a minimal API request to verify the token
127
+ const response = await fetch("https://api.anthropic.com/v1/messages", {
128
+ method: "POST",
129
+ headers: {
130
+ "Content-Type": "application/json",
131
+ "x-api-key": trimmedToken,
132
+ "anthropic-version": "2023-06-01",
133
+ },
134
+ body: JSON.stringify({
135
+ model: "claude-3-5-haiku-20241022",
136
+ max_tokens: 1,
137
+ messages: [{ role: "user", content: "hi" }],
138
+ }),
139
+ });
140
+ // 401 = invalid/expired token
141
+ if (response.status === 401) {
142
+ const data = await response.json().catch(() => ({}));
143
+ const message = data?.error?.message || "Invalid or expired token";
144
+ return { valid: false, error: message };
145
+ }
146
+ // 403 = token doesn't have permission (but is valid)
147
+ if (response.status === 403) {
148
+ const data = await response.json().catch(() => ({}));
149
+ const message = data?.error?.message || "Token lacks required permissions";
150
+ return { valid: false, error: message };
151
+ }
152
+ // 200 = success, token is valid
153
+ // 400 = bad request but token is valid (validation error)
154
+ // 429 = rate limited but token is valid
155
+ if (response.status === 200 || response.status === 400 || response.status === 429) {
156
+ return { valid: true };
157
+ }
158
+ // Other errors
159
+ return { valid: false, error: `Unexpected response: ${response.status}` };
160
+ }
161
+ catch (err) {
162
+ // Network error
163
+ return {
164
+ valid: false,
165
+ error: `Network error: ${err instanceof Error ? err.message : "Failed to connect"}`
166
+ };
167
+ }
168
+ }
169
+ //# sourceMappingURL=claude-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-token.js","sourceRoot":"","sources":["../../src/utils/claude-token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Utils module exports
3
+ */
4
+ export { getClaudeSettings, setClaudeSettings, getAutoCompactEnabled, setAutoCompact, toggleAutoCompact, getAutoCompactThreshold, getJacquesConfig, setJacquesConfig, getDefaultArchiveSettings, getArchiveSettings, setArchiveSettings, getAutoArchiveEnabled, setAutoArchiveEnabled, toggleAutoArchive, getArchivePath, getSkipPermissions, setSkipPermissions, toggleSkipPermissions, } from "./settings.js";
5
+ export type { ClaudeSettings, ArchiveSettings, JacquesConfig, } from "./settings.js";
6
+ export { validateToken, verifyToken, saveClaudeToken, getClaudeToken, isClaudeConnected, maskToken, disconnectClaude, } from "./claude-token.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAEL,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EAEvB,gBAAgB,EAChB,gBAAgB,EAEhB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,aAAa,EACb,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,gBAAgB,GACjB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Utils module exports
3
+ */
4
+ export {
5
+ // Claude settings
6
+ getClaudeSettings, setClaudeSettings, getAutoCompactEnabled, setAutoCompact, toggleAutoCompact, getAutoCompactThreshold,
7
+ // Jacques config
8
+ getJacquesConfig, setJacquesConfig,
9
+ // Archive settings
10
+ getDefaultArchiveSettings, getArchiveSettings, setArchiveSettings, getAutoArchiveEnabled, setAutoArchiveEnabled, toggleAutoArchive, getArchivePath, getSkipPermissions, setSkipPermissions, toggleSkipPermissions, } from "./settings.js";
11
+ // Claude token management
12
+ export { validateToken, verifyToken, saveClaudeToken, getClaudeToken, isClaudeConnected, maskToken, disconnectClaude, } from "./claude-token.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO;AACL,kBAAkB;AAClB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,uBAAuB;AACvB,iBAAiB;AACjB,gBAAgB,EAChB,gBAAgB;AAChB,mBAAmB;AACnB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAQvB,0BAA0B;AAC1B,OAAO,EACL,aAAa,EACb,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,gBAAgB,GACjB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Claude Settings Utility
3
+ *
4
+ * Reads and writes ~/.claude/settings.json for auto-compact toggle.
5
+ * Also manages Jacques-specific settings in ~/.jacques/config.json.
6
+ */
7
+ export interface ClaudeSettings {
8
+ autoCompact?: boolean;
9
+ [key: string]: unknown;
10
+ }
11
+ /**
12
+ * Read Claude settings from ~/.claude/settings.json
13
+ */
14
+ export declare function getClaudeSettings(): ClaudeSettings;
15
+ /**
16
+ * Write Claude settings to ~/.claude/settings.json
17
+ */
18
+ export declare function setClaudeSettings(settings: ClaudeSettings): boolean;
19
+ /**
20
+ * Get current auto-compact status
21
+ */
22
+ export declare function getAutoCompactEnabled(): boolean;
23
+ /**
24
+ * Set auto-compact status
25
+ */
26
+ export declare function setAutoCompact(enabled: boolean): boolean;
27
+ /**
28
+ * Toggle auto-compact status and return new value
29
+ */
30
+ export declare function toggleAutoCompact(): {
31
+ enabled: boolean;
32
+ warning?: string;
33
+ };
34
+ /**
35
+ * Get auto-compact threshold from environment variable
36
+ */
37
+ export declare function getAutoCompactThreshold(): number;
38
+ export interface ArchiveSettings {
39
+ autoArchive: boolean;
40
+ }
41
+ export interface JacquesConfig {
42
+ archive?: ArchiveSettings;
43
+ skipPermissions?: boolean;
44
+ sources?: {
45
+ obsidian?: {
46
+ enabled: boolean;
47
+ vaultPath: string;
48
+ };
49
+ };
50
+ [key: string]: unknown;
51
+ }
52
+ /**
53
+ * Get default archive settings
54
+ */
55
+ export declare function getDefaultArchiveSettings(): ArchiveSettings;
56
+ /**
57
+ * Read Jacques config from ~/.jacques/config.json
58
+ */
59
+ export declare function getJacquesConfig(): JacquesConfig;
60
+ /**
61
+ * Write Jacques config to ~/.jacques/config.json
62
+ */
63
+ export declare function setJacquesConfig(config: JacquesConfig): boolean;
64
+ /**
65
+ * Get archive settings
66
+ */
67
+ export declare function getArchiveSettings(): ArchiveSettings;
68
+ /**
69
+ * Set archive settings
70
+ */
71
+ export declare function setArchiveSettings(settings: ArchiveSettings): boolean;
72
+ /**
73
+ * Get auto-archive enabled status
74
+ */
75
+ export declare function getAutoArchiveEnabled(): boolean;
76
+ /**
77
+ * Set auto-archive enabled status
78
+ */
79
+ export declare function setAutoArchiveEnabled(enabled: boolean): boolean;
80
+ /**
81
+ * Toggle auto-archive and return new value
82
+ */
83
+ export declare function toggleAutoArchive(): boolean;
84
+ /**
85
+ * Get archive path
86
+ */
87
+ export declare function getArchivePath(): string;
88
+ /**
89
+ * Get skip-permissions status from Jacques config
90
+ */
91
+ export declare function getSkipPermissions(): boolean;
92
+ /**
93
+ * Set skip-permissions status
94
+ */
95
+ export declare function setSkipPermissions(enabled: boolean): boolean;
96
+ /**
97
+ * Toggle skip-permissions and return new value
98
+ */
99
+ export declare function toggleSkipPermissions(): boolean;
100
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/utils/settings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAUlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAWnE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAI/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAIxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAkB1E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAShD;AAMD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE;YACT,OAAO,EAAE,OAAO,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,eAAe,CAI3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAUhD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAW/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAMpD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAIrE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAI/D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAK3C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAI5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAK/C"}