@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,134 @@
1
+ /**
2
+ * Catalog Types
3
+ *
4
+ * Type definitions for the catalog extraction system.
5
+ * Extracts lightweight artifacts from JSONL files for fast dashboard loading.
6
+ */
7
+ /**
8
+ * Session manifest stored in .jacques/sessions/{id}.json
9
+ * Lightweight metadata (~1-2KB) extracted from JSONL files.
10
+ */
11
+ export interface SessionManifest {
12
+ /** Session UUID */
13
+ id: string;
14
+ /** Session title (from summary or first user message) */
15
+ title: string;
16
+ /** Full project path */
17
+ projectPath: string;
18
+ /** Project slug (basename) */
19
+ projectSlug: string;
20
+ /** Git repository root path (persisted for index rebuild resilience) */
21
+ gitRepoRoot?: string;
22
+ /** Git branch name at extraction time */
23
+ gitBranch?: string;
24
+ /** Git worktree name (if this was a worktree session) */
25
+ gitWorktree?: string;
26
+ /** Session timestamps */
27
+ startedAt: string;
28
+ endedAt: string;
29
+ durationMinutes: number;
30
+ /** User questions (truncated to 200 chars each) */
31
+ userQuestions: string[];
32
+ /** Files modified via Write/Edit tool calls */
33
+ filesModified: string[];
34
+ /** Unique tool names used */
35
+ toolsUsed: string[];
36
+ /** Auto-detected technologies */
37
+ technologies: string[];
38
+ /** Statistics */
39
+ messageCount: number;
40
+ toolCallCount: number;
41
+ /** Token usage stats */
42
+ tokens?: {
43
+ input: number;
44
+ output: number;
45
+ cacheCreation: number;
46
+ cacheRead: number;
47
+ };
48
+ /** Subagent metadata */
49
+ hasSubagents: boolean;
50
+ hadAutoCompact?: boolean;
51
+ /** Session mode */
52
+ mode?: "planning" | "execution" | null;
53
+ /** Linked plan IDs (references PlanEntry.id in index.json) */
54
+ planIds: string[];
55
+ /** Linked subagent IDs (references SubagentEntry.id in index.json) */
56
+ subagentIds: string[];
57
+ /** Plan references with source info for display (deduplicated by catalogId) */
58
+ planRefs?: Array<{
59
+ title: string;
60
+ source: "embedded" | "write" | "agent";
61
+ /** All detection methods that found this plan (when deduplicated) */
62
+ sources?: Array<"embedded" | "write" | "agent">;
63
+ messageIndex: number;
64
+ filePath?: string;
65
+ agentId?: string;
66
+ catalogId?: string;
67
+ }>;
68
+ /** JSONL file modification time (for incremental extraction) */
69
+ jsonlModifiedAt: string;
70
+ /** When this manifest was extracted */
71
+ extractedAt: string;
72
+ }
73
+ /**
74
+ * Options for single-session catalog extraction
75
+ */
76
+ export interface ExtractSessionOptions {
77
+ /** Force re-extraction even if JSONL hasn't changed */
78
+ force?: boolean;
79
+ }
80
+ /**
81
+ * Result of single-session catalog extraction
82
+ */
83
+ export interface ExtractSessionResult {
84
+ /** Session ID */
85
+ sessionId: string;
86
+ /** Whether extraction was skipped (unchanged) */
87
+ skipped: boolean;
88
+ /** Number of subagent artifacts extracted */
89
+ subagentsExtracted: number;
90
+ /** Number of plans extracted */
91
+ plansExtracted: number;
92
+ /** Error message if extraction failed */
93
+ error?: string;
94
+ }
95
+ /**
96
+ * Options for bulk catalog extraction
97
+ */
98
+ export interface BulkExtractOptions {
99
+ /** Force re-extraction of all sessions */
100
+ force?: boolean;
101
+ /** Progress callback */
102
+ onProgress?: (progress: CatalogProgress) => void;
103
+ }
104
+ /**
105
+ * Progress callback for catalog extraction
106
+ */
107
+ export interface CatalogProgress {
108
+ /** Current phase */
109
+ phase: "scanning" | "extracting";
110
+ /** Total items to process */
111
+ total: number;
112
+ /** Items completed */
113
+ completed: number;
114
+ /** Current item being processed */
115
+ current: string;
116
+ /** Items skipped (unchanged) */
117
+ skipped: number;
118
+ /** Items that failed */
119
+ errors: number;
120
+ }
121
+ /**
122
+ * Result of bulk catalog extraction
123
+ */
124
+ export interface BulkExtractResult {
125
+ /** Total sessions found */
126
+ totalSessions: number;
127
+ /** Sessions successfully extracted */
128
+ extracted: number;
129
+ /** Sessions skipped (unchanged) */
130
+ skipped: number;
131
+ /** Sessions that failed */
132
+ errors: number;
133
+ }
134
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/catalog/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Catalog Types
3
+ *
4
+ * Type definitions for the catalog extraction system.
5
+ * Extracts lightweight artifacts from JSONL files for fast dashboard loading.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/catalog/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Client module exports
3
+ */
4
+ export { JacquesClient } from "./websocket-client.js";
5
+ export type { JacquesClientEvents, JacquesClientOptions } from "./websocket-client.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Client module exports
3
+ */
4
+ export { JacquesClient } from "./websocket-client.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * WebSocket Client
3
+ *
4
+ * Connects to the Jacques server and receives session updates.
5
+ * Handles reconnection and event dispatching.
6
+ */
7
+ import { EventEmitter } from "events";
8
+ import type { ClientMessage, Session } from "../types.js";
9
+ export interface JacquesClientOptions {
10
+ /** Suppress console output */
11
+ silent?: boolean;
12
+ }
13
+ export interface JacquesClientEvents {
14
+ connected: () => void;
15
+ disconnected: () => void;
16
+ initial_state: (sessions: Session[], focusedSessionId: string | null, scanning?: boolean) => void;
17
+ session_update: (session: Session) => void;
18
+ session_removed: (sessionId: string) => void;
19
+ focus_changed: (sessionId: string | null, session: Session | null) => void;
20
+ autocompact_toggled: (enabled: boolean, warning?: string) => void;
21
+ handoff_ready: (sessionId: string, path: string) => void;
22
+ focus_terminal_result: (sessionId: string, success: boolean, method: string, error?: string) => void;
23
+ notification_fired: (notification: {
24
+ id: string;
25
+ category: string;
26
+ title: string;
27
+ body: string;
28
+ priority: string;
29
+ timestamp: number;
30
+ sessionId?: string;
31
+ }) => void;
32
+ server_status: (message: {
33
+ status: string;
34
+ session_count: number;
35
+ scanning?: boolean;
36
+ }) => void;
37
+ error: (error: Error) => void;
38
+ }
39
+ /**
40
+ * Jacques WebSocket Client
41
+ *
42
+ * Connects to the Jacques server and emits events for dashboard updates.
43
+ */
44
+ export declare class JacquesClient extends EventEmitter {
45
+ private ws;
46
+ private serverUrl;
47
+ private reconnectTimeout;
48
+ private reconnectDelay;
49
+ private shouldReconnect;
50
+ private isConnected;
51
+ private log;
52
+ private error;
53
+ private warn;
54
+ constructor(serverUrl?: string, options?: JacquesClientOptions);
55
+ /**
56
+ * Connect to the Jacques server
57
+ */
58
+ connect(): void;
59
+ /**
60
+ * Handle incoming message from server
61
+ */
62
+ private handleMessage;
63
+ /**
64
+ * Schedule reconnection with exponential backoff
65
+ */
66
+ private scheduleReconnect;
67
+ /**
68
+ * Send message to server
69
+ */
70
+ send(message: ClientMessage): boolean;
71
+ /**
72
+ * Select a session (request focus change)
73
+ */
74
+ selectSession(sessionId: string): boolean;
75
+ /**
76
+ * Trigger an action on a session
77
+ */
78
+ triggerAction(sessionId: string, action: "smart_compact" | "new_session" | "save_snapshot", options?: Record<string, unknown>): boolean;
79
+ /**
80
+ * Focus a terminal window for a session
81
+ */
82
+ focusTerminal(sessionId: string): boolean;
83
+ /**
84
+ * Toggle auto-compact setting in ~/.claude/settings.json
85
+ */
86
+ toggleAutoCompact(): boolean;
87
+ /**
88
+ * Disconnect from server
89
+ */
90
+ disconnect(): void;
91
+ /**
92
+ * Check if connected
93
+ */
94
+ getIsConnected(): boolean;
95
+ }
96
+ //# sourceMappingURL=websocket-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../../src/client/websocket-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * WebSocket Client
3
+ *
4
+ * Connects to the Jacques server and receives session updates.
5
+ * Handles reconnection and event dispatching.
6
+ */
7
+ import WebSocket from "ws";
8
+ import { EventEmitter } from "events";
9
+ const DEFAULT_SERVER_URL = "ws://localhost:4242";
10
+ const RECONNECT_DELAY = 2000;
11
+ const MAX_RECONNECT_DELAY = 30000;
12
+ /**
13
+ * Jacques WebSocket Client
14
+ *
15
+ * Connects to the Jacques server and emits events for dashboard updates.
16
+ */
17
+ export class JacquesClient extends EventEmitter {
18
+ ws = null;
19
+ serverUrl;
20
+ reconnectTimeout = null;
21
+ reconnectDelay = RECONNECT_DELAY;
22
+ shouldReconnect = true;
23
+ isConnected = false;
24
+ log;
25
+ error;
26
+ warn;
27
+ constructor(serverUrl = DEFAULT_SERVER_URL, options = {}) {
28
+ super();
29
+ this.serverUrl = serverUrl;
30
+ this.log = options.silent ? () => { } : console.log.bind(console);
31
+ this.error = options.silent ? () => { } : console.error.bind(console);
32
+ this.warn = options.silent ? () => { } : console.warn.bind(console);
33
+ }
34
+ /**
35
+ * Connect to the Jacques server
36
+ */
37
+ connect() {
38
+ if (this.ws) {
39
+ return;
40
+ }
41
+ this.shouldReconnect = true;
42
+ try {
43
+ this.ws = new WebSocket(this.serverUrl);
44
+ this.ws.on("open", () => {
45
+ this.isConnected = true;
46
+ this.reconnectDelay = RECONNECT_DELAY;
47
+ this.log("[Client] Connected to Jacques server");
48
+ this.emit("connected");
49
+ });
50
+ this.ws.on("message", (data) => {
51
+ this.handleMessage(data);
52
+ });
53
+ this.ws.on("close", () => {
54
+ this.isConnected = false;
55
+ this.ws = null;
56
+ this.log("[Client] Disconnected from Jacques server");
57
+ this.emit("disconnected");
58
+ this.scheduleReconnect();
59
+ });
60
+ this.ws.on("error", (err) => {
61
+ this.error(`[Client] WebSocket error: ${err.message}`);
62
+ this.emit("error", err);
63
+ });
64
+ }
65
+ catch (err) {
66
+ this.error(`[Client] Connection error: ${err}`);
67
+ this.emit("error", err);
68
+ this.scheduleReconnect();
69
+ }
70
+ }
71
+ /**
72
+ * Handle incoming message from server
73
+ */
74
+ handleMessage(data) {
75
+ try {
76
+ const message = JSON.parse(data.toString());
77
+ switch (message.type) {
78
+ case "initial_state":
79
+ this.emit("initial_state", message.sessions, message.focused_session_id, message.scanning);
80
+ break;
81
+ case "server_status":
82
+ this.emit("server_status", message);
83
+ break;
84
+ case "session_update":
85
+ this.emit("session_update", message.session);
86
+ break;
87
+ case "session_removed":
88
+ this.emit("session_removed", message.session_id);
89
+ break;
90
+ case "focus_changed":
91
+ this.emit("focus_changed", message.session_id, message.session);
92
+ break;
93
+ case "autocompact_toggled":
94
+ this.emit("autocompact_toggled", message.enabled, message.warning);
95
+ break;
96
+ case "handoff_ready":
97
+ this.emit("handoff_ready", message.session_id, message.path);
98
+ break;
99
+ case "focus_terminal_result":
100
+ this.emit("focus_terminal_result", message.session_id, message.success, message.method, message.error);
101
+ break;
102
+ case "notification_fired":
103
+ this.emit("notification_fired", message.notification);
104
+ break;
105
+ default: {
106
+ // Handle extended message types (tile, launch, worktree results)
107
+ const msg = message;
108
+ if (typeof msg.type === "string") {
109
+ this.emit(msg.type, msg);
110
+ }
111
+ else {
112
+ this.warn(`[Client] Unknown message type: ${message.type}`);
113
+ }
114
+ break;
115
+ }
116
+ }
117
+ }
118
+ catch (err) {
119
+ this.error(`[Client] Failed to parse message: ${err}`);
120
+ }
121
+ }
122
+ /**
123
+ * Schedule reconnection with exponential backoff
124
+ */
125
+ scheduleReconnect() {
126
+ if (!this.shouldReconnect || this.reconnectTimeout) {
127
+ return;
128
+ }
129
+ this.log(`[Client] Reconnecting in ${this.reconnectDelay / 1000}s...`);
130
+ this.reconnectTimeout = setTimeout(() => {
131
+ this.reconnectTimeout = null;
132
+ this.connect();
133
+ }, this.reconnectDelay);
134
+ // Exponential backoff
135
+ this.reconnectDelay = Math.min(this.reconnectDelay * 2, MAX_RECONNECT_DELAY);
136
+ }
137
+ /**
138
+ * Send message to server
139
+ */
140
+ send(message) {
141
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
142
+ this.warn("[Client] Cannot send message: not connected");
143
+ return false;
144
+ }
145
+ try {
146
+ this.ws.send(JSON.stringify(message));
147
+ return true;
148
+ }
149
+ catch (err) {
150
+ this.error(`[Client] Failed to send message: ${err}`);
151
+ return false;
152
+ }
153
+ }
154
+ /**
155
+ * Select a session (request focus change)
156
+ */
157
+ selectSession(sessionId) {
158
+ return this.send({
159
+ type: "select_session",
160
+ session_id: sessionId,
161
+ });
162
+ }
163
+ /**
164
+ * Trigger an action on a session
165
+ */
166
+ triggerAction(sessionId, action, options) {
167
+ return this.send({
168
+ type: "trigger_action",
169
+ session_id: sessionId,
170
+ action,
171
+ options,
172
+ });
173
+ }
174
+ /**
175
+ * Focus a terminal window for a session
176
+ */
177
+ focusTerminal(sessionId) {
178
+ return this.send({
179
+ type: "focus_terminal",
180
+ session_id: sessionId,
181
+ });
182
+ }
183
+ /**
184
+ * Toggle auto-compact setting in ~/.claude/settings.json
185
+ */
186
+ toggleAutoCompact() {
187
+ return this.send({
188
+ type: "toggle_autocompact",
189
+ });
190
+ }
191
+ /**
192
+ * Disconnect from server
193
+ */
194
+ disconnect() {
195
+ this.shouldReconnect = false;
196
+ if (this.reconnectTimeout) {
197
+ clearTimeout(this.reconnectTimeout);
198
+ this.reconnectTimeout = null;
199
+ }
200
+ if (this.ws) {
201
+ try {
202
+ // Only close if the websocket is open or connecting
203
+ if (this.ws.readyState === WebSocket.OPEN ||
204
+ this.ws.readyState === WebSocket.CONNECTING) {
205
+ this.ws.close(1000, "Client disconnecting");
206
+ }
207
+ }
208
+ catch (err) {
209
+ // Ignore errors during disconnect
210
+ }
211
+ this.ws = null;
212
+ }
213
+ this.isConnected = false;
214
+ }
215
+ /**
216
+ * Check if connected
217
+ */
218
+ getIsConnected() {
219
+ return this.isConnected;
220
+ }
221
+ }
222
+ //# sourceMappingURL=websocket-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client.js","sourceRoot":"","sources":["../../src/client/websocket-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Context Module
3
+ *
4
+ * Manages project knowledge in .jacques/
5
+ * - context/: External files imported from Obsidian, Google Docs, etc.
6
+ * - sessions/: Saved Claude Code conversations
7
+ * - plans/: Implementation plans
8
+ */
9
+ export type { ProjectIndex, ContextFile, SessionEntry, PlanEntry, SubagentEntry, ContextSource, AddContextOptions, ContextIndex, } from "./types.js";
10
+ export { getDefaultIndex, migrateIndex } from "./types.js";
11
+ export { getIndexPath, readProjectIndex, writeProjectIndex, addContextToIndex, removeContextFromIndex, addSessionToIndex, removeSessionFromIndex, addPlanToIndex, removePlanFromIndex, addSubagentToIndex, removeSubagentFromIndex, fileExistsInIndex, readContextIndex, writeContextIndex, addToIndex, removeFromIndex, } from "./indexer.js";
12
+ export { generateContextId, sanitizeFilename, getContextDir, addContext, removeContext, hasContextFiles, formatFileSize, estimateTokensFromSize, countTokens, countFileTokens, formatTokenCount, extractTags, } from "./manager.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACb,iBAAiB,EAEjB,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG3D,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EAEjB,iBAAiB,EACjB,sBAAsB,EAEtB,iBAAiB,EACjB,sBAAsB,EAEtB,cAAc,EACd,mBAAmB,EAEnB,kBAAkB,EAClB,uBAAuB,EAEvB,iBAAiB,EAEjB,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,cAAc,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Context Module
3
+ *
4
+ * Manages project knowledge in .jacques/
5
+ * - context/: External files imported from Obsidian, Google Docs, etc.
6
+ * - sessions/: Saved Claude Code conversations
7
+ * - plans/: Implementation plans
8
+ */
9
+ export { getDefaultIndex, migrateIndex } from "./types.js";
10
+ // Indexer - unified project index
11
+ export { getIndexPath, readProjectIndex, writeProjectIndex,
12
+ // Context operations
13
+ addContextToIndex, removeContextFromIndex,
14
+ // Session operations
15
+ addSessionToIndex, removeSessionFromIndex,
16
+ // Plan operations
17
+ addPlanToIndex, removePlanFromIndex,
18
+ // Subagent operations
19
+ addSubagentToIndex, removeSubagentFromIndex,
20
+ // Utilities
21
+ fileExistsInIndex,
22
+ // Legacy compatibility
23
+ readContextIndex, writeContextIndex, addToIndex, removeFromIndex, } from "./indexer.js";
24
+ // Manager - file operations
25
+ export { generateContextId, sanitizeFilename, getContextDir, addContext, removeContext, hasContextFiles, formatFileSize, estimateTokensFromSize, countTokens, countFileTokens, formatTokenCount, extractTags, } from "./manager.js";
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3D,kCAAkC;AAClC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB;AACjB,qBAAqB;AACrB,iBAAiB,EACjB,sBAAsB;AACtB,qBAAqB;AACrB,iBAAiB,EACjB,sBAAsB;AACtB,kBAAkB;AAClB,cAAc,EACd,mBAAmB;AACnB,sBAAsB;AACtB,kBAAkB,EAClB,uBAAuB;AACvB,YAAY;AACZ,iBAAiB;AACjB,uBAAuB;AACvB,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,eAAe,GAChB,MAAM,cAAc,CAAC;AAEtB,4BAA4B;AAC5B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,cAAc,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Context Indexer
3
+ *
4
+ * Reads and writes .jacques/index.json - the unified project knowledge index.
5
+ * Tracks context files, sessions, and plans in a single location.
6
+ */
7
+ import type { ProjectIndex, ContextFile, SessionEntry, PlanEntry, SubagentEntry, ContextIndex } from "./types.js";
8
+ /**
9
+ * Get the path to the index file for a project
10
+ */
11
+ export declare function getIndexPath(cwd: string): string;
12
+ /**
13
+ * Read the unified project index from .jacques/index.json
14
+ * Automatically migrates legacy format (files-only) to new format
15
+ */
16
+ export declare function readProjectIndex(cwd: string): Promise<ProjectIndex>;
17
+ /**
18
+ * Write the project index to .jacques/index.json
19
+ */
20
+ export declare function writeProjectIndex(cwd: string, index: ProjectIndex): Promise<void>;
21
+ /**
22
+ * Add a context file to the index
23
+ */
24
+ export declare function addContextToIndex(cwd: string, file: ContextFile): Promise<ProjectIndex>;
25
+ /**
26
+ * Remove a context file from the index
27
+ */
28
+ export declare function removeContextFromIndex(cwd: string, fileId: string): Promise<ProjectIndex>;
29
+ /**
30
+ * Add a session to the index
31
+ */
32
+ export declare function addSessionToIndex(cwd: string, session: SessionEntry): Promise<ProjectIndex>;
33
+ /**
34
+ * Remove a session from the index
35
+ */
36
+ export declare function removeSessionFromIndex(cwd: string, sessionId: string): Promise<ProjectIndex>;
37
+ /**
38
+ * Add a plan to the index
39
+ */
40
+ export declare function addPlanToIndex(cwd: string, plan: PlanEntry): Promise<ProjectIndex>;
41
+ /**
42
+ * Remove a plan from the index
43
+ */
44
+ export declare function removePlanFromIndex(cwd: string, planId: string): Promise<ProjectIndex>;
45
+ /**
46
+ * Add a subagent entry to the index
47
+ */
48
+ export declare function addSubagentToIndex(cwd: string, entry: SubagentEntry): Promise<ProjectIndex>;
49
+ /**
50
+ * Remove a subagent entry from the index
51
+ */
52
+ export declare function removeSubagentFromIndex(cwd: string, subagentId: string): Promise<ProjectIndex>;
53
+ /**
54
+ * @deprecated Use readProjectIndex instead
55
+ */
56
+ export declare function readContextIndex(cwd: string): Promise<ContextIndex>;
57
+ /**
58
+ * @deprecated Use writeProjectIndex instead
59
+ */
60
+ export declare function writeContextIndex(cwd: string, legacyIndex: ContextIndex): Promise<void>;
61
+ /**
62
+ * @deprecated Use addContextToIndex instead
63
+ */
64
+ export declare function addToIndex(cwd: string, file: ContextFile): Promise<ContextIndex>;
65
+ /**
66
+ * @deprecated Use removeContextFromIndex instead
67
+ */
68
+ export declare function removeFromIndex(cwd: string, fileId: string): Promise<ContextIndex>;
69
+ /**
70
+ * Check if a context file exists in the index
71
+ */
72
+ export declare function fileExistsInIndex(cwd: string, fileId: string): Promise<boolean>;
73
+ //# sourceMappingURL=indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/context/indexer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,aAAa,EACb,YAAY,EACb,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA6BzE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAYf;AAMD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAKvB;AAMD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,YAAY,CAAC,CAiBvB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,CAKvB;AAMD;;GAEG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,YAAY,CAAC,CAsBvB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAKvB;AAMD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,YAAY,CAAC,CAkBvB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC,CAKvB;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAOzE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,YAAY,GACxB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,YAAY,CAAC,CAOvB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAOvB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAGlB"}